Cinnamon-3.6.7/ 0000775 0001750 0001750 00000000000 13215735076 012226 5 ustar fabio fabio Cinnamon-3.6.7/.settings/ 0000775 0001750 0001750 00000000000 13215735076 014144 5 ustar fabio fabio Cinnamon-3.6.7/.settings/.jsdtscope 0000664 0001750 0001750 00000000673 13215735076 016151 0 ustar fabio fabio
Cinnamon-3.6.7/.settings/org.eclipse.cdt.ui.prefs 0000664 0001750 0001750 00000000222 13215735076 020600 0 ustar fabio fabio #Fri Nov 28 14:33:30 EST 2008
eclipse.preferences.version=1
formatter_profile=org.eclipse.cdt.ui.default.gnu_profile
formatter_settings_version=1
Cinnamon-3.6.7/.settings/org.eclipse.wst.jsdt.ui.prefs 0000664 0001750 0001750 00000000704 13215735076 021613 0 ustar fabio fabio #Fri Nov 28 14:39:12 EST 2008
eclipse.preferences.version=1
formatter_profile=_gjs
formatter_settings_version=11
org.eclipse.wst.jsdt.ui.exception.name=e
org.eclipse.wst.jsdt.ui.gettersetter.use.is=true
org.eclipse.wst.jsdt.ui.javadoc=false
org.eclipse.wst.jsdt.ui.keywordthis=false
org.eclipse.wst.jsdt.ui.overrideannotation=true
org.eclipse.wst.jsdt.ui.text.custom_code_templates=
Cinnamon-3.6.7/.settings/org.eclipse.wst.jsdt.ui.superType.name 0000664 0001750 0001750 00000000006 13215735076 023406 0 ustar fabio fabio Window Cinnamon-3.6.7/.settings/org.eclipse.wst.jsdt.core.prefs 0000664 0001750 0001750 00000064664 13215735076 022145 0 ustar fabio fabio #Fri Nov 28 14:43:43 EST 2008
eclipse.preferences.version=1
org.eclipse.wst.jsdt.core.codeComplete.argumentPrefixes=
org.eclipse.wst.jsdt.core.codeComplete.argumentSuffixes=
org.eclipse.wst.jsdt.core.codeComplete.fieldPrefixes=
org.eclipse.wst.jsdt.core.codeComplete.fieldSuffixes=
org.eclipse.wst.jsdt.core.codeComplete.localPrefixes=
org.eclipse.wst.jsdt.core.codeComplete.localSuffixes=
org.eclipse.wst.jsdt.core.codeComplete.staticFieldPrefixes=
org.eclipse.wst.jsdt.core.codeComplete.staticFieldSuffixes=
org.eclipse.wst.jsdt.core.compiler.codegen.inlineJsrBytecode=disabled
org.eclipse.wst.jsdt.core.compiler.codegen.targetPlatform=1.2
org.eclipse.wst.jsdt.core.compiler.codegen.unusedLocal=preserve
org.eclipse.wst.jsdt.core.compiler.compliance=1.4
org.eclipse.wst.jsdt.core.compiler.debug.lineNumber=generate
org.eclipse.wst.jsdt.core.compiler.debug.localVariable=generate
org.eclipse.wst.jsdt.core.compiler.debug.sourceFile=generate
org.eclipse.wst.jsdt.core.compiler.problem.assertIdentifier=warning
org.eclipse.wst.jsdt.core.compiler.problem.deprecation=warning
org.eclipse.wst.jsdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
org.eclipse.wst.jsdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
org.eclipse.wst.jsdt.core.compiler.problem.discouragedReference=warning
org.eclipse.wst.jsdt.core.compiler.problem.emptyStatement=ignore
org.eclipse.wst.jsdt.core.compiler.problem.enumIdentifier=warning
org.eclipse.wst.jsdt.core.compiler.problem.fallthroughCase=ignore
org.eclipse.wst.jsdt.core.compiler.problem.fieldHiding=ignore
org.eclipse.wst.jsdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
org.eclipse.wst.jsdt.core.compiler.problem.forbiddenReference=ignore
org.eclipse.wst.jsdt.core.compiler.problem.hiddenCatchBlock=warning
org.eclipse.wst.jsdt.core.compiler.problem.indirectStaticAccess=ignore
org.eclipse.wst.jsdt.core.compiler.problem.localVariableHiding=ignore
org.eclipse.wst.jsdt.core.compiler.problem.looseVarDecleration=warning
org.eclipse.wst.jsdt.core.compiler.problem.missingDeprecatedAnnotation=ignore
org.eclipse.wst.jsdt.core.compiler.problem.noEffectAssignment=warning
org.eclipse.wst.jsdt.core.compiler.problem.nonExternalizedStringLiteral=ignore
org.eclipse.wst.jsdt.core.compiler.problem.nullReference=ignore
org.eclipse.wst.jsdt.core.compiler.problem.optionalSemicolon=warning
org.eclipse.wst.jsdt.core.compiler.problem.parameterAssignment=ignore
org.eclipse.wst.jsdt.core.compiler.problem.possibleAccidentalBooleanAssignment=ignore
org.eclipse.wst.jsdt.core.compiler.problem.potentialNullReference=ignore
org.eclipse.wst.jsdt.core.compiler.problem.redundantNullCheck=ignore
org.eclipse.wst.jsdt.core.compiler.problem.undefinedField=warning
org.eclipse.wst.jsdt.core.compiler.problem.undocumentedEmptyBlock=ignore
org.eclipse.wst.jsdt.core.compiler.problem.unnecessaryElse=ignore
org.eclipse.wst.jsdt.core.compiler.problem.unresolvedFieldReference=ignore
org.eclipse.wst.jsdt.core.compiler.problem.unresolvedMethodReference=ignore
org.eclipse.wst.jsdt.core.compiler.problem.unresolvedTypeReference=ignore
org.eclipse.wst.jsdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
org.eclipse.wst.jsdt.core.compiler.problem.unusedLabel=warning
org.eclipse.wst.jsdt.core.compiler.problem.unusedLocal=warning
org.eclipse.wst.jsdt.core.compiler.problem.unusedParameter=ignore
org.eclipse.wst.jsdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
org.eclipse.wst.jsdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
org.eclipse.wst.jsdt.core.compiler.problem.unusedPrivateMember=warning
org.eclipse.wst.jsdt.core.compiler.source=1.3
org.eclipse.wst.jsdt.core.formatter.align_type_members_on_columns=false
org.eclipse.wst.jsdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
org.eclipse.wst.jsdt.core.formatter.alignment_for_arguments_in_enum_constant=16
org.eclipse.wst.jsdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
org.eclipse.wst.jsdt.core.formatter.alignment_for_arguments_in_method_invocation=16
org.eclipse.wst.jsdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
org.eclipse.wst.jsdt.core.formatter.alignment_for_assignment=0
org.eclipse.wst.jsdt.core.formatter.alignment_for_binary_expression=16
org.eclipse.wst.jsdt.core.formatter.alignment_for_compact_if=16
org.eclipse.wst.jsdt.core.formatter.alignment_for_conditional_expression=80
org.eclipse.wst.jsdt.core.formatter.alignment_for_enum_constants=0
org.eclipse.wst.jsdt.core.formatter.alignment_for_expressions_in_array_initializer=16
org.eclipse.wst.jsdt.core.formatter.alignment_for_multiple_fields=16
org.eclipse.wst.jsdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
org.eclipse.wst.jsdt.core.formatter.alignment_for_parameters_in_method_declaration=16
org.eclipse.wst.jsdt.core.formatter.alignment_for_selector_in_method_invocation=16
org.eclipse.wst.jsdt.core.formatter.alignment_for_superclass_in_type_declaration=16
org.eclipse.wst.jsdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
org.eclipse.wst.jsdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
org.eclipse.wst.jsdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
org.eclipse.wst.jsdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
org.eclipse.wst.jsdt.core.formatter.blank_lines_after_imports=1
org.eclipse.wst.jsdt.core.formatter.blank_lines_after_package=1
org.eclipse.wst.jsdt.core.formatter.blank_lines_before_field=0
org.eclipse.wst.jsdt.core.formatter.blank_lines_before_first_class_body_declaration=0
org.eclipse.wst.jsdt.core.formatter.blank_lines_before_imports=1
org.eclipse.wst.jsdt.core.formatter.blank_lines_before_member_type=1
org.eclipse.wst.jsdt.core.formatter.blank_lines_before_method=1
org.eclipse.wst.jsdt.core.formatter.blank_lines_before_new_chunk=1
org.eclipse.wst.jsdt.core.formatter.blank_lines_before_package=0
org.eclipse.wst.jsdt.core.formatter.blank_lines_between_import_groups=1
org.eclipse.wst.jsdt.core.formatter.blank_lines_between_type_declarations=0
org.eclipse.wst.jsdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
org.eclipse.wst.jsdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
org.eclipse.wst.jsdt.core.formatter.brace_position_for_array_initializer=end_of_line
org.eclipse.wst.jsdt.core.formatter.brace_position_for_block=end_of_line
org.eclipse.wst.jsdt.core.formatter.brace_position_for_block_in_case=end_of_line
org.eclipse.wst.jsdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
org.eclipse.wst.jsdt.core.formatter.brace_position_for_enum_constant=end_of_line
org.eclipse.wst.jsdt.core.formatter.brace_position_for_enum_declaration=end_of_line
org.eclipse.wst.jsdt.core.formatter.brace_position_for_method_declaration=end_of_line
org.eclipse.wst.jsdt.core.formatter.brace_position_for_objlit_initializer=end_of_line
org.eclipse.wst.jsdt.core.formatter.brace_position_for_switch=end_of_line
org.eclipse.wst.jsdt.core.formatter.brace_position_for_type_declaration=end_of_line
org.eclipse.wst.jsdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
org.eclipse.wst.jsdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
org.eclipse.wst.jsdt.core.formatter.comment.format_block_comments=true
org.eclipse.wst.jsdt.core.formatter.comment.format_header=false
org.eclipse.wst.jsdt.core.formatter.comment.format_html=true
org.eclipse.wst.jsdt.core.formatter.comment.format_javadoc_comments=true
org.eclipse.wst.jsdt.core.formatter.comment.format_line_comments=true
org.eclipse.wst.jsdt.core.formatter.comment.format_source_code=true
org.eclipse.wst.jsdt.core.formatter.comment.indent_parameter_description=true
org.eclipse.wst.jsdt.core.formatter.comment.indent_root_tags=true
org.eclipse.wst.jsdt.core.formatter.comment.insert_new_line_before_root_tags=insert
org.eclipse.wst.jsdt.core.formatter.comment.insert_new_line_for_parameter=insert
org.eclipse.wst.jsdt.core.formatter.comment.line_length=80
org.eclipse.wst.jsdt.core.formatter.compact_else_if=true
org.eclipse.wst.jsdt.core.formatter.continuation_indentation=2
org.eclipse.wst.jsdt.core.formatter.continuation_indentation_for_array_initializer=2
org.eclipse.wst.jsdt.core.formatter.continuation_indentation_for_objlit_initializer=1
org.eclipse.wst.jsdt.core.formatter.format_guardian_clause_on_one_line=false
org.eclipse.wst.jsdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
org.eclipse.wst.jsdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
org.eclipse.wst.jsdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
org.eclipse.wst.jsdt.core.formatter.indent_body_declarations_compare_to_type_header=true
org.eclipse.wst.jsdt.core.formatter.indent_breaks_compare_to_cases=true
org.eclipse.wst.jsdt.core.formatter.indent_empty_lines=false
org.eclipse.wst.jsdt.core.formatter.indent_statements_compare_to_block=true
org.eclipse.wst.jsdt.core.formatter.indent_statements_compare_to_body=true
org.eclipse.wst.jsdt.core.formatter.indent_switchstatements_compare_to_cases=true
org.eclipse.wst.jsdt.core.formatter.indent_switchstatements_compare_to_switch=false
org.eclipse.wst.jsdt.core.formatter.indentation.size=4
org.eclipse.wst.jsdt.core.formatter.insert_new_line_after_annotation=insert
org.eclipse.wst.jsdt.core.formatter.insert_new_line_after_comma_in_objlit_initializer=insert
org.eclipse.wst.jsdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
org.eclipse.wst.jsdt.core.formatter.insert_new_line_after_opening_brace_in_objlit_initializer=insert
org.eclipse.wst.jsdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
org.eclipse.wst.jsdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
org.eclipse.wst.jsdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
org.eclipse.wst.jsdt.core.formatter.insert_new_line_before_closing_brace_in_objlit_initializer=insert
org.eclipse.wst.jsdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
org.eclipse.wst.jsdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
org.eclipse.wst.jsdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
org.eclipse.wst.jsdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
org.eclipse.wst.jsdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
org.eclipse.wst.jsdt.core.formatter.insert_new_line_in_empty_block=insert
org.eclipse.wst.jsdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
org.eclipse.wst.jsdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
org.eclipse.wst.jsdt.core.formatter.insert_new_line_in_empty_method_body=insert
org.eclipse.wst.jsdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
org.eclipse.wst.jsdt.core.formatter.insert_space_after_and_in_type_parameter=insert
org.eclipse.wst.jsdt.core.formatter.insert_space_after_assignment_operator=insert
org.eclipse.wst.jsdt.core.formatter.insert_space_after_at_in_annotation=do not insert
org.eclipse.wst.jsdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
org.eclipse.wst.jsdt.core.formatter.insert_space_after_binary_operator=insert
org.eclipse.wst.jsdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=insert
org.eclipse.wst.jsdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
org.eclipse.wst.jsdt.core.formatter.insert_space_after_closing_brace_in_block=insert
org.eclipse.wst.jsdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
org.eclipse.wst.jsdt.core.formatter.insert_space_after_colon_in_assert=insert
org.eclipse.wst.jsdt.core.formatter.insert_space_after_colon_in_case=insert
org.eclipse.wst.jsdt.core.formatter.insert_space_after_colon_in_conditional=insert
org.eclipse.wst.jsdt.core.formatter.insert_space_after_colon_in_for=insert
org.eclipse.wst.jsdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
org.eclipse.wst.jsdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
org.eclipse.wst.jsdt.core.formatter.insert_space_after_comma_in_annotation=insert
org.eclipse.wst.jsdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
org.eclipse.wst.jsdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
org.eclipse.wst.jsdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
org.eclipse.wst.jsdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
org.eclipse.wst.jsdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
org.eclipse.wst.jsdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
org.eclipse.wst.jsdt.core.formatter.insert_space_after_comma_in_for_increments=insert
org.eclipse.wst.jsdt.core.formatter.insert_space_after_comma_in_for_inits=insert
org.eclipse.wst.jsdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
org.eclipse.wst.jsdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
org.eclipse.wst.jsdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
org.eclipse.wst.jsdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
org.eclipse.wst.jsdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
org.eclipse.wst.jsdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
org.eclipse.wst.jsdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
org.eclipse.wst.jsdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
org.eclipse.wst.jsdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
org.eclipse.wst.jsdt.core.formatter.insert_space_after_ellipsis=insert
org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
org.eclipse.wst.jsdt.core.formatter.insert_space_after_postfix_operator=do not insert
org.eclipse.wst.jsdt.core.formatter.insert_space_after_prefix_operator=do not insert
org.eclipse.wst.jsdt.core.formatter.insert_space_after_question_in_conditional=insert
org.eclipse.wst.jsdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
org.eclipse.wst.jsdt.core.formatter.insert_space_after_semicolon_in_for=insert
org.eclipse.wst.jsdt.core.formatter.insert_space_after_unary_operator=do not insert
org.eclipse.wst.jsdt.core.formatter.insert_space_before_and_in_type_parameter=insert
org.eclipse.wst.jsdt.core.formatter.insert_space_before_assignment_operator=insert
org.eclipse.wst.jsdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
org.eclipse.wst.jsdt.core.formatter.insert_space_before_binary_operator=insert
org.eclipse.wst.jsdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.wst.jsdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.wst.jsdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
org.eclipse.wst.jsdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
org.eclipse.wst.jsdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
org.eclipse.wst.jsdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
org.eclipse.wst.jsdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
org.eclipse.wst.jsdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
org.eclipse.wst.jsdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
org.eclipse.wst.jsdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
org.eclipse.wst.jsdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
org.eclipse.wst.jsdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
org.eclipse.wst.jsdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
org.eclipse.wst.jsdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
org.eclipse.wst.jsdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
org.eclipse.wst.jsdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
org.eclipse.wst.jsdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
org.eclipse.wst.jsdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
org.eclipse.wst.jsdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
org.eclipse.wst.jsdt.core.formatter.insert_space_before_colon_in_assert=insert
org.eclipse.wst.jsdt.core.formatter.insert_space_before_colon_in_case=do not insert
org.eclipse.wst.jsdt.core.formatter.insert_space_before_colon_in_conditional=insert
org.eclipse.wst.jsdt.core.formatter.insert_space_before_colon_in_default=do not insert
org.eclipse.wst.jsdt.core.formatter.insert_space_before_colon_in_for=insert
org.eclipse.wst.jsdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
org.eclipse.wst.jsdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
org.eclipse.wst.jsdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
org.eclipse.wst.jsdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
org.eclipse.wst.jsdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
org.eclipse.wst.jsdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
org.eclipse.wst.jsdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
org.eclipse.wst.jsdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
org.eclipse.wst.jsdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
org.eclipse.wst.jsdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
org.eclipse.wst.jsdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
org.eclipse.wst.jsdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
org.eclipse.wst.jsdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
org.eclipse.wst.jsdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
org.eclipse.wst.jsdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
org.eclipse.wst.jsdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
org.eclipse.wst.jsdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
org.eclipse.wst.jsdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
org.eclipse.wst.jsdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
org.eclipse.wst.jsdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
org.eclipse.wst.jsdt.core.formatter.insert_space_before_ellipsis=do not insert
org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_brace_in_block=insert
org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_paren_in_for=insert
org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_paren_in_if=insert
org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_paren_in_while=insert
org.eclipse.wst.jsdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
org.eclipse.wst.jsdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
org.eclipse.wst.jsdt.core.formatter.insert_space_before_postfix_operator=do not insert
org.eclipse.wst.jsdt.core.formatter.insert_space_before_prefix_operator=do not insert
org.eclipse.wst.jsdt.core.formatter.insert_space_before_question_in_conditional=insert
org.eclipse.wst.jsdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
org.eclipse.wst.jsdt.core.formatter.insert_space_before_semicolon=do not insert
org.eclipse.wst.jsdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
org.eclipse.wst.jsdt.core.formatter.insert_space_before_unary_operator=do not insert
org.eclipse.wst.jsdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
org.eclipse.wst.jsdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
org.eclipse.wst.jsdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
org.eclipse.wst.jsdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
org.eclipse.wst.jsdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
org.eclipse.wst.jsdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
org.eclipse.wst.jsdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
org.eclipse.wst.jsdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
org.eclipse.wst.jsdt.core.formatter.keep_else_statement_on_same_line=false
org.eclipse.wst.jsdt.core.formatter.keep_empty_array_initializer_on_one_line=false
org.eclipse.wst.jsdt.core.formatter.keep_empty_objlit_initializer_on_one_line=false
org.eclipse.wst.jsdt.core.formatter.keep_imple_if_on_one_line=false
org.eclipse.wst.jsdt.core.formatter.keep_then_statement_on_same_line=false
org.eclipse.wst.jsdt.core.formatter.lineSplit=80
org.eclipse.wst.jsdt.core.formatter.never_indent_block_comments_on_first_column=false
org.eclipse.wst.jsdt.core.formatter.never_indent_line_comments_on_first_column=false
org.eclipse.wst.jsdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
org.eclipse.wst.jsdt.core.formatter.number_of_empty_lines_to_preserve=1
org.eclipse.wst.jsdt.core.formatter.put_empty_statement_on_new_line=true
org.eclipse.wst.jsdt.core.formatter.tabulation.char=space
org.eclipse.wst.jsdt.core.formatter.tabulation.size=4
org.eclipse.wst.jsdt.core.formatter.use_tabs_only_for_leading_indentations=false
org.eclipse.wst.jsdt.core.formatter.wrap_before_binary_operator=true
Cinnamon-3.6.7/.settings/org.eclipse.cdt.core.prefs 0000664 0001750 0001750 00000027761 13215735076 021134 0 ustar fabio fabio #Fri Nov 28 14:33:30 EST 2008
eclipse.preferences.version=1
org.eclipse.cdt.core.formatter.alignment_for_arguments_in_method_invocation=16
org.eclipse.cdt.core.formatter.alignment_for_base_clause_in_type_declaration=80
org.eclipse.cdt.core.formatter.alignment_for_compact_if=0
org.eclipse.cdt.core.formatter.alignment_for_conditional_expression=80
org.eclipse.cdt.core.formatter.alignment_for_declarator_list=16
org.eclipse.cdt.core.formatter.alignment_for_enumerator_list=48
org.eclipse.cdt.core.formatter.alignment_for_expression_list=0
org.eclipse.cdt.core.formatter.alignment_for_expressions_in_array_initializer=16
org.eclipse.cdt.core.formatter.alignment_for_parameters_in_method_declaration=16
org.eclipse.cdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
org.eclipse.cdt.core.formatter.brace_position_for_array_initializer=next_line_shifted
org.eclipse.cdt.core.formatter.brace_position_for_block=next_line_shifted
org.eclipse.cdt.core.formatter.brace_position_for_block_in_case=next_line_shifted
org.eclipse.cdt.core.formatter.brace_position_for_method_declaration=next_line
org.eclipse.cdt.core.formatter.brace_position_for_namespace_declaration=next_line
org.eclipse.cdt.core.formatter.brace_position_for_switch=next_line_shifted
org.eclipse.cdt.core.formatter.brace_position_for_type_declaration=next_line
org.eclipse.cdt.core.formatter.compact_else_if=true
org.eclipse.cdt.core.formatter.continuation_indentation=2
org.eclipse.cdt.core.formatter.continuation_indentation_for_array_initializer=2
org.eclipse.cdt.core.formatter.format_guardian_clause_on_one_line=false
org.eclipse.cdt.core.formatter.indent_access_specifier_compare_to_type_header=false
org.eclipse.cdt.core.formatter.indent_body_declarations_compare_to_access_specifier=true
org.eclipse.cdt.core.formatter.indent_body_declarations_compare_to_namespace_header=true
org.eclipse.cdt.core.formatter.indent_breaks_compare_to_cases=true
org.eclipse.cdt.core.formatter.indent_declaration_compare_to_template_header=true
org.eclipse.cdt.core.formatter.indent_empty_lines=false
org.eclipse.cdt.core.formatter.indent_statements_compare_to_block=true
org.eclipse.cdt.core.formatter.indent_statements_compare_to_body=true
org.eclipse.cdt.core.formatter.indent_switchstatements_compare_to_cases=true
org.eclipse.cdt.core.formatter.indent_switchstatements_compare_to_switch=false
org.eclipse.cdt.core.formatter.indentation.size=8
org.eclipse.cdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
org.eclipse.cdt.core.formatter.insert_new_line_after_template_declaration=insert
org.eclipse.cdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
org.eclipse.cdt.core.formatter.insert_new_line_before_catch_in_try_statement=insert
org.eclipse.cdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
org.eclipse.cdt.core.formatter.insert_new_line_before_else_in_if_statement=insert
org.eclipse.cdt.core.formatter.insert_new_line_before_identifier_in_function_declaration=insert
org.eclipse.cdt.core.formatter.insert_new_line_before_while_in_do_statement=insert
org.eclipse.cdt.core.formatter.insert_new_line_in_empty_block=insert
org.eclipse.cdt.core.formatter.insert_space_after_assignment_operator=insert
org.eclipse.cdt.core.formatter.insert_space_after_binary_operator=insert
org.eclipse.cdt.core.formatter.insert_space_after_closing_angle_bracket_in_template_arguments=insert
org.eclipse.cdt.core.formatter.insert_space_after_closing_angle_bracket_in_template_parameters=insert
org.eclipse.cdt.core.formatter.insert_space_after_closing_brace_in_block=insert
org.eclipse.cdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
org.eclipse.cdt.core.formatter.insert_space_after_colon_in_base_clause=insert
org.eclipse.cdt.core.formatter.insert_space_after_colon_in_case=insert
org.eclipse.cdt.core.formatter.insert_space_after_colon_in_conditional=insert
org.eclipse.cdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
org.eclipse.cdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
org.eclipse.cdt.core.formatter.insert_space_after_comma_in_base_types=insert
org.eclipse.cdt.core.formatter.insert_space_after_comma_in_declarator_list=insert
org.eclipse.cdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
org.eclipse.cdt.core.formatter.insert_space_after_comma_in_expression_list=insert
org.eclipse.cdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
org.eclipse.cdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
org.eclipse.cdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
org.eclipse.cdt.core.formatter.insert_space_after_comma_in_template_arguments=insert
org.eclipse.cdt.core.formatter.insert_space_after_comma_in_template_parameters=insert
org.eclipse.cdt.core.formatter.insert_space_after_opening_angle_bracket_in_template_arguments=do not insert
org.eclipse.cdt.core.formatter.insert_space_after_opening_angle_bracket_in_template_parameters=do not insert
org.eclipse.cdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
org.eclipse.cdt.core.formatter.insert_space_after_opening_bracket=do not insert
org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
org.eclipse.cdt.core.formatter.insert_space_after_postfix_operator=do not insert
org.eclipse.cdt.core.formatter.insert_space_after_prefix_operator=do not insert
org.eclipse.cdt.core.formatter.insert_space_after_question_in_conditional=insert
org.eclipse.cdt.core.formatter.insert_space_after_semicolon_in_for=insert
org.eclipse.cdt.core.formatter.insert_space_after_unary_operator=do not insert
org.eclipse.cdt.core.formatter.insert_space_before_assignment_operator=insert
org.eclipse.cdt.core.formatter.insert_space_before_binary_operator=insert
org.eclipse.cdt.core.formatter.insert_space_before_closing_angle_bracket_in_template_arguments=do not insert
org.eclipse.cdt.core.formatter.insert_space_before_closing_angle_bracket_in_template_parameters=do not insert
org.eclipse.cdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
org.eclipse.cdt.core.formatter.insert_space_before_closing_bracket=do not insert
org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
org.eclipse.cdt.core.formatter.insert_space_before_colon_in_base_clause=insert
org.eclipse.cdt.core.formatter.insert_space_before_colon_in_case=do not insert
org.eclipse.cdt.core.formatter.insert_space_before_colon_in_conditional=insert
org.eclipse.cdt.core.formatter.insert_space_before_colon_in_default=do not insert
org.eclipse.cdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
org.eclipse.cdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
org.eclipse.cdt.core.formatter.insert_space_before_comma_in_base_types=do not insert
org.eclipse.cdt.core.formatter.insert_space_before_comma_in_declarator_list=do not insert
org.eclipse.cdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
org.eclipse.cdt.core.formatter.insert_space_before_comma_in_expression_list=do not insert
org.eclipse.cdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
org.eclipse.cdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
org.eclipse.cdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
org.eclipse.cdt.core.formatter.insert_space_before_comma_in_template_arguments=do not insert
org.eclipse.cdt.core.formatter.insert_space_before_comma_in_template_parameters=do not insert
org.eclipse.cdt.core.formatter.insert_space_before_opening_angle_bracket_in_template_arguments=do not insert
org.eclipse.cdt.core.formatter.insert_space_before_opening_angle_bracket_in_template_parameters=do not insert
org.eclipse.cdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
org.eclipse.cdt.core.formatter.insert_space_before_opening_brace_in_block=insert
org.eclipse.cdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
org.eclipse.cdt.core.formatter.insert_space_before_opening_brace_in_namespace_declaration=insert
org.eclipse.cdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
org.eclipse.cdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
org.eclipse.cdt.core.formatter.insert_space_before_opening_bracket=do not insert
org.eclipse.cdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
org.eclipse.cdt.core.formatter.insert_space_before_opening_paren_in_for=insert
org.eclipse.cdt.core.formatter.insert_space_before_opening_paren_in_if=insert
org.eclipse.cdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
org.eclipse.cdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
org.eclipse.cdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
org.eclipse.cdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
org.eclipse.cdt.core.formatter.insert_space_before_opening_paren_in_while=insert
org.eclipse.cdt.core.formatter.insert_space_before_postfix_operator=do not insert
org.eclipse.cdt.core.formatter.insert_space_before_prefix_operator=do not insert
org.eclipse.cdt.core.formatter.insert_space_before_question_in_conditional=insert
org.eclipse.cdt.core.formatter.insert_space_before_semicolon=do not insert
org.eclipse.cdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
org.eclipse.cdt.core.formatter.insert_space_before_unary_operator=do not insert
org.eclipse.cdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
org.eclipse.cdt.core.formatter.insert_space_between_empty_brackets=do not insert
org.eclipse.cdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
org.eclipse.cdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
org.eclipse.cdt.core.formatter.keep_else_statement_on_same_line=false
org.eclipse.cdt.core.formatter.keep_empty_array_initializer_on_one_line=false
org.eclipse.cdt.core.formatter.keep_imple_if_on_one_line=false
org.eclipse.cdt.core.formatter.keep_then_statement_on_same_line=false
org.eclipse.cdt.core.formatter.lineSplit=80
org.eclipse.cdt.core.formatter.number_of_empty_lines_to_preserve=1
org.eclipse.cdt.core.formatter.put_empty_statement_on_new_line=true
org.eclipse.cdt.core.formatter.tabulation.char=space
org.eclipse.cdt.core.formatter.tabulation.size=2
org.eclipse.cdt.core.formatter.use_tabs_only_for_leading_indentations=false
Cinnamon-3.6.7/.settings/org.eclipse.wst.jsdt.ui.superType.container 0000664 0001750 0001750 00000000061 13215735076 024451 0 ustar fabio fabio org.eclipse.wst.jsdt.launching.baseBrowserLibrary Cinnamon-3.6.7/restore 0000775 0001750 0001750 00000000143 13215735076 013635 0 ustar fabio fabio #!/bin/bash
rm -rf /usr/share/cinnamon/js
mv /usr/share/cinnamon/js-backup /usr/share/cinnamon/js
Cinnamon-3.6.7/COPYING 0000664 0001750 0001750 00000043107 13215735076 013266 0 ustar fabio fabio GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
51 Franklin Street, Suite 500, Boston, MA 02110-1335 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users. This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is covered by
the GNU Library General Public License instead.) You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have. You must make sure that they, too, receive or can get the
source code. And you must show them these terms so they know their
rights.
We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.
Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software. If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.
Finally, any free program is threatened constantly by software
patents. We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary. To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and
modification follow.
GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License. The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language. (Hereinafter, translation is included without limitation in
the term "modification".) Each licensee is addressed as "you".
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.
1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.
You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.
2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) You must cause the modified files to carry prominent notices
stating that you changed the files and the date of any change.
b) You must cause any work that you distribute or publish, that in
whole or in part contains or is derived from the Program or any
part thereof, to be licensed as a whole at no charge to all third
parties under the terms of this License.
c) If the modified program normally reads commands interactively
when run, you must cause it, when started running for such
interactive use in the most ordinary way, to print or display an
announcement including an appropriate copyright notice and a
notice that there is no warranty (or else, saying that you provide
a warranty) and that users may redistribute the program under
these conditions, and telling the user how to view a copy of this
License. (Exception: if the Program itself is interactive but
does not normally print such an announcement, your work based on
the Program is not required to print an announcement.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.
In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:
a) Accompany it with the complete corresponding machine-readable
source code, which must be distributed under the terms of Sections
1 and 2 above on a medium customarily used for software interchange; or,
b) Accompany it with a written offer, valid for at least three
years, to give any third party, for a charge no more than your
cost of physically performing source distribution, a complete
machine-readable copy of the corresponding source code, to be
distributed under the terms of Sections 1 and 2 above on a medium
customarily used for software interchange; or,
c) Accompany it with the information you received as to the offer
to distribute corresponding source code. (This alternative is
allowed only for noncommercial distribution and only if you
received the program in object code or executable form with such
an offer, in accord with Subsection b above.)
The source code for a work means the preferred form of the work for
making modifications to it. For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable. However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.
If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.
4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.
5. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Program or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.
6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.
7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all. For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.
If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded. In such case, this License incorporates
the limitation as if written in the body of this License.
9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation. If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.
10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission. For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this. Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.
NO WARRANTY
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
Copyright (C)
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Also add information on how to contact you by electronic and paper mail.
If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:
Gnomovision version 69, Copyright (C) year name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, the commands you use may
be called something other than `show w' and `show c'; they could even be
mouse-clicks or menu items--whatever suits your program.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
`Gnomovision' (which makes passes at compilers) written by James Hacker.
, 1 April 1989
Ty Coon, President of Vice
This General Public License does not permit incorporating your program into
proprietary programs. If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library. If this is what you want to do, use the GNU Library General
Public License instead of this License.
Cinnamon-3.6.7/debian/ 0000775 0001750 0001750 00000000000 13215735076 013450 5 ustar fabio fabio Cinnamon-3.6.7/test 0000775 0001750 0001750 00000001056 13215735076 013135 0 ustar fabio fabio #!/bin/bash
sudo rm -rf /usr/share/cinnamon/js-backup
sudo mv /usr/share/cinnamon/js /usr/share/cinnamon/js-backup
sudo cp -R js /usr/share/cinnamon/
sudo rm -rf /usr/share/cinnamon/theme-backup
sudo mv /usr/share/cinnamon/theme /usr/share/cinnamon/theme-backup
sudo cp -R data/theme /usr/share/cinnamon/
sudo rm -rf /usr/lib/cinnamon-settings
sudo rm -rf /usr/lib/cinnamon-menu-editor
sudo cp -R files/usr /
sudo cp -R files/etc /
sudo cp data/org.cinnamon.gschema.xml /usr/share/glib-2.0/schemas/
sudo glib-compile-schemas /usr/share/glib-2.0/schemas/
Cinnamon-3.6.7/files/ 0000775 0001750 0001750 00000000000 13215735076 013330 5 ustar fabio fabio Cinnamon-3.6.7/files/usr/ 0000775 0001750 0001750 00000000000 13215735076 014141 5 ustar fabio fabio Cinnamon-3.6.7/files/usr/bin/ 0000775 0001750 0001750 00000000000 13215735076 014711 5 ustar fabio fabio Cinnamon-3.6.7/files/usr/bin/cinnamon2d 0000775 0001750 0001750 00000000335 13215735076 016670 0 ustar fabio fabio #!/bin/bash
CLUTTER_PAINT=disable-clipped-redraws:disable-culling LIBGL_ALWAYS_SOFTWARE=1 CINNAMON_SOFTWARE_RENDERING=1 CINNAMON_2D=1 CINNAMON_SLOWDOWN_FACTOR=0.0001 MUFFIN_NO_SHADOWS=1 CLUTTER_DEFAULT_FPS=15 cinnamon $@
Cinnamon-3.6.7/files/usr/bin/cinnamon-session-cinnamon2d 0000775 0001750 0001750 00000000073 13215735076 022150 0 ustar fabio fabio #!/bin/sh
exec cinnamon-session --session cinnamon2d "$@"
Cinnamon-3.6.7/files/usr/bin/cinnamon-settings-users 0000775 0001750 0001750 00000000267 13215735076 021443 0 ustar fabio fabio #!/usr/bin/python3
""" Launch the cinnamon users and groups editor utility
"""
import os
os.system("pkexec /usr/share/cinnamon/cinnamon-settings-users/cinnamon-settings-users.py")
Cinnamon-3.6.7/files/usr/bin/cinnamon-launcher 0000775 0001750 0001750 00000003722 13215735076 020244 0 ustar fabio fabio #!/usr/bin/python3
#
""" Launches or restarts cinnamon
"""
FALLBACK_COMMAND = "metacity"
FALLBACK_ARGS = ("--replace",)
import os
import sys
import gettext
import gi
gi.require_version('Gtk', '3.0')
from gi.repository import Gtk
gettext.install("cinnamon", "/usr/share/locale")
panel_process_name = None
panel_cmd = None
if os.path.exists("/usr/bin/mate-panel"):
panel_process_name = "mate-panel"
panel_cmd = "mate-panel --replace &"
elif os.path.exists("/usr/bin/gnome-panel"):
panel_process_name = "gnome-panel"
panel_cmd = "gnome-panel --replace &"
elif os.path.exists("/usr/bin/tint2"):
panel_process_name = "tint2"
panel_cmd = "killall tint2; tint2 &"
def confirm_restart():
d = Gtk.MessageDialog(parent=None, flags=0, message_type=Gtk.MessageType.WARNING, buttons=Gtk.ButtonsType.YES_NO)
d.set_keep_above(True)
d.set_position(Gtk.WindowPosition.CENTER_ALWAYS)
d.set_markup("%s\n\n%s" % (_("Cinnamon just crashed. You are currently running in Fallback Mode."), _("Do you want to restart Cinnamon?")))
d.show_all()
resp = d.run()
d.destroy()
return (resp == Gtk.ResponseType.YES)
if __name__ == "__main__":
cinnamon_pid = os.fork()
if cinnamon_pid == 0:
os.execvp("cinnamon", ("cinnamon", "--replace", ) + tuple(sys.argv[1:]))
else:
exit_status = os.waitpid(cinnamon_pid, 0)[1]
if exit_status != 0:
if os.fork() == 0:
# Start the fallback panel
if panel_cmd is not None:
os.system(panel_cmd)
# Start the fallback window manager
os.execvp(FALLBACK_COMMAND, (FALLBACK_COMMAND,) + FALLBACK_ARGS)
else:
if confirm_restart():
# Kill the fallback panel
os.system("killall %s" % panel_process_name)
# Restart Cinnamon
os.execvp(sys.argv[0], (sys.argv[0], "--replace"))
Cinnamon-3.6.7/files/usr/bin/cinnamon-slideshow 0000775 0001750 0001750 00000000263 13215735076 020441 0 ustar fabio fabio #!/usr/bin/python3
""" Starts a slideshow of images with the desktop background
"""
import os
os.execvp("/usr/share/cinnamon/cinnamon-slideshow/cinnamon-slideshow.py", (" ",))
Cinnamon-3.6.7/files/usr/bin/cinnamon-preview-gtk-theme 0000775 0001750 0001750 00000002300 13215735076 021776 0 ustar fabio fabio #!/usr/bin/python3
""" Preview a Cinnamon gtk theme in a small window
Usage: cinnamon-preview-gtk-theme theme-name
"""
import sys
import gi
gi.require_version("Gtk", "3.0")
from gi.repository import Gtk
if __name__ == '__main__':
import signal
signal.signal(signal.SIGINT, signal.SIG_DFL)
if len(sys.argv) != 2:
print("Usage: cinnamon-preview-gtk-theme theme-name")
exit(1)
else:
theme_name = sys.argv[1]
settings = Gtk.Settings.get_default()
settings.set_string_property("gtk-theme-name", theme_name, "gtkrc:0")
window = Gtk.Window()
vbox = Gtk.VBox()
hbox = Gtk.HBox()
button = Gtk.Button()
check = Gtk.CheckButton()
check.set_active(True)
radio = Gtk.RadioButton()
hbox.pack_start(button, False, False, 2)
button.set_label("Button")
hbox.pack_start(check, False, False, 2)
hbox.pack_start(radio, False, False, 2)
vbox.pack_start(hbox, False, False, 2)
window.add(vbox)
window.set_default_size(320, 200)
window.set_decorated(False)
window.show_all()
window.connect("destroy", Gtk.main_quit)
Gtk.main()
Cinnamon-3.6.7/files/usr/bin/cinnamon-menu-editor 0000775 0001750 0001750 00000000754 13215735076 020675 0 ustar fabio fabio #!/usr/bin/python2
""" Launch the Cinnamon menu editor utility
Usage: cinnamon-menu-editor
"""
import sys
sys.path.insert(0, '/usr/share/cinnamon/cinnamon-menu-editor')
from cme import MainWindow
def main():
try:
from MenuEditor import config
datadir = config.pkgdatadir
version = config.VERSION
except:
datadir = '.'
version = '0.9'
app = MainWindow.MainWindow(datadir, version)
app.run()
if __name__ == '__main__':
main()
Cinnamon-3.6.7/files/usr/bin/cinnamon-looking-glass 0000775 0001750 0001750 00000000376 13215735076 021216 0 ustar fabio fabio #!/usr/bin/python3
""" Launch the cinnamon looking glass utility
Usage: cinnamon-looking-glass {daemon|inspect}
"""
import os
import sys
os.execvp("/usr/share/cinnamon/cinnamon-looking-glass/cinnamon-looking-glass.py", (" ",) + tuple(sys.argv[1:]))
Cinnamon-3.6.7/files/usr/bin/xlet-settings 0000775 0001750 0001750 00000000430 13215735076 017446 0 ustar fabio fabio #!/usr/bin/python3
import os, sys
if len(sys.argv) < 3:
print("usage:\n xlet-settings \nor\n xlet-settings ")
else:
os.execvp("/usr/share/cinnamon/cinnamon-settings/xlet-settings.py", (" ",) + tuple(sys.argv[1:]))
Cinnamon-3.6.7/files/usr/bin/cinnamon-json-makepot 0000775 0001750 0001750 00000000426 13215735076 021050 0 ustar fabio fabio #!/usr/bin/python3
""" Launch the cinnamon json makepot utility
See cinnamon/cinnamon-json-makepot/cinnamon-json-makepot.py for usage info
"""
import os
import sys
os.execvp("/usr/share/cinnamon/cinnamon-json-makepot/cinnamon-json-makepot.py", (" ",) + tuple(sys.argv[1:]))
Cinnamon-3.6.7/files/usr/bin/cinnamon-killer-daemon 0000775 0001750 0001750 00000003403 13215735076 021162 0 ustar fabio fabio #!/usr/bin/python3
""" Creates a keybinding that allows cinnamon to be restarted by pressing Ctrl + Alt + Esc,
and runs in the background to detect that keybinding
"""
import os
import syslog
import gi
gi.require_version('Keybinder', '3.0')
gi.require_version('Gtk', '3.0')
from gi.repository import Keybinder
from gi.repository import Gtk, Gio
SETTINGS_SCHEMA = 'org.cinnamon.desktop.keybindings.media-keys'
SETTINGS_KEY = 'restart-cinnamon'
class KillerDaemon:
def __init__(self):
Keybinder.init()
self.bindings = None
self.settings = Gio.Settings(schema_id=SETTINGS_SCHEMA)
self.apply_bindings()
self.settings.connect('changed::' + SETTINGS_KEY, self.apply_bindings)
def apply_bindings(self, settings=None, key=None):
# Ubind the previous bindings
try:
if self.bindings is not None:
for binding in self.bindings:
Keybinder.unbind(binding)
except Exception as detail:
syslog.syslog(detail)
# Get the new ones
self.bindings = self.settings.get_strv(SETTINGS_KEY)
# Bind them
try:
if self.bindings is not None:
for binding in self.bindings:
if Keybinder.bind(binding, self.restart_cinnamon, None):
syslog.syslog("Bound Cinnamon restart to %s." % binding)
except Exception as detail:
syslog.syslog(detail)
def restart_cinnamon(self, keystring, data):
os.system("nemo -n &") # restart nemo if it's not running already
os.system("cinnamon --replace &") # restart Cinnamon whether it's running or not (can be handy in case of a DE freeze)
if __name__ == '__main__':
daemon = KillerDaemon()
Gtk.main()
Cinnamon-3.6.7/files/usr/bin/cinnamon-subprocess-wrapper 0000775 0001750 0001750 00000001202 13215735076 022300 0 ustar fabio fabio #!/usr/bin/python3
""" Runs a command and then passes the output to Cinnamon via DBus asynchronously
Usage: cinnamon-subprocess-wrapper ls ~/
"""
import subprocess
import sys
import dbus
if __name__ == "__main__":
process_id = int(sys.argv[1])
try:
result = subprocess.check_output(sys.argv[2:])
success = True
except:
result = ""
success = False
session_bus = dbus.SessionBus()
dbus = session_bus.get_object("org.Cinnamon", "/org/Cinnamon")
PushSubprocessResult = dbus.get_dbus_method('PushSubprocessResult', 'org.Cinnamon')
PushSubprocessResult(process_id, result, success)
Cinnamon-3.6.7/files/usr/bin/cinnamon-desktop-editor 0000775 0001750 0001750 00000000437 13215735076 021400 0 ustar fabio fabio #!/usr/bin/python3
""" Launch the cinnamon desktop editor utility
See cinnamon/cinnamon-desktop-editor/cinnamon-desktop-editor.py for usage info
"""
import os
import sys
os.execvp("/usr/share/cinnamon/cinnamon-desktop-editor/cinnamon-desktop-editor.py", (" ",) + tuple(sys.argv[1:]))
Cinnamon-3.6.7/files/usr/bin/cinnamon-settings 0000775 0001750 0001750 00000002422 13215735076 020277 0 ustar fabio fabio #!/usr/bin/python3
""" Launch the cinnamon-settings utility, or a specific settings module
Usage: cinnamon-settings [optional module name]
"""
import os
import sys
if len(sys.argv) > 1:
module = sys.argv[1]
if module in ("applets", "desklets", "extensions") and len(sys.argv) > 2 and sys.argv[2][0:5] != "panel":
os.execvp("/usr/share/cinnamon/cinnamon-settings/xlet-settings.py", (" ", module[0:-1]) + tuple(sys.argv[2:]))
if os.path.exists("/usr/share/cinnamon/cinnamon-settings/modules/cs_%s.py" % module):
os.execvp("/usr/share/cinnamon/cinnamon-settings/cinnamon-settings.py", (" ",) + tuple(sys.argv[1:]))
elif os.path.exists("/usr/bin/cinnamon-control-center"):
os.execvp("/usr/share/cinnamon/cinnamon-settings/cinnamon-settings.py", (" ",) + tuple(sys.argv[1:]))
elif os.path.exists("/usr/bin/gnome-control-center"):
print ("Unknown module %s, calling gnome-control-center" % module)
os.execvp("gnome-control-center", (" ",) + tuple(sys.argv[1:]))
else:
print ("Unknown module %s" % module)
os.execvp("/usr/share/cinnamon/cinnamon-settings/cinnamon-settings.py", (" ",) + tuple(sys.argv[1:]))
else:
os.execvp("/usr/share/cinnamon/cinnamon-settings/cinnamon-settings.py", (" ",) + tuple(sys.argv[1:]))
Cinnamon-3.6.7/files/usr/bin/cinnamon-screensaver-lock-dialog 0000775 0001750 0001750 00000000272 13215735076 023143 0 ustar fabio fabio #!/usr/bin/python3
""" Launch the cinnamon screensaver lock dialog
"""
import os
os.system("/usr/share/cinnamon/cinnamon-screensaver-lock-dialog/cinnamon-screensaver-lock-dialog.py")
Cinnamon-3.6.7/files/usr/bin/cinnamon-session-cinnamon 0000775 0001750 0001750 00000000071 13215735076 021720 0 ustar fabio fabio #!/bin/sh
exec cinnamon-session --session cinnamon "$@"
Cinnamon-3.6.7/files/usr/bin/cinnamon-file-dialog 0000775 0001750 0001750 00000004140 13215735076 020612 0 ustar fabio fabio #!/usr/bin/python3
""" Allows you to open a Gtk file dialog from and get the selected file in return
Used by a couple of Cinnamon spices via Javascript
Usage:
cinnamon-file-dialog {0|1|2} -{p|n|d|f} [path] ...
"""
import sys
from gi.repository import Gtk
cancelButton = (Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL)
typeArg = int(sys.argv[1])
fdType = typeArg % 3
if fdType == 0:
msg = "Open"
action = Gtk.FileChooserAction.OPEN
okButton = (Gtk.STOCK_OPEN, Gtk.ResponseType.OK)
elif fdType == 1:
msg = "Select Folder"
action = Gtk.FileChooserAction.SELECT_FOLDER
okButton = (Gtk.STOCK_OPEN, Gtk.ResponseType.OK)
elif fdType == 2:
msg = "Save"
action = Gtk.FileChooserAction.SAVE
okButton = (Gtk.STOCK_SAVE, Gtk.ResponseType.OK)
buttons = cancelButton + okButton
filechooserdialog = Gtk.FileChooserDialog(title=msg, action=action, buttons=buttons)
for i in range(2, len(sys.argv)):
if sys.argv[i] == "-p":
filechooserdialog.set_filename(sys.argv[i + 1])
elif sys.argv[i] == "-n":
filechooserdialog.set_current_name(sys.argv[i + 1])
elif sys.argv[i] == "-d":
filechooserdialog.set_current_folder(sys.argv[i + 1])
elif sys.argv[i] == "-f":
filterList = sys.argv[i + 1].split(",")
for filterInfo in filterList:
[name, filters] = filterInfo.split(";")
filterObj = Gtk.FileFilter()
filterObj.set_name(name)
rules = filters.split(":")
for rule in rules:
[ftype, value] = rule.split("=")
if ftype == "m":
filterObj.add_mime_type(value)
elif ftype == "p":
filterObj.add_pattern(value)
filechooserdialog.add_filter(filterObj)
if fdType == 2:
filechooserdialog.set_do_overwrite_confirmation(True)
if typeArg > 2:
filechooserdialog.set_select_multiple(True)
response = filechooserdialog.run()
if response == Gtk.ResponseType.OK:
if typeArg > 2:
print(filechooserdialog.get_filenames())
else:
print(filechooserdialog.get_filename())
filechooserdialog.destroy()
Cinnamon-3.6.7/files/usr/share/ 0000775 0001750 0001750 00000000000 13215735076 015243 5 ustar fabio fabio Cinnamon-3.6.7/files/usr/share/applications/ 0000775 0001750 0001750 00000000000 13215735076 017731 5 ustar fabio fabio Cinnamon-3.6.7/files/usr/share/applications/cinnamon-settings-universal-access.desktop 0000664 0001750 0001750 00000046633 13215735076 030245 0 ustar fabio fabio [Desktop Entry]
Icon=cs-universal-access
Exec=cinnamon-settings universal-access
Type=Application
OnlyShowIn=X-Cinnamon;
Categories=Settings;
Name=Accessibility
Name[af]=Toeganklikheid
Name[am]=በቀላሉ የሚደረስበት
Name[ar]=تسهيل الوصول
Name[ast]=Accesibilidá
Name[az]=Əlçatımlılıq
Name[az_AZ]=Əlçatımlılıq
Name[be]=Дадатковыя магчымасці
Name[be@latin]=Дадатковыя магчымасці
Name[be_BY]=Дадатковыя магчымасці
Name[bg]=Достъпност
Name[bg_BG]=Достъпност
Name[bn]=প্রবেশযোগ্যতা
Name[bn_IN]=প্রবেশযোগ্যতা
Name[bs]=Pristupačnost
Name[ca]=Accessibilitat
Name[ca@valencia]=Accessibilitat
Name[ca_ES]=Accessibilitat
Name[ca_ES@valencia]=Accessibilitat
Name[crh]=Erişilebilirlik
Name[cs]=Zpřístupnění
Name[cs_CZ]=Zpřístupnění
Name[csb]=Przistãpnosc
Name[cy]=Hygyrchedd
Name[da]=Tilgængelighed
Name[da_DK]=Tilgængelighed
Name[de]=Barrierefreiheit
Name[de_CH]=Barrierefreiheit
Name[de_DE]=Barrierefreiheit
Name[el]=Προσβασιμότητα
Name[eo]=Alirebleco
Name[es]=Accesibilidad
Name[es_AR]=Accesibilidad
Name[es_CL]=Accesibilidad
Name[es_CO]=Accesibilidad
Name[es_CR]=Accesibilidad
Name[es_DO]=Accesibilidad
Name[es_EC]=Accesibilidad
Name[es_ES]=Accesibilidad
Name[es_MX]=Accesibilidad
Name[es_NI]=Accesibilidad
Name[es_PA]=Accesibilidad
Name[es_PE]=Accesibilidad
Name[es_PR]=Accesibilidad
Name[es_SV]=Accesibilidad
Name[es_UY]=Accesibilidad
Name[es_VE]=Accesibilidad
Name[et]=Hõlbustus
Name[et_EE]=Hõlbustus
Name[eu]=Erabilerraztasuna
Name[fa]=دسترسپذیری
Name[fa_AF]=دسترسپذیری
Name[fa_IR]=دسترسپذیری
Name[fi]=Esteettömyys
Name[fi_FI]=Esteettömyys
Name[fil]=Pagkarating
Name[fr]=Accessibilité
Name[fr_CA]=Accessibilité
Name[fr_FR]=Accessibilité
Name[fy]=Tagonklikens
Name[ga]=Inrochtaineacht
Name[gd]=Ruigsinneachd
Name[gl]=Accesibilidade
Name[gl_ES]=Accesibilidade
Name[he]=נגישות
Name[he_IL]=נגישות
Name[hr]=Pristupačnost
Name[hu]=Akadálymentesítés
Name[hu_HU]=Akadálymentesítés
Name[hy]=Մատչելիություն
Name[ia]=Accessibilitate
Name[id]=Aksesibilitas
Name[id_ID]=Aksesibilitas
Name[is]=Auðveldað aðgengi
Name[it]=Accessibilità
Name[it_CH]=Accessibilità
Name[it_IT]=Accessibilità
Name[ja]=ユーザ補助
Name[ja_JP]=ユーザ補助
Name[kab]=Tuffart
Name[kk]=Қол жетерлілік
Name[km]=មធ្យោបាយងាយស្រួល
Name[km_KH]=មធ្យោបាយងាយស្រួល
Name[kn]=ನಿಲುಕಣೆ (ಆಕ್ಸೆಸಿಬಿಲಿಟಿ)
Name[ko]=편리한 기능
Name[ko_KR]=편리한 기능
Name[la]=Adcessibilitas
Name[lo]=ການຊ່ວຍການເຂົ້າເຖິງ
Name[lo_LA]=ການຊ່ວຍການເຂົ້າເຖິງ
Name[lt]=Prieinamumas
Name[lt_LT]=Prieinamumas
Name[lv]=Pieejamība
Name[lv_LV]=Pieejamība
Name[ml]=ഉപയോഗലഭ്യത
Name[mr]=सुलभता
Name[ms]=Kebolehcapaian
Name[ms_MY]=Kebolehcapaian
Name[nb]=Tilgjengelighet
Name[nb_NO]=Tilgjengelighet
Name[nds]=Zugänglichkeit
Name[ne]=पहुँचयोग्य
Name[nl]=Toegankelijkheid
Name[nl_NL]=Toegankelijkheid
Name[nn]=Tilgjengefunksjonar
Name[nn_NO]=Tilgjengefunksjonar
Name[oc]=Accessibilitat
Name[om]=Gahiinsa
Name[pa]=ਅਸੈੱਸਬਿਲਟੀ
Name[pl]=Ułatwienia dostępu
Name[pl_PL]=Ułatwienia dostępu
Name[pt]=Acessibilidade
Name[pt_BR]=Acessibilidade
Name[pt_PT]=Acessibilidade
Name[ro]=Accesibilitate
Name[ro_RO]=Accesibilitate
Name[ru]=Специальные возможности
Name[rue]=Доступ
Name[sc]=Atzessibilidade
Name[si]=ප්රවේශතාවය
Name[sk]=Zjednodušenie ovládania
Name[sk_SK]=Zjednodušenie ovládania
Name[sl]=Dostopnost
Name[sl_SI]=Dostopnost
Name[so]=Sahlidda
Name[sq]=Përdorshmëria
Name[sr]=Приступачност
Name[sr@Latn]=Pristupačnost
Name[sr@ije]=Приступачност
Name[sr@ijekavianlatin]=Приступачност
Name[sr@latin]=Pristupačnost
Name[sr_RS]=Приступачност
Name[sr_RS@latin]=Pristupačnost
Name[sv]=Tillgänglighet
Name[ta]=அணுகல்தன்மை
Name[ta_LK]=அணுகல்தன்மை
Name[te]=ప్రాప్తత
Name[tg]=Қобилияти дастрасӣ
Name[th]=สิ่งอำนวยความสะดวก
Name[th_TH]=สิ่งอำนวยความสะดวก
Name[tl]=Pagkarating
Name[tr]=Erişilebilirlik
Name[tr_TR]=Erişilebilirlik
Name[ts]=Mfikelelo
Name[tt]=Алу
Name[tt@iqtelif]=Алу
Name[uk]=Спеціяльні можливости
Name[uk_UA]=Спеціяльні можливости
Name[ur]=رسائی
Name[uz]=Фойдаланишга рухсат мавжудлиги
Name[uz@cyrillic]=Фойдаланишга рухсат мавжудлиги
Name[vi]=Khả năng Truy cập
Name[vi_VN]=Khả năng Truy cập
Name[zh_CN]=辅助功能
Name[zh_HK]=無障礙存取
Name[zh_TW]=無障礙
Comment=Configure accessibility features
Comment[bg]=Конфигуриране на функциите за достъпност
Comment[bg_BG]=Конфигуриране на функциите за достъпност
Comment[ca]=Configura les funcions d'accessibilitat
Comment[ca@valencia]=Configura les funcions d'accessibilitat
Comment[ca_ES]=Configura les funcions d'accessibilitat
Comment[ca_ES@valencia]=Configura les funcions d'accessibilitat
Comment[cs]=Nastavení vlastností zpřístupnění
Comment[cs_CZ]=Nastavení vlastností zpřístupnění
Comment[cy]=Ffurfweddu dewisiadau hygyrchedd
Comment[da]=Konfigurér tilgængelighedsfunktioner
Comment[da_DK]=Konfigurér tilgængelighedsfunktioner
Comment[de]=Barrierefreiheitsfunktionen konfigurieren
Comment[de_CH]=Barrierefreiheitsfunktionen konfigurieren
Comment[de_DE]=Barrierefreiheitsfunktionen konfigurieren
Comment[el]=Προσαρμογή λειτουργιών προσβασιμότητας
Comment[es]=Configurar las funciones de accesibilidad
Comment[es_AR]=Configurar las funciones de accesibilidad
Comment[es_CL]=Configurar las funciones de accesibilidad
Comment[es_CO]=Configurar las funciones de accesibilidad
Comment[es_CR]=Configurar las funciones de accesibilidad
Comment[es_DO]=Configurar las funciones de accesibilidad
Comment[es_EC]=Configurar las funciones de accesibilidad
Comment[es_ES]=Configurar las funciones de accesibilidad
Comment[es_MX]=Configurar las funciones de accesibilidad
Comment[es_NI]=Configurar las funciones de accesibilidad
Comment[es_PA]=Configurar las funciones de accesibilidad
Comment[es_PE]=Configurar las funciones de accesibilidad
Comment[es_PR]=Configurar las funciones de accesibilidad
Comment[es_SV]=Configurar las funciones de accesibilidad
Comment[es_UY]=Configurar las funciones de accesibilidad
Comment[es_VE]=Configurar las funciones de accesibilidad
Comment[eu]=Konfiguratu erabilerraztasun ezaugarriak
Comment[fi]=Hallitse esteettömyysasetuksia
Comment[fi_FI]=Hallitse esteettömyysasetuksia
Comment[fr]=Configuration des fonctionnalités d'accessibilité
Comment[fr_CA]=Configuration des fonctionnalités d'accessibilité
Comment[fr_FR]=Configuration des fonctionnalités d'accessibilité
Comment[hr]=Prilagodi značajke pristupaćnosti
Comment[hu]=Akadálymentesítési szolgáltatások beállítása
Comment[hu_HU]=Akadálymentesítési szolgáltatások beállítása
Comment[ia]=Configurar le characteristicas de accessibilitate
Comment[id]=Konfigurasi fitur aksesibilitas
Comment[id_ID]=Konfigurasi fitur aksesibilitas
Comment[is]=Stilla auðveldað aðgengi
Comment[it]=Configura le caratteristiche di accessibilità
Comment[it_CH]=Configura le caratteristiche di accessibilità
Comment[it_IT]=Configura le caratteristiche di accessibilità
Comment[kab]=Aswalo n tmesɣent n tuffart
Comment[ko]=편리한 기능 설정하기
Comment[ko_KR]=편리한 기능 설정하기
Comment[lt]=Konfigūruoti prieinamumo ypatybes
Comment[lt_LT]=Konfigūruoti prieinamumo ypatybes
Comment[nl]=Toegankelijkheidsfuncties instellen
Comment[nl_NL]=Toegankelijkheidsfuncties instellen
Comment[pl]=Konfiguruj funkcje ułatwienia dostępu
Comment[pl_PL]=Konfiguruj funkcje ułatwienia dostępu
Comment[pt]=Configurar as funções de acessibilidade.
Comment[pt_BR]=Configure recursos de acessibilidade
Comment[pt_PT]=Configurar as funções de acessibilidade.
Comment[ro]=Configurează caracteristicile de accesibilitate
Comment[ro_RO]=Configurează caracteristicile de accesibilitate
Comment[ru]=Настройка специальных возможностей
Comment[sc]=Configura sas propriedades de atzessibilidade
Comment[sk]=Konfigurovať funkcie zjednodušenia ovládania
Comment[sk_SK]=Konfigurovať funkcie zjednodušenia ovládania
Comment[sr]=Подесите функције приступачности
Comment[sr@Latn]=Подесите функције приступачности
Comment[sr@ije]=Подесите функције приступачности
Comment[sr@ijekavianlatin]=Подесите функције приступачности
Comment[sr@latin]=Подесите функције приступачности
Comment[sr_RS]=Подесите функције приступачности
Comment[sr_RS@latin]=Подесите функције приступачности
Comment[sv]=Ställ in tillgänglighets egenskaper
Comment[th]=ตั้งค่าคุณลักษณะการเข้าถึง
Comment[th_TH]=ตั้งค่าคุณลักษณะการเข้าถึง
Comment[tr]=Erişilebilirlik özelliklerini yapılandırın
Comment[tr_TR]=Erişilebilirlik özelliklerini yapılandırın
Comment[uk]=Налаштування спеціяльних можливостей
Comment[uk_UA]=Налаштування спеціяльних можливостей
Comment[ur]=رسائی کے فیچر تشکیل دیں
Comment[zh_CN]=配置辅助功能
Comment[zh_HK]=設定無障礙存取功能
Comment[zh_TW]=調整無障礙輔助功能
Keywords=magnifier;talk;access;zoom;keys;contrast;
Keywords[am]=ማጉያ : መነጋገሪያ : ፍቃድ : ማሳያ : ቁልፎች : ማነፃፅሪያ;
Keywords[ar]=عدسة، تكلم، ولوج، تكبير، مفاتيح، تباين;
Keywords[ast]=lente;falar;accesu;zoom;tecles;contraste;
Keywords[be]=лупа;казаць;доступ;zoom;ключы;кантраснасць;
Keywords[be@latin]=лупа;казаць;доступ;zoom;ключы;кантраснасць;
Keywords[be_BY]=лупа;казаць;доступ;zoom;ключы;кантраснасць;
Keywords[bg]=лупа;говор;достъп;мащаб;клавиши;контраст;
Keywords[bg_BG]=лупа;говор;достъп;мащаб;клавиши;контраст;
Keywords[bs]=povećalo;govor;pristup;zumiranje;kontrast;
Keywords[ca]=lupa;veu;accés;zoom;tecles;contrast;
Keywords[ca@valencia]=lupa;parlar;accés;zoom;tecles;contrast;
Keywords[ca_ES]=lupa;veu;accés;zoom;tecles;contrast;
Keywords[ca_ES@valencia]=lupa;parlar;accés;zoom;tecles;contrast;
Keywords[cs]=lupa;mluvení;přístup;přiblížení;kontrast;
Keywords[cs_CZ]=lupa;mluvení;přístup;přiblížení;kontrast;
Keywords[cy]=chwyddwr;siarad;mynediad;chwyddo. allweddi;cyferbyniad;
Keywords[da]=lup;tal;tilgængelighed;forstør;formindsk;taster;kontrast;
Keywords[da_DK]=lup;tal;tilgængelighed;forstør;formindsk;taster;kontrast;
Keywords[de]=Lupe;sprechen;Zugriff;Zoom;Vergrößern;Tasten;Kontrast;
Keywords[de_CH]=Lupe;sprechen;Zugriff;Zoom;Vergrößern;Tasten;Kontrast;
Keywords[de_DE]=Lupe;sprechen;Zugriff;Zoom;Vergrößern;Tasten;Kontrast;
Keywords[el]=μεγεθυντής;συνομιλία;πρόσβαση;μεγέθυνση;πλήκτρα;αντίθεση;
Keywords[es]=lupa;hablar;acceso;zoom;teclas;contraste;
Keywords[es_AR]=lupa;hablar;acceso;zoom;teclas;contraste;
Keywords[es_CL]=lupa;hablar;acceso;zoom;teclas;contraste;
Keywords[es_CO]=lupa;hablar;acceso;zoom;teclas;contraste;
Keywords[es_CR]=lupa;hablar;acceso;zoom;teclas;contraste;
Keywords[es_DO]=lupa;hablar;acceso;zoom;teclas;contraste;
Keywords[es_EC]=lupa;hablar;acceso;zoom;teclas;contraste;
Keywords[es_ES]=lupa;hablar;acceso;zoom;teclas;contraste;
Keywords[es_MX]=lupa;hablar;acceso;zoom;teclas;contraste;
Keywords[es_NI]=lupa;hablar;acceso;zoom;teclas;contraste;
Keywords[es_PA]=lupa;hablar;acceso;zoom;teclas;contraste;
Keywords[es_PE]=lupa;hablar;acceso;zoom;teclas;contraste;
Keywords[es_PR]=lupa;hablar;acceso;zoom;teclas;contraste;
Keywords[es_SV]=lupa;hablar;acceso;zoom;teclas;contraste;
Keywords[es_UY]=lupa;hablar;acceso;zoom;teclas;contraste;
Keywords[es_VE]=lupa;hablar;acceso;zoom;teclas;contraste;
Keywords[eu]=lupa;hitz egin;sarbidea;zooma;teklak;kontrastea;
Keywords[fa]=ذرهبین، سخن، دسترسی، زوم، کلیدها، کنتراست;
Keywords[fa_AF]=ذرهبین، سخن، دسترسی، زوم، کلیدها، کنتراست;
Keywords[fa_IR]=ذرهبین، سخن، دسترسی، زوم، کلیدها، کنتراست;
Keywords[fi]=suurennuslasi;puhe;pääsy;suurennus;näppäimet;kontrasti;
Keywords[fi_FI]=suurennuslasi;puhe;pääsy;suurennus;näppäimet;kontrasti;
Keywords[fr]=loupe;parole;accès;zoom;touches;contraste;
Keywords[fr_CA]=loupe;parler;accès;zoom;clés;contraste;
Keywords[fr_FR]=loupe;parole;accès;zoom;touches;contraste;
Keywords[fy]=fergrutglês;skilje;tagong;fergrutsje;kaaien;kontrast;
Keywords[ga]=formhéadaitheoir;caint;rochtain;súmáil;eochracha;codarsnacht;
Keywords[gd]=meudaichear;còmhradh;cothrom;sùm;iuchraichean;iomsgaradh;magnifier;talk;access;zoom;keys;contrast;
Keywords[gl]=lupa;conversa;acceso;zoom;chaves;contraste;
Keywords[gl_ES]=lupa;conversa;acceso;zoom;chaves;contraste;
Keywords[hr]=povećalo;govor;pristup;uvećanje;tipke;kontrast;
Keywords[hu]=nagyító;csevegés;hozzáférés;nagyítás;kulcsok;kontraszt;
Keywords[hu_HU]=nagyító;csevegés;hozzáférés;nagyítás;kulcsok;kontraszt;
Keywords[ia]=aggranditor;confabular;accesso;zoom;claves;contrasto;
Keywords[id]=kaca pembesar;bicara;akses;perbesar;kunci;kontras;
Keywords[id_ID]=kaca pembesar;bicara;akses;perbesar;kunci;kontras;
Keywords[is]=skjástækkun;tal;aðgengi;aðdráttur;lyklar;birtuskil;
Keywords[it]=lente d'ingrandimento;parlato;accesso;zoom;chiavi;contrasto;
Keywords[it_CH]=lente d'ingrandimento;parlato;accesso;zoom;chiavi;contrasto;
Keywords[it_IT]=lente d'ingrandimento;parlato;accesso;zoom;chiavi;contrasto;
Keywords[ja]=拡大鏡、トーク、アクセス、ズーム、キー、コントラスト;
Keywords[ja_JP]=拡大鏡、トーク、アクセス、ズーム、キー、コントラスト;
Keywords[kab]=tlinint;awal;adduf;zoom;tiqeffalin;tamarit;
Keywords[ko]=돋보기;톡;연결;줌;키;대비;
Keywords[ko_KR]=돋보기;톡;연결;줌;키;대비;
Keywords[lo]=magnifier;ເວົ້າ;ເຂົ້າເຖິງ;ຊູມ;keys;contrast;
Keywords[lo_LA]=magnifier;ເວົ້າ;ເຂົ້າເຖິງ;ຊູມ;keys;contrast;
Keywords[lt]=vaizdo didinimas;įgarsinimas;kita prieiga;mygtukai;kontrastas;
Keywords[lt_LT]=vaizdo didinimas;įgarsinimas;kita prieiga;mygtukai;kontrastas;
Keywords[lv]=palielinātājs;runāt;piekļuve;tālummaiņa;atslēgas;kontrasts;
Keywords[lv_LV]=palielinātājs;runāt;piekļuve;tālummaiņa;atslēgas;kontrasts;
Keywords[ms]=pembesar;bual;capaian;zum;kekunci;beza jelas;
Keywords[ms_MY]=pembesar;bual;capaian;zum;kekunci;beza jelas;
Keywords[nb]=forstørrelsesglass;snakk;tilgang;forstørr;nøkler;kontrast;
Keywords[nb_NO]=forstørrelsesglass;snakk;tilgang;forstørr;nøkler;kontrast;
Keywords[nds]=Lupe;sprechen;Zugang;Zoom;Tasten;Kontrast;
Keywords[nl]=vergrootglas;spraak;toegang;zoomen;toetsen;contrast;
Keywords[nl_NL]=vergrootglas;spraak;toegang;zoomen;toetsen;contrast;
Keywords[pa]=ਮੈਗਨੀਫਾਇਰ;ਟਾੱਕ;ਅੱਕਸੈੱਸ;ਜ਼ੂਮ;ਚਾਬੀਆਂ;ਕੋਂਟਰਾਸਟ;
Keywords[pl]=lupa;rozmowy;dostęp;powiększenie;klucze;kontrast;
Keywords[pl_PL]=lupa;rozmowy;dostęp;powiększenie;klucze;kontrast;
Keywords[pt]=amplificador;conversa;acesso;ampliação;teclas;contraste;
Keywords[pt_BR]=lupa;fala;acesso;zoom;teclas;contraste;
Keywords[pt_PT]=amplificador;conversa;acesso;ampliação;teclas;contraste;
Keywords[ro]=lupă;conversație;acces;mărire;taste;contrast;
Keywords[ro_RO]=lupă;conversație;acces;mărire;taste;contrast;
Keywords[ru]=лупа;разговор;доступ;масштабирование;ключи;контрастность;
Keywords[sc]=lente de ismanniadura;faeddare;atzessu;zoom;tastos;cuntrastu;
Keywords[sk]=lupa;hovorenie;prístup;priblíženie;kľúče;kontrast;
Keywords[sk_SK]=lupa;hovorenie;prístup;priblíženie;kľúče;kontrast;
Keywords[sl]=povečevalno steklo;govor;dostop;približanje;tipke;kontrast;
Keywords[sl_SI]=povečevalno steklo;govor;dostop;približanje;tipke;kontrast;
Keywords[sr]=лупа;говор;приступ;увеличавање;дугмад;контраст;
Keywords[sr@Latn]=лупа;говор;приступ;увеличавање;дугмад;контраст;
Keywords[sr@ije]=лупа;говор;приступ;увеличавање;дугмад;контраст;
Keywords[sr@ijekavianlatin]=лупа;говор;приступ;увеличавање;дугмад;контраст;
Keywords[sr@latin]=лупа;говор;приступ;увеличавање;дугмад;контраст;
Keywords[sr_RS]=лупа;говор;приступ;увеличавање;дугмад;контраст;
Keywords[sr_RS@latin]=лупа;говор;приступ;увеличавање;дугмад;контраст;
Keywords[sv]=förstoringsglas;tal;åtkomst;zoom;nycklar;kontrast;
Keywords[ta]=உருப்பெருக்கி;பேச்சு;அணுகல்;பெரிதாக்குதல்;விசைகள்;வேறுபாடு;
Keywords[ta_LK]=உருப்பெருக்கி;பேச்சு;அணுகல்;பெரிதாக்குதல்;விசைகள்;வேறுபாடு;
Keywords[tg]=бузургнамо;гуфтугӯ;дастрасӣ;танзими андоза;калидҳо;контраст;
Keywords[th]=แว่นขยาย;เครื่องอ่านออกเสียงข้อความ;การเข้าถึง;ย่อ/ขยาย;แป้น;ความสว่าง;
Keywords[th_TH]=แว่นขยาย;เครื่องอ่านออกเสียงข้อความ;การเข้าถึง;ย่อ/ขยาย;แป้น;ความสว่าง;
Keywords[tr]=büyüteç;konuşma;erişim;büyütme;anahtarlar;kontrast;
Keywords[tr_TR]=büyüteç;konuşma;erişim;büyütme;anahtarlar;kontrast;
Keywords[uk]=лупа;розмова;доступ;масштабування;ключі;контрастність;
Keywords[uk_UA]=лупа;розмова;доступ;масштабування;ключі;контрастність;
Keywords[ur]=میگنی فائر، ٹاک(talk)، رسائی، زوم، کلیدیں، تناسب امتزاج(contrast);
Keywords[uz]=лупа;суҳбат;рухсат бериш;масштабни ўзгартириш;калитлар;контраст;
Keywords[uz@cyrillic]=лупа;суҳбат;рухсат бериш;масштабни ўзгартириш;калитлар;контраст;
Keywords[vi]=kính phóng đại;nói chuyện;truy cập;thu phóng;phím;tương phản;
Keywords[vi_VN]=kính phóng đại;nói chuyện;truy cập;thu phóng;phím;tương phản;
Keywords[zh_CN]=magnifier;talk;access;zoom;keys;contrast;放大;语音;访问;辅助;缩放;键;联系人;
Keywords[zh_HK]=magnifier;talk;access;zoom;keys;contrast;放大鏡;聊天;存取;縮放;按鍵;對比度;
Keywords[zh_TW]=放大鏡;聊天;存取;縮放;按鍵;對比;
Cinnamon-3.6.7/files/usr/share/applications/cinnamon-settings-applets.desktop 0000664 0001750 0001750 00000027467 13215735076 026452 0 ustar fabio fabio [Desktop Entry]
Icon=cs-applets
Exec=cinnamon-settings applets
Type=Application
OnlyShowIn=X-Cinnamon;
Categories=Settings;
Name=Applets
Name[af]=Toepassingtjies
Name[am]=ፕሮግራሞች
Name[ar]=البريمجات
Name[be]=Аплеты
Name[be@latin]=Аплеты
Name[be_BY]=Аплеты
Name[bg]=Аплети
Name[bg_BG]=Аплети
Name[bn]=অ্যাপলেট
Name[bn_IN]=অ্যাপলেট
Name[bs]=Apleti
Name[ca]=Miniaplicacions
Name[ca_ES]=Miniaplicacions
Name[cs]=Aplety
Name[cs_CZ]=Aplety
Name[csb]=Apletë
Name[cy]=Rhaglenigau
Name[da]=Panelprogrammer
Name[da_DK]=Panelprogrammer
Name[el]=Μικροεφαρμογές
Name[eo]=Aplikaĵetoj
Name[et]=Apletid
Name[et_EE]=Apletid
Name[eu]=Applet-ak
Name[fa]=ابزارکها
Name[fa_AF]=ابزارکها
Name[fa_IR]=ابزارکها
Name[fi]=Paneelisovelmat
Name[fi_FI]=Paneelisovelmat
Name[ga]=Feidhmchláiríní
Name[gd]=Aplaidean
Name[gl]=Miniaplicativos
Name[gl_ES]=Miniaplicativos
Name[he]=יישומונים
Name[he_IL]=יישומונים
Name[hi]=एप्लेट्स
Name[hr]=Apleti
Name[hu]=Kisalkalmazások
Name[hu_HU]=Kisalkalmazások
Name[id]=Applet
Name[id_ID]=Applet
Name[is]=Smáforrit
Name[it]=Applet
Name[it_CH]=Applet
Name[it_IT]=Applet
Name[ja]=アプレット
Name[ja_JP]=アプレット
Name[kab]=Tiplatin
Name[km]=អាប់ភ្លេត
Name[km_KH]=អាប់ភ្លេត
Name[ko]=애플릿
Name[ko_KR]=애플릿
Name[lo]=ແອັບເພັດ
Name[lo_LA]=ແອັບເພັດ
Name[lt]=Įskiepiai
Name[lt_LT]=Įskiepiai
Name[lv]=Sīklietotnes
Name[lv_LV]=Sīklietotnes
Name[ml]=ആപ്ലെറ്റുകൾ
Name[ms]=Aplet
Name[ms_MY]=Aplet
Name[nb]=Miniprogrammer
Name[nb_NO]=Miniprogrammer
Name[ne]=एप्प्लेट्स
Name[nl]=Hulptoepassingen
Name[nl_NL]=Hulptoepassingen
Name[nn]=Småprogram
Name[nn_NO]=Småprogram
Name[om]=Apleetota
Name[pa]=ਐਪਲਿਟ
Name[pl]=Aplety
Name[pl_PL]=Aplety
Name[pt_BR]=Miniaplicativos
Name[ro]=Appleturi
Name[ro_RO]=Appleturi
Name[ru]=Апплеты
Name[rue]=Апплеты
Name[sk]=Aplety
Name[sk_SK]=Aplety
Name[sl]=Apleti
Name[sl_SI]=Apleti
Name[so]=Kaabayaasha
Name[sq]=Programthet
Name[sr]=Програмчићи
Name[sr@Latn]=Apleti
Name[sr@ije]=Програмчићи
Name[sr@ijekavianlatin]=Програмчићи
Name[sr@latin]=Apleti
Name[sr_RS]=Програмчићи
Name[sr_RS@latin]=Apleti
Name[sv]=Panelprogram
Name[ta]=குறுநிரல்கள்
Name[ta_LK]=குறுநிரல்கள்
Name[te]=ఆప్లెట్లు
Name[tg]=Барномаҳо
Name[th]=แอปเพล็ต
Name[th_TH]=แอปเพล็ต
Name[tr]=Uygulamacıklar
Name[tr_TR]=Uygulamacıklar
Name[ts]=Tiphurogireme-ntsongo
Name[uk]=Аплети
Name[uk_UA]=Аплети
Name[ur]=ایپلیٹ
Name[uz]=Апплетлар
Name[uz@cyrillic]=Апплетлар
Name[vi]=Tiểu trình
Name[vi_VN]=Tiểu trình
Name[zh_CN]=小程序
Name[zh_HK]=應用小程式
Name[zh_TW]=面板小程式
Comment=Manage Cinnamon applets
Comment[am]=የ ሲናሞን አፕሌቶች አስተዳዳሪ
Comment[ar]=إدارة بريمجات سينامُن
Comment[ast]=Alministra los applets de Cinnamon
Comment[be]=Кіраванне аплетамi Cinnamon
Comment[be@latin]=Кіраванне аплетамi Cinnamon
Comment[be_BY]=Кіраванне аплетамi Cinnamon
Comment[bg]=Управление на аплетите за Cinnamon
Comment[bg_BG]=Управление на аплетите за Cinnamon
Comment[bs]=Upravljaj Cinnamon apletima
Comment[ca]=Gestioneu les miniaplicacions de Cinnamon
Comment[ca@valencia]=Administra applets de Cinnamon
Comment[ca_ES]=Gestioneu les miniaplicacions de Cinnamon
Comment[ca_ES@valencia]=Administra applets de Cinnamon
Comment[cs]=Správa Cinnamon appletů
Comment[cs_CZ]=Správa Cinnamon appletů
Comment[cy]=Rheolwch raglenigau Cinnamon
Comment[da]=Administrér Cinnamon-panelprogrammer
Comment[da_DK]=Administrér Cinnamon-panelprogrammer
Comment[de]=Cinnamon-Applets verwalten
Comment[de_CH]=Cinnamon-Applets verwalten
Comment[de_DE]=Cinnamon-Applets verwalten
Comment[el]=Διαχείριση μικροεφαρμογών Cinnamon
Comment[es]=Administrar applets de Cinnamon
Comment[es_AR]=Administrar applets de Cinnamon
Comment[es_CL]=Administrar applets de Cinnamon
Comment[es_CO]=Administrar applets de Cinnamon
Comment[es_CR]=Administrar applets de Cinnamon
Comment[es_DO]=Administrar applets de Cinnamon
Comment[es_EC]=Administrar applets de Cinnamon
Comment[es_ES]=Administrar applets de Cinnamon
Comment[es_MX]=Administrar applets de Cinnamon
Comment[es_NI]=Administrar applets de Cinnamon
Comment[es_PA]=Administrar applets de Cinnamon
Comment[es_PE]=Administrar applets de Cinnamon
Comment[es_PR]=Administrar applets de Cinnamon
Comment[es_SV]=Administrar applets de Cinnamon
Comment[es_UY]=Administrar applets de Cinnamon
Comment[es_VE]=Administrar applets de Cinnamon
Comment[eu]=Kudeatu Cinnamon applet-ak
Comment[fa]=مدیریت اپلتهای سینمون
Comment[fa_AF]=مدیریت اپلتهای سینمون
Comment[fa_IR]=مدیریت اپلتهای سینمون
Comment[fi]=Hallitse Cinnamon-sovelmia
Comment[fi_FI]=Hallitse Cinnamon-sovelmia
Comment[fr]=Gérer les applets de Cinnamon
Comment[fr_CA]=Gérer les applets Cinnamon
Comment[fr_FR]=Gérer les applets de Cinnamon
Comment[fy]=Cinnamon applets beheare
Comment[gd]=Stiùirich aplaidean Cinnamon
Comment[gl]=Administración dos miniaplicativos de Cinnamon
Comment[gl_ES]=Administración dos miniaplicativos de Cinnamon
Comment[hr]=Upravljajte Cinnamon apletima
Comment[hu]=Cinnamon kisalkalmazások kezelése
Comment[hu_HU]=Cinnamon kisalkalmazások kezelése
Comment[ia]=Administrar le applets de Cinnamon
Comment[id]=Atur applets Cinnamon
Comment[id_ID]=Atur applets Cinnamon
Comment[is]=Sýsla með Cinnamon forritlinga
Comment[it]=Gestione applet di Cinnamon
Comment[it_CH]=Gestione applet di Cinnamon
Comment[it_IT]=Gestione applet di Cinnamon
Comment[ja]=Cinnamon アプレットの管理
Comment[ja_JP]=Cinnamon アプレットの管理
Comment[kab]=Sefrek tiplatin n Cinnamon
Comment[ko]=시나몬 애플릿 관리
Comment[ko_KR]=시나몬 애플릿 관리
Comment[lo]=ຈັດການແອັບເພັດ Cinnamon
Comment[lo_LA]=ຈັດການແອັບເພັດ Cinnamon
Comment[lt]=Tvarkyti Cinnamon įskiepius
Comment[lt_LT]=Tvarkyti Cinnamon įskiepius
Comment[lv]=Pārvaldīt Cinnamon sīkrīkus
Comment[lv_LV]=Pārvaldīt Cinnamon sīkrīkus
Comment[ms]=Mengurus applet Cinnamon
Comment[ms_MY]=Mengurus applet Cinnamon
Comment[nb]=Håndter miniprogrammer i Cinnamon
Comment[nb_NO]=Håndter miniprogrammer i Cinnamon
Comment[nds]=Cinnamon Minianwendungen bearbeiten
Comment[nl]=Hulptoepassingen van Cinnamon beheren
Comment[nl_NL]=Hulptoepassingen van Cinnamon beheren
Comment[oc]=Gerir los applets de Cinnamon
Comment[pl]=Zarządzaj apletami Cinnamona
Comment[pl_PL]=Zarządzaj apletami Cinnamona
Comment[pt]=Gerir applets do Cinnamon
Comment[pt_BR]=Gerenciar miniaplicativos do Cinnamon
Comment[pt_PT]=Gerir applets do Cinnamon
Comment[ro]=Gestionează appleturile Cinnamon
Comment[ro_RO]=Gestionează appleturile Cinnamon
Comment[ru]=Управление апплетами Cinnamon
Comment[sc]=Manìgia applets de Cinnamon
Comment[sk]=Spravovať aplety prostredia Cinnamon
Comment[sk_SK]=Spravovať aplety prostredia Cinnamon
Comment[sl]=Upravljajte z apleti Cinnamona
Comment[sl_SI]=Upravljajte z apleti Cinnamona
Comment[sq]=Menaxho programthet e Cinnamon
Comment[sr]=Управљање програмчићима Цимета
Comment[sr@Latn]=Управљање програмчићима Цимета
Comment[sr@ije]=Управљање програмчићима Цимета
Comment[sr@ijekavianlatin]=Управљање програмчићима Цимета
Comment[sr@latin]=Управљање програмчићима Цимета
Comment[sr_RS]=Управљање програмчићима Цимета
Comment[sr_RS@latin]=Управљање програмчићима Цимета
Comment[sv]=Hantera Cinnamons panelprogram
Comment[tg]=Идоракунии зербарномаҳои Cinnamon
Comment[th]=จัดการแอปเพล็ตต่าง ๆ ของ Cinnamon
Comment[th_TH]=จัดการแอปเพล็ตต่าง ๆ ของ Cinnamon
Comment[tr]=Cinnamon uygulamacıklarını yönet
Comment[tr_TR]=Cinnamon uygulamacıklarını yönet
Comment[uk]=Керування аплетами Cinnamon
Comment[uk_UA]=Керування аплетами Cinnamon
Comment[ur]=سنامون کے ایپلیٹس کا انتظام
Comment[uz]=Синнамон апплетларини бошқариш
Comment[uz@cyrillic]=Синнамон апплетларини бошқариш
Comment[vi]=Quản lý tiểu dụng Cinnamon
Comment[vi_VN]=Quản lý tiểu dụng Cinnamon
Comment[zh_CN]=管理Cinnamon小程序
Comment[zh_HK]=管理 Cinnamon 應用小程式
Comment[zh_TW]=管理 Cinnamon 面板小程式
Keywords=applet;
Keywords[am]=አፕሌት;
Keywords[ar]=بُريْمِج;
Keywords[be]=аплет;
Keywords[be@latin]=аплет;
Keywords[be_BY]=аплет;
Keywords[bg]=аплет;
Keywords[bg_BG]=аплет;
Keywords[bs]=aplet;
Keywords[ca]=miniaplicació;
Keywords[ca_ES]=miniaplicació;
Keywords[cy]=rhaglennig;
Keywords[da]=panelprogram;
Keywords[da_DK]=panelprogram;
Keywords[de]=Applet;
Keywords[de_CH]=Applet;
Keywords[de_DE]=Applet;
Keywords[el]=μικροεφαρμογή;
Keywords[eo]=apleto;
Keywords[es]=miniaplicación;
Keywords[es_AR]=miniaplicación;
Keywords[es_CL]=miniaplicación;
Keywords[es_CO]=miniaplicación;
Keywords[es_CR]=miniaplicación;
Keywords[es_DO]=miniaplicación;
Keywords[es_EC]=miniaplicación;
Keywords[es_ES]=miniaplicación;
Keywords[es_MX]=miniaplicación;
Keywords[es_NI]=miniaplicación;
Keywords[es_PA]=miniaplicación;
Keywords[es_PE]=miniaplicación;
Keywords[es_PR]=miniaplicación;
Keywords[es_SV]=miniaplicación;
Keywords[es_UY]=miniaplicación;
Keywords[es_VE]=miniaplicación;
Keywords[et]=rakend;
Keywords[et_EE]=rakend;
Keywords[fa]=برنامک;
Keywords[fa_AF]=برنامک;
Keywords[fa_IR]=برنامک;
Keywords[fi]=sovelma;
Keywords[fi_FI]=sovelma;
Keywords[ga]=feidhmchláirín;
Keywords[gd]=aplaid;
Keywords[gl]=miniaplicativo;
Keywords[gl_ES]=miniaplicativo;
Keywords[hr]=aplet;
Keywords[hu]=kisalkalmazás;
Keywords[hu_HU]=kisalkalmazás;
Keywords[id]=aplet;
Keywords[id_ID]=aplet;
Keywords[is]=smáforrit;
Keywords[ja]=アプレット;
Keywords[ja_JP]=アプレット;
Keywords[kab]=Taplet;
Keywords[ko]=애플릿;
Keywords[ko_KR]=애플릿;
Keywords[lo]=ແອັບເພັດ;
Keywords[lo_LA]=ແອັບເພັດ;
Keywords[lt]=įskiepis;
Keywords[lt_LT]=įskiepis;
Keywords[lv]=sīkrīks;
Keywords[lv_LV]=sīkrīks;
Keywords[ms]=aplet;
Keywords[ms_MY]=aplet;
Keywords[nb]=miniprogram;
Keywords[nb_NO]=miniprogram;
Keywords[nds]=Minianwendung / Applet;
Keywords[nl]=hulptoepassing;
Keywords[nl_NL]=hulptoepassing;
Keywords[pa]=ਐਪਲਿਟ;
Keywords[pl]=aplet;
Keywords[pl_PL]=aplet;
Keywords[pt_BR]=miniaplicativo;
Keywords[ru]=апплет;
Keywords[sk]=aplet;
Keywords[sk_SK]=aplet;
Keywords[sl]=aplet;
Keywords[sl_SI]=aplet;
Keywords[sq]=programth;
Keywords[sr]=програмче;
Keywords[sr@Latn]=програмче;
Keywords[sr@ije]=програмче;
Keywords[sr@ijekavianlatin]=програмче;
Keywords[sr@latin]=програмче;
Keywords[sr_RS]=програмче;
Keywords[sr_RS@latin]=програмче;
Keywords[ta]=குறுநிரல்;
Keywords[ta_LK]=குறுநிரல்;
Keywords[tg]=зербарнома;
Keywords[th]=แอปเพล็ต;
Keywords[th_TH]=แอปเพล็ต;
Keywords[tr]=uygulamacık;
Keywords[tr_TR]=uygulamacık;
Keywords[uk]=аплет;
Keywords[uk_UA]=аплет;
Keywords[ur]=ایپلیٹ;
Keywords[uz]=апплет;
Keywords[uz@cyrillic]=апплет;
Keywords[vi]=tiểu trình;
Keywords[vi_VN]=tiểu trình;
Keywords[zh_CN]=小程序;
Keywords[zh_HK]=應用小程式;
Keywords[zh_TW]=面板小程式;
Cinnamon-3.6.7/files/usr/share/applications/cinnamon-settings-sound.desktop 0000664 0001750 0001750 00000025306 13215735076 026120 0 ustar fabio fabio [Desktop Entry]
Icon=cs-sound
Exec=cinnamon-settings sound
Type=Application
OnlyShowIn=X-Cinnamon;
Categories=Settings;
Name=Sound
Name[am]=ድምጽ
Name[ar]=الصوت
Name[ast]=Soníu
Name[be]=Гук
Name[be@latin]=Гук
Name[be_BY]=Гук
Name[bg]=Звук
Name[bg_BG]=Звук
Name[bs]=Zvuk
Name[ca]=Àudio
Name[ca@valencia]=So
Name[ca_ES]=Àudio
Name[ca_ES@valencia]=So
Name[cs]=Zvuk
Name[cs_CZ]=Zvuk
Name[cy]=Sain
Name[da]=Lyd
Name[da_DK]=Lyd
Name[de]=Klang
Name[de_CH]=Klang
Name[de_DE]=Klang
Name[el]=Ήχος
Name[eo]=Sono
Name[es]=Sonido
Name[es_AR]=Sonido
Name[es_CL]=Sonido
Name[es_CO]=Sonido
Name[es_CR]=Sonido
Name[es_DO]=Sonido
Name[es_EC]=Sonido
Name[es_ES]=Sonido
Name[es_MX]=Sonido
Name[es_NI]=Sonido
Name[es_PA]=Sonido
Name[es_PE]=Sonido
Name[es_PR]=Sonido
Name[es_SV]=Sonido
Name[es_UY]=Sonido
Name[es_VE]=Sonido
Name[et]=Heli
Name[et_EE]=Heli
Name[eu]=Soinua
Name[fa]=صدا
Name[fa_AF]=صدا
Name[fa_IR]=صدا
Name[fi]=Ääni
Name[fi_FI]=Ääni
Name[fr]=Son
Name[fr_CA]=Son
Name[fr_FR]=Son
Name[fy]=Lûd
Name[ga]=Fuaim
Name[gd]=Fuaim
Name[gl]=Son
Name[gl_ES]=Son
Name[he]=שמע
Name[he_IL]=שמע
Name[hr]=Zvuk
Name[hu]=Hang
Name[hu_HU]=Hang
Name[hy]=Ձայն
Name[ia]=Sono
Name[id]=Suara
Name[id_ID]=Suara
Name[is]=Hljóð
Name[it]=Audio
Name[it_CH]=Audio
Name[it_IT]=Audio
Name[ja]=サウンド
Name[ja_JP]=サウンド
Name[kk]=Дыбыс
Name[ko]=소리
Name[ko_KR]=소리
Name[lo]=ສຽງ
Name[lo_LA]=ສຽງ
Name[lt]=Garsas
Name[lt_LT]=Garsas
Name[lv]=Skaņa
Name[lv_LV]=Skaņa
Name[ms]=Bunyi
Name[ms_MY]=Bunyi
Name[nb]=Lyd
Name[nb_NO]=Lyd
Name[nds]=Klang
Name[nl]=Geluid
Name[nl_NL]=Geluid
Name[oc]=Son
Name[pa]=ਆਵਾਜ਼
Name[pl]=Dźwięk
Name[pl_PL]=Dźwięk
Name[pt]=Som
Name[pt_BR]=Som
Name[pt_PT]=Som
Name[ro]=Sunet
Name[ro_RO]=Sunet
Name[ru]=Звук
Name[sk]=Zvuk
Name[sk_SK]=Zvuk
Name[sl]=Zvok
Name[sl_SI]=Zvok
Name[sq]=Zëri
Name[sr]=Звук
Name[sr@Latn]=Звук
Name[sr@ije]=Звук
Name[sr@ijekavianlatin]=Звук
Name[sr@latin]=Звук
Name[sr_RS]=Звук
Name[sr_RS@latin]=Звук
Name[sv]=Ljud
Name[ta]=ஒலி
Name[ta_LK]=ஒலி
Name[tg]=Садо
Name[th]=เสียง
Name[th_TH]=เสียง
Name[tr]=Ses
Name[tr_TR]=Ses
Name[uk]=Звук
Name[uk_UA]=Звук
Name[ur]=آواز
Name[uz]=Товуш
Name[uz@cyrillic]=Товуш
Name[vi]=Âm thanh
Name[vi_VN]=Âm thanh
Name[zh_CN]=声音
Name[zh_HK]=聲音
Name[zh_TW]=音效
Comment=Manage sound settings
Comment[am]=የ ድምፅ ማሰናጃ አስተዳዳሪ
Comment[bg]=Управление настройките на звука
Comment[bg_BG]=Управление настройките на звука
Comment[ca]=Gestioneu els ajusts del so
Comment[ca@valencia]=Gestioneu els ajusts del so
Comment[ca_ES]=Gestioneu els ajusts del so
Comment[ca_ES@valencia]=Gestioneu els ajusts del so
Comment[cs]=Spravovat nastavení zvuku
Comment[cs_CZ]=Spravovat nastavení zvuku
Comment[cy]=Rheoli'r gosodiadau sain
Comment[da]=Håndtér lydindstillinger
Comment[da_DK]=Håndtér lydindstillinger
Comment[de]=Klangeinstellungen verwalten
Comment[de_CH]=Klangeinstellungen verwalten
Comment[de_DE]=Klangeinstellungen verwalten
Comment[el]=Διαχείριση ρυθμίσεων ήχου
Comment[es]=Gestionar opciones de sonido
Comment[es_AR]=Gestionar opciones de sonido
Comment[es_CL]=Gestionar opciones de sonido
Comment[es_CO]=Gestionar opciones de sonido
Comment[es_CR]=Gestionar opciones de sonido
Comment[es_DO]=Gestionar opciones de sonido
Comment[es_EC]=Gestionar opciones de sonido
Comment[es_ES]=Gestionar opciones de sonido
Comment[es_MX]=Gestionar opciones de sonido
Comment[es_NI]=Gestionar opciones de sonido
Comment[es_PA]=Gestionar opciones de sonido
Comment[es_PE]=Gestionar opciones de sonido
Comment[es_PR]=Gestionar opciones de sonido
Comment[es_SV]=Gestionar opciones de sonido
Comment[es_UY]=Gestionar opciones de sonido
Comment[es_VE]=Gestionar opciones de sonido
Comment[eu]=Kudeatu soinuaren ezarpenak
Comment[fi]=Ääniasetusten hallinta
Comment[fi_FI]=Ääniasetusten hallinta
Comment[fr]=Gérer les paramètres audio
Comment[fr_CA]=Gérer les paramètres audio
Comment[fr_FR]=Gérer les paramètres audio
Comment[hr]=Upravljanje postvkama zvuka
Comment[hu]=Hangbeállítások
Comment[hu_HU]=Hangbeállítások
Comment[ia]=Gerer le configurationes del sono
Comment[is]=Sýsla með hljóðstillingar
Comment[it]=Regolare le configurazioni del suono
Comment[it_CH]=Regolare le configurazioni del suono
Comment[it_IT]=Regolare le configurazioni del suono
Comment[ko]=소리 설정 관리
Comment[ko_KR]=소리 설정 관리
Comment[lt]=Tvarkyti garso nustatymus
Comment[lt_LT]=Tvarkyti garso nustatymus
Comment[nl]=Geluidinstellingen beheren
Comment[nl_NL]=Geluidinstellingen beheren
Comment[pl]=Zarządzaj ustawieniami dźwięku
Comment[pl_PL]=Zarządzaj ustawieniami dźwięku
Comment[pt]=Gerir definições de som
Comment[pt_BR]=Gerenciar configuração de áudio
Comment[pt_PT]=Gerir definições de som
Comment[ro]=Gestionează setările de sunet
Comment[ro_RO]=Gestionează setările de sunet
Comment[ru]=Управление настройками звука
Comment[sk]=Spravovať nastavenia zvuku
Comment[sk_SK]=Spravovať nastavenia zvuku
Comment[sr]=Управљајте подешавањима звука
Comment[sr@Latn]=Управљајте подешавањима звука
Comment[sr@ije]=Управљајте подешавањима звука
Comment[sr@ijekavianlatin]=Управљајте подешавањима звука
Comment[sr@latin]=Управљајте подешавањима звука
Comment[sr_RS]=Управљајте подешавањима звука
Comment[sr_RS@latin]=Управљајте подешавањима звука
Comment[sv]=Hantera ljudinställningar
Comment[tr]=Ses ayarlarını yönet
Comment[tr_TR]=Ses ayarlarını yönet
Comment[uk]=Керування налаштуваннями звуку
Comment[uk_UA]=Керування налаштуваннями звуку
Comment[ur]=آواز کی ترتیبات انتظام
Comment[zh_CN]=管理声音设置
Comment[zh_HK]=管理聲音設定
Comment[zh_TW]=管理音效設定
Keywords=sound;media;music;speakers;audio;
Keywords[am]=ድምፅ: መገናኛ: ሙዚቃ: ስፒከር: ድምፅ;
Keywords[bg]=звук;медия;музика;говорители;аудио;
Keywords[bg_BG]=звук;медия;музика;говорители;аудио;
Keywords[ca]=so;mitjans;música;altaveus;àudio;
Keywords[ca@valencia]=so;mitjans;música;altaveus;àudio;
Keywords[ca_ES]=so;mitjans;música;altaveus;àudio;
Keywords[ca_ES@valencia]=so;mitjans;música;altaveus;àudio;
Keywords[cs]=zvuk;média;hudba;reproduktory;audio;
Keywords[cs_CZ]=zvuk;média;hudba;reproduktory;audio;
Keywords[cy]=sain;cyfrwng;cerddoriaeth;uchelseinyddion;sain;
Keywords[da]=lyd;medier;musik;højtalere;audio;
Keywords[da_DK]=lyd;medier;musik;højtalere;audio;
Keywords[de]=Klang;Sound;Audio;Ton;Medien;Musik;Lautsprecher;
Keywords[de_CH]=Klang;Sound;Audio;Ton;Medien;Musik;Lautsprecher;
Keywords[de_DE]=Klang;Sound;Audio;Ton;Medien;Musik;Lautsprecher;
Keywords[el]=ήχος;πολυμέσα;μουσική;ηχεία;
Keywords[es]=sonido;medios;música;altavoces;audio;
Keywords[es_AR]=sonido;medios;música;altavoces;audio;
Keywords[es_CL]=sonido;medios;música;altavoces;audio;
Keywords[es_CO]=sonido;medios;música;altavoces;audio;
Keywords[es_CR]=sonido;medios;música;altavoces;audio;
Keywords[es_DO]=sonido;medios;música;altavoces;audio;
Keywords[es_EC]=sonido;medios;música;altavoces;audio;
Keywords[es_ES]=sonido;medios;música;altavoces;audio;
Keywords[es_MX]=sonido;medios;música;altavoces;audio;
Keywords[es_NI]=sonido;medios;música;altavoces;audio;
Keywords[es_PA]=sonido;medios;música;altavoces;audio;
Keywords[es_PE]=sonido;medios;música;altavoces;audio;
Keywords[es_PR]=sonido;medios;música;altavoces;audio;
Keywords[es_SV]=sonido;medios;música;altavoces;audio;
Keywords[es_UY]=sonido;medios;música;altavoces;audio;
Keywords[es_VE]=sonido;medios;música;altavoces;audio;
Keywords[eu]=soinua;multimedia;musika;bozgorailuak;audioa;
Keywords[fi]=ääni;äänentoisto;media;musiikki;kaiutin;kaiuttimet;kuulokkeet;audio;sound;music;speakers;
Keywords[fi_FI]=ääni;äänentoisto;media;musiikki;kaiutin;kaiuttimet;kuulokkeet;audio;sound;music;speakers;
Keywords[fr]=son;média;musique;haut-parleurs;audio;
Keywords[fr_CA]=son;média;musique;haut-parleurs;audio;
Keywords[fr_FR]=son;média;musique;haut-parleurs;audio;
Keywords[hr]=zvuk;medij;glazba;zvučnici;ton;
Keywords[hu]=sound;media;music;speakers;audio;hang;média;zene;hangszórók;
Keywords[hu_HU]=sound;media;music;speakers;audio;hang;média;zene;hangszórók;
Keywords[ia]=sono;medios;musica;altoparlatores;audio;
Keywords[is]=hljóð;margmiðlun;tónlist;hátalarar;hljóðkerfi;
Keywords[it]=suono;media;musica;altoparlanti;audio;
Keywords[it_CH]=suono;media;musica;altoparlanti;audio;
Keywords[it_IT]=suono;media;musica;altoparlanti;audio;
Keywords[ko]=소리;미디어;음악;스피커;오디오;
Keywords[ko_KR]=소리;미디어;음악;스피커;오디오;
Keywords[lt]=garsas;medija;muzika;garsiakalbiai;audio;
Keywords[lt_LT]=garsas;medija;muzika;garsiakalbiai;audio;
Keywords[nl]=geluid;media;muziek;luidsprekers;audio;
Keywords[nl_NL]=geluid;media;muziek;luidsprekers;audio;
Keywords[pl]=dźwięk;media;muzyka;głośniki;audio;
Keywords[pl_PL]=dźwięk;media;muzyka;głośniki;audio;
Keywords[pt]=som;media;música;altifalantes;áudio;
Keywords[pt_BR]=som;mídia;música;alto-falantes;áudio;
Keywords[pt_PT]=som;media;música;altifalantes;áudio;
Keywords[ro]=sunet;media;muzică;boxe;audio;
Keywords[ro_RO]=sunet;media;muzică;boxe;audio;
Keywords[ru]=звук;медиа;музыка;колонки;аудио;
Keywords[sk]=zvuk;médiá;hudba;reproduktory;audio;
Keywords[sk_SK]=zvuk;médiá;hudba;reproduktory;audio;
Keywords[sr]=звук;музика;звучници;аудио;
Keywords[sr@Latn]=звук;музика;звучници;аудио;
Keywords[sr@ije]=звук;музика;звучници;аудио;
Keywords[sr@ijekavianlatin]=звук;музика;звучници;аудио;
Keywords[sr@latin]=звук;музика;звучници;аудио;
Keywords[sr_RS]=звук;музика;звучници;аудио;
Keywords[sr_RS@latin]=звук;музика;звучници;аудио;
Keywords[sv]=ljud;media;musik;högtalare;ljud;
Keywords[tr]=ses;ortam;müzik;hoparlör;çalma;
Keywords[tr_TR]=ses;ortam;müzik;hoparlör;çalma;
Keywords[uk]=звук;медія;музика;гучномовці;аудіо;
Keywords[uk_UA]=звук;медія;музика;гучномовці;аудіо;
Keywords[ur]=آواز، ساؤنڈ، میڈیا، سپیکر، آڈیو، موسیقی;
Keywords[zh_CN]=声音、多媒体、音乐、扬声器、音频;
Keywords[zh_HK]=sound;media;music;speakers;audio;聲音;媒體;音樂;喇叭;音訊;
Keywords[zh_TW]=音效、媒體、音樂、揚聲器、音訊;
Cinnamon-3.6.7/files/usr/share/applications/cinnamon-onscreen-keyboard.desktop 0000664 0001750 0001750 00000025173 13215735076 026546 0 ustar fabio fabio [Desktop Entry]
Exec=dbus-send --print-reply --dest=org.Cinnamon /org/Cinnamon org.Cinnamon.ToggleKeyboard
Icon=keyboard
Terminal=false
Type=Application
Categories=Utility;
OnlyShowIn=X-Cinnamon;
Keywords=onboard;keyboard;caribou;
Name=Virtual keyboard
Name[am]=የሚታይ የ ፊደል ገበታ
Name[bg]=Виртуална клавиатура
Name[bg_BG]=Виртуална клавиатура
Name[ca]=Teclat virtual
Name[ca@valencia]=Teclat virtual
Name[ca_ES]=Teclat virtual
Name[ca_ES@valencia]=Teclat virtual
Name[cs]=Virtuální klávesnice
Name[cs_CZ]=Virtuální klávesnice
Name[cy]=Rhith fysellfwrdd
Name[da]=Virtuelt tastatur
Name[da_DK]=Virtuelt tastatur
Name[de]=Bildschirmtastatur
Name[de@hebrew]=Bildschirmtastatur
Name[de_CH]=Bildschirmtastatur
Name[de_DE]=Bildschirmtastatur
Name[el]=Εικονικό πληκτρολόγιο
Name[es]=Teclado virtual
Name[es_419]=Teclado virtual
Name[es_AR]=Teclado virtual
Name[es_CL]=Teclado virtual
Name[es_CO]=Teclado virtual
Name[es_CR]=Teclado virtual
Name[es_DO]=Teclado virtual
Name[es_EC]=Teclado virtual
Name[es_ES]=Teclado virtual
Name[es_MX]=Teclado virtual
Name[es_NI]=Teclado virtual
Name[es_PA]=Teclado virtual
Name[es_PE]=Teclado virtual
Name[es_PR]=Teclado virtual
Name[es_SV]=Teclado virtual
Name[es_US]=Teclado virtual
Name[es_UY]=Teclado virtual
Name[es_VE]=Teclado virtual
Name[et]=Virtuaalne klaviatuur
Name[eu]=Teklatu birtuala
Name[fi]=Virtuaalinäppäimistö
Name[fi_FI]=Virtuaalinäppäimistö
Name[fr]=Clavier virtuel
Name[fr_CA]=Clavier virtuel
Name[fr_FR]=Clavier virtuel
Name[hr]=Virtualna tipkovnica
Name[hu]=Virtuális billentyűzet
Name[hu_HU]=Virtuális billentyűzet
Name[ia]=Claviero virtual
Name[id]=Keyboard virtual
Name[id_ID]=Keyboard virtual
Name[is]=Sýndarlyklaborð
Name[it]=Tastiera virtuale
Name[kab]=Anasiw aḥlis
Name[ko]=가상 키보드
Name[ko_KR]=가상 키보드
Name[lt]=Virtuali klaviatūra
Name[lt_LT]=Virtuali klaviatūra
Name[nap]=Tastiera faveza
Name[nb]=Virtuelt tastatur
Name[nb_NO]=Virtuelt tastatur
Name[nl]=Virtueel toetsenbord
Name[nl_NL]=Virtueel toetsenbord
Name[pl]=Klawiatura wirtualna
Name[pl_PL]=Klawiatura wirtualna
Name[pt]=Teclado virtual
Name[pt_BR]=Teclado virtual
Name[pt_PT]=Teclado virtual
Name[ro]=Tastatură virtuală
Name[ro_RO]=Tastatură virtuală
Name[ru]=Виртуальная клавиатура
Name[sc]=Tastiera virtuale
Name[sk]=Virtuálna klávesnica
Name[sk_SK]=Virtuálna klávesnica
Name[sq]=Tastiera virtuale
Name[sr]=Виртуелна тастатура
Name[sr@Latn]=Виртуелна тастатура
Name[sr@ije]=Виртуелна тастатура
Name[sr@ijekavianlatin]=Виртуелна тастатура
Name[sr@latin]=Виртуелна тастатура
Name[sr_RS]=Виртуелна тастатура
Name[sr_RS@latin]=Виртуелна тастатура
Name[sv]=Virtuellt tangentbord
Name[ta]=திரைப்பலகை
Name[ta_LK]=திரைப்பலகை
Name[th]=แป้นพิมพ์เสมือนจริง
Name[th_TH]=แป้นพิมพ์เสมือนจริง
Name[tr]=Sanal klavye
Name[tr_TR]=Sanal klavye
Name[uk]=Віртуальна клавіатура
Name[uk_UA]=Віртуальна клавіатура
Name[ur]=ورچول کیی بورڈ
Name[ur_PK]=ورچول کیی بورڈ
Name[uz]=Виртуал клавиатура
Name[uz@Latn]=Виртуал клавиатура
Name[uz@cyrillic]=Виртуал клавиатура
Name[zh_CN]=虚拟键盘
Name[zh_HK]=虛擬鍵盤
Name[zh_TW]=虛擬鍵盤
Comment=Turn on-screen keyboard on or off
Comment[am]=የመመልከቻውን ፊደል ገበታ ማብሪያ ወይንም ማጥፊያ
Comment[ar]=شغّل أو عطّل لوحة مفاتيح الشاشة
Comment[ar_MA]=شغّل أو عطّل لوحة مفاتيح الشاشة
Comment[ast]=Prender o apagar la pantalla del tecláu
Comment[be]=Уключыць/выключыць экранную клавіятуру
Comment[be@latin]=Уключыць/выключыць экранную клавіятуру
Comment[be_BY]=Уключыць/выключыць экранную клавіятуру
Comment[bg]=Включване или изключване на екранната клавиатура
Comment[bg_BG]=Включване или изключване на екранната клавиатура
Comment[bs]=Uključi/isključi ekransku tastaturu
Comment[ca]=Activa o desactiva el teclat a la pantalla
Comment[ca@valencia]=Activa o desactiva el teclat en pantalla
Comment[ca_ES]=Activa o desactiva el teclat a la pantalla
Comment[ca_ES@valencia]=Activa o desactiva el teclat en pantalla
Comment[cs]=Zapnout nebo vypnout klávesnici na obrazovce
Comment[cs_CZ]=Zapnout nebo vypnout klávesnici na obrazovce
Comment[cy]=Cychwyn neu ddiffodd y bysellfwrdd ar sgrin
Comment[da]=Slå skærmtastatur til/fra
Comment[da_DK]=Slå skærmtastatur til/fra
Comment[de]=Bildschirmtastatur ein-/ausschalten
Comment[de@hebrew]=Bildschirmtastatur ein-/ausschalten
Comment[de_CH]=Bildschirmtastatur ein-/ausschalten
Comment[de_DE]=Bildschirmtastatur ein-/ausschalten
Comment[el]=Εναλλαγή λειτουργίας πληκτρολογίου οθόνης
Comment[eo]=En- aŭ elŝalti la ekranklavaron
Comment[es]=Activar o no el teclado en pantalla
Comment[es_419]=Activar o no el teclado en pantalla
Comment[es_AR]=Activar o no el teclado en pantalla
Comment[es_CL]=Activar o no el teclado en pantalla
Comment[es_CO]=Activar o no el teclado en pantalla
Comment[es_CR]=Activar o no el teclado en pantalla
Comment[es_DO]=Activar o no el teclado en pantalla
Comment[es_EC]=Activar o no el teclado en pantalla
Comment[es_ES]=Activar o no el teclado en pantalla
Comment[es_MX]=Activar o no el teclado en pantalla
Comment[es_NI]=Activar o no el teclado en pantalla
Comment[es_PA]=Activar o no el teclado en pantalla
Comment[es_PE]=Activar o no el teclado en pantalla
Comment[es_PR]=Activar o no el teclado en pantalla
Comment[es_SV]=Activar o no el teclado en pantalla
Comment[es_US]=Activar o no el teclado en pantalla
Comment[es_UY]=Activar o no el teclado en pantalla
Comment[es_VE]=Activar o no el teclado en pantalla
Comment[et]=Ekraaniklaviatuuri sisse või välja lülitamine
Comment[eu]=Aktibatu edo desaktibatu pantailako teklatua
Comment[fi]=Näyttönäppäimistö päälle/pois
Comment[fi_FI]=Näyttönäppäimistö päälle/pois
Comment[fr]=Activer ou désactiver le clavier visuel
Comment[fr_CA]=Activer ou désactiver le clavier visuel
Comment[fr_FR]=Activer ou désactiver le clavier visuel
Comment[ga]=Cas air nó as méarchlár scáileáin
Comment[gd]=Cuir am meur-chlàr air an sgrìn air no dheth
Comment[gl]=Activar ou desactivar o teclado en pantalla
Comment[gl_ES]=Activar ou desactivar o teclado en pantalla
Comment[hr]=Uključi/Isključi zaslonsku tipkovnicu
Comment[hu]=Képernyő-billentyűzet be- vagy kikapcsolása
Comment[hu_HU]=Képernyő-billentyűzet be- vagy kikapcsolása
Comment[ia]=Activar o stoppar le claviero sur-le-schermo
Comment[id]=Menyalakan atau mematikan papan tik di layar
Comment[id_ID]=Menyalakan atau mematikan papan tik di layar
Comment[is]=Skjályklaborð af eða á
Comment[it]=Attiva o disattiva la tastiera sullo schermo
Comment[kab]=Rmed neɣ ssens anasiw amwalan
Comment[ko]=화상 키보드 켜고 끄기
Comment[ko_KR]=화상 키보드 켜고 끄기
Comment[lt]=Įjungti arba išjungti ekraninę klaviatūrą
Comment[lt_LT]=Įjungti arba išjungti ekraninę klaviatūrą
Comment[lv]=Ieslēgt vai izslēgt ekrāna tastatūru
Comment[lv_LV]=Ieslēgt vai izslēgt ekrāna tastatūru
Comment[ms]=Hidup atau matikan papan kekunci skrin
Comment[ms_MY]=Hidup atau matikan papan kekunci skrin
Comment[nb]=Slå av/på skjermtastatur
Comment[nb_NO]=Slå av/på skjermtastatur
Comment[nds]=Bildschirmtastatur ein- oder ausschalten
Comment[nl]=Schermtoetsenbord in- of uitschakelen
Comment[nl_NL]=Schermtoetsenbord in- of uitschakelen
Comment[oc]=Activar o desactivar lo clavièr visual
Comment[om]=Furtuu gabatee argiirratii bantuufi cuftuu
Comment[pa]=ਆਨ-ਸਕਰੀਨ ਕੀਬੋਰਡ ਚਾਲੂ ਜਾਂ ਬੰਦ ਕਰੋ
Comment[pl]=Włącz/Wyłącz klawiaturę ekranową
Comment[pl_PL]=Włącz/Wyłącz klawiaturę ekranową
Comment[pt]=Ativar ou desativar teclado no ecrã
Comment[pt_BR]=Ativar ou desativar o teclado virtual
Comment[pt_PT]=Ativar ou desativar teclado no ecrã
Comment[ro]=Activează sau dezactivează tastatura pe ecran
Comment[ro_RO]=Activează sau dezactivează tastatura pe ecran
Comment[ru]=Включить или выключить экранную клавиатуру
Comment[sk]=Zapnúť alebo vypnúť klávesnicu na obrazovke
Comment[sk_SK]=Zapnúť alebo vypnúť klávesnicu na obrazovke
Comment[sl]=Omogoči ali onemogoči zaslonsko tipkovnico
Comment[sl_SI]=Omogoči ali onemogoči zaslonsko tipkovnico
Comment[sq]=Aktivizo ose çaktivizo tastierën në ekran
Comment[sr]=Укључи/искључи тастатуру на екрану
Comment[sr@Latn]=Укључи/искључи тастатуру на екрану
Comment[sr@ije]=Укључи/искључи тастатуру на екрану
Comment[sr@ijekavianlatin]=Укључи/искључи тастатуру на екрану
Comment[sr@latin]=Укључи/искључи тастатуру на екрану
Comment[sr_RS]=Укључи/искључи тастатуру на екрану
Comment[sr_RS@latin]=Укључи/искључи тастатуру на екрану
Comment[sv]=Aktivera eller inaktivera skärmtangentbord
Comment[ta]=திரைப்பலகை ஆன் அல்லது ஆஃப் செய்
Comment[ta_LK]=திரைப்பலகை ஆன் அல்லது ஆஃப் செய்
Comment[tg]=Хомӯш ё фаъол кардани клавиатураи экранӣ
Comment[th]=เปิดหรือปิดแป้นพิมพ์บนจอ
Comment[th_TH]=เปิดหรือปิดแป้นพิมพ์บนจอ
Comment[tr]=Ekran klavyesini aç ya da kapat
Comment[tr_TR]=Ekran klavyesini aç ya da kapat
Comment[uk]=Увімкнути або вимкнути екранну набірницю
Comment[uk_UA]=Увімкнути або вимкнути екранну набірницю
Comment[ur]=سکرین کیبورڈ چالو یا بند کریں
Comment[ur_PK]=سکرین کیبورڈ چالو یا بند کریں
Comment[uz]=Экран клавиатурасини ёқиш ёки ўчириш
Comment[uz@Latn]=Экран клавиатурасини ёқиш ёки ўчириш
Comment[uz@cyrillic]=Экран клавиатурасини ёқиш ёки ўчириш
Comment[vi]=Bật tắt bàn phím màn hình
Comment[vi_VN]=Bật tắt bàn phím màn hình
Comment[zh_CN]=开关屏幕键盘
Comment[zh_HK]=開啟或關閉熒幕鍵盤
Comment[zh_TW]=開啟或關閉螢幕鍵盤
Cinnamon-3.6.7/files/usr/share/applications/cinnamon-settings-workspaces.desktop 0000664 0001750 0001750 00000040752 13215735076 027153 0 ustar fabio fabio [Desktop Entry]
Icon=cs-workspaces
Exec=cinnamon-settings workspaces
Type=Application
OnlyShowIn=X-Cinnamon;
Categories=Settings;
Name=Workspaces
Name[am]=የስራ ቦታዎች
Name[ar]=مساحات العمل
Name[ast]=Estayes de trabayu
Name[be]=Рабочыя месцы
Name[be@latin]=Рабочыя месцы
Name[be_BY]=Рабочыя месцы
Name[bg]=Работни места
Name[bg_BG]=Работни места
Name[bs]=Radne površine
Name[ca]=Espais de treball
Name[ca@valencia]=Espais de treball
Name[ca_ES]=Espais de treball
Name[ca_ES@valencia]=Espais de treball
Name[cs]=Pracovní plochy
Name[cs_CZ]=Pracovní plochy
Name[cy]=Mannau Gwaith
Name[da]=Arbejdsområder
Name[da_DK]=Arbejdsområder
Name[de]=Arbeitsflächen
Name[de_CH]=Arbeitsflächen
Name[de_DE]=Arbeitsflächen
Name[el]=Χώροι Εργασίας
Name[eo]=Laborspacoj
Name[es]=Áreas de trabajo
Name[es_AR]=Áreas de trabajo
Name[es_CL]=Áreas de trabajo
Name[es_CO]=Áreas de trabajo
Name[es_CR]=Áreas de trabajo
Name[es_DO]=Áreas de trabajo
Name[es_EC]=Áreas de trabajo
Name[es_ES]=Áreas de trabajo
Name[es_MX]=Áreas de trabajo
Name[es_NI]=Áreas de trabajo
Name[es_PA]=Áreas de trabajo
Name[es_PE]=Áreas de trabajo
Name[es_PR]=Áreas de trabajo
Name[es_SV]=Áreas de trabajo
Name[es_UY]=Áreas de trabajo
Name[es_VE]=Áreas de trabajo
Name[et]=Tööruumid
Name[et_EE]=Tööruumid
Name[eu]=Laneko areak
Name[fi]=Työtilat
Name[fi_FI]=Työtilat
Name[fr]=Espaces de travail
Name[fr_CA]=Espaces de travail
Name[fr_FR]=Espaces de travail
Name[ga]=Spásanna Oibre
Name[gd]=Rumannan-obrach
Name[gl]=Espazos de traballo
Name[gl_ES]=Espazos de traballo
Name[hr]=Radni prostori
Name[hu]=Munkaterületek
Name[hu_HU]=Munkaterületek
Name[ia]=Spatios de labor
Name[id]=Area kerja
Name[id_ID]=Area kerja
Name[is]=Vinnusvæði
Name[it]=Aree di lavoro
Name[it_CH]=Aree di lavoro
Name[it_IT]=Aree di lavoro
Name[ja]=ワークスペース
Name[ja_JP]=ワークスペース
Name[ko]=작업 공간
Name[ko_KR]=작업 공간
Name[lo]=ພື້ນທີ່ເຮັດວຽກ
Name[lo_LA]=ພື້ນທີ່ເຮັດວຽກ
Name[lt]=Darbo sritys
Name[lt_LT]=Darbo sritys
Name[lv]=Darbvietas
Name[lv_LV]=Darbvietas
Name[ms]=Ruang Kerja
Name[ms_MY]=Ruang Kerja
Name[nb]=Arbeidsområder
Name[nb_NO]=Arbeidsområder
Name[nds]=Arbeitsflächen
Name[nl]=Werkbladen
Name[nl_NL]=Werkbladen
Name[oc]=Espacis de trabalh
Name[om]=Iddoowwan hojii
Name[pa]=ਵਰਕਸਪੇਸਾਂ
Name[pl]=Obszary robocze
Name[pl_PL]=Obszary robocze
Name[pt]=Áreas de Trabalho
Name[pt_BR]=Espaços de Trabalho
Name[pt_PT]=Áreas de Trabalho
Name[ro]=Spații de lucru
Name[ro_RO]=Spații de lucru
Name[ru]=Рабочие места
Name[sk]=Pracovné priestory
Name[sk_SK]=Pracovné priestory
Name[sl]=Delovni prostor
Name[sl_SI]=Delovni prostor
Name[sq]=Hapësirat e punës
Name[sr]=Радни простори
Name[sr@Latn]=Радни простори
Name[sr@ije]=Радни простори
Name[sr@ijekavianlatin]=Радни простори
Name[sr@latin]=Радни простори
Name[sr_RS]=Радни простори
Name[sr_RS@latin]=Радни простори
Name[sv]=Arbetsytor
Name[ta]=பணியிடங்கள்
Name[ta_LK]=பணியிடங்கள்
Name[tg]=Фазоҳои корӣ
Name[th]=พื้นที่ทำงาน
Name[th_TH]=พื้นที่ทำงาน
Name[tr]=Çalışma Alanları
Name[tr_TR]=Çalışma Alanları
Name[uk]=Робочі простори
Name[uk_UA]=Робочі простори
Name[ur]=ورک سپیسز
Name[vi]=Vùng làm việc
Name[vi_VN]=Vùng làm việc
Name[zh_CN]=工作区
Name[zh_HK]=工作區
Name[zh_TW]=工作區
Comment=Manage workspace preferences
Comment[am]=የ ስራ ቦታ ምርጫዎች አስተዳዳሪ
Comment[ar]=إدارة تفضيلات مساحات العمل
Comment[be]=Кіраванне наладамі працоўнага стала
Comment[be@latin]=Кіраванне наладамі працоўнага стала
Comment[be_BY]=Кіраванне наладамі працоўнага стала
Comment[bg]=Управление на настройките за работни плотове
Comment[bg_BG]=Управление на настройките за работни плотове
Comment[bs]=Upravljaj postavkama radne površine
Comment[ca]=Gestioneu les preferències dels espais de treball
Comment[ca@valencia]=Administra preferències d'espai de treball
Comment[ca_ES]=Gestioneu les preferències dels espais de treball
Comment[ca_ES@valencia]=Administra preferències d'espai de treball
Comment[cs]=Spravovat nastavení pracovních ploch
Comment[cs_CZ]=Spravovat nastavení pracovních ploch
Comment[cy]=Rheoli dewisiadau gweithfannau
Comment[da]=Administrér arbejdsområdeindstillinger
Comment[da_DK]=Administrér arbejdsområdeindstillinger
Comment[de]=Arbeitsflächeneinstellungen verwalten
Comment[de_CH]=Arbeitsflächeneinstellungen verwalten
Comment[de_DE]=Arbeitsflächeneinstellungen verwalten
Comment[el]=Ρυθμίστε τους χώρους εργασίας
Comment[es]=Administrar preferencias de espacio de trabajo
Comment[es_AR]=Administrar preferencias de espacio de trabajo
Comment[es_CL]=Administrar preferencias de espacio de trabajo
Comment[es_CO]=Administrar preferencias de espacio de trabajo
Comment[es_CR]=Administrar preferencias de espacio de trabajo
Comment[es_DO]=Administrar preferencias de espacio de trabajo
Comment[es_EC]=Administrar preferencias de espacio de trabajo
Comment[es_ES]=Administrar preferencias de espacio de trabajo
Comment[es_MX]=Administrar preferencias de espacio de trabajo
Comment[es_NI]=Administrar preferencias de espacio de trabajo
Comment[es_PA]=Administrar preferencias de espacio de trabajo
Comment[es_PE]=Administrar preferencias de espacio de trabajo
Comment[es_PR]=Administrar preferencias de espacio de trabajo
Comment[es_SV]=Administrar preferencias de espacio de trabajo
Comment[es_UY]=Administrar preferencias de espacio de trabajo
Comment[es_VE]=Administrar preferencias de espacio de trabajo
Comment[eu]=Kudeatu laneko areen hobespenak
Comment[fi]=Hallitse työtilojen asetuksia
Comment[fi_FI]=Hallitse työtilojen asetuksia
Comment[fr]=Gérer les préférences de l'espace de travail
Comment[fr_CA]=Gérer les préférences des espaces de travail
Comment[fr_FR]=Gérer les préférences de l'espace de travail
Comment[gd]=Stiùirich roghainnean nan rumannan-obrach
Comment[gl]=Administra as preferencias do espazo de traballo
Comment[gl_ES]=Administra as preferencias do espazo de traballo
Comment[hr]=Upravljajte osobitostima radnog prostora
Comment[hu]=Munkaterület beállítások kezelése
Comment[hu_HU]=Munkaterület beállítások kezelése
Comment[ia]=Gerer le preferentias del spatio de labor
Comment[id]=Kelola preferensi ruang kerja
Comment[id_ID]=Kelola preferensi ruang kerja
Comment[is]=Sýsla með kjörstillingar vinnusvæða
Comment[it]=Gestione preferenze area di lavoro
Comment[it_CH]=Gestione preferenze area di lavoro
Comment[it_IT]=Gestione preferenze area di lavoro
Comment[ko]=작업 공간 설정 관리
Comment[ko_KR]=작업 공간 설정 관리
Comment[lt]=Tvarkyti darbo srities nuostatas
Comment[lt_LT]=Tvarkyti darbo srities nuostatas
Comment[lv]=Pārvaldīt darbvietas preferences
Comment[lv_LV]=Pārvaldīt darbvietas preferences
Comment[ms]=Mengurus pilihan ruang kerja
Comment[ms_MY]=Mengurus pilihan ruang kerja
Comment[nb]=Håndter innstillinger for arbeidsområdene
Comment[nb_NO]=Håndter innstillinger for arbeidsområdene
Comment[nds]=Arbeitsflächeneinstellungen verwalten
Comment[nl]=Werkbladvoorkeuren beheren
Comment[nl_NL]=Werkbladvoorkeuren beheren
Comment[pl]=Zarządzaj preferencjami obszarów roboczych
Comment[pl_PL]=Zarządzaj preferencjami obszarów roboczych
Comment[pt]=Gerir preferência do espaço de trabalho
Comment[pt_BR]=Gerenciar preferências de espaço de trabalho
Comment[pt_PT]=Gerir preferência do espaço de trabalho
Comment[ro]=Gestionează preferințele spațiului de lucru
Comment[ro_RO]=Gestionează preferințele spațiului de lucru
Comment[ru]=Настройки рабочих мест
Comment[sk]=Spravovať predvoľby pracovnej plochy
Comment[sk_SK]=Spravovať predvoľby pracovnej plochy
Comment[sl]=Upravljanje z možnostmi delovnih površin
Comment[sl_SI]=Upravljanje z možnostmi delovnih površin
Comment[sq]=Menaxho parapëlqimet e hapësirave të punës
Comment[sr]=Управљање поставкама радног простора
Comment[sr@Latn]=Управљање поставкама радног простора
Comment[sr@ije]=Управљање поставкама радног простора
Comment[sr@ijekavianlatin]=Управљање поставкама радног простора
Comment[sr@latin]=Управљање поставкама радног простора
Comment[sr_RS]=Управљање поставкама радног простора
Comment[sr_RS@latin]=Управљање поставкама радног простора
Comment[sv]=Hantera inställningar för arbetsyta
Comment[tg]=Идоракунии хусусиятҳои фазои корӣ
Comment[th]=จัดการการตั้งค่าพื้นที่ทำงานขั้นสูง
Comment[th_TH]=จัดการการตั้งค่าพื้นที่ทำงานขั้นสูง
Comment[tr]=Çalışma alanı seçeneklerini yönet
Comment[tr_TR]=Çalışma alanı seçeneklerini yönet
Comment[uk]=Керувати параметрами робочого простору
Comment[uk_UA]=Керувати параметрами робочого простору
Comment[ur]=ورک سپیس کی ترجیحات
Comment[vi]=Quản lý tuỳ thích vùng làm việc
Comment[vi_VN]=Quản lý tuỳ thích vùng làm việc
Comment[zh_CN]=工作区设置
Comment[zh_HK]=管理工作區喜好設定
Comment[zh_TW]=管理工作區偏好設定
Keywords=workspace;osd;expo;monitor;
Keywords[ar]=مساحة عمل ، ، معرض ، شاشة، اعلام على الشاشة;
Keywords[be]=рабочая вобласць;osd;экспазіцыя;манітор;
Keywords[be@latin]=рабочая вобласць;osd;экспазіцыя;манітор;
Keywords[be_BY]=рабочая вобласць;osd;экспазіцыя;манітор;
Keywords[bg]=работно място;osd;експозиция;монитор;
Keywords[bg_BG]=работно място;osd;експозиция;монитор;
Keywords[bs]=radna površina;osd;expo;monitor;
Keywords[ca]=espai de treball;osd;expo;monitor;
Keywords[ca@valencia]=espai de treball;mostrar en pantalla (OSD);exposició;monitor;
Keywords[ca_ES]=espai de treball;osd;expo;monitor;
Keywords[ca_ES@valencia]=espai de treball;mostrar en pantalla (OSD);exposició;monitor;
Keywords[cs]=pracovní plocha;osd;expo;monitor;
Keywords[cs_CZ]=pracovní plocha;osd;expo;monitor;
Keywords[cy]=man gwaith;osd;expo;monitor;
Keywords[da]=arbejdsområde;osd;vis arbejdsområder;skærm;
Keywords[da_DK]=arbejdsområde;osd;vis arbejdsområder;skærm;
Keywords[de]=Arbeitsfläche;OSD;Bildschirmanzeige;Schreibtischübersicht;Arbeitsflächenübersicht;Expo;Monitor;
Keywords[de_CH]=Arbeitsfläche;OSD;Bildschirmanzeige;Schreibtischübersicht;Arbeitsflächenübersicht;Expo;Monitor;
Keywords[de_DE]=Arbeitsfläche;OSD;Bildschirmanzeige;Schreibtischübersicht;Arbeitsflächenübersicht;Expo;Monitor;
Keywords[el]=χώρος εργασίας;osd;expo;οθόνη;
Keywords[es]=espacio de trabajo;mostrar en pantalla (OSD);expo;monitor;
Keywords[es_AR]=espacio de trabajo;mostrar en pantalla (OSD);expo;monitor;
Keywords[es_CL]=espacio de trabajo;mostrar en pantalla (OSD);expo;monitor;
Keywords[es_CO]=espacio de trabajo;mostrar en pantalla (OSD);expo;monitor;
Keywords[es_CR]=espacio de trabajo;mostrar en pantalla (OSD);expo;monitor;
Keywords[es_DO]=espacio de trabajo;mostrar en pantalla (OSD);expo;monitor;
Keywords[es_EC]=espacio de trabajo;mostrar en pantalla (OSD);expo;monitor;
Keywords[es_ES]=espacio de trabajo;mostrar en pantalla (OSD);expo;monitor;
Keywords[es_MX]=espacio de trabajo;mostrar en pantalla (OSD);expo;monitor;
Keywords[es_NI]=espacio de trabajo;mostrar en pantalla (OSD);expo;monitor;
Keywords[es_PA]=espacio de trabajo;mostrar en pantalla (OSD);expo;monitor;
Keywords[es_PE]=espacio de trabajo;mostrar en pantalla (OSD);expo;monitor;
Keywords[es_PR]=espacio de trabajo;mostrar en pantalla (OSD);expo;monitor;
Keywords[es_SV]=espacio de trabajo;mostrar en pantalla (OSD);expo;monitor;
Keywords[es_UY]=espacio de trabajo;mostrar en pantalla (OSD);expo;monitor;
Keywords[es_VE]=espacio de trabajo;mostrar en pantalla (OSD);expo;monitor;
Keywords[eu]=laneko area;osd;expo;monitorea;
Keywords[fi]=työtila;osd;esittelynäkymä;näyttö;
Keywords[fi_FI]=työtila;osd;esittelynäkymä;näyttö;
Keywords[fr]=espace de travail;osd;expo;moniteur;
Keywords[fr_CA]=espace de travail;osd;expo;moniteur;
Keywords[fr_FR]=espace de travail;osd;expo;moniteur;
Keywords[ga]=spás oibre;osd;expo;monatóir;
Keywords[gd]=rum-obrach;osd;expo;sealladair;workspace;monatair;
Keywords[gl]=espazo de traballo;osd;exposición;monitor;
Keywords[gl_ES]=espazo de traballo;osd;exposición;monitor;
Keywords[hr]=radni prostor;osd;prikaz radnih prostora;zaslon računala;
Keywords[hu]=munkaterület;képernyőkijelzés;osd;közszemle;képernyő;
Keywords[hu_HU]=munkaterület;képernyőkijelzés;osd;közszemle;képernyő;
Keywords[ia]=spatio de labor;OSD;Expo;monitor;
Keywords[id]=area kerja;osd;expo;monitor;
Keywords[id_ID]=area kerja;osd;expo;monitor;
Keywords[is]=vinnusvæði;stjórntexti;expo;skjár;
Keywords[it]=area di lavoro;osd;expo;monitor;
Keywords[it_CH]=area di lavoro;osd;expo;monitor;
Keywords[it_IT]=area di lavoro;osd;expo;monitor;
Keywords[ja]=ワークスペース、OSD、expo、モニタ;
Keywords[ja_JP]=ワークスペース、OSD、expo、モニタ;
Keywords[ko]=작업 공간;osd;작업 공간 표시;살펴보기;
Keywords[ko_KR]=작업 공간;osd;작업 공간 표시;살펴보기;
Keywords[ms]=ruang kerja;osd;expo;monitor;
Keywords[ms_MY]=ruang kerja;osd;expo;monitor;
Keywords[nds]=Arbeitsbereich;OSD;Expo;Monitor;
Keywords[nl]=werkblad;osd;expo;beeldscherm;
Keywords[nl_NL]=werkblad;osd;expo;beeldscherm;
Keywords[om]=iddoo hojii;osd;***;torgii;
Keywords[pl]=Obszar roboczy;OSD;expo;monitor;
Keywords[pl_PL]=Obszar roboczy;OSD;expo;monitor;
Keywords[pt]=área de trabalho;osd;expo;monitor;
Keywords[pt_BR]=espaço de trabalho;exibição na tela;exposição;monitor;
Keywords[pt_PT]=área de trabalho;osd;expo;monitor;
Keywords[ro]=spațiu de lucru;osd;expo;monitor;
Keywords[ro_RO]=spațiu de lucru;osd;expo;monitor;
Keywords[ru]=рабочее место;экранная индикация;expo;монитор;
Keywords[sk]=pracovná plocha;osd;expo;monitor;
Keywords[sk_SK]=pracovná plocha;osd;expo;monitor;
Keywords[sl]=delovni prostor;osd;razstava;monitor;
Keywords[sl_SI]=delovni prostor;osd;razstava;monitor;
Keywords[sr]=радни простор;простирање;осд;екран;
Keywords[sr@Latn]=радни простор;простирање;осд;екран;
Keywords[sr@ije]=радни простор;простирање;осд;екран;
Keywords[sr@ijekavianlatin]=радни простор;простирање;осд;екран;
Keywords[sr@latin]=радни простор;простирање;осд;екран;
Keywords[sr_RS]=радни простор;простирање;осд;екран;
Keywords[sr_RS@latin]=радни простор;простирање;осд;екран;
Keywords[sv]=arbetsyta;OSD;exponering;monitor;
Keywords[ta]=பணியிடம்;மேல் திரை காட்சி;கண்காட்சி;திரையகம்;
Keywords[ta_LK]=பணியிடம்;மேல் திரை காட்சி;கண்காட்சி;திரையகம்;
Keywords[tg]=фазои корӣ;osd;намоиш;монитор;
Keywords[th]=พื้นที่ทำงาน;osd;expo;หน้าจอ;
Keywords[th_TH]=พื้นที่ทำงาน;osd;expo;หน้าจอ;
Keywords[tr]=çalışma alanı;osd;sergi;ekran;
Keywords[tr_TR]=çalışma alanı;osd;sergi;ekran;
Keywords[uk]=робочий простір;екранне сповіщення;експозиція;монітор;
Keywords[uk_UA]=робочий простір;екранне сповіщення;експозиція;монітор;
Keywords[ur]=ورک سپیس، آن-سکرین ڈسپلے، OSD، ایکسپو، expo، مانیٹر;
Keywords[vi]=vùng làm việc;osd;expo;màn hình;
Keywords[vi_VN]=vùng làm việc;osd;expo;màn hình;
Keywords[zh_CN]=workspace;osd;expo;monitor;工作区;屏幕显示;显示器;展现;
Keywords[zh_HK]=工作區;OSD;expo;顯示器;
Keywords[zh_TW]=工作區;螢幕顯示 (OSD);工作區管理 (Expo);顯示器;
Cinnamon-3.6.7/files/usr/share/applications/cinnamon-settings-backgrounds.desktop 0000664 0001750 0001750 00000044243 13215735076 027273 0 ustar fabio fabio [Desktop Entry]
Icon=cs-backgrounds
Exec=cinnamon-settings backgrounds
Type=Application
OnlyShowIn=X-Cinnamon;
Categories=Settings;
Name=Backgrounds
Name[am]=መደቦች
Name[ar]=الخلفيات
Name[ast]=Fondos de pantalla
Name[be]=фон
Name[be@latin]=фон
Name[be_BY]=фон
Name[bg]=Фон
Name[bg_BG]=Фон
Name[bs]=Pozadine
Name[ca]=Fons de l'escriptori
Name[ca@valencia]=Fons de pantalla
Name[ca_ES]=Fons de l'escriptori
Name[ca_ES@valencia]=Fons de pantalla
Name[cs]=Pozadí
Name[cs_CZ]=Pozadí
Name[cy]=Cefndiroedd
Name[da]=Baggrunde
Name[da_DK]=Baggrunde
Name[de]=Hintergrundbilder
Name[de_CH]=Hintergrundbilder
Name[de_DE]=Hintergrundbilder
Name[el]=Φόντο
Name[eo]=Fonoj
Name[es]=Fondos
Name[es_AR]=Fondos
Name[es_CL]=Fondos
Name[es_CO]=Fondos
Name[es_CR]=Fondos
Name[es_DO]=Fondos
Name[es_EC]=Fondos
Name[es_ES]=Fondos
Name[es_MX]=Fondos
Name[es_NI]=Fondos
Name[es_PA]=Fondos
Name[es_PE]=Fondos
Name[es_PR]=Fondos
Name[es_SV]=Fondos
Name[es_UY]=Fondos
Name[es_VE]=Fondos
Name[et]=Taustad
Name[et_EE]=Taustad
Name[eu]=Atzeko planoak
Name[fa]=پسزمینهها
Name[fa_AF]=پسزمینهها
Name[fa_IR]=پسزمینهها
Name[fi]=Taustat
Name[fi_FI]=Taustat
Name[fr]=Fonds d'écran
Name[fr_CA]=Fonds d'écran
Name[fr_FR]=Fonds d'écran
Name[fy]=Eftergrûn
Name[ga]=Cúlraí
Name[gd]=Cùlaibhean
Name[gl]=Fondos
Name[gl_ES]=Fondos
Name[he]=רקעים
Name[he_IL]=רקעים
Name[hr]=Pozadine
Name[hu]=Háttérképek
Name[hu_HU]=Háttérképek
Name[ia]=Fundos
Name[id]=Latar belakang
Name[id_ID]=Latar belakang
Name[is]=Bakgrunnar
Name[it]=Sfondi
Name[it_CH]=Sfondi
Name[it_IT]=Sfondi
Name[ja]=背景
Name[ja_JP]=背景
Name[kab]=Idren n wegdil
Name[ko]=배경화면
Name[ko_KR]=배경화면
Name[lo]=ພື້ນຫຼັງ
Name[lo_LA]=ພື້ນຫຼັງ
Name[lt]=Fonai
Name[lt_LT]=Fonai
Name[lv]=Fona attēli
Name[lv_LV]=Fona attēli
Name[ms]=Latar Belakang
Name[ms_MY]=Latar Belakang
Name[nb]=Bakgrunner
Name[nb_NO]=Bakgrunner
Name[nds]=Hintergrundbilder
Name[nl]=Achtergronden
Name[nl_NL]=Achtergronden
Name[oc]=Rèireplans
Name[pa]=ਬੈਕਗਰਾਉਂਡ
Name[pl]=Tła
Name[pl_PL]=Tła
Name[pt]=Fundos
Name[pt_BR]=Planos de Fundo
Name[pt_PT]=Fundos
Name[ro]=Fundaluri
Name[ro_RO]=Fundaluri
Name[ru]=Фоновые рисунки
Name[sc]=Fundales
Name[sk]=Pozadia
Name[sk_SK]=Pozadia
Name[sl]=Ozadja
Name[sl_SI]=Ozadja
Name[sq]=Sfondet
Name[sr]=Позадине
Name[sr@Latn]=Позадине
Name[sr@ije]=Позадине
Name[sr@ijekavianlatin]=Позадине
Name[sr@latin]=Позадине
Name[sr_RS]=Позадине
Name[sr_RS@latin]=Позадине
Name[sv]=Bakgrundsbilder
Name[ta]=பின்னணிகள்
Name[ta_LK]=பின்னணிகள்
Name[tg]=Пасзаминаҳо
Name[th]=พื้นหลัง
Name[th_TH]=พื้นหลัง
Name[tr]=Arkaplanlar
Name[tr_TR]=Arkaplanlar
Name[uk]=Зображення тла
Name[uk_UA]=Зображення тла
Name[ur]=پسِ منظر
Name[uz]=Фонлар
Name[uz@cyrillic]=Фонлар
Name[vi]=Hình nền
Name[vi_VN]=Hình nền
Name[zh_CN]=背景
Name[zh_HK]=背景
Name[zh_TW]=背景
Comment=Change your desktop's background
Comment[am]=የዴስክቶፕ መደብ መቀየሪያ
Comment[ar]=غيّر خلفية سطح المكتب
Comment[ast]=Camuda'l fondu del to escritoriu
Comment[az]=Masaüstü arxafonunu dəyiş
Comment[az_AZ]=Masaüstü arxafonunu dəyiş
Comment[be]=Змянiце фон працоўнага стала
Comment[be@latin]=Змянiце фон працоўнага стала
Comment[be_BY]=Змянiце фон працоўнага стала
Comment[bg]=Промяна на фона на работния плот
Comment[bg_BG]=Промяна на фона на работния плот
Comment[bs]=Promjenite vašu pozadinu na desktopu
Comment[ca]=Canviar el fons de l'escriptori
Comment[ca@valencia]=Canviar el fons d'escriptori
Comment[ca_ES]=Canviar el fons de l'escriptori
Comment[ca_ES@valencia]=Canviar el fons d'escriptori
Comment[cs]=Změna pozadí plochy
Comment[cs_CZ]=Změna pozadí plochy
Comment[cy]=Newidiwch gefndir eich bwrdd gwaith
Comment[da]=Ændr din skrivebordsbaggrund
Comment[da_DK]=Ændr din skrivebordsbaggrund
Comment[de]=Schreibtischhintergrund ändern
Comment[de_CH]=Schreibtischhintergrund ändern
Comment[de_DE]=Schreibtischhintergrund ändern
Comment[el]=Άλλαξε το φόντο της επιφάνειας εργασίας
Comment[es]=Cambiar el fondo de escritorio
Comment[es_AR]=Cambiar el fondo de escritorio
Comment[es_CL]=Cambiar el fondo de escritorio
Comment[es_CO]=Cambiar el fondo de escritorio
Comment[es_CR]=Cambiar el fondo de escritorio
Comment[es_DO]=Cambiar el fondo de escritorio
Comment[es_EC]=Cambiar el fondo de escritorio
Comment[es_ES]=Cambiar el fondo de escritorio
Comment[es_MX]=Cambiar el fondo de escritorio
Comment[es_NI]=Cambiar el fondo de escritorio
Comment[es_PA]=Cambiar el fondo de escritorio
Comment[es_PE]=Cambiar el fondo de escritorio
Comment[es_PR]=Cambiar el fondo de escritorio
Comment[es_SV]=Cambiar el fondo de escritorio
Comment[es_UY]=Cambiar el fondo de escritorio
Comment[es_VE]=Cambiar el fondo de escritorio
Comment[eu]=Aldatu mahaigainaren atzeko planoa
Comment[fa]=پسزمینهی دسکتاپتان را تغییر دهید
Comment[fa_AF]=پسزمینهی دسکتاپتان را تغییر دهید
Comment[fa_IR]=پسزمینهی دسکتاپتان را تغییر دهید
Comment[fi]=Muuta työpöydän taustakuvaa
Comment[fi_FI]=Muuta työpöydän taustakuvaa
Comment[fr]=Changer le fond d'écran
Comment[fr_CA]=Modifier votre fond d'écran
Comment[fr_FR]=Changer le fond d'écran
Comment[fy]=Bureaublêd eftergrûn feroarje
Comment[gd]=Atharraich cùlaibh an desktop agad
Comment[gl]=Cambia o fondo do escritorio
Comment[gl_ES]=Cambia o fondo do escritorio
Comment[hr]=Promijenite pozadinu svoje redne površine
Comment[hu]=Asztal hátterének megváltoztatása
Comment[hu_HU]=Asztal hátterének megváltoztatása
Comment[ia]=Cambia le fundo de tu scriptorio
Comment[id]=Ubah background desktop
Comment[id_ID]=Ubah background desktop
Comment[is]=Breyta bakgrunni skjáborðs
Comment[it]=Cambia sfondo del desktop
Comment[it_CH]=Cambia sfondo del desktop
Comment[it_IT]=Cambia sfondo del desktop
Comment[ja]=デスクトップ背景の変更
Comment[ja_JP]=デスクトップ背景の変更
Comment[kab]=Beddel agilal n tnarit-ik
Comment[ko]=배경화면 변경
Comment[ko_KR]=배경화면 변경
Comment[lo]=ປ່ຽນພື້ນຫຼັງໜ້າຈໍຂອງເຈົ້າ
Comment[lo_LA]=ປ່ຽນພື້ນຫຼັງໜ້າຈໍຂອງເຈົ້າ
Comment[lt]=Pakeisti darbalaukio foną
Comment[lt_LT]=Pakeisti darbalaukio foną
Comment[lv]=Mainīt darbvirsmas fona attēlu
Comment[lv_LV]=Mainīt darbvirsmas fona attēlu
Comment[ms]=Tukar latar belakang desktop
Comment[ms_MY]=Tukar latar belakang desktop
Comment[nb]=Endre skrivebordsbakgrunnen din
Comment[nb_NO]=Endre skrivebordsbakgrunnen din
Comment[nds]=Desktophintergrund ändern
Comment[nl]=Verander de achtergrond van uw bureaublad
Comment[nl_NL]=Verander de achtergrond van uw bureaublad
Comment[oc]=Cambiar lo rèireplan de vòstre burèu
Comment[pl]=Zmień tło pulpitu
Comment[pl_PL]=Zmień tło pulpitu
Comment[pt]=Mudar o fundo do seu ambiente de trabalho
Comment[pt_BR]=Alterar plano de fundo de sua área de trabalho
Comment[pt_PT]=Mudar o fundo do seu ambiente de trabalho
Comment[ro]=Schimbă imaginea de fundal
Comment[ro_RO]=Schimbă imaginea de fundal
Comment[ru]=Изменить обои рабочего стола
Comment[sc]=Càmbia su fundale de s'iscriania
Comment[sk]=Zmeniť pozadie plochy
Comment[sk_SK]=Zmeniť pozadie plochy
Comment[sl]=Spremenite ozadje namizja
Comment[sl_SI]=Spremenite ozadje namizja
Comment[sq]=Ndryshoni sfondin e desktopit tuaj
Comment[sr]=Промените позадину радне површи
Comment[sr@Latn]=Промените позадину радне површи
Comment[sr@ije]=Промените позадину радне површи
Comment[sr@ijekavianlatin]=Промените позадину радне површи
Comment[sr@latin]=Промените позадину радне површи
Comment[sr_RS]=Промените позадину радне површи
Comment[sr_RS@latin]=Промените позадину радне површи
Comment[sv]=Byt skrivbordsbakgrund
Comment[ta]=பணிமேடையின் பின்னணியை மாற்று
Comment[ta_LK]=பணிமேடையின் பின்னணியை மாற்று
Comment[tg]=Тағйир додани пасзаминаи мизи корӣ
Comment[th]=เปลี่ยนพื้นหลังบนพื้นโต๊ะของคุณ
Comment[th_TH]=เปลี่ยนพื้นหลังบนพื้นโต๊ะของคุณ
Comment[tr]=Masaüstü arkaplan resmini değiştir
Comment[tr_TR]=Masaüstü arkaplan resmini değiştir
Comment[uk]=Змінити тло стільниці
Comment[uk_UA]=Змінити тло стільниці
Comment[ur]=ڈیسک ٹاپ پس منظر تبدیل کریں
Comment[uz]=Иш столи фонини ўзгартиринг
Comment[uz@cyrillic]=Иш столи фонини ўзгартиринг
Comment[vi]=Đổi nền màn hình làm việc
Comment[vi_VN]=Đổi nền màn hình làm việc
Comment[zh_CN]=修改桌面背景
Comment[zh_HK]=變更你桌面的背景
Comment[zh_TW]=變更您的桌面背景
Keywords=background;picture;screenshot;slideshow;
Keywords[am]=መደብ : ስእል : የመመልከቻ ፎቶ : ተንሸራታች ማሳያ;
Keywords[ar]=خلفية، صورة، صورة ملتقطة، عرض الصور;
Keywords[be]=фон;выява;скрыншот;слайд-шоў;
Keywords[be@latin]=фон;выява;скрыншот;слайд-шоў;
Keywords[be_BY]=фон;выява;скрыншот;слайд-шоў;
Keywords[bg]=тапет;изображение;screenshot;slideshow;
Keywords[bg_BG]=тапет;изображение;screenshot;slideshow;
Keywords[bs]=pozadina;slika;slika ekrana;prezentacija slajdova;
Keywords[ca]=fons;imatge;captura de pantalla;mostra de diapositives;
Keywords[ca@valencia]=fons;imatge;captura de pantalla;presentació de diapositives;
Keywords[ca_ES]=fons;imatge;captura de pantalla;mostra de diapositives;
Keywords[ca_ES@valencia]=fons;imatge;captura de pantalla;presentació de diapositives;
Keywords[cs]=pozadí;obrázek;screenshot;prezentace;
Keywords[cs_CZ]=pozadí;obrázek;screenshot;prezentace;
Keywords[cy]=cefndir;darlun;cliplun;sioe sleidiau;
Keywords[da]=baggrund;billede;skærmbillede;slideshow;
Keywords[da_DK]=baggrund;billede;skærmbillede;slideshow;
Keywords[de]=Hintergrund;Bild;Bildschirmaufnahme;Diaschau;background;picture;screenshot;slideshow;
Keywords[de_CH]=Hintergrund;Bild;Bildschirmaufnahme;Diaschau;background;picture;screenshot;slideshow;
Keywords[de_DE]=Hintergrund;Bild;Bildschirmaufnahme;Diaschau;background;picture;screenshot;slideshow;
Keywords[el]=παρασκήνιο;εικόνα;στιγμιότυπο;προβολή διαφανειών;φόντο;ταπετσαρία;
Keywords[es]=fondo;imagen;captura de pantalla;presentación de diapositivas;
Keywords[es_AR]=fondo;imagen;captura de pantalla;presentación de diapositivas;
Keywords[es_CL]=fondo;imagen;captura de pantalla;presentación de diapositivas;
Keywords[es_CO]=fondo;imagen;captura de pantalla;presentación de diapositivas;
Keywords[es_CR]=fondo;imagen;captura de pantalla;presentación de diapositivas;
Keywords[es_DO]=fondo;imagen;captura de pantalla;presentación de diapositivas;
Keywords[es_EC]=fondo;imagen;captura de pantalla;presentación de diapositivas;
Keywords[es_ES]=fondo;imagen;captura de pantalla;presentación de diapositivas;
Keywords[es_MX]=fondo;imagen;captura de pantalla;presentación de diapositivas;
Keywords[es_NI]=fondo;imagen;captura de pantalla;presentación de diapositivas;
Keywords[es_PA]=fondo;imagen;captura de pantalla;presentación de diapositivas;
Keywords[es_PE]=fondo;imagen;captura de pantalla;presentación de diapositivas;
Keywords[es_PR]=fondo;imagen;captura de pantalla;presentación de diapositivas;
Keywords[es_SV]=fondo;imagen;captura de pantalla;presentación de diapositivas;
Keywords[es_UY]=fondo;imagen;captura de pantalla;presentación de diapositivas;
Keywords[es_VE]=fondo;imagen;captura de pantalla;presentación de diapositivas;
Keywords[eu]=atzeko planoa;irudia;pantaila-argazkia;diaporama;
Keywords[fa]=پسزمینه، تصویر، اسکرینشات، اسلایدشو;
Keywords[fa_AF]=پسزمینه، تصویر، اسکرینشات، اسلایدشو;
Keywords[fa_IR]=پسزمینه، تصویر، اسکرینشات، اسلایدشو;
Keywords[fi]=tausta;kuva;kuvankaappaus;diaesitys;
Keywords[fi_FI]=tausta;kuva;kuvankaappaus;diaesitys;
Keywords[fr]=fond;image;capture d'écran;diaporama;
Keywords[fr_CA]=fond;image;capture d'écran;diaporama;
Keywords[fr_FR]=fond;image;capture d'écran;diaporama;
Keywords[fy]=eftergrûn;printsje;skermôfbielding;diapresentaasje;
Keywords[ga]=cúlra;pictiúr;gabháil scáileáin;taispeántas sleamhnáin;
Keywords[gd]=cùlaibh;dealbh;glacadh-sgrìn;taisbeanadh-shleamhnagan;background;picture;screenshot;slideshow;
Keywords[gl]=fondo;imaxe;captura de pantalla;diaporama;
Keywords[gl_ES]=fondo;imaxe;captura de pantalla;diaporama;
Keywords[hr]=pozadina;slika;snimka zaslona;promjena pozadine;
Keywords[hu]=háttér;kép;képernyőkép;diavetítés;
Keywords[hu_HU]=háttér;kép;képernyőkép;diavetítés;
Keywords[ia]=fundo;photo;captura de schermo;presentation de photos;
Keywords[id]=latar belakang;gambar;tangkapan layar;slideshow;
Keywords[id_ID]=latar belakang;gambar;tangkapan layar;slideshow;
Keywords[is]=bakgrunnur;mynd;skjámynd;skyggnusýning;
Keywords[it]=sfondo;immagine;screenshot;diapositive;
Keywords[it_CH]=sfondo;immagine;screenshot;diapositive;
Keywords[it_IT]=sfondo;immagine;screenshot;diapositive;
Keywords[ja]=背景、写真、スクリーンショット、スライドショー;
Keywords[ja_JP]=背景、写真、スクリーンショット、スライドショー;
Keywords[kab]=agilal;tugna;tuddma n wegdil;tigiri;
Keywords[ko]=배경화면;사진;스크린샷;슬라이드쇼;
Keywords[ko_KR]=배경화면;사진;스크린샷;슬라이드쇼;
Keywords[lo]=ພື້ນຫຼັງ;ຮູບພາບ;ພາບໜ້າຈໍ;ສະໄລໂຊວ໌;
Keywords[lo_LA]=ພື້ນຫຼັງ;ຮູບພາບ;ພາບໜ້າຈໍ;ສະໄລໂຊວ໌;
Keywords[lt]=fonas;paveikslėlis;ekranvaizdis;demonstracija;
Keywords[lt_LT]=fonas;paveikslėlis;ekranvaizdis;demonstracija;
Keywords[lv]=fona attēls;attēls;ekrānuzņēmums;slīdrāde;
Keywords[lv_LV]=fona attēls;attēls;ekrānuzņēmums;slīdrāde;
Keywords[ms]=latar belakang;gambar;cekupan skrin;paparan skrin;
Keywords[ms_MY]=latar belakang;gambar;cekupan skrin;paparan skrin;
Keywords[nb]=bakgrunn;bilde;skjermbilde;bildefremvisning;
Keywords[nb_NO]=bakgrunn;bilde;skjermbilde;bildefremvisning;
Keywords[nds]=Hintergrund;Bild;Screenshot;Diashow;
Keywords[nl]=achtergrond;foto;schermafdruk;diavertoning;
Keywords[nl_NL]=achtergrond;foto;schermafdruk;diavertoning;
Keywords[pa]=ਬੈਕਗਰਾਉਂਡ;ਤਸਵੀਰ;ਸਕਰੀਨਸ਼ਾੱਟ;ਸਲਾਇਡ-ਸ਼ੋ;
Keywords[pl]=tapeta;zdjęcie;zrzut ekranu;pokaz slajdów;
Keywords[pl_PL]=tapeta;zdjęcie;zrzut ekranu;pokaz slajdów;
Keywords[pt]=fundo;imagem;captura;apresentação;
Keywords[pt_BR]=plano de fundo;imagem;captura de tela;apresentação de slides;
Keywords[pt_PT]=fundo;imagem;captura;apresentação;
Keywords[ro]=fundal;poză;captură de ecran;slideshow;
Keywords[ro_RO]=fundal;poză;captură de ecran;slideshow;
Keywords[ru]=фоновый;рисунок;снимок экрана;слайд-шоу;
Keywords[sc]=fundale;immàgine;caturischermu;presentatzione;
Keywords[sk]=pozadie;obrázok;screenshot;prezentácia;
Keywords[sk_SK]=pozadie;obrázok;screenshot;prezentácia;
Keywords[sl]=ozadje;slika;zaslonska slika;predstavitev;
Keywords[sl_SI]=ozadje;slika;zaslonska slika;predstavitev;
Keywords[sq]=sfondi;figura;screeshot;prezantimi;
Keywords[sr]=позадина;слика;снимак екрана;покретни приказ;
Keywords[sr@Latn]=позадина;слика;снимак екрана;покретни приказ;
Keywords[sr@ije]=позадина;слика;снимак екрана;покретни приказ;
Keywords[sr@ijekavianlatin]=позадина;слика;снимак екрана;покретни приказ;
Keywords[sr@latin]=позадина;слика;снимак екрана;покретни приказ;
Keywords[sr_RS]=позадина;слика;снимак екрана;покретни приказ;
Keywords[sr_RS@latin]=позадина;слика;снимак екрана;покретни приказ;
Keywords[sv]=bakgrund;bild;skärmdump;bildspel;
Keywords[ta]=பின்னணி;படம்;திரைப்பிடிப்பு;சறுக்குகாட்சி;
Keywords[ta_LK]=பின்னணி;படம்;திரைப்பிடிப்பு;சறுக்குகாட்சி;
Keywords[tg]=пасзамина;тасвир;сурати экран;намоиши слайдҳо;
Keywords[th]=พื้นหลัง;รูปภาพ;ภาพหน้าจอ;การนำเสนอภาพนิ่ง;
Keywords[th_TH]=พื้นหลัง;รูปภาพ;ภาพหน้าจอ;การนำเสนอภาพนิ่ง;
Keywords[tr]=arkaplan;resim;ekran görüntüsü;slayt gösterisi;
Keywords[tr_TR]=arkaplan;resim;ekran görüntüsü;slayt gösterisi;
Keywords[uk]=тло;зображення;зняток екрану;показ слайдів;
Keywords[uk_UA]=тло;зображення;зняток екрану;показ слайдів;
Keywords[ur]=پس منظر، تصویر، سکرین شاٹ، سکرین کی تصویر، سلائڈشو، سلائڈ شو;
Keywords[uz]=фон;расм;экран тасвири;слайд-шоу;
Keywords[uz@cyrillic]=фон;расм;экран тасвири;слайд-шоу;
Keywords[vi]=hình nền;hình ảnh;ảnh chụp màn hình;trình chiếu;
Keywords[vi_VN]=hình nền;hình ảnh;ảnh chụp màn hình;trình chiếu;
Keywords[zh_CN]=背景,图像,截图,幻灯片;
Keywords[zh_HK]=背景;圖片;熒幕截圖;幻燈片;
Keywords[zh_TW]=背景;圖片;螢幕截圖;幻燈片放映;
Cinnamon-3.6.7/files/usr/share/applications/cinnamon-settings-keyboard.desktop 0000664 0001750 0001750 00000043214 13215735076 026566 0 ustar fabio fabio [Desktop Entry]
Icon=cs-keyboard
Exec=cinnamon-settings keyboard
Type=Application
OnlyShowIn=X-Cinnamon;
Categories=Settings;
Name=Keyboard
Name[af]=Sleutelbord
Name[am]=የፊደል ገበታ
Name[ar]=لوحة المفاتيح
Name[ast]=Tecláu
Name[az]=Klaviatura
Name[az_AZ]=Klaviatura
Name[be]=Клавіятура
Name[be@latin]=Клавіятура
Name[be_BY]=Клавіятура
Name[bg]=Клавиатура
Name[bg_BG]=Клавиатура
Name[bn]=কীবোর্ড
Name[bn_IN]=কীবোর্ড
Name[bs]=Tastatura
Name[ca]=Teclat
Name[ca@valencia]=Teclat
Name[ca_ES]=Teclat
Name[ca_ES@valencia]=Teclat
Name[crh]=Klavye
Name[cs]=Klávesnice
Name[cs_CZ]=Klávesnice
Name[csb]=Klawiatura
Name[cy]=Bysellfwrdd
Name[da]=Tastatur
Name[da_DK]=Tastatur
Name[de]=Tastatur
Name[de_CH]=Tastatur
Name[de_DE]=Tastatur
Name[el]=Πληκτρολόγιο
Name[eo]=Klavaro
Name[es]=Teclado
Name[es_AR]=Teclado
Name[es_CL]=Teclado
Name[es_CO]=Teclado
Name[es_CR]=Teclado
Name[es_DO]=Teclado
Name[es_EC]=Teclado
Name[es_ES]=Teclado
Name[es_MX]=Teclado
Name[es_NI]=Teclado
Name[es_PA]=Teclado
Name[es_PE]=Teclado
Name[es_PR]=Teclado
Name[es_SV]=Teclado
Name[es_UY]=Teclado
Name[es_VE]=Teclado
Name[et]=Klaviatuur
Name[et_EE]=Klaviatuur
Name[eu]=Teklatua
Name[fa]=صفحهکلید
Name[fa_AF]=صفحهکلید
Name[fa_IR]=صفحهکلید
Name[fi]=Näppäimistö
Name[fi_FI]=Näppäimistö
Name[fo]=Knappaborð
Name[fr]=Clavier
Name[fr_CA]=Clavier
Name[fr_FR]=Clavier
Name[fy]=Toetseboerd
Name[ga]=Méarchlár
Name[gd]=Meur-chlàr
Name[gl]=Teclado
Name[gl_ES]=Teclado
Name[he]=מקלדת
Name[he_IL]=מקלדת
Name[hi]=कीबोर्ड
Name[hr]=Tipkovnica
Name[hu]=Billentyűzet
Name[hu_HU]=Billentyűzet
Name[hy]=Ստեղնաշար
Name[ia]=Claviero
Name[id]=Papan ketik
Name[id_ID]=Papan ketik
Name[is]=Lyklaborð
Name[it]=Tastiera
Name[it_CH]=Tastiera
Name[it_IT]=Tastiera
Name[ja]=キーボード
Name[ja_JP]=キーボード
Name[jv]=Kibot
Name[ka]=კლავიატურა
Name[kab]=Anasiw
Name[kk]=Пернетақта
Name[km]=ក្ដារចុច
Name[km_KH]=ក្ដារចុច
Name[kn]=ಕೀಲಿಮಣೆ
Name[ko]=키보드
Name[ko_KR]=키보드
Name[la]=Claviatura
Name[li]=Toetsebord
Name[lo]=ແປ້ນພີມ
Name[lo_LA]=ແປ້ນພີມ
Name[lt]=Klaviatūra
Name[lt_LT]=Klaviatūra
Name[lv]=Tastatūra
Name[lv_LV]=Tastatūra
Name[ml]=കീബോര്ഡ്
Name[mr]=कळफलक
Name[ms]=Papan Kekunci
Name[ms_MY]=Papan Kekunci
Name[nb]=Tastatur
Name[nb_NO]=Tastatur
Name[nds]=Tastatur
Name[ne]=कीबोर्ड
Name[nl]=Toetsenbord
Name[nl_NL]=Toetsenbord
Name[nn]=Tastatur
Name[nn_NO]=Tastatur
Name[oc]=Clavièr
Name[om]=Gabatee furtuu
Name[pa]=ਕੀਬੋਰਡ
Name[pl]=Klawiatura
Name[pl_PL]=Klawiatura
Name[pt]=Teclado
Name[pt_BR]=Teclado
Name[pt_PT]=Teclado
Name[ro]=Tastatură
Name[ro_RO]=Tastatură
Name[ru]=Клавиатура
Name[rue]=Клавїатура
Name[sc]=Tastiera
Name[si]=යතුරුපුවරුව
Name[sk]=Klávesnica
Name[sk_SK]=Klávesnica
Name[sl]=Tipkovnica
Name[sl_SI]=Tipkovnica
Name[so]=Kiiboorka
Name[sq]=Tastiera
Name[sr]=Тастатура
Name[sr@Latn]=Tastatura
Name[sr@ije]=Тастатура
Name[sr@ijekavianlatin]=Тастатура
Name[sr@latin]=Tastatura
Name[sr_RS]=Тастатура
Name[sr_RS@latin]=Tastatura
Name[sv]=Tangentbord
Name[ta]=விசைப்பலகை
Name[ta_LK]=விசைப்பலகை
Name[te]=కీబోర్డు
Name[tg]=Клавиатура
Name[th]=แป้นพิมพ์
Name[th_TH]=แป้นพิมพ์
Name[tl]=Tiklado
Name[tpi]=Kibot
Name[tr]=Klavye
Name[tr_TR]=Klavye
Name[ts]=Khibodo
Name[uk]=Набірниця
Name[uk_UA]=Набірниця
Name[ur]=کی بورڈ
Name[uz]=Клавиатура
Name[uz@cyrillic]=Клавиатура
Name[vi]=Bàn phím
Name[vi_VN]=Bàn phím
Name[zh_CN]=键盘
Name[zh_HK]=鍵盤
Name[zh_TW]=鍵盤
Comment=Manage keyboard settings and shortcuts
Comment[am]=የፊደል ገበታ ማሰናጃዎች እና የ አቋራጭ ቁልፍ አስተዳዳሪ
Comment[ar]=إدارة إعدادات لوحة المفاتيح والاختصارات
Comment[be]=Кіраванне наладамі клавіятуры і гарачымі клавішамі
Comment[be@latin]=Кіраванне наладамі клавіятуры і гарачымі клавішамі
Comment[be_BY]=Кіраванне наладамі клавіятуры і гарачымі клавішамі
Comment[bg]=Управление на клавишните настройки и преки пътища
Comment[bg_BG]=Управление на клавишните настройки и преки пътища
Comment[bs]=Upravljaj postavkama tastature i prečica
Comment[ca]=Gestioneu els ajusts del teclat i les dreceres
Comment[ca@valencia]=Administrar configuració i atalls de teclat
Comment[ca_ES]=Gestioneu els ajusts del teclat i les dreceres
Comment[ca_ES@valencia]=Administrar configuració i atalls de teclat
Comment[cs]=Nastavení klásenice a klávesových zkratek
Comment[cs_CZ]=Nastavení klásenice a klávesových zkratek
Comment[cy]=Rheoli gosodiadau a llwybrau byr bysellfwrdd
Comment[da]=Administrér tastaturindstillinger og genveje
Comment[da_DK]=Administrér tastaturindstillinger og genveje
Comment[de]=Tastatureinstellungen und Tastenkombinationen verwalten
Comment[de_CH]=Tastatureinstellungen und Tastenkombinationen verwalten
Comment[de_DE]=Tastatureinstellungen und Tastenkombinationen verwalten
Comment[el]=Διαχείριση ρυθμίσεων πληκτρολογίου και πλήκτρων συντόμευσης
Comment[es]=Administrar configuración de teclado y accesos directos
Comment[es_AR]=Administrar configuración de teclado y accesos directos
Comment[es_CL]=Administrar configuración de teclado y accesos directos
Comment[es_CO]=Administrar configuración de teclado y accesos directos
Comment[es_CR]=Administrar configuración de teclado y accesos directos
Comment[es_DO]=Administrar configuración de teclado y accesos directos
Comment[es_EC]=Administrar configuración de teclado y accesos directos
Comment[es_ES]=Administrar configuración de teclado y accesos directos
Comment[es_MX]=Administrar configuración de teclado y accesos directos
Comment[es_NI]=Administrar configuración de teclado y accesos directos
Comment[es_PA]=Administrar configuración de teclado y accesos directos
Comment[es_PE]=Administrar configuración de teclado y accesos directos
Comment[es_PR]=Administrar configuración de teclado y accesos directos
Comment[es_SV]=Administrar configuración de teclado y accesos directos
Comment[es_UY]=Administrar configuración de teclado y accesos directos
Comment[es_VE]=Administrar configuración de teclado y accesos directos
Comment[eu]=Kudeatu teklatuaren ezarpen eta laster-teklak
Comment[fi]=Muuta näppäimistön asetuksia ja pikanäppäimiä
Comment[fi_FI]=Muuta näppäimistön asetuksia ja pikanäppäimiä
Comment[fr]=Gérer les paramètres du clavier et les raccourcis
Comment[fr_CA]=Gérer les paramètres et les raccourcis du clavier
Comment[fr_FR]=Gérer les paramètres du clavier et les raccourcis
Comment[gd]=Stiùirich roghainnean is ath-ghoiridean a' mheur-chlàir
Comment[gl]=Administra os atallos e axustes do teclado
Comment[gl_ES]=Administra os atallos e axustes do teclado
Comment[hr]=Upravljajte postavkama i prečacima tipkovnice
Comment[hu]=Billentyűzet beállítások és billentyűparancsok kezelése
Comment[hu_HU]=Billentyűzet beállítások és billentyűparancsok kezelése
Comment[ia]=Administrar le preferentias de claviero e le vias breve
Comment[id]=Atur pengaturan keyboard dan shortcuts
Comment[id_ID]=Atur pengaturan keyboard dan shortcuts
Comment[is]=Sýsla með stillingar lyklaborðs og flýtilykla
Comment[it]=Gestisci impostazioni e scorciatoie da tastiera
Comment[it_CH]=Gestisci impostazioni e scorciatoie da tastiera
Comment[it_IT]=Gestisci impostazioni e scorciatoie da tastiera
Comment[ja]=キーボード設定・ショートカットの管理
Comment[ja_JP]=キーボード設定・ショートカットの管理
Comment[ko]=키보드 설정과 바로가기 관리
Comment[ko_KR]=키보드 설정과 바로가기 관리
Comment[lt]=Tvarkyti klaviatūros nustatymus ir sparčiuosius klavišus
Comment[lt_LT]=Tvarkyti klaviatūros nustatymus ir sparčiuosius klavišus
Comment[lv]=Pārvaldīt tastatūras iestatījumus un saīsnes
Comment[lv_LV]=Pārvaldīt tastatūras iestatījumus un saīsnes
Comment[ms]=Mengurus tetapan papan kekunci dan pintasan
Comment[ms_MY]=Mengurus tetapan papan kekunci dan pintasan
Comment[nb]=Håndter tastaturinnstillinger og hurtigtaster
Comment[nb_NO]=Håndter tastaturinnstillinger og hurtigtaster
Comment[nds]=Tastatureinstellungen und Verknüpfungen verwalten
Comment[nl]=Toetsenbordinstellingen en sneltoetsen beheren
Comment[nl_NL]=Toetsenbordinstellingen en sneltoetsen beheren
Comment[pl]=Zarządzaj ustawieniami klawiatury i skrótami
Comment[pl_PL]=Zarządzaj ustawieniami klawiatury i skrótami
Comment[pt]=Geir as definições de teclado e atalhos
Comment[pt_BR]=Gerenciar as configurações de teclado e atalhos
Comment[pt_PT]=Geir as definições de teclado e atalhos
Comment[ro]=Gestionează setările tastaturii și scurtăturile
Comment[ro_RO]=Gestionează setările tastaturii și scurtăturile
Comment[ru]=Управление настройками клавиатуры и горячими клавишами
Comment[sk]=Spravovať nastavenia klávesnice a klávesových skratiek
Comment[sk_SK]=Spravovať nastavenia klávesnice a klávesových skratiek
Comment[sl]=Upravljajte z nastavitvami in bližnjicami tipkovnice
Comment[sl_SI]=Upravljajte z nastavitvami in bližnjicami tipkovnice
Comment[sr]=Управљање поставкама тастатуре и пречицама
Comment[sr@Latn]=Управљање поставкама тастатуре и пречицама
Comment[sr@ije]=Управљање поставкама тастатуре и пречицама
Comment[sr@ijekavianlatin]=Управљање поставкама тастатуре и пречицама
Comment[sr@latin]=Управљање поставкама тастатуре и пречицама
Comment[sr_RS]=Управљање поставкама тастатуре и пречицама
Comment[sr_RS@latin]=Управљање поставкама тастатуре и пречицама
Comment[sv]=Hantera tangentbordsinställningar och genvägar
Comment[tg]=Идоракунии миёнбурҳо ва танзимоти клавиатура
Comment[th]=จัดการการตั้งค่าแป้นพิมพ์และทางลัด
Comment[th_TH]=จัดการการตั้งค่าแป้นพิมพ์และทางลัด
Comment[tr]=Klavye ayarlarını ve kısayollarını yönet
Comment[tr_TR]=Klavye ayarlarını ve kısayollarını yönet
Comment[uk]=Керування параметрами набірниці та набірничними скороченнями
Comment[uk_UA]=Керування параметрами набірниці та набірничними скороченнями
Comment[ur]=کیبورڈ کی ترتیبات اور شارٹ کٹ
Comment[vi]=Quản lý thiết đặt bàn phím và phím tắt
Comment[vi_VN]=Quản lý thiết đặt bàn phím và phím tắt
Comment[zh_CN]=键盘和快捷键设置
Comment[zh_HK]=管理鍵盤設定與快速鍵
Comment[zh_TW]=管理鍵盤設定與快捷鍵組合
Keywords=keyboard;shortcut;hotkey;
Keywords[am]=የፊደል ገበታ : አቋራጭ : ትኩስ ቁልፍ;
Keywords[ar]=لوحة مفاتيح، اختصار ، مفتاح اختصار;
Keywords[ast]=tecláu;accesu direutu;atayu;
Keywords[be]=клавіятура;ярлык;гарачыя клавішы;
Keywords[be@latin]=клавіятура;ярлык;гарачыя клавішы;
Keywords[be_BY]=клавіятура;ярлык;гарачыя клавішы;
Keywords[bg]=клавиатура;кратки пътища;бързи клавиши;
Keywords[bg_BG]=клавиатура;кратки пътища;бързи клавиши;
Keywords[bs]=tastatura;prečica;tipka prečice;
Keywords[ca]=teclat;drecera;tecla d'accés ràpid;
Keywords[ca@valencia]=teclat;atall. tecles d'accés ràpid;
Keywords[ca_ES]=teclat;drecera;tecla d'accés ràpid;
Keywords[ca_ES@valencia]=teclat;atall. tecles d'accés ràpid;
Keywords[cs]=klávesnice;zkratky;horké klávesy;
Keywords[cs_CZ]=klávesnice;zkratky;horké klávesy;
Keywords[cy]=bysellfwrdd;llwybr byr;bysell boeth;
Keywords[da]=tastatur;genvej;genvejstast;
Keywords[da_DK]=tastatur;genvej;genvejstast;
Keywords[de]=Tastatur;Tastenkombination;Schnelltaste;Tastenkürzel;shortcut;hotkey;
Keywords[de_CH]=Tastatur;Tastenkombination;Schnelltaste;Tastenkürzel;shortcut;hotkey;
Keywords[de_DE]=Tastatur;Tastenkombination;Schnelltaste;Tastenkürzel;shortcut;hotkey;
Keywords[el]=πληκτρολόγιο;συντομεύσεις;συντόμευση;
Keywords[es]=teclado;atajo. teclas de acceso rápido;
Keywords[es_AR]=teclado;atajo. teclas de acceso rápido;
Keywords[es_CL]=teclado;atajo. teclas de acceso rápido;
Keywords[es_CO]=teclado;atajo. teclas de acceso rápido;
Keywords[es_CR]=teclado;atajo. teclas de acceso rápido;
Keywords[es_DO]=teclado;atajo. teclas de acceso rápido;
Keywords[es_EC]=teclado;atajo. teclas de acceso rápido;
Keywords[es_ES]=teclado;atajo. teclas de acceso rápido;
Keywords[es_MX]=teclado;atajo. teclas de acceso rápido;
Keywords[es_NI]=teclado;atajo. teclas de acceso rápido;
Keywords[es_PA]=teclado;atajo. teclas de acceso rápido;
Keywords[es_PE]=teclado;atajo. teclas de acceso rápido;
Keywords[es_PR]=teclado;atajo. teclas de acceso rápido;
Keywords[es_SV]=teclado;atajo. teclas de acceso rápido;
Keywords[es_UY]=teclado;atajo. teclas de acceso rápido;
Keywords[es_VE]=teclado;atajo. teclas de acceso rápido;
Keywords[et]=klaviatuur;otsetee;kiirklahv;
Keywords[et_EE]=klaviatuur;otsetee;kiirklahv;
Keywords[eu]=teklatua;lasterbidea;laster-tekla;
Keywords[fi]=näppäimistö;pikanäppäin;toimintonappi;
Keywords[fi_FI]=näppäimistö;pikanäppäin;toimintonappi;
Keywords[fr]=clavier;raccourci;raccourci;
Keywords[fr_CA]=clavier;raccourci;raccourci clavier;
Keywords[fr_FR]=clavier;raccourci;raccourci;
Keywords[ga]=méarchlár;aicearra;eochair aicearra;
Keywords[gd]=meur-chlàr;ath-ghoirid;keyboard;shortcut;hotkey;
Keywords[gl]=teclado;atallo;acceso rápido;
Keywords[gl_ES]=teclado;atallo;acceso rápido;
Keywords[hr]=tipkovnica;prečac;tipka prečaca;
Keywords[hu]=billentyűzet;gyorsbillentyű;gombok;
Keywords[hu_HU]=billentyűzet;gyorsbillentyű;gombok;
Keywords[ia]=claviero;via-breve;clave calide;
Keywords[id]=papan tik;shortcut;hotkey;
Keywords[id_ID]=papan tik;shortcut;hotkey;
Keywords[is]=lyklaborð;flýtilykill;flýtihnappur;stytting;lyklasamsetning;
Keywords[it]=tastiera;scorciatoia;hotkey;
Keywords[it_CH]=tastiera;scorciatoia;hotkey;
Keywords[it_IT]=tastiera;scorciatoia;hotkey;
Keywords[ja]=キーボード、ショートカット、ホットキー;
Keywords[ja_JP]=キーボード、ショートカット、ホットキー;
Keywords[ko]=키보드;바로가기;핫 키;
Keywords[ko_KR]=키보드;바로가기;핫 키;
Keywords[lt]=klaviatūra;nuoroda;karštasis klavišas;spartieji klavišai;susiejimas;
Keywords[lt_LT]=klaviatūra;nuoroda;karštasis klavišas;spartieji klavišai;susiejimas;
Keywords[lv]=tastatūra;īsceļš;"karstais taustiņš";
Keywords[lv_LV]=tastatūra;īsceļš;"karstais taustiņš";
Keywords[ms]=papan kekunci;pintasan;kekunci panas;
Keywords[ms_MY]=papan kekunci;pintasan;kekunci panas;
Keywords[nb]=tastatur;snarvei;hurtigtast;
Keywords[nb_NO]=tastatur;snarvei;hurtigtast;
Keywords[nds]=Tastatur;Verknüpfung;Hotkey;
Keywords[nl]=toetsenbord;sneltoets;actieve toets;
Keywords[nl_NL]=toetsenbord;sneltoets;actieve toets;
Keywords[om]=Gabateefurtuu;qaxxaamura;ariingaa;
Keywords[pl]=klawiatura;skrót;skrót klawiszowy;
Keywords[pl_PL]=klawiatura;skrót;skrót klawiszowy;
Keywords[pt]=teclado;atalho;acelerador;
Keywords[pt_BR]=teclado;atalho;tecla de atalho;
Keywords[pt_PT]=teclado;atalho;acelerador;
Keywords[ro]=tastatură;scurtătură;tastă rapidă;
Keywords[ro_RO]=tastatură;scurtătură;tastă rapidă;
Keywords[ru]=клавиатура;ярлык;горячие клавиши;
Keywords[sk]=klávesnica;skratky;horúce klávesy;
Keywords[sk_SK]=klávesnica;skratky;horúce klávesy;
Keywords[sl]=tipkovnica;bližnjica;hitra tipka;
Keywords[sl_SI]=tipkovnica;bližnjica;hitra tipka;
Keywords[sr]=тастатура;пречица;
Keywords[sr@Latn]=тастатура;пречица;
Keywords[sr@ije]=тастатура;пречица;
Keywords[sr@ijekavianlatin]=тастатура;пречица;
Keywords[sr@latin]=тастатура;пречица;
Keywords[sr_RS]=тастатура;пречица;
Keywords[sr_RS@latin]=тастатура;пречица;
Keywords[sv]=tangentbord;genväg;hotkey;
Keywords[ta]=விசைப்பலகை;குறுக்குவழி;குறுக்குவிசை;
Keywords[ta_LK]=விசைப்பலகை;குறுக்குவழி;குறுக்குவிசை;
Keywords[tg]=клавиатура;миёнбур;тугмаи тезкор;
Keywords[th]=แป้นพิมพ์;ทางลัด;ฮอตคีย์;
Keywords[th_TH]=แป้นพิมพ์;ทางลัด;ฮอตคีย์;
Keywords[tr]=klavye;kısayol;kısayol tuşu;
Keywords[tr_TR]=klavye;kısayol;kısayol tuşu;
Keywords[uk]=набірниця;лейба;гарячі клявіші;
Keywords[uk_UA]=набірниця;лейба;гарячі клявіші;
Keywords[ur]=کیبورڈ، شارٹ کٹ، ہاٹ کی;
Keywords[vi]=bàn phím;phím tắt;phím nóng;
Keywords[vi_VN]=bàn phím;phím tắt;phím nóng;
Keywords[zh_CN]=keyboard;shortcut;hotkey;键盘;快捷键;热键;
Keywords[zh_HK]=鍵盤;快速鍵;hotkey;
Keywords[zh_TW]=鍵盤;快捷鍵組合;熱鍵;
Cinnamon-3.6.7/files/usr/share/applications/cinnamon-settings.desktop 0000664 0001750 0001750 00000026773 13215735076 025003 0 ustar fabio fabio [Desktop Entry]
Exec=cinnamon-settings
Icon=preferences-system
Terminal=false
Type=Application
Categories=Settings;
StartupNotify=false
OnlyShowIn=X-Cinnamon;
Keywords=Preferences;Settings;
Name=System Settings
Name[af]=Stelsel instellings
Name[am]=ስርአት ማሰናጃ
Name[ar]=إعدادات النظام
Name[ar_MA]=إعدادات النظام
Name[ast]=Axustes del sistema
Name[az]=Sistem Tənzimləmələri
Name[be]=Сістэмныя налады
Name[be@latin]=Сістэмныя налады
Name[be_BY]=Сістэмныя налады
Name[bg]=Системни настройки
Name[bg_BG]=Системни настройки
Name[bn]=সিস্টেম পরিচালনা
Name[bn_IN]=সিস্টেম পরিচালনা
Name[bs]=Sistemske postavke
Name[ca]=Ajusts del sistema
Name[ca@valencia]=Configuració del sistema
Name[ca_ES]=Ajusts del sistema
Name[ca_ES@valencia]=Configuració del sistema
Name[cs]=Nastavení systému
Name[cs_CZ]=Nastavení systému
Name[cy]=Gosodiadau System
Name[da]=Systemindstillinger
Name[da_DK]=Systemindstillinger
Name[de]=Systemeinstellungen
Name[de@hebrew]=Systemeinstellungen
Name[de_CH]=Systemeinstellungen
Name[de_DE]=Systemeinstellungen
Name[el]=Ρυθμίσεις Συστήματος
Name[eo]=Sistemaj agordoj
Name[es]=Configuración del sistema
Name[es_419]=Configuración del sistema
Name[es_AR]=Configuración del sistema
Name[es_CL]=Configuración del sistema
Name[es_CO]=Configuración del sistema
Name[es_CR]=Configuración del sistema
Name[es_DO]=Configuración del sistema
Name[es_EC]=Configuración del sistema
Name[es_ES]=Configuración del sistema
Name[es_MX]=Configuración del sistema
Name[es_NI]=Configuración del sistema
Name[es_PA]=Configuración del sistema
Name[es_PE]=Configuración del sistema
Name[es_PR]=Configuración del sistema
Name[es_SV]=Configuración del sistema
Name[es_US]=Configuración del sistema
Name[es_UY]=Configuración del sistema
Name[es_VE]=Configuración del sistema
Name[et]=Süsteemi seaded
Name[eu]=Sistemaren ezarpenak
Name[fa]=تنظیمات سیستم
Name[fa_AF]=تنظیمات سیستم
Name[fa_IR]=تنظیمات سیستم
Name[fi]=Järjestelmäasetukset
Name[fi_FI]=Järjestelmäasetukset
Name[fil]=Mga Setting ng System
Name[fr]=Paramètres système
Name[fr_CA]=Paramètres système
Name[fr_FR]=Paramètres système
Name[fy]=Systeem ynstellingen
Name[ga]=Socruithe Córais
Name[gd]=Roghainnean an t-siostaim
Name[gl]=Axustes do sistema
Name[gl_ES]=Axustes do sistema
Name[he]=הגדרות מערכת
Name[he_IL]=הגדרות מערכת
Name[hi]=सिस्टम सेटिंग्स
Name[hr]=Postavke sustava
Name[hu]=Rendszerbeállítások
Name[hu_HU]=Rendszerbeállítások
Name[hy]=Համակարգի կարգավորումները
Name[ia]=Configurationes del systema
Name[id]=Pengaturan Sistem
Name[id_ID]=Pengaturan Sistem
Name[is]=Kerfisstillingar
Name[it]=Impostazioni di sistema
Name[ja]=システム設定
Name[ja_JP]=システム設定
Name[jv]=seting sistem
Name[ka]=სისტემის პარამეტრები
Name[kab]=Iɣewwaṛen n unagraw
Name[kk]=Жүйе баптаулары
Name[km]=ការកំណត់ប្រព័ន្ធ
Name[km_KH]=ការកំណត់ប្រព័ន្ធ
Name[ko]=시스템 설정
Name[ko_KR]=시스템 설정
Name[ku]=Mîhengên pergalê
Name[ku_IQ]=Mîhengên pergalê
Name[la]=computator commuta
Name[li]=Systeeminsjtellinge
Name[lo]=ການຕັ້ງຄ່າລະບົບ
Name[lo_LA]=ການຕັ້ງຄ່າລະບົບ
Name[lt]=Sistemos nustatymai
Name[lt_LT]=Sistemos nustatymai
Name[lv]=Sistēmas iestatījumi
Name[lv_LV]=Sistēmas iestatījumi
Name[mr]=सिस्टम सेटिंग्स्
Name[ms]=Tetapan Sistem
Name[ms_MY]=Tetapan Sistem
Name[my]=စနစ် ကနောက်ခံ
Name[my_MM]=စနစ် ကနောက်ခံ
Name[nap]=Settaggi d''o Sistema
Name[nb]=Systeminnstillinger
Name[nb_NO]=Systeminnstillinger
Name[nds]=Systemeinstellungen
Name[ne]=प्रणाली सेटिङ
Name[nl]=Systeeminstellingen
Name[nl_NL]=Systeeminstellingen
Name[oc]=Paramètres del sistèma
Name[om]=Qindaainoota sirnaa
Name[pa]=ਸਿਸਟਮ ਸੈਟਿੰਗ
Name[pl]=Ustawienia systemowe
Name[pl_PL]=Ustawienia systemowe
Name[pt]=Definições do sistema
Name[pt_BR]=Configurações do sistema
Name[pt_PT]=Definições do sistema
Name[ro]=Setări sistem
Name[ro_RO]=Setări sistem
Name[ru]=Параметры системы
Name[sc]=Sèberos de Sistema
Name[si]=පද්ධති සැකසුම්
Name[sk]=Systémové nastavenia
Name[sk_SK]=Systémové nastavenia
Name[sl]=Sistemske nastavitve
Name[sl_SI]=Sistemske nastavitve
Name[sq]=Parametrat e sistemit
Name[sr]=Подешавања система
Name[sr@Latn]=Подешавања система
Name[sr@ije]=Подешавања система
Name[sr@ijekavianlatin]=Подешавања система
Name[sr@latin]=Подешавања система
Name[sr_RS]=Подешавања система
Name[sr_RS@latin]=Подешавања система
Name[sv]=Systeminställningar
Name[ta]=கணினி அமைப்புகள்
Name[ta_LK]=கணினி அமைப்புகள்
Name[tg]=Танзимоти система
Name[th]=ค่าตั้งระบบ
Name[th_TH]=ค่าตั้งระบบ
Name[tl]=Mga Settings ukol sa Sistema
Name[tr]=Sistem Ayarları
Name[tr_TR]=Sistem Ayarları
Name[ug]=سىستېما تەڭشىكى
Name[uk]=Системні налаштування
Name[uk_UA]=Системні налаштування
Name[ur]=سسٹم کی ترتیبات
Name[ur_PK]=سسٹم کی ترتیبات
Name[uz]=Тизим созламалари
Name[uz@Latn]=Тизим созламалари
Name[uz@cyrillic]=Тизим созламалари
Name[vi]=Thiết lập Hệ thống
Name[vi_VN]=Thiết lập Hệ thống
Name[zh_CN]=系统设置
Name[zh_HK]=系統設定
Name[zh_TW]=系統設定
Comment=Control Center
Comment[af]=Kontrole sentrum
Comment[am]=መቆጣጠሪያ ማእከል
Comment[ar]=مركز التحكم
Comment[ar_MA]=مركز التحكم
Comment[ast]=Centru de control
Comment[az]=İdarə Mərkəzi
Comment[be]=Цэнтр кіравання
Comment[be@latin]=Цэнтр кіравання
Comment[be_BY]=Цэнтр кіравання
Comment[bg]=Контролен център
Comment[bg_BG]=Контролен център
Comment[bn]=নিয়ন্ত্রণ কেন্দ্র
Comment[bn_IN]=নিয়ন্ত্রণ কেন্দ্র
Comment[bs]=Upravljački centar
Comment[ca]=Centre de control
Comment[ca@valencia]=Centre de control
Comment[ca_ES]=Centre de control
Comment[ca_ES@valencia]=Centre de control
Comment[cs]=Ovládací panely
Comment[cs_CZ]=Ovládací panely
Comment[cy]=Canolfan Rheoli
Comment[da]=Kontrolcenter
Comment[da_DK]=Kontrolcenter
Comment[de]=Steuerzentrale
Comment[de@hebrew]=Steuerzentrale
Comment[de_CH]=Steuerzentrale
Comment[de_DE]=Steuerzentrale
Comment[el]=Κέντρο Ελέγχου
Comment[en_CA]=Control Centre
Comment[en_GB]=Control Centre
Comment[eo]=Stircentro
Comment[es]=Centro de control
Comment[es_419]=Centro de control
Comment[es_AR]=Centro de control
Comment[es_CL]=Centro de control
Comment[es_CO]=Centro de control
Comment[es_CR]=Centro de control
Comment[es_DO]=Centro de control
Comment[es_EC]=Centro de control
Comment[es_ES]=Centro de control
Comment[es_MX]=Centro de control
Comment[es_NI]=Centro de control
Comment[es_PA]=Centro de control
Comment[es_PE]=Centro de control
Comment[es_PR]=Centro de control
Comment[es_SV]=Centro de control
Comment[es_US]=Centro de control
Comment[es_UY]=Centro de control
Comment[es_VE]=Centro de control
Comment[et]=Juhtimiskeskus
Comment[eu]=Kontrolgunea
Comment[fa]=مرکز کنترل
Comment[fa_AF]=مرکز کنترل
Comment[fa_IR]=مرکز کنترل
Comment[fi]=Ohjauskeskus
Comment[fi_FI]=Ohjauskeskus
Comment[fil]=Kontrol Senter
Comment[fo]=Stýris-miðdepil
Comment[fr]=Centre de Contrôle
Comment[fr_CA]=Centre de Contrôle
Comment[fr_FR]=Centre de Contrôle
Comment[fy]=Behear Sintrum
Comment[ga]=Lárionad Rialaithe
Comment[gd]=An t-ionad smachd
Comment[gl]=Centro de control
Comment[gl_ES]=Centro de control
Comment[he]=מרכז הבקרה
Comment[he_IL]=מרכז הבקרה
Comment[hi]=कन्ट्रोल सेन्टर
Comment[hr]=Upravljačko središte
Comment[hu]=Vezérlőpult
Comment[hu_HU]=Vezérlőpult
Comment[hy]=Կառավարման կենտրոն
Comment[ia]=Pannello de controlo
Comment[id]=Pusat Kendali
Comment[id_ID]=Pusat Kendali
Comment[is]=Stjórnborð
Comment[it]=Centro di controllo
Comment[ja]=コントロールセンター
Comment[ja_JP]=コントロールセンター
Comment[jv]=Pusate ngengatur
Comment[ka]=მართვის ცენტრი
Comment[kab]=Amas n wenzaḍ
Comment[kk]=Басқару орталығы
Comment[km]=មជ្ឈមណ្ឌលបញ្ជា
Comment[km_KH]=មជ្ឈមណ្ឌលបញ្ជា
Comment[ko]=제어판
Comment[ko_KR]=제어판
Comment[ku]=Navenda Kontrolê
Comment[ku_IQ]=Navenda Kontrolê
Comment[li]=Configurasiesjerm
Comment[lo]=ສູນຄວບຄຸມ
Comment[lo_LA]=ສູນຄວບຄຸມ
Comment[lt]=Valdymo centras
Comment[lt_LT]=Valdymo centras
Comment[lv]=Vadības centrs
Comment[lv_LV]=Vadības centrs
Comment[mr]=नियंत्रण केंद्र
Comment[ms]=Pusat Kawalan
Comment[ms_MY]=Pusat Kawalan
Comment[my]=ထိန်းချုပ်ရေး စင်တာ
Comment[my_MM]=ထိန်းချုပ်ရေး စင်တာ
Comment[nap]=Centro 'e cuntroll'
Comment[nb]=Kontrollsenter
Comment[nb_NO]=Kontrollsenter
Comment[nds]=Kontrollzentrum
Comment[ne]=नियन्त्रण केन्द्र
Comment[nl]=Configuratiecentrum
Comment[nl_NL]=Configuratiecentrum
Comment[oc]=Centre de contraròtle
Comment[om]=Wiirtuu to'annaa
Comment[pa]=ਕੰਟਰੋਲ ਸੈਂਟਰ
Comment[pl]=Centrum sterowania
Comment[pl_PL]=Centrum sterowania
Comment[pt]=Centro de controlo
Comment[pt_BR]=Centro de Controle
Comment[pt_PT]=Centro de controlo
Comment[ro]=Centru de control
Comment[ro_RO]=Centru de control
Comment[ru]=Центр управления
Comment[sc]=Tzentru de Controllu
Comment[si]=පාලන මධ්යස්ථානය
Comment[sk]=Centrum ovládania
Comment[sk_SK]=Centrum ovládania
Comment[sl]=Nadzorno središče
Comment[sl_SI]=Nadzorno središče
Comment[sq]=Qendra e kontrollit
Comment[sr]=Управљачки центар
Comment[sr@Latn]=Управљачки центар
Comment[sr@ije]=Управљачки центар
Comment[sr@ijekavianlatin]=Управљачки центар
Comment[sr@latin]=Управљачки центар
Comment[sr_RS]=Управљачки центар
Comment[sr_RS@latin]=Управљачки центар
Comment[sv]=Kontrollcenter
Comment[ta]=கட்டுப்பாட்டு மையம்
Comment[ta_LK]=கட்டுப்பாட்டு மையம்
Comment[tg]=Маркази идоракунӣ
Comment[th]=ศูนย์ควบคุม
Comment[th_TH]=ศูนย์ควบคุม
Comment[tl]=Sentro ng Kontrol
Comment[tr]=Cinnamon Denetim Merkezi
Comment[tr_TR]=Cinnamon Denetim Merkezi
Comment[ug]=باشقۇرۇش مەركىزى
Comment[uk]=Центр керування
Comment[uk_UA]=Центр керування
Comment[ur]=کنڑول مرکز
Comment[ur_PK]=کنڑول مرکز
Comment[uz]=Назорат маркази
Comment[uz@Latn]=Назорат маркази
Comment[uz@cyrillic]=Назорат маркази
Comment[vi]=Trung tâm Điều khiển
Comment[vi_VN]=Trung tâm Điều khiển
Comment[zh_CN]=控制中心
Comment[zh_HK]=控制中心
Comment[zh_TW]=控制中心
Cinnamon-3.6.7/files/usr/share/applications/cinnamon-menu-editor.desktop 0000664 0001750 0001750 00000000420 13215735076 025350 0 ustar fabio fabio [Desktop Entry]
Name=Cinnamon Menu Editor
Comment=Edit the entries of the Cinnamon menu applet
Exec=cinnamon-menu-editor
Icon=alacarte
OnlyShowIn=X-Cinnamon;
Terminal=false
Type=Application
NoDisplay=true
Categories=GNOME;GTK;Settings;DesktopSettings;
StartupNotify=false
Cinnamon-3.6.7/files/usr/share/applications/cinnamon-settings-general.desktop 0000664 0001750 0001750 00000025442 13215735076 026406 0 ustar fabio fabio [Desktop Entry]
Icon=cs-general
Exec=cinnamon-settings general
Type=Application
OnlyShowIn=X-Cinnamon;
Categories=Settings;
Name=General
Name[am]=ባጠቃላይ
Name[ar]=عام
Name[ast]=Xeneral
Name[be]=Агульны
Name[be@latin]=Агульны
Name[be_BY]=Агульны
Name[bg]=Общи
Name[bg_BG]=Общи
Name[bs]=Opšte
Name[cs]=Obecné
Name[cs_CZ]=Obecné
Name[cy]=Cyffredinol
Name[da]=Generelt
Name[da_DK]=Generelt
Name[de]=Allgemein
Name[de_CH]=Allgemein
Name[de_DE]=Allgemein
Name[el]=Γενικές Ρυθμίσεις
Name[eo]=Ĝenerala
Name[et]=Üldine
Name[et_EE]=Üldine
Name[eu]=Orokorra
Name[fa]=عمومی
Name[fa_AF]=عمومی
Name[fa_IR]=عمومی
Name[fi]=Yleinen
Name[fi_FI]=Yleinen
Name[fr]=Général
Name[fr_CA]=Général
Name[fr_FR]=Général
Name[ga]=Ginearálta
Name[gd]=Coitcheann
Name[gl]=Xeral
Name[gl_ES]=Xeral
Name[hr]=Općenito
Name[hu]=Általános
Name[hu_HU]=Általános
Name[id]=Umum
Name[id_ID]=Umum
Name[is]=Almennt
Name[it]=Generali
Name[it_CH]=Generali
Name[it_IT]=Generali
Name[ja]=一般
Name[ja_JP]=一般
Name[kab]=Amatu
Name[ko]=일반
Name[ko_KR]=일반
Name[lo]=ທົ່ວໄປ
Name[lo_LA]=ທົ່ວໄປ
Name[lt]=Bendra
Name[lt_LT]=Bendra
Name[lv]=Vispārīgi
Name[lv_LV]=Vispārīgi
Name[ms]=Am
Name[ms_MY]=Am
Name[nb]=Generelt
Name[nb_NO]=Generelt
Name[nds]=Allgemein
Name[nl]=Algemeen
Name[nl_NL]=Algemeen
Name[om]=Waliigala
Name[pa]=ਸਧਾਰਨ
Name[pl]=Ogólne
Name[pl_PL]=Ogólne
Name[pt]=Geral
Name[pt_BR]=Geral
Name[pt_PT]=Geral
Name[ru]=Общие
Name[sk]=Všeobecné
Name[sk_SK]=Všeobecné
Name[sl]=Splošno
Name[sl_SI]=Splošno
Name[sq]=Të përgjithshme
Name[sr]=Опште
Name[sr@Latn]=Опште
Name[sr@ije]=Опште
Name[sr@ijekavianlatin]=Опште
Name[sr@latin]=Опште
Name[sr_RS]=Опште
Name[sr_RS@latin]=Опште
Name[sv]=Allmänt
Name[ta]=பொது
Name[ta_LK]=பொது
Name[tg]=Умумӣ
Name[th]=ทั่วไป
Name[th_TH]=ทั่วไป
Name[tr]=Genel
Name[tr_TR]=Genel
Name[uk]=Загальні
Name[uk_UA]=Загальні
Name[ur]=عمومی
Name[vi]=Tổng quát
Name[vi_VN]=Tổng quát
Name[zh_CN]=常规
Name[zh_HK]=一般
Name[zh_TW]=一般
Comment=Miscellaneous Cinnamon preferences
Comment[am]=የተለያዩ የ ሲናሞን ምርጫዎች
Comment[ar]=تفضيلات أخرى لـ: سينامُن
Comment[be]=Розныя налады Cinnamon
Comment[be@latin]=Розныя налады Cinnamon
Comment[be_BY]=Розныя налады Cinnamon
Comment[bg]=Други настройки на Cinnamon
Comment[bg_BG]=Други настройки на Cinnamon
Comment[bs]=Razne Cinnamon postavke
Comment[ca]=Preferències diverses de Cinnamon
Comment[ca@valencia]=Preferències diverses de Cinnamon
Comment[ca_ES]=Preferències diverses de Cinnamon
Comment[ca_ES@valencia]=Preferències diverses de Cinnamon
Comment[cs]=Ostatní nastavení Cinnamonu
Comment[cs_CZ]=Ostatní nastavení Cinnamonu
Comment[cy]=Dewisiadau amrywiol Cinnamon
Comment[da]=Diverse Cinnamon-indstillinger
Comment[da_DK]=Diverse Cinnamon-indstillinger
Comment[de]=Verschiedene Cinnamon-Einstellungen
Comment[de_CH]=Verschiedene Cinnamon-Einstellungen
Comment[de_DE]=Verschiedene Cinnamon-Einstellungen
Comment[el]=Διάφορες προτιμήσεις του Cinnamon
Comment[es]=Preferencias diversas de Cinnamon
Comment[es_AR]=Preferencias diversas de Cinnamon
Comment[es_CL]=Preferencias diversas de Cinnamon
Comment[es_CO]=Preferencias diversas de Cinnamon
Comment[es_CR]=Preferencias diversas de Cinnamon
Comment[es_DO]=Preferencias diversas de Cinnamon
Comment[es_EC]=Preferencias diversas de Cinnamon
Comment[es_ES]=Preferencias diversas de Cinnamon
Comment[es_MX]=Preferencias diversas de Cinnamon
Comment[es_NI]=Preferencias diversas de Cinnamon
Comment[es_PA]=Preferencias diversas de Cinnamon
Comment[es_PE]=Preferencias diversas de Cinnamon
Comment[es_PR]=Preferencias diversas de Cinnamon
Comment[es_SV]=Preferencias diversas de Cinnamon
Comment[es_UY]=Preferencias diversas de Cinnamon
Comment[es_VE]=Preferencias diversas de Cinnamon
Comment[eu]=Askotariko Cinnamon hobespenak
Comment[fa]=گزینههای گوناگون سینمون
Comment[fa_AF]=گزینههای گوناگون سینمون
Comment[fa_IR]=گزینههای گوناگون سینمون
Comment[fi]=Sekalaisia Cinnamonin asetuksia
Comment[fi_FI]=Sekalaisia Cinnamonin asetuksia
Comment[fr]=Préférences diverses de Cinnamon
Comment[fr_CA]=Autres préférences pour Cinnamon
Comment[fr_FR]=Préférences diverses de Cinnamon
Comment[gd]=Measgachadh de roghainnean Cinnamon
Comment[gl]=Preferencias variadas para Cinnamon
Comment[gl_ES]=Preferencias variadas para Cinnamon
Comment[hr]=Ostale Cinnamon osobitosti
Comment[hu]=Egyéb Cinnamon beállítások
Comment[hu_HU]=Egyéb Cinnamon beállítások
Comment[ia]=Preferentias miscellanee de Cinnamon
Comment[id]=Macam-macam preferensi Cinnamon
Comment[id_ID]=Macam-macam preferensi Cinnamon
Comment[is]=Ýmsar stillingar fyrir Cinnamon
Comment[it]=Preferenze varie di Cinnamon
Comment[it_CH]=Preferenze varie di Cinnamon
Comment[it_IT]=Preferenze varie di Cinnamon
Comment[ja]=その他 Cinnamon 設定オプション
Comment[ja_JP]=その他 Cinnamon 設定オプション
Comment[ko]=그밖의 시나몬설정
Comment[ko_KR]=그밖의 시나몬설정
Comment[lt]=Kitos Cinnamon nuostatos
Comment[lt_LT]=Kitos Cinnamon nuostatos
Comment[lv]=Dažādi Cinnamon iestatījumi
Comment[lv_LV]=Dažādi Cinnamon iestatījumi
Comment[ms]=Pilihan Cinnamon pelbagai
Comment[ms_MY]=Pilihan Cinnamon pelbagai
Comment[nb]=Diverse innstillinger for Cinnamon
Comment[nb_NO]=Diverse innstillinger for Cinnamon
Comment[nds]=Sonstige Cinnamon-Einstellungen
Comment[nl]=Verschillende Cinnamonvoorkeuren
Comment[nl_NL]=Verschillende Cinnamonvoorkeuren
Comment[oc]=Preferéncias divèrsas de Cinnamon
Comment[pl]=Różne preferencje Cinnamona
Comment[pl_PL]=Różne preferencje Cinnamona
Comment[pt]=Preferências diversas do Cinnamon
Comment[pt_BR]=Preferências diversas do Cinnamon
Comment[pt_PT]=Preferências diversas do Cinnamon
Comment[ro]=Alte preferințe Cinnamon
Comment[ro_RO]=Alte preferințe Cinnamon
Comment[ru]=Различные настройки Cinnamon
Comment[sk]=Rôzne predvoľby Cinnamon
Comment[sk_SK]=Rôzne predvoľby Cinnamon
Comment[sl]=Razne možnosti Cinnamona
Comment[sl_SI]=Razne možnosti Cinnamona
Comment[sq]=Parapëlqime të përziera të Cinnamon
Comment[sr]=Разне поставке Цимета
Comment[sr@Latn]=Разне поставке Цимета
Comment[sr@ije]=Разне поставке Цимета
Comment[sr@ijekavianlatin]=Разне поставке Цимета
Comment[sr@latin]=Разне поставке Цимета
Comment[sr_RS]=Разне поставке Цимета
Comment[sr_RS@latin]=Разне поставке Цимета
Comment[sv]=Diverse inställningar för Cinnamon
Comment[tg]=Хусусиятҳои гуногун дар Cinnamon
Comment[th]=การตั้งค่าเบ็ดเตล็ด Cinnamon ขั้นสูง
Comment[th_TH]=การตั้งค่าเบ็ดเตล็ด Cinnamon ขั้นสูง
Comment[tr]=Muhtelif Cinnamon seçenekleri
Comment[tr_TR]=Muhtelif Cinnamon seçenekleri
Comment[uk]=Різні параметри Cinnamon
Comment[uk_UA]=Різні параметри Cinnamon
Comment[ur]=متفرق، سنامون کی ترجیحات
Comment[vi]=Tuỳ thích Cinnamon linh tinh
Comment[vi_VN]=Tuỳ thích Cinnamon linh tinh
Comment[zh_CN]=其他Cinnamon偏好设置
Comment[zh_HK]=Cinnamon 雜項喜好設定
Comment[zh_TW]=其他 Cinnamon 偏好設定
Keywords=logging;click;
Keywords[ar]=ولوج، نقر;
Keywords[bg]=вписване;клик;
Keywords[bg_BG]=вписване;клик;
Keywords[ca]=registrant;clic;
Keywords[ca@valencia]=identificar-se;clic;
Keywords[ca_ES]=registrant;clic;
Keywords[ca_ES@valencia]=identificar-se;clic;
Keywords[cs]=přihlašování;klepnutí;
Keywords[cs_CZ]=přihlašování;klepnutí;
Keywords[cy]=mewngofnodi;clic;
Keywords[da]=logning;klik;
Keywords[da_DK]=logning;klik;
Keywords[de]=Protokollierung;Klick;
Keywords[de_CH]=Protokollierung;Klick;
Keywords[de_DE]=Protokollierung;Klick;
Keywords[el]=καταγραφή;κλικ;
Keywords[es]=identificarse;click;
Keywords[es_AR]=identificarse;click;
Keywords[es_CL]=identificarse;click;
Keywords[es_CO]=identificarse;click;
Keywords[es_CR]=identificarse;click;
Keywords[es_DO]=identificarse;click;
Keywords[es_EC]=identificarse;click;
Keywords[es_ES]=identificarse;click;
Keywords[es_MX]=identificarse;click;
Keywords[es_NI]=identificarse;click;
Keywords[es_PA]=identificarse;click;
Keywords[es_PE]=identificarse;click;
Keywords[es_PR]=identificarse;click;
Keywords[es_SV]=identificarse;click;
Keywords[es_UY]=identificarse;click;
Keywords[es_VE]=identificarse;click;
Keywords[eu]=saioa-hastea;klik;
Keywords[fi]=loki;klikkaaminen;
Keywords[fi_FI]=loki;klikkaaminen;
Keywords[fil]=Nirerehistro;klik;
Keywords[fr]=journalisation;clic;
Keywords[fr_CA]=journalisation;clic;
Keywords[fr_FR]=journalisation;clic;
Keywords[gd]=logging;click;logadh;briog;
Keywords[gl]=acceso;premer;
Keywords[gl_ES]=acceso;premer;
Keywords[hr]=prijava;klik;
Keywords[hu]=naplózás;kattintás;
Keywords[hu_HU]=naplózás;kattintás;
Keywords[ia]=connexion;clic;
Keywords[id]=logging;klik;
Keywords[id_ID]=logging;klik;
Keywords[is]=annáll;smella;
Keywords[ko]=로그 기록하기;클릭;
Keywords[ko_KR]=로그 기록하기;클릭;
Keywords[lt]=registravimas;spustelėjimas;
Keywords[lt_LT]=registravimas;spustelėjimas;
Keywords[ms]=mengelog;klik;
Keywords[ms_MY]=mengelog;klik;
Keywords[nb]=logging;klikk;
Keywords[nb_NO]=logging;klikk;
Keywords[nds]=Protokollieren;Klicken;
Keywords[nl]=logboek bijhouden;klik;
Keywords[nl_NL]=logboek bijhouden;klik;
Keywords[pl]=logowanie;klik;
Keywords[pl_PL]=logowanie;klik;
Keywords[pt]=registo;carregue em;
Keywords[pt_BR]=resgistrando;clique;
Keywords[pt_PT]=registo;carregue em;
Keywords[ro]=jurnalizare;clic;
Keywords[ro_RO]=jurnalizare;clic;
Keywords[ru]=вход в систему;клик;
Keywords[sk]=prihlasovanie;kliknutie;
Keywords[sk_SK]=prihlasovanie;kliknutie;
Keywords[sl]=beleženje;klik;
Keywords[sl_SI]=beleženje;klik;
Keywords[sr]=пријава;клик;
Keywords[sr@Latn]=пријава;клик;
Keywords[sr@ije]=пријава;клик;
Keywords[sr@ijekavianlatin]=пријава;клик;
Keywords[sr@latin]=пријава;клик;
Keywords[sr_RS]=пријава;клик;
Keywords[sr_RS@latin]=пријава;клик;
Keywords[sv]=loggning;klick;
Keywords[th]=บันทึก;คลิก;
Keywords[th_TH]=บันทึก;คลิก;
Keywords[tr]=günlük kaydı;tıkla;
Keywords[tr_TR]=günlük kaydı;tıkla;
Keywords[uk]=Увійти;натисніть;
Keywords[uk_UA]=Увійти;натисніть;
Keywords[ur]=لاگنگ، کلک;
Keywords[vi]=ghi nhật trình;nhấp;
Keywords[vi_VN]=ghi nhật trình;nhấp;
Keywords[zh_CN]=日志记录,点击;
Keywords[zh_HK]=記錄;點選;
Keywords[zh_TW]=記錄;點擊;
Cinnamon-3.6.7/files/usr/share/applications/cinnamon-settings-info.desktop 0000664 0001750 0001750 00000047135 13215735076 025727 0 ustar fabio fabio [Desktop Entry]
Icon=cs-details
Exec=cinnamon-settings info
Type=Application
OnlyShowIn=X-Cinnamon;
Categories=Settings;
Name=System Info
Name[am]=የስርአት መረጃ
Name[ar]=معلومات النظام
Name[ast]=Información del sistema
Name[be]=Сістэмная інфармацыя
Name[be@latin]=Сістэмная інфармацыя
Name[be_BY]=Сістэмная інфармацыя
Name[bg]=Информация за системата
Name[bg_BG]=Информация за системата
Name[bs]=Informacije o sistemu
Name[ca]=Informació del sistema
Name[ca@valencia]=Informació del sistema
Name[ca_ES]=Informació del sistema
Name[ca_ES@valencia]=Informació del sistema
Name[cs]=Systémové informace
Name[cs_CZ]=Systémové informace
Name[cy]=Gwybodaeth System
Name[da]=Systemoplysninger
Name[da_DK]=Systemoplysninger
Name[de]=Systeminformation
Name[de_CH]=Systeminformation
Name[de_DE]=Systeminformation
Name[el]=Πληροφορίες συστήματος
Name[eo]=Sisteminformoj
Name[es]=Información del sistema
Name[es_AR]=Información del sistema
Name[es_CL]=Información del sistema
Name[es_CO]=Información del sistema
Name[es_CR]=Información del sistema
Name[es_DO]=Información del sistema
Name[es_EC]=Información del sistema
Name[es_ES]=Información del sistema
Name[es_MX]=Información del sistema
Name[es_NI]=Información del sistema
Name[es_PA]=Información del sistema
Name[es_PE]=Información del sistema
Name[es_PR]=Información del sistema
Name[es_SV]=Información del sistema
Name[es_UY]=Información del sistema
Name[es_VE]=Información del sistema
Name[et]=Süsteemi info
Name[et_EE]=Süsteemi info
Name[eu]=Sistemaren informazioa
Name[fi]=Järjestelmätiedot
Name[fi_FI]=Järjestelmätiedot
Name[fr]=Information système
Name[fr_CA]=Information système
Name[fr_FR]=Information système
Name[ga]=Faisnéis Córais
Name[gd]=Fiosrachadh mun t-siostam
Name[gl]=Información do sistema
Name[gl_ES]=Información do sistema
Name[hr]=Informacije sustava
Name[hu]=Rendszerinformációk
Name[hu_HU]=Rendszerinformációk
Name[ia]=Informationes de systema
Name[id]=Informasi Sistem
Name[id_ID]=Informasi Sistem
Name[is]=Kerfisupplýsingar
Name[it]=Informazioni di sistema
Name[it_CH]=Informazioni di sistema
Name[it_IT]=Informazioni di sistema
Name[ja]=システム情報
Name[ja_JP]=システム情報
Name[kab]=Talɣut ɣef unagraw
Name[ko]=시스템 정보
Name[ko_KR]=시스템 정보
Name[lo]=ຂໍ້ມູນລະບົບ
Name[lo_LA]=ຂໍ້ມູນລະບົບ
Name[lt]=Sistemos informacija
Name[lt_LT]=Sistemos informacija
Name[lv]=Sistēmas informācija
Name[lv_LV]=Sistēmas informācija
Name[ms]=Maklumat Sistem
Name[ms_MY]=Maklumat Sistem
Name[nb]=Systeminformasjon
Name[nb_NO]=Systeminformasjon
Name[nds]=Systeminformationen
Name[nl]=Systeeminformatie
Name[nl_NL]=Systeeminformatie
Name[oc]=Informacions sul sistèma
Name[om]=Odeeffanoo sirnaa
Name[pa]=ਸਿਸਟਮ ਜਾਣਕਾਰੀ
Name[pl]=Informacje o systemie
Name[pl_PL]=Informacje o systemie
Name[pt]=Informações do sistema
Name[pt_BR]=Informações do Sistema
Name[pt_PT]=Informações do sistema
Name[ro]=Informații sistem
Name[ro_RO]=Informații sistem
Name[ru]=О системе
Name[sk]=Systémové informácie
Name[sk_SK]=Systémové informácie
Name[sl]=Sistemski podatki
Name[sl_SI]=Sistemski podatki
Name[sq]=Informacione mbi sistemin
Name[sr]=Подаци о систему
Name[sr@Latn]=Подаци о систему
Name[sr@ije]=Подаци о систему
Name[sr@ijekavianlatin]=Подаци о систему
Name[sr@latin]=Подаци о систему
Name[sr_RS]=Подаци о систему
Name[sr_RS@latin]=Подаци о систему
Name[sv]=Systeminformation
Name[ta]=கணினி தகவல்
Name[ta_LK]=கணினி தகவல்
Name[tg]=Иттилооти система
Name[th]=ข้อมูลระบบ
Name[th_TH]=ข้อมูลระบบ
Name[tr]=Sistem Bilgisi
Name[tr_TR]=Sistem Bilgisi
Name[uk]=Інформація про систему
Name[uk_UA]=Інформація про систему
Name[ur]=سسٹم معلومات
Name[vi]=Thông tin Hệ thống
Name[vi_VN]=Thông tin Hệ thống
Name[zh_CN]=系统信息
Name[zh_HK]=系統資訊
Name[zh_TW]=系統資訊
Comment=Display system information
Comment[am]=የ ስርአቱን መረጃ ማሳያ
Comment[ar]=إظهار معلومات النظام
Comment[be]=Паказаць сістэмная інфармацыю
Comment[be@latin]=Паказаць сістэмная інфармацыю
Comment[be_BY]=Паказаць сістэмная інфармацыю
Comment[bg]=Показване на данни за системата
Comment[bg_BG]=Показване на данни за системата
Comment[bs]=Prikaži informacije o sistemu
Comment[ca]=Mostrar Informació del sistema
Comment[ca@valencia]=Mostra la informació del sistema
Comment[ca_ES]=Mostrar Informació del sistema
Comment[ca_ES@valencia]=Mostra la informació del sistema
Comment[cs]=Zobrazit systémové informace
Comment[cs_CZ]=Zobrazit systémové informace
Comment[cy]=Dangos gwybodaeth system
Comment[da]=Vis systeminformation
Comment[da_DK]=Vis systeminformation
Comment[de]=Systeminformationen anzeigen
Comment[de_CH]=Systeminformationen anzeigen
Comment[de_DE]=Systeminformationen anzeigen
Comment[el]=Προβολή πληροφοριών για τον υπολογιστή
Comment[es]=Mostrar información del sistema
Comment[es_AR]=Mostrar información del sistema
Comment[es_CL]=Mostrar información del sistema
Comment[es_CO]=Mostrar información del sistema
Comment[es_CR]=Mostrar información del sistema
Comment[es_DO]=Mostrar información del sistema
Comment[es_EC]=Mostrar información del sistema
Comment[es_ES]=Mostrar información del sistema
Comment[es_MX]=Mostrar información del sistema
Comment[es_NI]=Mostrar información del sistema
Comment[es_PA]=Mostrar información del sistema
Comment[es_PE]=Mostrar información del sistema
Comment[es_PR]=Mostrar información del sistema
Comment[es_SV]=Mostrar información del sistema
Comment[es_UY]=Mostrar información del sistema
Comment[es_VE]=Mostrar información del sistema
Comment[et]=Süsteemi teabe näitamine
Comment[et_EE]=Süsteemi teabe näitamine
Comment[eu]=Bistaratu sistemaren informazioa
Comment[fi]=Näytä järjestelmätiedot
Comment[fi_FI]=Näytä järjestelmätiedot
Comment[fr]=Afficher les informations du système
Comment[fr_CA]=Afficher les informations du système
Comment[fr_FR]=Afficher les informations du système
Comment[gd]=Seall fiosrachadh mun t-siostam
Comment[gl]=Amosar a información do sistema
Comment[gl_ES]=Amosar a información do sistema
Comment[hr]=Prikaži informacije sustava
Comment[hu]=Rendszerinformációk megjelenítése
Comment[hu_HU]=Rendszerinformációk megjelenítése
Comment[ia]=Monstrar le informationes de systema
Comment[id]=Tampilkan informasi sistem
Comment[id_ID]=Tampilkan informasi sistem
Comment[is]=Birta upplýsingar um kerfið
Comment[it]=Visualizza le informazioni di sistema
Comment[it_CH]=Visualizza le informazioni di sistema
Comment[it_IT]=Visualizza le informazioni di sistema
Comment[ja]=システム情報を表示
Comment[ja_JP]=システム情報を表示
Comment[kab]=Sken talɣut ɣef unagraw
Comment[ko]=시스템 정보 표시
Comment[ko_KR]=시스템 정보 표시
Comment[lo]=ສະແດງຂໍ້ມູນກ່ຽວກັບລະບົບ
Comment[lo_LA]=ສະແດງຂໍ້ມູນກ່ຽວກັບລະບົບ
Comment[lt]=Rodyti sistemos informaciją
Comment[lt_LT]=Rodyti sistemos informaciją
Comment[lv]=Attēlot sistēmas informāciju
Comment[lv_LV]=Attēlot sistēmas informāciju
Comment[ms]=Papar maklumat sistem
Comment[ms_MY]=Papar maklumat sistem
Comment[nb]=Vis systeminformasjon
Comment[nb_NO]=Vis systeminformasjon
Comment[nds]=Systeminformationen anzeigen
Comment[nl]=Systeeminformatie weergeven
Comment[nl_NL]=Systeeminformatie weergeven
Comment[oc]=Afichar las informacions del sistèma
Comment[pl]=Wyświetlaj informacje systemowe
Comment[pl_PL]=Wyświetlaj informacje systemowe
Comment[pt]=Mostrar a informação do sistema
Comment[pt_BR]=Exibir informações do sistema
Comment[pt_PT]=Mostrar a informação do sistema
Comment[ro]=Arată informații despre sistem
Comment[ro_RO]=Arată informații despre sistem
Comment[ru]=Отображать информацию о системе
Comment[sk]=Zobraziť systémové informácie
Comment[sk_SK]=Zobraziť systémové informácie
Comment[sl]=Prikaži podrobnosti sistema
Comment[sl_SI]=Prikaži podrobnosti sistema
Comment[sq]=Shfaq informacione mbi sistemin
Comment[sr]=Прикажи податке о систему
Comment[sr@Latn]=Прикажи податке о систему
Comment[sr@ije]=Прикажи податке о систему
Comment[sr@ijekavianlatin]=Прикажи податке о систему
Comment[sr@latin]=Прикажи податке о систему
Comment[sr_RS]=Прикажи податке о систему
Comment[sr_RS@latin]=Прикажи податке о систему
Comment[sv]=Visa systeminformation
Comment[tg]=Намоиш додани иттилооти система
Comment[th]=แสดงข้อมูลระบบ
Comment[th_TH]=แสดงข้อมูลระบบ
Comment[tr]=Sistem bilgisini göster
Comment[tr_TR]=Sistem bilgisini göster
Comment[uk]=Показати системну інформацію
Comment[uk_UA]=Показати системну інформацію
Comment[ur]=سسٹم معلومات دکھائیں
Comment[vi]=Hiển thị thông tin hệ thống
Comment[vi_VN]=Hiển thị thông tin hệ thống
Comment[zh_CN]=显示系统信息
Comment[zh_HK]=顯示系統資訊
Comment[zh_TW]=顯示系統資訊
Keywords=system;information;details;graphic;sound;kernel;version;
Keywords[am]=ስርአት : መረጃ : ዝርዝር : ንድፍ : ድምፅ : kernel;እትም;
Keywords[ar]=النظام، معلومات، تفاصيل، عرض، صوت، النواة، الإصدار;
Keywords[ast]=sistema;información;gráficu;soníu;kernel;versión;
Keywords[be]=сістэма;інфармацыя;падрабязнасці;графіка;гук;ядро;версія;
Keywords[be@latin]=сістэма;інфармацыя;падрабязнасці;графіка;гук;ядро;версія;
Keywords[be_BY]=сістэма;інфармацыя;падрабязнасці;графіка;гук;ядро;версія;
Keywords[bg]=система;информация;детайли;графика;звук;ядро;версия;
Keywords[bg_BG]=система;информация;детайли;графика;звук;ядро;версия;
Keywords[bs]=sistem;informacije;detalji;grafika;zvuk;kernel;verzija;
Keywords[ca]=sistema;informació;detalls;gràfics;so;nucli;versió;
Keywords[ca@valencia]=sistema;informació;detalls;gràfics;so;nucli;versió;
Keywords[ca_ES]=sistema;informació;detalls;gràfics;so;nucli;versió;
Keywords[ca_ES@valencia]=sistema;informació;detalls;gràfics;so;nucli;versió;
Keywords[cs]=system;informace;detaily;grafika;hudba;jádro;verze;
Keywords[cs_CZ]=system;informace;detaily;grafika;hudba;jádro;verze;
Keywords[cy]=system;gwybodaeth;manylion;graffigau;sain;cnewyllyn;fersiwn;
Keywords[da]=system;information;detaljer;grafik;lyd;kerne;version;
Keywords[da_DK]=system;information;detaljer;grafik;lyd;kerne;version;
Keywords[de]=System;Informationen;Details;Grafik;Sound-Karte;Kernel;Version;
Keywords[de_CH]=System;Informationen;Details;Grafik;Sound-Karte;Kernel;Version;
Keywords[de_DE]=System;Informationen;Details;Grafik;Sound-Karte;Kernel;Version;
Keywords[el]=σύστημα;πληροφορίες;λεπτομέρειες;γραφικά;ήχος;πυρήνας;έκδοση;
Keywords[es]=sistema;información;detalles;gráficos;sonido;nucleo;versión;
Keywords[es_AR]=sistema;información;detalles;gráficos;sonido;nucleo;versión;
Keywords[es_CL]=sistema;información;detalles;gráficos;sonido;nucleo;versión;
Keywords[es_CO]=sistema;información;detalles;gráficos;sonido;nucleo;versión;
Keywords[es_CR]=sistema;información;detalles;gráficos;sonido;nucleo;versión;
Keywords[es_DO]=sistema;información;detalles;gráficos;sonido;nucleo;versión;
Keywords[es_EC]=sistema;información;detalles;gráficos;sonido;nucleo;versión;
Keywords[es_ES]=sistema;información;detalles;gráficos;sonido;nucleo;versión;
Keywords[es_MX]=sistema;información;detalles;gráficos;sonido;nucleo;versión;
Keywords[es_NI]=sistema;información;detalles;gráficos;sonido;nucleo;versión;
Keywords[es_PA]=sistema;información;detalles;gráficos;sonido;nucleo;versión;
Keywords[es_PE]=sistema;información;detalles;gráficos;sonido;nucleo;versión;
Keywords[es_PR]=sistema;información;detalles;gráficos;sonido;nucleo;versión;
Keywords[es_SV]=sistema;información;detalles;gráficos;sonido;nucleo;versión;
Keywords[es_UY]=sistema;información;detalles;gráficos;sonido;nucleo;versión;
Keywords[es_VE]=sistema;información;detalles;gráficos;sonido;nucleo;versión;
Keywords[et]=süsteem;info;detailid;graafika;heli;kernel;versioon;
Keywords[et_EE]=süsteem;info;detailid;graafika;heli;kernel;versioon;
Keywords[eu]=sistema;informazioa;xehetasunak;grafikoak;soinua;kernela;bertsioa;
Keywords[fi]=järjestelmä;tietoja;yksityiskohdat;grafiikka;ääni;ydin;versio;
Keywords[fi_FI]=järjestelmä;tietoja;yksityiskohdat;grafiikka;ääni;ydin;versio;
Keywords[fr]=système;information;détails;graphique;son;noyau;version;
Keywords[fr_CA]=système;information;détails;graphique;son;noyau;version;
Keywords[fr_FR]=système;information;détails;graphique;son;noyau;version;
Keywords[ga]=córas;eolas;sonraí;grafach;fuaim;eithne;leagan;
Keywords[gd]=siostam;fiosrachadh;mion-fhiosrachadh;grafaigeach;fuaim;eitean;tionndadh;system;information;details;graphic;sound;kernel;version;
Keywords[gl]=sistema;información;detalles;gráficos;son;núcleo;versión;
Keywords[gl_ES]=sistema;información;detalles;gráficos;son;núcleo;versión;
Keywords[hr]=sustav;informacija;pojedinosti;grafika;zvuk;kernel;inačica;
Keywords[hu]=rendszer;információk;részletek;grafika;hang;kernel;verzió;
Keywords[hu_HU]=rendszer;információk;részletek;grafika;hang;kernel;verzió;
Keywords[ia]=systema;informationes;detalios;graphic;sono;kernel;version;
Keywords[id]=sistem;informasi;detailm grafis;suara;kernel;versi;
Keywords[id_ID]=sistem;informasi;detailm grafis;suara;kernel;versi;
Keywords[is]=kerfi;upplýsingar;nánar;myndrænt;hljóð;kjarni;útgáfa;
Keywords[it]=sistema;informazione;dettagli;grafica;suono;kernel;versione;
Keywords[it_CH]=sistema;informazione;dettagli;grafica;suono;kernel;versione;
Keywords[it_IT]=sistema;informazione;dettagli;grafica;suono;kernel;versione;
Keywords[ja]=システム、情報、詳細、グラフィック、音、カーネル、バージョン;
Keywords[ja_JP]=システム、情報、詳細、グラフィック、音、カーネル、バージョン;
Keywords[ko]=시스템;정보;세부사항;그래픽;사운드;커널;버전;
Keywords[ko_KR]=시스템;정보;세부사항;그래픽;사운드;커널;버전;
Keywords[lo]=ລະບົບ;ຂໍ້ມູນ;ລາຍລະອຽດ;ຮູບພາບ;ສຽງ;ເຄີເນວ;ລູ້ນ;
Keywords[lo_LA]=ລະບົບ;ຂໍ້ມູນ;ລາຍລະອຽດ;ຮູບພາບ;ສຽງ;ເຄີເນວ;ລູ້ນ;
Keywords[lt]=sistema;informacija;grafika;garsas;branduolys;versija;
Keywords[lt_LT]=sistema;informacija;grafika;garsas;branduolys;versija;
Keywords[lv]=sistēma;informācija;detaļas;grafika;skaņa;kodols;versija;
Keywords[lv_LV]=sistēma;informācija;detaļas;grafika;skaņa;kodols;versija;
Keywords[ms]=sistem;maklumat;terperinci;grafik;bunyi;kernel;versi;
Keywords[ms_MY]=sistem;maklumat;terperinci;grafik;bunyi;kernel;versi;
Keywords[nb]=system;informasjon;detaljer;grafikk;lyd;kjerne;versjon;
Keywords[nb_NO]=system;informasjon;detaljer;grafikk;lyd;kjerne;versjon;
Keywords[nds]=System;Information;Details;Grafik;Audio;Kernel;Version;
Keywords[nl]=systeem;informatie;details;grafisch;geluid;kernel;versie;
Keywords[nl_NL]=systeem;informatie;details;grafisch;geluid;kernel;versie;
Keywords[om]=sirna;odeeffannoo;bal'inaalee;saxaatoo;sagalee;kerneelii;bahiinsa;
Keywords[pl]=system;informacja;szczegóły;grafika;dźwięk;jądro;wersja;
Keywords[pl_PL]=system;informacja;szczegóły;grafika;dźwięk;jądro;wersja;
Keywords[pt]=sistema;informações;detalhes;objetos;som;kernel;versão;
Keywords[pt_BR]=sistema;informação;detalhes;gráficos;som;kernel;versão;
Keywords[pt_PT]=sistema;informações;detalhes;objetos;som;kernel;versão;
Keywords[ro]=sistem;informații;detalii;grafică;sunet;kernel;versiune;
Keywords[ro_RO]=sistem;informații;detalii;grafică;sunet;kernel;versiune;
Keywords[ru]=система;информация;подробности;графика;звук;ядро;версия;
Keywords[sk]=systém;informácie;podrobnosti;grafika;hudba;jadro;verzia;
Keywords[sk_SK]=systém;informácie;podrobnosti;grafika;hudba;jadro;verzia;
Keywords[sl]=sistem;podatki;podrobnosti;grafika;zvok;jedro;različica;
Keywords[sl_SI]=sistem;podatki;podrobnosti;grafika;zvok;jedro;različica;
Keywords[sq]=sistemi;informacione;detaje;grafika;zëri;kernel;versioni;
Keywords[sr]=систем;обавештење;појединости;графика;звук;језгро;издање;подаци;
Keywords[sr@Latn]=систем;обавештење;појединости;графика;звук;језгро;издање;подаци;
Keywords[sr@ije]=систем;обавештење;појединости;графика;звук;језгро;издање;подаци;
Keywords[sr@ijekavianlatin]=систем;обавештење;појединости;графика;звук;језгро;издање;подаци;
Keywords[sr@latin]=систем;обавештење;појединости;графика;звук;језгро;издање;подаци;
Keywords[sr_RS]=систем;обавештење;појединости;графика;звук;језгро;издање;подаци;
Keywords[sr_RS@latin]=систем;обавештење;појединости;графика;звук;језгро;издање;подаци;
Keywords[sv]=system;information;detaljer;grafik;ljud;kärna;version;
Keywords[ta]=கணினி;தகவல்;விவரங்கள்;வரைகலை;ஒலி;கர்னல்;பதிப்பு;
Keywords[ta_LK]=கணினி;தகவல்;விவரங்கள்;வரைகலை;ஒலி;கர்னல்;பதிப்பு;
Keywords[tg]=система;иттилоот;тафсилот;графика;садо;ҳаста;версия;
Keywords[th]=ระบบ;ข้อมูล;รายละเอียด;กราฟิก;เสียง;เคอร์เนล;รุ่น;
Keywords[th_TH]=ระบบ;ข้อมูล;รายละเอียด;กราฟิก;เสียง;เคอร์เนล;รุ่น;
Keywords[tr]=sistem;bilgi;ayrıntılar;grafik;ses;çekirdek;sürüm;
Keywords[tr_TR]=sistem;bilgi;ayrıntılar;grafik;ses;çekirdek;sürüm;
Keywords[uk]=система;інформація;подробиці;графіка;звук;ядро;версія;
Keywords[uk_UA]=система;інформація;подробиці;графіка;звук;ядро;версія;
Keywords[ur]=سسٹم، معلومات، تفصیل، گرافکس، آواز، کرنل، ورژن، تفصیلات;
Keywords[vi]=hệ thống;thông tin;chi tiết;đồ hoạ;âm thanh;nhân;phiên bản;
Keywords[vi_VN]=hệ thống;thông tin;chi tiết;đồ hoạ;âm thanh;nhân;phiên bản;
Keywords[zh_CN]=system;information;details;graphic;sound;kernel;version;系统;信息;详情;细节;图形;声音;内核;版本;
Keywords[zh_HK]=system;information;details;graphic;sound;kernel;version;系統;資訊;詳細;圖像;聲音;核心;版本;
Keywords[zh_TW]=系統;資訊;詳細資訊;繪圖;音效;核心;版本;
Cinnamon-3.6.7/files/usr/share/applications/cinnamon-settings-windows.desktop 0000664 0001750 0001750 00000045176 13215735076 026471 0 ustar fabio fabio [Desktop Entry]
Icon=cs-windows
Exec=cinnamon-settings windows
Type=Application
OnlyShowIn=X-Cinnamon;
Categories=Settings;
Name=Windows
Name[am]=መስኮቶች
Name[ar]=النوافذ
Name[ast]=Ventanes
Name[be]=Вокны
Name[be@latin]=Вокны
Name[be_BY]=Вокны
Name[bg]=Прозорци
Name[bg_BG]=Прозорци
Name[bs]=Prozori
Name[ca]=Finestres
Name[ca@valencia]=Finestres
Name[ca_ES]=Finestres
Name[ca_ES@valencia]=Finestres
Name[cs]=Okna
Name[cs_CZ]=Okna
Name[cy]=Ffenestri
Name[da]=Vinduer
Name[da_DK]=Vinduer
Name[de]=Fenster
Name[de_CH]=Fenster
Name[de_DE]=Fenster
Name[el]=Παράθυρα
Name[eo]=Fenestroj
Name[es]=Ventanas
Name[es_AR]=Ventanas
Name[es_CL]=Ventanas
Name[es_CO]=Ventanas
Name[es_CR]=Ventanas
Name[es_DO]=Ventanas
Name[es_EC]=Ventanas
Name[es_ES]=Ventanas
Name[es_MX]=Ventanas
Name[es_NI]=Ventanas
Name[es_PA]=Ventanas
Name[es_PE]=Ventanas
Name[es_PR]=Ventanas
Name[es_SV]=Ventanas
Name[es_UY]=Ventanas
Name[es_VE]=Ventanas
Name[eu]=Leihoak
Name[fi]=Ikkunat
Name[fi_FI]=Ikkunat
Name[fil]=Mga dungawan
Name[fr]=Fenêtres
Name[fr_CA]=Fenêtres
Name[fr_FR]=Fenêtres
Name[ga]=Fuinneoga
Name[gd]=Uinneagan
Name[gl]=Xanelas
Name[gl_ES]=Xanelas
Name[hr]=Prozori
Name[hu]=Ablakok
Name[hu_HU]=Ablakok
Name[ia]=Fenestras
Name[id]=Jendela-jendela
Name[id_ID]=Jendela-jendela
Name[is]=Gluggar
Name[it]=Finestre
Name[it_CH]=Finestre
Name[it_IT]=Finestre
Name[ja]=ウィンドウ
Name[ja_JP]=ウィンドウ
Name[kab]=Isfuyla
Name[ko]=창
Name[ko_KR]=창
Name[lo]=ໜ້າຕ່າງ
Name[lo_LA]=ໜ້າຕ່າງ
Name[lt]=Langai
Name[lt_LT]=Langai
Name[lv]=Logi
Name[lv_LV]=Logi
Name[ms]=Tetingkap
Name[ms_MY]=Tetingkap
Name[nb]=Vinduer
Name[nb_NO]=Vinduer
Name[nds]=Fenster
Name[nl]=Vensters
Name[nl_NL]=Vensters
Name[oc]=Fenèstras
Name[om]=Foddaalee
Name[pa]=ਵਿੰਡੋਜ਼
Name[pl]=Okna
Name[pl_PL]=Okna
Name[pt]=Janelas
Name[pt_BR]=Janelas
Name[pt_PT]=Janelas
Name[ro]=Ferestre
Name[ro_RO]=Ferestre
Name[ru]=Окна
Name[sk]=Okná
Name[sk_SK]=Okná
Name[sl]=Okna
Name[sl_SI]=Okna
Name[sq]=Dritaret
Name[sr]=Прозори
Name[sr@Latn]=Прозори
Name[sr@ije]=Прозори
Name[sr@ijekavianlatin]=Прозори
Name[sr@latin]=Прозори
Name[sr_RS]=Прозори
Name[sr_RS@latin]=Прозори
Name[sv]=Fönster
Name[ta]=சாளரங்கள்
Name[ta_LK]=சாளரங்கள்
Name[th]=หน้าต่าง
Name[th_TH]=หน้าต่าง
Name[tr]=Pencereler
Name[tr_TR]=Pencereler
Name[uk]=Вікна
Name[uk_UA]=Вікна
Name[ur]=ونڈوز
Name[vi]=Cửa sổ
Name[vi_VN]=Cửa sổ
Name[zh_CN]=窗口
Name[zh_HK]=視窗
Name[zh_TW]=視窗
Comment=Manage window preferences
Comment[am]=የመስኮት ምርጫዎች አስተዳዳሪ
Comment[ar]=إدارة تفضيلات النافذة
Comment[be]=Кіраванне наладамі вокнаў
Comment[be@latin]=Кіраванне наладамі вокнаў
Comment[be_BY]=Кіраванне наладамі вокнаў
Comment[bg]=Управление настройките на прозорците
Comment[bg_BG]=Управление настройките на прозорците
Comment[bs]=Upravljaj postavkama prozora
Comment[ca]=Gestiones les preferències de les finestres
Comment[ca@valencia]=Administra les preferències de finestres
Comment[ca_ES]=Gestiones les preferències de les finestres
Comment[ca_ES@valencia]=Administra les preferències de finestres
Comment[cs]=Změnit nastavení chování oken
Comment[cs_CZ]=Změnit nastavení chování oken
Comment[cy]=Rheoli dewisiadau ffenestr
Comment[da]=Administrér vinduesindstillinger
Comment[da_DK]=Administrér vinduesindstillinger
Comment[de]=Fenstereinstellungen verwalten
Comment[de_CH]=Fenstereinstellungen verwalten
Comment[de_DE]=Fenstereinstellungen verwalten
Comment[el]=Ρυθμίστε τις επιλογές παραθύρων
Comment[es]=Administrar las preferencias de ventanas
Comment[es_AR]=Administrar las preferencias de ventanas
Comment[es_CL]=Administrar las preferencias de ventanas
Comment[es_CO]=Administrar las preferencias de ventanas
Comment[es_CR]=Administrar las preferencias de ventanas
Comment[es_DO]=Administrar las preferencias de ventanas
Comment[es_EC]=Administrar las preferencias de ventanas
Comment[es_ES]=Administrar las preferencias de ventanas
Comment[es_MX]=Administrar las preferencias de ventanas
Comment[es_NI]=Administrar las preferencias de ventanas
Comment[es_PA]=Administrar las preferencias de ventanas
Comment[es_PE]=Administrar las preferencias de ventanas
Comment[es_PR]=Administrar las preferencias de ventanas
Comment[es_SV]=Administrar las preferencias de ventanas
Comment[es_UY]=Administrar las preferencias de ventanas
Comment[es_VE]=Administrar las preferencias de ventanas
Comment[eu]=Kudeatu leiho-hobespenak
Comment[fi]=Muokkaa ikkunoiden asetuksia
Comment[fi_FI]=Muokkaa ikkunoiden asetuksia
Comment[fr]=Gérer les préférences de la fenêtre
Comment[fr_CA]=Gérer les préférences des fenêtres
Comment[fr_FR]=Gérer les préférences de la fenêtre
Comment[gd]=Stiùirich roghainnean nan uinneagan
Comment[gl]=Administra as preferencias da xanela
Comment[gl_ES]=Administra as preferencias da xanela
Comment[hr]=Upravljajte osobitostima prozora
Comment[hu]=Ablak beállítások kezelése
Comment[hu_HU]=Ablak beállítások kezelése
Comment[ia]=Gerer le preferentias de fenestra
Comment[id]=Atur preferensi jendela
Comment[id_ID]=Atur preferensi jendela
Comment[is]=Sýsla með kjörstillingar glugga
Comment[it]=Gestisci preferenze finesta
Comment[it_CH]=Gestisci preferenze finesta
Comment[it_IT]=Gestisci preferenze finesta
Comment[ja]=ウインドウ管理の設定
Comment[ja_JP]=ウインドウ管理の設定
Comment[ko]=창 설정을 관리합니다
Comment[ko_KR]=창 설정을 관리합니다
Comment[lt]=Tvarkyti lango nuostatas
Comment[lt_LT]=Tvarkyti lango nuostatas
Comment[lv]=Pārvaldīt logu preferences
Comment[lv_LV]=Pārvaldīt logu preferences
Comment[ms]=Mengurus pilihan tetingkap
Comment[ms_MY]=Mengurus pilihan tetingkap
Comment[nb]=Håndter vindusinnstillinger
Comment[nb_NO]=Håndter vindusinnstillinger
Comment[nds]=Fenster-Einstellungen bearbeiten
Comment[nl]=Venstervoorkeuren beheren
Comment[nl_NL]=Venstervoorkeuren beheren
Comment[oc]=Gerir las preferéncias de las fenèstras
Comment[pl]=Zarządzaj preferencjami okien
Comment[pl_PL]=Zarządzaj preferencjami okien
Comment[pt]=Gerir preferências de janelas
Comment[pt_BR]=Gerenciar preferências de janelas
Comment[pt_PT]=Gerir preferências de janelas
Comment[ro]=Gestionează preferințele ferestrelor
Comment[ro_RO]=Gestionează preferințele ferestrelor
Comment[ru]=Управление настройками окон
Comment[sk]=Spravovať predvoľby okien
Comment[sk_SK]=Spravovať predvoľby okien
Comment[sl]=Upravljajte z možnostmi oken
Comment[sl_SI]=Upravljajte z možnostmi oken
Comment[sq]=Menaxhoni parapëlqimet e dritares
Comment[sr]=Управљање поставкама прозора
Comment[sr@Latn]=Управљање поставкама прозора
Comment[sr@ije]=Управљање поставкама прозора
Comment[sr@ijekavianlatin]=Управљање поставкама прозора
Comment[sr@latin]=Управљање поставкама прозора
Comment[sr_RS]=Управљање поставкама прозора
Comment[sr_RS@latin]=Управљање поставкама прозора
Comment[sv]=Hantera fönsterinställningar
Comment[tg]=Идоракунии хусусиятҳои равзана
Comment[th]=จัดการการตั้งค่าหน้าต่างขั้นสูง
Comment[th_TH]=จัดการการตั้งค่าหน้าต่างขั้นสูง
Comment[tr]=Pencere tercihlerini yönet
Comment[tr_TR]=Pencere tercihlerini yönet
Comment[uk]=Керувати параметрами вікон
Comment[uk_UA]=Керувати параметрами вікон
Comment[ur]=ونڈو کی ترجیحات
Comment[vi]=Quản lý tuỳ thích cửa sổ
Comment[vi_VN]=Quản lý tuỳ thích cửa sổ
Comment[zh_CN]=管理窗口样式
Comment[zh_HK]=管理視窗喜好設定
Comment[zh_TW]=管理視窗偏好設定
Keywords=windows;titlebar;edge;switcher;window list;attention;focus;
Keywords[ar]=نوافذ، شريط العنوان، حافة، مبّدل، قائمة النوافذ، انتباه، تركيز;
Keywords[be]=вокны;загаловак;край;пераключацель;спіс вокнаў;увага;фокус;
Keywords[be@latin]=вокны;загаловак;край;пераключацель;спіс вокнаў;увага;фокус;
Keywords[be_BY]=вокны;загаловак;край;пераключацель;спіс вокнаў;увага;фокус;
Keywords[bg]=прозорец;заглавна лента;ръб;превключване;списък с прозорци;внимание;фокус;
Keywords[bg_BG]=прозорец;заглавна лента;ръб;превключване;списък с прозорци;внимание;фокус;
Keywords[bs]=prozori;traka naslova;ivica;mjenjač;lista prozora;pažnja;fokus;
Keywords[ca]=finestres;barra de títol;vora;interruptor;llista de finestres;atenció;enfocament;
Keywords[ca@valencia]=finestres;barra de títol;bord;interruptor;llista de finestres;atenció;enfocament;
Keywords[ca_ES]=finestres;barra de títol;vora;interruptor;llista de finestres;atenció;enfocament;
Keywords[ca_ES@valencia]=finestres;barra de títol;bord;interruptor;llista de finestres;atenció;enfocament;
Keywords[cs]=okna;nadpisy;strany;přepínáč;seznam oken;pozornost;zaměřit;
Keywords[cs_CZ]=okna;nadpisy;strany;přepínáč;seznam oken;pozornost;zaměřit;
Keywords[cy]=ffenestri;bar teitl;ymyl;newidydd;rhestr ffenestr;sylw;canolbwyntio;
Keywords[da]=vinduer;titellinie;kant;skifter;vinduesliste;opmærksomhed;fokus;
Keywords[da_DK]=vinduer;titellinie;kant;skifter;vinduesliste;opmærksomhed;fokus;
Keywords[de]=Fenster;Titelleiste;Umrandung;Umschalter;Fensterliste;Aufmerksamkeit;Fokus;
Keywords[de_CH]=Fenster;Titelleiste;Umrandung;Umschalter;Fensterliste;Aufmerksamkeit;Fokus;
Keywords[de_DE]=Fenster;Titelleiste;Umrandung;Umschalter;Fensterliste;Aufmerksamkeit;Fokus;
Keywords[el]=παράθυρα;γραμμή τίτλου;άκρη;διακόπτης;λίστα παραθύρων;προσοχή;εστίαση;
Keywords[es]=ventanas;barra de título;borde;interruptor;lista de ventanas;atención;enfoque;
Keywords[es_AR]=ventanas;barra de título;borde;interruptor;lista de ventanas;atención;enfoque;
Keywords[es_CL]=ventanas;barra de título;borde;interruptor;lista de ventanas;atención;enfoque;
Keywords[es_CO]=ventanas;barra de título;borde;interruptor;lista de ventanas;atención;enfoque;
Keywords[es_CR]=ventanas;barra de título;borde;interruptor;lista de ventanas;atención;enfoque;
Keywords[es_DO]=ventanas;barra de título;borde;interruptor;lista de ventanas;atención;enfoque;
Keywords[es_EC]=ventanas;barra de título;borde;interruptor;lista de ventanas;atención;enfoque;
Keywords[es_ES]=ventanas;barra de título;borde;interruptor;lista de ventanas;atención;enfoque;
Keywords[es_MX]=ventanas;barra de título;borde;interruptor;lista de ventanas;atención;enfoque;
Keywords[es_NI]=ventanas;barra de título;borde;interruptor;lista de ventanas;atención;enfoque;
Keywords[es_PA]=ventanas;barra de título;borde;interruptor;lista de ventanas;atención;enfoque;
Keywords[es_PE]=ventanas;barra de título;borde;interruptor;lista de ventanas;atención;enfoque;
Keywords[es_PR]=ventanas;barra de título;borde;interruptor;lista de ventanas;atención;enfoque;
Keywords[es_SV]=ventanas;barra de título;borde;interruptor;lista de ventanas;atención;enfoque;
Keywords[es_UY]=ventanas;barra de título;borde;interruptor;lista de ventanas;atención;enfoque;
Keywords[es_VE]=ventanas;barra de título;borde;interruptor;lista de ventanas;atención;enfoque;
Keywords[eu]=leihoa;titulu-barra;ertza;aldatzailea;leiho-zerrenda;arreta;fokua;
Keywords[fi]=ikkunat;otsikkopalkki;reuna;vaihtaja;ikkunalista;huomio;keskitys;
Keywords[fi_FI]=ikkunat;otsikkopalkki;reuna;vaihtaja;ikkunalista;huomio;keskitys;
Keywords[fr]=fenêtre;barre de titre;bord;commutateur;liste de fenêtre;attention;focus;
Keywords[fr_CA]=fenêtres;barre de titre;bord;commutateur;liste de fenêtres;attention;focus;
Keywords[fr_FR]=fenêtre;barre de titre;bord;commutateur;liste de fenêtre;attention;focus;
Keywords[ga]=fuinneoga;barra teidil;imeall;lascóir;liosta fuinneoige;aird;fócas;
Keywords[gd]=uinneagan. bàr-tiotail;oir;suidsear;liosta nan uinneagan;aire;fòcas;windows;titlebar;edge;switcher;window list;attention;focus;
Keywords[gl]=xanelas;barra de título;bordo;cambiador;lista de xanelas;atención;foco;
Keywords[gl_ES]=xanelas;barra de título;bordo;cambiador;lista de xanelas;atención;foco;
Keywords[hr]=prozori;naslovna traka;rub;prijelaz;popis prozora;upozorenje;fokus;
Keywords[hu]=ablakok;címsor;él;váltó;ablaklista;figyelem;fókusz;
Keywords[hu_HU]=ablakok;címsor;él;váltó;ablaklista;figyelem;fókusz;
Keywords[ia]=fenestras;barra de titulo;bordo;commutator;lista del fenestras;attention;foco;
Keywords[id]=jendela;bar judul;ujung;pemindah;daftar jendela;perhatian;fokus;
Keywords[id_ID]=jendela;bar judul;ujung;pemindah;daftar jendela;perhatian;fokus;
Keywords[is]=gluggar;titilslá;jaðar;skiptir;gluggalisti;kvaðning;athygli;fókus;virkni;
Keywords[it]=finestre;barra del titolo;margine;switcher;elenco finestre;attenzione;focus;
Keywords[it_CH]=finestre;barra del titolo;margine;switcher;elenco finestre;attenzione;focus;
Keywords[it_IT]=finestre;barra del titolo;margine;switcher;elenco finestre;attenzione;focus;
Keywords[ja]=ウィンドウ、タイトルバー、エッジ、スイッチャーウィンドウリスト、注意、フォーカス;
Keywords[ja_JP]=ウィンドウ、タイトルバー、エッジ、スイッチャーウィンドウリスト、注意、フォーカス;
Keywords[ko]=창;제목;엣지;스위처;창 목록;집중;포커스;
Keywords[ko_KR]=창;제목;엣지;스위처;창 목록;집중;포커스;
Keywords[lv]=logi;virsraksta josla;mala;pārslēdzējs;logu saraksts;uzmanība;fokuss;
Keywords[lv_LV]=logi;virsraksta josla;mala;pārslēdzējs;logu saraksts;uzmanība;fokuss;
Keywords[ms]=tetingkap;palang tajuk;pinggir;penukar;senarai tetingkap;perhatian;fokus;
Keywords[ms_MY]=tetingkap;palang tajuk;pinggir;penukar;senarai tetingkap;perhatian;fokus;
Keywords[nb]=vindu;tittellinje;kant;bryter;vindusliste;oppmerksomhet;fokus;
Keywords[nb_NO]=vindu;tittellinje;kant;bryter;vindusliste;oppmerksomhet;fokus;
Keywords[nl]=vensters;titelbalk;rand;wisselaar;vensterlijst;aandacht;scherpstelling;
Keywords[nl_NL]=vensters;titelbalk;rand;wisselaar;vensterlijst;aandacht;scherpstelling;
Keywords[om]=foddaawwan;kabala mataduree;qarree;jijjirtuu;tarree foddaa;hubadhu;xiyyeeffadhu;
Keywords[pl]=okna;pasek tytułowy;krawędź;przełącznik;lista okien;uwaga;skupienie;
Keywords[pl_PL]=okna;pasek tytułowy;krawędź;przełącznik;lista okien;uwaga;skupienie;
Keywords[pt]=janelas;barra de título;limite;comutador;lista de janelas;foco;
Keywords[pt_BR]=janelas;barra de título;margem;alternador;lista de janelas;atenção;foco;
Keywords[pt_PT]=janelas;barra de título;limite;comutador;lista de janelas;foco;
Keywords[ro]=ferestre;bară de titlu;margine;comutator;listă de ferestre;atenție;focus;
Keywords[ro_RO]=ferestre;bară de titlu;margine;comutator;listă de ferestre;atenție;focus;
Keywords[ru]=окна;заголовок;край;переключатель;список окон;внимание;фокус;
Keywords[sk]=okná;nadpisy;strany;prepínáč;zoznam okien;pozornosť;zamerať;
Keywords[sk_SK]=okná;nadpisy;strany;prepínáč;zoznam okien;pozornosť;zamerať;
Keywords[sl]=okna;nazivna vrstica;rob;preklopnik;seznam oken;pozornost;žarišče;
Keywords[sl_SI]=okna;nazivna vrstica;rob;preklopnik;seznam oken;pozornost;žarišče;
Keywords[sr]=прозори;насловна трака;ивица;измењивач;списак прозора;пажња;жижа;
Keywords[sr@Latn]=прозори;насловна трака;ивица;измењивач;списак прозора;пажња;жижа;
Keywords[sr@ije]=прозори;насловна трака;ивица;измењивач;списак прозора;пажња;жижа;
Keywords[sr@ijekavianlatin]=прозори;насловна трака;ивица;измењивач;списак прозора;пажња;жижа;
Keywords[sr@latin]=прозори;насловна трака;ивица;измењивач;списак прозора;пажња;жижа;
Keywords[sr_RS]=прозори;насловна трака;ивица;измењивач;списак прозора;пажња;жижа;
Keywords[sr_RS@latin]=прозори;насловна трака;ивица;измењивач;списак прозора;пажња;жижа;
Keywords[sv]=fönster;titelrad;kant;växlare;fönster lista;uppmärksamhet;fokus;
Keywords[ta]=சாளரங்கள்;தலைப்புபட்டி;முனை;மாற்றி;சாளர பட்டியல்;கவனம்;குவிப்பு;
Keywords[ta_LK]=சாளரங்கள்;தலைப்புபட்டி;முனை;மாற்றி;சாளர பட்டியல்;கவனம்;குவிப்பு;
Keywords[tg]=равзанаҳо;навори унвон;канор;ивазкунанда;рӯйхати равзана;диққат;марказ;
Keywords[th]=หน้าต่าง;แถบชื่อเรื่อง;ขอบเขต;ตัวสลับ;รายการหน้าต่าง;คำเตือน;โฟกัส;
Keywords[th_TH]=หน้าต่าง;แถบชื่อเรื่อง;ขอบเขต;ตัวสลับ;รายการหน้าต่าง;คำเตือน;โฟกัส;
Keywords[tr]=pencereler;başlık çubuğu;kenar;değiştirici;pencere listesi;uyarı;odaklanma;
Keywords[tr_TR]=pencereler;başlık çubuğu;kenar;değiştirici;pencere listesi;uyarı;odaklanma;
Keywords[uk]=вікна;заголовок;край;перемикач;перелік вікон;увага;фокус;
Keywords[uk_UA]=вікна;заголовок;край;перемикач;перелік вікон;увага;фокус;
Keywords[ur]=ونڈو، ٹائٹل بار، دریجہ، کنارہ، سویچر، ونڈو فہرست، توجہ، فوکس;
Keywords[vi]=cửa sổ;thanh tiêu đề;cạnh;bộ chuyển;danh sách cửa sổ;chú ý;tiêu điểm;
Keywords[vi_VN]=cửa sổ;thanh tiêu đề;cạnh;bộ chuyển;danh sách cửa sổ;chú ý;tiêu điểm;
Keywords[zh_CN]=windows;titlebar;edge;switcher;window list;attention;focus;窗口;标题栏;边缘;切换器;窗口列表;注意;焦点;
Keywords[zh_HK]=視窗;標題列;邊緣;切換器;視窗清單;注意;焦點;
Keywords[zh_TW]=視窗;標題列;邊緣;切換器;視窗列表;注意;焦點;
Cinnamon-3.6.7/files/usr/share/applications/cinnamon-settings-users.desktop 0000664 0001750 0001750 00000037514 13215735076 026135 0 ustar fabio fabio [Desktop Entry]
Exec=cinnamon-settings-users
Icon=system-users
Terminal=false
Type=Application
Categories=System;Settings;
StartupNotify=false
OnlyShowIn=X-Cinnamon;
Keywords=Preferences;Settings;
Name=Users and Groups
Name[af]=Gebruikers en Groepe
Name[am]=ተጠቃሚዎች እና ቡድኖች
Name[ar]=المستخدمين والمجموعات
Name[ar_MA]=المستخدمين والمجموعات
Name[ast]=Usuarios y grupos
Name[az]=İstifadəçilər və Qruplar
Name[be]=Карыстальнікі і групы
Name[be@latin]=Карыстальнікі і групы
Name[be_BY]=Карыстальнікі і групы
Name[bg]=Потребители и Групи
Name[bg_BG]=Потребители и Групи
Name[bn]=ব্যবহারকারীগণ এবং দলসমূহ
Name[bn_IN]=ব্যবহারকারীগণ এবং দলসমূহ
Name[bs]=Korisnici i grupe
Name[ca]=Usuaris i grups
Name[ca@valencia]=Usuaris i grups
Name[ca_ES]=Usuaris i grups
Name[ca_ES@valencia]=Usuaris i grups
Name[cs]=Uživatelé a skupiny
Name[cs_CZ]=Uživatelé a skupiny
Name[cy]=Defnyddwyr a Grwpiau
Name[da]=Brugere og grupper
Name[da_DK]=Brugere og grupper
Name[de]=Benutzer und Gruppen
Name[de@hebrew]=Benutzer und Gruppen
Name[de_CH]=Benutzer und Gruppen
Name[de_DE]=Benutzer und Gruppen
Name[el]=Χρήστες και Ομάδες
Name[eo]=Uzantoj kaj grupoj
Name[es]=Usuarios y grupos
Name[es_419]=Usuarios y grupos
Name[es_AR]=Usuarios y Grupos
Name[es_CL]=Usuarios y grupos
Name[es_CO]=Usuarios y grupos
Name[es_CR]=Usuarios y grupos
Name[es_DO]=Usuarios y grupos
Name[es_EC]=Usuarios y grupos
Name[es_ES]=Usuarios y grupos
Name[es_MX]=Usuarios y grupos
Name[es_NI]=Usuarios y grupos
Name[es_PA]=Usuarios y grupos
Name[es_PE]=Usuarios y grupos
Name[es_PR]=Usuarios y grupos
Name[es_SV]=Usuarios y grupos
Name[es_US]=Usuarios y grupos
Name[es_UY]=Usuarios y grupos
Name[es_VE]=Usuarios y grupos
Name[et]=Kasutajad ja grupid
Name[eu]=Erabiltzaileak eta taldeak
Name[fa]=کاربران و گروهها
Name[fa_AF]=کاربران و گروهها
Name[fa_IR]=کاربران و گروهها
Name[fi]=Käyttäjät ja ryhmät
Name[fi_FI]=Käyttäjät ja ryhmät
Name[fil]=Ang mga gumagamit at mga Grupo
Name[fr]=Utilisateurs et Groupes
Name[fr_CA]=Utilisateurs et groupes
Name[fr_FR]=Utilisateurs et Groupes
Name[fy]=Brûkers en Ploechen
Name[gd]=Cleachdaichean agus buidhnean
Name[gl]=Usuarios e grupos
Name[gl_ES]=Usuarios e grupos
Name[he]=משתמשים וקבוצות
Name[he_IL]=משתמשים וקבוצות
Name[hi]=यूजर एवं ग्रुप
Name[hr]=Korisnici i grupe
Name[hu]=Felhasználók és csoportok
Name[hu_HU]=Felhasználók és csoportok
Name[hy]=Օգտվողներ և խմբեր
Name[ia]=Usatores e gruppos
Name[id]=Pengguna dan Grup
Name[id_ID]=Pengguna dan Grup
Name[is]=Notendur og hópar
Name[it]=Utenti e gruppi
Name[ka]=მომხმარებლები და ჯგუფები
Name[kab]=Iseqdacen d igrawen
Name[kk]=Пайдаланушылар мен Топтар
Name[km]=អ្នកប្រើ និងក្រុម
Name[km_KH]=អ្នកប្រើ និងក្រុម
Name[ko]=사용자와 그룹
Name[ko_KR]=사용자와 그룹
Name[ku]=Bikarhêner û Kom
Name[ku_IQ]=Bikarhêner û Kom
Name[la]=Homines annuntiaturi et circli
Name[li]=Gebroekers en groepe
Name[lo]=ຜູ້ໃຊ້ແລະກຸ່ມ
Name[lo_LA]=ຜູ້ໃຊ້ແລະກຸ່ມ
Name[lt]=Naudotojai ir grupės
Name[lt_LT]=Naudotojai ir grupės
Name[lv]=Lietotāji un Grupas
Name[lv_LV]=Lietotāji un Grupas
Name[mr]=वापरकर्ते व गट
Name[ms]=Pengguna dan Kumpulan
Name[ms_MY]=Pengguna dan Kumpulan
Name[nap]=Utenti e Grupp
Name[nb]=Brukere og grupper
Name[nb_NO]=Brukere og grupper
Name[nds]=Benutzer und Gruppen
Name[ne]=प्रयोगकर्ता र समूहहरु
Name[nl]=Gebruikers en groepen
Name[nl_NL]=Gebruikers en groepen
Name[oc]=Utilizaires e gropes
Name[om]=Fayyadamtootaa fi gareewwan
Name[pa]=ਯੂਜ਼ਰ ਅਤੇ ਗਰੁੱਪ
Name[pl]=Użytkownicy i grupy
Name[pl_PL]=Użytkownicy i grupy
Name[pt]=Utilizadores e grupos
Name[pt_BR]=Usuários e Grupos
Name[pt_PT]=Utilizadores e grupos
Name[ro]=Utilizatori și grupuri
Name[ro_RO]=Utilizatori și grupuri
Name[ru]=Пользователи и группы
Name[sc]=Impitadores e Grupos
Name[si]=භාවිතා කරන්නන් සහ සමුහ
Name[sk]=Používatelia a skupiny
Name[sk_SK]=Používatelia a skupiny
Name[sl]=Uporabniki in skupine
Name[sl_SI]=Uporabniki in skupine
Name[sq]=Përdoruesit dhe Grupet
Name[sr]=Корисници и групе
Name[sr@Latn]=Корисници и групе
Name[sr@ije]=Корисници и групе
Name[sr@ijekavianlatin]=Корисници и групе
Name[sr@latin]=Корисници и групе
Name[sr_RS]=Корисници и групе
Name[sr_RS@latin]=Корисници и групе
Name[sv]=Användare och grupper
Name[ta]=பயனர்கள் மற்றும் குழுக்கள்
Name[ta_LK]=பயனர்கள் மற்றும் குழுக்கள்
Name[tg]=Корбарон ва гурӯҳҳо
Name[th]=ผู้ใช้และกลุ่ม
Name[th_TH]=ผู้ใช้และกลุ่ม
Name[tl]=Mga Gumagamit at Pangkat
Name[tr]=Kullanıcılar ve Gruplar
Name[tr_TR]=Kullanıcılar ve Gruplar
Name[ug]=ئىشلەتكۈچىلەر ۋە گۇرۇپپىلار
Name[uk]=Користувачі і групи
Name[uk_UA]=Користувачі і групи
Name[ur]=صارفین اور گروہ
Name[ur_PK]=صارفین اور گروہ
Name[uz]=Фойдаланувчилар ва гуруҳлар
Name[uz@Latn]=Фойдаланувчилар ва гуруҳлар
Name[uz@cyrillic]=Фойдаланувчилар ва гуруҳлар
Name[vi]=Người dùng và Nhóm
Name[vi_VN]=Người dùng và Nhóm
Name[zh_CN]=用户和用户组
Name[zh_HK]=使用者與羣組
Name[zh_TW]=使用者與群組
Comment=Add or remove users and groups
Comment[af]=Voeg of verwyder gebruikers en groepe
Comment[am]=ተጠቃሚዎች እና ቡድኖች መጨመሪያ ወይንም ማስወገጃ
Comment[ar]=اضافة أو ازالة المستخدمين والمجموعات
Comment[ar_MA]=اضافة أو ازالة المستخدمين والمجموعات
Comment[ast]=Amiesta o desanicia usuarios y grupos
Comment[az]=İstifadəçi və qrupları əlavə et və ya sil
Comment[be]=Дадаць або выдаліць карыстальнікаў і групы
Comment[be@latin]=Дадаць або выдаліць карыстальнікаў і групы
Comment[be_BY]=Дадаць або выдаліць карыстальнікаў і групы
Comment[bg]=Добавяне или премахване на потребители и групи
Comment[bg_BG]=Добавяне или премахване на потребители и групи
Comment[bn]=যোগ করুন অথবা মুছে ফেলুন ব্যবহারকারী এবং দল
Comment[bn_IN]=যোগ করুন অথবা মুছে ফেলুন ব্যবহারকারী এবং দল
Comment[bs]=Dodajte ili uklonite korisnike i grupe
Comment[ca]=Afegiu o suprimiu usuaris i grups
Comment[ca@valencia]=Afegir o eliminar usuaris i grups
Comment[ca_ES]=Afegiu o suprimiu usuaris i grups
Comment[ca_ES@valencia]=Afegir o eliminar usuaris i grups
Comment[cs]=Přidat nebo odstranit uživatele a skupiny
Comment[cs_CZ]=Přidat nebo odstranit uživatele a skupiny
Comment[cy]=Ychwanegu neu dynnu defnyddwyr a grwpiau
Comment[da]=Tilføj eller fjern brugere og grupper
Comment[da_DK]=Tilføj eller fjern brugere og grupper
Comment[de]=Benutzer und Gruppen hinzufügen oder entfernen
Comment[de@hebrew]=Benutzer und Gruppen hinzufügen oder entfernen
Comment[de_CH]=Benutzer und Gruppen hinzufügen oder entfernen
Comment[de_DE]=Benutzer und Gruppen hinzufügen oder entfernen
Comment[el]=Προσθήκη ή αφαίρεση χρηστών και ομάδων
Comment[eo]=Aldoni aŭ forigi uzantojn kaj grupojn
Comment[es]=Añadir o eliminar usuarios y grupos
Comment[es_419]=Añadir o eliminar usuarios y grupos
Comment[es_AR]=Agregar o quitar usuarios y grupos
Comment[es_CL]=Añadir o eliminar usuarios y grupos
Comment[es_CO]=Añadir o eliminar usuarios y grupos
Comment[es_CR]=Añadir o eliminar usuarios y grupos
Comment[es_DO]=Añadir o eliminar usuarios y grupos
Comment[es_EC]=Añadir o eliminar usuarios y grupos
Comment[es_ES]=Añadir o eliminar usuarios y grupos
Comment[es_MX]=Añadir o eliminar usuarios y grupos
Comment[es_NI]=Añadir o eliminar usuarios y grupos
Comment[es_PA]=Añadir o eliminar usuarios y grupos
Comment[es_PE]=Añadir o eliminar usuarios y grupos
Comment[es_PR]=Añadir o eliminar usuarios y grupos
Comment[es_SV]=Añadir o eliminar usuarios y grupos
Comment[es_US]=Añadir o eliminar usuarios y grupos
Comment[es_UY]=Añadir o eliminar usuarios y grupos
Comment[es_VE]=Añadir o eliminar usuarios y grupos
Comment[et]=Lisa või eemalda kasutajaid ja gruppe
Comment[eu]=Gehitu edo ezabatu erabiltzaileak eta taldeak
Comment[fa]=اضافه یا حذف کردن کاربران و گروهها
Comment[fa_AF]=اضافه یا حذف کردن کاربران و گروهها
Comment[fa_IR]=اضافه یا حذف کردن کاربران و گروهها
Comment[fi]=Lisää tai poista käyttäjiä ja ryhmiä
Comment[fi_FI]=Lisää tai poista käyttäjiä ja ryhmiä
Comment[fil]=Magdagdag o mag-alis ng mga user at mga pangkat
Comment[fr]=Ajouter ou supprimer des utilisateurs et des groupes
Comment[fr_CA]=Ajouter ou supprimer des utilisateurs et des groupes
Comment[fr_FR]=Ajouter ou supprimer des utilisateurs et des groupes
Comment[fy]=Brûkers en ploechen taheakje of ferwiderje
Comment[gd]=Cuir ris no thoir air falbh cleachdaichean is buidhnean
Comment[gl]=Engada ou retire usuarios e grupos
Comment[gl_ES]=Engada ou retire usuarios e grupos
Comment[he]=הוספה או הסרה של משתמשים וקבוצות
Comment[he_IL]=הוספה או הסרה של משתמשים וקבוצות
Comment[hi]=यूजर एवं ग्रुप जोड़े अथवा हटायें
Comment[hr]=Dodaj ili ukloni korisnike i grupe
Comment[hu]=Felhasználók és csoportok hozzáadása vagy eltávolítása
Comment[hu_HU]=Felhasználók és csoportok hozzáadása vagy eltávolítása
Comment[hy]=Ավելացնել կամ ջնջել օգտվողներ և խմբեր
Comment[ia]=Adder o remover usatores e gruppos
Comment[id]=Tambah atau hapus pemakai dan kelompoknya
Comment[id_ID]=Tambah atau hapus pemakai dan kelompoknya
Comment[is]=Bæta við eða fjarlægja notendur og hópa
Comment[it]=Aggiunge o rimuove utenti e gruppi
Comment[ja]=ユーザ及びグループの追加や削除
Comment[ja_JP]=ユーザ及びグループの追加や削除
Comment[ka]=მომხმარებლების და ჯგუფების დამატება ან ამოშლა
Comment[kab]=Rnu neɣ kkes iseqdacen akked igrawen
Comment[ko]=사용자와 그룹 추가 또는 제거
Comment[ko_KR]=사용자와 그룹 추가 또는 제거
Comment[ku]=Bikarhêner û koman lê zêde bike an jî jê bibe
Comment[ku_IQ]=Bikarhêner û koman lê zêde bike an jî jê bibe
Comment[la]=Addere aut delere homines annuntiaturi et circli
Comment[li]=Gebroekers en groepe toevoege of verwijdere
Comment[lo]=ຕື່ມຫຼືລຶບຜູ້ໃຊ້ແລະກູ່ມ
Comment[lo_LA]=ຕື່ມຫຼືລຶບຜູ້ໃຊ້ແລະກູ່ມ
Comment[lt]=Pridėti ar šalinti naudotojus bei grupes
Comment[lt_LT]=Pridėti ar šalinti naudotojus bei grupes
Comment[lv]=Pievienot vai dzēst lietotājus un grupas
Comment[lv_LV]=Pievienot vai dzēst lietotājus un grupas
Comment[mr]=वापरकर्ते व गट जोडा किंवा काढून टाका
Comment[ms]=Tambah atau buang pengguna dan kumpulan
Comment[ms_MY]=Tambah atau buang pengguna dan kumpulan
Comment[nap]=Miett ati utenti e grupp
Comment[nb]=Legg til eller fjern brukere og grupper
Comment[nb_NO]=Legg til eller fjern brukere og grupper
Comment[nds]=Benutzer oder Gruppen hinzufügen bzw. löschen
Comment[ne]=प्रयोगकर्ता र समुहहरुलाई जोड्नुस् वा हटाउनुहोस्
Comment[nl]=Gebruikers en groepen toevoegen of verwijderen
Comment[nl_NL]=Gebruikers en groepen toevoegen of verwijderen
Comment[oc]=Apondre o suprimir d'utilizaires o de gropes
Comment[om]=fayyadamtootaa fi gareewwan dabaluu fi haquu
Comment[pa]=ਯੂਜ਼ਰ ਤੇ ਗਰੁੱਪ ਸ਼ਾਮਲ ਕਰੋ ਜਾਂ ਹਟਾਓ
Comment[pl]=Dodawanie lub usuwanie użytkowników i grup
Comment[pl_PL]=Dodawanie lub usuwanie użytkowników i grup
Comment[pt]=Adicionar ou remover utilizadores e grupos
Comment[pt_BR]=Adicionar ou remover usuários e grupos
Comment[pt_PT]=Adicionar ou remover utilizadores e grupos
Comment[ro]=Adăugă sau elimină utilizatori și grupuri
Comment[ro_RO]=Adăugă sau elimină utilizatori și grupuri
Comment[ru]=Добавить или удалить пользователей и группы
Comment[sc]=Agiunghe o Boga impitadores e grupos
Comment[si]=පරිශීලකයන් සහ සමුහ එක් කිරීම හෝ ඉවත් කිරීම
Comment[sk]=Pridanie alebo odstránenie používateľov a skupín
Comment[sk_SK]=Pridanie alebo odstránenie používateľov a skupín
Comment[sl]=Dodajte ali odstranite uporabnike in skupine
Comment[sl_SI]=Dodajte ali odstranite uporabnike in skupine
Comment[sq]=Shto ose hiq përdorues dhe grupe
Comment[sr]=Додајте или уклоните кориснике и групе
Comment[sr@Latn]=Додајте или уклоните кориснике и групе
Comment[sr@ije]=Додајте или уклоните кориснике и групе
Comment[sr@ijekavianlatin]=Додајте или уклоните кориснике и групе
Comment[sr@latin]=Додајте или уклоните кориснике и групе
Comment[sr_RS]=Додајте или уклоните кориснике и групе
Comment[sr_RS@latin]=Додајте или уклоните кориснике и групе
Comment[sv]=Lägg till eller ta bort användare och grupper
Comment[ta]=பயனர் மற்றும் குழுக்களை சேர் அல்லது நீக்கு
Comment[ta_LK]=பயனர் மற்றும் குழுக்களை சேர் அல்லது நீக்கு
Comment[tg]=Илова ё тоза кардани корбарон ва гурӯҳҳо
Comment[th]=เพิ่มหรือลบผู้ใช้และกลุ่ม
Comment[th_TH]=เพิ่มหรือลบผู้ใช้และกลุ่ม
Comment[tl]=Magdagdag o magbawas ng mga user at pangkat
Comment[tr]=Kullanıcıları ve grupları ekle ya da sil
Comment[tr_TR]=Kullanıcıları ve grupları ekle ya da sil
Comment[ug]=ئىشلەتكۈچى ۋە گۇرۇپپا قوش ياكى ئۆچۈر
Comment[uk]=Додавання або вилучення записів користувачів та груп
Comment[uk_UA]=Додавання або вилучення записів користувачів та груп
Comment[ur]=صارفین اور گروہ شامل کریں یا مٹائیں
Comment[ur_PK]=صارفین اور گروہ شامل کریں یا مٹائیں
Comment[uz]=Фойдаланувчилар ва гуруҳларни қўшиш ёки олиб ташлаш
Comment[uz@Latn]=Фойдаланувчилар ва гуруҳларни қўшиш ёки олиб ташлаш
Comment[uz@cyrillic]=Фойдаланувчилар ва гуруҳларни қўшиш ёки олиб ташлаш
Comment[vi]=Thêm hay loại bỏ người dùng và nhóm
Comment[vi_VN]=Thêm hay loại bỏ người dùng và nhóm
Comment[zh_CN]=添加或删除用户和组
Comment[zh_HK]=新增或移除使用者與羣組
Comment[zh_TW]=加入或移除使用者與群組
Cinnamon-3.6.7/files/usr/share/applications/cinnamon-settings-desklets.desktop 0000664 0001750 0001750 00000037774 13215735076 026622 0 ustar fabio fabio [Desktop Entry]
Icon=cs-desklets
Exec=cinnamon-settings desklets
Type=Application
OnlyShowIn=X-Cinnamon;
Categories=Settings;
Name=Desklets
Name[am]=ዴስክሌቶች
Name[ar]=معلّقات
Name[be]=Дэсклеты
Name[be@latin]=Дэсклеты
Name[be_BY]=Дэсклеты
Name[bg]=Десклети
Name[bg_BG]=Десклети
Name[bs]=Deskleti
Name[cs]=Desklety
Name[cs_CZ]=Desklety
Name[cy]=Desgledi
Name[da]=Skrivebordsprogrammer
Name[da_DK]=Skrivebordsprogrammer
Name[el]=Εφαρμογές Οθόνης
Name[eo]=Deskletoj
Name[eu]=Desklet-ak
Name[fa]=دسکلت
Name[fa_AF]=دسکلت
Name[fa_IR]=دسکلت
Name[fi]=Työpöytäsovelmat
Name[fi_FI]=Työpöytäsovelmat
Name[ga]=Deiscíní
Name[gl]=Trebellos
Name[gl_ES]=Trebellos
Name[hr]=Deskleti
Name[hu]=Asztalkalmazások
Name[hu_HU]=Asztalkalmazások
Name[id]=Desklet
Name[id_ID]=Desklet
Name[is]=Skjáborðsgræjur
Name[it]=Desklet
Name[it_CH]=Desklet
Name[it_IT]=Desklet
Name[ja]=デスクレット
Name[ja_JP]=デスクレット
Name[kab]=Tideskeltin
Name[ko]=데스크릿
Name[ko_KR]=데스크릿
Name[lo]=ເດສເລັດ
Name[lo_LA]=ເດສເລັດ
Name[lt]=Ekrano programėlės
Name[lt_LT]=Ekrano programėlės
Name[lv]=Sīkrīki
Name[lv_LV]=Sīkrīki
Name[ms]=Desklet
Name[ms_MY]=Desklet
Name[nb]=Skrivebordsprogrammer
Name[nb_NO]=Skrivebordsprogrammer
Name[nl]=Minitoepassingen
Name[nl_NL]=Minitoepassingen
Name[pa]=ਡੈਸਕਲੇਟਸ
Name[pl]=Desklety
Name[pl_PL]=Desklety
Name[pt]=Mini-aplicações
Name[pt_PT]=Mini-aplicações
Name[ro]=Deskleturi
Name[ro_RO]=Deskleturi
Name[ru]=Десклеты
Name[sk]=Desklety
Name[sk_SK]=Desklety
Name[sl]=Apleti namizja
Name[sl_SI]=Apleti namizja
Name[sq]=Desklet-ët
Name[sr]=Справице
Name[sr@Latn]=Справице
Name[sr@ije]=Справице
Name[sr@ijekavianlatin]=Справице
Name[sr@latin]=Справице
Name[sr_RS]=Справице
Name[sr_RS@latin]=Справице
Name[sv]=Skrivbordsprogram
Name[ta]=திரை நிரல்கள்
Name[ta_LK]=திரை நிரல்கள்
Name[tg]=Барномаҳои мизи корӣ
Name[th]=เดสก์เล็ต
Name[th_TH]=เดสก์เล็ต
Name[tr]=Masaüstü Uygulamacıkları
Name[tr_TR]=Masaüstü Uygulamacıkları
Name[uk]=Десклети
Name[uk_UA]=Десклети
Name[ur]=ڈیسکلیٹ
Name[uz]=Десклетлар
Name[uz@cyrillic]=Десклетлар
Name[vi]=Tiểu trình màn hình
Name[vi_VN]=Tiểu trình màn hình
Name[zh_CN]=桌面小工具
Name[zh_HK]=桌面小工具
Name[zh_TW]=桌面小程式
Comment=Manage your Cinnamon desklets
Comment[am]=የሲናሞን ዴስክሌትስ አስተዳዳሪ
Comment[ar]=إدارة معلقات سطح المكتب
Comment[ast]=Alministra los tos desklets de Cinnamon
Comment[be]=Кiраванне дэсклетамi Cinnamon
Comment[be@latin]=Кiраванне дэсклетамi Cinnamon
Comment[be_BY]=Кiраванне дэсклетамi Cinnamon
Comment[bg]=Управлявайте Вашите Cinnamon десклети
Comment[bg_BG]=Управлявайте Вашите Cinnamon десклети
Comment[bs]=Upravljajte vašim Cinnamon deskletima
Comment[ca]=Gestioneu les vostres miniaplicacions d'escriptori al Cinnamon
Comment[ca@valencia]=Administreu els desklets de Cinnamon
Comment[ca_ES]=Gestioneu les vostres miniaplicacions d'escriptori al Cinnamon
Comment[ca_ES@valencia]=Administreu els desklets de Cinnamon
Comment[cs]=Správa Cinnamon deskletů
Comment[cs_CZ]=Správa Cinnamon deskletů
Comment[cy]=Rheolwch eich desglenni Cinnamon chi
Comment[da]=Administrér dine Cinnamon-skrivebordsprogrammer
Comment[da_DK]=Administrér dine Cinnamon-skrivebordsprogrammer
Comment[de]=Cinnamon-Desklets verwalten
Comment[de_CH]=Cinnamon-Desklets verwalten
Comment[de_DE]=Cinnamon-Desklets verwalten
Comment[el]=Διαχείριση των εφαρμογών οθόνης του Cinnamon
Comment[es]=Administrar desklets de Cinnamon
Comment[es_AR]=Administrar desklets de Cinnamon
Comment[es_CL]=Administrar desklets de Cinnamon
Comment[es_CO]=Administrar desklets de Cinnamon
Comment[es_CR]=Administrar desklets de Cinnamon
Comment[es_DO]=Administrar desklets de Cinnamon
Comment[es_EC]=Administrar desklets de Cinnamon
Comment[es_ES]=Administrar desklets de Cinnamon
Comment[es_MX]=Administrar desklets de Cinnamon
Comment[es_NI]=Administrar desklets de Cinnamon
Comment[es_PA]=Administrar desklets de Cinnamon
Comment[es_PE]=Administrar desklets de Cinnamon
Comment[es_PR]=Administrar desklets de Cinnamon
Comment[es_SV]=Administrar desklets de Cinnamon
Comment[es_UY]=Administrar desklets de Cinnamon
Comment[es_VE]=Administrar desklets de Cinnamon
Comment[eu]=Kudeatu zure Cinnamon desklet-ak
Comment[fa]=دسکلتهای سینمونتان را مدیریت کنید
Comment[fa_AF]=دسکلتهای سینمونتان را مدیریت کنید
Comment[fa_IR]=دسکلتهای سینمونتان را مدیریت کنید
Comment[fi]=Hallitse Cinnamon-sovelmia
Comment[fi_FI]=Hallitse Cinnamon-sovelmia
Comment[fr]=Gérez vos desklets Cinnamon
Comment[fr_CA]=Gérer vos desklets Cinnamon
Comment[fr_FR]=Gérez vos desklets Cinnamon
Comment[gd]=Stiùirich na desklets Cinnamon agad
Comment[gl]=Administra os trebellos do Cinnamon
Comment[gl_ES]=Administra os trebellos do Cinnamon
Comment[hr]=Upravljajte Cinnamon deskletima
Comment[hu]=Cinnamon asztalkalmazások kezelése
Comment[hu_HU]=Cinnamon asztalkalmazások kezelése
Comment[ia]=Administrar tu desklets de Cinnamon
Comment[id]=Atur desklet Cinnamon
Comment[id_ID]=Atur desklet Cinnamon
Comment[is]=Sýsla með stillingar fyrir Cinnamon skjáborðsgræjur (desklets)
Comment[it]=Gestione dei desklets di Cinnamon
Comment[it_CH]=Gestione dei desklets di Cinnamon
Comment[it_IT]=Gestione dei desklets di Cinnamon
Comment[ja]=Cinnamon デスクレット管理
Comment[ja_JP]=Cinnamon デスクレット管理
Comment[kab]=Sefrek tideskeltin-ik (m) n Cinnamon
Comment[ko]=시나몬 데스크릿을 관리합니다
Comment[ko_KR]=시나몬 데스크릿을 관리합니다
Comment[lo]=ຈັດການເດສເລັດ Cinnamon ຂອງເຈົ້າ
Comment[lo_LA]=ຈັດການເດສເລັດ Cinnamon ຂອງເຈົ້າ
Comment[lt]=Tvarkyti Cinnamon ekrano programėles
Comment[lt_LT]=Tvarkyti Cinnamon ekrano programėles
Comment[lv]=Pārvaldīt savus Cinnamon sīkrīkus
Comment[lv_LV]=Pārvaldīt savus Cinnamon sīkrīkus
Comment[ms]=Mengurus desklet Cinnamon anda
Comment[ms_MY]=Mengurus desklet Cinnamon anda
Comment[nb]=Behandle Cinnamon-skrivebordsprogrammene dine
Comment[nb_NO]=Behandle Cinnamon-skrivebordsprogrammene dine
Comment[nds]=Cinnamon Desklets bearbeiten
Comment[nl]=Beheer uw minitoepassingen voor Cinnamon
Comment[nl_NL]=Beheer uw minitoepassingen voor Cinnamon
Comment[oc]=Gerir vòstres desklets Cinnamon
Comment[pl]=Zarządaj swoimi deskletami Cinnamona
Comment[pl_PL]=Zarządaj swoimi deskletami Cinnamona
Comment[pt]=Gerir as suas mini-aplicações do Cinnamon
Comment[pt_BR]=Gerenciar os desklets do Cinnamon
Comment[pt_PT]=Gerir as suas mini-aplicações do Cinnamon
Comment[ro]=Gestionează deskleturile Cinnamon
Comment[ro_RO]=Gestionează deskleturile Cinnamon
Comment[ru]=Управление десклетами Cinnamon
Comment[sk]=Spravovať desklety Cinnamon
Comment[sk_SK]=Spravovať desklety Cinnamon
Comment[sl]=Upravljajte z apleti namizja Cinnamona
Comment[sl_SI]=Upravljajte z apleti namizja Cinnamona
Comment[sq]=Menaxhoni desklet-ët tuaj në Cinnamon
Comment[sr]=Управљање справицама Циметове површи
Comment[sr@Latn]=Управљање справицама Циметове површи
Comment[sr@ije]=Управљање справицама Циметове површи
Comment[sr@ijekavianlatin]=Управљање справицама Циметове површи
Comment[sr@latin]=Управљање справицама Циметове површи
Comment[sr_RS]=Управљање справицама Циметове површи
Comment[sr_RS@latin]=Управљање справицама Циметове површи
Comment[sv]=Hantera Cinnamons skrivbordsprogram
Comment[tg]=Идоракунии барномаҳои мизи кории Cinnamon
Comment[th]=จัดการเดสก์เล็ต Cinnamon ของคุณ
Comment[th_TH]=จัดการเดสก์เล็ต Cinnamon ของคุณ
Comment[tr]=Cinnamon masaüstü uygulamacıklarını yönet
Comment[tr_TR]=Cinnamon masaüstü uygulamacıklarını yönet
Comment[uk]=Керування десклетами Cinnamon
Comment[uk_UA]=Керування десклетами Cinnamon
Comment[ur]=اپنے سنامون کے ڈیسکلیٹ کا انتظام کریں
Comment[uz]=Синнамон десклетларни бошқариш
Comment[uz@cyrillic]=Синнамон десклетларни бошқариш
Comment[vi]=Quản lý tiểu dụng màn hình Cinnamon
Comment[vi_VN]=Quản lý tiểu dụng màn hình Cinnamon
Comment[zh_CN]=管理桌面小工具
Comment[zh_HK]=管理你的 Cinnamon 桌面小工具
Comment[zh_TW]=管理您的 Cinnamon 桌面小程式
Keywords=desklet;desktop;slideshow;
Keywords[am]=ዴስክሌት : ዴስክቶፕ : ተንሸራታች : ማሳያ;
Keywords[ar]=معلقات، سطح مكتب، عرش شرائح;
Keywords[be]=дэсклет;працоўны стол;слайд-шоў;
Keywords[be@latin]=дэсклет;працоўны стол;слайд-шоў;
Keywords[be_BY]=дэсклет;працоўны стол;слайд-шоў;
Keywords[bg]=десклет;работен плот;слайдшоу;
Keywords[bg_BG]=десклет;работен плот;слайдшоу;
Keywords[bs]=desklet;desktop;prezentacijski slajdovi;
Keywords[ca]=desklet;escriptori;mostra de diapositives;
Keywords[ca@valencia]=desklet;escriptori;presentació de diapositives;
Keywords[ca_ES]=desklet;escriptori;mostra de diapositives;
Keywords[ca_ES@valencia]=desklet;escriptori;presentació de diapositives;
Keywords[cs]=desklet;plocha;prezentace;
Keywords[cs_CZ]=desklet;plocha;prezentace;
Keywords[cy]=desgled;bwrdd gwaith;sioesleidiau;
Keywords[da]=skrivebordsprogram;skrivebord;slideshow;
Keywords[da_DK]=skrivebordsprogram;skrivebord;slideshow;
Keywords[de]=Desklet;Arbeitsfläche;Desktop;Schreibtisch;Diaschau;Diashow;
Keywords[de_CH]=Desklet;Arbeitsfläche;Desktop;Schreibtisch;Diaschau;Diashow;
Keywords[de_DE]=Desklet;Arbeitsfläche;Desktop;Schreibtisch;Diaschau;Diashow;
Keywords[el]=εφαρμογές οθόνης;επιφάνεια εργασίας;προβολή διαφανειών;
Keywords[es]=desklet;escritorio;presentación de diapositivas;
Keywords[es_AR]=desklet;escritorio;presentación de diapositivas;
Keywords[es_CL]=desklet;escritorio;presentación de diapositivas;
Keywords[es_CO]=desklet;escritorio;presentación de diapositivas;
Keywords[es_CR]=desklet;escritorio;presentación de diapositivas;
Keywords[es_DO]=desklet;escritorio;presentación de diapositivas;
Keywords[es_EC]=desklet;escritorio;presentación de diapositivas;
Keywords[es_ES]=desklet;escritorio;presentación de diapositivas;
Keywords[es_MX]=desklet;escritorio;presentación de diapositivas;
Keywords[es_NI]=desklet;escritorio;presentación de diapositivas;
Keywords[es_PA]=desklet;escritorio;presentación de diapositivas;
Keywords[es_PE]=desklet;escritorio;presentación de diapositivas;
Keywords[es_PR]=desklet;escritorio;presentación de diapositivas;
Keywords[es_SV]=desklet;escritorio;presentación de diapositivas;
Keywords[es_UY]=desklet;escritorio;presentación de diapositivas;
Keywords[es_VE]=desklet;escritorio;presentación de diapositivas;
Keywords[eu]=desklet;mahaigaina;diaporama;
Keywords[fa]=دسکلت، دسکتاپ، اسلایدشو;
Keywords[fa_AF]=دسکلت، دسکتاپ، اسلایدشو;
Keywords[fa_IR]=دسکلت، دسکتاپ، اسلایدشو;
Keywords[fi]=sovelma;työpöytä;diaesitys;
Keywords[fi_FI]=sovelma;työpöytä;diaesitys;
Keywords[fr]=desklet;bureau;diaporama;
Keywords[fr_CA]=desklet;bureau;diaporama;
Keywords[fr_FR]=desklet;bureau;diaporama;
Keywords[ga]=deiscín;deasc;taispeántas sleamhnán;
Keywords[gd]=desklet;desktop;slideshow;taisbeanadh-shleamhnagan;
Keywords[gl]=trebello;escritorio;diaporama;
Keywords[gl_ES]=trebello;escritorio;diaporama;
Keywords[hr]=desklet;radna površina;promjena pozadine;
Keywords[hu]=asztalkalmazás;asztal;diavetítés;
Keywords[hu_HU]=asztalkalmazás;asztal;diavetítés;
Keywords[ia]=desklet;scriptorio;presentation de photos;
Keywords[is]=skjáborðsgræja;skjáborð;skyggnusýning;
Keywords[ja]=デスクレット、デスクトップ、スライドショー;
Keywords[ja_JP]=デスクレット、デスクトップ、スライドショー;
Keywords[kab]=tadisklet;tanarit;tigri;
Keywords[ko]=데스크릿;바탕화면;슬라이드쇼;
Keywords[ko_KR]=데스크릿;바탕화면;슬라이드쇼;
Keywords[lo]=ເດສເລັດ;ພື້ນທີ່ໜ້າຈໍ;ສະໄລໂຊວ໌;
Keywords[lo_LA]=ເດສເລັດ;ພື້ນທີ່ໜ້າຈໍ;ສະໄລໂຊວ໌;
Keywords[lt]=programėlė;darbalaukis;skaidrių rodymas;
Keywords[lt_LT]=programėlė;darbalaukis;skaidrių rodymas;
Keywords[lv]=sīkrīks;darbvirsma;slīdrāde;
Keywords[lv_LV]=sīkrīks;darbvirsma;slīdrāde;
Keywords[ms]=desklet;desktop;paparan slaid;
Keywords[ms_MY]=desklet;desktop;paparan slaid;
Keywords[nb]=skrivebordsprogram;skrivebord;bildefremvisning;
Keywords[nb_NO]=skrivebordsprogram;skrivebord;bildefremvisning;
Keywords[nds]=Desklet;Desktop;Diashow;
Keywords[nl]=minitoepassing;bureaublad;diapresentatie;
Keywords[nl_NL]=minitoepassing;bureaublad;diapresentatie;
Keywords[pa]=ਡੈਸਕਲੇਟ;ਡੈਸਕਟਾੱਪ;ਸਲਾਇਡਸ਼ੋ;
Keywords[pl]=desklet;pulpit;pokaz slajdów;
Keywords[pl_PL]=desklet;pulpit;pokaz slajdów;
Keywords[pt]=mini-aplicação;ambiente de trabalho;apresentação;
Keywords[pt_BR]=desklet;área de trabalho;apresentação de slides;
Keywords[pt_PT]=mini-aplicação;ambiente de trabalho;apresentação;
Keywords[ru]=десклет;рабочий стол;слайд-шоу;
Keywords[sk]=desklet;plocha;prezentácia;
Keywords[sk_SK]=desklet;plocha;prezentácia;
Keywords[sl]=aplet namizja;namizje;predstavitev;
Keywords[sl_SI]=aplet namizja;namizje;predstavitev;
Keywords[sq]=desklet;desktop;prezantim;
Keywords[sr]=справица;површ;покретни приказ;
Keywords[sr@Latn]=справица;површ;покретни приказ;
Keywords[sr@ije]=справица;површ;покретни приказ;
Keywords[sr@ijekavianlatin]=справица;површ;покретни приказ;
Keywords[sr@latin]=справица;површ;покретни приказ;
Keywords[sr_RS]=справица;површ;покретни приказ;
Keywords[sr_RS@latin]=справица;површ;покретни приказ;
Keywords[sv]=desklet;skrivbord;bildspel;
Keywords[ta]=திரை நிரல்;பணிமேடை;சறுக்குகாட்சி;
Keywords[ta_LK]=திரை நிரல்;பணிமேடை;சறுக்குகாட்சி;
Keywords[tg]=барномаи мизи корӣ;мизи корӣ;намоиши слайдҳо;
Keywords[th]=เดสก์เล็ต;พื้นโต๊ะ;การนำเสนอภาพนิ่ง;
Keywords[th_TH]=เดสก์เล็ต;พื้นโต๊ะ;การนำเสนอภาพนิ่ง;
Keywords[tr]=masaüstü uygulamacığı;masaüstü;slayt gösterisi;
Keywords[tr_TR]=masaüstü uygulamacığı;masaüstü;slayt gösterisi;
Keywords[uk]=десклет;стільниця;показ слайдів;
Keywords[uk_UA]=десклет;стільниця;показ слайдів;
Keywords[ur]=ڈیسکلیٹ، ڈیسک ٹاپ، سلائیدشو;
Keywords[uz]=десклет;иш столи;слайд-шоу;
Keywords[uz@cyrillic]=десклет;иш столи;слайд-шоу;
Keywords[vi]=tiểu trình màn hình làm việc;màn hình làm việc;trình chiếu;
Keywords[vi_VN]=tiểu trình màn hình làm việc;màn hình làm việc;trình chiếu;
Keywords[zh_CN]=桌面小工具、桌面、背景切换;
Keywords[zh_HK]=桌面小工具;桌面;幻燈片;
Keywords[zh_TW]=桌面小程式;桌面;幻燈片放映;
Cinnamon-3.6.7/files/usr/share/applications/cinnamon-settings-notifications.desktop 0000664 0001750 0001750 00000026113 13215735076 027636 0 ustar fabio fabio [Desktop Entry]
Icon=cs-notifications
Exec=cinnamon-settings notifications
Type=Application
OnlyShowIn=X-Cinnamon;
Categories=Settings;
Name=Notifications
Name[af]=Kennisgewings
Name[am]=ማስታወቂያዎች
Name[ar]=الإشعارات
Name[ast]=Notificaciones
Name[az]=Bildirişlər
Name[az_AZ]=Bildirişlər
Name[be]=Паведамленні
Name[be@latin]=Паведамленні
Name[be_BY]=Паведамленні
Name[bg]=Известявания
Name[bg_BG]=Известявания
Name[bn]=বিজ্ঞপ্তিসমূহ
Name[bn_IN]=বিজ্ঞপ্তিসমূহ
Name[bs]=Obavještenja
Name[ca]=Notificacions
Name[ca@valencia]=Notificacions
Name[ca_ES]=Notificacions
Name[ca_ES@valencia]=Notificacions
Name[crh]=bildirimler
Name[cs]=Oznámení
Name[cs_CZ]=Oznámení
Name[cy]=Hysbysiadau
Name[da]=Meddelelser
Name[da_DK]=Meddelelser
Name[de]=Meldungen
Name[de_CH]=Meldungen
Name[de_DE]=Meldungen
Name[el]=Ειδοποιήσεις
Name[eo]=Atentigoj
Name[es]=Notificaciones
Name[es_AR]=Notificaciones
Name[es_CL]=Notificaciones
Name[es_CO]=Notificaciones
Name[es_CR]=Notificaciones
Name[es_DO]=Notificaciones
Name[es_EC]=Notificaciones
Name[es_ES]=Notificaciones
Name[es_MX]=Notificaciones
Name[es_NI]=Notificaciones
Name[es_PA]=Notificaciones
Name[es_PE]=Notificaciones
Name[es_PR]=Notificaciones
Name[es_SV]=Notificaciones
Name[es_UY]=Notificaciones
Name[es_VE]=Notificaciones
Name[et]=Teavitused
Name[et_EE]=Teavitused
Name[eu]=Jakinarazpenak
Name[fa]=هشدارها
Name[fa_AF]=هشدارها
Name[fa_IR]=هشدارها
Name[fi]=Ilmoitukset
Name[fi_FI]=Ilmoitukset
Name[fil]=Mga Abiso
Name[fr_CA]=Avis
Name[fy]=Notifikaasjes
Name[ga]=Fógraí
Name[gd]=Brathan
Name[gl]=Notificacións
Name[gl_ES]=Notificacións
Name[he]=התרעות
Name[he_IL]=התרעות
Name[hr]=Obavijesti
Name[hu]=Értesítések
Name[hu_HU]=Értesítések
Name[hy]=Ծանուցումներ
Name[ia]=Notificationes
Name[id]=Pemberitahuan
Name[id_ID]=Pemberitahuan
Name[is]=Tilkynningar
Name[it]=Notifiche
Name[it_CH]=Notifiche
Name[it_IT]=Notifiche
Name[ja]=通知メッセージ
Name[ja_JP]=通知メッセージ
Name[kab]=Tilɣa
Name[kk]=Мәлімдемелер
Name[km]=ការជូនដំណឹង
Name[km_KH]=ការជូនដំណឹង
Name[ko]=알림
Name[ko_KR]=알림
Name[lo]=ການແຈ້ງເຕືອນ
Name[lo_LA]=ການແຈ້ງເຕືອນ
Name[lt]=Pranešimai
Name[lt_LT]=Pranešimai
Name[lv]=Paziņojumi
Name[lv_LV]=Paziņojumi
Name[ml]=അറിയിപ്പുകൾ
Name[mr]=सूचना
Name[ms]=Pemberitahuan
Name[ms_MY]=Pemberitahuan
Name[nb]=Varslinger
Name[nb_NO]=Varslinger
Name[nds]=Benachrichtigungen
Name[ne]=सूचना
Name[nl]=Meldingen
Name[nl_NL]=Meldingen
Name[oc]=Notificacions
Name[pa]=ਸੂਚਨਾਵਾਂ
Name[pl]=Powiadomienia
Name[pl_PL]=Powiadomienia
Name[pt]=Notificações
Name[pt_BR]=Notificações
Name[pt_PT]=Notificações
Name[ro]=Notificări
Name[ro_RO]=Notificări
Name[ru]=Уведомления
Name[sc]=Notìficas
Name[sk]=Oznámenia
Name[sk_SK]=Oznámenia
Name[sl]=Obvestila
Name[sl_SI]=Obvestila
Name[sq]=Njoftimet
Name[sr]=Обавештења
Name[sr@Latn]=Obaveštenja
Name[sr@ije]=Обавештења
Name[sr@ijekavianlatin]=Обавештења
Name[sr@latin]=Obaveštenja
Name[sr_RS]=Обавештења
Name[sr_RS@latin]=Obaveštenja
Name[sv]=Notiser
Name[sw]=Taarifa
Name[ta]=அறிவிப்புகள்
Name[ta_LK]=அறிவிப்புகள்
Name[te]=గమనింపులు
Name[tg]=Огоҳиҳо
Name[th]=การแจ้งเตือน
Name[th_TH]=การแจ้งเตือน
Name[tl]=Mga Abiso
Name[tr]=Bildirimler
Name[tr_TR]=Bildirimler
Name[tt]=Хәбәр итү
Name[tt@iqtelif]=Хәбәр итү
Name[uk]=Сповіщення
Name[uk_UA]=Сповіщення
Name[ur]=اطلاعات
Name[uz]=Эслатмалар
Name[uz@cyrillic]=Эслатмалар
Name[vi]=Thông báo
Name[vi_VN]=Thông báo
Name[xh]=Izaziso
Name[zh_CN]=通知
Name[zh_HK]=通知
Name[zh_TW]=通知
Comment=Notification preferences
Comment[am]=የ ማስታወቂያ ምርጫዎች
Comment[ar]=تفضيلات التنبيهات
Comment[ast]=Preferencies de les notificaciones
Comment[bg]=Настройки за известяване
Comment[bg_BG]=Настройки за известяване
Comment[ca]=Preferències de notificació
Comment[ca@valencia]=Preferències de notificació
Comment[ca_ES]=Preferències de notificació
Comment[ca_ES@valencia]=Preferències de notificació
Comment[cs]=Nastavení notifikací
Comment[cs_CZ]=Nastavení notifikací
Comment[cy]=Dewisiadau hysbysiad
Comment[da]=Indstillinger for meddelelser
Comment[da_DK]=Indstillinger for meddelelser
Comment[de]=Benachrichtigungseinstellungen
Comment[de_CH]=Benachrichtigungseinstellungen
Comment[de_DE]=Benachrichtigungseinstellungen
Comment[el]=Προτιμήσεις ειδοποιήσεων
Comment[es]=Preferencias de notificación
Comment[es_AR]=Preferencias de notificación
Comment[es_CL]=Preferencias de notificación
Comment[es_CO]=Preferencias de notificación
Comment[es_CR]=Preferencias de notificación
Comment[es_DO]=Preferencias de notificación
Comment[es_EC]=Preferencias de notificación
Comment[es_ES]=Preferencias de notificación
Comment[es_MX]=Preferencias de notificación
Comment[es_NI]=Preferencias de notificación
Comment[es_PA]=Preferencias de notificación
Comment[es_PE]=Preferencias de notificación
Comment[es_PR]=Preferencias de notificación
Comment[es_SV]=Preferencias de notificación
Comment[es_UY]=Preferencias de notificación
Comment[es_VE]=Preferencias de notificación
Comment[eu]=Jakinerazpenen hobespenak
Comment[fi]=Ilmoitusten asetukset
Comment[fi_FI]=Ilmoitusten asetukset
Comment[fr]=Préférences des notifications
Comment[fr_CA]=Préférences des notifications
Comment[fr_FR]=Préférences des notifications
Comment[gd]=Roghainnean nam brathan
Comment[gl]=Preferencias da notificación
Comment[gl_ES]=Preferencias da notificación
Comment[hr]=Osobitosti obavijesti
Comment[hu]=Értesítések beállításai
Comment[hu_HU]=Értesítések beállításai
Comment[ia]=Preferentias de notification
Comment[id]=Preferensi notifikasi
Comment[id_ID]=Preferensi notifikasi
Comment[is]=Valkostir kerfistilkynninga
Comment[it]=Preferenze di notifica
Comment[it_CH]=Preferenze di notifica
Comment[it_IT]=Preferenze di notifica
Comment[ja]=通知設定
Comment[ja_JP]=通知設定
Comment[ko]=알림 설정
Comment[ko_KR]=알림 설정
Comment[lt]=Pranešimų nuostatos
Comment[lt_LT]=Pranešimų nuostatos
Comment[ms]=Tetapan notifikasi
Comment[ms_MY]=Tetapan notifikasi
Comment[nb]=Varslingsinnstillinger
Comment[nb_NO]=Varslingsinnstillinger
Comment[nds]=Benachrichtigungseinstellungen
Comment[nl]=Meldingsvoorkeuren
Comment[nl_NL]=Meldingsvoorkeuren
Comment[oc]=Preferéncias de las notificacions
Comment[pl]=Preferencje powiadamiania
Comment[pl_PL]=Preferencje powiadamiania
Comment[pt]=Preferências de notificação
Comment[pt_BR]=Preferências de notificação
Comment[pt_PT]=Preferências de notificação
Comment[ro]=Preferințe notificări
Comment[ro_RO]=Preferințe notificări
Comment[ru]=Настройки уведомлений
Comment[sk]=Predvoľby oznámení
Comment[sk_SK]=Predvoľby oznámení
Comment[sl]=Možnosti obvestil
Comment[sl_SI]=Možnosti obvestil
Comment[sq]=Parapëlqimet e njoftimeve
Comment[sr]=Поставке обавештења
Comment[sr@Latn]=Поставке обавештења
Comment[sr@ije]=Поставке обавештења
Comment[sr@ijekavianlatin]=Поставке обавештења
Comment[sr@latin]=Поставке обавештења
Comment[sr_RS]=Поставке обавештења
Comment[sr_RS@latin]=Поставке обавештења
Comment[sv]=Inställningar för Notiser
Comment[th]=ตั้งค่าการแจ้งเตือน
Comment[th_TH]=ตั้งค่าการแจ้งเตือน
Comment[tr]=Bildirim tercihleri
Comment[tr_TR]=Bildirim tercihleri
Comment[uk]=Налаштування сповіщень
Comment[uk_UA]=Налаштування сповіщень
Comment[ur]=اطلاعیہ ترجیحات
Comment[vi]=Tùy thích thông báo
Comment[vi_VN]=Tùy thích thông báo
Comment[zh_CN]=通知设置
Comment[zh_HK]=通知喜好設定
Comment[zh_TW]=通知偏好設定
Keywords=notifications;
Keywords[am]=ማስታወቂያዎች;
Keywords[ar]=التنبيهات;
Keywords[ast]=notificaciones;
Keywords[bg]=известяване;
Keywords[bg_BG]=известяване;
Keywords[ca]=notificacions;
Keywords[ca@valencia]=notificacions;
Keywords[ca_ES]=notificacions;
Keywords[ca_ES@valencia]=notificacions;
Keywords[cs]=upozornění;
Keywords[cs_CZ]=upozornění;
Keywords[cy]=hysbysiadau;
Keywords[da]=meddelelser;
Keywords[da_DK]=meddelelser;
Keywords[de]=Benachrichtigungen;
Keywords[de_CH]=Benachrichtigungen;
Keywords[de_DE]=Benachrichtigungen;
Keywords[el]=ειδοποιήσεις;
Keywords[es]=notificaciones;
Keywords[es_AR]=notificaciones;
Keywords[es_CL]=notificaciones;
Keywords[es_CO]=notificaciones;
Keywords[es_CR]=notificaciones;
Keywords[es_DO]=notificaciones;
Keywords[es_EC]=notificaciones;
Keywords[es_ES]=notificaciones;
Keywords[es_MX]=notificaciones;
Keywords[es_NI]=notificaciones;
Keywords[es_PA]=notificaciones;
Keywords[es_PE]=notificaciones;
Keywords[es_PR]=notificaciones;
Keywords[es_SV]=notificaciones;
Keywords[es_UY]=notificaciones;
Keywords[es_VE]=notificaciones;
Keywords[eu]=jakinarazpenak;
Keywords[fi]=ilmoitukset;
Keywords[fi_FI]=ilmoitukset;
Keywords[gd]=brathan;
Keywords[gl]=notificacións;
Keywords[gl_ES]=notificacións;
Keywords[hr]=obavijesti;
Keywords[hu]=értesítések;
Keywords[hu_HU]=értesítések;
Keywords[ia]=notificationes;
Keywords[id]=notifikasi;
Keywords[id_ID]=notifikasi;
Keywords[is]=tilkynningar;
Keywords[it]=notifiche;
Keywords[it_CH]=notifiche;
Keywords[it_IT]=notifiche;
Keywords[ja]=通知;
Keywords[ja_JP]=通知;
Keywords[ko]=알림;
Keywords[ko_KR]=알림;
Keywords[lt]=pranešimai;
Keywords[lt_LT]=pranešimai;
Keywords[ms]=notifikasi;
Keywords[ms_MY]=notifikasi;
Keywords[nb]=varslinger;
Keywords[nb_NO]=varslinger;
Keywords[nds]=Benachrichtigungen;
Keywords[nl]=meldingen;
Keywords[nl_NL]=meldingen;
Keywords[oc]=notificacions;
Keywords[pl]=powiadomienia;
Keywords[pl_PL]=powiadomienia;
Keywords[pt]=notificações;
Keywords[pt_BR]=notificações;
Keywords[pt_PT]=notificações;
Keywords[ro]=notificări;
Keywords[ro_RO]=notificări;
Keywords[ru]=уведомления;
Keywords[sk]=oznámenia;
Keywords[sk_SK]=oznámenia;
Keywords[sl]=obvestila;
Keywords[sl_SI]=obvestila;
Keywords[sr]=обавештења;
Keywords[sr@Latn]=обавештења;
Keywords[sr@ije]=обавештења;
Keywords[sr@ijekavianlatin]=обавештења;
Keywords[sr@latin]=обавештења;
Keywords[sr_RS]=обавештења;
Keywords[sr_RS@latin]=обавештења;
Keywords[sv]=notiser;
Keywords[th]=การแจ้งเตือน;
Keywords[th_TH]=การแจ้งเตือน;
Keywords[tr]=bildirimler;
Keywords[tr_TR]=bildirimler;
Keywords[uk]=сповіщення;
Keywords[uk_UA]=сповіщення;
Keywords[ur]=اطلاعات;
Keywords[vi]=thông báo;
Keywords[vi_VN]=thông báo;
Keywords[zh_CN]=通知;
Keywords[zh_HK]=通知;
Keywords[zh_TW]=通知;
Cinnamon-3.6.7/files/usr/share/applications/cinnamon-settings-startup.desktop 0000664 0001750 0001750 00000043127 13215735076 026473 0 ustar fabio fabio [Desktop Entry]
Icon=cs-startup-programs
Exec=cinnamon-settings startup
Type=Application
OnlyShowIn=X-Cinnamon;
Categories=Settings;
Name=Startup Applications
Name[am]=መተግበሪያዎች ማስጀመሪያ
Name[ar]=برامج بدء التشغيل
Name[ast]=Aplicaciones d'aniciu
Name[bg]=Автоматично стартирани програми
Name[bg_BG]=Автоматично стартирани програми
Name[ca]=Aplicacions a l'inici
Name[ca@valencia]=Aplicacions a l'inici
Name[ca_ES]=Aplicacions a l'inici
Name[ca_ES@valencia]=Aplicacions a l'inici
Name[cs]=Aplikace spouštěné při přihlášení
Name[cs_CZ]=Aplikace spouštěné při přihlášení
Name[cy]=Rhaglenni Cychwyn
Name[da]=Opstartsprogrammer
Name[da_DK]=Opstartsprogrammer
Name[de]=Startprogramme
Name[de_CH]=Startprogramme
Name[de_DE]=Startprogramme
Name[el]=Προγράμματα εκκίνησης
Name[eo]=Aplikaĵoj post startigo
Name[es]=Aplicaciones al inicio
Name[es_AR]=Aplicaciones al inicio
Name[es_CL]=Aplicaciones al inicio
Name[es_CO]=Aplicaciones al inicio
Name[es_CR]=Aplicaciones al inicio
Name[es_DO]=Aplicaciones al inicio
Name[es_EC]=Aplicaciones al inicio
Name[es_ES]=Aplicaciones al inicio
Name[es_MX]=Aplicaciones al inicio
Name[es_NI]=Aplicaciones al inicio
Name[es_PA]=Aplicaciones al inicio
Name[es_PE]=Aplicaciones al inicio
Name[es_PR]=Aplicaciones al inicio
Name[es_SV]=Aplicaciones al inicio
Name[es_UY]=Aplicaciones al inicio
Name[es_VE]=Aplicaciones al inicio
Name[et]=Käivitatavad rakendused
Name[et_EE]=Käivitatavad rakendused
Name[eu]=Abioko aplikazioak
Name[fi]=Käynnistettävät sovellukset
Name[fi_FI]=Käynnistettävät sovellukset
Name[fr]=Applications au démarrage
Name[fr_CA]=Applications lancées au démarrage
Name[fr_FR]=Applications au démarrage
Name[fy]=Opstart Applikaasjes
Name[gd]=Aplacaidean tòiseachaidh
Name[gl]=Aplicativos de inicio
Name[gl_ES]=Aplicativos de inicio
Name[hr]=Pokrenute aplikacije
Name[hu]=Indítópult
Name[hu_HU]=Indítópult
Name[ia]=Applicationes de initio
Name[id]=Aplikasi Permulaan
Name[id_ID]=Aplikasi Permulaan
Name[is]=Ræsiforrit
Name[it]=Applicazioni d'avvio
Name[it_CH]=Applicazioni d'avvio
Name[it_IT]=Applicazioni d'avvio
Name[ja]=自動起動のアプリケーション
Name[ja_JP]=自動起動のアプリケーション
Name[ko]=시작 애플리케이션
Name[ko_KR]=시작 애플리케이션
Name[lo]=ໂປຣແກຣມເລີ່ມລະບົບ
Name[lo_LA]=ໂປຣແກຣມເລີ່ມລະບົບ
Name[lt]=Paleisties programos
Name[lt_LT]=Paleisties programos
Name[ms]=Aplikasi Permulaan
Name[ms_MY]=Aplikasi Permulaan
Name[nb]=Oppstartsprogrammer
Name[nb_NO]=Oppstartsprogrammer
Name[nds]=Systemstartprogramme
Name[nl]=Opstarttoepassingen
Name[nl_NL]=Opstarttoepassingen
Name[oc]=Aplicacions a l'aviada
Name[pl]=Programy startowe
Name[pl_PL]=Programy startowe
Name[pt]=Aplicações de Arranque
Name[pt_BR]=Aplicativos de Inicialização
Name[pt_PT]=Aplicações de Arranque
Name[ro]=Aplicații lansate la pornire
Name[ro_RO]=Aplicații lansate la pornire
Name[ru]=Автозагрузка
Name[sk]=Aplikácie po spustení
Name[sk_SK]=Aplikácie po spustení
Name[sl]=Začetni programi
Name[sl_SI]=Začetni programi
Name[sq]=Programet në nisje
Name[sr]=Почетни програми
Name[sr@Latn]=Почетни програми
Name[sr@ije]=Почетни програми
Name[sr@ijekavianlatin]=Почетни програми
Name[sr@latin]=Почетни програми
Name[sr_RS]=Почетни програми
Name[sr_RS@latin]=Почетни програми
Name[sv]=Uppstartsprogram
Name[th]=โปรแกรมเริ่มวาระ
Name[th_TH]=โปรแกรมเริ่มวาระ
Name[tr]=Başlangıç Uygulamaları
Name[tr_TR]=Başlangıç Uygulamaları
Name[uk]=Самозапуск проґрам
Name[uk_UA]=Самозапуск проґрам
Name[ur]=کمپیوڑر آغاز کی ایپلی کیشنز
Name[vi]=Ứng dụng Khởi chạy
Name[vi_VN]=Ứng dụng Khởi chạy
Name[zh_CN]=开机自启动程序
Name[zh_HK]=初始啟動程式
Name[zh_TW]=系統啟動應用程式
Comment=Manage your startup applications
Comment[am]=የሚጀምሩ መተግባሪያዎች አስተዳዳሪ
Comment[bg]=Управление на стартиращите приложения
Comment[bg_BG]=Управление на стартиращите приложения
Comment[ca]=Gestioneu les vostres aplicacions d'inici
Comment[ca@valencia]=Gestioneu les vostres aplicacions d'inici
Comment[ca_ES]=Gestioneu les vostres aplicacions d'inici
Comment[ca_ES@valencia]=Gestioneu les vostres aplicacions d'inici
Comment[cs]=Spravovat vaše aplikace při spuštění
Comment[cs_CZ]=Spravovat vaše aplikace při spuštění
Comment[cy]=Rheoli eich rhaglenni cychwyn
Comment[da]=Håndtér dine opstartsprogrammer
Comment[da_DK]=Håndtér dine opstartsprogrammer
Comment[de]=Ihre Startprogramme verwalten
Comment[de_CH]=Ihre Startprogramme verwalten
Comment[de_DE]=Ihre Startprogramme verwalten
Comment[el]=Διαχείριση των εφαρμογών εκκίνησης σου
Comment[es]=Gestionar las aplicaciones de inicio
Comment[es_AR]=Gestionar las aplicaciones de inicio
Comment[es_CL]=Gestionar las aplicaciones de inicio
Comment[es_CO]=Gestionar las aplicaciones de inicio
Comment[es_CR]=Gestionar las aplicaciones de inicio
Comment[es_DO]=Gestionar las aplicaciones de inicio
Comment[es_EC]=Gestionar las aplicaciones de inicio
Comment[es_ES]=Gestionar las aplicaciones de inicio
Comment[es_MX]=Gestionar las aplicaciones de inicio
Comment[es_NI]=Gestionar las aplicaciones de inicio
Comment[es_PA]=Gestionar las aplicaciones de inicio
Comment[es_PE]=Gestionar las aplicaciones de inicio
Comment[es_PR]=Gestionar las aplicaciones de inicio
Comment[es_SV]=Gestionar las aplicaciones de inicio
Comment[es_UY]=Gestionar las aplicaciones de inicio
Comment[es_VE]=Gestionar las aplicaciones de inicio
Comment[eu]=Kudeatu zure abioko aplikazioak
Comment[fi]=Hallinnoi automaattisesti käynnistyviä sovelluksia
Comment[fi_FI]=Hallinnoi automaattisesti käynnistyviä sovelluksia
Comment[fr]=Gérez vos applications au démarrage
Comment[fr_CA]=Gérez vos applications au démarrage
Comment[fr_FR]=Gérez vos applications au démarrage
Comment[gd]=Stiùirich na h-aplacaidean tòiseachaidh agad
Comment[gl]=Administrar os seus aplicativos do inicio
Comment[gl_ES]=Administrar os seus aplicativos do inicio
Comment[hr]=Upravljajte vašim pokrenutim aplikacijama
Comment[hu]=Bejelentkezéskor elindítandó alkalmazások
Comment[hu_HU]=Bejelentkezéskor elindítandó alkalmazások
Comment[ia]=Administrar tu applicationes de lanceamento initial
Comment[is]=Sýsla með forrit virkjuð í ræsingu
Comment[it]=Gestisci le tue applicazioni di avvio
Comment[it_CH]=Gestisci le tue applicazioni di avvio
Comment[it_IT]=Gestisci le tue applicazioni di avvio
Comment[ko]=여러분의 시작 애플리케이션을 관리하세요
Comment[ko_KR]=여러분의 시작 애플리케이션을 관리하세요
Comment[lt]=Valdykite savo paleidžiamas programas
Comment[lt_LT]=Valdykite savo paleidžiamas programas
Comment[ms]=Urus aplikasi permulaan anda
Comment[ms_MY]=Urus aplikasi permulaan anda
Comment[nb]=Håndter dine oppstartsprogrammer
Comment[nb_NO]=Håndter dine oppstartsprogrammer
Comment[nds]=Startanwendungen verwalten
Comment[nl]=Beheer uw opstarttoepassingen
Comment[nl_NL]=Beheer uw opstarttoepassingen
Comment[oc]=Gerissètz vòstras aplicacions a l'aviada
Comment[pl]=Zarządzaj programami startowymi
Comment[pl_PL]=Zarządzaj programami startowymi
Comment[pt]=Gerir as suas aplicações de arranque
Comment[pt_BR]=Gerencie seus aplicativos de inicialização
Comment[pt_PT]=Gerir as suas aplicações de arranque
Comment[ro]=Gestionează aplicațiile lansate la pornire
Comment[ro_RO]=Gestionează aplicațiile lansate la pornire
Comment[ru]=Управление автозапускаемыми приложениями
Comment[sk]=Spravovať aplikácie spúšťané automaticky po spustení pc
Comment[sk_SK]=Spravovať aplikácie spúšťané automaticky po spustení pc
Comment[sq]=Menaxhoni programet tuaja të nisjes
Comment[sr]=Управљање почетним програмиам
Comment[sr@Latn]=Управљање почетним програмиам
Comment[sr@ije]=Управљање почетним програмиам
Comment[sr@ijekavianlatin]=Управљање почетним програмиам
Comment[sr@latin]=Управљање почетним програмиам
Comment[sr_RS]=Управљање почетним програмиам
Comment[sr_RS@latin]=Управљање почетним програмиам
Comment[sv]=Hantera dina uppstartsprogram
Comment[th]=จัดการโปรแกรมเริ่มวาระของคุณ
Comment[th_TH]=จัดการโปรแกรมเริ่มวาระของคุณ
Comment[tr]=Başlangıç uygulamalarınızı yönetin
Comment[tr_TR]=Başlangıç uygulamalarınızı yönetin
Comment[uk]=Керування запуском Ваших додатків
Comment[uk_UA]=Керування запуском Ваших додатків
Comment[ur]=کمپیوڑر آغاز کی ایپلی کیشنز کا انتطام کریں
Comment[vi]=Quản lý ứng dụng khởi chạy của bạn
Comment[vi_VN]=Quản lý ứng dụng khởi chạy của bạn
Comment[zh_CN]=管理启动程序
Comment[zh_HK]=管理你的始動應用程式
Comment[zh_TW]=管理您的系統啟動應用程式
Keywords=startup;programs;boot;init;session;
Keywords[am]=የሚጀምሩ: ፕሮግራሞች: boot: ማስጀመሪያ: ክፍለ ጊዜ;
Keywords[ar]=بداية تشغيل، برامج، إقلاع، تهيئة، دورة;
Keywords[ast]=aniciu;programes;arranque;init;sesión;
Keywords[be]=аўтазапуск;праграмы;загрузкі;инициализация;сесія;
Keywords[be@latin]=аўтазапуск;праграмы;загрузкі;инициализация;сесія;
Keywords[be_BY]=аўтазапуск;праграмы;загрузкі;инициализация;сесія;
Keywords[bg]=стартиране;програми;сесия;
Keywords[bg_BG]=стартиране;програми;сесия;
Keywords[bs]=početak;programi;boot;inicijalizacija;sesija;
Keywords[ca]=inici;programes;arrencada;init;sessió;
Keywords[ca@valencia]=inici;programes;arrancada;inicialisar;sessió;
Keywords[ca_ES]=inici;programes;arrencada;init;sessió;
Keywords[ca_ES@valencia]=inici;programes;arrancada;inicialisar;sessió;
Keywords[cs]=zapínání;programy;boot;zahájení;sezení;
Keywords[cs_CZ]=zapínání;programy;boot;zahájení;sezení;
Keywords[cy]=cychwyn;rhaglenni;ymgychwyn;init;sesiwn;
Keywords[da]=opstart;programmer;boot;init;session;
Keywords[da_DK]=opstart;programmer;boot;init;session;
Keywords[de]=Start;Programme;Anwendungen;Startvorgang;Boot;initialisieren;Sitzung;
Keywords[de_CH]=Start;Programme;Anwendungen;Startvorgang;Boot;initialisieren;Sitzung;
Keywords[de_DE]=Start;Programme;Anwendungen;Startvorgang;Boot;initialisieren;Sitzung;
Keywords[el]=έναρξη;προγράμματα;εκκίνηση;συνεδρία;
Keywords[en_GB]=start-up;programs;boot;init;session;
Keywords[es]=inicio;programas;arranque;init;sesión;
Keywords[es_AR]=inicio;programas;arranque;init;sesión;
Keywords[es_CL]=inicio;programas;arranque;init;sesión;
Keywords[es_CO]=inicio;programas;arranque;init;sesión;
Keywords[es_CR]=inicio;programas;arranque;init;sesión;
Keywords[es_DO]=inicio;programas;arranque;init;sesión;
Keywords[es_EC]=inicio;programas;arranque;init;sesión;
Keywords[es_ES]=inicio;programas;arranque;init;sesión;
Keywords[es_MX]=inicio;programas;arranque;init;sesión;
Keywords[es_NI]=inicio;programas;arranque;init;sesión;
Keywords[es_PA]=inicio;programas;arranque;init;sesión;
Keywords[es_PE]=inicio;programas;arranque;init;sesión;
Keywords[es_PR]=inicio;programas;arranque;init;sesión;
Keywords[es_SV]=inicio;programas;arranque;init;sesión;
Keywords[es_UY]=inicio;programas;arranque;init;sesión;
Keywords[es_VE]=inicio;programas;arranque;init;sesión;
Keywords[eu]=abiaraztea;programak;abioa;init;saioa;
Keywords[fa]=راهاندازی، برنامهها، بوت، اینیت، نشست;
Keywords[fa_AF]=راهاندازی، برنامهها، بوت، اینیت، نشست;
Keywords[fa_IR]=راهاندازی، برنامهها، بوت، اینیت، نشست;
Keywords[fi]=käynnistys;ohjelmat;boot;init;istunto;
Keywords[fi_FI]=käynnistys;ohjelmat;boot;init;istunto;
Keywords[fr]=demarrer;programmes;boot;init;session;
Keywords[fr_CA]=demarrer;programmes;boot;init;session;
Keywords[fr_FR]=demarrer;programmes;boot;init;session;
Keywords[fy]=tariedings;applikaasjes;boot;init;sessy;
Keywords[ga]=tosaigh;cláir;bútáil;init;seisiún;
Keywords[gd]=tòiseachadh;prògraman;bùtadh;init;seisean;startup;programs;boot;session;
Keywords[gl]=inicio;programas;arrinque;sesión;
Keywords[gl_ES]=inicio;programas;arrinque;sesión;
Keywords[hr]=pokrenuti;programi;pokretanje računala;pokretanje programa;sesija;
Keywords[hu]=indítás;programok;boot;folyamat;munkamenet;
Keywords[hu_HU]=indítás;programok;boot;folyamat;munkamenet;
Keywords[ia]=lanceamento initial;programmas;lanceamento initial;init;session;
Keywords[id]=startup;program;boot;init;sesi;
Keywords[id_ID]=startup;program;boot;init;sesi;
Keywords[is]=ræsing;forrit;ræsiforrit;init;seta;
Keywords[it]=avvio;programmi;boot;init;sessione;
Keywords[it_CH]=avvio;programmi;boot;init;sessione;
Keywords[it_IT]=avvio;programmi;boot;init;sessione;
Keywords[ja]=スタートアップ、プログラム、ブート、init、セッション;
Keywords[ja_JP]=スタートアップ、プログラム、ブート、init、セッション;
Keywords[ko]=시작;프로그램;시동;초기화;세션;
Keywords[ko_KR]=시작;프로그램;시동;초기화;세션;
Keywords[lo]=ເລີ່ມລະບົບ;ໂປຣແກຣມ;ເລີ່ມລະບົບ;init;session;
Keywords[lo_LA]=ເລີ່ມລະບົບ;ໂປຣແກຣມ;ເລີ່ມລະບົບ;init;session;
Keywords[lt]=pradžioje;programos;paleistis;įkrovimas;seansas;
Keywords[lt_LT]=pradžioje;programos;paleistis;įkrovimas;seansas;
Keywords[lv]=starta;programmas;sāknēšanas;inicializācija;sesija;
Keywords[lv_LV]=starta;programmas;sāknēšanas;inicializācija;sesija;
Keywords[ms]=permulaan;program;but;init;sesi;
Keywords[ms_MY]=permulaan;program;but;init;sesi;
Keywords[nb]=oppstart;programmer;boot;init;sessjon;
Keywords[nb_NO]=oppstart;programmer;boot;init;sessjon;
Keywords[nds]=Autostart;Programme;Boot;Initialisierung;Sitzung;
Keywords[nl]=opstarten;programma's;opstart;init;sessie;
Keywords[nl_NL]=opstarten;programma's;opstart;init;sessie;
Keywords[pa]=ਸਟਾਰਟਅੱਪ;ਕਾਰਜਾਂ;ਬੂਟ;ਇਨਿਟ;ਸ਼ੈਸ਼ਨ;
Keywords[pl]=startup;programy;boot;inicjalizacja;sesja;
Keywords[pl_PL]=startup;programy;boot;inicjalizacja;sesja;
Keywords[pt]=arranque;programas;boot;init;sessão;
Keywords[pt_BR]=inicialização;programas;boot;init;sessão;
Keywords[pt_PT]=arranque;programas;boot;init;sessão;
Keywords[ro]=pornire;programe;boot;init;sesiune;
Keywords[ro_RO]=pornire;programe;boot;init;sesiune;
Keywords[ru]=запуск;программы;загрузка;инициализация;сессия;
Keywords[sk]=spustenie;programy;boot;zavedenie;sedenie;relácia;
Keywords[sk_SK]=spustenie;programy;boot;zavedenie;sedenie;relácia;
Keywords[sl]=začetni;programi;zagon;začenjanje;seja;
Keywords[sl_SI]=začetni;programi;zagon;začenjanje;seja;
Keywords[sq]=nisje;programe;boot;init;seancë;
Keywords[sr]=покретање;програми;учитавање;почетни;сесија;
Keywords[sr@Latn]=покретање;програми;учитавање;почетни;сесија;
Keywords[sr@ije]=покретање;програми;учитавање;почетни;сесија;
Keywords[sr@ijekavianlatin]=покретање;програми;учитавање;почетни;сесија;
Keywords[sr@latin]=покретање;програми;учитавање;почетни;сесија;
Keywords[sr_RS]=покретање;програми;учитавање;почетни;сесија;
Keywords[sr_RS@latin]=покретање;програми;учитавање;почетни;сесија;
Keywords[sv]=uppstart;program;boot;init;session;
Keywords[ta]=தொடக்கம்;நிரல்கள்;துவக்கம்;ஆரம்பம்;அமர்வு;
Keywords[ta_LK]=தொடக்கம்;நிரல்கள்;துவக்கம்;ஆரம்பம்;அமர்வு;
Keywords[tg]=оғози кор;барномаҳо;роҳандозӣ;init;ҷаласа;
Keywords[th]=โปรแกรมเมื่อเริ่มระบบ;โปรแกรม;เริ่มระบบ;การเริ่มต้น;วาระ;
Keywords[th_TH]=โปรแกรมเมื่อเริ่มระบบ;โปรแกรม;เริ่มระบบ;การเริ่มต้น;วาระ;
Keywords[tr]=başlangış;uygulamalar;açılış;başlatma;oturum;
Keywords[tr_TR]=başlangış;uygulamalar;açılış;başlatma;oturum;
Keywords[uk]=запуск;проґрами;завантаження;ініціялізація;сесія;
Keywords[uk_UA]=запуск;проґрами;завантаження;ініціялізація;сесія;
Keywords[ur]=سٹارٹ اپ، آغازیہ، بوٹ، ان اٹ، سیشن، دورانیہ، نشست;
Keywords[vi]=khởi động;chương trình;khởi động;khởi tạo;phiên;
Keywords[vi_VN]=khởi động;chương trình;khởi động;khởi tạo;phiên;
Keywords[zh_CN]=startup;programs;boot;init;session;启动;程序;开机;初始化;会话;
Keywords[zh_HK]=始動;程式;開機;起始;作業階段;
Keywords[zh_TW]=系統啟動;程式;開機;起始;作業階段;
Cinnamon-3.6.7/files/usr/share/applications/cinnamon-settings-fonts.desktop 0000664 0001750 0001750 00000035126 13215735076 026122 0 ustar fabio fabio [Desktop Entry]
Icon=cs-fonts
Exec=cinnamon-settings fonts
Type=Application
OnlyShowIn=X-Cinnamon;
Categories=Settings;
Name=Fonts
Name[am]=ፊደሎች
Name[ar]=الخطوط
Name[ast]=Fontes
Name[be]=Шрыфты
Name[be@latin]=Шрыфты
Name[be_BY]=Шрыфты
Name[bg]=Шрифтове
Name[bg_BG]=Шрифтове
Name[bs]=Fontovi
Name[ca]=Tipus de lletra
Name[ca@valencia]=Tipus de lletra
Name[ca_ES]=Tipus de lletra
Name[ca_ES@valencia]=Tipus de lletra
Name[cs]=Písma
Name[cs_CZ]=Písma
Name[cy]=Ffontiau
Name[da]=Skrifttyper
Name[da_DK]=Skrifttyper
Name[de]=Schriften
Name[de_CH]=Schriften
Name[de_DE]=Schriften
Name[el]=Γραμματοσειρές
Name[eo]=Tiparoj
Name[es]=Tipos de letra
Name[es_AR]=Tipos de letra
Name[es_CL]=Tipos de letra
Name[es_CO]=Tipos de letra
Name[es_CR]=Tipos de letra
Name[es_DO]=Tipos de letra
Name[es_EC]=Tipos de letra
Name[es_ES]=Tipos de letra
Name[es_MX]=Tipos de letra
Name[es_NI]=Tipos de letra
Name[es_PA]=Tipos de letra
Name[es_PE]=Tipos de letra
Name[es_PR]=Tipos de letra
Name[es_SV]=Tipos de letra
Name[es_UY]=Tipos de letra
Name[es_VE]=Tipos de letra
Name[et]=Kirjatüübid
Name[et_EE]=Kirjatüübid
Name[eu]=Letra-tipoak
Name[fa]=فونتها
Name[fa_AF]=فونتها
Name[fa_IR]=فونتها
Name[fi]=Fontit
Name[fi_FI]=Fontit
Name[fil]=Pagmumulan ng
Name[fr]=Polices de caractères
Name[fr_CA]=Polices de caractères
Name[fr_FR]=Polices de caractères
Name[ga]=Clófhoirne
Name[gd]=Cruthan-clò
Name[gl]=Tipos de letra
Name[gl_ES]=Tipos de letra
Name[hr]=Slova
Name[hu]=Betűtípusok
Name[hu_HU]=Betűtípusok
Name[ia]=Typos de charactere
Name[id]=Huruf
Name[id_ID]=Huruf
Name[is]=Letur
Name[it]=Caratteri
Name[it_CH]=Caratteri
Name[it_IT]=Caratteri
Name[ja]=フォント
Name[ja_JP]=フォント
Name[kab]=Tisefsayin
Name[kk]=Қаріптер
Name[ko]=글꼴
Name[ko_KR]=글꼴
Name[lo]=ຟອນ
Name[lo_LA]=ຟອນ
Name[lt]=Šriftai
Name[lt_LT]=Šriftai
Name[lv]=Fonti
Name[lv_LV]=Fonti
Name[ms]=Fon
Name[ms_MY]=Fon
Name[nb]=Skrifttyper
Name[nb_NO]=Skrifttyper
Name[nds]=Schriftarten
Name[nl]=Lettertypen
Name[nl_NL]=Lettertypen
Name[oc]=Poliças
Name[pa]=ਫੋਂਟ
Name[pl]=Czcionki
Name[pl_PL]=Czcionki
Name[pt]=Tipo de letra
Name[pt_BR]=Fontes
Name[pt_PT]=Tipo de letra
Name[ro]=Fonturi
Name[ro_RO]=Fonturi
Name[ru]=Шрифты
Name[sk]=Písmo
Name[sk_SK]=Písmo
Name[sl]=Pisave
Name[sl_SI]=Pisave
Name[sq]=Shkronjat
Name[sr]=Фонтови
Name[sr@Latn]=Фонтови
Name[sr@ije]=Фонтови
Name[sr@ijekavianlatin]=Фонтови
Name[sr@latin]=Фонтови
Name[sr_RS]=Фонтови
Name[sr_RS@latin]=Фонтови
Name[sv]=Teckensnitt
Name[ta]=எழுத்துருக்கள்
Name[ta_LK]=எழுத்துருக்கள்
Name[tg]=Шрифтҳо
Name[th]=แบบอักษร
Name[th_TH]=แบบอักษร
Name[tr]=Yazı Tipleri
Name[tr_TR]=Yazı Tipleri
Name[uk]=Шрифти
Name[uk_UA]=Шрифти
Name[ur]=فونٹ
Name[vi]=Phông chữ
Name[vi_VN]=Phông chữ
Name[zh_CN]=字体
Name[zh_HK]=字型
Name[zh_TW]=字型
Comment=Configure system fonts
Comment[am]=የ ስርአቱን ፊደል ማሰናጃ
Comment[ar]=إعداد خطوط النظام
Comment[ast]=Configura les fontes del sistema
Comment[be]=Наладзіць сістэмныя шрыфты
Comment[be@latin]=Наладзіць сістэмныя шрыфты
Comment[be_BY]=Наладзіць сістэмныя шрыфты
Comment[bg]=Конфигуриране на системни шрифтове
Comment[bg_BG]=Конфигуриране на системни шрифтове
Comment[bs]=Konfigurišite sistemke fontove
Comment[ca]=Administrar fonts del sistema
Comment[ca@valencia]=Administra fonts del sistema
Comment[ca_ES]=Administrar fonts del sistema
Comment[ca_ES@valencia]=Administra fonts del sistema
Comment[cs]=Nastavení systémových písem
Comment[cs_CZ]=Nastavení systémových písem
Comment[cy]=Ffurfweddwch ffontiau'r system
Comment[da]=Konfigurér systemskrifttyper
Comment[da_DK]=Konfigurér systemskrifttyper
Comment[de]=Systemschriften konfigurieren
Comment[de_CH]=Systemschriften konfigurieren
Comment[de_DE]=Systemschriften konfigurieren
Comment[el]=Ρύθμιση γραμματοσειράς συστήματος
Comment[es]=Administrar fuentes del sistema
Comment[es_AR]=Administrar fuentes del sistema
Comment[es_CL]=Administrar fuentes del sistema
Comment[es_CO]=Administrar fuentes del sistema
Comment[es_CR]=Administrar fuentes del sistema
Comment[es_DO]=Administrar fuentes del sistema
Comment[es_EC]=Administrar fuentes del sistema
Comment[es_ES]=Administrar fuentes del sistema
Comment[es_MX]=Administrar fuentes del sistema
Comment[es_NI]=Administrar fuentes del sistema
Comment[es_PA]=Administrar fuentes del sistema
Comment[es_PE]=Administrar fuentes del sistema
Comment[es_PR]=Administrar fuentes del sistema
Comment[es_SV]=Administrar fuentes del sistema
Comment[es_UY]=Administrar fuentes del sistema
Comment[es_VE]=Administrar fuentes del sistema
Comment[eu]=Konfiguratu sistemaren letra-tipoak
Comment[fa]=تنظیم فونتهای سیستم
Comment[fa_AF]=تنظیم فونتهای سیستم
Comment[fa_IR]=تنظیم فونتهای سیستم
Comment[fi]=Hallitse järjestelmän fontteja
Comment[fi_FI]=Hallitse järjestelmän fontteja
Comment[fr]=Configurer les polices du système
Comment[fr_CA]=Configurer les polices du système
Comment[fr_FR]=Configurer les polices du système
Comment[gd]=Rèitich cruthan-clò an t-siostaim
Comment[gl]=Configura os tipos de letra do sistema
Comment[gl_ES]=Configura os tipos de letra do sistema
Comment[hr]=Prilagodite slova sustava
Comment[hu]=Rendszer betűtípusok beállítása
Comment[hu_HU]=Rendszer betűtípusok beállítása
Comment[ia]=Configurar le typos de character de systema
Comment[id]=Pengaturan font
Comment[id_ID]=Pengaturan font
Comment[is]=Stilla kerfisletur
Comment[it]=Configura il carattere di sistema
Comment[it_CH]=Configura il carattere di sistema
Comment[it_IT]=Configura il carattere di sistema
Comment[ja]=システムフォントの管理
Comment[ja_JP]=システムフォントの管理
Comment[kab]=Seɣwer tisefsa n unagraw
Comment[ko]=시스템 글꼴 설정
Comment[ko_KR]=시스템 글꼴 설정
Comment[lo]=ປັບແຕ່ງຟອນຂອງລະບົບ
Comment[lo_LA]=ປັບແຕ່ງຟອນຂອງລະບົບ
Comment[lt]=Nustatyti sistemos šriftus
Comment[lt_LT]=Nustatyti sistemos šriftus
Comment[lv]=Konfigurēt sistēmas fontus
Comment[lv_LV]=Konfigurēt sistēmas fontus
Comment[ms]=Konfigur sistem Font
Comment[ms_MY]=Konfigur sistem Font
Comment[nb]=Konfigurer systemskrifter
Comment[nb_NO]=Konfigurer systemskrifter
Comment[nds]=Systemschriftarten konfigurieren
Comment[nl]=Systeemlettertypen instellen
Comment[nl_NL]=Systeemlettertypen instellen
Comment[pl]=Konfiguracja czcionek systemu
Comment[pl_PL]=Konfiguracja czcionek systemu
Comment[pt]=Configurar fontes do sistema
Comment[pt_BR]=Configurar fontes do sistema
Comment[pt_PT]=Configurar fontes do sistema
Comment[ro]=Configurează fonturile sistemului
Comment[ro_RO]=Configurează fonturile sistemului
Comment[ru]=Настроить системные шрифты
Comment[sk]=Nastaviť systémové písma
Comment[sk_SK]=Nastaviť systémové písma
Comment[sl]=Nastavljajte sistemske pisave
Comment[sl_SI]=Nastavljajte sistemske pisave
Comment[sq]=Konfiguro shkronjat e sistemit
Comment[sr]=Подешавање слова система
Comment[sr@Latn]=Подешавање слова система
Comment[sr@ije]=Подешавање слова система
Comment[sr@ijekavianlatin]=Подешавање слова система
Comment[sr@latin]=Подешавање слова система
Comment[sr_RS]=Подешавање слова система
Comment[sr_RS@latin]=Подешавање слова система
Comment[sv]=Konfigurera systemets teckensnitt
Comment[tg]=Танзимоти шрифтҳои системавӣ
Comment[th]=กำหนดแบบอักษรของระบบ
Comment[th_TH]=กำหนดแบบอักษรของระบบ
Comment[tr]=Sistem yazı tiplerini yapılandır
Comment[tr_TR]=Sistem yazı tiplerini yapılandır
Comment[uk]=Налаштування системних шрифтів
Comment[uk_UA]=Налаштування системних шрифтів
Comment[ur]=نظام کے فونٹ کو تشکیل دیں
Comment[vi]=Cấu hình kiểu chữ hệ thống
Comment[vi_VN]=Cấu hình kiểu chữ hệ thống
Comment[zh_CN]=配置系统字体
Comment[zh_HK]=設定系統字型組態
Comment[zh_TW]=設定系統字型組態
Keywords=font;size;small;large;
Keywords[am]=ፊደል መጠን ትንሽ ትልቅ;
Keywords[ar]=الخط، الحجم، صغير، عريض;
Keywords[ast]=fonte;tamañu;pequeñu;grande;lletra;lletres;fontes;
Keywords[be]=шрыфт;памер;маленькі;вялікі;
Keywords[be@latin]=шрыфт;памер;маленькі;вялікі;
Keywords[be_BY]=шрыфт;памер;маленькі;вялікі;
Keywords[bg]=шрифт;размер;малък;голям;
Keywords[bg_BG]=шрифт;размер;малък;голям;
Keywords[bs]=font;veličina;malo;veliko;
Keywords[ca]=font;mida;petit;gran;
Keywords[ca@valencia]=font;grandària;xicotet;gran;
Keywords[ca_ES]=font;mida;petit;gran;
Keywords[ca_ES@valencia]=font;grandària;xicotet;gran;
Keywords[cs]=font;velikost;malý;velký;
Keywords[cs_CZ]=font;velikost;malý;velký;
Keywords[cy]=ffont;maint;bach;mawr;
Keywords[da]=skrifttype;størrelse;lille;stor;
Keywords[da_DK]=skrifttype;størrelse;lille;stor;
Keywords[de]=Schriftart;Font;Größe;Klein;Groß;
Keywords[de_CH]=Schriftart;Font;Größe;Klein;Groß;
Keywords[de_DE]=Schriftart;Font;Größe;Klein;Groß;
Keywords[el]=γραμματοσειρά;μέγεθος;μικρά;μεγάλα;
Keywords[es]=fuente;tamaño;pequeño;grande;
Keywords[es_AR]=fuente;tamaño;pequeño;grande;
Keywords[es_CL]=fuente;tamaño;pequeño;grande;
Keywords[es_CO]=fuente;tamaño;pequeño;grande;
Keywords[es_CR]=fuente;tamaño;pequeño;grande;
Keywords[es_DO]=fuente;tamaño;pequeño;grande;
Keywords[es_EC]=fuente;tamaño;pequeño;grande;
Keywords[es_ES]=fuente;tamaño;pequeño;grande;
Keywords[es_MX]=fuente;tamaño;pequeño;grande;
Keywords[es_NI]=fuente;tamaño;pequeño;grande;
Keywords[es_PA]=fuente;tamaño;pequeño;grande;
Keywords[es_PE]=fuente;tamaño;pequeño;grande;
Keywords[es_PR]=fuente;tamaño;pequeño;grande;
Keywords[es_SV]=fuente;tamaño;pequeño;grande;
Keywords[es_UY]=fuente;tamaño;pequeño;grande;
Keywords[es_VE]=fuente;tamaño;pequeño;grande;
Keywords[et]=font;suurus;väike;suur;
Keywords[et_EE]=font;suurus;väike;suur;
Keywords[eu]=letra-tipoa;tamaina;txikia;handia;
Keywords[fa]=فونت، اندازه، کوچک، بزرگ;
Keywords[fa_AF]=فونت، اندازه، کوچک، بزرگ;
Keywords[fa_IR]=فونت، اندازه، کوچک، بزرگ;
Keywords[fi]=fontti;koko;pieni;iso;
Keywords[fi_FI]=fontti;koko;pieni;iso;
Keywords[fr]=police;taille;petit;grand;
Keywords[fr_CA]=police;taille;petit;grand;
Keywords[fr_FR]=police;taille;petit;grand;
Keywords[ga]=clófhoireann;méid;beag;mór;
Keywords[gd]=cruth-clò;meud;beag;mòr;font;size;small;large;
Keywords[gl]=tipo de letra;tamaño;pequena;grande;
Keywords[gl_ES]=tipo de letra;tamaño;pequena;grande;
Keywords[hr]=slovo;veličina;malo;veliko;
Keywords[hu]=betűtípus;méret;kicsi;nagy;
Keywords[hu_HU]=betűtípus;méret;kicsi;nagy;
Keywords[ia]=typo de characteres;dimension;parve;grande;
Keywords[id]=huruf;ukuran;kecil;besar;
Keywords[id_ID]=huruf;ukuran;kecil;besar;
Keywords[is]=letur;stærð;lítið;stórt;
Keywords[it]=carattere;dimensione;piccolo;grande;
Keywords[it_CH]=carattere;dimensione;piccolo;grande;
Keywords[it_IT]=carattere;dimensione;piccolo;grande;
Keywords[ja]=フォント、サイズ、小さく、大きく;
Keywords[ja_JP]=フォント、サイズ、小さく、大きく;
Keywords[kab]=Tasefsit;tiddi;tamecṭuḥt;tahrawnant;
Keywords[ko]=글꼴;크기;작게;크게;
Keywords[ko_KR]=글꼴;크기;작게;크게;
Keywords[lo]=ຟອນ;ຂະໜາດ;ນ້ອຍ;ໃຫຍ່;
Keywords[lo_LA]=ຟອນ;ຂະໜາດ;ນ້ອຍ;ໃຫຍ່;
Keywords[lt]=šriftas;dydis;didelis;mažas;
Keywords[lt_LT]=šriftas;dydis;didelis;mažas;
Keywords[lv]=fonts;izmērs;mazi;lieli;
Keywords[lv_LV]=fonts;izmērs;mazi;lieli;
Keywords[ms]=fon;saiz;kecil;besar;
Keywords[ms_MY]=fon;saiz;kecil;besar;
Keywords[nb]=skrifttype;størrelse;liten;stor;
Keywords[nb_NO]=skrifttype;størrelse;liten;stor;
Keywords[nds]=Schriftart;Größe;klein;groß;
Keywords[nl]=lettertype;grootte;klein;groot;
Keywords[nl_NL]=lettertype;grootte;klein;groot;
Keywords[pl]=czcionka;wielkość;mała;duża;
Keywords[pl_PL]=czcionka;wielkość;mała;duża;
Keywords[pt]=letra;tamanho;grande;pequena;
Keywords[pt_BR]=fonte;tamanho;pequena;grande;
Keywords[pt_PT]=letra;tamanho;grande;pequena;
Keywords[ro]=font;dimensiune;mic;mare;
Keywords[ro_RO]=font;dimensiune;mic;mare;
Keywords[ru]=шрифт;размер;маленький;большой;
Keywords[sk]=písmo;veľkosť;malé;veľké;
Keywords[sk_SK]=písmo;veľkosť;malé;veľké;
Keywords[sl]=pisava;velikost;majhna;velika;
Keywords[sl_SI]=pisava;velikost;majhna;velika;
Keywords[sq]=shkronjat;madhësia;i vogël;i madh;
Keywords[sr]=писмо;слова;фонт;величина;мало;велико;
Keywords[sr@Latn]=писмо;слова;фонт;величина;мало;велико;
Keywords[sr@ije]=писмо;слова;фонт;величина;мало;велико;
Keywords[sr@ijekavianlatin]=писмо;слова;фонт;величина;мало;велико;
Keywords[sr@latin]=писмо;слова;фонт;величина;мало;велико;
Keywords[sr_RS]=писмо;слова;фонт;величина;мало;велико;
Keywords[sr_RS@latin]=писмо;слова;фонт;величина;мало;велико;
Keywords[sv]=teckensnitt;storlek;små;stort;
Keywords[ta]=எழுத்துரு;அளவு;சிறிய;பெரிய;
Keywords[ta_LK]=எழுத்துரு;அளவு;சிறிய;பெரிய;
Keywords[tg]=шрифт;андоза;хурд;калон;
Keywords[th]=แบบอักษร;ขนาด;เล็ก;ใหญ่;
Keywords[th_TH]=แบบอักษร;ขนาด;เล็ก;ใหญ่;
Keywords[tr]=font;boyut;küçük;büyük;
Keywords[tr_TR]=font;boyut;küçük;büyük;
Keywords[uk]=шрифт;розмір;маленький;великий;
Keywords[uk_UA]=шрифт;розмір;маленький;великий;
Keywords[ur]=فونٹ، سائز، چھوٹا، بڑا;
Keywords[vi]=phông;cỡ;nhỏ;to;
Keywords[vi_VN]=phông;cỡ;nhỏ;to;
Keywords[zh_CN]=font;size;small;large;字体;字号;大小;放大;缩小;
Keywords[zh_HK]=font;size;small;large;字型;大小;小;大;
Keywords[zh_TW]=字型;尺寸;小;大;
Cinnamon-3.6.7/files/usr/share/applications/cinnamon-settings-tiling.desktop 0000664 0001750 0001750 00000043345 13215735076 026261 0 ustar fabio fabio [Desktop Entry]
Icon=cs-tiling
Exec=cinnamon-settings tiling
Type=Application
OnlyShowIn=X-Cinnamon;
Categories=Settings;
Name=Window Tiling
Name[am]=መስኮት መከመሪያ
Name[bg]=Показвай придвижването
Name[bg_BG]=Показвай придвижването
Name[ca]=Ajust de finestres
Name[ca@valencia]=Ajust de finestres
Name[ca_ES]=Ajust de finestres
Name[ca_ES@valencia]=Ajust de finestres
Name[cs]=Dláždění oken
Name[cs_CZ]=Dláždění oken
Name[cy]=Teilsio Ffenestri
Name[da]=Side om side-udlægning
Name[da_DK]=Side om side-udlægning
Name[de]=Fensterkacheln
Name[de_CH]=Fensterkacheln
Name[de_DE]=Fensterkacheln
Name[el]=Πλακίδια Παραθύρων
Name[es]=Ajuste de ventanas
Name[es_AR]=Ajuste de ventanas
Name[es_CL]=Ajuste de ventanas
Name[es_CO]=Ajuste de ventanas
Name[es_CR]=Ajuste de ventanas
Name[es_DO]=Ajuste de ventanas
Name[es_EC]=Ajuste de ventanas
Name[es_ES]=Ajuste de ventanas
Name[es_MX]=Ajuste de ventanas
Name[es_NI]=Ajuste de ventanas
Name[es_PA]=Ajuste de ventanas
Name[es_PE]=Ajuste de ventanas
Name[es_PR]=Ajuste de ventanas
Name[es_SV]=Ajuste de ventanas
Name[es_UY]=Ajuste de ventanas
Name[es_VE]=Ajuste de ventanas
Name[eu]=Leihoa lauzatzea
Name[fi]=Ikkunoiden ruudutus
Name[fi_FI]=Ikkunoiden ruudutus
Name[fr]=Juxtaposition de fenêtres
Name[fr_CA]=Alignement de fenêtres
Name[fr_FR]=Juxtaposition de fenêtres
Name[gd]=Leacadh nan uinneagan
Name[gl]=Xanelas en mosaico
Name[gl_ES]=Xanelas en mosaico
Name[hr]=Slaganje prozora
Name[hu]=Ablak mozaik
Name[hu_HU]=Ablak mozaik
Name[ia]=Quadrellatura de fenestra
Name[is]=Flísalagning glugga
Name[it]=Affiancamento finestre
Name[it_CH]=Affiancamento finestre
Name[it_IT]=Affiancamento finestre
Name[ja]=ウインドウタイル表示
Name[ja_JP]=ウインドウタイル表示
Name[ko]=창 타일링
Name[ko_KR]=창 타일링
Name[lt]=Langų išdėliojimas
Name[lt_LT]=Langų išdėliojimas
Name[nb]=Vindusorganisering
Name[nb_NO]=Vindusorganisering
Name[nds]=Fensterkacheln
Name[nl]=Tegelen van vensters
Name[nl_NL]=Tegelen van vensters
Name[oc]=Juxtaposicion de fenèstras
Name[pl]=Ułożenie Okna
Name[pl_PL]=Ułożenie Okna
Name[pt]=Arrumação de Janelas
Name[pt_BR]=Janelas em Mosaico
Name[pt_PT]=Arrumação de Janelas
Name[ro]=Tiling fereastră
Name[ro_RO]=Tiling fereastră
Name[ru]=Оконная кладка
Name[sk]=Dláždenie okien
Name[sk_SK]=Dláždenie okien
Name[sr]=Поплочавање прозора
Name[sr@Latn]=Поплочавање прозора
Name[sr@ije]=Поплочавање прозора
Name[sr@ijekavianlatin]=Поплочавање прозора
Name[sr@latin]=Поплочавање прозора
Name[sr_RS]=Поплочавање прозора
Name[sr_RS@latin]=Поплочавање прозора
Name[sv]=Ordna Fönster
Name[th]=การจัดวางหน้าต่าง
Name[th_TH]=การจัดวางหน้าต่าง
Name[tr]=Pencere Döşeme
Name[tr_TR]=Pencere Döşeme
Name[uk]=Віконна кладка
Name[uk_UA]=Віконна кладка
Name[ur]=ونڈو ٹائلنگ
Name[vi]=Lát Cửa sổ
Name[vi_VN]=Lát Cửa sổ
Name[zh_CN]=窗口平铺
Name[zh_HK]=視窗平舖
Name[zh_TW]=視窗平舖
Comment=Manage window tiling preferences
Comment[am]=የ መስኮት መደርደሪያ ምርጫዎች አስተዳዳሪ
Comment[be]=Кіраванне параметрамі мазаічнага размяшчэння вокнаў
Comment[be@latin]=Кіраванне параметрамі мазаічнага размяшчэння вокнаў
Comment[be_BY]=Кіраванне параметрамі мазаічнага размяшчэння вокнаў
Comment[bg]=Управление подредбата на прозорците
Comment[bg_BG]=Управление подредбата на прозорците
Comment[bs]=Upravljaj postavkama pločastog prikaza prozora
Comment[ca]=Gestioneu les preferències de mosaic de finestres
Comment[ca@valencia]=Administra les preferències de mosaic de finestres
Comment[ca_ES]=Gestioneu les preferències de mosaic de finestres
Comment[ca_ES@valencia]=Administra les preferències de mosaic de finestres
Comment[cs]=Nastavení dláždění oken
Comment[cs_CZ]=Nastavení dláždění oken
Comment[cy]=Rheoli dewisiadau teilsio ffenestri
Comment[da]=Administrér indstillinger for side om side-udlægning
Comment[da_DK]=Administrér indstillinger for side om side-udlægning
Comment[de]=Kacheleinstellungen der Fenster verwalten
Comment[de_CH]=Kacheleinstellungen der Fenster verwalten
Comment[de_DE]=Kacheleinstellungen der Fenster verwalten
Comment[el]=Διαχείριση προτιμήσεων τοποθέτησης παραθύρων ως πλακίδια
Comment[es]=Administrar las preferencias de ajuste de ventanas
Comment[es_AR]=Administrar las preferencias de ajuste de ventanas
Comment[es_CL]=Administrar las preferencias de ajuste de ventanas
Comment[es_CO]=Administrar las preferencias de ajuste de ventanas
Comment[es_CR]=Administrar las preferencias de ajuste de ventanas
Comment[es_DO]=Administrar las preferencias de ajuste de ventanas
Comment[es_EC]=Administrar las preferencias de ajuste de ventanas
Comment[es_ES]=Administrar las preferencias de ajuste de ventanas
Comment[es_MX]=Administrar las preferencias de ajuste de ventanas
Comment[es_NI]=Administrar las preferencias de ajuste de ventanas
Comment[es_PA]=Administrar las preferencias de ajuste de ventanas
Comment[es_PE]=Administrar las preferencias de ajuste de ventanas
Comment[es_PR]=Administrar las preferencias de ajuste de ventanas
Comment[es_SV]=Administrar las preferencias de ajuste de ventanas
Comment[es_UY]=Administrar las preferencias de ajuste de ventanas
Comment[es_VE]=Administrar las preferencias de ajuste de ventanas
Comment[eu]=Kudeatu leihoak lauzatzeko hobespenak
Comment[fi]=Muokkaa ikkunoiden ruudutuksen asetuksia
Comment[fi_FI]=Muokkaa ikkunoiden ruudutuksen asetuksia
Comment[fr]=Gérer les préférences de juxtaposition des fenêtres
Comment[fr_CA]=Gérer les préférences de juxtaposition des fenêtres
Comment[fr_FR]=Gérer les préférences de juxtaposition des fenêtres
Comment[gd]=Stiùirich roghainnean leacadh nan uinneagan
Comment[gl]=Administra as preferencias do mosaixo de xanelas
Comment[gl_ES]=Administra as preferencias do mosaixo de xanelas
Comment[hr]=Upravljajte osobitostima slaganja prozora
Comment[hu]=Ablak mozaik beállítások kezelése
Comment[hu_HU]=Ablak mozaik beállítások kezelése
Comment[ia]=Gerer le preferentias del pavimentation del fenestra
Comment[id]=Atur preferensi pengubinan jendela
Comment[id_ID]=Atur preferensi pengubinan jendela
Comment[is]=Sýsla með kjörstillingar fyrir uppröðun glugga
Comment[it]=Gestisci le preferenze di affiancamento delle finestre
Comment[it_CH]=Gestisci le preferenze di affiancamento delle finestre
Comment[it_IT]=Gestisci le preferenze di affiancamento delle finestre
Comment[ko]=창 타일링 설정 관리하기
Comment[ko_KR]=창 타일링 설정 관리하기
Comment[lt]=Tvarkyti langų išdėliojimo nuostatas
Comment[lt_LT]=Tvarkyti langų išdėliojimo nuostatas
Comment[ms]=Mengurus pilihan jubin tetingkap
Comment[ms_MY]=Mengurus pilihan jubin tetingkap
Comment[nb]=Håndter innstillinger for vindusorganisering
Comment[nb_NO]=Håndter innstillinger for vindusorganisering
Comment[nds]=Fensteranordnungseinstellungen verwalten
Comment[nl]=Voorkeuren beheren voor het tegelen van vensters
Comment[nl_NL]=Voorkeuren beheren voor het tegelen van vensters
Comment[pl]=Zarządzaj preferencjami kafelkowania okien
Comment[pl_PL]=Zarządzaj preferencjami kafelkowania okien
Comment[pt]=Gerir as definições de arrumação de janelas
Comment[pt_BR]=Gerenciar as definições de mosaico de janelas
Comment[pt_PT]=Gerir as definições de arrumação de janelas
Comment[ro]=Gestionează preferințele pentru tilingul ferestrelor
Comment[ro_RO]=Gestionează preferințele pentru tilingul ferestrelor
Comment[ru]=Управление параметрами мозаичного размещения окон
Comment[sk]=Spravovať predvoľby dláždenia okien
Comment[sk_SK]=Spravovať predvoľby dláždenia okien
Comment[sl]=Upravljajte z možnostmi razpostavljanja oken
Comment[sl_SI]=Upravljajte z možnostmi razpostavljanja oken
Comment[sr]=Управљање поставкама слагања прозора
Comment[sr@Latn]=Управљање поставкама слагања прозора
Comment[sr@ije]=Управљање поставкама слагања прозора
Comment[sr@ijekavianlatin]=Управљање поставкама слагања прозора
Comment[sr@latin]=Управљање поставкама слагања прозора
Comment[sr_RS]=Управљање поставкама слагања прозора
Comment[sr_RS@latin]=Управљање поставкама слагања прозора
Comment[sv]=Hantera inställningar för radning av fönster
Comment[tg]=Идоракунии хусусиятҳои лавҳабандии равзанаҳо
Comment[th]=จัดการการตั้งค่าการจัดหน้าต่างแบบกระเบื้องขั้นสูง
Comment[th_TH]=จัดการการตั้งค่าการจัดหน้าต่างแบบกระเบื้องขั้นสูง
Comment[tr]=Pencere döşeme seçeneklerini yönet
Comment[tr_TR]=Pencere döşeme seçeneklerini yönet
Comment[uk]=Керування прилипанням вікон
Comment[uk_UA]=Керування прилипанням вікон
Comment[ur]=ونڈو ٹائلنگ کی ترجیحات کا انتظام کریں
Comment[vi]=Quản lý tuỳ thích lát cửa sổ
Comment[vi_VN]=Quản lý tuỳ thích lát cửa sổ
Comment[zh_CN]=管理窗口平铺样式
Comment[zh_HK]=管理視窗平舖喜好設定
Comment[zh_TW]=管理視窗平舖偏好設定
Keywords=window;tile;flip;tiling;snap;snapping;
Keywords[am]=መስኮት፡ መደርደሪያ ፡ መገልበጫ፡ መደርደሪያዎች፡ መቁረጫ፡ መቁረጫዎች;
Keywords[be]=акно;пазіцыя;прыцягненне;прымацаванне;абароненая пазіцыя;абароненае прымацаванне;
Keywords[be@latin]=акно;пазіцыя;прыцягненне;прымацаванне;абароненая пазіцыя;абароненае прымацаванне;
Keywords[be_BY]=акно;пазіцыя;прыцягненне;прымацаванне;абароненая пазіцыя;абароненае прымацаванне;
Keywords[bg]=прозорец;подреждане;обръщане;прилепване;
Keywords[bg_BG]=прозорец;подреждане;обръщане;прилепване;
Keywords[bs]=prozor;složi;pomakni;slaganje;poravnaj;poravnanje;
Keywords[ca]=finestra;rajola;voltejat;mosaic;ajustar;ajustament;
Keywords[ca@valencia]=finestra;taulell;voltejat;mosaic;ajustar;ajust;
Keywords[ca_ES]=finestra;rajola;voltejat;mosaic;ajustar;ajustament;
Keywords[ca_ES@valencia]=finestra;taulell;voltejat;mosaic;ajustar;ajust;
Keywords[cs]=okno;dlaždice;přetočení;dláždění;přichytit;přichycení;
Keywords[cs_CZ]=okno;dlaždice;přetočení;dláždění;přichytit;přichycení;
Keywords[cy]=ffenestr;teil;ffeil;teilsio;snap;snapio;
Keywords[da]=vindue;flise;vend;side om side;fastgør;fastgørelse;
Keywords[da_DK]=vindue;flise;vend;side om side;fastgør;fastgørelse;
Keywords[de]=Fenster;Kacheln;Umschalten;Kacheln;Einrasten;Einrasten;
Keywords[de_CH]=Fenster;Kacheln;Umschalten;Kacheln;Einrasten;Einrasten;
Keywords[de_DE]=Fenster;Kacheln;Umschalten;Kacheln;Einrasten;Einrasten;
Keywords[el]=παράθυρο;πλακίδιο;αναστροφή;τοποθέτηση ως πλακίδια;λαβή;συγκράτηση;
Keywords[es]=ventana;ajuste;volteado;ajustar;anclado;anclar;
Keywords[es_AR]=ventana;ajuste;volteado;ajustar;anclado;anclar;
Keywords[es_CL]=ventana;ajuste;volteado;ajustar;anclado;anclar;
Keywords[es_CO]=ventana;ajuste;volteado;ajustar;anclado;anclar;
Keywords[es_CR]=ventana;ajuste;volteado;ajustar;anclado;anclar;
Keywords[es_DO]=ventana;ajuste;volteado;ajustar;anclado;anclar;
Keywords[es_EC]=ventana;ajuste;volteado;ajustar;anclado;anclar;
Keywords[es_ES]=ventana;ajuste;volteado;ajustar;anclado;anclar;
Keywords[es_MX]=ventana;ajuste;volteado;ajustar;anclado;anclar;
Keywords[es_NI]=ventana;ajuste;volteado;ajustar;anclado;anclar;
Keywords[es_PA]=ventana;ajuste;volteado;ajustar;anclado;anclar;
Keywords[es_PE]=ventana;ajuste;volteado;ajustar;anclado;anclar;
Keywords[es_PR]=ventana;ajuste;volteado;ajustar;anclado;anclar;
Keywords[es_SV]=ventana;ajuste;volteado;ajustar;anclado;anclar;
Keywords[es_UY]=ventana;ajuste;volteado;ajustar;anclado;anclar;
Keywords[es_VE]=ventana;ajuste;volteado;ajustar;anclado;anclar;
Keywords[eu]=leihoa;lauza;irauli;lauzatzea;atxiki;atxikitzea;
Keywords[fi]=ikkuna;ruutu;käännös;ruudutus;napsauttaa;napsautus;
Keywords[fi_FI]=ikkuna;ruutu;käännös;ruudutus;napsauttaa;napsautus;
Keywords[fr]=fenêtre;juxtaposition;basculer;ajuster;ajustement;
Keywords[fr_CA]=fenêtre;juxtaposition;basculer;aligner;alignement;
Keywords[fr_FR]=fenêtre;juxtaposition;basculer;ajuster;ajustement;
Keywords[gd]=uinneag;leac;flipeadh;flip;leacadh;greimich;greimeachadh;window;tile;flip;tiling;snap;snapping;
Keywords[gl]=xanela;baldosa;volteado;mosaico;axustar;axuste;
Keywords[gl_ES]=xanela;baldosa;volteado;mosaico;axustar;axuste;
Keywords[hr]=prozor;složi;pomakni;slaganje;poravnaj;poravnanje;
Keywords[hu]=ablak;mozaik;forgatás;mozaikba rendezés;igazított;igazítás;
Keywords[hu_HU]=ablak;mozaik;forgatás;mozaikba rendezés;igazított;igazítás;
Keywords[ia]=fenestra;quadrello;colpar legiermente;quadrellatura;fixar;fixation;
Keywords[id]=jendela;mode ubin;balik;mengubin;jepit;menjepit;
Keywords[id_ID]=jendela;mode ubin;balik;mengubin;jepit;menjepit;
Keywords[is]=gluggi;flísar;fletta;flísaleggja;grip;grípa;
Keywords[it]=finestra;affianca;vibra;disponi;aggancia;agganciamento;
Keywords[it_CH]=finestra;affianca;vibra;disponi;aggancia;agganciamento;
Keywords[it_IT]=finestra;affianca;vibra;disponi;aggancia;agganciamento;
Keywords[ja]=ウィンドウ、タイル、フリップ、タイル表示、スナップ、スナップ化;
Keywords[ja_JP]=ウィンドウ、タイル、フリップ、タイル表示、スナップ、スナップ化;
Keywords[ko]=창;타일;뒤집기;타일링;스냅;스내핑;
Keywords[ko_KR]=창;타일;뒤집기;타일링;스냅;스내핑;
Keywords[ms]=tetingkap;jubin;kalij;penjubinan;lekap;pelekapan;
Keywords[ms_MY]=tetingkap;jubin;kalij;penjubinan;lekap;pelekapan;
Keywords[nb]=vindu;flis;snu;flislegging;fest;feste;
Keywords[nb_NO]=vindu;flis;snu;flislegging;fest;feste;
Keywords[nds]=Fenster;Kachel;schnipp;knicken;abgeknickt;
Keywords[nl]=venster;tegelen;omdraaien;tegelen;uitlijnen;
Keywords[nl_NL]=venster;tegelen;omdraaien;tegelen;uitlijnen;
Keywords[om]=Foddaa;dalga tuula;fuggisa;dalga tuuluu;xaaxxuu;xaxxise;
Keywords[pl]=okno;płytka;odwracanie;kafelkowanie;przystawka;przyciąganie;
Keywords[pl_PL]=okno;płytka;odwracanie;kafelkowanie;przystawka;przyciąganie;
Keywords[pt]=janela;mosaico;inversão;ajuste;magnetismo;ajustar;
Keywords[pt_BR]=janela;mosaico;flip;ativar mosaico;encaixar;ativar encaixe;
Keywords[pt_PT]=janela;mosaico;inversão;ajuste;magnetismo;ajustar;
Keywords[ro]=fereastră;tile;întoarce;tiling;snap;snapping;
Keywords[ro_RO]=fereastră;tile;întoarce;tiling;snap;snapping;
Keywords[ru]=окно;позиция;притяжение;прикрепление;защищенная позиция;защищенное прикрепление;
Keywords[sk]=okno;dlaždice;pretočenie;dláždenie;prichytiť;prichytenie;
Keywords[sk_SK]=okno;dlaždice;pretočenie;dláždenie;prichytiť;prichytenie;
Keywords[sl]=okno;ploščica;zrcali;razpostavljanje;pripni;pripenjanje;
Keywords[sl_SI]=okno;ploščica;zrcali;razpostavljanje;pripni;pripenjanje;
Keywords[sr]=прозор;сложи;преокрени;слагање;хватање;поравнање;
Keywords[sr@Latn]=прозор;сложи;преокрени;слагање;хватање;поравнање;
Keywords[sr@ije]=прозор;сложи;преокрени;слагање;хватање;поравнање;
Keywords[sr@ijekavianlatin]=прозор;сложи;преокрени;слагање;хватање;поравнање;
Keywords[sr@latin]=прозор;сложи;преокрени;слагање;хватање;поравнање;
Keywords[sr_RS]=прозор;сложи;преокрени;слагање;хватање;поравнање;
Keywords[sr_RS@latin]=прозор;сложи;преокрени;слагање;хватање;поравнање;
Keywords[sv]=fönster;rada;vänd;radning;fästa;fästning;
Keywords[tg]=равзана;лавҳа;табдил;лавҳабандӣ;часпонидан;часпиш;
Keywords[th]=หน้าต่าง;กระเบื้อง;พลิก;การจัดกระเบื้อง;สแนป;การสแนป;
Keywords[th_TH]=หน้าต่าง;กระเบื้อง;พลิก;การจัดกระเบื้อง;สแนป;การสแนป;
Keywords[tr]=pencere;döşe;çevirme;döşeme;yasla;yaslama;
Keywords[tr_TR]=pencere;döşe;çevirme;döşeme;yasla;yaslama;
Keywords[uk]=вікно;позиція;притягування;прикріплення;захищена позиція;захищене прикріплення;
Keywords[uk_UA]=вікно;позиція;притягування;прикріплення;захищена позиція;захищене прикріплення;
Keywords[ur]=ونڈو، عنوان، ٹائٹل، فلپ، ٹائلنگ، سنیپ;
Keywords[vi]=cửa sổ;ô;lật;lát;bám;bám dính;
Keywords[vi_VN]=cửa sổ;ô;lật;lát;bám;bám dính;
Keywords[zh_CN]=window;tile;flip;tiling;snap;snapping;窗口;平铺;吸附;
Keywords[zh_HK]=視窗;平舖;翻轉;平舖;吸附;吸附;
Keywords[zh_TW]=視窗;平舖;翻躍;平舖;吸附;吸附;
Cinnamon-3.6.7/files/usr/share/applications/cinnamon-settings-themes.desktop 0000664 0001750 0001750 00000036653 13215735076 026264 0 ustar fabio fabio [Desktop Entry]
Icon=cs-themes
Exec=cinnamon-settings themes
Type=Application
OnlyShowIn=X-Cinnamon;
Categories=Settings;
Name=Themes
Name[af]=Temas
Name[am]=ገፅታዎች
Name[ar]=السِمات
Name[ast]=Temes
Name[az]=Mövzular
Name[az_AZ]=Mövzular
Name[be]=Тэмы
Name[be@latin]=Тэмы
Name[be_BY]=Тэмы
Name[bg]=Теми
Name[bg_BG]=Теми
Name[bn]=থিমসমূহ
Name[bn_IN]=থিমসমূহ
Name[bs]=Teme
Name[ca]=Temes
Name[ca@valencia]=Temes
Name[ca_ES]=Temes
Name[ca_ES@valencia]=Temes
Name[crh]=temalar
Name[cs]=Motivy
Name[cs_CZ]=Motivy
Name[csb]=Mòtiwë
Name[cy]=Themâu
Name[da]=Temaer
Name[da_DK]=Temaer
Name[de]=Themen
Name[de_CH]=Themen
Name[de_DE]=Themen
Name[el]=Θέματα
Name[eo]=Etosoj
Name[es]=Temas
Name[es_AR]=Temas
Name[es_CL]=Temas
Name[es_CO]=Temas
Name[es_CR]=Temas
Name[es_DO]=Temas
Name[es_EC]=Temas
Name[es_ES]=Temas
Name[es_MX]=Temas
Name[es_NI]=Temas
Name[es_PA]=Temas
Name[es_PE]=Temas
Name[es_PR]=Temas
Name[es_SV]=Temas
Name[es_UY]=Temas
Name[es_VE]=Temas
Name[et]=Teemad
Name[et_EE]=Teemad
Name[eu]=Gaiak
Name[fa]=قالبها
Name[fa_AF]=قالبها
Name[fa_IR]=قالبها
Name[fi]=Teemat
Name[fi_FI]=Teemat
Name[fil]=Mga Tema
Name[fr]=Thèmes
Name[fr_CA]=Thèmes
Name[fr_FR]=Thèmes
Name[fy]=Tema's
Name[ga]=Téamaí
Name[gd]=Ùrlaran
Name[gl]=Temas
Name[gl_ES]=Temas
Name[he]=ערכות
Name[he_IL]=ערכות
Name[hi]=थीम्स
Name[hr]=Teme
Name[hu]=Témák
Name[hu_HU]=Témák
Name[hy]=Թեմաներ
Name[ia]=Themas
Name[id]=Tema
Name[id_ID]=Tema
Name[is]=Þemu
Name[it]=Temi
Name[it_CH]=Temi
Name[it_IT]=Temi
Name[ja]=テーマ
Name[ja_JP]=テーマ
Name[kab]=Isental
Name[kk]=Нақыштар
Name[km]=ស្បែក
Name[km_KH]=ស្បែក
Name[ko]=테마
Name[ko_KR]=테마
Name[li]=Thema's
Name[lo]=ລັກສະນະ
Name[lo_LA]=ລັກສະນະ
Name[lt]=Stiliai
Name[lt_LT]=Stiliai
Name[lv]=Motīvi
Name[lv_LV]=Motīvi
Name[ml]=രംഗവിധാനങ്ങൾ
Name[mr]=थीम्स
Name[ms]=Tema
Name[ms_MY]=Tema
Name[nb]=Temaer
Name[nb_NO]=Temaer
Name[nds]=Themen
Name[ne]=थेमहरु
Name[nl]=Thema's
Name[nl_NL]=Thema's
Name[nn]=Drakter
Name[nn_NO]=Drakter
Name[oc]=Tèmas
Name[om]=Bifoota
Name[pa]=ਥੀਮ
Name[pl]=Motywy
Name[pl_PL]=Motywy
Name[pt]=Temas
Name[pt_BR]=Temas
Name[pt_PT]=Temas
Name[ro]=Teme
Name[ro_RO]=Teme
Name[ru]=Темы
Name[rue]=Теми
Name[sc]=Temas
Name[si]=තේමාවන්
Name[sk]=Motívy
Name[sk_SK]=Motívy
Name[sl]=Teme
Name[sl_SI]=Teme
Name[so]=Siimyadda
Name[sq]=Temat
Name[sr]=Теме
Name[sr@Latn]=Teme
Name[sr@ije]=Теме
Name[sr@ijekavianlatin]=Теме
Name[sr@latin]=Teme
Name[sr_RS]=Теме
Name[sr_RS@latin]=Teme
Name[sv]=Teman
Name[ta]=தள வடிவங்கள்
Name[ta_LK]=தள வடிவங்கள்
Name[te]=అలంకారాలు
Name[tg]=Мавзӯҳо
Name[th]=ชุดตกแต่ง
Name[th_TH]=ชุดตกแต่ง
Name[tl]=Mga Tema
Name[tr]=Temalar
Name[tr_TR]=Temalar
Name[ts]=Nkongomelo
Name[tt]=Темы
Name[tt@iqtelif]=Темы
Name[uk]=Теми
Name[uk_UA]=Теми
Name[ur]=تھیمز
Name[uz]=Ташқи кўринишлар
Name[uz@cyrillic]=Ташқи кўринишлар
Name[vi]=Giao diện
Name[vi_VN]=Giao diện
Name[xh]=Umxholo
Name[zh_CN]=主题
Name[zh_HK]=佈景主題
Name[zh_TW]=佈景主題
Comment=Manage themes to change how your desktop looks
Comment[am]=የ እርስዎ ዴስክቶፕ ገጽታ ምን እንደሚመስል መቆጣጠሪያ
Comment[ar]=إدارة السمات اتغيير مظهر سطح المكتب
Comment[ast]=Alministra los temes y camuda l'aspeutu del to escritoriu
Comment[be]=Кіраванне тэмамі знешняга выгляду працоўнага стала
Comment[be@latin]=Кіраванне тэмамі знешняга выгляду працоўнага стала
Comment[be_BY]=Кіраванне тэмамі знешняга выгляду працоўнага стала
Comment[bg]=Управлявайте темите, за да промените вида на вашия работен плот
Comment[bg_BG]=Управлявайте темите, за да промените вида на вашия работен плот
Comment[bs]=Upravljaj temama da promijenite kako vaš desktop izgleda
Comment[ca]=Gestioneu els temes per canviar l'aparença del vostre escriptori
Comment[ca@valencia]=Administra els temes per a canviar l'aspecte de l'escriptori
Comment[ca_ES]=Gestioneu els temes per canviar l'aparença del vostre escriptori
Comment[ca_ES@valencia]=Administra els temes per a canviar l'aspecte de l'escriptori
Comment[cs]=Nastavení témat, která mění vzhled vašeho prostředí
Comment[cs_CZ]=Nastavení témat, která mění vzhled vašeho prostředí
Comment[cy]=Rheoli themâu er mwyn newid sut olwg sydd ar eich sgrin
Comment[da]=Administrér temaer for at ændre, hvordan dit skrivebord ser ud
Comment[da_DK]=Administrér temaer for at ændre, hvordan dit skrivebord ser ud
Comment[de]=Themen verwalten, um das Aussehen des Schreibtischs zu verändern
Comment[de_CH]=Themen verwalten, um das Aussehen des Schreibtischs zu verändern
Comment[de_DE]=Themen verwalten, um das Aussehen des Schreibtischs zu verändern
Comment[el]=Ρυθμίστε τα θέματα και αλλάξτε την εμφάνιση του υπολογιστή
Comment[es]=Administrar temas para cambiar el aspecto del escritorio
Comment[es_AR]=Administrar temas para cambiar el aspecto del escritorio
Comment[es_CL]=Administrar temas para cambiar el aspecto del escritorio
Comment[es_CO]=Administrar temas para cambiar el aspecto del escritorio
Comment[es_CR]=Administrar temas para cambiar el aspecto del escritorio
Comment[es_DO]=Administrar temas para cambiar el aspecto del escritorio
Comment[es_EC]=Administrar temas para cambiar el aspecto del escritorio
Comment[es_ES]=Administrar temas para cambiar el aspecto del escritorio
Comment[es_MX]=Administrar temas para cambiar el aspecto del escritorio
Comment[es_NI]=Administrar temas para cambiar el aspecto del escritorio
Comment[es_PA]=Administrar temas para cambiar el aspecto del escritorio
Comment[es_PE]=Administrar temas para cambiar el aspecto del escritorio
Comment[es_PR]=Administrar temas para cambiar el aspecto del escritorio
Comment[es_SV]=Administrar temas para cambiar el aspecto del escritorio
Comment[es_UY]=Administrar temas para cambiar el aspecto del escritorio
Comment[es_VE]=Administrar temas para cambiar el aspecto del escritorio
Comment[eu]=Kudeatu gaiak zure mahaigainaren itxura aldatzeko
Comment[fi]=Muuta työpöydän ulkonäköä teemojen avulla
Comment[fi_FI]=Muuta työpöydän ulkonäköä teemojen avulla
Comment[fr]=Gérer les thèmes pour changer l'apparence du bureau
Comment[fr_CA]=Gérer les thèmes pour changer l'apparence de votre bureau
Comment[fr_FR]=Gérer les thèmes pour changer l'apparence du bureau
Comment[gd]=Stiùirich ùrlaran gus an coltas a tha air an deasg agad atharrachadh
Comment[gl]=Administra os temas do escritorio
Comment[gl_ES]=Administra os temas do escritorio
Comment[hr]=Upravljajte temama za promjenu izgleda vaše radne površine
Comment[hu]=Témák kezelése az asztal kinézetének megváltoztatásához
Comment[hu_HU]=Témák kezelése az asztal kinézetének megváltoztatásához
Comment[ia]=Administrar themas pro cambiar como tu scriptorio appare
Comment[id]=Mengatur tema untuk mengubah tampilan desktop anda
Comment[id_ID]=Mengatur tema untuk mengubah tampilan desktop anda
Comment[is]=Sýsla með þemu til að breyta útliti skjáborðsins
Comment[it]=Gestisci i temi per cambiare l'aspetto dek desktop
Comment[it_CH]=Gestisci i temi per cambiare l'aspetto dek desktop
Comment[it_IT]=Gestisci i temi per cambiare l'aspetto dek desktop
Comment[ko]=테마 관리는 여러분의 컴퓨터를 달라 보이게 할 겁니다
Comment[ko_KR]=테마 관리는 여러분의 컴퓨터를 달라 보이게 할 겁니다
Comment[lt]=Tvarkykite stilius darbalaukio vaizdui pakeisti
Comment[lt_LT]=Tvarkykite stilius darbalaukio vaizdui pakeisti
Comment[lv]=Pārvaldīt motīvus, lai mainītu jūsu darbvirsmas izskatu
Comment[lv_LV]=Pārvaldīt motīvus, lai mainītu jūsu darbvirsmas izskatu
Comment[ms]=Mengurus tema untuk tukar bagaimana rupa desktop anda
Comment[ms_MY]=Mengurus tema untuk tukar bagaimana rupa desktop anda
Comment[nb]=Tilpass tema for å endre hvordan skrivebordet ser ut
Comment[nb_NO]=Tilpass tema for å endre hvordan skrivebordet ser ut
Comment[nds]=Themen verwalten, um den Desktop auf Ihre Bedürfnisse einzurichten
Comment[nl]=Thema's beheren om te veranderen hoe uw bureaublad eruit ziet
Comment[nl_NL]=Thema's beheren om te veranderen hoe uw bureaublad eruit ziet
Comment[pl]=Zarządzaj motywami, aby zmienić wygląd pulpitu
Comment[pl_PL]=Zarządzaj motywami, aby zmienić wygląd pulpitu
Comment[pt]=Gerir temas para mudar como o seu ambiente de trabalho aparenta
Comment[pt_BR]=Gerenciar temas para mudar aparência em sua área de trabalho
Comment[pt_PT]=Gerir temas para mudar como o seu ambiente de trabalho aparenta
Comment[ro]=Gestionează temele pentru a schimba aspectul desktopului
Comment[ro_RO]=Gestionează temele pentru a schimba aspectul desktopului
Comment[ru]=Управление темами внешнего вида рабочего стола
Comment[sk]=Spravovať motívy na zmenu vzhľadu prostredia
Comment[sk_SK]=Spravovať motívy na zmenu vzhľadu prostredia
Comment[sl]=Upravljajte s temami za spreminjanje izgleda vašega namizja
Comment[sl_SI]=Upravljajte s temami za spreminjanje izgleda vašega namizja
Comment[sq]=Menaxhoni temat për të ndryshuar si duket desktopi juaj
Comment[sr]=Управљајте темама да измените изглед радне површи
Comment[sr@Latn]=Управљајте темама да измените изглед радне површи
Comment[sr@ije]=Управљајте темама да измените изглед радне површи
Comment[sr@ijekavianlatin]=Управљајте темама да измените изглед радне површи
Comment[sr@latin]=Управљајте темама да измените изглед радне површи
Comment[sr_RS]=Управљајте темама да измените изглед радне површи
Comment[sr_RS@latin]=Управљајте темама да измените изглед радне површи
Comment[sv]=Hantera teman för att ändra hur ditt skrivbord ser ut
Comment[tg]=Идоракунии мавзӯҳо ва намуди зоҳирии мизи корӣ
Comment[th]=จัดการชุดตกแต่งเพื่อเปลี่ยนว่าจะให้พื้นโต๊ะของคุณมีมุมมองอย่างไรบ้าง
Comment[th_TH]=จัดการชุดตกแต่งเพื่อเปลี่ยนว่าจะให้พื้นโต๊ะของคุณมีมุมมองอย่างไรบ้าง
Comment[tr]=Masaüstü görüntünüzü özelleştirmek için temaları yönetin
Comment[tr_TR]=Masaüstü görüntünüzü özelleştirmek için temaları yönetin
Comment[uk]=Керуйте темами, щоб змінити вигляд Вашої стільниці
Comment[uk_UA]=Керуйте темами, щоб змінити вигляд Вашої стільниці
Comment[vi]=Quản lý chủ đề để thay đổi dáng vẻ màn hình làm việc
Comment[vi_VN]=Quản lý chủ đề để thay đổi dáng vẻ màn hình làm việc
Comment[zh_CN]=管理主体以改变您桌面的外貌
Comment[zh_HK]=管理佈景主題以變更你的桌面外觀
Comment[zh_TW]=管理佈景主題以變更您的桌面外觀
Keywords=themes;style;
Keywords[am]=ገጽታዎች ፡ ዘዴ;
Keywords[ar]=سمات، طراز;
Keywords[ast]=temes;estilu;
Keywords[be]=тэмы;стыль;
Keywords[be@latin]=тэмы;стыль;
Keywords[be_BY]=тэмы;стыль;
Keywords[bg]=тема;стил;
Keywords[bg_BG]=тема;стил;
Keywords[bs]=teme;stilovi;
Keywords[ca]=temes;estil;
Keywords[ca@valencia]=temes;estil;
Keywords[ca_ES]=temes;estil;
Keywords[ca_ES@valencia]=temes;estil;
Keywords[cs]=motivy;styl;
Keywords[cs_CZ]=motivy;styl;
Keywords[cy]=themâu;arddulliau;
Keywords[da]=temaer;stil;
Keywords[da_DK]=temaer;stil;
Keywords[de]=Themen;Thema;themes;Stilarten;Style;Design;Aussehen;Darstellung;Erscheinungsbild;Motiv;
Keywords[de_CH]=Themen;Thema;themes;Stilarten;Style;Design;Aussehen;Darstellung;Erscheinungsbild;Motiv;
Keywords[de_DE]=Themen;Thema;themes;Stilarten;Style;Design;Aussehen;Darstellung;Erscheinungsbild;Motiv;
Keywords[el]=θέμα;εμφάνιση;στύλ;
Keywords[es]=temas;estilo;
Keywords[es_AR]=temas;estilo;
Keywords[es_CL]=temas;estilo;
Keywords[es_CO]=temas;estilo;
Keywords[es_CR]=temas;estilo;
Keywords[es_DO]=temas;estilo;
Keywords[es_EC]=temas;estilo;
Keywords[es_ES]=temas;estilo;
Keywords[es_MX]=temas;estilo;
Keywords[es_NI]=temas;estilo;
Keywords[es_PA]=temas;estilo;
Keywords[es_PE]=temas;estilo;
Keywords[es_PR]=temas;estilo;
Keywords[es_SV]=temas;estilo;
Keywords[es_UY]=temas;estilo;
Keywords[es_VE]=temas;estilo;
Keywords[et]=teemad;stiil;
Keywords[et_EE]=teemad;stiil;
Keywords[eu]=gaiak;estiloa;
Keywords[fi]=teemat;tyyli;
Keywords[fi_FI]=teemat;tyyli;
Keywords[fr]=thèmes;style;
Keywords[fr_CA]=thèmes;style;
Keywords[fr_FR]=thèmes;style;
Keywords[ga]=téamaí;stíl;
Keywords[gd]=tèamaichean;stoidhle;
Keywords[gl]=temas;estilo;
Keywords[gl_ES]=temas;estilo;
Keywords[hr]=teme;izgled;
Keywords[hu]=témák;stílus;
Keywords[hu_HU]=témák;stílus;
Keywords[ia]=themas;stilo;
Keywords[id]=tema;gaya;
Keywords[id_ID]=tema;gaya;
Keywords[is]=þemu;stíll;
Keywords[it]=tema;stile;
Keywords[it_CH]=tema;stile;
Keywords[it_IT]=tema;stile;
Keywords[ja]=テーマ、スタイル;
Keywords[ja_JP]=テーマ、スタイル;
Keywords[ka]=თემები;სტილი;
Keywords[ko]=테마;스타일;
Keywords[ko_KR]=테마;스타일;
Keywords[lv]=motīvi;stils;
Keywords[lv_LV]=motīvi;stils;
Keywords[ms]=tema;gaya;
Keywords[ms_MY]=tema;gaya;
Keywords[nb]=temaer;stil;
Keywords[nb_NO]=temaer;stil;
Keywords[nds]=Themen;Stil;
Keywords[nl]=thema's;stijl;
Keywords[nl_NL]=thema's;stijl;
Keywords[om]=dhamsawwan;haalata;
Keywords[pl]=motywy;style;
Keywords[pl_PL]=motywy;style;
Keywords[pt]=temas;estilo;
Keywords[pt_BR]=temas;estilo;
Keywords[pt_PT]=temas;estilo;
Keywords[ro]=teme;stil;
Keywords[ro_RO]=teme;stil;
Keywords[ru]=темы;стиль;
Keywords[sk]=motívy;témy;štýl;
Keywords[sk_SK]=motívy;témy;štýl;
Keywords[sl]=teme;slog;
Keywords[sl_SI]=teme;slog;
Keywords[sq]=temat;stili;
Keywords[sr]=тема;начин приказа;
Keywords[sr@Latn]=тема;начин приказа;
Keywords[sr@ije]=тема;начин приказа;
Keywords[sr@ijekavianlatin]=тема;начин приказа;
Keywords[sr@latin]=тема;начин приказа;
Keywords[sr_RS]=тема;начин приказа;
Keywords[sr_RS@latin]=тема;начин приказа;
Keywords[sv]=tema;stil;
Keywords[ta]=அலங்காரங்கள்;பாணி;
Keywords[ta_LK]=அலங்காரங்கள்;பாணி;
Keywords[tg]=мавзӯъ;сабк;
Keywords[th]=ชุดตกแต่ง;รูปแบบ;
Keywords[th_TH]=ชุดตกแต่ง;รูปแบบ;
Keywords[tr]=temalar;stiller;
Keywords[tr_TR]=temalar;stiller;
Keywords[uk]=теми;стиль;
Keywords[uk_UA]=теми;стиль;
Keywords[ur]=شکل(theme)، انداز (style);
Keywords[vi]=chủ đề;kiểu dáng;
Keywords[vi_VN]=chủ đề;kiểu dáng;
Keywords[zh_CN]=主题,样式;
Keywords[zh_HK]=佈景主題;樣式;
Keywords[zh_TW]=佈景主題;樣式;
Cinnamon-3.6.7/files/usr/share/applications/cinnamon-settings-default.desktop 0000664 0001750 0001750 00000074575 13215735076 026430 0 ustar fabio fabio [Desktop Entry]
Icon=cs-default-applications
Exec=cinnamon-settings default
Type=Application
OnlyShowIn=X-Cinnamon;
Categories=Settings;
Name=Preferred Applications
Name[am]=የመረጥኩዋቸው መተግበሪያዎች
Name[ar]=التطبيقات المفضّلة
Name[ast]=Aplicaciones preferíes
Name[be]=Пераважныя дастасаванні
Name[be@latin]=Пераважныя дастасаванні
Name[be_BY]=Пераважныя дастасаванні
Name[bg]=Предпочитани програми
Name[bg_BG]=Предпочитани програми
Name[bs]=Preferirane aplikacije
Name[ca]=Aplicacions preferides
Name[ca@valencia]=Aplicacions preferides
Name[ca_ES]=Aplicacions preferides
Name[ca_ES@valencia]=Aplicacions preferides
Name[cs]=Preferované aplikace
Name[cs_CZ]=Preferované aplikace
Name[cy]=Rhaglenni Dewisol
Name[da]=Foretrukne programmer
Name[da_DK]=Foretrukne programmer
Name[de]=Bevorzugte Anwendungen
Name[de_CH]=Bevorzugte Anwendungen
Name[de_DE]=Bevorzugte Anwendungen
Name[el]=Προτιμώμενες Εφαρμογές
Name[eo]=Preferaj Aplikaĵoj
Name[es]=Aplicaciones preferidas
Name[es_AR]=Aplicaciones preferidas
Name[es_CL]=Aplicaciones preferidas
Name[es_CO]=Aplicaciones preferidas
Name[es_CR]=Aplicaciones preferidas
Name[es_DO]=Aplicaciones preferidas
Name[es_EC]=Aplicaciones preferidas
Name[es_ES]=Aplicaciones preferidas
Name[es_MX]=Aplicaciones preferidas
Name[es_NI]=Aplicaciones preferidas
Name[es_PA]=Aplicaciones preferidas
Name[es_PE]=Aplicaciones preferidas
Name[es_PR]=Aplicaciones preferidas
Name[es_SV]=Aplicaciones preferidas
Name[es_UY]=Aplicaciones preferidas
Name[es_VE]=Aplicaciones preferidas
Name[et]=Eelistatud rakendused
Name[et_EE]=Eelistatud rakendused
Name[eu]=Hobetsitako aplikazioak
Name[fi]=Oletussovellukset
Name[fi_FI]=Oletussovellukset
Name[fr]=Applications préférées
Name[fr_CA]=Applications préférées
Name[fr_FR]=Applications préférées
Name[gd]=Aplacaidean as fhearr leat
Name[gl]=Aplicativos preferidos
Name[gl_ES]=Aplicativos preferidos
Name[hr]=Željene aplikacije
Name[hu]=Alapértelmezett alkalmazások
Name[hu_HU]=Alapértelmezett alkalmazások
Name[ia]=Applicationes preferite
Name[id]=Aplikasi Pilihan
Name[id_ID]=Aplikasi Pilihan
Name[is]=Sjálfgefin forrit
Name[it]=Applicazioni preferite
Name[it_CH]=Applicazioni preferite
Name[it_IT]=Applicazioni preferite
Name[ja]=お気に入りのアプリケーション
Name[ja_JP]=お気に入りのアプリケーション
Name[kab]=Isnasen imenyafen
Name[ko]=기본 애플리케이션
Name[ko_KR]=기본 애플리케이션
Name[lo]=ໂປຣແກຣມທີ່ເລືອກ
Name[lo_LA]=ໂປຣແກຣມທີ່ເລືອກ
Name[lt]=Pageidaujamos programos
Name[lt_LT]=Pageidaujamos programos
Name[lv]=Noklusētās programmas
Name[lv_LV]=Noklusētās programmas
Name[ms]=Aplikasi Digemari
Name[ms_MY]=Aplikasi Digemari
Name[nb]=Foretrukne programmer
Name[nb_NO]=Foretrukne programmer
Name[nds]=Bevorzugte Anwendungen
Name[nl]=Voorkeurstoepassingen
Name[nl_NL]=Voorkeurstoepassingen
Name[oc]=Aplicacions preferidas
Name[pl]=Preferowane programy
Name[pl_PL]=Preferowane programy
Name[pt]=Aplicações Preferidas
Name[pt_BR]=Aplicativos Preferenciais
Name[pt_PT]=Aplicações Preferidas
Name[ro]=Aplicații preferate
Name[ro_RO]=Aplicații preferate
Name[ru]=Предпочитаемые приложения
Name[sk]=Predvolené aplikácie
Name[sk_SK]=Predvolené aplikácie
Name[sl]=Prednostni programi
Name[sl_SI]=Prednostni programi
Name[sq]=Programet e preferuara
Name[sr]=Омиљени програми
Name[sr@Latn]=Омиљени програми
Name[sr@ije]=Омиљени програми
Name[sr@ijekavianlatin]=Омиљени програми
Name[sr@latin]=Омиљени програми
Name[sr_RS]=Омиљени програми
Name[sr_RS@latin]=Омиљени програми
Name[sv]=Förvalda program
Name[th]=โปรแกรมที่ชอบ
Name[th_TH]=โปรแกรมที่ชอบ
Name[tr]=Tercih Edilen Uygulamalar
Name[tr_TR]=Tercih Edilen Uygulamalar
Name[uk]=Уподобані проґрами
Name[uk_UA]=Уподобані проґрами
Name[ur]=ترجیحی ایپلی کیشنز
Name[uz]=Танланган дастурлар
Name[uz@cyrillic]=Танланган дастурлар
Name[vi]=Ứng dụng Ưa thích
Name[vi_VN]=Ứng dụng Ưa thích
Name[zh_CN]=首选应用程序
Name[zh_HK]=喜好的應用程式
Name[zh_TW]=偏好的應用程式
Comment=Preferred Applications
Comment[am]=የመረጥኩዋቸው መተግበሪያዎች
Comment[ar]=التطبيقات المفضّلة
Comment[ast]=Aplicaciones preferíes
Comment[be]=Пераважныя дастасаванні
Comment[be@latin]=Пераважныя дастасаванні
Comment[be_BY]=Пераважныя дастасаванні
Comment[bg]=Предпочитани програми
Comment[bg_BG]=Предпочитани програми
Comment[bs]=Preferirane aplikacije
Comment[ca]=Aplicacions preferides
Comment[ca@valencia]=Aplicacions preferides
Comment[ca_ES]=Aplicacions preferides
Comment[ca_ES@valencia]=Aplicacions preferides
Comment[cs]=Preferované aplikace
Comment[cs_CZ]=Preferované aplikace
Comment[cy]=Rhaglenni Dewisol
Comment[da]=Foretrukne programmer
Comment[da_DK]=Foretrukne programmer
Comment[de]=Bevorzugte Anwendungen
Comment[de_CH]=Bevorzugte Anwendungen
Comment[de_DE]=Bevorzugte Anwendungen
Comment[el]=Προτιμώμενες Εφαρμογές
Comment[eo]=Preferaj Aplikaĵoj
Comment[es]=Aplicaciones preferidas
Comment[es_AR]=Aplicaciones preferidas
Comment[es_CL]=Aplicaciones preferidas
Comment[es_CO]=Aplicaciones preferidas
Comment[es_CR]=Aplicaciones preferidas
Comment[es_DO]=Aplicaciones preferidas
Comment[es_EC]=Aplicaciones preferidas
Comment[es_ES]=Aplicaciones preferidas
Comment[es_MX]=Aplicaciones preferidas
Comment[es_NI]=Aplicaciones preferidas
Comment[es_PA]=Aplicaciones preferidas
Comment[es_PE]=Aplicaciones preferidas
Comment[es_PR]=Aplicaciones preferidas
Comment[es_SV]=Aplicaciones preferidas
Comment[es_UY]=Aplicaciones preferidas
Comment[es_VE]=Aplicaciones preferidas
Comment[et]=Eelistatud rakendused
Comment[et_EE]=Eelistatud rakendused
Comment[eu]=Hobetsitako aplikazioak
Comment[fi]=Oletussovellukset
Comment[fi_FI]=Oletussovellukset
Comment[fr]=Applications préférées
Comment[fr_CA]=Applications préférées
Comment[fr_FR]=Applications préférées
Comment[gd]=Aplacaidean as fhearr leat
Comment[gl]=Aplicativos preferidos
Comment[gl_ES]=Aplicativos preferidos
Comment[hr]=Željene aplikacije
Comment[hu]=Alapértelmezett alkalmazások
Comment[hu_HU]=Alapértelmezett alkalmazások
Comment[ia]=Applicationes preferite
Comment[id]=Aplikasi Pilihan
Comment[id_ID]=Aplikasi Pilihan
Comment[is]=Sjálfgefin forrit
Comment[it]=Applicazioni preferite
Comment[it_CH]=Applicazioni preferite
Comment[it_IT]=Applicazioni preferite
Comment[ja]=お気に入りのアプリケーション
Comment[ja_JP]=お気に入りのアプリケーション
Comment[kab]=Isnasen imenyafen
Comment[ko]=기본 애플리케이션
Comment[ko_KR]=기본 애플리케이션
Comment[lo]=ໂປຣແກຣມທີ່ເລືອກ
Comment[lo_LA]=ໂປຣແກຣມທີ່ເລືອກ
Comment[lt]=Pageidaujamos programos
Comment[lt_LT]=Pageidaujamos programos
Comment[lv]=Noklusētās programmas
Comment[lv_LV]=Noklusētās programmas
Comment[ms]=Aplikasi Digemari
Comment[ms_MY]=Aplikasi Digemari
Comment[nb]=Foretrukne programmer
Comment[nb_NO]=Foretrukne programmer
Comment[nds]=Bevorzugte Anwendungen
Comment[nl]=Voorkeurstoepassingen
Comment[nl_NL]=Voorkeurstoepassingen
Comment[oc]=Aplicacions preferidas
Comment[pl]=Preferowane programy
Comment[pl_PL]=Preferowane programy
Comment[pt]=Aplicações Preferidas
Comment[pt_BR]=Aplicativos Preferenciais
Comment[pt_PT]=Aplicações Preferidas
Comment[ro]=Aplicații preferate
Comment[ro_RO]=Aplicații preferate
Comment[ru]=Предпочитаемые приложения
Comment[sk]=Predvolené aplikácie
Comment[sk_SK]=Predvolené aplikácie
Comment[sl]=Prednostni programi
Comment[sl_SI]=Prednostni programi
Comment[sq]=Programet e preferuara
Comment[sr]=Омиљени програми
Comment[sr@Latn]=Омиљени програми
Comment[sr@ije]=Омиљени програми
Comment[sr@ijekavianlatin]=Омиљени програми
Comment[sr@latin]=Омиљени програми
Comment[sr_RS]=Омиљени програми
Comment[sr_RS@latin]=Омиљени програми
Comment[sv]=Förvalda program
Comment[th]=โปรแกรมที่ชอบ
Comment[th_TH]=โปรแกรมที่ชอบ
Comment[tr]=Tercih Edilen Uygulamalar
Comment[tr_TR]=Tercih Edilen Uygulamalar
Comment[uk]=Уподобані проґрами
Comment[uk_UA]=Уподобані проґрами
Comment[ur]=ترجیحی ایپلی کیشنز
Comment[uz]=Танланган дастурлар
Comment[uz@cyrillic]=Танланган дастурлар
Comment[vi]=Ứng dụng Ưa thích
Comment[vi_VN]=Ứng dụng Ưa thích
Comment[zh_CN]=首选应用程序
Comment[zh_HK]=喜好的應用程式
Comment[zh_TW]=偏好的應用程式
Keywords=media;defaults;applications;programs;removable;browser;email;calendar;music;videos;photos;images;cd;autostart;autoplay;
Keywords[am]=መገናኛዎች፡ መተግበሪያዎች፡ ፕሮግራሞች፡ የሚወልቁ፡ መቃኛ፡ ኢሜይል፡ ቀን መቁጠሪያ፡ ሙዚቃ፡ ቪዲዮዎች፡ ፎቶዎች፡ ምስሎች፡ ሲዲ፡ በራሱ ማስጀመሪያ፡ በራሱ ማጫወቻ;
Keywords[ar]=وسيط، افتراضي، برامج، تطبيقات، قابل للإزالة، متصفح، بريد إلكتروني، تاريخ، موسيقى، فيديو، صور، cd، بدء تشغيل، تشغيل آلي;
Keywords[be]=носьбіты;значэнні па змаўчанні;дастасаваннi;праграмы;зменны;браўзэр;пошта;каляндар;музыка;відэа;фота;выявы;CD-дыск;аўтазапуск;аўтапрайграванне;
Keywords[be@latin]=носьбіты;значэнні па змаўчанні;дастасаваннi;праграмы;зменны;браўзэр;пошта;каляндар;музыка;відэа;фота;выявы;CD-дыск;аўтазапуск;аўтапрайграванне;
Keywords[be_BY]=носьбіты;значэнні па змаўчанні;дастасаваннi;праграмы;зменны;браўзэр;пошта;каляндар;музыка;відэа;фота;выявы;CD-дыск;аўтазапуск;аўтапрайграванне;
Keywords[bg]=медия;подразбиране;приложения;програми;преносими;браузер;поща;календар;музика;видео;фото;изображения;диск;стартиращи;автоматично;
Keywords[bg_BG]=медия;подразбиране;приложения;програми;преносими;браузер;поща;календар;музика;видео;фото;изображения;диск;стартиращи;автоматично;
Keywords[bs]=media;zadano;aplikacije;programi;uklonljivo;preglednik;elektronska pošta;muzika;video;fotografije;slike;cd;automatski start;automatsko reproduciranje;
Keywords[ca]=suports;valors predeterminats;aplicacions;programes;extraïble;navegador;correu electrònic;cal·lendari;música;vídeos;fotos;imatges;cd;arrencada automàtica;reproducció automàtica;
Keywords[ca@valencia]=suports;valors predeterminats;aplicacions;programes;extraïble;navegador;correu electrònic;calendari;música;vídeos;fotos;imatges;cd;arrancada automàtica;reproducció automàtica;
Keywords[ca_ES]=suports;valors predeterminats;aplicacions;programes;extraïble;navegador;correu electrònic;cal·lendari;música;vídeos;fotos;imatges;cd;arrencada automàtica;reproducció automàtica;
Keywords[ca_ES@valencia]=suports;valors predeterminats;aplicacions;programes;extraïble;navegador;correu electrònic;calendari;música;vídeos;fotos;imatges;cd;arrancada automàtica;reproducció automàtica;
Keywords[cs]=média;výchozí;aplikace;programy;odpojitelný;prohlížeč;email;kalendář;hudba;video;fotky;obrázky;cd;automatický start;automatické přehrávání;
Keywords[cs_CZ]=média;výchozí;aplikace;programy;odpojitelný;prohlížeč;email;kalendář;hudba;video;fotky;obrázky;cd;automatický start;automatické přehrávání;
Keywords[cy]=cyfrwng;rhagosodiadau;rhaglenni;tynnadwy;porwr;e-bost;calendr;fideos;lluniau;delweddau;cd;awtogychwyn;awtochwarae;
Keywords[da]=medier;standard;programmer;flytbar;browser;e-mail;kalender;musik;videoer;fotoer;billeder;cd;autostart;autoafspilning;
Keywords[da_DK]=medier;standard;programmer;flytbar;browser;e-mail;kalender;musik;videoer;fotoer;billeder;cd;autostart;autoafspilning;
Keywords[de]=Medien;Vorgaben;Grundeinstellungen;Anwendungen;Programme;entfernbare;Datenträger;Browser;Email;E-Mail;Kalender;Musik;Videos;Filme;Fotos;Bilder;CD;Autostart;
Keywords[de_CH]=Medien;Vorgaben;Grundeinstellungen;Anwendungen;Programme;entfernbare;Datenträger;Browser;Email;E-Mail;Kalender;Musik;Videos;Filme;Fotos;Bilder;CD;Autostart;
Keywords[de_DE]=Medien;Vorgaben;Grundeinstellungen;Anwendungen;Programme;entfernbare;Datenträger;Browser;Email;E-Mail;Kalender;Musik;Videos;Filme;Fotos;Bilder;CD;Autostart;
Keywords[el]=μέσα;προεπιλογές;εφαρμογές;προγράμματα;αφαιρούμενα;περιηγητής;ηλεκτρονικό ταχυδρομείο;ημερολόγιο;μουσική;βίντεο;φωτογραφίες;εικόνες;cd;αυτόματη εκκίνηση;αυτόματη αναπαραγωγή;
Keywords[es]=soportes;valores predeterminados;aplicaciones;programas;extraíble;navegador;correo electrónico;calendario;música;videos;fotos;imágenes;cd;arranque automático;reproducción automática;
Keywords[es_AR]=soportes;valores predeterminados;aplicaciones;programas;extraíble;navegador;correo electrónico;calendario;música;videos;fotos;imágenes;cd;arranque automático;reproducción automática;
Keywords[es_CL]=soportes;valores predeterminados;aplicaciones;programas;extraíble;navegador;correo electrónico;calendario;música;videos;fotos;imágenes;cd;arranque automático;reproducción automática;
Keywords[es_CO]=soportes;valores predeterminados;aplicaciones;programas;extraíble;navegador;correo electrónico;calendario;música;videos;fotos;imágenes;cd;arranque automático;reproducción automática;
Keywords[es_CR]=soportes;valores predeterminados;aplicaciones;programas;extraíble;navegador;correo electrónico;calendario;música;videos;fotos;imágenes;cd;arranque automático;reproducción automática;
Keywords[es_DO]=soportes;valores predeterminados;aplicaciones;programas;extraíble;navegador;correo electrónico;calendario;música;videos;fotos;imágenes;cd;arranque automático;reproducción automática;
Keywords[es_EC]=soportes;valores predeterminados;aplicaciones;programas;extraíble;navegador;correo electrónico;calendario;música;videos;fotos;imágenes;cd;arranque automático;reproducción automática;
Keywords[es_ES]=soportes;valores predeterminados;aplicaciones;programas;extraíble;navegador;correo electrónico;calendario;música;videos;fotos;imágenes;cd;arranque automático;reproducción automática;
Keywords[es_MX]=soportes;valores predeterminados;aplicaciones;programas;extraíble;navegador;correo electrónico;calendario;música;videos;fotos;imágenes;cd;arranque automático;reproducción automática;
Keywords[es_NI]=soportes;valores predeterminados;aplicaciones;programas;extraíble;navegador;correo electrónico;calendario;música;videos;fotos;imágenes;cd;arranque automático;reproducción automática;
Keywords[es_PA]=soportes;valores predeterminados;aplicaciones;programas;extraíble;navegador;correo electrónico;calendario;música;videos;fotos;imágenes;cd;arranque automático;reproducción automática;
Keywords[es_PE]=soportes;valores predeterminados;aplicaciones;programas;extraíble;navegador;correo electrónico;calendario;música;videos;fotos;imágenes;cd;arranque automático;reproducción automática;
Keywords[es_PR]=soportes;valores predeterminados;aplicaciones;programas;extraíble;navegador;correo electrónico;calendario;música;videos;fotos;imágenes;cd;arranque automático;reproducción automática;
Keywords[es_SV]=soportes;valores predeterminados;aplicaciones;programas;extraíble;navegador;correo electrónico;calendario;música;videos;fotos;imágenes;cd;arranque automático;reproducción automática;
Keywords[es_UY]=soportes;valores predeterminados;aplicaciones;programas;extraíble;navegador;correo electrónico;calendario;música;videos;fotos;imágenes;cd;arranque automático;reproducción automática;
Keywords[es_VE]=soportes;valores predeterminados;aplicaciones;programas;extraíble;navegador;correo electrónico;calendario;música;videos;fotos;imágenes;cd;arranque automático;reproducción automática;
Keywords[eu]=euskarria;lehenespenak;aplikazioak;programak;aldagarria;nabigatzailea;e-posta;egutegia;musika;bideoak;argazkiak;irudiak;cd;hasi automatikoki;erreproduzitu automatikoki;
Keywords[fi]=media;oletukset;sovellukset;ohjelmat;siirrettävä;selain;sähköposti;kalenteri;musiikki;videot;kuvat;cd;autostart;autoplay;
Keywords[fi_FI]=media;oletukset;sovellukset;ohjelmat;siirrettävä;selain;sähköposti;kalenteri;musiikki;videot;kuvat;cd;autostart;autoplay;
Keywords[fr]=médias;par défaut;applications;programmes;amovible;navigateur;courrier électronique;calendrier;musique;vidéos;photos;images;cd;démarrage automatique;lecture automatique;
Keywords[fr_CA]=médias;par défaut;applications;programmes;amovible;navigateur;courriel;calendrier;musique;vidéos;photos;images;cd;démarrage automatique;lecture automatique;
Keywords[fr_FR]=médias;par défaut;applications;programmes;amovible;navigateur;courrier électronique;calendrier;musique;vidéos;photos;images;cd;démarrage automatique;lecture automatique;
Keywords[gd]=media;defaults;applications;programs;removable;browser;email;calendar;music;videos;photos;images;cd;autostart;autoplay;meadhanan;bun-roghainnean;aplacaidean;prògraman;brabhsair;post-d;mìosachan;ceòl;videothan;bhidiothan;dealbhan;fèin-chluich;fèin-tòiseachadh;
Keywords[gl]=medios;valores predeterminados;aplicativos;programas;extraíbel;navegador;correo electrónico;calendario;música;vídeos;fotos;imaxes;cd;arrinque automático;reprodución automática;
Keywords[gl_ES]=medios;valores predeterminados;aplicativos;programas;extraíbel;navegador;correo electrónico;calendario;música;vídeos;fotos;imaxes;cd;arrinque automático;reprodución automática;
Keywords[hr]=medij;uobičajeno;aplikacije;programi;prijenosni;preglednik;e-pošta;kalendar;glazba;video;fotografije;slike;cd;auto-pokretanje;auto-reprodukcija;
Keywords[hu]=média;alapértelmezések;alkalmazások;programok;eltávolítandó;böngésző;kereső;email;naptár;zene;videók;fotók;képek;cd;automatikus indítás;automatikus lejátszás;
Keywords[hu_HU]=média;alapértelmezések;alkalmazások;programok;eltávolítandó;böngésző;kereső;email;naptár;zene;videók;fotók;képek;cd;automatikus indítás;automatikus lejátszás;
Keywords[ia]=medios;optiones predefinite;applicationes;programmas;amovibile;navigator;e-posta;calendario;musica;videos;photos;imagines;cd;lanceamento automatic;reproduction automatic;
Keywords[id]=media;defaults;aplikasi;program;removable;browser;email;kalender;musik;video;foto;gambar;cd;autostart;autoplay;
Keywords[id_ID]=media;defaults;aplikasi;program;removable;browser;email;kalender;musik;video;foto;gambar;cd;autostart;autoplay;
Keywords[is]=miðlar;sjálfgefið;forrit;fjarlægjanleg;vafri;póstur;dagatal;tónlist;vídeó;myndskeið;myndir;cd;sjálfkeyrsla;sjálfspila;
Keywords[it]=media;defaults;applicazioni;programmi;rimovibile;browser;email;calendario;musica;video;foto;immagini;cd;autostart;autoplay;
Keywords[it_CH]=media;defaults;applicazioni;programmi;rimovibile;browser;email;calendario;musica;video;foto;immagini;cd;autostart;autoplay;
Keywords[it_IT]=media;defaults;applicazioni;programmi;rimovibile;browser;email;calendario;musica;video;foto;immagini;cd;autostart;autoplay;
Keywords[kab]=amidya;s lexṣas;isnasen;ahilen;aziraz;iminig;emayl;akalandri;aẓawan;ividyuten;tugniwin;icdiyen;askar awurman;taɣuri tawurmant;
Keywords[ko]=미디어;기본;애플리케이션;프로그램;이동식;브라우저;이메일;달력;음악;비디오;사진;이미지;CD;자동시작;자동재생;
Keywords[ko_KR]=미디어;기본;애플리케이션;프로그램;이동식;브라우저;이메일;달력;음악;비디오;사진;이미지;CD;자동시작;자동재생;
Keywords[lo]=ສື່;ຄ່າເລີ່ມຕົ້ນ;ໂປຣແກຣມ;ໂປຣແກຣມ;ອູປະກອນຖອດສຽບ;ບຣາວເຊີ;ອີເມວ;ປະຕິທິນ;ເພງ;ວີດີໂອ;ຮູບພາບ;ອິມເມດ;ຊີດີ;autostart;autoplay;
Keywords[lo_LA]=ສື່;ຄ່າເລີ່ມຕົ້ນ;ໂປຣແກຣມ;ໂປຣແກຣມ;ອູປະກອນຖອດສຽບ;ບຣາວເຊີ;ອີເມວ;ປະຕິທິນ;ເພງ;ວີດີໂອ;ຮູບພາບ;ອິມເມດ;ຊີດີ;autostart;autoplay;
Keywords[lt]=media;numatytieji;programos;išimamos laikmenos;naršyklė;el. paštas;kalendorius;muzika;vaizdo įrašai;nuotraukos;cd;auto paleidimas;auto atkūrimas;
Keywords[lt_LT]=media;numatytieji;programos;išimamos laikmenos;naršyklė;el. paštas;kalendorius;muzika;vaizdo įrašai;nuotraukos;cd;auto paleidimas;auto atkūrimas;
Keywords[lv]=multivide;noklusējuma iestatījumi;lietotnes;programmas;noņemams;pārlūks;e-pasts;kalendārs;mūzika;video;fotogrāfijas;attēli;CD;automātiskā sākšana;automātiskā atskaņošana;
Keywords[lv_LV]=multivide;noklusējuma iestatījumi;lietotnes;programmas;noņemams;pārlūks;e-pasts;kalendārs;mūzika;video;fotogrāfijas;attēli;CD;automātiskā sākšana;automātiskā atskaņošana;
Keywords[ms]=media;tetapan asal;aplikasi-aplikasi;program-program;boleh alih;pelayar;emel;kalendar;musik;video;foto;gambar;cd;mula secara auto;main secara auto;
Keywords[ms_MY]=media;tetapan asal;aplikasi-aplikasi;program-program;boleh alih;pelayar;emel;kalendar;musik;video;foto;gambar;cd;mula secara auto;main secara auto;
Keywords[nb]=media;standard;applikasjoner;programmer;flyttbar;nettleser;e-post;kalender;musikk;videoer;foto;bilder;cd;autostart;autospill;
Keywords[nb_NO]=media;standard;applikasjoner;programmer;flyttbar;nettleser;e-post;kalender;musikk;videoer;foto;bilder;cd;autostart;autospill;
Keywords[nds]=Medien;Standards;Anwendungen;Programme;Entfernbar;Browser;E-Mail;Kalender;Musik;Videos;Fotos;Bilder;CD;Autostart;AutoPlay;
Keywords[nl]=media;standaard;toepassingen;programma's;verwijderbaar;browser;e-mail;kalender;muziek;video's;afbeeldingen;cd;automatische start;automatisch afspelen;
Keywords[nl_NL]=media;standaard;toepassingen;programma's;verwijderbaar;browser;e-mail;kalender;muziek;video's;afbeeldingen;cd;automatische start;automatisch afspelen;
Keywords[pl]=media;domyślne;aplikacje;programy;nośniki wymienne;przeglądarka;e-mail;kalendarz;muzyka;filmy;zdjęcia;obrazy;cd;autostart;autoodtwarzanie;
Keywords[pl_PL]=media;domyślne;aplikacje;programy;nośniki wymienne;przeglądarka;e-mail;kalendarz;muzyka;filmy;zdjęcia;obrazy;cd;autostart;autoodtwarzanie;
Keywords[pt]=media;defaults;applications;programs;removable;browser;email;calendar;music;videos;photos;images;cd;autostart;autoplay;média;padrões;aplicações;programas;removível;navegador;correio;calendário;música;vídeos;fotografias;imagens;cds;arranque;automático;
Keywords[pt_BR]=mídia;padrões;aplicativos;programas;dispositivos removíveis;navegador;e-mail;calendário;música;vídeos;fotos;imagens;cd;inicializar automaticamente;reproduzir automaticamente;
Keywords[pt_PT]=media;defaults;applications;programs;removable;browser;email;calendar;music;videos;photos;images;cd;autostart;autoplay;média;padrões;aplicações;programas;removível;navegador;correio;calendário;música;vídeos;fotografias;imagens;cds;arranque;automático;
Keywords[ro]=media;implicite;aplicații;programe;detașabil;browser;e-mail;calendar;muzică;clipuri video;fotografii;imagini;CD;pornire automată;redare automată;
Keywords[ro_RO]=media;implicite;aplicații;programe;detașabil;browser;e-mail;calendar;muzică;clipuri video;fotografii;imagini;CD;pornire automată;redare automată;
Keywords[ru]=носители;значения по умолчанию;приложения;программы;съёмный;браузер;почта;календарь;музыка;видео;фото;изображения;CD-диск;автозапуск;автовоспроизведение;
Keywords[sk]=médiá;predvolené hodnoty;aplikácie;programy;odstrániteľné;vymeniteľné;prehliadač;email;kalendár;hudba;videá;fotky;obrázky;cd;samospúšťanie;samoprehrávanie;automatické spúšťanie;automatické prehrávanie;
Keywords[sk_SK]=médiá;predvolené hodnoty;aplikácie;programy;odstrániteľné;vymeniteľné;prehliadač;email;kalendár;hudba;videá;fotky;obrázky;cd;samospúšťanie;samoprehrávanie;automatické spúšťanie;automatické prehrávanie;
Keywords[sl]=predstavnost;privzeto;programi;odstranljivo;brskalnik;epošta;koledar;glasba;video;fotografije;slike;cd;samodejno začni;samodejno predvajanje;
Keywords[sl_SI]=predstavnost;privzeto;programi;odstranljivo;brskalnik;epošta;koledar;glasba;video;fotografije;slike;cd;samodejno začni;samodejno predvajanje;
Keywords[sr]=садржаји;подразумевано;програми;апликације;уклоњив;прегледник;е-пошта;календар;музика;снимци;фотографије;слике;дискови;самопокретање;извођење;
Keywords[sr@Latn]=садржаји;подразумевано;програми;апликације;уклоњив;прегледник;е-пошта;календар;музика;снимци;фотографије;слике;дискови;самопокретање;извођење;
Keywords[sr@ije]=садржаји;подразумевано;програми;апликације;уклоњив;прегледник;е-пошта;календар;музика;снимци;фотографије;слике;дискови;самопокретање;извођење;
Keywords[sr@ijekavianlatin]=садржаји;подразумевано;програми;апликације;уклоњив;прегледник;е-пошта;календар;музика;снимци;фотографије;слике;дискови;самопокретање;извођење;
Keywords[sr@latin]=садржаји;подразумевано;програми;апликације;уклоњив;прегледник;е-пошта;календар;музика;снимци;фотографије;слике;дискови;самопокретање;извођење;
Keywords[sr_RS]=садржаји;подразумевано;програми;апликације;уклоњив;прегледник;е-пошта;календар;музика;снимци;фотографије;слике;дискови;самопокретање;извођење;
Keywords[sr_RS@latin]=садржаји;подразумевано;програми;апликације;уклоњив;прегледник;е-пошта;календар;музика;снимци;фотографије;слике;дискови;самопокретање;извођење;
Keywords[sv]=media;standard;applikationer;program;flyttbara;webbläsare;e-post;kalender;musik;videor;foton;bilder;cd;autostarta;autouppspelning;
Keywords[th]=สื่อ;ค่าเริ่มต้น;โปรแกรมประยุกต์;สื่อถอดเสียบ;โปรแกรมท่องดู;อีเมล;ปฏิทิน;เพลง;วีดิทัศน์;รูปถ่าย;รูปภาพ;ซีดี;เริ่มอัตโนมัติ;เล่นอัตโนมัติ;
Keywords[th_TH]=สื่อ;ค่าเริ่มต้น;โปรแกรมประยุกต์;สื่อถอดเสียบ;โปรแกรมท่องดู;อีเมล;ปฏิทิน;เพลง;วีดิทัศน์;รูปถ่าย;รูปภาพ;ซีดี;เริ่มอัตโนมัติ;เล่นอัตโนมัติ;
Keywords[tr]=medya;varsayılanlar;uygulamalar;programlar;çıkarılabilir;tarayıcı;eposta;takvim;müzik;fotoğraflar;resimler;cd;otomatik başlat;otomatik oynat;
Keywords[tr_TR]=medya;varsayılanlar;uygulamalar;programlar;çıkarılabilir;tarayıcı;eposta;takvim;müzik;fotoğraflar;resimler;cd;otomatik başlat;otomatik oynat;
Keywords[uk]=медія;типові значення;додатки;проґрами;знімний;переглядач;електронна пошта;календар;музика;відео;світлини;зображення;CD;самозапуск;самовідтворення;
Keywords[uk_UA]=медія;типові значення;додатки;проґрами;знімний;переглядач;електронна пошта;календар;музика;відео;світлини;зображення;CD;самозапуск;самовідтворення;
Keywords[uz]=медиа;андозалар;қўлланилувчи дастурлар;дастурлар;олиб ташланиш имкони мавжуд;браузер;электрон хат;календар;мусиқа;видеолар;расмлар;тасвирлар;cd;автоматик ишга тушириш;автоматик ижро этиш;
Keywords[uz@cyrillic]=медиа;андозалар;қўлланилувчи дастурлар;дастурлар;олиб ташланиш имкони мавжуд;браузер;электрон хат;календар;мусиқа;видеолар;расмлар;тасвирлар;cd;автоматик ишга тушириш;автоматик ижро этиш;
Keywords[vi]=phương tiện;mặc định;ứng dụng;chương trình;tháo lắp;trình duyệt;điện thư;lịch;nhạc;phim;ảnh;hình;cd;tự chạy;tự phát;
Keywords[vi_VN]=phương tiện;mặc định;ứng dụng;chương trình;tháo lắp;trình duyệt;điện thư;lịch;nhạc;phim;ảnh;hình;cd;tự chạy;tự phát;
Keywords[zh_CN]=媒体,默认设置,应用,程序,可移动介质,浏览器,电子邮件,日历,音乐,视频,照片,图片,CD,自启动,自动播放;
Keywords[zh_HK]=媒體;預設值;應用程式;程式;可移除式;瀏覽器;電郵;日曆;音樂;影片;相片;圖像;CD;自動啟動;自動播放;
Keywords[zh_TW]=媒體;預設值;應用程式;程式;可移除;瀏覽器;email;行事曆;音樂;視訊;相片;影像;CD;自動啟動;自動播放;
Cinnamon-3.6.7/files/usr/share/applications/cinnamon2d.desktop 0000664 0001750 0001750 00000000553 13215735076 023357 0 ustar fabio fabio [Desktop Entry]
Type=Application
Name=Cinnamon 2D
Comment=Window management and application launching
Exec=/usr/bin/cinnamon2d
Categories=GNOME;GTK;System;Core;
OnlyShowIn=X-Cinnamon;
NoDisplay=true
X-GNOME-Autostart-Phase=WindowManager
X-GNOME-Provides=panel;windowmanager;
X-GNOME-Autostart-Notify=true
X-GNOME-AutoRestart=true
X-Ubuntu-Gettext-Domain=cinnamon
Cinnamon-3.6.7/files/usr/share/applications/cinnamon-settings-calendar.desktop 0000664 0001750 0001750 00000047321 13215735076 026542 0 ustar fabio fabio [Desktop Entry]
Icon=cs-date-time
Exec=cinnamon-settings calendar
Type=Application
OnlyShowIn=X-Cinnamon;
Categories=Settings;
Name=Date & Time
Name[am]=ቀን & ሰአት
Name[ar]=التاريخ والوقت
Name[ast]=Data y hora
Name[be]=Дата і час
Name[be@latin]=Дата і час
Name[be_BY]=Дата і час
Name[bg]=Дата и час
Name[bg_BG]=Дата и час
Name[bs]=Datum i vrijeme
Name[ca]=Data i hora
Name[ca@valencia]=Data i hora
Name[ca_ES]=Data i hora
Name[ca_ES@valencia]=Data i hora
Name[cs]=Datum a čas
Name[cs_CZ]=Datum a čas
Name[cy]=Dyddiad ac Amser
Name[da]=Dato & tid
Name[da_DK]=Dato & tid
Name[de]=Datum & Zeit
Name[de_CH]=Datum & Zeit
Name[de_DE]=Datum & Zeit
Name[el]=Ημερομηνία & Ώρα
Name[eo]=Dato kaj tempo
Name[es]=Fecha y hora
Name[es_AR]=Fecha y hora
Name[es_CL]=Fecha y hora
Name[es_CO]=Fecha y hora
Name[es_CR]=Fecha y hora
Name[es_DO]=Fecha y hora
Name[es_EC]=Fecha y hora
Name[es_ES]=Fecha y hora
Name[es_MX]=Fecha y hora
Name[es_NI]=Fecha y hora
Name[es_PA]=Fecha y hora
Name[es_PE]=Fecha y hora
Name[es_PR]=Fecha y hora
Name[es_SV]=Fecha y hora
Name[es_UY]=Fecha y hora
Name[es_VE]=Fecha y hora
Name[et]=Kuupäev & kellaaeg
Name[et_EE]=Kuupäev & kellaaeg
Name[eu]=Data eta ordua
Name[fa]=تاریخ و زمان
Name[fa_AF]=تاریخ و زمان
Name[fa_IR]=تاریخ و زمان
Name[fi]=Päivä ja aika
Name[fi_FI]=Päivä ja aika
Name[fr]=Date & Heure
Name[fr_CA]=Date et heure
Name[fr_FR]=Date & Heure
Name[fy]=Datum en Tiid
Name[gd]=Ceann-là ⁊ Àm
Name[gl]=Data e hora
Name[gl_ES]=Data e hora
Name[hr]=Datum i Vrijeme
Name[hu]=Dátum és idő
Name[hu_HU]=Dátum és idő
Name[ia]=Data & tempore
Name[id]=Tanggal & Waktu
Name[id_ID]=Tanggal & Waktu
Name[is]=Dagsetning og tími
Name[it]=Data & Ora
Name[it_CH]=Data & Ora
Name[it_IT]=Data & Ora
Name[ja]=日付と時刻
Name[ja_JP]=日付と時刻
Name[kab]=Azemz & Akud
Name[ko]=날짜 & 시간
Name[ko_KR]=날짜 & 시간
Name[lo]=ວັນແລະເວລາ
Name[lo_LA]=ວັນແລະເວລາ
Name[lt]=Data ir laikas
Name[lt_LT]=Data ir laikas
Name[lv]=Datums un laiks
Name[lv_LV]=Datums un laiks
Name[ms]=Tarikh & Masa
Name[ms_MY]=Tarikh & Masa
Name[nb]=Dato og klokkeslett
Name[nb_NO]=Dato og klokkeslett
Name[nds]=Datum & Zeit
Name[nl]=Datum en tijd
Name[nl_NL]=Datum en tijd
Name[oc]=Data & ora
Name[pa]=ਮਿਤੀ ਤੇ ਸਮਾਂ
Name[pl]=Data i godzina
Name[pl_PL]=Data i godzina
Name[pt]=Data e Hora
Name[pt_BR]=Data & Hora
Name[pt_PT]=Data e Hora
Name[ro]=Dată și oră
Name[ro_RO]=Dată și oră
Name[ru]=Дата и время
Name[sc]=Data & Oràriu
Name[sk]=Dátum a čas
Name[sk_SK]=Dátum a čas
Name[sl]=Datum in čas
Name[sl_SI]=Datum in čas
Name[sq]=Data dhe Ora
Name[sr]=Датум и време
Name[sr@Latn]=Датум и време
Name[sr@ije]=Датум и време
Name[sr@ijekavianlatin]=Датум и време
Name[sr@latin]=Датум и време
Name[sr_RS]=Датум и време
Name[sr_RS@latin]=Датум и време
Name[sv]=Datum och tid
Name[ta]=தேதியும் நேரமும்
Name[ta_LK]=தேதியும் நேரமும்
Name[tg]=Сана ва вақт:
Name[th]=วันที่และเวลา
Name[th_TH]=วันที่และเวลา
Name[tr]=Tarih & Zaman
Name[tr_TR]=Tarih & Zaman
Name[uk]=Дата й час
Name[uk_UA]=Дата й час
Name[ur]=وقت اور تاريخ
Name[uz]=Сана & Вақт
Name[uz@cyrillic]=Сана & Вақт
Name[vi]=Ngày giờ
Name[vi_VN]=Ngày giờ
Name[zh_CN]=日期和时间
Name[zh_HK]=日期與時間
Name[zh_TW]=日期與時間
Comment=Manage date and time settings
Comment[am]=የ ቀን እና ሰአት ማሰናጃ አስተዳዳሪ
Comment[ar]=إدارة إعدادات التاريخ والوقت
Comment[ast]=Alministra los axustes de data y tiempu
Comment[be]=Кіраванне наладамi даты і часу
Comment[be@latin]=Кіраванне наладамi даты і часу
Comment[be_BY]=Кіраванне наладамi даты і часу
Comment[bg]=Управление на часа и датата
Comment[bg_BG]=Управление на часа и датата
Comment[bs]=Upravljajte postavkama datuma i vremena
Comment[ca]=Gestioneu els ajusts de la data i l'hora
Comment[ca@valencia]=Administra la configuració de data i hora
Comment[ca_ES]=Gestioneu els ajusts de la data i l'hora
Comment[ca_ES@valencia]=Administra la configuració de data i hora
Comment[cs]=Nastavení data a času
Comment[cs_CZ]=Nastavení data a času
Comment[cy]=Rheolwch osodiadau dyddiad ac amser
Comment[da]=Administrér dato- og tidsindstillinger
Comment[da_DK]=Administrér dato- og tidsindstillinger
Comment[de]=Datum- und Zeiteinstellungen verwalten
Comment[de_CH]=Datum- und Zeiteinstellungen verwalten
Comment[de_DE]=Datum- und Zeiteinstellungen verwalten
Comment[el]=Διαχειρίσου τις ρυθμίσεις ημερομηνίας και ώρας
Comment[es]=Administrar la configuración de fecha y hora
Comment[es_AR]=Administrar la configuración de fecha y hora
Comment[es_CL]=Administrar la configuración de fecha y hora
Comment[es_CO]=Administrar la configuración de fecha y hora
Comment[es_CR]=Administrar la configuración de fecha y hora
Comment[es_DO]=Administrar la configuración de fecha y hora
Comment[es_EC]=Administrar la configuración de fecha y hora
Comment[es_ES]=Administrar la configuración de fecha y hora
Comment[es_MX]=Administrar la configuración de fecha y hora
Comment[es_NI]=Administrar la configuración de fecha y hora
Comment[es_PA]=Administrar la configuración de fecha y hora
Comment[es_PE]=Administrar la configuración de fecha y hora
Comment[es_PR]=Administrar la configuración de fecha y hora
Comment[es_SV]=Administrar la configuración de fecha y hora
Comment[es_UY]=Administrar la configuración de fecha y hora
Comment[es_VE]=Administrar la configuración de fecha y hora
Comment[eu]=Kudeatu data eta orduaren ezarpenak
Comment[fa]=مدیریت تنظیمات تاریخ و زمان
Comment[fa_AF]=مدیریت تنظیمات تاریخ و زمان
Comment[fa_IR]=مدیریت تنظیمات تاریخ و زمان
Comment[fi]=Muuta päivä- ja aika-asetuksia
Comment[fi_FI]=Muuta päivä- ja aika-asetuksia
Comment[fr]=Gérer les paramètres de date et d'heure
Comment[fr_CA]=Gérer les paramètres de date et d'heure
Comment[fr_FR]=Gérer les paramètres de date et d'heure
Comment[gd]=Stiùirich roghainnean a' chinn-là 's an ama
Comment[gl]=Administrar a configuración de data e hora
Comment[gl_ES]=Administrar a configuración de data e hora
Comment[hr]=Upravljajte postavkama datuma i vremena
Comment[hu]=Dátum és idő beállítások kezelése
Comment[hu_HU]=Dátum és idő beállítások kezelése
Comment[ia]=Administrar preferentias de data e tempore
Comment[id]=Atur pengaturan tanggal dan waktu
Comment[id_ID]=Atur pengaturan tanggal dan waktu
Comment[is]=Sýsla með stillingar fyrir dagsetningu og tíma
Comment[it]=Impostazioni data e ora
Comment[it_CH]=Impostazioni data e ora
Comment[it_IT]=Impostazioni data e ora
Comment[ja]=日付時間の変更
Comment[ja_JP]=日付時間の変更
Comment[kab]=Sefrek iɣewwaṛen n wazemz akked wakud
Comment[ko]=날짜 및 시간 설정 관리
Comment[ko_KR]=날짜 및 시간 설정 관리
Comment[lo]=ຈັດການການຕັ້ງຄ່າວັນແລະເວລາ
Comment[lo_LA]=ຈັດການການຕັ້ງຄ່າວັນແລະເວລາ
Comment[lt]=Keisti datos ir laiko nustatymus
Comment[lt_LT]=Keisti datos ir laiko nustatymus
Comment[lv]=Pārvaldīt datuma un laika iestatījumus
Comment[lv_LV]=Pārvaldīt datuma un laika iestatījumus
Comment[ms]=Mengurus tetapan tarikh dan masa
Comment[ms_MY]=Mengurus tetapan tarikh dan masa
Comment[nb]=Behandle innstillinger for dato og tid
Comment[nb_NO]=Behandle innstillinger for dato og tid
Comment[nds]=Datums- und Zeiteinstellung bearbeiten
Comment[nl]=Instellingen voor datum en tijd beheren
Comment[nl_NL]=Instellingen voor datum en tijd beheren
Comment[oc]=Gerir los paramètres de data e d'ora
Comment[pl]=Zarządzaj ustawieniami daty i czasu
Comment[pl_PL]=Zarządzaj ustawieniami daty i czasu
Comment[pt]=Gerir as definições de data e hora
Comment[pt_BR]=Gerenciar configurações de data e hora
Comment[pt_PT]=Gerir as definições de data e hora
Comment[ro]=Gestionează setările datei și orei
Comment[ro_RO]=Gestionează setările datei și orei
Comment[ru]=Настройки даты и времени
Comment[sc]=Manìgia data e sèberos de oràriu
Comment[sk]=Spravovať nastavenia dátumu a času
Comment[sk_SK]=Spravovať nastavenia dátumu a času
Comment[sl]=Upravljajte z nastavitvami datuma in časa
Comment[sl_SI]=Upravljajte z nastavitvami datuma in časa
Comment[sq]=Menaxho parametrat e datës dhe orës
Comment[sr]=Управљање поставкама датума и времена
Comment[sr@Latn]=Управљање поставкама датума и времена
Comment[sr@ije]=Управљање поставкама датума и времена
Comment[sr@ijekavianlatin]=Управљање поставкама датума и времена
Comment[sr@latin]=Управљање поставкама датума и времена
Comment[sr_RS]=Управљање поставкама датума и времена
Comment[sr_RS@latin]=Управљање поставкама датума и времена
Comment[sv]=Hantera datum och tidsinställningar
Comment[tg]=Идоракунии танзимоти вақт ва сана
Comment[th]=จัดการการตั้งค่าวันและเวลา
Comment[th_TH]=จัดการการตั้งค่าวันและเวลา
Comment[tr]=Tarih ve zaman ayarlarını yönet
Comment[tr_TR]=Tarih ve zaman ayarlarını yönet
Comment[uk]=Керування налаштуваннями дати та часу
Comment[uk_UA]=Керування налаштуваннями дати та часу
Comment[ur]=وقت اور تاریخ کی ترتیبات کا انتظام کریں
Comment[uz]=Сана ва вақт созламаларини бошқариш
Comment[uz@cyrillic]=Сана ва вақт созламаларини бошқариш
Comment[vi]=Quản lý thiết đặt ngày tháng
Comment[vi_VN]=Quản lý thiết đặt ngày tháng
Comment[zh_CN]=管理时间/日期设置
Comment[zh_HK]=管理日期與時間設定
Comment[zh_TW]=管理日期與時間設定
Keywords=time;date;calendar;format;network;sync;
Keywords[am]=ሰአት : ቀን : ቀን መቁጠሪያ : አቀራረብ : ኔትዎርክ : ማስማሚያ;
Keywords[ar]=الوقت، التاريخ، نمط، شبكة، مزامنة;
Keywords[ast]=tiempu;hora;data;calendariu;calandariu;formatu;rede;sincronizar;sincronización;
Keywords[be]=час;дата;каляндар;фармат;сетка;сінхранізацыя;
Keywords[be@latin]=час;дата;каляндар;фармат;сетка;сінхранізацыя;
Keywords[be_BY]=час;дата;каляндар;фармат;сетка;сінхранізацыя;
Keywords[bg]=време;дата;календар;формат;мрежа;синхронизиране;
Keywords[bg_BG]=време;дата;календар;формат;мрежа;синхронизиране;
Keywords[bs]=vrijeme;datum;kalendar;format;mreža;sinhronizacija;
Keywords[ca]=hora;data;calendari;format;xarxa;sincronització;
Keywords[ca@valencia]=hora;data;calendari;format;xarxa;sincronització;
Keywords[ca_ES]=hora;data;calendari;format;xarxa;sincronització;
Keywords[ca_ES@valencia]=hora;data;calendari;format;xarxa;sincronització;
Keywords[cs]=čas;datum;kalendář;formát;sítě;synchronizace;
Keywords[cs_CZ]=čas;datum;kalendář;formát;sítě;synchronizace;
Keywords[cy]=amser;dyddiad;calendr;fformat;rhwydwaith;cydweddu;
Keywords[da]=tid;dato;kalender;format;netværk;synkronisering;
Keywords[da_DK]=tid;dato;kalender;format;netværk;synkronisering;
Keywords[de]=Zeit;Datum;Kalender;Format;Netzwerk;Synchronisierung;
Keywords[de_CH]=Zeit;Datum;Kalender;Format;Netzwerk;Synchronisierung;
Keywords[de_DE]=Zeit;Datum;Kalender;Format;Netzwerk;Synchronisierung;
Keywords[el]=ώρα;ημερομηνία;ημερολόγιο;μορφοποίηση;δίκτυο;συγχρονισμός;
Keywords[es]=hora;fecha;calendario;formato;red;sincronización;
Keywords[es_AR]=hora;fecha;calendario;formato;red;sincronización;
Keywords[es_CL]=hora;fecha;calendario;formato;red;sincronización;
Keywords[es_CO]=hora;fecha;calendario;formato;red;sincronización;
Keywords[es_CR]=hora;fecha;calendario;formato;red;sincronización;
Keywords[es_DO]=hora;fecha;calendario;formato;red;sincronización;
Keywords[es_EC]=hora;fecha;calendario;formato;red;sincronización;
Keywords[es_ES]=hora;fecha;calendario;formato;red;sincronización;
Keywords[es_MX]=hora;fecha;calendario;formato;red;sincronización;
Keywords[es_NI]=hora;fecha;calendario;formato;red;sincronización;
Keywords[es_PA]=hora;fecha;calendario;formato;red;sincronización;
Keywords[es_PE]=hora;fecha;calendario;formato;red;sincronización;
Keywords[es_PR]=hora;fecha;calendario;formato;red;sincronización;
Keywords[es_SV]=hora;fecha;calendario;formato;red;sincronización;
Keywords[es_UY]=hora;fecha;calendario;formato;red;sincronización;
Keywords[es_VE]=hora;fecha;calendario;formato;red;sincronización;
Keywords[eu]=ordua;data;egutegia;formatua;sarea;sinkronizazioa;
Keywords[fa]=زمان، تاریخ، تقویم، فرمت، شبکه، همزمانی;
Keywords[fa_AF]=زمان، تاریخ، تقویم، فرمت، شبکه، همزمانی;
Keywords[fa_IR]=زمان، تاریخ، تقویم، فرمت، شبکه، همزمانی;
Keywords[fi]=aika;päiväys;kalenteri;formaatti;verkko;synkronointi;
Keywords[fi_FI]=aika;päiväys;kalenteri;formaatti;verkko;synkronointi;
Keywords[fr]=heure;date;calendrier;format;réseau;synchronisation;
Keywords[fr_CA]=heure;date;calendrier;format;réseau;synchronisation;
Keywords[fr_FR]=heure;date;calendrier;format;réseau;synchronisation;
Keywords[fy]=tiid;datum;kalinder;opset;netwurk;syngronisaasje;
Keywords[ga]=am;dáta;féilire;formáid;líonra;sync;
Keywords[gd]=àm;tìm;ceann-là;mìosachan;fòrmat;lìonra;sioncronachadh;tìm;ceann-latha;mìosachan;fòrmat;lìonra;sionc;
Keywords[gl]=hora;data;calendario;formato;rede;sincronización;
Keywords[gl_ES]=hora;data;calendario;formato;rede;sincronización;
Keywords[he]=זמן;תאריך;לוח שנה;פורמט;רשת;סנכרון;
Keywords[he_IL]=זמן;תאריך;לוח שנה;פורמט;רשת;סנכרון;
Keywords[hr]=vrijeme;datum;kalendar;format;mreža;usklađivanje;
Keywords[hu]=idő;dátum;naptár;formátum;hálózat;szinkronizálás;
Keywords[hu_HU]=idő;dátum;naptár;formátum;hálózat;szinkronizálás;
Keywords[ia]=tempore;data;calendario;formato;rete;synchronisation;
Keywords[id]=waktu;tanggal;kalender;format;jaringan;cocokkan;
Keywords[id_ID]=waktu;tanggal;kalender;format;jaringan;cocokkan;
Keywords[is]=tími;dagsetning;cdagatal;snið;netkerfi;samstilling;
Keywords[it]=ora;data;calendario;formato;rete;sync;
Keywords[it_CH]=ora;data;calendario;formato;rete;sync;
Keywords[it_IT]=ora;data;calendario;formato;rete;sync;
Keywords[ja]=時間、日付、カレンダー、フォーマット、ネットワーク、同期;
Keywords[ja_JP]=時間、日付、カレンダー、フォーマット、ネットワーク、同期;
Keywords[kab]=akud;azemz;awiyat;amasal;aẓeṭṭa;amtawi;
Keywords[ko]=시간;날짜;달력;형식;네트워크;동기화;
Keywords[ko_KR]=시간;날짜;달력;형식;네트워크;동기화;
Keywords[lo]=ເວລາ;ວັນ;ປະຕິທິນ;ຮູບແບບ;ເຄືອຂ່າຍ;ຊິງຄ໌;
Keywords[lo_LA]=ເວລາ;ວັນ;ປະຕິທິນ;ຮູບແບບ;ເຄືອຂ່າຍ;ຊິງຄ໌;
Keywords[lt]=laikas;data;kalendorius;formatas;tinklas;sinchronizacija;
Keywords[lt_LT]=laikas;data;kalendorius;formatas;tinklas;sinchronizacija;
Keywords[lv]=laiks;datums;kalendārs;formāts;tīkls;sinhronizācija;
Keywords[lv_LV]=laiks;datums;kalendārs;formāts;tīkls;sinhronizācija;
Keywords[ms]=masa;tarikh;kalendar;format;rangkaian;segerak;
Keywords[ms_MY]=masa;tarikh;kalendar;format;rangkaian;segerak;
Keywords[nb]=tid;dato;kalender;format;nettverk;synkroniser;
Keywords[nb_NO]=tid;dato;kalender;format;nettverk;synkroniser;
Keywords[nds]=Zeit;Datum;Kalender;Format;Netzwerk;Synchronisation;
Keywords[nl]=tijd;datum;kalender;bestandtype;netwerk;synchroniseren;
Keywords[nl_NL]=tijd;datum;kalender;bestandtype;netwerk;synchroniseren;
Keywords[pa]=ਸਮਾਂ;ਮਿਤੀ;ਕਲੈੰਡਰ;ਸਵਰੂਪ;ਨੈੱਟਵਰਕ;sync;
Keywords[pl]=czas;data;kalendarz;format;sieć;synchronizacja;
Keywords[pl_PL]=czas;data;kalendarz;format;sieć;synchronizacja;
Keywords[pt]=hora;data;calendário;formato;rede;sincronização;
Keywords[pt_BR]=hora;data;calendário;formato;rede;sincronização;
Keywords[pt_PT]=hora;data;calendário;formato;rede;sincronização;
Keywords[ro]=timp;dată;calendar;format;rețea;sincronizare;
Keywords[ro_RO]=timp;dată;calendar;format;rețea;sincronizare;
Keywords[ru]=время;дата;календарь;формат;сеть;синхронизация;
Keywords[sc]=oràriu;data;calendàriu;formatu;retza;sinc;
Keywords[sk]=čas;dátum;kalendár;formát;siete;synchorizácia;
Keywords[sk_SK]=čas;dátum;kalendár;formát;siete;synchorizácia;
Keywords[sl]=čas;datum;koledar;oblika;omrežje;usklajevanje;
Keywords[sl_SI]=čas;datum;koledar;oblika;omrežje;usklajevanje;
Keywords[sq]=ora;data;kalendari;formati;rrjeti;sinkronizo;
Keywords[sr]=време;датум;календар;формат;мрежа;усклађивање;
Keywords[sr@Latn]=време;датум;календар;формат;мрежа;усклађивање;
Keywords[sr@ije]=време;датум;календар;формат;мрежа;усклађивање;
Keywords[sr@ijekavianlatin]=време;датум;календар;формат;мрежа;усклађивање;
Keywords[sr@latin]=време;датум;календар;формат;мрежа;усклађивање;
Keywords[sr_RS]=време;датум;календар;формат;мрежа;усклађивање;
Keywords[sr_RS@latin]=време;датум;календар;формат;мрежа;усклађивање;
Keywords[sv]=tid;datum;kalender;format;nätverk;synkronisering;
Keywords[ta]=நேரம்;தேதி;நாட்காட்டி;வடிவம்;பிணையம்;ஒத்திசைவு;
Keywords[ta_LK]=நேரம்;தேதி;நாட்காட்டி;வடிவம்;பிணையம்;ஒத்திசைவு;
Keywords[tg]=вақт;сана;тақвим;формат;шабака;ҳамоҳангсозӣ;
Keywords[th]=เวลา;วัน;ปฏิทิน;รูปแบบ;เครือข่าย;การโอนข้อมูล;
Keywords[th_TH]=เวลา;วัน;ปฏิทิน;รูปแบบ;เครือข่าย;การโอนข้อมูล;
Keywords[tr]=zaman;tarih;takvim;biçim;ağ;eşitleme;
Keywords[tr_TR]=zaman;tarih;takvim;biçim;ağ;eşitleme;
Keywords[uk]=час;дата;календар;формат;мережа;синхронізація;
Keywords[uk_UA]=час;дата;календар;формат;мережа;синхронізація;
Keywords[ur]=وقت، تاریخ، تقویم، ساخت، نیٹورک، سنک، کالینڈر، فارمیٹ;
Keywords[uz]=вақт;сана;календар;формат;тармоқ;sync;
Keywords[uz@cyrillic]=вақт;сана;календар;формат;тармоқ;sync;
Keywords[vi]=thời gian;ngày tháng;lịch;định dạng;mạng;đồng bộ;
Keywords[vi_VN]=thời gian;ngày tháng;lịch;định dạng;mạng;đồng bộ;
Keywords[zh_CN]=time;date;calendar;format;network;sync;时间;日期;日历;日程;格式;网络;同步;
Keywords[zh_HK]=時間;日期;日曆;格式;網絡;同步;
Keywords[zh_TW]=時間;日期;行事曆;格式;網路;同步;
Cinnamon-3.6.7/files/usr/share/applications/cinnamon-settings-panel.desktop 0000664 0001750 0001750 00000041500 13215735076 026061 0 ustar fabio fabio [Desktop Entry]
Icon=cs-panel
Exec=cinnamon-settings panel
Type=Application
OnlyShowIn=X-Cinnamon;
Categories=Settings;
Name=Panel
Name[af]=Paneel
Name[am]=ክፍል
Name[ar]=الشريط
Name[be]=Панэль
Name[be@latin]=Панэль
Name[be_BY]=Панэль
Name[bg]=Панел
Name[bg_BG]=Панел
Name[bn]=প্যানেল
Name[bn_IN]=প্যানেল
Name[ca]=Tauler
Name[ca@valencia]=Panell
Name[ca_ES]=Tauler
Name[ca_ES@valencia]=Panell
Name[de]=Leiste
Name[de_CH]=Leiste
Name[de_DE]=Leiste
Name[el]=Γραμμή εργασιών
Name[eo]=Panelo
Name[et]=Paneel
Name[et_EE]=Paneel
Name[eu]=Panela
Name[fa]=صفحهی کنترل
Name[fa_AF]=صفحهی کنترل
Name[fa_IR]=صفحهی کنترل
Name[fi]=Paneeli
Name[fi_FI]=Paneeli
Name[fr]=Tableau de bord
Name[fr_CA]=Tableau de bord
Name[fr_FR]=Tableau de bord
Name[ga]=Painéal
Name[gd]=Panail
Name[he]=פאנל
Name[he_IL]=פאנל
Name[hi]=पट्टिका
Name[ia]=Pannello
Name[is]=Skjástika
Name[it]=Pannello
Name[it_CH]=Pannello
Name[it_IT]=Pannello
Name[ja]=パネル
Name[ja_JP]=パネル
Name[km]=បន្ទះ
Name[km_KH]=បន្ទះ
Name[ko]=패널
Name[ko_KR]=패널
Name[li]=Paneel
Name[lt]=Skydelis
Name[lt_LT]=Skydelis
Name[lv]=Panelis
Name[lv_LV]=Panelis
Name[ml]=പാളി
Name[mr]=पटल
Name[nb]=Oppgavelinje
Name[nb_NO]=Oppgavelinje
Name[nds]=Leiste
Name[ne]=प्यानल
Name[nl]=Paneel
Name[nl_NL]=Paneel
Name[oc]=Tablèu de bòrd
Name[om]=Moggaargii
Name[pa]=ਪੈਨਲ
Name[pt]=Painel
Name[pt_BR]=Painel
Name[pt_PT]=Painel
Name[ro]=Panou
Name[ro_RO]=Panou
Name[ru]=Панель
Name[rue]=Панель
Name[si]=පැනලය
Name[sl]=Pult
Name[sl_SI]=Pult
Name[so]=Baanelka
Name[sq]=Paneli
Name[sr]=Полица
Name[sr@Latn]=Tabla
Name[sr@ije]=Полица
Name[sr@ijekavianlatin]=Полица
Name[sr@latin]=Tabla
Name[sr_RS]=Полица
Name[sr_RS@latin]=Tabla
Name[ta]=பலகை
Name[ta_LK]=பலகை
Name[te]=ప్యానల్
Name[tg]=Лавҳа
Name[th]=แผง
Name[th_TH]=แผง
Name[ts]=Phenele
Name[uk]=Панель
Name[uk_UA]=Панель
Name[ur]=پینل
Name[uz]=Панел
Name[uz@cyrillic]=Панел
Name[vi]=Bảng
Name[vi_VN]=Bảng
Name[zh_CN]=面板
Name[zh_HK]=面板
Name[zh_TW]=面板
Comment=Manage Cinnamon panel settings
Comment[am]=የሲናሞን ክፍል ማሰናጃዎች አስተዳዳሪ
Comment[ar]=إدارة خصائص شريط سينامُن
Comment[ast]=Axustes del alministrador del panel Cinnamon
Comment[be]=Кіраванне наладамі панэлі Cinnamon
Comment[be@latin]=Кіраванне наладамі панэлі Cinnamon
Comment[be_BY]=Кіраванне наладамі панэлі Cinnamon
Comment[bg]=Управление на панела на Cinnamon
Comment[bg_BG]=Управление на панела на Cinnamon
Comment[bs]=Upravljanje Cinnamon ploča
Comment[ca]=Gestioneu els ajusts del tauler de Cinnamon
Comment[ca@valencia]=Administra la configuració del panell de Cinnamon
Comment[ca_ES]=Gestioneu els ajusts del tauler de Cinnamon
Comment[ca_ES@valencia]=Administra la configuració del panell de Cinnamon
Comment[cs]=Správa Cinnamon panelu
Comment[cs_CZ]=Správa Cinnamon panelu
Comment[cy]=Rheoli gosodiadau panel Cinnamon
Comment[da]=Administrér Cinnamon-panelindstillinger
Comment[da_DK]=Administrér Cinnamon-panelindstillinger
Comment[de]=Cinnamons Leisteneinstellungen verwalten
Comment[de_CH]=Cinnamons Leisteneinstellungen verwalten
Comment[de_DE]=Cinnamons Leisteneinstellungen verwalten
Comment[el]=Διαχείριση ρυθμίσεων γραμμής εργασιών Cinnamon
Comment[es]=Administrar configuración del panel de Cinnamon
Comment[es_AR]=Administrar configuración del panel de Cinnamon
Comment[es_CL]=Administrar configuración del panel de Cinnamon
Comment[es_CO]=Administrar configuración del panel de Cinnamon
Comment[es_CR]=Administrar configuración del panel de Cinnamon
Comment[es_DO]=Administrar configuración del panel de Cinnamon
Comment[es_EC]=Administrar configuración del panel de Cinnamon
Comment[es_ES]=Administrar configuración del panel de Cinnamon
Comment[es_MX]=Administrar configuración del panel de Cinnamon
Comment[es_NI]=Administrar configuración del panel de Cinnamon
Comment[es_PA]=Administrar configuración del panel de Cinnamon
Comment[es_PE]=Administrar configuración del panel de Cinnamon
Comment[es_PR]=Administrar configuración del panel de Cinnamon
Comment[es_SV]=Administrar configuración del panel de Cinnamon
Comment[es_UY]=Administrar configuración del panel de Cinnamon
Comment[es_VE]=Administrar configuración del panel de Cinnamon
Comment[eu]=Kudeatu Cinnamon panel-ezarpenak
Comment[fi]=Muokkaa Cinnamonin paneelin asetuksia
Comment[fi_FI]=Muokkaa Cinnamonin paneelin asetuksia
Comment[fr]=Gérer les paramètres du tableau de bord de Cinnamon
Comment[fr_CA]=Gérer les paramètres du tableau de bord de Cinnamon
Comment[fr_FR]=Gérer les paramètres du tableau de bord de Cinnamon
Comment[gd]=Stiùirich na roghainnean panail aig Cinnamon
Comment[gl]=Administra os axustes do panel de Cinnamon
Comment[gl_ES]=Administra os axustes do panel de Cinnamon
Comment[hr]=Upravljajte postavkama Cinnamon panela
Comment[hu]=Cinnamon panel beállítások
Comment[hu_HU]=Cinnamon panel beállítások
Comment[ia]=Gerer le configuration del pannello de Cinnamon
Comment[id]=Atur pengaturan panel Cinnamon
Comment[id_ID]=Atur pengaturan panel Cinnamon
Comment[is]=Sýsla með stillingar Cinnamon skjástika
Comment[it]=Gestisci impostazioni del pannello Cinnamon
Comment[it_CH]=Gestisci impostazioni del pannello Cinnamon
Comment[it_IT]=Gestisci impostazioni del pannello Cinnamon
Comment[ja]=Cinnamon パネル設定管理
Comment[ja_JP]=Cinnamon パネル設定管理
Comment[ko]=시나몬 패널설정 관리
Comment[ko_KR]=시나몬 패널설정 관리
Comment[lt]=Tvarkyti Cinnamon skydelio nustatymus
Comment[lt_LT]=Tvarkyti Cinnamon skydelio nustatymus
Comment[lv]=Pārvaldīt Cinnamon paneļa iestatījumus
Comment[lv_LV]=Pārvaldīt Cinnamon paneļa iestatījumus
Comment[ms]=Mengurus tetapan panel Cinnamon
Comment[ms_MY]=Mengurus tetapan panel Cinnamon
Comment[nb]=Håndter innstillinger for oppgavelinjen i Cinnamon
Comment[nb_NO]=Håndter innstillinger for oppgavelinjen i Cinnamon
Comment[nds]=Cinnamon Panel-Einstellungen verwalten
Comment[nl]=Instellingen van Cinnamonwerkbalk beheren
Comment[nl_NL]=Instellingen van Cinnamonwerkbalk beheren
Comment[pl]=Zarządzaj ustawieniami panelu Cinnamona
Comment[pl_PL]=Zarządzaj ustawieniami panelu Cinnamona
Comment[pt]=Gerir as definições do painel do Cinnamon
Comment[pt_BR]=Gerenciar as configurações do painel do Cinnamon
Comment[pt_PT]=Gerir as definições do painel do Cinnamon
Comment[ro]=Gestionează setările panoului Cinnamon
Comment[ro_RO]=Gestionează setările panoului Cinnamon
Comment[ru]=Управление настройками панели Cinnamon
Comment[sk]=Spravovať nastavenia panelov Cinnamon
Comment[sk_SK]=Spravovať nastavenia panelov Cinnamon
Comment[sl]=Upravljajte z nastavitvami pulta Cinnamona
Comment[sl_SI]=Upravljajte z nastavitvami pulta Cinnamona
Comment[sq]=Menaxhoni parametrat e panelit të Cinnamon
Comment[sr]=Управљање поставкама полице Цимета
Comment[sr@Latn]=Управљање поставкама полице Цимета
Comment[sr@ije]=Управљање поставкама полице Цимета
Comment[sr@ijekavianlatin]=Управљање поставкама полице Цимета
Comment[sr@latin]=Управљање поставкама полице Цимета
Comment[sr_RS]=Управљање поставкама полице Цимета
Comment[sr_RS@latin]=Управљање поставкама полице Цимета
Comment[sv]=Hantera Cinnamons panelinställningar
Comment[tg]=Идоракунии танзимоти лавҳаи Cinnamon
Comment[th]=จัดการการตั้งค่าแผง Cinnamon
Comment[th_TH]=จัดการการตั้งค่าแผง Cinnamon
Comment[tr]=Cinnamon panel ayarlarını yönet
Comment[tr_TR]=Cinnamon panel ayarlarını yönet
Comment[uk]=Керування налаштуваннями панелі Cinnamon
Comment[uk_UA]=Керування налаштуваннями панелі Cinnamon
Comment[ur]=سنامون پینل کی ترتیبات کا انتظام کریں
Comment[vi]=Quản lý thiết đặt bảng Cinnamon
Comment[vi_VN]=Quản lý thiết đặt bảng Cinnamon
Comment[zh_CN]=管理Cinnamon面板设置
Comment[zh_HK]=管理 Cinnamon 面板設定
Comment[zh_TW]=管理 Cinnamon 面板設定
Keywords=panel;height;bottom;top;autohide;size;layout;
Keywords[am]=ክፍል: እርዝመት: ከ ታች: ከ ላይ: በራሱ መደበቂያ: መጠን: እቅድ;
Keywords[ar]=الشريط، والطول، أسفل، أعلى، إخفاء تلقائي والحجم والتصميم;
Keywords[bg]=панел;височина;долу;горе;скриване;подредба;
Keywords[bg_BG]=панел;височина;долу;горе;скриване;подредба;
Keywords[ca]=tauler;alçada;inferior;superior;autoocultar;mida;disposició;
Keywords[ca@valencia]=tauler;alçada;inferior;superior;autoocultar;mida;disposició;
Keywords[ca_ES]=tauler;alçada;inferior;superior;autoocultar;mida;disposició;
Keywords[ca_ES@valencia]=tauler;alçada;inferior;superior;autoocultar;mida;disposició;
Keywords[cs]=panel;výška;spodní;horní;automatické skrytí;výška;rozvržení;
Keywords[cs_CZ]=panel;výška;spodní;horní;automatické skrytí;výška;rozvržení;
Keywords[cy]=panel;uchder;isaf;brig;awtoguddio;maint;cynllun;
Keywords[da]=panel;højde;bund;top;skjul automatisk;størrelse;layout;
Keywords[da_DK]=panel;højde;bund;top;skjul automatisk;størrelse;layout;
Keywords[de]=Leiste;Paneel;Höhe;Untern;Oben;automatisch verbergen;automatisch verstecken;Größe;Ansicht;Anordnung;Layout;
Keywords[de_CH]=Leiste;Paneel;Höhe;Untern;Oben;automatisch verbergen;automatisch verstecken;Größe;Ansicht;Anordnung;Layout;
Keywords[de_DE]=Leiste;Paneel;Höhe;Untern;Oben;automatisch verbergen;automatisch verstecken;Größe;Ansicht;Anordnung;Layout;
Keywords[el]=Γραμμή εργαλείων;ύψος;κάτω;πάνω;αυτόματη απόκρυψη;μέγεθος;διάταξη;
Keywords[es]=panel;altura;inferior;superior;autoocultar;tamaño;disposición;
Keywords[es_AR]=panel;altura;inferior;superior;autoocultar;tamaño;disposición;
Keywords[es_CL]=panel;altura;inferior;superior;autoocultar;tamaño;disposición;
Keywords[es_CO]=panel;altura;inferior;superior;autoocultar;tamaño;disposición;
Keywords[es_CR]=panel;altura;inferior;superior;autoocultar;tamaño;disposición;
Keywords[es_DO]=panel;altura;inferior;superior;autoocultar;tamaño;disposición;
Keywords[es_EC]=panel;altura;inferior;superior;autoocultar;tamaño;disposición;
Keywords[es_ES]=panel;altura;inferior;superior;autoocultar;tamaño;disposición;
Keywords[es_MX]=panel;altura;inferior;superior;autoocultar;tamaño;disposición;
Keywords[es_NI]=panel;altura;inferior;superior;autoocultar;tamaño;disposición;
Keywords[es_PA]=panel;altura;inferior;superior;autoocultar;tamaño;disposición;
Keywords[es_PE]=panel;altura;inferior;superior;autoocultar;tamaño;disposición;
Keywords[es_PR]=panel;altura;inferior;superior;autoocultar;tamaño;disposición;
Keywords[es_SV]=panel;altura;inferior;superior;autoocultar;tamaño;disposición;
Keywords[es_UY]=panel;altura;inferior;superior;autoocultar;tamaño;disposición;
Keywords[es_VE]=panel;altura;inferior;superior;autoocultar;tamaño;disposición;
Keywords[eu]=panela;altuera;behea;goia;ezkutatu automatikoki;tamaina;diseinua;
Keywords[fi]=paneeli;korkeus;pohja;yläosa;automaattinen piilotus;koko;asettelu;
Keywords[fi_FI]=paneeli;korkeus;pohja;yläosa;automaattinen piilotus;koko;asettelu;
Keywords[fr]=tableau de bord;hauteur;bas;haut;masquer;taille;disposition;
Keywords[fr_CA]=tableau de bord;hauteur;bas;haut;masquer;tailler;disposition;
Keywords[fr_FR]=tableau de bord;hauteur;bas;haut;masquer;taille;disposition;
Keywords[gd]=panel;height;bottom;top;autohide;size;layout;panail;àirde;bonn;barr;falach;meud;co-dhealbhachd;
Keywords[gl]=panel;altura;inferior;superior;autoagochar;tamaño;disposición;
Keywords[gl_ES]=panel;altura;inferior;superior;autoagochar;tamaño;disposición;
Keywords[hr]=panel;visina;dno;vrh;automatsko sakrivanje;veličina;raspored;
Keywords[hu]=panel;magasság;lent;fent;automatikus elrejtés;méret;hagyományos;elrendezés;
Keywords[hu_HU]=panel;magasság;lent;fent;automatikus elrejtés;méret;hagyományos;elrendezés;
Keywords[ia]=pannello;altessa;pede;summitate;auto occultar;dimension;disposition;
Keywords[is]=spjald;stika;hæð;neðst;efst;sjálfvirk felun;stærð;hefðbundið;framsetning;útlit;
Keywords[it]=pannello;altezza;fondo;cima;nascondi automaticamente;dimensione;disposizione;
Keywords[it_CH]=pannello;altezza;fondo;cima;nascondi automaticamente;dimensione;disposizione;
Keywords[it_IT]=pannello;altezza;fondo;cima;nascondi automaticamente;dimensione;disposizione;
Keywords[ko]=패널;높이;아래;위;자동 숨김;크기;레이아웃;
Keywords[ko_KR]=패널;높이;아래;위;자동 숨김;크기;레이아웃;
Keywords[lt]=skydelis;aukštis;apačia;viršus;automatiškai slėpti;dydis;išdėstymas;
Keywords[lt_LT]=skydelis;aukštis;apačia;viršus;automatiškai slėpti;dydis;išdėstymas;
Keywords[ms]=panel;tinggi;bawah;atas;auto sembunyi;saiz;susun atur;
Keywords[ms_MY]=panel;tinggi;bawah;atas;auto sembunyi;saiz;susun atur;
Keywords[nb]=oppgavelinje;høyde;bunn;topp;skjul automatisk;størrelse;utforming;
Keywords[nb_NO]=oppgavelinje;høyde;bunn;topp;skjul automatisk;størrelse;utforming;
Keywords[nds]=Fenster;Höhe;Unten;Oben;automatisch ausblenden;Größe;Layout;
Keywords[nl]=werkbalk;hoogte;onderaan;bovenaan;automatisch verbergen;grootte;vormgeving;
Keywords[nl_NL]=werkbalk;hoogte;onderaan;bovenaan;automatisch verbergen;grootte;vormgeving;
Keywords[pl]=panel;wysokość;przycisk;góra;automatyczne ukrywanie;rozmiar;układ;
Keywords[pl_PL]=panel;wysokość;przycisk;góra;automatyczne ukrywanie;rozmiar;układ;
Keywords[pt]=painel;altura;fundo;superior;esconder automático;tamanho;layout;
Keywords[pt_BR]=painel;altura;fundo;superior;auto esconder;tamanho;layout;
Keywords[pt_PT]=painel;altura;fundo;superior;esconder automático;tamanho;layout;
Keywords[ro]=panou;înălțime;jos;sus;ascundere automată;dimensiune;aranjament;
Keywords[ro_RO]=panou;înălțime;jos;sus;ascundere automată;dimensiune;aranjament;
Keywords[ru]=панель;высота;внизу;вверху;автоскрытие;размер;слой;
Keywords[sk]=panel;výška;spodok;vrch;automatické skrývanie;veľkosť;rozloženie;
Keywords[sk_SK]=panel;výška;spodok;vrch;automatické skrývanie;veľkosť;rozloženie;
Keywords[sq]=paneli;lartësia;poshtë;lart;vetë-fshih;përmasat;faqosja;
Keywords[sr]=полица;висина;доле;горе;самоскривање;величина;распоред;
Keywords[sr@Latn]=полица;висина;доле;горе;самоскривање;величина;распоред;
Keywords[sr@ije]=полица;висина;доле;горе;самоскривање;величина;распоред;
Keywords[sr@ijekavianlatin]=полица;висина;доле;горе;самоскривање;величина;распоред;
Keywords[sr@latin]=полица;висина;доле;горе;самоскривање;величина;распоред;
Keywords[sr_RS]=полица;висина;доле;горе;самоскривање;величина;распоред;
Keywords[sr_RS@latin]=полица;висина;доле;горе;самоскривање;величина;распоред;
Keywords[sv]=panel;höjd;nederkant;överkant;dölj automatiskt;storlek;upplägg;
Keywords[th]=พาเนล;ความสูง;ข้างล่าง;ข้างบน;ซ่อนอัตโนมัติ;ขนาด;แผนผัง;
Keywords[th_TH]=พาเนล;ความสูง;ข้างล่าง;ข้างบน;ซ่อนอัตโนมัติ;ขนาด;แผนผัง;
Keywords[tr]=panel;yükseklik;alt;üst;otomatik;gizle;boyut;düzen;
Keywords[tr_TR]=panel;yükseklik;alt;üst;otomatik;gizle;boyut;düzen;
Keywords[uk]=Панель;висота;знизу;вгорі;самочинне приховування;розмір;розташування;
Keywords[uk_UA]=Панель;висота;знизу;вгорі;самочинне приховування;розмір;розташування;
Keywords[ur]=پینل، اونچائی، نیچے، اوپر، چھپائیں، سائز، حجم، خاکہ;
Keywords[vi]=bảng;chiều cao;đáy;đỉnh;tự động ẩn;kích thước;bố trí;
Keywords[vi_VN]=bảng;chiều cao;đáy;đỉnh;tự động ẩn;kích thước;bố trí;
Keywords[zh_CN]=面板,高度,底部,顶部,自动隐藏,大小,布局;
Keywords[zh_HK]=面板;高度;底部;頂部;自動隱藏;大小;佈局;
Keywords[zh_TW]=面板;高度;底端;頂端;自動隱藏;尺寸;配置;
Cinnamon-3.6.7/files/usr/share/applications/cinnamon-settings-desktop.desktop 0000664 0001750 0001750 00000040343 13215735076 026437 0 ustar fabio fabio [Desktop Entry]
Icon=cs-desktop
Exec=cinnamon-settings desktop
Type=Application
OnlyShowIn=X-Cinnamon;
Categories=Settings;
Name=Desktop
Name[am]=ዴስክቶፕ
Name[ar]=سطح المكتب
Name[ast]=Escritoriu
Name[az]=Masaüstü
Name[az_AZ]=Masaüstü
Name[be]=Працоўны стол
Name[be@latin]=Працоўны стол
Name[be_BY]=Працоўны стол
Name[bg]=Работен плот
Name[bg_BG]=Работен плот
Name[ca]=Escriptori
Name[ca@valencia]=Escriptori
Name[ca_ES]=Escriptori
Name[ca_ES@valencia]=Escriptori
Name[cs]=Pracovní plocha
Name[cs_CZ]=Pracovní plocha
Name[cy]=Bwrdd Gwaith
Name[da]=Skrivebord
Name[da_DK]=Skrivebord
Name[de]=Schreibtisch
Name[de_CH]=Schreibtisch
Name[de_DE]=Schreibtisch
Name[el]=Επιφάνεια εργασίας
Name[eo]=Labortablo
Name[es]=Escritorio
Name[es_AR]=Escritorio
Name[es_CL]=Escritorio
Name[es_CO]=Escritorio
Name[es_CR]=Escritorio
Name[es_DO]=Escritorio
Name[es_EC]=Escritorio
Name[es_ES]=Escritorio
Name[es_MX]=Escritorio
Name[es_NI]=Escritorio
Name[es_PA]=Escritorio
Name[es_PE]=Escritorio
Name[es_PR]=Escritorio
Name[es_SV]=Escritorio
Name[es_UY]=Escritorio
Name[es_VE]=Escritorio
Name[et]=Töölaud
Name[et_EE]=Töölaud
Name[eu]=Mahaigaina
Name[fa]=دسکتاپ
Name[fa_AF]=دسکتاپ
Name[fa_IR]=دسکتاپ
Name[fi]=Työpöytä
Name[fi_FI]=Työpöytä
Name[fil]=Pook ng Likha
Name[fr]=Bureau
Name[fr_CA]=Bureau
Name[fr_FR]=Bureau
Name[ga]=Deasc
Name[gl]=Escritorio
Name[gl_ES]=Escritorio
Name[hr]=Radna površina
Name[hu]=Asztal
Name[hu_HU]=Asztal
Name[ia]=Scriptorio
Name[is]=Skjáborð
Name[ja]=デスクトップ
Name[ja_JP]=デスクトップ
Name[kab]=Tanarit
Name[ko]=바탕화면
Name[ko_KR]=바탕화면
Name[lo]=ພື້ນທີ່ໜ້າຈໍ
Name[lo_LA]=ພື້ນທີ່ໜ້າຈໍ
Name[lt]=Darbalaukis
Name[lt_LT]=Darbalaukis
Name[lv]=Darbvirsma
Name[lv_LV]=Darbvirsma
Name[nb]=Skrivebord
Name[nb_NO]=Skrivebord
Name[nl]=Bureaublad
Name[nl_NL]=Bureaublad
Name[oc]=Burèu
Name[pa]=ਡੈਸਕਟਾਪ
Name[pl]=Pulpit
Name[pl_PL]=Pulpit
Name[pt]=Ambiente de trabalho
Name[pt_BR]=Área de Trabalho
Name[pt_PT]=Ambiente de trabalho
Name[ru]=Рабочий стол
Name[sk]=Pracovná plocha
Name[sk_SK]=Pracovná plocha
Name[sl]=Namizje
Name[sl_SI]=Namizje
Name[sq]=Desktopi
Name[sr]=Радна површ
Name[sr@Latn]=Радна површ
Name[sr@ije]=Радна површ
Name[sr@ijekavianlatin]=Радна површ
Name[sr@latin]=Радна површ
Name[sr_RS]=Радна површ
Name[sr_RS@latin]=Радна површ
Name[sv]=Skrivbord
Name[ta]=பணிமேடை
Name[ta_LK]=பணிமேடை
Name[tg]=Мизи корӣ
Name[th]=พื้นโต๊ะ
Name[th_TH]=พื้นโต๊ะ
Name[tl]=Pook ng likha
Name[tr]=Masaüstü
Name[tr_TR]=Masaüstü
Name[uk]=Стільниця
Name[uk_UA]=Стільниця
Name[ur]=ڈیسک ٹاپ
Name[vi]=Màn hình làm việc
Name[vi_VN]=Màn hình làm việc
Name[zh_CN]=桌面
Name[zh_HK]=桌面
Name[zh_TW]=桌面
Comment=Manage your desktop icons
Comment[am]=የ ዴስክቶፕ ምልክቶች አስተዳዳሪ
Comment[ar]=إدارة أيقونات سطح المكتب
Comment[az]=Masaüstü piktoqramlarını idarə edin
Comment[az_AZ]=Masaüstü piktoqramlarını idarə edin
Comment[be]=Наладзіць значкі на працоўным стале
Comment[be@latin]=Наладзіць значкі на працоўным стале
Comment[be_BY]=Наладзіць значкі на працоўным стале
Comment[bg]=Управлявайте Вашите иконки на работния плот
Comment[bg_BG]=Управлявайте Вашите иконки на работния плот
Comment[bs]=Upravljajte vašim desktop ikonama
Comment[ca]=Gestioneu les vostres icones d'escriptori
Comment[ca@valencia]=Administrar icones de l'escriptori
Comment[ca_ES]=Gestioneu les vostres icones d'escriptori
Comment[ca_ES@valencia]=Administrar icones de l'escriptori
Comment[cs]=Správa ikon na ploše
Comment[cs_CZ]=Správa ikon na ploše
Comment[cy]=Rheolwch eiconau'ch bwrdd gwaith
Comment[da]=Administrér dine skrivebordsikoner
Comment[da_DK]=Administrér dine skrivebordsikoner
Comment[de]=Schreibtischsymbole verwalten
Comment[de_CH]=Schreibtischsymbole verwalten
Comment[de_DE]=Schreibtischsymbole verwalten
Comment[el]=Διαχείριση εικονιδίων επιφάνειας εργασίας
Comment[es]=Administrar iconos del escritorio
Comment[es_AR]=Administrar iconos del escritorio
Comment[es_CL]=Administrar iconos del escritorio
Comment[es_CO]=Administrar iconos del escritorio
Comment[es_CR]=Administrar iconos del escritorio
Comment[es_DO]=Administrar iconos del escritorio
Comment[es_EC]=Administrar iconos del escritorio
Comment[es_ES]=Administrar iconos del escritorio
Comment[es_MX]=Administrar iconos del escritorio
Comment[es_NI]=Administrar iconos del escritorio
Comment[es_PA]=Administrar iconos del escritorio
Comment[es_PE]=Administrar iconos del escritorio
Comment[es_PR]=Administrar iconos del escritorio
Comment[es_SV]=Administrar iconos del escritorio
Comment[es_UY]=Administrar iconos del escritorio
Comment[es_VE]=Administrar iconos del escritorio
Comment[eu]=Kudeatu mahaigaineko ikonoak
Comment[fa]=آیکنهای دسکتاپتان را مدیریت کنید
Comment[fa_AF]=آیکنهای دسکتاپتان را مدیریت کنید
Comment[fa_IR]=آیکنهای دسکتاپتان را مدیریت کنید
Comment[fi]=Hallitse työpöydän kuvakkeita
Comment[fi_FI]=Hallitse työpöydän kuvakkeita
Comment[fr]=Gérez vos icones de bureaux
Comment[fr_CA]=Gérer vos icônes du bureau
Comment[fr_FR]=Gérez vos icones de bureaux
Comment[gd]=Stiùirich ìomhaigheagan an deasga agad
Comment[gl]=Xestiona as iconas do escritorio
Comment[gl_ES]=Xestiona as iconas do escritorio
Comment[hr]=Upravljajte svojim ikonama radne površine
Comment[hu]=Asztal ikonjainak kezelése
Comment[hu_HU]=Asztal ikonjainak kezelése
Comment[ia]=Gerer tu icones del scriptorio
Comment[id]=Atur icon di desktop
Comment[id_ID]=Atur icon di desktop
Comment[is]=Sýsla með táknmyndir á skjáborði
Comment[it]=Gestione delle icone sul desktop
Comment[it_CH]=Gestione delle icone sul desktop
Comment[it_IT]=Gestione delle icone sul desktop
Comment[ja]=デスクトップアイコン管理
Comment[ja_JP]=デスクトップアイコン管理
Comment[kab]=Sefrek taykunin n tnarit-inek
Comment[ko]=바탕화면 아이콘을 관리합니다
Comment[ko_KR]=바탕화면 아이콘을 관리합니다
Comment[lo]=ຈັດການໄອຄອນພື້ນທີ່ໜ້າຈໍຂອງເຈົ້າ
Comment[lo_LA]=ຈັດການໄອຄອນພື້ນທີ່ໜ້າຈໍຂອງເຈົ້າ
Comment[lt]=Tvarkyti darbalaukio piktogramas
Comment[lt_LT]=Tvarkyti darbalaukio piktogramas
Comment[lv]=Pārvaldīt savas darbvirsmas ikonas
Comment[lv_LV]=Pārvaldīt savas darbvirsmas ikonas
Comment[ms]=Mengurus ikon desktop anda
Comment[ms_MY]=Mengurus ikon desktop anda
Comment[nb]=Behandle skrivebordsikonene
Comment[nb_NO]=Behandle skrivebordsikonene
Comment[nds]=Desktopsymbole bearbeiten
Comment[nl]=Uw bureaubladpictogrammen beheren
Comment[nl_NL]=Uw bureaubladpictogrammen beheren
Comment[oc]=Gerir las icònas de vòstre burèu
Comment[pl]=Zarządzaj swoimi ikonami pulpitu
Comment[pl_PL]=Zarządzaj swoimi ikonami pulpitu
Comment[pt]=Gerir os seus ícones
Comment[pt_BR]=Gerenciar seus ícones da área de trabalho
Comment[pt_PT]=Gerir os seus ícones
Comment[ro]=Gestionează pictogramele de pe desktop
Comment[ro_RO]=Gestionează pictogramele de pe desktop
Comment[ru]=Настроить значки на рабочем столе
Comment[sk]=Spravovať vaše ikony pracovnej plochy
Comment[sk_SK]=Spravovať vaše ikony pracovnej plochy
Comment[sl]=Upravljajte z ikonami namizja
Comment[sl_SI]=Upravljajte z ikonami namizja
Comment[sq]=Menaxhoni ikonat e desktopit tuaj
Comment[sr]=Управљање иконицама радне површи
Comment[sr@Latn]=Управљање иконицама радне површи
Comment[sr@ije]=Управљање иконицама радне површи
Comment[sr@ijekavianlatin]=Управљање иконицама радне површи
Comment[sr@latin]=Управљање иконицама радне површи
Comment[sr_RS]=Управљање иконицама радне површи
Comment[sr_RS@latin]=Управљање иконицама радне површи
Comment[sv]=Hantera dina skrivbordsikoner
Comment[tg]=Идоракунии нишонаҳои мизи корӣ
Comment[th]=จัดการไอคอนพื้นโต๊ะของคุณ
Comment[th_TH]=จัดการไอคอนพื้นโต๊ะของคุณ
Comment[tr]=Masaüstü simgelerini yönet
Comment[tr_TR]=Masaüstü simgelerini yönet
Comment[uk]=Керування піктограмами стільниці
Comment[uk_UA]=Керування піктограмами стільниці
Comment[ur]=ڈیسک ٹاپ کے آئکن کا انتظام کریں
Comment[vi]=Quản lý biểu tượng màn hình của bạn
Comment[vi_VN]=Quản lý biểu tượng màn hình của bạn
Comment[zh_CN]=管理桌面图标
Comment[zh_HK]=管理你的桌面圖示
Comment[zh_TW]=管理您的桌面圖示
Keywords=desktop;home;button;trash;
Keywords[am]=ዴስክቶፕ : ቤት : ቁልፍ : ቆሻሻ;
Keywords[ar]=سطح المكتب ، المنزل ، مفتاح، سله المهملات;
Keywords[az]=masaüstü;ev;düymə;zibil;
Keywords[az_AZ]=masaüstü;ev;düymə;zibil;
Keywords[be]=працоўны стол;дамой;кнопка;смецце;
Keywords[be@latin]=працоўны стол;дамой;кнопка;смецце;
Keywords[be_BY]=працоўны стол;дамой;кнопка;смецце;
Keywords[bg]=Работен плот;домашна папка;бутон;кошче;
Keywords[bg_BG]=Работен плот;домашна папка;бутон;кошче;
Keywords[bs]=desktop;naslovna;dugme;smeće;
Keywords[ca]=escriptori;casa;botó;paperera;
Keywords[ca@valencia]=escriptori;casa;botó;paperera;
Keywords[ca_ES]=escriptori;casa;botó;paperera;
Keywords[ca_ES@valencia]=escriptori;casa;botó;paperera;
Keywords[cs]=plocha;domů;tlačítko;koš;
Keywords[cs_CZ]=plocha;domů;tlačítko;koš;
Keywords[cy]=bwrdd gwaith;cartref;botwm;sbwriel;
Keywords[da]=skrivebord;hjem;knap;papirkurv;
Keywords[da_DK]=skrivebord;hjem;knap;papirkurv;
Keywords[de]=Arbeitsfläche;Schreibtisch;Persönlicher Ordner;Knopf;Papierkorb;Müll;desktop;home;button;trash;
Keywords[de_CH]=Arbeitsfläche;Schreibtisch;Persönlicher Ordner;Knopf;Papierkorb;Müll;desktop;home;button;trash;
Keywords[de_DE]=Arbeitsfläche;Schreibtisch;Persönlicher Ordner;Knopf;Papierkorb;Müll;desktop;home;button;trash;
Keywords[el]=επιφάνεια εργασίας;αρχικός φάκελος;κουμπί;απορρίματα;
Keywords[en_GB]=desktop;home;button;rubbish bin;
Keywords[es]=escritorio;casa;botón;papelera;
Keywords[es_AR]=escritorio;casa;botón;papelera;
Keywords[es_CL]=escritorio;casa;botón;papelera;
Keywords[es_CO]=escritorio;casa;botón;papelera;
Keywords[es_CR]=escritorio;casa;botón;papelera;
Keywords[es_DO]=escritorio;casa;botón;papelera;
Keywords[es_EC]=escritorio;casa;botón;papelera;
Keywords[es_ES]=escritorio;casa;botón;papelera;
Keywords[es_MX]=escritorio;casa;botón;papelera;
Keywords[es_NI]=escritorio;casa;botón;papelera;
Keywords[es_PA]=escritorio;casa;botón;papelera;
Keywords[es_PE]=escritorio;casa;botón;papelera;
Keywords[es_PR]=escritorio;casa;botón;papelera;
Keywords[es_SV]=escritorio;casa;botón;papelera;
Keywords[es_UY]=escritorio;casa;botón;papelera;
Keywords[es_VE]=escritorio;casa;botón;papelera;
Keywords[et]=töölaud;kodu nupp;prügikast;
Keywords[et_EE]=töölaud;kodu nupp;prügikast;
Keywords[eu]=mahaigaina;etxea;botoia;zakarrontzia;
Keywords[fa]=دسکتاپ، خانه، دگمه، آشغال;
Keywords[fa_AF]=دسکتاپ، خانه، دگمه، آشغال;
Keywords[fa_IR]=دسکتاپ، خانه، دگمه، آشغال;
Keywords[fi]=työpöytä;koti;näppäin;roskakori;
Keywords[fi_FI]=työpöytä;koti;näppäin;roskakori;
Keywords[fr]=bureau;dossier personnel;bouton;corbeille;poubelle;
Keywords[fr_CA]=bureau;index;bouton;corbeille;
Keywords[fr_FR]=bureau;dossier personnel;bouton;corbeille;poubelle;
Keywords[ga]=deasc;baile;cnaipe;bruscar;
Keywords[gd]=desktop;home;button;trash;dhachaigh;putan;sgudal;
Keywords[gl]=escritorio;cartafol persoal;botón;lixo;
Keywords[gl_ES]=escritorio;cartafol persoal;botón;lixo;
Keywords[hr]=radna površina;osobna mapa;tipka;smeće;
Keywords[hu]=asztal;saját mappa;gomb;kuka;
Keywords[hu_HU]=asztal;saját mappa;gomb;kuka;
Keywords[ia]=scriptorio;domo;button;immunditia;
Keywords[id]=desktop;rumah;tombol;tong sampah;
Keywords[id_ID]=desktop;rumah;tombol;tong sampah;
Keywords[is]=skjáborð;heimamappa;hnappur;rusl;
Keywords[it]=desktop. home;pulsante;cestino;
Keywords[it_CH]=desktop. home;pulsante;cestino;
Keywords[it_IT]=desktop. home;pulsante;cestino;
Keywords[ja]=デスクトップ、ホーム、ボタン、ゴミ箱;
Keywords[ja_JP]=デスクトップ、ホーム、ボタン、ゴミ箱;
Keywords[kab]=tanarit;akaram udmawan;taqeffalt;taqerṭilt;iḍumman;
Keywords[ko]=바탕화면;홈;버튼;휴지통;
Keywords[ko_KR]=바탕화면;홈;버튼;휴지통;
Keywords[lo]=ພື້ນທີ່ໜ້າຈໍ;ໜ້າທຳອິດ;ປູ່ມ;ຖັງຂີ້ເຫຍື້ອ;
Keywords[lo_LA]=ພື້ນທີ່ໜ້າຈໍ;ໜ້າທຳອິດ;ປູ່ມ;ຖັງຂີ້ເຫຍື້ອ;
Keywords[lt]=darbalaukis;namai;mygtukas;šiukšlinė;
Keywords[lt_LT]=darbalaukis;namai;mygtukas;šiukšlinė;
Keywords[lv]=darbvirsma;mājas;poga;miskaste;
Keywords[lv_LV]=darbvirsma;mājas;poga;miskaste;
Keywords[ms]=desktop;rumah;butang;tong sampah;
Keywords[ms_MY]=desktop;rumah;butang;tong sampah;
Keywords[nb]=skrivebord;hjem;knapp;søppel;
Keywords[nb_NO]=skrivebord;hjem;knapp;søppel;
Keywords[nds]=Desktop;Home;Knopf;Papierkorb;
Keywords[nl]=bureaublad;persoonlijke map;knop;prullenbak;
Keywords[nl_NL]=bureaublad;persoonlijke map;knop;prullenbak;
Keywords[om]=foddaa;ka'uumsa;qabduu;korboo balfaa;
Keywords[pa]=ਡੈਸਕਟਾੱਪ;ਘਰ;ਬਟਨ;ਕੂੜੇਦਾਨ;
Keywords[pl]=pulpit;home;przycisk;kosz;
Keywords[pl_PL]=pulpit;home;przycisk;kosz;
Keywords[pt]=ambiente de trabalho;pasta pessoal;botão;lixo;
Keywords[pt_BR]=área de trabalho;pasta pessoal;botão;lixeira;
Keywords[pt_PT]=ambiente de trabalho;pasta pessoal;botão;lixo;
Keywords[ro]=spațiu de lucru;dosar personal;buton;gunoi;
Keywords[ro_RO]=spațiu de lucru;dosar personal;buton;gunoi;
Keywords[ru]=рабочий стол;домашняя;кнопка;корзина;
Keywords[sk]=plocha;domov;tlačidlo;kôš;
Keywords[sk_SK]=plocha;domov;tlačidlo;kôš;
Keywords[sl]=namizje;dom;gumb;smeti;
Keywords[sl_SI]=namizje;dom;gumb;smeti;
Keywords[sq]=desktop;shtëpi;buton;kosh;
Keywords[sr]=површ;лично;дугме;смеће;
Keywords[sr@Latn]=површ;лично;дугме;смеће;
Keywords[sr@ije]=површ;лично;дугме;смеће;
Keywords[sr@ijekavianlatin]=површ;лично;дугме;смеће;
Keywords[sr@latin]=површ;лично;дугме;смеће;
Keywords[sr_RS]=површ;лично;дугме;смеће;
Keywords[sr_RS@latin]=површ;лично;дугме;смеће;
Keywords[sv]=skrivbord;hem;knapp;papperskorgen;
Keywords[ta]=பணிமேடை;முகப்பு;பொத்தான்;குப்பை;
Keywords[ta_LK]=பணிமேடை;முகப்பு;பொத்தான்;குப்பை;
Keywords[tg]=мизи корӣ;асосӣ;тугма;сабад;
Keywords[th]=พื้นโต๊ะ;บ้าน;ปุ่ม;ถังขยะ;
Keywords[th_TH]=พื้นโต๊ะ;บ้าน;ปุ่ม;ถังขยะ;
Keywords[tr]=masaüstü;ev;düğme;çöp kutusu;
Keywords[tr_TR]=masaüstü;ev;düğme;çöp kutusu;
Keywords[uk]=стільниця;домівка;кнопка;смітник;
Keywords[uk_UA]=стільниця;домівка;кнопка;смітник;
Keywords[ur]=ڈیسک ٹاپ، ھوم، بٹن، ردی;
Keywords[vi]=màn hình làm việc;nhà;nút;thùng rác;
Keywords[vi_VN]=màn hình làm việc;nhà;nút;thùng rác;
Keywords[zh_CN]=desktop;home;button;trash;桌面;按钮;回收站;主目录;
Keywords[zh_HK]=桌面;家目錄;按鈕;垃圾桶;
Keywords[zh_TW]=桌面;家屋;按鍵;回收筒;
Cinnamon-3.6.7/files/usr/share/applications/cinnamon-settings-hotcorner.desktop 0000664 0001750 0001750 00000040766 13215735076 027002 0 ustar fabio fabio [Desktop Entry]
Icon=cs-overview
Exec=cinnamon-settings hotcorner
Type=Application
OnlyShowIn=X-Cinnamon;
Categories=Settings;
Name=Hot Corners
Name[am]=ጠርዞች
Name[ar]=أركان ساخنة
Name[be]=Гарачы Кут
Name[be@latin]=Гарачы Кут
Name[be_BY]=Гарачы Кут
Name[bg]=Активни ъгли
Name[bg_BG]=Активни ъгли
Name[bs]=Uglovi ekrana
Name[ca]=Cantonades actives
Name[ca@valencia]=Cantons actius
Name[ca_ES]=Cantonades actives
Name[ca_ES@valencia]=Cantons actius
Name[cs]=Aktivní rohy
Name[cs_CZ]=Aktivní rohy
Name[cy]=Corneli Poeth
Name[da]=Aktive hjørner
Name[da_DK]=Aktive hjørner
Name[de]=Aktive Ecken
Name[de_CH]=Aktive Ecken
Name[de_DE]=Aktive Ecken
Name[el]=Ενεργές γωνίες
Name[es]=Esquinas activas
Name[es_AR]=Esquinas activas
Name[es_CL]=Esquinas activas
Name[es_CO]=Esquinas activas
Name[es_CR]=Esquinas activas
Name[es_DO]=Esquinas activas
Name[es_EC]=Esquinas activas
Name[es_ES]=Esquinas activas
Name[es_MX]=Esquinas activas
Name[es_NI]=Esquinas activas
Name[es_PA]=Esquinas activas
Name[es_PE]=Esquinas activas
Name[es_PR]=Esquinas activas
Name[es_SV]=Esquinas activas
Name[es_UY]=Esquinas activas
Name[es_VE]=Esquinas activas
Name[et]=Abistavad nurgad
Name[et_EE]=Abistavad nurgad
Name[eu]=Izkina beroak
Name[fi]=Toimintokulmat
Name[fi_FI]=Toimintokulmat
Name[fr]=Coins intelligents
Name[fr_CA]=Coins intelligents
Name[fr_FR]=Coins intelligents
Name[ga]=Cúinní teo
Name[gd]=Oiseanan teth
Name[gl]=Cantos activos
Name[gl_ES]=Cantos activos
Name[hr]=Kutovi zaslona
Name[hu]=Érzékeny sarkok
Name[hu_HU]=Érzékeny sarkok
Name[ia]=Angulos calide
Name[id]=Pojok Interaktif
Name[id_ID]=Pojok Interaktif
Name[is]=Virk skjáhorn
Name[it]=Angoli attivi
Name[it_CH]=Angoli attivi
Name[it_IT]=Angoli attivi
Name[ja]=ホットコーナー
Name[ja_JP]=ホットコーナー
Name[ko]=핫코너
Name[ko_KR]=핫코너
Name[lt]=Karštieji kampai
Name[lt_LT]=Karštieji kampai
Name[lv]=Aktīvie stūri
Name[lv_LV]=Aktīvie stūri
Name[ms]=Bucu Panas
Name[ms_MY]=Bucu Panas
Name[nb]=Aktive hjørner
Name[nb_NO]=Aktive hjørner
Name[nds]=Schnellzugriffsecken
Name[nl]=Actieve hoeken
Name[nl_NL]=Actieve hoeken
Name[pl]=Aktywne narożniki
Name[pl_PL]=Aktywne narożniki
Name[pt]=Locais de ativação
Name[pt_BR]=Cantos de Atalho
Name[pt_PT]=Locais de ativação
Name[ro]=Colțuri sensibile
Name[ro_RO]=Colțuri sensibile
Name[ru]=Горячие углы
Name[sk]=Aktívne rohy
Name[sk_SK]=Aktívne rohy
Name[sl]=Vroči koti
Name[sl_SI]=Vroči koti
Name[sq]=Këndet aktivë
Name[sr]=Вруће ивице
Name[sr@Latn]=Вруће ивице
Name[sr@ije]=Вруће ивице
Name[sr@ijekavianlatin]=Вруће ивице
Name[sr@latin]=Вруће ивице
Name[sr_RS]=Вруће ивице
Name[sr_RS@latin]=Вруће ивице
Name[sv]=Aktiva hörn
Name[tg]=Кунҷҳои тез
Name[th]=มุมที่น่าสนใจ
Name[th_TH]=มุมที่น่าสนใจ
Name[tr]=Etkin Köşeler
Name[tr_TR]=Etkin Köşeler
Name[uk]=Гарячі кути
Name[uk_UA]=Гарячі кути
Name[ur]=ہاٹ کونے
Name[vi]=Góc nóng
Name[vi_VN]=Góc nóng
Name[zh_CN]=热区
Name[zh_TW]=熱角
Comment=Manage hotcorner settings
Comment[ar]=إدارة إعدادات الركن الساخن
Comment[be]=Кіраванне наладамі гарачых кутоў
Comment[be@latin]=Кіраванне наладамі гарачых кутоў
Comment[be_BY]=Кіраванне наладамі гарачых кутоў
Comment[bg]=Управление на настройките на активните ъгли
Comment[bg_BG]=Управление на настройките на активните ъгли
Comment[bs]=Upravljaj postavkama uglova ekrana
Comment[ca]=Gestioneu els ajusts de les cantonades actives
Comment[ca@valencia]=Administra configuració de cantons actius
Comment[ca_ES]=Gestioneu els ajusts de les cantonades actives
Comment[ca_ES@valencia]=Administra configuració de cantons actius
Comment[cs]=Nastavení horkých rohů
Comment[cs_CZ]=Nastavení horkých rohů
Comment[cy]=Rheolwch osodiadau y gornel boeth
Comment[da]=Administrér indstillinger for aktive hjørner
Comment[da_DK]=Administrér indstillinger for aktive hjørner
Comment[de]=Einstellungen der aktiven Ecken verwalten
Comment[de_CH]=Einstellungen der aktiven Ecken verwalten
Comment[de_DE]=Einstellungen der aktiven Ecken verwalten
Comment[el]=Ρυθμίστε τις ενεργές γωνίες
Comment[es]=Administrar configuración de esquinas activas
Comment[es_AR]=Administrar configuración de esquinas activas
Comment[es_CL]=Administrar configuración de esquinas activas
Comment[es_CO]=Administrar configuración de esquinas activas
Comment[es_CR]=Administrar configuración de esquinas activas
Comment[es_DO]=Administrar configuración de esquinas activas
Comment[es_EC]=Administrar configuración de esquinas activas
Comment[es_ES]=Administrar configuración de esquinas activas
Comment[es_MX]=Administrar configuración de esquinas activas
Comment[es_NI]=Administrar configuración de esquinas activas
Comment[es_PA]=Administrar configuración de esquinas activas
Comment[es_PE]=Administrar configuración de esquinas activas
Comment[es_PR]=Administrar configuración de esquinas activas
Comment[es_SV]=Administrar configuración de esquinas activas
Comment[es_UY]=Administrar configuración de esquinas activas
Comment[es_VE]=Administrar configuración de esquinas activas
Comment[eu]=Kudeatu izkina beroen ezarpenak
Comment[fi]=Muuta toimintonurkkien asetuksia
Comment[fi_FI]=Muuta toimintonurkkien asetuksia
Comment[fr]=Gérez les paramètres des coins intelligents
Comment[fr_CA]=Gérer les paramètres des coins intelligents
Comment[fr_FR]=Gérez les paramètres des coins intelligents
Comment[gd]=Stiùirich roghainnean a' hotcorner
Comment[gl]=Administra os axustes dos recantos activos
Comment[gl_ES]=Administra os axustes dos recantos activos
Comment[hr]=Upravljajte postavkama kutova zaslona
Comment[hu]=Érzékeny sarok beállítása
Comment[hu_HU]=Érzékeny sarok beállítása
Comment[ia]=Administrar le preferentias de angulo calide
Comment[id]=Atur Pengaturan hotcorner
Comment[id_ID]=Atur Pengaturan hotcorner
Comment[is]=Sýsla með stillingar fyrir virk skjáhorn
Comment[it]=Gestisci impostazioni degli angoli attivi
Comment[it_CH]=Gestisci impostazioni degli angoli attivi
Comment[it_IT]=Gestisci impostazioni degli angoli attivi
Comment[ja]=ホットコーナー設定管理
Comment[ja_JP]=ホットコーナー設定管理
Comment[ko]=핫코너 설정 관리하기
Comment[ko_KR]=핫코너 설정 관리하기
Comment[lo]=ຈັດການການຕັ້ງຄ່າ hotcorner
Comment[lo_LA]=ຈັດການການຕັ້ງຄ່າ hotcorner
Comment[lt]=Tvarkyti karštųjų kampų nustatymus
Comment[lt_LT]=Tvarkyti karštųjų kampų nustatymus
Comment[lv]=Pērvaldīt aktīvo stūru iestatījumus
Comment[lv_LV]=Pērvaldīt aktīvo stūru iestatījumus
Comment[ms]=Mengurus tetapan hotcorner
Comment[ms_MY]=Mengurus tetapan hotcorner
Comment[nb]=Håndter aktive hjørner-innstillinger
Comment[nb_NO]=Håndter aktive hjørner-innstillinger
Comment[nds]=Schnellzugriffsecken-Einstellungen bearbeiten
Comment[nl]=Instellingen voor actieve hoeken beheren
Comment[nl_NL]=Instellingen voor actieve hoeken beheren
Comment[oc]=Gerissètz los paramètres dels caires intelligents
Comment[pl]=Zarządzaj ustawieniami aktywnego narożnika
Comment[pl_PL]=Zarządzaj ustawieniami aktywnego narożnika
Comment[pt]=Gerir as definições dos cantos
Comment[pt_BR]=Gerenciar as definições dos cantos
Comment[pt_PT]=Gerir as definições dos cantos
Comment[ro]=Gestionează setările colțurilor sensibile
Comment[ro_RO]=Gestionează setările colțurilor sensibile
Comment[ru]=Управление настройками горячих углов
Comment[sk]=Spravovať nastavenia aktívnych rohov
Comment[sk_SK]=Spravovať nastavenia aktívnych rohov
Comment[sl]=Upravljajte z nastavitvami hitrih kotov
Comment[sl_SI]=Upravljajte z nastavitvami hitrih kotov
Comment[sq]=Menaxhoni parametrat e këndeve aktivë
Comment[sr]=Управљање подешавањима врућих ивица
Comment[sr@Latn]=Управљање подешавањима врућих ивица
Comment[sr@ije]=Управљање подешавањима врућих ивица
Comment[sr@ijekavianlatin]=Управљање подешавањима врућих ивица
Comment[sr@latin]=Управљање подешавањима врућих ивица
Comment[sr_RS]=Управљање подешавањима врућих ивица
Comment[sr_RS@latin]=Управљање подешавањима врућих ивица
Comment[sv]=Hantera inställningar för aktiva hörn
Comment[tg]=Идоракунии танзимоти кунҷи тезкор
Comment[th]=จัดการการตั้งค่ามุมร้อน
Comment[th_TH]=จัดการการตั้งค่ามุมร้อน
Comment[tr]=Etkin köşe ayarlarını yönet
Comment[tr_TR]=Etkin köşe ayarlarını yönet
Comment[uk]=Керування налаштуваннями гарячих кутів
Comment[uk_UA]=Керування налаштуваннями гарячих кутів
Comment[ur]=ہاٹ کونے کی ترتیبات کا انتظام
Comment[vi]=Quản lý thiết đặt góc nóng
Comment[vi_VN]=Quản lý thiết đặt góc nóng
Comment[zh_CN]=热角设置
Comment[zh_HK]=管理 hotcorner 設定
Comment[zh_TW]=管理熱角設定
Keywords=hotcorner;overview;scale;expo;
Keywords[am]=ጠርዞች: ባጠቃላይ: መጠን: expo;
Keywords[ar]=أركان ساخنة، رؤية عامة، تحجيم، معرض;
Keywords[be]=гарачы кут;агляд;маштабаванне;экспазіцыя;
Keywords[be@latin]=гарачы кут;агляд;маштабаванне;экспазіцыя;
Keywords[be_BY]=гарачы кут;агляд;маштабаванне;экспазіцыя;
Keywords[bg]=Активен ъгъл;преглед;мащаб;експозиция;
Keywords[bg_BG]=Активен ъгъл;преглед;мащаб;експозиция;
Keywords[bs]=ugao ekrana;pregled;promjena veličine;prikaz radnih prostora;
Keywords[ca]=cantonada activa;vista general;escala;expo;
Keywords[ca@valencia]=cantó actiu;vista general;escala;exposició;
Keywords[ca_ES]=cantonada activa;vista general;escala;expo;
Keywords[ca_ES@valencia]=cantó actiu;vista general;escala;exposició;
Keywords[cs]=aktivní roh;přehled;scale;expo;
Keywords[cs_CZ]=aktivní roh;přehled;scale;expo;
Keywords[cy]=cornel poeth;trosolwg;graddfa;dangos;
Keywords[da]=aktiv hjørne;oversigt;skalér;vis arbejdsområder;
Keywords[da_DK]=aktiv hjørne;oversigt;skalér;vis arbejdsområder;
Keywords[de]=Aktive Ecke;Hotcorner;Übersicht;Fensterübersicht;Scale;Schreibtischübersicht;Arbeitsflächenübersicht;Expo;
Keywords[de_CH]=Aktive Ecke;Hotcorner;Übersicht;Fensterübersicht;Scale;Schreibtischübersicht;Arbeitsflächenübersicht;Expo;
Keywords[de_DE]=Aktive Ecke;Hotcorner;Übersicht;Fensterübersicht;Scale;Schreibtischübersicht;Arbeitsflächenübersicht;Expo;
Keywords[el]=ενεργή γωνία;επισκόπηση;κλίμακα;expo;
Keywords[es]=esquina activa;vista general;escala;expo;
Keywords[es_AR]=esquina activa;vista general;escala;expo;
Keywords[es_CL]=esquina activa;vista general;escala;expo;
Keywords[es_CO]=esquina activa;vista general;escala;expo;
Keywords[es_CR]=esquina activa;vista general;escala;expo;
Keywords[es_DO]=esquina activa;vista general;escala;expo;
Keywords[es_EC]=esquina activa;vista general;escala;expo;
Keywords[es_ES]=esquina activa;vista general;escala;expo;
Keywords[es_MX]=esquina activa;vista general;escala;expo;
Keywords[es_NI]=esquina activa;vista general;escala;expo;
Keywords[es_PA]=esquina activa;vista general;escala;expo;
Keywords[es_PE]=esquina activa;vista general;escala;expo;
Keywords[es_PR]=esquina activa;vista general;escala;expo;
Keywords[es_SV]=esquina activa;vista general;escala;expo;
Keywords[es_UY]=esquina activa;vista general;escala;expo;
Keywords[es_VE]=esquina activa;vista general;escala;expo;
Keywords[eu]=izkina beroa;ikuspegi orokorra;eskala;expo;
Keywords[fi]=toimintokulma;yleiskuva;levitysnäkymä;esittelynäkymä;
Keywords[fi_FI]=toimintokulma;yleiskuva;levitysnäkymä;esittelynäkymä;
Keywords[fr]=coins intelligents;vue d'ensemble;échelle;expo;
Keywords[fr_CA]=coins intelligents;vue d'ensemble;échelle;expo;
Keywords[fr_FR]=coins intelligents;vue d'ensemble;échelle;expo;
Keywords[ga]=cúinne te;osamharc;scála;expo;
Keywords[gd]=oisean teth;foir-shealladh;sgèile;hotcorner;overview;scale;expo;
Keywords[gl]=canto activo;vista xeral;escala;exposición;
Keywords[gl_ES]=canto activo;vista xeral;escala;exposición;
Keywords[hr]=kut zaslona;pregled;promjena veličine;prikaz radnih prostora;
Keywords[hu]=érzékeny sarkok;áttekintés;áttekintő;közszemle;
Keywords[hu_HU]=érzékeny sarkok;áttekintés;áttekintő;közszemle;
Keywords[ia]=angulo calide;vista general;scala;exposition;
Keywords[id]=pojok interaktif;overview;skala;ekspo;
Keywords[id_ID]=pojok interaktif;overview;skala;ekspo;
Keywords[is]=virk horn;hotcorner;yfirlit;scale;expo;
Keywords[it]=hotcorner;panoramica;scale;expo;
Keywords[it_CH]=hotcorner;panoramica;scale;expo;
Keywords[it_IT]=hotcorner;panoramica;scale;expo;
Keywords[ja]=ホットコーナー、外観、スケール、expo;
Keywords[ja_JP]=ホットコーナー、外観、スケール、expo;
Keywords[ko]=핫코너;전체 창 보기;스케일;작업 공간 보기;
Keywords[ko_KR]=핫코너;전체 창 보기;스케일;작업 공간 보기;
Keywords[lo]=hotcorner;ພາບລວມ;ປັບຂະໜາດ;expo;
Keywords[lo_LA]=hotcorner;ພາບລວມ;ປັບຂະໜາດ;expo;
Keywords[lt]=karštas kampas;peržiūra;dydžio keitimas;atvaizdavimas;
Keywords[lt_LT]=karštas kampas;peržiūra;dydžio keitimas;atvaizdavimas;
Keywords[ms]=bucu panas;selayang pandang;skala;ekspo;
Keywords[ms_MY]=bucu panas;selayang pandang;skala;ekspo;
Keywords[nb]=aktiv hjørne;overblikk;skaler;expo;
Keywords[nb_NO]=aktiv hjørne;overblikk;skaler;expo;
Keywords[nds]=Hotcornor;Übersicht;Skalierung;EXPO;
Keywords[nl]=actieve hoek;overzicht;schalen;expo;
Keywords[nl_NL]=actieve hoek;overzicht;schalen;expo;
Keywords[pl]=aktywny narożnik;przegląd;skala;ekspozycja;
Keywords[pl_PL]=aktywny narożnik;przegląd;skala;ekspozycja;
Keywords[pt]=local;resumo;escala;expo;
Keywords[pt_BR]=canto de atalho;visão geral;escala;exposição;
Keywords[pt_PT]=local;resumo;escala;expo;
Keywords[ro]=colț sensibil;prezentare generală;scală;expo;
Keywords[ro_RO]=colț sensibil;prezentare generală;scală;expo;
Keywords[ru]=горячий угол;обзор;масштабирование;экспозиция;
Keywords[sk]=aktívny roh;prehľad;mierka;expo;
Keywords[sk_SK]=aktívny roh;prehľad;mierka;expo;
Keywords[sl]=vroči kot;pregled;umeri;razstava;
Keywords[sl_SI]=vroči kot;pregled;umeri;razstava;
Keywords[sr]=врућа ивица;преглед;распростирање;размеравање;
Keywords[sr@Latn]=врућа ивица;преглед;распростирање;размеравање;
Keywords[sr@ije]=врућа ивица;преглед;распростирање;размеравање;
Keywords[sr@ijekavianlatin]=врућа ивица;преглед;распростирање;размеравање;
Keywords[sr@latin]=врућа ивица;преглед;распростирање;размеравање;
Keywords[sr_RS]=врућа ивица;преглед;распростирање;размеравање;
Keywords[sr_RS@latin]=врућа ивица;преглед;распростирање;размеравање;
Keywords[sv]=aktiva hörn;översikt;skala;exponering;
Keywords[tg]=кунҷи тезкор;пешнамоиш;миқёсбандӣ;намоиш;
Keywords[th]=มุมที่น่าสนใจ;ภาพรวม;สัดส่วน;แสดง;
Keywords[th_TH]=มุมที่น่าสนใจ;ภาพรวม;สัดส่วน;แสดง;
Keywords[tr]=Etkin köşe;genel bakış;ölçeklendirme;sergi;
Keywords[tr_TR]=Etkin köşe;genel bakış;ölçeklendirme;sergi;
Keywords[uk]=гарячий кут;огляд;масштабування;експозиція;
Keywords[uk_UA]=гарячий кут;огляд;масштабування;експозиція;
Keywords[ur]=ہاٹ کونے، جائزہ، سکیل، ایکسپو;
Keywords[vi]=góc nóng;toàn cảnh;định tỷ lệ;expo;
Keywords[vi_VN]=góc nóng;toàn cảnh;định tỷ lệ;expo;
Keywords[zh_CN]=hotcorner;overview;scale;expo;热区;概览;缩放;展览;全局;
Keywords[zh_HK]=hotcorner;概觀;比例縮放;expo;
Keywords[zh_TW]=熱角;總覽;視窗管理 (Scale);工作區管理 (Expo);
Cinnamon-3.6.7/files/usr/share/applications/cinnamon-settings-extensions.desktop 0000664 0001750 0001750 00000033506 13215735076 027170 0 ustar fabio fabio [Desktop Entry]
Icon=cs-extensions
Exec=cinnamon-settings extensions
Type=Application
OnlyShowIn=X-Cinnamon;
Categories=Settings;
Name=Extensions
Name[am]=ተጨማሪዎች
Name[ar]=إضافات
Name[ast]=Estensiones
Name[be]=Пашырэнні
Name[be@latin]=Пашырэнні
Name[be_BY]=Пашырэнні
Name[bg]=Разширения
Name[bg_BG]=Разширения
Name[bs]=Proširenja
Name[cs]=Rozšíření
Name[cs_CZ]=Rozšíření
Name[cy]=Estyniadau
Name[da]=Udvidelser
Name[da_DK]=Udvidelser
Name[de]=Erweiterungen
Name[de_CH]=Erweiterungen
Name[de_DE]=Erweiterungen
Name[el]=Επεκτάσεις
Name[eo]=Etendaĵoj
Name[es]=Extensiones
Name[es_AR]=Extensiones
Name[es_CL]=Extensiones
Name[es_CO]=Extensiones
Name[es_CR]=Extensiones
Name[es_DO]=Extensiones
Name[es_EC]=Extensiones
Name[es_ES]=Extensiones
Name[es_MX]=Extensiones
Name[es_NI]=Extensiones
Name[es_PA]=Extensiones
Name[es_PE]=Extensiones
Name[es_PR]=Extensiones
Name[es_SV]=Extensiones
Name[es_UY]=Extensiones
Name[es_VE]=Extensiones
Name[et]=Laiendid
Name[et_EE]=Laiendid
Name[eu]=Hedapenak
Name[fa]=ضمیمهها
Name[fa_AF]=ضمیمهها
Name[fa_IR]=ضمیمهها
Name[fi]=Laajennukset
Name[fi_FI]=Laajennukset
Name[ga]=Iarmhíreanna
Name[gd]=Leudachain
Name[gl]=Extensións
Name[gl_ES]=Extensións
Name[hr]=Proširenja
Name[hu]=Kiterjesztések
Name[hu_HU]=Kiterjesztések
Name[ia]=Extensiones
Name[id]=Ekstensi
Name[id_ID]=Ekstensi
Name[is]=Viðbætur
Name[it]=Estensioni
Name[it_CH]=Estensioni
Name[it_IT]=Estensioni
Name[ja]=拡張機能
Name[ja_JP]=拡張機能
Name[kab]=Isiɣzifen
Name[ko]=확장 프로그램
Name[ko_KR]=확장 프로그램
Name[lo]=ສ່ວນຂະຫຍາຍ
Name[lo_LA]=ສ່ວນຂະຫຍາຍ
Name[lt]=Plėtiniai
Name[lt_LT]=Plėtiniai
Name[lv]=Papildinājumi
Name[lv_LV]=Papildinājumi
Name[ms]=Sambungan
Name[ms_MY]=Sambungan
Name[nb]=Utvidelser
Name[nb_NO]=Utvidelser
Name[nds]=Erweiterungen
Name[nl]=Extensies
Name[nl_NL]=Extensies
Name[pa]=ਐਕਸਟੈਂਸ਼ਨਾਂ
Name[pl]=Rozszerzenia
Name[pl_PL]=Rozszerzenia
Name[pt]=Extensões
Name[pt_BR]=Extensões
Name[pt_PT]=Extensões
Name[ro]=Extensii
Name[ro_RO]=Extensii
Name[ru]=Расширения
Name[sk]=Rozšírenia
Name[sk_SK]=Rozšírenia
Name[sl]=Razširitve
Name[sl_SI]=Razširitve
Name[sq]=Prapashtesat
Name[sr]=Проширења
Name[sr@Latn]=Проширења
Name[sr@ije]=Проширења
Name[sr@ijekavianlatin]=Проширења
Name[sr@latin]=Проширења
Name[sr_RS]=Проширења
Name[sr_RS@latin]=Проширења
Name[sv]=Tillägg
Name[ta]=நீட்சிகள்
Name[ta_LK]=நீட்சிகள்
Name[tg]=Пасвандҳо
Name[th]=ส่วนขยาย
Name[th_TH]=ส่วนขยาย
Name[tr]=Eklentiler
Name[tr_TR]=Eklentiler
Name[uk]=Розширення
Name[uk_UA]=Розширення
Name[ur]=ایکس ٹینشنز
Name[vi]=Phần mở rộng
Name[vi_VN]=Phần mở rộng
Name[zh_CN]=扩展
Name[zh_HK]=擴充套件
Name[zh_TW]=擴充套件
Comment=Manage your Cinnamon extensions
Comment[am]=የሲናሞን ተጨማሪዎች አስተዳዳሪ
Comment[ar]=إدارة إضافات سينامُن
Comment[ast]=Alministra les tos estensiones Cinnamon
Comment[be]=Кiраванне пашырэннямi Cinnamon
Comment[be@latin]=Кiраванне пашырэннямi Cinnamon
Comment[be_BY]=Кiраванне пашырэннямi Cinnamon
Comment[bg]=Управление на Вашите разширения за Cinnamon
Comment[bg_BG]=Управление на Вашите разширения за Cinnamon
Comment[bs]=Upravljajte vašim Cinnamon proširenjima
Comment[ca]=Gestioneu les vostres extensions de Cinnamon
Comment[ca@valencia]=Administra extensions de Cinnamon
Comment[ca_ES]=Gestioneu les vostres extensions de Cinnamon
Comment[ca_ES@valencia]=Administra extensions de Cinnamon
Comment[cs]=Správa Cinnamon rozšíření
Comment[cs_CZ]=Správa Cinnamon rozšíření
Comment[cy]=Rheolwch eich estyniadau Cinnamon
Comment[da]=Administrér dine Cinnamon-udvidelser
Comment[da_DK]=Administrér dine Cinnamon-udvidelser
Comment[de]=Cinnamon-Erweiterungen verwalten
Comment[de_CH]=Cinnamon-Erweiterungen verwalten
Comment[de_DE]=Cinnamon-Erweiterungen verwalten
Comment[el]=Διαχειρίσου τις επεκτάσεις του Cinnamon
Comment[es]=Administrar extensiones de Cinnamon
Comment[es_AR]=Administrar extensiones de Cinnamon
Comment[es_CL]=Administrar extensiones de Cinnamon
Comment[es_CO]=Administrar extensiones de Cinnamon
Comment[es_CR]=Administrar extensiones de Cinnamon
Comment[es_DO]=Administrar extensiones de Cinnamon
Comment[es_EC]=Administrar extensiones de Cinnamon
Comment[es_ES]=Administrar extensiones de Cinnamon
Comment[es_MX]=Administrar extensiones de Cinnamon
Comment[es_NI]=Administrar extensiones de Cinnamon
Comment[es_PA]=Administrar extensiones de Cinnamon
Comment[es_PE]=Administrar extensiones de Cinnamon
Comment[es_PR]=Administrar extensiones de Cinnamon
Comment[es_SV]=Administrar extensiones de Cinnamon
Comment[es_UY]=Administrar extensiones de Cinnamon
Comment[es_VE]=Administrar extensiones de Cinnamon
Comment[eu]=Kudeatu zure Cinnamon hedapenak
Comment[fa]=ضمیمههای سینمونتان را مدیریت کنید
Comment[fa_AF]=ضمیمههای سینمونتان را مدیریت کنید
Comment[fa_IR]=ضمیمههای سینمونتان را مدیریت کنید
Comment[fi]=Hallitse Cinnamon-laajennuksia
Comment[fi_FI]=Hallitse Cinnamon-laajennuksia
Comment[fr]=Gérez vos extensions Cinnamon
Comment[fr_CA]=Gérer les extensions Cinnamon
Comment[fr_FR]=Gérez vos extensions Cinnamon
Comment[gd]=Stiùirich na leudachain Cinnamon agad
Comment[gl]=Administra os engadidos de Cinnamon
Comment[gl_ES]=Administra os engadidos de Cinnamon
Comment[hr]=Upravljajte svojim Cinnamon proširenjima
Comment[hu]=Cinnamon kiterjesztések kezelése
Comment[hu_HU]=Cinnamon kiterjesztések kezelése
Comment[ia]=Administrar tu extensiones de Cinnamon
Comment[id]=Pengaturan extensions Cinnamon
Comment[id_ID]=Pengaturan extensions Cinnamon
Comment[is]=Sýsla með stillingar fyrir Cinnamon viðbætur
Comment[it]=Gestisci le estensioni di Cinnamon
Comment[it_CH]=Gestisci le estensioni di Cinnamon
Comment[it_IT]=Gestisci le estensioni di Cinnamon
Comment[ja]=Cinnamon エクステンションの管理
Comment[ja_JP]=Cinnamon エクステンションの管理
Comment[kab]=Sefrek izsiɣzaf n Cinamon
Comment[ko]=시나몬 확장 프로그램을 관리합니다
Comment[ko_KR]=시나몬 확장 프로그램을 관리합니다
Comment[lo]=ຈັດການສ່ວນຂະຫຍາຍ Cinnamon ຂອງເຈົ້າ
Comment[lo_LA]=ຈັດການສ່ວນຂະຫຍາຍ Cinnamon ຂອງເຈົ້າ
Comment[lt]=Tvarkyti savo Cinnamono plėtinius
Comment[lt_LT]=Tvarkyti savo Cinnamono plėtinius
Comment[lv]=Pārvaldīt Cinnamon papildinājumus
Comment[lv_LV]=Pārvaldīt Cinnamon papildinājumus
Comment[ms]=Mengurus lanjutan Cinnamon
Comment[ms_MY]=Mengurus lanjutan Cinnamon
Comment[nb]=Håndter dine Cinnamon-utvidelser
Comment[nb_NO]=Håndter dine Cinnamon-utvidelser
Comment[nds]=Cinnamon Erweiterungen bearbeiten
Comment[nl]=Uw Cinnamon-extensies beheren
Comment[nl_NL]=Uw Cinnamon-extensies beheren
Comment[oc]=Gerir vòstras extensions de Cinnamon
Comment[pl]=Zarządzaj swoimi rozszerzeniami Cinnamona
Comment[pl_PL]=Zarządzaj swoimi rozszerzeniami Cinnamona
Comment[pt]=Gerir as suas extensões do Cinnamon
Comment[pt_BR]=Gerenciar suas extensões do Cinnamon
Comment[pt_PT]=Gerir as suas extensões do Cinnamon
Comment[ro]=Gestionează extensiile tale Cinnamon
Comment[ro_RO]=Gestionează extensiile tale Cinnamon
Comment[ru]=Управление расширениями Cinnamon
Comment[sk]=Spravovať vaše rozšírenia prostredia Cinnamon
Comment[sk_SK]=Spravovať vaše rozšírenia prostredia Cinnamon
Comment[sl]=Upravljajte z razširitvami Cinnamona
Comment[sl_SI]=Upravljajte z razširitvami Cinnamona
Comment[sq]=Menaxhoni prapashtesat e Cinnamon
Comment[sr]=Управљање проширењима Цимета
Comment[sr@Latn]=Управљање проширењима Цимета
Comment[sr@ije]=Управљање проширењима Цимета
Comment[sr@ijekavianlatin]=Управљање проширењима Цимета
Comment[sr@latin]=Управљање проширењима Цимета
Comment[sr_RS]=Управљање проширењима Цимета
Comment[sr_RS@latin]=Управљање проширењима Цимета
Comment[sv]=Hantera dina Cinnamon-tillägg
Comment[tg]=Идоракунии пасвандҳои Cinnamon
Comment[th]=จัดการส่วนขยาย Cinnamon ของคุณ
Comment[th_TH]=จัดการส่วนขยาย Cinnamon ของคุณ
Comment[tr]=Cinnamon eklentilerini yönet
Comment[tr_TR]=Cinnamon eklentilerini yönet
Comment[uk]=Керування розширеннями Cinnamon
Comment[uk_UA]=Керування розширеннями Cinnamon
Comment[ur]=اپنے سنامون کی ایکسٹینشن کا انتظام کریں
Comment[vi]=Quản lý phần mở rộng Cinnamon
Comment[vi_VN]=Quản lý phần mở rộng Cinnamon
Comment[zh_CN]=扩展管理
Comment[zh_HK]=管理你的 Cinnamon 擴充套件
Comment[zh_TW]=管理您的 Cinnamon 擴充套件
Keywords=extension;addon;
Keywords[am]=ተጨማሪ መጨመሪያ;
Keywords[ar]=إضافة، إضافات;
Keywords[ast]=estensión;addon;amiestu;
Keywords[be]=пашырэнне;дадатак;
Keywords[be@latin]=пашырэнне;дадатак;
Keywords[be_BY]=пашырэнне;дадатак;
Keywords[bg]=разширение;добавка;
Keywords[bg_BG]=разширение;добавка;
Keywords[bs]=proširenje;dodatak;
Keywords[ca]=extensió;complement;
Keywords[ca@valencia]=extensió;complement;
Keywords[ca_ES]=extensió;complement;
Keywords[ca_ES@valencia]=extensió;complement;
Keywords[cs]=rozšíření;addon;
Keywords[cs_CZ]=rozšíření;addon;
Keywords[cy]=estyniad;ychwanegyn;
Keywords[da]=udvidelse;tilføjelse;
Keywords[da_DK]=udvidelse;tilføjelse;
Keywords[de]=Erweiterung;Zusatz;extension;addon;
Keywords[de_CH]=Erweiterung;Zusatz;extension;addon;
Keywords[de_DE]=Erweiterung;Zusatz;extension;addon;
Keywords[el]=επέκταση;πρόσθετο;
Keywords[en_GB]=extension;add-on;
Keywords[es]=extensión;complemento;
Keywords[es_AR]=extensión;complemento;
Keywords[es_CL]=extensión;complemento;
Keywords[es_CO]=extensión;complemento;
Keywords[es_CR]=extensión;complemento;
Keywords[es_DO]=extensión;complemento;
Keywords[es_EC]=extensión;complemento;
Keywords[es_ES]=extensión;complemento;
Keywords[es_MX]=extensión;complemento;
Keywords[es_NI]=extensión;complemento;
Keywords[es_PA]=extensión;complemento;
Keywords[es_PE]=extensión;complemento;
Keywords[es_PR]=extensión;complemento;
Keywords[es_SV]=extensión;complemento;
Keywords[es_UY]=extensión;complemento;
Keywords[es_VE]=extensión;complemento;
Keywords[eu]=hedapena;gehigarria;
Keywords[fa]=ضمیمه، افزونه;
Keywords[fa_AF]=ضمیمه، افزونه;
Keywords[fa_IR]=ضمیمه، افزونه;
Keywords[fi]=laajennus;liitännäinen;
Keywords[fi_FI]=laajennus;liitännäinen;
Keywords[fr]=extension;add-on;
Keywords[fr_CA]=extension;add-on;
Keywords[fr_FR]=extension;add-on;
Keywords[ga]=iarmhír;forlíontán;
Keywords[gd]=leudachan;tuilleadain;extension;addon;
Keywords[gl]=extensión;engadido;
Keywords[gl_ES]=extensión;engadido;
Keywords[hr]=proširenje;dodatak;
Keywords[hu]=kiterjesztés;bővítmény;
Keywords[hu_HU]=kiterjesztés;bővítmény;
Keywords[id]=ekstensi;tambahan;
Keywords[id_ID]=ekstensi;tambahan;
Keywords[is]=viðbót;hjálparforrit;
Keywords[it]=estensione;aggiunta;
Keywords[it_CH]=estensione;aggiunta;
Keywords[it_IT]=estensione;aggiunta;
Keywords[ja]=拡張機能、アドオン;
Keywords[ja_JP]=拡張機能、アドオン;
Keywords[kab]=Asiɣzef;
Keywords[ko]=확장 프로그램;추가 기능;
Keywords[ko_KR]=확장 프로그램;추가 기능;
Keywords[lo]=ສ່ວນຂະຫຍາຍ;addon;
Keywords[lo_LA]=ສ່ວນຂະຫຍາຍ;addon;
Keywords[lt]=plėtinys;papildinys;
Keywords[lt_LT]=plėtinys;papildinys;
Keywords[lv]=paplašinājums;pievienojums;
Keywords[lv_LV]=paplašinājums;pievienojums;
Keywords[ms]=sambungan;tambahan;
Keywords[ms_MY]=sambungan;tambahan;
Keywords[nb]=Utvidelse;tillegg;
Keywords[nb_NO]=Utvidelse;tillegg;
Keywords[nds]=Erweiterung;Add-On;
Keywords[nl]=extensie;toevoeging;
Keywords[nl_NL]=extensie;toevoeging;
Keywords[pl]=rozszerzenie;dodatek;
Keywords[pl_PL]=rozszerzenie;dodatek;
Keywords[pt]=extensão;extra;
Keywords[pt_BR]=extensão;complemento;
Keywords[pt_PT]=extensão;extra;
Keywords[ro]=extensie;supliment;
Keywords[ro_RO]=extensie;supliment;
Keywords[ru]=расширение;дополнение;
Keywords[sk]=rozšírenie;addon;
Keywords[sk_SK]=rozšírenie;addon;
Keywords[sl]=razširitev;dodatek;
Keywords[sl_SI]=razširitev;dodatek;
Keywords[sq]=prapashtesa;shtesë;
Keywords[sr]=проширење;додатак;
Keywords[sr@Latn]=проширење;додатак;
Keywords[sr@ije]=проширење;додатак;
Keywords[sr@ijekavianlatin]=проширење;додатак;
Keywords[sr@latin]=проширење;додатак;
Keywords[sr_RS]=проширење;додатак;
Keywords[sr_RS@latin]=проширење;додатак;
Keywords[sv]=utvidgning;tillägg;
Keywords[ta]=நீட்சி;
Keywords[ta_LK]=நீட்சி;
Keywords[tg]=пасванд;барномаи иловагӣ;
Keywords[th]=ส่วนขยาย;ส่วนเสริม;
Keywords[th_TH]=ส่วนขยาย;ส่วนเสริม;
Keywords[tr]=eklenti;
Keywords[tr_TR]=eklenti;
Keywords[uk]=розширення;додаток;
Keywords[uk_UA]=розширення;додаток;
Keywords[ur]=ایکسٹینشن، ایڈ آن;
Keywords[vi]=phần mở rộng;gắn thêm;
Keywords[vi_VN]=phần mở rộng;gắn thêm;
Keywords[zh_CN]=extension;addon;扩展;附加;
Keywords[zh_HK]=擴充套件;附加元件;
Keywords[zh_TW]=擴充套件;附加套件;
Cinnamon-3.6.7/files/usr/share/applications/cinnamon-settings-privacy.desktop 0000664 0001750 0001750 00000032232 13215735076 026441 0 ustar fabio fabio [Desktop Entry]
Icon=cs-privacy
Exec=cinnamon-settings privacy
Type=Application
OnlyShowIn=X-Cinnamon;
Categories=Settings;
Name=Privacy
Name[am]=የ ግል
Name[ar]=الخصوصية
Name[ast]=Privacidá
Name[bg]=Поверителност
Name[bg_BG]=Поверителност
Name[ca]=Privadesa
Name[ca@valencia]=Privacitat
Name[ca_ES]=Privadesa
Name[ca_ES@valencia]=Privacitat
Name[cs]=Soukromí
Name[cs_CZ]=Soukromí
Name[cy]=Preifatwydd
Name[da]=Privatliv
Name[da_DK]=Privatliv
Name[de]=Datenschutz
Name[de_CH]=Datenschutz
Name[de_DE]=Datenschutz
Name[el]=Ιδιωτικότητα
Name[eo]=Privateco
Name[es]=Privacidad
Name[es_AR]=Privacidad
Name[es_CL]=Privacidad
Name[es_CO]=Privacidad
Name[es_CR]=Privacidad
Name[es_DO]=Privacidad
Name[es_EC]=Privacidad
Name[es_ES]=Privacidad
Name[es_MX]=Privacidad
Name[es_NI]=Privacidad
Name[es_PA]=Privacidad
Name[es_PE]=Privacidad
Name[es_PR]=Privacidad
Name[es_SV]=Privacidad
Name[es_UY]=Privacidad
Name[es_VE]=Privacidad
Name[et]=Privaatsus
Name[et_EE]=Privaatsus
Name[eu]=Pribatutasuna
Name[fi]=Yksityisyys
Name[fi_FI]=Yksityisyys
Name[fr]=Confidentialité
Name[fr_CA]=Confidentialité
Name[fr_FR]=Confidentialité
Name[gd]=Prìobhaideachd
Name[gl]=Intimidade
Name[gl_ES]=Intimidade
Name[hr]=Privatnost
Name[hu]=Magánszféra
Name[hu_HU]=Magánszféra
Name[ia]=Confidentialitate
Name[id]=Privasi
Name[id_ID]=Privasi
Name[is]=Friðhelgi
Name[ja]=個人情報
Name[ja_JP]=個人情報
Name[ko]=프라이버시
Name[ko_KR]=프라이버시
Name[lt]=Privatumas
Name[lt_LT]=Privatumas
Name[ms]=Privasi
Name[ms_MY]=Privasi
Name[nb]=Personvern
Name[nb_NO]=Personvern
Name[nds]=Privatssphäre
Name[nl]=Privéleven
Name[nl_NL]=Privéleven
Name[oc]=Vida privada
Name[pl]=Prywatność
Name[pl_PL]=Prywatność
Name[pt]=Privacidade
Name[pt_BR]=Privacidade
Name[pt_PT]=Privacidade
Name[ro]=Confidențialitate
Name[ro_RO]=Confidențialitate
Name[ru]=Конфиденциальность
Name[sk]=Súkromie
Name[sk_SK]=Súkromie
Name[sl]=Zasebnost
Name[sl_SI]=Zasebnost
Name[sq]=Privatësia
Name[sr]=Приватност
Name[sr@Latn]=Приватност
Name[sr@ije]=Приватност
Name[sr@ijekavianlatin]=Приватност
Name[sr@latin]=Приватност
Name[sr_RS]=Приватност
Name[sr_RS@latin]=Приватност
Name[sv]=Sekretess
Name[th]=ความเป็นส่วนตัว
Name[th_TH]=ความเป็นส่วนตัว
Name[tr]=Gizlilik
Name[tr_TR]=Gizlilik
Name[uk]=Конфіденційність
Name[uk_UA]=Конфіденційність
Name[ur]=پرائیویسی
Name[vi]=Riêng tư
Name[vi_VN]=Riêng tư
Name[zh_CN]=隐私
Name[zh_HK]=私隱
Name[zh_TW]=隱私
Comment=Cinnamon privacy settings
Comment[ar]=خيارات الخصوصية لسينامُن
Comment[ast]=Axustes de privacidá Cinnamon
Comment[bg]=Настройки за поверителност на Cinnamon
Comment[bg_BG]=Настройки за поверителност на Cinnamon
Comment[ca]=Ajusts de privadesa de Cinnamon
Comment[ca@valencia]=Opcions de privacitat de Cinnamon
Comment[ca_ES]=Ajusts de privadesa de Cinnamon
Comment[ca_ES@valencia]=Opcions de privacitat de Cinnamon
Comment[cs]=Nastevení soukromí v prostředí Cinnamon
Comment[cs_CZ]=Nastevení soukromí v prostředí Cinnamon
Comment[cy]=Gosodiadau preifatrwydd Cinnamon
Comment[da]=Cinnamon-privatlivsindstillinger
Comment[da_DK]=Cinnamon-privatlivsindstillinger
Comment[de]=Cinnamon-Datenschutzeinstellungen
Comment[de_CH]=Cinnamon-Datenschutzeinstellungen
Comment[de_DE]=Cinnamon-Datenschutzeinstellungen
Comment[el]=Ρυθμίσεις ιδιωτικότητας του Cinnamon
Comment[es]=Opciones de privacidad de Cinnamon
Comment[es_AR]=Opciones de privacidad de Cinnamon
Comment[es_CL]=Opciones de privacidad de Cinnamon
Comment[es_CO]=Opciones de privacidad de Cinnamon
Comment[es_CR]=Opciones de privacidad de Cinnamon
Comment[es_DO]=Opciones de privacidad de Cinnamon
Comment[es_EC]=Opciones de privacidad de Cinnamon
Comment[es_ES]=Opciones de privacidad de Cinnamon
Comment[es_MX]=Opciones de privacidad de Cinnamon
Comment[es_NI]=Opciones de privacidad de Cinnamon
Comment[es_PA]=Opciones de privacidad de Cinnamon
Comment[es_PE]=Opciones de privacidad de Cinnamon
Comment[es_PR]=Opciones de privacidad de Cinnamon
Comment[es_SV]=Opciones de privacidad de Cinnamon
Comment[es_UY]=Opciones de privacidad de Cinnamon
Comment[es_VE]=Opciones de privacidad de Cinnamon
Comment[eu]=Cinnamon pribatutasunaren ezarpenak
Comment[fi]=Cinnamonin tietosuoja-asetukset
Comment[fi_FI]=Cinnamonin tietosuoja-asetukset
Comment[fr]=Paramètres de confidentialité de Cinnamon
Comment[fr_CA]=Paramètres de confidentialité de Cinnamon
Comment[fr_FR]=Paramètres de confidentialité de Cinnamon
Comment[gd]=Roghainnean prìobhaideachd Cinnamon
Comment[gl]=Opciones de intimidade de Cinnamon
Comment[gl_ES]=Opciones de intimidade de Cinnamon
Comment[hr]=Cinnamon postavke privatnosti
Comment[hu]=Cinnamon magánszféra beállítások
Comment[hu_HU]=Cinnamon magánszféra beállítások
Comment[ia]=Configuration de confidentialitate de Cinnamon
Comment[id]=Pengaturan privasi cinnamon
Comment[id_ID]=Pengaturan privasi cinnamon
Comment[is]=Gagnaleyndarstillingar Cinnamon
Comment[it]=Impostazioni privacy di Cinnamon
Comment[it_CH]=Impostazioni privacy di Cinnamon
Comment[it_IT]=Impostazioni privacy di Cinnamon
Comment[ja]=Cinnamon 個人情報設定
Comment[ja_JP]=Cinnamon 個人情報設定
Comment[ko]=시나몬 프라이버시 설정
Comment[ko_KR]=시나몬 프라이버시 설정
Comment[lt]=Cinnamon privatumo nustatymai
Comment[lt_LT]=Cinnamon privatumo nustatymai
Comment[ms]=Tetapan privasi Cinnamon
Comment[ms_MY]=Tetapan privasi Cinnamon
Comment[nb]=Personverninnstillinger for Cinnamon
Comment[nb_NO]=Personverninnstillinger for Cinnamon
Comment[nds]=Cinnamon Privatsphäre Einstellungen
Comment[nl]=Instellingen van Cinnamon inzake privéleven
Comment[nl_NL]=Instellingen van Cinnamon inzake privéleven
Comment[oc]=Paramètres de confidencialitat de Cinnamon
Comment[pl]=Ustawienia prywatności Cinnamon
Comment[pl_PL]=Ustawienia prywatności Cinnamon
Comment[pt]=Configurações de privacidade do Cinnamon
Comment[pt_BR]=Configurações de privacidade do Cinnamon
Comment[pt_PT]=Configurações de privacidade do Cinnamon
Comment[ro]=Setări confidențialitate Cinnamon
Comment[ro_RO]=Setări confidențialitate Cinnamon
Comment[ru]=Настройки конфиденциальности Cinnamon
Comment[sk]=Nastavenia súkromia Cinnamon
Comment[sk_SK]=Nastavenia súkromia Cinnamon
Comment[sl]=Nastavitve zasebnosti Cinnamona
Comment[sl_SI]=Nastavitve zasebnosti Cinnamona
Comment[sq]=Parametrat e privatësisë të Cinnamon
Comment[sr]=Управљање приватношћу Цимета
Comment[sr@Latn]=Управљање приватношћу Цимета
Comment[sr@ije]=Управљање приватношћу Цимета
Comment[sr@ijekavianlatin]=Управљање приватношћу Цимета
Comment[sr@latin]=Управљање приватношћу Цимета
Comment[sr_RS]=Управљање приватношћу Цимета
Comment[sr_RS@latin]=Управљање приватношћу Цимета
Comment[sv]=Cinnamon integritetsinställningar
Comment[th]=ค่าตั้งความเป็นส่วนตัวของ Cinnamon
Comment[th_TH]=ค่าตั้งความเป็นส่วนตัวของ Cinnamon
Comment[tr]=Cinnamon gizlilik ayarları
Comment[tr_TR]=Cinnamon gizlilik ayarları
Comment[uk]=Налаштування конфіденційности Cinnamon
Comment[uk_UA]=Налаштування конфіденційности Cinnamon
Comment[ur]=سنامون پرائیویسی کی ترتیبات
Comment[vi]=Thiết đặt riêng tư Cinnamon
Comment[vi_VN]=Thiết đặt riêng tư Cinnamon
Comment[zh_CN]=Cinnamon隐私设置
Comment[zh_HK]=Cinnamon 私隱設定
Comment[zh_TW]=Cinnamon 隱私設定
Keywords=privacy;recent;gtk;private;
Keywords[ar]=الخصوصية، الأخيرة، Gtk، خاص;
Keywords[ast]=privacidá;apocayá;apocagüéi;gtk;priváu;
Keywords[bg]=лично;текущо;gtk;частно;
Keywords[bg_BG]=лично;текущо;gtk;частно;
Keywords[ca]=privadesa;recent;gtk;privat;
Keywords[ca@valencia]=privacitat;recent;gtk;privat;
Keywords[ca_ES]=privadesa;recent;gtk;privat;
Keywords[ca_ES@valencia]=privacitat;recent;gtk;privat;
Keywords[cs]=soukromí;nedávný;gtk;soukromý;
Keywords[cs_CZ]=soukromí;nedávný;gtk;soukromý;
Keywords[cy]=preifatrwydd;diweddar;gtk;preifat;
Keywords[da]=privatliv;seneste;gtk;privat;
Keywords[da_DK]=privatliv;seneste;gtk;privat;
Keywords[de]=Datenschutz;Privatsphäre;Vertraulichkeit;Geheimhaltung;kürzlich;letzte;neueste;jüngste;
Keywords[de_CH]=Datenschutz;Privatsphäre;Vertraulichkeit;Geheimhaltung;kürzlich;letzte;neueste;jüngste;
Keywords[de_DE]=Datenschutz;Privatsphäre;Vertraulichkeit;Geheimhaltung;kürzlich;letzte;neueste;jüngste;
Keywords[el]=ιδιωτικότητα;πρόσφατο;gtk;ιδιωτικό;
Keywords[es]=privacidad;reciente;gtk;privado;
Keywords[es_AR]=privacidad;reciente;gtk;privado;
Keywords[es_CL]=privacidad;reciente;gtk;privado;
Keywords[es_CO]=privacidad;reciente;gtk;privado;
Keywords[es_CR]=privacidad;reciente;gtk;privado;
Keywords[es_DO]=privacidad;reciente;gtk;privado;
Keywords[es_EC]=privacidad;reciente;gtk;privado;
Keywords[es_ES]=privacidad;reciente;gtk;privado;
Keywords[es_MX]=privacidad;reciente;gtk;privado;
Keywords[es_NI]=privacidad;reciente;gtk;privado;
Keywords[es_PA]=privacidad;reciente;gtk;privado;
Keywords[es_PE]=privacidad;reciente;gtk;privado;
Keywords[es_PR]=privacidad;reciente;gtk;privado;
Keywords[es_SV]=privacidad;reciente;gtk;privado;
Keywords[es_UY]=privacidad;reciente;gtk;privado;
Keywords[es_VE]=privacidad;reciente;gtk;privado;
Keywords[eu]=pribatutasuna;azkenak;gtk;pribatua;
Keywords[fi]=yksityisyys;viimeaikaiset;gtk;yksityinen;
Keywords[fi_FI]=yksityisyys;viimeaikaiset;gtk;yksityinen;
Keywords[fr]=confidentialité;récent;gtk;privé;
Keywords[fr_CA]=confidentialité;récent;gtk;privé;
Keywords[fr_FR]=confidentialité;récent;gtk;privé;
Keywords[gd]=privacy;recent;gtk;private;prìobhaideahcd;o chionn goirid;prìobhaideach;
Keywords[gl]=intimidade;recente;gtk;privado;
Keywords[gl_ES]=intimidade;recente;gtk;privado;
Keywords[hr]=privatnost;nedavno;gtk;privatno;
Keywords[hu]=magánszféra;legutóbbi;gtk;magán;
Keywords[hu_HU]=magánszféra;legutóbbi;gtk;magán;
Keywords[ia]=confidentialitate;recente;gtk;private;
Keywords[id]=privasi;baru-baru ini;gtk;pribadi;
Keywords[id_ID]=privasi;baru-baru ini;gtk;pribadi;
Keywords[is]=friðhelgi;persónulegt;einka;gagnaleynd;gtk;
Keywords[it]=privacy;recenti;gtk;privato;
Keywords[it_CH]=privacy;recenti;gtk;privato;
Keywords[it_IT]=privacy;recenti;gtk;privato;
Keywords[ko]=프라이버시;최근;gtk;비공개;
Keywords[ko_KR]=프라이버시;최근;gtk;비공개;
Keywords[lt]=privatumas;paskiausi;gtk;privatu;
Keywords[lt_LT]=privatumas;paskiausi;gtk;privatu;
Keywords[ms]=Privasi;baru-baru ini;gtk;peribadi;
Keywords[ms_MY]=Privasi;baru-baru ini;gtk;peribadi;
Keywords[nb]=personvern;nylig;gtk;privat;
Keywords[nb_NO]=personvern;nylig;gtk;privat;
Keywords[nds]=Datenschutz;kürzlich erfolgt;gtk;Privat;
Keywords[nl]=privéleven;onlangs;gtk;privé;
Keywords[nl_NL]=privéleven;onlangs;gtk;privé;
Keywords[pl]=prywatność;ostatnie;gtk;prywatny;
Keywords[pl_PL]=prywatność;ostatnie;gtk;prywatny;
Keywords[pt]=privacidade;recente;gtk;privado;
Keywords[pt_BR]=privacidade;recente;gtk;privado;
Keywords[pt_PT]=privacidade;recente;gtk;privado;
Keywords[ro]=confidențialitate;recent;gtk;confidențial;
Keywords[ro_RO]=confidențialitate;recent;gtk;confidențial;
Keywords[ru]=конфиденциальность;недавние;gtk;приватность;
Keywords[sk]=súkromie;nedávno otvorené;gtk;súkromné;
Keywords[sk_SK]=súkromie;nedávno otvorené;gtk;súkromné;
Keywords[sl]=zasebnost;nedavno;gtk;zasebno;
Keywords[sl_SI]=zasebnost;nedavno;gtk;zasebno;
Keywords[sq]=privatësia;të fundit;gtk;privat;
Keywords[sr]=приватност;скорашње;гтк;мир;
Keywords[sr@Latn]=приватност;скорашње;гтк;мир;
Keywords[sr@ije]=приватност;скорашње;гтк;мир;
Keywords[sr@ijekavianlatin]=приватност;скорашње;гтк;мир;
Keywords[sr@latin]=приватност;скорашње;гтк;мир;
Keywords[sr_RS]=приватност;скорашње;гтк;мир;
Keywords[sr_RS@latin]=приватност;скорашње;гтк;мир;
Keywords[sv]=integritet;senaste;gtk;privat;
Keywords[th]=ความเป็นส่วนบุคคล;ล่าสุด;gtk;ส่วนบุคคล;
Keywords[th_TH]=ความเป็นส่วนบุคคล;ล่าสุด;gtk;ส่วนบุคคล;
Keywords[tr]=gizlilik;son dosyalar;gtk;özel;
Keywords[tr_TR]=gizlilik;son dosyalar;gtk;özel;
Keywords[uk]=конфіденційність;останні;GTK;приватне;
Keywords[uk_UA]=конфіденційність;останні;GTK;приватне;
Keywords[ur]=پرائیوسی، حالیہ، جی ٹی کے، پرائیویٹ، نجی;
Keywords[vi]=riêng tư;gần đây;gtk;riêng tư;
Keywords[vi_VN]=riêng tư;gần đây;gtk;riêng tư;
Keywords[zh_CN]=隐私,最近,gtk,个人;
Keywords[zh_HK]=私隱;最近;GTK;私人;
Keywords[zh_TW]=隱私;最近;GTK;私人;
Cinnamon-3.6.7/files/usr/share/applications/cinnamon-settings-mouse.desktop 0000664 0001750 0001750 00000044025 13215735076 026117 0 ustar fabio fabio [Desktop Entry]
Icon=cs-mouse
Exec=cinnamon-settings mouse
Type=Application
OnlyShowIn=X-Cinnamon;
Categories=Settings;
Name=Mouse and Touchpad
Name[am]=አይጥ እና ተችፓድ
Name[ar]=الفأرة ولوحة اللمس
Name[ast]=Mur y touchpad
Name[be]=Мыш i сэнсарная панэль
Name[be@latin]=Мыш i сэнсарная панэль
Name[be_BY]=Мыш i сэнсарная панэль
Name[bg]=Мишка и сензорен панел
Name[bg_BG]=Мишка и сензорен панел
Name[bs]=Miš i površina osjetljiva na dodir
Name[ca]=Ratolí i ratolí tàctil
Name[ca@valencia]=Ratolí i ratolí tàctil
Name[ca_ES]=Ratolí i ratolí tàctil
Name[ca_ES@valencia]=Ratolí i ratolí tàctil
Name[cs]=Myš a touchpad
Name[cs_CZ]=Myš a touchpad
Name[cy]=Llygoden a Phad Cyffwrdd
Name[da]=Mus og touchpad
Name[da_DK]=Mus og touchpad
Name[de]=Maus und Touchpad
Name[de_CH]=Maus und Touchpad
Name[de_DE]=Maus und Touchpad
Name[el]=Ποντίκι και Επιφάνεια Αφής
Name[eo]=Muso kaj tuŝplato
Name[es]=Ratón y ratón táctil
Name[es_AR]=Ratón y ratón táctil
Name[es_CL]=Ratón y ratón táctil
Name[es_CO]=Ratón y ratón táctil
Name[es_CR]=Ratón y ratón táctil
Name[es_DO]=Ratón y ratón táctil
Name[es_EC]=Ratón y ratón táctil
Name[es_ES]=Ratón y ratón táctil
Name[es_MX]=Ratón y ratón táctil
Name[es_NI]=Ratón y ratón táctil
Name[es_PA]=Ratón y ratón táctil
Name[es_PE]=Ratón y ratón táctil
Name[es_PR]=Ratón y ratón táctil
Name[es_SV]=Ratón y ratón táctil
Name[es_UY]=Ratón y ratón táctil
Name[es_VE]=Ratón y ratón táctil
Name[et]=Hiir ja puuteplaat
Name[et_EE]=Hiir ja puuteplaat
Name[eu]=Sagua eta ukipen-teklatua
Name[fi]=Hiiri ja kosketuslevy
Name[fi_FI]=Hiiri ja kosketuslevy
Name[fr]=Souris et pavé tactile
Name[fr_CA]=Souris et pavé tactile
Name[fr_FR]=Souris et pavé tactile
Name[ga]=Luch agus Ceap Tadhaill
Name[gd]=An luchag is am pada-suathaidh
Name[gl]=Rato e área táctil
Name[gl_ES]=Rato e área táctil
Name[hr]=Miš i touchpad
Name[hu]=Egér és érintőtábla
Name[hu_HU]=Egér és érintőtábla
Name[ia]=Mus e pannello tactile
Name[id]=Mouse dan Touchpad
Name[id_ID]=Mouse dan Touchpad
Name[is]=Mús og snertiplatti
Name[it]=Mouse e touchpad
Name[it_CH]=Mouse e touchpad
Name[it_IT]=Mouse e touchpad
Name[ja]=マウスとタッチパッド
Name[ja_JP]=マウスとタッチパッド
Name[ko]=마우스와 터치패드
Name[ko_KR]=마우스와 터치패드
Name[lt]=Pelė ir jutiklinis kilimėlis
Name[lt_LT]=Pelė ir jutiklinis kilimėlis
Name[lv]=Pele un skārienpaliktnis
Name[lv_LV]=Pele un skārienpaliktnis
Name[ms]=Tetikus dan Pad Sentuh
Name[ms_MY]=Tetikus dan Pad Sentuh
Name[nb]=Mus og styreplate
Name[nb_NO]=Mus og styreplate
Name[nds]=Maus und Touchpad
Name[nl]=Muis en touchpad
Name[nl_NL]=Muis en touchpad
Name[oc]=Mirga e pavat tactil
Name[om]=Hantuutee fi touchpad
Name[pa]=ਮਾਊਸ ਤੇ ਟੱਚਪੈਚ
Name[pl]=Mysz i panel dotykowy
Name[pl_PL]=Mysz i panel dotykowy
Name[pt]=Rato e painel de toque
Name[pt_BR]=Mouse e Touchpad
Name[pt_PT]=Rato e painel de toque
Name[ro]=Mouse și touchpad
Name[ro_RO]=Mouse și touchpad
Name[ru]=Мышь и сенсорная панель
Name[sk]=Myš a touchpad
Name[sk_SK]=Myš a touchpad
Name[sl]=Miška in sledilna ploščica
Name[sl_SI]=Miška in sledilna ploščica
Name[sr]=Миш и додирна плочица
Name[sr@Latn]=Миш и додирна плочица
Name[sr@ije]=Миш и додирна плочица
Name[sr@ijekavianlatin]=Миш и додирна плочица
Name[sr@latin]=Миш и додирна плочица
Name[sr_RS]=Миш и додирна плочица
Name[sr_RS@latin]=Миш и додирна плочица
Name[sv]=Mus och pekplatta
Name[ta]=சொடுக்கி மற்றும் தொடுதிட்டு
Name[ta_LK]=சொடுக்கி மற்றும் தொடுதிட்டு
Name[tg]=Муш ва панели ламсӣ
Name[th]=เมาส์และทัชแพด
Name[th_TH]=เมาส์และทัชแพด
Name[tr]=Fare ve Dokunmatik Panel
Name[tr_TR]=Fare ve Dokunmatik Panel
Name[uk]=Миша та сенсорна панель
Name[uk_UA]=Миша та сенсорна панель
Name[ur]=ماؤس اور ٹچ پیڈ
Name[vi]=Chuột và Bàn chạm chuột
Name[vi_VN]=Chuột và Bàn chạm chuột
Name[zh_CN]=鼠标和触摸板
Name[zh_HK]=滑鼠和觸控板
Name[zh_TW]=滑鼠與觸控板
Comment=Control mouse and touchpad settings
Comment[am]=የ አይጥ እና የ ተችፓድ ማሰናጃ መቆጣጠሪያ
Comment[ar]=التحكم في خصائص الفأرة ولوحة اللمس
Comment[be]=Налада мышы і сэнсарнай панэлі
Comment[be@latin]=Налада мышы і сэнсарнай панэлі
Comment[be_BY]=Налада мышы і сэнсарнай панэлі
Comment[bg]=Контрол на мишката и настройки на тъчпада
Comment[bg_BG]=Контрол на мишката и настройки на тъчпада
Comment[bs]=Kontrole miša i površina osjetljiva na dodir
Comment[ca]=Ajusts de ratolí i ratolí tàctil
Comment[ca@valencia]=Configuració de ratolí i ratolí tàctil
Comment[ca_ES]=Ajusts de ratolí i ratolí tàctil
Comment[ca_ES@valencia]=Configuració de ratolí i ratolí tàctil
Comment[cs]=Nastavení myši a touchpadu
Comment[cs_CZ]=Nastavení myši a touchpadu
Comment[cy]=Gosodiadau rheoli llygoden a phad cyffwrdd
Comment[da]=Kontrollér muse- og touchpadindstillinger
Comment[da_DK]=Kontrollér muse- og touchpadindstillinger
Comment[de]=Maus- und Touchpad-Einstellungen verwalten
Comment[de_CH]=Maus- und Touchpad-Einstellungen verwalten
Comment[de_DE]=Maus- und Touchpad-Einstellungen verwalten
Comment[el]=Ρυθμίστε το ποντίκι και την επιφάνεια αφής
Comment[es]=Configuración de ratón y ratón táctil
Comment[es_AR]=Configuración de ratón y ratón táctil
Comment[es_CL]=Configuración de ratón y ratón táctil
Comment[es_CO]=Configuración de ratón y ratón táctil
Comment[es_CR]=Configuración de ratón y ratón táctil
Comment[es_DO]=Configuración de ratón y ratón táctil
Comment[es_EC]=Configuración de ratón y ratón táctil
Comment[es_ES]=Configuración de ratón y ratón táctil
Comment[es_MX]=Configuración de ratón y ratón táctil
Comment[es_NI]=Configuración de ratón y ratón táctil
Comment[es_PA]=Configuración de ratón y ratón táctil
Comment[es_PE]=Configuración de ratón y ratón táctil
Comment[es_PR]=Configuración de ratón y ratón táctil
Comment[es_SV]=Configuración de ratón y ratón táctil
Comment[es_UY]=Configuración de ratón y ratón táctil
Comment[es_VE]=Configuración de ratón y ratón táctil
Comment[eu]=Kontrolatu sagua eta ukipen-teklatuaren ezarpenak
Comment[fi]=Muuta hiiren ja kosketuslevyn asetuksia
Comment[fi_FI]=Muuta hiiren ja kosketuslevyn asetuksia
Comment[fr]=Paramètres de contrôle de la souris et du pavé tactile
Comment[fr_CA]=Contrôler les paramètres de la souris et du pavé tactile
Comment[fr_FR]=Paramètres de contrôle de la souris et du pavé tactile
Comment[gd]=Stiùirich roghainnean na luchaige 's a' phada-shuathaidh
Comment[gl]=Controla os axustes do rato e da área táctil
Comment[gl_ES]=Controla os axustes do rato e da área táctil
Comment[hr]=Upravljajte mišem i touchpad postavkama
Comment[hu]=Egér és érintőtábla beállítások
Comment[hu_HU]=Egér és érintőtábla beállítások
Comment[ia]=Controlar le preferentias del mus e del pannello tactile
Comment[id]=Atur pengaturan mouse dan touchpad
Comment[id_ID]=Atur pengaturan mouse dan touchpad
Comment[is]=Sýsla með stillingar músa og snertiplatta
Comment[it]=Impostazioni mouse e touchpad
Comment[it_CH]=Impostazioni mouse e touchpad
Comment[it_IT]=Impostazioni mouse e touchpad
Comment[ja]=マウス・タットパッド設定管理
Comment[ja_JP]=マウス・タットパッド設定管理
Comment[ko]=마우스와 터치패드 설정
Comment[ko_KR]=마우스와 터치패드 설정
Comment[lt]=Valdyti pelės ir jutiklinio kilimėlio nustatymus
Comment[lt_LT]=Valdyti pelės ir jutiklinio kilimėlio nustatymus
Comment[lv]=Vadīt peles un skārienpalikņa iestatījumus
Comment[lv_LV]=Vadīt peles un skārienpalikņa iestatījumus
Comment[ms]=Tetapan kawalan tetikus dan pad sesentuh
Comment[ms_MY]=Tetapan kawalan tetikus dan pad sesentuh
Comment[nb]=Håndter mus- og styreplateinnstillinger
Comment[nb_NO]=Håndter mus- og styreplateinnstillinger
Comment[nds]=Maus und Touchpad-Einstellungen bearbeiten
Comment[nl]=Muis- en touchpadinstellingen beheren
Comment[nl_NL]=Muis- en touchpadinstellingen beheren
Comment[pl]=Kontroluj ustawienia myszki i panelu dotykowego
Comment[pl_PL]=Kontroluj ustawienia myszki i panelu dotykowego
Comment[pt]=Controlar as definições de rato e touchpad
Comment[pt_BR]=Controlar as configurações de mouse e touchpad
Comment[pt_PT]=Controlar as definições de rato e touchpad
Comment[ro]=Gestionează setările mouse-ului și touchpadului
Comment[ro_RO]=Gestionează setările mouse-ului și touchpadului
Comment[ru]=Настройка мыши и сенсорной панели
Comment[sk]=Kontrolovať nastavenia myši a touchpadu
Comment[sk_SK]=Kontrolovať nastavenia myši a touchpadu
Comment[sl]=Upravljajte z nastavitvami miške in drsne ploščice
Comment[sl_SI]=Upravljajte z nastavitvami miške in drsne ploščice
Comment[sr]=Управљање поставкама миша и додирне плочице
Comment[sr@Latn]=Управљање поставкама миша и додирне плочице
Comment[sr@ije]=Управљање поставкама миша и додирне плочице
Comment[sr@ijekavianlatin]=Управљање поставкама миша и додирне плочице
Comment[sr@latin]=Управљање поставкама миша и додирне плочице
Comment[sr_RS]=Управљање поставкама миша и додирне плочице
Comment[sr_RS@latin]=Управљање поставкама миша и додирне плочице
Comment[sv]=Hantera inställningar för mus och pekplatta
Comment[tg]=Идоракунии танзимоти муш ва панели ламсӣ
Comment[th]=ควบคุมการตั้งค่าเมาส์และทัชแพด
Comment[th_TH]=ควบคุมการตั้งค่าเมาส์และทัชแพด
Comment[tr]=Fare ve dokunmatik panel ayarlarını kontrol et
Comment[tr_TR]=Fare ve dokunmatik panel ayarlarını kontrol et
Comment[uk]=Керування налаштуваннями миші і тачпаду
Comment[uk_UA]=Керування налаштуваннями миші і тачпаду
Comment[ur]=ماؤس اور ٹچ پیڈ کی ترتیبات معین کریں
Comment[vi]=Điều khiển thiết đặt chuột và bàn chạm
Comment[vi_VN]=Điều khiển thiết đặt chuột và bàn chạm
Comment[zh_CN]=鼠标/触摸板设置
Comment[zh_HK]=控制滑鼠和觸控板設定
Comment[zh_TW]=管理滑鼠與觸控板設定
Keywords=mouse;touchpad;synaptic;double-click;
Keywords[am]=አይጥ ተችፓድ ሲናፕቲክ ሁለት ጊዜ-መጫኛ;
Keywords[ar]=فأرة ، لوحة اللمس ، المتشابك، نقر مزدوج;
Keywords[ast]=mur;touchpad;synaptic;clic doblu;duble clic;doblu clic;clic duble;
Keywords[be]=мыш;сэнсарная панэль;synaptic;падвоены націск;
Keywords[be@latin]=мыш;сэнсарная панэль;synaptic;падвоены націск;
Keywords[be_BY]=мыш;сэнсарная панэль;synaptic;падвоены націск;
Keywords[bg]=мишка;сензорен панел;synaptic;двоен клик;
Keywords[bg_BG]=мишка;сензорен панел;synaptic;двоен клик;
Keywords[bs]=miš;površina osjetljiva na dodir;synaptic;dvostruki klik;
Keywords[ca]=ratolí;ratolí tàctil;synaptic;doble clic;
Keywords[ca@valencia]=ratolí;ratolí tàctil;synaptic;doble clic;
Keywords[ca_ES]=ratolí;ratolí tàctil;synaptic;doble clic;
Keywords[ca_ES@valencia]=ratolí;ratolí tàctil;synaptic;doble clic;
Keywords[cs]=myš;touchpad;synaptic;dvojklik;
Keywords[cs_CZ]=myš;touchpad;synaptic;dvojklik;
Keywords[cy]=llygoden;pad cyffwrdd;synaptig;clic dwbl;
Keywords[da]=mus;touchpad;synaptic;dobbeltklik;
Keywords[da_DK]=mus;touchpad;synaptic;dobbeltklik;
Keywords[de]=Maus;Touchpad;Synaptic;Doppelklick;
Keywords[de_CH]=Maus;Touchpad;Synaptic;Doppelklick;
Keywords[de_DE]=Maus;Touchpad;Synaptic;Doppelklick;
Keywords[el]=ποντίκι;επιφάνεια αφής;synaptic;διπλό κλικ;
Keywords[es]=ratón;ratón táctil;synaptic;doble clic;
Keywords[es_AR]=ratón;ratón táctil;synaptic;doble clic;
Keywords[es_CL]=ratón;ratón táctil;synaptic;doble clic;
Keywords[es_CO]=ratón;ratón táctil;synaptic;doble clic;
Keywords[es_CR]=ratón;ratón táctil;synaptic;doble clic;
Keywords[es_DO]=ratón;ratón táctil;synaptic;doble clic;
Keywords[es_EC]=ratón;ratón táctil;synaptic;doble clic;
Keywords[es_ES]=ratón;ratón táctil;synaptic;doble clic;
Keywords[es_MX]=ratón;ratón táctil;synaptic;doble clic;
Keywords[es_NI]=ratón;ratón táctil;synaptic;doble clic;
Keywords[es_PA]=ratón;ratón táctil;synaptic;doble clic;
Keywords[es_PE]=ratón;ratón táctil;synaptic;doble clic;
Keywords[es_PR]=ratón;ratón táctil;synaptic;doble clic;
Keywords[es_SV]=ratón;ratón táctil;synaptic;doble clic;
Keywords[es_UY]=ratón;ratón táctil;synaptic;doble clic;
Keywords[es_VE]=ratón;ratón táctil;synaptic;doble clic;
Keywords[eu]=sagua;ukipen-teklatua;synaptic;klik bikoitza;
Keywords[fi]=hiiri;kosketuslevy;synaptic;tuplaklikkaus;
Keywords[fi_FI]=hiiri;kosketuslevy;synaptic;tuplaklikkaus;
Keywords[fr]=souris;pavé tactile;synaptic;double clic;
Keywords[fr_CA]=souris;pavé tactile;synaptic;double-clic;
Keywords[fr_FR]=souris;pavé tactile;synaptic;double clic;
Keywords[ga]=luch;ceap tadhaill;sionapsach;déchliceáil;
Keywords[gd]=luchag;pada-suathaidh;synaptic;briogadh dùbailte;mouse;touchpad;double-click;
Keywords[gl]=rato;área táctil;synaptic;dobre clic;
Keywords[gl_ES]=rato;área táctil;synaptic;dobre clic;
Keywords[hr]=miš;touchpad;synaptic;dvostruki-klik;
Keywords[hu]=egér;érintőtábla;synaptic;dupla kattintás;
Keywords[hu_HU]=egér;érintőtábla;synaptic;dupla kattintás;
Keywords[ia]=mus;pannello tactile;synaptic;clic duple;
Keywords[id]=mouse;touchpad;sinaptik;klik ganda;
Keywords[id_ID]=mouse;touchpad;sinaptik;klik ganda;
Keywords[is]=mús;bendill;snertiplatti;synaptic;tvísmella;
Keywords[it]=mouse;touchpad;synaptic;doppio clic;
Keywords[it_CH]=mouse;touchpad;synaptic;doppio clic;
Keywords[it_IT]=mouse;touchpad;synaptic;doppio clic;
Keywords[ja]=マウス、タッチパッド、synaptic、ダブルクリック;
Keywords[ja_JP]=マウス、タッチパッド、synaptic、ダブルクリック;
Keywords[ko]=마우스;터치패드;시냅틱;더블 클릭;
Keywords[ko_KR]=마우스;터치패드;시냅틱;더블 클릭;
Keywords[lt]=pelė;synaptic;dvigubas paspaudimas;
Keywords[lt_LT]=pelė;synaptic;dvigubas paspaudimas;
Keywords[lv]=pele;skārienpaliktnis;sinaptiskais;dubultklikšķis;
Keywords[lv_LV]=pele;skārienpaliktnis;sinaptiskais;dubultklikšķis;
Keywords[ms]=tetikus;pad sentuh;synaptic;dwi-klik;
Keywords[ms_MY]=tetikus;pad sentuh;synaptic;dwi-klik;
Keywords[nb]=mus;styreplate;synaptic;dobbel-klikk;
Keywords[nb_NO]=mus;styreplate;synaptic;dobbel-klikk;
Keywords[nds]=Maus;Touchpad;Synaptic;Doppelklick;
Keywords[nl]=muis;touchpad;aanraakveld;dubbelklik;
Keywords[nl_NL]=muis;touchpad;aanraakveld;dubbelklik;
Keywords[pl]=mysz;panel dotykowy;synaptic;podwójne kliknięcie;
Keywords[pl_PL]=mysz;panel dotykowy;synaptic;podwójne kliknięcie;
Keywords[pt]=rato;painel de toque;synaptic;dois cliques;
Keywords[pt_BR]=mouse;touchpad;synaptic;clique duplo;
Keywords[pt_PT]=rato;painel de toque;synaptic;dois cliques;
Keywords[ro]=mouse;touchpad;synaptic;clic dublu;
Keywords[ro_RO]=mouse;touchpad;synaptic;clic dublu;
Keywords[ru]=мышь;сенсорная панель;synaptic;двойное нажатие;
Keywords[sk]=myš;touchpad;synaptic;dvojklik;
Keywords[sk_SK]=myš;touchpad;synaptic;dvojklik;
Keywords[sl]=miška;sledilna ploščica;synaptic;dvojni klik;
Keywords[sl_SI]=miška;sledilna ploščica;synaptic;dvojni klik;
Keywords[sr]=миш;додирна плочица;синаптик;двоклик;
Keywords[sr@Latn]=миш;додирна плочица;синаптик;двоклик;
Keywords[sr@ije]=миш;додирна плочица;синаптик;двоклик;
Keywords[sr@ijekavianlatin]=миш;додирна плочица;синаптик;двоклик;
Keywords[sr@latin]=миш;додирна плочица;синаптик;двоклик;
Keywords[sr_RS]=миш;додирна плочица;синаптик;двоклик;
Keywords[sr_RS@latin]=миш;додирна плочица;синаптик;двоклик;
Keywords[sv]=mus;pekplatta;synaptic;dubbelklick;
Keywords[ta]=சுட்டி;தொடுமேடை;சினாப்டிக்;இரட்டைச் சொடுக்கு;
Keywords[ta_LK]=சுட்டி;தொடுமேடை;சினாப்டிக்;இரட்டைச் சொடுக்கு;
Keywords[tg]=муш;панели ламсӣ;synaptic;зеркунии дубора;
Keywords[th]=เมาส์;ทัชแพด;ไซนัปติก;คลิกสองครั้ง;
Keywords[th_TH]=เมาส์;ทัชแพด;ไซนัปติก;คลิกสองครั้ง;
Keywords[tr]=fare;dokunmatik panel;synaptic;çift-tıklama;
Keywords[tr_TR]=fare;dokunmatik panel;synaptic;çift-tıklama;
Keywords[uk]=миша;сенсорна панель;synaptic;подвійне натискання;
Keywords[uk_UA]=миша;сенсорна панель;synaptic;подвійне натискання;
Keywords[ur]=ماؤس، ٹچ پیڈ، سائنپٹک، دوہرا-کلک، ڈبل کلک;
Keywords[vi]=chuột;bàn chạm chuột;synaptic;nhấp đúp;
Keywords[vi_VN]=chuột;bàn chạm chuột;synaptic;nhấp đúp;
Keywords[zh_CN]=mouse;touchpad;synaptic;double-click;鼠标;触摸板;新思;双击;
Keywords[zh_HK]=滑鼠;觸控板;synaptic;連按兩下;
Keywords[zh_TW]=滑鼠;觸控板;synaptic;雙擊;
Cinnamon-3.6.7/files/usr/share/applications/cinnamon-settings-power.desktop 0000664 0001750 0001750 00000050475 13215735076 026131 0 ustar fabio fabio [Desktop Entry]
Icon=cs-power
Exec=cinnamon-settings power
Type=Application
OnlyShowIn=X-Cinnamon;
Categories=Settings;
Name=Power Management
Name[am]=የሐይል አስተዳዳሪ
Name[ar]=إدارة الطاقة
Name[ast]=Alministración d'enerxía
Name[be]=Кіраваньне сілкаваннем
Name[be@latin]=Кіраваньне сілкаваннем
Name[be_BY]=Кіраваньне сілкаваннем
Name[bg]=Управление на захранването
Name[bg_BG]=Управление на захранването
Name[bs]=Upravljanje napajanjem
Name[ca]=Gestió de l'energia
Name[ca@valencia]=Gestió d'energia
Name[ca_ES]=Gestió de l'energia
Name[ca_ES@valencia]=Gestió d'energia
Name[cs]=Správa napájení
Name[cs_CZ]=Správa napájení
Name[cy]=Rheoli Pŵer
Name[da]=Strømstyring
Name[da_DK]=Strømstyring
Name[de]=Energieverwaltung
Name[de_CH]=Energieverwaltung
Name[de_DE]=Energieverwaltung
Name[el]=Διαχείριση Ενέργειας
Name[eo]=Energia administrado
Name[es]=Gestión de energía
Name[es_AR]=Gestión de energía
Name[es_CL]=Gestión de energía
Name[es_CO]=Gestión de energía
Name[es_CR]=Gestión de energía
Name[es_DO]=Gestión de energía
Name[es_EC]=Gestión de energía
Name[es_ES]=Gestión de energía
Name[es_MX]=Gestión de energía
Name[es_NI]=Gestión de energía
Name[es_PA]=Gestión de energía
Name[es_PE]=Gestión de energía
Name[es_PR]=Gestión de energía
Name[es_SV]=Gestión de energía
Name[es_UY]=Gestión de energía
Name[es_VE]=Gestión de energía
Name[et]=Toitehaldus
Name[et_EE]=Toitehaldus
Name[eu]=Energia-kudeaketa
Name[fa]=مدیریت نیرو
Name[fa_AF]=مدیریت نیرو
Name[fa_IR]=مدیریت نیرو
Name[fi]=Virranhallinta
Name[fi_FI]=Virranhallinta
Name[fr]=Gestion d'alimentation
Name[fr_CA]=Gestion de Courant
Name[fr_FR]=Gestion d'alimentation
Name[ga]=Bainisteoireacht Cumhachta
Name[gd]=Stiùireadh na cumhachd
Name[gl]=Xestión da enerxía
Name[gl_ES]=Xestión da enerxía
Name[he]=צריכת חשמל
Name[he_IL]=צריכת חשמל
Name[hr]=Upravljanje energijom
Name[hu]=Energiakezelő
Name[hu_HU]=Energiakezelő
Name[ia]=Gestion del energia
Name[id]=Manajemen Daya
Name[id_ID]=Manajemen Daya
Name[is]=Aflstjórnun
Name[it]=Gestione dell'alimentazione
Name[it_CH]=Gestione dell'alimentazione
Name[it_IT]=Gestione dell'alimentazione
Name[ja]=電源管理
Name[ja_JP]=電源管理
Name[ko]=전원 관리
Name[ko_KR]=전원 관리
Name[lt]=Energijos valdymas
Name[lt_LT]=Energijos valdymas
Name[lv]=Barošanas pārvaldība
Name[lv_LV]=Barošanas pārvaldība
Name[ms]=Pengurusan Kuasa
Name[ms_MY]=Pengurusan Kuasa
Name[nb]=Strømstyring
Name[nb_NO]=Strømstyring
Name[nds]=Energieverwaltung
Name[nl]=Energiebeheer
Name[nl_NL]=Energiebeheer
Name[oc]=Gestion de l'alimentacion
Name[pa]=ਪਾਵਰ ਪਰਬੰਧ
Name[pl]=Zarządzanie energią
Name[pl_PL]=Zarządzanie energią
Name[pt]=Gestão de energia
Name[pt_BR]=Gerenciamento de Energia
Name[pt_PT]=Gestão de energia
Name[ro]=Administrare consum
Name[ro_RO]=Administrare consum
Name[ru]=Управление питанием
Name[sk]=Správa napájania
Name[sk_SK]=Správa napájania
Name[sl]=Upravljanje porabe energije
Name[sl_SI]=Upravljanje porabe energije
Name[sr]=Управљање напајањем
Name[sr@Latn]=Управљање напајањем
Name[sr@ije]=Управљање напајањем
Name[sr@ijekavianlatin]=Управљање напајањем
Name[sr@latin]=Управљање напајањем
Name[sr_RS]=Управљање напајањем
Name[sr_RS@latin]=Управљање напајањем
Name[sv]=Strömhantering
Name[ta]=மின்சக்தி மேலாண்மை
Name[ta_LK]=மின்சக்தி மேலாண்மை
Name[tg]=Идоракунии барқ
Name[th]=การจัดการพลังงาน
Name[th_TH]=การจัดการพลังงาน
Name[tr]=Güç Yönetimi
Name[tr_TR]=Güç Yönetimi
Name[uk]=Керування живленням
Name[uk_UA]=Керування живленням
Name[ur]=توانائی کا انتظام
Name[vi]=Quản lý Điện năng
Name[vi_VN]=Quản lý Điện năng
Name[zh_CN]=电源管理
Name[zh_HK]=電源管理
Name[zh_TW]=電源管理
Comment=Manage power settings
Comment[am]=የ ሐይል ማሰናጃዎች አስተዳዳሪ
Comment[ar]=إدارة إعدادات الطاقة
Comment[ast]=Axustes del alministrador d'enerxía
Comment[be]=Налады сілкавання
Comment[be@latin]=Налады сілкавання
Comment[be_BY]=Налады сілкавання
Comment[bg]=Управление на настройките на захранването
Comment[bg_BG]=Управление на настройките на захранването
Comment[bs]=Upravljaj podešavanjem napajanja
Comment[ca]=Gestioneu els ajusts de l'energia
Comment[ca@valencia]=Administra configuració d'energia
Comment[ca_ES]=Gestioneu els ajusts de l'energia
Comment[ca_ES@valencia]=Administra configuració d'energia
Comment[cs]=Správa nastavení napájení
Comment[cs_CZ]=Správa nastavení napájení
Comment[cy]=Rheoli'r gosodiadau pŵer
Comment[da]=Administrér strømstyring
Comment[da_DK]=Administrér strømstyring
Comment[de]=Energieeinstellungen verwalten
Comment[de_CH]=Energieeinstellungen verwalten
Comment[de_DE]=Energieeinstellungen verwalten
Comment[el]=Διαχείριση ρυθμίσεων ενέργειας
Comment[es]=Administrar configuración de energía
Comment[es_AR]=Administrar configuración de energía
Comment[es_CL]=Administrar configuración de energía
Comment[es_CO]=Administrar configuración de energía
Comment[es_CR]=Administrar configuración de energía
Comment[es_DO]=Administrar configuración de energía
Comment[es_EC]=Administrar configuración de energía
Comment[es_ES]=Administrar configuración de energía
Comment[es_MX]=Administrar configuración de energía
Comment[es_NI]=Administrar configuración de energía
Comment[es_PA]=Administrar configuración de energía
Comment[es_PE]=Administrar configuración de energía
Comment[es_PR]=Administrar configuración de energía
Comment[es_SV]=Administrar configuración de energía
Comment[es_UY]=Administrar configuración de energía
Comment[es_VE]=Administrar configuración de energía
Comment[eu]=Kudeatu energia-ezarpenak
Comment[fi]=Muuta virranhallinnan asetuksia
Comment[fi_FI]=Muuta virranhallinnan asetuksia
Comment[fr]=Gérer les paramètres d'alimentation
Comment[fr_CA]=Gérer les paramètres d'alimentation
Comment[fr_FR]=Gérer les paramètres d'alimentation
Comment[gd]=Stiùirich roghainnean na cumhachd
Comment[gl]=Administra os axustes de enerxía
Comment[gl_ES]=Administra os axustes de enerxía
Comment[hr]=Upravljajte postavkama energije
Comment[hu]=Energiabeállítások kezelése
Comment[hu_HU]=Energiabeállítások kezelése
Comment[ia]=Gerer le preferentias del energia
Comment[id]=Atur pengaturan Power
Comment[id_ID]=Atur pengaturan Power
Comment[is]=Sýsla með orkusparnaðarstillingar
Comment[it]=Gestisci impostazioni alimentazione
Comment[it_CH]=Gestisci impostazioni alimentazione
Comment[it_IT]=Gestisci impostazioni alimentazione
Comment[ja]=電源設定管理
Comment[ja_JP]=電源設定管理
Comment[ko]=전원설정 관리
Comment[ko_KR]=전원설정 관리
Comment[lt]=Tvarkyti energijos nustatymus
Comment[lt_LT]=Tvarkyti energijos nustatymus
Comment[lv]=Pārvaldīt barošanas iestatījumus
Comment[lv_LV]=Pārvaldīt barošanas iestatījumus
Comment[ms]=Mengurus tetapan kuasa
Comment[ms_MY]=Mengurus tetapan kuasa
Comment[nb]=Håndter strømsstyring
Comment[nb_NO]=Håndter strømsstyring
Comment[nds]=Energieeinstellungen verwalten
Comment[nl]=Energie-instellingen beheren
Comment[nl_NL]=Energie-instellingen beheren
Comment[oc]=Gerir los paramètres d'alimentacion
Comment[pl]=Zarządzaj ustawieniami zasilania
Comment[pl_PL]=Zarządzaj ustawieniami zasilania
Comment[pt]=Gerir as definições de energia
Comment[pt_BR]=Gerenciar as configurações de energia
Comment[pt_PT]=Gerir as definições de energia
Comment[ro]=Gestionează setările consumului
Comment[ro_RO]=Gestionează setările consumului
Comment[ru]=Настройки питания
Comment[sk]=Spravovať nastavenia napájania
Comment[sk_SK]=Spravovať nastavenia napájania
Comment[sl]=Upravljajte z nastavitvami porabe energije
Comment[sl_SI]=Upravljajte z nastavitvami porabe energije
Comment[sq]=Menaxhoni parametrat e furnizimit të energjisë
Comment[sr]=Управљање поставкама напајања
Comment[sr@Latn]=Управљање поставкама напајања
Comment[sr@ije]=Управљање поставкама напајања
Comment[sr@ijekavianlatin]=Управљање поставкама напајања
Comment[sr@latin]=Управљање поставкама напајања
Comment[sr_RS]=Управљање поставкама напајања
Comment[sr_RS@latin]=Управљање поставкама напајања
Comment[sv]=Hantera ströminställningar
Comment[tg]=Идоракунии танзимоти барқ
Comment[th]=จัดการการตั้งค่าพลังงาน
Comment[th_TH]=จัดการการตั้งค่าพลังงาน
Comment[tr]=Güç ayarlarını yönet
Comment[tr_TR]=Güç ayarlarını yönet
Comment[uk]=Керування налаштуваннями живлення
Comment[uk_UA]=Керування налаштуваннями живлення
Comment[ur]=توانائی کی ترتیبات کا انتظام
Comment[vi]=Quản lý thiết đặt năng lượng
Comment[vi_VN]=Quản lý thiết đặt năng lượng
Comment[zh_CN]=电源管理
Comment[zh_HK]=管理電源設定
Comment[zh_TW]=管理電源設定
Keywords=power;suspend;hibernate;laptop;desktop;brightness;screensaver;
Keywords[am]=ሐይል፡ ማገጃ፡ ማስተኛ፡ ላፕቶፕ፡ ዴስክቶፕ፡ ብሩህንርት፡ መመልከቻውን ማዳኛ;
Keywords[ar]=طاقة، إسبات، إسبات دائم، محمول، سطح مكتب، إضاءة، شاشة توقف;
Keywords[ast]=enerxía;suspensión;ivernación;ivernar;suspender;portátil;escritoriu;rellumu;curiapantalles;pantalla;
Keywords[be]=электрасілкаванне;чакаюшчы рэжым;спячы рэжым;ноўтбук;настольны ПК;яркасць;застаўка;
Keywords[be@latin]=электрасілкаванне;чакаюшчы рэжым;спячы рэжым;ноўтбук;настольны ПК;яркасць;застаўка;
Keywords[be_BY]=электрасілкаванне;чакаюшчы рэжым;спячы рэжым;ноўтбук;настольны ПК;яркасць;застаўка;
Keywords[bg]=захранване;приспиване;хиберниране;лаптоп;десктоп;яркост;предпазител на екрана;
Keywords[bg_BG]=захранване;приспиване;хиберниране;лаптоп;десктоп;яркост;предпазител на екрана;
Keywords[bs]=napajanje;suspenduj;hiberniraj;laptop;desktop;svjetlost;čuvar ekrana;
Keywords[ca]=energia;suspendre;hibernar;portàtil;escriptori;brillantor;estalvi de pantalla;
Keywords[ca@valencia]=energia;suspendre;hivernar;portàtil;escriptori;brillantor;estalvi de pantalla;
Keywords[ca_ES]=energia;suspendre;hibernar;portàtil;escriptori;brillantor;estalvi de pantalla;
Keywords[ca_ES@valencia]=energia;suspendre;hivernar;portàtil;escriptori;brillantor;estalvi de pantalla;
Keywords[cs]=energie;uspat;hibernovat;laptop;desktop;jas;spořič;
Keywords[cs_CZ]=energie;uspat;hibernovat;laptop;desktop;jas;spořič;
Keywords[cy]=pŵer;oedi;cysgu;gliniadur;bwrdd gwaith;disgleirdeb;arbedwr sgrin;
Keywords[da]=strøm;hvile;dvale;bærbar;stationær;lysstyrke;pauseskærm;
Keywords[da_DK]=strøm;hvile;dvale;bærbar;stationær;lysstyrke;pauseskærm;
Keywords[de]=power;suspend;hibernate;laptop;desktop;brightness;screensaver;Energie;Bereitschaft;Ruhezustand;Schreibtisch;Helligkeit;Bildschirmschoner;
Keywords[de_CH]=power;suspend;hibernate;laptop;desktop;brightness;screensaver;Energie;Bereitschaft;Ruhezustand;Schreibtisch;Helligkeit;Bildschirmschoner;
Keywords[de_DE]=power;suspend;hibernate;laptop;desktop;brightness;screensaver;Energie;Bereitschaft;Ruhezustand;Schreibtisch;Helligkeit;Bildschirmschoner;
Keywords[el]=ενέργεια;αναστολή;αδρανοποίηση;φορητός υπολογιστής;σταθερός υπολογιστής;φωτεινότητα;προφύλαξη οθόνης;
Keywords[es]=energía;suspender;hibernar;portátil;escritorio;brillo;salvapantallas;
Keywords[es_AR]=energía;suspender;hibernar;portátil;escritorio;brillo;salvapantallas;
Keywords[es_CL]=energía;suspender;hibernar;portátil;escritorio;brillo;salvapantallas;
Keywords[es_CO]=energía;suspender;hibernar;portátil;escritorio;brillo;salvapantallas;
Keywords[es_CR]=energía;suspender;hibernar;portátil;escritorio;brillo;salvapantallas;
Keywords[es_DO]=energía;suspender;hibernar;portátil;escritorio;brillo;salvapantallas;
Keywords[es_EC]=energía;suspender;hibernar;portátil;escritorio;brillo;salvapantallas;
Keywords[es_ES]=energía;suspender;hibernar;portátil;escritorio;brillo;salvapantallas;
Keywords[es_MX]=energía;suspender;hibernar;portátil;escritorio;brillo;salvapantallas;
Keywords[es_NI]=energía;suspender;hibernar;portátil;escritorio;brillo;salvapantallas;
Keywords[es_PA]=energía;suspender;hibernar;portátil;escritorio;brillo;salvapantallas;
Keywords[es_PE]=energía;suspender;hibernar;portátil;escritorio;brillo;salvapantallas;
Keywords[es_PR]=energía;suspender;hibernar;portátil;escritorio;brillo;salvapantallas;
Keywords[es_SV]=energía;suspender;hibernar;portátil;escritorio;brillo;salvapantallas;
Keywords[es_UY]=energía;suspender;hibernar;portátil;escritorio;brillo;salvapantallas;
Keywords[es_VE]=energía;suspender;hibernar;portátil;escritorio;brillo;salvapantallas;
Keywords[eu]=energia;eseki;hibernatu;eramangarria;mahaigainekoa;distira;pantaila-babeslea;
Keywords[fi]=virta;valmiustila;lepotila;kannettava;pöytätietokone;näytönsäästäjä;
Keywords[fi_FI]=virta;valmiustila;lepotila;kannettava;pöytätietokone;näytönsäästäjä;
Keywords[fr]=alimentation;mise en veille;hibernation;ordinateur portable;ordinateur de bureau;luminosité;économiseur d'écran;
Keywords[fr_CA]=alimentation;mise en veille;hibernation;ordinateur portable;ordinateur de bureau;luminosité;économiseur d'écran;
Keywords[fr_FR]=alimentation;mise en veille;hibernation;ordinateur portable;ordinateur de bureau;luminosité;économiseur d'écran;
Keywords[gd]=power;suspend;hibernate;laptop;desktop;brightness;screensaver;cumhachd;dàil;cuir 'na dhàil;geamhraich;geamhrachadh;soilleireachd;sàbhalaiche-sgrìn;
Keywords[gl]=enerxia;suspender;hibernar;portátil;escritorio;brillo;protector de pantalla;
Keywords[gl_ES]=enerxia;suspender;hibernar;portátil;escritorio;brillo;protector de pantalla;
Keywords[hr]=uključi;suspendiraj;hiberniraj;prijenosno računalo;radna površina;osvjetljenje;čuvar zaslona;
Keywords[hu]=energia;táp;felfüggesztés;hibernálás;laptop;asztali gép;fényerő;képernyővédő;
Keywords[hu_HU]=energia;táp;felfüggesztés;hibernálás;laptop;asztali gép;fényerő;képernyővédő;
Keywords[ia]=energia;stato de suspension;hibernar;portabile;scriptorio;brillantia;salva schermo;
Keywords[id]=power;suspensi;hibernasi;laptop;desktop;brightness;screensaver;
Keywords[id_ID]=power;suspensi;hibernasi;laptop;desktop;brightness;screensaver;
Keywords[is]=orka;afl;svæfa;bið;fartölva;rafhlaða;skjáborð;birta;skjáhvíla;
Keywords[it]=Accendi;Sospendi;Iberna;Laptop;Desktop;Luminosità;Screensaver;
Keywords[it_CH]=Accendi;Sospendi;Iberna;Laptop;Desktop;Luminosità;Screensaver;
Keywords[it_IT]=Accendi;Sospendi;Iberna;Laptop;Desktop;Luminosità;Screensaver;
Keywords[ko]=전원;대기;잠자기;랩톱;데스크톱;밝기;화면보호기;
Keywords[ko_KR]=전원;대기;잠자기;랩톱;데스크톱;밝기;화면보호기;
Keywords[lv]=barošanas;apturēt;hibernēt;klēpjdators;darbvirsmas;spilgtums;ekrānsaudzētājs;
Keywords[lv_LV]=barošanas;apturēt;hibernēt;klēpjdators;darbvirsmas;spilgtums;ekrānsaudzētājs;
Keywords[ms]=Kuasa;gantung;hibernasi;komputer riba;desktop;kecerahan;penjimat skrin;
Keywords[ms_MY]=Kuasa;gantung;hibernasi;komputer riba;desktop;kecerahan;penjimat skrin;
Keywords[nb]=strøm;hvilemodus;dvalemodus;bærbar;skrivebord;lysstyrke;skjermsparer;
Keywords[nb_NO]=strøm;hvilemodus;dvalemodus;bærbar;skrivebord;lysstyrke;skjermsparer;
Keywords[nds]=Power;Bereitschaft;Ruhezustand;Laptop;Desktop;Helligkeit;Bildschirmschoner;
Keywords[nl]=energie;pauzestand;slaapstand;laptop;bureaucomputer;helderheid;schermbeveiliging;
Keywords[nl_NL]=energie;pauzestand;slaapstand;laptop;bureaucomputer;helderheid;schermbeveiliging;
Keywords[pl]=zasilanie;uśpienie;hibernacja;laptop;pulpit;jasność;wygaszacz ekranu;
Keywords[pl_PL]=zasilanie;uśpienie;hibernacja;laptop;pulpit;jasność;wygaszacz ekranu;
Keywords[pt]=energia;suspender;hibernar;portátil;computador de secretária;brilho;protetor de ecrã;
Keywords[pt_BR]=energia;suspender;hibernar;laptop;área de trabalho;brilho;protetor de tela;
Keywords[pt_PT]=energia;suspender;hibernar;portátil;computador de secretária;brilho;protetor de ecrã;
Keywords[ro]=energie;suspendare;hibernare;laptop;desktop;luminozitate;protector de ecran;
Keywords[ro_RO]=energie;suspendare;hibernare;laptop;desktop;luminozitate;protector de ecran;
Keywords[ru]=питание;ожидание;сон;ноутбук;пк;яркость;заставка;
Keywords[sk]=za/vypnúť;uspať;hibernovať;notebook;plocha;jas;šetrič obrazovky;
Keywords[sk_SK]=za/vypnúť;uspať;hibernovať;notebook;plocha;jas;šetrič obrazovky;
Keywords[sl]=energija;pripravljenost;mirovanje;prenosnik;namizje;svetlost;ohranjevalnik zaslona;
Keywords[sl_SI]=energija;pripravljenost;mirovanje;prenosnik;namizje;svetlost;ohranjevalnik zaslona;
Keywords[sr]=искључи;замрзни;обустави;преносни рачунар;рачунар;осветљење;чувар екрана;
Keywords[sr@Latn]=искључи;замрзни;обустави;преносни рачунар;рачунар;осветљење;чувар екрана;
Keywords[sr@ije]=искључи;замрзни;обустави;преносни рачунар;рачунар;осветљење;чувар екрана;
Keywords[sr@ijekavianlatin]=искључи;замрзни;обустави;преносни рачунар;рачунар;осветљење;чувар екрана;
Keywords[sr@latin]=искључи;замрзни;обустави;преносни рачунар;рачунар;осветљење;чувар екрана;
Keywords[sr_RS]=искључи;замрзни;обустави;преносни рачунар;рачунар;осветљење;чувар екрана;
Keywords[sr_RS@latin]=искључи;замрзни;обустави;преносни рачунар;рачунар;осветљење;чувар екрана;
Keywords[sv]=ström;vänteläge;viloläge;bärbar dator;bordsdator;ljusstyrka;skärmsläckare;
Keywords[tg]=барқ;таваққуф;гибернатсия;лэптоп;мизи корӣ;дурахшонӣ;пардаи экран;
Keywords[th]=พลังงาน;พักเครื่อง;จำศีล;แล็ปท็อป;พื้นโต๊ะ;ความสว่าง;โปรแกรมรักษาหน้าจอ;
Keywords[th_TH]=พลังงาน;พักเครื่อง;จำศีล;แล็ปท็อป;พื้นโต๊ะ;ความสว่าง;โปรแกรมรักษาหน้าจอ;
Keywords[tr]=güç;uyku;askı;dizüstü;masaüstü;parlaklık;ekran koruyucu;
Keywords[tr_TR]=güç;uyku;askı;dizüstü;masaüstü;parlaklık;ekran koruyucu;
Keywords[uk]=живлення;призупинення;гібернація;ноутбук;стільниця;яскравість;зберігач екрану;
Keywords[uk_UA]=живлення;призупинення;гібернація;ноутбук;стільниця;яскравість;зберігач екрану;
Keywords[vi]=năng lượng;ngưng;ngủ đông;máy tính xách tay;máy bàn;độ sáng;bảo vệ màn hình;
Keywords[vi_VN]=năng lượng;ngưng;ngủ đông;máy tính xách tay;máy bàn;độ sáng;bảo vệ màn hình;
Keywords[zh_CN]=电源,待机,休眠,笔记本,台式机,亮度,屏保;
Keywords[zh_HK]=電源;暫停;休眠;筆記型電腦;桌上型電腦;亮度;熒幕保護程式;
Keywords[zh_TW]=電源;暫停;休眠;筆記型電腦;桌上型電腦;亮度;螢幕保護程式;
Cinnamon-3.6.7/files/usr/share/applications/cinnamon-settings-user.desktop 0000664 0001750 0001750 00000044137 13215735076 025751 0 ustar fabio fabio [Desktop Entry]
Icon=cs-user
Exec=cinnamon-settings user
Type=Application
OnlyShowIn=X-Cinnamon;
Categories=Settings;
Name=Account details
Name[am]=የ መግለጫ ዝርዝሮች
Name[ar]=تفاصيل الحساب
Name[ast]=Detalles de cuenta
Name[be]=Дэталі ўліковага запісу
Name[be@latin]=Дэталі ўліковага запісу
Name[be_BY]=Дэталі ўліковага запісу
Name[bg]=Данни за акаунта
Name[bg_BG]=Данни за акаунта
Name[bs]=Detalji o računu
Name[ca]=Detalls del compte
Name[ca@valencia]=Detalls del compte
Name[ca_ES]=Detalls del compte
Name[ca_ES@valencia]=Detalls del compte
Name[cs]=Podrobnosti o účtu
Name[cs_CZ]=Podrobnosti o účtu
Name[cy]=Manylion cyfrif
Name[da]=Kontodetaljer
Name[da_DK]=Kontodetaljer
Name[de]=Kontodetails
Name[de_CH]=Kontodetails
Name[de_DE]=Kontodetails
Name[el]=Λεπτομέρειες λογαριασμού
Name[eo]=Kontodetaloj
Name[es]=Detalles de cuenta
Name[es_AR]=Detalles de cuenta
Name[es_CL]=Detalles de cuenta
Name[es_CO]=Detalles de cuenta
Name[es_CR]=Detalles de cuenta
Name[es_DO]=Detalles de cuenta
Name[es_EC]=Detalles de cuenta
Name[es_ES]=Detalles de cuenta
Name[es_MX]=Detalles de cuenta
Name[es_NI]=Detalles de cuenta
Name[es_PA]=Detalles de cuenta
Name[es_PE]=Detalles de cuenta
Name[es_PR]=Detalles de cuenta
Name[es_SV]=Detalles de cuenta
Name[es_UY]=Detalles de cuenta
Name[es_VE]=Detalles de cuenta
Name[et]=Konto üksikasjad
Name[et_EE]=Konto üksikasjad
Name[eu]=Kontuaren xehetasunak
Name[fi]=Tilin tiedot
Name[fi_FI]=Tilin tiedot
Name[fr]=Détails du compte
Name[fr_CA]=Détails du compte
Name[fr_FR]=Détails du compte
Name[fy]=Akkount details
Name[gd]=Mion-fhiosrachadh a' chunntais
Name[gl]=Detalles da conta
Name[gl_ES]=Detalles da conta
Name[hr]=Pojedinosti računa
Name[hu]=Fiók részletek
Name[hu_HU]=Fiók részletek
Name[ia]=Detalios del conto
Name[id]=Detail akun
Name[id_ID]=Detail akun
Name[is]=Nánar um notanda
Name[it]=Dettagli dell'account
Name[it_CH]=Dettagli dell'account
Name[it_IT]=Dettagli dell'account
Name[ja]=アカウントの詳細
Name[ja_JP]=アカウントの詳細
Name[ko]=사용자 정보
Name[ko_KR]=사용자 정보
Name[lt]=Paskyros informacija
Name[lt_LT]=Paskyros informacija
Name[lv]=Detalizēta informācija par kontu
Name[lv_LV]=Detalizēta informācija par kontu
Name[ms]=Perincian akaun
Name[ms_MY]=Perincian akaun
Name[nb]=Kontodetaljer
Name[nb_NO]=Kontodetaljer
Name[nds]=Konto - Einzelheiten
Name[nl]=Accountdetails
Name[nl_NL]=Accountdetails
Name[oc]=Informacions del compte
Name[om]=Eenyummeessaa baldhaa
Name[pa]=ਅਕਾਊਂਟ ਵੇਰਵਾ
Name[pl]=Szczegóły konta
Name[pl_PL]=Szczegóły konta
Name[pt]=Detalhes da conta
Name[pt_BR]=Detalhes da Conta
Name[pt_PT]=Detalhes da conta
Name[ro]=Detalii cont
Name[ro_RO]=Detalii cont
Name[ru]=Детали учётной записи
Name[sk]=Podrobnosti o účte
Name[sk_SK]=Podrobnosti o účte
Name[sl]=Podrobnosti računa
Name[sl_SI]=Podrobnosti računa
Name[sq]=Detajet e llogarisë
Name[sr]=Детаљи о налогу
Name[sr@Latn]=Детаљи о налогу
Name[sr@ije]=Детаљи о налогу
Name[sr@ijekavianlatin]=Детаљи о налогу
Name[sr@latin]=Детаљи о налогу
Name[sr_RS]=Детаљи о налогу
Name[sr_RS@latin]=Детаљи о налогу
Name[sv]=Kontodetaljer
Name[ta]=கணக்கு விவரங்கள்
Name[ta_LK]=கணக்கு விவரங்கள்
Name[tg]=Тафсилоти ҳисоб
Name[th]=รายละเอียดบัญชีผู้ใช้
Name[th_TH]=รายละเอียดบัญชีผู้ใช้
Name[tr]=Hesap Ayrıntıları
Name[tr_TR]=Hesap Ayrıntıları
Name[uk]=Дані обліковки
Name[uk_UA]=Дані обліковки
Name[ur]=کھاتے کی تفصیلات دکھائیں
Name[vi]=Chi tiết tài khoản
Name[vi_VN]=Chi tiết tài khoản
Name[zh_CN]=帐户详情
Name[zh_HK]=帳號詳細資料
Name[zh_TW]=帳號詳細資訊
Comment=Change your user preferences and password
Comment[am]=የ እርስዎን የመጠቀሚያ ምርጫዎች እና የመግቢያ ቃል መቀየሪያ
Comment[ar]=غيّر خيارات المستخدم وكلمة المرور
Comment[ast]=Camuda les tos preferencies d'usuariu y contraseña
Comment[be]=Змяніць карыстальніцкія налады і пароль
Comment[be@latin]=Змяніць карыстальніцкія налады і пароль
Comment[be_BY]=Змяніць карыстальніцкія налады і пароль
Comment[bg]=Променете Вашите потребителски настройки и парола
Comment[bg_BG]=Променете Вашите потребителски настройки и парола
Comment[bs]=Promijeni korisničke postavke i šifru
Comment[ca]=Canviar les preferències d'usuari i la contrasenya
Comment[ca@valencia]=Canvia les preferències d'usuari i contrasenya
Comment[ca_ES]=Canviar les preferències d'usuari i la contrasenya
Comment[ca_ES@valencia]=Canvia les preferències d'usuari i contrasenya
Comment[cs]=Změnit nastavení uživatele a hesla
Comment[cs_CZ]=Změnit nastavení uživatele a hesla
Comment[cy]=Newid eich dewisiadau defnyddiwr a chyfrinair
Comment[da]=Ændr dine brugerindstillinger og din adgangskode
Comment[da_DK]=Ændr dine brugerindstillinger og din adgangskode
Comment[de]=Benutzereinstellungen und Passwort ändern
Comment[de_CH]=Benutzereinstellungen und Passwort ändern
Comment[de_DE]=Benutzereinstellungen und Passwort ändern
Comment[el]=Αλλάξτε τις προτιμήσεις χρήστη σας και τον κωδικό πρόσβασης
Comment[es]=Cambiar las preferencias de usuario y contraseña
Comment[es_AR]=Cambiar las preferencias de usuario y contraseña
Comment[es_CL]=Cambiar las preferencias de usuario y contraseña
Comment[es_CO]=Cambiar las preferencias de usuario y contraseña
Comment[es_CR]=Cambiar las preferencias de usuario y contraseña
Comment[es_DO]=Cambiar las preferencias de usuario y contraseña
Comment[es_EC]=Cambiar las preferencias de usuario y contraseña
Comment[es_ES]=Cambiar las preferencias de usuario y contraseña
Comment[es_MX]=Cambiar las preferencias de usuario y contraseña
Comment[es_NI]=Cambiar las preferencias de usuario y contraseña
Comment[es_PA]=Cambiar las preferencias de usuario y contraseña
Comment[es_PE]=Cambiar las preferencias de usuario y contraseña
Comment[es_PR]=Cambiar las preferencias de usuario y contraseña
Comment[es_SV]=Cambiar las preferencias de usuario y contraseña
Comment[es_UY]=Cambiar las preferencias de usuario y contraseña
Comment[es_VE]=Cambiar las preferencias de usuario y contraseña
Comment[eu]=Aldatu erabiltzailearen hobespenak eta pasahitza
Comment[fi]=Muuta käyttäjäasetuksiasi ja salasanaasi
Comment[fi_FI]=Muuta käyttäjäasetuksiasi ja salasanaasi
Comment[fr]=Changez vos préférences utilisateur et votre mot de passe
Comment[fr_CA]=Modifier vos paramètres d'utilisateur et votre mot de passe
Comment[fr_FR]=Changez vos préférences utilisateur et votre mot de passe
Comment[gd]=Atharraich roghainnean a' chleachdaiche 's am facal-faire agad
Comment[gl]=Cambia as preferencias e o contrasinal do usuario
Comment[gl_ES]=Cambia as preferencias e o contrasinal do usuario
Comment[hr]=Promijenite svoje osobitosti korisnika i lozinke
Comment[hu]=Felhasználói beállítások és jelszavak módosítása
Comment[hu_HU]=Felhasználói beállítások és jelszavak módosítása
Comment[ia]=Cambiar tu preferentias de usator e contrasigno
Comment[id]=Ubah kata kunci dan preferensi anda
Comment[id_ID]=Ubah kata kunci dan preferensi anda
Comment[is]=Breyta notandastillingum þínum og lykilorði
Comment[it]=Modifica preferenze utente e password
Comment[it_CH]=Modifica preferenze utente e password
Comment[it_IT]=Modifica preferenze utente e password
Comment[ja]=ユーザ設定とパスワードの変更
Comment[ja_JP]=ユーザ設定とパスワードの変更
Comment[ko]=사용자 설정과 비밀번호를 바꿉니다
Comment[ko_KR]=사용자 설정과 비밀번호를 바꿉니다
Comment[lt]=Keisti naudotojo nuostatas ir slaptažodį
Comment[lt_LT]=Keisti naudotojo nuostatas ir slaptažodį
Comment[lv]=Mainīt savas lietotāja vēlmes un paroli
Comment[lv_LV]=Mainīt savas lietotāja vēlmes un paroli
Comment[ms]=Tukar pilihan pengguna dan kata laluan
Comment[ms_MY]=Tukar pilihan pengguna dan kata laluan
Comment[nb]=Endre dine brukerinnstillinger og passord
Comment[nb_NO]=Endre dine brukerinnstillinger og passord
Comment[nds]=Ändern Sie Ihre Benutzereinstellungen und Passwort
Comment[nl]=Verander uw gebruikersvoorkeuren en wachtwoord
Comment[nl_NL]=Verander uw gebruikersvoorkeuren en wachtwoord
Comment[pl]=Zmień swoje preferencje użytkownika i hasło
Comment[pl_PL]=Zmień swoje preferencje użytkownika i hasło
Comment[pt]=Mudar as suas preferências de utilizador e palavra passe
Comment[pt_BR]=Mudar as suas preferências e senha de usuário
Comment[pt_PT]=Mudar as suas preferências de utilizador e palavra passe
Comment[ro]=Schimbați preferințele pentru utilizator și parolă
Comment[ro_RO]=Schimbați preferințele pentru utilizator și parolă
Comment[ru]=Изменить пользовательские настройки и пароль
Comment[sk]=Zmeniť vaše používateľské predvoľby a heslo
Comment[sk_SK]=Zmeniť vaše používateľské predvoľby a heslo
Comment[sl]=Spremenite uporabniške možnosti in geslo
Comment[sl_SI]=Spremenite uporabniške možnosti in geslo
Comment[sq]=Ndrysho parapëlqimet e përdoruesit dhe fjalëkalimin
Comment[sr]=Промени поставке вашег налога и лозинку
Comment[sr@Latn]=Промени поставке вашег налога и лозинку
Comment[sr@ije]=Промени поставке вашег налога и лозинку
Comment[sr@ijekavianlatin]=Промени поставке вашег налога и лозинку
Comment[sr@latin]=Промени поставке вашег налога и лозинку
Comment[sr_RS]=Промени поставке вашег налога и лозинку
Comment[sr_RS@latin]=Промени поставке вашег налога и лозинку
Comment[sv]=Ändra dina användarinställnigar och lösenord
Comment[tg]=Тағйир додани хусусиятҳо ва пароли корбар
Comment[th]=เปลี่ยนการตั้งค่าผู้ใช้ขั้นสูงและรหัสผ่านของคุณ
Comment[th_TH]=เปลี่ยนการตั้งค่าผู้ใช้ขั้นสูงและรหัสผ่านของคุณ
Comment[tr]=Kullanıcı tercihlerini/haklarını ve şifresini değiştir
Comment[tr_TR]=Kullanıcı tercihlerini/haklarını ve şifresini değiştir
Comment[uk]=Змінити налаштування користувача і гасло
Comment[uk_UA]=Змінити налаштування користувача і гасло
Comment[ur]=اپنی ترجیحات یا پاسورڈ بدلیں
Comment[vi]=Thay đổi tuỳ thích và mật khẩu người dùng của bạn
Comment[vi_VN]=Thay đổi tuỳ thích và mật khẩu người dùng của bạn
Comment[zh_CN]=修改用户设置和密码
Comment[zh_HK]=變更你的使用者喜好設定與密碼
Comment[zh_TW]=變更您的使用者偏好設定與密碼
Keywords=user;account;information;details;
Keywords[am]=የ ተጠቃሚ፡ መግለጫ፡ ዝርዝር፡ መረጃዎች;
Keywords[ar]=مستخدم، حساب، معلومات، تفاصيل;
Keywords[ast]=usuariu;cuenta;información;detalles;
Keywords[be]=карыстальнік;уліковы запіс;інфармацыя;дэталі;
Keywords[be@latin]=карыстальнік;уліковы запіс;інфармацыя;дэталі;
Keywords[be_BY]=карыстальнік;уліковы запіс;інфармацыя;дэталі;
Keywords[bg]=потребител;акаунт;информация;детайли;
Keywords[bg_BG]=потребител;акаунт;информация;детайли;
Keywords[bs]=korisnik;račun;informacija;detalji;
Keywords[ca]=usuari;compte;informació;detalls;
Keywords[ca@valencia]=usuari;compte;informació;detalls;
Keywords[ca_ES]=usuari;compte;informació;detalls;
Keywords[ca_ES@valencia]=usuari;compte;informació;detalls;
Keywords[cs]=uživatel;účet;informace;detaily;
Keywords[cs_CZ]=uživatel;účet;informace;detaily;
Keywords[cy]=defnyddiwr;cyfrif;gwybodaeth;manylion;
Keywords[da]=bruger;konto;information;detaljer;
Keywords[da_DK]=bruger;konto;information;detaljer;
Keywords[de]=Benutzer;Benutzerkonto;Information;Details;
Keywords[de_CH]=Benutzer;Benutzerkonto;Information;Details;
Keywords[de_DE]=Benutzer;Benutzerkonto;Information;Details;
Keywords[el]=χρήστες;λογαριασμοί;χρήστης;πληροφορίες;λεπτομέρειες;λογαριασμός;
Keywords[es]=usuario;cuenta;información;detalles;
Keywords[es_AR]=usuario;cuenta;información;detalles;
Keywords[es_CL]=usuario;cuenta;información;detalles;
Keywords[es_CO]=usuario;cuenta;información;detalles;
Keywords[es_CR]=usuario;cuenta;información;detalles;
Keywords[es_DO]=usuario;cuenta;información;detalles;
Keywords[es_EC]=usuario;cuenta;información;detalles;
Keywords[es_ES]=usuario;cuenta;información;detalles;
Keywords[es_MX]=usuario;cuenta;información;detalles;
Keywords[es_NI]=usuario;cuenta;información;detalles;
Keywords[es_PA]=usuario;cuenta;información;detalles;
Keywords[es_PE]=usuario;cuenta;información;detalles;
Keywords[es_PR]=usuario;cuenta;información;detalles;
Keywords[es_SV]=usuario;cuenta;información;detalles;
Keywords[es_UY]=usuario;cuenta;información;detalles;
Keywords[es_VE]=usuario;cuenta;información;detalles;
Keywords[et]=kasutaja;konto;info; üksikasjad;
Keywords[et_EE]=kasutaja;konto;info; üksikasjad;
Keywords[eu]=erabiltzailea;kontua;informazioa;xehetasunak;
Keywords[fi]=käyttäjä;tili;tieto;yksityiskohdat;
Keywords[fi_FI]=käyttäjä;tili;tieto;yksityiskohdat;
Keywords[fr]=utilisateur;compte;information;détails;
Keywords[fr_CA]=utilisateur;compte;information;détails;
Keywords[fr_FR]=utilisateur;compte;information;détails;
Keywords[fy]=brûker;akkount;ynformaasje;details;
Keywords[gd]=cleachdaiche;cunntas;fiosrachadh;mion-fhiosrachadh;user;account;information;details;
Keywords[gl]=usuario;conta;información;detalles;
Keywords[gl_ES]=usuario;conta;información;detalles;
Keywords[hr]=korisnik;račun;informacije;pojedinosti;
Keywords[hu]=felhasználó;fiók;információ;részletek;
Keywords[hu_HU]=felhasználó;fiók;információ;részletek;
Keywords[ia]=usator;conto;information;detalios;
Keywords[id]=pengguna;akun;informasi;detail;
Keywords[id_ID]=pengguna;akun;informasi;detail;
Keywords[is]=notandi;aðgangur;reikningur;notandaupplýsingar;dnánar;
Keywords[it]=utente;account;informazione;dettagli;
Keywords[it_CH]=utente;account;informazione;dettagli;
Keywords[it_IT]=utente;account;informazione;dettagli;
Keywords[ja]=ユーザ、アカウント、情報、詳細;
Keywords[ja_JP]=ユーザ、アカウント、情報、詳細;
Keywords[ko]=사용자;계정;정보;상세 정보;
Keywords[ko_KR]=사용자;계정;정보;상세 정보;
Keywords[lv]=lietotājs;konts;informācija;detaļas;
Keywords[lv_LV]=lietotājs;konts;informācija;detaļas;
Keywords[ms]=pengguna;akaun;maklumat;perincian;
Keywords[ms_MY]=pengguna;akaun;maklumat;perincian;
Keywords[nb]=bruker;konto;informasjon;detaljer;
Keywords[nb_NO]=bruker;konto;informasjon;detaljer;
Keywords[nds]=Benutzer;Konto;Informationen;Details;
Keywords[nl]=gebruiker;account;informatie;details;
Keywords[nl_NL]=gebruiker;account;informatie;details;
Keywords[om]=fayyadamaa;eenyummeessaa;odeeffannoo;bal'insa;
Keywords[pl]=użytkownik;konto;informacje;szczegóły;
Keywords[pl_PL]=użytkownik;konto;informacje;szczegóły;
Keywords[pt]=utilizadores;contas;informações;detalhes;
Keywords[pt_BR]=usuário;conta;informação;detalhes;
Keywords[pt_PT]=utilizadores;contas;informações;detalhes;
Keywords[ro]=utilizator;cont;informații;detalii;
Keywords[ro_RO]=utilizator;cont;informații;detalii;
Keywords[ru]=пользователь;учётная запись;информация;детали;
Keywords[sk]=užívateľ;účet;informácie;detaily;
Keywords[sk_SK]=užívateľ;účet;informácie;detaily;
Keywords[sl]=uporabnik;račun;podatek;podrobnosti;
Keywords[sl_SI]=uporabnik;račun;podatek;podrobnosti;
Keywords[sq]=përdoruesi;llogaria;informacione;detaje;
Keywords[sr]=корисник;налог;податак;појединости;
Keywords[sr@Latn]=корисник;налог;податак;појединости;
Keywords[sr@ije]=корисник;налог;податак;појединости;
Keywords[sr@ijekavianlatin]=корисник;налог;податак;појединости;
Keywords[sr@latin]=корисник;налог;податак;појединости;
Keywords[sr_RS]=корисник;налог;податак;појединости;
Keywords[sr_RS@latin]=корисник;налог;податак;појединости;
Keywords[sv]=användare;konto;information;detaljer;
Keywords[ta]=பயனர்;கணக்கு;தகவல்;விவரங்கள்;
Keywords[ta_LK]=பயனர்;கணக்கு;தகவல்;விவரங்கள்;
Keywords[tg]=корбар;ҳисоб;иттилоот;тафсилот;
Keywords[th]=ผู้ใช้;บัญชีผู้ใช้;ข้อมูล;รายละเอียด;
Keywords[th_TH]=ผู้ใช้;บัญชีผู้ใช้;ข้อมูล;รายละเอียด;
Keywords[tr]=kullanıcı;hesap;bilgi;ayrıntılar;
Keywords[tr_TR]=kullanıcı;hesap;bilgi;ayrıntılar;
Keywords[uk]=користувач;обліковий запис;інформація;подробиці;
Keywords[uk_UA]=користувач;обліковий запис;інформація;подробиці;
Keywords[ur]=صارف، کھاتے، معلومات و تفصیلات;
Keywords[vi]=người dùng;tài khoản;thông tin;chi tiết;
Keywords[vi_VN]=người dùng;tài khoản;thông tin;chi tiết;
Keywords[zh_CN]=user;account;information;details;用户;帐户;信息;详情;细节;详细;
Keywords[zh_HK]=使用者;帳號;資訊;詳細資料;
Keywords[zh_TW]=使用者;帳號;資訊;詳細資訊;
Cinnamon-3.6.7/files/usr/share/applications/cinnamon-settings-effects.desktop 0000664 0001750 0001750 00000034634 13215735076 026413 0 ustar fabio fabio [Desktop Entry]
Icon=cs-desktop-effects
Exec=cinnamon-settings effects
Type=Application
OnlyShowIn=X-Cinnamon;
Categories=Settings;
Name=Effects
Name[am]=ውጤቶች
Name[ar]=تأثيرات
Name[ast]=Efeutos
Name[be]=Спецэфекты
Name[be@latin]=Спецэфекты
Name[be_BY]=Спецэфекты
Name[bg]=Ефекти
Name[bg_BG]=Ефекти
Name[bs]=Efekti
Name[ca]=Efectes
Name[ca@valencia]=Efectes
Name[ca_ES]=Efectes
Name[ca_ES@valencia]=Efectes
Name[cs]=Efekty
Name[cs_CZ]=Efekty
Name[cy]=Effeithiau
Name[da]=Effekter
Name[da_DK]=Effekter
Name[de]=Effekte
Name[de_CH]=Effekte
Name[de_DE]=Effekte
Name[el]=Εφέ
Name[eo]=Efektoj
Name[es]=Efectos
Name[es_AR]=Efectos
Name[es_CL]=Efectos
Name[es_CO]=Efectos
Name[es_CR]=Efectos
Name[es_DO]=Efectos
Name[es_EC]=Efectos
Name[es_ES]=Efectos
Name[es_MX]=Efectos
Name[es_NI]=Efectos
Name[es_PA]=Efectos
Name[es_PE]=Efectos
Name[es_PR]=Efectos
Name[es_SV]=Efectos
Name[es_UY]=Efectos
Name[es_VE]=Efectos
Name[et]=Efektid
Name[et_EE]=Efektid
Name[eu]=Efektuak
Name[fa]=جلوهها
Name[fa_AF]=جلوهها
Name[fa_IR]=جلوهها
Name[fi]=Tehosteet
Name[fi_FI]=Tehosteet
Name[fr]=Effets
Name[fr_CA]=Effets
Name[fr_FR]=Effets
Name[ga]=Maisíochtaí
Name[gd]=Èifeachdan
Name[gl]=Efectos
Name[gl_ES]=Efectos
Name[hr]=Efekti
Name[hu]=Effektusok
Name[hu_HU]=Effektusok
Name[ia]=Effectos
Name[id]=Efek
Name[id_ID]=Efek
Name[is]=Viðmótsbrellur
Name[it]=Effetti
Name[it_CH]=Effetti
Name[it_IT]=Effetti
Name[ja]=効果
Name[ja_JP]=効果
Name[kab]=Isemda
Name[ko]=효과
Name[ko_KR]=효과
Name[lo]=ເອັບເຟັກ
Name[lo_LA]=ເອັບເຟັກ
Name[lt]=Efektai
Name[lt_LT]=Efektai
Name[lv]=Efekti
Name[lv_LV]=Efekti
Name[ms]=Kesan
Name[ms_MY]=Kesan
Name[nb]=Effekter
Name[nb_NO]=Effekter
Name[nds]=Effekte
Name[nl]=Effecten
Name[nl_NL]=Effecten
Name[oc]=Efièits
Name[om]=galteelee
Name[pa]=ਪ੍ਰਭਾਵ
Name[pl]=Efekty
Name[pl_PL]=Efekty
Name[pt]=Efeitos
Name[pt_BR]=Efeitos
Name[pt_PT]=Efeitos
Name[ro]=Efecte
Name[ro_RO]=Efecte
Name[ru]=Эффекты
Name[sk]=Efekty
Name[sk_SK]=Efekty
Name[sl]=Učinki
Name[sl_SI]=Učinki
Name[sq]=Efektet
Name[sr]=Дејства
Name[sr@Latn]=Дејства
Name[sr@ije]=Дејства
Name[sr@ijekavianlatin]=Дејства
Name[sr@latin]=Дејства
Name[sr_RS]=Дејства
Name[sr_RS@latin]=Дејства
Name[sv]=Effekter
Name[ta]=விளைவுகள்
Name[ta_LK]=விளைவுகள்
Name[tg]=Таъсирҳо
Name[th]=ลูกเล่น
Name[th_TH]=ลูกเล่น
Name[tr]=Efektler
Name[tr_TR]=Efektler
Name[uk]=Ефекти
Name[uk_UA]=Ефекти
Name[ur]=اثرات
Name[vi]=Hiệu ứng
Name[vi_VN]=Hiệu ứng
Name[zh_CN]=特效
Name[zh_HK]=效果
Name[zh_TW]=效果
Comment=Control Cinnamon visual effects.
Comment[am]=የ ሲናሞን መመልከቻ ውጤቶች መቆጣጠሪያ
Comment[ar]=التحكم في تأثيرات سينامُن المرئية.
Comment[be]=Кіраванне візуальнымі эфектамі Cinnamon
Comment[be@latin]=Кіраванне візуальнымі эфектамі Cinnamon
Comment[be_BY]=Кіраванне візуальнымі эфектамі Cinnamon
Comment[bg]=Контролиране на визуалните ефекти на Cinnamon
Comment[bg_BG]=Контролиране на визуалните ефекти на Cinnamon
Comment[bs]=Upravljaj Cinnamon vizuelnim efektima
Comment[ca]=Controleu els efectes visuals de Cinnamon.
Comment[ca@valencia]=Configurar efectes visuals de Cinnamon
Comment[ca_ES]=Controleu els efectes visuals de Cinnamon.
Comment[ca_ES@valencia]=Configurar efectes visuals de Cinnamon
Comment[cs]=Nastavení Cinnamon vizuálních efektů
Comment[cs_CZ]=Nastavení Cinnamon vizuálních efektů
Comment[cy]=Rheolwch effeitiau gwledol Cinnamon,
Comment[da]=Kontrollér Cinnamons visuelle effekter
Comment[da_DK]=Kontrollér Cinnamons visuelle effekter
Comment[de]=Cinnamons visuelle Effekte steuern.
Comment[de_CH]=Cinnamons visuelle Effekte steuern.
Comment[de_DE]=Cinnamons visuelle Effekte steuern.
Comment[el]=Ρυθμίστε τα οπτικά εφέ του Cinnamon
Comment[es]=Configurar efectos visuales de Cinnamon
Comment[es_AR]=Configurar efectos visuales de Cinnamon
Comment[es_CL]=Configurar efectos visuales de Cinnamon
Comment[es_CO]=Configurar efectos visuales de Cinnamon
Comment[es_CR]=Configurar efectos visuales de Cinnamon
Comment[es_DO]=Configurar efectos visuales de Cinnamon
Comment[es_EC]=Configurar efectos visuales de Cinnamon
Comment[es_ES]=Configurar efectos visuales de Cinnamon
Comment[es_MX]=Configurar efectos visuales de Cinnamon
Comment[es_NI]=Configurar efectos visuales de Cinnamon
Comment[es_PA]=Configurar efectos visuales de Cinnamon
Comment[es_PE]=Configurar efectos visuales de Cinnamon
Comment[es_PR]=Configurar efectos visuales de Cinnamon
Comment[es_SV]=Configurar efectos visuales de Cinnamon
Comment[es_UY]=Configurar efectos visuales de Cinnamon
Comment[es_VE]=Configurar efectos visuales de Cinnamon
Comment[eu]=Kontrolatu Cinnamonen efektu bisualak
Comment[fa]=جلوههای تصویری سینمون را کنترل کنید.
Comment[fa_AF]=جلوههای تصویری سینمون را کنترل کنید.
Comment[fa_IR]=جلوههای تصویری سینمون را کنترل کنید.
Comment[fi]=Hallitse Cinnamonin ilmettä.
Comment[fi_FI]=Hallitse Cinnamonin ilmettä.
Comment[fr]=Gérez les effets visuels de Cinnamon
Comment[fr_CA]=Contrôler les effets visuels de Cinnamon
Comment[fr_FR]=Gérez les effets visuels de Cinnamon
Comment[gd]=Stiùirich èifeachdan lèirsinneach Cinnamon.
Comment[gl]=Control dos efectos visuais de Cinnamon.
Comment[gl_ES]=Control dos efectos visuais de Cinnamon.
Comment[hr]=Upravljajte Cinnamon vizualnim efektima.
Comment[hu]=Cinnamon vizuális effektusok beállítása
Comment[hu_HU]=Cinnamon vizuális effektusok beállítása
Comment[ia]=Controlar le effectos visual de Cinnamon.
Comment[id]=Atur efek visual Cinnamon
Comment[id_ID]=Atur efek visual Cinnamon
Comment[is]=Stýra viðmótsbrellum í Cinnamon.
Comment[it]=Controllo effetti grafici di Cinnamon
Comment[it_CH]=Controllo effetti grafici di Cinnamon
Comment[it_IT]=Controllo effetti grafici di Cinnamon
Comment[ja]=Cinnamon ビジュアルエフェクトコントロール
Comment[ja_JP]=Cinnamon ビジュアルエフェクトコントロール
Comment[ko]=시나몬 비주얼 효과를 조절합니다.
Comment[ko_KR]=시나몬 비주얼 효과를 조절합니다.
Comment[lo]=ຈັດການ Cinnamon visual effects.
Comment[lo_LA]=ຈັດການ Cinnamon visual effects.
Comment[lt]=Valdyti Cinnamon vaizdo efektus.
Comment[lt_LT]=Valdyti Cinnamon vaizdo efektus.
Comment[lv]=Pārvaldīt Cinnamon vizuālos efektus.
Comment[lv_LV]=Pārvaldīt Cinnamon vizuālos efektus.
Comment[ms]=Kawalan kesan visual Cinnamon
Comment[ms_MY]=Kawalan kesan visual Cinnamon
Comment[nb]=Styr Cinnamons visuelle effekter
Comment[nb_NO]=Styr Cinnamons visuelle effekter
Comment[nds]=Cinnamons Visuelle Effekte bearbeiten
Comment[nl]=Visuele effecten van Cinnamon beheren.
Comment[nl_NL]=Visuele effecten van Cinnamon beheren.
Comment[pl]=Kontroluj efekty wizualne Cinnamona.
Comment[pl_PL]=Kontroluj efekty wizualne Cinnamona.
Comment[pt]=Controle os efeitos visuais do Cinnamon.
Comment[pt_BR]=Controle os efeitos visuais do Cinnamon
Comment[pt_PT]=Controle os efeitos visuais do Cinnamon.
Comment[ro]=Controlează efectele vizuale Cinnamon.
Comment[ro_RO]=Controlează efectele vizuale Cinnamon.
Comment[ru]=Управление визуальными эффектами Cinnamon.
Comment[sk]=Kontrolovať vizuálne efekty Cinnamon
Comment[sk_SK]=Kontrolovať vizuálne efekty Cinnamon
Comment[sl]=Upravljajte z vidnimi učinki Cinnamona
Comment[sl_SI]=Upravljajte z vidnimi učinki Cinnamona
Comment[sq]=Efektet vizuale të Cinnamon.
Comment[sr]=Управљање видним дејствима површи Цимета.
Comment[sr@Latn]=Управљање видним дејствима површи Цимета.
Comment[sr@ije]=Управљање видним дејствима површи Цимета.
Comment[sr@ijekavianlatin]=Управљање видним дејствима површи Цимета.
Comment[sr@latin]=Управљање видним дејствима површи Цимета.
Comment[sr_RS]=Управљање видним дејствима површи Цимета.
Comment[sr_RS@latin]=Управљање видним дејствима површи Цимета.
Comment[sv]=Styr Cinnamons visuella effekter.
Comment[tg]=Идоракунии таъсирҳои визуалии Cinnamon
Comment[th]=ควบคุมผลภาพ Cinnamon
Comment[th_TH]=ควบคุมผลภาพ Cinnamon
Comment[tr]=Cinnamon görsel efektlerini kontrol et
Comment[tr_TR]=Cinnamon görsel efektlerini kontrol et
Comment[uk]=Керування наочними ефектами Cinnamon
Comment[uk_UA]=Керування наочними ефектами Cinnamon
Comment[ur]=سنامون کے نمائشی تاثرات کو کنٹرول کریں
Comment[vi]=Điều khiển hiệu ứng trực quan Cinnamon.
Comment[vi_VN]=Điều khiển hiệu ứng trực quan Cinnamon.
Comment[zh_CN]=控制 Cinnamon 显示特效。
Comment[zh_HK]=控制 Cinnamon 視覺效果。
Comment[zh_TW]=管理 Cinnamon 視覺效果。
Keywords=effects;fancy;window;
Keywords[ar]=تأثيرات ، فاخر ، نافذة;
Keywords[be]=эфекты;фантазія;акно;
Keywords[be@latin]=эфекты;фантазія;акно;
Keywords[be_BY]=эфекты;фантазія;акно;
Keywords[bg]=ефекти;декорации;прозорец;
Keywords[bg_BG]=ефекти;декорации;прозорец;
Keywords[bs]=efekti;fantazija;prozor;
Keywords[ca]=efectes;fantasia;finestra;
Keywords[ca@valencia]=efectes;decoració;finestra;
Keywords[ca_ES]=efectes;fantasia;finestra;
Keywords[ca_ES@valencia]=efectes;decoració;finestra;
Keywords[cs]=efekty;fantazie;okna;
Keywords[cs_CZ]=efekty;fantazie;okna;
Keywords[cy]=effeithiau;ffansi;ffenestr;
Keywords[da]=effekter;smart;vindue;
Keywords[da_DK]=effekter;smart;vindue;
Keywords[de]=Effekte;Geschnörkel;Dekoration;Fenster;
Keywords[de_CH]=Effekte;Geschnörkel;Dekoration;Fenster;
Keywords[de_DE]=Effekte;Geschnörkel;Dekoration;Fenster;
Keywords[el]=εφέ;παράθυρο;παράθυρα;
Keywords[es]=efectos;fantasía;ventana;
Keywords[es_AR]=efectos;fantasía;ventana;
Keywords[es_CL]=efectos;fantasía;ventana;
Keywords[es_CO]=efectos;fantasía;ventana;
Keywords[es_CR]=efectos;fantasía;ventana;
Keywords[es_DO]=efectos;fantasía;ventana;
Keywords[es_EC]=efectos;fantasía;ventana;
Keywords[es_ES]=efectos;fantasía;ventana;
Keywords[es_MX]=efectos;fantasía;ventana;
Keywords[es_NI]=efectos;fantasía;ventana;
Keywords[es_PA]=efectos;fantasía;ventana;
Keywords[es_PE]=efectos;fantasía;ventana;
Keywords[es_PR]=efectos;fantasía;ventana;
Keywords[es_SV]=efectos;fantasía;ventana;
Keywords[es_UY]=efectos;fantasía;ventana;
Keywords[es_VE]=efectos;fantasía;ventana;
Keywords[eu]=efektuak;dotore;leihoa;
Keywords[fa]=جلوهها، تصویر، پنجره;
Keywords[fa_AF]=جلوهها، تصویر، پنجره;
Keywords[fa_IR]=جلوهها، تصویر، پنجره;
Keywords[fi]=tehosteet;koristeellinen;ikkuna;
Keywords[fi_FI]=tehosteet;koristeellinen;ikkuna;
Keywords[fr]=effets;fantaisie;fenêtre;
Keywords[fr_CA]=effets;fantaisie;fenêtre;
Keywords[fr_FR]=effets;fantaisie;fenêtre;
Keywords[ga]=maisíochtaí;galanta;fuinneoga;
Keywords[gd]=buaidhean;èifeachdan;leòmach;uinneag;effects;fancy;window;
Keywords[gl]=efectos;fantasía;xanela;
Keywords[gl_ES]=efectos;fantasía;xanela;
Keywords[hr]=efekti;ukrašeno;prozor;
Keywords[hu]=effektusok;díszes;ablak;
Keywords[hu_HU]=effektusok;díszes;ablak;
Keywords[ia]=effectos;eccentric;fenestra;
Keywords[id]=efek;kesenangan;jendela;
Keywords[id_ID]=efek;kesenangan;jendela;
Keywords[is]=brellur;skraut;gluggi;
Keywords[it]=effetti;fantasia;finestra;
Keywords[it_CH]=effetti;fantasia;finestra;
Keywords[it_IT]=effetti;fantasia;finestra;
Keywords[ja]=効果、ファンシー、ウィンドウ;
Keywords[ja_JP]=効果、ファンシー、ウィンドウ;
Keywords[ko]=효과;팬시;창;
Keywords[ko_KR]=효과;팬시;창;
Keywords[lo]=ເອັບເຟັກ;fancy;ໜ້າຕ່າງ;
Keywords[lo_LA]=ເອັບເຟັກ;fancy;ໜ້າຕ່າງ;
Keywords[lt]=efektai;papuošimai;langas;
Keywords[lt_LT]=efektai;papuošimai;langas;
Keywords[lv]=efekti;moderns;logs;
Keywords[lv_LV]=efekti;moderns;logs;
Keywords[ms]=kesan;ragam;tetingkap;
Keywords[ms_MY]=kesan;ragam;tetingkap;
Keywords[nb]=effekter;fiffig;vindu;
Keywords[nb_NO]=effekter;fiffig;vindu;
Keywords[nds]=Effekte;Fantasie;Fenster;
Keywords[nl]=effecten;verfraaid;venster;
Keywords[nl_NL]=effecten;verfraaid;venster;
Keywords[om]=galteelee;miidhagaa;foddaa;
Keywords[pl]=efekty;fantazyjne;okno;
Keywords[pl_PL]=efekty;fantazyjne;okno;
Keywords[pt]=efeitos;especiais;janela;
Keywords[pt_BR]=efeitos;estilos;janela;
Keywords[pt_PT]=efeitos;especiais;janela;
Keywords[ro]=efecte;fantezie;fereastră;
Keywords[ro_RO]=efecte;fantezie;fereastră;
Keywords[ru]=эффекты;фантазия;окно;
Keywords[sk]=efekty;fantázia;okná;
Keywords[sk_SK]=efekty;fantázia;okná;
Keywords[sl]=učinki;modno;okno;
Keywords[sl_SI]=učinki;modno;okno;
Keywords[sq]=efektet;zbukuruar;dritarja;
Keywords[sr]=утисци;прозор;лепо;;
Keywords[sr@Latn]=утисци;прозор;лепо;;
Keywords[sr@ije]=утисци;прозор;лепо;;
Keywords[sr@ijekavianlatin]=утисци;прозор;лепо;;
Keywords[sr@latin]=утисци;прозор;лепо;;
Keywords[sr_RS]=утисци;прозор;лепо;;
Keywords[sr_RS@latin]=утисци;прозор;лепо;;
Keywords[sv]=effekter;infall;fönster;
Keywords[ta]=விளைவுகள்;பகட்டு;சாளரம்;
Keywords[ta_LK]=விளைவுகள்;பகட்டு;சாளரம்;
Keywords[tg]=таъсирҳо;ҳаёл;равзана;
Keywords[th]=ลักษณะพิเศษ;แฟนซี;หน้าต่าง;
Keywords[th_TH]=ลักษณะพิเศษ;แฟนซี;หน้าต่าง;
Keywords[tr]=efekt;imge;pencere;
Keywords[tr_TR]=efekt;imge;pencere;
Keywords[uk]=ефекти;фантазія;вікно;
Keywords[uk_UA]=ефекти;фантазія;вікно;
Keywords[ur]=اثرات، فینسی(fancy)، ونڈو;
Keywords[vi]=hiệu ứng;đẹp đẽ;cửa sổ;
Keywords[vi_VN]=hiệu ứng;đẹp đẽ;cửa sổ;
Keywords[zh_CN]=effects;fancy;window;效果;特效;窗口;
Keywords[zh_HK]=效果;花式;視窗;
Keywords[zh_TW]=效果;花樣;視窗;
Cinnamon-3.6.7/files/usr/share/applications/cinnamon-settings-screensaver.desktop 0000664 0001750 0001750 00000042423 13215735076 027307 0 ustar fabio fabio [Desktop Entry]
Icon=cs-screensaver
Exec=cinnamon-settings screensaver
Type=Application
OnlyShowIn=X-Cinnamon;
Categories=Settings;
Name=Screensaver
Name[am]=መመልከቻ ማዳኛ
Name[ar]=شاشة التوقف
Name[bg]=Предпазител на екрана
Name[bg_BG]=Предпазител на екрана
Name[ca]=Estalvi de pantalla
Name[ca@valencia]=Estalvi de pantalla
Name[ca_ES]=Estalvi de pantalla
Name[ca_ES@valencia]=Estalvi de pantalla
Name[cs]=Šetřič obrazovky
Name[cs_CZ]=Šetřič obrazovky
Name[cy]=Arbedwr sgrin
Name[da]=Pauseskærm
Name[da_DK]=Pauseskærm
Name[de]=Bildschirmschoner
Name[de_CH]=Bildschirmschoner
Name[de_DE]=Bildschirmschoner
Name[el]=Προφύλαξη οθόνης
Name[eo]=Ekrankurteno
Name[es]=Salvapantallas
Name[es_AR]=Salvapantallas
Name[es_CL]=Salvapantallas
Name[es_CO]=Salvapantallas
Name[es_CR]=Salvapantallas
Name[es_DO]=Salvapantallas
Name[es_EC]=Salvapantallas
Name[es_ES]=Salvapantallas
Name[es_MX]=Salvapantallas
Name[es_NI]=Salvapantallas
Name[es_PA]=Salvapantallas
Name[es_PE]=Salvapantallas
Name[es_PR]=Salvapantallas
Name[es_SV]=Salvapantallas
Name[es_UY]=Salvapantallas
Name[es_VE]=Salvapantallas
Name[eu]=Pantaila-babeslea
Name[fi]=Näytönsäästäjä
Name[fi_FI]=Näytönsäästäjä
Name[fr]=Économiseur d'écran
Name[fr_CA]=Économiseur d'écran
Name[fr_FR]=Économiseur d'écran
Name[gd]=Sàbhalaiche-sgrìn
Name[gl]=Protector de pantalla
Name[gl_ES]=Protector de pantalla
Name[hr]=Čuvar zaslona
Name[hu]=Képernyővédő
Name[hu_HU]=Képernyővédő
Name[ia]=Salva schermo
Name[is]=Skjáhvíla
Name[it]=Salvaschermo
Name[it_CH]=Salvaschermo
Name[it_IT]=Salvaschermo
Name[ja]=スクリーンセーバー
Name[ja_JP]=スクリーンセーバー
Name[kab]=Agdil n usuḍes
Name[ko]=화면 보호기
Name[ko_KR]=화면 보호기
Name[lt]=Ekrano užsklanda
Name[lt_LT]=Ekrano užsklanda
Name[ms]=Penjimat Skrin
Name[ms_MY]=Penjimat Skrin
Name[nb]=Skjermsparer
Name[nb_NO]=Skjermsparer
Name[nds]=Bildschirmschoner
Name[nl]=Schermbeveiliging
Name[nl_NL]=Schermbeveiliging
Name[oc]=Estalviador d'ecran
Name[pl]=Wygaszacz ekranu
Name[pl_PL]=Wygaszacz ekranu
Name[pt]=Proteção de ecrã
Name[pt_BR]=Proteção de Tela
Name[pt_PT]=Proteção de ecrã
Name[ro]=Protector ecran
Name[ro_RO]=Protector ecran
Name[ru]=Экранная заставка
Name[sk]=Šetrič obrazovky
Name[sk_SK]=Šetrič obrazovky
Name[sq]=Ruajtës ekrani
Name[sr]=Чувар екрана
Name[sr@Latn]=Чувар екрана
Name[sr@ije]=Чувар екрана
Name[sr@ijekavianlatin]=Чувар екрана
Name[sr@latin]=Чувар екрана
Name[sr_RS]=Чувар екрана
Name[sr_RS@latin]=Чувар екрана
Name[sv]=Skärmsläckare
Name[th]=โปรแกรมรักษาหน้าจอ
Name[th_TH]=โปรแกรมรักษาหน้าจอ
Name[tr]=Ekran koruyucu
Name[tr_TR]=Ekran koruyucu
Name[uk]=Зберігач екрану
Name[uk_UA]=Зберігач екрану
Name[ur]=سکرین سیور
Name[vi]=Trình bảo vệ màn hình
Name[vi_VN]=Trình bảo vệ màn hình
Name[zh_CN]=屏幕保护程序
Name[zh_HK]=熒幕保護程式
Name[zh_TW]=螢幕保護程式
Comment=Manage screen lock settings
Comment[am]=የመመልከቻ መቆለፊያ ማሰናጃ አስተዳዳሪ
Comment[ar]=إدارة إعدادات قفل الشاشة
Comment[ast]=Axustes del alministrador de bloquéu de pantalla
Comment[be]=Кіраванне параметрамі блакiравання экрана
Comment[be@latin]=Кіраванне параметрамі блакiравання экрана
Comment[be_BY]=Кіраванне параметрамі блакiравання экрана
Comment[bg]=Управление на настройките за заключване на екрана
Comment[bg_BG]=Управление на настройките за заключване на екрана
Comment[bs]=Upravljaj postavkama zaključavanja ekrana
Comment[ca]=Gestioneu la configuració del bloqueig de pantalla
Comment[ca@valencia]=Configura bloqueig de pantalla
Comment[ca_ES]=Gestioneu la configuració del bloqueig de pantalla
Comment[ca_ES@valencia]=Configura bloqueig de pantalla
Comment[cs]=Nastavení zamykací obrazovky
Comment[cs_CZ]=Nastavení zamykací obrazovky
Comment[cy]=Rheoli gosodiadau cloi'r sgrin
Comment[da]=Administrér skærmlåsindstillinger
Comment[da_DK]=Administrér skærmlåsindstillinger
Comment[de]=Einstellungen der Bildschirmsperre verwalten
Comment[de_CH]=Einstellungen der Bildschirmsperre verwalten
Comment[de_DE]=Einstellungen der Bildschirmsperre verwalten
Comment[el]=Διαχείριση ρυθμίσεων κλειδώματος οθόνης
Comment[es]=Configurar bloqueo de pantalla
Comment[es_AR]=Configurar bloqueo de pantalla
Comment[es_CL]=Configurar bloqueo de pantalla
Comment[es_CO]=Configurar bloqueo de pantalla
Comment[es_CR]=Configurar bloqueo de pantalla
Comment[es_DO]=Configurar bloqueo de pantalla
Comment[es_EC]=Configurar bloqueo de pantalla
Comment[es_ES]=Configurar bloqueo de pantalla
Comment[es_MX]=Configurar bloqueo de pantalla
Comment[es_NI]=Configurar bloqueo de pantalla
Comment[es_PA]=Configurar bloqueo de pantalla
Comment[es_PE]=Configurar bloqueo de pantalla
Comment[es_PR]=Configurar bloqueo de pantalla
Comment[es_SV]=Configurar bloqueo de pantalla
Comment[es_UY]=Configurar bloqueo de pantalla
Comment[es_VE]=Configurar bloqueo de pantalla
Comment[eu]=Kudeatu pantaila blokeatzearen ezarpenak
Comment[fi]=Muokkaa näytön lukituksen asetuksia
Comment[fi_FI]=Muokkaa näytön lukituksen asetuksia
Comment[fr]=Gérer les paramètres de verrouillage d'écran
Comment[fr_CA]=Gérer les paramètres de verrouillage d'écran
Comment[fr_FR]=Gérer les paramètres de verrouillage d'écran
Comment[gd]=Stiùirich roghainnean glasaidh na sgrìn
Comment[gl]=Administra os axustes do bloqueo de pantalla
Comment[gl_ES]=Administra os axustes do bloqueo de pantalla
Comment[hr]=Upravljajte postavkama zaključavanja zaslona
Comment[hu]=Képernyőzárolás beállítások kezelése
Comment[hu_HU]=Képernyőzárolás beállítások kezelése
Comment[ia]=Gerer le preferentias de loco de schermo
Comment[id]=Mengatur setelan kunci layar
Comment[id_ID]=Mengatur setelan kunci layar
Comment[is]=Sýsla með stillingar skjálæsingar
Comment[it]=Gestisci impostazioni di blocco dello schermo
Comment[it_CH]=Gestisci impostazioni di blocco dello schermo
Comment[it_IT]=Gestisci impostazioni di blocco dello schermo
Comment[ja]=スクリーンロック管理の設定
Comment[ja_JP]=スクリーンロック管理の設定
Comment[ko]=화면 잠금 설정
Comment[ko_KR]=화면 잠금 설정
Comment[lt]=Tvarkyti ekrano užrakto nustatymus
Comment[lt_LT]=Tvarkyti ekrano užrakto nustatymus
Comment[lv]=Pārvaldīt ekrāna bloķēšanas uzstādījumus
Comment[lv_LV]=Pārvaldīt ekrāna bloķēšanas uzstādījumus
Comment[ms]=Mengurus tetapan kunci skrin
Comment[ms_MY]=Mengurus tetapan kunci skrin
Comment[nb]=Håndter innstillinger for skjermlås
Comment[nb_NO]=Håndter innstillinger for skjermlås
Comment[nds]=Bildschirmsperren-Einstellungen bearbeiten
Comment[nl]=Instellingen voor schermvergrendeling beheren
Comment[nl_NL]=Instellingen voor schermvergrendeling beheren
Comment[oc]=Gerir los paramètres de verrolhatge d'ecran
Comment[pl]=Zarządzaj ustawieniami blokady ekranu
Comment[pl_PL]=Zarządzaj ustawieniami blokady ekranu
Comment[pt]=Gerir definições de bloqueio de ecrã
Comment[pt_BR]=Gerenciar configurações de bloqueio de tela
Comment[pt_PT]=Gerir definições de bloqueio de ecrã
Comment[ro]=Gestionează setările blocării ecranului
Comment[ro_RO]=Gestionează setările blocării ecranului
Comment[ru]=Настройка блокировки экрана
Comment[sk]=Spravovať nastavenia uzamykania obrazovky
Comment[sk_SK]=Spravovať nastavenia uzamykania obrazovky
Comment[sl]=Upravljajte z nastavitvami zaklepa zaslona
Comment[sl_SI]=Upravljajte z nastavitvami zaklepa zaslona
Comment[sq]=Menaxhoni parametrat e bllokimit të ekranit
Comment[sr]=Управљање поставкама закључавања екрана
Comment[sr@Latn]=Управљање поставкама закључавања екрана
Comment[sr@ije]=Управљање поставкама закључавања екрана
Comment[sr@ijekavianlatin]=Управљање поставкама закључавања екрана
Comment[sr@latin]=Управљање поставкама закључавања екрана
Comment[sr_RS]=Управљање поставкама закључавања екрана
Comment[sr_RS@latin]=Управљање поставкама закључавања екрана
Comment[sv]=Hantera skärmlåsinställningar
Comment[tg]=Идоракунии танзимоти қулфи экран
Comment[th]=จัดการการตั้งค่าการล็อกหน้าจอ
Comment[th_TH]=จัดการการตั้งค่าการล็อกหน้าจอ
Comment[tr]=Ekran kilidi seçeneklerini yönet
Comment[tr_TR]=Ekran kilidi seçeneklerini yönet
Comment[uk]=Керування налаштуваннями блокування екрану
Comment[uk_UA]=Керування налаштуваннями блокування екрану
Comment[ur]=سکرین قفل کی ترتیبات کا انتظام
Comment[vi]=QUản lý thiết đặt khoá màn hình
Comment[vi_VN]=QUản lý thiết đặt khoá màn hình
Comment[zh_CN]=管理锁屏设置
Comment[zh_HK]=管理熒幕鎖定設定
Comment[zh_TW]=管理螢幕鎖定設定
Keywords=screensaver;lock;password;away;message;
Keywords[am]=መመልከቻውን ማዳኛ፡ መቆለፊያ፡ የነግቢያ ቃል፡ የለሁም፡ መልእክት;
Keywords[ar]=شاشة التوقف، والقفل، كلمة السر، بعيدا، رسالة;
Keywords[ast]=curiapantalles;bloquiar;contraseña;ausencia;mensaxe;
Keywords[be]=застаўка;блакiраванне;пароль;назад;паведамленне;
Keywords[be@latin]=застаўка;блакiраванне;пароль;назад;паведамленне;
Keywords[be_BY]=застаўка;блакiраванне;пароль;назад;паведамленне;
Keywords[bg]=предпазител на екрана;заключване;парола;нямя ме;съобщение;
Keywords[bg_BG]=предпазител на екрана;заключване;парола;нямя ме;съобщение;
Keywords[bs]=čuvar ekrana;zaključavanje;šifra;odsutan;poruka;
Keywords[ca]=estalvi de pantalla;bloqueig;contrasenya;absent;missatge;
Keywords[ca@valencia]=salvapantallas;bloqueo;contraseña;ausente;mensaje;
Keywords[ca_ES]=estalvi de pantalla;bloqueig;contrasenya;absent;missatge;
Keywords[ca_ES@valencia]=salvapantallas;bloqueo;contraseña;ausente;mensaje;
Keywords[cs]=spořič;zámek;heslo;nepřítomnost;zpráva;
Keywords[cs_CZ]=spořič;zámek;heslo;nepřítomnost;zpráva;
Keywords[cy]=arbedwr sgrin;clo;cyfrinair;i ffwrdd;neges;
Keywords[da]=pauseskærm;lås;adgangskode;fraværende;besked;
Keywords[da_DK]=pauseskærm;lås;adgangskode;fraværende;besked;
Keywords[de]=screensaver;lock;password;away;message;Bildschirmschoner;Sperre;Passwort;Abwesenheit;Nachricht;
Keywords[de_CH]=screensaver;lock;password;away;message;Bildschirmschoner;Sperre;Passwort;Abwesenheit;Nachricht;
Keywords[de_DE]=screensaver;lock;password;away;message;Bildschirmschoner;Sperre;Passwort;Abwesenheit;Nachricht;
Keywords[el]=προφύλαξη οθόνης;κλείδωμα;κωδικός πρόσβασης;μακριά;μήνυμα;
Keywords[es]=salvapantallas;bloqueo;contraseña;ausente;mensaje;
Keywords[es_AR]=salvapantallas;bloqueo;contraseña;ausente;mensaje;
Keywords[es_CL]=salvapantallas;bloqueo;contraseña;ausente;mensaje;
Keywords[es_CO]=salvapantallas;bloqueo;contraseña;ausente;mensaje;
Keywords[es_CR]=salvapantallas;bloqueo;contraseña;ausente;mensaje;
Keywords[es_DO]=salvapantallas;bloqueo;contraseña;ausente;mensaje;
Keywords[es_EC]=salvapantallas;bloqueo;contraseña;ausente;mensaje;
Keywords[es_ES]=salvapantallas;bloqueo;contraseña;ausente;mensaje;
Keywords[es_MX]=salvapantallas;bloqueo;contraseña;ausente;mensaje;
Keywords[es_NI]=salvapantallas;bloqueo;contraseña;ausente;mensaje;
Keywords[es_PA]=salvapantallas;bloqueo;contraseña;ausente;mensaje;
Keywords[es_PE]=salvapantallas;bloqueo;contraseña;ausente;mensaje;
Keywords[es_PR]=salvapantallas;bloqueo;contraseña;ausente;mensaje;
Keywords[es_SV]=salvapantallas;bloqueo;contraseña;ausente;mensaje;
Keywords[es_UY]=salvapantallas;bloqueo;contraseña;ausente;mensaje;
Keywords[es_VE]=salvapantallas;bloqueo;contraseña;ausente;mensaje;
Keywords[eu]=pantaila-babeslea;blokeatu;pasahitza;kanpoan;mezua;
Keywords[fi]=näytönsäästäjä;lukitus;salasana;poissa;viesti;
Keywords[fi_FI]=näytönsäästäjä;lukitus;salasana;poissa;viesti;
Keywords[fr]=écran de veille;verrouillage;mot de passe;absent;message;
Keywords[fr_CA]=écran de veille;verrouillage;mot de passe;absent;message;
Keywords[fr_FR]=écran de veille;verrouillage;mot de passe;absent;message;
Keywords[gd]=screensaver;lock;password;away;message;sàbhalaiche-sgrìn;glas;glais;glasadh;facal-faire;air falbh;teachdaireachd;
Keywords[gl]=protector de pantalla;bloqueo;contrasinal;ausente;mensaxe;
Keywords[gl_ES]=protector de pantalla;bloqueo;contrasinal;ausente;mensaxe;
Keywords[hr]=čuvar zaslona;zaključaj;lozinka;odsutan;poruka;
Keywords[hu]=képernyővédő;lezárás;jelszó;nincs a gépnél;távol;üzenet;
Keywords[hu_HU]=képernyővédő;lezárás;jelszó;nincs a gépnél;távol;üzenet;
Keywords[ia]=lanceamento initial;programmas;lanceamento initial;init;session;
Keywords[id]=screensaver;kunci;kata sandi;diluar;pesan;
Keywords[id_ID]=screensaver;kunci;kata sandi;diluar;pesan;
Keywords[is]=skjáhvíla;læsing;lykilorð;fjarvera;skilaboð;
Keywords[it]=Screensaver;Blocca;Password;Assenza;Messaggio;
Keywords[it_CH]=Screensaver;Blocca;Password;Assenza;Messaggio;
Keywords[it_IT]=Screensaver;Blocca;Password;Assenza;Messaggio;
Keywords[kab]=agdil n usuḍes;sekker;awal uffir;yugeg;izen;
Keywords[ko]=화면 보호기;잠금;비밀번호;외출중;메시지;
Keywords[ko_KR]=화면 보호기;잠금;비밀번호;외출중;메시지;
Keywords[lv]=ekrānsaudzētājs;slēgt;parole;prom;ziņa;
Keywords[lv_LV]=ekrānsaudzētājs;slēgt;parole;prom;ziņa;
Keywords[ms]=penjimat skrin;kunci;kata laluan;jauh;mesej;
Keywords[ms_MY]=penjimat skrin;kunci;kata laluan;jauh;mesej;
Keywords[nb]=skjermsparer;lås;passord;borte;beskjed;
Keywords[nb_NO]=skjermsparer;lås;passord;borte;beskjed;
Keywords[nds]=Bildschirmschoner;Sperre;Passwort;weg;Nachricht;
Keywords[nl]=schermbeveiliging;vergrendelen;wachtwoord;afwezig;boodschap;
Keywords[nl_NL]=schermbeveiliging;vergrendelen;wachtwoord;afwezig;boodschap;
Keywords[pl]=wygaszacz ekranu;blokada;hasło;nieobecność;komunikat;
Keywords[pl_PL]=wygaszacz ekranu;blokada;hasło;nieobecność;komunikat;
Keywords[pt]=protetor de ecrã;bloqueio;senha;palavra;passe;fora;mensagem;
Keywords[pt_BR]=protetor de tela;bloqueio;senha;ausente;mensagem;
Keywords[pt_PT]=protetor de ecrã;bloqueio;senha;palavra;passe;fora;mensagem;
Keywords[ro]=protector de ecran;blocare;parolă;departe;mesaj;
Keywords[ro_RO]=protector de ecran;blocare;parolă;departe;mesaj;
Keywords[ru]=заставка;блокировка;пароль;отсутствие;сообщение;
Keywords[sk]=šetrič obrazovky;uzamykanie;heslo;neprítomný;odkaz;
Keywords[sk_SK]=šetrič obrazovky;uzamykanie;heslo;neprítomný;odkaz;
Keywords[sl]=ohranjevalnik zaslona;zakleni;geslo;odsoten;sporočilo;
Keywords[sl_SI]=ohranjevalnik zaslona;zakleni;geslo;odsoten;sporočilo;
Keywords[sr]=чувар екрана;закључај;лозинка;порука;одјава;
Keywords[sr@Latn]=чувар екрана;закључај;лозинка;порука;одјава;
Keywords[sr@ije]=чувар екрана;закључај;лозинка;порука;одјава;
Keywords[sr@ijekavianlatin]=чувар екрана;закључај;лозинка;порука;одјава;
Keywords[sr@latin]=чувар екрана;закључај;лозинка;порука;одјава;
Keywords[sr_RS]=чувар екрана;закључај;лозинка;порука;одјава;
Keywords[sr_RS@latin]=чувар екрана;закључај;лозинка;порука;одјава;
Keywords[sv]=skärmsläckare;lås;lösenord;frånvaro;meddelande;
Keywords[tg]=пардаи экран;қулф;парол;ғоиб;паём;
Keywords[th]=หน้าจอพัก;ล็อก;รหัสผ่าน;ข้อความเมื่อไม่อยู่;ข้อความ;
Keywords[th_TH]=หน้าจอพัก;ล็อก;รหัสผ่าน;ข้อความเมื่อไม่อยู่;ข้อความ;
Keywords[tr]=ekran koruyucu;kilit;şifre;dışarıda;mesaj;
Keywords[tr_TR]=ekran koruyucu;kilit;şifre;dışarıda;mesaj;
Keywords[uk]=зберігач екрану;блокування;гасло;відійшов;повідомлення;
Keywords[uk_UA]=зберігач екрану;блокування;гасло;відійшов;повідомлення;
Keywords[ur]=سکرین محافظ، قفل، پاسورڈ، دور، پیغام;
Keywords[vi]=bảo vệ màn hình;khoá;mật khẩu;vắng;lời nhắn;
Keywords[vi_VN]=bảo vệ màn hình;khoá;mật khẩu;vắng;lời nhắn;
Keywords[zh_CN]=屏保,锁定,密码,离开,消息;
Keywords[zh_HK]=熒幕保護程式;鎖定;密碼;離開;訊息;
Keywords[zh_TW]=螢幕保護程式;鎖定;密碼;離開;訊息;
Cinnamon-3.6.7/files/usr/share/applications/cinnamon-killer-daemon.desktop 0000664 0001750 0001750 00000000310 13215735076 025641 0 ustar fabio fabio [Desktop Entry]
Name=Cinnamon Killer Daemon
Comment=Restarts Cinnamon and Nemo when a key combination is pressed
Icon=reload
Exec=cinnamon-killer-daemon
Terminal=false
Type=Application
NoDisplay=true
Cinnamon-3.6.7/files/usr/share/cinnamon/ 0000775 0001750 0001750 00000000000 13215735076 017045 5 ustar fabio fabio Cinnamon-3.6.7/files/usr/share/cinnamon/applets/ 0000775 0001750 0001750 00000000000 13215735076 020515 5 ustar fabio fabio Cinnamon-3.6.7/files/usr/share/cinnamon/applets/settings@cinnamon.org/ 0000775 0001750 0001750 00000000000 13215735076 024766 5 ustar fabio fabio Cinnamon-3.6.7/files/usr/share/cinnamon/applets/settings@cinnamon.org/metadata.json 0000664 0001750 0001750 00000000233 13215735076 027437 0 ustar fabio fabio {
"uuid": "settings@cinnamon.org",
"name": "Settings Applet",
"description": "Cinnamon Settings",
"icon": "preferences-system",
"max-instances": -1
}
Cinnamon-3.6.7/files/usr/share/cinnamon/applets/settings@cinnamon.org/applet.js 0000664 0001750 0001750 00000002476 13215735076 026622 0 ustar fabio fabio const Applet = imports.ui.applet;
const Panel = imports.ui.panel;
const PopupMenu = imports.ui.popupMenu;
function MyApplet(orientation, panel_height, instance_id) {
this._init(orientation, panel_height, instance_id);
}
MyApplet.prototype = {
__proto__: Applet.IconApplet.prototype,
_init: function(orientation, panel_height, instance_id) {
Applet.IconApplet.prototype._init.call(this, orientation, panel_height, instance_id);
try {
this.set_applet_icon_symbolic_name("go-up");
this.set_applet_tooltip(_("Settings"));
this.menuManager = new PopupMenu.PopupMenuManager(this);
this._buildMenu(orientation);
}
catch (e) {
global.logError(e);
}
},
on_applet_clicked: function(event) {
this.menu.toggle();
},
_buildMenu: function(orientation) {
this.menu = new Applet.AppletPopupMenu(this, orientation);
this.menuManager.addMenu(this.menu);
Panel.populateSettingsMenu(this.menu);
},
on_orientation_changed: function(orientation){
this.menu.destroy();
this._buildMenu(orientation);
}
};
function main(metadata, orientation, panel_height, instance_id) {
let myApplet = new MyApplet(orientation, panel_height, instance_id);
return myApplet;
}
Cinnamon-3.6.7/files/usr/share/cinnamon/applets/settings-example@cinnamon.org/ 0000775 0001750 0001750 00000000000 13215735076 026417 5 ustar fabio fabio Cinnamon-3.6.7/files/usr/share/cinnamon/applets/settings-example@cinnamon.org/settings-schema.json 0000664 0001750 0001750 00000015551 13215735076 032417 0 ustar fabio fabio {
"layout1": {
"type": "layout",
"pages": ["page1", "page2", "page3", "page4"],
"page1": {
"type": "page",
"title": "Visible settings",
"sections": ["section1", "section2"]
},
"page2": {
"type": "page",
"title": "Choosers",
"sections": ["section3", "section4", "section6"]
},
"page3": {
"type": "page",
"title": "Command settings",
"sections": ["section5"]
},
"page4": {
"type": "page",
"title": "Editable list settings",
"sections": ["section7"]
},
"section1": {
"type": "section",
"title": "Panel settings",
"keys": ["icon-name", "use-custom-label", "custom-label", "color", "spinner-number"]
},
"section3": {
"type": "section",
"title": "File choosers",
"keys": ["file-select", "directory-select", "sound-select"]
},
"section2": {
"type": "section",
"title": "Menu settings",
"keys": ["combo-selection", "scale-demo"]
},
"section4": {
"type": "section",
"title": "Animation settings",
"keys": ["tween-function", "effect-style"]
},
"section5": {
"type": "section",
"title": "Command settings",
"keys": ["signal-test", "keybinding-test", "demo-button", "long-text"]
},
"section6": {
"type": "section",
"title": "Other choosers",
"keys": ["font-select", "date-select"]
},
"section7": {
"type": "section",
"title": "My list",
"keys": ["tree"]
}
},
"icon-name": {
"type": "iconfilechooser",
"default" : "help",
"description" : "The icon to use in the panel",
"tooltip" : "Select an icon file, or you can type an icon name into the entry box"
},
"color" : {
"type": "colorchooser",
"default" : "grey",
"description" : "The background color for the applet",
"tooltip" : "Click the button to select a new background color for this applet"
},
"spinner-number" : {
"type": "spinbutton",
"default" : 250,
"min" : 0,
"max" : 400,
"step" : 5,
"units" : "pixels",
"description" : "Applet width in the panel",
"tooltip" : "Increase or decrease this spinner value to make the applet wider or narrower in the panel"
},
"combo-selection" : {
"type": "combobox",
"default" : "option 1",
"description" : "Please pick an option",
"options" : {
"First Choice" : "option 1",
"Second Choice" : "option 2",
"Third Choice" : "option 3",
"Fourth Choice" : "option 4"
},
"tooltip" : "A combo selection can select between int, boolean, float, and string values"
},
"scale-demo" : {
"type" : "scale",
"default" : 0.5,
"min" : 0.0,
"max" : 1.0,
"step" : 0.05,
"show-value" : false,
"description" : "Here is a demonstration of bidirectional control",
"tooltip" : "If you adjust this scale, it updates in the applet. If you adjust the scale in the applet, it updates here"
},
"use-custom-label" : {
"type" : "switch",
"default" : false,
"description": "Check this to use a custom label",
"tooltip": "Checking this box allows you to set a custom label in the field below - this demonstrates setting dependencies"
},
"custom-label" : {
"type" : "entry",
"default" : "custom",
"description" : "Custom Applet Label",
"indent": true,
"dependency" : "use-custom-label",
"tooltip" : "Set your custom label here. This field is unavailable unless the switch above is enabled"
},
"tween-function" : {
"type" : "tween",
"default" : "EaseNone",
"description" : "Animation type",
"tooltip": "A tween chooser has as value a string, which you can pass as transition to Tweener.addTween()"
},
"effect-style" : {
"type" : "effect",
"description" : "Effect type",
"default" : "none",
"possible" : ["none", "scale", "fade", "blend", "move", "flyUp", "flyDown", "traditional"]
},
"demo-button" : {
"type" : "button",
"description" : "Don't Press This Button!!!",
"callback" : "on_config_button_pressed",
"tooltip" : "Pressing this button activates a callback method in the applet - go ahead, press it."
},
"signal-test" : {
"type" : "switch",
"description" : "This is a test widget for individual key signal firing",
"default" : false
},
"keybinding-test" : {
"type" : "keybinding",
"description" : "Set the keybinding here to activate an action",
"default" : "F8"
},
"file-select" : {
"type" : "filechooser",
"description" : "Choose a file",
"default" : "~/",
"select-dir" : false
},
"directory-select" : {
"type" : "filechooser",
"description" : "Choose a directory",
"default" : "",
"select-dir" : true
},
"sound-select" : {
"type" : "soundfilechooser",
"description" : "Choose a sound",
"default" : ""
},
"font-select" : {
"type" : "fontchooser",
"description" : "Choose a font",
"default" : "sans 12"
},
"long-text" : {
"type" : "textview",
"description" : "You can type paragraphs and lists here",
"default" : "",
"tooltip" : "This setting type is useful for multi-line lists, and text that is too long to fit in an entry widget.\nYou can manually set the height of the text view with the 'height' property. This one is set to 150. Default is 200.",
"height" : 150
},
"date-select" : {
"type" : "datechooser",
"description" : "Choose a Date",
"default" : {
"d" : 1,
"m" : 1,
"y" : 2000
}
},
"tree" : {
"type" : "list",
"description" : "Custom tree widget",
"columns" : [
{"id": "name", "title": "Name", "type": "string"},
{"id": "resident", "title": "Resident", "type": "boolean"},
{"id": "address", "title": "Address", "type": "string", "default": "none"},
{"id": "number", "title": "Id number", "type": "integer", "min": 0, "max": 100},
{"id": "icon", "title": "Icon", "type": "icon"},
{"id": "key", "title": "Shortcut key", "type": "keybinding"},
{"id": "file", "title": "File Path", "type": "file", "select-dir": false}
],
"default" : []
}
}
Cinnamon-3.6.7/files/usr/share/cinnamon/applets/settings-example@cinnamon.org/metadata.json 0000664 0001750 0001750 00000000370 13215735076 031072 0 ustar fabio fabio {
"uuid": "settings-example@cinnamon.org",
"name": "Settings API Demo",
"description": "A sample applet for demonstrating the capabilities and usage of the applet and desklet settings API",
"icon": "preferences-desktop",
"max-instances": -1
}
Cinnamon-3.6.7/files/usr/share/cinnamon/applets/settings-example@cinnamon.org/applet.js 0000664 0001750 0001750 00000014620 13215735076 030245 0 ustar fabio fabio const Applet = imports.ui.applet;
const Lang = imports.lang;
const PopupMenu = imports.ui.popupMenu;
const Mainloop = imports.mainloop;
const Settings = imports.ui.settings; // Needed for settings API
const Gio = imports.gi.Gio;
const Tweener = imports.ui.tweener;
const Main = imports.ui.main;
function MyApplet(orientation, panel_height, instance_id) {
this._init(orientation, panel_height, instance_id); // Be sure to pass instanceId from the main function
}
MyApplet.prototype = {
__proto__: Applet.TextIconApplet.prototype,
_init: function(orientation, panel_height, instance_id) {
Applet.TextIconApplet.prototype._init.call(this, orientation, panel_height, instance_id);
this.menuManager = new PopupMenu.PopupMenuManager(this);
this.menu = new Applet.AppletPopupMenu(this, orientation);
this.menuManager.addMenu(this.menu);
/* Initialize your settings handler instance this, the uuid instance id */
this.settings = new Settings.AppletSettings(this, "settings-example@cinnamon.org", instance_id);
/* Now we'll proceed with setting up individual setting bindings. */
this.settings.bind("icon-name", // The setting key, from the setting schema file
"icon_name", // The property to bind the setting to - in this case it will initialize this.icon_name to the setting value
this.on_settings_changed, // The method to call when this.icon_name has changed, so you can update your applet
null); // Any extra information you want to pass to the callback (optional - pass null or just leave out this last argument)
this.settings.bind("scale-demo", "scale_val", this.on_settings_changed);
this.settings.bind("color", "bg_color", this.on_settings_changed);
this.settings.bind("spinner-number", "spinner_number", this.on_settings_changed);
this.settings.bind("combo-selection", "combo_choice", this.on_settings_changed);
this.settings.bind("use-custom-label", "use_custom", this.on_settings_changed);
this.settings.bind("custom-label", "custom_label", this.on_settings_changed);
this.settings.bind("tween-function", "tween_function", this.on_settings_changed);
this.settings.bind("keybinding-test", "keybinding", this.on_keybinding_changed);
this.settings.connect("changed::signal-test", Lang.bind(this, this.on_signal_test_fired));
/* Lets create and add our menu items - we'll set their true values after */
this.spinner_val_demo = new PopupMenu.PopupMenuItem("");
this.combo_val_demo = new PopupMenu.PopupMenuItem("");
this.slider_demo = new PopupMenu.PopupSliderMenuItem(0);
this.slider_demo.connect("value-changed", Lang.bind(this, this.on_slider_changed));
this.menu.addMenuItem(this.spinner_val_demo);
this.menu.addMenuItem(this.combo_val_demo);
this.menu.addMenuItem(this.slider_demo);
/* Let's set up our applet's initial state now that we have our setting properties defined */
this.on_keybinding_changed();
this.on_settings_changed();
},
on_keybinding_changed: function() {
Main.keybindingManager.addHotKey("must-be-unique-id", this.keybinding, Lang.bind(this, this.on_hotkey_triggered));
},
on_settings_changed: function() {
if (this.use_custom) {
this.set_applet_label(this.custom_label);
} else {
this.set_applet_label(_("Hi there!"));
}
let icon_file = Gio.File.new_for_path(this.icon_name);
if (icon_file.query_exists(null)) {
this.set_applet_icon_path(this.icon_name);
} else {
this.set_applet_icon_name(this.icon_name);
}
this.spinner_val_demo.label.clutter_text.set_text("Spinner value is: " + this.spinner_number);
this.combo_val_demo.label.clutter_text.set_text("Combo value is: " + this.combo_choice);
this.slider_demo.setValue(this.scale_val);
this.actor.style = "background-color:" + this.bg_color + "; width:" + this.spinner_number + "px";
},
on_signal_test_fired: function(setting_prov, key, oldval, newval) {
global.logError("Test signal fired. Old value for key "+ key + " was " + oldval + ". New value is " + newval + ".");
},
on_slider_changed: function(slider, value) {
this.scale_val = value; // This is our BIDIRECTIONAL setting - by updating this.scale_val,
// Our configuration file will also be updated
},
/* This method is a callback that is defined by a button type in our settings file
* This button will appear in the configuration dialog, and pressing it will call this method
* This could useful to open a link to your web page, or just about anything you want
*/
on_config_button_pressed: function() {
this.set_applet_label(_("YOU PRESSED THE BUTTON!!!"));
let timeoutId = Mainloop.timeout_add(3000, Lang.bind(this, function() {
this.on_settings_changed();
}));
//animate icon
Tweener.addTween(this._applet_icon, {
margin_left: 10,
time: 0.5,
transition: this.tween_function,
onComplete: function(){
Tweener.addTween(this._applet_icon, {
margin_left: 0,
time: 0.5,
transition: this.tween_function
});
},
onCompleteScope: this
});
},
on_hotkey_triggered: function() {
this.set_applet_label(_("YOU USED THE HOTKEY!!!"));
let timeoutId = Mainloop.timeout_add(3000, Lang.bind(this, function() {
this.on_settings_changed();
}));
},
on_applet_clicked: function(event) {
this.menu.toggle();
},
on_applet_removed_from_panel: function() {
this.settings.finalize(); // This is called when a user removes the applet from the panel.. we want to
// Remove any connections and file listeners here, which our settings object
// has a few of
}
};
function main(metadata, orientation, panel_height, instance_id) { // Make sure you collect and pass on instanceId
let myApplet = new MyApplet(orientation, panel_height, instance_id);
return myApplet;
}
Cinnamon-3.6.7/files/usr/share/cinnamon/applets/separator@cinnamon.org/ 0000775 0001750 0001750 00000000000 13215735076 025126 5 ustar fabio fabio Cinnamon-3.6.7/files/usr/share/cinnamon/applets/separator@cinnamon.org/metadata.json 0000664 0001750 0001750 00000000260 13215735076 027577 0 ustar fabio fabio {
"uuid": "separator@cinnamon.org",
"name": "Separator",
"description": "A separator icon which can be added multiple times",
"icon": "list-remove",
"max-instances": -1
}
Cinnamon-3.6.7/files/usr/share/cinnamon/applets/separator@cinnamon.org/applet.js 0000664 0001750 0001750 00000003570 13215735076 026756 0 ustar fabio fabio const Applet = imports.ui.applet;
const St = imports.gi.St;
const Clutter = imports.gi.Clutter;
function MyApplet(orientation, panel_height, instance_id) {
this._init(orientation, panel_height, instance_id);
}
MyApplet.prototype = {
__proto__: Applet.Applet.prototype,
_init: function(orientation, panel_height, instance_id) {
Applet.Applet.prototype._init.call(this, orientation, panel_height, instance_id);
this.actor.style_class = 'applet-separator';
this.setAllowedLayout(Applet.AllowedLayout.BOTH);
this.on_orientation_changed(orientation);
},
on_panel_height_changed: function() {
this.on_orientation_changed(this.orientation);
},
on_orientation_changed: function(neworientation) {
this.orientation = neworientation;
if (this.orientation == St.Side.TOP || this.orientation == St.Side.BOTTOM) {
if (this._line) {
this._line.destroy();
}
this._line = new St.BoxLayout({ style_class: 'applet-separator-line', reactive: false, track_hover: false});
this.actor.add(this._line, { y_align: Clutter.ActorAlign.CENTER, x_align: Clutter.ActorAlign.CENTER, y_fill: true, y_expand: true});
} else {
if (this._line) {
this._line.destroy();
}
this._line = new St.BoxLayout({ style_class: 'applet-separator-line-vertical', reactive: false, track_hover: false });
this._line.set_important(true);
this.actor.add(this._line, { y_align: Clutter.ActorAlign.CENTER, x_align: Clutter.ActorAlign.CENTER});
this._line.set_height(2);
this._line.set_width((this._panelHeight - 8));
}
},
};
function main(metadata, orientation, panel_height, instance_id) {
let myApplet = new MyApplet(orientation, panel_height, instance_id);
return myApplet;
}
Cinnamon-3.6.7/files/usr/share/cinnamon/applets/calendar@cinnamon.org/ 0000775 0001750 0001750 00000000000 13215735076 024677 5 ustar fabio fabio Cinnamon-3.6.7/files/usr/share/cinnamon/applets/calendar@cinnamon.org/settings-schema.json 0000664 0001750 0001750 00000002150 13215735076 030666 0 ustar fabio fabio {
"section1": {
"type": "section",
"description": "Display"
},
"show-week-numbers" : {
"type" : "switch",
"default" : false,
"description": "Show week numbers in calendar",
"tooltip": "Check this to show week numbers in the calendar."
},
"use-custom-format" : {
"type" : "switch",
"default" : false,
"description": "Use a custom date format",
"tooltip": "Check this to define a custom format for the date in the calendar applet."
},
"custom-format" : {
"type" : "entry",
"default" : "%A %B %e, %H:%M",
"description" : "Date format",
"indent": true,
"dependency" : "use-custom-format",
"tooltip" : "Set your custom format here."
},
"format-button" : {
"type" : "button",
"description" : "Show information on date format syntax",
"indent": true,
"dependency" : "use-custom-format",
"callback" : "on_custom_format_button_pressed",
"tooltip" : "Click this button to know more about the syntax for date formats."
}
}
Cinnamon-3.6.7/files/usr/share/cinnamon/applets/calendar@cinnamon.org/calendar.js 0000664 0001750 0001750 00000034612 13215735076 027014 0 ustar fabio fabio // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
const Clutter = imports.gi.Clutter;
const Gio = imports.gi.Gio;
const Lang = imports.lang;
const St = imports.gi.St;
const Signals = imports.signals;
const Pango = imports.gi.Pango;
const Gettext_gtk30 = imports.gettext.domain('gtk30');
const Cinnamon = imports.gi.Cinnamon;
const Settings = imports.ui.settings;
const MSECS_IN_DAY = 24 * 60 * 60 * 1000;
const WEEKDATE_HEADER_WIDTH_DIGITS = 3;
const SHOW_WEEKDATE_KEY = 'show-week-numbers';
const FIRST_WEEKDAY_KEY = 'first-day-of-week';
const DESKTOP_SCHEMA = 'org.cinnamon.desktop.interface';
// in org.cinnamon.desktop.interface
const CLOCK_FORMAT_KEY = 'clock-format';
function _sameDay(dateA, dateB) {
return (dateA.getDate() == dateB.getDate() &&
dateA.getMonth() == dateB.getMonth() &&
dateA.getYear() == dateB.getYear());
}
function _sameYear(dateA, dateB) {
return (dateA.getYear() == dateB.getYear());
}
/* TODO: maybe needs config - right now we assume that Saturday and
* Sunday are non-work days (not true in e.g. Israel, it's Sunday and
* Monday there)
*/
function _isWorkDay(date) {
return date.getDay() != 0 && date.getDay() != 6;
}
function _getBeginningOfDay(date) {
let ret = new Date(date.getTime());
ret.setHours(0);
ret.setMinutes(0);
ret.setSeconds(0);
ret.setMilliseconds(0);
return ret;
}
function _getEndOfDay(date) {
let ret = new Date(date.getTime());
ret.setHours(23);
ret.setMinutes(59);
ret.setSeconds(59);
ret.setMilliseconds(999);
return ret;
}
function _formatEventTime(event, clockFormat) {
let ret;
if (event.allDay) {
/* Translators: Shown in calendar event list for all day events
* Keep it short, best if you can use less then 10 characters
*/
ret = C_("event list time", "All Day");
} else {
switch (clockFormat) {
case '24h':
/* Translators: Shown in calendar event list, if 24h format */
ret = event.date.toLocaleFormat(C_("event list time", "%H:%M"));
break;
default:
/* explicit fall-through */
case '12h':
/* Transators: Shown in calendar event list, if 12h format */
ret = event.date.toLocaleFormat(C_("event list time", "%l:%M %p"));
break;
}
}
return ret;
}
function _getDigitWidth(actor){
let context = actor.get_pango_context();
let themeNode = actor.get_theme_node();
let font = themeNode.get_font();
let metrics = context.get_metrics(font, context.get_language());
let width = metrics.get_approximate_digit_width();
return width;
}
function _getCalendarDayAbbreviation(dayNumber) {
// This returns an array of abbreviated day names, starting with Sunday.
// We use 2014/03/02 (months are zero-based in JS) because it was a Sunday
let abbreviations = [
new Date(2014, 2, 2).toLocaleFormat('%a'),
new Date(2014, 2, 3).toLocaleFormat('%a'),
new Date(2014, 2, 4).toLocaleFormat('%a'),
new Date(2014, 2, 5).toLocaleFormat('%a'),
new Date(2014, 2, 6).toLocaleFormat('%a'),
new Date(2014, 2, 7).toLocaleFormat('%a'),
new Date(2014, 2, 8).toLocaleFormat('%a')
];
return abbreviations[dayNumber];
}
// Abstraction for an appointment/event in a calendar
function CalendarEvent(date, end, summary, allDay) {
this._init(date, end, summary, allDay);
}
CalendarEvent.prototype = {
_init: function(date, end, summary, allDay) {
this.date = date;
this.end = end;
this.summary = summary;
this.allDay = allDay;
}
};
function _datesEqual(a, b) {
if (a < b)
return false;
else if (a > b)
return false;
return true;
}
function _dateIntervalsOverlap(a0, a1, b0, b1)
{
if (a1 <= b0)
return false;
else if (b1 <= a0)
return false;
else
return true;
}
function Calendar(settings) {
this._init(settings);
}
Calendar.prototype = {
_init: function(settings) {
this._weekStart = Cinnamon.util_get_week_start();
this._weekdate = NaN;
this._digitWidth = NaN;
this.settings = settings;
this.settings.bindWithObject(this, "show-week-numbers", "show_week_numbers", this._onSettingsChange);
this.desktop_settings = new Gio.Settings({ schema_id: DESKTOP_SCHEMA });
this.desktop_settings.connect("changed::" + FIRST_WEEKDAY_KEY, Lang.bind(this, this._onSettingsChange));
// Find the ordering for month/year in the calendar heading
let var_name = 'calendar:MY';
switch (Gettext_gtk30.gettext(var_name)) {
case 'calendar:MY':
this._headerMonthFirst = true;
break;
case 'calendar:YM':
this._headerMonthFirst = false;
break;
default:
log('Translation of "calendar:MY" in GTK+ is not correct');
this._headerMonthFirst = true;
break;
}
// Start off with the current date
this._selectedDate = new Date();
this.actor = new St.Table({ homogeneous: false,
style_class: 'calendar',
reactive: true });
this.actor.connect('scroll-event',
Lang.bind(this, this._onScroll));
this._buildHeader ();
},
_onSettingsChange: function(object, key, old_val, new_val) {
if (key == FIRST_WEEKDAY_KEY) this._weekStart = Cinnamon.util_get_week_start();
this._buildHeader();
this._update(false);
},
// Sets the calendar to show a specific date
setDate: function(date, forceReload) {
if (!_sameDay(date, this._selectedDate)) {
this._selectedDate = date;
this._update(forceReload);
this.emit('selected-date-changed', new Date(this._selectedDate));
} else {
if (forceReload)
this._update(forceReload);
}
},
_buildHeader: function() {
let offsetCols = this.show_week_numbers ? 1 : 0;
this.actor.destroy_all_children();
// Top line of the calendar '<| September |> <| 2009 |>'
this._topBoxMonth = new St.BoxLayout();
this._topBoxYear = new St.BoxLayout();
if (this._headerMonthFirst) {
this.actor.add(this._topBoxMonth,
{row: 0, col: 0, col_span: offsetCols + 4});
this.actor.add(this._topBoxYear,
{row: 0, col: offsetCols + 4, col_span: 3});
} else {
this.actor.add(this._topBoxMonth,
{row: 0, col: offsetCols + 3, col_span: 4});
this.actor.add(this._topBoxYear,
{row: 0, col: 0, col_span: offsetCols + 3});
}
this.actor.connect('style-changed', Lang.bind(this, this._onStyleChange));
let back = new St.Button({ style_class: 'calendar-change-month-back' });
this._topBoxMonth.add(back);
back.connect('clicked', Lang.bind(this, this._onPrevMonthButtonClicked));
this._monthLabel = new St.Label({style_class: 'calendar-month-label'});
this._topBoxMonth.add(this._monthLabel, { expand: true, x_fill: false, x_align: St.Align.MIDDLE });
let forward = new St.Button({ style_class: 'calendar-change-month-forward' });
this._topBoxMonth.add(forward);
forward.connect('clicked', Lang.bind(this, this._onNextMonthButtonClicked));
back = new St.Button({style_class: 'calendar-change-month-back'});
this._topBoxYear.add(back);
back.connect('clicked', Lang.bind(this, this._onPrevYearButtonClicked));
this._yearLabel = new St.Label({style_class: 'calendar-month-label'});
this._topBoxYear.add(this._yearLabel, {expand: true, x_fill: false, x_align: St.Align.MIDDLE});
forward = new St.Button({style_class: 'calendar-change-month-forward'});
this._topBoxYear.add(forward);
forward.connect('clicked', Lang.bind(this, this._onNextYearButtonClicked));
// Add weekday labels...
//
// We need to figure out the abbreviated localized names for the days of the week;
// we do this by just getting the next 7 days starting from right now and then putting
// them in the right cell in the table. It doesn't matter if we add them in order
let iter = new Date(this._selectedDate);
iter.setSeconds(0); // Leap second protection. Hah!
iter.setHours(12);
for (let i = 0; i < 7; i++) {
// Could use iter.toLocaleFormat('%a') but that normally gives three characters
// and we want, ideally, a single character for e.g. S M T W T F S
let customDayAbbrev = _getCalendarDayAbbreviation(iter.getDay());
let label = new St.Label({ style_class: 'calendar-day-base calendar-day-heading',
text: customDayAbbrev });
this.actor.add(label,
{ row: 1,
col: offsetCols + (7 + iter.getDay() - this._weekStart) % 7,
x_fill: false, x_align: St.Align.MIDDLE });
iter.setTime(iter.getTime() + MSECS_IN_DAY);
}
// All the children after this are days, and get removed when we update the calendar
this._firstDayIndex = this.actor.get_n_children();
},
_onStyleChange: function(actor, event) {
// width of a digit in pango units
this._digitWidth = _getDigitWidth(this.actor) / Pango.SCALE;
this._setWeekdateHeaderWidth();
},
_setWeekdateHeaderWidth: function() {
if (this._digitWidth != NaN && this.show_week_numbers && this._weekdateHeader) {
this._weekdateHeader.set_width (this._digitWidth * WEEKDATE_HEADER_WIDTH_DIGITS);
}
},
_onScroll : function(actor, event) {
switch (event.get_scroll_direction()) {
case Clutter.ScrollDirection.UP:
case Clutter.ScrollDirection.LEFT:
this._onPrevMonthButtonClicked();
break;
case Clutter.ScrollDirection.DOWN:
case Clutter.ScrollDirection.RIGHT:
this._onNextMonthButtonClicked();
break;
}
},
_applyDateBrowseAction: function(yearChange, monthChange) {
let oldDate = this._selectedDate;
let newMonth = oldDate.getMonth() + monthChange;
if (newMonth> 11) {
yearChange = yearChange + 1;
newMonth = 0;
} else if (newMonth < 0) {
yearChange = yearChange - 1;
newMonth = 11;
}
let newYear = oldDate.getFullYear() + yearChange;
let newDayOfMonth = oldDate.getDate();
let daysInMonth = 32 - new Date(newYear, newMonth, 32).getDate();
if (newDayOfMonth > daysInMonth) {
newDayOfMonth = daysInMonth;
}
let newDate = new Date();
newDate.setFullYear(newYear, newMonth, newDayOfMonth);
this.setDate(newDate, false);
},
_onPrevYearButtonClicked: function() {
this._applyDateBrowseAction(-1, 0);
},
_onNextYearButtonClicked: function() {
this._applyDateBrowseAction(+1, 0);
},
_onPrevMonthButtonClicked: function() {
this._applyDateBrowseAction(0, -1);
},
_onNextMonthButtonClicked: function() {
this._applyDateBrowseAction(0, +1);
},
_update: function(forceReload) {
let now = new Date();
this._monthLabel.text = this._selectedDate.toLocaleFormat('%B').capitalize();
this._yearLabel.text = this._selectedDate.toLocaleFormat('%Y');
// Remove everything but the topBox and the weekday labels
let children = this.actor.get_children();
for (let i = this._firstDayIndex; i < children.length; i++)
children[i].destroy();
// Start at the beginning of the week before the start of the month
let beginDate = new Date(this._selectedDate);
beginDate.setDate(1);
beginDate.setSeconds(0);
beginDate.setHours(12);
let daysToWeekStart = (7 + beginDate.getDay() - this._weekStart) % 7;
beginDate.setTime(beginDate.getTime() - daysToWeekStart * MSECS_IN_DAY);
let iter = new Date(beginDate);
let row = 2;
while (true) {
let button = new St.Button({ label: iter.getDate().toString() });
button.reactive = false;
let iterStr = iter.toUTCString();
button.connect('clicked', Lang.bind(this, function() {
let newlySelectedDate = new Date(iterStr);
this.setDate(newlySelectedDate, false);
}));
let styleClass = 'calendar-day-base calendar-day';
if (_isWorkDay(iter))
styleClass += ' calendar-work-day'
else
styleClass += ' calendar-nonwork-day'
// Hack used in lieu of border-collapse - see cinnamon.css
if (row == 2)
styleClass = 'calendar-day-top ' + styleClass;
if (iter.getDay() == this._weekStart)
styleClass = 'calendar-day-left ' + styleClass;
if (_sameDay(now, iter))
styleClass += ' calendar-today';
else if (iter.getMonth() != this._selectedDate.getMonth())
styleClass += ' calendar-other-month-day';
if (_sameDay(this._selectedDate, iter))
button.add_style_pseudo_class('active');
button.style_class = styleClass;
let offsetCols = this.show_week_numbers ? 1 : 0;
this.actor.add(button,
{ row: row, col: offsetCols + (7 + iter.getDay() - this._weekStart) % 7 });
if (this.show_week_numbers && iter.getDay() == 4) {
let label = new St.Label({ text: iter.toLocaleFormat('%V'),
style_class: 'calendar-day-base calendar-week-number'});
this.actor.add(label,
{ row: row, col: 0, y_align: St.Align.MIDDLE });
}
iter.setTime(iter.getTime() + MSECS_IN_DAY);
if (iter.getDay() == this._weekStart) {
row++;
// We always stop after placing 6 rows, even if month fits in 4
// to prevent issues with jumping controls, see #226
if (row > 7) {
break;
}
}
}
}
};
Signals.addSignalMethods(Calendar.prototype);
Cinnamon-3.6.7/files/usr/share/cinnamon/applets/calendar@cinnamon.org/metadata.json 0000664 0001750 0001750 00000000236 13215735076 027353 0 ustar fabio fabio {
"uuid": "calendar@cinnamon.org",
"name": "Calendar",
"description": "The Cinnamon calendar applet",
"icon": "x-office-calendar",
"max-instances": -1
}
Cinnamon-3.6.7/files/usr/share/cinnamon/applets/calendar@cinnamon.org/applet.js 0000664 0001750 0001750 00000016711 13215735076 026530 0 ustar fabio fabio const Applet = imports.ui.applet;
const Gio = imports.gi.Gio;
const Lang = imports.lang;
const Clutter = imports.gi.Clutter;
const St = imports.gi.St;
const Util = imports.misc.util;
const PopupMenu = imports.ui.popupMenu;
const UPowerGlib = imports.gi.UPowerGlib;
const Settings = imports.ui.settings;
const Calendar = imports.applets['calendar@cinnamon.org'].calendar;
const CinnamonDesktop = imports.gi.CinnamonDesktop;
String.prototype.capitalize = function() {
return this.charAt(0).toUpperCase() + this.slice(1);
}
function _onVertSepRepaint (area)
{
let cr = area.get_context();
let themeNode = area.get_theme_node();
let [width, height] = area.get_surface_size();
let stippleColor = themeNode.get_color('-stipple-color');
let stippleWidth = themeNode.get_length('-stipple-width');
let x = Math.floor(width/2) + 0.5;
cr.moveTo(x, 0);
cr.lineTo(x, height);
Clutter.cairo_set_source_color(cr, stippleColor);
cr.setDash([1, 3], 1); // Hard-code for now
cr.setLineWidth(stippleWidth);
cr.stroke();
cr.$dispose();
};
function MyApplet(orientation, panel_height, instance_id) {
this._init(orientation, panel_height, instance_id);
}
MyApplet.prototype = {
__proto__: Applet.TextApplet.prototype,
_init: function(orientation, panel_height, instance_id) {
Applet.TextApplet.prototype._init.call(this, orientation, panel_height, instance_id);
this.setAllowedLayout(Applet.AllowedLayout.BOTH);
try {
this.menuManager = new PopupMenu.PopupMenuManager(this);
this.orientation = orientation;
this._initContextMenu();
// Date
this._date = new St.Label();
this._date.style_class = 'datemenu-date-label';
this.menu.addActor(this._date);
this.settings = new Settings.AppletSettings(this, "calendar@cinnamon.org", this.instance_id);
// Calendar
this._calendar = new Calendar.Calendar(this.settings);
this.menu.addActor(this._calendar.actor);
this.menu.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
let item = new PopupMenu.PopupMenuItem(_("Date and Time Settings"))
item.connect("activate", Lang.bind(this, this._onLaunchSettings));
this.menu.addMenuItem(item);
this._dateFormatFull = _("%A %B %-e, %Y");
this.settings.bind("use-custom-format", "use_custom_format", this._onSettingsChanged);
this.settings.bind("custom-format", "custom_format", this._onSettingsChanged);
/* FIXME: Add gobject properties to the WallClock class to allow easier access from
* its clients, and possibly a separate signal to notify of updates to these properties
* (though GObject "changed" would be sufficient.) */
this.desktop_settings = new Gio.Settings({ schema_id: "org.cinnamon.desktop.interface" });
this.desktop_settings.connect("changed::clock-use-24h", Lang.bind(this, function(key) {
this._onSettingsChanged();
}));
this.desktop_settings.connect("changed::clock-show-seconds", Lang.bind(this, function(key) {
this._onSettingsChanged();
}));
this.clock = new CinnamonDesktop.WallClock();
this.clock_notify_id = 0;
// https://bugzilla.gnome.org/show_bug.cgi?id=655129
this._upClient = new UPowerGlib.Client();
try {
this._upClient.connect('notify-resume', Lang.bind(this, this._updateClockAndDate));
} catch (e) {
this._upClient.connect('notify::resume', Lang.bind(this, this._updateClockAndDate));
}
}
catch (e) {
global.logError(e);
}
},
_clockNotify: function(obj, pspec, data) {
this._updateClockAndDate();
},
on_applet_clicked: function(event) {
this.menu.toggle();
},
_onSettingsChanged: function() {
this._updateFormatString();
this._updateClockAndDate();
},
on_custom_format_button_pressed: function() {
Util.spawnCommandLine("xdg-open http://www.foragoodstrftime.com/");
},
_onLaunchSettings: function() {
this.menu.close();
Util.spawnCommandLine("cinnamon-settings calendar");
},
_updateFormatString: function() {
let in_vertical_panel = (this.orientation == St.Side.LEFT || this.orientation == St.Side.RIGHT);
if (this.use_custom_format) {
if (!this.clock.set_format_string(this.custom_format)) {
global.logError("Calendar applet: bad time format string - check your string.");
this.clock.set_format_string("~CLOCK FORMAT ERROR~ %l:%M %p");
}
} else if (in_vertical_panel) {
let use_24h = this.desktop_settings.get_boolean("clock-use-24h");
let show_seconds = this.desktop_settings.get_boolean("clock-show-seconds");
if (use_24h) {
if (show_seconds) {
this.clock.set_format_string("%H%n%M%n%S");
} else {
this.clock.set_format_string("%H%n%M%");
}
} else {
if (show_seconds) {
this.clock.set_format_string("%l%n%M%n%S");
} else {
this.clock.set_format_string("%l%n%M%");
}
}
} else {
this.clock.set_format_string(null);
}
},
_updateClockAndDate: function() {
let label_string = this.clock.get_clock();
if (!this.use_custom_format) {
label_string = label_string.capitalize();
}
this.set_applet_label(label_string);
/* Applet content - st_label_set_text and set_applet_tooltip both compare new to
* existing strings before proceeding, so no need to check here also */
let dateFormattedFull = this.clock.get_clock_for_format(this._dateFormatFull).capitalize();
this._date.set_text(dateFormattedFull);
this.set_applet_tooltip(dateFormattedFull);
},
on_applet_added_to_panel: function() {
this._onSettingsChanged();
if (this.clock_notify_id == 0) {
this.clock_notify_id = this.clock.connect("notify::clock", () => this._clockNotify());
}
/* Populates the calendar so our menu allocation is correct for animation */
this._updateCalendar();
},
on_applet_removed_from_panel: function() {
if (this.clock_notify_id > 0) {
this.clock.disconnect(this.clock_notify_id);
this.clock_notify_id = 0;
}
},
_initContextMenu: function () {
this.menu = new Applet.AppletPopupMenu(this, this.orientation);
this.menuManager.addMenu(this.menu);
// Whenever the menu is opened, select today
this.menu.connect('open-state-changed', Lang.bind(this, function(menu, isOpen) {
if (isOpen) {
this._updateCalendar();
}
}));
},
_updateCalendar: function () {
let now = new Date();
this._calendar.setDate(now, true);
},
on_orientation_changed: function (orientation) {
this.orientation = orientation;
this.menu.setOrientation(orientation);
this._onSettingsChanged();
}
};
function main(metadata, orientation, panel_height, instance_id) {
let myApplet = new MyApplet(orientation, panel_height, instance_id);
return myApplet;
}
Cinnamon-3.6.7/files/usr/share/cinnamon/applets/scale@cinnamon.org/ 0000775 0001750 0001750 00000000000 13215735076 024215 5 ustar fabio fabio Cinnamon-3.6.7/files/usr/share/cinnamon/applets/scale@cinnamon.org/settings-schema.json 0000664 0001750 0001750 00000000173 13215735076 030207 0 ustar fabio fabio {
"activate-on-hover": {
"type": "switch",
"default" : false,
"description" : "Activate scale on hover"
}
}
Cinnamon-3.6.7/files/usr/share/cinnamon/applets/scale@cinnamon.org/icons/ 0000775 0001750 0001750 00000000000 13215735076 025330 5 ustar fabio fabio Cinnamon-3.6.7/files/usr/share/cinnamon/applets/scale@cinnamon.org/icons/cinnamon-scale-symbolic.svg0000664 0001750 0001750 00000001057 13215735076 032562 0 ustar fabio fabio
Cinnamon-3.6.7/files/usr/share/cinnamon/applets/scale@cinnamon.org/metadata.json 0000664 0001750 0001750 00000000227 13215735076 026671 0 ustar fabio fabio {
"uuid": "scale@cinnamon.org",
"name": "Scale",
"description": "Click or hover to activate Scale view",
"icon": "cs-overview",
"max-instances": -1
}
Cinnamon-3.6.7/files/usr/share/cinnamon/applets/scale@cinnamon.org/applet.js 0000664 0001750 0001750 00000003104 13215735076 026036 0 ustar fabio fabio const Applet = imports.ui.applet;
const Lang = imports.lang;
const Main = imports.ui.main;
const Settings = imports.ui.settings;
function MyApplet(metadata, orientation, panel_height, instance_id) {
this._init(metadata, orientation, panel_height, instance_id);
}
MyApplet.prototype = {
__proto__: Applet.IconApplet.prototype,
_init: function(metadata, orientation, panel_height, instance_id) {
Applet.IconApplet.prototype._init.call(this, orientation, panel_height, instance_id);
try {
this.set_applet_icon_symbolic_name("cinnamon-scale");
this.set_applet_tooltip(_("Scale"));
this._hover_activates = false;
this.settings = new Settings.AppletSettings(this, metadata.uuid, this.instance_id);
this.settings.bind("activate-on-hover", "_hover_activates");
this.actor.connect('enter-event', Lang.bind(this, this._onEntered));
}
catch (e) {
global.logError(e);
}
},
on_applet_clicked: function(event) {
if (this._hover_activates)
return;
this.doAction();
},
_onEntered: function(event) {
if (!this._hover_activates || global.settings.get_boolean("panel-edit-mode"))
return;
this.doAction();
},
doAction: function() {
if (!Main.overview.animationInProgress)
Main.overview.toggle();
}
};
function main(metadata, orientation, panel_height, instance_id) {
let myApplet = new MyApplet(metadata, orientation, panel_height, instance_id);
return myApplet;
}
Cinnamon-3.6.7/files/usr/share/cinnamon/applets/window-list@cinnamon.org/ 0000775 0001750 0001750 00000000000 13215735076 025406 5 ustar fabio fabio Cinnamon-3.6.7/files/usr/share/cinnamon/applets/window-list@cinnamon.org/settings-schema.json 0000664 0001750 0001750 00000002376 13215735076 031407 0 ustar fabio fabio {
"section1": {
"type": "section",
"description": "Behavior"
},
"show-all-workspaces" : {
"type" : "switch",
"default" : false,
"description": "Show windows from all workspaces"
},
"enable-alerts" : {
"type" : "switch",
"default" : true,
"description" : "Show an alert in the window list when a window from another workspace requires attention"
},
"enable-scrolling" : {
"type" : "switch",
"default" : false,
"description" : "Enable mouse-wheel scrolling in the window list"
},
"reverse-scrolling" : {
"type" : "switch",
"default" : false,
"description" : "Reverse the direction of mouse-wheel scrolling in the window list",
"dependency" : "enable-scrolling"
},
"middle-click-close": {
"type": "switch",
"default": true,
"description": "Middle click to close window"
},
"section2": {
"type": "section",
"description": "Display"
},
"buttons-use-entire-space": {
"type": "switch",
"default": false,
"description": "Window buttons can have different sizes and use the entire space available"
},
"window-preview": {
"type": "switch",
"default": true,
"description": "Show window thumbnails on hover"
}
}
Cinnamon-3.6.7/files/usr/share/cinnamon/applets/window-list@cinnamon.org/metadata.json 0000664 0001750 0001750 00000000244 13215735076 030061 0 ustar fabio fabio {
"uuid": "window-list@cinnamon.org",
"name": "Window list",
"description": "Main Cinnamon window list",
"icon": "gnome-window-manager",
"max-instances": -1
}
Cinnamon-3.6.7/files/usr/share/cinnamon/applets/window-list@cinnamon.org/applet.js 0000664 0001750 0001750 00000153323 13215735076 027240 0 ustar fabio fabio /* Window-list applet
*
* The applet code consists of four main object. WindowPreview, AppMenuButton,
* AppMenuButtonRightClickMenu and the main applet code.
*
* The main applet object listens to different events and updates the window
* list accordingly. Since addition/removal of windows is emitted by the
* workspace, we have to listen to the changes to the number of workspaces and
* update our signals accordingly as well. It also listens to the change in
* window state (eg tile/maximize) since the window titles are displayed
* differently in the AppMenuButton for each different state, eg minimized
* windows are shown as [Title].
*
* For each window the main applet object wants to show, an AppMenuButton is
* created. This is created for every window in the monitors it is responsible
* for, regardless of whether it is on the active workspace. Individual applet
* objects are then shown/hidden according to which workspace they are in.
*
* The AppMenuButton is responsible for managing its own appearance using a
* CinnamonGenericContainer. We manage the allocation ourselves and shrink the
* label when there isn't enough space in the panel (the space available is
* divided among all AppMenuButtons and each is told how much space they can
* use through the "allocate" signal). It also has an onFocus function that the
* main applet calls when a window is focused.
*
* When a window is marked urgent or demand attention ("urgent" windows are not
* more important that those demanding attention. These are two unrelated
* notions in different specifications that both mean approximately the same
* thing), we will ask the AppMenuButton to flash. If the window is from a
* separate workspace, we generate a new temporary AppMenuButton and add it to
* our actor box. It stops flashing when the onFocus function is called (and if
* the window is indeed focused) (destroyed in the case of temporary
* AppMenuButtons).
*
* The AppMenuButtonRightClickMenu is, as the name suggests, the right click
* menu of the AppMenuButton. The menu is generated every time the button is
* right-clicked, since this rarely happens and generating all at the beginning
* would be a waste of time/memory. This also saves us from having to listen to
* signals for changes in workspace/monitor etc.
*
* Finally, the WindowPreview object is a tooltip that shows a preview of the
* window. Users can opt to show a window preview (using this), or the title
* (using Tooltips.PanelItemTooltip) in the tooltip. The window preview is
* generated on the fly when needed instead of cached.
*/
const Cinnamon = imports.gi.Cinnamon;
const Clutter = imports.gi.Clutter;
const Gio = imports.gi.Gio;
const Gdk = imports.gi.Gdk;
const Lang = imports.lang;
const Mainloop = imports.mainloop;
const Meta = imports.gi.Meta;
const St = imports.gi.St;
const Applet = imports.ui.applet;
const AppletManager = imports.ui.appletManager;
const DND = imports.ui.dnd;
const Main = imports.ui.main;
const PopupMenu = imports.ui.popupMenu;
const Settings = imports.ui.settings;
const SignalManager = imports.misc.signalManager;
const Tooltips = imports.ui.tooltips;
const HORIZONTAL_ICON_SIZE = 16; // too bad this can't be defined in theme (cinnamon-app.create_icon_texture returns a clutter actor, not a themable object -
// probably something that could be addressed
const ICON_HEIGHT_FACTOR = 0.64;
const VERTICAL_ICON_HEIGHT_FACTOR = 0.75;
const MAX_TEXT_LENGTH = 1000;
const FLASH_INTERVAL = 500;
const WINDOW_PREVIEW_WIDTH = 200;
const WINDOW_PREVIEW_HEIGHT = 150;
function WindowPreview(item, metaWindow) {
this._init(item, metaWindow);
}
WindowPreview.prototype = {
__proto__: Tooltips.TooltipBase.prototype,
_init: function(item, metaWindow) {
Tooltips.TooltipBase.prototype._init.call(this, item.actor);
this._applet = item._applet;
// FIXME: there is quite a bit of hardcoding in this part of the code, would benefit from setting up separate CSS
// and getting rid of the hard-coding.
this.actor = new St.Bin({style_class: "switcher-list", style: "margin: 0px; padding: 8px;"});
this.actor.show_on_set_parent = false;
this.scaleFactor = St.ThemeContext.get_for_stage(global.stage).scale_factor;
this.actor.set_size(WINDOW_PREVIEW_WIDTH * 1.2 * this.scaleFactor, WINDOW_PREVIEW_HEIGHT * 1.2 * this.scaleFactor);
Main.uiGroup.add_actor(this.actor);
this.metaWindow = metaWindow;
this.muffinWindow = null;
this._sizeChangedId = null;
let box = new St.BoxLayout({ vertical: true });
let hbox = new St.BoxLayout();
let iconBox = new St.Bin();
let tracker = Cinnamon.WindowTracker.get_default();
let app = tracker.get_window_app(this.metaWindow);
let icon = app ? app.create_icon_texture(16) : new St.Icon({ icon_name: 'application-default-icon', icon_type: St.IconType.FULLCOLOR, icon_size: 16 });
iconBox.set_child(icon);
hbox.add_actor(iconBox);
this.label = new St.Label();
this.label.style = "padding: 2px;";
hbox.add_actor(this.label);
box.add_actor(hbox);
this.thumbnailBin = new St.Bin();
box.add_actor(this.thumbnailBin);
this.actor.set_child(box);
},
_onEnterEvent: function(actor, event) {
if (this._applet._tooltipShowing)
this.show();
else if (!this._showTimer)
this._showTimer = Mainloop.timeout_add(300, Lang.bind(this, this._onShowTimerComplete));
this.mousePosition = event.get_coords();
},
_hide: function(actor, event) {
Tooltips.TooltipBase.prototype._hide.call(this, actor, event);
this._applet.erodeTooltip();
},
show: function() {
if (!this.actor || this._applet._menuOpen)
return;
this.muffinWindow = this.metaWindow.get_compositor_private();
let windowTexture = this.muffinWindow.get_texture();
let [width, height] = windowTexture.get_size();
// the 18 is 16 for the icon size + 2px min padding
// this is not foolproof - the font used might be large enough to make the label bigger than the icon
let scale = Math.min(1.0, WINDOW_PREVIEW_WIDTH / width, (WINDOW_PREVIEW_HEIGHT-18) / height);
if (this.thumbnail) {
this.thumbnailBin.set_child(null);
this.thumbnail.destroy();
}
this.thumbnail = new Clutter.Clone({
source: windowTexture,
width: width * scale * this.scaleFactor,
height: height * scale * this.scaleFactor
});
this._setSize = function() {
[width, height] = windowTexture.get_size();
scale = Math.min(1.0, WINDOW_PREVIEW_WIDTH / width, (WINDOW_PREVIEW_HEIGHT-18) / height);
this.thumbnail.set_size(width * scale * this.scaleFactor, height * scale * this.scaleFactor);
};
this._sizeChangedId = this.muffinWindow.connect('size-changed',
Lang.bind(this, this._setSize));
this.thumbnailBin.set_child(this.thumbnail);
let allocation = this.actor.get_allocation_box();
let previewHeight = allocation.y2 - allocation.y1;
let previewWidth = allocation.x2 - allocation.x1;
let monitor = Main.layoutManager.findMonitorForActor(this.item);
let previewTop;
if (this._applet.orientation == St.Side.BOTTOM) {
previewTop = this.item.get_transformed_position()[1] - previewHeight - 5;
} else if (this._applet.orientation == St.Side.TOP) {
previewTop = this.item.get_transformed_position()[1] + this.item.get_transformed_size()[1] + 5;
} else {
previewTop = this.item.get_transformed_position()[1];
}
let previewLeft;
if (this._applet.orientation == St.Side.BOTTOM || this._applet.orientation == St.Side.TOP) {
// centre the applet on the window list item if window list is on the top or bottom panel
previewLeft = this.item.get_transformed_position()[0] + this.item.get_transformed_size()[0]/2 - previewWidth/2;
} else if (this._applet.orientation == St.Side.LEFT) {
previewLeft = this.item.get_transformed_position()[0] + this.item.get_transformed_size()[0] + 5;
} else if (this._applet.orientation == St.Side.RIGHT) {
previewLeft = this.item.get_transformed_position()[0] - previewWidth -5;
}
previewLeft = Math.round(previewLeft);
previewLeft = Math.max(previewLeft, monitor.x);
previewLeft = Math.min(previewLeft, monitor.x + monitor.width - previewWidth);
previewTop = Math.round(previewTop);
previewTop = Math.min(previewTop, monitor.y + monitor.height - previewHeight);
this.actor.set_position(previewLeft, previewTop);
this.actor.show();
this.visible = true;
this._applet.cancelErodeTooltip();
this._applet._tooltipShowing = true;
},
hide: function() {
if (this._sizeChangedId != null) {
this.muffinWindow.disconnect(this._sizeChangedId);
this._sizeChangedId = null;
}
if (this.thumbnail) {
this.thumbnailBin.set_child(null);
this.thumbnail.destroy();
}
if (this.actor) {
this.actor.hide();
}
this.visible = false;
},
set_text: function(text) {
this.label.set_text(text);
},
_destroy: function() {
if (this._sizeChangedId != null) {
this.muffinWindow.disconnect(this._sizeChangedId);
this.sizeChangedId = null;
}
if (this.thumbnail) {
this.thumbnailBin.set_child(null);
this.thumbnail.destroy();
}
if (this.actor) {
this.actor.destroy();
}
this.actor = null;
}
};
function AppMenuButton(applet, metaWindow, alert) {
this._init(applet, metaWindow, alert);
}
AppMenuButton.prototype = {
_init: function(applet, metaWindow, alert) {
this.actor = new Cinnamon.GenericContainer({
name: 'appMenu',
style_class: 'window-list-item-box',
reactive: true,
can_focus: true,
track_hover: true });
this._applet = applet;
this.metaWindow = metaWindow;
this.alert = alert;
this.labelVisible = false;
if (this._applet.orientation == St.Side.TOP)
this.actor.add_style_class_name('top');
else if (this._applet.orientation == St.Side.BOTTOM)
this.actor.add_style_class_name('bottom');
else if (this._applet.orientation == St.Side.LEFT)
this.actor.add_style_class_name('left');
else if (this._applet.orientation == St.Side.RIGHT)
this.actor.add_style_class_name('right');
this.actor._delegate = this;
this.actor.connect('button-release-event', Lang.bind(this, this._onButtonRelease));
this.actor.connect('button-press-event', Lang.bind(this, this._onButtonPress));
this.actor.connect('get-preferred-width',
Lang.bind(this, this._getPreferredWidth));
this.actor.connect('get-preferred-height',
Lang.bind(this, this._getPreferredHeight));
this.actor.connect('allocate', Lang.bind(this, this._allocate));
this.progressOverlay = new St.Widget({ style_class: "progress", reactive: false, important: true });
this.actor.add_actor(this.progressOverlay);
this._iconBox = new Cinnamon.Slicer({ name: 'appMenuIcon' });
this._iconBox.connect('style-changed',
Lang.bind(this, this._onIconBoxStyleChanged));
this._iconBox.connect('notify::allocation',
Lang.bind(this, this._updateIconBoxClipAndGeometry));
this.actor.add_actor(this._iconBox);
this._label = new St.Label();
this.actor.add_actor(this._label);
this.updateLabelVisible();
this._iconBottomClip = 0;
this._visible = true;
this._updateCaptionId = this.metaWindow.connect('notify::title',
Lang.bind(this, this.setDisplayTitle));
this._updateTileTypeId = this.metaWindow.connect('notify::tile-type',
Lang.bind(this, this.setDisplayTitle));
this._updateIconId = this.metaWindow.connect('notify::icon',
Lang.bind(this, this.setIcon));
this._progress = 0;
if (this.metaWindow.progress !== undefined) {
this._progress = this.metaWindow.progress;
if (this._progress > 0) {
this.progressOverlay.show();
} else
this.progressOverlay.hide();
this._updateProgressId = this.metaWindow.connect("notify::progress", () => {
if (this.metaWindow.progress != this._progress) {
this._progress = this.metaWindow.progress;
if (this._progress >0) {
this.progressOverlay.show();
} else {
this.progressOverlay.hide();
}
this.actor.queue_relayout();
}
});
} else {
this.progressOverlay.hide();
}
/* TODO: this._progressPulse = this.metaWindow.progress_pulse; */
this.onPreviewChanged();
if (!this.alert) {
this._menuManager = new PopupMenu.PopupMenuManager(this);
this.rightClickMenu = new AppMenuButtonRightClickMenu(this, this.metaWindow, this._applet.orientation);
this._menuManager.addMenu(this.rightClickMenu);
this._draggable = DND.makeDraggable(this.actor, null, this._applet.actor);
this._draggable.connect('drag-begin', Lang.bind(this, this._onDragBegin));
this._draggable.connect('drag-cancelled', Lang.bind(this, this._onDragCancelled));
this._draggable.connect('drag-end', Lang.bind(this, this._onDragEnd));
}
this.onPanelEditModeChanged();
global.settings.connect('changed::panel-edit-mode', Lang.bind(this, this.onPanelEditModeChanged));
this._windows = this._applet._windows;
this.scrollConnector = null;
this.onScrollModeChanged();
this._needsAttention = false;
this.setDisplayTitle();
this.onFocus();
this.setIcon();
if (this.alert)
this.getAttention();
},
onPreviewChanged: function() {
if (this._tooltip)
this._tooltip.destroy();
if (this._applet.usePreview)
this._tooltip = new WindowPreview(this, this.metaWindow, this._applet.orientation);
else
this._tooltip = new Tooltips.PanelItemTooltip(this, "", this._applet.orientation);
this.setDisplayTitle();
},
onPanelEditModeChanged: function() {
let editMode = global.settings.get_boolean("panel-edit-mode");
if (this._draggable)
this._draggable.inhibit = editMode;
this.actor.reactive = !editMode;
},
onScrollModeChanged: function() {
if (this._applet.scrollable) {
this.scrollConnector = this.actor.connect('scroll-event', Lang.bind(this, this._onScrollEvent));
} else {
if (this.scrollConnector) {
this.actor.disconnect(this.scrollConnector);
this.scrollConnector = null;
}
}
},
_onScrollEvent: function(actor, event) {
let direction = event.get_scroll_direction();
// Find the current focused window
let windows = this.actor.get_parent().get_children()
.filter(function(item) {
return item.visible;
}).map(function(item) {
return item._delegate;
});
windows = windows.reverse();
let i = windows.length;
while (i-- && !windows[i].metaWindow.has_focus());
if (i == -1)
return;
// v home-made xor
if ((direction == 0) != this._applet.reverseScroll)
i++;
else
i--;
if (i == windows.length)
i = 0;
else if (i == -1)
i = windows.length - 1;
Main.activateWindow(windows[i].metaWindow, global.get_current_time());
},
_onDragBegin: function() {
if (this._applet.orientation == St.Side.TOP || this._applet.orientation == St.Side.BOTTOM) {
this._draggable._overrideY = this.actor.get_transformed_position()[1];
this._draggable._overrideX = null;
} else {
this._draggable._overrideX = this.actor.get_transformed_position()[0];
this._draggable._overrideY = null;
}
this._tooltip.hide();
this._tooltip.preventShow = true;
},
_onDragEnd: function() {
this.actor.show();
this._applet.clearDragPlaceholder();
this._tooltip.preventShow = false;
},
_onDragCancelled: function() {
this.actor.show();
this._applet.clearDragPlaceholder();
this._tooltip.preventShow = false;
},
getDragActor: function() {
let clone = new Clutter.Clone({ source: this.actor });
clone.width = this.actor.width;
clone.height = this.actor.height;
return clone;
},
getDragActorSource: function() {
return this.actor;
},
handleDragOver: function(source, actor, x, y, time) {
if (this._draggable && this._draggable.inhibit) {
return DND.DragMotionResult.CONTINUE;
}
if (source instanceof AppMenuButton)
return DND.DragMotionResult.CONTINUE;
/* Users can drag things from one window to another window (eg drag an
* image from Firefox to LibreOffice). However, if the target window is
* hidden, they will drag to the AppWindowButton of the target window,
* and we will open the window for them. */
this._toggleWindow(true);
return DND.DragMotionResult.NO_DROP;
},
acceptDrop: function(source, actor, x, y, time) {
return false;
},
setDisplayTitle: function() {
let title = this.metaWindow.get_title();
let tracker = Cinnamon.WindowTracker.get_default();
let app = tracker.get_window_app(this.metaWindow);
if (!title) title = app ? app.get_name() : '?';
/* Sanitize the window title to prevent dodgy window titles such as
* "); DROP TABLE windows; --. Turn all whitespaces into " " because
* newline characters are known to cause trouble. Also truncate the
* title when necessary or else cogl might get unhappy and crash
* Cinnamon. */
title = title.replace(/\s/g, " ");
if (title.length > MAX_TEXT_LENGTH)
title = title.substr(0, MAX_TEXT_LENGTH);
if (this._tooltip && this._tooltip.set_text)
this._tooltip.set_text(title);
if (this.metaWindow.minimized) {
title = "["+ title +"]";
} else if (this.metaWindow.tile_type == Meta.WindowTileType.TILED) {
title = "|"+ title;
}
else if (this.metaWindow.tile_type == Meta.WindowTileType.SNAPPED) {
title = "||"+ title;
}
this._label.set_text(title);
},
destroy: function() {
this.metaWindow.disconnect(this._updateCaptionId);
this.metaWindow.disconnect(this._updateTileTypeId);
this.metaWindow.disconnect(this._updateIconId);
this._tooltip.destroy();
if (this.rightClickMenu) {
this.rightClickMenu.destroy();
}
this.actor.destroy();
},
_hasFocus: function() {
if (this.metaWindow.minimized)
return false;
if (this.metaWindow.has_focus())
return true;
let transientHasFocus = false;
this.metaWindow.foreach_transient(function(transient) {
if (transient.has_focus()) {
transientHasFocus = true;
return false;
}
return true;
});
return transientHasFocus;
},
onFocus: function() {
if (this._hasFocus()) {
this.actor.add_style_pseudo_class('focus');
this.actor.remove_style_class_name("window-list-item-demands-attention");
this.actor.remove_style_class_name("window-list-item-demands-attention-top");
this._needsAttention = false;
if (this.alert) {
this.destroy();
this._windows.splice(this._windows.indexOf(this), 1);
}
} else {
this.actor.remove_style_pseudo_class('focus');
}
},
_onButtonRelease: function(actor, event) {
this._tooltip.hide();
if (this.alert) {
if (event.get_button() == 1)
this._toggleWindow(false);
return false;
}
if (event.get_button() == 1) {
if (this.rightClickMenu.isOpen)
this.rightClickMenu.toggle();
this._toggleWindow(false);
} else if (event.get_button() == 2 && this._applet.middleClickClose) {
this.metaWindow.delete(global.get_current_time());
}
return true;
},
_onButtonPress: function(actor, event) {
this._tooltip.hide();
if (!this.alert && event.get_button() == 3) {
this.rightClickMenu.mouseEvent = event;
this.rightClickMenu.toggle();
if (this._hasFocus()) {
this.actor.add_style_pseudo_class('focus');
}
}
},
_toggleWindow: function(fromDrag){
if (!this._hasFocus()) {
Main.activateWindow(this.metaWindow, global.get_current_time());
this.actor.add_style_pseudo_class('focus');
} else if (!fromDrag) {
this.metaWindow.minimize();
this.actor.remove_style_pseudo_class('focus');
}
},
_onIconBoxStyleChanged: function() {
let node = this._iconBox.get_theme_node();
this._iconBottomClip = node.get_length('app-icon-bottom-clip');
this._updateIconBoxClipAndGeometry();
},
_updateIconBoxClipAndGeometry: function() {
let allocation = this._iconBox.allocation;
if (this._iconBottomClip > 0)
this._iconBox.set_clip(0, 0,
allocation.x2 - allocation.x1,
allocation.y2 - allocation.y1 - this._iconBottomClip);
else
this._iconBox.remove_clip();
let rect = new Meta.Rectangle();
[rect.x, rect.y] = this.actor.get_transformed_position();
[rect.width, rect.height] = this.actor.get_transformed_size();
this.metaWindow.set_icon_geometry(rect);
},
_getPreferredWidth: function(actor, forHeight, alloc) {
let [minSize, naturalSize] = this._iconBox.get_preferred_width(forHeight);
// minimum size just enough for icon if we ever get that many apps going
alloc.min_size = naturalSize + 2 * 3 * global.ui_scale;
if (this._applet.orientation == St.Side.TOP || this._applet.orientation == St.Side.BOTTOM ) {
// the 'buttons use entire space' option only makes sense on horizontal panels
if (this._applet.buttonsUseEntireSpace) {
let [lminSize, lnaturalSize] = this._label.get_preferred_width(forHeight);
alloc.natural_size = Math.max(150 * global.ui_scale,
lnaturalSize + naturalSize + 3 * 3 * global.ui_scale);
} else {
alloc.natural_size = 150 * global.ui_scale;
}
} else {
alloc.natural_size = this._applet._panelHeight;
}
},
_getPreferredHeight: function(actor, forWidth, alloc) {
let [minSize1, naturalSize1] = this._iconBox.get_preferred_height(forWidth);
if (this.labelVisible) {
let [minSize2, naturalSize2] = this._label.get_preferred_height(forWidth);
alloc.min_size = Math.max(minSize1, minSize2);
} else {
alloc.min_size = minSize1;
}
if (this._applet.orientation == St.Side.TOP || this._applet.orientation == St.Side.BOTTOM ) {
/* putting a container around the actor for layout management reasons affects the allocation,
causing the visible border to pull in close around the contents which is not the desired
(pre-existing) behaviour, so need to push the visible border back towards the panel edge.
Assigning the natural size to the full panel height used to cause recursion errors but seems fine now.
If this happens to avoid this you can subtract 1 or 2 pixels, but this will give an unreactive
strip at the edge of the screen */
alloc.natural_size = this._applet._panelHeight;
} else {
alloc.natural_size = naturalSize1;
}
},
_allocate: function(actor, box, flags) {
let allocWidth = box.x2 - box.x1;
let allocHeight = box.y2 - box.y1;
let childBox = new Clutter.ActorBox();
let [minWidth, minHeight, naturalWidth, naturalHeight] = this._iconBox.get_preferred_size();
let direction = this.actor.get_text_direction();
let xPadding = 3 * global.ui_scale;
let yPadding = Math.floor(Math.max(0, allocHeight - naturalHeight) / 2);
childBox.y1 = yPadding;
childBox.y2 = childBox.y1 + Math.min(naturalHeight, allocHeight);
if (this.labelVisible) {
if (direction == Clutter.TextDirection.LTR) {
if (allocWidth < naturalWidth + xPadding * 2)
childBox.x1 = Math.max(0, (allocWidth - naturalWidth) / 2);
else
childBox.x1 = Math.min(allocWidth, xPadding);
childBox.x2 = Math.min(childBox.x1 + naturalWidth, allocWidth);
} else {
if (allocWidth < naturalWidth + xPadding * 2)
childBox.x1 = Math.max(0, (allocWidth - naturalWidth) / 2);
else
childBox.x1 = allocWidth - naturalWidth - xPadding;
childBox.x2 = Math.min(childBox.x1 + naturalWidth, allocWidth);
}
} else {
if (allocWidth < naturalWidth)
childBox.x1 = Math.max(0, (allocWidth - naturalWidth) / 2);
else
childBox.x1 = (allocWidth - naturalWidth) / 2;
childBox.x2 = Math.min(childBox.x1 + naturalWidth, allocWidth);
}
this._iconBox.allocate(childBox, flags);
if (this.labelVisible) {
[minWidth, minHeight, naturalWidth, naturalHeight] = this._label.get_preferred_size();
yPadding = Math.floor(Math.max(0, allocHeight - naturalHeight) / 2);
childBox.y1 = yPadding;
childBox.y2 = childBox.y1 + Math.min(naturalHeight, allocHeight);
if (direction == Clutter.TextDirection.LTR) {
// Reuse the values from the previous allocation
childBox.x1 = Math.min(childBox.x2 + xPadding, Math.max(0, allocWidth - xPadding));
childBox.x2 = Math.max(childBox.x1, allocWidth - xPadding);
} else {
childBox.x2 = Math.max(childBox.x1 - xPadding, 0);
childBox.x1 = Math.min(childBox.x2, xPadding);
}
this._label.allocate(childBox, flags);
}
if (!this.progressOverlay.visible) {
return;
}
childBox.x1 = 0;
childBox.y1 = 0;
childBox.x2 = this.actor.width;
childBox.y2 = this.actor.height;
this.progressOverlay.allocate(childBox, flags);
let clip_width = Math.max((this.actor.width) * (this._progress / 100.0), 1.0);
this.progressOverlay.set_clip(0, 0, clip_width, this.actor.height);
},
updateLabelVisible: function() {
if (this._applet.orientation == St.Side.TOP || this._applet.orientation == St.Side.BOTTOM) {
this._label.show();
this.labelVisible = true;
} else {
this._label.hide();
this.labelVisible = false;
}
},
setIcon: function() {
let tracker = Cinnamon.WindowTracker.get_default();
let app = tracker.get_window_app(this.metaWindow);
if (this._applet._scaleMode && this.labelVisible)
this.iconSize = Math.round(this._applet._panelHeight * ICON_HEIGHT_FACTOR / global.ui_scale);
else if (!this.labelVisible)
this.iconSize = Math.round(this._applet._panelHeight * VERTICAL_ICON_HEIGHT_FACTOR / global.ui_scale);
else
this.iconSize = HORIZONTAL_ICON_SIZE;
let icon = app ?
app.create_icon_texture(this.iconSize) :
new St.Icon({ icon_name: 'application-default-icon',
icon_type: St.IconType.FULLCOLOR,
icon_size: this.iconSize });
let old_child = this._iconBox.get_child();
this._iconBox.set_child(icon);
if (old_child)
old_child.destroy();
},
getAttention: function() {
if (this._needsAttention)
return false;
this._needsAttention = true;
let counter = 0;
this._flashButton(counter);
return true;
},
_flashButton: function(counter) {
if (!this._needsAttention)
return;
this.actor.add_style_class_name("window-list-item-demands-attention");
if (counter < 4) {
Mainloop.timeout_add(FLASH_INTERVAL, Lang.bind(this, function () {
if (this.actor.has_style_class_name("window-list-item-demands-attention")) {
this.actor.remove_style_class_name("window-list-item-demands-attention");
}
Mainloop.timeout_add(FLASH_INTERVAL, Lang.bind(this, function () {
this._flashButton(++counter);
}));
}));
}
}
};
function AppMenuButtonRightClickMenu(launcher, metaWindow, orientation) {
this._init(launcher, metaWindow, orientation);
}
AppMenuButtonRightClickMenu.prototype = {
__proto__: Applet.AppletPopupMenu.prototype,
_init: function(launcher, metaWindow, orientation) {
Applet.AppletPopupMenu.prototype._init.call(this, launcher, orientation);
this._launcher = launcher;
this._windows = launcher._applet._windows;
this.connect('open-state-changed', Lang.bind(this, this._onToggled));
this.orientation = orientation;
this.metaWindow = metaWindow;
},
_populateMenu: function() {
let mw = this.metaWindow;
let item;
let length;
// Move to monitor
if ((length = Main.layoutManager.monitors.length) == 2) {
Main.layoutManager.monitors.forEach(function (monitor, index) {
if (index === mw.get_monitor()) return;
item = new PopupMenu.PopupMenuItem(_("Move to the other monitor"));
item.connect('activate', function() {
mw.move_to_monitor(index);
});
this.addMenuItem(item);
}, this);
}
else if ((length = Main.layoutManager.monitors.length) > 2) {
Main.layoutManager.monitors.forEach(function (monitor, index) {
if (index === mw.get_monitor()) return;
item = new PopupMenu.PopupMenuItem(_("Move to monitor %d").format(index + 1));
item.connect('activate', function() {
mw.move_to_monitor(index);
});
this.addMenuItem(item);
}, this);
}
// Move to workspace
if ((length = global.screen.n_workspaces) > 1) {
if (mw.is_on_all_workspaces()) {
item = new PopupMenu.PopupMenuItem(_("Only on this workspace"));
item.connect('activate', function() {
mw.unstick();
});
this.addMenuItem(item);
} else {
item = new PopupMenu.PopupMenuItem(_("Visible on all workspaces"));
item.connect('activate', function() {
mw.stick();
});
this.addMenuItem(item);
item = new PopupMenu.PopupSubMenuMenuItem(_("Move to another workspace"));
this.addMenuItem(item);
let curr_index = mw.get_workspace().index();
for (let i = 0; i < length; i++) {
// Make the index a local variable to pass to function
let j = i;
let name = Main.workspace_names[i] ? Main.workspace_names[i] : Main._makeDefaultWorkspaceName(i);
let ws = new PopupMenu.PopupMenuItem(name);
if (i == curr_index)
ws.setSensitive(false);
ws.connect('activate', function() {
mw.change_workspace(global.screen.get_workspace_by_index(j));
});
item.menu.addMenuItem(ws);
}
}
}
// Preferences
let subMenu = new PopupMenu.PopupSubMenuMenuItem(_("Preferences"));
this.addMenuItem(subMenu);
item = new PopupMenu.PopupIconMenuItem(_("About..."), "dialog-question", St.IconType.SYMBOLIC);
item.connect('activate', Lang.bind(this._launcher._applet, this._launcher._applet.openAbout));
subMenu.menu.addMenuItem(item);
item = new PopupMenu.PopupIconMenuItem(_("Configure..."), "system-run", St.IconType.SYMBOLIC);
item.connect('activate', Lang.bind(this._launcher._applet, this._launcher._applet.configureApplet));
subMenu.menu.addMenuItem(item);
item = new PopupMenu.PopupIconMenuItem(_("Remove 'Window list'"), "edit-delete", St.IconType.SYMBOLIC);
item.connect('activate', Lang.bind(this, function() {
AppletManager._removeAppletFromPanel(this._launcher._applet._uuid, this._launcher._applet.instance_id);
}));
subMenu.menu.addMenuItem(item);
this.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
// Close all/others
item = new PopupMenu.PopupIconMenuItem(_("Close all"), "application-exit", St.IconType.SYMBOLIC);
item.connect('activate', Lang.bind(this, function() {
for (let window of this._windows)
if (window.actor.visible &&
!window._needsAttention)
window.metaWindow.delete(global.get_current_time());
}));
this.addMenuItem(item);
item = new PopupMenu.PopupIconMenuItem(_("Close others"), "window-close", St.IconType.SYMBOLIC);
item.connect('activate', Lang.bind(this, function() {
for (let window of this._windows)
if (window.actor.visible &&
window.metaWindow != this.metaWindow &&
!window._needsAttention)
window.metaWindow.delete(global.get_current_time());
}));
this.addMenuItem(item);
this.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
// Miscellaneous
if (mw.get_compositor_private().opacity != 255) {
item = new PopupMenu.PopupMenuItem(_("Restore to full opacity"));
item.connect('activate', function() {
mw.get_compositor_private().set_opacity(255);
});
this.addMenuItem(item);
}
if (mw.minimized) {
item = new PopupMenu.PopupIconMenuItem(_("Restore"), "view-sort-descending", St.IconType.SYMBOLIC);
item.connect('activate', function() {
Main.activateWindow(mw, global.get_current_time());
});
} else {
item = new PopupMenu.PopupIconMenuItem(_("Minimize"), "view-sort-ascending", St.IconType.SYMBOLIC);
item.connect('activate', function() {
mw.minimize();
});
}
this.addMenuItem(item);
if (mw.get_maximized()) {
item = new PopupMenu.PopupIconMenuItem(_("Unmaximize"), "view-restore", St.IconType.SYMBOLIC);
item.connect('activate', function() {
mw.unmaximize(Meta.MaximizeFlags.HORIZONTAL | Meta.MaximizeFlags.VERTICAL);
});
} else {
item = new PopupMenu.PopupIconMenuItem(_("Maximize"), "view-fullscreen", St.IconType.SYMBOLIC);
item.connect('activate', function() {
mw.maximize(Meta.MaximizeFlags.HORIZONTAL | Meta.MaximizeFlags.VERTICAL);
});
}
this.addMenuItem(item);
item = new PopupMenu.PopupIconMenuItem(_("Close"), "edit-delete", St.IconType.SYMBOLIC);
item.connect('activate', function() {
mw.delete(global.get_current_time());
});
this.addMenuItem(item);
},
_onToggled: function(actor, isOpening){
if (this.isOpen)
this._launcher._applet._menuOpen = true;
else
this._launcher._applet._menuOpen = false;
},
toggle: function() {
if (!this.isOpen) {
this.removeAll();
this._populateMenu();
}
Applet.AppletPopupMenu.prototype.toggle.call(this);
},
};
function MyApplet(orientation, panel_height, instance_id) {
this._init(orientation, panel_height, instance_id);
}
MyApplet.prototype = {
__proto__: Applet.Applet.prototype,
_init: function(orientation, panel_height, instance_id) {
Applet.Applet.prototype._init.call(this, orientation, panel_height, instance_id);
this.setAllowedLayout(Applet.AllowedLayout.BOTH);
this.actor.set_track_hover(false);
this.actor.set_style_class_name("window-list-box");
this.orientation = orientation;
this.appletEnabled = false;
//
// A layout manager is used to cater for vertical panels as well as horizontal
//
let manager;
if (this.orientation == St.Side.TOP || this.orientation == St.Side.BOTTOM) {
manager = new Clutter.BoxLayout( { orientation: Clutter.Orientation.HORIZONTAL });
} else {
manager = new Clutter.BoxLayout( { orientation: Clutter.Orientation.VERTICAL });
this.actor.add_style_class_name("vertical");
}
this.manager = manager;
this.manager_container = new Clutter.Actor( { layout_manager: manager } );
this.actor.add_actor (this.manager_container);
this.dragInProgress = false;
this._tooltipShowing = false;
this._tooltipErodeTimer = null;
this._menuOpen = false;
this._urgentSignal = null;
this._windows = [];
this._monitorWatchList = [];
this.settings = new Settings.AppletSettings(this, "window-list@cinnamon.org", this.instance_id);
this.settings.bind("show-all-workspaces", "showAllWorkspaces");
this.settings.bind("enable-alerts", "enableAlerts", this._updateAttentionGrabber);
this.settings.bind("enable-scrolling", "scrollable", this._onEnableScrollChanged);
this.settings.bind("reverse-scrolling", "reverseScroll");
this.settings.bind("middle-click-close", "middleClickClose");
this.settings.bind("buttons-use-entire-space", "buttonsUseEntireSpace", this._refreshAllItems);
this.settings.bind("window-preview", "usePreview", this._onPreviewChanged);
this.signals = new SignalManager.SignalManager(null);
let tracker = Cinnamon.WindowTracker.get_default();
this.signals.connect(tracker, "notify::focus-app", this._onFocus, this);
this.signals.connect(global.screen, 'window-added', this._onWindowAdded, this);
this.signals.connect(global.screen, 'window-removed', this._onWindowRemoved, this);
this.signals.connect(global.screen, 'window-monitor-changed', this._onWindowMonitorChanged, this);
this.signals.connect(global.screen, 'window-workspace-changed', this._onWindowWorkspaceChanged, this);
this.signals.connect(global.screen, 'window-skip-taskbar-changed', this._onWindowSkipTaskbarChanged, this);
this.signals.connect(global.screen, 'monitors-changed', this._updateWatchedMonitors, this);
this.signals.connect(global.window_manager, 'switch-workspace', this._refreshAllItems, this);
this.signals.connect(global.window_manager, 'minimize', this._onWindowStateChange, this);
this.signals.connect(global.window_manager, 'maximize', this._onWindowStateChange, this);
this.signals.connect(global.window_manager, 'unmaximize', this._onWindowStateChange, this);
this.signals.connect(global.window_manager, 'map', this._onWindowStateChange, this);
this.signals.connect(global.window_manager, 'tile', this._onWindowStateChange, this);
this.actor.connect('style-changed', Lang.bind(this, this._updateSpacing));
global.settings.bind("panel-edit-mode", this.actor, "reactive", Gio.SettingsBindFlags.DEFAULT);
this.on_orientation_changed(orientation);
this._updateAttentionGrabber();
},
on_applet_added_to_panel: function(userEnabled) {
this._updateSpacing();
this.appletEnabled = true;
},
on_applet_removed_from_panel: function() {
this.signals.disconnectAllSignals();
},
on_applet_instances_changed: function() {
this._updateWatchedMonitors();
},
on_panel_height_changed: function() {
this._refreshAllItems();
},
on_orientation_changed: function(orientation) {
this.orientation = orientation;
for (let window of this._windows)
window.updateLabelVisible();
if (orientation == St.Side.TOP || orientation == St.Side.BOTTOM) {
this.manager.set_vertical(false);
this._reTitleItems();
this.actor.remove_style_class_name("vertical");
} else {
this.manager.set_vertical(true);
this.actor.add_style_class_name("vertical");
this.actor.set_x_align(Clutter.ActorAlign.CENTER);
this.actor.set_important(true);
}
// Any padding/margin is removed on one side so that the AppMenuButton
// boxes butt up against the edge of the screen
if (orientation == St.Side.TOP) {
for (let child of this.manager_container.get_children()) {
child.set_style_class_name('window-list-item-box top');
child.set_style('margin-top: 0px; padding-top: 0px;');
}
this.actor.set_style('margin-top: 0px; padding-top: 0px;');
} else if (orientation == St.Side.BOTTOM) {
for (let child of this.manager_container.get_children()) {
child.set_style_class_name('window-list-item-box bottom');
child.set_style('margin-bottom: 0px; padding-bottom: 0px;');
}
this.actor.set_style('margin-bottom: 0px; padding-bottom: 0px;');
} else if (orientation == St.Side.LEFT) {
for (let child of this.manager_container.get_children()) {
child.set_style_class_name('window-list-item-box left');
child.set_style('margin-left 0px; padding-left: 0px; padding-right: 0px; margin-right: 0px;');
child.set_x_align(Clutter.ActorAlign.CENTER);
}
this.actor.set_style('margin-left: 0px; padding-left: 0px; padding-right: 0px; margin-right: 0px;');
} else if (orientation == St.Side.RIGHT) {
for (let child of this.manager_container.get_children()) {
child.set_style_class_name('window-list-item-box right');
child.set_style('margin-left: 0px; padding-left: 0px; padding-right: 0px; margin-right: 0px;');
child.set_x_align(Clutter.ActorAlign.CENTER);
}
this.actor.set_style('margin-right: 0px; padding-right: 0px; padding-left: 0px; margin-left: 0px;');
}
if (this.appletEnabled) {
this._updateSpacing();
}
},
_updateSpacing: function() {
let themeNode = this.actor.get_theme_node();
let spacing = themeNode.get_length('spacing');
this.manager.set_spacing(spacing * global.ui_scale);
},
_onWindowAdded: function(screen, metaWindow, monitor) {
if (this._shouldAdd(metaWindow))
this._addWindow(metaWindow, false);
},
_onWindowRemoved: function(screen, metaWindow) {
this._removeWindow(metaWindow);
},
_onWindowMonitorChanged: function(screen, metaWindow, monitor) {
if (this._shouldAdd(metaWindow))
this._addWindow(metaWindow, false);
else
this._removeWindow(metaWindow);
},
_onWindowWorkspaceChanged: function(screen, metaWindow, metaWorkspace) {
let window = this._windows.find(win => (win.metaWindow == metaWindow));
if (window)
this._refreshItem(window);
},
_onWindowSkipTaskbarChanged: function(screen, metaWindow) {
let window = this._windows.find(win => (win.metaWindow == metaWindow));
if (window && !Main.isInteresting(metaWindow)) {
this._removeWindow(metaWindow);
return;
}
this._onWindowAdded(screen, metaWindow, 0);
},
_updateAttentionGrabber: function() {
if (this.enableAlerts) {
this.signals.connect(global.display, "window-marked-urgent", this._onWindowDemandsAttention, this);
this.signals.connect(global.display, "window-demands-attention", this._onWindowDemandsAttention, this);
} else {
this.signals.disconnect("window-marked-urgent");
this.signals.disconnect("window-demands-attention");
}
},
_onEnableScrollChanged: function() {
for (let window of this._windows)
window.onScrollModeChanged();
},
_onPreviewChanged: function() {
for (let window of this._windows)
window.onPreviewChanged();
},
_onWindowDemandsAttention : function(display, window) {
// Magic to look for AppMenuButton owning window
let i = this._windows.length;
while (i-- && this._windows[i].metaWindow != window);
// Window is not in our list
if (i == -1)
return;
// Asks AppMenuButton to flash. Returns false if already flashing
if (!this._windows[i].getAttention())
return;
if (window.get_workspace() != global.screen.get_active_workspace())
this._addWindow(window, true);
},
_onFocus: function() {
for (let window of this._windows)
window.onFocus();
},
_refreshItem: function(window) {
window.actor.visible =
(window.metaWindow.get_workspace() == global.screen.get_active_workspace()) ||
window.metaWindow.is_on_all_workspaces() ||
this.showAllWorkspaces;
/* The above calculates the visibility if it were the normal
* AppMenuButton. If this is actually a temporary AppMenuButton for
* urgent windows on other workspaces, it is shown iff the normal
* one isn't shown! */
if (window.alert)
window.actor.visible = !window.actor.visible;
},
_refreshAllItems: function() {
for (let window of this._windows) {
this._refreshItem(window);
}
this._onFocus();
},
_reTitleItems: function() {
for (let window of this._windows) {
window.setDisplayTitle();
}
},
_onWindowStateChange: function(cinnamonwm, actor) {
for (let window of this._windows)
if (window.metaWindow == actor.metaWindow)
window.setDisplayTitle();
},
// Used by windowManager for traditional minimize and map effect
getOriginFromWindow: function(metaWindow) {
for (let window of this._windows)
if (window.metaWindow == metaWindow)
return window.actor;
return false;
},
_updateWatchedMonitors: function() {
let n_mons = Gdk.Screen.get_default().get_n_monitors();
let on_primary = this.panel.monitorIndex == Main.layoutManager.primaryIndex;
let instances = Main.AppletManager.getRunningInstancesForUuid(this._uuid);
/* Simple cases */
if (n_mons == 1) {
this._monitorWatchList = [Main.layoutManager.primaryIndex];
} else if (instances.length > 1 && !on_primary) {
this._monitorWatchList = [this.panel.monitorIndex];
} else {
/* This is an instance on the primary monitor - it will be
* responsible for any monitors not covered individually. First
* convert the instances list into a list of the monitor indices,
* and then add the monitors not present to the monitor watch list
* */
this._monitorWatchList = [this.panel.monitorIndex];
instances = instances.map(function(x) {
return x.panel.monitorIndex;
});
for (let i = 0; i < n_mons; i++)
if (instances.indexOf(i) == -1)
this._monitorWatchList.push(i);
}
// Now track the windows in our favorite monitors
let windows = global.display.list_windows(0);
if (this.showAllWorkspaces) {
for (let wks=0; wks this.manager_container.width;
this._dragPlaceholderPos = -1
for (let i = children.length - 1; i >= 0; i--) {
if (!children[i].visible)
continue;
if (isVertical) {
if (y > children[i].get_allocation_box().y1) {
this._dragPlaceholderPos = i;
break;
}
} else if (x > children[i].get_allocation_box().x1) {
this._dragPlaceholderPos = i;
break;
}
}
source.actor.hide();
if (this._dragPlaceholder == undefined) {
this._dragPlaceholder = new DND.GenericDragPlaceholderItem();
this._dragPlaceholder.child.set_width (source.actor.width);
this._dragPlaceholder.child.set_height (source.actor.height);
this.manager_container.insert_child_at_index(this._dragPlaceholder.actor,
this._dragPlaceholderPos);
} else {
this.manager_container.set_child_at_index(this._dragPlaceholder.actor,
this._dragPlaceholderPos);
}
return DND.DragMotionResult.MOVE_DROP;
},
acceptDrop: function(source, actor, x, y, time) {
if (!(source instanceof AppMenuButton)) return false;
if (this._dragPlaceholderPos == undefined) return false;
this.manager_container.set_child_at_index(source.actor, this._dragPlaceholderPos);
return true;
},
clearDragPlaceholder: function() {
if (this._dragPlaceholder) {
this._dragPlaceholder.actor.destroy();
this._dragPlaceholder = undefined;
this._dragPlaceholderPos = undefined;
}
},
erodeTooltip: function() {
if (this._tooltipErodeTimer) {
Mainloop.source_remove(this._tooltipErodeTimer);
this._tooltipErodeTimer = null;
}
this._tooltipErodeTimer = Mainloop.timeout_add(300, Lang.bind(this, function() {
this._tooltipShowing = false;
this._tooltipErodeTimer = null;
return false;
}));
},
cancelErodeTooltip: function() {
if (this._tooltipErodeTimer) {
Mainloop.source_remove(this._tooltipErodeTimer);
this._tooltipErodeTimer = null;
}
}
};
function main(metadata, orientation, panel_height, instance_id) {
let myApplet = new MyApplet(orientation, panel_height, instance_id);
return myApplet;
}
Cinnamon-3.6.7/files/usr/share/cinnamon/applets/panel-launchers@cinnamon.org/ 0000775 0001750 0001750 00000000000 13215735076 026207 5 ustar fabio fabio Cinnamon-3.6.7/files/usr/share/cinnamon/applets/panel-launchers@cinnamon.org/settings-schema.json 0000664 0001750 0001750 00000000551 13215735076 032201 0 ustar fabio fabio {
"section1": {
"type": "section",
"description": "Behavior"
},
"launcherList": {
"type": "generic",
"default": ["firefox.desktop", "gnome-terminal.desktop", "nemo.desktop"]
},
"allow-dragging": {
"type": "switch",
"default": true,
"description": "Allow dragging of launchers"
}
}
Cinnamon-3.6.7/files/usr/share/cinnamon/applets/panel-launchers@cinnamon.org/metadata.json 0000664 0001750 0001750 00000000322 13215735076 030657 0 ustar fabio fabio {
"uuid": "panel-launchers@cinnamon.org",
"name": "Panel launchers",
"description": "Launch applications from the panel",
"icon": "cinnamon-panel-launcher",
"role": "panellauncher",
"max-instances": -1
}
Cinnamon-3.6.7/files/usr/share/cinnamon/applets/panel-launchers@cinnamon.org/applet.js 0000664 0001750 0001750 00000057124 13215735076 030043 0 ustar fabio fabio const Applet = imports.ui.applet;
const AppletManager = imports.ui.appletManager;
const St = imports.gi.St;
const Cinnamon = imports.gi.Cinnamon;
const Lang = imports.lang;
const Gio = imports.gi.Gio;
const PopupMenu = imports.ui.popupMenu;
const GLib = imports.gi.GLib;
const Tooltips = imports.ui.tooltips;
const DND = imports.ui.dnd;
const Tweener = imports.ui.tweener;
const Util = imports.misc.util;
const Settings = imports.ui.settings;
const Signals = imports.signals;
const DEFAULT_ICON_SIZE = 20;
const ICON_HEIGHT_FACTOR = 0.8;
const PANEL_EDIT_MODE_KEY = 'panel-edit-mode';
const PANEL_LAUNCHERS_KEY = 'panel-launchers';
const CUSTOM_LAUNCHERS_PATH = GLib.get_home_dir() + '/.cinnamon/panel-launchers';
let pressLauncher = null;
function PanelAppLauncherMenu(launcher, orientation) {
this._init(launcher, orientation);
}
PanelAppLauncherMenu.prototype = {
__proto__: Applet.AppletPopupMenu.prototype,
_init: function(launcher, orientation) {
this._launcher = launcher;
Applet.AppletPopupMenu.prototype._init.call(this, launcher, orientation);
let appinfo = this._launcher.getAppInfo();
this._actions = appinfo.list_actions();
if (this._actions.length > 0) {
for (let i = 0; i < this._actions.length; i++) {
let actionName = this._actions[i];
this.addAction(appinfo.get_action_name(actionName), Lang.bind(this, this._launchAction, actionName));
}
this.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
}
let item = new PopupMenu.PopupIconMenuItem(_("Launch"), "media-playback-start", St.IconType.SYMBOLIC);
item.connect('activate', Lang.bind(this, this._onLaunchActivate));
this.addMenuItem(item);
item = new PopupMenu.PopupIconMenuItem(_("Add"), "list-add", St.IconType.SYMBOLIC);
item.connect('activate', Lang.bind(this, this._onAddActivate));
this.addMenuItem(item);
item = new PopupMenu.PopupIconMenuItem(_("Edit"), "document-properties", St.IconType.SYMBOLIC);
item.connect('activate', Lang.bind(this, this._onEditActivate));
this.addMenuItem(item);
item = new PopupMenu.PopupIconMenuItem(_("Remove"), "window-close", St.IconType.SYMBOLIC);
item.connect('activate', Lang.bind(this, this._onRemoveActivate));
this.addMenuItem(item);
this.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
let subMenu = new PopupMenu.PopupSubMenuMenuItem(_("Preferences"));
this.addMenuItem(subMenu);
item = new PopupMenu.PopupIconMenuItem(_("About..."), "dialog-question", St.IconType.SYMBOLIC);
item.connect('activate', Lang.bind(this._launcher._applet, this._launcher._applet.openAbout));
subMenu.menu.addMenuItem(item);
item = new PopupMenu.PopupIconMenuItem(_("Configure..."), "system-run", St.IconType.SYMBOLIC);
item.connect('activate', Lang.bind(this._launcher._applet, this._launcher._applet.configureApplet));
subMenu.menu.addMenuItem(item);
item = new PopupMenu.PopupIconMenuItem(_("Remove '%s'").format(_("Panel launchers")), "edit-delete", St.IconType.SYMBOLIC);
item.connect('activate', Lang.bind(this, function() {
AppletManager._removeAppletFromPanel(this._launcher._applet._uuid, this._launcher._applet.instance_id);
}));
subMenu.menu.addMenuItem(item);
},
_onLaunchActivate: function(item, event) {
this._launcher.launch();
},
_onRemoveActivate: function(item, event) {
this.close();
this._launcher.launchersBox.removeLauncher(this._launcher, this._launcher.isCustom());
this._launcher.actor.destroy();
},
_onAddActivate: function(item, event) {
this._launcher.launchersBox.showAddLauncherDialog(event.get_time());
},
_onEditActivate: function(item, event) {
this._launcher.launchersBox.showAddLauncherDialog(event.get_time(), this._launcher);
},
_launchAction: function(event, name) {
this._launcher.launchAction(name);
}
};
function PanelAppLauncher(launchersBox, app, appinfo, orientation, panel_height, scale) {
this._init(launchersBox, app, appinfo, orientation, panel_height, scale);
}
PanelAppLauncher.prototype = {
__proto__: DND.LauncherDraggable.prototype,
_init: function(launchersBox, app, appinfo, orientation, panel_height, scale) {
DND.LauncherDraggable.prototype._init.call(this);
this.app = app;
this.appinfo = appinfo;
this.launchersBox = launchersBox;
this._applet = launchersBox;
this.orientation = orientation;
this.actor = new St.Bin({ style_class: 'launcher',
important: true,
reactive: true,
can_focus: true,
x_fill: true,
y_fill: true,
track_hover: true });
this.actor._delegate = this;
this.actor.connect('button-release-event', Lang.bind(this, this._onButtonRelease));
this.actor.connect('button-press-event', Lang.bind(this, this._onButtonPress));
this._iconBox = new St.Bin({ style_class: 'icon-box',
important: true });
this._iconBox.connect('style-changed',
Lang.bind(this, this._onIconBoxStyleChanged));
this._iconBox.connect('notify::allocation',
Lang.bind(this, this._updateIconBoxClip));
this.actor.add_actor(this._iconBox);
this._iconBottomClip = 0;
if (scale) {
this.icon_height = Math.floor((panel_height * ICON_HEIGHT_FACTOR) / global.ui_scale);
} else {
this.icon_height = DEFAULT_ICON_SIZE;
}
this.icon = this._getIconActor();
this._iconBox.set_child(this.icon);
this._menuManager = new PopupMenu.PopupMenuManager(this);
this._menu = new PanelAppLauncherMenu(this, orientation);
this._menuManager.addMenu(this._menu);
let tooltipText = this.isCustom() ? appinfo.get_name() : app.get_name();
this._tooltip = new Tooltips.PanelItemTooltip(this, tooltipText, orientation);
this._dragging = false;
this._draggable = DND.makeDraggable(this.actor);
this._draggable.connect('drag-begin', Lang.bind(this, this._onDragBegin));
this._draggable.connect('drag-cancelled', Lang.bind(this, this._onDragCancelled));
this._draggable.connect('drag-end', Lang.bind(this, this._onDragEnd));
this._updateInhibit();
this.launchersBox.connect("launcher-draggable-setting-changed", Lang.bind(this, this._updateInhibit));
global.settings.connect('changed::' + PANEL_EDIT_MODE_KEY, Lang.bind(this, this._updateInhibit));
},
_onDragBegin: function() {
this._dragging = true;
this._tooltip.hide();
this._tooltip.preventShow = true;
},
_onDragEnd: function() {
this._dragging = false;
this._tooltip.preventShow = false;
this._applet._clearDragPlaceholder();
},
_onDragCancelled: function() {
this._dragging = false;
this._tooltip.preventShow = false;
},
_updateInhibit: function(){
let editMode = global.settings.get_boolean(PANEL_EDIT_MODE_KEY);
this._draggable.inhibit = !this.launchersBox.allowDragging || editMode;
this.actor.reactive = !editMode;
},
getDragActor: function() {
return this._getIconActor();
},
// Returns the original actor that should align with the actor
// we show as the item is being dragged.
getDragActorSource: function() {
return this.icon;
},
_getIconActor: function() {
if (this.isCustom()) {
let icon = this.appinfo.get_icon();
if (icon == null)
icon = new Gio.ThemedIcon({name: "gnome-panel-launcher"});
return new St.Icon({gicon: icon, icon_size: this.icon_height, icon_type: St.IconType.FULLCOLOR});
} else {
return this.app.create_icon_texture(this.icon_height);
}
},
_animateIcon: function(step) {
if (step >= 3) return;
this.icon.set_pivot_point(0.5, 0.5);
Tweener.addTween(this.icon,
{ scale_x: 0.7,
scale_y: 0.7,
time: 0.2,
transition: 'easeOutQuad',
onComplete: function() {
Tweener.addTween(this.icon,
{ scale_x: 1.0,
scale_y: 1.0,
time: 0.2,
transition: 'easeOutQuad',
onComplete: function() {
this._animateIcon(step + 1);
},
onCompleteScope: this
});
},
onCompleteScope: this
});
},
launch: function() {
let allocation = this._iconBox.get_allocation_box();
this._iconBox.width = allocation.x2 - allocation.x1;
this._iconBox.height = allocation.y2 - allocation.y1;
this._animateIcon(0);
if (this.isCustom()) this.appinfo.launch([], null);
else this.app.open_new_window(-1);
},
launchAction: function(name) {
let allocation = this._iconBox.get_allocation_box();
this._iconBox.width = allocation.x2 - allocation.x1;
this._iconBox.height = allocation.y2 - allocation.y1;
this._animateIcon(0);
this.getAppInfo().launch_action(name, null);
},
getId: function() {
if (this.isCustom()) return Gio.file_new_for_path(this.appinfo.get_filename()).get_basename();
else return this.app.get_id();
},
isCustom: function() {
return (this.app==null);
},
_onButtonPress: function(actor, event) {
pressLauncher = this.getAppname();
if (event.get_button() == 3)
this._menu.toggle();
},
_onButtonRelease: function(actor, event) {
if (pressLauncher == this.getAppname()){
let button = event.get_button();
if (button==1) {
if (this._menu.isOpen) this._menu.toggle();
else this.launch();
}
}
},
_onIconBoxStyleChanged: function() {
let node = this._iconBox.get_theme_node();
this._iconBottomClip = node.get_length('panel-launcher-bottom-clip');
this._updateIconBoxClip();
},
_updateIconBoxClip: function() {
let allocation = this._iconBox.allocation;
if (this._iconBottomClip > 0)
this._iconBox.set_clip(0, 0, allocation.x2 - allocation.x1, allocation.y2 - allocation.y1 - this._iconBottomClip);
else
this._iconBox.remove_clip();
},
getAppInfo: function() {
return (this.isCustom() ? this.appinfo : this.app.get_app_info());
},
getCommand: function() {
return this.getAppInfo().get_commandline();
},
getAppname: function() {
return this.getAppInfo().get_name();
},
getIcon: function() {
let icon = this.getAppInfo().get_icon();
if (icon) {
if (icon instanceof Gio.FileIcon) {
return icon.get_file().get_path();
}
else {
return icon.get_names().toString();
}
}
return null;
}
};
function MyApplet(metadata, orientation, panel_height, instance_id) {
this._init(metadata, orientation, panel_height, instance_id);
}
MyApplet.prototype = {
__proto__: Applet.Applet.prototype,
_init: function(metadata, orientation, panel_height, instance_id) {
Applet.Applet.prototype._init.call(this, orientation, panel_height, instance_id);
this.actor.set_track_hover(false);
this.setAllowedLayout(Applet.AllowedLayout.BOTH);
this.orientation = orientation;
this._dragPlaceholder = null;
this._dragPlaceholderPos = -1;
this._animatingPlaceholdersCount = 0;
this.myactor = new St.BoxLayout({ style_class: 'panel-launchers',
important: true });
this.settings = new Settings.AppletSettings(this, metadata.uuid, instance_id);
this.settings.bind("launcherList", "launcherList", this._onSettingsChanged);
this.settings.bind("allow-dragging", "allowDragging", this._updateLauncherDrag);
this.uuid = metadata.uuid;
this._settings_proxy = [];
this._launchers = [];
this.actor.add(this.myactor);
this.actor.reactive = global.settings.get_boolean(PANEL_EDIT_MODE_KEY);
global.settings.connect('changed::' + PANEL_EDIT_MODE_KEY, Lang.bind(this, this._onPanelEditModeChanged));
this.do_gsettings_import();
this.on_orientation_changed(orientation);
},
_updateLauncherDrag: function() {
this.emit("launcher-draggable-setting-changed");
},
do_gsettings_import: function() {
let old_launchers = global.settings.get_strv(PANEL_LAUNCHERS_KEY);
if (old_launchers.length >= 1 && old_launchers[0] != "DEPRECATED") {
this.launcherList = old_launchers;
}
global.settings.set_strv(PANEL_LAUNCHERS_KEY, ["DEPRECATED"]);
},
_onPanelEditModeChanged: function() {
this.actor.reactive = global.settings.get_boolean(PANEL_EDIT_MODE_KEY);
},
_onSettingsChanged: function() {
this.reload();
},
sync_settings_proxy_to_settings: function() {
this.launcherList = this._settings_proxy.map(x => x.file);
},
_remove_launcher_from_proxy: function(visible_index) {
let j = -1;
for (let i = 0; i < this._settings_proxy.length; i++) {
if (this._settings_proxy[i].valid) {
j++;
if (j == visible_index) {
this._settings_proxy.splice(i, 1);
break;
}
}
}
},
_move_launcher_in_proxy: function(launcher, new_index) {
let proxy_member;
for (let i = 0; i < this._settings_proxy.length; i++) {
if (this._settings_proxy[i].launcher == launcher) {
proxy_member = this._settings_proxy.splice(i, 1)[0];
break;
}
}
if (!proxy_member)
return;
let j = -1;
for (let i = 0; i < this._settings_proxy.length; i++) {
if (this._settings_proxy[i].valid) {
j++;
if (j == new_index) {
this._settings_proxy.splice(i, 0, proxy_member);
return;
}
}
}
if (new_index == j + 1)
this._settings_proxy.push(proxy_member);
},
loadSingleApp: function(path) {
let appSys = Cinnamon.AppSystem.get_default();
let app = appSys.lookup_app(path);
let appinfo = null;
if (!app)
appinfo = Gio.DesktopAppInfo.new_from_filename(CUSTOM_LAUNCHERS_PATH+"/"+path);
return [app, appinfo];
},
on_panel_height_changed: function() {
this.reload();
},
on_orientation_changed: function(neworientation) {
this.orientation = neworientation;
if (this.orientation == St.Side.TOP || this.orientation == St.Side.BOTTOM) {
this.myactor.remove_style_class_name('vertical');
this.myactor.set_vertical(false);
this.myactor.set_x_expand(false);
this.myactor.set_y_expand(true);
} else {
this.myactor.add_style_class_name('vertical');
this.myactor.set_vertical(true);
this.myactor.set_x_expand(true);
this.myactor.set_y_expand(false);
}
this.reload();
},
reload: function() {
this.myactor.destroy_all_children();
this._launchers = [];
this._settings_proxy = [];
for (let file of this.launcherList) {
let [app, appinfo] = this.loadSingleApp(file);
if (app || appinfo) {
let launcher = new PanelAppLauncher(this, app, appinfo,
this.orientation, this._panelHeight, this._scaleMode);
this.myactor.add(launcher.actor);
this._launchers.push(launcher);
this._settings_proxy.push({ file: file, valid: true, launcher: launcher });
} else {
this._settings_proxy.push({ file: file, valid: false });
}
}
},
removeLauncher: function(launcher, delete_file) {
let i = this._launchers.indexOf(launcher);
if (i >= 0) {
launcher.actor.destroy();
this._launchers.splice(i, 1);
this._remove_launcher_from_proxy(i);
}
if (delete_file) {
let appid = launcher.getId();
let file = Gio.file_new_for_path(CUSTOM_LAUNCHERS_PATH+"/"+appid);
if (file.query_exists(null)) file.delete(null);
}
this.sync_settings_proxy_to_settings();
},
getDummyLauncher: function(path) {
let [app, appinfo] = this.loadSingleApp(path);
let dummy;
if (app || appinfo) {
dummy = new PanelAppLauncher(this, app, appinfo, this.orientation, this._panelHeight);
}
if (dummy && dummy.actor)
return dummy.actor;
else
return null;
},
acceptNewLauncher: function(path) {
this.myactor.add(this.getDummyLauncher(path));
let launchers = this.launcherList;
launchers.push(path);
this.launcherList = launchers;
this.reload();
},
addForeignLauncher: function(path, position, source) {
this.myactor.insert_child_at_index(this.getDummyLauncher(path), position);
this._settings_proxy.splice(position, 0, { file: path, valid: true });
this.sync_settings_proxy_to_settings();
},
moveLauncher: function(launcher, pos) {
let origpos = this._launchers.indexOf(launcher);
if (origpos >= 0) {
launcher.actor.destroy();
this.myactor.insert_child_at_index(this.getDummyLauncher(launcher.getId()), pos);
this._launchers.splice(origpos, 1);
this._move_launcher_in_proxy(launcher, pos);
this.sync_settings_proxy_to_settings();
this.reload(); // overkill really, but a way of getting the scaled size right
}
},
showAddLauncherDialog: function(timestamp, launcher){
if (launcher) {
Util.spawnCommandLine("cinnamon-desktop-editor -mcinnamon-launcher -f" + launcher.getId() + " " + this.settings.file.get_path());
} else {
Util.spawnCommandLine("cinnamon-desktop-editor -mcinnamon-launcher " + this.settings.file.get_path());
}
},
_clearDragPlaceholder: function() {
if (this._dragPlaceholder) {
this._dragPlaceholder.animateOutAndDestroy();
this._dragPlaceholder = null;
this._dragPlaceholderPos = -1;
}
},
handleDragOver: function(source, actor, x, y, time) {
if (!(source.isDraggableApp || (source instanceof DND.LauncherDraggable))) return DND.DragMotionResult.NO_DROP;
let children = this.myactor.get_children();
let numChildren = children.length;
let boxWidth;
let vertical = false;
if (this.myactor.height > this.myactor.width) { // assume oriented vertically
vertical = true;
boxWidth = this.myactor.height;
if (this._dragPlaceholder) {
boxWidth -= this._dragPlaceholder.actor.height;
numChildren--;
}
} else {
boxWidth = this.myactor.width;
if (this._dragPlaceholder) {
boxWidth -= this._dragPlaceholder.actor.width;
numChildren--;
}
}
let launcherPos = this._launchers.indexOf(source);
let pos;
if (vertical)
pos = Math.round(y * numChildren / boxWidth);
else
pos = Math.round(x * numChildren / boxWidth);
if (pos != this._dragPlaceholderPos && pos <= numChildren) {
if (this._animatingPlaceholdersCount > 0) {
let launchersChildren = children.filter(function(actor) {
return actor._delegate instanceof DND.LauncherDraggable;
});
this._dragPlaceholderPos = children.indexOf(launchersChildren[pos]);
} else {
this._dragPlaceholderPos = pos;
}
// Don't allow positioning before or after self
if (launcherPos != -1 && pos == launcherPos) {
if (this._dragPlaceholder) {
this._dragPlaceholder.animateOutAndDestroy();
this._animatingPlaceholdersCount++;
this._dragPlaceholder.actor.connect('destroy',
Lang.bind(this, function() {
this._animatingPlaceholdersCount--;
}));
}
this._dragPlaceholder = null;
return DND.DragMotionResult.CONTINUE;
}
// If the placeholder already exists, we just move
// it, but if we are adding it, expand its size in
// an animation
let fadeIn;
if (this._dragPlaceholder) {
this._dragPlaceholder.actor.destroy();
fadeIn = false;
} else {
fadeIn = true;
}
this._dragPlaceholder = new DND.GenericDragPlaceholderItem();
this._dragPlaceholder.child.set_width (20);
this._dragPlaceholder.child.set_height (10);
this.myactor.insert_child_at_index(this._dragPlaceholder.actor,
this._dragPlaceholderPos);
if (fadeIn) this._dragPlaceholder.animateIn();
}
if (source instanceof DND.LauncherDraggable && source.launchersBox == this)
return DND.DragMotionResult.MOVE_DROP;
return DND.DragMotionResult.COPY_DROP;
},
acceptDrop: function(source, actor, x, y, time) {
if (!(source.isDraggableApp || (source instanceof DND.LauncherDraggable))) return DND.DragMotionResult.NO_DROP;
let sourceId;
if (source instanceof DND.LauncherDraggable) sourceId = source.getId();
else sourceId = source.get_app_id();
let launcherPos = 0;
let children = this.myactor.get_children();
for (let i = 0; i < this._dragPlaceholderPos; i++) {
if (this._dragPlaceholder &&
children[i] == this._dragPlaceholder.actor)
continue;
if (source === children[i]._delegate)
continue;
launcherPos++;
}
if (source instanceof DND.LauncherDraggable && source.launchersBox == this)
this.moveLauncher(source, launcherPos);
else {
if (source instanceof DND.LauncherDraggable)
source.launchersBox.removeLauncher(source, false);
this.addForeignLauncher(sourceId, launcherPos, source);
}
actor.destroy();
return true;
}
};
Signals.addSignalMethods(MyApplet.prototype);
function main(metadata, orientation, panel_height, instance_id) {
let myApplet = new MyApplet(metadata, orientation, panel_height, instance_id);
return myApplet;
}
Cinnamon-3.6.7/files/usr/share/cinnamon/applets/power@cinnamon.org/ 0000775 0001750 0001750 00000000000 13215735076 024262 5 ustar fabio fabio Cinnamon-3.6.7/files/usr/share/cinnamon/applets/power@cinnamon.org/settings-schema.json 0000664 0001750 0001750 00000000532 13215735076 030253 0 ustar fabio fabio {
"labelinfo": {
"type": "combobox",
"description": "Display",
"default": "nothing",
"options" : {
"Show percentage": "percentage",
"Show time remaining": "time",
"Show percentage and time remaining": "percentage_time",
"Hide label": "nothing"
}
}
}
Cinnamon-3.6.7/files/usr/share/cinnamon/applets/power@cinnamon.org/metadata.json 0000664 0001750 0001750 00000000222 13215735076 026731 0 ustar fabio fabio {
"uuid": "power@cinnamon.org",
"name": "Power Manager",
"description": "Cinnamon power management applet",
"icon": "battery-full-charging"
}
Cinnamon-3.6.7/files/usr/share/cinnamon/applets/power@cinnamon.org/applet.js 0000664 0001750 0001750 00000051672 13215735076 026120 0 ustar fabio fabio const Applet = imports.ui.applet;
const Clutter = imports.gi.Clutter;
const Gio = imports.gi.Gio;
const Interfaces = imports.misc.interfaces
const Lang = imports.lang;
const St = imports.gi.St;
const Tooltips = imports.ui.tooltips;
const PopupMenu = imports.ui.popupMenu;
const Pango = imports.gi.Pango;
const Main = imports.ui.main;
const Settings = imports.ui.settings;
const GnomeSession = imports.misc.gnomeSession;
const BrightnessBusName = "org.cinnamon.SettingsDaemon.Power.Screen";
const KeyboardBusName = "org.cinnamon.SettingsDaemon.Power.Keyboard";
const PANEL_EDIT_MODE_KEY = "panel-edit-mode";
const UPDeviceType = {
UNKNOWN: 0,
AC_POWER: 1,
BATTERY: 2,
UPS: 3,
MONITOR: 4,
MOUSE: 5,
KEYBOARD: 6,
PDA: 7,
PHONE: 8,
MEDIA_PLAYER: 9,
TABLET: 10,
COMPUTER: 11
};
const UPDeviceState = {
UNKNOWN: 0,
CHARGING: 1,
DISCHARGING: 2,
EMPTY: 3,
FULLY_CHARGED: 4,
PENDING_CHARGE: 5,
PENDING_DISCHARGE: 6
};
function deviceTypeToString(type) {
switch (type) {
case UPDeviceType.AC_POWER:
return _("AC adapter");
case UPDeviceType.BATTERY:
return _("Laptop battery");
case UPDeviceType.UPS:
return _("UPS");
case UPDeviceType.MONITOR:
return _("Monitor");
case UPDeviceType.MOUSE:
return _("Mouse");
case UPDeviceType.KEYBOARD:
return _("Keyboard");
case UPDeviceType.PDA:
return _("PDA");
case UPDeviceType.PHONE:
return _("Cell phone");
case UPDeviceType.MEDIA_PLAYER:
return _("Media player");
case UPDeviceType.TABLET:
return _("Tablet");
case UPDeviceType.COMPUTER:
return _("Computer");
default:
return _("Unknown");
}
}
function deviceToIcon(type, icon) {
switch (type) {
case UPDeviceType.MONITOR:
return ("video-display");
case UPDeviceType.MOUSE:
return ("input-mouse");
case UPDeviceType.KEYBOARD:
return ("input-keyboard");
case UPDeviceType.PHONE:
case UPDeviceType.MEDIA_PLAYER:
return ("phone-apple-iphone");
case UPDeviceType.TABLET:
return ("input-tablet");
case UPDeviceType.COMPUTER:
return ("computer");
default:
if (icon) {
return icon;
}
else {
return ("battery-full");
}
}
}
function DeviceItem() {
this._init.apply(this, arguments);
}
DeviceItem.prototype = {
__proto__: PopupMenu.PopupBaseMenuItem.prototype,
_init: function(device, status, aliases) {
PopupMenu.PopupBaseMenuItem.prototype._init.call(this, { reactive: false });
let [device_id, vendor, model, device_type, icon, percentage, state, time, timepercentage] = device;
this._box = new St.BoxLayout({ style_class: 'popup-device-menu-item' });
this._vbox = new St.BoxLayout({ style_class: 'popup-device-menu-item', vertical: true});
let description = deviceTypeToString(device_type);
if (vendor != "" || model != "") {
description = "%s %s".format(vendor, model);
}
for ( let i = 0; i < aliases.length; ++i ) {
let alias = aliases[i];
try{
let parts = alias.split(':=');
if (parts[0] == device_id) {
description = parts[1];
}
}
catch(e) {
// ignore malformed aliases
global.logError(alias);
}
}
this.label = new St.Label({ text: "%s %d%%".format(description, Math.round(percentage)) });
let statusLabel = new St.Label({ text: "%s".format(status), style_class: 'popup-inactive-menu-item' });
let device_icon = deviceToIcon(device_type, icon);
if (device_icon == icon) {
this._icon = new St.Icon({ gicon: Gio.icon_new_for_string(icon), icon_type: St.IconType.SYMBOLIC, style_class: 'popup-menu-icon' });
}
else {
this._icon = new St.Icon({icon_name: device_icon, icon_type: St.IconType.SYMBOLIC, icon_size: 16});
}
this._box.add_actor(this._icon);
this._box.add_actor(this.label);
this._vbox.add_actor(this._box);
this._vbox.add_actor(statusLabel);
this.addActor(this._vbox);
}
}
function BrightnessSlider(applet, label, icon, busName, minimum_value){
this._init(applet, label, icon, busName, minimum_value);
}
BrightnessSlider.prototype = {
__proto__: PopupMenu.PopupSliderMenuItem.prototype,
_init: function(applet, label, icon, busName, minimum_value){
PopupMenu.PopupSliderMenuItem.prototype._init.call(this, 0);
this.actor.hide();
this._applet = applet;
this._seeking = false;
this._minimum_value = minimum_value;
this.connect("drag-begin", Lang.bind(this, function(){
this._seeking = true;
}));
this.connect("drag-end", Lang.bind(this, function(){
this._seeking = false;
}));
this.icon = new St.Icon({icon_name: icon, icon_type: St.IconType.SYMBOLIC, icon_size: 16});
this.removeActor(this._slider);
this.addActor(this.icon, {span: 0});
this.addActor(this._slider, {span: -1, expand: true});
this.label = label;
this.tooltipText = label;
this.tooltip = new Tooltips.Tooltip(this.actor, this.tooltipText);
Interfaces.getDBusProxyAsync(busName, Lang.bind(this, function(proxy, error) {
this._proxy = proxy;
this._proxy.GetPercentageRemote(Lang.bind(this, this._dbusAcquired));
}));
},
_dbusAcquired: function(b, error){
if(error)
return;
this._updateBrightnessLabel(b);
this.setValue(b / 100);
this.connect("value-changed", Lang.bind(this, this._sliderChanged));
this.actor.show();
//get notified
this._proxy.connectSignal('Changed', Lang.bind(this, this._getBrightness));
this._applet.menu.connect("open-state-changed", Lang.bind(this, this._getBrightnessForcedUpdate));
},
_sliderChanged: function(slider, value) {
if (value < this._minimum_value) {
value = this._minimum_value;
}
this._setBrightness(Math.round(value * 100));
},
_getBrightness: function() {
//This func is called when dbus signal is received.
//Only update items value when slider is not used
if (!this._seeking)
this._getBrightnessForcedUpdate();
},
_getBrightnessForcedUpdate: function() {
this._proxy.GetPercentageRemote(Lang.bind(this, function(b) {
this._updateBrightnessLabel(b);
this.setValue(b / 100);
}));
},
_setBrightness: function(value) {
this._proxy.SetPercentageRemote(value, Lang.bind(this, function(b) {
this._updateBrightnessLabel(b);
}));
},
_updateBrightnessLabel: function(value) {
this.tooltipText = this.label;
if(value)
this.tooltipText += ": " + value + "%";
this.tooltip.set_text(this.tooltipText);
}
};
function MyApplet(metadata, orientation, panel_height, instanceId) {
this._init(metadata, orientation, panel_height, instanceId);
}
MyApplet.prototype = {
__proto__: Applet.TextIconApplet.prototype,
_init: function(metadata, orientation, panel_height, instanceId) {
Applet.TextIconApplet.prototype._init.call(this, orientation, panel_height, instanceId);
this.setAllowedLayout(Applet.AllowedLayout.BOTH);
this.metadata = metadata;
this.settings = new Settings.AppletSettings(this, metadata.uuid, instanceId);
Main.systrayManager.registerRole("power", metadata.uuid);
Main.systrayManager.registerRole("battery", metadata.uuid);
this.menuManager = new PopupMenu.PopupMenuManager(this);
this.menu = new Applet.AppletPopupMenu(this, orientation);
this.menuManager.addMenu(this.menu);
this.aliases = global.settings.get_strv("device-aliases");
this._deviceItems = [ ];
this._devices = [ ];
this._primaryDeviceId = null;
this.panel_icon_name = ''; // remember the panel icon name (so we only set it when it actually changes)
this.menu.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
this.brightness = new BrightnessSlider(this, _("Brightness"), "display-brightness", BrightnessBusName, 0.01);
this.keyboard = new BrightnessSlider(this, _("Keyboard backlight"), "keyboard-brightness", KeyboardBusName, 0);
this.menu.addMenuItem(this.brightness);
this.menu.addMenuItem(this.keyboard);
this.menu.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
this.menu.addSettingsAction(_("Power Settings"), 'power');
this.actor.connect("scroll-event", Lang.bind(this, this._onScrollEvent));
this._proxy = null;
global.settings.connect('changed::' + PANEL_EDIT_MODE_KEY, Lang.bind(this, this._onPanelEditModeChanged));
Interfaces.getDBusProxyAsync("org.cinnamon.SettingsDaemon.Power", Lang.bind(this, function(proxy, error) {
this._proxy = proxy;
this._proxy.connect("g-properties-changed", Lang.bind(this, this._devicesChanged));
global.settings.connect('changed::device-aliases', Lang.bind(this, this._on_device_aliases_changed));
this.settings.bind("labelinfo", "labelinfo", this._devicesChanged);
this._devicesChanged();
}));
this.set_show_label_in_vertical_panels(false);
},
_onPanelEditModeChanged: function() {
if (global.settings.get_boolean(PANEL_EDIT_MODE_KEY)) {
if (!this.actor.visible) {
this.set_applet_icon_symbolic_name("battery-missing");
this.set_applet_enabled(true);
}
}
else {
this._devicesChanged();
}
},
_on_device_aliases_changed: function() {
this.aliases = global.settings.get_strv("device-aliases");
this._devicesChanged();
},
_onButtonPressEvent: function(actor, event){
//toggle keyboard brightness on middle click
if(event.get_button() === 2){
this.keyboard._proxy.ToggleRemote(function(){});
}
return Applet.Applet.prototype._onButtonPressEvent.call(this, actor, event);
},
on_applet_clicked: function(event) {
this.menu.toggle();
},
_onScrollEvent: function(actor, event) {
//adjust screen brightness on scroll
let direction = event.get_scroll_direction();
if (direction == Clutter.ScrollDirection.UP) {
this.brightness._proxy.StepUpRemote(function(){});
} else if (direction == Clutter.ScrollDirection.DOWN) {
this.brightness._proxy.StepDownRemote(function(){});
}
this.brightness._getBrightnessForcedUpdate();
},
_getDeviceStatus: function(device) {
let status = ""
let [device_id, vendor, model, device_type, icon, percentage, state, seconds] = device;
let time = Math.round(seconds / 60);
let minutes = time % 60;
let hours = Math.floor(time / 60);
if (state == UPDeviceState.CHARGING) {
if (time == 0) {
status = _("Charging");
}
else if (time > 60) {
if (minutes == 0) {
status = ngettext("Charging - %d hour until fully charged", "Charging - %d hours until fully charged", hours).format(hours);
}
else {
/* TRANSLATORS: this is a time string, as in "%d hours %d minutes remaining" */
let template = _("Charging - %d %s %d %s until fully charged");
status = template.format (hours, ngettext("hour", "hours", hours), minutes, ngettext("minute", "minutes", minutes));
}
}
else {
status = ngettext("Charging - %d minute until fully charged", "Charging - %d minutes until fully charged", minutes).format(minutes);
}
}
else if (state == UPDeviceState.FULLY_CHARGED) {
status = _("Fully charged");
}
else {
if (time == 0) {
status = _("Using battery power");
}
else if (time > 60) {
if (minutes == 0) {
status = ngettext("Using battery power - %d hour remaining", "Using battery power - %d hours remaining", hours).format(hours);
}
else {
/* TRANSLATORS: this is a time string, as in "%d hours %d minutes remaining" */
let template = _("Using battery power - %d %s %d %s remaining");
status = template.format (hours, ngettext("hour", "hours", hours), minutes, ngettext("minute", "minutes", minutes));
}
}
else {
status = ngettext("Using battery power - %d minute remaining", "Using battery power - %d minutes remaining", minutes).format(minutes);
}
}
return status;
},
on_panel_height_changed: function() {
if (this._proxy)
this._devicesChanged();
},
showDeviceInPanel: function(device) {
let [device_id, vendor, model, device_type, icon, percentage, state, seconds] = device;
let status = this._getDeviceStatus(device);
this.set_applet_tooltip(status);
let labelText = "";
if (this.labelinfo == "nothing") {
;
}
else if (this.labelinfo == "time" && seconds != 0) {
let time = Math.round(seconds / 60);
let minutes = time % 60;
let hours = Math.floor(time / 60);
labelText = C_("time of battery remaining", "%d:%02d").format(hours,minutes);
}
else if (this.labelinfo == "percentage" || (this.labelinfo == "percentage_time" && seconds == 0)) {
labelText = C_("percent of battery remaining", "%d%%").format(Math.round(percentage));
}
else if (this.labelinfo == "percentage_time") {
let time = Math.round(seconds / 60);
let minutes = Math.floor(time % 60);
let hours = Math.floor(time / 60);
labelText = C_("percent of battery remaining", "%d%%").format(Math.round(percentage)) + " (" +
C_("time of battery remaining", "%d:%02d").format(hours,minutes) + ")";
}
this.set_applet_label(labelText);
if (this.labelinfo != "nothing") {
this._applet_label.set_margin_left(1.0);
}
if (icon) {
if(this.panel_icon_name != icon) {
this.panel_icon_name = icon;
this.set_applet_icon_symbolic_name('battery-full');
let gicon = Gio.icon_new_for_string(icon);
this._applet_icon.gicon = gicon;
}
}
else {
if (this.panel_icon_name != 'battery-full') {
this.panel_icon_name = 'battery-full';
this.set_applet_icon_symbolic_name('battery-full');
}
}
if (device_type == UPDeviceType.BATTERY) {
if (percentage > 20) {
this._applet_icon.set_style_class_name('system-status-icon');
} else if (percentage > 5) {
this._applet_icon.set_style_class_name('system-status-icon warning');
} else {
this._applet_icon.set_style_class_name('system-status-icon error');
}
} else {
this._applet_icon.set_style_class_name ('system-status-icon');
}
},
_devicesChanged: function() {
this._devices = [];
this._primaryDevice = null;
if (!this._proxy)
return;
// Identify the primary battery device
this._proxy.GetPrimaryDeviceRemote(Lang.bind(this, function(device, error) {
if (error) {
this._primaryDeviceId = null;
}
else {
if (device.length == 1) {
// Primary Device can be an array of primary devices rather than a single device, in that case, take the first one.
device = device[0];
}
let [device_id, vendor, model, device_type, icon, percentage, state, seconds] = device
this._primaryDeviceId = device_id;
}
}));
// Scan battery devices
this._proxy.GetDevicesRemote(Lang.bind(this, function(result, error) {
this._deviceItems.forEach(function(i) { i.destroy(); });
this._deviceItems = [];
let devices_stats = [];
if (!error) {
let devices = result[0];
let position = 0;
for (let i = 0; i < devices.length; i++) {
let [device_id, vendor, model, device_type, icon, percentage, state, seconds] = devices[i];
// Ignore AC_POWER devices
if (device_type == UPDeviceType.AC_POWER)
continue;
// Ignore devices which state is unknown
if (state == UPDeviceState.UNKNOWN)
continue;
let stats = "%s (%d%%)".format(deviceTypeToString(device_type), percentage);
devices_stats.push(stats);
this._devices.push(devices[i]);
if (this._primaryDeviceId == null || this._primaryDeviceId == device_id) {
// Info for the primary battery (either the primary device, or any battery device if there is no primary device)
if (device_type == UPDeviceType.BATTERY && this._primaryDevice == null) {
this._primaryDevice = devices[i];
}
}
let status = this._getDeviceStatus(devices[i]);
let item = new DeviceItem (devices[i], status, this.aliases);
this.menu.addMenuItem(item, position);
this._deviceItems.push(item);
position++;
}
}
else {
global.log(error);
}
// The menu is built. Below, we update the information present in the panel (icon, tooltip and label)
this.set_applet_enabled(true);
let panel_device = null;
if (this._primaryDevice != null) {
this.showDeviceInPanel(this._primaryDevice);
}
else {
if (this._devices.length == 1) {
this.showDeviceInPanel(this._devices[0]);
}
else if (this._devices.length > 1) {
// Show a summary
this.set_applet_tooltip(devices_stats.join(", "));
this.set_applet_label("");
let icon = this._proxy.Icon;
if(icon) {
if (icon != this.panel_icon_name){
this.panel_icon_name = icon;
this.set_applet_icon_symbolic_name('battery-full');
let gicon = Gio.icon_new_for_string(icon);
this._applet_icon.gicon = gicon;
}
}
else {
if (this.panel_icon_name != 'battery-full') {
this.panel_icon_name = 'battery-full';
this.set_applet_icon_symbolic_name('battery-full');
}
}
}
else {
// If there are no battery devices, show brightness info or disable the applet
if (this.brightness.actor.visible) {
// Show the brightness info
this.set_applet_tooltip(_("Brightness"));
this.panel_icon_name = 'display-brightness';
this.set_applet_icon_symbolic_name('display-brightness');
}
else if (this.keyboard.actor.visible) {
// Show the brightness info
this.set_applet_tooltip(_("Keyboard backlight"));
this.panel_icon_name = 'keyboard-brightness';
this.set_applet_icon_symbolic_name('keyboard-brightness');
}
else {
// Disable the applet
this.set_applet_enabled(false);
}
}
}
}));
},
on_applet_removed_from_panel: function() {
Main.systrayManager.unregisterId(this.metadata.uuid);
}
};
function main(metadata, orientation, panel_height, instanceId) {
let myApplet = new MyApplet(metadata, orientation, panel_height, instanceId);
return myApplet;
}
Cinnamon-3.6.7/files/usr/share/cinnamon/applets/sound@cinnamon.org/ 0000775 0001750 0001750 00000000000 13215735076 024256 5 ustar fabio fabio Cinnamon-3.6.7/files/usr/share/cinnamon/applets/sound@cinnamon.org/settings-schema.json 0000664 0001750 0001750 00000003140 13215735076 030245 0 ustar fabio fabio {
"section1": {
"type": "section",
"description" : "Menu"
},
"playerControl": {
"type": "switch",
"default": true,
"description": "Control Players"
},
"extendedPlayerControl": {
"type": "switch",
"default": false,
"description": "Show Loop and Shuffle controls",
"dependency": "playerControl",
"indent": true
},
"_knownPlayers": {
"type": "generic",
"default": ["banshee", "vlc", "rhythmbox"]
},
"section2": {
"type": "section",
"description" : "Panel"
},
"showtrack": {
"type": "switch",
"default": false,
"description": "Show song information on the panel",
"dependency": "playerControl"
},
"truncatetext": {
"type": "spinbutton",
"default": 30,
"min": 5,
"max": 512,
"units": "characters",
"step": 1,
"description": "Limit song information to",
"dependency": "showtrack",
"indent": true
},
"middleClickAction": {
"type": "combobox",
"default": "mute",
"options": {
"Toggle Mute": "mute",
"Toggle Play / Pause": "player"
},
"description": "Action on middle click"
},
"showalbum": {
"type": "switch",
"default": false,
"description": "Show album art as icon",
"dependency": "playerControl"
},
"hideSystray" : {
"type" : "switch",
"description" : "Hide system tray icons for compatible players",
"default": true
}
}
Cinnamon-3.6.7/files/usr/share/cinnamon/applets/sound@cinnamon.org/metadata.json 0000664 0001750 0001750 00000000222 13215735076 026725 0 ustar fabio fabio {
"uuid": "sound@cinnamon.org",
"name": "Sound",
"description": "A Cinnamon applet to control sound and music",
"icon": "audio-volume-high"
}
Cinnamon-3.6.7/files/usr/share/cinnamon/applets/sound@cinnamon.org/applet.js 0000664 0001750 0001750 00000161042 13215735076 026105 0 ustar fabio fabio const Applet = imports.ui.applet;
const Mainloop = imports.mainloop;
const Gio = imports.gi.Gio;
const Interfaces = imports.misc.interfaces;
const Util = imports.misc.util;
const Lang = imports.lang;
const Cinnamon = imports.gi.Cinnamon;
const Clutter = imports.gi.Clutter;
const St = imports.gi.St;
const PopupMenu = imports.ui.popupMenu;
const GLib = imports.gi.GLib;
const Cvc = imports.gi.Cvc;
const Tooltips = imports.ui.tooltips;
const Main = imports.ui.main;
const Settings = imports.ui.settings;
const Slider = imports.ui.slider;
const MEDIA_PLAYER_2_PATH = "/org/mpris/MediaPlayer2";
const MEDIA_PLAYER_2_NAME = "org.mpris.MediaPlayer2";
const MEDIA_PLAYER_2_PLAYER_NAME = "org.mpris.MediaPlayer2.Player";
/* global values */
let players_without_seek_support = ['spotify', 'totem', 'xplayer', 'gnome-mplayer', 'pithos',
'smplayer'];
let players_with_seek_support = [
'clementine', 'banshee', 'rhythmbox', 'rhythmbox3', 'pragha', 'quodlibet',
'amarok', 'xnoise', 'gmusicbrowser', 'vlc', 'qmmp', 'deadbeef', 'audacious'];
/* dummy vars for translation */
let x = _("Playing");
x = _("Paused");
x = _("Stopped");
const VOLUME_ADJUSTMENT_STEP = 0.05; /* Volume adjustment step in % */
const ICON_SIZE = 28;
function ControlButton() {
this._init.apply(this, arguments);
}
ControlButton.prototype = {
_init: function(icon, tooltip, callback, small = false) {
this.actor = new St.Bin();
this.button = new St.Button();
this.button.connect('clicked', callback);
if(small)
this.button.add_style_pseudo_class("small");
this.icon = new St.Icon({
icon_type: St.IconType.SYMBOLIC,
icon_name: icon
});
this.button.set_child(this.icon);
this.actor.add_actor(this.button);
this.tooltip = new Tooltips.Tooltip(this.button, tooltip);
},
getActor: function() {
return this.actor;
},
setData: function(icon, tooltip) {
this.icon.icon_name = icon;
this.tooltip.set_text(tooltip);
},
setActive: function(status){
this.button.change_style_pseudo_class("active", status);
},
setEnabled: function(status){
this.button.change_style_pseudo_class("disabled", !status);
this.button.can_focus = status;
this.button.reactive = status;
}
};
function VolumeSlider(){
this._init.apply(this, arguments);
}
VolumeSlider.prototype = {
__proto__: PopupMenu.PopupSliderMenuItem.prototype,
_init: function(applet, stream, tooltip, app_icon){
PopupMenu.PopupSliderMenuItem.prototype._init.call(this, 0);
this.applet = applet;
if(tooltip)
this.tooltipText = tooltip + ": ";
else
this.tooltipText = "";
this.tooltip = new Tooltips.Tooltip(this.actor, this.tooltipText);
this.connect("value-changed", Lang.bind(this, this._onValueChanged));
this.app_icon = app_icon;
if (this.app_icon == null) {
this.iconName = this.isMic ? "microphone-sensitivity-none" : "audio-volume-muted";
this.icon = new St.Icon({icon_name: this.iconName, icon_type: St.IconType.SYMBOLIC, icon_size: 16});
}
else {
this.icon = new St.Icon({icon_name: this.app_icon, icon_type: St.IconType.FULLCOLOR, icon_size: 16});
}
this.removeActor(this._slider);
this.addActor(this.icon, {span: 0});
this.addActor(this._slider, {span: -1, expand: true});
this.connectWithStream(stream);
},
connectWithStream: function(stream){
if(!stream){
this.actor.hide();
this.stream = null;
} else {
this.actor.show();
this.stream = stream;
this.isMic = stream instanceof Cvc.MixerSource || stream instanceof Cvc.MixerSourceOutput;
let mutedId = stream.connect("notify::is-muted", Lang.bind(this, this._update));
let volumeId = stream.connect("notify::volume", Lang.bind(this, this._update));
this.connect("destroy", function(){
stream.disconnect(mutedId);
stream.disconnect(volumeId);
});
}
this._update();
},
_onValueChanged: function(){
if(!this.stream) return;
let volume = this._value * this.applet._volumeMax, muted;
if(this._value < 0.005){
volume = 0;
muted = true;
} else {
muted = false;
}
this.stream.volume = volume;
this.stream.push_volume();
if(this.stream.is_muted !== muted)
this.stream.change_is_muted(muted);
if(!this._dragging)
this.applet._notifyVolumeChange(this.stream);
},
_update: function(){
let value = (!this.stream || this.stream.is_muted)? 0 : this.stream.volume / this.applet._volumeMax;
let percentage = Math.round(value * 100) + "%";
this.tooltip.set_text(this.tooltipText + percentage);
let iconName = this._volumeToIcon(value);
if (this.app_icon == null) {
this.icon.icon_name = iconName;
}
this.setValue(value);
// send data to applet
this.emit("values-changed", iconName, percentage);
},
_volumeToIcon: function(value){
if(value < 0.005)
return this.isMic? "microphone-sensitivity-none" : "audio-volume-muted";
let n = Math.floor(3 * value), icon;
if(n < 1)
icon = "low";
else if(n < 2)
icon = "medium";
else
icon = "high";
return this.isMic? "microphone-sensitivity-" + icon : "audio-volume-" + icon;
}
};
function StreamMenuSection(){
this._init.apply(this, arguments);
}
StreamMenuSection.prototype = {
__proto__: PopupMenu.PopupMenuSection.prototype,
_init: function(applet, stream){
PopupMenu.PopupMenuSection.prototype._init.call(this);
let iconName = stream.icon_name;
let name = stream.name;
// capitalize the stream name
if (name.length > 2) {
name = name.charAt(0).toUpperCase() + name.slice(1);
}
// Trim stream name
if(name.length > 16) {
name = name.substring(0, 16) + "... ";
}
// Special cases
if(name === "Banshee") {
iconName = "banshee";
}
else if (name === "Spotify") {
iconName = "spotify";
}
if(name === "VBox") {
name = "Virtualbox";
iconName = "virtualbox";
}
else if (iconName === "audio") {
iconName = "audio-x-generic";
}
let slider = new VolumeSlider(applet, stream, name, iconName);
this.addMenuItem(slider);
}
};
function Player() {
this._init.apply(this, arguments);
}
Player.prototype = {
__proto__: PopupMenu.PopupMenuSection.prototype,
_init: function(applet, busname, owner) {
PopupMenu.PopupMenuSection.prototype._init.call(this);
this.showPosition = true;
this._owner = owner;
this._busName = busname;
this._applet = applet;
this._name = this._busName.split('.')[3];
this._songLength = 0;
Interfaces.getDBusProxyWithOwnerAsync(MEDIA_PLAYER_2_NAME,
this._busName,
Lang.bind(this, function(proxy, error) {
if (error) {
log(error);
} else {
this._mediaServer = proxy;
this._dbus_acquired();
}
}));
Interfaces.getDBusProxyWithOwnerAsync(MEDIA_PLAYER_2_PLAYER_NAME,
this._busName,
Lang.bind(this, function(proxy, error) {
if (error) {
log(error)
} else {
this._mediaServerPlayer = proxy;
this._dbus_acquired();
}
}));
Interfaces.getDBusPropertiesAsync(this._busName,
MEDIA_PLAYER_2_PATH,
Lang.bind(this, function(proxy, error) {
if (error) {
log(error)
} else {
this._prop = proxy;
this._dbus_acquired();
}
}));
},
_dbus_acquired: function() {
if (!this._prop || !this._mediaServerPlayer || !this._mediaServer)
return;
let mainBox = new PopupMenu.PopupMenuSection();
this.addMenuItem(mainBox);
this.vertBox = new St.BoxLayout({ style_class: "sound-player", important: true, vertical: true });
mainBox.addActor(this.vertBox, { expand: false });
// Player info
let playerBox = new St.BoxLayout();
this.playerIcon = new St.Icon({icon_type: St.IconType.SYMBOLIC, style_class: "popup-menu-icon"});
this.playerLabel = new St.Label({y_expand: true, y_align: Clutter.ActorAlign.CENTER});
playerBox.add_actor(this.playerIcon);
playerBox.add_actor(this.playerLabel);
if (this._mediaServer.CanRaise) {
let btn = new ControlButton("go-up", _("Open Player"), Lang.bind(this, function(){
if (this._name === "spotify") {
// Spotify isn't able to raise via Dbus once its main UI is closed
Util.spawn(['spotify']);
}
else {
this._mediaServer.RaiseRemote();
}
this._applet.menu.close();
}), true);
playerBox.add_actor(btn.actor);
}
if (this._mediaServer.CanQuit) {
let btn = new ControlButton("window-close", _("Quit Player"), Lang.bind(this, function(){
this._mediaServer.QuitRemote();
this._applet.menu.close();
}), true);
playerBox.add_actor(btn.actor);
}
this.vertBox.add_actor(playerBox);
// Cover Box (art + track info)
this._trackCover = new St.Bin({x_align: St.Align.MIDDLE});
this._trackCoverFile = this._trackCoverFileTmp = false;
this.coverBox = new Clutter.Box();
let l = new Clutter.BinLayout({x_align: Clutter.BinAlignment.FILL, y_align: Clutter.BinAlignment.END});
this.coverBox.set_layout_manager(l);
// Cover art
this.cover = new St.Icon({icon_name: "media-optical", icon_size: 300, icon_type: St.IconType.FULLCOLOR});
this.coverBox.add_actor(this.cover);
// Track info (artist + title)
this._artist = _("Unknown Artist");
this._album = _("Unknown Album");
this._title = _("Unknown Title");
this.trackInfo = new St.BoxLayout({style_class: 'sound-player-overlay', important: true, vertical: true});
let artistInfo = new St.BoxLayout();
let artistIcon = new St.Icon({ icon_type: St.IconType.SYMBOLIC, icon_name: "system-users", style_class: 'popup-menu-icon' });
this.artistLabel = new St.Label({text:this._artist});
artistInfo.add_actor(artistIcon);
artistInfo.add_actor(this.artistLabel);
let titleInfo = new St.BoxLayout();
let titleIcon = new St.Icon({ icon_type: St.IconType.SYMBOLIC, icon_name: "audio-x-generic", style_class: 'popup-menu-icon' });
this.titleLabel = new St.Label({text:this._title});
titleInfo.add_actor(titleIcon);
titleInfo.add_actor(this.titleLabel);
this.trackInfo.add_actor(artistInfo);
this.trackInfo.add_actor(titleInfo);
this.coverBox.add_actor(this.trackInfo);
this._trackCover.set_child(this.coverBox);
this.vertBox.add_actor(this._trackCover);
// Playback controls
let trackControls = new St.Bin({x_align: St.Align.MIDDLE});
this._prevButton = new ControlButton("media-skip-backward", _("Previous"), Lang.bind(this, function(){
this._mediaServerPlayer.PreviousRemote();
}));
this._playButton = new ControlButton("media-playback-start", _("Play"), Lang.bind(this, function(){
this._mediaServerPlayer.PlayPauseRemote();
}));
this._stopButton = new ControlButton("media-playback-stop", _("Stop"), Lang.bind(this, function(){
this._mediaServerPlayer.StopRemote();
}));
this._nextButton = new ControlButton("media-skip-forward", _("Next"), Lang.bind(this, function(){
this._mediaServerPlayer.NextRemote();
}));
this.trackInfo.add_actor(trackControls);
this.controls = new St.BoxLayout();
this.controls.add_actor(this._prevButton.getActor());
this.controls.add_actor(this._playButton.getActor());
this.controls.add_actor(this._stopButton.getActor());
this.controls.add_actor(this._nextButton.getActor());
trackControls.set_child(this.controls);
if(this._mediaServerPlayer.LoopStatus){
this._loopButton = new ControlButton("media-playlist-consecutive", _("Consecutive Playing"), Lang.bind(this, this._toggleLoopStatus));
this._loopButton.actor.visible = this._applet.extendedPlayerControl;
this.controls.add_actor(this._loopButton.getActor());
this._setLoopStatus(this._mediaServerPlayer.LoopStatus);
}
if(this._mediaServerPlayer.Shuffle !== undefined){
this._shuffleButton = new ControlButton("media-playlist-shuffle", _("No Shuffle"), Lang.bind(this, this._toggleShuffle));
this._shuffleButton.actor.visible = this._applet.extendedPlayerControl;
this.controls.add_actor(this._shuffleButton.getActor());
this._setShuffle(this._mediaServerPlayer.Shuffle);
}
// Position slider
this._positionSlider = new Slider.Slider(0, true);
this._seeking = false;
this._positionSlider.connect('drag-begin', Lang.bind(this, function(item) {
this._seeking = true;
}));
this._positionSlider.connect('drag-end', Lang.bind(this, function(item) {
this._seeking = false;
this._setPosition("slider");
}));
this._positionSlider.connect('value-changed', Lang.bind(this, function(item) {
//update the label virtually if we are seeking, else set the value (scroll event)
if(!this._seeking)
this._setPosition("slider");
}));
this.vertBox.add_actor(this._positionSlider.actor);
this._applet._updatePlayerMenuItems();
/* these players don't support seek */
if (!this._getCanSeek() || this._mediaServerPlayer.Rate != 1) {
this.showPosition = false;
this._positionSlider.actor.hide();
}
this._timeoutId = 0;
this._setStatus(this._mediaServerPlayer.PlaybackStatus);
this._trackId = {};
this._setMetadata(this._mediaServerPlayer.Metadata);
this._currentTime = 0;
this._timerTicker = 0;
this._wantedSeekValue = 0;
this._updatePositionSlider();
this._mediaServerPlayerId = this._mediaServerPlayer.connectSignal('Seeked', Lang.bind(this, function(id, sender, value) {
if (value > 0) {
this._setPosition(value);
}
// Seek initiated by the position slider
else if (this._wantedSeekValue > 0) {
// Some broken gstreamer players (Banshee) reports always 0
// when the track is seeked so we set the position at the
// value we set on the slider
this._setPosition(this._wantedSeekValue);
}
// Seek value send by the player
else
this._setPosition(value);
this._wantedSeekValue = 0;
}));
this._propChangedId = this._prop.connectSignal('PropertiesChanged', Lang.bind(this, function(proxy, sender, [iface, props]) {
if (props.PlaybackStatus)
this._setStatus(props.PlaybackStatus.unpack());
if (props.Metadata)
this._setMetadata(props.Metadata.deep_unpack());
if (props.CanGoNext || props.CanGoPrevious)
this._updateControls();
if (props.LoopStatus)
this._setLoopStatus(props.LoopStatus.unpack());
if (props.Shuffle)
this._setShuffle(props.Shuffle.unpack());
}));
//get the desktop entry and pass it to the applet
this._prop.GetRemote(MEDIA_PLAYER_2_NAME, "DesktopEntry", Lang.bind(this, function(value){
this._applet.passDesktopEntry(value[0].unpack());
}));
this._getPosition();
},
_getName: function() {
return this._name.charAt(0).toUpperCase() + this._name.slice(1);
},
_setName: function(status) {
this.playerLabel.set_text(this._getName() + " - " + _(status));
},
_updateControls: function() {
this._prop.GetRemote(MEDIA_PLAYER_2_PLAYER_NAME, 'CanGoNext',
Lang.bind(this, function(value, err) {
let canGoNext = true;
if (!err)
canGoNext = value[0].unpack();
this._nextButton.setEnabled(canGoNext);
})
);
this._prop.GetRemote(MEDIA_PLAYER_2_PLAYER_NAME, 'CanGoPrevious',
Lang.bind(this, function(value, err) {
let canGoPrevious = true;
if (!err)
canGoPrevious = value[0].unpack();
this._prevButton.setEnabled(canGoPrevious);
})
);
},
_updatePositionSlider: function(position) {
this._canSeek = this._getCanSeek();
if (this._songLength == 0 || position == false)
this._canSeek = false;
},
_setPosition: function(value) {
if(value === "slider"){
let time = this._positionSlider._value * this._songLength;
this._wantedSeekValue = Math.round(time * 1000000);
this._mediaServerPlayer.SetPositionRemote(this._trackObj, time * 1000000);
}
else if (value == null && this._playerStatus != 'Stopped') {
this._updatePositionSlider(false);
}
else {
this._currentTime = value / 1000000;
this._updateTimer();
}
},
_getPosition: function() {
this._prop.GetRemote(MEDIA_PLAYER_2_PLAYER_NAME, 'Position', Lang.bind(this, function(position, ex) {
if (!ex) {
this._setPosition(position[0].get_int64());
}
}));
},
_getCanSeek: function() {
let can_seek = true;
this._prop.GetRemote(MEDIA_PLAYER_2_PLAYER_NAME, 'CanSeek', Lang.bind(this, function(position, ex) {
if (!ex) {
can_seek = position[0].get_boolean();
}
}));
// Some players say they "CanSeek" but don't actually give their position over dbus (spotify for instance)
for (let i = 0; i < players_without_seek_support.length; i++) {
if (players_without_seek_support[i] === this._name) {
can_seek = false;
break;
}
}
return can_seek;
},
_setMetadata: function(metadata) {
if (!metadata)
return;
if (metadata["mpris:length"]) {
this._stopTimer();
if (this._playerStatus == "Playing")
this._runTimer();
// song length in secs
this._songLength = metadata["mpris:length"].unpack() / 1000000;
}
else {
this._songLength = 0;
this._stopTimer();
}
if (metadata["xesam:artist"]) {
switch (metadata["xesam:artist"].get_type_string()) {
case 's':
// smplayer sends a string
this._artist = metadata["xesam:artist"].unpack();
break;
case 'as':
// others send an array of strings
this._artist = metadata["xesam:artist"].deep_unpack().join(", ");
break;
default:
this._artist = _("Unknown Artist");
}
}
else
this._artist = _("Unknown Artist");
this.artistLabel.set_text(this._artist);
if (metadata["xesam:album"])
this._album = metadata["xesam:album"].unpack();
else
this._album = _("Unknown Album");
if (metadata["xesam:title"])
this._title = metadata["xesam:title"].unpack();
else
this._title = _("Unknown Title");
this.titleLabel.set_text(this._title);
if (metadata["mpris:trackid"]) {
this._trackObj = metadata["mpris:trackid"].unpack();
}
let change = false;
if (metadata["mpris:artUrl"]) {
let artUrl = metadata["mpris:artUrl"].unpack();
if ( this._name === "spotify" ) {
artUrl = artUrl.replace("/thumb/", "/300/"); // Spotify 0.9.x
artUrl = artUrl.replace("/image/", "/300/"); // Spotify 0.27.x
}
if (this._trackCoverFile != artUrl) {
this._trackCoverFile = artUrl;
change = true;
}
}
else {
if (this._trackCoverFile != false) {
this._trackCoverFile = false;
change = true;
}
}
if (change) {
if (this._trackCoverFile) {
let cover_path = "";
if (this._trackCoverFile.match(/^http/)) {
this._hideCover();
this._trackCoverFileTmp = Gio.file_new_tmp('XXXXXX.mediaplayer-cover')[0];
Util.spawn_async(['wget', this._trackCoverFile, '-O', this._trackCoverFileTmp.get_path()], Lang.bind(this, this._onDownloadedCover));
}
else {
cover_path = decodeURIComponent(this._trackCoverFile);
cover_path = cover_path.replace("file://", "");
this._showCover(cover_path);
}
}
else
this._showCover(false);
}
this._applet.setAppletTextIcon(this, true);
},
_setStatus: function(status) {
if (!status)
return;
this._updatePositionSlider();
this._playerStatus = status;
if (status == "Playing") {
this._playButton.setData("media-playback-pause", _("Pause"));
this.playerIcon.set_icon_name("media-playback-start");
this._applet.setAppletTextIcon(this, true);
this._runTimer();
}
else if (status == "Paused") {
this._playButton.setData("media-playback-start", _("Play"));
this.playerIcon.set_icon_name("media-playback-pause");
this._applet.setAppletTextIcon(this, false);
this._pauseTimer();
}
else if (status == "Stopped") {
this._playButton.setData("media-playback-start", _("Play"));
this.playerIcon.set_icon_name("media-playback-stop");
this._applet.setAppletTextIcon(this, false);
this._stopTimer();
} else {
this._applet.setAppletTextIcon(this, false);
}
this._setName(status);
},
_toggleLoopStatus: function(){
let mapping = {
"None": "Playlist",
"Playlist": "Track",
"Track": "None"
};
this._mediaServerPlayer.LoopStatus = mapping[this._mediaServerPlayer.LoopStatus];
this._setLoopStatus(this._mediaServerPlayer.LoopStatus);
},
_setLoopStatus: function(status){
if(status === "None")
this._loopButton.setData("media-playlist-consecutive-symbolic", _("Consecutive Playing"));
else if(status === "Track")
this._loopButton.setData("media-playlist-repeat-song", _("Repeat Single"));
else if(status === "Playlist")
this._loopButton.setData("media-playlist-repeat", _("Repeat All"));
this._loopButton.setActive(status !== "None");
},
_toggleShuffle: function(){
this._mediaServerPlayer.Shuffle = !this._mediaServerPlayer.Shuffle;
},
_setShuffle: function(status){
this._shuffleButton.setData("media-playlist-shuffle", status? _("Shuffle") : _("No Shuffle"));
this._shuffleButton.setActive(status);
},
_updateTimer: function() {
if (!this._seeking && this.showPosition && this._canSeek) {
if (!isNaN(this._currentTime) && !isNaN(this._songLength) && this._currentTime > 0)
this._positionSlider.setValue(this._currentTime / this._songLength);
else
this._positionSlider.setValue(0);
}
},
_runTimerCallback: function() {
if (this._playerStatus == 'Playing') {
if (this._timerTicker < 10) {
this._currentTime += 1;
this._timerTicker++;
this._updateTimer();
} else {
this._getPosition();
this._timerTicker = 0;
}
return true;
}
return false;
},
_runTimer: function() {
if (this._canSeek) {
if (this._timeoutId != 0) {
Mainloop.source_remove(this._timeoutId);
this._timeoutId = 0;
}
if (this._playerStatus == 'Playing') {
this._getPosition();
this._timerTicker = 0;
this._timeoutId = Mainloop.timeout_add(1000, Lang.bind(this, this._runTimerCallback));
}
}
},
_pauseTimer: function() {
if (this._timeoutId != 0) {
Mainloop.source_remove(this._timeoutId);
this._timeoutId = 0;
}
this._updateTimer();
},
_stopTimer: function() {
this._currentTime = 0;
this._pauseTimer();
this._updateTimer();
},
_onDownloadedCover: function() {
let cover_path = this._trackCoverFileTmp.get_path();
this._showCover(cover_path);
},
_hideCover: function() {
/*Tweener.addTween(this.trackCoverContainer, { opacity: 0,
time: 0.3,
transition: 'easeOutCubic',
});*/
},
_showCover: function(cover_path) {
/*Tweener.addTween(this._trackCover, { opacity: 0,
time: 0.3,
transition: 'easeOutCubic',
onComplete: Lang.bind(this, function() {*/
this.coverBox.remove_actor(this.cover);
if (! cover_path || ! GLib.file_test(cover_path, GLib.FileTest.EXISTS)) {
this.cover = new St.Icon({style_class: 'sound-player-generic-coverart', important: true, icon_name: "media-optical", icon_size: 300, icon_type: St.IconType.FULLCOLOR});
cover_path = null;
}
else {
this.cover = new Clutter.Texture({width: 300, keep_aspect_ratio: true, filter_quality: 2, filename: cover_path});
}
this.coverBox.add_actor(this.cover);
this.coverBox.set_child_below_sibling(this.cover, this.trackInfo);
this._applet.setAppletTextIcon(this, cover_path);
/*Tweener.addTween(this._trackCover, { opacity: 255,
time: 0.3,
transition: 'easeInCubic'
});
})
});*/
},
onSettingsChanged: function(){
this._loopButton.actor.visible = this._applet.extendedPlayerControl;
this._shuffleButton.actor.visible = this._applet.extendedPlayerControl;
},
destroy: function() {
if (this._timeoutId != 0) {
Mainloop.source_remove(this._timeoutId);
this._timeoutId = 0;
}
if (this._mediaServerPlayer)
this._mediaServerPlayer.disconnectSignal(this._mediaServerPlayerId);
if (this._prop)
this._prop.disconnectSignal(this._propChangedId);
PopupMenu.PopupMenuSection.prototype.destroy.call(this);
}
};
function MediaPlayerLauncher(app, menu) {
this._init(app, menu);
}
MediaPlayerLauncher.prototype = {
__proto__: PopupMenu.PopupBaseMenuItem.prototype,
_init: function (app, menu) {
PopupMenu.PopupBaseMenuItem.prototype._init.call(this, {});
this._app = app;
this._menu = menu;
this.label = new St.Label({ text: app.get_name() });
this.addActor(this.label);
this._icon = app.create_icon_texture(ICON_SIZE);
this.addActor(this._icon, { expand: false });
this.connect("activate", Lang.bind(this, this._onActivate));
},
_onActivate: function(actor, event, keepMenu) {
this._app.activate_full(-1, event.get_time());
}
};
function MyApplet(metadata, orientation, panel_height, instanceId) {
this._init(metadata, orientation, panel_height, instanceId);
}
MyApplet.prototype = {
__proto__: Applet.TextIconApplet.prototype,
_init: function(metadata, orientation, panel_height, instanceId) {
Applet.TextIconApplet.prototype._init.call(this, orientation, panel_height, instanceId);
this.setAllowedLayout(Applet.AllowedLayout.BOTH);
try {
this.metadata = metadata;
this.settings = new Settings.AppletSettings(this, metadata.uuid, instanceId);
this.settings.bind("showtrack", "showtrack", this.on_settings_changed);
this.settings.bind("middleClickAction", "middleClickAction");
this.settings.bind("showalbum", "showalbum", this.on_settings_changed);
this.settings.bind("truncatetext", "truncatetext", this.on_settings_changed);
this.settings.bind("hideSystray", "hideSystray", function() {
if (this.hideSystray) this.registerSystrayIcons();
else this.unregisterSystrayIcons();
});
this.settings.bind("playerControl", "playerControl", this.on_settings_changed);
this.settings.bind("extendedPlayerControl", "extendedPlayerControl", function(){
for(let i in this._players)
this._players[i].onSettingsChanged();
});
this.settings.bind("_knownPlayers", "_knownPlayers");
if (this.hideSystray) this.registerSystrayIcons();
this.menuManager = new PopupMenu.PopupMenuManager(this);
this.menu = new Applet.AppletPopupMenu(this, orientation);
this.menuManager.addMenu(this.menu);
this.set_applet_icon_symbolic_name('audio-x-generic');
this._players = {};
this._playerItems = [];
this._activePlayer = null;
Interfaces.getDBusAsync(Lang.bind(this, function (proxy, error) {
this._dbus = proxy;
// player DBus name pattern
let name_regex = /^org\.mpris\.MediaPlayer2\./;
// load players
this._dbus.ListNamesRemote(Lang.bind(this,
function(names) {
for (let n in names[0]) {
let name = names[0][n];
if (name_regex.test(name)) {
this._dbus.GetNameOwnerRemote(name, Lang.bind(this,
function(owner) {
this._addPlayer(name, owner);
}
));
}
}
}
));
// watch players
this._ownerChangedId = this._dbus.connectSignal('NameOwnerChanged', Lang.bind(this,
function(proxy, sender, [name, old_owner, new_owner]) {
if (name_regex.test(name)) {
if (new_owner && !old_owner)
this._addPlayer(name, new_owner);
else if (old_owner && !new_owner)
this._removePlayer(name, old_owner);
else
this._changePlayerOwner(name, old_owner, new_owner);
}
}
));
}));
this._control = new Cvc.MixerControl({ name: 'Cinnamon Volume Control' });
this._control.connect('state-changed', Lang.bind(this, this._onControlStateChanged));
this._control.connect('output-added', Lang.bind(this, this._onDeviceAdded, "output"));
this._control.connect('output-removed', Lang.bind(this, this._onDeviceRemoved, "output"));
this._control.connect('active-output-update', Lang.bind(this, this._onDeviceUpdate, "output"));
this._control.connect('input-added', Lang.bind(this, this._onDeviceAdded, "input"));
this._control.connect('input-removed', Lang.bind(this, this._onDeviceRemoved, "input"));
this._control.connect('active-input-update', Lang.bind(this, this._onDeviceUpdate, "input"));
this._control.connect('stream-added', Lang.bind(this, this._onStreamAdded));
this._control.connect('stream-removed', Lang.bind(this, this._onStreamRemoved));
this._volumeMax = 1*this._control.get_vol_max_norm(); // previously was 1.5*this._control.get_vol_max_norm();, but we'd need a little mark on the slider to make it obvious to the user we're going over 100%..
this._streams = [];
this._devices = [];
this._recordingAppsNum = 0;
this._output = null;
this._outputMutedId = 0;
this._outputIcon = "audio-volume-muted";
this._input = null;
this._inputMutedId = 0;
this._icon_name = '';
this._icon_path = null;
this._iconTimeoutId = 0;
this.actor.connect('scroll-event', Lang.bind(this, this._onScrollEvent));
this.mute_out_switch = new PopupMenu.PopupSwitchIconMenuItem(_("Mute output"), false, "audio-volume-muted", St.IconType.SYMBOLIC);
this.mute_in_switch = new PopupMenu.PopupSwitchIconMenuItem(_("Mute input"), false, "microphone-sensitivity-none", St.IconType.SYMBOLIC);
this._applet_context_menu.addMenuItem(this.mute_out_switch);
this._applet_context_menu.addMenuItem(this.mute_in_switch);
this._applet_context_menu.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
this._outputApplicationsMenu = new PopupMenu.PopupSubMenuMenuItem(_("Applications"));
this._selectOutputDeviceItem = new PopupMenu.PopupSubMenuMenuItem(_("Output device"));
this._applet_context_menu.addMenuItem(this._outputApplicationsMenu);
this._applet_context_menu.addMenuItem(this._selectOutputDeviceItem);
this._outputApplicationsMenu.actor.hide();
this._selectOutputDeviceItem.actor.hide();
this._inputSection = new PopupMenu.PopupMenuSection();
this._inputVolumeSection = new VolumeSlider(this, null, _("Microphone"), null);
this._inputVolumeSection.connect("values-changed", Lang.bind(this, this._inputValuesChanged));
this._selectInputDeviceItem = new PopupMenu.PopupSubMenuMenuItem(_("Input device"));
this._inputSection.addMenuItem(this._inputVolumeSection);
this._inputSection.addMenuItem(this._selectInputDeviceItem);
this._applet_context_menu.addMenuItem(this._inputSection);
this._selectInputDeviceItem.actor.hide();
this._inputSection.actor.hide();
this._applet_context_menu.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
this.mute_out_switch.connect('toggled', Lang.bind(this, this._toggle_out_mute));
this.mute_in_switch.connect('toggled', Lang.bind(this, this._toggle_in_mute));
this._control.open();
this._volumeControlShown = false;
this._showFixedElements();
this.set_show_label_in_vertical_panels(false);
this.set_applet_label(this._applet_label.get_text());
let appsys = Cinnamon.AppSystem.get_default();
appsys.connect("installed-changed", Lang.bind(this, this._updateLaunchPlayer));
}
catch (e) {
global.logError(e);
}
},
on_settings_changed : function() {
if(this.playerControl && this._activePlayer)
this.setAppletTextIcon(this._players[this._activePlayer], true);
else
this.setAppletTextIcon();
this._changeActivePlayer(this._activePlayer);
},
on_applet_removed_from_panel : function() {
if (this.hideSystray)
this.unregisterSystrayIcons();
if (this._iconTimeoutId) {
Mainloop.source_remove(this._iconTimeoutId);
}
this._dbus.disconnectSignal(this._ownerChangedId);
for(let i in this._players)
this._players[i].destroy();
},
on_applet_clicked: function(event) {
this.menu.toggle();
},
_toggle_out_mute: function() {
if (this._output.is_muted) {
this._output.change_is_muted(false);
this.mute_out_switch.setToggleState(false);
} else {
this._output.change_is_muted(true);
this.mute_out_switch.setToggleState(true);
}
},
_toggle_in_mute: function() {
if (this._input.is_muted) {
this._input.change_is_muted(false);
this.mute_in_switch.setToggleState(false);
} else {
this._input.change_is_muted(true);
this.mute_in_switch.setToggleState(true);
}
},
_onScrollEvent: function(actor, event) {
let direction = event.get_scroll_direction();
let currentVolume = this._output.volume;
if (direction == Clutter.ScrollDirection.DOWN) {
let prev_muted = this._output.is_muted;
this._output.volume = Math.max(0, currentVolume - this._volumeMax * VOLUME_ADJUSTMENT_STEP);
if (this._output.volume < 1) {
this._output.volume = 0;
if (!prev_muted)
this._output.change_is_muted(true);
}
this._output.push_volume();
}
else if (direction == Clutter.ScrollDirection.UP) {
this._output.volume = Math.min(this._volumeMax, currentVolume + this._volumeMax * VOLUME_ADJUSTMENT_STEP);
this._output.push_volume();
this._output.change_is_muted(false);
}
this._notifyVolumeChange(this._output);
},
_onButtonPressEvent: function (actor, event) {
let buttonId = event.get_button();
//mute or play / pause players on middle click
if (buttonId === 2) {
if (this.middleClickAction === "mute")
this._toggle_out_mute();
else if (this.middleClickAction === "player")
this._players[this._activePlayer]._mediaServerPlayer.PlayPauseRemote();
} else if (buttonId === 8) { // previous and next track on mouse buttons 4 and 5 (8 and 9 by X11 numbering)
this._players[this._activePlayer]._mediaServerPlayer.PreviousRemote();
} else if (buttonId === 9) {
this._players[this._activePlayer]._mediaServerPlayer.NextRemote();
}
return Applet.Applet.prototype._onButtonPressEvent.call(this, actor, event);
},
setIcon: function(icon, source) {
if (this._iconTimeoutId) {
Mainloop.source_remove(this._iconTimeoutId);
this._iconTimeoutId = null;
}
//save the icon
if (source) {
if (source === "output")
this._outputIcon = icon;
else
this._playerIcon = [icon, source === "player-path"];
}
if (this.playerControl && this._activePlayer && this._playerIcon[0]) {
if (source === "output") {
//if we have an active player, but are changing the volume, show the output icon and after three seconds change back to the player icon
this.set_applet_icon_symbolic_name(this._outputIcon);
this._iconTimeoutId = Mainloop.timeout_add(3000, Lang.bind(this, function() {
this._iconTimeoutId = null;
this.setIcon();
}));
} else {
//if we have an active player and want to change the icon, change it immediately
if (this._playerIcon[1])
this.set_applet_icon_path(this._playerIcon[0]);
else
this.set_applet_icon_symbolic_name(this._playerIcon[0]);
}
} else {
//if we have no active player show the output icon
this.set_applet_icon_symbolic_name(this._outputIcon);
}
},
setAppletIcon: function(player, path) {
if (path) {
if (path === true) {
// Restore the icon path from the saved path.
path = this._icon_path;
} else {
this._icon_path = path;
}
} else if (path === null) {
// This track has no art, erase the saved path.
this._icon_path = null;
}
if (this.showalbum) {
if (path && player && (player === true || player._playerStatus == 'Playing')) {
this.setIcon(path, "player-path");
} else {
this.setIcon('media-optical-cd-audio', 'player-name');
}
}
else {
this.setIcon('audio-x-generic', 'player-name');
}
},
setAppletText: function(player) {
let title_text = "";
if (this.showtrack && player && player._playerStatus == 'Playing') {
title_text = player._title + ' - ' + player._artist;
if (this.truncatetext < title_text.length) {
title_text = title_text.substr(0, this.truncatetext) + "...";
}
}
this.set_applet_label(title_text);
},
setAppletTextIcon: function(player, icon) {
if (player && player._owner != this._activePlayer)
return;
this.setAppletIcon(player, icon);
this.setAppletText(player);
},
_isInstance: function(busName) {
// MPRIS instances are in the form
// org.mpris.MediaPlayer2.name.instanceXXXX
// ...except for VLC, which to this day uses
// org.mpris.MediaPlayer2.name-XXXX
return busName.split('.').length > 4 ||
/^org\.mpris\.MediaPlayer2\.vlc-\d+$/.test(busName);
},
_addPlayer: function(busName, owner) {
if (this._players[owner]) {
let prevName = this._players[owner]._busName;
// HAVE: ADDING: ACTION:
// master master reject, cannot happen
// master instance upgrade to instance
// instance master reject, duplicate
// instance instance reject, cannot happen
if (this._isInstance(busName) && !this._isInstance(prevName))
this._players[owner]._busName = busName;
else
return;
} else if (owner) {
let player = new Player(this, busName, owner);
// Add the player to the list of active players in GUI
let item = new PopupMenu.PopupMenuItem(player._getName());
item.activate = Lang.bind(this, function() { this._switchPlayer(player._owner); });
this._chooseActivePlayerItem.menu.addMenuItem(item);
this._players[owner] = player;
this._playerItems.push({ player: player, item: item });
this._changeActivePlayer(owner);
this._updatePlayerMenuItems();
this.setAppletTextIcon();
}
},
_switchPlayer: function(owner) {
if(this._players[owner]) {
// The player exists, switch to it
this._changeActivePlayer(owner);
this._updatePlayerMenuItems();
this.setAppletTextIcon();
} else {
// The player doesn't seem to exist. Remove it from the players list
this._removePlayerItem(owner);
this._updatePlayerMenuItems();
}
},
_removePlayerItem: function(owner) {
// Remove the player from the player switching list
for(let i = 0, l = this._playerItems.length; i < l; ++i) {
let playerItem = this._playerItems[i];
if(playerItem.player._owner === owner) {
playerItem.item.destroy();
this._playerItems.splice(i, 1);
break;
}
}
},
_removePlayer: function(busName, owner) {
if (this._players[owner] && this._players[owner]._busName == busName) {
this._removePlayerItem(owner);
this._players[owner].destroy();
delete this._players[owner];
if (this._activePlayer == owner) {
//set _activePlayer to null if we have none now, or to the first value in the players list
this._activePlayer = null;
for (let i in this._players) {
this._changeActivePlayer(i);
break;
}
}
this._updatePlayerMenuItems();
this.setAppletTextIcon();
}
},
_changePlayerOwner: function(busName, oldOwner, newOwner) {
if (this._players[oldOwner] && busName == this._players[oldOwner]._busName) {
this._players[newOwner] = this._players[oldOwner];
this._players[newOwner]._owner = newOwner;
delete this._players[oldOwner];
if (this._activePlayer == oldOwner)
this._activePlayer = newOwner;
}
},
//will be called by an instance of #Player
passDesktopEntry: function(entry){
//do we know already this player?
for (let i = 0, l = this._knownPlayers.length; i < l; ++i) {
if (this._knownPlayers[i] === entry)
return;
}
//No, save it to _knownPlayers and update player list
this._knownPlayers.push(entry);
this._knownPlayers.save();
this._updateLaunchPlayer();
},
_showFixedElements: function() {
// The list to use when switching between active players
this._chooseActivePlayerItem = new PopupMenu.PopupSubMenuMenuItem(_("Choose player controls"));
this._chooseActivePlayerItem.actor.hide();
this.menu.addMenuItem(this._chooseActivePlayerItem);
// The launch player list
this._launchPlayerItem = new PopupMenu.PopupSubMenuMenuItem(_("Launch player"));
this.menu.addMenuItem(this._launchPlayerItem);
this._updateLaunchPlayer();
//between these two separators will be the player MenuSection (position 3)
this.menu.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
this._outputVolumeSection = new VolumeSlider(this, null, _("Volume"), null);
this._outputVolumeSection.connect("values-changed", Lang.bind(this, this._outputValuesChanged));
this.menu.addMenuItem(this._outputVolumeSection);
this.menu.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
this.menu.addSettingsAction(_("Sound Settings"), 'sound');
},
_updateLaunchPlayer: function() {
let availablePlayers = [];
let appsys = Cinnamon.AppSystem.get_default();
//_knownPlayers is an array containing the paths of desktop files
for(let i = 0, l = this._knownPlayers.length; i < l; ++i){
let app = appsys.lookup_app(this._knownPlayers[i] + ".desktop");
if (app)
availablePlayers.push(app);
}
this._launchPlayerItem.menu.removeAll();
if (availablePlayers.length > 0) {
for (var p = 0; p < availablePlayers.length; p++) {
let playerApp = availablePlayers[p];
let menuItem = new MediaPlayerLauncher(playerApp, this._launchPlayerItem.menu);
this._launchPlayerItem.menu.addMenuItem(menuItem);
}
} else {
this._launchPlayerItem.actor.hide();
}
},
_updatePlayerMenuItems: function() {
if (this.playerControl && this._activePlayer) {
this._launchPlayerItem.actor.hide();
this._chooseActivePlayerItem.actor.show();
// Show a dot on the active player in the switching menu
for (let i = 0, l = this._playerItems.length; i < l; ++i) {
let playerItem = this._playerItems[i];
playerItem.item.setShowDot(playerItem.player._owner === this._activePlayer);
}
// Hide the switching menu if we only have at most one active player
if(this._chooseActivePlayerItem.menu.numMenuItems <= 1) {
this._chooseActivePlayerItem.actor.hide();
}
} else {
if (this._launchPlayerItem.menu.numMenuItems) {
this._launchPlayerItem.actor.show();
} else {
this._launchPlayerItem.actor.hide();
}
}
},
_changeActivePlayer: function(player) {
if (this._activePlayer)
this.menu.box.remove_actor(this._players[this._activePlayer].actor);
this._activePlayer = player;
if (this.playerControl && this._activePlayer != null) {
this.menu.addMenuItem(this._players[player], 1);
}
this._updatePlayerMenuItems();
},
_notifyVolumeChange: function(stream) {
Main.soundManager.playVolume('volume', stream.decibel);
},
_mutedChanged: function(object, param_spec, property) {
if (property == "_output") {
this.mute_out_switch.setToggleState(this._output.is_muted);
} else if (property == "_input") {
this.mute_in_switch.setToggleState(this._input.is_muted);
}
},
_outputValuesChanged: function(actor, iconName, percentage) {
this.setIcon(iconName, "output");
this.mute_out_switch.setIconSymbolicName(iconName);
this.set_applet_tooltip(_("Volume") + ": " + percentage);
},
_inputValuesChanged: function(actor, iconName) {
this.mute_in_switch.setIconSymbolicName(iconName);
},
_onControlStateChanged: function() {
if (this._control.get_state() == Cvc.MixerControlState.READY) {
this._readOutput();
this._readInput();
this.actor.show();
} else {
this.actor.hide();
}
},
_readOutput: function() {
if (this._outputMutedId) {
this._output.disconnect(this._outputMutedId);
this._outputMutedId = 0;
}
this._output = this._control.get_default_sink();
if (this._output) {
this._outputVolumeSection.connectWithStream(this._output);
this._outputMutedId = this._output.connect('notify::is-muted', Lang.bind(this, this._mutedChanged, '_output'));
this._mutedChanged (null, null, '_output');
} else {
this.setIcon("audio-volume-muted-symbolic", "output");
}
},
_readInput: function() {
if (this._inputMutedId) {
this._input.disconnect(this._inputMutedId);
this._inputMutedId = 0;
}
this._input = this._control.get_default_source();
if (this._input) {
this._inputVolumeSection.connectWithStream(this._input);
this._inputMutedId = this._input.connect('notify::is-muted', Lang.bind(this, this._mutedChanged, '_input'));
this._mutedChanged (null, null, '_input');
} else {
this._inputSection.actor.hide();
}
},
_onDeviceAdded: function(control, id, type){
let device = this._control["lookup_" + type + "_id"](id);
let item = new PopupMenu.PopupMenuItem(device.description);
item.activate = Lang.bind(this, function(){
this._control["change_" + type](device);
});
let bin = new St.Bin({ x_align: St.Align.END, style_class: 'popup-inactive-menu-item' });
let label = new St.Label({ text: device.origin });
bin.add_actor(label);
item.addActor(bin, { expand: true, span: -1, align: St.Align.END });
let selectItem = this["_select" + type[0].toUpperCase() + type.slice(1) + "DeviceItem"];
selectItem.menu.addMenuItem(item);
//show the menu if we have more than two devices
if(selectItem.menu.numMenuItems > 1)
selectItem.actor.show();
this._devices.push({id: id, type: type, item: item});
},
_onDeviceRemoved: function(control, id, type){
for (let i = 0, l = this._devices.length; i < l; ++i){
if (this._devices[i].type === type && this._devices[i].id === id) {
let device = this._devices[i];
if (device.item)
device.item.destroy();
//hide submenu if showing them is unnecessary
let selectItem = this["_select" + type[0].toUpperCase() + type.slice(1) + "DeviceItem"];
if(selectItem.menu.numMenuItems <= 1)
selectItem.actor.hide();
this._devices.splice(i, 1);
break;
}
}
},
_onDeviceUpdate: function(control, id, type){
this["_read" + type[0].toUpperCase() + type.slice(1)]();
for (let i = 0, l = this._devices.length; i < l; ++i) {
if (this._devices[i].type === type)
this._devices[i].item.setShowDot(id === this._devices[i].id);
}
},
_onStreamAdded: function(control, id){
let stream = this._control.lookup_stream_id(id);
let appId = stream.application_id;
if (stream.is_virtual || appId === "org.freedesktop.libcanberra") {
//sort out unwanted streams
return;
}
if (stream instanceof Cvc.MixerSinkInput) {
//for sink inputs, add a menuitem to the application submenu
let item = new StreamMenuSection(this, stream);
this._outputApplicationsMenu.menu.addMenuItem(item);
this._outputApplicationsMenu.actor.show();
this._streams.push({id: id, type: "SinkInput", item: item});
} else if (stream instanceof Cvc.MixerSourceOutput) {
//for source outputs, only show the input section
this._streams.push({id: id, type: "SourceOutput"});
if (this._recordingAppsNum++ === 0)
this._inputSection.actor.show();
}
},
_onStreamRemoved: function(control, id){
for (let i = 0, l = this._streams.length; i < l; ++i) {
if(this._streams[i].id === id){
let stream = this._streams[i];
if(stream.item)
stream.item.destroy();
//hide submenus or sections if showing them is unnecessary
if (stream.type === "SinkInput") {
if (this._outputApplicationsMenu.menu.numMenuItems === 0)
this._outputApplicationsMenu.actor.hide();
} else if (stream.type === "SourceOutput") {
if(--this._recordingAppsNum === 0)
this._inputSection.actor.hide();
}
this._streams.splice(i, 1);
break;
}
}
},
registerSystrayIcons: function() {
for (let i = 0; i < players_with_seek_support.length; i++) {
Main.systrayManager.registerRole(players_with_seek_support[i], this.metadata.uuid);
}
for (let i = 0; i < players_without_seek_support.length; i++) {
Main.systrayManager.registerRole(players_without_seek_support[i], this.metadata.uuid);
}
},
unregisterSystrayIcons: function() {
Main.systrayManager.unregisterId(this.metadata.uuid);
}
};
function main(metadata, orientation, panel_height, instanceId) {
let myApplet = new MyApplet(metadata, orientation, panel_height, instanceId);
return myApplet;
}
Cinnamon-3.6.7/files/usr/share/cinnamon/applets/recent@cinnamon.org/ 0000775 0001750 0001750 00000000000 13215735076 024406 5 ustar fabio fabio Cinnamon-3.6.7/files/usr/share/cinnamon/applets/recent@cinnamon.org/metadata.json 0000664 0001750 0001750 00000000263 13215735076 027062 0 ustar fabio fabio {
"uuid": "recent@cinnamon.org",
"name": "Recent documents",
"description": "Access the documents you recently opened",
"icon": "document-open-recent",
"max-instances": -1
}
Cinnamon-3.6.7/files/usr/share/cinnamon/applets/recent@cinnamon.org/applet.js 0000664 0001750 0001750 00000020060 13215735076 026227 0 ustar fabio fabio const DocInfo = imports.misc.docInfo;
const Gtk = imports.gi.Gtk;
const Gio = imports.gi.Gio;
const St = imports.gi.St;
const PopupMenu = imports.ui.popupMenu;
const Lang = imports.lang;
const Applet = imports.ui.applet;
const PRIVACY_SCHEMA = "org.cinnamon.desktop.privacy";
const REMEMBER_RECENT_KEY = "remember-recent-files";
const PANEL_EDIT_MODE_KEY = "panel-edit-mode";
function MyPopupMenuItem()
{
this._init.apply(this, arguments);
}
MyPopupMenuItem.prototype =
{
__proto__: PopupMenu.PopupBaseMenuItem.prototype,
_init: function(icon, text, uri, params) {
PopupMenu.PopupBaseMenuItem.prototype._init.call(this, params);
this.box = new St.BoxLayout({ style_class: 'popup-combobox-item' });
this.icon = icon;
this.uri = uri;
if (this.icon) {
this.box.add(this.icon);
}
this.label = new St.Label({ text: text });
this.box.add(this.label);
this.addActor(this.box);
}
};
function MyApplet(orientation, panel_height, instance_id) {
this._init(orientation, panel_height, instance_id);
}
MyApplet.prototype = {
__proto__: Applet.IconApplet.prototype,
_init: function(orientation, panel_height, instance_id) {
Applet.IconApplet.prototype._init.call(this, orientation, panel_height, instance_id);
try {
this.set_applet_icon_symbolic_name("document-open-recent");
this.set_applet_tooltip(_("Recent documents"));
this.menuManager = new PopupMenu.PopupMenuManager(this);
this.menu = new Applet.AppletPopupMenu(this, orientation);
this.menuManager.addMenu(this.menu);
this.mainContainer = new St.BoxLayout({ vertical: true });
this.menu.addActor(this.mainContainer);
this.recentsScrollBox = new St.ScrollView({ x_fill: true, y_fill: false, y_align: St.Align.START });
this.recentsScrollBox.set_auto_scrolling(true);
this.mainContainer.add(this.recentsScrollBox);
this.recentsBox = new St.BoxLayout({ vertical:true });
this.recentsScrollBox.add_actor(this.recentsBox);
this.recentsScrollBox.set_policy(Gtk.PolicyType.NEVER, Gtk.PolicyType.AUTOMATIC);
this.RecentManager = new DocInfo.DocManager();
this.privacy_settings = new Gio.Settings( {schema_id: PRIVACY_SCHEMA} );
this._recentButtons = [];
this._display();
this.recent_id = this.RecentManager.connect('changed', Lang.bind(this, this._refreshRecents));
this.settings_id = this.privacy_settings.connect("changed::" + REMEMBER_RECENT_KEY, Lang.bind(this, this._refreshRecents));
global.settings.connect('changed::' + PANEL_EDIT_MODE_KEY, Lang.bind(this, this._on_panel_edit_mode_changed));
}
catch (e) {
global.logError(e);
}
},
_on_panel_edit_mode_changed: function () {
if (global.settings.get_boolean(PANEL_EDIT_MODE_KEY)) {
this.actor.show();
} else {
this.actor.visible = this._recentButtons.length > 0;
}
},
on_applet_removed_from_panel: function () {
this.RecentManager.disconnect(this.recent_id);
this.privacy_settings.disconnect(this.settings_id);
},
on_applet_clicked: function(event) {
this.menu.toggle();
},
_display: function() {
this._refreshRecents();
},
_launchFile: function(a, b, c, docinfo) {
docinfo.launch();
},
_clearAll: function() {
let GtkRecent = new Gtk.RecentManager();
GtkRecent.purge_items();
},
destroy: function() {
this.RecentManager.disconnectAll();
this.actor._delegate = null;
this.menu.destroy();
this.actor.destroy();
this._recentButtons = null;
this.emit('destroy');
},
_refreshRecents: function() {
if (this.privacy_settings.get_boolean(REMEMBER_RECENT_KEY)) {
let new_recents = [];
let have_recents = false;
if (this.RecentManager._infosByTimestamp.length > 0) {
let id = 0;
while (id < this.RecentManager._infosByTimestamp.length) {
let uri = this.RecentManager._infosByTimestamp[id].uri;
let new_button = null;
new_button = this._recentButtons.find(button => ((button.uri) && (button.uri == uri)));
if (new_button == undefined) {
let icon = this.RecentManager._infosByTimestamp[id].createIcon(22);
let menuItem = new MyPopupMenuItem(icon, this.RecentManager._infosByTimestamp[id].name, uri, {});
this.menu.addMenuItem(menuItem);
menuItem.connect('activate', Lang.bind(this, this._launchFile, this.RecentManager._infosByTimestamp[id]));
new_button = menuItem;
}
new_recents.push(new_button);
id++;
}
let recent_clear_button = null;
recent_clear_button = this._recentButtons.find(button => ((button.uri) && (button.uri == "clear")));
if (recent_clear_button == undefined) {
let icon = new St.Icon({ icon_name: 'edit-clear', icon_type: St.IconType.SYMBOLIC, icon_size: 22 });
let menuItem = new MyPopupMenuItem(icon, _("Clear list"), "clear", {});
menuItem.connect('activate', Lang.bind(this, this._clearAll));
recent_clear_button = menuItem;
}
have_recents = true;
new_recents.push(recent_clear_button);
} else {
let no_recents_button = null;
no_recents_button = this._recentButtons.find(button => ((button.uri) && (button.uri == "no-recents")));
if (no_recents_button == undefined) {
let menuItem = new MyPopupMenuItem(null, _("No recent documents"), "no-recents", {});
no_recents_button = menuItem;
}
new_recents.push(no_recents_button);
}
let to_remove = [];
/* Remove no-longer-valid items */
for (let i = 0; i < this._recentButtons.length; i++) {
let button = this._recentButtons[i];
if (button.uri == "no-recents" && have_recents) {
to_remove.push(button);
} else {
if (new_recents.indexOf(button) == -1) {
to_remove.push(button);
}
}
}
if (to_remove.length > 0) {
for (let i in to_remove) {
to_remove[i].destroy();
this._recentButtons.splice(this._recentButtons.indexOf(to_remove[i]), 1);
}
}
to_remove = [];
/* Now, add new actors, shuffle existing actors */
let placeholder = this.recentsBox.get_first_child();
for (let i = 0; i < new_recents.length; i++) {
let actor = new_recents[i].actor;
let parent = actor.get_parent();
if (parent != null) {
parent.remove_child(actor);
}
if (actor != placeholder) {
this.recentsBox.insert_child_above(actor, placeholder);
} else {
this.recentsBox.add_child(actor);
}
placeholder = actor;
}
this._recentButtons = new_recents;
this.actor.show();
} else {
for (let i = 0; i < this._recentButtons.length; i ++) {
this._recentButtons[i].destroy();
}
this._recentButtons = [];
this.actor.hide();
}
this._on_panel_edit_mode_changed();
}
};
function main(metadata, orientation, panel_height, instance_id) {
let myApplet = new MyApplet(orientation, panel_height, instance_id);
return myApplet;
}
Cinnamon-3.6.7/files/usr/share/cinnamon/applets/inhibit@cinnamon.org/ 0000775 0001750 0001750 00000000000 13215735076 024554 5 ustar fabio fabio Cinnamon-3.6.7/files/usr/share/cinnamon/applets/inhibit@cinnamon.org/icons/ 0000775 0001750 0001750 00000000000 13215735076 025667 5 ustar fabio fabio Cinnamon-3.6.7/files/usr/share/cinnamon/applets/inhibit@cinnamon.org/icons/inhibit-symbolic.svg 0000664 0001750 0001750 00000011004 13215735076 031651 0 ustar fabio fabio
././@LongLink 0000644 0000000 0000000 00000000147 00000000000 011605 L ustar root root Cinnamon-3.6.7/files/usr/share/cinnamon/applets/inhibit@cinnamon.org/icons/inhibit-active-symbolic.svg Cinnamon-3.6.7/files/usr/share/cinnamon/applets/inhibit@cinnamon.org/icons/inhibit-active-symbolic.s0000664 0001750 0001750 00000012257 13215735076 032600 0 ustar fabio fabio
Cinnamon-3.6.7/files/usr/share/cinnamon/applets/inhibit@cinnamon.org/metadata.json 0000664 0001750 0001750 00000000342 13215735076 027226 0 ustar fabio fabio {
"uuid": "inhibit@cinnamon.org",
"name": "Inhibit Applet",
"icon": "sleep",
"description": "This applet is used to disable notifications and power management (including the screensaver and the session from going idle)"
}
Cinnamon-3.6.7/files/usr/share/cinnamon/applets/inhibit@cinnamon.org/applet.js 0000664 0001750 0001750 00000013745 13215735076 026411 0 ustar fabio fabio const Applet = imports.ui.applet;
const Gio = imports.gi.Gio;
const Lang = imports.lang;
const St = imports.gi.St;
const Tooltips = imports.ui.tooltips;
const PopupMenu = imports.ui.popupMenu;
const GnomeSession = imports.misc.gnomeSession;
const INHIBIT_IDLE_FLAG = 8;
const INHIBIT_SLEEP_FLAG = 4;
function InhibitSwitch(applet) {
this._init(applet);
}
InhibitSwitch.prototype = {
__proto__: PopupMenu.PopupBaseMenuItem.prototype,
_init: function(applet) {
this._applet = applet;
PopupMenu.PopupBaseMenuItem.prototype._init.call(this);
this.label = new St.Label({ text: _("Power management") });
this._statusIcon = new St.Icon({ style_class: 'popup-menu-icon',
icon_type: St.IconType.SYMBOLIC,
icon_name: "dialog-warning-symbolic",
reactive: true});
this._switch = new PopupMenu.Switch(true);
this.addActor(this.label);
this.addActor(this._statusIcon);
this._statusBin = new St.Bin({ x_align: St.Align.END });
this.addActor(this._statusBin, { expand: true, span: -1, align: St.Align.END });
this._statusBin.child = this._switch.actor;
this.actor.hide();
this.tooltip = new Tooltips.Tooltip(this._statusIcon, "");
this.sessionProxy = null;
this.sessionCookie = null;
this.sigAddedId = 0;
this.sigRemovedId = 0;
GnomeSession.SessionManager(Lang.bind(this, function(proxy, error) {
if (error)
return;
this.sessionProxy = proxy;
this.actor.show();
this.updateStatus();
this.propId = this.sessionProxy.connect("g-properties-changed",
Lang.bind(this, this.updateStatus));
}));
},
activate: function(event) {
if (this._switch.actor.mapped) {
this._switch.toggle();
}
this.toggled(this._switch.state);
PopupMenu.PopupBaseMenuItem.prototype.activate.call(this, event, true);
},
updateStatus: function(o) {
let current_state = this.sessionProxy.InhibitedActions;
if (current_state & INHIBIT_IDLE_FLAG ||
current_state & INHIBIT_SLEEP_FLAG) {
this._applet.set_applet_icon_symbolic_name('inhibit-active');
this._applet.set_applet_tooltip(_("Power management: inhibited"));
} else {
this._applet.set_applet_icon_symbolic_name('inhibit');
this._applet.set_applet_tooltip(_("Power management: active"));
}
if (current_state >= INHIBIT_SLEEP_FLAG && !this.sessionCookie) {
this.tooltip.set_text(_("Power management is already inhibited by another program"));
this._applet.set_applet_tooltip(_("Power management: inhibited by another program"));
this._statusIcon.set_opacity(255);
} else {
this.tooltip.set_text("");
this._statusIcon.set_opacity(0);
}
},
toggled: function(active) {
if (!active && !this.sessionCookie) {
this.sessionProxy.InhibitRemote("inhibit@cinnamon.org",
0,
"prevent idle functions like screen blanking and dimming",
INHIBIT_IDLE_FLAG,
Lang.bind(this, function(cookie) {
this.sessionCookie = cookie;
this.updateStatus();
}));
} else if (active && this.sessionCookie) {
this.sessionProxy.UninhibitRemote(this.sessionCookie);
this.sessionCookie = null;
this.updateStatus();
}
},
kill: function() {
if (!this.sessionProxy)
return;
if (this.sessionCookie) {
this.sessionProxy.UninhibitRemote(this.sessionCookie);
this.sessionCookie = null;
}
this.sessionProxy.disconnect(this.propId);
}
};
function MyApplet(metadata, orientation, panel_height, instanceId) {
this._init(metadata, orientation, panel_height, instanceId);
}
MyApplet.prototype = {
__proto__: Applet.IconApplet.prototype,
_init: function(metadata, orientation, panel_height, instanceId) {
Applet.IconApplet.prototype._init.call(this, orientation, panel_height, instanceId);
this.metadata = metadata;
this.menuManager = new PopupMenu.PopupMenuManager(this);
this.menu = new Applet.AppletPopupMenu(this, orientation);
this.menuManager.addMenu(this.menu);
this.inhibitSwitch = new InhibitSwitch(this);
this.menu.addMenuItem(this.inhibitSwitch);
this.set_applet_icon_symbolic_name('inhibit');
this.set_applet_tooltip(_("Inhibit applet"));
this.notif_settings = new Gio.Settings({ schema_id: "org.cinnamon.desktop.notifications" });
this.notificationsSwitch = new PopupMenu.PopupSwitchMenuItem(_("Notifications"), this.notif_settings.get_boolean("display-notifications"));
this.notif_settings.connect('changed::display-notifications', Lang.bind(this, function() {
this.notificationsSwitch.setToggleState(this.notif_settings.get_boolean("display-notifications"));
}));
this.notificationsSwitch.connect('toggled', Lang.bind(this, function() {
this.notif_settings.set_boolean("display-notifications", this.notificationsSwitch.state);
}));
this.menu.addMenuItem(this.notificationsSwitch);
},
on_applet_clicked: function(event) {
this.menu.toggle();
},
on_applet_removed_from_panel: function() {
this.inhibitSwitch.kill();
}
};
function main(metadata, orientation, panel_height, instanceId) {
let myApplet = new MyApplet(metadata, orientation, panel_height, instanceId);
return myApplet;
}
Cinnamon-3.6.7/files/usr/share/cinnamon/applets/spacer@cinnamon.org/ 0000775 0001750 0001750 00000000000 13215735076 024403 5 ustar fabio fabio Cinnamon-3.6.7/files/usr/share/cinnamon/applets/spacer@cinnamon.org/settings-schema.json 0000664 0001750 0001750 00000000355 13215735076 030377 0 ustar fabio fabio {
"width": {
"type": "scale",
"default" : 10,
"min" : 2,
"max" : 400,
"step" : 1,
"description" : "Amount of space in pixels",
"tooltip" : "Adjust this to increase or decrease the width of this spacer"
}
}
Cinnamon-3.6.7/files/usr/share/cinnamon/applets/spacer@cinnamon.org/metadata.json 0000664 0001750 0001750 00000000242 13215735076 027054 0 ustar fabio fabio {
"uuid": "spacer@cinnamon.org",
"name": "Spacer",
"description": "Add some space between your other applets",
"icon": "view-restore",
"max-instances": -1
}
Cinnamon-3.6.7/files/usr/share/cinnamon/applets/spacer@cinnamon.org/applet.js 0000664 0001750 0001750 00000003064 13215735076 026231 0 ustar fabio fabio const Applet = imports.ui.applet;
const St = imports.gi.St;
const Settings = imports.ui.settings;
function MyApplet(metadata, orientation, panelHeight, instance_id) {
this._init(metadata, orientation, panelHeight, instance_id);
}
MyApplet.prototype = {
__proto__: Applet.IconApplet.prototype,
_init: function(metadata, orientation, panelHeight, instance_id) {
Applet.IconApplet.prototype._init.call(this, orientation, panelHeight, instance_id);
this.actor.track_hover = false;
this.bin = new St.Bin();
this.actor.add(this.bin);
this.settings = new Settings.AppletSettings(this, "spacer@cinnamon.org", this.instance_id);
this.settings.bind("width", "width", this.width_changed);
this.orientation = orientation;
this.width_changed();
},
on_orientation_changed: function(neworientation) {
this.orientation = neworientation;
if (this.bin) {
this.bin.destroy();
this.bin = new St.Bin();
this.actor.add(this.bin);
this.width_changed();
}
},
width_changed: function() {
if (this.orientation == St.Side.TOP || this.orientation == St.Side.BOTTOM)
this.bin.width = this.width;
else
this.bin.height = this.width;
},
on_applet_removed_from_panel: function() {
this.settings.finalize();
}
};
function main(metadata, orientation, panelHeight, instance_id) {
let myApplet = new MyApplet(metadata, orientation, panelHeight, instance_id);
return myApplet;
}
Cinnamon-3.6.7/files/usr/share/cinnamon/applets/a11y@cinnamon.org/ 0000775 0001750 0001750 00000000000 13215735076 023701 5 ustar fabio fabio Cinnamon-3.6.7/files/usr/share/cinnamon/applets/a11y@cinnamon.org/metadata.json 0000664 0001750 0001750 00000000247 13215735076 026357 0 ustar fabio fabio {
"uuid": "a11y@cinnamon.org",
"name": "Accessibility",
"description": "Accessibility applet",
"icon": "preferences-desktop-accessibility",
"max-instances": -1
}
Cinnamon-3.6.7/files/usr/share/cinnamon/applets/a11y@cinnamon.org/applet.js 0000664 0001750 0001750 00000021777 13215735076 025542 0 ustar fabio fabio const PopupMenu = imports.ui.popupMenu;
const Gio = imports.gi.Gio;
const Lang = imports.lang;
const Applet = imports.ui.applet;
const Main = imports.ui.main;
const Gdk = imports.gi.Gdk;
const A11Y_SCHEMA = 'org.cinnamon.desktop.a11y.keyboard';
const KEY_STICKY_KEYS_ENABLED = 'stickykeys-enable';
const KEY_BOUNCE_KEYS_ENABLED = 'bouncekeys-enable';
const KEY_SLOW_KEYS_ENABLED = 'slowkeys-enable';
const KEY_MOUSE_KEYS_ENABLED = 'mousekeys-enable';
const APPLICATIONS_SCHEMA = 'org.cinnamon.desktop.a11y.applications';
const DPI_FACTOR_LARGE = 1.25;
const DESKTOP_INTERFACE_SCHEMA = 'org.cinnamon.desktop.interface';
const KEY_GTK_THEME = 'gtk-theme';
const KEY_ICON_THEME = 'icon-theme';
const KEY_TEXT_SCALING_FACTOR = 'text-scaling-factor';
const HIGH_CONTRAST_THEME = 'HighContrast';
const Keymap = Gdk.Keymap.get_default();
function MyApplet(metadata, orientation, panel_height, applet_id) {
this._init(metadata, orientation, panel_height, applet_id);
}
MyApplet.prototype = {
__proto__: Applet.TextIconApplet.prototype,
_init: function(metadata, orientation, panel_height, instance_id) {
Applet.TextIconApplet.prototype._init.call(this, orientation, panel_height, instance_id);
this.setAllowedLayout(Applet.AllowedLayout.BOTH);
try {
this.metadata = metadata;
Main.systrayManager.registerRole("a11y", metadata.uuid);
this.set_applet_icon_symbolic_name("preferences-desktop-accessibility");
this.set_applet_tooltip(_("Accessibility"));
this.menuManager = new PopupMenu.PopupMenuManager(this);
this.menu = new Applet.AppletPopupMenu(this, orientation);
this.menuManager.addMenu(this.menu);
let highContrast = this._buildHCItem();
this.menu.addMenuItem(highContrast);
let magnifier = this._buildItem(_("Zoom"), APPLICATIONS_SCHEMA,
'screen-magnifier-enabled');
this.menu.addMenuItem(magnifier);
let textZoom = this._buildFontItem();
this.menu.addMenuItem(textZoom);
let screenReader = this._buildItem(_("Screen Reader"), APPLICATIONS_SCHEMA,
'screen-reader-enabled');
this.menu.addMenuItem(screenReader);
let screenKeyboard = this._buildItem(_("Screen Keyboard"), APPLICATIONS_SCHEMA,
'screen-keyboard-enabled');
this.menu.addMenuItem(screenKeyboard);
let stickyKeys = this._buildItem(_("Sticky Keys"), A11Y_SCHEMA, KEY_STICKY_KEYS_ENABLED);
this.menu.addMenuItem(stickyKeys);
let slowKeys = this._buildItem(_("Slow Keys"), A11Y_SCHEMA, KEY_SLOW_KEYS_ENABLED);
this.menu.addMenuItem(slowKeys);
let bounceKeys = this._buildItem(_("Bounce Keys"), A11Y_SCHEMA, KEY_BOUNCE_KEYS_ENABLED);
this.menu.addMenuItem(bounceKeys);
let mouseKeys = this._buildItem(_("Mouse Keys"), A11Y_SCHEMA, KEY_MOUSE_KEYS_ENABLED);
this.menu.addMenuItem(mouseKeys);
this.menu.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
this.menu.addSettingsAction(_("Universal Access Settings"), 'universal-access');
this.a11y_settings = new Gio.Settings({ schema_id: A11Y_SCHEMA });
this._keyboardStateChangedId = Keymap.connect('state-changed', Lang.bind(this, this._handleStateChange));
this.set_show_label_in_vertical_panels(false);
this.hide_applet_label(true);
}
catch (e) {
global.logError(e);
}
},
_handleStateChange: function(actor, event) {
if (this.a11y_settings.get_boolean(KEY_STICKY_KEYS_ENABLED)) {
let state = Keymap.get_modifier_state();
let modifiers = [];
if (state & Gdk.ModifierType.LOCK_MASK)
modifiers.push('Lock');
if (state & Gdk.ModifierType.CONTROL_MASK)
modifiers.push('Ctrl');
if (state & Gdk.ModifierType.MOD4_MASK)
modifiers.push('Super');
if (state & Gdk.ModifierType.SUPER_MASK)
modifiers.push('Super');
if (state & Gdk.ModifierType.META_MASK)
modifiers.push('Meta');
if (state & Gdk.ModifierType.ALT_MASK)
modifiers.push('Alt');
if (state & Gdk.ModifierType.MOD5_MASK)
modifiers.push('Alt Gr');
if (state & Gdk.ModifierType.SHIFT_MASK)
modifiers.push('Shift');
if (state & Gdk.ModifierType.MOD1_MASK)
modifiers.push('Alt');
if (state & Gdk.ModifierType.MOD2_MASK)
modifiers.push('Mod2');
if (state & Gdk.ModifierType.MOD3_MASK)
modifiers.push('Mod3');
let keystring = modifiers.join('+');
this.set_applet_label(keystring);
this.set_applet_tooltip(keystring);
this._applet_tooltip.show();
} else {
this.reset_tooltip();
}
},
on_applet_clicked: function(event) {
this.menu.toggle();
},
reset_tooltip: function () {
this.set_applet_tooltip(_("Accessibility"));
this._applet_tooltip.hide();
},
_buildItemExtended: function(string, initial_value, writable, on_set) {
let widget = new PopupMenu.PopupSwitchMenuItem(string, initial_value);
if (!writable)
widget.actor.reactive = false;
else
widget.connect('toggled', function(item) {
on_set(item.state);
});
return widget;
},
_buildItem: function(string, schema, key) {
let settings = new Gio.Settings({ schema_id: schema });
let widget = this._buildItemExtended(string,
settings.get_boolean(key),
settings.is_writable(key),
function(enabled) {
return settings.set_boolean(key, enabled);
});
settings.connect('changed::'+key, function() {
widget.setToggleState(settings.get_boolean(key));
});
return widget;
},
_buildHCItem: function() {
let settings = new Gio.Settings({ schema_id: DESKTOP_INTERFACE_SCHEMA });
let gtkTheme = settings.get_string(KEY_GTK_THEME);
let iconTheme = settings.get_string(KEY_ICON_THEME);
let hasHC = (gtkTheme == HIGH_CONTRAST_THEME);
let highContrast = this._buildItemExtended(
_("High Contrast"),
hasHC,
settings.is_writable(KEY_GTK_THEME) && settings.is_writable(KEY_ICON_THEME),
function (enabled) {
if (enabled) {
settings.set_string(KEY_GTK_THEME, HIGH_CONTRAST_THEME);
settings.set_string(KEY_ICON_THEME, HIGH_CONTRAST_THEME);
} else if(!hasHC) {
settings.set_string(KEY_GTK_THEME, gtkTheme);
settings.set_string(KEY_ICON_THEME, iconTheme);
} else {
settings.reset(KEY_GTK_THEME);
settings.reset(KEY_ICON_THEME);
}
});
settings.connect('changed::' + KEY_GTK_THEME, function() {
let value = settings.get_string(KEY_GTK_THEME);
if (value == HIGH_CONTRAST_THEME) {
highContrast.setToggleState(true);
} else {
highContrast.setToggleState(false);
gtkTheme = value;
}
});
settings.connect('changed::' + KEY_ICON_THEME, function() {
let value = settings.get_string(KEY_ICON_THEME);
if (value != HIGH_CONTRAST_THEME)
iconTheme = value;
});
return highContrast;
},
_buildFontItem: function() {
let settings = new Gio.Settings({ schema_id: DESKTOP_INTERFACE_SCHEMA });
let factor = settings.get_double(KEY_TEXT_SCALING_FACTOR);
let initial_setting = (factor > 1.0);
let widget = this._buildItemExtended(_("Large Text"),
initial_setting,
settings.is_writable(KEY_TEXT_SCALING_FACTOR),
function (enabled) {
if (enabled)
settings.set_double(KEY_TEXT_SCALING_FACTOR,
DPI_FACTOR_LARGE);
else
settings.reset(KEY_TEXT_SCALING_FACTOR);
});
settings.connect('changed::' + KEY_TEXT_SCALING_FACTOR, function() {
let factor = settings.get_double(KEY_TEXT_SCALING_FACTOR);
let active = (factor > 1.0);
widget.setToggleState(active);
});
return widget;
},
on_applet_removed_from_panel: function() {
Main.systrayManager.unregisterRole("a11y", this.metadata.uuid);
}
};
function main(metadata, orientation, panel_height, instance_id) {
let myApplet = new MyApplet(metadata, orientation, panel_height, instance_id);
return myApplet;
}
Cinnamon-3.6.7/files/usr/share/cinnamon/applets/keyboard@cinnamon.org/ 0000775 0001750 0001750 00000000000 13215735076 024726 5 ustar fabio fabio Cinnamon-3.6.7/files/usr/share/cinnamon/applets/keyboard@cinnamon.org/metadata.json 0000664 0001750 0001750 00000000216 13215735076 027400 0 ustar fabio fabio {
"uuid": "keyboard@cinnamon.org",
"name": "Keyboard",
"description": "Keyboard layout",
"icon": "input-keyboard",
"max-instances": -1
}
Cinnamon-3.6.7/files/usr/share/cinnamon/applets/keyboard@cinnamon.org/applet.js 0000664 0001750 0001750 00000024153 13215735076 026556 0 ustar fabio fabio const Applet = imports.ui.applet;
const XApp = imports.gi.XApp;
const Lang = imports.lang;
const St = imports.gi.St;
const Main = imports.ui.main;
const PopupMenu = imports.ui.popupMenu;
const Util = imports.misc.util;
const Mainloop = imports.mainloop;
const Gio = imports.gi.Gio;
const Cairo = imports.cairo;
const PANEL_EDIT_MODE_KEY = "panel-edit-mode";
function EmblemedIcon() {
this._init.apply(this, arguments);
}
EmblemedIcon.prototype = {
_init: function(path, id, style_class) {
this.path = path;
this.id = id;
this.actor = new St.DrawingArea({ style_class: style_class });
this.actor.connect("style-changed", Lang.bind(this, this._style_changed));
this.actor.connect("repaint", Lang.bind(this, this._repaint));
},
_style_changed: function(actor) {
let icon_size = 0.5 + this.actor.get_theme_node().get_length("icon-size");
this.actor.natural_width = this.actor.natural_height = icon_size;
},
_repaint: function(actor) {
let cr = actor.get_context();
let [w, h] = actor.get_surface_size();
cr.save();
let surf = St.TextureCache.get_default().load_file_to_cairo_surface(this.path);
let factor = w / surf.getWidth();
let true_width = surf.getWidth() * factor;
let true_height = surf.getHeight() * factor;
let y_offset = 0;
let x_offset = 0;
if (surf.getWidth() >= surf.getHeight()) {
x_offset = 0;
y_offset = ((h * (1 / factor)) - surf.getHeight()) / 2;
} else {
x_offset = ((w * (1 / factor)) - surf.getWidth()) / 2;
y_offset = 0;
}
let true_x_offset = (w - true_width) / 2;
let true_y_offset = (h - true_height) / 2;
cr.scale(factor, factor);
cr.setSourceSurface(surf, x_offset, y_offset);
cr.getSource().setFilter(Cairo.Filter.BEST);
cr.setOperator(Cairo.Operator.SOURCE);
cr.paint();
cr.restore();
XApp.KbdLayoutController.render_cairo_subscript(cr,
true_x_offset + (true_width / 2),
true_y_offset + (true_height / 2),
true_width / 2,
true_height / 2,
this.id);
cr.$dispose();
},
/* Monkey patch St.Icon functions used in js/ui/applet.js IconApplet so
we can use its _setStyle() function for figuring out how big we should
be
*/
get_icon_type: function() {
return St.IconType.FULLCOLOR;
},
set_icon_size: function(size) {
this.actor.width = this.actor.height = size;
},
set_style_class_name: function(name) {
return;
}
};
function LayoutMenuItem() {
this._init.apply(this, arguments);
}
LayoutMenuItem.prototype = {
__proto__: PopupMenu.PopupBaseMenuItem.prototype,
_init: function(config, id, indicator, long_name) {
PopupMenu.PopupBaseMenuItem.prototype._init.call(this);
this._config = config;
this._id = id;
this.label = new St.Label({ text: long_name });
this.indicator = indicator;
this.addActor(this.label);
this.addActor(this.indicator);
},
activate: function(event) {
PopupMenu.PopupBaseMenuItem.prototype.activate.call(this);
this._config.set_current_group(this._id);
}
};
function MyApplet(metadata, orientation, panel_height, instance_id) {
this._init(metadata, orientation, panel_height, instance_id);
}
MyApplet.prototype = {
__proto__: Applet.TextIconApplet.prototype,
_init: function(metadata, orientation, panel_height, instance_id) {
Applet.TextIconApplet.prototype._init.call(this, orientation, panel_height, instance_id);
this.setAllowedLayout(Applet.AllowedLayout.BOTH);
try {
this.metadata = metadata;
Main.systrayManager.registerRole("keyboard", metadata.uuid);
this.menuManager = new PopupMenu.PopupMenuManager(this);
this.menu = new Applet.AppletPopupMenu(this, orientation);
this.menuManager.addMenu(this.menu);
this.actor.add_style_class_name('panel-status-button');
this._layoutItems = [ ];
this.show_flags = false;
this.use_upper = false;
this.use_variants = false;
this.desktop_settings = new Gio.Settings({ schema_id: "org.cinnamon.desktop.interface" });
this.desktop_settings.connect("changed::keyboard-layout-show-flags", Lang.bind(this, this._syncConfig));
this.desktop_settings.connect("changed::keyboard-layout-use-upper", Lang.bind(this, this._syncConfig));
this.desktop_settings.connect("changed::keyboard-layout-prefer-variant-names", Lang.bind(this, this._syncConfig));
global.settings.connect('changed::' + PANEL_EDIT_MODE_KEY, Lang.bind(this, this._onPanelEditModeChanged));
this.menu.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
this.menu.addAction(_("Show Keyboard Layout"), Lang.bind(this, function() {
Main.overview.hide();
Util.spawn(['gkbd-keyboard-display', '-g', String(this._config.get_current_group() + 1)]);
}));
this.menu.addAction(_("Show Character Table"), Lang.bind(this, function() {
Main.overview.hide();
Util.spawn(['gucharmap']);
}));
this.menu.addSettingsAction(_("Keyboard Settings"), 'keyboard');
}
catch (e) {
global.logError(e);
}
},
_onPanelEditModeChanged: function() {
if (global.settings.get_boolean(PANEL_EDIT_MODE_KEY)) {
if (!this.actor.visible) {
this.set_applet_icon_symbolic_name("input-keyboard");
this.actor.show();
}
}
else {
this._syncConfig();
}
},
on_applet_added_to_panel: function() {
this._config = new XApp.KbdLayoutController();
if (global.settings.get_boolean(PANEL_EDIT_MODE_KEY)) {
this._syncConfig();
this._onPanelEditModeChanged();
} else {
this._syncConfig();
}
this._config.connect('layout-changed', Lang.bind(this, this._syncGroup));
this._config.connect('config-changed', Lang.bind(this, this._syncConfig));
},
on_applet_clicked: function(event) {
this.menu.toggle();
},
_syncConfig: function() {
for (let i = 0; i < this._layoutItems.length; i++)
this._layoutItems[i].destroy();
this._selectedLayout = null;
this._layoutItems = [ ];
if (!this._config.get_enabled()) {
this.menu.close();
this.actor.hide();
return;
}
this.show_flags = this.desktop_settings.get_boolean("keyboard-layout-show-flags");
this.use_upper = this.desktop_settings.get_boolean("keyboard-layout-use-upper");
this.use_variants = this.desktop_settings.get_boolean("keyboard-layout-prefer-variant-names");
this.actor.show();
let groups = this._config.get_all_names();
for (let i = 0; i < groups.length; i++) {
let handled = false;
let actor = null;
if (this.show_flags) {
let name = this._config.get_icon_name_for_group(i);
let file = Gio.file_new_for_path("/usr/share/iso-flag-png/" + name + ".png");
if (file.query_exists(null)) {
actor = new EmblemedIcon(file.get_path(), this._config.get_flag_id_for_group(i), "popup-menu-icon").actor;
handled = true;
}
}
if (!handled) {
let name;
if (this.use_variants) {
name = this._config.get_variant_label_for_group(i);
} else {
name = this._config.get_short_group_label_for_group(i);
}
name = this.use_upper ? name.toUpperCase() : name;
actor = new St.Label({ text: name });
}
let item = new LayoutMenuItem(this._config, i, actor, groups[i]);
this._layoutItems.push(item);
this.menu.addMenuItem(item, i);
}
Mainloop.idle_add(Lang.bind(this, this._syncGroup));
},
_syncGroup: function() {
let selected = this._config.get_current_group();
if (this._selectedLayout) {
this._selectedLayout.setShowDot(false);
this._selectedLayout = null;
}
let item = this._layoutItems[selected];
item.setShowDot(true);
this._selectedLayout = item;
this.set_applet_tooltip(this._config.get_current_name());
let handled = false;
if (this.show_flags) {
let name = this._config.get_current_icon_name();
let file = Gio.file_new_for_path("/usr/share/iso-flag-png/" + name + ".png");
if (file.query_exists(null)) {
this._applet_icon = new EmblemedIcon(file.get_path(), this._config.get_current_flag_id(), "applet-icon");
this._applet_icon_box.set_child(this._applet_icon.actor);
this._setStyle();
this.set_applet_label("");
handled = true;
}
}
if (!handled) {
let name;
if (this.use_variants) {
name = this._config.get_current_variant_label();
} else {
name = this._config.get_current_short_group_label();
}
name = this.use_upper ? name.toUpperCase() : name;
this.set_applet_label(name);
this.hide_applet_icon();
}
},
on_applet_removed_from_panel: function() {
Main.systrayManager.unregisterRole("keyboard", this.metadata.uuid);
}
};
function main(metadata, orientation, panel_height, instance_id) {
let myApplet = new MyApplet(metadata, orientation, panel_height, instance_id);
return myApplet;
}
Cinnamon-3.6.7/files/usr/share/cinnamon/applets/systray@cinnamon.org/ 0000775 0001750 0001750 00000000000 13215735076 024644 5 ustar fabio fabio Cinnamon-3.6.7/files/usr/share/cinnamon/applets/systray@cinnamon.org/metadata.json 0000664 0001750 0001750 00000000237 13215735076 027321 0 ustar fabio fabio {
"uuid": "systray@cinnamon.org",
"name": "System Tray",
"icon": "applications-system",
"description": "An applet which hosts all the system tray icons"
}
Cinnamon-3.6.7/files/usr/share/cinnamon/applets/systray@cinnamon.org/applet.js 0000664 0001750 0001750 00000035566 13215735076 026506 0 ustar fabio fabio const Lang = imports.lang;
const St = imports.gi.St;
const Clutter = imports.gi.Clutter;
const Applet = imports.ui.applet;
const PopupMenu = imports.ui.popupMenu;
const Main = imports.ui.main;
const Mainloop = imports.mainloop;
const SignalManager = imports.misc.signalManager;
const ICON_SCALE_FACTOR = 0.8; // for custom panel heights, 20 (default icon size) / 25 (default panel height)
const DEFAULT_ICON_SIZE = 20;
// Override the factory and create an AppletPopupMenu instead of a PopupMenu
function IndicatorMenuFactory() {
this._init.apply(this, arguments);
}
IndicatorMenuFactory.prototype = {
__proto__: PopupMenu.PopupMenuFactory.prototype,
_init: function() {
PopupMenu.PopupMenuFactory.prototype._init.call(this);
},
_createShellItem: function(factoryItem, launcher, orientation) {
// Decide whether it's a submenu or not
let shellItem = null;
let item_type = factoryItem.getFactoryType();
if (item_type == PopupMenu.FactoryClassTypes.RootMenuClass)
shellItem = new Applet.AppletPopupMenu(launcher, orientation);
if (item_type == PopupMenu.FactoryClassTypes.SubMenuMenuItemClass)
shellItem = new PopupMenu.PopupSubMenuMenuItem("FIXME");
else if (item_type == PopupMenu.FactoryClassTypes.MenuSectionMenuItemClass)
shellItem = new PopupMenu.PopupMenuSection();
else if (item_type == PopupMenu.FactoryClassTypes.SeparatorMenuItemClass)
shellItem = new PopupMenu.PopupSeparatorMenuItem('');
else if (item_type == PopupMenu.FactoryClassTypes.MenuItemClass)
shellItem = new PopupMenu.PopupIndicatorMenuItem("FIXME");
return shellItem;
}
};
function MyApplet(orientation, panel_height, instance_id) {
this._init(orientation, panel_height, instance_id);
}
MyApplet.prototype = {
__proto__: Applet.Applet.prototype,
_init: function(orientation, panel_height, instance_id) {
Applet.Applet.prototype._init.call(this, orientation, panel_height, instance_id);
this.setAllowedLayout(Applet.AllowedLayout.BOTH);
this.actor.remove_style_class_name('applet-box');
this.actor.set_style_class_name('systray');
this.actor.set_important(true); // ensure we get class details from the default theme if not present
this._signalManager = new SignalManager.SignalManager(null);
let manager;
this.orientation = orientation;
if (this.orientation == St.Side.TOP || this.orientation == St.Side.BOTTOM) {
manager = new Clutter.BoxLayout( { spacing: 2,
orientation: Clutter.Orientation.HORIZONTAL });
} else {
manager = new Clutter.BoxLayout( { spacing: 2,
orientation: Clutter.Orientation.VERTICAL });
}
this.manager = manager;
this.manager_container = new Clutter.Actor( { layout_manager: manager } );
this.actor.add_actor (this.manager_container);
this.manager_container.show();
this._statusItems = [];
this._shellIndicators = {};
this.menuFactory = new IndicatorMenuFactory();
this.menuManager = new PopupMenu.PopupMenuManager(this);
this._signalAdded = 0;
this._signalRemoved = 0;
},
_addIndicatorSupport: function() {
let manager = Main.indicatorManager;
// Blacklist some of the icons
// quassel: The proper icon in Quassel is "QuasselIRC",
// this is a fallback icon which Quassel launches when it fails to detect
// our indicator support (i.e. when Cinnamon is restarted for instance)
// The problem is.. Quassel doesn't kill that icon when it creates QuasselIRC again..
manager.insertInBlackList("quassel");
let currentIndicators = manager.getIndicatorIds();
for (let pos in currentIndicators) {
if (!manager.isInBlackList(currentIndicators[pos])) {
let appIndicator = manager.getIndicatorById(currentIndicators[pos]);
this._onIndicatorAdded(manager, appIndicator);
}
}
if (this._signalAdded == 0)
this._signalAdded = manager.connect('indicator-added', Lang.bind(this, this._onIndicatorAdded));
if (this._signalRemoved == 0)
this._signalRemoved = manager.connect('indicator-removed', Lang.bind(this, this._onIndicatorRemoved));
},
_removeIndicatorSupport: function() {
if (this.signalAdded) {
Main.indicatorManager.disconnect(this.signalAdded);
this.signalAdded = 0;
}
if (this.signalRemoved) {
Main.indicatorManager.disconnect(this.signalRemoved);
this.signalRemoved = 0;
}
for (let id in this._shellIndicators) {
this._shellIndicators[id].destroy();
}
this._shellIndicators = {};
},
_onIndicatorAdded: function(manager, appIndicator) {
if (!(appIndicator.id in this._shellIndicators)) {
let size = null;
size = this._getIconSize(this._panelHeight/global.ui_scale);
let indicatorActor = appIndicator.getActor(size);
indicatorActor._applet = this;
this._shellIndicators[appIndicator.id] = indicatorActor;
this._signalManager.connect(indicatorActor.actor, 'destroy', this._onIndicatorIconDestroy, this);
this._signalManager.connect(indicatorActor.actor, 'enter-event', this._onEnterEvent, this);
this._signalManager.connect(indicatorActor.actor, 'leave-event', this._onLeaveEvent, this);
this.manager_container.add_actor(indicatorActor.actor);
appIndicator.createMenuClientAsync(Lang.bind(this, function(client) {
if (client != null) {
let newMenu = client.getShellMenu();
if (!newMenu) {
newMenu = this.menuFactory.buildShellMenu(client, indicatorActor, this.orientation);
this.menuManager.addMenu(newMenu);
}
indicatorActor.setMenu(newMenu);
}
}));
}
},
_onEnterEvent: function(actor, event) {
this.set_applet_tooltip(actor._delegate.getToolTip());
},
_onLeaveEvent: function(actor, event) {
this.set_applet_tooltip("");
},
_onIndicatorIconDestroy: function(actor) {
for (let id in this._shellIndicators) {
if (this._shellIndicators[id].actor == actor) {
delete this._shellIndicators[id];
break;
}
}
},
_getIconSize: function(ht) {
let size;
let disp_size = ht * ICON_SCALE_FACTOR; // hidpi with largest panel, gets up to 80
if (disp_size < 22) {
size = 16;
} else if (disp_size < 32) {
size = 22;
} else if (disp_size < 48) {
size = 32;
} else if (disp_size < 64) {
size = 48;
} else if (disp_size < 96) {
size = 64;
} else if (disp_size < 128) {
size = 96;
} else {
size = 48;
}
return size;
},
_onIndicatorRemoved: function(manager, appIndicator) {
if (appIndicator.id in this._shellIndicators) {
let indicatorActor = this._shellIndicators[appIndicator.id];
delete this._shellIndicators[appIndicator.id];
indicatorActor.destroy();
}
},
on_applet_clicked: function(event) {
},
on_orientation_changed: function(neworientation) {
if (neworientation == St.Side.TOP || neworientation == St.Side.BOTTOM) {
this.manager.set_vertical(false);
} else {
this.manager.set_vertical(true);
}
},
on_applet_removed_from_panel: function () {
this._signalManager.disconnectAllSignals();
this._removeIndicatorSupport();
},
on_applet_added_to_panel: function() {
Main.statusIconDispatcher.start(this.actor.get_parent().get_parent());
this._signalManager.connect(Main.statusIconDispatcher, 'status-icon-added', this._onTrayIconAdded, this);
this._signalManager.connect(Main.statusIconDispatcher, 'status-icon-removed', this._onTrayIconRemoved, this);
this._signalManager.connect(Main.statusIconDispatcher, 'before-redisplay', this._onBeforeRedisplay, this);
this._signalManager.connect(Main.systrayManager, "changed", Main.statusIconDispatcher.redisplay, Main.statusIconDispatcher);
this._addIndicatorSupport();
},
on_panel_height_changed: function() {
Main.statusIconDispatcher.redisplay();
let size = null;
size = this._getIconSize(this._panelHeight/global.ui_scale);
for (let id in this._shellIndicators) {
let indicator = Main.indicatorManager.getIndicatorById(id);
if (indicator) {
this._shellIndicators[id].setSize(size);
}
}
},
_onBeforeRedisplay: function() {
// Mark all icons as obsolete
// There might still be pending delayed operations to insert/resize of them
// And that would crash Cinnamon
for (var i = 0; i < this._statusItems.length; i++) {
this._statusItems[i].obsolete = true;
}
this._statusItems = [];
let children = this.manager_container.get_children().filter(function(child) {
// We are only interested in the status icons and apparently we can not ask for
// child instanceof CinnamonTrayIcon.
return (child.toString().indexOf("CinnamonTrayIcon") != -1);
});
for (let i = 0; i < children.length; i++) {
children[i].destroy();
}
},
_onTrayIconAdded: function(o, icon, role) {
try {
let hiddenIcons = Main.systrayManager.getRoles();
if (hiddenIcons.indexOf(role) != -1 ) {
// We've got an applet for that
global.log("Hiding systray: " + role);
return;
}
global.log("Adding systray: " + role + " (" + icon.get_width() + "x" + icon.get_height() + "px)");
if (icon.get_parent())
icon.get_parent().remove_child(icon);
icon.obsolete = false;
this._statusItems.push(icon);
if (["pidgin"].indexOf(role) != -1) {
// Delay pidgin insertion by 10 seconds
// Pidgin is very weird.. it starts with a small icon
// Then replaces that icon with a bigger one when the connection is established
// Pidgin can be fixed by inserting or resizing after a delay
// The delay is big because resizing/inserting too early
// makes pidgin invisible (in absence of disk cache).. even if we resize/insert again later
this._insertStatusItemLater(role, icon, -1, 10000);
} else if (["shutter", "filezilla", "dropbox", "thunderbird", "unknown", "blueberry-tray.py", "mintupdate.py"].indexOf(role) != -1) {
// Delay insertion by 1 second
// This fixes an invisible icon in the absence of disk cache for : shutter
// filezilla, dropbox, thunderbird, blueberry, mintupdate are known to show up in the wrong size or position, this should fix them as well
// Note: as of Oct 2015, the dropbox systray is calling itself "unknown"
this._insertStatusItemLater(role, icon, -1, 1000);
} else {
// Delay all other apps by 1 second...
// For many of them, we don't need to do that,
// It's a small delay though and that fixes most buggy apps
// And we're far from having an exhaustive list of them..
this._insertStatusItemLater(role, icon, -1, 1000);
}
} catch (e) {
global.logError(e);
}
},
_insertStatusItemLater: function(role, icon, position, delay) {
// Inserts an icon in the systray after a delay (useful for buggy icons)
// Delaying the insertion of pidgin by 10 seconds for instance is known to fix it on empty disk cache
let timerId = Mainloop.timeout_add(delay, Lang.bind(this, function() {
this._insertStatusItem(role, icon, position);
Mainloop.source_remove(timerId);
}));
},
_onTrayIconRemoved: function(o, icon) {
icon.obsolete = true;
for (var i = 0; i < this._statusItems.length; i++) {
if (this._statusItems[i] == icon) {
this._statusItems.splice(i, 1);
}
}
if (icon.get_parent() == this.manager_container) {
this.manager_container.remove_child(icon);
}
icon.destroy();
},
_insertStatusItem: function(role, icon, position) {
if (icon.obsolete == true) {
return;
}
let children = this.manager_container.get_children().filter(function(child) {
// We are only interested in the status icons and apparently we can not ask for
// child instanceof CinnamonTrayIcon.
return (child.toString().indexOf("CinnamonTrayIcon") != -1);
});
let i;
for (i = children.length - 1; i >= 0; i--) {
let rolePosition = children[i]._rolePosition;
if (position > rolePosition) {
this.manager_container.insert_child_at_index(icon, i + 1);
break;
}
}
if (i == -1) {
// If we didn't find a position, we must be first
this.manager_container.insert_child_at_index(icon, 0);
}
icon._rolePosition = position;
if (this._scaleMode) {
let timerId = Mainloop.timeout_add(500, Lang.bind(this, function() {
this._resizeStatusItem(role, icon);
Mainloop.source_remove(timerId);
}));
} else {
icon.set_pivot_point(0.5, 0.5);
icon.set_scale((DEFAULT_ICON_SIZE * global.ui_scale) / icon.width,
(DEFAULT_ICON_SIZE * global.ui_scale) / icon.height);
}
},
_resizeStatusItem: function(role, icon) {
if (icon.obsolete == true) {
return;
}
if (["shutter", "filezilla"].indexOf(role) != -1) {
global.log("Not resizing " + role + " as it's known to be buggy (" + icon.get_width() + "x" + icon.get_height() + "px)");
} else {
let size = this._getIconSize(this._panelHeight);
icon.set_size(size, size);
global.log("Resized " + role + " with normalized size (" + icon.get_width() + "x" + icon.get_height() + "px)");
//Note: dropbox doesn't scale, even though we resize it...
}
},
};
function main(metadata, orientation, panel_height, instance_id) {
let myApplet = new MyApplet(orientation, panel_height, instance_id);
return myApplet;
}
Cinnamon-3.6.7/files/usr/share/cinnamon/applets/windows-quick-list@cinnamon.org/ 0000775 0001750 0001750 00000000000 13215735076 026703 5 ustar fabio fabio Cinnamon-3.6.7/files/usr/share/cinnamon/applets/windows-quick-list@cinnamon.org/icons/ 0000775 0001750 0001750 00000000000 13215735076 030016 5 ustar fabio fabio ././@LongLink 0000644 0000000 0000000 00000000166 00000000000 011606 L ustar root root Cinnamon-3.6.7/files/usr/share/cinnamon/applets/windows-quick-list@cinnamon.org/icons/windows-quick-list-symbolic.svg Cinnamon-3.6.7/files/usr/share/cinnamon/applets/windows-quick-list@cinnamon.org/icons/windows-quick-0000664 0001750 0001750 00000000365 13215735076 032626 0 ustar fabio fabio
Cinnamon-3.6.7/files/usr/share/cinnamon/applets/windows-quick-list@cinnamon.org/metadata.json 0000664 0001750 0001750 00000000264 13215735076 031360 0 ustar fabio fabio {
"uuid": "windows-quick-list@cinnamon.org",
"name": "Windows Quick List",
"description": "Quickly access windows from all workspaces",
"icon": "view-list",
"max-instances": -1
}
Cinnamon-3.6.7/files/usr/share/cinnamon/applets/windows-quick-list@cinnamon.org/applet.js 0000664 0001750 0001750 00000013540 13215735076 030531 0 ustar fabio fabio const Applet = imports.ui.applet;
const Cinnamon = imports.gi.Cinnamon;
const Lang = imports.lang;
const PopupMenu = imports.ui.popupMenu;
const St = imports.gi.St;
const Main = imports.ui.main;
function MyApplet(metadata, orientation, panel_height, instance_id) {
this._init(metadata, orientation, panel_height, instance_id);
}
MyApplet.prototype = {
__proto__: Applet.IconApplet.prototype,
_init: function(metadata, orientation, panel_height, instance_id) {
Applet.IconApplet.prototype._init.call(this, orientation, panel_height, instance_id);
try {
this.set_applet_icon_symbolic_name("windows-quick-list");
this.set_applet_tooltip(_("All windows"));
this._menu = new Applet.AppletPopupMenu(this, orientation);
this.menuManager = new PopupMenu.PopupMenuManager(this);
this.menuManager.addMenu(this._menu);
this.subMenuItemWrapper = new PopupMenu.PopupSubMenuMenuItem(null);
this.subMenuItemWrapper.actor.set_style_class_name('');
this.subMenuItemWrapper.menu.actor.set_style_class_name('');
this.menu = this.subMenuItemWrapper.menu;
this._menu.addMenuItem(this.subMenuItemWrapper);
}
catch (e) {
global.logError(e);
}
},
updateMenu: function() {
this.menu.removeAll();
let empty_menu = true;
try {
let tracker = Cinnamon.WindowTracker.get_default();
for ( let wks=0; wks0) {
this.menu.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
}
if(global.screen.n_workspaces>1) {
let item = new PopupMenu.PopupMenuItem(workspace_name);
item.actor.reactive = false;
item.actor.can_focus = false;
item.label.add_style_class_name('popup-subtitle-menu-item');
if(wks == global.screen.get_active_workspace().index()) {
item.setShowDot(true);
}
this.menu.addMenuItem(item);
empty_menu = false;
}
for ( let i = 0; i < windows.length; ++i ) {
let metaWindow = windows[i];
let item = new PopupMenu.PopupMenuItem(windows[i].get_title());
item.connect('activate', Lang.bind(this, function() { this.activateWindow(metaWorkspace, metaWindow); } ));
item._window = windows[i];
let app = tracker.get_window_app(item._window);
item._icon = app.create_icon_texture(24);
item.addActor(item._icon, { align: St.Align.END });
this.menu.addMenuItem(item);
empty_menu = false;
}
}
}
} catch(e) {
global.logError(e);
}
if (empty_menu) {
let item = new PopupMenu.PopupMenuItem(_("No open windows"));
item.actor.reactive = false;
item.actor.can_focus = false;
item.label.add_style_class_name('popup-subtitle-menu-item');
this.menu.addMenuItem(item);
}
},
activateWindow: function(metaWorkspace, metaWindow) {
if (this._menu.isOpen) {
this._menu.toggle();
}
this.menu.toggle();
if(!metaWindow.is_on_all_workspaces()) { metaWorkspace.activate(global.get_current_time()); }
metaWindow.unminimize();
metaWindow.activate(global.get_current_time());
},
on_applet_clicked: function(event) {
this.updateMenu();
if (!this._menu.isOpen) {
this._menu.toggle();
}
this.menu.toggle();
}
};
function main(metadata, orientation, panel_height, instance_id) {
let myApplet = new MyApplet(metadata, orientation, panel_height, instance_id);
return myApplet;
}
Cinnamon-3.6.7/files/usr/share/cinnamon/applets/workspace-switcher@cinnamon.org/ 0000775 0001750 0001750 00000000000 13215735076 026752 5 ustar fabio fabio Cinnamon-3.6.7/files/usr/share/cinnamon/applets/workspace-switcher@cinnamon.org/settings-schema.json0000664 0001750 0001750 00000000416 13215735076 032744 0 ustar fabio fabio {
"display_type": {
"type": "combobox",
"description": "Type of display",
"default": "visual",
"options" : {
"A visual representation of the workspaces": "visual",
"Simple buttons": "buttons"
}
}
}
Cinnamon-3.6.7/files/usr/share/cinnamon/applets/workspace-switcher@cinnamon.org/metadata.json 0000664 0001750 0001750 00000000265 13215735076 031430 0 ustar fabio fabio {
"uuid": "workspace-switcher@cinnamon.org",
"name": "Workspace switcher",
"description": "Select the workspace from the panel",
"icon": "cs-workspaces",
"max-instances": -1
}
Cinnamon-3.6.7/files/usr/share/cinnamon/applets/workspace-switcher@cinnamon.org/applet.js 0000664 0001750 0001750 00000040234 13215735076 030600 0 ustar fabio fabio const St = imports.gi.St;
const Clutter = imports.gi.Clutter;
const Lang = imports.lang;
const Applet = imports.ui.applet;
const Main = imports.ui.main;
const Meta = imports.gi.Meta;
const PopupMenu = imports.ui.popupMenu;
const SignalManager = imports.misc.signalManager;
const Tooltips = imports.ui.tooltips;
const Settings = imports.ui.settings;
const ModalDialog = imports.ui.modalDialog;
const MIN_SWITCH_INTERVAL_MS = 220;
function WorkspaceButton(index, applet) {
this._init(index, applet);
}
WorkspaceButton.prototype = {
_init : function(index, applet) {
this.index = index;
this.applet = applet;
this.workspace = global.screen.get_workspace_by_index(this.index);
this.workspace_name = Main.getWorkspaceName(index);
this.actor = null; // defined in subclass
this.ws_signals = new SignalManager.SignalManager(null);
this.ws_signals.connect(this.workspace, "window-added", this.update, this);
this.ws_signals.connect(this.workspace, "window-removed", this.update, this);
},
show : function() {
this.actor.connect('button-release-event', Lang.bind(this, this.onClicked));
this._tooltip = new Tooltips.PanelItemTooltip(this, this.workspace_name, this.applet.orientation);
},
onClicked: function(actor, event) {
if (event.get_button() == 1) {
Main.wm.moveToWorkspace(this.workspace);
}
},
update: function() {
// defined in subclass
},
destroy: function() {
this.ws_signals.disconnectAllSignals();
this._tooltip.destroy();
this.actor.destroy();
}
};
function WorkspaceGraph(index, applet) {
this._init(index, applet);
}
WorkspaceGraph.prototype = {
__proto__: WorkspaceButton.prototype,
_init: function(index, applet) {
WorkspaceButton.prototype._init.call(this, index, applet);
this.actor = new St.Bin({ reactive: true,
style_class: 'workspace',
y_fill: true,
important: true });
this.graphArea = new St.DrawingArea({ style_class: 'windows', important: true });
this.actor.child = this.graphArea;
this.panelApplet = applet;
this.workspace_size = new Meta.Rectangle();
this.workspace.get_work_area_all_monitors(this.workspace_size);
this.sizeRatio = this.workspace_size.width / this.workspace_size.height;
let height = applet._panelHeight - 6;
if (applet.orientation == St.Side.LEFT || applet.orientation == St.Side.RIGHT)
height = height / this.sizeRatio;
this.actor.set_size(this.sizeRatio * height, height);
this.graphArea.set_size(this.sizeRatio * height, height);
this.graphArea.connect('repaint', Lang.bind(this, this.onRepaint));
if (index == global.screen.get_active_workspace_index()) {
this.actor.add_style_pseudo_class('active');
}
},
scale: function (windows_rect, workspace_rect, area_width, area_height) {
let scaled_rect = new Meta.Rectangle();
let x_ratio = area_width / workspace_rect.width;
let y_ratio = area_height / workspace_rect.height;
scaled_rect.x = windows_rect.x * x_ratio;
scaled_rect.y = windows_rect.y * y_ratio;
scaled_rect.width = windows_rect.width * x_ratio;
scaled_rect.height = windows_rect.height * y_ratio;
return scaled_rect;
},
sortWindowsByUserTime: function (win1, win2) {
let t1 = win1.get_user_time();
let t2 = win2.get_user_time();
return (t2 < t1) ? 1 : -1;
},
onRepaint: function(area) {
try {
let graphThemeNode = this.graphArea.get_theme_node();
let workspaceThemeNode = this.panelApplet.actor.get_theme_node();
let height = this.panelApplet._panelHeight - workspaceThemeNode.get_vertical_padding();
let borderWidth = workspaceThemeNode.get_border_width(St.Side.TOP) + workspaceThemeNode.get_border_width(St.Side.BOTTOM);
this.graphArea.set_size(this.sizeRatio * height, height - borderWidth);
let cr = area.get_context();
let [area_width, area_height] = area.get_surface_size();
// construct a list with all windows
let windows = this.workspace.list_windows();
windows = windows.filter( Main.isInteresting );
windows = windows.filter(
function(w) {
return !w.is_skip_taskbar() && !w.minimized;
});
windows.sort(this.sortWindowsByUserTime);
if (windows.length) {
let windowBackgroundColor;
let windowBorderColor;
for (let i = 0; i < windows.length; ++i) {
let metaWindow = windows[i];
let scaled_rect = this.scale(metaWindow.get_outer_rect(), this.workspace_size, area_width, area_height);
cr.setLineWidth(1);
if (metaWindow.has_focus()) {
windowBorderColor = graphThemeNode.get_color('-active-window-border');
Clutter.cairo_set_source_color(cr, windowBorderColor);
}
else {
windowBorderColor = graphThemeNode.get_color('-inactive-window-border');
Clutter.cairo_set_source_color(cr, windowBorderColor);
}
cr.rectangle(scaled_rect.x, scaled_rect.y, scaled_rect.width, scaled_rect.height);
cr.strokePreserve();
if (metaWindow.has_focus()) {
windowBackgroundColor = graphThemeNode.get_color('-active-window-background');
Clutter.cairo_set_source_color(cr, windowBackgroundColor);
}
else {
windowBackgroundColor = graphThemeNode.get_color('-inactive-window-background');
Clutter.cairo_set_source_color(cr, windowBackgroundColor);
}
cr.fill();
}
}
cr.$dispose();
} catch(e) {
global.logError(e);
}
},
update: function() {
this.graphArea.queue_repaint();
}
};
function SimpleButton(index, applet) {
this._init(index, applet);
}
SimpleButton.prototype = {
__proto__: WorkspaceButton.prototype,
_init : function(index, applet) {
WorkspaceButton.prototype._init.call(this, index, applet);
this.actor = new St.Button({ name: 'workspaceButton',
style_class: 'workspace-button',
reactive: true });
if (index == global.screen.get_active_workspace_index()) {
this.actor.add_style_pseudo_class('outlined');
}
if (applet.orientation == St.Side.TOP || applet.orientation == St.Side.BOTTOM) {
this.actor.set_height(applet._panelHeight);
} else {
this.actor.set_height(0.6 * applet._panelHeight); // factors are completely empirical
this.actor.set_width(0.9 * applet._panelHeight);
}
if (applet.orientation == St.Side.LEFT || applet.orientation == St.Side.RIGHT)
this.actor.add_style_class_name('vertical');
let label = new St.Label({ text: (index + 1).toString() });
this.actor.set_child(label);
},
update: function() {
}
};
function MyApplet(metadata, orientation, panel_height, instance_id) {
this._init(metadata, orientation, panel_height, instance_id);
}
MyApplet.prototype = {
__proto__: Applet.Applet.prototype,
_init: function(metadata, orientation, panel_height, instance_id) {
Applet.Applet.prototype._init.call(this, orientation, panel_height, instance_id);
this.setAllowedLayout(Applet.AllowedLayout.BOTH);
try {
this.orientation = orientation;
this.panel_height = panel_height;
this.signals = new SignalManager.SignalManager(null);
this.buttons = [];
this._last_switch = 0;
this._last_switch_direction = 0;
let manager;
if (this.orientation == St.Side.TOP || this.orientation == St.Side.BOTTOM) {
manager = new Clutter.BoxLayout({ spacing: 2 * global.ui_scale,
homogeneous: true,
orientation: Clutter.Orientation.HORIZONTAL });
} else {
manager = new Clutter.BoxLayout({ spacing: 2 * global.ui_scale,
homogeneous: true,
orientation: Clutter.Orientation.VERTICAL });
}
this.manager = manager;
this.manager_container = new Clutter.Actor({ layout_manager: manager });
this.actor.add_actor (this.manager_container);
this.manager_container.show();
this._focusWindow = 0;
if (global.display.focus_window)
this._focusWindow = global.display.focus_window.get_compositor_private();
this.settings = new Settings.AppletSettings(this, metadata.uuid, instance_id);
this.settings.bind("display_type", "display_type", this._createButtons);
this.actor.connect('scroll-event', this.hook.bind(this));
this._createButtons();
global.screen.connect('notify::n-workspaces', Lang.bind(this, this.onNumberOfWorkspacesChanged));
global.window_manager.connect('switch-workspace', Lang.bind(this, this._createButtons));
this.on_panel_edit_mode_changed();
global.settings.connect('changed::panel-edit-mode', Lang.bind(this, this.on_panel_edit_mode_changed));
let expoMenuItem = new PopupMenu.PopupIconMenuItem(_("Manage workspaces (Expo)"), "view-grid-symbolic", St.IconType.SYMBOLIC);
expoMenuItem.connect('activate', Lang.bind(this, function() {
if (!Main.expo.animationInProgress)
Main.expo.toggle();
}));
this._applet_context_menu.addMenuItem(expoMenuItem);
let addWorkspaceMenuItem = new PopupMenu.PopupIconMenuItem (_("Add a new workspace"), "list-add", St.IconType.SYMBOLIC);
addWorkspaceMenuItem.connect('activate', Lang.bind(this, function() {
Main._addWorkspace();
}));
this._applet_context_menu.addMenuItem(addWorkspaceMenuItem);
this.removeWorkspaceMenuItem = new PopupMenu.PopupIconMenuItem (_("Remove the current workspace"), "list-remove", St.IconType.SYMBOLIC);
this.removeWorkspaceMenuItem.connect('activate', Lang.bind(this, function() {
this.removeWorkspace();
}));
this._applet_context_menu.addMenuItem(this.removeWorkspaceMenuItem);
this.removeWorkspaceMenuItem.setSensitive(global.screen.n_workspaces > 1);
}
catch (e) {
global.logError(e);
}
},
onNumberOfWorkspacesChanged: function() {
this.removeWorkspaceMenuItem.setSensitive(global.screen.n_workspaces > 1);
this._createButtons();
},
removeWorkspace : function (){
if (global.screen.n_workspaces <= 1) {
return;
}
this.workspace_index = global.screen.get_active_workspace_index();
let removeAction = Lang.bind(this, function() {
Main._removeWorkspace(global.screen.get_active_workspace());
});
if (!Main.hasDefaultWorkspaceName(this.workspace_index)) {
let prompt = _("Are you sure you want to remove workspace \"%s\"?\n\n").format(
Main.getWorkspaceName(this.workspace_index));
let confirm = new ModalDialog.ConfirmDialog(prompt, removeAction);
confirm.open();
}
else {
removeAction();
}
},
on_panel_edit_mode_changed: function() {
let reactive = !global.settings.get_boolean('panel-edit-mode');
for (let i = 0; i < this.buttons.length; ++i) {
this.buttons[i].reactive = reactive;
}
},
on_orientation_changed: function(neworientation) {
this.orientation = neworientation;
if (this.orientation == St.Side.TOP || this.orientation == St.Side.BOTTOM)
this.manager.set_vertical(false);
else
this.manager.set_vertical(true);
this._createButtons();
},
on_panel_height_changed: function() {
this._createButtons();
},
hook: function(actor, event) {
let now = (new Date()).getTime();
let direction = event.get_scroll_direction();
// Avoid fast scroll directions
if(direction != 0 && direction != 1) return;
// Do the switch only after a ellapsed time to avoid fast
// consecutive switches on sensible hardware, like touchpads
if ((now - this._last_switch) > MIN_SWITCH_INTERVAL_MS ||
direction !== this._last_switch_direction) {
if (direction == 0) Main.wm.actionMoveWorkspaceLeft();
else if (direction == 1) Main.wm.actionMoveWorkspaceRight();
this._last_switch = now;
this._last_switch_direction = direction;
}
},
_createButtons: function() {
for (let i = 0; i < this.buttons.length; ++i) {
this.buttons[i].destroy();
}
let suppress_graph = false; // suppress the graph and replace by buttons if size ratio
// would be unworkable in a vertical panel
if (this.orientation == St.Side.LEFT || this.orientation == St.Side.RIGHT) {
let workspace_size = new Meta.Rectangle();
global.screen.get_workspace_by_index(0).get_work_area_all_monitors(workspace_size);
let sizeRatio = workspace_size.width / workspace_size.height;
if (sizeRatio >= 2.35) { // completely empirical, other than the widest
// ratio single screen I know is 21*9 = 2.33
suppress_graph = true;
}
}
if (this.display_type == "visual" && !suppress_graph)
this.actor.set_style_class_name('workspace-graph');
else
this.actor.set_style_class_name('workspace-switcher');
this.actor.set_important(true);
this.buttons = [];
for (let i = 0; i < global.screen.n_workspaces; ++i) {
if (this.display_type == "visual" && !suppress_graph)
this.buttons[i] = new WorkspaceGraph(i, this);
else
this.buttons[i] = new SimpleButton(i, this);
this.manager_container.add_actor(this.buttons[i].actor);
this.buttons[i].show();
}
this.signals.disconnectAllSignals();
if (this.display_type == "visual" && !suppress_graph) {
// In visual mode, keep track of window events to represent them
this.signals.connect(global.display, "notify::focus-window", this._onFocusChanged, this);
this._onFocusChanged();
}
},
_onFocusChanged: function() {
if (global.display.focus_window &&
this._focusWindow == global.display.focus_window.get_compositor_private())
return;
this.signals.disconnect("position-changed");
this.signals.disconnect("size-changed");
if (!global.display.focus_window)
return;
this._focusWindow = global.display.focus_window.get_compositor_private();
this.signals.connect(this._focusWindow, "position-changed", Lang.bind(this, this._onPositionChanged), this);
this.signals.connect(this._focusWindow, "size-changed", Lang.bind(this, this._onPositionChanged), this);
this._onPositionChanged();
},
_onPositionChanged: function() {
let button = this.buttons[global.screen.get_active_workspace_index()];
button.update();
},
on_applet_removed_from_panel: function() {
this.signals.disconnectAllSignals();
}
};
function main(metadata, orientation, panel_height, instance_id) {
let myApplet = new MyApplet(metadata, orientation, panel_height, instance_id);
return myApplet;
}
Cinnamon-3.6.7/files/usr/share/cinnamon/applets/notifications@cinnamon.org/ 0000775 0001750 0001750 00000000000 13215735076 025777 5 ustar fabio fabio Cinnamon-3.6.7/files/usr/share/cinnamon/applets/notifications@cinnamon.org/settings-schema.json 0000664 0001750 0001750 00000001147 13215735076 031773 0 ustar fabio fabio {
"section1": {
"type": "section",
"description": "Behavior"
},
"ignoreTransientNotifications": {
"type": "switch",
"default": true,
"description": "Ignore transient notifications",
"tooltip" : "Check this to ignore transient notifications."
},
"section2": {
"type": "section",
"description": "Display"
},
"showEmptyTray" : {
"type" : "switch",
"default" : false,
"description" : "Show empty tray",
"tooltip" : "Check this to show the tray even when there are no new notifications."
}
}
Cinnamon-3.6.7/files/usr/share/cinnamon/applets/notifications@cinnamon.org/icons/ 0000775 0001750 0001750 00000000000 13215735076 027112 5 ustar fabio fabio ././@LongLink 0000644 0000000 0000000 00000000152 00000000000 011601 L ustar root root Cinnamon-3.6.7/files/usr/share/cinnamon/applets/notifications@cinnamon.org/icons/empty-notif-symbolic.svg Cinnamon-3.6.7/files/usr/share/cinnamon/applets/notifications@cinnamon.org/icons/empty-notif-symboli0000664 0001750 0001750 00000000313 13215735076 032761 0 ustar fabio fabio
././@LongLink 0000644 0000000 0000000 00000000153 00000000000 011602 L ustar root root Cinnamon-3.6.7/files/usr/share/cinnamon/applets/notifications@cinnamon.org/icons/normal-notif-symbolic.svg Cinnamon-3.6.7/files/usr/share/cinnamon/applets/notifications@cinnamon.org/icons/normal-notif-symbol0000664 0001750 0001750 00000000554 13215735076 032751 0 ustar fabio fabio
././@LongLink 0000644 0000000 0000000 00000000150 00000000000 011577 L ustar root root Cinnamon-3.6.7/files/usr/share/cinnamon/applets/notifications@cinnamon.org/icons/low-notif-symbolic.svg Cinnamon-3.6.7/files/usr/share/cinnamon/applets/notifications@cinnamon.org/icons/low-notif-symbolic.0000664 0001750 0001750 00000000563 13215735076 032654 0 ustar fabio fabio
././@LongLink 0000644 0000000 0000000 00000000161 00000000000 011601 L ustar root root Cinnamon-3.6.7/files/usr/share/cinnamon/applets/notifications@cinnamon.org/icons/alt-critical-notif-symbolic.svg Cinnamon-3.6.7/files/usr/share/cinnamon/applets/notifications@cinnamon.org/icons/alt-critical-notif-0000664 0001750 0001750 00000000603 13215735076 032576 0 ustar fabio fabio
././@LongLink 0000644 0000000 0000000 00000000155 00000000000 011604 L ustar root root Cinnamon-3.6.7/files/usr/share/cinnamon/applets/notifications@cinnamon.org/icons/critical-notif-symbolic.svg Cinnamon-3.6.7/files/usr/share/cinnamon/applets/notifications@cinnamon.org/icons/critical-notif-symb0000664 0001750 0001750 00000000623 13215735076 032715 0 ustar fabio fabio
Cinnamon-3.6.7/files/usr/share/cinnamon/applets/notifications@cinnamon.org/metadata.json 0000664 0001750 0001750 00000000272 13215735076 030453 0 ustar fabio fabio {
"uuid": "notifications@cinnamon.org",
"name": "Notifications",
"description": "Click to display and manage system notifications",
"role": "notifications",
"icon": "cs-notifications"
}
Cinnamon-3.6.7/files/usr/share/cinnamon/applets/notifications@cinnamon.org/applet.js 0000664 0001750 0001750 00000030343 13215735076 027625 0 ustar fabio fabio const Applet = imports.ui.applet;
const Lang = imports.lang;
const Main = imports.ui.main;
const Gtk = imports.gi.Gtk;
const Gio = imports.gi.Gio;
const PopupMenu = imports.ui.popupMenu;
const St = imports.gi.St;
const Mainloop = imports.mainloop;
const Urgency = imports.ui.messageTray.Urgency;
const NotificationDestroyedReason = imports.ui.messageTray.NotificationDestroyedReason;
const Settings = imports.ui.settings;
const Gettext = imports.gettext.domain("cinnamon-applets");
const PANEL_EDIT_MODE_KEY = "panel-edit-mode";
function MyApplet(metadata, orientation, panel_height, instanceId) {
this._init(metadata, orientation, panel_height, instanceId);
}
MyApplet.prototype = {
__proto__: Applet.TextIconApplet.prototype,
_init: function(metadata, orientation, panel_height, instanceId) {
Applet.TextIconApplet.prototype._init.call(this, orientation, panel_height, instanceId);
this.setAllowedLayout(Applet.AllowedLayout.BOTH);
// Settings
this.settings = new Settings.AppletSettings(this, metadata.uuid, instanceId);
this.settings.bind("ignoreTransientNotifications", "ignoreTransientNotifications");
this.settings.bind("showEmptyTray", "showEmptyTray", this._show_hide_tray);
// Layout
this._orientation = orientation;
this.menuManager = new PopupMenu.PopupMenuManager(this);
// Lists
this.notifications = []; // The list of notifications, in order from oldest to newest.
// Events
Main.messageTray.connect('notify-applet-update', Lang.bind(this, this._notification_added));
global.settings.connect('changed::' + PANEL_EDIT_MODE_KEY, Lang.bind(this, this._on_panel_edit_mode_changed));
// States
this._blinking = false;
this._blink_toggle = false;
},
_display: function() {
// Always start the applet empty, void of any notifications.
this.set_applet_icon_symbolic_name("empty-notif");
this.set_applet_tooltip(_("Notifications"));
// Setup the notification container.
this._maincontainer = new St.BoxLayout({name: 'traycontainer', vertical: true});
this._notificationbin = new St.BoxLayout({vertical:true});
this.button_label_box = new St.BoxLayout();
// Setup the tray icon.
this.menu_label = new PopupMenu.PopupMenuItem(stringify(this.notifications.length));
this.menu_label.actor.reactive = false;
this.menu_label.actor.can_focus = false;
this.menu_label.label.add_style_class_name('popup-subtitle-menu-item');
this.clear_separator = new PopupMenu.PopupSeparatorMenuItem();
this.clear_action = new PopupMenu.PopupMenuItem(_("Clear notifications"));
this.clear_action.connect('activate', Lang.bind(this, this._clear_all));
this.clear_action.actor.hide();
if (this._orientation == St.Side.BOTTOM) {
this.menu.addMenuItem(this.menu_label);
this.menu.addActor(this._maincontainer);
this.menu.addMenuItem(this.clear_separator);
this.menu.addMenuItem(this.clear_action);
} else {
this.menu.addMenuItem(this.clear_action);
this.menu.addMenuItem(this.clear_separator);
this.menu.addMenuItem(this.menu_label);
this.menu.addActor(this._maincontainer);
}
this.scrollview = new St.ScrollView({ x_fill: true, y_fill: true, y_align: St.Align.START, style_class: "vfade"});
this._maincontainer.add(this.scrollview);
this.scrollview.add_actor(this._notificationbin);
this.scrollview.set_policy(Gtk.PolicyType.NEVER, Gtk.PolicyType.AUTOMATIC);
let vscroll = this.scrollview.get_vscroll_bar();
vscroll.connect('scroll-start', Lang.bind(this, function() {
this.menu.passEvents = true;
}));
vscroll.connect('scroll-stop', Lang.bind(this, function() {
this.menu.passEvents = false;
}));
// Alternative tray icons.
this._crit_icon = new St.Icon({icon_name: 'critical-notif', icon_type: St.IconType.SYMBOLIC, reactive: true, track_hover: true, style_class: 'system-status-icon' });
this._alt_crit_icon = new St.Icon({icon_name: 'alt-critical-notif', icon_type: St.IconType.SYMBOLIC, reactive: true, track_hover: true, style_class: 'system-status-icon' });
this._on_panel_edit_mode_changed();
},
_notification_added: function (mtray, notification) { // Notification event handler.
// Ignore transient notifications?
if (this.ignoreTransientNotifications && notification.isTransient) {
return;
}
if (notification.enter_id > 0) {
notification.actor.disconnect(notification.enter_id);
notification.enter_id = 0;
}
if (notification.leave_id > 0) {
notification.actor.disconnect(notification.leave_id);
notification.leave_id = 0;
}
notification.actor.opacity = (notification._table.get_theme_node().get_length('opacity') / global.ui_scale) || 255;
notification.actor.unparent();
let existing_index = this.notifications.indexOf(notification);
if (existing_index != -1) { // This notification is already listed.
if (notification._destroyed) {
this.notifications.splice(existing_index, 1);
} else {
notification._inNotificationBin = true;
global.reparentActor(notification.actor, this._notificationbin);
notification.expand();
notification._timeLabel.show();
}
this.update_list();
return;
} else if (notification._destroyed) {
return;
}
// Add notification to list.
notification._inNotificationBin = true;
this.notifications.push(notification);
// Steal the notication panel.
notification.expand();
this._notificationbin.add(notification.actor);
notification.actor._parent_container = this._notificationbin;
notification.actor.add_style_class_name('notification-applet-padding');
// Register for destruction.
notification.connect('clicked', Lang.bind(this, this._item_clicked, false));
notification.connect('destroy', Lang.bind(this, this._item_clicked, true));
notification._timeLabel.show();
this.update_list();
},
_item_clicked: function(notification, destroyed) {
let i = this.notifications.indexOf(notification);
if (i != -1) {
this.notifications.splice(i, 1);
if (!destroyed) {
notification.destroy(NotificationDestroyedReason.DISMISSED);
}
}
this.update_list();
},
update_list: function () {
try {
let count = this.notifications.length;
if (count > 0) { // There are notifications.
this.actor.show();
this.clear_action.actor.show();
this.set_applet_label(count.toString());
// Find max urgency and derive list icon.
let max_urgency = -1;
for (let i = 0; i < count; i++) {
let cur_urgency = this.notifications[i].urgency;
if (cur_urgency > max_urgency)
max_urgency = cur_urgency;
}
switch (max_urgency) {
case Urgency.LOW:
this._blinking = false;
this.set_applet_icon_symbolic_name("low-notif");
break;
case Urgency.NORMAL:
case Urgency.HIGH:
this._blinking = false;
this.set_applet_icon_symbolic_name("normal-notif");
break;
case Urgency.CRITICAL:
if (!this._blinking) {
this._blinking = true;
this.critical_blink();
}
break;
}
} else { // There are no notifications.
this._blinking = false;
this.set_applet_label('');
this.set_applet_icon_symbolic_name("empty-notif");
this.clear_action.actor.hide();
if (!this.showEmptyTray) {
this.actor.hide();
}
}
this.menu_label.label.set_text(stringify(count));
this._notificationbin.queue_relayout();
}
catch (e) {
global.logError(e);
}
},
_clear_all: function() {
let count = this.notifications.length;
if (count > 0) {
for (let i = count-1; i >=0; i--) {
this._notificationbin.remove_actor(this.notifications[i].actor);
this.notifications[i].destroy(NotificationDestroyedReason.DISMISSED);
}
}
this.notifications = [];
this.update_list();
},
_show_hide_tray: function() { // Show or hide the notification tray.
if (this.notifications.length || this.showEmptyTray) {
this.actor.show();
} else {
this.actor.hide();
}
},
_on_panel_edit_mode_changed: function () {
if (global.settings.get_boolean(PANEL_EDIT_MODE_KEY)) {
this.actor.show();
} else {
this.update_list();
}
},
on_applet_added_to_panel: function() {
this.on_orientation_changed(this._orientation);
},
on_orientation_changed: function (orientation) {
this._orientation = orientation;
if (this.menu) {
this.menu.destroy();
}
this.menu = new Applet.AppletPopupMenu(this, orientation);
this.menuManager.addMenu(this.menu);
this._display();
},
on_applet_clicked: function(event) {
this._update_timestamp();
this.menu.toggle();
},
_update_timestamp: function () {
let actors = this._notificationbin.get_children();
if (actors) {
for (let i = 0; i < actors.length; i++) {
let notification = actors[i]._delegate;
let orig_time = notification._timestamp;
notification._timeLabel.clutter_text.set_markup(timeify(orig_time));
}
}
},
critical_blink: function () {
if (!this._blinking)
return;
if (this._blink_toggle) {
this._applet_icon_box.child = this._crit_icon;
} else {
this._applet_icon_box.child = this._alt_crit_icon;
}
this._blink_toggle = !this._blink_toggle;
Mainloop.timeout_add_seconds(1, Lang.bind(this, this.critical_blink));
}
};
function main(metadata, orientation, panel_height, instanceId) {
let myApplet = new MyApplet(metadata, orientation, panel_height, instanceId);
return myApplet;
}
function stringify(count) {
let str;
switch (true) {
case (count == 0):
str = _("No notifications");
break;
case (count == 1):
str = count.toString() + _(" notification");
break;
case (count > 1):
str = count.toString() + _(" notifications");
break;
default:
str = "";
}
return str;
}
function timeify(orig_time) {
let settings = new Gio.Settings({schema_id: 'org.cinnamon.desktop.interface'});
let use_24h = settings.get_boolean('clock-use-24h');
let now = new Date();
let diff = Math.floor((now.getTime() - orig_time.getTime()) / 1000); // get diff in seconds
let str;
if (use_24h) {
str = orig_time.toLocaleFormat('%T');
} else {
str = orig_time.toLocaleFormat('%r');
}
switch (true) {
case (diff <= 15): {
str += " (" + _("just now") + ")";
break;
} case (diff > 15 && diff <= 59): {
str += " (" + Gettext.ngettext("%d second ago", "%d seconds ago", diff).format(diff) + ")";
break;
} case (diff > 59 && diff <= 3540): {
let diff_minutes = Math.floor(diff / 60);
str += " (" + Gettext.ngettext("%d minute ago", "%d minutes ago", diff_minutes).format(diff_minutes) + ")";
break;
}
}
return str;
}
Cinnamon-3.6.7/files/usr/share/cinnamon/applets/slideshow@cinnamon.org/ 0000775 0001750 0001750 00000000000 13215735076 025127 5 ustar fabio fabio Cinnamon-3.6.7/files/usr/share/cinnamon/applets/slideshow@cinnamon.org/icons/ 0000775 0001750 0001750 00000000000 13215735076 026242 5 ustar fabio fabio ././@LongLink 0000644 0000000 0000000 00000000155 00000000000 011604 L ustar root root Cinnamon-3.6.7/files/usr/share/cinnamon/applets/slideshow@cinnamon.org/icons/slideshow-disabled-symbolic.svg Cinnamon-3.6.7/files/usr/share/cinnamon/applets/slideshow@cinnamon.org/icons/slideshow-disabled-symb0000664 0001750 0001750 00000006071 13215735076 032707 0 ustar fabio fabio
././@LongLink 0000644 0000000 0000000 00000000152 00000000000 011601 L ustar root root Cinnamon-3.6.7/files/usr/share/cinnamon/applets/slideshow@cinnamon.org/icons/slideshow-pause-symbolic.svg Cinnamon-3.6.7/files/usr/share/cinnamon/applets/slideshow@cinnamon.org/icons/slideshow-pause-symboli0000664 0001750 0001750 00000006163 13215735076 032763 0 ustar fabio fabio
././@LongLink 0000644 0000000 0000000 00000000151 00000000000 011600 L ustar root root Cinnamon-3.6.7/files/usr/share/cinnamon/applets/slideshow@cinnamon.org/icons/slideshow-play-symbolic.svg Cinnamon-3.6.7/files/usr/share/cinnamon/applets/slideshow@cinnamon.org/icons/slideshow-play-symbolic0000664 0001750 0001750 00000006010 13215735076 032745 0 ustar fabio fabio
Cinnamon-3.6.7/files/usr/share/cinnamon/applets/slideshow@cinnamon.org/metadata.json 0000664 0001750 0001750 00000000244 13215735076 027602 0 ustar fabio fabio {
"uuid":"slideshow@cinnamon.org",
"name":"Slideshow Controls",
"description":"Basic controls for the Cinnamon slideshow",
"icon":"preferences-desktop-wallpaper"
}
Cinnamon-3.6.7/files/usr/share/cinnamon/applets/slideshow@cinnamon.org/applet.js 0000664 0001750 0001750 00000013256 13215735076 026761 0 ustar fabio fabio const Lang = imports.lang;
const Gio = imports.gi.Gio;
const St = imports.gi.St;
const Main = imports.ui.main;
const Applet = imports.ui.applet;
const PopupMenu = imports.ui.popupMenu;
const Util = imports.misc.util;
function MyApplet(metadata, orientation, panel_height, instanceId) {
this._init(metadata, orientation, panel_height, instanceId);
}
MyApplet.prototype = {
__proto__: Applet.IconApplet.prototype,
_init: function(metadata, orientation, panel_height, instanceId) {
Applet.IconApplet.prototype._init.call(this, orientation, panel_height, instanceId);
this._slideshowSettings = new Gio.Settings({ schema_id: 'org.cinnamon.desktop.background.slideshow' });
try {
if (this._slideshowSettings.get_boolean("slideshow-enabled")) {
if (!this._slideshowSettings.get_boolean("slideshow-paused")) {
this.set_applet_icon_symbolic_name('slideshow-play-symbolic.svg');
this.set_applet_tooltip(_("Click to pause the slideshow"));
} else {
this.set_applet_icon_symbolic_name('slideshow-pause-symbolic.svg');
this.set_applet_tooltip(_("Click to resume the slideshow"));
}
} else {
this.set_applet_icon_symbolic_name('slideshow-disabled-symbolic.svg');
this.set_applet_tooltip(_("The slideshow is disabled"));
}
this._slideshowSettings.connect("changed::slideshow-enabled", Lang.bind(this, this._on_slideshow_enabled_changed));
this._slideshowSettings.connect("changed::slideshow-paused", Lang.bind(this, this._on_slideshow_paused_changed));
this.enable_slideshow_switch = new PopupMenu.PopupSwitchMenuItem(_("Slideshow"), this._slideshowSettings.get_boolean("slideshow-enabled"));
this._applet_context_menu.addMenuItem(this.enable_slideshow_switch);
this.enable_slideshow_switch.connect("toggled", Lang.bind(this, this._on_slideshow_enabled_toggled));
this._applet_context_menu.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
this.next_image_context_menu_item = new PopupMenu.PopupIconMenuItem(_("Next Background"),
"media-seek-forward",
St.IconType.SYMBOLIC);
this.next_image_context_menu_item.connect('activate', Lang.bind(this, this.get_next_image));
this._applet_context_menu.addMenuItem(this.next_image_context_menu_item);
this._applet_context_menu.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
this.open_settings_context_menu_item = new PopupMenu.PopupIconMenuItem(_("Background Settings"),
"preferences-desktop-wallpaper",
St.IconType.SYMBOLIC);
this.open_settings_context_menu_item.connect('activate', Lang.bind(this, function() {
Util.spawnCommandLine("cinnamon-settings backgrounds");
}));
this._applet_context_menu.addMenuItem(this.open_settings_context_menu_item);
}
catch(e) {
global.logError(e);
}
},
on_applet_clicked: function(event) {
if (this._slideshowSettings.get_boolean("slideshow-enabled")) {
if (!this._slideshowSettings.get_boolean("slideshow-paused")) {
this._slideshowSettings.set_boolean("slideshow-paused", true);
this.set_applet_icon_symbolic_name('slideshow-pause-symbolic.svg');
this.set_applet_tooltip(_("Click to resume the slideshow"));
} else {
this._slideshowSettings.set_boolean("slideshow-paused", false);
this.set_applet_icon_symbolic_name('slideshow-play-symbolic.svg');
this.set_applet_tooltip(_("Click to pause the slideshow"));
}
}
},
_on_slideshow_enabled_toggled: function() {
if (this._slideshowSettings.get_boolean("slideshow-enabled")) {
this._slideshowSettings.set_boolean("slideshow-enabled", false);
this.set_applet_icon_symbolic_name('slideshow-disabled-symbolic.svg');
this.set_applet_tooltip(_("The slideshow is disabled"));
} else {
this._slideshowSettings.set_boolean("slideshow-enabled", true);
this.set_applet_icon_symbolic_name('slideshow-play-symbolic.svg');
this.set_applet_tooltip(_("Click to pause the slideshow"));
}
},
_on_slideshow_enabled_changed: function() {
if (this._slideshowSettings.get_boolean("slideshow-enabled")) {
this.enable_slideshow_switch.setToggleState(true);
this.set_applet_icon_symbolic_name('slideshow-play-symbolic.svg');
this.set_applet_tooltip(_("Click to pause the slideshow"));
} else {
this.enable_slideshow_switch.setToggleState(false);
this.set_applet_icon_symbolic_name('slideshow-disabled-symbolic.svg');
this.set_applet_tooltip(_("The slideshow is disabled"));
}
},
_on_slideshow_paused_changed: function() {
if (this._slideshowSettings.get_boolean("slideshow-paused")) {
this.set_applet_icon_symbolic_name('slideshow-pause-symbolic.svg');
this.set_applet_tooltip(_("Click to resume the slideshow"));
} else {
this.set_applet_icon_symbolic_name('slideshow-play-symbolic.svg');
this.set_applet_tooltip(_("Click to pause the slideshow"));
}
},
get_next_image: function() {
Main.slideshowManager.getNextImage();
}
};
function main(metadata, orientation, panel_height, instanceId) {
let myApplet = new MyApplet(metadata, orientation, panel_height, instanceId);
return myApplet;
}
Cinnamon-3.6.7/files/usr/share/cinnamon/applets/expo@cinnamon.org/ 0000775 0001750 0001750 00000000000 13215735076 024101 5 ustar fabio fabio Cinnamon-3.6.7/files/usr/share/cinnamon/applets/expo@cinnamon.org/settings-schema.json 0000664 0001750 0001750 00000000342 13215735076 030071 0 ustar fabio fabio {
"section1": {
"type": "section",
"description": "Behavior"
},
"activate-on-hover": {
"type": "switch",
"default" : false,
"description" : "Activate expo on hover"
}
}
Cinnamon-3.6.7/files/usr/share/cinnamon/applets/expo@cinnamon.org/icons/ 0000775 0001750 0001750 00000000000 13215735076 025214 5 ustar fabio fabio Cinnamon-3.6.7/files/usr/share/cinnamon/applets/expo@cinnamon.org/icons/cinnamon-expo-symbolic.svg 0000664 0001750 0001750 00000000450 13215735076 032326 0 ustar fabio fabio
Cinnamon-3.6.7/files/usr/share/cinnamon/applets/expo@cinnamon.org/metadata.json 0000664 0001750 0001750 00000000232 13215735076 026551 0 ustar fabio fabio {
"uuid": "expo@cinnamon.org",
"name": "Expo",
"description": "Click or hover to activate Expo view",
"icon": "workspace-overview",
"max-instances": -1
}
Cinnamon-3.6.7/files/usr/share/cinnamon/applets/expo@cinnamon.org/applet.js 0000664 0001750 0001750 00000003072 13215735076 025726 0 ustar fabio fabio const Applet = imports.ui.applet;
const Lang = imports.lang;
const Main = imports.ui.main;
const Settings = imports.ui.settings;
function MyApplet(metadata, orientation, panel_height, instance_id) {
this._init(metadata, orientation, panel_height, instance_id);
}
MyApplet.prototype = {
__proto__: Applet.IconApplet.prototype,
_init: function(metadata, orientation, panel_height, instance_id) {
Applet.IconApplet.prototype._init.call(this, orientation, panel_height, instance_id);
try {
this.set_applet_icon_symbolic_name("cinnamon-expo");
this.set_applet_tooltip(_("Expo"));
this._hover_activates = false;
this.settings = new Settings.AppletSettings(this, metadata.uuid, this.instance_id);
this.settings.bind("activate-on-hover", "_hover_activates");
this.actor.connect('enter-event', Lang.bind(this, this._onEntered));
}
catch (e) {
global.logError(e);
}
},
on_applet_clicked: function(event) {
if (this._hover_activates)
return;
this.doAction();
},
_onEntered: function(event) {
if (!this._hover_activates || global.settings.get_boolean("panel-edit-mode"))
return;
this.doAction();
},
doAction: function() {
if (!Main.expo.animationInProgress)
Main.expo.toggle();
}
};
function main(metadata, orientation, panel_height, instance_id) {
let myApplet = new MyApplet(metadata, orientation, panel_height, instance_id);
return myApplet;
}
Cinnamon-3.6.7/files/usr/share/cinnamon/applets/on-screen-keyboard@cinnamon.org/ 0000775 0001750 0001750 00000000000 13215735076 026615 5 ustar fabio fabio Cinnamon-3.6.7/files/usr/share/cinnamon/applets/on-screen-keyboard@cinnamon.org/icons/ 0000775 0001750 0001750 00000000000 13215735076 027730 5 ustar fabio fabio ././@LongLink 0000644 0000000 0000000 00000000166 00000000000 011606 L ustar root root Cinnamon-3.6.7/files/usr/share/cinnamon/applets/on-screen-keyboard@cinnamon.org/icons/on-screen-keyboard-symbolic.svg Cinnamon-3.6.7/files/usr/share/cinnamon/applets/on-screen-keyboard@cinnamon.org/icons/on-screen-keyb0000664 0001750 0001750 00000002063 13215735076 032475 0 ustar fabio fabio
././@LongLink 0000644 0000000 0000000 00000000177 00000000000 011610 L ustar root root Cinnamon-3.6.7/files/usr/share/cinnamon/applets/on-screen-keyboard@cinnamon.org/icons/on-screen-keyboard-disabled-symbolic.svg Cinnamon-3.6.7/files/usr/share/cinnamon/applets/on-screen-keyboard@cinnamon.org/icons/on-screen-keyb0000664 0001750 0001750 00000005261 13215735076 032500 0 ustar fabio fabio
Cinnamon-3.6.7/files/usr/share/cinnamon/applets/on-screen-keyboard@cinnamon.org/metadata.json 0000664 0001750 0001750 00000000257 13215735076 031274 0 ustar fabio fabio {
"uuid": "on-screen-keyboard@cinnamon.org",
"name": "On-Screen keyboard",
"icon": "input-keyboard",
"description": "A Cinnamon applet to launch the on-screen keyboard"
}
Cinnamon-3.6.7/files/usr/share/cinnamon/applets/on-screen-keyboard@cinnamon.org/applet.js 0000664 0001750 0001750 00000002630 13215735076 030441 0 ustar fabio fabio const Applet = imports.ui.applet;
const Gio = imports.gi.Gio;
const Lang = imports.lang;
const Main = imports.ui.main;
function MyApplet(metadata, orientation, panel_height, instanceId) {
this._init(metadata, orientation, panel_height, instanceId);
}
MyApplet.prototype = {
__proto__: Applet.IconApplet.prototype,
_init: function(metadata, orientation, panel_height, instanceId) {
Applet.IconApplet.prototype._init.call(this, orientation, panel_height, instanceId);
this.settings = new Gio.Settings({ schema_id: 'org.cinnamon.desktop.a11y.applications' });
this.settings.connect('changed::screen-keyboard-enabled', Lang.bind(this, this.update_status));
this.update_status();
},
on_applet_clicked: function(event) {
Main.keyboard.toggle();
},
update_status: function() {
if (this.settings.get_boolean("screen-keyboard-enabled")) {
this.set_applet_icon_symbolic_name('on-screen-keyboard');
this.set_applet_tooltip(_("Click to toggle the on-screen keyboard"));
} else {
this.set_applet_icon_symbolic_name('on-screen-keyboard-disabled');
this.set_applet_tooltip(_("Click to enable the on-screen keyboard"));
}
}
};
function main(metadata, orientation, panel_height, instanceId) {
let myApplet = new MyApplet(metadata, orientation, panel_height, instanceId);
return myApplet;
}
Cinnamon-3.6.7/files/usr/share/cinnamon/applets/network@cinnamon.org/ 0000775 0001750 0001750 00000000000 13215735076 024617 5 ustar fabio fabio Cinnamon-3.6.7/files/usr/share/cinnamon/applets/network@cinnamon.org/metadata.json 0000664 0001750 0001750 00000000203 13215735076 027265 0 ustar fabio fabio {
"uuid": "network@cinnamon.org",
"name": "Network Manager",
"description": "Network manager applet",
"icon": "network-idle"
}
Cinnamon-3.6.7/files/usr/share/cinnamon/applets/network@cinnamon.org/applet.js 0000664 0001750 0001750 00000252611 13215735076 026451 0 ustar fabio fabio const Applet = imports.ui.applet;
const GLib = imports.gi.GLib;
const GObject = imports.gi.GObject;
const Lang = imports.lang;
const NetworkManager = imports.gi.NetworkManager;
const NMClient = imports.gi.NMClient;
const Signals = imports.signals;
const St = imports.gi.St;
const Mainloop = imports.mainloop;
const Main = imports.ui.main;
const PopupMenu = imports.ui.popupMenu;
const MessageTray = imports.ui.messageTray;
const ModemManager = imports.misc.modemManager;
const Util = imports.misc.util;
const DEFAULT_PERIODIC_UPDATE_FREQUENCY_SECONDS = 10;
const FAST_PERIODIC_UPDATE_FREQUENCY_SECONDS = 2;
const NMConnectionCategory = {
INVALID: 'invalid',
WIRED: 'wired',
WIRELESS: 'wireless',
WWAN: 'wwan',
VPN: 'vpn'
};
const NMAccessPointSecurity = {
UNKNOWN: 0,
NONE: 1,
WEP: 2,
WPA_PSK: 3,
WPA2_PSK: 4,
WPA_ENT: 5,
WPA2_ENT: 6
};
// small optimization, to avoid using [] all the time
const NM80211Mode = NetworkManager['80211Mode'];
const NM80211ApFlags = NetworkManager['80211ApFlags'];
const NM80211ApSecurityFlags = NetworkManager['80211ApSecurityFlags'];
// number of wireless networks that should be visible
// (the remaining are placed into More...)
const NUM_VISIBLE_NETWORKS = 5;
function ssidCompare(one, two) {
if (!one || !two)
return false;
if (one.length != two.length)
return false;
for (let i = 0; i < one.length; i++) {
if (one[i] != two[i])
return false;
}
return true;
}
// shared between NMNetworkMenuItem and NMDeviceWWAN
function signalToIcon(value) {
if (value > 80)
return 'excellent';
if (value > 55)
return 'good';
if (value > 30)
return 'ok';
if (value > 5)
return 'weak';
return 'none';
}
// shared between NMNetworkMenuItem and NMDeviceWireless
function sortAccessPoints(accessPoints) {
return accessPoints.sort(function (one, two) {
return two.strength - one.strength;
});
}
function ssidToLabel(ssid) {
let label = NetworkManager.utils_ssid_to_utf8(ssid);
if (!label)
label = _("");
return label;
}
function NMNetworkMenuItem() {
this._init.apply(this, arguments);
}
NMNetworkMenuItem.prototype = {
__proto__: PopupMenu.PopupBaseMenuItem.prototype,
_init: function(accessPoints, title, params) {
PopupMenu.PopupBaseMenuItem.prototype._init.call(this, params);
accessPoints = sortAccessPoints(accessPoints);
this.bestAP = accessPoints[0];
if (!title) {
let ssid = this.bestAP.get_ssid();
title = ssidToLabel(ssid);
}
this._label = new St.Label({ text: title });
this.addActor(this._label);
let strStrengh = String(this.bestAP.strength);
strStrengh = strStrengh + '%';
this._labelStrength = new St.Label({ text: strStrengh });
this.addActor(this._labelStrength, { align: St.Align.END });
this._icons = new St.BoxLayout({ style_class: 'nm-menu-item-icons' });
this.addActor(this._icons, { align: St.Align.END });
this._signalIcon = new St.Icon({ icon_name: this._getIcon(),
style_class: 'popup-menu-icon' });
this._icons.add_actor(this._signalIcon);
this._secureIcon = new St.Icon({ style_class: 'popup-menu-icon' });
if (this.bestAP._secType != NMAccessPointSecurity.UNKNOWN &&
this.bestAP._secType != NMAccessPointSecurity.NONE)
this._secureIcon.icon_name = 'network-wireless-encrypted';
this._icons.add_actor(this._secureIcon);
this._accessPoints = [ ];
for (let i = 0; i < accessPoints.length; i++) {
let ap = accessPoints[i];
// need a wrapper object here, because the access points can be shared
// between many NMNetworkMenuItems
let apObj = {
ap: ap,
updateId: ap.connect('notify::strength', Lang.bind(this, this._updated))
};
this._accessPoints.push(apObj);
}
},
_updated: function(ap) {
if (ap.strength > this.bestAP.strength)
this.bestAP = ap;
this._signalIcon.icon_name = this._getIcon();
let strStrengh = String(this.bestAP.strength);
strStrengh = strStrengh + '%';
this._labelStrength.set_text(strStrengh);
},
_getIcon: function() {
if (this.bestAP.mode == NM80211Mode.ADHOC)
return 'network-workgroup';
else
return 'network-wireless-signal-' + signalToIcon(this.bestAP.strength);
},
updateAccessPoints: function(accessPoints) {
for (let i = 0; i < this._accessPoints.length; i++) {
let apObj = this._accessPoints[i];
apObj.ap.disconnect(apObj.updateId);
apObj.updateId = 0;
}
accessPoints = sortAccessPoints(accessPoints);
this.bestAP = accessPoints[0];
this._accessPoints = [ ];
for (let i = 0; i < accessPoints; i++) {
let ap = accessPoints[i];
let apObj = {
ap: ap,
updateId: ap.connect('notify::strength', Lang.bind(this, this._updated))
};
this._accessPoints.push(apObj);
}
},
destroy: function() {
for (let i = 0; i < this._accessPoints.length; i++) {
let apObj = this._accessPoints[i];
apObj.ap.disconnect(apObj.updateId);
apObj.updateId = 0;
}
PopupMenu.PopupBaseMenuItem.prototype.destroy.call(this);
}
};
function NMWiredSectionTitleMenuItem() {
this._init.apply(this, arguments);
}
NMWiredSectionTitleMenuItem.prototype = {
__proto__: PopupMenu.PopupSwitchMenuItem.prototype,
_init: function(label, params) {
params = params || { };
params.style_class = 'popup-subtitle-menu-item';
PopupMenu.PopupSwitchMenuItem.prototype._init.call(this, label, false, params);
},
updateForDevice: function(device) {
if (device) {
this._device = device;
this.setStatus(device.statusLabel);
this.setToggleState(device.connected);
// if this device is not controllable, hide the switch
this._switch.actor.visible = device.controllable;
} else
this.setStatus('');
},
activate: function(event) {
PopupMenu.PopupSwitchMenuItem.prototype.activate.call(this, event);
if (!this._device) {
log('Section title activated when there is more than one device, should be non reactive');
return;
}
let newState = this._switch.state;
// Immediately reset the switch to false, it will be updated appropriately
// by state-changed signals in devices (but fixes the VPN not being in sync
// if the ActiveConnection object is never seen by libnm-glib)
this._switch.setToggleState(false);
if (newState)
this._device.activate();
else
this._device.deactivate();
}
};
function NMWirelessSectionTitleMenuItem() {
this._init.apply(this, arguments);
}
NMWirelessSectionTitleMenuItem.prototype = {
__proto__: PopupMenu.PopupSwitchMenuItem.prototype,
_init: function(client, property, title, params) {
params = params || { };
params.style_class = 'popup-subtitle-menu-item';
PopupMenu.PopupSwitchMenuItem.prototype._init.call(this, title, false, params);
this._client = client;
this._property = property + '_enabled';
this._propertyHardware = property + '_hardware_enabled';
this._setEnabledFunc = property + '_set_enabled';
this._client.connect('notify::' + property + '-enabled', Lang.bind(this, this._propertyChanged));
this._client.connect('notify::' + property + '-hardware-enabled', Lang.bind(this, this._propertyChanged));
this._propertyChanged();
},
updateForDevice: function(device) {
this._device = device;
// we show the switch
// - if there not just one device
// - if the switch is off
// - if the device is activated or disconnected
if (device && this._softwareEnabled && this._hardwareEnabled) {
this.setStatus(device.statusLabel);
this._switch.actor.visible = device.controllable;
} else {
this.setStatus(null);
this._switch.actor.show();
}
},
activate: function(event) {
PopupMenu.PopupSwitchMenuItem.prototype.activate.call(this, event);
log(this._setEnabledFunc);
this._client[this._setEnabledFunc](this._switch.state);
if (!this._device) {
log('Section title activated when there is more than one device, should be non reactive');
return;
}
let newState = this._switch.state;
if (newState)
this._device.activate();
else
this._device.deactivate();
this.emit('enabled-changed', this._switch.state);
},
_propertyChanged: function() {
this._softwareEnabled = this._client[this._property];
this._hardwareEnabled = this._client[this._propertyHardware];
let enabled = this._softwareEnabled && this._hardwareEnabled;
this.setToggleState(enabled);
if (!this._hardwareEnabled)
/* Translators: this indicates that wireless or wwan is disabled by hardware killswitch */
this.setStatus(_("disabled"));
this.emit('enabled-changed', enabled);
}
};
function NMDevice() {
throw new TypeError('Instantanting abstract class NMDevice');
}
NMDevice.prototype = {
_init: function(client, device, connections) {
this.device = device;
if (device) {
this.device._delegate = this;
this._stateChangedId = this.device.connect('state-changed', Lang.bind(this, this._deviceStateChanged));
} else
this._stateChangedId = 0;
// protected
this._client = client;
this._connections = [ ];
for (let i = 0; i < connections.length; i++) {
if (!connections[i]._uuid)
continue;
if (!this.connectionValid(connections[i]))
continue;
// record the connection
let obj = {
connection: connections[i],
name: connections[i]._name,
uuid: connections[i]._uuid,
timestamp: connections[i]._timestamp,
};
this._connections.push(obj);
}
this._connections.sort(this._connectionSortFunction);
this._activeConnection = null;
this._activeConnectionItem = null;
this._autoConnectionItem = null;
this._overflowItem = null;
if (this.device) {
this.statusItem = new PopupMenu.PopupSwitchMenuItem(this._getDescription(), this.connected, { style_class: 'popup-subtitle-menu-item' });
this._statusChanged = this.statusItem.connect('toggled', Lang.bind(this, function(item, state) {
if (state)
this.activate();
else
this.deactivate();
this.emit('enabled-changed');
}));
this._updateStatusItem();
}
this.section = new PopupMenu.PopupMenuSection();
this._createSection();
},
destroy: function() {
if (this.device)
this.device._delegate = null;
if (this._stateChangedId) {
// Need to go through GObject.Object.prototype because
// nm_device_disconnect conflicts with g_signal_disconnect
GObject.Object.prototype.disconnect.call(this.device, this._stateChangedId);
this._stateChangedId = 0;
}
if (this._carrierChangedId) {
// see above for why this is needed
GObject.Object.prototype.disconnect.call(this.device, this._carrierChangedId);
this._carrierChangedId = 0;
}
if (this._firmwareChangedId) {
GObject.Object.prototype.disconnect.call(this.device, this._firmwareChangedId);
this._firmwareChangedId = 0;
}
this._clearSection();
if (this.statusItem)
this.statusItem.destroy();
this.section.destroy();
},
deactivate: function() {
this.device.disconnect(function() {});
},
activate: function() {
if (this._activeConnection)
// nothing to do
return;
// pick the most recently used connection and connect to that
// or if no connections ever set, create an automatic one
if (this._connections.length > 0) {
this._client.activate_connection(this._connections[0].connection, this.device, null, null);
} else if (this._autoConnectionName) {
let connection = this._createAutomaticConnection();
if (connection)
this._client.add_and_activate_connection(connection, this.device, null, null);
}
},
get connected() {
return this.device.state == NetworkManager.DeviceState.ACTIVATED;
},
setActiveConnection: function(activeConnection) {
if (activeConnection == this._activeConnection)
// nothing to do
return;
// remove any UI
if (this._activeConnectionItem) {
this._activeConnectionItem.destroy();
this._activeConnectionItem = null;
}
this._activeConnection = activeConnection;
this._clearSection();
this._createSection();
},
checkConnection: function(connection) {
let exists = this._findConnection(connection._uuid) != -1;
let valid = this.connectionValid(connection);
if (exists && !valid)
this.removeConnection(connection);
else if (!exists && valid)
this.addConnection(connection);
},
addConnection: function(connection) {
// record the connection
let obj = {
connection: connection,
name: connection._name,
uuid: connection._uuid,
timestamp: connection._timestamp,
};
this._connections.push(obj);
this._connections.sort(this._connectionSortFunction);
this._clearSection();
this._createSection();
},
removeConnection: function(connection) {
if (!connection._uuid) {
log('Cannot remove a connection without an UUID');
return;
}
let pos = this._findConnection(connection._uuid);
if (pos == -1) {
// this connection was never added, nothing to do here
return;
}
let obj = this._connections[pos];
if (obj.item)
obj.item.destroy();
this._connections.splice(pos, 1);
if (this._connections.length <= 1) {
// We need to show the automatic connection again
// (or in the case of NMDeviceWired, we want to hide
// the only explicit connection)
this._clearSection();
this._createSection();
}
},
connectionValid: function(connection) {
return this.device.connection_valid(connection);
},
_connectionSortFunction: function(one, two) {
if (one.timestamp == two.timestamp)
return GLib.utf8_collate(one.name, two.name);
return two.timestamp - one.timestamp;
},
setEnabled: function(enabled) {
// do nothing by default, we want to keep the conneciton list visible
// in the majority of cases (wired, wwan, vpn)
},
get statusLabel(){
switch(this.device.state) {
case NetworkManager.DeviceState.DISCONNECTED:
case NetworkManager.DeviceState.ACTIVATED:
return null;
case NetworkManager.DeviceState.UNMANAGED:
/* Translators: this is for network devices that are physically present but are not
under NetworkManager's control (and thus cannot be used in the menu) */
return _("unmanaged");
case NetworkManager.DeviceState.DEACTIVATING:
return _("disconnecting...");
case NetworkManager.DeviceState.PREPARE:
case NetworkManager.DeviceState.CONFIG:
case NetworkManager.DeviceState.IP_CONFIG:
case NetworkManager.DeviceState.IP_CHECK:
case NetworkManager.DeviceState.SECONDARIES:
return _("connecting...");
case NetworkManager.DeviceState.NEED_AUTH:
/* Translators: this is for network connections that require some kind of key or password */
return _("authentication required");
case NetworkManager.DeviceState.UNAVAILABLE:
// This state is actually a compound of various states (generically unavailable,
// firmware missing, carrier not available), that are exposed by different properties
// (whose state may or may not updated when we receive state-changed).
if (!this._firmwareMissingId)
this._firmwareMissingId = this.device.connect('notify::firmware-missing', Lang.bind(this, this._substateChanged));
if (this.device.firmware_missing) {
/* Translators: this is for devices that require some kind of firmware or kernel
module, which is missing */
return _("firmware missing");
}
if (this.device.capabilities & NetworkManager.DeviceCapabilities.CARRIER_DETECT) {
if (!this._carrierChangedId)
this._carrierChangedId = this.device.connect('notify::carrier', Lang.bind(this, this._substateChanged));
if (!this.carrier) {
/* Translators: this is for wired network devices that are physically disconnected */
return _("cable unplugged");
}
}
/* Translators: this is for a network device that cannot be activated (for example it
is disabled by rfkill, or it has no coverage */
return _("unavailable");
case NetworkManager.DeviceState.FAILED:
return _("connection failed");
default:
log('Device state invalid, is %d'.format(this.device.state));
return 'invalid';
}
},
get controllable(){
// controllable for every state except unavailable or unmanaged
if(this.device.state === NetworkManager.DeviceState.UNAVAILABLE || this.device.state === NetworkManager.DeviceState.UNMANAGED)
return false;
return true;
},
// protected
_createAutomaticConnection: function() {
throw new TypeError('Invoking pure virtual function NMDevice.createAutomaticConnection');
},
_findConnection: function(uuid) {
for (let i = 0; i < this._connections.length; i++) {
let obj = this._connections[i];
if (obj.uuid == uuid)
return i;
}
return -1;
},
_clearSection: function() {
// Clear everything
this.section.removeAll();
this._autoConnectionItem = null;
this._activeConnectionItem = null;
this._overflowItem = null;
for (let i = 0; i < this._connections.length; i++) {
this._connections[i].item = null;
}
},
_shouldShowConnectionList: function() {
return (this.device.state >= NetworkManager.DeviceState.DISCONNECTED);
},
_createSection: function() {
if (!this._shouldShowConnectionList())
return;
if (this._activeConnection) {
this._createActiveConnectionItem();
this.section.addMenuItem(this._activeConnectionItem);
}
if (this._connections.length > 0) {
let activeOffset = this._activeConnectionItem ? 1 : 0;
for(let j = 0; j < this._connections.length; ++j) {
let obj = this._connections[j];
if (this._activeConnection &&
obj.connection == this._activeConnection._connection)
continue;
obj.item = this._createConnectionItem(obj);
if (j + activeOffset >= NUM_VISIBLE_NETWORKS) {
if (!this._overflowItem) {
this._overflowItem = new PopupMenu.PopupSubMenuMenuItem(_("More"));
this.section.addMenuItem(this._overflowItem);
}
this._overflowItem.menu.addMenuItem(obj.item);
} else
this.section.addMenuItem(obj.item);
}
} else if (this._autoConnectionName) {
this._autoConnectionItem = new PopupMenu.PopupMenuItem(this._autoConnectionName);
this._autoConnectionItem.connect('activate', Lang.bind(this, function() {
let connection = this._createAutomaticConnection();
if (connection)
this._client.add_and_activate_connection(connection, this.device, null, null);
}));
this.section.addMenuItem(this._autoConnectionItem);
}
},
_createConnectionItem: function(obj) {
let connection = obj.connection;
let item = new PopupMenu.PopupMenuItem(obj.name);
item.connect('activate', Lang.bind(this, function() {
this._client.activate_connection(connection, this.device, null, null);
}));
return item;
},
_createActiveConnectionItem: function() {
let title;
let active = this._activeConnection._connection;
if (active) {
title = active._name;
} else {
/* TRANSLATORS: this is the indication that a connection for another logged in user is active,
and we cannot access its settings (including the name) */
title = _("Connected (private)");
}
this._activeConnectionItem = new PopupMenu.PopupMenuItem(title, { reactive: false });
this._activeConnectionItem.setShowDot(true);
},
_deviceStateChanged: function(device, newstate, oldstate, reason) {
if (newstate == oldstate) {
log('device emitted state-changed without actually changing state');
return;
}
if (oldstate == NetworkManager.DeviceState.ACTIVATED) {
this.emit('network-lost');
}
if (newstate == NetworkManager.DeviceState.FAILED) {
this.emit('activation-failed', reason);
}
this._updateStatusItem();
this._clearSection();
this._createSection();
this.emit('state-changed');
},
_updateStatusItem: function() {
if (this._carrierChangedId) {
// see above for why this is needed
GObject.Object.prototype.disconnect.call(this.device, this._carrierChangedId);
this._carrierChangedId = 0;
}
if (this._firmwareChangedId) {
GObject.Object.prototype.disconnect.call(this.device, this._firmwareChangedId);
this._firmwareChangedId = 0;
}
this.statusItem.setStatus(this.statusLabel);
this.statusItem.setToggleState(this.connected);
// if this device is not controllable, hide the switch
this.statusItem._switch.actor.visible = this.controllable;
},
_substateChanged: function() {
this.statusItem.setStatus(this.statusLabel);
this.statusItem._switch.actor.visible = this.controllable;
this.emit('state-changed');
},
_getDescription: function() {
let dev_product = this.device.get_product();
let dev_vendor = this.device.get_vendor();
if (!dev_product || !dev_vendor) {
if (this.device.name) {
return this.device.name;
}
else {
switch (this.device.get_device_type()) {
case NetworkManager.DeviceType.ETHERNET: return _("Ethernet");
case NetworkManager.DeviceType.WIFI: return _("Wifi");
case NetworkManager.DeviceType.MODEM: return _("Modem");
case NetworkManager.DeviceType.BT: return _("Bluetooth");
default: return "";
}
}
}
let product = Util.fixupPCIDescription(dev_product);
let vendor = Util.fixupPCIDescription(dev_vendor);
let out = '';
// Another quick hack; if all of the fixed up vendor string
// is found in product, ignore the vendor.
if (product.indexOf(vendor) == -1)
out += vendor + ' ';
out += product;
return out;
}
};
Signals.addSignalMethods(NMDevice.prototype);
function NMDeviceWired() {
this._init.apply(this, arguments);
}
NMDeviceWired.prototype = {
__proto__: NMDevice.prototype,
_init: function(client, device, connections) {
this._autoConnectionName = _("Auto Ethernet");
this.category = NMConnectionCategory.WIRED;
NMDevice.prototype._init.call(this, client, device, connections);
},
_createSection: function() {
NMDevice.prototype._createSection.call(this);
// if we have only one connection (normal or automatic)
// we hide the connection list, and use the switch to control
// the device
// we can do it here because addConnection and removeConnection
// both call _createSection at some point
if (this._connections.length <= 1)
this.section.actor.hide();
else
this.section.actor.show();
},
_createAutomaticConnection: function() {
let connection = new NetworkManager.Connection();
connection._uuid = NetworkManager.utils_uuid_generate();
connection.add_setting(new NetworkManager.SettingWired());
connection.add_setting(new NetworkManager.SettingConnection({
uuid: connection._uuid,
id: this._autoConnectionName,
type: NetworkManager.SETTING_WIRED_SETTING_NAME,
autoconnect: true
}));
return connection;
}
};
function NMDeviceModem() {
this._init.apply(this, arguments);
}
NMDeviceModem.prototype = {
__proto__: NMDevice.prototype,
_init: function(client, device, connections) {
let is_wwan = false;
this._enabled = true;
this.mobileDevice = null;
this._connectionType = 'ppp';
this._capabilities = device.current_capabilities;
// Support new ModemManager1 devices
if (device.udi.indexOf('/org/freedesktop/ModemManager1/Modem') == 0) {
try {
is_wwan = true;
this.mobileDevice = new ModemManager.BroadbandModem(device.udi, device.current_capabilities);
if (this._capabilities & NetworkManager.DeviceModemCapabilities.GSM_UMTS) {
this._connectionType = NetworkManager.SETTING_GSM_SETTING_NAME;
} else if (this._capabilities & NetworkManager.DeviceModemCapabilities.LTE) {
this._connectionType = NetworkManager.SETTING_GSM_SETTING_NAME;
} else if (this._capabilities & NetworkManager.DeviceModemCapabilities.CDMA_EVDO) {
this._connectionType = NetworkManager.SETTING_CDMA_SETTING_NAME;
}
}
catch (e){
global.logError(e);
}
} else if (this._capabilities & NetworkManager.DeviceModemCapabilities.GSM_UMTS) {
is_wwan = true;
this.mobileDevice = new ModemManager.ModemGsm(device.udi);
this._connectionType = NetworkManager.SETTING_GSM_SETTING_NAME;
} else if (this._capabilities & NetworkManager.DeviceModemCapabilities.CDMA_EVDO) {
is_wwan = true;
this.mobileDevice = new ModemManager.ModemCdma(device.udi);
this._connectionType = NetworkManager.SETTING_CDMA_SETTING_NAME;
} else if (this._capabilities & NetworkManager.DeviceModemCapabilities.LTE) {
is_wwan = true;
// FIXME: support signal quality
}
if (is_wwan) {
this.category = NMConnectionCategory.WWAN;
this._autoConnectionName = _("Auto broadband");
} else {
this.category = NMConnectionCategory.WIRED;
this._autoConnectionName = _("Auto dial-up");
}
if (this.mobileDevice) {
this._operatorNameId = this.mobileDevice.connect('notify::operator-name', Lang.bind(this, function() {
if (this._operatorItem) {
let name = this.mobileDevice.operator_name;
if (name) {
this._operatorItem.label.text = name;
this._operatorItem.actor.show();
} else
this._operatorItem.actor.hide();
}
}));
this._signalQualityId = this.mobileDevice.connect('notify::signal-quality', Lang.bind(this, function() {
if (this._operatorItem) {
this._operatorItem.setIcon(this._getSignalIcon());
}
}));
}
NMDevice.prototype._init.call(this, client, device, connections);
},
setEnabled: function(enabled) {
this._enabled = enabled;
if (this.category == NMConnectionCategory.WWAN) {
if (enabled) {
// prevent "network unavailable" statuses
this.statusItem.setStatus(null);
} else
this.statusItem.setStatus(this.statusLabel);
}
NMDevice.prototype.setEnabled.call(this, enabled);
},
get connected() {
return this._enabled && this.device.state == NetworkManager.DeviceState.ACTIVATED;
},
destroy: function() {
if (this._operatorNameId) {
this.mobileDevice.disconnect(this._operatorNameId);
this._operatorNameId = 0;
}
if (this._signalQualityId) {
this.mobileDevice.disconnect(this._signalQualityId);
this._signalQualityId = 0;
}
NMDevice.prototype.destroy.call(this);
},
_getSignalIcon: function() {
return 'network-cellular-signal-' + signalToIcon(this.mobileDevice.signal_quality);
},
_createSection: function() {
if (!this._shouldShowConnectionList())
return;
if (this.mobileDevice) {
// If operator_name is null, just pass the empty string, as the item is hidden anyway
this._operatorItem = new PopupMenu.PopupImageMenuItem(this.mobileDevice.operator_name || '',
this._getSignalIcon(),
{ reactive: false });
if (!this.mobileDevice.operator_name)
this._operatorItem.actor.hide();
this.section.addMenuItem(this._operatorItem);
}
NMDevice.prototype._createSection.call(this);
},
_clearSection: function() {
this._operatorItem = null;
NMDevice.prototype._clearSection.call(this);
},
_createAutomaticConnection: function() {
// Mobile wizard is too complex for Cinnamon UI and
// is handled by the network panel
Util.spawn(['cinnamon-settings', 'network',
'connect-3g', this.device.get_path()]);
return null;
}
};
function NMDeviceBluetooth() {
this._init.apply(this, arguments);
}
NMDeviceBluetooth.prototype = {
__proto__: NMDevice.prototype,
_init: function(client, device, connections) {
this._autoConnectionName = this._makeConnectionName(device);
device.connect('notify::name', Lang.bind(this, this._updateAutoConnectionName));
this.category = NMConnectionCategory.WWAN;
NMDevice.prototype._init.call(this, client, device, connections);
},
_createAutomaticConnection: function() {
let connection = new NetworkManager.Connection();
connection._uuid = NetworkManager.utils_uuid_generate();
connection.add_setting(new NetworkManager.SettingBluetooth());
connection.add_setting(new NetworkManager.SettingConnection({
uuid: connection._uuid,
id: this._autoConnectionName,
type: NetworkManager.SETTING_BLUETOOTH_SETTING_NAME,
autoconnect: false
}));
return connection;
},
_makeConnectionName: function(device) {
let name = device.name;
if (name)
return _("Auto %s").format(name);
else
return _("Auto bluetooth");
},
_updateAutoConnectionName: function() {
this._autoConnectionName = this._makeConnectionName(this.device);
this._clearSection();
this._createSection();
}
};
// Not a real device, but I save a lot code this way
function NMDeviceVPN() {
this._init.apply(this, arguments);
}
NMDeviceVPN.prototype = {
__proto__: NMDevice.prototype,
_init: function(client) {
// Disable autoconnections
this._autoConnectionName = null;
this.category = NMConnectionCategory.VPN;
NMDevice.prototype._init.call(this, client, null, [ ]);
},
connectionValid: function(connection) {
return connection._type == NetworkManager.SETTING_VPN_SETTING_NAME;
},
get empty() {
return this._connections.length == 0;
},
get connected() {
return !!this._activeConnection;
},
setActiveConnection: function(activeConnection) {
NMDevice.prototype.setActiveConnection.call(this, activeConnection);
this.emit('active-connection-changed');
},
_shouldShowConnectionList: function() {
return true;
},
deactivate: function() {
if (this._activeConnection)
this._client.deactivate_connection(this._activeConnection);
},
statusLabel: null,
controllable: true
};
function NMDeviceWireless() {
this._init.apply(this, arguments);
}
NMDeviceWireless.prototype = {
__proto__: NMDevice.prototype,
_init: function(client, device, connections) {
this.category = NMConnectionCategory.WIRELESS;
this._overflowItem = null;
this._networks = [ ];
// breaking the layers with this, but cannot call
// this.connectionValid until I have a device
this.device = device;
let validConnections = connections.filter(Lang.bind(this, function(connection) {
return this.connectionValid(connection);
}));
let accessPoints = device.get_access_points() || [ ];
for (let i = 0; i < accessPoints.length; i++) {
// Access points are grouped by network
let ap = accessPoints[i];
if (ap.get_ssid() == null) {
// hidden access point cannot be added, we need to know
// the SSID and security details to connect
// nevertheless, the access point can acquire a SSID when
// NetworkManager connects to it (via nmcli or cinnamon-settings)
ap._notifySsidId = ap.connect('notify::ssid', Lang.bind(this, this._notifySsidCb));
continue;
}
let pos = this._findNetwork(ap);
let obj;
if (pos != -1) {
obj = this._networks[pos];
obj.accessPoints.push(ap);
} else {
obj = { ssid: ap.get_ssid(),
mode: ap.mode,
security: this._getApSecurityType(ap),
connections: [ ],
item: null,
accessPoints: [ ap ]
};
obj.ssidText = ssidToLabel(obj.ssid);
this._networks.push(obj);
}
// Check if some connection is valid for this AP
for (let j = 0; j < validConnections.length; j++) {
let connection = validConnections[j];
if (ap.connection_valid(connection) &&
obj.connections.indexOf(connection) == -1) {
obj.connections.push(connection);
}
}
}
if (this.device.active_access_point) {
let networkPos = this._findNetwork(this.device.active_access_point);
if (networkPos == -1) // the connected access point is invisible
this._activeNetwork = null;
else
this._activeNetwork = this._networks[networkPos];
} else {
this._activeNetwork = null;
}
this._networks.sort(this._networkSortFunction);
this._apChangedId = device.connect('notify::active-access-point', Lang.bind(this, this._activeApChanged));
this._apAddedId = device.connect('access-point-added', Lang.bind(this, this._accessPointAdded));
this._apRemovedId = device.connect('access-point-removed', Lang.bind(this, this._accessPointRemoved));
NMDevice.prototype._init.call(this, client, device, validConnections);
},
destroy: function() {
if (this._apChangedId) {
// see above for this HACK
GObject.Object.prototype.disconnect.call(this.device, this._apChangedId);
this._apChangedId = 0;
}
if (this._apAddedId) {
GObject.Object.prototype.disconnect.call(this.device, this._apAddedId);
this._apAddedId = 0;
}
if (this._apRemovedId) {
GObject.Object.prototype.disconnect.call(this.device, this._apRemovedId);
this._apRemovedId = 0;
}
NMDevice.prototype.destroy.call(this);
},
setEnabled: function(enabled) {
if (enabled) {
this.statusItem.actor.show();
this.section.actor.show();
} else {
this.statusItem.actor.hide();
this.section.actor.hide();
}
},
activate: function() {
if (this._activeConnection)
// nothing to do
return;
// among all visible networks, pick the last recently used connection
let best = null;
let bestApObj = null;
let bestTime = 0;
for (let i = 0; i < this._networks.length; i++) {
let apObj = this._networks[i];
for (let j = 0; j < apObj.connections.length; j++) {
let connection = apObj.connections[j];
if (connection._timestamp > bestTime) {
best = connection;
bestTime = connection._timestamp;
bestApObj = apObj;
}
}
}
if (best) {
for (let i = 0; i < bestApObj.accessPoints.length; i++) {
let ap = bestApObj.accessPoints[i];
if (ap.connection_valid(best)) {
this._client.activate_connection(best, this.device, ap.dbus_path, null);
break;
}
}
return;
}
// XXX: what else to do?
// for now, just pick a random network
// (this function is called in a corner case anyway, that is, only when
// the user toggles the switch and has more than one wireless device)
if (this._networks.length > 0) {
let connection = this._createAutomaticConnection(this._networks[0]);
let accessPoints = sortAccessPoints(this._networks[0].accessPoints);
this._client.add_and_activate_connection(connection, this.device, accessPoints[0].dbus_path, null);
}
},
_notifySsidCb: function(accessPoint) {
if (accessPoint.get_ssid() != null) {
accessPoint.disconnect(accessPoint._notifySsidId);
accessPoint._notifySsidId = 0;
this._accessPointAdded(this.device, accessPoint);
}
},
_activeApChanged: function() {
this._activeNetwork = null;
let activeAp = this.device.active_access_point;
if (activeAp) {
let res = this._findExistingNetwork(activeAp);
if (res != null)
this._activeNetwork = this._networks[res.network];
}
// we don't refresh the view here, setActiveConnection will
},
_getApSecurityType: function(accessPoint) {
if (accessPoint._secType)
return accessPoint._secType;
let flags = accessPoint.flags;
let wpa_flags = accessPoint.wpa_flags;
let rsn_flags = accessPoint.rsn_flags;
let type;
if (rsn_flags != NM80211ApSecurityFlags.NONE) {
/* RSN check first so that WPA+WPA2 APs are treated as RSN/WPA2 */
if (rsn_flags & NM80211ApSecurityFlags.KEY_MGMT_802_1X)
type = NMAccessPointSecurity.WPA2_ENT;
else if (rsn_flags & NM80211ApSecurityFlags.KEY_MGMT_PSK)
type = NMAccessPointSecurity.WPA2_PSK;
} else if (wpa_flags != NM80211ApSecurityFlags.NONE) {
if (wpa_flags & NM80211ApSecurityFlags.KEY_MGMT_802_1X)
type = NMAccessPointSecurity.WPA_ENT;
else if (wpa_flags & NM80211ApSecurityFlags.KEY_MGMT_PSK)
type = NMAccessPointSecurity.WPA_PSK;
} else {
if (flags & NM80211ApFlags.PRIVACY)
type = NMAccessPointSecurity.WEP;
else
type = NMAccessPointSecurity.NONE;
}
// cache the found value to avoid checking flags all the time
accessPoint._secType = type;
return type;
},
_networkSortFunction: function(one, two) {
let oneHasConnection = one.connections.length != 0;
let twoHasConnection = two.connections.length != 0;
// place known connections first
// (-1 = good order, 1 = wrong order)
if (oneHasConnection && !twoHasConnection)
return -1;
else if (!oneHasConnection && twoHasConnection)
return 1;
return two.accessPoints[0].strength - one.accessPoints[0].strength;
/**
let oneHasSecurity = one.security != NMAccessPointSecurity.NONE;
let twoHasSecurity = two.security != NMAccessPointSecurity.NONE;
// place secure connections first
// (we treat WEP/WPA/WPA2 the same as there is no way to
// take them apart from the UI)
if (oneHasSecurity && !twoHasSecurity)
return -1;
else if (!oneHasSecurity && twoHasSecurity)
return 1;
// sort alphabetically
return GLib.utf8_collate(one.ssidText, two.ssidText);
**/
},
_networkCompare: function(network, accessPoint) {
if (!ssidCompare(network.ssid, accessPoint.get_ssid()))
return false;
if (network.mode != accessPoint.mode)
return false;
if (network.security != this._getApSecurityType(accessPoint))
return false;
return true;
},
_findExistingNetwork: function(accessPoint) {
for (let i = 0; i < this._networks.length; i++) {
let apObj = this._networks[i];
for (let j = 0; j < apObj.accessPoints.length; j++) {
if (apObj.accessPoints[j] == accessPoint)
return { network: i, ap: j };
}
}
return null;
},
_findNetwork: function(accessPoint) {
if (accessPoint.get_ssid() == null)
return -1;
for (let i = 0; i < this._networks.length; i++) {
if (this._networkCompare(this._networks[i], accessPoint))
return i;
}
return -1;
},
_accessPointAdded: function(device, accessPoint) {
if (accessPoint.get_ssid() == null) {
// This access point is not visible yet
// Wait for it to get a ssid
accessPoint._notifySsidId = accessPoint.connect('notify::ssid', Lang.bind(this, this._notifySsidCb));
return;
}
let pos = this._findNetwork(accessPoint);
let apObj;
let needsupdate = false;
if (pos != -1) {
apObj = this._networks[pos];
if (apObj.accessPoints.indexOf(accessPoint) != -1) {
log('Access point was already seen, not adding again');
return;
}
apObj.accessPoints.push(accessPoint);
if (apObj.item)
apObj.item.updateAccessPoints(apObj.accessPoints);
} else {
apObj = { ssid: accessPoint.get_ssid(),
mode: accessPoint.mode,
security: this._getApSecurityType(accessPoint),
connections: [ ],
item: null,
accessPoints: [ accessPoint ]
};
apObj.ssidText = ssidToLabel(apObj.ssid);
needsupdate = true;
}
// check if this enables new connections for this group
for (let i = 0; i < this._connections.length; i++) {
let connection = this._connections[i].connection;
if (accessPoint.connection_valid(connection) &&
apObj.connections.indexOf(connection) == -1) {
apObj.connections.push(connection);
// this potentially changes the order
needsupdate = true;
}
}
if (needsupdate) {
if (apObj.item)
apObj.item.destroy();
if (pos != -1)
this._networks.splice(pos, 1);
if (this._networks.length == 0) {
// only network in the list
this._networks.push(apObj);
this._clearSection();
this._createSection();
return;
}
// skip networks that should appear earlier
let menuPos = 0;
for (pos = 0;
pos < this._networks.length &&
this._networkSortFunction(this._networks[pos], apObj) < 0; ++pos) {
if (this._networks[pos] != this._activeNetwork)
menuPos++;
}
// (re-)add the network
this._networks.splice(pos, 0, apObj);
if (this._shouldShowConnectionList()) {
menuPos += (this._activeConnectionItem ? 1 : 0);
this._createNetworkItem(apObj, menuPos);
}
}
},
_accessPointRemoved: function(device, accessPoint) {
let res = this._findExistingNetwork(accessPoint);
if (res == null) {
return;
}
let apObj = this._networks[res.network];
apObj.accessPoints.splice(res.ap, 1);
if (apObj.accessPoints.length == 0) {
if (this._activeNetwork == apObj)
this._activeNetwork = null;
if (apObj.item)
apObj.item.destroy();
if (this._overflowItem) {
if (!apObj.isMore) {
// we removed an item in the main menu, and we have a more submenu
// we need to extract the first item in more and move it to the submenu
let item = this._overflowItem.menu.firstMenuItem;
if (item && item._apObj) {
item.destroy();
// clear the cycle, and allow the construction of the new item
item._apObj.item = null;
this._createNetworkItem(item._apObj, NUM_VISIBLE_NETWORKS-1);
} else {
log('The more... menu was existing and empty! This should not happen');
}
}
// This can happen if the removed connection is from the overflow
// menu, or if we just moved the last connection out from the menu
if (this._overflowItem.menu.numMenuItems == 0) {
this._overflowItem.destroy();
this._overflowItem = null;
}
}
this._networks.splice(res.network, 1);
} else if (apObj.item)
apObj.item.updateAccessPoints(apObj.accessPoints);
},
_createAPItem: function(connection, accessPointObj, useConnectionName) {
let item = new NMNetworkMenuItem(accessPointObj.accessPoints, useConnectionName ? connection._name : undefined);
item._connection = connection;
item.connect('activate', Lang.bind(this, function() {
let accessPoints = sortAccessPoints(accessPointObj.accessPoints);
for (let i = 0; i < accessPoints.length; i++) {
if (accessPoints[i].connection_valid(connection)) {
this._client.activate_connection(connection, this.device, accessPoints[i].dbus_path, null);
break;
}
}
}));
return item;
},
_clearSection: function() {
NMDevice.prototype._clearSection.call(this);
for (let i = 0; i < this._networks.length; i++)
this._networks[i].item = null;
this._overflowItem = null;
},
removeConnection: function(connection) {
if (!connection._uuid)
return;
let pos = this._findConnection(connection._uuid);
if (pos == -1) {
// removing connection that was never added
return;
}
this._connections.splice(pos, 1);
let anyauto = false, forceupdate = false;
for (let i = 0; i < this._networks.length; i++) {
let apObj = this._networks[i];
let connections = apObj.connections;
for (let k = 0; k < connections.length; k++) {
if (connections[k]._uuid == connection._uuid) {
// remove the connection from the access point group
connections.splice(k);
anyauto = connections.length == 0;
if (anyauto) {
// this potentially changes the sorting order
forceupdate = true;
break;
}
if (apObj.item) {
if (apObj.item instanceof PopupMenu.PopupSubMenuMenuItem) {
let items = apObj.item.menu.getMenuItems();
if (items.length == 2) {
// we need to update the connection list to convert this to a normal item
forceupdate = true;
} else {
for (let j = 0; j < items.length; j++) {
if (items[j]._connection._uuid == connection._uuid) {
items[j].destroy();
break;
}
}
}
} else {
apObj.item.destroy();
apObj.item = null;
}
}
break;
}
}
}
if (forceupdate || anyauto) {
this._networks.sort(this._networkSortFunction);
this._clearSection();
this._createSection();
}
},
addConnection: function(connection) {
// record the connection
let obj = {
connection: connection,
name: connection._name,
uuid: connection._uuid,
};
this._connections.push(obj);
// find an appropriate access point
let forceupdate = false;
for (let i = 0; i < this._networks.length; i++) {
let apObj = this._networks[i];
// Check if connection is valid for any of these access points
for (let k = 0; k < apObj.accessPoints.length; k++) {
let ap = apObj.accessPoints[k];
if (ap.connection_valid(connection)) {
apObj.connections.push(connection);
// this potentially changes the sorting order
forceupdate = true;
break;
}
}
}
if (forceupdate) {
this._networks.sort(this._networkSortFunction);
this._clearSection();
this._createSection();
}
},
_createActiveConnectionItem: function() {
if (this._activeConnection._connection) {
let connection = this._activeConnection._connection;
if (!this._activeNetwork) {
if (this.device.active_access_point) {
let networkPos = this._findNetwork(this.device.active_access_point);
if (networkPos == -1) // the connected access point is invisible
this._activeNetwork = null;
else
this._activeNetwork = this._networks[networkPos];
} else {
this._activeNetwork = null;
}
}
if (this._activeNetwork)
this._activeConnectionItem = new NMNetworkMenuItem(this._activeNetwork.accessPoints, undefined, { reactive: false });
else
this._activeConnectionItem = new PopupMenu.PopupImageMenuItem(connection._name, 'network-wireless-connected', { reactive: false });
} else {
// We cannot read the connection (due to ACL, or API incompatibility), but we still show signal if we have it
if (this._activeNetwork)
this._activeConnectionItem = new NMNetworkMenuItem(this._activeNetwork.accessPoints, undefined,
{ reactive: false });
else
this._activeConnectionItem = new PopupMenu.PopupImageMenuItem(_("Connected (private)"),
'network-wireless-connected',
{ reactive: false });
}
this._activeConnectionItem.setShowDot(true);
},
_createAutomaticConnection: function(apObj) {
let name;
let ssid = NetworkManager.utils_ssid_to_utf8(apObj.ssid);
if (ssid) {
/* TRANSLATORS: this the automatic wireless connection name (including the network name) */
name = _("Auto %s").format(ssid);
} else
name = _("Auto wireless");
let connection = new NetworkManager.Connection();
connection.add_setting(new NetworkManager.SettingWireless());
connection.add_setting(new NetworkManager.SettingConnection({
id: name,
autoconnect: true, // NetworkManager will know to ignore this if appropriate
uuid: NetworkManager.utils_uuid_generate(),
type: NetworkManager.SETTING_WIRELESS_SETTING_NAME
}));
return connection;
},
_createNetworkItem: function(apObj, position) {
if(!apObj.accessPoints || apObj.accessPoints.length == 0) {
// this should not happen, but I have no idea why it happens
return;
}
if(apObj.connections.length > 0) {
if (apObj.connections.length == 1) {
apObj.item = this._createAPItem(apObj.connections[0], apObj, false);
} else {
let title = apObj.ssidText;
apObj.item = new PopupMenu.PopupSubMenuMenuItem(title);
for (let i = 0; i < apObj.connections.length; i++)
apObj.item.menu.addMenuItem(this._createAPItem(apObj.connections[i], apObj, true));
}
} else {
apObj.item = new NMNetworkMenuItem(apObj.accessPoints);
apObj.item.connect('activate', Lang.bind(this, function() {
let accessPoints = sortAccessPoints(apObj.accessPoints);
if ((accessPoints[0]._secType == NMAccessPointSecurity.WPA2_ENT) ||
(accessPoints[0]._secType == NMAccessPointSecurity.WPA_ENT)) {
// 802.1x-enabled APs require further configuration, so they're
// handled in cinnamon-settings
Util.spawn(['cinnamon-settings', 'network', 'connect-8021x-wifi',
this.device.get_path(), accessPoints[0].dbus_path]);
} else {
let connection = this._createAutomaticConnection(apObj);
this._client.add_and_activate_connection(connection, this.device, accessPoints[0].dbus_path, null);
}
}));
}
apObj.item._apObj = apObj;
if (position < NUM_VISIBLE_NETWORKS) {
apObj.isMore = false;
this.section.addMenuItem(apObj.item, position);
} else {
if (!this._overflowItem) {
this._overflowItem = new PopupMenu.PopupSubMenuMenuItem(_("More"));
this.section.addMenuItem(this._overflowItem);
}
this._overflowItem.menu.addMenuItem(apObj.item, position - NUM_VISIBLE_NETWORKS);
apObj.isMore = true;
}
},
_createSection: function() {
if (!this._shouldShowConnectionList())
return;
if(this._activeConnection) {
this._createActiveConnectionItem();
this.section.addMenuItem(this._activeConnectionItem);
}
let activeOffset = this._activeConnectionItem ? 1 : 0;
for(let j = 0; j < this._networks.length; j++) {
let apObj = this._networks[j];
if (apObj == this._activeNetwork)
continue;
this._createNetworkItem(apObj, j + activeOffset);
}
},
};
function NMMessageTraySource() {
this._init();
}
NMMessageTraySource.prototype = {
__proto__: MessageTray.Source.prototype,
_init: function() {
MessageTray.Source.prototype._init.call(this, _("Network Manager"));
let icon = new St.Icon({ icon_name: 'network-transmit-receive',
icon_type: St.IconType.SYMBOLIC,
icon_size: this.ICON_SIZE
});
this._setSummaryIcon(icon);
}
};
function RescanMenuItem() {
this._init.apply(this);
}
RescanMenuItem.prototype = {
__proto__: PopupMenu.PopupBaseMenuItem.prototype,
_init: function() {
PopupMenu.PopupBaseMenuItem.prototype._init.call(this);
this.label = new St.Label({ text: _("Rescan for wireless networks") });
this.addActor(this.label);
this.actor.label_actor = this.label;
},
activate: function(event) {
PopupMenu.PopupBaseMenuItem.prototype.activate.call(this, event, true);
}
};
function MyApplet(metadata, orientation, panel_height, instance_id) {
this._init(metadata, orientation, panel_height, instance_id);
}
MyApplet.prototype = {
__proto__: Applet.IconApplet.prototype,
_init: function(metadata, orientation, panel_height, instance_id) {
Applet.IconApplet.prototype._init.call(this, orientation, panel_height, instance_id);
try {
this.metadata = metadata;
Main.systrayManager.registerRole("network", metadata.uuid);
Main.systrayManager.registerRole("nm-applet", metadata.uuid);
this.menuManager = new PopupMenu.PopupMenuManager(this);
this.menu = new Applet.AppletPopupMenu(this, orientation);
this.menuManager.addMenu(this.menu);
this._currentIconName = undefined;
this._setIcon('network-offline');
this._client = NMClient.Client.new();
this._statusSection = new PopupMenu.PopupMenuSection();
this._statusItem = new PopupMenu.PopupMenuItem('', { style_class: 'popup-inactive-menu-item', reactive: false });
this._statusSection.addMenuItem(this._statusItem);
this._statusSection.addAction(_("Enable networking"), Lang.bind(this, function() {
this._client.networking_enabled = true;
}));
this._statusSection.actor.hide();
this.menu.addMenuItem(this._statusSection);
this.menu.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
this._devices = { };
this._devices.wired = {
section: new PopupMenu.PopupMenuSection(),
devices: [ ],
item: new NMWiredSectionTitleMenuItem(_("Wired"))
};
this._devices.wired.section.addMenuItem(this._devices.wired.item);
this._devices.wired.section.actor.hide();
this.menu.addMenuItem(this._devices.wired.section);
this.menu.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
this._devices.wireless = {
section: new PopupMenu.PopupMenuSection(),
devices: [ ],
item: this._makeToggleItem('wireless', _("Wireless"))
};
this._devices.wireless.section.addMenuItem(this._devices.wireless.item);
this._devices.wireless.section.actor.hide();
this.menu.addMenuItem(this._devices.wireless.section);
this.menu.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
this._devices.wwan = {
section: new PopupMenu.PopupMenuSection(),
devices: [ ],
item: this._makeToggleItem('wwan', _("Mobile broadband"))
};
this._devices.wwan.section.addMenuItem(this._devices.wwan.item);
this._devices.wwan.section.actor.hide();
this.menu.addMenuItem(this._devices.wwan.section);
this.menu.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
this._devices.vpn = {
section: new PopupMenu.PopupMenuSection(),
device: new NMDeviceVPN(this._client),
item: new NMWiredSectionTitleMenuItem(_("VPN Connections"))
};
this._devices.vpn.device.connect('active-connection-changed', Lang.bind(this, function() {
this._devices.vpn.item.updateForDevice(this._devices.vpn.device);
}));
this._devices.vpn.item.updateForDevice(this._devices.vpn.device);
this._devices.vpn.section.addMenuItem(this._devices.vpn.item);
this._devices.vpn.section.addMenuItem(this._devices.vpn.device.section);
this._devices.vpn.section.actor.hide();
this.menu.addMenuItem(this._devices.vpn.section);
this.menu.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
this.rescan_item = new RescanMenuItem();
this.rescan_item.connect("activate", Lang.bind(this, function() {
let devices = this._devices.wireless.devices;
for (let i = 0; i < devices.length; i++) {
devices[i].device.request_scan_simple(null);
}
}));
this.menu.addMenuItem(this.rescan_item);
this.rescan_item.actor.hide();
this.menu.addSettingsAction(_("Network Settings"), 'network');
this.menu.addAction(_("Network Connections"), Lang.bind(this, function() {
Util.spawnCommandLine("nm-connection-editor");
}));
this._activeConnections = [ ];
this._connections = [ ];
this._mainConnection = null;
// Device types
this._dtypes = { };
this._dtypes[NetworkManager.DeviceType.ETHERNET] = NMDeviceWired;
this._dtypes[NetworkManager.DeviceType.WIFI] = NMDeviceWireless;
this._dtypes[NetworkManager.DeviceType.MODEM] = NMDeviceModem;
this._dtypes[NetworkManager.DeviceType.BT] = NMDeviceBluetooth;
// TODO: WiMax support
// Connection types
this._ctypes = { };
this._ctypes[NetworkManager.SETTING_WIRELESS_SETTING_NAME] = NMConnectionCategory.WIRELESS;
this._ctypes[NetworkManager.SETTING_WIRED_SETTING_NAME] = NMConnectionCategory.WIRED;
this._ctypes[NetworkManager.SETTING_PPPOE_SETTING_NAME] = NMConnectionCategory.WIRED;
this._ctypes[NetworkManager.SETTING_PPP_SETTING_NAME] = NMConnectionCategory.WIRED;
this._ctypes[NetworkManager.SETTING_BLUETOOTH_SETTING_NAME] = NMConnectionCategory.WWAN;
this._ctypes[NetworkManager.SETTING_CDMA_SETTING_NAME] = NMConnectionCategory.WWAN;
this._ctypes[NetworkManager.SETTING_GSM_SETTING_NAME] = NMConnectionCategory.WWAN;
this._ctypes[NetworkManager.SETTING_VPN_SETTING_NAME] = NMConnectionCategory.VPN;
this._settings = NMClient.RemoteSettings.new(null);
this._connectionsReadId = this._settings.connect('connections-read', Lang.bind(this, function() {
this._readConnections();
this._readDevices();
this._syncNMState();
// Connect to signals late so that early signals don't find in inconsistent state
// and connect only once (this signal handler can be called again if NetworkManager goes up and down)
if (!this._inited) {
this._inited = true;
this._client.connect('notify::manager-running', Lang.bind(this, this._syncNMState));
this._client.connect('notify::networking-enabled', Lang.bind(this, this._syncNMState));
this._client.connect('notify::state', Lang.bind(this, this._syncNMState));
this._client.connect('notify::active-connections', Lang.bind(this, this._updateIcon));
this._client.connect('device-added', Lang.bind(this, this._deviceAdded));
this._client.connect('device-removed', Lang.bind(this, this._deviceRemoved));
this._settings.connect('new-connection', Lang.bind(this, this._newConnection));
}
}));
this._periodicUpdateIcon();
}
catch (e) {
global.logError(e);
}
},
_setIcon: function(name) {
if (this._currentIconName !== name) {
this.set_applet_icon_symbolic_name(name);
this._currentIconName = name;
}
},
on_applet_clicked: function(event) {
this.menu.toggle();
},
_ensureSource: function() {
if (!this._source) {
this._source = new NMMessageTraySource();
this._source.connect('destroy', Lang.bind(this, function() {
this._source = null;
}));
if (Main.messageTray) Main.messageTray.add(this._source);
}
},
_makeToggleItem: function(type, title) {
let item = new NMWirelessSectionTitleMenuItem(this._client, type, title);
item.connect('enabled-changed', Lang.bind(this, function(item, enabled) {
let devices = this._devices[type].devices;
devices.forEach(function(dev) {
dev.setEnabled(enabled);
});
this._syncSectionTitle(type);
}));
return item;
},
_syncSectionTitle: function(category) {
let devices = this._devices[category].devices;
let item = this._devices[category].item;
let section = this._devices[category].section;
if (devices.length == 0)
section.actor.hide();
else {
section.actor.show();
if (devices.length == 1) {
let dev = devices[0];
dev.statusItem.actor.hide();
item.updateForDevice(dev);
} else {
devices.forEach(function(dev) {
dev.statusItem.actor.show();
});
// remove status text from the section title item
item.updateForDevice(null);
}
}
let show_rescan = false;
if (this._devices.wireless.devices.length > 0) {
let devices = this._devices.wireless.devices;
for (let i = 0; i < devices.length; i++) {
if (devices[i]._client.wireless_get_enabled()) {
show_rescan = true;
break;
}
}
}
this.rescan_item.actor.visible = show_rescan;
},
_readDevices: function() {
let devices = this._client.get_devices() || [ ];
for (let i = 0; i < devices.length; ++i) {
this._deviceAdded(this._client, devices[i]);
}
},
_notifyForDevice: function(device, iconName, title, text, urgency) {
if (device._notification)
device._notification.destroy();
/* must call after destroying previous notification,
or this._source will be cleared */
this._ensureSource();
let icon = new St.Icon({ icon_name: iconName,
icon_type: St.IconType.SYMBOLIC,
icon_size: this._source.ICON_SIZE
});
device._notification = new MessageTray.Notification(this._source, title, text,
{ icon: icon });
device._notification.setUrgency(urgency);
device._notification.setTransient(true);
device._notification.connect('destroy', function() {
device._notification = null;
});
this._source.notify(device._notification);
},
_deviceAdded: function(client, device) {
if (device._delegate) {
// already seen, not adding again
return;
}
let wrapperClass = this._dtypes[device.get_device_type()];
if (wrapperClass) {
let wrapper = new wrapperClass(this._client, device, this._connections);
wrapper._activationFailedId = wrapper.connect('activation-failed', Lang.bind(this, function(device, reason) {
// XXX: nm-applet has no special text depending on reason
// but I'm not sure of this generic message
this._notifyForDevice(device, 'network-error',
_("Connection failed"),
_("Activation of network connection failed"),
MessageTray.Urgency.HIGH);
}));
wrapper._deviceStateChangedId = wrapper.connect('state-changed', Lang.bind(this, function(dev) {
this._syncSectionTitle(dev.category);
}));
wrapper._destroyId = wrapper.connect('destroy', function(wrapper) {
wrapper.disconnect(wrapper._activationFailedId);
wrapper.disconnect(wrapper._deviceStateChangedId);
wrapper.disconnect(wrapper._destroyId);
});
let section = this._devices[wrapper.category].section;
let devices = this._devices[wrapper.category].devices;
section.addMenuItem(wrapper.section, 1);
section.addMenuItem(wrapper.statusItem, 1);
devices.push(wrapper);
this._syncSectionTitle(wrapper.category);
} else
log('Invalid network device type, is ' + device.get_device_type());
},
_deviceRemoved: function(client, device) {
if (!device._delegate) {
log('Removing a network device that was not added');
return;
}
let wrapper = device._delegate;
wrapper.destroy();
let devices = this._devices[wrapper.category].devices;
let pos = devices.indexOf(wrapper);
devices.splice(pos, 1);
this._syncSectionTitle(wrapper.category);
},
_syncActiveConnections: function() {
let closedConnections = [ ];
let newActiveConnections = this._client.get_active_connections() || [ ];
for (let i = 0; i < this._activeConnections.length; i++) {
let a = this._activeConnections[i];
if (newActiveConnections.indexOf(a) == -1) // connection is removed
closedConnections.push(a);
}
for (let i = 0; i < closedConnections.length; i++) {
let active = closedConnections[i];
if (active._primaryDevice) {
active._primaryDevice.setActiveConnection(null);
active._primaryDevice = null;
}
if (active._inited) {
active.disconnect(active._notifyStateId);
//active.disconnect(active._notifyDefaultId);
//active.disconnect(active._notifyDefault6Id);
active._inited = false;
}
}
this._activeConnections = newActiveConnections;
this._mainConnection = null;
let activating = null;
let activated = null;
let default_ip4 = null;
let default_ip6 = null;
for (let i = 0; i < this._activeConnections.length; i++) {
let a = this._activeConnections[i];
if (!a._inited) {
//a._notifyDefaultId = a.connect('notify::default', Lang.bind(this, this._updateIcon));
//a._notifyDefault6Id = a.connect('notify::default6', Lang.bind(this, this._updateIcon));
a._notifyStateId = a.connect('notify::state', Lang.bind(this, this._notifyActivated));
a._inited = true;
}
if (!a._connection) {
a._connection = this._settings.get_connection_by_path(a.connection);
if (a._connection) {
a._type = a._connection._type;
a._section = this._ctypes[a._type];
if (a._errorLogged) {
log('network applet: Found connection for active');
a._errorLogged = false;
}
} else {
a._connection = null;
a._type = null;
a._section = null;
if (!a._errorLogged) {
a._errorLogged = true;
log('network applet: Cannot find connection for active (or connection cannot be read)');
}
}
}
if (!a._section){
// Do not take connections which section is undefined into account
// For instance, in Mint 18, when the "vpn" is "activated", we sometimes see a "tun" act as the default ipv4 connection.
continue;
}
if (a.state == NetworkManager.ActiveConnectionState.ACTIVATED) {
if (!default_ip4) {
// We didn't find the default IPV4 device yet..
if (!default_ip6) {
// We didn't find the default IPV6 device either so consider this one.
activated = a;
}
else {
// We already found the default IPV6 device, so only use this one if it's the default IPV4 device
if (a['default']) {
activated = a;
}
}
}
}
if (a.state == NetworkManager.ActiveConnectionState.ACTIVATING) {
activating = a;
}
if (a['default']) {
default_ip4 = a;
}
if (a.default6) {
default_ip6 = a;
}
if (!a._primaryDevice) {
if (a._type != NetworkManager.SETTING_VPN_SETTING_NAME) {
// find a good device to be considered primary
a._primaryDevice = null;
let devices = a.get_devices() || [ ];
for (let j = 0; j < devices.length; j++) {
let d = devices[j];
if (d._delegate) {
a._primaryDevice = d._delegate;
break;
}
}
} else
a._primaryDevice = this._devices.vpn.device;
if (a._primaryDevice)
a._primaryDevice.setActiveConnection(a);
if (a.state == NetworkManager.ActiveConnectionState.ACTIVATED &&
a._primaryDevice && a._primaryDevice._notification) {
a._primaryDevice._notification.destroy();
a._primaryDevice._notification = null;
}
}
}
this._mainConnection = activated || activating || default_ip4 || default_ip6 || null;
},
_notifyActivated: function(activeConnection) {
if (activeConnection.state == NetworkManager.ActiveConnectionState.ACTIVATED &&
activeConnection._primaryDevice && activeConnection._primaryDevice._notification) {
activeConnection._primaryDevice._notification.destroy();
activeConnection._primaryDevice._notification = null;
}
this._updateIcon();
},
_readConnections: function() {
let connections = this._settings.list_connections();
for (let i = 0; i < connections.length; i++) {
let connection = connections[i];
if (connection._uuid) {
// connection was already seen (for example because NetworkManager was restarted)
continue;
}
connection._removedId = connection.connect('removed', Lang.bind(this, this._connectionRemoved));
connection._updatedId = connection.connect('updated', Lang.bind(this, this._updateConnection));
this._updateConnection(connection);
this._connections.push(connection);
}
},
_newConnection: function(settings, connection) {
if (connection._uuid) {
// connection was already seen
return;
}
connection._removedId = connection.connect('removed', Lang.bind(this, this._connectionRemoved));
connection._updatedId = connection.connect('updated', Lang.bind(this, this._updateConnection));
this._updateConnection(connection);
this._connections.push(connection);
this._updateIcon();
},
_connectionRemoved: function(connection) {
let pos = this._connections.indexOf(connection);
if (pos != -1)
this._connections.splice(pos);
let section = connection._section;
if (section == NMConnectionCategory.VPN) {
this._devices.vpn.device.removeConnection(connection);
if (this._devices.vpn.device.empty)
this._devices.vpn.section.actor.hide();
} else if (section != NMConnectionCategory.INVALID) {
let devices = this._devices[section].devices;
for (let i = 0; i < devices.length; i++)
devices[i].removeConnection(connection);
}
connection._uuid = null;
connection.disconnect(connection._removedId);
connection.disconnect(connection._updatedId);
},
_updateConnection: function(connection) {
let connectionSettings = connection.get_setting_by_name(NetworkManager.SETTING_CONNECTION_SETTING_NAME);
connection._type = connectionSettings.type;
connection._section = this._ctypes[connection._type] || NMConnectionCategory.INVALID;
connection._name = connectionSettings.id;
connection._uuid = connectionSettings.uuid;
connection._timestamp = connectionSettings.timestamp;
let section = connection._section;
if (connection._section == NMConnectionCategory.INVALID)
return;
if (section == NMConnectionCategory.VPN) {
this._devices.vpn.device.checkConnection(connection);
this._devices.vpn.section.actor.show();
} else {
let devices = this._devices[section].devices;
for (let i = 0; i < devices.length; i++) {
devices[i].checkConnection(connection);
}
}
},
_hideDevices: function() {
this._devicesHidden = true;
for (let category in this._devices)
this._devices[category].section.actor.hide();
},
_showNormal: function() {
if (!this._devicesHidden) // nothing to do
return;
this._devicesHidden = false;
this._statusSection.actor.hide();
this._syncSectionTitle('wired');
this._syncSectionTitle('wireless');
this._syncSectionTitle('wwan');
if (!this._devices.vpn.device.empty)
this._devices.vpn.section.actor.show();
},
_syncNMState: function() {
if (!this._client.manager_running) {
log('NetworkManager is not running, hiding...');
this.menu.close();
this.actor.hide();
return;
} else
this.actor.show();
if (!this._client.networking_enabled) {
this._setIcon('network-offline');
this._hideDevices();
this._statusItem.label.text = _("Networking is disabled");
this._statusSection.actor.show();
return;
}
this._showNormal();
this._updateIcon();
},
_updateIcon: function() {
try {
this._updateFrequencySeconds = DEFAULT_PERIODIC_UPDATE_FREQUENCY_SECONDS;
this._syncActiveConnections();
let mc = this._mainConnection;
if (!mc) {
this._setIcon('network-offline');
this.set_applet_tooltip(_("No connection"));
} else if (mc.state == NetworkManager.ActiveConnectionState.ACTIVATING) {
this._updateFrequencySeconds = FAST_PERIODIC_UPDATE_FREQUENCY_SECONDS;
switch (mc._section) {
case NMConnectionCategory.WWAN:
this._setIcon('network-cellular-acquiring');
this.set_applet_tooltip(_("Connecting to the cellular network..."));
break;
case NMConnectionCategory.WIRELESS:
this._setIcon('network-wireless-acquiring');
this.set_applet_tooltip(_("Connecting to the wireless network..."));
break;
case NMConnectionCategory.WIRED:
this._setIcon('network-wired-acquiring');
this.set_applet_tooltip(_("Connecting to the wired network..."));
break;
case NMConnectionCategory.VPN:
this._setIcon('network-vpn-acquiring');
this.set_applet_tooltip(_("Connecting to the VPN..."));
break;
default:
// fallback to a generic connected icon
// (it could be a private connection of some other user)
this._setIcon('network-wired-acquiring');
this.set_applet_tooltip(_("Connecting to the network..."));
}
} else {
let dev;
switch (mc._section) {
case NMConnectionCategory.WIRELESS:
dev = mc._primaryDevice;
if (dev) {
let ap = dev.device.active_access_point;
let mode = dev.device.mode;
if (!ap) {
if (mode != NM80211Mode.ADHOC) {
log('An active wireless connection, in infrastructure mode, involves no access point?');
break;
}
this._setIcon('network-wireless-connected');
this.set_applet_tooltip(_("Connected to the wireless network"));
} else {
this._setIcon('network-wireless-signal-' + signalToIcon(ap.strength));
this.set_applet_tooltip(_("Wireless connection") + ": " + ap.get_ssid() + " ("+ ap.strength +"%)");
}
} else {
log('Active connection with no primary device?');
}
break;
case NMConnectionCategory.WIRED:
this._setIcon('network-wired');
this.set_applet_tooltip(_("Connected to the wired network"));
break;
case NMConnectionCategory.WWAN:
dev = mc._primaryDevice;
if (!dev) {
log('Active connection with no primary device?');
break;
}
if (!dev.mobileDevice) {
// this can happen for bluetooth in PAN mode
this._setIcon('network-cellular-connected');
this.set_applet_tooltip(_("Connected to the cellular network"));
break;
}
this._setIcon('network-cellular-signal-' + signalToIcon(dev.mobileDevice.signal_quality));
this.set_applet_tooltip(_("Connected to the cellular network"));
break;
case NMConnectionCategory.VPN:
this._setIcon('network-vpn');
this.set_applet_tooltip(_("Connected to the VPN"));
break;
default:
// fallback to a generic connected icon
// (it could be a private connection of some other user)
this._setIcon('network-wired');
this.set_applet_tooltip(_("Connected to the network"));
break;
}
}
}
catch (e) {
global.logError(e);
}
},
_periodicUpdateIcon: function() {
this._updateIcon();
this._updateFrequencySeconds = Math.max(2, this._updateFrequencySeconds);
this._periodicTimeoutId = Mainloop.timeout_add_seconds(this._updateFrequencySeconds, Lang.bind(this, this._periodicUpdateIcon));
},
on_applet_removed_from_panel: function() {
Main.systrayManager.unregisterRole("network", this.metadata.uuid);
Main.systrayManager.unregisterRole("nm-applet", this.metadata.uuid);
if (this._periodicTimeoutId){
Mainloop.source_remove(this._periodicTimeoutId);
}
},
};
function main(metadata, orientation, panel_height, instance_id) {
let myApplet = new MyApplet(metadata, orientation, panel_height, instance_id);
return myApplet;
}
Cinnamon-3.6.7/files/usr/share/cinnamon/applets/menu@cinnamon.org/ 0000775 0001750 0001750 00000000000 13215735076 024072 5 ustar fabio fabio Cinnamon-3.6.7/files/usr/share/cinnamon/applets/menu@cinnamon.org/settings-schema.json 0000664 0001750 0001750 00000007631 13215735076 030072 0 ustar fabio fabio {
"layout" : {
"type" : "layout",
"pages" : ["panel", "menu"],
"panel" : {
"type" : "page",
"title" : "Panel",
"sections" : ["panel-appear", "panel-behave"]
},
"menu" : {
"type" : "page",
"title" : "Menu",
"sections" : ["menu-layout", "menu-behave"]
},
"panel-appear" : {
"type" : "section",
"title" : "Appearance",
"keys" : ["menu-icon-custom", "menu-icon", "menu-label"]
},
"panel-behave" : {
"type" : "section",
"title" : "Behavior",
"keys" : ["overlay-key", "activate-on-hover", "hover-delay", "enable-animation"]
},
"menu-layout" : {
"type" : "section",
"title" : "Layout and content",
"keys" : ["show-category-icons", "show-application-icons", "favbox-show", "show-places", "menu-editor-button"]
},
"menu-behave" : {
"type" : "section",
"title" : "Behavior",
"keys" : ["enable-autoscroll", "search-filesystem"]
}
},
"overlay-key" : {
"type" : "keybinding",
"description" : "Keyboard shortcut to open and close the menu",
"default" : "Super_L::Super_R"
},
"menu-icon-custom" : {
"type" : "switch",
"default" : false,
"description" : "Use a custom icon",
"tooltip" : "Unchecking this allows the theme to set the icon"
},
"menu-icon" : {
"type" : "iconfilechooser",
"default" : "/usr/share/cinnamon/theme/menu-symbolic.svg",
"description" : "Icon",
"tooltip" : "Select an icon to show in the panel.",
"dependency" : "menu-icon-custom",
"indent" : "true"
},
"menu-label" : {
"type" : "entry",
"default" : "Menu",
"description" : "Text",
"tooltip" : "Enter custom text to show in the panel."
},
"show-category-icons" : {
"type" : "switch",
"default" : true,
"description" : "Show category icons",
"tooltip" : "Choose whether or not to show icons on categories."
},
"show-application-icons" : {
"type" : "switch",
"default" : true,
"description" : "Show application icons",
"tooltip" : "Choose whether or not to show icons on applications."
},
"favbox-show" : {
"type" : "switch",
"default" : true,
"description" : "Show favorites and quit options",
"tooltip" : "Choose whether or not to show the left pane of the menu."
},
"show-places" : {
"type" : "switch",
"default" : true,
"description": "Show bookmarks and places",
"tooltip": "Choose whether or not to show bookmarks and places in the menu."
},
"enable-autoscroll" : {
"type" : "switch",
"default" : true,
"description": "Enable autoscrolling in application list",
"tooltip": "Choose whether or not to enable smooth autoscrolling in the application list."
},
"search-filesystem" : {
"type" : "switch",
"default" : false,
"description": "Enable filesystem path entry in search box",
"tooltip": "Allows path entry in the menu search box."
},
"activate-on-hover" : {
"type" : "switch",
"default" : false,
"description": "Open the menu when I move my mouse over it",
"tooltip": "Enable opening the menu when the mouse enters the applet"
},
"hover-delay" : {
"type": "spinbutton",
"default" : 0,
"min" : 0,
"max" : 1000,
"step" : 50,
"units" : "milliseconds",
"dependency" : "activate-on-hover",
"description" : "Menu hover delay",
"tooltip" : "Delay before the menu opens when hovered"
},
"enable-animation" : {
"type": "switch",
"default": false,
"description": "Use menu animations",
"tooltip": "Allow the menu to animate on open and close"
},
"menu-editor-button" : {
"type" : "button",
"description" : "Open the menu editor",
"callback" : "_launch_editor",
"tooltip" : "Press this button to customize your menu entries."
}
}
Cinnamon-3.6.7/files/usr/share/cinnamon/applets/menu@cinnamon.org/metadata.json 0000664 0001750 0001750 00000000215 13215735076 026543 0 ustar fabio fabio {
"uuid": "menu@cinnamon.org",
"name": "Menu",
"description": "Main Cinnamon menu",
"icon": "applications-other",
"max-instances": -1
}
Cinnamon-3.6.7/files/usr/share/cinnamon/applets/menu@cinnamon.org/applet.js 0000664 0001750 0001750 00000413730 13215735076 025725 0 ustar fabio fabio const Applet = imports.ui.applet;
const Mainloop = imports.mainloop;
const CMenu = imports.gi.CMenu;
const Lang = imports.lang;
const Cinnamon = imports.gi.Cinnamon;
const St = imports.gi.St;
const Clutter = imports.gi.Clutter;
const Main = imports.ui.main;
const MessageTray = imports.ui.messageTray;
const PopupMenu = imports.ui.popupMenu;
const AppFavorites = imports.ui.appFavorites;
const Gtk = imports.gi.Gtk;
const Atk = imports.gi.Atk;
const Gio = imports.gi.Gio;
const GnomeSession = imports.misc.gnomeSession;
const ScreenSaver = imports.misc.screenSaver;
const FileUtils = imports.misc.fileUtils;
const Util = imports.misc.util;
const DND = imports.ui.dnd;
const Meta = imports.gi.Meta;
const DocInfo = imports.misc.docInfo;
const GLib = imports.gi.GLib;
const Settings = imports.ui.settings;
const Pango = imports.gi.Pango;
const SearchProviderManager = imports.ui.searchProviderManager;
const MAX_FAV_ICON_SIZE = 32;
const CATEGORY_ICON_SIZE = 22;
const APPLICATION_ICON_SIZE = 22;
const INITIAL_BUTTON_LOAD = 30;
const MAX_BUTTON_WIDTH = "max-width: 20em;";
const USER_DESKTOP_PATH = FileUtils.getUserDesktopDir();
const PRIVACY_SCHEMA = "org.cinnamon.desktop.privacy";
const REMEMBER_RECENT_KEY = "remember-recent-files";
let appsys = Cinnamon.AppSystem.get_default();
/* VisibleChildIterator takes a container (boxlayout, etc.)
* and creates an array of its visible children and their index
* positions. We can then work through that list without
* mucking about with positions and math, just give a
* child, and it'll give you the next or previous, or first or
* last child in the list.
*
* We could have this object regenerate off a signal
* every time the visibles have changed in our applicationBox,
* but we really only need it when we start keyboard
* navigating, so increase speed, we reload only when we
* want to use it.
*/
function VisibleChildIterator(container) {
this._init(container);
}
VisibleChildIterator.prototype = {
_init: function(container) {
this.container = container;
this.reloadVisible();
},
reloadVisible: function() {
this.array = this.container.get_focus_chain()
.filter(x => !(x._delegate instanceof PopupMenu.PopupSeparatorMenuItem));
},
getNextVisible: function(curChild) {
return this.getVisibleItem(this.array.indexOf(curChild) + 1);
},
getPrevVisible: function(curChild) {
return this.getVisibleItem(this.array.indexOf(curChild) - 1);
},
getFirstVisible: function() {
return this.array[0];
},
getLastVisible: function() {
return this.array[this.array.length - 1];
},
getVisibleIndex: function(curChild) {
return this.array.indexOf(curChild);
},
getVisibleItem: function(index) {
let len = this.array.length;
index = ((index % len) + len) % len;
return this.array[index];
},
getNumVisibleChildren: function() {
return this.array.length;
},
getAbsoluteIndexOfChild: function(child) {
return this.container.get_children().indexOf(child);
}
};
function ApplicationContextMenuItem(appButton, label, action, iconName) {
this._init(appButton, label, action, iconName);
}
ApplicationContextMenuItem.prototype = {
__proto__: PopupMenu.PopupBaseMenuItem.prototype,
_init: function (appButton, label, action, iconName) {
PopupMenu.PopupBaseMenuItem.prototype._init.call(this, {focusOnHover: false});
this._appButton = appButton;
this._action = action;
this.label = new St.Label({ text: label });
if (iconName != null) {
this.icon = new St.Icon({ icon_name: iconName, icon_size: 12, icon_type: St.IconType.SYMBOLIC });
if (this.icon) {
this.addActor(this.icon);
this.icon.realize();
}
}
this.addActor(this.label);
},
activate: function (event) {
switch (this._action){
case "add_to_panel": {
if (!Main.AppletManager.get_role_provider_exists(Main.AppletManager.Roles.PANEL_LAUNCHER)) {
let new_applet_id = global.settings.get_int("next-applet-id");
global.settings.set_int("next-applet-id", (new_applet_id + 1));
let enabled_applets = global.settings.get_strv("enabled-applets");
enabled_applets.push("panel1:right:0:panel-launchers@cinnamon.org:" + new_applet_id);
global.settings.set_strv("enabled-applets", enabled_applets);
}
let launcherApplet = Main.AppletManager.get_role_provider(Main.AppletManager.Roles.PANEL_LAUNCHER);
launcherApplet.acceptNewLauncher(this._appButton.app.get_id());
this._appButton.toggleMenu();
break;
} case "add_to_desktop": {
let file = Gio.file_new_for_path(this._appButton.app.get_app_info().get_filename());
let destFile = Gio.file_new_for_path(USER_DESKTOP_PATH+"/"+this._appButton.app.get_id());
try{
file.copy(destFile, 0, null, function(){});
FileUtils.changeModeGFile(destFile, 755);
}catch(e){
global.log(e);
}
this._appButton.toggleMenu();
break;
} case "add_to_favorites": {
AppFavorites.getAppFavorites().addFavorite(this._appButton.app.get_id());
this._appButton.toggleMenu();
break;
} case "remove_from_favorites": {
AppFavorites.getAppFavorites().removeFavorite(this._appButton.app.get_id());
this._appButton.toggleMenu();
break;
} case "uninstall": {
Util.spawnCommandLine("gksu -m '" + _("Please provide your password to uninstall this application") + "' /usr/bin/cinnamon-remove-application '" + this._appButton.app.get_app_info().get_filename() + "'");
this._appButton.appsMenuButton.menu.close();
break;
} case "run_with_nvidia_gpu": {
Util.spawnCommandLine("optirun gtk-launch " + this._appButton.app.get_id());
this._appButton.appsMenuButton.menu.close();
break;
}
}
return false;
}
};
function GenericApplicationButton(appsMenuButton, app) {
this._init(appsMenuButton, app);
}
GenericApplicationButton.prototype = {
__proto__: PopupMenu.PopupBaseMenuItem.prototype,
_init: function(appsMenuButton, app, withMenu) {
this.app = app;
this.appsMenuButton = appsMenuButton;
PopupMenu.PopupBaseMenuItem.prototype._init.call(this, {hover: false});
this.withMenu = withMenu;
if (this.withMenu){
this.menu = new PopupMenu.PopupSubMenu(this.actor);
this.menu.actor.set_style_class_name('menu-context-menu');
this.menu.connect('open-state-changed', Lang.bind(this, this._subMenuOpenStateChanged));
}
},
highlight: function() {
this.actor.add_style_pseudo_class('highlighted');
},
unhighlight: function() {
var app_key = this.app.get_id();
if (app_key == null) {
app_key = this.app.get_name() + ":" + this.app.get_description();
}
this.appsMenuButton._knownApps.push(app_key);
this.actor.remove_style_pseudo_class('highlighted');
},
_onButtonReleaseEvent: function (actor, event) {
if (event.get_button()==1){
this.activate(event);
}
if (event.get_button()==3){
this.activateContextMenus(event);
}
return true;
},
activate: function(event) {
this.unhighlight();
this.app.open_new_window(-1);
this.appsMenuButton.menu.close();
},
activateContextMenus: function(event) {
if (this.withMenu && !this.menu.isOpen)
this.appsMenuButton.closeContextMenus(this.app, true);
this.toggleMenu();
},
closeMenu: function() {
if (this.withMenu) this.menu.close();
},
toggleMenu: function() {
if (!this.withMenu) return;
if (!this.menu.isOpen){
let children = this.menu.box.get_children();
for (var i in children) {
this.menu.box.remove_actor(children[i]);
}
let menuItem;
menuItem = new ApplicationContextMenuItem(this, _("Add to panel"), "add_to_panel", "list-add");
this.menu.addMenuItem(menuItem);
if (USER_DESKTOP_PATH){
menuItem = new ApplicationContextMenuItem(this, _("Add to desktop"), "add_to_desktop", "computer");
this.menu.addMenuItem(menuItem);
}
if (AppFavorites.getAppFavorites().isFavorite(this.app.get_id())){
menuItem = new ApplicationContextMenuItem(this, _("Remove from favorites"), "remove_from_favorites", "starred");
this.menu.addMenuItem(menuItem);
}else{
menuItem = new ApplicationContextMenuItem(this, _("Add to favorites"), "add_to_favorites", "non-starred");
this.menu.addMenuItem(menuItem);
}
if (this.appsMenuButton._canUninstallApps) {
menuItem = new ApplicationContextMenuItem(this, _("Uninstall"), "uninstall", "edit-delete");
this.menu.addMenuItem(menuItem);
}
if (this.appsMenuButton._isBumblebeeInstalled) {
menuItem = new ApplicationContextMenuItem(this, _("Run with NVIDIA GPU"), "run_with_nvidia_gpu", "cpu");
this.menu.addMenuItem(menuItem);
}
}
this.menu.toggle();
},
_subMenuOpenStateChanged: function() {
if (this.menu.isOpen) {
this.appsMenuButton._activeContextMenuParent = this;
this.appsMenuButton._scrollToButton(this.menu);
} else {
this.appsMenuButton._activeContextMenuItem = null;
this.appsMenuButton._activeContextMenuParent = null;
}
},
get _contextIsOpen() {
return this.menu.isOpen;
},
destroy: function() {
this.label.destroy();
if (this.icon) {
this.icon.destroy();
}
if (this.withMenu) {
this.menu.destroy();
}
PopupMenu.PopupBaseMenuItem.prototype.destroy.call(this);
}
};
function TransientButton(appsMenuButton, pathOrCommand) {
this._init(appsMenuButton, pathOrCommand);
}
TransientButton.prototype = {
__proto__: PopupMenu.PopupSubMenuMenuItem.prototype,
_init: function(appsMenuButton, pathOrCommand) {
let displayPath = pathOrCommand;
if (pathOrCommand.charAt(0) == '~') {
pathOrCommand = pathOrCommand.slice(1);
pathOrCommand = GLib.get_home_dir() + pathOrCommand;
}
this.isPath = pathOrCommand.substr(pathOrCommand.length - 1) == '/';
if (this.isPath) {
this.path = pathOrCommand;
} else {
let n = pathOrCommand.lastIndexOf('/');
if (n != 1) {
this.path = pathOrCommand.substr(0, n);
}
}
this.pathOrCommand = pathOrCommand;
this.appsMenuButton = appsMenuButton;
PopupMenu.PopupBaseMenuItem.prototype._init.call(this, {hover: false});
// We need this fake app to help appEnterEvent/appLeaveEvent
// work with our search result.
this.app = {
get_app_info: {
get_filename: function() {
return pathOrCommand;
}
},
get_id: function() {
return -1;
},
get_description: function() {
return this.pathOrCommand;
},
get_name: function() {
return '';
}
};
this.file = Gio.file_new_for_path(this.pathOrCommand);
try {
this.handler = this.file.query_default_handler(null);
let contentType = Gio.content_type_guess(this.pathOrCommand, null);
let themedIcon = Gio.content_type_get_icon(contentType[0]);
this.icon = new St.Icon({gicon: themedIcon, icon_size: APPLICATION_ICON_SIZE, icon_type: St.IconType.FULLCOLOR });
this.actor.set_style_class_name('menu-application-button');
} catch (e) {
this.handler = null;
let iconName = this.isPath ? 'folder' : 'unknown';
this.icon = new St.Icon({icon_name: iconName, icon_size: APPLICATION_ICON_SIZE, icon_type: St.IconType.FULLCOLOR,});
// @todo Would be nice to indicate we don't have a handler for this file.
this.actor.set_style_class_name('menu-application-button');
}
this.addActor(this.icon);
this.label = new St.Label({ text: displayPath, style_class: 'menu-application-button-label' });
this.label.clutter_text.ellipsize = Pango.EllipsizeMode.END;
this.label.set_style(MAX_BUTTON_WIDTH);
this.addActor(this.label);
this.isDraggableApp = false;
},
_onButtonReleaseEvent: function (actor, event) {
if (event.get_button()==1){
this.activate(event);
}
return true;
},
activate: function(event) {
if (this.handler != null) {
this.handler.launch([this.file], null);
} else {
// Try anyway, even though we probably shouldn't.
try {
Util.spawn(['gvfs-open', this.file.get_uri()]);
} catch (e) {
global.logError("No handler available to open " + this.file.get_uri());
}
}
this.appsMenuButton.menu.close();
}
};
function ApplicationButton(appsMenuButton, app, showIcon) {
this._init(appsMenuButton, app, showIcon);
}
ApplicationButton.prototype = {
__proto__: GenericApplicationButton.prototype,
_init: function(appsMenuButton, app, showIcon) {
GenericApplicationButton.prototype._init.call(this, appsMenuButton, app, true);
this.category = [];
this.actor.set_style_class_name('menu-application-button');
if (showIcon) {
this.icon = this.app.create_icon_texture(APPLICATION_ICON_SIZE);
this.addActor(this.icon);
}
this.name = this.app.get_name();
this.label = new St.Label({ text: this.name, style_class: 'menu-application-button-label' });
this.label.clutter_text.ellipsize = Pango.EllipsizeMode.END;
this.label.set_style(MAX_BUTTON_WIDTH);
this.addActor(this.label);
this._draggable = DND.makeDraggable(this.actor);
this._draggable.connect('drag-end', Lang.bind(this, this._onDragEnd));
this.isDraggableApp = true;
this.actor.label_actor = this.label;
if (showIcon) {
this.icon.realize();
}
this.label.realize();
},
get_app_id: function() {
return this.app.get_id();
},
getDragActor: function() {
let favorites = AppFavorites.getAppFavorites().getFavorites();
let nbFavorites = favorites.length;
let monitorHeight = Main.layoutManager.primaryMonitor.height;
let real_size = (0.7 * monitorHeight) / nbFavorites;
let icon_size = 0.6 * real_size / global.ui_scale;
if (icon_size > MAX_FAV_ICON_SIZE)
icon_size = MAX_FAV_ICON_SIZE;
return this.app.create_icon_texture(icon_size);
},
// Returns the original actor that should align with the actor
// we show as the item is being dragged.
getDragActorSource: function() {
return this.actor;
},
_onDragEnd: function() {
this.appsMenuButton.favoritesBox._delegate._clearDragPlaceholder();
}
};
function SearchProviderResultButton(appsMenuButton, provider, result) {
this._init(appsMenuButton, provider, result);
}
SearchProviderResultButton.prototype = {
__proto__: PopupMenu.PopupBaseMenuItem.prototype,
_init: function(appsMenuButton, provider, result) {
this.provider = provider;
this.result = result;
this.appsMenuButton = appsMenuButton;
PopupMenu.PopupBaseMenuItem.prototype._init.call(this, {hover: false});
this.actor.set_style_class_name('menu-application-button');
// We need this fake app to help appEnterEvent/appLeaveEvent
// work with our search result.
this.app = {
get_app_info: {
get_filename: function() {
return result.id;
}
},
get_id: function() {
return -1;
},
get_description: function() {
return result.description;
},
get_name: function() {
return result.label;
}
};
this.icon = null;
if (result.icon){
this.icon = result.icon;
}else if (result.icon_app){
this.icon = result.icon_app.create_icon_texture(APPLICATION_ICON_SIZE);
}else if (result.icon_filename){
this.icon = new St.Icon({gicon: new Gio.FileIcon({file: Gio.file_new_for_path(result.icon_filename)}), icon_size: APPLICATION_ICON_SIZE});
}
if (this.icon){
this.addActor(this.icon);
}
this.label = new St.Label({ text: result.label, style_class: 'menu-application-button-label' });
this.addActor(this.label);
this.isDraggableApp = false;
if (this.icon) {
this.icon.realize();
}
this.label.realize();
},
_onButtonReleaseEvent: function (actor, event) {
if (event.get_button() == 1){
this.activate(event);
}
return true;
},
activate: function(event) {
try{
this.provider.on_result_selected(this.result);
this.appsMenuButton.menu.close();
}
catch(e)
{
global.logError(e);
}
}
};
function PlaceButton(appsMenuButton, place, button_name, showIcon) {
this._init(appsMenuButton, place, button_name, showIcon);
}
PlaceButton.prototype = {
__proto__: PopupMenu.PopupBaseMenuItem.prototype,
_init: function(appsMenuButton, place, button_name, showIcon) {
PopupMenu.PopupBaseMenuItem.prototype._init.call(this, {hover: false});
this.appsMenuButton = appsMenuButton;
this.place = place;
this.button_name = button_name;
this.actor.set_style_class_name('menu-application-button');
this.actor._delegate = this;
this.label = new St.Label({ text: this.button_name, style_class: 'menu-application-button-label' });
this.label.clutter_text.ellipsize = Pango.EllipsizeMode.END;
this.label.set_style(MAX_BUTTON_WIDTH);
if (showIcon) {
this.icon = place.iconFactory(APPLICATION_ICON_SIZE);
if (!this.icon)
this.icon = new St.Icon({icon_name: "folder", icon_size: APPLICATION_ICON_SIZE, icon_type: St.IconType.FULLCOLOR});
if (this.icon)
this.addActor(this.icon);
}
this.addActor(this.label);
if (showIcon)
this.icon.realize();
this.label.realize();
},
_onButtonReleaseEvent: function (actor, event) {
if (event.get_button()==1){
this.place.launch();
this.appsMenuButton.menu.close();
}
},
activate: function(event) {
this.place.launch();
this.appsMenuButton.menu.close();
}
};
function RecentContextMenuItem(recentButton, label, is_default, callback) {
this._init(recentButton, label, is_default, callback);
}
RecentContextMenuItem.prototype = {
__proto__: PopupMenu.PopupBaseMenuItem.prototype,
_init: function (recentButton, label, is_default, callback) {
PopupMenu.PopupBaseMenuItem.prototype._init.call(this, {focusOnHover: false});
this._recentButton = recentButton;
this._callback = callback;
this.label = new St.Label({ text: label });
this.addActor(this.label);
if (is_default)
this.label.style = "font-weight: bold;";
},
activate: function (event) {
this._callback();
return false;
}
};
function RecentButton(appsMenuButton, file, showIcon) {
this._init(appsMenuButton, file, showIcon);
}
RecentButton.prototype = {
__proto__: PopupMenu.PopupBaseMenuItem.prototype,
_init: function(appsMenuButton, file, showIcon) {
PopupMenu.PopupBaseMenuItem.prototype._init.call(this, {hover: false});
this.mimeType = file.mimeType;
this.uri = file.uri;
this.uriDecoded = file.uriDecoded;
this.appsMenuButton = appsMenuButton;
this.button_name = file.name;
this.menu = null;
this.actor.set_style_class_name('menu-application-button');
this.actor._delegate = this;
this.label = new St.Label({ text: this.button_name, style_class: 'menu-application-button-label' });
this.label.clutter_text.ellipsize = Pango.EllipsizeMode.END;
this.label.set_style(MAX_BUTTON_WIDTH);
if (showIcon) {
this.icon = file.createIcon(APPLICATION_ICON_SIZE);
this.addActor(this.icon);
}
this.addActor(this.label);
if (showIcon)
this.icon.realize();
this.label.realize();
},
_onButtonReleaseEvent: function (actor, event) {
if (event.get_button()==1){
this.activate(event);
}
if (event.get_button()==3){
this.activateContextMenus(event);
}
return true;
},
activate: function(event) {
try {
Gio.app_info_launch_default_for_uri(this.uri, global.create_app_launch_context());
this.appsMenuButton.menu.close();
} catch (e) {
let source = new MessageTray.SystemNotificationSource();
Main.messageTray.add(source);
let notification = new MessageTray.Notification(source,
_("This file is no longer available"),
e.message);
notification.setTransient(true);
notification.setUrgency(MessageTray.Urgency.NORMAL);
source.notify(notification);
}
},
activateContextMenus: function(event) {
let menu = this.appsMenuButton.recentContextMenu;
if (menu != null && menu.sourceActor._delegate != this)
this.appsMenuButton.closeContextMenus(this, true);
this.toggleMenu();
},
closeMenu: function() {
this.menu = null;
this.menu.close();
},
hasLocalPath: function(file) {
return file.is_native() || file.get_path() != null;
},
toggleMenu: function() {
if (this.appsMenuButton.recentContextMenu == null) {
this.appsMenuButton.createRecentContextMenu(this.actor);
}
let menu = this.appsMenuButton.recentContextMenu;
this.menu = menu;
if (!menu.isOpen) {
let parent = menu.actor.get_parent();
if (parent != null) {
parent.remove_child(menu.actor);
}
menu.sourceActor = this.actor;
this.actor.get_parent().insert_child_above(menu.actor, this.actor);
let children = menu.box.get_children();
for (var i in children) {
menu.box.remove_actor(children[i]);
}
let menuItem;
menuItem = new PopupMenu.PopupMenuItem(_("Open with"), { reactive: false });
menuItem.actor.style = "font-weight: bold";
menu.addMenuItem(menuItem);
let file = Gio.File.new_for_uri(this.uri);
let default_info = Gio.AppInfo.get_default_for_type(this.mimeType, !this.hasLocalPath(file));
if (default_info) {
menuItem = new RecentContextMenuItem(this,
default_info.get_display_name(),
false,
Lang.bind(this, function() {
default_info.launch([file], null, null);
this.toggleMenu();
this.appsMenuButton.menu.close();
}));
menu.addMenuItem(menuItem);
}
let infos = Gio.AppInfo.get_all_for_type(this.mimeType);
for (let i = 0; i < infos.length; i++) {
let info = infos[i];
file = Gio.File.new_for_uri(this.uri);
if (!this.hasLocalPath(file) && !info.supports_uris())
continue;
if (info.equal(default_info))
continue;
menuItem = new RecentContextMenuItem(this,
info.get_display_name(),
false,
Lang.bind(this, function() {
info.launch([file], null, null);
this.toggleMenu();
this.appsMenuButton.menu.close();
}));
menu.addMenuItem(menuItem);
}
if (GLib.find_program_in_path ("nemo-open-with") != null) {
menuItem = new RecentContextMenuItem(this,
_("Other application..."),
false,
Lang.bind(this, function() {
Util.spawnCommandLine("nemo-open-with " + this.uri);
this.toggleMenu();
this.appsMenuButton.menu.close();
}));
menu.addMenuItem(menuItem);
}
}
this.appsMenuButton.recentContextMenu.toggle();
},
get _contextIsOpen() {
return this.menu != null && this.menu.isOpen;
},
destroy: function() {
this.file = null;
this.appsMenuButton = null;
this.label.destroy();
if (this.icon)
this.icon.destroy();
PopupMenu.PopupBaseMenuItem.prototype.destroy.call(this);
},
};
function NoRecentDocsButton(label, icon, reactive, callback) {
this._init(label, icon, reactive, callback);
}
NoRecentDocsButton.prototype = {
__proto__: PopupMenu.PopupBaseMenuItem.prototype,
_init: function(label, icon, reactive, callback) {
PopupMenu.PopupBaseMenuItem.prototype._init.call(this, {hover: false});
this.actor.set_style_class_name('menu-application-button');
this.actor._delegate = this;
this.button_name = "";
this.label = new St.Label({ text: label, style_class: 'menu-application-button-label' });
this.label.clutter_text.ellipsize = Pango.EllipsizeMode.END;
this.label.set_style(MAX_BUTTON_WIDTH);
if (icon != null) {
let icon_actor = new St.Icon({ icon_name: icon, icon_type: St.IconType.FULLCOLOR, icon_size: APPLICATION_ICON_SIZE});
this.addActor(icon_actor);
}
this.addActor(this.label);
this.label.realize();
this.actor.reactive = reactive;
this.callback = callback;
},
_onButtonReleaseEvent: function (actor, event) {
if (event.get_button() == 1) {
this.callback();
}
}
};
function RecentClearButton(appsMenuButton) {
this._init(appsMenuButton);
}
RecentClearButton.prototype = {
__proto__: PopupMenu.PopupBaseMenuItem.prototype,
_init: function(appsMenuButton) {
PopupMenu.PopupBaseMenuItem.prototype._init.call(this, {hover: false});
this.appsMenuButton = appsMenuButton;
this.actor.set_style_class_name('menu-application-button');
this.button_name = _("Clear list");
this.actor._delegate = this;
this.label = new St.Label({ text: this.button_name, style_class: 'menu-application-button-label' });
this.icon = new St.Icon({ icon_name: 'edit-clear', icon_type: St.IconType.SYMBOLIC, icon_size: APPLICATION_ICON_SIZE });
this.addActor(this.icon);
this.addActor(this.label);
},
_onButtonReleaseEvent: function (actor, event) {
if (event.get_button()==1){
this.activate(event);
}
},
activate: function(event) {
this.appsMenuButton.menu.close();
let GtkRecent = new Gtk.RecentManager();
GtkRecent.purge_items();
}
};
function CategoryButton(app, showIcon) {
this._init(app, showIcon);
}
CategoryButton.prototype = {
__proto__: PopupMenu.PopupBaseMenuItem.prototype,
_init: function(category, showIcon) {
PopupMenu.PopupBaseMenuItem.prototype._init.call(this, {hover: false});
this.actor.set_style_class_name('menu-category-button');
var label;
let icon = null;
if (category) {
if (showIcon) {
icon = category.get_icon();
if (icon && icon.get_names)
this.icon_name = icon.get_names().toString();
else
this.icon_name = "";
} else {
this.icon_name = "";
}
label = category.get_name();
} else
label = _("All Applications");
this.actor._delegate = this;
this.label = new St.Label({ text: label, style_class: 'menu-category-button-label' });
if (category && this.icon_name) {
this.icon = new St.Icon({gicon: icon, icon_size: CATEGORY_ICON_SIZE, icon_type: St.IconType.FULLCOLOR});
if (this.icon) {
this.addActor(this.icon);
this.icon.realize();
}
}
this.actor.accessible_role = Atk.Role.LIST_ITEM;
this.addActor(this.label);
this.label.realize();
}
};
function PlaceCategoryButton(app, showIcon) {
this._init(app, showIcon);
}
PlaceCategoryButton.prototype = {
__proto__: PopupMenu.PopupBaseMenuItem.prototype,
_init: function(category, showIcon) {
PopupMenu.PopupBaseMenuItem.prototype._init.call(this, {hover: false});
this.actor.set_style_class_name('menu-category-button');
this.actor._delegate = this;
this.label = new St.Label({ text: _("Places"), style_class: 'menu-category-button-label' });
if (showIcon) {
this.icon = new St.Icon({icon_name: "folder", icon_size: CATEGORY_ICON_SIZE, icon_type: St.IconType.FULLCOLOR});
this.addActor(this.icon);
this.icon.realize();
} else {
this.icon = null;
}
this.addActor(this.label);
this.label.realize();
}
};
function RecentCategoryButton(app, showIcon) {
this._init(app, showIcon);
}
RecentCategoryButton.prototype = {
__proto__: PopupMenu.PopupBaseMenuItem.prototype,
_init: function(category, showIcon) {
PopupMenu.PopupBaseMenuItem.prototype._init.call(this, {hover: false});
this.actor.set_style_class_name('menu-category-button');
this.actor._delegate = this;
this.label = new St.Label({ text: _("Recent Files"), style_class: 'menu-category-button-label' });
if (showIcon) {
this.icon = new St.Icon({icon_name: "folder-recent", icon_size: CATEGORY_ICON_SIZE, icon_type: St.IconType.FULLCOLOR});
this.addActor(this.icon);
this.icon.realize();
} else {
this.icon = null;
}
this.addActor(this.label);
this.label.realize();
}
};
function FavoritesButton(appsMenuButton, app, nbFavorites) {
this._init(appsMenuButton, app, nbFavorites);
}
FavoritesButton.prototype = {
__proto__: GenericApplicationButton.prototype,
_init: function(appsMenuButton, app, nbFavorites) {
GenericApplicationButton.prototype._init.call(this, appsMenuButton, app);
let monitorHeight = Main.layoutManager.primaryMonitor.height;
let real_size = (0.7 * monitorHeight) / nbFavorites;
let icon_size = 0.6 * real_size / global.ui_scale;
if (icon_size > MAX_FAV_ICON_SIZE)
icon_size = MAX_FAV_ICON_SIZE;
this.actor.style = "padding-top: "+(icon_size / 3)+"px;padding-bottom: "+(icon_size / 3)+"px;";
this.actor.add_style_class_name('menu-favorites-button');
let icon = app.create_icon_texture(icon_size);
this.addActor(icon);
icon.realize();
this._draggable = DND.makeDraggable(this.actor);
this._draggable.connect('drag-end', Lang.bind(this, this._onDragEnd));
this.isDraggableApp = true;
},
_onDragEnd: function() {
this.actor.get_parent()._delegate._clearDragPlaceholder();
},
get_app_id: function() {
return this.app.get_id();
},
getDragActor: function() {
return new Clutter.Clone({ source: this.actor });
},
// Returns the original actor that should align with the actor
// we show as the item is being dragged.
getDragActorSource: function() {
return this.actor;
}
};
function SystemButton(appsMenuButton, icon, nbFavorites, name, desc) {
this._init(appsMenuButton, icon, nbFavorites, name, desc);
}
SystemButton.prototype = {
__proto__: PopupMenu.PopupSubMenuMenuItem.prototype,
_init: function(appsMenuButton, icon, nbFavorites, name, desc) {
PopupMenu.PopupBaseMenuItem.prototype._init.call(this, {hover: false});
this.name = name;
this.desc = desc;
let monitorHeight = Main.layoutManager.primaryMonitor.height;
let real_size = (0.7 * monitorHeight) / nbFavorites;
let icon_size = 0.6 * real_size / global.ui_scale;
if (icon_size > MAX_FAV_ICON_SIZE)
icon_size = MAX_FAV_ICON_SIZE;
this.actor.style = "padding-top: "+(icon_size / 3)+"px;padding-bottom: "+(icon_size / 3)+"px;";
this.actor.add_style_class_name('menu-favorites-button');
let iconObj = new St.Icon({icon_name: icon, icon_size: icon_size, icon_type: St.IconType.FULLCOLOR});
this.addActor(iconObj);
iconObj.realize();
},
_onButtonReleaseEvent: function(actor, event) {
if (event.get_button() == 1) {
this.activate();
}
}
};
function CategoriesApplicationsBox() {
this._init();
}
CategoriesApplicationsBox.prototype = {
_init: function() {
this.actor = new St.BoxLayout();
this.actor._delegate = this;
},
acceptDrop : function(source, actor, x, y, time) {
if (source instanceof FavoritesButton){
source.actor.destroy();
actor.destroy();
AppFavorites.getAppFavorites().removeFavorite(source.app.get_id());
return true;
}
return false;
},
handleDragOver : function(source, actor, x, y, time) {
if (source instanceof FavoritesButton)
return global.set_cursor(Cinnamon.Cursor.POINTING_HAND);
return DND.DragMotionResult.CONTINUE;
}
};
function FavoritesBox() {
this._init();
}
FavoritesBox.prototype = {
_init: function() {
this.actor = new St.BoxLayout({ vertical: true });
this.actor._delegate = this;
this._dragPlaceholder = null;
this._dragPlaceholderPos = -1;
this._animatingPlaceholdersCount = 0;
},
_clearDragPlaceholder: function() {
if (this._dragPlaceholder) {
this._dragPlaceholder.animateOutAndDestroy();
this._dragPlaceholder = null;
this._dragPlaceholderPos = -1;
}
},
handleDragOver : function(source, actor, x, y, time) {
let app = source.app;
let favorites = AppFavorites.getAppFavorites().getFavorites();
let numFavorites = favorites.length;
let favPos = favorites.indexOf(app);
let children = this.actor.get_children();
let numChildren = children.length;
let boxHeight = this.actor.height;
// Keep the placeholder out of the index calculation; assuming that
// the remove target has the same size as "normal" items, we don't
// need to do the same adjustment there.
if (this._dragPlaceholder) {
boxHeight -= this._dragPlaceholder.actor.height;
numChildren--;
}
let pos = Math.round(y * numChildren / boxHeight);
if (pos != this._dragPlaceholderPos && pos <= numFavorites) {
if (this._animatingPlaceholdersCount > 0) {
let appChildren = children.filter(function(actor) {
return (actor._delegate instanceof FavoritesButton);
});
this._dragPlaceholderPos = children.indexOf(appChildren[pos]);
} else {
this._dragPlaceholderPos = pos;
}
// Don't allow positioning before or after self
if (favPos != -1 && (pos == favPos || pos == favPos + 1)) {
if (this._dragPlaceholder) {
this._dragPlaceholder.animateOutAndDestroy();
this._animatingPlaceholdersCount++;
this._dragPlaceholder.actor.connect('destroy',
Lang.bind(this, function() {
this._animatingPlaceholdersCount--;
}));
}
this._dragPlaceholder = null;
return DND.DragMotionResult.CONTINUE;
}
// If the placeholder already exists, we just move
// it, but if we are adding it, expand its size in
// an animation
let fadeIn;
if (this._dragPlaceholder) {
this._dragPlaceholder.actor.destroy();
fadeIn = false;
} else {
fadeIn = true;
}
this._dragPlaceholder = new DND.GenericDragPlaceholderItem();
this._dragPlaceholder.child.set_width (source.actor.height);
this._dragPlaceholder.child.set_height (source.actor.height);
this.actor.insert_child_at_index(this._dragPlaceholder.actor,
this._dragPlaceholderPos);
if (fadeIn)
this._dragPlaceholder.animateIn();
}
let id = app.get_id();
let favoritesMap = AppFavorites.getAppFavorites().getFavoriteMap();
let srcIsFavorite = (id in favoritesMap);
if (!srcIsFavorite)
return DND.DragMotionResult.COPY_DROP;
return DND.DragMotionResult.MOVE_DROP;
},
// Draggable target interface
acceptDrop : function(source, actor, x, y, time) {
let app = source.app;
let id = app.get_id();
let favorites = AppFavorites.getAppFavorites().getFavoriteMap();
let srcIsFavorite = (id in favorites);
let favPos = 0;
let children = this.actor.get_children();
for (let i = 0; i < this._dragPlaceholderPos; i++) {
if (this._dragPlaceholder &&
children[i] == this._dragPlaceholder.actor)
continue;
if (!(children[i]._delegate instanceof FavoritesButton)) continue;
let childId = children[i]._delegate.app.get_id();
if (childId == id)
continue;
if (childId in favorites)
favPos++;
}
Meta.later_add(Meta.LaterType.BEFORE_REDRAW, Lang.bind(this,
function () {
let appFavorites = AppFavorites.getAppFavorites();
if (srcIsFavorite)
appFavorites.moveFavoriteToPos(id, favPos);
else
appFavorites.addFavoriteAtPos(id, favPos);
return false;
}));
return true;
}
};
function MyApplet(orientation, panel_height, instance_id) {
this._init(orientation, panel_height, instance_id);
}
MyApplet.prototype = {
__proto__: Applet.TextIconApplet.prototype,
_init: function(orientation, panel_height, instance_id) {
Applet.TextIconApplet.prototype._init.call(this, orientation, panel_height, instance_id);
this.setAllowedLayout(Applet.AllowedLayout.BOTH);
this.initial_load_done = false;
this.set_applet_tooltip(_("Menu"));
this.menuManager = new PopupMenu.PopupMenuManager(this);
this.menu = new Applet.AppletPopupMenu(this, orientation);
this.menuManager.addMenu(this.menu);
this.orientation = orientation;
this.actor.connect('key-press-event', Lang.bind(this, this._onSourceKeyPress));
this.settings = new Settings.AppletSettings(this, "menu@cinnamon.org", instance_id);
this.settings.bind("show-places", "showPlaces", this._refreshBelowApps);
this._appletEnterEventId = 0;
this._appletLeaveEventId = 0;
this._appletHoverDelayId = 0;
this.settings.bind("hover-delay", "hover_delay_ms", this._updateActivateOnHover);
this.settings.bind("activate-on-hover", "activateOnHover", this._updateActivateOnHover);
this._updateActivateOnHover();
this.menu.setCustomStyleClass('menu-background');
this.menu.connect('open-state-changed', Lang.bind(this, this._onOpenStateChanged));
this.settings.bind("menu-icon-custom", "menuIconCustom", this._updateIconAndLabel);
this.settings.bind("menu-icon", "menuIcon", this._updateIconAndLabel);
this.settings.bind("menu-label", "menuLabel", this._updateIconAndLabel);
this.settings.bind("overlay-key", "overlayKey", this._updateKeybinding);
this.settings.bind("show-category-icons", "showCategoryIcons", this._refreshAll);
this.settings.bind("show-application-icons", "showApplicationIcons", this._refreshAll);
this.settings.bind("favbox-show", "favBoxShow", this._favboxtoggle);
this.settings.bind("enable-animation", "enableAnimation", null);
this._updateKeybinding();
Main.themeManager.connect("theme-set", Lang.bind(this, this._updateIconAndLabel));
this._updateIconAndLabel();
this._searchInactiveIcon = new St.Icon({ style_class: 'menu-search-entry-icon',
icon_name: 'edit-find',
icon_type: St.IconType.SYMBOLIC });
this._searchActiveIcon = new St.Icon({ style_class: 'menu-search-entry-icon',
icon_name: 'edit-clear',
icon_type: St.IconType.SYMBOLIC });
this._searchIconClickedId = 0;
this._applicationsButtons = [];
this._applicationsButtonFromApp = {};
this._favoritesButtons = [];
this._placesButtons = [];
this._transientButtons = [];
this.recentButton = null;
this._recentButtons = [];
this._categoryButtons = [];
this._searchProviderButtons = [];
this._selectedItemIndex = null;
this._previousSelectedActor = null;
this._previousVisibleIndex = null;
this._previousTreeSelectedActor = null;
this._activeContainer = null;
this._activeActor = null;
this._applicationsBoxWidth = 0;
this.menuIsOpening = false;
this._knownApps = []; // Used to keep track of apps that are already installed, so we can highlight newly installed ones
this._appsWereRefreshed = false;
this._canUninstallApps = GLib.file_test("/usr/bin/cinnamon-remove-application", GLib.FileTest.EXISTS);
this._isBumblebeeInstalled = GLib.file_test("/usr/bin/optirun", GLib.FileTest.EXISTS);
this.RecentManager = new DocInfo.DocManager();
this.privacy_settings = new Gio.Settings( {schema_id: PRIVACY_SCHEMA} );
this.noRecentDocuments = true;
this._activeContextMenuParent = null;
this._activeContextMenuItem = null;
this._display();
appsys.connect('installed-changed', Lang.bind(this, this.onAppSysChanged));
AppFavorites.getAppFavorites().connect('changed', Lang.bind(this, this._refreshFavs));
Main.placesManager.connect('places-updated', Lang.bind(this, this._refreshBelowApps));
this.RecentManager.connect('changed', Lang.bind(this, this._refreshRecent));
this.privacy_settings.connect("changed::" + REMEMBER_RECENT_KEY, Lang.bind(this, this._refreshRecent));
this._fileFolderAccessActive = false;
this._pathCompleter = new Gio.FilenameCompleter();
this._pathCompleter.set_dirs_only(false);
this.lastAcResults = [];
this.settings.bind("search-filesystem", "searchFilesystem");
this.refreshing = false; // used as a flag to know if we're currently refreshing (so we don't do it more than once concurrently)
this.recentContextMenu = null;
this.appsContextMenu = null;
this.lastSelectedCategory = null;
// We shouldn't need to call refreshAll() here... since we get a "icon-theme-changed" signal when CSD starts.
// The reason we do is in case the Cinnamon icon theme is the same as the one specificed in GTK itself (in .config)
// In that particular case we get no signal at all.
this._refreshAll();
this.set_show_label_in_vertical_panels(false);
},
_updateKeybinding: function() {
Main.keybindingManager.addHotKey("overlay-key-" + this.instance_id, this.overlayKey, Lang.bind(this, function() {
if (!Main.overview.visible && !Main.expo.visible)
this.menu.toggle_with_options(this.enableAnimation);
}));
},
onAppSysChanged: function() {
if (this.refreshing == false) {
this.refreshing = true;
Mainloop.timeout_add_seconds(1, Lang.bind(this, this._refreshAll));
}
},
_refreshAll: function() {
try {
this._refreshApps();
this._refreshFavs();
this._refreshPlaces();
this._refreshRecent();
this._resizeApplicationsBox();
}
catch (exception) {
global.log(exception);
}
this.refreshing = false;
},
_refreshBelowApps: function() {
this._refreshPlaces();
this._refreshRecent();
this._resizeApplicationsBox();
},
openMenu: function() {
if (!this._applet_context_menu.isOpen) {
this.menu.open(this.enableAnimation);
}
},
_clearDelayCallbacks: function() {
if (this._appletHoverDelayId > 0) {
Mainloop.source_remove(this._appletHoverDelayId);
this._appletHoverDelayId = 0;
}
if (this._appletLeaveEventId > 0) {
this.actor.disconnect(this._appletLeaveEventId);
this._appletLeaveEventId = 0;
}
return false;
},
_updateActivateOnHover: function() {
if (this._appletEnterEventId > 0) {
this.actor.disconnect(this._appletEnterEventId);
this._appletEnterEventId = 0;
}
this._clearDelayCallbacks();
if (this.activateOnHover) {
this._appletEnterEventId = this.actor.connect('enter-event', Lang.bind(this, function() {
if (this.hover_delay_ms > 0) {
this._appletLeaveEventId = this.actor.connect('leave-event', Lang.bind(this, this._clearDelayCallbacks));
this._appletHoverDelayId = Mainloop.timeout_add(this.hover_delay_ms,
Lang.bind(this, function() {
this.openMenu();
this._clearDelayCallbacks();
}));
} else {
this.openMenu();
}
}));
}
},
_recalc_height: function() {
let scrollBoxHeight = (this.leftBox.get_allocation_box().y2-this.leftBox.get_allocation_box().y1) -
(this.searchBox.get_allocation_box().y2-this.searchBox.get_allocation_box().y1);
this.applicationsScrollBox.style = "height: "+scrollBoxHeight / global.ui_scale +"px;";
},
on_orientation_changed: function (orientation) {
this.orientation = orientation;
this.menu.destroy();
this.menu = new Applet.AppletPopupMenu(this, orientation);
this.menuManager.addMenu(this.menu);
this.menu.setCustomStyleClass('menu-background');
this.menu.connect('open-state-changed', Lang.bind(this, this._onOpenStateChanged));
this._display();
if (this.initial_load_done)
this._refreshAll();
this._updateIconAndLabel();
},
on_applet_added_to_panel: function () {
this.initial_load_done = true;
},
on_applet_removed_from_panel: function () {
Main.keybindingManager.removeHotKey("overlay-key-" + this.instance_id);
},
_launch_editor: function() {
Util.spawnCommandLine("cinnamon-menu-editor");
},
on_applet_clicked: function(event) {
this.menu.toggle_with_options(this.enableAnimation);
},
_onSourceKeyPress: function(actor, event) {
let symbol = event.get_key_symbol();
if (symbol == Clutter.KEY_space || symbol == Clutter.KEY_Return) {
this.menu.toggle();
return true;
} else if (symbol == Clutter.KEY_Escape && this.menu.isOpen) {
this.menu.close();
return true;
} else if (symbol == Clutter.KEY_Down) {
if (!this.menu.isOpen)
this.menu.toggle();
this.menu.actor.navigate_focus(this.actor, Gtk.DirectionType.DOWN, false);
return true;
} else
return false;
},
_onOpenStateChanged: function(menu, open) {
if (open) {
if (this._appletEnterEventId > 0) {
this.actor.handler_block(this._appletEnterEventId);
}
this.menuIsOpening = true;
this.actor.add_style_pseudo_class('active');
global.stage.set_key_focus(this.searchEntry);
this._selectedItemIndex = null;
this._activeContainer = null;
this._activeActor = null;
this.lastSelectedCategory = null;
let n = Math.min(this._applicationsButtons.length,
INITIAL_BUTTON_LOAD);
for (let i = 0; i < n; i++) {
this._applicationsButtons[i].actor.show();
}
this._allAppsCategoryButton.actor.style_class = "menu-category-button-selected";
Mainloop.idle_add(Lang.bind(this, this._initial_cat_selection, n));
} else {
if (this._appletEnterEventId > 0) {
this.actor.handler_unblock(this._appletEnterEventId);
}
this.actor.remove_style_pseudo_class('active');
if (this.searchActive) {
this.resetSearch();
}
this.selectedAppTitle.set_text("");
this.selectedAppDescription.set_text("");
this._previousTreeSelectedActor = null;
this._previousSelectedActor = null;
this.closeContextMenus(null, false);
this._clearAllSelections(true);
this.destroyVectorBox();
}
},
_initial_cat_selection: function (start_index) {
let n = this._applicationsButtons.length;
for (let i = start_index; i < n; i++) {
this._applicationsButtons[i].actor.show();
}
},
destroy: function() {
this.actor._delegate = null;
this.menu.destroy();
this.actor.destroy();
this.emit('destroy');
},
_set_default_menu_icon: function() {
let path = global.datadir + "/theme/menu.svg";
if (GLib.file_test(path, GLib.FileTest.EXISTS)) {
this.set_applet_icon_path(path);
return;
}
path = global.datadir + "/theme/menu-symbolic.svg";
if (GLib.file_test(path, GLib.FileTest.EXISTS)) {
this.set_applet_icon_symbolic_path(path);
return;
}
/* If all else fails, this will yield no icon */
this.set_applet_icon_path("");
},
_favboxtoggle: function() {
if (!this.favBoxShow) {
this.leftPane.hide();
} else {
this.leftPane.show();
}
},
_updateIconAndLabel: function(){
try {
if (this.menuIconCustom) {
if (this.menuIcon == "") {
this.set_applet_icon_name("");
} else if (GLib.path_is_absolute(this.menuIcon) && GLib.file_test(this.menuIcon, GLib.FileTest.EXISTS)) {
if (this.menuIcon.search("-symbolic") != -1)
this.set_applet_icon_symbolic_path(this.menuIcon);
else
this.set_applet_icon_path(this.menuIcon);
} else if (Gtk.IconTheme.get_default().has_icon(this.menuIcon)) {
if (this.menuIcon.search("-symbolic") != -1)
this.set_applet_icon_symbolic_name(this.menuIcon);
else
this.set_applet_icon_name(this.menuIcon);
}
} else {
this._set_default_menu_icon();
}
} catch(e) {
global.logWarning("Could not load icon file \""+this.menuIcon+"\" for menu button");
}
if (this.menuIconCustom && this.menuIcon == "") {
this._applet_icon_box.hide();
} else {
this._applet_icon_box.show();
}
if (this.orientation == St.Side.LEFT || this.orientation == St.Side.RIGHT) // no menu label if in a vertical panel
{
this.set_applet_label("");
}
else {
if (this.menuLabel != "")
this.set_applet_label(_(this.menuLabel));
else
this.set_applet_label("");
}
},
_recentMenuOpenStateChanged: function(recentContextMenu) {
if (recentContextMenu.isOpen) {
this._activeContextMenuParent = recentContextMenu.sourceActor._delegate;
this._scrollToButton(recentContextMenu);
} else {
this._activeContextMenuItem = null;
this._activeContextMenuParent = null;
for (let item in this._recentButtons) {
if (this._recentButtons[item].menu) {
this._recentButtons[item].menu = null;
}
}
}
},
createRecentContextMenu: function(actor) {
let menu = new PopupMenu.PopupSubMenu(actor);
menu.actor.set_style_class_name('menu-context-menu');
menu.connect('open-state-changed', Lang.bind(this, this._recentMenuOpenStateChanged));
this.recentContextMenu = menu;
},
_navigateContextMenu: function(button, symbol, ctrlKey) {
if (symbol === Clutter.KEY_Menu || symbol === Clutter.Escape ||
(ctrlKey && (symbol === Clutter.KEY_Return || symbol === Clutter.KP_Enter))) {
button.activateContextMenus();
return;
}
let minIndex = 0;
let goUp = symbol === Clutter.KEY_Up;
let nextActive = null;
let menuItems = button.menu._getMenuItems(); // The context menu items
// The first context menu item of a RecentButton is used just as a label.
// So remove it from the iteration.
if (button && button instanceof RecentButton) {
minIndex = 1;
}
let menuItemsLength = menuItems.length;
switch (symbol) {
case Clutter.KEY_Page_Up:
this._activeContextMenuItem = menuItems[minIndex];
this._activeContextMenuItem.setActive(true);
return;
case Clutter.KEY_Page_Down:
this._activeContextMenuItem = menuItems[menuItemsLength - 1];
this._activeContextMenuItem.setActive(true);
return;
}
if (!this._activeContextMenuItem) {
if (symbol === Clutter.KEY_Return || symbol === Clutter.KP_Enter) {
button.activate();
} else {
this._activeContextMenuItem = menuItems[goUp ? menuItemsLength - 1 : minIndex];
this._activeContextMenuItem.setActive(true);
}
return;
} else if (this._activeContextMenuItem &&
(symbol === Clutter.KEY_Return || symbol === Clutter.KP_Enter)) {
this._activeContextMenuItem.activate();
this._activeContextMenuItem = null;
return;
}
for (let i = minIndex; i < menuItemsLength; i++) {
if (menuItems[i] === this._activeContextMenuItem) {
let nextActiveIndex = (goUp ? i - 1 : i + 1);
if (nextActiveIndex < minIndex) {
nextActiveIndex = menuItemsLength - 1;
} else if (nextActiveIndex > menuItemsLength - 1) {
nextActiveIndex = minIndex;
}
nextActive = menuItems[nextActiveIndex];
nextActive.setActive(true);
this._activeContextMenuItem = nextActive;
break;
}
}
},
_onMenuKeyPress: function(actor, event) {
let symbol = event.get_key_symbol();
let item_actor;
let index = 0;
this.appBoxIter.reloadVisible();
this.catBoxIter.reloadVisible();
this.favBoxIter.reloadVisible();
let keyCode = event.get_key_code();
let modifierState = Cinnamon.get_event_state(event);
/* check for a keybinding and quit early, otherwise we get a double hit
of the keybinding callback */
let action = global.display.get_keybinding_action(keyCode, modifierState);
if (action == Meta.KeyBindingAction.CUSTOM) {
return true;
}
index = this._selectedItemIndex;
let ctrlKey = modifierState & Clutter.ModifierType.CONTROL_MASK;
// If a context menu is open, hijack keyboard navigation and concentrate on the context menu.
if (this._activeContextMenuParent && this._activeContextMenuParent._contextIsOpen &&
this._activeContainer === this.applicationsBox &&
(this._activeContextMenuParent instanceof ApplicationButton ||
this._activeContextMenuParent instanceof RecentButton)) {
let continueNavigation = false;
switch (symbol) {
case Clutter.KEY_Up:
case Clutter.KEY_Down:
case Clutter.KEY_Return:
case Clutter.KP_Enter:
case Clutter.KEY_Menu:
case Clutter.KEY_Page_Up:
case Clutter.KEY_Page_Down:
case Clutter.Escape:
this._navigateContextMenu(this._activeContextMenuParent, symbol, ctrlKey);
break;
case Clutter.KEY_Right:
case Clutter.KEY_Left:
case Clutter.Tab:
case Clutter.ISO_Left_Tab:
continueNavigation = true;
break;
}
if (!continueNavigation)
return true;
}
let navigationKey = true;
let whichWay = "none";
switch (symbol) {
case Clutter.KEY_Up:
whichWay = "up";
if (this._activeContainer === this.favoritesBox && ctrlKey &&
(this.favoritesBox.get_child_at_index(index))._delegate instanceof FavoritesButton)
navigationKey = false;
break;
case Clutter.KEY_Down:
whichWay = "down";
if (this._activeContainer === this.favoritesBox && ctrlKey &&
(this.favoritesBox.get_child_at_index(index))._delegate instanceof FavoritesButton)
navigationKey = false;
break;
case Clutter.KEY_Page_Up:
whichWay = "top"; break;
case Clutter.KEY_Page_Down:
whichWay = "bottom"; break;
case Clutter.KEY_Right:
if (!this.searchActive)
whichWay = "right";
if (this._activeContainer === this.applicationsBox)
whichWay = "none";
else if (this._activeContainer === this.categoriesBox && this.noRecentDocuments &&
(this.categoriesBox.get_child_at_index(index))._delegate instanceof RecentCategoryButton)
whichWay = "none";
break;
case Clutter.KEY_Left:
if (!this.searchActive)
whichWay = "left";
if (this._activeContainer === this.favoritesBox)
whichWay = "none";
else if (!this.favBoxShow &&
(this._activeContainer === this.categoriesBox || this._activeContainer === null))
whichWay = "none";
break;
case Clutter.Tab:
if (!this.searchActive)
whichWay = "right";
else
navigationKey = false;
break;
case Clutter.ISO_Left_Tab:
if (!this.searchActive)
whichWay = "left";
else
navigationKey = false;
break;
default:
navigationKey = false;
}
if (navigationKey) {
switch (this._activeContainer) {
case null:
switch (whichWay) {
case "up":
this._activeContainer = this.categoriesBox;
item_actor = this.catBoxIter.getLastVisible();
this._scrollToButton(this.appBoxIter.getFirstVisible()._delegate);
break;
case "down":
this._activeContainer = this.categoriesBox;
item_actor = this.catBoxIter.getFirstVisible();
item_actor = this.catBoxIter.getNextVisible(item_actor);
this._scrollToButton(this.appBoxIter.getFirstVisible()._delegate);
break;
case "right":
this._activeContainer = this.applicationsBox;
item_actor = this.appBoxIter.getFirstVisible();
this._scrollToButton(item_actor._delegate);
break;
case "left":
if (this.favBoxShow) {
this._activeContainer = this.favoritesBox;
item_actor = this.favBoxIter.getFirstVisible();
} else {
this._activeContainer = this.applicationsBox;
item_actor = this.appBoxIter.getFirstVisible();
this._scrollToButton(item_actor._delegate);
}
break;
case "top":
this._activeContainer = this.categoriesBox;
item_actor = this.catBoxIter.getFirstVisible();
this._scrollToButton(this.appBoxIter.getFirstVisible()._delegate);
break;
case "bottom":
this._activeContainer = this.categoriesBox;
item_actor = this.catBoxIter.getLastVisible();
this._scrollToButton(this.appBoxIter.getFirstVisible()._delegate);
break;
}
break;
case this.categoriesBox:
switch (whichWay) {
case "up":
this._previousTreeSelectedActor = this.categoriesBox.get_child_at_index(index);
this._previousTreeSelectedActor._delegate.isHovered = false;
item_actor = this.catBoxIter.getPrevVisible(this._activeActor);
this._scrollToButton(this.appBoxIter.getFirstVisible()._delegate);
break;
case "down":
this._previousTreeSelectedActor = this.categoriesBox.get_child_at_index(index);
this._previousTreeSelectedActor._delegate.isHovered = false;
item_actor = this.catBoxIter.getNextVisible(this._activeActor);
this._scrollToButton(this.appBoxIter.getFirstVisible()._delegate);
break;
case "right":
if ((this.categoriesBox.get_child_at_index(index))._delegate instanceof RecentCategoryButton &&
this.noRecentDocuments) {
if(this.favBoxShow) {
this._previousSelectedActor = this.categoriesBox.get_child_at_index(index);
item_actor = this.favBoxIter.getFirstVisible();
} else {
item_actor = this.categoriesBox.get_child_at_index(index);
}
}
else {
item_actor = (this._previousVisibleIndex != null) ?
this.appBoxIter.getVisibleItem(this._previousVisibleIndex) :
this.appBoxIter.getFirstVisible();
}
break;
case "left":
if(this.favBoxShow) {
this._previousSelectedActor = this.categoriesBox.get_child_at_index(index);
item_actor = this.favBoxIter.getFirstVisible();
} else {
if ((this.categoriesBox.get_child_at_index(index))._delegate instanceof RecentCategoryButton &&
this.noRecentDocuments) {
item_actor = this.categoriesBox.get_child_at_index(index);
} else {
item_actor = (this._previousVisibleIndex != null) ?
this.appBoxIter.getVisibleItem(this._previousVisibleIndex) :
this.appBoxIter.getFirstVisible();
}
}
break;
case "top":
this._previousTreeSelectedActor = this.categoriesBox.get_child_at_index(index);
this._previousTreeSelectedActor._delegate.isHovered = false;
item_actor = this.catBoxIter.getFirstVisible();
this._scrollToButton(this.appBoxIter.getFirstVisible()._delegate);
break;
case "bottom":
this._previousTreeSelectedActor = this.categoriesBox.get_child_at_index(index);
this._previousTreeSelectedActor._delegate.isHovered = false;
item_actor = this.catBoxIter.getLastVisible();
this._scrollToButton(this.appBoxIter.getFirstVisible()._delegate);
break;
}
break;
case this.applicationsBox:
switch (whichWay) {
case "up":
this._previousSelectedActor = this.applicationsBox.get_child_at_index(index);
item_actor = this.appBoxIter.getPrevVisible(this._previousSelectedActor);
this._previousVisibleIndex = this.appBoxIter.getVisibleIndex(item_actor);
this._scrollToButton(item_actor._delegate);
break;
case "down":
this._previousSelectedActor = this.applicationsBox.get_child_at_index(index);
item_actor = this.appBoxIter.getNextVisible(this._previousSelectedActor);
this._previousVisibleIndex = this.appBoxIter.getVisibleIndex(item_actor);
this._scrollToButton(item_actor._delegate);
break;
case "right":
this._previousSelectedActor = this.applicationsBox.get_child_at_index(index);
item_actor = (this._previousTreeSelectedActor != null) ?
this._previousTreeSelectedActor :
this.catBoxIter.getFirstVisible();
this._previousTreeSelectedActor = item_actor;
index = item_actor.get_parent()._vis_iter.getAbsoluteIndexOfChild(item_actor);
if (this.favBoxShow) {
item_actor._delegate.emit('enter-event');
this._previousSelectedActor = this.categoriesBox.get_child_at_index(index);
item_actor = this.favBoxIter.getFirstVisible();
}
break;
case "left":
this._previousSelectedActor = this.applicationsBox.get_child_at_index(index);
item_actor = (this._previousTreeSelectedActor != null) ?
this._previousTreeSelectedActor :
this.catBoxIter.getFirstVisible();
this._previousTreeSelectedActor = item_actor;
break;
case "top":
item_actor = this.appBoxIter.getFirstVisible();
this._previousVisibleIndex = this.appBoxIter.getVisibleIndex(item_actor);
this._scrollToButton(item_actor._delegate);
break;
case "bottom":
item_actor = this.appBoxIter.getLastVisible();
this._previousVisibleIndex = this.appBoxIter.getVisibleIndex(item_actor);
this._scrollToButton(item_actor._delegate);
break;
}
break;
case this.favoritesBox:
switch (whichWay) {
case "up":
this._previousSelectedActor = this.favoritesBox.get_child_at_index(index);
item_actor = this.favBoxIter.getPrevVisible(this._previousSelectedActor);
break;
case "down":
this._previousSelectedActor = this.favoritesBox.get_child_at_index(index);
item_actor = this.favBoxIter.getNextVisible(this._previousSelectedActor);
break;
case "right":
item_actor = (this._previousTreeSelectedActor != null) ?
this._previousTreeSelectedActor :
this.catBoxIter.getFirstVisible();
this._previousTreeSelectedActor = item_actor;
break;
case "left":
item_actor = (this._previousTreeSelectedActor != null) ?
this._previousTreeSelectedActor :
this.catBoxIter.getFirstVisible();
this._previousTreeSelectedActor = item_actor;
index = item_actor.get_parent()._vis_iter.getAbsoluteIndexOfChild(item_actor);
item_actor._delegate.emit('enter-event');
item_actor = (this._previousVisibleIndex != null) ?
this.appBoxIter.getVisibleItem(this._previousVisibleIndex) :
this.appBoxIter.getFirstVisible();
break;
case "top":
item_actor = this.favBoxIter.getFirstVisible();
break;
case "bottom":
item_actor = this.favBoxIter.getLastVisible();
break;
}
break;
default:
break;
}
if (!item_actor)
return false;
index = item_actor.get_parent()._vis_iter.getAbsoluteIndexOfChild(item_actor);
} else {
if (this._activeContainer !== this.categoriesBox && (symbol === Clutter.KEY_Return || symbol === Clutter.KP_Enter)) {
if (!ctrlKey) {
item_actor = this._activeContainer.get_child_at_index(this._selectedItemIndex);
item_actor._delegate.activate();
} else if (ctrlKey && this._activeContainer === this.applicationsBox) {
item_actor = this.applicationsBox.get_child_at_index(this._selectedItemIndex);
if (item_actor._delegate instanceof ApplicationButton || item_actor._delegate instanceof RecentButton)
item_actor._delegate.activateContextMenus();
}
return true;
} else if (this._activeContainer === this.applicationsBox && symbol === Clutter.KEY_Menu) {
item_actor = this.applicationsBox.get_child_at_index(this._selectedItemIndex);
if (item_actor._delegate instanceof ApplicationButton || item_actor._delegate instanceof RecentButton)
item_actor._delegate.activateContextMenus();
return true;
} else if (this._activeContainer === this.favoritesBox && symbol === Clutter.Delete) {
item_actor = this.favoritesBox.get_child_at_index(this._selectedItemIndex);
if (item_actor._delegate instanceof FavoritesButton) {
let favorites = AppFavorites.getAppFavorites().getFavorites();
let numFavorites = favorites.length;
AppFavorites.getAppFavorites().removeFavorite(item_actor._delegate.app.get_id());
item_actor._delegate.toggleMenu();
if (this._selectedItemIndex == (numFavorites-1))
item_actor = this.favoritesBox.get_child_at_index(this._selectedItemIndex-1);
else
item_actor = this.favoritesBox.get_child_at_index(this._selectedItemIndex);
}
} else if (this._activeContainer === this.favoritesBox &&
(symbol === Clutter.KEY_Down || symbol === Clutter.KEY_Up) && ctrlKey &&
(this.favoritesBox.get_child_at_index(index))._delegate instanceof FavoritesButton) {
item_actor = this.favoritesBox.get_child_at_index(this._selectedItemIndex);
let id = item_actor._delegate.app.get_id();
let appFavorites = AppFavorites.getAppFavorites();
let favorites = appFavorites.getFavorites();
let numFavorites = favorites.length;
let favPos = 0;
if (this._selectedItemIndex == (numFavorites-1) && symbol === Clutter.KEY_Down)
favPos = 0;
else if (this._selectedItemIndex == 0 && symbol === Clutter.KEY_Up)
favPos = numFavorites-1;
else if (symbol === Clutter.KEY_Down)
favPos = this._selectedItemIndex + 1;
else
favPos = this._selectedItemIndex - 1;
appFavorites.moveFavoriteToPos(id, favPos);
item_actor = this.favoritesBox.get_child_at_index(favPos);
} else if (this.searchFilesystem && (this._fileFolderAccessActive || symbol === Clutter.slash)) {
if (symbol === Clutter.Return || symbol === Clutter.KP_Enter) {
if (this._run(this.searchEntry.get_text())) {
this.menu.close();
}
return true;
}
if (symbol === Clutter.Escape) {
this.searchEntry.set_text('');
this._fileFolderAccessActive = false;
}
if (symbol === Clutter.slash) {
// Need preload data before get completion. GFilenameCompleter load content of parent directory.
// Parent directory for /usr/include/ is /usr/. So need to add fake name('a').
let text = this.searchEntry.get_text().concat('/a');
let prefix;
if (text.lastIndexOf(' ') == -1)
prefix = text;
else
prefix = text.substr(text.lastIndexOf(' ') + 1);
this._getCompletion(prefix);
return false;
}
if (symbol === Clutter.Tab) {
let text = actor.get_text();
let prefix;
if (text.lastIndexOf(' ') == -1)
prefix = text;
else
prefix = text.substr(text.lastIndexOf(' ') + 1);
let postfix = this._getCompletion(prefix);
if (postfix != null && postfix.length > 0) {
actor.insert_text(postfix, -1);
actor.set_cursor_position(text.length + postfix.length);
if (postfix[postfix.length - 1] == '/')
this._getCompletion(text + postfix + 'a');
}
return true;
}
if (symbol === Clutter.ISO_Left_Tab) {
return true;
}
return false;
} else if (symbol === Clutter.Tab || symbol === Clutter.ISO_Left_Tab) {
return true;
} else {
return false;
}
}
this.selectedAppTitle.set_text("");
this.selectedAppDescription.set_text("");
this._selectedItemIndex = index;
if (!item_actor || item_actor === this.searchEntry) {
return false;
}
item_actor._delegate.emit('enter-event');
return true;
},
_addEnterEvent: function(button, callback) {
let _callback = Lang.bind(this, function() {
let parent = button.actor.get_parent();
if (this._activeContainer === this.categoriesBox && parent !== this._activeContainer) {
this._previousTreeSelectedActor = this._activeActor;
this._previousSelectedActor = null;
}
if (this._previousTreeSelectedActor && this._activeContainer !== this.categoriesBox &&
parent !== this._activeContainer && button !== this._previousTreeSelectedActor && !this.searchActive) {
this._previousTreeSelectedActor.style_class = "menu-category-button";
}
if (parent != this._activeContainer) {
parent._vis_iter.reloadVisible();
}
let _maybePreviousActor = this._activeActor;
if (_maybePreviousActor && this._activeContainer !== this.categoriesBox) {
this._previousSelectedActor = _maybePreviousActor;
this._clearPrevSelection();
}
if (parent === this.categoriesBox && !this.searchActive) {
this._previousSelectedActor = _maybePreviousActor;
this._clearPrevCatSelection();
}
this._activeContainer = parent;
this._activeActor = button.actor;
this._selectedItemIndex = this._activeContainer._vis_iter.getAbsoluteIndexOfChild(this._activeActor);
callback();
});
button.connect('enter-event', _callback);
button.actor.connect('enter-event', _callback);
},
_clearPrevSelection: function(actor) {
if (this._previousSelectedActor && this._previousSelectedActor != actor) {
if (this._previousSelectedActor._delegate instanceof ApplicationButton ||
this._previousSelectedActor._delegate instanceof RecentButton ||
this._previousSelectedActor._delegate instanceof SearchProviderResultButton ||
this._previousSelectedActor._delegate instanceof PlaceButton ||
this._previousSelectedActor._delegate instanceof RecentClearButton ||
this._previousSelectedActor._delegate instanceof TransientButton)
this._previousSelectedActor.style_class = "menu-application-button";
else if (this._previousSelectedActor._delegate instanceof FavoritesButton ||
this._previousSelectedActor._delegate instanceof SystemButton)
this._previousSelectedActor.remove_style_pseudo_class("hover");
}
},
_clearPrevCatSelection: function(actor) {
if (this._previousTreeSelectedActor && this._previousTreeSelectedActor != actor) {
this._previousTreeSelectedActor.style_class = "menu-category-button";
if (this._previousTreeSelectedActor._delegate) {
this._previousTreeSelectedActor._delegate.emit('leave-event');
}
if (actor !== undefined) {
this._previousVisibleIndex = null;
this._previousTreeSelectedActor = actor;
}
} else {
this.categoriesBox.get_children().forEach(Lang.bind(this, function (child) {
child.style_class = "menu-category-button";
}));
}
},
/*
* The vectorBox overlays the the categoriesBox to aid in navigation from categories to apps
* by preventing misselections. It is set to the same size as the categoriesOverlayBox and
* categoriesBox.
*
* The actor is a quadrilateral that we turn into a triangle by setting the A and B vertices to
* the same position. The size and origin of the vectorBox are calculated in _getVectorInfo().
* Using those properties, the bounding box is sized as (w, h) and the triangle is defined as
* follows:
* _____
* | /|D
* | / | AB: (mx, my)
* | A/ | C: (w, h)
* | B\ | D: (w, 0)
* | \ |
* |____\|C
*/
_getVectorInfo: function() {
let [mx, my, mask] = global.get_pointer();
let [bx, by] = this.categoriesOverlayBox.get_transformed_position();
let [bw, bh] = this.categoriesOverlayBox.get_transformed_size();
let xformed_mx = mx - bx;
let xformed_my = my - by;
if (xformed_mx < 0 || xformed_mx > bw || xformed_my < 0 || xformed_my > bh) {
return null;
}
return { mx: xformed_mx,
my: xformed_my,
w: bw,
h: bh };
},
makeVectorBox: function(actor) {
this.destroyVectorBox(actor);
let vi = this._getVectorInfo();
if (!vi) {
return;
}
this.vectorBox = new St.Polygon({ debug: false, width: vi.w, height: vi.h,
ulc_x: vi.mx, ulc_y: vi.my,
llc_x: vi.mx, llc_y: vi.my,
urc_x: vi.w, urc_y: 0,
lrc_x: vi.w, lrc_y: vi.h });
this.categoriesOverlayBox.add_actor(this.vectorBox);
this.vectorBox.show();
this.vectorBox.set_reactive(true);
this.vectorBox.connect("leave-event", Lang.bind(this, this.destroyVectorBox));
this.vectorBox.connect("motion-event", Lang.bind(this, this.maybeUpdateVectorBox));
this.actor_motion_id = actor.connect("motion-event", Lang.bind(this, this.maybeUpdateVectorBox));
this.current_motion_actor = actor;
},
maybeUpdateVectorBox: function() {
if (this.vector_update_loop) {
Mainloop.source_remove(this.vector_update_loop);
this.vector_update_loop = 0;
}
this.vector_update_loop = Mainloop.timeout_add(50, Lang.bind(this, this.updateVectorBox));
},
updateVectorBox: function(actor) {
if (this.vectorBox) {
let vi = this._getVectorInfo();
if (vi) {
this.vectorBox.ulc_x = vi.mx;
this.vectorBox.llc_x = vi.mx;
this.vectorBox.queue_repaint();
} else {
this.destroyVectorBox(actor);
}
}
this.vector_update_loop = 0;
return false;
},
destroyVectorBox: function(actor) {
if (this.vectorBox != null) {
this.vectorBox.destroy();
this.vectorBox = null;
}
if (this.actor_motion_id > 0 && this.current_motion_actor != null) {
this.current_motion_actor.disconnect(this.actor_motion_id);
this.actor_motion_id = 0;
this.current_motion_actor = null;
}
},
_refreshPlaces : function() {
for (let i = 0; i < this._placesButtons.length; i ++) {
this._placesButtons[i].actor.destroy();
}
this._placesButtons = [];
for (let i = 0; i < this._categoryButtons.length; i++) {
if (this._categoryButtons[i] instanceof PlaceCategoryButton) {
this._categoryButtons[i].destroy();
this._categoryButtons.splice(i, 1);
this.placesButton = null;
break;
}
}
// Now generate Places category and places buttons and add to the list
if (this.showPlaces) {
this.placesButton = new PlaceCategoryButton(null, this.showCategoryIcons);
this._addEnterEvent(this.placesButton, Lang.bind(this, function() {
if (!this.searchActive) {
this.placesButton.isHovered = true;
this._clearPrevCatSelection(this.placesButton);
this.placesButton.actor.style_class = "menu-category-button-selected";
this.closeContextMenus(null, false);
this._select_category("places");
this.makeVectorBox(this.placesButton.actor);
}
}));
this.placesButton.actor.connect('leave-event', Lang.bind(this, function () {
if (this._previousTreeSelectedActor === null) {
this._previousTreeSelectedActor = this.placesButton.actor;
} else {
let prevIdx = this.catBoxIter.getVisibleIndex(this._previousTreeSelectedActor);
let nextIdx = this.catBoxIter.getVisibleIndex(this.placesButton.actor);
let idxDiff = Math.abs(prevIdx - nextIdx);
if (idxDiff <= 1 || Math.min(prevIdx, nextIdx) < 0) {
this._previousTreeSelectedActor = this.placesButton.actor;
}
}
this.placesButton.isHovered = false;
}));
this._categoryButtons.push(this.placesButton);
this.categoriesBox.add_actor(this.placesButton.actor);
let bookmarks = this._listBookmarks();
let devices = this._listDevices();
let places = bookmarks.concat(devices);
let handleEnterEvent = (button) => {
this._addEnterEvent(button, () => {
this._clearPrevSelection(button.actor);
button.actor.style_class = "menu-application-button-selected";
this.selectedAppTitle.set_text("");
let selectedAppId = button.place.idDecoded;
selectedAppId = selectedAppId.substr(selectedAppId.indexOf(':') + 1);
let fileIndex = selectedAppId.indexOf('file:///');
if (fileIndex !== -1)
selectedAppId = selectedAppId.substr(fileIndex + 7);
this.selectedAppDescription.set_text(selectedAppId);
});
};
let handleLeaveEvent = (button) => {
button.actor.connect('leave-event', () => {
this._previousSelectedActor = button.actor;
this.selectedAppTitle.set_text("");
this.selectedAppDescription.set_text("");
});
};
for (let i = 0; i < places.length; i++) {
let place = places[i];
let button = new PlaceButton(this, place, place.name, this.showApplicationIcons);
handleEnterEvent(button);
handleLeaveEvent(button);
this._placesButtons.push(button);
this.applicationsBox.add_actor(button.actor);
}
}
this._setCategoriesButtonActive(!this.searchActive);
this._resizeApplicationsBox();
},
_refreshRecent : function() {
if (this.privacy_settings.get_boolean(REMEMBER_RECENT_KEY)) {
if (this.recentButton == null) {
this.recentButton = new RecentCategoryButton(null, this.showCategoryIcons);
this._addEnterEvent(this.recentButton, Lang.bind(this, function() {
if (!this.searchActive) {
this.recentButton.isHovered = true;
this._clearPrevCatSelection(this.recentButton.actor);
this.recentButton.actor.style_class = "menu-category-button-selected";
this.closeContextMenus(null, false);
this._select_category("recent");
this.makeVectorBox(this.recentButton.actor);
}
}));
this.recentButton.actor.connect('leave-event', Lang.bind(this, function () {
if (this._previousTreeSelectedActor === null) {
this._previousTreeSelectedActor = this.recentButton.actor;
} else {
let prevIdx = this.catBoxIter.getVisibleIndex(this._previousTreeSelectedActor);
let nextIdx = this.catBoxIter.getVisibleIndex(this.recentButton.actor);
if (Math.abs(prevIdx - nextIdx) <= 1) {
this._previousTreeSelectedActor = this.recentButton.actor;
}
}
this.recentButton.isHovered = false;
}));
this._categoryButtons.push(this.recentButton);
}
/* Make sure the recent category is at the bottom (can happen when refreshing places
* or apps, since we don't destroy the recent category button each time we refresh recents,
* as it happens a lot) */
let parent = this.recentButton.actor.get_parent();
if (parent != null) {
parent.remove_child(this.recentButton.actor);
}
this.categoriesBox.add_actor(this.recentButton.actor);
this._categoryButtons.splice(this._categoryButtons.indexOf(this.recentButton), 1);
this._categoryButtons.push(this.recentButton);
let new_recents = [];
if (this.RecentManager._infosByTimestamp.length > 0) {
let handleEnterEvent = (button) => {
this._addEnterEvent(button, () => {
this._clearPrevSelection(button.actor);
button.actor.style_class = "menu-application-button-selected";
this.selectedAppTitle.set_text("");
let selectedAppUri = button.uriDecoded;
let fileIndex = selectedAppUri.indexOf("file:///");
if (fileIndex !== -1)
selectedAppUri = selectedAppUri.substr(fileIndex + 7);
this.selectedAppDescription.set_text(selectedAppUri);
});
};
let handleLeaveEvent = (button) => {
button.actor.connect('leave-event', () => {
button.actor.style_class = "menu-application-button";
this._previousSelectedActor = button.actor;
this.selectedAppTitle.set_text("");
this.selectedAppDescription.set_text("");
});
};
let handleNewButton = (id) => {
let uri = this.RecentManager._infosByTimestamp[id].uri;
return this._recentButtons.find(button => ((button instanceof RecentButton) &&
(button.uri) && (button.uri == uri)));
};
let id = 0;
while (id < this.RecentManager._infosByTimestamp.length) {
let new_button = null;
new_button = handleNewButton(id);
if (new_button == undefined) {
let button = new RecentButton(this, this.RecentManager._infosByTimestamp[id], this.showApplicationIcons);
handleEnterEvent(button);
handleLeaveEvent(button);
new_button = button;
}
new_recents.push(new_button);
id++;
}
let recent_clear_button = null;
recent_clear_button = this._recentButtons.find(button => (button instanceof RecentClearButton));
if (recent_clear_button == undefined) {
let button = new RecentClearButton(this);
this._addEnterEvent(button, Lang.bind(this, function() {
this._clearPrevSelection(button.actor);
button.actor.style_class = "menu-application-button-selected";
}));
button.actor.connect('leave-event', Lang.bind(this, function() {
button.actor.style_class = "menu-application-button";
this._previousSelectedActor = button.actor;
}));
recent_clear_button = button;
}
new_recents.push(recent_clear_button);
this.noRecentDocuments = false;
} else {
let new_button = null;
for (let existing_button in this._recentButtons) {
let button = this._recentButtons[existing_button];
if (button instanceof NoRecentDocsButton) {
new_button = button;
break;
}
}
if (new_button == null) {
new_button = new NoRecentDocsButton(_("No recent documents"), null, false, null);
}
this.noRecentDocuments = true;
new_recents.push(new_button);
}
let to_remove = [];
/* Remove no-longer-valid items */
for (let i = 0; i < this._recentButtons.length; i++) {
let button = this._recentButtons[i];
if (button instanceof NoRecentDocsButton && !this.noRecentDocuments) {
to_remove.push(button);
} else if (button instanceof RecentButton) {
if (new_recents.indexOf(button) == -1) {
to_remove.push(button);
}
}
}
if (to_remove.length > 0) {
for (let i in to_remove) {
to_remove[i].destroy();
this._recentButtons.splice(this._recentButtons.indexOf(to_remove[i]), 1);
}
}
to_remove = [];
/* Now, add new actors, shuffle existing actors */
let placeholder = null;
/* Find the first occurrence of a RecentButton, if it exists */
let children = this.applicationsBox.get_children();
for (let i = children.length - 1; i > 0; i--) {
if ((children[i]._delegate instanceof RecentButton) ||
(children[i]._delegate instanceof RecentClearButton) ||
(i == children.length - 1)) {
placeholder = children[i - 1];
break;
}
}
children = null;
for (let i = 0; i < new_recents.length; i++) {
let actor = new_recents[i].actor;
let parent = actor.get_parent();
if (parent != null) {
parent.remove_child(actor);
}
if (placeholder != actor) {
this.applicationsBox.insert_child_above(actor, placeholder);
} else {
this.applicationsBox.add_child(actor);
}
placeholder = actor;
}
this._recentButtons = new_recents;
} else {
for (let i = 0; i < this._recentButtons.length; i ++) {
this._recentButtons[i].destroy();
}
this._recentButtons = [];
for (let i = 0; i < this._categoryButtons.length; i++) {
if (this._categoryButtons[i] instanceof RecentCategoryButton) {
this._categoryButtons[i].destroy();
this._categoryButtons.splice(i, 1);
this.recentButton = null;
break;
}
}
}
this._setCategoriesButtonActive(!this.searchActive);
this._resizeApplicationsBox();
},
_refreshApps : function() {
/* iterate in reverse, so multiple splices will not upset
* the remaining elements */
for (let i = this._categoryButtons.length - 1; i > -1; i--) {
if (this._categoryButtons[i] instanceof CategoryButton) {
this._categoryButtons[i].destroy();
this._categoryButtons.splice(i, 1);
}
}
this._applicationsButtons.forEach(Lang.bind(this, function(button) {
button.destroy();
}));
this._applicationsButtons = [];
// this.applicationsBox.destroy_all_children();
this._transientButtons = [];
this._applicationsButtonFromApp = {};
this._applicationsBoxWidth = 0;
this._allAppsCategoryButton = new CategoryButton(null);
this._addEnterEvent(this._allAppsCategoryButton, Lang.bind(this, function() {
if (!this.searchActive) {
this._allAppsCategoryButton.isHovered = true;
this._clearPrevCatSelection(this._allAppsCategoryButton.actor);
this._allAppsCategoryButton.actor.style_class = "menu-category-button-selected";
this._select_category(null);
this.makeVectorBox(this._allAppsCategoryButton.actor);
}
}));
this._allAppsCategoryButton.actor.connect('leave-event', Lang.bind(this, function () {
this._previousSelectedActor = this._allAppsCategoryButton.actor;
this._allAppsCategoryButton.isHovered = false;
}));
this.categoriesBox.add_actor(this._allAppsCategoryButton.actor);
this._categoryButtons.push(this._allAppsCategoryButton);
let trees = [appsys.get_tree()];
for (var i in trees) {
let tree = trees[i];
let root = tree.get_root_directory();
let dirs = [];
let iter = root.iter();
let nextType;
while ((nextType = iter.next()) != CMenu.TreeItemType.INVALID) {
if (nextType == CMenu.TreeItemType.DIRECTORY) {
dirs.push(iter.get_directory());
}
}
let prefCats = ["administration", "preferences"];
let sortDirs = function(a, b) {
let menuIdA = a.get_menu_id().toLowerCase();
let menuIdB = b.get_menu_id().toLowerCase();
let prefIdA = prefCats.indexOf(menuIdA);
let prefIdB = prefCats.indexOf(menuIdB);
if (prefIdA < 0 && prefIdB >= 0) {
return -1;
}
if (prefIdA >= 0 && prefIdB < 0) {
return 1;
}
let nameA = a.get_name().toLowerCase();
let nameB = b.get_name().toLowerCase();
if (nameA > nameB) {
return 1;
}
if (nameA < nameB) {
return -1;
}
return 0;
};
dirs = dirs.sort(sortDirs);
let handleEnterEvent = (categoryButton, dir) => {
this._addEnterEvent(categoryButton, () => {
if (!this.searchActive) {
categoryButton.isHovered = true;
this._clearPrevCatSelection(categoryButton.actor);
categoryButton.actor.style_class = "menu-category-button-selected";
this._select_category(dir.get_menu_id());
this.makeVectorBox(categoryButton.actor);
}
});
};
let handleLeaveEvent = (categoryButton, dir) => {
categoryButton.actor.connect('leave-event', () => {
if (this._previousTreeSelectedActor === null) {
this._previousTreeSelectedActor = categoryButton.actor;
} else {
let prevIdx = this.catBoxIter.getVisibleIndex(this._previousTreeSelectedActor);
let nextIdx = this.catBoxIter.getVisibleIndex(categoryButton.actor);
if (Math.abs(prevIdx - nextIdx) <= 1) {
this._previousTreeSelectedActor = categoryButton.actor;
}
}
categoryButton.isHovered = false;
});
};
for (let i = 0; i < dirs.length; i++) {
let dir = dirs[i];
if (dir.get_is_nodisplay())
continue;
if (this._loadCategory(dir)) {
let categoryButton = new CategoryButton(dir, this.showCategoryIcons);
handleEnterEvent(categoryButton, dir);
handleLeaveEvent(categoryButton, dir);
this._categoryButtons.push(categoryButton);
this.categoriesBox.add_actor(categoryButton.actor);
}
}
}
// Sort apps and add to applicationsBox
this._applicationsButtons.sort(function(a, b) {
a = Util.latinise(a.app.get_name().toLowerCase());
b = Util.latinise(b.app.get_name().toLowerCase());
return a > b;
});
for (let i = 0; i < this._applicationsButtons.length; i++) {
this.applicationsBox.add_actor(this._applicationsButtons[i].actor);
this.applicationsBox.add_actor(this._applicationsButtons[i].menu.actor);
}
this._appsWereRefreshed = true;
},
_favEnterEvent : function(button) {
button.actor.add_style_pseudo_class("hover");
if (button instanceof FavoritesButton) {
this.selectedAppTitle.set_text(button.app.get_name());
if (button.app.get_description())
this.selectedAppDescription.set_text(button.app.get_description().split("\n")[0]);
else
this.selectedAppDescription.set_text("");
} else {
this.selectedAppTitle.set_text(button.name);
this.selectedAppDescription.set_text(button.desc);
}
},
_favLeaveEvent : function(widget, event, button) {
this._previousSelectedActor = button.actor;
button.actor.remove_style_pseudo_class("hover");
this.selectedAppTitle.set_text("");
this.selectedAppDescription.set_text("");
},
_refreshFavs : function() {
//Remove all favorites
this.favoritesBox.destroy_all_children();
//Load favorites again
this._favoritesButtons = [];
let launchers = global.settings.get_strv('favorite-apps');
let appSys = Cinnamon.AppSystem.get_default();
for ( let i = 0; i < launchers.length; ++i ) {
let app = appSys.lookup_app(launchers[i]);
if (app) {
let button = new FavoritesButton(this, app, launchers.length + 3); // + 3 because we're adding 3 system buttons at the bottom
this._favoritesButtons[app] = button;
this.favoritesBox.add(button.actor, { y_align: St.Align.END, y_fill: false });
this._addEnterEvent(button, Lang.bind(this, this._favEnterEvent, button));
button.actor.connect('leave-event', Lang.bind(this, this._favLeaveEvent, button));
}
}
//Separator
if (launchers.length != 0) {
let separator = new PopupMenu.PopupSeparatorMenuItem();
this.favoritesBox.add(separator.actor, { y_align: St.Align.END, y_fill: false });
}
//Lock screen
let button = new SystemButton(this, "system-lock-screen", launchers.length + 3,
_("Lock screen"),
_("Lock the screen"));
this._addEnterEvent(button, Lang.bind(this, this._favEnterEvent, button));
button.actor.connect('leave-event', Lang.bind(this, this._favLeaveEvent, button));
button.activate = Lang.bind(this, function() {
this.menu.close();
let screensaver_settings = new Gio.Settings({ schema_id: "org.cinnamon.desktop.screensaver" });
let screensaver_dialog = Gio.file_new_for_path("/usr/bin/cinnamon-screensaver-command");
if (screensaver_dialog.query_exists(null)) {
if (screensaver_settings.get_boolean("ask-for-away-message")) {
Util.spawnCommandLine("cinnamon-screensaver-lock-dialog");
}
else {
Util.spawnCommandLine("cinnamon-screensaver-command --lock");
}
}
else {
this._screenSaverProxy.LockRemote("");
}
});
this.favoritesBox.add(button.actor, { y_align: St.Align.END, y_fill: false });
//Logout button
button = new SystemButton(this, "system-log-out", launchers.length + 3,
_("Logout"),
_("Leave the session"));
this._addEnterEvent(button, Lang.bind(this, this._favEnterEvent, button));
button.actor.connect('leave-event', Lang.bind(this, this._favLeaveEvent, button));
button.activate = Lang.bind(this, function() {
this.menu.close();
this._session.LogoutRemote(0);
});
this.favoritesBox.add(button.actor, { y_align: St.Align.END, y_fill: false });
//Shutdown button
button = new SystemButton(this, "system-shutdown", launchers.length + 3,
_("Quit"),
_("Shutdown the computer"));
this._addEnterEvent(button, Lang.bind(this, this._favEnterEvent, button));
button.actor.connect('leave-event', Lang.bind(this, this._favLeaveEvent, button));
button.activate = Lang.bind(this, function() {
this.menu.close();
this._session.ShutdownRemote();
});
this.favoritesBox.add(button.actor, { y_align: St.Align.END, y_fill: false });
},
_loadCategory: function(dir, top_dir) {
var iter = dir.iter();
var has_entries = false;
var nextType;
if (!top_dir) top_dir = dir;
while ((nextType = iter.next()) != CMenu.TreeItemType.INVALID) {
if (nextType == CMenu.TreeItemType.ENTRY) {
var entry = iter.get_entry();
if (!entry.get_app_info().get_nodisplay()) {
has_entries = true;
var app = appsys.lookup_app_by_tree_entry(entry);
if (!app)
app = appsys.lookup_settings_app_by_tree_entry(entry);
var app_key = app.get_id();
if (app_key == null) {
app_key = app.get_name() + ":" +
app.get_description();
}
if (!(app_key in this._applicationsButtonFromApp)) {
let applicationButton = new ApplicationButton(this, app, this.showApplicationIcons);
var app_is_known = false;
for (var i = 0; i < this._knownApps.length; i++) {
if (this._knownApps[i] == app_key) {
app_is_known = true;
}
}
if (!app_is_known) {
if (this._appsWereRefreshed) {
applicationButton.highlight();
}
else {
this._knownApps.push(app_key);
}
}
applicationButton.actor.connect('leave-event', Lang.bind(this, this._appLeaveEvent, applicationButton));
this._addEnterEvent(applicationButton, Lang.bind(this, this._appEnterEvent, applicationButton));
this._applicationsButtons.push(applicationButton);
applicationButton.category.push(top_dir.get_menu_id());
this._applicationsButtonFromApp[app_key] = applicationButton;
} else {
this._applicationsButtonFromApp[app_key].category.push(dir.get_menu_id());
}
}
} else if (nextType == CMenu.TreeItemType.DIRECTORY) {
let subdir = iter.get_directory();
if (this._loadCategory(subdir, top_dir)) {
has_entries = true;
}
}
}
return has_entries;
},
_appLeaveEvent: function(a, b, applicationButton) {
this._previousSelectedActor = applicationButton.actor;
applicationButton.actor.style_class = "menu-application-button";
this.selectedAppTitle.set_text("");
this.selectedAppDescription.set_text("");
},
_appEnterEvent: function(applicationButton) {
this.selectedAppTitle.set_text(applicationButton.app.get_name());
if (applicationButton.app.get_description())
this.selectedAppDescription.set_text(applicationButton.app.get_description());
else
this.selectedAppDescription.set_text("");
this._previousVisibleIndex = this.appBoxIter.getVisibleIndex(applicationButton.actor);
this._clearPrevSelection(applicationButton.actor);
applicationButton.actor.style_class = "menu-application-button-selected";
},
_scrollToButton: function(button) {
var current_scroll_value = this.applicationsScrollBox.get_vscroll_bar().get_adjustment().get_value();
var box_height = this.applicationsScrollBox.get_allocation_box().y2-this.applicationsScrollBox.get_allocation_box().y1;
var new_scroll_value = current_scroll_value;
if (current_scroll_value > button.actor.get_allocation_box().y1-10) new_scroll_value = button.actor.get_allocation_box().y1-10;
if (box_height+current_scroll_value < button.actor.get_allocation_box().y2+10) new_scroll_value = button.actor.get_allocation_box().y2-box_height+10;
if (new_scroll_value!=current_scroll_value) this.applicationsScrollBox.get_vscroll_bar().get_adjustment().set_value(new_scroll_value);
},
_display : function() {
this._activeContainer = null;
this._activeActor = null;
this.vectorBox = null;
this.actor_motion_id = 0;
this.vector_update_loop = null;
this.current_motion_actor = null;
let section = new PopupMenu.PopupMenuSection();
this.menu.addMenuItem(section);
this.leftPane = new St.BoxLayout({ vertical: true });
this.leftBox = new St.BoxLayout({ style_class: 'menu-favorites-box', vertical: true });
this._session = new GnomeSession.SessionManager();
this._screenSaverProxy = new ScreenSaver.ScreenSaverProxy();
this.leftPane.add(this.leftBox, { y_align: St.Align.END, y_fill: false });
this._favboxtoggle();
let rightPane = new St.BoxLayout({ vertical: true });
this.searchBox = new St.BoxLayout({ style_class: 'menu-search-box' });
rightPane.add_actor(this.searchBox);
this.searchEntry = new St.Entry({ name: 'menu-search-entry',
hint_text: _("Type to search..."),
track_hover: true,
can_focus: true });
this.searchEntry.set_secondary_icon(this._searchInactiveIcon);
this.searchBox.add_actor(this.searchEntry);
this.searchActive = false;
this.searchEntryText = this.searchEntry.clutter_text;
this.searchEntryText.connect('text-changed', Lang.bind(this, this._onSearchTextChanged));
this.searchEntryText.connect('key-press-event', Lang.bind(this, this._onMenuKeyPress));
this._previousSearchPattern = "";
this.categoriesApplicationsBox = new CategoriesApplicationsBox();
rightPane.add_actor(this.categoriesApplicationsBox.actor);
this.categoriesOverlayBox = new Clutter.Actor();
this.categoriesBox = new St.BoxLayout({ style_class: 'menu-categories-box',
vertical: true,
accessible_role: Atk.Role.LIST });
this.categoriesOverlayBox.add_actor(this.categoriesBox);
this.applicationsScrollBox = new St.ScrollView({ x_fill: true, y_fill: false, y_align: St.Align.START, style_class: 'vfade menu-applications-scrollbox' });
this.a11y_settings = new Gio.Settings({ schema_id: "org.cinnamon.desktop.a11y.applications" });
this.a11y_settings.connect("changed::screen-magnifier-enabled", Lang.bind(this, this._updateVFade));
this.a11y_mag_settings = new Gio.Settings({ schema_id: "org.cinnamon.desktop.a11y.magnifier" });
this.a11y_mag_settings.connect("changed::mag-factor", Lang.bind(this, this._updateVFade));
this._updateVFade();
this.settings.bind("enable-autoscroll", "autoscroll_enabled", this._update_autoscroll);
this._update_autoscroll();
let vscroll = this.applicationsScrollBox.get_vscroll_bar();
vscroll.connect('scroll-start',
Lang.bind(this, function() {
this.menu.passEvents = true;
}));
vscroll.connect('scroll-stop',
Lang.bind(this, function() {
this.menu.passEvents = false;
}));
this.applicationsBox = new St.BoxLayout({ style_class: 'menu-applications-inner-box', vertical:true });
this.applicationsBox.add_style_class_name('menu-applications-box'); //this is to support old themes
this.applicationsScrollBox.add_actor(this.applicationsBox);
this.applicationsScrollBox.set_policy(Gtk.PolicyType.NEVER, Gtk.PolicyType.AUTOMATIC);
this.categoriesApplicationsBox.actor.add_actor(this.categoriesOverlayBox);
this.categoriesApplicationsBox.actor.add_actor(this.applicationsScrollBox);
let fav_obj = new FavoritesBox();
this.favoritesBox = fav_obj.actor;
this.leftBox.add(this.favoritesBox, { y_align: St.Align.END, y_fill: false });
this.mainBox = new St.BoxLayout({ style_class: 'menu-applications-outer-box', vertical:false });
this.mainBox.add_style_class_name('menu-applications-box'); //this is to support old themes
this.mainBox.add(this.leftPane, { span: 1 });
this.mainBox.add(rightPane, { span: 1 });
this.mainBox._delegate = null;
section.actor.add(this.mainBox);
this.selectedAppBox = new St.BoxLayout({ style_class: 'menu-selected-app-box', vertical: true });
if (this.selectedAppBox.peek_theme_node() == null ||
this.selectedAppBox.get_theme_node().get_length('height') == 0)
this.selectedAppBox.set_height(30 * global.ui_scale);
this.selectedAppTitle = new St.Label({ style_class: 'menu-selected-app-title', text: "" });
this.selectedAppBox.add_actor(this.selectedAppTitle);
this.selectedAppDescription = new St.Label({ style_class: 'menu-selected-app-description', text: "" });
this.selectedAppBox.add_actor(this.selectedAppDescription);
this.selectedAppBox._delegate = null;
section.actor.add_actor(this.selectedAppBox);
this.appBoxIter = new VisibleChildIterator(this.applicationsBox);
this.applicationsBox._vis_iter = this.appBoxIter;
this.catBoxIter = new VisibleChildIterator(this.categoriesBox);
this.categoriesBox._vis_iter = this.catBoxIter;
this.favBoxIter = new VisibleChildIterator(this.favoritesBox);
this.favoritesBox._vis_iter = this.favBoxIter;
Mainloop.idle_add(Lang.bind(this, function() {
this._clearAllSelections(true);
}));
this.menu.actor.connect("allocation-changed", Lang.bind(this, this._on_allocation_changed));
},
_updateVFade: function() {
let mag_on = this.a11y_settings.get_boolean("screen-magnifier-enabled") &&
this.a11y_mag_settings.get_double("mag-factor") > 1.0;
if (mag_on) {
this.applicationsScrollBox.style_class = "menu-applications-scrollbox";
} else {
this.applicationsScrollBox.style_class = "vfade menu-applications-scrollbox";
}
},
_update_autoscroll: function() {
this.applicationsScrollBox.set_auto_scrolling(this.autoscroll_enabled);
},
_on_allocation_changed: function(box, flags, data) {
this._recalc_height();
},
_clearAllSelections: function(hide_apps) {
let actors = this.applicationsBox.get_children();
for (let i = 0; i < actors.length; i++) {
let actor = actors[i];
actor.style_class = "menu-application-button";
if (hide_apps) {
actor.hide();
}
}
actors = this.categoriesBox.get_children();
for (let i = 0; i < actors.length; i++){
let actor = actors[i];
actor.style_class = "menu-category-button";
actor.show();
}
actors = this.favoritesBox.get_children();
for (let i = 0; i < actors.length; i++){
let actor = actors[i];
actor.remove_style_pseudo_class("hover");
actor.show();
}
},
_select_category : function(name) {
if (name === this.lastSelectedCategory) {
return;
}
this.lastSelectedCategory = name;
if (name === "places") {
this._displayButtons(null, -1);
} else
if (name === "recent") {
this._displayButtons(null, null, -1);
} else
if (name == null) {
this._displayButtons(this._listApplications(null));
} else
{
this._displayButtons(this._listApplications(name));
}
this.closeContextMenus(null, false);
},
closeContextMenus: function(excluded, animate) {
for (let app in this._applicationsButtons){
if (this._applicationsButtons[app] != excluded && this._applicationsButtons[app].menu.isOpen){
if (animate)
this._applicationsButtons[app].toggleMenu();
else
this._applicationsButtons[app].closeMenu();
}
}
if (!this.recentContextMenu) {
return;
}
let item = this.recentContextMenu.sourceActor._delegate;
if ((item != excluded || excluded == null) && item.menu && item.menu.isOpen) {
if (animate)
this.recentContextMenu.toggle();
else
this.recentContextMenu.close();
this._activeContextMenuParent = null;
this._activeContextMenuItem = null;
}
},
_resize_actor_iter: function(actor) {
let [min, nat] = actor.get_preferred_width(-1.0);
if (nat > this._applicationsBoxWidth){
this._applicationsBoxWidth = nat;
this.applicationsBox.set_width(this._applicationsBoxWidth + 42); // The answer to life...
}
},
_resizeApplicationsBox: function() {
this._applicationsBoxWidth = 0;
this.applicationsBox.set_width(-1);
let child = this.applicationsBox.get_first_child();
this._resize_actor_iter(child);
while ((child = child.get_next_sibling()) != null) {
this._resize_actor_iter(child);
}
},
_displayButtons: function(appCategory, places, recent, apps, autocompletes){
if (appCategory) {
if (appCategory == "all") {
this._applicationsButtons.forEach( function (item, index) {
item.actor.show();
});
} else {
this._applicationsButtons.forEach( function (item, index) {
if (item.category.indexOf(appCategory) != -1) {
item.actor.show();
} else {
item.actor.hide();
}
});
}
} else if (apps) {
for (let i = 0; i < this._applicationsButtons.length; i++) {
if (apps.indexOf(this._applicationsButtons[i].app.get_id()) != -1) {
this._applicationsButtons[i].actor.show();
} else {
this._applicationsButtons[i].actor.hide();
}
}
} else {
this._applicationsButtons.forEach( function (item, index) {
item.actor.hide();
});
}
if (places) {
if (places == -1) {
this._placesButtons.forEach( function (item, index) {
item.actor.show();
});
} else {
for (let i = 0; i < this._placesButtons.length; i++) {
if (places.indexOf(this._placesButtons[i].button_name) != -1) {
this._placesButtons[i].actor.show();
} else {
this._placesButtons[i].actor.hide();
}
}
}
} else {
this._placesButtons.forEach( function (item, index) {
item.actor.hide();
});
}
if (recent) {
if (recent == -1) {
this._recentButtons.forEach( function (item, index) {
item.actor.show();
});
} else {
for (let i = 0; i < this._recentButtons.length; i++) {
if (recent.indexOf(this._recentButtons[i].button_name) != -1) {
this._recentButtons[i].actor.show();
} else {
this._recentButtons[i].actor.hide();
}
}
}
} else {
this._recentButtons.forEach( function (item, index) {
item.actor.hide();
});
}
if (autocompletes) {
this._transientButtons.forEach( function (item, index) {
item.actor.destroy();
});
this._transientButtons = [];
for (let i = 0; i < autocompletes.length; i++) {
let button = new TransientButton(this, autocompletes[i]);
button.actor.connect('leave-event', Lang.bind(this, this._appLeaveEvent, button));
this._addEnterEvent(button, Lang.bind(this, this._appEnterEvent, button));
this._transientButtons.push(button);
this.applicationsBox.add_actor(button.actor);
button.actor.realize();
}
}
this._searchProviderButtons.forEach( function (item, index) {
if (item.actor.visible) {
item.actor.hide();
}
});
},
_setCategoriesButtonActive: function(active) {
try {
let categoriesButtons = this.categoriesBox.get_children();
for (var i in categoriesButtons) {
let button = categoriesButtons[i];
if (active){
button.set_style_class_name("menu-category-button");
} else {
button.set_style_class_name("menu-category-button-greyed");
}
}
} catch (e) {
global.log(e);
}
},
resetSearch: function(){
this.searchEntry.set_text("");
this._previousSearchPattern = "";
this.searchActive = false;
this._clearAllSelections(true);
this._setCategoriesButtonActive(true);
global.stage.set_key_focus(this.searchEntry);
},
_onSearchTextChanged: function (se, prop) {
if (this.menuIsOpening) {
this.menuIsOpening = false;
return;
} else {
let searchString = this.searchEntry.get_text();
if (searchString == '' && !this.searchActive)
return;
this.searchActive = searchString != '';
this._fileFolderAccessActive = this.searchActive && this.searchFilesystem;
this._clearAllSelections();
if (this.searchActive) {
this.searchEntry.set_secondary_icon(this._searchActiveIcon);
if (this._searchIconClickedId == 0) {
this._searchIconClickedId = this.searchEntry.connect('secondary-icon-clicked',
Lang.bind(this, function() {
this.resetSearch();
this._select_category(null);
}));
}
this._setCategoriesButtonActive(false);
this._doSearch();
} else {
if (this._searchIconClickedId > 0)
this.searchEntry.disconnect(this._searchIconClickedId);
this._searchIconClickedId = 0;
this.searchEntry.set_secondary_icon(this._searchInactiveIcon);
this._previousSearchPattern = "";
this._setCategoriesButtonActive(true);
this._select_category(null);
this._allAppsCategoryButton.actor.style_class = "menu-category-button-selected";
this._activeContainer = null;
this.selectedAppTitle.set_text("");
this.selectedAppDescription.set_text("");
}
return;
}
},
_listBookmarks: function(pattern){
let bookmarks = Main.placesManager.getBookmarks();
var res = [];
for (let id = 0; id < bookmarks.length; id++) {
if (!pattern || bookmarks[id].name.toLowerCase().indexOf(pattern)!=-1) res.push(bookmarks[id]);
}
return res;
},
_listDevices: function(pattern){
let devices = Main.placesManager.getMounts();
var res = [];
for (let id = 0; id < devices.length; id++) {
if (!pattern || devices[id].name.toLowerCase().indexOf(pattern)!=-1) res.push(devices[id]);
}
return res;
},
_listApplications: function(category_menu_id, pattern){
var applist = [];
if (category_menu_id) {
applist = category_menu_id;
} else {
applist = "all";
}
let res;
if (pattern){
res = [];
var regexpPattern = new RegExp("\\b"+pattern);
var foundByName = false;
for (var i in this._applicationsButtons) {
let app = this._applicationsButtons[i].app;
if (Util.latinise(app.get_name().toLowerCase()).match(regexpPattern) != null) {
res.push(app.get_id());
foundByName = true;
}
}
if (!foundByName) {
for (var i in this._applicationsButtons) {
let app = this._applicationsButtons[i].app;
if (Util.latinise(app.get_name().toLowerCase()).indexOf(pattern)!=-1 ||
(app.get_keywords() && Util.latinise(app.get_keywords().toLowerCase()).indexOf(pattern)!=-1) ||
(app.get_description() && Util.latinise(app.get_description().toLowerCase()).indexOf(pattern)!=-1) ||
(app.get_id() && Util.latinise(app.get_id().slice(0, -8).toLowerCase()).indexOf(pattern)!=-1))
res.push(app.get_id());
}
}
} else res = applist;
return res;
},
_doSearch: function(){
this._searchTimeoutId = 0;
let pattern = this.searchEntryText.get_text().replace(/^\s+/g, '').replace(/\s+$/g, '').toLowerCase();
pattern = Util.latinise(pattern);
if (pattern==this._previousSearchPattern) return false;
this._previousSearchPattern = pattern;
this._activeContainer = null;
this._activeActor = null;
this._selectedItemIndex = null;
this._previousTreeSelectedActor = null;
this._previousSelectedActor = null;
// _listApplications returns all the applications when the search
// string is zero length. This will happened if you type a space
// in the search entry.
if (pattern.length == 0) {
return false;
}
var appResults = this._listApplications(null, pattern);
var placesResults = [];
var bookmarks = this._listBookmarks(pattern);
for (let i in bookmarks)
placesResults.push(bookmarks[i].name);
var devices = this._listDevices(pattern);
for (let i in devices)
placesResults.push(devices[i].name);
var recentResults = [];
for (let i = 0; i < this._recentButtons.length; i++) {
if (!(this._recentButtons[i] instanceof RecentClearButton) && this._recentButtons[i].button_name.toLowerCase().indexOf(pattern) != -1)
recentResults.push(this._recentButtons[i].button_name);
}
var acResults = []; // search box autocompletion results
if (this.searchFilesystem) {
// Don't use the pattern here, as filesystem is case sensitive
acResults = this._getCompletions(this.searchEntryText.get_text());
}
this._displayButtons(null, placesResults, recentResults, appResults, acResults);
this.appBoxIter.reloadVisible();
if (this.appBoxIter.getNumVisibleChildren() > 0) {
let item_actor = this.appBoxIter.getFirstVisible();
this._selectedItemIndex = this.appBoxIter.getAbsoluteIndexOfChild(item_actor);
this._activeContainer = this.applicationsBox;
if (item_actor && item_actor != this.searchEntry) {
item_actor._delegate.emit('enter-event');
}
} else {
this.selectedAppTitle.set_text("");
this.selectedAppDescription.set_text("");
}
SearchProviderManager.launch_all(pattern, Lang.bind(this, function(provider, results){
try{
for (var i in results){
if (results[i].type != 'software')
{
let button = new SearchProviderResultButton(this, provider, results[i]);
button.actor.connect('leave-event', Lang.bind(this, this._appLeaveEvent, button));
this._addEnterEvent(button, Lang.bind(this, this._appEnterEvent, button));
this._searchProviderButtons.push(button);
this.applicationsBox.add_actor(button.actor);
button.actor.realize();
}
}
}catch(e){global.log(e);}
}));
return false;
},
_getCompletion : function(text) {
if (text.indexOf('/') != -1) {
if (text.substr(text.length - 1) == '/') {
return '';
} else {
return this._pathCompleter.get_completion_suffix(text);
}
} else {
return false;
}
},
_getCompletions : function(text) {
if (text.indexOf('/') != -1) {
return this._pathCompleter.get_completions(text);
} else {
return [];
}
},
_run : function(input) {
this._commandError = false;
if (input) {
let path = null;
if (input.charAt(0) == '/') {
path = input;
} else {
if (input.charAt(0) == '~')
input = input.slice(1);
path = GLib.get_home_dir() + '/' + input;
}
if (GLib.file_test(path, GLib.FileTest.EXISTS)) {
let file = Gio.file_new_for_path(path);
try {
Gio.app_info_launch_default_for_uri(file.get_uri(),
global.create_app_launch_context());
} catch (e) {
// The exception from gjs contains an error string like:
// Error invoking Gio.app_info_launch_default_for_uri: No application
// is registered as handling this file
// We are only interested in the part after the first colon.
//let message = e.message.replace(/[^:]*: *(.+)/, '$1');
return false;
}
} else {
return false;
}
}
return true;
}
};
function main(metadata, orientation, panel_height, instance_id) {
let myApplet = new MyApplet(orientation, panel_height, instance_id);
return myApplet;
}
Cinnamon-3.6.7/files/usr/share/cinnamon/applets/trash@cinnamon.org/ 0000775 0001750 0001750 00000000000 13215735076 024247 5 ustar fabio fabio Cinnamon-3.6.7/files/usr/share/cinnamon/applets/trash@cinnamon.org/metadata.json 0000664 0001750 0001750 00000000270 13215735076 026721 0 ustar fabio fabio {
"uuid": "trash@cinnamon.org",
"name": "Trash",
"description": "Control the trash from the panel",
"icon": "user-trash",
"localedir": "/usr/share/locale",
"max-instances": -1
}
Cinnamon-3.6.7/files/usr/share/cinnamon/applets/trash@cinnamon.org/applet.js 0000664 0001750 0001750 00000006454 13215735076 026103 0 ustar fabio fabio const St = imports.gi.St;
const ModalDialog = imports.ui.modalDialog;
const Gio = imports.gi.Gio;
const Lang = imports.lang;
const Applet = imports.ui.applet;
const PopupMenu = imports.ui.popupMenu;
const Mainloop = imports.mainloop;
const Util = imports.misc.util;
const MESSAGE = _("Are you sure you want to delete all items from the trash?") + "\n" + _("This operation cannot be undone.");
function MyApplet(orientation, panel_height, instance_id) {
this._init(orientation, panel_height, instance_id);
}
MyApplet.prototype = {
__proto__: Applet.IconApplet.prototype,
_init: function(orientation, panel_height, instance_id) {
Applet.IconApplet.prototype._init.call(this, orientation, panel_height, instance_id);
try {
this.set_applet_icon_symbolic_name("user-trash");
this.set_applet_tooltip(_("Trash"));
this.trash_path = 'trash:///';
this.trash_directory = Gio.file_new_for_uri(this.trash_path);
this._initContextMenu();
this.trash_changed_timeout = 0;
this._onTrashChange();
this.monitor = this.trash_directory.monitor_directory(0, null);
this.monitor.connect('changed', Lang.bind(this, this._onTrashChange));
}
catch (e) {
global.logError(e);
}
},
_initContextMenu: function () {
this.empty_item = new PopupMenu.PopupIconMenuItem(_("Empty Trash"),
"list-remove",
St.IconType.SYMBOLIC);
this.empty_item.connect('activate', Lang.bind(this, this._emptyTrash));
this._applet_context_menu.addMenuItem(this.empty_item);
this.open_item = new PopupMenu.PopupIconMenuItem(_("Open Trash"),
"document-open",
St.IconType.SYMBOLIC);
this.open_item.connect('activate', Lang.bind(this, this._openTrash));
this._applet_context_menu.addMenuItem(this.open_item);
},
on_applet_clicked: function(event) {
this._openTrash();
},
_openTrash: function() {
Gio.app_info_launch_default_for_uri(this.trash_directory.get_uri(), null);
},
_onTrashChange: function() {
if (this.trash_changed_timeout > 0) {
Mainloop.source_remove(this.trash_changed_timeout);
this.trash_changed_timeout = 0;
}
this.trash_changed_timeout = Mainloop.timeout_add_seconds(1, Lang.bind(this, this._onTrashChangeTimeout));
},
_onTrashChangeTimeout: function() {
this.trash_changed_timeout = 0;
if (this.trash_directory.query_exists(null)) {
let children = this.trash_directory.enumerate_children('standard::*', Gio.FileQueryInfoFlags.NONE, null);
if (children.next_file(null) == null) {
this.set_applet_icon_symbolic_name("user-trash");
} else {
this.set_applet_icon_symbolic_name("user-trash-full");
}
children.close(null);
}
},
_emptyTrash: function() {
new ModalDialog.ConfirmDialog(MESSAGE, this._doEmptyTrash).open();
},
_doEmptyTrash: function() {
Util.spawn(['gvfs-trash', '--empty']);
}
};
function main(metadata, orientation, panel_height, instance_id) {
let myApplet = new MyApplet(orientation, panel_height, instance_id);
return myApplet;
}
Cinnamon-3.6.7/files/usr/share/cinnamon/applets/show-desktop@cinnamon.org/ 0000775 0001750 0001750 00000000000 13215735076 025555 5 ustar fabio fabio Cinnamon-3.6.7/files/usr/share/cinnamon/applets/show-desktop@cinnamon.org/settings-schema.json 0000664 0001750 0001750 00000002041 13215735076 031543 0 ustar fabio fabio {
"head" : {
"type" : "header",
"description" : "Settings"
},
"peek-at-desktop" : {
"type" : "switch",
"default" : false,
"description": "Peek at the desktop on hover",
"tooltip": "Peek at the desktop when hovering the applet"
},
"peek-blur" : {
"type" : "switch",
"default" : false,
"dependency" : "peek-at-desktop",
"indent" : true,
"description" : "Blur effect",
"tooltip" : "Blur windows when peeking at the desktop"
},
"peek-delay" : {
"type": "spinbutton",
"default" : 400,
"min" : 0,
"max" : 1000,
"step" : 50,
"units" : "milliseconds",
"dependency" : "peek-at-desktop",
"indent" : true,
"description": "Hover delay",
"tooltip": "Delay before Peek shows desktop"
},
"peek-opacity": {
"type": "scale",
"default" : 10,
"min" : 0,
"max" : 255,
"step" : 10,
"dependency" : "peek-at-desktop",
"indent" : true,
"description" : "Window opacity",
"tooltip" : "Change the opacity of windows when peeking at the desktop"
}
}
Cinnamon-3.6.7/files/usr/share/cinnamon/applets/show-desktop@cinnamon.org/metadata.json 0000664 0001750 0001750 00000000231 13215735076 030224 0 ustar fabio fabio {
"uuid": "show-desktop@cinnamon.org",
"name": "Show desktop",
"description": "Minimize all windows",
"icon": "user-desktop",
"max-instances": -1
}
Cinnamon-3.6.7/files/usr/share/cinnamon/applets/show-desktop@cinnamon.org/applet.js 0000664 0001750 0001750 00000010646 13215735076 027407 0 ustar fabio fabio const Applet = imports.ui.applet;
const Settings = imports.ui.settings; // Needed for settings API
const Mainloop = imports.mainloop;
const Tweener = imports.ui.tweener;
const Clutter = imports.gi.Clutter;
const Lang = imports.lang;
const SignalManager = imports.misc.signalManager;
function MyApplet(orientation, panel_height, instance_id) {
this._init(orientation, panel_height, instance_id);
}
MyApplet.prototype = {
__proto__: Applet.IconApplet.prototype,
_init: function(orientation, panel_height, instance_id) {
Applet.IconApplet.prototype._init.call(this, orientation, panel_height, instance_id);
this.settings = new Settings.AppletSettings(this, "show-desktop@cinnamon.org", instance_id);
this.settings.bindProperty(Settings.BindingDirection.IN, "peek-at-desktop", "peek_at_desktop", null, null);
this.settings.bindProperty(Settings.BindingDirection.IN, "peek-delay", "peek_delay", null, null);
this.settings.bindProperty(Settings.BindingDirection.IN, "peek-opacity", "peek_opacity", null, null);
this.settings.bindProperty(Settings.BindingDirection.IN, "peek-blur", "peek_blur", null, null);
this.signals = new SignalManager.SignalManager(null);
this.actor.connect('enter-event', Lang.bind(this, this._on_enter));
this.actor.connect('leave-event', Lang.bind(this, this._on_leave));
this.signals.connect(global.stage, 'notify::key-focus', this._on_leave, this);
this._did_peek = false;
this._peek_timeout_id = 0;
this.set_applet_icon_name("user-desktop");
this.set_applet_tooltip(_("Show desktop"));
},
on_applet_removed_from_panel: function() {
this.signals.disconnectAllSignals();
},
show_all_windows: function(time) {
let windows = global.get_window_actors();
for(let i = 0; i < windows.length; i++){
let window = windows[i].meta_window;
let compositor = windows[i];
if(window.get_title() == "Desktop"){
Tweener.addTween(compositor, { opacity: 255, time: time, transition: "easeOutSine" });
}
if (this.peek_blur && compositor.eff) {
compositor.remove_effect(compositor.eff);
}
}
Tweener.addTween(global.window_group, { opacity: 255, time: time, transition: "easeOutSine" });
},
_on_enter: function(event) {
if (this.peek_at_desktop) {
if (this._peek_timeout_id > 0) {
Mainloop.source_remove(this._peek_timeout_id);
this._peek_timeout_id = 0;
}
this._peek_timeout_id = Mainloop.timeout_add(this.peek_delay, Lang.bind(this, function() {
if (this.actor.hover &&
!this._applet_context_menu.isOpen &&
!global.settings.get_boolean("panel-edit-mode")) {
Tweener.addTween(global.window_group,
{opacity: this.peek_opacity, time: 0.275, transition: "easeInSine"});
let windows = global.get_window_actors();
for (let i = 0; i < windows.length; i++) {
let compositor = windows[i];
if (this.peek_blur) {
if (!compositor.eff)
compositor.eff = new Clutter.BlurEffect();
compositor.add_effect_with_name('peek-blur', compositor.eff);
}
}
this._did_peek = true;
}
this._peek_timeout_id = 0;
return false;
}));
}
},
_on_leave: function(event) {
if (this._did_peek) {
this.show_all_windows(0.2);
this._did_peek = false;
}
if (this._peek_timeout_id > 0) {
Mainloop.source_remove(this._peek_timeout_id);
this._peek_timeout_id = 0;
}
},
on_applet_clicked: function(event) {
global.screen.toggle_desktop(global.get_current_time());
this.show_all_windows(0);
if (this._peek_timeout_id > 0) {
Mainloop.source_remove(this._peek_timeout_id);
this._peek_timeout_id = 0;
}
this._did_peek = false;
}
};
function main(metadata, orientation, panel_height, instance_id) {
let myApplet = new MyApplet(orientation, panel_height, instance_id);
return myApplet;
}
Cinnamon-3.6.7/files/usr/share/cinnamon/applets/removable-drives@cinnamon.org/ 0000775 0001750 0001750 00000000000 13215735076 026374 5 ustar fabio fabio Cinnamon-3.6.7/files/usr/share/cinnamon/applets/removable-drives@cinnamon.org/metadata.json 0000664 0001750 0001750 00000000243 13215735076 031046 0 ustar fabio fabio {
"uuid": "removable-drives@cinnamon.org",
"name": "Removable drives",
"description": "Access removable drives",
"icon": "media-eject",
"max-instances": -1
}
Cinnamon-3.6.7/files/usr/share/cinnamon/applets/removable-drives@cinnamon.org/applet.js 0000664 0001750 0001750 00000007021 13215735076 030217 0 ustar fabio fabio const Lang = imports.lang;
const St = imports.gi.St;
const GLib = imports.gi.GLib;
const Gio = imports.gi.Gio;
const Applet = imports.ui.applet;
const Main = imports.ui.main;
const PopupMenu = imports.ui.popupMenu;
const PANEL_EDIT_MODE_KEY = "panel-edit-mode";
function DriveMenuItem(place) {
this._init(place);
}
DriveMenuItem.prototype = {
__proto__: PopupMenu.PopupBaseMenuItem.prototype,
_init: function(place) {
PopupMenu.PopupBaseMenuItem.prototype._init.call(this);
this.place = place;
this.label = new St.Label({ text: place.name });
this.addActor(this.label);
let ejectIcon = new St.Icon({ icon_name: 'media-eject',
icon_type: St.IconType.SYMBOLIC,
style_class: 'popup-menu-icon ' });
let ejectButton = new St.Button({ child: ejectIcon });
ejectButton.connect('clicked', Lang.bind(this, this._eject));
this.addActor(ejectButton);
},
_eject: function() {
this.place.remove();
},
activate: function(event) {
this.place.launch({ timestamp: event.get_time() });
PopupMenu.PopupBaseMenuItem.prototype.activate.call(this, event);
}
};
function MyApplet(orientation, panel_height, instance_id) {
this._init(orientation, panel_height, instance_id);
}
MyApplet.prototype = {
__proto__: Applet.IconApplet.prototype,
_init: function(orientation, panel_height, instance_id) {
Applet.IconApplet.prototype._init.call(this, orientation, panel_height, instance_id);
try {
this.set_applet_icon_symbolic_name("drive-harddisk");
this.set_applet_tooltip(_("Removable drives"));
global.settings.connect('changed::' + PANEL_EDIT_MODE_KEY, Lang.bind(this, this._onPanelEditModeChanged));
this.menuManager = new PopupMenu.PopupMenuManager(this);
this.menu = new Applet.AppletPopupMenu(this, orientation);
this.menuManager.addMenu(this.menu);
this._contentSection = new PopupMenu.PopupMenuSection();
this.menu.addMenuItem(this._contentSection);
this._update();
this.menu.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
this.menu.addAction(_("Open file manager"), function(event) {
let homeFile = Gio.file_new_for_path(GLib.get_home_dir());
let homeUri = homeFile.get_uri();
Gio.app_info_launch_default_for_uri(homeUri, null);
});
Main.placesManager.connect('mounts-updated', Lang.bind(this, this._update));
this._onPanelEditModeChanged();
}
catch (e) {
global.logError(e);
}
},
_onPanelEditModeChanged: function() {
if (global.settings.get_boolean(PANEL_EDIT_MODE_KEY)) {
this.actor.show();
}
else {
this._update();
}
},
on_applet_clicked: function(event) {
this.menu.toggle();
},
_update: function() {
this._contentSection.removeAll();
let mounts = Main.placesManager.getMounts();
let any = false;
for (let i = 0; i < mounts.length; i++) {
if (mounts[i].isRemovable()) {
this._contentSection.addMenuItem(new DriveMenuItem(mounts[i]));
any = true;
}
}
this.actor.visible = any;
}
};
function main(metadata, orientation, panel_height, instance_id) {
let myApplet = new MyApplet(orientation, panel_height, instance_id);
return myApplet;
}
Cinnamon-3.6.7/files/usr/share/cinnamon/applets/xrandr@cinnamon.org/ 0000775 0001750 0001750 00000000000 13215735076 024424 5 ustar fabio fabio Cinnamon-3.6.7/files/usr/share/cinnamon/applets/xrandr@cinnamon.org/stylesheet.css 0000664 0001750 0001750 00000000055 13215735076 027327 0 ustar fabio fabio .display-subtitle {
font-weight: bold;
}
Cinnamon-3.6.7/files/usr/share/cinnamon/applets/xrandr@cinnamon.org/metadata.json 0000664 0001750 0001750 00000000263 13215735076 027100 0 ustar fabio fabio {
"uuid": "xrandr@cinnamon.org",
"name": "Display",
"description": "XRandR monitor control applet",
"icon": "preferences-desktop-display",
"localedir": "/usr/share/locale"
}
Cinnamon-3.6.7/files/usr/share/cinnamon/applets/xrandr@cinnamon.org/applet.js 0000664 0001750 0001750 00000012107 13215735076 026250 0 ustar fabio fabio /* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */
const Interfaces = imports.misc.interfaces;
const Gdk = imports.gi.Gdk;
const GLib = imports.gi.GLib;
const CinnamonDesktop = imports.gi.CinnamonDesktop;
const Lang = imports.lang;
const Applet = imports.ui.applet;
const PopupMenu = imports.ui.popupMenu;
const N_ = function(e) { return e; };
const possibleRotations = [ CinnamonDesktop.RRRotation.ROTATION_0,
CinnamonDesktop.RRRotation.ROTATION_90,
CinnamonDesktop.RRRotation.ROTATION_180,
CinnamonDesktop.RRRotation.ROTATION_270
];
let rotations = [ [ CinnamonDesktop.RRRotation.ROTATION_0, N_("Normal") ],
[ CinnamonDesktop.RRRotation.ROTATION_90, N_("Left") ],
[ CinnamonDesktop.RRRotation.ROTATION_270, N_("Right") ],
[ CinnamonDesktop.RRRotation.ROTATION_180, N_("Upside-down") ]
];
function MyApplet(orientation, panel_height, instance_id) {
this._init(orientation, panel_height, instance_id);
}
MyApplet.prototype = {
__proto__: Applet.IconApplet.prototype,
_init: function(orientation, panel_height, instance_id) {
Applet.IconApplet.prototype._init.call(this, orientation, panel_height, instance_id);
try {
this.set_applet_icon_symbolic_name("preferences-desktop-display");
this.set_applet_tooltip(_("Display"));
this.menuManager = new PopupMenu.PopupMenuManager(this);
this.menu = new Applet.AppletPopupMenu(this, orientation);
this.menuManager.addMenu(this.menu);
Interfaces.getDBusProxyAsync("org.cinnamon.SettingsDaemon.XRANDR_2", Lang.bind(this, function(proxy, error) {
this._proxy = proxy;
}));
try {
this._screen = new CinnamonDesktop.RRScreen({ gdk_screen: Gdk.Screen.get_default() });
this._screen.init(null);
} catch(e) {
// an error means there is no XRandR extension
global.logError(e);
this.actor.hide();
return;
}
this._createMenu();
this._screen.connect('changed', Lang.bind(this, this._randrEvent));
}
catch (e) {
global.logError(e);
}
},
on_applet_clicked: function(event) {
this.menu.toggle();
},
_randrEvent: function() {
this.menu.removeAll();
this._createMenu();
},
_createMenu: function() {
let config = CinnamonDesktop.RRConfig.new_current(this._screen);
let outputs = config.get_outputs();
for (let i = 0; i < outputs.length; i++) {
if (outputs[i].is_connected())
this._addOutputItem(config, outputs[i]);
}
this.menu.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
this.menu.addAction(_("Configure display settings..."), function() {
GLib.spawn_command_line_async('cinnamon-settings display');
});
},
_addOutputItem: function(config, output) {
let item = new PopupMenu.PopupMenuItem("%s (%s)".format(output.get_display_name(), output.get_name()));
item.label.add_style_class_name('display-subtitle');
item.actor.reactive = false;
item.actor.can_focus = false;
this.menu.addMenuItem(item);
let allowedRotations = this._getAllowedRotations(config, output);
let currentRotation = output.get_rotation();
for (let i = 0; i < rotations.length; i++) {
let [bitmask, name] = rotations[i];
if (bitmask & allowedRotations) {
let item = new PopupMenu.PopupMenuItem(_(name));
if (bitmask & currentRotation)
item.setShowDot(true);
item.connect('activate', Lang.bind(this, function(item, event) {
/* ensure config is saved so we get a backup if anything goes wrong */
config.save();
output.set_rotation(bitmask);
try {
config.save();
this._proxy.ApplyConfigurationRemote(0, event.get_time());
} catch (e) {
global.logError('Could not save monitor configuration', e);
}
}));
this.menu.addMenuItem(item);
}
}
},
_getAllowedRotations: function(config, output) {
let retval = 0;
let current = output.get_rotation();
for (let i = 0; i < possibleRotations.length; i++) {
output.set_rotation(possibleRotations[i]);
if (config.applicable(this._screen)) {
retval |= possibleRotations[i];
}
}
output.set_rotation(current);
if (retval.length == 0) {
// what, no rotation?
// what's current then?
retval = current;
}
return retval;
}
};
function main(metadata, orientation, panel_height, instance_id) {
let myApplet = new MyApplet(orientation, panel_height, instance_id);
return myApplet;
}
Cinnamon-3.6.7/files/usr/share/cinnamon/applets/user@cinnamon.org/ 0000775 0001750 0001750 00000000000 13215735076 024104 5 ustar fabio fabio Cinnamon-3.6.7/files/usr/share/cinnamon/applets/user@cinnamon.org/settings-schema.json 0000664 0001750 0001750 00000000171 13215735076 030074 0 ustar fabio fabio {
"display-name" : {
"type" : "switch",
"default" : false,
"description": "Display user name on panel"
}
}
Cinnamon-3.6.7/files/usr/share/cinnamon/applets/user@cinnamon.org/stylesheet.css 0000664 0001750 0001750 00000000274 13215735076 027012 0 ustar fabio fabio .user-box {
padding: .4em 1.75em;
spacing: 6px;
}
.user-icon {
border-radius: 4px;
border: 2px solid #a5a5a5;
}
.user-label {
color: #fff;
font-size: 16px;
margin: 6px;
}
Cinnamon-3.6.7/files/usr/share/cinnamon/applets/user@cinnamon.org/icons/ 0000775 0001750 0001750 00000000000 13215735076 025217 5 ustar fabio fabio Cinnamon-3.6.7/files/usr/share/cinnamon/applets/user@cinnamon.org/icons/logout-symbolic.svg 0000664 0001750 0001750 00000006152 13215735076 031074 0 ustar fabio fabio
Cinnamon-3.6.7/files/usr/share/cinnamon/applets/user@cinnamon.org/icons/shutdown-symbolic.svg 0000664 0001750 0001750 00000002773 13215735076 031443 0 ustar fabio fabio
Cinnamon-3.6.7/files/usr/share/cinnamon/applets/user@cinnamon.org/icons/switch-user-symbolic.svg 0000664 0001750 0001750 00000002520 13215735076 032033 0 ustar fabio fabio
Cinnamon-3.6.7/files/usr/share/cinnamon/applets/user@cinnamon.org/icons/guest-session-symbolic.svg 0000664 0001750 0001750 00000001645 13215735076 032375 0 ustar fabio fabio
Cinnamon-3.6.7/files/usr/share/cinnamon/applets/user@cinnamon.org/icons/lock-screen-symbolic.svg 0000664 0001750 0001750 00000000514 13215735076 031764 0 ustar fabio fabio
Cinnamon-3.6.7/files/usr/share/cinnamon/applets/user@cinnamon.org/metadata.json 0000664 0001750 0001750 00000000353 13215735076 026560 0 ustar fabio fabio {
"description": "An applet to access your account details, switch users and quickly logout or power off the computer",
"uuid": "user@cinnamon.org",
"name": "User Applet",
"icon": "cs-user",
"max-instances": -1
}
Cinnamon-3.6.7/files/usr/share/cinnamon/applets/user@cinnamon.org/applet.js 0000664 0001750 0001750 00000017260 13215735076 025735 0 ustar fabio fabio const Applet = imports.ui.applet;
const Lang = imports.lang;
const St = imports.gi.St;
const PopupMenu = imports.ui.popupMenu;
const Util = imports.misc.util;
const GLib = imports.gi.GLib;
const Gio = imports.gi.Gio;
const AccountsService = imports.gi.AccountsService;
const GnomeSession = imports.misc.gnomeSession;
const ScreenSaver = imports.misc.screenSaver;
const Settings = imports.ui.settings;
function MyApplet(orientation, panel_height, instance_id) {
this._init(orientation, panel_height, instance_id);
}
MyApplet.prototype = {
__proto__: Applet.TextIconApplet.prototype,
_init: function(orientation, panel_height, instance_id) {
Applet.TextIconApplet.prototype._init.call(this, orientation, panel_height, instance_id);
this.setAllowedLayout(Applet.AllowedLayout.BOTH);
try {
this._session = new GnomeSession.SessionManager();
this._screenSaverProxy = new ScreenSaver.ScreenSaverProxy();
this.settings = new Settings.AppletSettings(this, "user@cinnamon.org", instance_id);
this.set_applet_icon_symbolic_name("avatar-default");
this.menuManager = new PopupMenu.PopupMenuManager(this);
this.menu = new Applet.AppletPopupMenu(this, orientation);
this.menuManager.addMenu(this.menu);
this._contentSection = new PopupMenu.PopupMenuSection();
this.menu.addMenuItem(this._contentSection);
let userBox = new St.BoxLayout({ style_class: 'user-box', reactive: true, vertical: false });
this._userIcon = new St.Bin({ style_class: 'user-icon'});
this.settings.bind("display-name", "disp_name", this._updateLabel);
userBox.connect('button-press-event', Lang.bind(this, function() {
this.menu.toggle();
Util.spawnCommandLine("cinnamon-settings user");
}));
this._userIcon.hide();
userBox.add(this._userIcon,
{ x_fill: true,
y_fill: false,
x_align: St.Align.END,
y_align: St.Align.START });
this.userLabel = new St.Label(({ style_class: 'user-label'}));
userBox.add(this.userLabel,
{ x_fill: true,
y_fill: false,
x_align: St.Align.END,
y_align: St.Align.MIDDLE });
this.menu.addActor(userBox);
this.menu.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
let item = new PopupMenu.PopupIconMenuItem(_("System Settings"), "preferences-system", St.IconType.SYMBOLIC);
item.connect('activate', Lang.bind(this, function() {
Util.spawnCommandLine("cinnamon-settings");
}));
this.menu.addMenuItem(item);
this.menu.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
item = new PopupMenu.PopupIconMenuItem(_("Lock Screen"), "lock-screen", St.IconType.SYMBOLIC);
item.connect('activate', Lang.bind(this, function() {
let screensaver_settings = new Gio.Settings({ schema_id: "org.cinnamon.desktop.screensaver" });
let screensaver_dialog = Gio.file_new_for_path("/usr/bin/cinnamon-screensaver-command");
if (screensaver_dialog.query_exists(null)) {
if (screensaver_settings.get_boolean("ask-for-away-message")) {
Util.spawnCommandLine("cinnamon-screensaver-lock-dialog");
}
else {
Util.spawnCommandLine("cinnamon-screensaver-command --lock");
}
}
else {
this._screenSaverProxy.LockRemote();
}
}));
this.menu.addMenuItem(item);
if (GLib.getenv("XDG_SEAT_PATH")) {
// LightDM
item = new PopupMenu.PopupIconMenuItem(_("Switch User"), "switch-user", St.IconType.SYMBOLIC);
item.connect('activate', Lang.bind(this, function() {
Util.spawnCommandLine("cinnamon-screensaver-command --lock");
Util.spawnCommandLine("dm-tool switch-to-greeter");
}));
this.menu.addMenuItem(item);
}
else if (GLib.file_test("/usr/bin/mdmflexiserver", GLib.FileTest.EXISTS)) {
// MDM
item = new PopupMenu.PopupIconMenuItem(_("Switch User"), "switch-user", St.IconType.SYMBOLIC);
item.connect('activate', Lang.bind(this, function() {
Util.spawnCommandLine("mdmflexiserver");
}));
this.menu.addMenuItem(item);
}
else if (GLib.file_test("/usr/bin/gdmflexiserver", GLib.FileTest.EXISTS)) {
// GDM
item = new PopupMenu.PopupIconMenuItem(_("Switch User"), "switch-user", St.IconType.SYMBOLIC);
item.connect('activate', Lang.bind(this, function() {
Util.spawnCommandLine("cinnamon-screensaver-command --lock");
Util.spawnCommandLine("gdmflexiserver");
}));
this.menu.addMenuItem(item);
}
item = new PopupMenu.PopupIconMenuItem(_("Log Out..."), "logout", St.IconType.SYMBOLIC);
item.connect('activate', Lang.bind(this, function() {
this._session.LogoutRemote(0);
}));
this.menu.addMenuItem(item);
this.menu.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
item = new PopupMenu.PopupIconMenuItem(_("Power Off..."), "shutdown", St.IconType.SYMBOLIC);
item.connect('activate', Lang.bind(this, function() {
this._session.ShutdownRemote();
}));
this.menu.addMenuItem(item);
this._user = AccountsService.UserManager.get_default().get_user(GLib.get_user_name());
this._userLoadedId = this._user.connect('notify::is_loaded', Lang.bind(this, this._onUserChanged));
this._userChangedId = this._user.connect('changed', Lang.bind(this, this._onUserChanged));
this._onUserChanged();
this.set_show_label_in_vertical_panels(false);
}
catch (e) {
global.logError(e);
}
},
on_applet_clicked: function(event) {
this.menu.toggle();
},
_updateLabel: function() {
if (this.disp_name) {
this.set_applet_label(this._user.get_real_name());
} else {
this.set_applet_label("");
}
},
_onUserChanged: function() {
if (this._user.is_loaded) {
this.set_applet_tooltip(this._user.get_real_name());
this.userLabel.set_text (this._user.get_real_name());
if (this._userIcon) {
let iconFileName = this._user.get_icon_file();
let iconFile = Gio.file_new_for_path(iconFileName);
let icon;
if (iconFile.query_exists(null)) {
icon = new Gio.FileIcon({file: iconFile});
} else {
icon = new Gio.ThemedIcon({name: 'avatar-default'});
}
let img = St.TextureCache.get_default().load_gicon(null, icon, 48);
this._userIcon.set_child (img);
this._userIcon.show();
}
this._updateLabel();
}
},
on_applet_removed_from_panel: function() {
this.settings.finalize();
}
};
function main(metadata, orientation, panel_height, instance_id) {
let myApplet = new MyApplet(orientation, panel_height, instance_id);
return myApplet;
}
Cinnamon-3.6.7/files/usr/share/cinnamon/cinnamon-settings-users/ 0000775 0001750 0001750 00000000000 13215735076 023644 5 ustar fabio fabio Cinnamon-3.6.7/files/usr/share/cinnamon/cinnamon-settings-users/cinnamon-settings-users.ui 0000664 0001750 0001750 00000024723 13215735076 031012 0 ustar fabio fabio
Cinnamon-3.6.7/files/usr/share/cinnamon/cinnamon-settings-users/cinnamon-settings-users.py 0000775 0001750 0001750 00000113121 13215735076 031017 0 ustar fabio fabio #!/usr/bin/python2
import os
import sys
import pwd
import grp
import gettext
import shutil
import re
import subprocess
from random import randint
import PIL
from PIL import Image
import gi
gi.require_version("Gtk", "3.0")
gi.require_version("AccountsService", "1.0")
from gi.repository import Gtk, GObject, Gio, GdkPixbuf, AccountsService, GLib
gettext.install("cinnamon", "/usr/share/locale")
(INDEX_USER_OBJECT, INDEX_USER_PICTURE, INDEX_USER_DESCRIPTION) = range(3)
(INDEX_GID, INDEX_GROUPNAME) = range(2)
class GroupDialog (Gtk.Dialog):
def __init__ (self, label, value, parent = None):
super(GroupDialog, self).__init__(None, parent)
try:
self.set_modal(True)
self.set_skip_taskbar_hint(True)
self.set_skip_pager_hint(True)
self.set_title("")
table = DimmedTable()
table.add_labels([label])
self.entry = Gtk.Entry()
self.entry.set_text(value)
self.entry.connect("changed", self._on_entry_changed)
table.add_controls([self.entry])
self.set_border_width(6)
box = self.get_content_area()
box.add(table)
self.show_all()
self.add_buttons(Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL, Gtk.STOCK_OK, Gtk.ResponseType.OK, )
self.set_response_sensitive(Gtk.ResponseType.OK, False)
except Exception, detail:
print detail
def _on_entry_changed(self, entry):
name = entry.get_text()
if " " in name or name.lower() != name:
entry.set_icon_from_stock(Gtk.EntryIconPosition.SECONDARY, Gtk.STOCK_DIALOG_WARNING)
entry.set_icon_tooltip_text(Gtk.EntryIconPosition.SECONDARY, _("The group name cannot contain upper-case or space characters"))
self.set_response_sensitive(Gtk.ResponseType.OK, False)
else:
entry.set_icon_from_stock(Gtk.EntryIconPosition.SECONDARY, None)
self.set_response_sensitive(Gtk.ResponseType.OK, True)
if entry.get_text() == "":
self.set_response_sensitive(Gtk.ResponseType.OK, False)
class DimmedTable (Gtk.Table):
def __init__ (self):
super(DimmedTable, self).__init__()
self.set_border_width(6)
self.set_row_spacings(8)
self.set_col_spacings(15)
def add_labels(self, texts):
row = 0
for text in texts:
if text != None:
label = Gtk.Label(text)
label.set_alignment(1, 0.5)
label.get_style_context().add_class("dim-label")
self.attach(label, 0, 1, row, row+1, xoptions=Gtk.AttachOptions.EXPAND|Gtk.AttachOptions.FILL)
row = row + 1
def add_controls(self, controls):
row = 0
for control in controls:
self.attach(control, 1, 2, row, row+1)
row = row + 1
class EditableEntry (Gtk.Notebook):
__gsignals__ = {
'changed': (GObject.SIGNAL_RUN_FIRST, None,
(str,))
}
PAGE_BUTTON = 0
PAGE_ENTRY = 1
def __init__ (self):
super(EditableEntry, self).__init__()
self.label = Gtk.Label()
self.entry = Gtk.Entry()
self.button = Gtk.Button()
self.button.set_alignment(0.0, 0.5)
self.button.set_relief(Gtk.ReliefStyle.NONE)
self.append_page(self.button, None);
self.append_page(self.entry, None);
self.set_current_page(0)
self.set_show_tabs(False)
self.set_show_border(False)
self.editable = False
self.show_all()
self.button.connect("released", self._on_button_clicked)
self.button.connect("activate", self._on_button_clicked)
self.entry.connect("activate", self._on_entry_validated)
self.entry.connect("changed", self._on_entry_changed)
def set_text(self, text):
self.button.set_label(text)
self.entry.set_text(text)
def _on_button_clicked(self, button):
self.set_editable(True)
def _on_entry_validated(self, entry):
self.set_editable(False)
self.emit("changed", entry.get_text())
def _on_entry_changed(self, entry):
self.button.set_label(entry.get_text())
def set_editable(self, editable):
if (editable):
self.set_current_page(EditableEntry.PAGE_ENTRY)
else:
self.set_current_page(EditableEntry.PAGE_BUTTON)
self.editable = editable
def set_tooltip_text(self, tooltip):
self.button.set_tooltip_text(tooltip)
def get_editable(self):
return self.editable
def get_text(self):
return self.entry.get_text()
class PasswordDialog(Gtk.Dialog):
def __init__ (self, user, password_mask, group_mask, parent = None):
super(PasswordDialog, self).__init__(None, parent)
self.user = user
self.password_mask = password_mask
self.group_mask = group_mask
self.set_modal(True)
self.set_skip_taskbar_hint(True)
self.set_skip_pager_hint(True)
self.set_title(_("Change Password"))
table = DimmedTable()
table.add_labels([_("New password"), None, _("Confirm password")])
self.new_password = Gtk.Entry()
self.new_password.set_icon_from_icon_name(Gtk.EntryIconPosition.SECONDARY, "view-refresh")
self.new_password.set_icon_tooltip_text(Gtk.EntryIconPosition.SECONDARY, _("Generate a password"))
self.new_password.connect("icon-release", self._on_new_password_icon_released)
self.new_password.connect("changed", self._on_passwords_changed)
table.attach(self.new_password, 1, 3, 0, 1)
self.strengh_indicator = Gtk.ProgressBar()
self.strengh_indicator.set_tooltip_text(_("Your new password needs to be at least 8 characters long"))
self.strengh_indicator.set_fraction(0.0)
table.attach(self.strengh_indicator, 1, 2, 1, 2, xoptions=Gtk.AttachOptions.EXPAND|Gtk.AttachOptions.FILL)
self.strengh_indicator.set_size_request(-1, 1)
self.strengh_label = Gtk.Label()
self.strengh_label.set_tooltip_text(_("Your new password needs to be at least 8 characters long"))
self.strengh_label.set_alignment(1, 0.5)
table.attach(self.strengh_label, 2, 3, 1, 2)
self.confirm_password = Gtk.Entry()
self.confirm_password.connect("changed", self._on_passwords_changed)
table.attach(self.confirm_password, 1, 3, 2, 3)
self.show_password = Gtk.CheckButton(_("Show password"))
self.show_password.connect('toggled', self._on_show_password_toggled)
table.attach(self.show_password, 1, 3, 3, 4)
self.set_border_width(6)
box = self.get_content_area()
box.add(table)
self.show_all()
self.infobar = Gtk.InfoBar()
self.infobar.set_message_type(Gtk.MessageType.ERROR)
label = Gtk.Label(_("An error occurred. Your password was not changed."))
content = self.infobar.get_content_area()
content.add(label)
table.attach(self.infobar, 0, 3, 4, 5)
self.add_buttons(Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL, _("Change"), Gtk.ResponseType.OK, )
self.set_passwords_visibility()
self.set_response_sensitive(Gtk.ResponseType.OK, False)
self.infobar.hide()
self.connect("response", self._on_response)
def _on_response(self, dialog, response_id):
if response_id == Gtk.ResponseType.OK:
self.change_password()
else:
self.destroy()
def change_password(self):
newpass = self.new_password.get_text()
self.user.set_password(newpass, "")
mask = self.group_mask.get_text()
if "nopasswdlogin" in mask:
subprocess.call(["gpasswd", "-d", self.user.get_user_name(), "nopasswdlogin"])
mask = mask.split(", ")
mask.remove("nopasswdlogin")
mask = ", ".join(mask)
self.group_mask.set_text(mask)
self.password_mask.set_text(u'\u2022\u2022\u2022\u2022\u2022\u2022')
self.destroy()
def set_passwords_visibility(self):
visible = self.show_password.get_active()
self.new_password.set_visibility(visible)
self.confirm_password.set_visibility(visible)
def _on_new_password_icon_released(self, widget, icon_pos, event):
self.infobar.hide()
self.show_password.set_active(True)
characters = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_-"
newpass = ""
for i in range (8):
index = randint(0, len(characters) -1)
newpass = newpass + characters[index]
self.new_password.set_text(newpass)
self.confirm_password.set_text(newpass)
self.check_passwords()
def _on_show_password_toggled(self, widget):
self.set_passwords_visibility()
# Based on setPasswordStrength() in Mozilla Seamonkey, which is tri-licensed under MPL 1.1, GPL 2.0, and LGPL 2.1.
# Forked from Ubiquity validation.py
def password_strength(self, password):
upper = lower = digit = symbol = 0
for char in password:
if char.isdigit():
digit += 1
elif char.islower():
lower += 1
elif char.isupper():
upper += 1
else:
symbol += 1
length = len(password)
length = min(length,4)
digit = min(digit,3)
upper = min(upper,3)
symbol = min(symbol,3)
strength = (
((length * 0.1) - 0.2) +
(digit * 0.1) +
(symbol * 0.15) +
(upper * 0.1))
if strength > 1:
strength = 1
if strength < 0:
strength = 0
return strength
def _on_passwords_changed(self, widget):
self.infobar.hide()
new_password = self.new_password.get_text()
confirm_password = self.confirm_password.get_text()
strength = self.password_strength(new_password)
if new_password != confirm_password:
self.confirm_password.set_icon_from_stock(Gtk.EntryIconPosition.SECONDARY, Gtk.STOCK_DIALOG_WARNING)
self.confirm_password.set_icon_tooltip_text(Gtk.EntryIconPosition.SECONDARY, _("Passwords do not match"))
else:
self.confirm_password.set_icon_from_stock(Gtk.EntryIconPosition.SECONDARY, None)
if len(new_password) < 8:
self.strengh_label.set_text(_("Too short"))
self.strengh_indicator.set_fraction(0.0)
elif strength < 0.5:
self.strengh_label.set_text(_("Weak"))
self.strengh_indicator.set_fraction(0.2)
elif strength < 0.75:
self.strengh_label.set_text(_("Fair"))
self.strengh_indicator.set_fraction(0.4)
elif strength < 0.9:
self.strengh_label.set_text(_("Good"))
self.strengh_indicator.set_fraction(0.6)
else:
self.strengh_label.set_text(_("Strong"))
self.strengh_indicator.set_fraction(1.0)
self.check_passwords()
def check_passwords(self):
new_password = self.new_password.get_text()
confirm_password = self.confirm_password.get_text()
if len(new_password) >= 8 and new_password == confirm_password:
self.set_response_sensitive(Gtk.ResponseType.OK, True)
else:
self.set_response_sensitive(Gtk.ResponseType.OK, False)
class NewUserDialog(Gtk.Dialog):
def __init__ (self, parent = None):
super(NewUserDialog, self).__init__(None, parent)
try:
self.set_modal(True)
self.set_skip_taskbar_hint(True)
self.set_skip_pager_hint(True)
self.set_title("")
self.account_type_combo = Gtk.ComboBoxText()
self.account_type_combo.append_text(_("Standard"))
self.account_type_combo.append_text(_("Administrator"))
self.account_type_combo.set_active(0)
self.realname_entry = Gtk.Entry()
self.realname_entry.connect("changed", self._on_info_changed)
self.username_entry = Gtk.Entry()
self.username_entry.connect("changed", self._on_info_changed)
label = Gtk.Label()
label.set_markup(_("The username must consist of only:\n - lower case letters (a-z)\n - numerals (0-9)\n - '.', '-', and '_' characters"))
table = DimmedTable()
table.add_labels([_("Account Type"), _("Full Name"), _("Username")])
table.add_controls([self.account_type_combo, self.realname_entry, self.username_entry])
self.set_border_width(6)
box = self.get_content_area()
box.add(table)
box.add(label)
self.show_all()
self.add_buttons(Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL, Gtk.STOCK_ADD, Gtk.ResponseType.OK, )
self.set_response_sensitive(Gtk.ResponseType.OK, False)
except Exception, detail:
print detail
def _on_info_changed(self, widget):
fullname = self.realname_entry.get_text()
username = self.username_entry.get_text()
valid = True
if re.search('[^a-z0-9_.-]', username):
self.username_entry.set_icon_from_stock(Gtk.EntryIconPosition.SECONDARY, Gtk.STOCK_DIALOG_WARNING)
self.username_entry.set_icon_tooltip_text(Gtk.EntryIconPosition.SECONDARY, _("Invalid username"))
valid = False
else:
self.username_entry.set_icon_from_stock(Gtk.EntryIconPosition.SECONDARY, None)
if username == "" or fullname == "":
valid = False
self.set_response_sensitive(Gtk.ResponseType.OK, valid)
class GroupsDialog(Gtk.Dialog):
def __init__ (self, username, parent = None):
super(GroupsDialog, self).__init__(None, parent)
try:
self.set_modal(True)
self.set_skip_taskbar_hint(True)
self.set_skip_pager_hint(True)
self.set_title("")
self.set_default_size(200, 480)
scrolled = Gtk.ScrolledWindow()
viewport = Gtk.Viewport()
vbox = Gtk.VBox()
self.checkboxes = []
groups = sorted(grp.getgrall(), key=lambda x: x[0], reverse=False)
for group in groups:
checkbox = Gtk.CheckButton(group[0])
self.checkboxes.append(checkbox)
vbox.add(checkbox)
if username in group[3]:
checkbox.set_active(True)
viewport.add(vbox)
scrolled.add(viewport)
self.set_border_width(6)
box = self.get_content_area()
box.pack_start(scrolled, True, True, 0)
self.show_all()
self.add_buttons(Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL, Gtk.STOCK_OK, Gtk.ResponseType.OK, )
except Exception, detail:
print detail
def get_selected_groups(self):
groups = []
for checkbox in self.checkboxes:
if checkbox.get_active():
groups.append(checkbox.get_label())
return groups
class Module:
def __init__(self):
try:
self.builder = Gtk.Builder()
self.builder.add_from_file("/usr/share/cinnamon/cinnamon-settings-users/cinnamon-settings-users.ui")
self.window = self.builder.get_object("main_window")
self.window.connect("destroy", Gtk.main_quit)
self.window.set_title(_("Users and Groups"))
self.builder.get_object("label_users").set_label(_("Users"))
self.builder.get_object("label_groups").set_label(_("Groups"))
self.builder.get_object("button_add_user").connect("clicked", self.on_user_addition)
self.builder.get_object("button_delete_user").connect("clicked", self.on_user_deletion)
self.builder.get_object("button_add_group").connect("clicked", self.on_group_addition)
self.builder.get_object("button_edit_group").connect("clicked", self.on_group_edition)
self.builder.get_object("button_delete_group").connect("clicked", self.on_group_deletion)
self.users = Gtk.TreeStore(object, GdkPixbuf.Pixbuf, str)
self.users.set_sort_column_id(2, Gtk.SortType.ASCENDING)
self.groups = Gtk.TreeStore(int, str)
self.groups.set_sort_column_id(1, Gtk.SortType.ASCENDING)
self.users_treeview = self.builder.get_object("treeview_users")
self.users_treeview.set_rules_hint(True)
self.groups_treeview = self.builder.get_object("treeview_groups")
self.users_treeview.get_selection().connect("changed", self.on_user_selection)
self.groups_treeview.get_selection().connect("changed", self.on_group_selection)
column = Gtk.TreeViewColumn()
cell = Gtk.CellRendererPixbuf()
column.pack_start(cell, True)
column.add_attribute(cell, 'pixbuf', INDEX_USER_PICTURE)
cell.set_property('ypad', 1)
self.users_treeview.append_column(column)
column = Gtk.TreeViewColumn()
cell = Gtk.CellRendererText()
column.pack_start(cell, True)
column.add_attribute(cell, 'markup', INDEX_USER_DESCRIPTION)
self.users_treeview.append_column(column)
column = Gtk.TreeViewColumn()
cell = Gtk.CellRendererText()
column.pack_start(cell, True)
column.add_attribute(cell, 'text', INDEX_GROUPNAME)
column.set_sort_column_id(1)
self.groups_treeview.append_column(column)
self.builder.get_object("button_delete_user").set_sensitive(False)
self.builder.get_object("button_edit_group").set_sensitive(False)
self.builder.get_object("button_delete_group").set_sensitive(False)
self.face_button = Gtk.Button()
self.face_image = Gtk.Image()
self.face_image.set_size_request(96, 96)
self.face_button.set_image(self.face_image)
self.face_image.set_from_file("/usr/share/cinnamon/faces/user-generic.png")
self.face_button.set_alignment(0.0, 0.5)
self.face_button.set_tooltip_text(_("Click to change the picture"))
self.menu = Gtk.Menu()
separator = Gtk.SeparatorMenuItem()
face_browse_menuitem = Gtk.MenuItem(_("Browse for more pictures..."))
face_browse_menuitem.connect('activate', self._on_face_browse_menuitem_activated)
self.face_button.connect("button-release-event", self.menu_display)
row = 0
col = 0
num_cols = 4
face_dirs = ["/usr/share/cinnamon/faces"]
for face_dir in face_dirs:
if os.path.exists(face_dir):
pictures = sorted(os.listdir(face_dir))
for picture in pictures:
path = os.path.join(face_dir, picture)
file = Gio.File.new_for_path(path)
file_icon = Gio.FileIcon.new(file)
image = Gtk.Image.new_from_gicon (file_icon, Gtk.IconSize.DIALOG)
menuitem = Gtk.MenuItem()
menuitem.add(image)
menuitem.connect('activate', self._on_face_menuitem_activated, path)
self.menu.attach(menuitem, col, col+1, row, row+1)
col = (col+1) % num_cols
if (col == 0):
row = row + 1
row = row + 1
self.menu.attach(separator, 0, 4, row, row+1)
self.menu.attach(face_browse_menuitem, 0, 4, row+2, row+3)
self.account_type_combo = Gtk.ComboBoxText()
self.account_type_combo.append_text(_("Standard"))
self.account_type_combo.append_text(_("Administrator"))
self.account_type_combo.connect("changed", self._on_accounttype_changed)
self.realname_entry = EditableEntry()
self.realname_entry.connect("changed", self._on_realname_changed)
self.realname_entry.set_tooltip_text(_("Click to change the name"))
self.password_mask = Gtk.Label()
self.password_mask.set_alignment(0.0, 0.5)
self.password_button = Gtk.Button()
self.password_button.add(self.password_mask)
self.password_button.set_relief(Gtk.ReliefStyle.NONE)
self.password_button.set_tooltip_text(_("Click to change the password"))
self.password_button.connect('activate', self._on_password_button_clicked)
self.password_button.connect('released', self._on_password_button_clicked)
self.groups_label = Gtk.Label()
self.groups_label.set_line_wrap(True)
self.groups_label.set_alignment(0, 0.5)
self.groups_button = Gtk.Button()
self.groups_button.add(self.groups_label)
self.groups_button.set_relief(Gtk.ReliefStyle.NONE)
self.groups_button.set_tooltip_text(_("Click to change the groups"))
self.groups_button.connect("clicked", self._on_groups_button_clicked)
box = Gtk.Box()
box.pack_start(self.face_button, False, False, 0)
table = DimmedTable()
table.add_labels([_("Picture"), _("Account Type"), _("Name"), _("Password"), _("Groups")])
table.add_controls([box, self.account_type_combo, self.realname_entry, self.password_button, self.groups_button])
self.builder.get_object("box_users").add(table)
self.accountService = AccountsService.UserManager.get_default()
self.accountService.connect('notify::is-loaded', self.on_accounts_service_loaded)
self.load_groups()
self.window.show_all()
self.builder.get_object("box_users").hide()
except Exception, detail:
print detail
def _on_password_button_clicked(self, widget):
model, treeiter = self.users_treeview.get_selection().get_selected()
if treeiter != None:
user = model[treeiter][INDEX_USER_OBJECT]
dialog = PasswordDialog(user, self.password_mask, self.groups_label, self.window)
response = dialog.run()
def _on_groups_button_clicked(self, widget):
model, treeiter = self.users_treeview.get_selection().get_selected()
if treeiter != None:
user = model[treeiter][INDEX_USER_OBJECT]
dialog = GroupsDialog(user.get_user_name(), self.window)
response = dialog.run()
if response == Gtk.ResponseType.OK:
groups = dialog.get_selected_groups()
subprocess.call(["usermod", user.get_user_name(), "-G", ",".join(groups)])
groups.sort()
self.groups_label.set_text(", ".join(groups))
dialog.destroy()
def _on_accounttype_changed(self, combobox):
model, treeiter = self.users_treeview.get_selection().get_selected()
if treeiter != None:
user = model[treeiter][INDEX_USER_OBJECT]
if self.account_type_combo.get_active() == 1:
user.set_account_type(AccountsService.UserAccountType.ADMINISTRATOR)
else:
user.set_account_type(AccountsService.UserAccountType.STANDARD)
groups = []
for group in grp.getgrall():
if user.get_user_name() in group[3]:
groups.append(group[0])
groups.sort()
self.groups_label.set_text(", ".join(groups))
def _on_realname_changed(self, widget, text):
model, treeiter = self.users_treeview.get_selection().get_selected()
if treeiter != None:
user = model[treeiter][INDEX_USER_OBJECT]
user.set_real_name(text)
description = "%s\n%s" % (text, user.get_user_name())
model.set_value(treeiter, INDEX_USER_DESCRIPTION, description)
def _on_face_browse_menuitem_activated(self, menuitem):
model, treeiter = self.users_treeview.get_selection().get_selected()
if treeiter != None:
user = model[treeiter][INDEX_USER_OBJECT]
dialog = Gtk.FileChooserDialog(None, None, Gtk.FileChooserAction.OPEN, (Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL, Gtk.STOCK_OPEN, Gtk.ResponseType.OK))
filter = Gtk.FileFilter()
filter.set_name(_("Images"))
filter.add_mime_type("image/*")
dialog.add_filter(filter)
box = Gtk.Box(orientation=Gtk.Orientation.VERTICAL)
self.frame = Gtk.Frame(visible=False, no_show_all=True)
preview = Gtk.Image(visible=True)
box.pack_start(self.frame, False, False, 0)
self.frame.add(preview)
dialog.set_preview_widget(box)
dialog.set_preview_widget_active(True)
dialog.set_use_preview_label(False)
box.set_margin_end(12)
box.set_margin_top(12)
box.set_size_request(128, -1)
dialog.connect("update-preview", self.update_preview_cb, preview)
response = dialog.run()
if response == Gtk.ResponseType.OK:
path = dialog.get_filename()
image = PIL.Image.open(path)
image.thumbnail((96, 96), Image.ANTIALIAS)
face_path = os.path.join(user.get_home_dir(), ".face")
image.save(face_path, "png")
user.set_icon_file(face_path)
self.face_image.set_from_file(face_path)
model.set_value(treeiter, INDEX_USER_PICTURE, GdkPixbuf.Pixbuf.new_from_file_at_size(face_path, 48, 48))
model.row_changed(model.get_path(treeiter), treeiter)
dialog.destroy()
def update_preview_cb (self, dialog, preview):
# Different widths make the dialog look really crappy as it resizes -
# constrain the width and adjust the height to keep perspective.
filename = dialog.get_preview_filename()
if filename is not None:
if os.path.isfile(filename):
try:
pixbuf = GdkPixbuf.Pixbuf.new_from_file_at_size(filename, 128, 128)
if pixbuf is not None:
preview.set_from_pixbuf(pixbuf)
self.frame.show()
return
except GLib.Error as e:
print("Unable to generate preview for file '%s' - %s\n" % (filename, e.message))
preview.clear()
self.frame.hide()
def _on_face_menuitem_activated(self, menuitem, path):
if os.path.exists(path):
model, treeiter = self.users_treeview.get_selection().get_selected()
if treeiter != None:
user = model[treeiter][INDEX_USER_OBJECT]
user.set_icon_file(path)
self.face_image.set_from_file(path)
shutil.copy(path, os.path.join(user.get_home_dir(), ".face"))
model.set_value(treeiter, INDEX_USER_PICTURE, GdkPixbuf.Pixbuf.new_from_file_at_size(path, 48, 48))
model.row_changed(model.get_path(treeiter), treeiter)
def menu_display(self, widget, event):
if event.button == 1:
self.menu.popup(None, None, self.popup_menu_below_button, self.face_button, event.button, event.time)
self.menu.show_all()
def popup_menu_below_button (self, *args):
# the introspection for GtkMenuPositionFunc seems to change with each Gtk version,
# this is a workaround to make sure we get the menu and the widget
menu = args[0]
widget = args[-1]
# here I get the coordinates of the button relative to
# window (self.window)
button_x, button_y = widget.get_allocation().x, widget.get_allocation().y
# now convert them to X11-relative
unused_var, window_x, window_y = widget.get_window().get_origin()
x = window_x + button_x
y = window_y + button_y
# now move the menu below the button
y += widget.get_allocation().height
push_in = True # push_in is True so all menu is always inside screen
return (x, y, push_in)
def on_accounts_service_loaded(self, user, param):
self.load_users()
def load_users(self):
self.users.clear()
users = self.accountService.list_users()
for user in users:
if os.path.exists(user.get_icon_file()):
pixbuf = GdkPixbuf.Pixbuf.new_from_file_at_size(user.get_icon_file(), 48, 48)
else:
pixbuf = GdkPixbuf.Pixbuf.new_from_file_at_size("/usr/share/cinnamon/faces/user-generic.png", 48, 48)
description = "%s\n%s" % (user.get_real_name(), user.get_user_name())
piter = self.users.append(None, [user, pixbuf, description])
self.users_treeview.set_model(self.users)
def load_groups(self):
self.groups.clear()
groups = sorted(grp.getgrall(), key=lambda x: x[0], reverse=False)
for group in groups:
(gr_name, gr_passwd, gr_gid, gr_mem) = group
piter = self.groups.append(None, [gr_gid, gr_name])
self.groups_treeview.set_model(self.groups)
#USER CALLBACKS
def on_user_selection(self, selection):
self.password_button.set_sensitive(True)
self.password_button.set_tooltip_text("")
model, treeiter = selection.get_selected()
if treeiter != None:
user = model[treeiter][INDEX_USER_OBJECT]
self.builder.get_object("button_delete_user").set_sensitive(True)
self.realname_entry.set_text(user.get_real_name())
if user.get_password_mode() == AccountsService.UserPasswordMode.REGULAR:
self.password_mask.set_text(u'\u2022\u2022\u2022\u2022\u2022\u2022')
elif user.get_password_mode() == AccountsService.UserPasswordMode.NONE:
self.password_mask.set_markup("%s" % _("No password set"))
else:
self.password_mask.set_text(_("Set at login"))
if user.get_account_type() == AccountsService.UserAccountType.ADMINISTRATOR:
self.account_type_combo.set_active(1)
else:
self.account_type_combo.set_active(0)
pixbuf = None
path = user.get_icon_file()
message = ""
if os.path.exists(path):
try:
pixbuf = GdkPixbuf.Pixbuf.new_from_file(path)
except GLib.Error as e:
message = "Could not load pixbuf from '%s': %s" % (path, e.message)
error = True
if pixbuf != None:
if pixbuf.get_height() > 96 or pixbuf.get_width() > 96:
try:
pixbuf = GdkPixbuf.Pixbuf.new_from_file_at_size(path, 96, 96)
except GLib.Error as e:
message = "Could not scale pixbuf from '%s': %s" % (path, e.message)
error = True
if pixbuf:
self.face_image.set_from_pixbuf(pixbuf)
else:
if message != "":
print message
self.face_image.set_from_file("/usr/share/cinnamon/faces/user-generic.png")
groups = []
for group in grp.getgrall():
if user.get_user_name() in group[3]:
groups.append(group[0])
groups.sort()
self.groups_label.set_text(", ".join(groups))
self.builder.get_object("box_users").show()
# Count the number of connections for the currently logged-in user
connections = int(subprocess.check_output(["w", "-hs", user.get_user_name()]).count("\n"))
if connections > 0:
self.builder.get_object("button_delete_user").set_sensitive(False)
self.builder.get_object("button_delete_user").set_tooltip_text(_("This user is currently logged in"))
else:
self.builder.get_object("button_delete_user").set_sensitive(True)
self.builder.get_object("button_delete_user").set_tooltip_text("")
if os.path.exists("/home/.ecryptfs/%s" % user.get_user_name()):
self.password_button.set_sensitive(False)
self.password_button.set_tooltip_text(_("The user's home directory is encrypted. To preserve access to the encrypted directory, only the user should change this password."))
else:
self.builder.get_object("button_delete_user").set_sensitive(False)
self.builder.get_object("box_users").hide()
def on_user_deletion(self, event):
model, treeiter = self.users_treeview.get_selection().get_selected()
if treeiter != None:
user = model[treeiter][INDEX_USER_OBJECT]
message = _("Are you sure you want to permanently delete %s and all the files associated with this user?") % user.get_user_name()
d = Gtk.MessageDialog(self.window,
Gtk.DialogFlags.MODAL | Gtk.DialogFlags.DESTROY_WITH_PARENT,
Gtk.MessageType.QUESTION,
Gtk.ButtonsType.YES_NO,
message)
d.set_markup(message)
d.set_default_response(Gtk.ResponseType.NO)
r = d.run()
d.destroy()
if r == Gtk.ResponseType.YES:
result = self.accountService.delete_user(user, True)
if result:
model.remove(treeiter)
self.load_groups()
def on_user_addition(self, event):
dialog = NewUserDialog(self.window)
response = dialog.run()
if response == Gtk.ResponseType.OK:
if dialog.account_type_combo.get_active() == 1:
account_type = AccountsService.UserAccountType.ADMINISTRATOR
else:
account_type = AccountsService.UserAccountType.STANDARD
fullname = dialog.realname_entry.get_text()
username = dialog.username_entry.get_text()
new_user = self.accountService.create_user(username, fullname, account_type)
new_user.set_password_mode(AccountsService.UserPasswordMode.NONE)
pixbuf = GdkPixbuf.Pixbuf.new_from_file_at_size("/usr/share/cinnamon/faces/user-generic.png", 48, 48)
description = "%s\n%s" % (fullname, username)
piter = self.users.append(None, [new_user, pixbuf, description])
# Add the user to his/her own group and sudo if Administrator was selected
if dialog.account_type_combo.get_active() == 1:
subprocess.call(["usermod", username, "-G", "%s,sudo,nopasswdlogin" % username])
else:
subprocess.call(["usermod", username, "-G", "%s,nopasswdlogin" % username])
self.load_groups()
dialog.destroy()
def on_user_edition(self, event):
model, treeiter = self.users_treeview.get_selection().get_selected()
if treeiter != None:
print "Editing user %s" % model[treeiter][INDEX_USER_OBJECT].get_user_name()
# GROUPS CALLBACKS
def on_group_selection(self, selection):
model, treeiter = selection.get_selected()
if treeiter != None:
self.builder.get_object("button_edit_group").set_sensitive(True)
self.builder.get_object("button_delete_group").set_sensitive(True)
self.builder.get_object("button_delete_group").set_tooltip_text("")
group = model[treeiter][INDEX_GROUPNAME]
for p in pwd.getpwall():
username = p[0]
primary_group = grp.getgrgid(p[3])[0]
if primary_group == group:
self.builder.get_object("button_delete_group").set_sensitive(False)
self.builder.get_object("button_delete_group").set_tooltip_text(_("This group is set as %s's primary group") % username)
break
else:
self.builder.get_object("button_edit_group").set_sensitive(False)
self.builder.get_object("button_delete_group").set_sensitive(False)
self.builder.get_object("button_delete_group").set_tooltip_text("")
def on_group_deletion(self, event):
model, treeiter = self.groups_treeview.get_selection().get_selected()
if treeiter != None:
group = model[treeiter][INDEX_GROUPNAME]
message = _("Are you sure you want to permanently delete %s?") % group
d = Gtk.MessageDialog(self.window,
Gtk.DialogFlags.MODAL | Gtk.DialogFlags.DESTROY_WITH_PARENT,
Gtk.MessageType.QUESTION,
Gtk.ButtonsType.YES_NO,
message)
d.set_markup(message)
d.set_default_response(Gtk.ResponseType.NO)
r = d.run()
if r == Gtk.ResponseType.YES:
subprocess.call(["groupdel", group])
self.load_groups()
d.destroy()
def on_group_addition(self, event):
dialog = GroupDialog(_("Group Name"), "", self.window)
response = dialog.run()
if response == Gtk.ResponseType.OK:
subprocess.call(["groupadd", dialog.entry.get_text().lower()])
self.load_groups()
dialog.destroy()
def on_group_edition(self, event):
model, treeiter = self.groups_treeview.get_selection().get_selected()
if treeiter != None:
group = model[treeiter][INDEX_GROUPNAME]
dialog = GroupDialog(_("Group Name"), group, self.window)
response = dialog.run()
if response == Gtk.ResponseType.OK:
subprocess.call(["groupmod", group, "-n", dialog.entry.get_text().lower()])
self.load_groups()
dialog.destroy()
if __name__ == "__main__":
module = Module()
Gtk.main()
Cinnamon-3.6.7/files/usr/share/cinnamon/cinnamon-settings-users/cinnamon-settings-users.svg 0000664 0001750 0001750 00000103410 13215735076 031163 0 ustar fabio fabio
Cinnamon-3.6.7/files/usr/share/cinnamon/cinnamon-slideshow/ 0000775 0001750 0001750 00000000000 13215735076 022646 5 ustar fabio fabio Cinnamon-3.6.7/files/usr/share/cinnamon/cinnamon-slideshow/cinnamon-slideshow.py 0000775 0001750 0001750 00000032331 13215735076 027026 0 ustar fabio fabio #! /usr/bin/python2
from gi.repository import Gio, GLib
import dbus, dbus.service, dbus.glib
from dbus.mainloop.glib import DBusGMainLoop
import random
import os, locale
from xml.etree import ElementTree
SLIDESHOW_DBUS_NAME = "org.Cinnamon.Slideshow"
SLIDESHOW_DBUS_PATH = "/org/Cinnamon/Slideshow"
BACKGROUND_COLLECTION_TYPE_DIRECTORY = "directory"
BACKGROUND_COLLECTION_TYPE_XML = "xml"
class CinnamonSlideshow(dbus.service.Object):
def __init__(self):
bus_name = dbus.service.BusName(SLIDESHOW_DBUS_NAME, bus=dbus.SessionBus())
dbus.service.Object.__init__(self, bus_name, SLIDESHOW_DBUS_PATH)
self.slideshow_settings = Gio.Settings(schema="org.cinnamon.desktop.background.slideshow")
self.background_settings = Gio.Settings(schema="org.cinnamon.desktop.background")
if self.slideshow_settings.get_boolean("slideshow-paused"):
self.slideshow_settings.set_boolean("slideshow-paused", False)
self.image_playlist = []
self.used_image_playlist = []
self.images_ready = False
self.update_in_progress = False
self.current_image = self.background_settings.get_string("picture-uri")
self.update_id = 0
self.loop_counter = self.slideshow_settings.get_int("delay")
self.folder_monitor = None
self.folder_monitor_id = 0
@dbus.service.method(SLIDESHOW_DBUS_NAME, in_signature='', out_signature='')
def begin(self):
self.setup_slideshow()
@dbus.service.method(SLIDESHOW_DBUS_NAME, in_signature='', out_signature='')
def end(self):
if self.update_id > 0:
GLib.source_remove(self.update_id)
self.update_id = 0
ml.quit()
@dbus.service.method(SLIDESHOW_DBUS_NAME, in_signature='', out_signature='')
def getNextImage(self):
if self.update_id > 0:
GLib.source_remove(self.update_id)
self.update_id = 0
self.loop_counter = self.slideshow_settings.get_int("delay")
self.start_mainloop()
def setup_slideshow(self):
self.load_settings()
self.connect_signals()
self.gather_images()
if self.collection_type == BACKGROUND_COLLECTION_TYPE_DIRECTORY:
self.connect_folder_monitor()
self.start_mainloop()
def format_source(self, type, path):
# returns 'type://path'
return ("%s://%s" % (type, path))
def load_settings(self):
self.random_order = self.slideshow_settings.get_boolean("random-order")
self.collection = self.slideshow_settings.get_string("image-source")
self.collection_path = ""
self.collection_type = None
if self.collection != "" and "://" in self.collection:
(self.collection_type, self.collection_path) = self.collection.split("://")
self.collection_path = os.path.expanduser(self.collection_path)
def connect_signals(self):
self.slideshow_settings.connect("changed::image-source", self.on_slideshow_source_changed)
self.slideshow_settings.connect("changed::random-order", self.on_random_order_changed)
self.background_settings.connect("changed::picture-uri", self.on_picture_uri_changed)
def connect_folder_monitor(self):
folder_path = Gio.file_new_for_path(self.collection_path)
self.folder_monitor = folder_path.monitor_directory(0, None)
self.folder_monitor_id = self.folder_monitor.connect("changed", self.on_monitored_folder_changed)
def disconnect_folder_monitor(self):
if self.folder_monitor_id > 0:
self.folder_monitor.disconnect(self.folder_monitor_id)
self.folder_monitor_id = 0
def gather_images(self):
if self.collection_type == BACKGROUND_COLLECTION_TYPE_DIRECTORY:
folder_at_path = Gio.file_new_for_path(self.collection_path)
if folder_at_path.query_exists(None):
folder_at_path.enumerate_children_async("standard::name,standard::type,standard::content-type",
Gio.FileQueryInfoFlags.NONE,
GLib.PRIORITY_LOW,
None,
self.gather_images_cb,
None)
elif self.collection_type == BACKGROUND_COLLECTION_TYPE_XML:
pictures = self.parse_xml_backgrounds_list(self.collection_path)
for picture in pictures:
filename = picture["filename"]
self.add_image_to_playlist(filename)
def gather_images_cb(self, obj, res, user_data):
all_files = []
enumerator = obj.enumerate_children_finish(res)
def on_next_file_complete(obj, res, user_data=all_files):
files = obj.next_files_finish(res)
file_list = all_files
if len(files) is not 0:
file_list = file_list.extend(files)
enumerator.next_files_async(100, GLib.PRIORITY_LOW, None, on_next_file_complete, None)
else:
enumerator.close(None)
self.ensure_file_is_image(file_list)
enumerator.next_files_async(100, GLib.PRIORITY_LOW, None, on_next_file_complete, all_files)
def ensure_file_is_image(self, file_list):
for item in file_list:
file_type = item.get_file_type();
if file_type is not Gio.FileType.DIRECTORY:
file_contents = item.get_content_type();
if file_contents.startswith("image"):
self.add_image_to_playlist(self.collection_path + "/" + item.get_name())
def add_image_to_playlist(self, file_path):
image = Gio.file_new_for_path(file_path)
image_uri = image.get_uri();
self.image_playlist.append(image_uri)
if self.collection_type == BACKGROUND_COLLECTION_TYPE_DIRECTORY:
self.image_playlist.sort()
self.images_ready = True
def on_slideshow_source_changed(self, settings, key):
if self.update_id > 0:
GLib.source_remove(self.update_id)
self.update_id = 0
self.disconnect_folder_monitor()
self.image_playlist = []
self.used_image_playlist = []
self.images_ready = False
self.collection = self.slideshow_settings.get_string("image-source")
self.collection_path = ""
self.collection_type = None
if self.collection != "" and "://" in self.collection:
(self.collection_type, self.collection_path) = self.collection.split("://")
self.collection_path = os.path.expanduser(self.collection_path)
if self.collection_type == BACKGROUND_COLLECTION_TYPE_DIRECTORY:
self.connect_folder_monitor()
self.gather_images()
self.loop_counter = self.slideshow_settings.get_int("delay")
self.start_mainloop()
def on_monitored_folder_changed(self, monitor, file1, file2, event_type):
try:
if event_type == Gio.FileMonitorEvent.DELETED:
file_uri = file1.get_uri();
if self.image_playlist.count(file_uri) > 0:
index_to_remove = self.image_playlist.index(file_uri)
del self.image_playlist[index_to_remove]
elif self.used_image_playlist.count(file_uri) > 0:
index_to_remove = self.used_image_playlist.index(file_uri)
del self.used_image_playlist[index_to_remove]
if event_type == Gio.FileMonitorEvent.CREATED:
file_path = file1.get_path()
file_info = file1.query_info("standard::type,standard::content-type", Gio.FileQueryInfoFlags.NONE, None)
file_type = file_info.get_file_type()
if file_type is not Gio.FileType.DIRECTORY:
file_contents = file_info.get_content_type();
if file_contents.startswith("image"):
self.add_image_to_playlist(file_path)
except:
pass
def on_random_order_changed(self, settings, key):
self.random_order = self.slideshow_settings.get_boolean("random-order")
def on_picture_uri_changed(self, settings, key):
if self.update_in_progress:
return
else:
if self.background_settings.get_string("picture-uri") != self.current_image:
self.slideshow_settings.set_boolean("slideshow-enabled", False)
def start_mainloop(self):
if self.update_id > 0:
GLib.source_remove(self.update_id)
self.update_id = 0
if not self.images_ready:
self.update_id = GLib.timeout_add_seconds(1, self.start_mainloop)
else:
if self.loop_counter >= self.slideshow_settings.get_int("delay") and not self.slideshow_settings.get_boolean("slideshow-paused"):
self.loop_counter = 1
self.update_background()
self.update_id = GLib.timeout_add_seconds(60, self.start_mainloop)
else:
self.loop_counter = self.loop_counter + 1
self.update_id = GLib.timeout_add_seconds(60, self.start_mainloop)
def update_background(self):
if self.update_in_progress:
return
self.update_in_progress = True
if len(self.image_playlist) == 0:
self.move_used_images_to_original_playlist()
next_image = self.get_next_image_from_list()
if next_image is not None:
self.background_settings.set_string("picture-uri", next_image)
self.current_image = next_image
self.update_in_progress = False
def get_next_image_from_list(self):
if self.random_order:
index = random.randint(0, len(self.image_playlist) - 1)
image = self.image_playlist[index]
else:
index = 0
image = self.image_playlist[index]
self.move_image_to_used_playlist(index, image)
return image
def move_image_to_used_playlist(self, index, image):
self.image_playlist.pop(index)
self.used_image_playlist.append(image)
def move_used_images_to_original_playlist(self):
self.image_playlist = self.used_image_playlist
if self.collection_type == BACKGROUND_COLLECTION_TYPE_DIRECTORY:
self.image_playlist.sort()
self.used_image_playlist = []
########### TAKEN FROM CS_BACKGROUND
def splitLocaleCode(self, localeCode):
loc = localeCode.partition("_")
loc = (loc[0], loc[2])
return loc
def getLocalWallpaperName(self, names, loc):
result = ""
mainLocFound = False
for wp in names:
wpLoc = wp[0]
wpName = wp[1]
if wpLoc == ("", ""):
if not mainLocFound:
result = wpName
elif wpLoc[0] == loc[0]:
if wpLoc[1] == loc[1]:
return wpName
elif wpLoc[1] == "":
result = wpName
mainLocFound = True
return result
def parse_xml_backgrounds_list(self, filename):
try:
locAttrName = "{http://www.w3.org/XML/1998/namespace}lang"
loc = self.splitLocaleCode(locale.getdefaultlocale()[0])
res = []
subLocaleFound = False
f = open(filename)
rootNode = ElementTree.fromstring(f.read())
f.close()
if rootNode.tag == "wallpapers":
for wallpaperNode in rootNode:
if wallpaperNode.tag == "wallpaper" and wallpaperNode.get("deleted") != "true":
wallpaperData = {"metadataFile": filename}
names = []
for prop in wallpaperNode:
if type(prop.tag) == str:
if prop.tag != "name":
wallpaperData[prop.tag] = prop.text
else:
propAttr = prop.attrib
wpName = prop.text
locName = self.splitLocaleCode(propAttr.get(locAttrName)) if propAttr.has_key(locAttrName) else ("", "")
names.append((locName, wpName))
wallpaperData["name"] = self.getLocalWallpaperName(names, loc)
if "filename" in wallpaperData and wallpaperData["filename"] != "" and os.path.exists(wallpaperData["filename"]) and os.access(wallpaperData["filename"], os.R_OK):
if wallpaperData["name"] == "":
wallpaperData["name"] = os.path.basename(wallpaperData["filename"])
res.append(wallpaperData)
return res
except Exception, detail:
print detail
return []
###############
if __name__ == "__main__":
DBusGMainLoop(set_as_default=True)
sessionBus = dbus.SessionBus ()
request = sessionBus.request_name(SLIDESHOW_DBUS_NAME, dbus.bus.NAME_FLAG_DO_NOT_QUEUE)
if request != dbus.bus.REQUEST_NAME_REPLY_EXISTS:
slideshow = CinnamonSlideshow()
else:
print "cinnamon-slideshow already running."
quit()
ml = GLib.MainLoop.new(None, True)
ml.run()
Cinnamon-3.6.7/files/usr/share/cinnamon/icons/ 0000775 0001750 0001750 00000000000 13215735076 020160 5 ustar fabio fabio Cinnamon-3.6.7/files/usr/share/cinnamon/icons/move-symbolic.svg 0000664 0001750 0001750 00000002305 13215735076 023466 0 ustar fabio fabio
Cinnamon-3.6.7/files/usr/share/cinnamon/sounds/ 0000775 0001750 0001750 00000000000 13215735076 020360 5 ustar fabio fabio Cinnamon-3.6.7/files/usr/share/cinnamon/sounds/bell.ogg 0000664 0001750 0001750 00000011353 13215735076 021777 0 ustar fabio fabio OggS s <*&vorbis D w OggS s Yvorbis- Xiph.Org libVorbis I 20101101 (Schaufenugget)
TITLE=bell
COMMENTS= vorbis)BCV 1L ŀАU `$)fI)(yHI)0c1c1c 4d ( Ij9g'r9iN8 Q9 &cnkn)%
Y @H!RH!b!b!r!r
*
2 L2餓N:騣:(B-JL1Vc]|s9s9s BCV BdB!R)r
2ȀАU GI˱$O,Q53ESTMUUUUu]Wvevuv}Y[}Y[]aaaa}}} 4d #9)"9 d ")Ifjihm˲,˲ iiiiiiifYeYeYeYeYeYeYeYeYeYeYeYeY@h* @ @qq$ER$r,
Y @R,r4Gs4s