Compare commits
	
		
			98 Commits
		
	
	
		
			3.29.4
			...
			wip/fix-dr
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|   | 82c72f377a | ||
|   | c2e9e68df7 | ||
|   | bdbf804e69 | ||
|   | 9718175f4d | ||
|   | 0ba346b750 | ||
|   | 614c4480e2 | ||
|   | f21f612ef7 | ||
|   | 935de3e80f | ||
|   | 0f541f60e8 | ||
|   | 902c99c757 | ||
|   | f7029674b0 | ||
|   | dd7ccda168 | ||
|   | e207b45317 | ||
|   | 6b5117677d | ||
|   | 900398406c | ||
|   | 461d2b1945 | ||
|   | 6c2f11e8a4 | ||
|   | dbf993300a | ||
|   | f77b3da74f | ||
|   | bc6a38dda7 | ||
|   | f3a02057c1 | ||
|   | ad15ce9139 | ||
|   | 5d178506bf | ||
|   | 14cc9bfb1e | ||
|   | ce4c485f34 | ||
|   | 1877a2e00a | ||
|   | b2fa7a6d8f | ||
|   | 36c604d793 | ||
|   | 9a5a4b2206 | ||
|   | 3ab9e9e8ad | ||
|   | dd59212d3f | ||
|   | 2b654ec310 | ||
|   | 764fbbe052 | ||
|   | 328c63bf64 | ||
|   | 95788c9834 | ||
|   | 9cf571efbd | ||
|   | dc4128c78b | ||
|   | 73d8c82640 | ||
|   | 2f7377b250 | ||
|   | 804f23b179 | ||
|   | 2be6ddc54e | ||
|   | dff4f0109e | ||
|   | 2e663b2a94 | ||
|   | 9f4aa6ebf2 | ||
|   | afe5703710 | ||
|   | 02d06bb1f3 | ||
|   | 3a78695bd9 | ||
|   | 13e8c35d36 | ||
|   | 3b8dfd98dd | ||
|   | 6b610b26f8 | ||
|   | 81956e9b84 | ||
|   | 6b41f82346 | ||
|   | 1fca090374 | ||
|   | da2fc2c9d3 | ||
|   | 52cbc299a7 | ||
|   | 9f436ce373 | ||
|   | d908940ef3 | ||
|   | eeda54f24d | ||
|   | b8b5da1e95 | ||
|   | 3a9ad5c577 | ||
|   | d57dc94d9e | ||
|   | 393d7246cc | ||
|   | 6217c3b88d | ||
|   | ddd4fd9c24 | ||
|   | d2a97e7f1d | ||
|   | aa75e89216 | ||
|   | 3f756dc608 | ||
|   | ed8e89bc19 | ||
|   | c90a4e4849 | ||
|   | f433b12d6e | ||
|   | 7ca418a79a | ||
|   | a9ad91c831 | ||
|   | bd1c7774ee | ||
|   | 91da3789bc | ||
|   | 2991f9f102 | ||
|   | 49d8ff38e7 | ||
|   | 4b522a02c3 | ||
|   | ebe6f59d7e | ||
|   | e5c95b910d | ||
|   | 2f76951658 | ||
|   | 3efd296fc3 | ||
|   | 6688610c23 | ||
|   | d2c75801ea | ||
|   | be84a00022 | ||
|   | da537cda43 | ||
|   | 304c667bca | ||
|   | 879a81abeb | ||
|   | e68ca5adbd | ||
|   | cf69fe4b18 | ||
|   | 8f848925f6 | ||
|   | d21657fe61 | ||
|   | ce3555382b | ||
|   | 837a00c3f0 | ||
|   | 132c8e0cf8 | ||
|   | 9c62522419 | ||
|   | 0d5bae3844 | ||
|   | 97f6a35b46 | ||
|   | 43e8dfacb4 | 
							
								
								
									
										64
									
								
								NEWS
									
									
									
									
									
								
							
							
						
						
									
										64
									
								
								NEWS
									
									
									
									
									
								
							| @@ -1,3 +1,67 @@ | ||||
| 3.30.0 | ||||
| ====== | ||||
|  | ||||
| Contributors: | ||||
|   Harry Mallon, Marco Trevisan (Treviño) | ||||
|  | ||||
| Translators: | ||||
|   Fran Dieguez [gl], Trần Ngọc Quân [vi], Balázs Meskó [hu], | ||||
|   Rūdolfs Mazurs [lv], Jiri Grönroos [fi], Anders Jonsson [sv], gogo [hr], | ||||
|   Ask Hjorth Larsen [da] | ||||
|  | ||||
| 3.29.92 | ||||
| ======= | ||||
| * Choose some actors to cache on the GPU [Daniel; #792633] | ||||
| * inputMethod: Hide preedit text if requested [Takao; #431] | ||||
| * Fix forced fallback app-menus on wayland [Jonas; #276] | ||||
|  | ||||
| Contributors: | ||||
|   Jonas Ådahl, Takao Fujiwara, Mohammed Sadiq, Marco Trevisan (Treviño), | ||||
|   Daniel van Vugt | ||||
|  | ||||
| Translators: | ||||
|   Baurzhan Muftakhidinov [kk], Kukuh Syafaat [id], Milo Casagrande [it], | ||||
|   Changwoo Ryu [ko], Marek Cernocky [cs] | ||||
|  | ||||
| 3.29.91 | ||||
| ======= | ||||
| * Fix handling of 0/false options in ShowOSD D-Bus API [Florian; #791669] | ||||
| * overview: Fix handling of confirmation dialogs on wayland [verdre; !180] | ||||
| * Avoid some full relayout/redraws [Carlos; !197] | ||||
| * Keep workspace switcher slid out when workspaces are in use [Florian; !161] | ||||
| * Ignore auto-repeat for some keybindings [Andrea; #373] | ||||
| * Misc. bug fixes [Carlos, Florian, Pascal; #464, !189, !191, !192, !162] | ||||
|  | ||||
| Contributors: | ||||
|   Andrea Azzarone, Olivier Blin, Carlos Garnacho, Florian Müllner, | ||||
|   Pascal Nowack, verdre | ||||
|  | ||||
| Translators: | ||||
|   Bruno Lopes da Silva [pt_BR], Matej Urbančič [sl], Piotr Drąg [pl], | ||||
|   Aurimas Černius [lt], Emin Tufan Çetin [tr], Fabio Tomat [fur], | ||||
|   Alexandre Franke [fr], Yi-Jyun Pan [zh_TW], Bernd Homuth [de], | ||||
|   Andre Klapper [cs], Jordi Mas [ca], Daniel Șerbănescu [ro], | ||||
|   Bruce Cowan [en_GB] | ||||
|  | ||||
| 3.29.90 | ||||
| ======= | ||||
| * Add remote access indication on wayland [Jonas; !160] | ||||
| * Fix wrong window positions in overview on wayland [Marco; #776588] | ||||
| * Add gesture to unfullscreen a window [Jan-Michael; !123] | ||||
| * Add PickColor method to screenshot D-Bus interface [Florian; #286] | ||||
| * Consider "new-window" action when opening new windows [Florian; #756844] | ||||
| * Make workspace switching gestures follow motion [Carlos; #788994] | ||||
| * Support audio volumes above 100% [Didier; #790280] | ||||
| * Misc. bug fixes [Florian, Daniel; #424, !132, !182, #433, !179, #786496] | ||||
|  | ||||
| Contributors: | ||||
|   Jonas Ådahl, Jan-Michael Brummer, Piotr Drąg, Daniel Drake, Carlos Garnacho, | ||||
|   Florian Müllner, Georges Basile Stavracas Neto, Didier Roche, Jakub Steiner, | ||||
|   Marco Trevisan (Treviño) | ||||
|  | ||||
| Translators: | ||||
|   Charles Monzat [fr], Daniel Mustieles [es] | ||||
|  | ||||
| 3.29.4 | ||||
| ====== | ||||
| * Fix "Clear All" for calendar events [Florian; #325] | ||||
|   | ||||
| @@ -7,7 +7,7 @@ easy to use experience. | ||||
|  | ||||
| For more information about GNOME Shell, including instructions on how | ||||
| to build GNOME Shell from source and how to get involved with the project, | ||||
| see the [project wiki][wiki] | ||||
| see the [project wiki][project-wiki]. | ||||
|  | ||||
| Bugs should be reported to the GNOME [bug tracking system][bug-tracker]. | ||||
|  | ||||
|   | ||||
| @@ -24,3 +24,9 @@ | ||||
|  | ||||
| /* Define if _NL_TIME_FIRST_WEEKDATE is available */ | ||||
| #mesondefine HAVE__NL_TIME_FIRST_WEEKDAY | ||||
|  | ||||
| /* Define if you have the `g_desktop_app_info_launch_uris_as_manager_with_fds` function */ | ||||
| #mesondefine HAVE_GIO_DESKTOP_LAUNCH_URIS_WITH_FDS | ||||
|  | ||||
| /* Define if fdwalk is available in libc */ | ||||
| #mesondefine HAVE_FDWALK | ||||
|   | ||||
							
								
								
									
										6
									
								
								data/00_org.gnome.shell.gschema.override
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								data/00_org.gnome.shell.gschema.override
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,6 @@ | ||||
| [org.gnome.mutter:GNOME] | ||||
| attach-modal-dialogs=true | ||||
| edge-tiling=true | ||||
| dynamic-workspaces=true | ||||
| workspaces-only-on-primary=true | ||||
| focus-change-on-pointer-rest=true | ||||
| @@ -22,6 +22,7 @@ | ||||
|     <file>id.json</file> | ||||
|     <file>il.json</file> | ||||
|     <file>in+bolnagri.json</file> | ||||
|     <file>in+mal.json</file> | ||||
|     <file>ir.json</file> | ||||
|     <file>is.json</file> | ||||
|     <file>it.json</file> | ||||
|   | ||||
							
								
								
									
										5
									
								
								data/gnome-shell-overrides-migration.desktop.in
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								data/gnome-shell-overrides-migration.desktop.in
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,5 @@ | ||||
| [Desktop Entry] | ||||
| Type=Application | ||||
| Name=GNOME settings overrides migration | ||||
| NoDisplay=true | ||||
| Exec=@libexecdir@/gnome-shell-overrides-migration.sh | ||||
| @@ -92,6 +92,16 @@ schema = configure_file( | ||||
|   configuration: schemaconf, | ||||
|   install_dir: schemadir | ||||
| ) | ||||
| install_data('00_org.gnome.shell.gschema.override', install_dir: schemadir) | ||||
|  | ||||
| overrides_migration_conf = configuration_data() | ||||
| overrides_migration_conf.set('libexecdir', libexecdir) | ||||
| overrides_migration = configure_file( | ||||
|   input: 'gnome-shell-overrides-migration.desktop.in', | ||||
|   output: 'gnome-shell-overrides-migration.desktop', | ||||
|   configuration: overrides_migration_conf, | ||||
|   install_dir: autostartdir | ||||
| ) | ||||
|  | ||||
| if have_systemd | ||||
|   unitconf = configuration_data() | ||||
|   | ||||
| @@ -91,6 +91,23 @@ | ||||
|       <arg type="s" direction="out" name="filename_used"/> | ||||
|     </method> | ||||
|  | ||||
|     <!-- | ||||
|         PickColor: | ||||
|  | ||||
|         Picks a color and returns the result. | ||||
|  | ||||
|         The @result vardict contains: | ||||
|         <variablelist> | ||||
|           <varlistentry> | ||||
|             <term>color (ddd)</term> | ||||
|             <listitem><para>The color, RGB values in the range [0,1].</para></listitem> | ||||
|           </varlistentry> | ||||
|         </variablelist> | ||||
|     --> | ||||
|     <method name="PickColor"> | ||||
|       <arg type="a{sv}" direction="out" name="result"/> | ||||
|     </method> | ||||
|  | ||||
|     <!-- | ||||
|         FlashArea: | ||||
|         @x: the X coordinate of the area to flash | ||||
|   | ||||
| @@ -190,6 +190,7 @@ | ||||
|     </key> | ||||
|   </schema> | ||||
|  | ||||
|   <!-- unused, change 00_org.gnome.shell.gschema.override instead --> | ||||
|   <schema id="org.gnome.shell.overrides" path="/org/gnome/shell/overrides/" | ||||
| 	  gettext-domain="@GETTEXT_PACKAGE@"> | ||||
|     <key name="attach-modal-dialogs" type="b"> | ||||
|   | ||||
							
								
								
									
										559
									
								
								data/osk-layouts/in+mal.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										559
									
								
								data/osk-layouts/in+mal.json
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,559 @@ | ||||
| { | ||||
|   "levels": [ | ||||
|     { | ||||
|       "level": "", | ||||
|       "mode": "default", | ||||
|       "rows": [ | ||||
|         [ | ||||
|           [ | ||||
|             "െ" | ||||
|           ], | ||||
|           [ | ||||
|             "ൌ" | ||||
|           ], | ||||
|           [ | ||||
|             "ൈ" | ||||
|           ], | ||||
|           [ | ||||
|             "ാ" | ||||
|           ], | ||||
|           [ | ||||
|             "ീ" | ||||
|           ], | ||||
|           [ | ||||
|             "ൂ" | ||||
|           ], | ||||
|           [ | ||||
|             "ബ" | ||||
|           ], | ||||
|           [ | ||||
|             "ഹ" | ||||
|           ], | ||||
|           [ | ||||
|             "ഗ" | ||||
|           ], | ||||
|           [ | ||||
|             "ദ" | ||||
|           ], | ||||
|           [ | ||||
|             "ജ" | ||||
|           ], | ||||
|           [ | ||||
|             "ഡ" | ||||
|           ], | ||||
|           [ | ||||
|             "" | ||||
|           ] | ||||
|         ], | ||||
|         [ | ||||
|           [ | ||||
|             "ോ" | ||||
|           ], | ||||
|           [ | ||||
|             "േ" | ||||
|           ], | ||||
|           [ | ||||
|             "്" | ||||
|           ], | ||||
|           [ | ||||
|             "ി" | ||||
|           ], | ||||
|           [ | ||||
|             "ു" | ||||
|           ], | ||||
|           [ | ||||
|             "പ" | ||||
|           ], | ||||
|           [ | ||||
|             "ര" | ||||
|           ], | ||||
|           [ | ||||
|             "ക" | ||||
|           ], | ||||
|           [ | ||||
|             "ത" | ||||
|           ], | ||||
|           [ | ||||
|             "ച" | ||||
|           ], | ||||
|           [ | ||||
|             "ട" | ||||
|           ] | ||||
|         ], | ||||
|         [ | ||||
|           [ | ||||
|             "െ" | ||||
|           ], | ||||
|           [ | ||||
|             "ം" | ||||
|           ], | ||||
|           [ | ||||
|             "മ", | ||||
|             "ç" | ||||
|           ], | ||||
|           [ | ||||
|             "ന" | ||||
|           ], | ||||
|           [ | ||||
|             "വ" | ||||
|           ], | ||||
|           [ | ||||
|             "ല", | ||||
|             "ñ" | ||||
|           ], | ||||
|           [ | ||||
|             "സ" | ||||
|           ], | ||||
|           [ | ||||
|             "ഷ" | ||||
|           ], | ||||
|           [ | ||||
|             "യ" | ||||
|           ] | ||||
|         ], | ||||
|         [ | ||||
|           [ | ||||
|             "," | ||||
|           ], | ||||
|           [ | ||||
|             " " | ||||
|           ], | ||||
|           [ | ||||
|             ".", | ||||
|             "#", | ||||
|             "!", | ||||
|             ",", | ||||
|             "?", | ||||
|             "-", | ||||
|             ":", | ||||
|             "'", | ||||
|             "@" | ||||
|           ] | ||||
|         ] | ||||
|       ] | ||||
|     }, | ||||
|     { | ||||
|       "level": "shift", | ||||
|       "mode": "latched", | ||||
|       "rows": [ | ||||
|         [ | ||||
|           [ | ||||
|             "ഔ" | ||||
|           ], | ||||
|           [ | ||||
|             "ഐ" | ||||
|           ], | ||||
|           [ | ||||
|             "ആ" | ||||
|           ], | ||||
|           [ | ||||
|             "ഈ" | ||||
|           ], | ||||
|           [ | ||||
|             "ഊ" | ||||
|           ], | ||||
|           [ | ||||
|             "ഭ" | ||||
|           ], | ||||
|           [ | ||||
|             "ങ" | ||||
|           ], | ||||
|           [ | ||||
|             "ഘ" | ||||
|           ], | ||||
|           [ | ||||
|             "ധ" | ||||
|           ], | ||||
|           [ | ||||
|             "ഝ" | ||||
|           ], | ||||
|           [ | ||||
|             "ഢ" | ||||
|           ], | ||||
|           [ | ||||
|             "ഞ" | ||||
|           ] | ||||
|         ], | ||||
|         [ | ||||
|           [ | ||||
|             "ഓ" | ||||
|           ], | ||||
|           [ | ||||
|             "ഏ" | ||||
|           ], | ||||
|           [ | ||||
|             "അ" | ||||
|           ], | ||||
|           [ | ||||
|             "ഇ" | ||||
|           ], | ||||
|           [ | ||||
|             "ഉ" | ||||
|           ], | ||||
|           [ | ||||
|             "ഫ" | ||||
|           ], | ||||
|           [ | ||||
|             "റ" | ||||
|           ], | ||||
|           [ | ||||
|             "ഖ" | ||||
|           ], | ||||
|           [ | ||||
|             "ഥ" | ||||
|           ], | ||||
|           [ | ||||
|             "ഛ" | ||||
|           ], | ||||
|           [ | ||||
|             "ഠ" | ||||
|           ] | ||||
|         ], | ||||
|         [ | ||||
|           [ | ||||
|             "എ" | ||||
|           ], | ||||
|           [ | ||||
|             "" | ||||
|           ], | ||||
|           [ | ||||
|             "ണ" | ||||
|           ], | ||||
|           [ | ||||
|             "ന" | ||||
|           ], | ||||
|           [ | ||||
|             "ഴ" | ||||
|           ], | ||||
|           [ | ||||
|             "ള" | ||||
|           ], | ||||
|           [ | ||||
|             "ശ" | ||||
|           ], | ||||
|           [ | ||||
|             "ഷ" | ||||
|           ], | ||||
|           [ | ||||
|             "യ" | ||||
|           ] | ||||
|         ], | ||||
|         [ | ||||
|           [ | ||||
|             "," | ||||
|           ], | ||||
|           [ | ||||
|             " " | ||||
|           ], | ||||
|           [ | ||||
|             ".", | ||||
|             "#", | ||||
|             "!", | ||||
|             ",", | ||||
|             "?", | ||||
|             "-", | ||||
|             ":", | ||||
|             "'", | ||||
|             "@" | ||||
|           ] | ||||
|         ] | ||||
|       ] | ||||
|     }, | ||||
|     { | ||||
|       "level": "opt", | ||||
|       "mode": "locked", | ||||
|       "rows": [ | ||||
|         [ | ||||
|           [ | ||||
|             "൧", | ||||
|             "1", | ||||
|             "¹", | ||||
|             "½", | ||||
|             "⅓", | ||||
|             "¼", | ||||
|             "⅛" | ||||
|           ], | ||||
|           [ | ||||
|             "൨", | ||||
|             "2", | ||||
|             "²", | ||||
|             "⅔" | ||||
|           ], | ||||
|           [ | ||||
|             "൩", | ||||
|             "3", | ||||
|             "³", | ||||
|             "¾", | ||||
|             "⅜" | ||||
|           ], | ||||
|           [ | ||||
|             "൪", | ||||
|             "4", | ||||
|             "⁴" | ||||
|           ], | ||||
|           [ | ||||
|             "൫", | ||||
|             "5", | ||||
|             "⅝" | ||||
|           ], | ||||
|           [ | ||||
|             "൬", | ||||
|             "6" | ||||
|           ], | ||||
|           [ | ||||
|             "൭", | ||||
|             "7", | ||||
|             "⅞" | ||||
|           ], | ||||
|           [ | ||||
|             "൮", | ||||
|             "8" | ||||
|           ], | ||||
|           [ | ||||
|             "൯", | ||||
|             "9" | ||||
|           ], | ||||
|           [ | ||||
|             "൦", | ||||
|             "0", | ||||
|             "ⁿ", | ||||
|             "∅" | ||||
|           ] | ||||
|         ], | ||||
|         [ | ||||
|           [ | ||||
|             "@" | ||||
|           ], | ||||
|           [ | ||||
|             "#" | ||||
|           ], | ||||
|           [ | ||||
|             "₹", | ||||
|             "$", | ||||
|             "¢", | ||||
|             "£", | ||||
|             "€", | ||||
|             "¥", | ||||
|             "₱" | ||||
|           ], | ||||
|           [ | ||||
|             "%", | ||||
|             "‰" | ||||
|           ], | ||||
|           [ | ||||
|             "&" | ||||
|           ], | ||||
|           [ | ||||
|             "-", | ||||
|             "_", | ||||
|             "–", | ||||
|             "—", | ||||
|             "·" | ||||
|           ], | ||||
|           [ | ||||
|             "+", | ||||
|             "±" | ||||
|           ], | ||||
|           [ | ||||
|             "(", | ||||
|             "<", | ||||
|             "{", | ||||
|             "[" | ||||
|           ], | ||||
|           [ | ||||
|             ")", | ||||
|             ">", | ||||
|             "}", | ||||
|             "]" | ||||
|           ] | ||||
|         ], | ||||
|         [ | ||||
|           [ | ||||
|             "*", | ||||
|             "†", | ||||
|             "‡", | ||||
|             "★" | ||||
|           ], | ||||
|           [ | ||||
|             "\"", | ||||
|             "“", | ||||
|             "”", | ||||
|             "«", | ||||
|             "»" | ||||
|           ], | ||||
|           [ | ||||
|             "'", | ||||
|             "‘", | ||||
|             "’", | ||||
|             "‹", | ||||
|             "›" | ||||
|           ], | ||||
|           [ | ||||
|             ":" | ||||
|           ], | ||||
|           [ | ||||
|             ";" | ||||
|           ], | ||||
|           [ | ||||
|             "!", | ||||
|             "¡" | ||||
|           ], | ||||
|           [ | ||||
|             "?", | ||||
|             "¿" | ||||
|           ] | ||||
|         ], | ||||
|         [ | ||||
|           [ | ||||
|             "_" | ||||
|           ], | ||||
|           [ | ||||
|             "/" | ||||
|           ], | ||||
|           [ | ||||
|             " " | ||||
|           ], | ||||
|           [ | ||||
|             "," | ||||
|           ], | ||||
|           [ | ||||
|             ".", | ||||
|             "…" | ||||
|           ] | ||||
|         ] | ||||
|       ] | ||||
|     }, | ||||
|     { | ||||
|       "level": "opt+shift", | ||||
|       "mode": "locked", | ||||
|       "rows": [ | ||||
|         [ | ||||
|           [ | ||||
|             "~" | ||||
|           ], | ||||
|           [ | ||||
|             "`" | ||||
|           ], | ||||
|           [ | ||||
|             "|" | ||||
|           ], | ||||
|           [ | ||||
|             "•", | ||||
|             "♪", | ||||
|             "♥", | ||||
|             "♠", | ||||
|             "♦", | ||||
|             "♣" | ||||
|           ], | ||||
|           [ | ||||
|             "√" | ||||
|           ], | ||||
|           [ | ||||
|             "Π", | ||||
|             "π" | ||||
|           ], | ||||
|           [ | ||||
|             "÷" | ||||
|           ], | ||||
|           [ | ||||
|             "×" | ||||
|           ], | ||||
|           [ | ||||
|             "¶", | ||||
|             "§" | ||||
|           ], | ||||
|           [ | ||||
|             "∆" | ||||
|           ] | ||||
|         ], | ||||
|         [ | ||||
|           [ | ||||
|             "£" | ||||
|           ], | ||||
|           [ | ||||
|             "¢" | ||||
|           ], | ||||
|           [ | ||||
|             "€" | ||||
|           ], | ||||
|           [ | ||||
|             "¥" | ||||
|           ], | ||||
|           [ | ||||
|             "^", | ||||
|             "↑", | ||||
|             "↓", | ||||
|             "←", | ||||
|             "→" | ||||
|           ], | ||||
|           [ | ||||
|             "°", | ||||
|             "′", | ||||
|             "″" | ||||
|           ], | ||||
|           [ | ||||
|             "=", | ||||
|             "≠", | ||||
|             "≈", | ||||
|             "∞" | ||||
|           ], | ||||
|           [ | ||||
|             "{" | ||||
|           ], | ||||
|           [ | ||||
|             "}" | ||||
|           ] | ||||
|         ], | ||||
|         [ | ||||
|           [ | ||||
|             "\\" | ||||
|           ], | ||||
|           [ | ||||
|             "©" | ||||
|           ], | ||||
|           [ | ||||
|             "®" | ||||
|           ], | ||||
|           [ | ||||
|             "™" | ||||
|           ], | ||||
|           [ | ||||
|             "℅" | ||||
|           ], | ||||
|           [ | ||||
|             "[" | ||||
|           ], | ||||
|           [ | ||||
|             "]" | ||||
|           ] | ||||
|         ], | ||||
|         [ | ||||
|           [ | ||||
|             "<", | ||||
|             "‹", | ||||
|             "≤", | ||||
|             "«" | ||||
|           ], | ||||
|           [ | ||||
|             ">", | ||||
|             "›", | ||||
|             "≥", | ||||
|             "»" | ||||
|           ], | ||||
|           [ | ||||
|             " " | ||||
|           ], | ||||
|           [ | ||||
|             "," | ||||
|           ], | ||||
|           [ | ||||
|             ".", | ||||
|             "…" | ||||
|           ] | ||||
|         ] | ||||
|       ] | ||||
|     } | ||||
|   ], | ||||
|   "locale": "ml", | ||||
|   "name": "Malayalam" | ||||
| } | ||||
| @@ -128,12 +128,15 @@ StScrollBar { | ||||
|  | ||||
| .slider { | ||||
|   height: 1em; | ||||
|   -slider-height: 0.3em; | ||||
|   -slider-background-color: $insensitive_bg_color; //background of the trough | ||||
|   -slider-border-color: $borders_color; //trough border color | ||||
|   -slider-active-background-color: $selected_bg_color; //active trough fill | ||||
|   -slider-active-border-color: darken($selected_bg_color,10%); //active trough border | ||||
|   -slider-border-width: 1px; | ||||
|   -barlevel-height: 0.3em; | ||||
|   -barlevel-background-color: $insensitive_bg_color; //background of the trough | ||||
|   -barlevel-border-color: $borders_color; //trough border color | ||||
|   -barlevel-active-background-color: $selected_bg_color; //active trough fill | ||||
|   -barlevel-active-border-color: darken($selected_bg_color,10%); //active trough border | ||||
|   -barlevel-overdrive-color: $destructive_color; | ||||
|   -barlevel-overdrive-border-color: darken($destructive_color,10%); | ||||
|   -barlevel-overdrive-separator-width: 0.2em; | ||||
|   -barlevel-border-width: 1px; | ||||
|   -slider-handle-radius: 6px; | ||||
| } | ||||
|  | ||||
| @@ -585,13 +588,11 @@ StScrollBar { | ||||
|   .osd-monitor-label { font-size: 3em; } | ||||
|   .level { | ||||
|     height: 0.6em; | ||||
|     border-radius: 0.3em; | ||||
|     background-color: transparentize(darken($osd_bg_color,15%),0.5); | ||||
|     color: $osd_fg_color; | ||||
|   } | ||||
|   .level-bar { | ||||
|     background-color: $osd_fg_color; | ||||
|     border-radius: 0.3em; | ||||
|     -barlevel-height: 0.6em; | ||||
|     -barlevel-background-color: transparentize(darken($osd_bg_color,15%),0.5); | ||||
|     -barlevel-active-background-color: $osd_fg_color; | ||||
|     -barlevel-overdrive-color: $destructive_color; | ||||
|     -barlevel-overdrive-separator-width: 0.2em; | ||||
|   } | ||||
| } | ||||
|  | ||||
| @@ -825,6 +826,8 @@ StScrollBar { | ||||
|  | ||||
|   .screencast-indicator { color: $warning_color; } | ||||
|  | ||||
|   .remote-access-indicator { color: $warning_color; } | ||||
|  | ||||
|   &.solid { | ||||
|     background-color: black; | ||||
|     /* transition from transparent to solid */ | ||||
| @@ -1122,6 +1125,7 @@ StScrollBar { | ||||
|   } | ||||
|  | ||||
|   .system-menu-action { | ||||
|     -st-icon-style: symbolic; | ||||
|     color: $fg_color; | ||||
|     border-radius: 32px; /* wish we could do 50% */ | ||||
|     padding: 13px; | ||||
|   | ||||
| @@ -14,7 +14,7 @@ | ||||
|    id="svg7384" | ||||
|    height="32" | ||||
|    sodipodi:docname="key-layout.svg" | ||||
|    inkscape:version="0.92.2 (5c3e80d, 2017-08-06)"> | ||||
|    inkscape:version="0.92.3 (2405546, 2018-03-11)"> | ||||
|   <sodipodi:namedview | ||||
|      pagecolor="#ffffff" | ||||
|      bordercolor="#666666" | ||||
| @@ -24,17 +24,21 @@ | ||||
|      guidetolerance="10" | ||||
|      inkscape:pageopacity="0" | ||||
|      inkscape:pageshadow="2" | ||||
|      inkscape:window-width="1919" | ||||
|      inkscape:window-height="1011" | ||||
|      inkscape:window-width="3440" | ||||
|      inkscape:window-height="1376" | ||||
|      id="namedview19" | ||||
|      showgrid="false" | ||||
|      inkscape:zoom="14.75" | ||||
|      inkscape:cx="1.220339" | ||||
|      inkscape:cy="11.842802" | ||||
|      inkscape:zoom="1" | ||||
|      inkscape:cx="46.246852" | ||||
|      inkscape:cy="17.474578" | ||||
|      inkscape:window-x="0" | ||||
|      inkscape:window-y="55" | ||||
|      inkscape:window-maximized="0" | ||||
|      inkscape:current-layer="svg7384" /> | ||||
|      inkscape:window-y="27" | ||||
|      inkscape:window-maximized="1" | ||||
|      inkscape:current-layer="svg7384"> | ||||
|     <inkscape:grid | ||||
|        type="xygrid" | ||||
|        id="grid861" /> | ||||
|   </sodipodi:namedview> | ||||
|   <metadata | ||||
|      id="metadata90"> | ||||
|     <rdf:RDF> | ||||
| @@ -92,23 +96,34 @@ | ||||
|      style="display:inline" | ||||
|      id="g4953" /> | ||||
|   <g | ||||
|      style="stroke-width:0.5;enable-background:new" | ||||
|      id="g3561" | ||||
|      inkscape:label="preferences-desktop-locale" | ||||
|      id="g11728" | ||||
|      transform="matrix(2,0,0,2,-522.0004,-1086)" | ||||
|      style="display:inline;stroke-width:1"> | ||||
|     <rect | ||||
|        style="fill:none;stroke:none;stroke-width:1" | ||||
|        id="rect11724" | ||||
|        width="16" | ||||
|        height="16" | ||||
|        x="20" | ||||
|        y="326" | ||||
|        transform="translate(241.0002,217)" /> | ||||
|      transform="matrix(2,0,0,2,135.99464,-895.9793)"> | ||||
|     <path | ||||
|        style="fill:#e5e5e5;fill-opacity:1;stroke:none;stroke-width:1" | ||||
|        d="m 265.69612,545.23396 c -3.58218,0 -4.66582,1.39975 -4.66582,1.39975 v 10.04946 c 0,0 1.08364,-1.07673 4.66582,-1.07673 2.9161,0 4.47225,1.07673 7.17818,1.07673 2.08923,0 3.19429,-1.39975 3.19429,-1.39975 v -10.04946 c 0,0 -1.14095,1.04084 -3.23018,1.04084 -3.3734,0 -3.97619,-1.04084 -7.14229,-1.04084 z m 2.93145,2.77148 c 1.32876,0 2.375,1.08037 2.375,2.4375 0,1.35713 -1.04624,2.46875 -2.375,2.46875 -1.32876,0 -2.40625,-1.11162 -2.40625,-2.46875 0,-1.35713 1.07749,-2.4375 2.40625,-2.4375 z m -4.5625,0.96875 0.96875,1.03125 -0.9375,-0.0312 0.9375,1 -0.96875,-0.0312 0.96875,1.03125 -1,-0.0312 0.0312,-1 h -0.0312 l 0.0312,-0.9688 h -0.0312 z m 4.5625,0 c -0.794,0 -1.46875,0.6578 -1.46875,1.46875 0,0.81095 0.67475,1.46875 1.46875,1.46875 0.79399,0 1.4375,-0.6578 1.4375,-1.46875 0,-0.81095 -0.64351,-1.46875 -1.4375,-1.46875 z m 4.375,0 v 1 l 0.0312,0.96875 h -0.0312 l 0.0312,1 -1,0.0312 0.96875,-1.03125 -0.96875,0.0312 0.9375,-1 -0.9375,0.0312 z m -7.9375,2.96875 0.96875,1.03125 -1,-0.0312 z m 6.9375,0 0.0312,1 -1,0.0312 z m -5.9375,1 0.96875,1.03125 -1,-0.0312 z m 4.9375,0 0.0312,1 -1,0.0312 z" | ||||
|        id="path11726" | ||||
|        sodipodi:nodetypes="cc" | ||||
|        inkscape:connector-curvature="0" | ||||
|        sodipodi:nodetypes="sccssccsssssssccccccccccccsssssccccccccccccccccccccccccccc" /> | ||||
|        id="path3535" | ||||
|        d="m -65,450 v 12" | ||||
|        style="fill:#e5e5e5;fill-opacity:1;fill-rule:evenodd;stroke:#e5e5e5;stroke-width:1;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> | ||||
|     <path | ||||
|        sodipodi:nodetypes="ccccccccc" | ||||
|        inkscape:connector-curvature="0" | ||||
|        id="path3537" | ||||
|        d="m -65,456 h 4 l 1,2 h 5 v -6 h -4 l -1,-2 h -5 z" | ||||
|        style="fill:none;fill-rule:evenodd;stroke:#e5e5e5;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> | ||||
|     <path | ||||
|        style="opacity:1;vector-effect:none;fill:#e5e5e5;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" | ||||
|        d="m -65,456 h 4 l 1,2 h 5 v -6 h -4 l -1,-2 h -5 z" | ||||
|        id="path3539" | ||||
|        inkscape:connector-curvature="0" | ||||
|        sodipodi:nodetypes="ccccccccc" /> | ||||
|     <rect | ||||
|        style="color:#bebebe;display:inline;overflow:visible;visibility:visible;fill:none;stroke:none;stroke-width:0.89050001;marker:none;enable-background:new" | ||||
|        id="rect3543" | ||||
|        y="448" | ||||
|        x="-68" | ||||
|        height="16" | ||||
|        width="16" /> | ||||
|   </g> | ||||
| </svg> | ||||
|   | ||||
| Before Width: | Height: | Size: 4.3 KiB After Width: | Height: | Size: 4.2 KiB | 
| @@ -13,10 +13,102 @@ | ||||
|    height="64px" | ||||
|    id="svg3393" | ||||
|    version="1.1" | ||||
|    inkscape:version="0.48.5 r10040" | ||||
|    sodipodi:docname="New document 2"> | ||||
|    inkscape:version="0.92.3 (2405546, 2018-03-11)" | ||||
|    sodipodi:docname="no-notifications.svg"> | ||||
|   <defs | ||||
|      id="defs3395" /> | ||||
|      id="defs3395"> | ||||
|     <clipPath | ||||
|        id="clipPath6262-0" | ||||
|        clipPathUnits="userSpaceOnUse"> | ||||
|       <rect | ||||
|          style="color:#bebebe;display:inline;overflow:visible;visibility:visible;fill:#bebebe;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none" | ||||
|          id="rect6264-6" | ||||
|          width="3.8250003" | ||||
|          height="6.3750005" | ||||
|          x="26.849981" | ||||
|          y="220.75" /> | ||||
|     </clipPath> | ||||
|     <clipPath | ||||
|        id="clipPath6258-0" | ||||
|        clipPathUnits="userSpaceOnUse"> | ||||
|       <rect | ||||
|          style="color:#bebebe;display:inline;overflow:visible;visibility:visible;fill:#bebebe;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none" | ||||
|          id="rect6260-6" | ||||
|          width="2.8977275" | ||||
|          height="5.3129687" | ||||
|          x="26.965673" | ||||
|          y="221.28162" /> | ||||
|     </clipPath> | ||||
|     <clipPath | ||||
|        id="clipPath6254-6" | ||||
|        clipPathUnits="userSpaceOnUse"> | ||||
|       <rect | ||||
|          style="color:#bebebe;display:inline;overflow:visible;visibility:visible;fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:2;marker:none" | ||||
|          id="rect6256-6" | ||||
|          width="1.876245" | ||||
|          height="4.8783236" | ||||
|          x="26.998718" | ||||
|          y="221.50153" /> | ||||
|     </clipPath> | ||||
|     <clipPath | ||||
|        id="clipPath8028-3" | ||||
|        clipPathUnits="userSpaceOnUse"> | ||||
|       <path | ||||
|          style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" | ||||
|          d="m -73,-30 -7,-7 v -4.5 h 16.5 v 4.5 l -7.5,7 z" | ||||
|          id="path8030-6" | ||||
|          inkscape:connector-curvature="0" | ||||
|          sodipodi:nodetypes="ccccccc" /> | ||||
|     </clipPath> | ||||
|     <clipPath | ||||
|        clipPathUnits="userSpaceOnUse" | ||||
|        id="clipPath6810-7-87-7"> | ||||
|       <rect | ||||
|          style="color:#bebebe;display:inline;overflow:visible;visibility:visible;fill:none;stroke:#ffffff;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none" | ||||
|          id="rect6812-2-4-5" | ||||
|          width="14" | ||||
|          height="11" | ||||
|          x="21" | ||||
|          y="281" /> | ||||
|     </clipPath> | ||||
|     <clipPath | ||||
|        id="clipPath6262" | ||||
|        clipPathUnits="userSpaceOnUse"> | ||||
|       <rect | ||||
|          style="color:#bebebe;display:inline;overflow:visible;visibility:visible;fill:#bebebe;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none" | ||||
|          id="rect6264" | ||||
|          width="3.8250003" | ||||
|          height="6.3750005" | ||||
|          x="26.849981" | ||||
|          y="220.75" /> | ||||
|     </clipPath> | ||||
|     <clipPath | ||||
|        id="clipPath6258" | ||||
|        clipPathUnits="userSpaceOnUse"> | ||||
|       <rect | ||||
|          style="color:#bebebe;display:inline;overflow:visible;visibility:visible;fill:#bebebe;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none" | ||||
|          id="rect6260" | ||||
|          width="2.8977275" | ||||
|          height="5.3129687" | ||||
|          x="26.965673" | ||||
|          y="221.28162" /> | ||||
|     </clipPath> | ||||
|     <clipPath | ||||
|        id="clipPath6254" | ||||
|        clipPathUnits="userSpaceOnUse"> | ||||
|       <rect | ||||
|          style="color:#bebebe;display:inline;overflow:visible;visibility:visible;fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:2;marker:none" | ||||
|          id="rect6256" | ||||
|          width="1.876245" | ||||
|          height="4.8783236" | ||||
|          x="26.998718" | ||||
|          y="221.50153" /> | ||||
|     </clipPath> | ||||
|     <inkscape:path-effect | ||||
|        effect="spiro" | ||||
|        id="path-effect3951" | ||||
|        is_visible="true" /> | ||||
|   </defs> | ||||
|   <sodipodi:namedview | ||||
|      id="base" | ||||
|      pagecolor="#ffffff" | ||||
| @@ -24,17 +116,17 @@ | ||||
|      borderopacity="1.0" | ||||
|      inkscape:pageopacity="0.0" | ||||
|      inkscape:pageshadow="2" | ||||
|      inkscape:zoom="5.5" | ||||
|      inkscape:cx="32" | ||||
|      inkscape:cy="32" | ||||
|      inkscape:zoom="1" | ||||
|      inkscape:cx="125.08157" | ||||
|      inkscape:cy="-13.805087" | ||||
|      inkscape:current-layer="layer1" | ||||
|      showgrid="true" | ||||
|      inkscape:document-units="px" | ||||
|      inkscape:grid-bbox="true" | ||||
|      inkscape:window-width="697" | ||||
|      inkscape:window-height="613" | ||||
|      inkscape:window-x="100" | ||||
|      inkscape:window-y="77" | ||||
|      inkscape:window-width="1664" | ||||
|      inkscape:window-height="1034" | ||||
|      inkscape:window-x="1479" | ||||
|      inkscape:window-y="252" | ||||
|      inkscape:window-maximized="0" /> | ||||
|   <metadata | ||||
|      id="metadata3398"> | ||||
| @@ -54,7 +146,7 @@ | ||||
|      inkscape:groupmode="layer"> | ||||
|     <g | ||||
|        style="display:inline" | ||||
|        transform="matrix(4,0,0,4,0.29733827,-0.35415646)" | ||||
|        transform="matrix(4,0,0,4,-79.702662,-0.35415646)" | ||||
|        id="g19245"> | ||||
|       <g | ||||
|          id="g19247" | ||||
| @@ -71,15 +163,15 @@ | ||||
|          transform="translate(-323.02908,-649.02581)"> | ||||
|         <path | ||||
|            inkscape:connector-curvature="0" | ||||
|            d="m 331.9377,653 c 0.0187,0.16677 0.0625,0.32822 0.0625,0.5 0,2.48528 -2.01472,4.5 -4.5,4.5 -0.11769,0 -0.22834,-0.0224 -0.34375,-0.0312 l 0,2.21875 c 0,1.00412 0.80838,1.8125 1.8125,1.8125 l 1.54511,-5e-5 2,2.04688 2.0625,-2.04688 1.61114,0 c 1.00413,0 1.8125,-0.80838 1.8125,-1.8125 l 0,-5.375 c 0,-1.00412 -0.80837,-1.8125 -1.8125,-1.8125 z" | ||||
|            d="m 331.9377,653 c 0.0187,0.16677 0.0625,0.32822 0.0625,0.5 0,2.48528 -2.01472,4.5 -4.5,4.5 -0.11769,0 -0.22834,-0.0224 -0.34375,-0.0312 v 2.21875 c 0,1.00412 0.80838,1.8125 1.8125,1.8125 l 1.54511,-5e-5 2,2.04688 2.0625,-2.04688 h 1.61114 c 1.00413,0 1.8125,-0.80838 1.8125,-1.8125 v -5.375 c 0,-1.00412 -0.80837,-1.8125 -1.8125,-1.8125 z" | ||||
|            id="path19253" | ||||
|            sodipodi:nodetypes="csscsscccssssc" | ||||
|            style="opacity:0.5;color:#000000;fill:#c3c3c3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> | ||||
|            style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:0.5;fill:#c3c3c3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;enable-background:accumulate" /> | ||||
|         <path | ||||
|            inkscape:connector-curvature="0" | ||||
|            d="m 327.5002,650 c -1.933,0 -3.5,1.567 -3.5,3.5 0,1.933 1.567,3.5 3.5,3.5 1.933,0 3.5,-1.567 3.5,-3.5 0,-1.933 -1.567,-3.5 -3.5,-3.5 z m -0.53125,1 1.03125,0 -0.0625,1.375 a 0.19951718,0.19951718 0 0 0 0,0.0625 0.19951718,0.19951718 0 0 0 0,0.0312 0.19951718,0.19951718 0 0 0 0.125,0.125 0.19951718,0.19951718 0 0 0 0.0312,0 0.19951718,0.19951718 0 0 0 0.0625,0 0.19951718,0.19951718 0 0 0 0.0625,0 0.19951718,0.19951718 0 0 0 0.0312,-0.0312 l 1.15625,-0.75 0.5,0.90625 -1.21875,0.625 a 0.19951718,0.19951718 0 0 0 -0.0312,0 0.19951718,0.19951718 0 0 0 -0.0312,0.0312 0.19951718,0.19951718 0 0 0 -0.0312,0.0937 0.19951718,0.19951718 0 0 0 0,0.0625 0.19951718,0.19951718 0 0 0 0,0.0312 0.19951718,0.19951718 0 0 0 0.0312,0.0625 0.19951718,0.19951718 0 0 0 0.0312,0.0312 0.19951718,0.19951718 0 0 0 0.0312,0.0312 l 1.25,0.625 -0.53125,0.90625 -1.15625,-0.781 a 0.19951718,0.19951718 0 0 0 -0.0312,0 0.19951718,0.19951718 0 0 0 -0.0625,-0.0312 0.19951718,0.19951718 0 0 0 -0.0625,0 0.19951718,0.19951718 0 0 0 -0.125,0.0937 0.19951718,0.19951718 0 0 0 -0.0312,0.0312 0.19951718,0.19951718 0 0 0 0,0.0312 0.19951718,0.19951718 0 0 0 0,0.0625 l 0.0625,1.3751 -1.03125,0 0.0937,-1.375 a 0.19951718,0.19951718 0 0 0 -0.0312,-0.0937 0.19951718,0.19951718 0 0 0 -0.0312,-0.0625 0.19951718,0.19951718 0 0 0 -0.0625,-0.0312 0.19951718,0.19951718 0 0 0 -0.0625,-0.0312 0.19951718,0.19951718 0 0 0 -0.0312,0 0.19951718,0.19951718 0 0 0 -0.0937,0.0312 l -1.1875,0.78125 -0.5,-0.90625 1.25,-0.625 a 0.19951718,0.19951718 0 0 0 0.0312,-0.0312 0.19951718,0.19951718 0 0 0 0.0312,-0.0312 0.19951718,0.19951718 0 0 0 0.0312,-0.0625 0.19951718,0.19951718 0 0 0 0,-0.0312 0.19951718,0.19951718 0 0 0 0,-0.0625 0.19951718,0.19951718 0 0 0 0,-0.0312 0.19951718,0.19951718 0 0 0 -0.0312,-0.0625 0.19951718,0.19951718 0 0 0 -0.0312,-0.0312 0.19951718,0.19951718 0 0 0 -0.0312,0 l -1.25,-0.625 0.5,-0.90625 1.1875,0.75 a 0.19951718,0.19951718 0 0 0 0.0312,0.0312 0.19951718,0.19951718 0 0 0 0.0625,0 0.19951718,0.19951718 0 0 0 0.0625,0 0.19951718,0.19951718 0 0 0 0.0312,0 0.19951718,0.19951718 0 0 0 0.0312,-0.0312 0.19951718,0.19951718 0 0 0 0.0312,-0.0312 0.19951718,0.19951718 0 0 0 0.0312,-0.0312 0.19951718,0.19951718 0 0 0 0,-0.0312 0.19951718,0.19951718 0 0 0 0.0312,-0.0625 0.19951718,0.19951718 0 0 0 0,-0.0312 L 326.96895,651 z" | ||||
|            d="m 327.5002,650 c -1.933,0 -3.5,1.567 -3.5,3.5 0,1.933 1.567,3.5 3.5,3.5 1.933,0 3.5,-1.567 3.5,-3.5 0,-1.933 -1.567,-3.5 -3.5,-3.5 z m -0.53125,1 h 1.03125 l -0.0625,1.375 a 0.19951718,0.19951718 0 0 0 0,0.0625 0.19951718,0.19951718 0 0 0 0,0.0312 0.19951718,0.19951718 0 0 0 0.125,0.125 0.19951718,0.19951718 0 0 0 0.0312,0 0.19951718,0.19951718 0 0 0 0.0625,0 0.19951718,0.19951718 0 0 0 0.0625,0 0.19951718,0.19951718 0 0 0 0.0312,-0.0312 l 1.15625,-0.75 0.5,0.90625 -1.21875,0.625 a 0.19951718,0.19951718 0 0 0 -0.0312,0 0.19951718,0.19951718 0 0 0 -0.0312,0.0312 0.19951718,0.19951718 0 0 0 -0.0312,0.0937 0.19951718,0.19951718 0 0 0 0,0.0625 0.19951718,0.19951718 0 0 0 0,0.0312 0.19951718,0.19951718 0 0 0 0.0312,0.0625 0.19951718,0.19951718 0 0 0 0.0312,0.0312 0.19951718,0.19951718 0 0 0 0.0312,0.0312 l 1.25,0.625 -0.53125,0.90625 -1.15625,-0.781 a 0.19951718,0.19951718 0 0 0 -0.0312,0 0.19951718,0.19951718 0 0 0 -0.0625,-0.0312 0.19951718,0.19951718 0 0 0 -0.0625,0 0.19951718,0.19951718 0 0 0 -0.125,0.0937 0.19951718,0.19951718 0 0 0 -0.0312,0.0312 0.19951718,0.19951718 0 0 0 0,0.0312 0.19951718,0.19951718 0 0 0 0,0.0625 L 328.0002,656 h -1.03125 l 0.0937,-1.375 a 0.19951718,0.19951718 0 0 0 -0.0312,-0.0937 0.19951718,0.19951718 0 0 0 -0.0312,-0.0625 0.19951718,0.19951718 0 0 0 -0.0625,-0.0312 0.19951718,0.19951718 0 0 0 -0.0625,-0.0312 0.19951718,0.19951718 0 0 0 -0.0312,0 0.19951718,0.19951718 0 0 0 -0.0937,0.0312 l -1.1875,0.78125 -0.5,-0.90625 1.25,-0.625 a 0.19951718,0.19951718 0 0 0 0.0312,-0.0312 0.19951718,0.19951718 0 0 0 0.0312,-0.0312 0.19951718,0.19951718 0 0 0 0.0312,-0.0625 0.19951718,0.19951718 0 0 0 0,-0.0312 0.19951718,0.19951718 0 0 0 0,-0.0625 0.19951718,0.19951718 0 0 0 0,-0.0312 0.19951718,0.19951718 0 0 0 -0.0312,-0.0625 0.19951718,0.19951718 0 0 0 -0.0312,-0.0312 0.19951718,0.19951718 0 0 0 -0.0312,0 l -1.25,-0.625 0.5,-0.90625 1.1875,0.75 a 0.19951718,0.19951718 0 0 0 0.0312,0.0312 0.19951718,0.19951718 0 0 0 0.0625,0 0.19951718,0.19951718 0 0 0 0.0625,0 0.19951718,0.19951718 0 0 0 0.0312,0 0.19951718,0.19951718 0 0 0 0.0312,-0.0312 0.19951718,0.19951718 0 0 0 0.0312,-0.0312 0.19951718,0.19951718 0 0 0 0.0312,-0.0312 0.19951718,0.19951718 0 0 0 0,-0.0312 0.19951718,0.19951718 0 0 0 0.0312,-0.0625 0.19951718,0.19951718 0 0 0 0,-0.0312 z" | ||||
|            id="path19255" | ||||
|            style="color:#000000;fill:#bebebe;fill-opacity:1;fill-rule:nonzero;stroke:none;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> | ||||
|            style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#bebebe;fill-opacity:1;fill-rule:nonzero;stroke:none;marker:none;enable-background:accumulate" /> | ||||
|       </g> | ||||
|       <g | ||||
|          id="g19257" | ||||
| @@ -110,5 +202,22 @@ | ||||
|          style="display:inline" | ||||
|          transform="translate(-323.02908,-649.02581)" /> | ||||
|     </g> | ||||
|     <g | ||||
|        style="opacity:1;vector-effect:none;fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:new" | ||||
|        inkscape:label="preferences-system-notifications" | ||||
|        id="g13967" | ||||
|        transform="matrix(4,0,0,4,-1044.0008,-2172)"> | ||||
|       <path | ||||
|          inkscape:connector-curvature="0" | ||||
|          d="m 268.94244,544.94838 c -2.20914,0 -3.33013,1.5 -4,4 l -1,5 c -0.10831,0.54156 -0.44772,1 -1,1 v 1 h 12 v -1 c -0.55229,0 -0.89169,-0.45844 -1,-1 l -1,-5 c -0.53033,-2.5 -1.79086,-4 -4,-4 z" | ||||
|          id="path40220" | ||||
|          sodipodi:nodetypes="ccsccccscc" | ||||
|          style="opacity:1;vector-effect:none;fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;paint-order:normal" /> | ||||
|       <path | ||||
|          inkscape:connector-curvature="0" | ||||
|          d="m 269.11822,556.94838 a 1.5,1.5 0 0 0 1.41211,1 1.5,1.5 0 0 0 1.41211,-1 z" | ||||
|          id="path40774" | ||||
|          style="opacity:1;vector-effect:none;fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;paint-order:normal" /> | ||||
|     </g> | ||||
|   </g> | ||||
| </svg> | ||||
|   | ||||
| Before Width: | Height: | Size: 6.1 KiB After Width: | Height: | Size: 11 KiB | 
| @@ -50,8 +50,7 @@ gnome.gtkdoc('shell', | ||||
|     join_paths(meson.build_root(), 'src') | ||||
|   ], | ||||
|   scan_args: [ | ||||
|     '--ignore-headers=' + ' '.join(private_headers + exclude_directories), | ||||
|     '--rebuild-types' | ||||
|     '--ignore-headers=' + ' '.join(private_headers + exclude_directories) | ||||
|   ], | ||||
|   install: true | ||||
| ) | ||||
|   | ||||
| @@ -17,8 +17,7 @@ gnome.gtkdoc('st', | ||||
|   ], | ||||
|   scan_args: [ | ||||
|     '--ignore-headers=' + ' '.join(private_headers), | ||||
|     '--rebuild-sections', | ||||
|     '--rebuild-types' | ||||
|     '--rebuild-sections' | ||||
|   ], | ||||
|   install: true | ||||
| ) | ||||
|   | ||||
| @@ -14,15 +14,16 @@ const _ = Gettext.gettext; | ||||
| const Config = imports.misc.config; | ||||
| const ExtensionUtils = imports.misc.extensionUtils; | ||||
|  | ||||
| const GnomeShellIface = '<node> \ | ||||
| <interface name="org.gnome.Shell.Extensions"> \ | ||||
| <signal name="ExtensionStatusChanged"> \ | ||||
|     <arg type="s" name="uuid"/> \ | ||||
|     <arg type="i" name="state"/> \ | ||||
|     <arg type="s" name="error"/> \ | ||||
| </signal> \ | ||||
| </interface> \ | ||||
| </node>'; | ||||
| const GnomeShellIface = ` | ||||
| <node> | ||||
| <interface name="org.gnome.Shell.Extensions"> | ||||
| <signal name="ExtensionStatusChanged"> | ||||
|     <arg type="s" name="uuid"/> | ||||
|     <arg type="i" name="state"/> | ||||
|     <arg type="s" name="error"/> | ||||
| </signal> | ||||
| </interface> | ||||
| </node>`; | ||||
|  | ||||
| const GnomeShellProxy = Gio.DBusProxy.makeProxyWrapper(GnomeShellIface); | ||||
|  | ||||
|   | ||||
| @@ -242,11 +242,11 @@ var AuthPrompt = new Lang.Class({ | ||||
|         this.emit('prompted'); | ||||
|     }, | ||||
|  | ||||
|     _onVerificationFailed() { | ||||
|     _onVerificationFailed(userVerifier, canRetry) { | ||||
|         this._queryingService = null; | ||||
|         this.clear(); | ||||
|  | ||||
|         this.updateSensitivity(true); | ||||
|         this.updateSensitivity(canRetry); | ||||
|         this.setActorInDefaultButtonWell(null); | ||||
|         this.verificationStatus = AuthPromptStatus.VERIFICATION_FAILED; | ||||
|     }, | ||||
| @@ -439,6 +439,7 @@ var AuthPrompt = new Lang.Class({ | ||||
|         this.verificationStatus = AuthPromptStatus.NOT_VERIFYING; | ||||
|         this.cancelButton.reactive = true; | ||||
|         this.nextButton.label = _("Next"); | ||||
|         this._preemptiveAnswer = null; | ||||
|  | ||||
|         if (this._userVerifier) | ||||
|             this._userVerifier.cancel(); | ||||
|   | ||||
| @@ -5,13 +5,14 @@ const Lang = imports.lang; | ||||
| const Shell = imports.gi.Shell; | ||||
| const Signals = imports.signals; | ||||
|  | ||||
| const FprintManagerIface = '<node> \ | ||||
| <interface name="net.reactivated.Fprint.Manager"> \ | ||||
| <method name="GetDefaultDevice"> \ | ||||
|     <arg type="o" direction="out" /> \ | ||||
| </method> \ | ||||
| </interface> \ | ||||
| </node>'; | ||||
| const FprintManagerIface = ` | ||||
| <node> | ||||
| <interface name="net.reactivated.Fprint.Manager"> | ||||
| <method name="GetDefaultDevice"> | ||||
|     <arg type="o" direction="out" /> | ||||
| </method> | ||||
| </interface> | ||||
| </node>`; | ||||
|  | ||||
| const FprintManagerInfo = Gio.DBusInterfaceInfo.new_for_xml(FprintManagerIface); | ||||
|  | ||||
|   | ||||
| @@ -4,13 +4,14 @@ const Gio = imports.gi.Gio; | ||||
| const Lang = imports.lang; | ||||
| const Signals = imports.signals; | ||||
|  | ||||
| const OVirtCredentialsIface = '<node> \ | ||||
| <interface name="org.ovirt.vdsm.Credentials"> \ | ||||
| <signal name="UserAuthenticated"> \ | ||||
|     <arg type="s" name="token"/> \ | ||||
| </signal> \ | ||||
| </interface> \ | ||||
| </node>'; | ||||
| const OVirtCredentialsIface = ` | ||||
| <node> | ||||
| <interface name="org.ovirt.vdsm.Credentials"> | ||||
| <signal name="UserAuthenticated"> | ||||
|     <arg type="s" name="token"/> | ||||
| </signal> | ||||
| </interface> | ||||
| </node>`; | ||||
|  | ||||
| const OVirtCredentialsInfo = Gio.DBusInterfaceInfo.new_for_xml(OVirtCredentialsIface); | ||||
|  | ||||
|   | ||||
| @@ -5,58 +5,61 @@ const Lang = imports.lang; | ||||
| const Shell = imports.gi.Shell; | ||||
| const Signals = imports.signals; | ||||
|  | ||||
| const ProviderIface = '<node> \ | ||||
| <interface name="org.freedesktop.realmd.Provider"> \ | ||||
|     <property name="Name" type="s" access="read"/> \ | ||||
|     <property name="Version" type="s" access="read"/> \ | ||||
|     <property name="Realms" type="ao" access="read"/> \ | ||||
|     <method name="Discover"> \ | ||||
|         <arg name="string" type="s" direction="in"/> \ | ||||
|         <arg name="options" type="a{sv}" direction="in"/> \ | ||||
|         <arg name="relevance" type="i" direction="out"/> \ | ||||
|         <arg name="realm" type="ao" direction="out"/> \ | ||||
|     </method> \ | ||||
| </interface> \ | ||||
| </node>'; | ||||
| const ProviderIface = ` | ||||
| <node> | ||||
| <interface name="org.freedesktop.realmd.Provider"> | ||||
|     <property name="Name" type="s" access="read"/> | ||||
|     <property name="Version" type="s" access="read"/> | ||||
|     <property name="Realms" type="ao" access="read"/> | ||||
|     <method name="Discover"> | ||||
|         <arg name="string" type="s" direction="in"/> | ||||
|         <arg name="options" type="a{sv}" direction="in"/> | ||||
|         <arg name="relevance" type="i" direction="out"/> | ||||
|         <arg name="realm" type="ao" direction="out"/> | ||||
|     </method> | ||||
| </interface> | ||||
| </node>`; | ||||
| const Provider = Gio.DBusProxy.makeProxyWrapper(ProviderIface); | ||||
|  | ||||
| const ServiceIface = '<node> \ | ||||
| <interface name="org.freedesktop.realmd.Service"> \ | ||||
|     <method name="Cancel"> \ | ||||
|         <arg name="operation" type="s" direction="in"/> \ | ||||
|     </method> \ | ||||
|     <method name="Release" /> \ | ||||
|     <method name="SetLocale"> \ | ||||
|         <arg name="locale" type="s" direction="in"/> \ | ||||
|     </method> \ | ||||
|     <signal name="Diagnostics"> \ | ||||
|         <arg name="data" type="s"/> \ | ||||
|         <arg name="operation" type="s"/> \ | ||||
|     </signal> \ | ||||
| </interface> \ | ||||
| </node>'; | ||||
| const ServiceIface = ` | ||||
| <node> | ||||
| <interface name="org.freedesktop.realmd.Service"> | ||||
|     <method name="Cancel"> | ||||
|         <arg name="operation" type="s" direction="in"/> | ||||
|     </method> | ||||
|     <method name="Release" /> | ||||
|     <method name="SetLocale"> | ||||
|         <arg name="locale" type="s" direction="in"/> | ||||
|     </method> | ||||
|     <signal name="Diagnostics"> | ||||
|         <arg name="data" type="s"/> | ||||
|         <arg name="operation" type="s"/> | ||||
|     </signal> | ||||
| </interface> | ||||
| </node>`; | ||||
| const Service = Gio.DBusProxy.makeProxyWrapper(ServiceIface); | ||||
|  | ||||
| const RealmIface = '<node> \ | ||||
| <interface name="org.freedesktop.realmd.Realm"> \ | ||||
|     <property name="Name" type="s" access="read"/> \ | ||||
|     <property name="Configured" type="s" access="read"/> \ | ||||
|     <property name="Details" type="a(ss)" access="read"/> \ | ||||
|     <property name="LoginFormats" type="as" access="read"/> \ | ||||
|     <property name="LoginPolicy" type="s" access="read"/> \ | ||||
|     <property name="PermittedLogins" type="as" access="read"/> \ | ||||
|     <property name="SupportedInterfaces" type="as" access="read"/> \ | ||||
|     <method name="ChangeLoginPolicy"> \ | ||||
|         <arg name="login_policy" type="s" direction="in"/> \ | ||||
|         <arg name="permitted_add" type="as" direction="in"/> \ | ||||
|         <arg name="permitted_remove" type="as" direction="in"/> \ | ||||
|         <arg name="options" type="a{sv}" direction="in"/> \ | ||||
|     </method> \ | ||||
|     <method name="Deconfigure"> \ | ||||
|         <arg name="options" type="a{sv}" direction="in"/> \ | ||||
|     </method> \ | ||||
| </interface> \ | ||||
| </node>'; | ||||
| const RealmIface = ` | ||||
| <node> | ||||
| <interface name="org.freedesktop.realmd.Realm"> | ||||
|     <property name="Name" type="s" access="read"/> | ||||
|     <property name="Configured" type="s" access="read"/> | ||||
|     <property name="Details" type="a(ss)" access="read"/> | ||||
|     <property name="LoginFormats" type="as" access="read"/> | ||||
|     <property name="LoginPolicy" type="s" access="read"/> | ||||
|     <property name="PermittedLogins" type="as" access="read"/> | ||||
|     <property name="SupportedInterfaces" type="as" access="read"/> | ||||
|     <method name="ChangeLoginPolicy"> | ||||
|         <arg name="login_policy" type="s" direction="in"/> | ||||
|         <arg name="permitted_add" type="as" direction="in"/> | ||||
|         <arg name="permitted_remove" type="as" direction="in"/> | ||||
|         <arg name="options" type="a{sv}" direction="in"/> | ||||
|     </method> | ||||
|     <method name="Deconfigure"> | ||||
|         <arg name="options" type="a{sv}" direction="in"/> | ||||
|     </method> | ||||
| </interface> | ||||
| </node>`; | ||||
| const Realm = Gio.DBusProxy.makeProxyWrapper(RealmIface); | ||||
|  | ||||
| var Manager = new Lang.Class({ | ||||
|   | ||||
| @@ -537,12 +537,13 @@ var ShellUserVerifier = new Lang.Class({ | ||||
|     _verificationFailed(retry) { | ||||
|         // For Not Listed / enterprise logins, immediately reset | ||||
|         // the dialog | ||||
|         // Otherwise, we allow ALLOWED_FAILURES attempts. After that, we | ||||
|         // go back to the welcome screen. | ||||
|         // Otherwise, when in login mode we allow ALLOWED_FAILURES attempts. | ||||
|         // After that, we go back to the welcome screen. | ||||
|  | ||||
|         this._failCounter++; | ||||
|         let canRetry = retry && this._userName && | ||||
|             this._failCounter < this._settings.get_int(ALLOWED_FAILURES_KEY); | ||||
|             (this._reauthOnly || | ||||
|              this._failCounter < this._settings.get_int(ALLOWED_FAILURES_KEY)); | ||||
|  | ||||
|         if (canRetry) { | ||||
|             if (!this.hasPendingMessages) { | ||||
| @@ -565,7 +566,7 @@ var ShellUserVerifier = new Lang.Class({ | ||||
|             } | ||||
|         } | ||||
|  | ||||
|         this.emit('verification-failed'); | ||||
|         this.emit('verification-failed', canRetry); | ||||
|     }, | ||||
|  | ||||
|     _onConversationStopped(client, serviceName) { | ||||
|   | ||||
| @@ -9,8 +9,6 @@ | ||||
|     <file>gdm/realmd.js</file> | ||||
|     <file>gdm/util.js</file> | ||||
|  | ||||
|     <file>extensionPrefs/main.js</file> | ||||
|  | ||||
|     <file>misc/config.js</file> | ||||
|     <file>misc/extensionUtils.js</file> | ||||
|     <file>misc/fileUtils.js</file> | ||||
| @@ -33,8 +31,6 @@ | ||||
|     <file>perf/core.js</file> | ||||
|     <file>perf/hwtest.js</file> | ||||
|  | ||||
|     <file>portalHelper/main.js</file> | ||||
|  | ||||
|     <file>ui/accessDialog.js</file> | ||||
|     <file>ui/altTab.js</file> | ||||
|     <file>ui/animation.js</file> | ||||
| @@ -43,6 +39,7 @@ | ||||
|     <file>ui/audioDeviceSelection.js</file> | ||||
|     <file>ui/backgroundMenu.js</file> | ||||
|     <file>ui/background.js</file> | ||||
|     <file>ui/barLevel.js</file> | ||||
|     <file>ui/boxpointer.js</file> | ||||
|     <file>ui/calendar.js</file> | ||||
|     <file>ui/checkBox.js</file> | ||||
| @@ -130,6 +127,7 @@ | ||||
|     <file>ui/status/rfkill.js</file> | ||||
|     <file>ui/status/volume.js</file> | ||||
|     <file>ui/status/bluetooth.js</file> | ||||
|     <file>ui/status/remoteAccess.js</file> | ||||
|     <file>ui/status/screencast.js</file> | ||||
|     <file>ui/status/system.js</file> | ||||
|     <file>ui/status/thunderbolt.js</file> | ||||
|   | ||||
| @@ -6,3 +6,17 @@ js_resources = gnome.compile_resources( | ||||
|   c_name: 'shell_js_resources', | ||||
|   dependencies: [config_js] | ||||
| ) | ||||
|  | ||||
| portal_resources = gnome.compile_resources( | ||||
|   'portal-resources', 'portal-resources.gresource.xml', | ||||
|   source_dir: ['.', meson.current_build_dir()], | ||||
|   c_name: 'portal_js_resources', | ||||
|   dependencies: [config_js] | ||||
| ) | ||||
|  | ||||
| prefs_resources = gnome.compile_resources( | ||||
|   'prefs-resources', 'prefs-resources.gresource.xml', | ||||
|   source_dir: ['.', meson.current_build_dir()], | ||||
|   c_name: 'prefs_js_resources', | ||||
|   dependencies: [config_js] | ||||
| ) | ||||
|   | ||||
| @@ -112,6 +112,8 @@ function createExtensionObject(uuid, dir, type) { | ||||
|     let metadataContents, success, tag; | ||||
|     try { | ||||
|         [success, metadataContents, tag] = metadataFile.load_contents(null); | ||||
|         if (metadataContents instanceof Uint8Array) | ||||
|             metadataContents = imports.byteArray.toString(metadataContents); | ||||
|     } catch (e) { | ||||
|         throw new Error('Failed to load metadata.json: ' + e); | ||||
|     } | ||||
|   | ||||
| @@ -4,17 +4,18 @@ const Gio = imports.gi.Gio; | ||||
| const Lang = imports.lang; | ||||
| const Signals = imports.signals; | ||||
|  | ||||
| const PresenceIface = '<node> \ | ||||
| <interface name="org.gnome.SessionManager.Presence"> \ | ||||
| <method name="SetStatus"> \ | ||||
|     <arg type="u" direction="in"/> \ | ||||
| </method> \ | ||||
| <property name="status" type="u" access="readwrite"/> \ | ||||
| <signal name="StatusChanged"> \ | ||||
|     <arg type="u" direction="out"/> \ | ||||
| </signal> \ | ||||
| </interface> \ | ||||
| </node>'; | ||||
| const PresenceIface = ` | ||||
| <node> | ||||
| <interface name="org.gnome.SessionManager.Presence"> | ||||
| <method name="SetStatus"> | ||||
|     <arg type="u" direction="in"/> | ||||
| </method> | ||||
| <property name="status" type="u" access="readwrite"/> | ||||
| <signal name="StatusChanged"> | ||||
|     <arg type="u" direction="out"/> | ||||
| </signal> | ||||
| </interface> | ||||
| </node>`; | ||||
|  | ||||
| var PresenceStatus = { | ||||
|     AVAILABLE: 0, | ||||
| @@ -32,16 +33,17 @@ function Presence(initCallback, cancellable) { | ||||
| // Note inhibitors are immutable objects, so they don't | ||||
| // change at runtime (changes always come in the form | ||||
| // of new inhibitors) | ||||
| const InhibitorIface = '<node> \ | ||||
| <interface name="org.gnome.SessionManager.Inhibitor"> \ | ||||
| <method name="GetAppId"> \ | ||||
|     <arg type="s" direction="out" /> \ | ||||
| </method> \ | ||||
| <method name="GetReason"> \ | ||||
|     <arg type="s" direction="out" /> \ | ||||
| </method> \ | ||||
| </interface> \ | ||||
| </node>'; | ||||
| const InhibitorIface = ` | ||||
| <node> | ||||
| <interface name="org.gnome.SessionManager.Inhibitor"> | ||||
| <method name="GetAppId"> | ||||
|     <arg type="s" direction="out" /> | ||||
| </method> | ||||
| <method name="GetReason"> | ||||
|     <arg type="s" direction="out" /> | ||||
| </method> | ||||
| </interface> | ||||
| </node>`; | ||||
|  | ||||
| var InhibitorProxy = Gio.DBusProxy.makeProxyWrapper(InhibitorIface); | ||||
| function Inhibitor(objectPath, initCallback, cancellable) { | ||||
| @@ -49,29 +51,30 @@ function Inhibitor(objectPath, initCallback, cancellable) { | ||||
| } | ||||
|  | ||||
| // Not the full interface, only the methods we use | ||||
| const SessionManagerIface = '<node> \ | ||||
| <interface name="org.gnome.SessionManager"> \ | ||||
| <method name="Logout"> \ | ||||
|     <arg type="u" direction="in" /> \ | ||||
| </method> \ | ||||
| <method name="Shutdown" /> \ | ||||
| <method name="Reboot" /> \ | ||||
| <method name="CanShutdown"> \ | ||||
|     <arg type="b" direction="out" /> \ | ||||
| </method> \ | ||||
| <method name="IsInhibited"> \ | ||||
|     <arg type="u" direction="in" /> \ | ||||
|     <arg type="b" direction="out" /> \ | ||||
| </method> \ | ||||
| <property name="SessionIsActive" type="b" access="read"/> \ | ||||
| <signal name="InhibitorAdded"> \ | ||||
|     <arg type="o" direction="out"/> \ | ||||
| </signal> \ | ||||
| <signal name="InhibitorRemoved"> \ | ||||
|     <arg type="o" direction="out"/> \ | ||||
| </signal> \ | ||||
| </interface> \ | ||||
| </node>'; | ||||
| const SessionManagerIface = ` | ||||
| <node> | ||||
| <interface name="org.gnome.SessionManager"> | ||||
| <method name="Logout"> | ||||
|     <arg type="u" direction="in" /> | ||||
| </method> | ||||
| <method name="Shutdown" /> | ||||
| <method name="Reboot" /> | ||||
| <method name="CanShutdown"> | ||||
|     <arg type="b" direction="out" /> | ||||
| </method> | ||||
| <method name="IsInhibited"> | ||||
|     <arg type="u" direction="in" /> | ||||
|     <arg type="b" direction="out" /> | ||||
| </method> | ||||
| <property name="SessionIsActive" type="b" access="read"/> | ||||
| <signal name="InhibitorAdded"> | ||||
|     <arg type="o" direction="out"/> | ||||
| </signal> | ||||
| <signal name="InhibitorRemoved"> | ||||
|     <arg type="o" direction="out"/> | ||||
| </signal> | ||||
| </interface> | ||||
| </node>`; | ||||
|  | ||||
| var SessionManagerProxy = Gio.DBusProxy.makeProxyWrapper(SessionManagerIface); | ||||
| function SessionManager(initCallback, cancellable) { | ||||
|   | ||||
| @@ -17,6 +17,8 @@ var InputMethod = new Lang.Class({ | ||||
|         this._currentFocus = null; | ||||
|         this._currentEvent = null; | ||||
|         this._doForwardEvent = false; | ||||
|         this._preeditStr = ''; | ||||
|         this._preeditPos = 0; | ||||
|         this._ibus = IBus.Bus.new_async(); | ||||
|         this._ibus.connect('connected', this._onConnected.bind(this)); | ||||
|         this._ibus.connect('disconnected', this._clear.bind(this)); | ||||
| @@ -69,6 +71,8 @@ var InputMethod = new Lang.Class({ | ||||
|         this._context.connect('commit-text', this._onCommitText.bind(this)); | ||||
|         this._context.connect('delete-surrounding-text', this._onDeleteSurroundingText.bind(this)); | ||||
|         this._context.connect('update-preedit-text', this._onUpdatePreeditText.bind(this)); | ||||
|         this._context.connect('show-preedit-text', this._onShowPreeditText.bind(this)); | ||||
|         this._context.connect('hide-preedit-text', this._onHidePreeditText.bind(this)); | ||||
|         this._context.connect('forward-key-event', this._onForwardKeyEvent.bind(this)); | ||||
|  | ||||
|         this._updateCapabilities(); | ||||
| @@ -79,6 +83,8 @@ var InputMethod = new Lang.Class({ | ||||
|         this._hints = 0; | ||||
|         this._purpose = 0; | ||||
|         this._enabled = false; | ||||
|         this._preeditStr = '' | ||||
|         this._preeditPos = 0; | ||||
|     }, | ||||
|  | ||||
|     _emitRequestSurrounding() { | ||||
| @@ -95,11 +101,22 @@ var InputMethod = new Lang.Class({ | ||||
|     }, | ||||
|  | ||||
|     _onUpdatePreeditText(context, text, pos, visible) { | ||||
|         let str = null; | ||||
|         if (visible && text != null) | ||||
|             str = text.get_text(); | ||||
|         if (text == null) | ||||
|             return; | ||||
|         this._preeditStr = text.get_text(); | ||||
|         this._preeditPos = pos; | ||||
|         if (visible) | ||||
|             this.set_preedit_text(this._preeditStr, pos); | ||||
|         else | ||||
|             this.set_preedit_text(null, pos); | ||||
|     }, | ||||
|  | ||||
|         this.set_preedit_text(str, pos); | ||||
|     _onShowPreeditText(context) { | ||||
|         this.set_preedit_text(this._preeditStr, this._preeditPos); | ||||
|     }, | ||||
|  | ||||
|     _onHidePreeditText(context) { | ||||
|         this.set_preedit_text(null, this._preeditPos); | ||||
|     }, | ||||
|  | ||||
|     _onForwardKeyEvent(context, keyval, keycode, state) { | ||||
|   | ||||
| @@ -7,53 +7,56 @@ const Mainloop = imports.mainloop; | ||||
| const Shell = imports.gi.Shell; | ||||
| const Signals = imports.signals; | ||||
|  | ||||
| const SystemdLoginManagerIface = '<node> \ | ||||
| <interface name="org.freedesktop.login1.Manager"> \ | ||||
| <method name="Suspend"> \ | ||||
|     <arg type="b" direction="in"/> \ | ||||
| </method> \ | ||||
| <method name="CanSuspend"> \ | ||||
|     <arg type="s" direction="out"/> \ | ||||
| </method> \ | ||||
| <method name="Inhibit"> \ | ||||
|     <arg type="s" direction="in"/> \ | ||||
|     <arg type="s" direction="in"/> \ | ||||
|     <arg type="s" direction="in"/> \ | ||||
|     <arg type="s" direction="in"/> \ | ||||
|     <arg type="h" direction="out"/> \ | ||||
| </method> \ | ||||
| <method name="GetSession"> \ | ||||
|     <arg type="s" direction="in"/> \ | ||||
|     <arg type="o" direction="out"/> \ | ||||
| </method> \ | ||||
| <method name="ListSessions"> \ | ||||
|     <arg name="sessions" type="a(susso)" direction="out"/> \ | ||||
| </method> \ | ||||
| <signal name="PrepareForSleep"> \ | ||||
|     <arg type="b" direction="out"/> \ | ||||
| </signal> \ | ||||
| </interface> \ | ||||
| </node>'; | ||||
| const SystemdLoginManagerIface = ` | ||||
| <node> | ||||
| <interface name="org.freedesktop.login1.Manager"> | ||||
| <method name="Suspend"> | ||||
|     <arg type="b" direction="in"/> | ||||
| </method> | ||||
| <method name="CanSuspend"> | ||||
|     <arg type="s" direction="out"/> | ||||
| </method> | ||||
| <method name="Inhibit"> | ||||
|     <arg type="s" direction="in"/> | ||||
|     <arg type="s" direction="in"/> | ||||
|     <arg type="s" direction="in"/> | ||||
|     <arg type="s" direction="in"/> | ||||
|     <arg type="h" direction="out"/> | ||||
| </method> | ||||
| <method name="GetSession"> | ||||
|     <arg type="s" direction="in"/> | ||||
|     <arg type="o" direction="out"/> | ||||
| </method> | ||||
| <method name="ListSessions"> | ||||
|     <arg name="sessions" type="a(susso)" direction="out"/> | ||||
| </method> | ||||
| <signal name="PrepareForSleep"> | ||||
|     <arg type="b" direction="out"/> | ||||
| </signal> | ||||
| </interface> | ||||
| </node>`; | ||||
|  | ||||
| const SystemdLoginSessionIface = '<node> \ | ||||
| <interface name="org.freedesktop.login1.Session"> \ | ||||
| <signal name="Lock" /> \ | ||||
| <signal name="Unlock" /> \ | ||||
| <property name="Active" type="b" access="read" /> \ | ||||
| <property name="Class" type="s" access="read" /> \ | ||||
| <property name="Id" type="s" access="read" /> \ | ||||
| <method name="SetLockedHint"> \ | ||||
|     <arg type="b" direction="in"/> \ | ||||
| </method> \ | ||||
| </interface> \ | ||||
| </node>'; | ||||
| const SystemdLoginSessionIface = ` | ||||
| <node> | ||||
| <interface name="org.freedesktop.login1.Session"> | ||||
| <signal name="Lock" /> | ||||
| <signal name="Unlock" /> | ||||
| <property name="Active" type="b" access="read" /> | ||||
| <property name="Class" type="s" access="read" /> | ||||
| <property name="Id" type="s" access="read" /> | ||||
| <method name="SetLockedHint"> | ||||
|     <arg type="b" direction="in"/> | ||||
| </method> | ||||
| </interface> | ||||
| </node>`; | ||||
|  | ||||
| const SystemdLoginUserIface = '<node> \ | ||||
| <interface name="org.freedesktop.login1.User"> \ | ||||
| <property name="Display" type="(so)" access="read" /> \ | ||||
| <property name="Sessions" type="a(so)" access="read" /> \ | ||||
| </interface> \ | ||||
| </node>'; | ||||
| const SystemdLoginUserIface = ` | ||||
| <node> | ||||
| <interface name="org.freedesktop.login1.User"> | ||||
| <property name="Display" type="(so)" access="read" /> | ||||
| <property name="Sessions" type="a(so)" access="read" /> | ||||
| </interface> | ||||
| </node>`; | ||||
|  | ||||
| const SystemdLoginManager = Gio.DBusProxy.makeProxyWrapper(SystemdLoginManagerIface); | ||||
| const SystemdLoginSession = Gio.DBusProxy.makeProxyWrapper(SystemdLoginSessionIface); | ||||
|   | ||||
| @@ -92,41 +92,43 @@ function _findProviderForSid(sid) { | ||||
| // The following are not the complete interfaces, just the methods we need | ||||
| // (or may need in the future) | ||||
|  | ||||
| const ModemGsmNetworkInterface = '<node> \ | ||||
| <interface name="org.freedesktop.ModemManager.Modem.Gsm.Network"> \ | ||||
| <method name="GetRegistrationInfo"> \ | ||||
|     <arg type="(uss)" direction="out" /> \ | ||||
| </method> \ | ||||
| <method name="GetSignalQuality"> \ | ||||
|     <arg type="u" direction="out" /> \ | ||||
| </method> \ | ||||
| <property name="AccessTechnology" type="u" access="read" /> \ | ||||
| <signal name="SignalQuality"> \ | ||||
|     <arg type="u" direction="out" /> \ | ||||
| </signal> \ | ||||
| <signal name="RegistrationInfo"> \ | ||||
|     <arg type="u" direction="out" /> \ | ||||
|     <arg type="s" direction="out" /> \ | ||||
|     <arg type="s" direction="out" /> \ | ||||
| </signal> \ | ||||
| </interface> \ | ||||
| </node>'; | ||||
| const ModemGsmNetworkInterface = ` | ||||
| <node> | ||||
| <interface name="org.freedesktop.ModemManager.Modem.Gsm.Network"> | ||||
| <method name="GetRegistrationInfo"> | ||||
|     <arg type="(uss)" direction="out" /> | ||||
| </method> | ||||
| <method name="GetSignalQuality"> | ||||
|     <arg type="u" direction="out" /> | ||||
| </method> | ||||
| <property name="AccessTechnology" type="u" access="read" /> | ||||
| <signal name="SignalQuality"> | ||||
|     <arg type="u" direction="out" /> | ||||
| </signal> | ||||
| <signal name="RegistrationInfo"> | ||||
|     <arg type="u" direction="out" /> | ||||
|     <arg type="s" direction="out" /> | ||||
|     <arg type="s" direction="out" /> | ||||
| </signal> | ||||
| </interface> | ||||
| </node>`; | ||||
|  | ||||
| const ModemGsmNetworkProxy = Gio.DBusProxy.makeProxyWrapper(ModemGsmNetworkInterface); | ||||
|  | ||||
| const ModemCdmaInterface = '<node> \ | ||||
| <interface name="org.freedesktop.ModemManager.Modem.Cdma"> \ | ||||
| <method name="GetSignalQuality"> \ | ||||
|     <arg type="u" direction="out" /> \ | ||||
| </method> \ | ||||
| <method name="GetServingSystem"> \ | ||||
|     <arg type="(usu)" direction="out" /> \ | ||||
| </method> \ | ||||
| <signal name="SignalQuality"> \ | ||||
|     <arg type="u" direction="out" /> \ | ||||
| </signal> \ | ||||
| </interface> \ | ||||
| </node>'; | ||||
| const ModemCdmaInterface = ` | ||||
| <node> | ||||
| <interface name="org.freedesktop.ModemManager.Modem.Cdma"> | ||||
| <method name="GetSignalQuality"> | ||||
|     <arg type="u" direction="out" /> | ||||
| </method> | ||||
| <method name="GetServingSystem"> | ||||
|     <arg type="(usu)" direction="out" /> | ||||
| </method> | ||||
| <signal name="SignalQuality"> | ||||
|     <arg type="u" direction="out" /> | ||||
| </signal> | ||||
| </interface> | ||||
| </node>`; | ||||
|  | ||||
| const ModemCdmaProxy = Gio.DBusProxy.makeProxyWrapper(ModemCdmaInterface); | ||||
|  | ||||
| @@ -222,26 +224,29 @@ Signals.addSignalMethods(ModemCdma.prototype); | ||||
| // Support for the new ModemManager1 interface (MM >= 0.7) | ||||
| //------------------------------------------------------------------------------ | ||||
|  | ||||
| const BroadbandModemInterface = '<node> \ | ||||
| <interface name="org.freedesktop.ModemManager1.Modem"> \ | ||||
| <property name="SignalQuality" type="(ub)" access="read" /> \ | ||||
| </interface> \ | ||||
| </node>'; | ||||
| const BroadbandModemInterface = ` | ||||
| <node> | ||||
| <interface name="org.freedesktop.ModemManager1.Modem"> | ||||
| <property name="SignalQuality" type="(ub)" access="read" /> | ||||
| </interface> | ||||
| </node>`; | ||||
| const BroadbandModemProxy = Gio.DBusProxy.makeProxyWrapper(BroadbandModemInterface); | ||||
|  | ||||
| const BroadbandModem3gppInterface = '<node> \ | ||||
| <interface name="org.freedesktop.ModemManager1.Modem.Modem3gpp"> \ | ||||
| <property name="OperatorCode" type="s" access="read" /> \ | ||||
| <property name="OperatorName" type="s" access="read" /> \ | ||||
| </interface> \ | ||||
| </node>'; | ||||
| const BroadbandModem3gppInterface = ` | ||||
| <node> | ||||
| <interface name="org.freedesktop.ModemManager1.Modem.Modem3gpp"> | ||||
| <property name="OperatorCode" type="s" access="read" /> | ||||
| <property name="OperatorName" type="s" access="read" /> | ||||
| </interface> | ||||
| </node>`; | ||||
| const BroadbandModem3gppProxy = Gio.DBusProxy.makeProxyWrapper(BroadbandModem3gppInterface); | ||||
|  | ||||
| const BroadbandModemCdmaInterface = '<node> \ | ||||
| <interface name="org.freedesktop.ModemManager1.Modem.ModemCdma"> \ | ||||
| <property name="Sid" type="u" access="read" /> \ | ||||
| </interface> \ | ||||
| </node>'; | ||||
| const BroadbandModemCdmaInterface = ` | ||||
| <node> | ||||
| <interface name="org.freedesktop.ModemManager1.Modem.ModemCdma"> | ||||
| <property name="Sid" type="u" access="read" /> | ||||
| </interface> | ||||
| </node>`; | ||||
| const BroadbandModemCdmaProxy = Gio.DBusProxy.makeProxyWrapper(BroadbandModemCdmaInterface); | ||||
|  | ||||
| var BroadbandModem = new Lang.Class({ | ||||
|   | ||||
| @@ -8,21 +8,22 @@ const Signals = imports.signals; | ||||
|  | ||||
| // Specified in the D-Bus specification here: | ||||
| // http://dbus.freedesktop.org/doc/dbus-specification.html#standard-interfaces-objectmanager | ||||
| const ObjectManagerIface = '<node> \ | ||||
| <interface name="org.freedesktop.DBus.ObjectManager"> \ | ||||
|   <method name="GetManagedObjects"> \ | ||||
|     <arg name="objects" type="a{oa{sa{sv}}}" direction="out"/> \ | ||||
|   </method> \ | ||||
|   <signal name="InterfacesAdded"> \ | ||||
|     <arg name="objectPath" type="o"/> \ | ||||
|     <arg name="interfaces" type="a{sa{sv}}" /> \ | ||||
|   </signal> \ | ||||
|   <signal name="InterfacesRemoved"> \ | ||||
|     <arg name="objectPath" type="o"/> \ | ||||
|     <arg name="interfaces" type="as" /> \ | ||||
|   </signal> \ | ||||
| </interface> \ | ||||
| </node>'; | ||||
| const ObjectManagerIface = ` | ||||
| <node> | ||||
| <interface name="org.freedesktop.DBus.ObjectManager"> | ||||
|   <method name="GetManagedObjects"> | ||||
|     <arg name="objects" type="a{oa{sa{sv}}}" direction="out"/> | ||||
|   </method> | ||||
|   <signal name="InterfacesAdded"> | ||||
|     <arg name="objectPath" type="o"/> | ||||
|     <arg name="interfaces" type="a{sa{sv}}" /> | ||||
|   </signal> | ||||
|   <signal name="InterfacesRemoved"> | ||||
|     <arg name="objectPath" type="o"/> | ||||
|     <arg name="interfaces" type="as" /> | ||||
|   </signal> | ||||
| </interface> | ||||
| </node>`; | ||||
|  | ||||
| const ObjectManagerInfo = Gio.DBusInterfaceInfo.new_for_xml(ObjectManagerIface); | ||||
|  | ||||
|   | ||||
| @@ -2,30 +2,31 @@ | ||||
|  | ||||
| const Gio = imports.gi.Gio; | ||||
|  | ||||
| const PermissionStoreIface = '<node> \ | ||||
|   <interface name="org.freedesktop.impl.portal.PermissionStore"> \ | ||||
|     <method name="Lookup"> \ | ||||
|       <arg name="table" type="s" direction="in"/> \ | ||||
|       <arg name="id" type="s" direction="in"/> \ | ||||
|       <arg name="permissions" type="a{sas}" direction="out"/> \ | ||||
|       <arg name="data" type="v" direction="out"/> \ | ||||
|     </method> \ | ||||
|     <method name="Set"> \ | ||||
|       <arg name="table" type="s" direction="in"/> \ | ||||
|       <arg name="create" type="b" direction="in"/> \ | ||||
|       <arg name="id" type="s" direction="in"/> \ | ||||
|       <arg name="app_permissions" type="a{sas}" direction="in"/> \ | ||||
|       <arg name="data" type="v" direction="in"/> \ | ||||
|     </method> \ | ||||
|     <signal name="Changed"> \ | ||||
|       <arg name="table" type="s" direction="out"/> \ | ||||
|       <arg name="id" type="s" direction="out"/> \ | ||||
|       <arg name="deleted" type="b" direction="out"/> \ | ||||
|       <arg name="data" type="v" direction="out"/> \ | ||||
|       <arg name="permissions" type="a{sas}" direction="out"/> \ | ||||
|     </signal> \ | ||||
|   </interface> \ | ||||
| </node>'; | ||||
| const PermissionStoreIface = ` | ||||
| <node> | ||||
|   <interface name="org.freedesktop.impl.portal.PermissionStore"> | ||||
|     <method name="Lookup"> | ||||
|       <arg name="table" type="s" direction="in"/> | ||||
|       <arg name="id" type="s" direction="in"/> | ||||
|       <arg name="permissions" type="a{sas}" direction="out"/> | ||||
|       <arg name="data" type="v" direction="out"/> | ||||
|     </method> | ||||
|     <method name="Set"> | ||||
|       <arg name="table" type="s" direction="in"/> | ||||
|       <arg name="create" type="b" direction="in"/> | ||||
|       <arg name="id" type="s" direction="in"/> | ||||
|       <arg name="app_permissions" type="a{sas}" direction="in"/> | ||||
|       <arg name="data" type="v" direction="in"/> | ||||
|     </method> | ||||
|     <signal name="Changed"> | ||||
|       <arg name="table" type="s" direction="out"/> | ||||
|       <arg name="id" type="s" direction="out"/> | ||||
|       <arg name="deleted" type="b" direction="out"/> | ||||
|       <arg name="data" type="v" direction="out"/> | ||||
|       <arg name="permissions" type="a{sas}" direction="out"/> | ||||
|     </signal> | ||||
|   </interface> | ||||
| </node>`; | ||||
|  | ||||
| const PermissionStoreProxy = Gio.DBusProxy.makeProxyWrapper(PermissionStoreIface); | ||||
|  | ||||
|   | ||||
| @@ -7,14 +7,15 @@ const Signals = imports.signals; | ||||
|  | ||||
| const ObjectManager = imports.misc.objectManager; | ||||
|  | ||||
| const SmartcardTokenIface = '<node> \ | ||||
| <interface name="org.gnome.SettingsDaemon.Smartcard.Token"> \ | ||||
|   <property name="Name" type="s" access="read"/> \ | ||||
|   <property name="Driver" type="o" access="read"/> \ | ||||
|   <property name="IsInserted" type="b" access="read"/> \ | ||||
|   <property name="UsedToLogin" type="b" access="read"/> \ | ||||
| </interface> \ | ||||
| </node>'; | ||||
| const SmartcardTokenIface = ` | ||||
| <node> | ||||
| <interface name="org.gnome.SettingsDaemon.Smartcard.Token"> | ||||
|   <property name="Name" type="s" access="read"/> | ||||
|   <property name="Driver" type="o" access="read"/> | ||||
|   <property name="IsInserted" type="b" access="read"/> | ||||
|   <property name="UsedToLogin" type="b" access="read"/> | ||||
| </interface> | ||||
| </node>`; | ||||
|  | ||||
| let _smartcardManager = null; | ||||
|  | ||||
|   | ||||
| @@ -22,11 +22,12 @@ const ALWAYS_SHOW_LOG_OUT_KEY = 'always-show-log-out'; | ||||
| const SENSOR_BUS_NAME = 'net.hadess.SensorProxy'; | ||||
| const SENSOR_OBJECT_PATH = '/net/hadess/SensorProxy'; | ||||
|  | ||||
| const SensorProxyInterface = '<node> \ | ||||
| <interface name="net.hadess.SensorProxy"> \ | ||||
|   <property name="HasAccelerometer" type="b" access="read"/> \ | ||||
| </interface> \ | ||||
| </node>'; | ||||
| const SensorProxyInterface = ` | ||||
| <node> | ||||
| <interface name="net.hadess.SensorProxy"> | ||||
|   <property name="HasAccelerometer" type="b" access="read"/> | ||||
| </interface> | ||||
| </node>`; | ||||
|  | ||||
| const POWER_OFF_ACTION_ID        = 'power-off'; | ||||
| const LOCK_SCREEN_ACTION_ID      = 'lock-screen'; | ||||
|   | ||||
							
								
								
									
										7
									
								
								js/portal-resources.gresource.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								js/portal-resources.gresource.xml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,7 @@ | ||||
| <?xml version="1.0" encoding="UTF-8"?> | ||||
| <gresources> | ||||
|   <gresource prefix="/org/gnome/shell"> | ||||
|     <file>misc/config.js</file> | ||||
|     <file>portalHelper/main.js</file> | ||||
|   </gresource> | ||||
| </gresources> | ||||
| @@ -30,25 +30,26 @@ const CONNECTIVITY_CHECK_HOST = 'nmcheck.gnome.org'; | ||||
| const CONNECTIVITY_CHECK_URI = 'http://' + CONNECTIVITY_CHECK_HOST; | ||||
| const CONNECTIVITY_RECHECK_RATELIMIT_TIMEOUT = 30 * GLib.USEC_PER_SEC; | ||||
|  | ||||
| const HelperDBusInterface = '<node> \ | ||||
| <interface name="org.gnome.Shell.PortalHelper"> \ | ||||
| <method name="Authenticate"> \ | ||||
|     <arg type="o" direction="in" name="connection" /> \ | ||||
|     <arg type="s" direction="in" name="url" /> \ | ||||
|     <arg type="u" direction="in" name="timestamp" /> \ | ||||
| </method> \ | ||||
| <method name="Close"> \ | ||||
|     <arg type="o" direction="in" name="connection" /> \ | ||||
| </method> \ | ||||
| <method name="Refresh"> \ | ||||
|     <arg type="o" direction="in" name="connection" /> \ | ||||
| </method> \ | ||||
| <signal name="Done"> \ | ||||
|     <arg type="o" name="connection" /> \ | ||||
|     <arg type="u" name="result" /> \ | ||||
| </signal> \ | ||||
| </interface> \ | ||||
| </node>'; | ||||
| const HelperDBusInterface = ` | ||||
| <node> | ||||
| <interface name="org.gnome.Shell.PortalHelper"> | ||||
| <method name="Authenticate"> | ||||
|     <arg type="o" direction="in" name="connection" /> | ||||
|     <arg type="s" direction="in" name="url" /> | ||||
|     <arg type="u" direction="in" name="timestamp" /> | ||||
| </method> | ||||
| <method name="Close"> | ||||
|     <arg type="o" direction="in" name="connection" /> | ||||
| </method> | ||||
| <method name="Refresh"> | ||||
|     <arg type="o" direction="in" name="connection" /> | ||||
| </method> | ||||
| <signal name="Done"> | ||||
|     <arg type="o" name="connection" /> | ||||
|     <arg type="u" name="result" /> | ||||
| </signal> | ||||
| </interface> | ||||
| </node>`; | ||||
|  | ||||
| var PortalHeaderBar = new Lang.Class({ | ||||
|     Name: 'PortalHeaderBar', | ||||
|   | ||||
							
								
								
									
										11
									
								
								js/prefs-resources.gresource.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								js/prefs-resources.gresource.xml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,11 @@ | ||||
| <?xml version="1.0" encoding="UTF-8"?> | ||||
| <gresources> | ||||
|   <gresource prefix="/org/gnome/shell"> | ||||
|     <file>extensionPrefs/main.js</file> | ||||
|  | ||||
|     <file>misc/config.js</file> | ||||
|     <file>misc/extensionUtils.js</file> | ||||
|     <file>misc/fileUtils.js</file> | ||||
|     <file>misc/params.js</file> | ||||
|   </gresource> | ||||
| </gresources> | ||||
| @@ -10,27 +10,29 @@ const CheckBox = imports.ui.checkBox; | ||||
| const Dialog = imports.ui.dialog; | ||||
| const ModalDialog = imports.ui.modalDialog; | ||||
|  | ||||
| const RequestIface = '<node> \ | ||||
| <interface name="org.freedesktop.impl.portal.Request"> \ | ||||
| <method name="Close"/> \ | ||||
| </interface> \ | ||||
| </node>'; | ||||
| const RequestIface = ` | ||||
| <node> | ||||
| <interface name="org.freedesktop.impl.portal.Request"> | ||||
| <method name="Close"/> | ||||
| </interface> | ||||
| </node>`; | ||||
|  | ||||
| const AccessIface = '<node> \ | ||||
| <interface name="org.freedesktop.impl.portal.Access"> \ | ||||
| <method name="AccessDialog"> \ | ||||
|   <arg type="o" name="handle" direction="in"/> \ | ||||
|   <arg type="s" name="app_id" direction="in"/> \ | ||||
|   <arg type="s" name="parent_window" direction="in"/> \ | ||||
|   <arg type="s" name="title" direction="in"/> \ | ||||
|   <arg type="s" name="subtitle" direction="in"/> \ | ||||
|   <arg type="s" name="body" direction="in"/> \ | ||||
|   <arg type="a{sv}" name="options" direction="in"/> \ | ||||
|   <arg type="u" name="response" direction="out"/> \ | ||||
|   <arg type="a{sv}" name="results" direction="out"/> \ | ||||
| </method> \ | ||||
| </interface> \ | ||||
| </node>'; | ||||
| const AccessIface = ` | ||||
| <node> | ||||
| <interface name="org.freedesktop.impl.portal.Access"> | ||||
| <method name="AccessDialog"> | ||||
|   <arg type="o" name="handle" direction="in"/> | ||||
|   <arg type="s" name="app_id" direction="in"/> | ||||
|   <arg type="s" name="parent_window" direction="in"/> | ||||
|   <arg type="s" name="title" direction="in"/> | ||||
|   <arg type="s" name="subtitle" direction="in"/> | ||||
|   <arg type="s" name="body" direction="in"/> | ||||
|   <arg type="a{sv}" name="options" direction="in"/> | ||||
|   <arg type="u" name="response" direction="out"/> | ||||
|   <arg type="a{sv}" name="results" direction="out"/> | ||||
| </method> | ||||
| </interface> | ||||
| </node>`; | ||||
|  | ||||
| var DialogResponse = { | ||||
|     OK: 0, | ||||
|   | ||||
| @@ -66,11 +66,12 @@ var PAGE_SWITCH_TIME = 0.3; | ||||
| const SWITCHEROO_BUS_NAME = 'net.hadess.SwitcherooControl'; | ||||
| const SWITCHEROO_OBJECT_PATH = '/net/hadess/SwitcherooControl'; | ||||
|  | ||||
| const SwitcherooProxyInterface = '<node> \ | ||||
| <interface name="net.hadess.SwitcherooControl"> \ | ||||
|   <property name="HasDualGpu" type="b" access="read"/> \ | ||||
| </interface> \ | ||||
| </node>'; | ||||
| const SwitcherooProxyInterface = ` | ||||
| <node> | ||||
| <interface name="net.hadess.SwitcherooControl"> | ||||
|   <property name="HasDualGpu" type="b" access="read"/> | ||||
| </interface> | ||||
| </node>`; | ||||
|  | ||||
| const SwitcherooProxy = Gio.DBusProxy.makeProxyWrapper(SwitcherooProxyInterface); | ||||
| let discreteGpuAvailable = false; | ||||
|   | ||||
| @@ -15,18 +15,19 @@ var AudioDevice = { | ||||
|     MICROPHONE: 1 << 2 | ||||
| }; | ||||
|  | ||||
| const AudioDeviceSelectionIface = '<node> \ | ||||
| <interface name="org.gnome.Shell.AudioDeviceSelection"> \ | ||||
| <method name="Open"> \ | ||||
|     <arg name="devices" direction="in" type="as" /> \ | ||||
| </method> \ | ||||
| <method name="Close"> \ | ||||
| </method> \ | ||||
| <signal name="DeviceSelected"> \ | ||||
|     <arg name="device" type="s" /> \ | ||||
| </signal> \ | ||||
| </interface> \ | ||||
| </node>'; | ||||
| const AudioDeviceSelectionIface = ` | ||||
| <node> | ||||
| <interface name="org.gnome.Shell.AudioDeviceSelection"> | ||||
| <method name="Open"> | ||||
|     <arg name="devices" direction="in" type="as" /> | ||||
| </method> | ||||
| <method name="Close"> | ||||
| </method> | ||||
| <signal name="DeviceSelected"> | ||||
|     <arg name="device" type="s" /> | ||||
| </signal> | ||||
| </interface> | ||||
| </node>`; | ||||
|  | ||||
| var AudioDeviceSelectionDialog = new Lang.Class({ | ||||
|     Name: 'AudioDeviceSelectionDialog', | ||||
|   | ||||
							
								
								
									
										210
									
								
								js/ui/barLevel.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										210
									
								
								js/ui/barLevel.js
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,210 @@ | ||||
| /* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */ | ||||
|  | ||||
| const Atk = imports.gi.Atk; | ||||
| const Cairo = imports.cairo; | ||||
| const Clutter = imports.gi.Clutter; | ||||
| const Lang = imports.lang; | ||||
| const St = imports.gi.St; | ||||
| const Signals = imports.signals; | ||||
|  | ||||
| var BarLevel = new Lang.Class({ | ||||
|     Name: "BarLevel", | ||||
|  | ||||
|     _init(value, params) { | ||||
|         if (isNaN(value)) | ||||
|             // Avoid spreading NaNs around | ||||
|             throw TypeError('The bar level value must be a number'); | ||||
|         this._maxValue = 1; | ||||
|         this._value = Math.max(Math.min(value, this._maxValue), 0); | ||||
|         this._overdriveStart = 1; | ||||
|         this._barLevelWidth = 0; | ||||
|  | ||||
|         if (params == undefined) | ||||
|             params = {} | ||||
|  | ||||
|         this.actor = new St.DrawingArea({ styleClass: params['styleClass'] || 'barlevel', | ||||
|                                           can_focus: params['canFocus'] || false, | ||||
|                                           reactive: params['reactive'] || false, | ||||
|                                           accessible_role: params['accessibleRole'] || Atk.Role.LEVEL_BAR }); | ||||
|         this.actor.connect('repaint', this._barLevelRepaint.bind(this)); | ||||
|         this.actor.connect('allocation-changed', (actor, box) => { | ||||
|             this._barLevelWidth = box.get_width(); | ||||
|         }); | ||||
|  | ||||
|         this._customAccessible = St.GenericAccessible.new_for_actor(this.actor); | ||||
|         this.actor.set_accessible(this._customAccessible); | ||||
|  | ||||
|         this._customAccessible.connect('get-current-value', this._getCurrentValue.bind(this)); | ||||
|         this._customAccessible.connect('get-minimum-value', this._getMinimumValue.bind(this)); | ||||
|         this._customAccessible.connect('get-maximum-value', this._getMaximumValue.bind(this)); | ||||
|         this._customAccessible.connect('set-current-value', this._setCurrentValue.bind(this)); | ||||
|  | ||||
|         this.connect('value-changed', this._valueChanged.bind(this)); | ||||
|     }, | ||||
|  | ||||
|     setValue(value) { | ||||
|         if (isNaN(value)) | ||||
|             throw TypeError('The bar level value must be a number'); | ||||
|  | ||||
|         this._value = Math.max(Math.min(value, this._maxValue), 0); | ||||
|         this.actor.queue_repaint(); | ||||
|     }, | ||||
|  | ||||
|     setMaximumValue(value) { | ||||
|         if (isNaN(value)) | ||||
|             throw TypeError('The bar level max value must be a number'); | ||||
|  | ||||
|         this._maxValue = Math.max(value, 1); | ||||
|         this._overdriveStart = Math.min(this._overdriveStart, this._maxValue); | ||||
|         this.actor.queue_repaint(); | ||||
|     }, | ||||
|  | ||||
|     setOverdriveStart(value) { | ||||
|         if (isNaN(value)) | ||||
|             throw TypeError('The overdrive limit value must be a number'); | ||||
|         if (value > this._maxValue) | ||||
|             throw new Error(`Tried to set overdrive value to ${value}, ` + | ||||
|                 `which is a number greater than the maximum allowed value ${this._maxValue}`); | ||||
|  | ||||
|         this._overdriveStart = value; | ||||
|         this._value = Math.max(Math.min(value, this._maxValue), 0); | ||||
|         this.actor.queue_repaint(); | ||||
|     }, | ||||
|  | ||||
|     _barLevelRepaint(area) { | ||||
|         let cr = area.get_context(); | ||||
|         let themeNode = area.get_theme_node(); | ||||
|         let [width, height] = area.get_surface_size(); | ||||
|  | ||||
|         let barLevelHeight = themeNode.get_length('-barlevel-height'); | ||||
|         let barLevelBorderRadius = Math.min(width, barLevelHeight) / 2; | ||||
|         let fgColor = themeNode.get_foreground_color(); | ||||
|  | ||||
|         let barLevelColor = themeNode.get_color('-barlevel-background-color'); | ||||
|         let barLevelActiveColor = themeNode.get_color('-barlevel-active-background-color'); | ||||
|         let barLevelOverdriveColor = themeNode.get_color('-barlevel-overdrive-color'); | ||||
|  | ||||
|         let barLevelBorderWidth = Math.min(themeNode.get_length('-barlevel-border-width'), 1); | ||||
|         let [hasBorderColor, barLevelBorderColor] = | ||||
|             themeNode.lookup_color('-barlevel-border-color', false); | ||||
|         if (!hasBorderColor) | ||||
|             barLevelBorderColor = barLevelColor; | ||||
|         let [hasActiveBorderColor, barLevelActiveBorderColor] = | ||||
|             themeNode.lookup_color('-barlevel-active-border-color', false); | ||||
|         if (!hasActiveBorderColor) | ||||
|             barLevelActiveBorderColor = barLevelActiveColor; | ||||
|         let [hasOverdriveBorderColor, barLevelOverdriveBorderColor] = | ||||
|             themeNode.lookup_color('-barlevel-overdrive-border-color', false); | ||||
|         if (!hasOverdriveBorderColor) | ||||
|             barLevelOverdriveBorderColor = barLevelOverdriveColor; | ||||
|  | ||||
|         const TAU = Math.PI * 2; | ||||
|  | ||||
|         let endX = 0; | ||||
|         if (this._maxValue > 0) | ||||
|             endX = barLevelBorderRadius + (width - 2 * barLevelBorderRadius) * this._value / this._maxValue; | ||||
|  | ||||
|         let overdriveSeparatorX = barLevelBorderRadius + (width - 2 * barLevelBorderRadius) * this._overdriveStart / this._maxValue; | ||||
|         let overdriveActive = this._overdriveStart !== this._maxValue; | ||||
|         let overdriveSeparatorWidth = 0; | ||||
|         if (overdriveActive) | ||||
|             overdriveSeparatorWidth = themeNode.get_length('-barlevel-overdrive-separator-width'); | ||||
|  | ||||
|         /* background bar */ | ||||
|         cr.arc(width - barLevelBorderRadius - barLevelBorderWidth, height / 2, barLevelBorderRadius, TAU * 3 / 4, TAU * 1 / 4); | ||||
|         cr.lineTo(endX, (height + barLevelHeight) / 2); | ||||
|         cr.lineTo(endX, (height - barLevelHeight) / 2); | ||||
|         cr.lineTo(width - barLevelBorderRadius - barLevelBorderWidth, (height - barLevelHeight) / 2); | ||||
|         Clutter.cairo_set_source_color(cr, barLevelColor); | ||||
|         cr.fillPreserve(); | ||||
|         Clutter.cairo_set_source_color(cr, barLevelBorderColor); | ||||
|         cr.setLineWidth(barLevelBorderWidth); | ||||
|         cr.stroke(); | ||||
|  | ||||
|         /* normal progress bar */ | ||||
|         let x = Math.min(endX, overdriveSeparatorX - overdriveSeparatorWidth / 2); | ||||
|         cr.arc(barLevelBorderRadius + barLevelBorderWidth, height / 2, barLevelBorderRadius, TAU * 1 / 4, TAU * 3 / 4); | ||||
|         cr.lineTo(x, (height - barLevelHeight) / 2); | ||||
|         cr.lineTo(x, (height + barLevelHeight) / 2); | ||||
|         cr.lineTo(barLevelBorderRadius + barLevelBorderWidth, (height + barLevelHeight) / 2); | ||||
|         Clutter.cairo_set_source_color(cr, barLevelActiveColor); | ||||
|         cr.fillPreserve(); | ||||
|         Clutter.cairo_set_source_color(cr, barLevelActiveBorderColor); | ||||
|         cr.setLineWidth(barLevelBorderWidth); | ||||
|         cr.stroke(); | ||||
|  | ||||
|         /* overdrive progress barLevel */ | ||||
|         x = Math.min(endX, overdriveSeparatorX) + overdriveSeparatorWidth / 2; | ||||
|         if (this._value > this._overdriveStart) { | ||||
|             cr.moveTo(x, (height - barLevelHeight) / 2); | ||||
|             cr.lineTo(endX, (height - barLevelHeight) / 2); | ||||
|             cr.lineTo(endX, (height + barLevelHeight) / 2); | ||||
|             cr.lineTo(x, (height + barLevelHeight) / 2); | ||||
|             cr.lineTo(x, (height - barLevelHeight) / 2); | ||||
|             Clutter.cairo_set_source_color(cr, barLevelOverdriveColor); | ||||
|             cr.fillPreserve(); | ||||
|             Clutter.cairo_set_source_color(cr, barLevelOverdriveBorderColor); | ||||
|             cr.setLineWidth(barLevelBorderWidth); | ||||
|             cr.stroke(); | ||||
|         } | ||||
|  | ||||
|         /* end progress bar arc */ | ||||
|         if (this._value <= this._overdriveStart) | ||||
|             Clutter.cairo_set_source_color(cr, barLevelActiveColor); | ||||
|         else | ||||
|             Clutter.cairo_set_source_color(cr, barLevelOverdriveColor); | ||||
|         cr.arc(endX, height / 2, barLevelBorderRadius, TAU * 3 / 4, TAU * 1 / 4); | ||||
|         cr.lineTo(Math.floor(endX), (height + barLevelHeight) / 2); | ||||
|         cr.lineTo(Math.floor(endX), (height - barLevelHeight) / 2); | ||||
|         cr.lineTo(endX, (height - barLevelHeight) / 2); | ||||
|         cr.fillPreserve(); | ||||
|         cr.setLineWidth(barLevelBorderWidth); | ||||
|         cr.stroke(); | ||||
|  | ||||
|         /* draw overdrive separator */ | ||||
|         if (overdriveActive) { | ||||
|             cr.moveTo(overdriveSeparatorX - overdriveSeparatorWidth / 2, (height - barLevelHeight) / 2); | ||||
|             cr.lineTo(overdriveSeparatorX + overdriveSeparatorWidth / 2, (height - barLevelHeight) / 2); | ||||
|             cr.lineTo(overdriveSeparatorX + overdriveSeparatorWidth / 2, (height + barLevelHeight) / 2); | ||||
|             cr.lineTo(overdriveSeparatorX - overdriveSeparatorWidth / 2, (height + barLevelHeight) / 2); | ||||
|             cr.lineTo(overdriveSeparatorX - overdriveSeparatorWidth / 2, (height - barLevelHeight) / 2); | ||||
|             if (this._value <= this._overdriveStart) | ||||
|                 Clutter.cairo_set_source_color(cr, fgColor); | ||||
|             else | ||||
|                 Clutter.cairo_set_source_color(cr, barLevelColor); | ||||
|             cr.fill(); | ||||
|         } | ||||
|  | ||||
|         cr.$dispose(); | ||||
|     }, | ||||
|  | ||||
|     _getCurrentValue(actor) { | ||||
|         return this._value; | ||||
|     }, | ||||
|  | ||||
|     _getOverdriveStart(actor) { | ||||
|         return this._overdriveStart; | ||||
|     }, | ||||
|  | ||||
|     _getMinimumValue(actor) { | ||||
|         return 0; | ||||
|     }, | ||||
|  | ||||
|     _getMaximumValue(actor) { | ||||
|         return this._maxValue; | ||||
|     }, | ||||
|  | ||||
|     _setCurrentValue(actor, value) { | ||||
|         this._value = value; | ||||
|     }, | ||||
|  | ||||
|     _valueChanged(barLevel, value, property) { | ||||
|         this._customAccessible.notify("accessible-value"); | ||||
|     }, | ||||
|  | ||||
|     get value() { | ||||
|         return this._value; | ||||
|     } | ||||
| }); | ||||
|  | ||||
| Signals.addSignalMethods(BarLevel.prototype); | ||||
| @@ -44,6 +44,7 @@ var BoxPointer = new Lang.Class({ | ||||
|                                   y_fill: true }); | ||||
|         this._container = new Shell.GenericContainer(); | ||||
|         this.actor.set_child(this._container); | ||||
|         this.actor.set_offscreen_redirect(Clutter.OffscreenRedirect.ALWAYS); | ||||
|         this._container.connect('get-preferred-width', this._getPreferredWidth.bind(this)); | ||||
|         this._container.connect('get-preferred-height', this._getPreferredHeight.bind(this)); | ||||
|         this._container.connect('allocate', this._allocate.bind(this)); | ||||
|   | ||||
| @@ -134,18 +134,19 @@ var EmptyEventSource = new Lang.Class({ | ||||
| }); | ||||
| Signals.addSignalMethods(EmptyEventSource.prototype); | ||||
|  | ||||
| const CalendarServerIface = '<node> \ | ||||
| <interface name="org.gnome.Shell.CalendarServer"> \ | ||||
| <method name="GetEvents"> \ | ||||
|     <arg type="x" direction="in" /> \ | ||||
|     <arg type="x" direction="in" /> \ | ||||
|     <arg type="b" direction="in" /> \ | ||||
|     <arg type="a(sssbxxa{sv})" direction="out" /> \ | ||||
| </method> \ | ||||
| <property name="HasCalendars" type="b" access="read" /> \ | ||||
| <signal name="Changed" /> \ | ||||
| </interface> \ | ||||
| </node>'; | ||||
| const CalendarServerIface = ` | ||||
| <node> | ||||
| <interface name="org.gnome.Shell.CalendarServer"> | ||||
| <method name="GetEvents"> | ||||
|     <arg type="x" direction="in" /> | ||||
|     <arg type="x" direction="in" /> | ||||
|     <arg type="b" direction="in" /> | ||||
|     <arg type="a(sssbxxa{sv})" direction="out" /> | ||||
| </method> | ||||
| <property name="HasCalendars" type="b" access="read" /> | ||||
| <signal name="Changed" /> | ||||
| </interface> | ||||
| </node>`; | ||||
|  | ||||
| const CalendarServerInfo  = Gio.DBusInterfaceInfo.new_for_xml(CalendarServerIface); | ||||
|  | ||||
|   | ||||
| @@ -74,14 +74,15 @@ function startAppForMount(app, mount) { | ||||
|  | ||||
| /******************************************/ | ||||
|  | ||||
| const HotplugSnifferIface = '<node> \ | ||||
| <interface name="org.gnome.Shell.HotplugSniffer"> \ | ||||
| <method name="SniffURI"> \ | ||||
|     <arg type="s" direction="in" /> \ | ||||
|     <arg type="as" direction="out" /> \ | ||||
| </method> \ | ||||
| </interface> \ | ||||
| </node>'; | ||||
| const HotplugSnifferIface = ` | ||||
| <node> | ||||
| <interface name="org.gnome.Shell.HotplugSniffer"> | ||||
| <method name="SniffURI"> | ||||
|     <arg type="s" direction="in" /> | ||||
|     <arg type="as" direction="out" /> | ||||
| </method> | ||||
| </interface> | ||||
| </node>`; | ||||
|  | ||||
| const HotplugSnifferProxy = Gio.DBusProxy.makeProxyWrapper(HotplugSnifferIface); | ||||
| function HotplugSniffer() { | ||||
|   | ||||
| @@ -506,8 +506,12 @@ var VPNRequestHandler = new Lang.Class({ | ||||
|         try { | ||||
|             data = this._dataStdout.peek_buffer(); | ||||
|  | ||||
|             keyfile.load_from_data(data.toString(), data.length, | ||||
|                                    GLib.KeyFileFlags.NONE); | ||||
|             if (data instanceof Uint8Array) | ||||
|                 data = imports.byteArray.toGBytes(data); | ||||
|             else | ||||
|                 data = data.toGBytes(); | ||||
|  | ||||
|             keyfile.load_from_bytes(data, GLib.KeyFileFlags.NONE); | ||||
|  | ||||
|             if (keyfile.get_integer(VPN_UI_GROUP, 'Version') != 2) | ||||
|                 throw new Error('Invalid plugin keyfile version, is %d'); | ||||
|   | ||||
| @@ -402,6 +402,7 @@ var Dash = new Lang.Class({ | ||||
|                                        clip_to_allocation: true }); | ||||
|         this._box._delegate = this; | ||||
|         this._container.add_actor(this._box); | ||||
|         this._container.set_offscreen_redirect(Clutter.OffscreenRedirect.ALWAYS); | ||||
|  | ||||
|         this._showAppsIcon = new ShowAppsIcon(); | ||||
|         this._showAppsIcon.childScale = 1; | ||||
|   | ||||
| @@ -40,6 +40,7 @@ var Dialog = new Lang.Class({ | ||||
|         // mode accordingly so wrapped labels are handled correctly during | ||||
|         // size requests. | ||||
|         this._dialog.request_mode = Clutter.RequestMode.HEIGHT_FOR_WIDTH; | ||||
|         this._dialog.set_offscreen_redirect(Clutter.OffscreenRedirect.ALWAYS); | ||||
|  | ||||
|         this.contentLayout = new St.BoxLayout({ vertical: true, | ||||
|                                                 style_class: "modal-dialog-content-box" }); | ||||
|   | ||||
| @@ -506,6 +506,7 @@ var _Draggable = new Lang.Class({ | ||||
|                             return true; | ||||
|                         } else | ||||
|                             this._dragActor.destroy(); | ||||
|                             this._dragActor = undefined; | ||||
|                     } | ||||
|  | ||||
|                     this._dragInProgress = false; | ||||
| @@ -565,8 +566,10 @@ var _Draggable = new Lang.Class({ | ||||
|             if (!this._buttonDown) | ||||
|                 this._dragComplete(); | ||||
|             this.emit('drag-end', eventTime, false); | ||||
|             if (!this._dragOrigParent) | ||||
|             if (!this._dragOrigParent) { | ||||
|                 this._dragActor.destroy(); | ||||
|                 this._dragActor = undefined; | ||||
|             } | ||||
|  | ||||
|             return; | ||||
|         } | ||||
| @@ -634,6 +637,7 @@ var _Draggable = new Lang.Class({ | ||||
|             dragActor.set_position(this._dragOrigX, this._dragOrigY); | ||||
|         } else { | ||||
|             dragActor.destroy(); | ||||
|             this._dragActor = undefined; | ||||
|         } | ||||
|  | ||||
|         this.emit('drag-end', eventTime, false); | ||||
| @@ -641,7 +645,7 @@ var _Draggable = new Lang.Class({ | ||||
|     }, | ||||
|  | ||||
|     _dragComplete() { | ||||
|         if (!this._actorDestroyed) | ||||
|         if (this._dragActor) | ||||
|             Shell.util_set_hidden_from_pick(this._dragActor, false); | ||||
|  | ||||
|         this._ungrabEvents(); | ||||
|   | ||||
| @@ -43,22 +43,23 @@ const _DIALOG_ICON_SIZE = 48; | ||||
|  | ||||
| var GSM_SESSION_MANAGER_LOGOUT_FORCE = 2; | ||||
|  | ||||
| const EndSessionDialogIface = '<node> \ | ||||
| <interface name="org.gnome.SessionManager.EndSessionDialog"> \ | ||||
| <method name="Open"> \ | ||||
|     <arg type="u" direction="in" /> \ | ||||
|     <arg type="u" direction="in" /> \ | ||||
|     <arg type="u" direction="in" /> \ | ||||
|     <arg type="ao" direction="in" /> \ | ||||
| </method> \ | ||||
| <method name="Close" /> \ | ||||
| <signal name="ConfirmedLogout" /> \ | ||||
| <signal name="ConfirmedReboot" /> \ | ||||
| <signal name="ConfirmedShutdown" /> \ | ||||
| <signal name="Canceled" /> \ | ||||
| <signal name="Closed" /> \ | ||||
| </interface> \ | ||||
| </node>'; | ||||
| const EndSessionDialogIface = ` | ||||
| <node> | ||||
| <interface name="org.gnome.SessionManager.EndSessionDialog"> | ||||
| <method name="Open"> | ||||
|     <arg type="u" direction="in" /> | ||||
|     <arg type="u" direction="in" /> | ||||
|     <arg type="u" direction="in" /> | ||||
|     <arg type="ao" direction="in" /> | ||||
| </method> | ||||
| <method name="Close" /> | ||||
| <signal name="ConfirmedLogout" /> | ||||
| <signal name="ConfirmedReboot" /> | ||||
| <signal name="ConfirmedShutdown" /> | ||||
| <signal name="Canceled" /> | ||||
| <signal name="Closed" /> | ||||
| </interface> | ||||
| </node>`; | ||||
|  | ||||
| const logoutDialogContent = { | ||||
|     subjectWithUser: C_("title", "Log Out %s"), | ||||
| @@ -168,39 +169,42 @@ const DialogContent = { | ||||
|  | ||||
| var MAX_USERS_IN_SESSION_DIALOG = 5; | ||||
|  | ||||
| const LogindSessionIface = '<node> \ | ||||
| <interface name="org.freedesktop.login1.Session"> \ | ||||
|     <property name="Id" type="s" access="read"/> \ | ||||
|     <property name="Remote" type="b" access="read"/> \ | ||||
|     <property name="Class" type="s" access="read"/> \ | ||||
|     <property name="Type" type="s" access="read"/> \ | ||||
|     <property name="State" type="s" access="read"/> \ | ||||
| </interface> \ | ||||
| </node>'; | ||||
| const LogindSessionIface = ` | ||||
| <node> | ||||
| <interface name="org.freedesktop.login1.Session"> | ||||
|     <property name="Id" type="s" access="read"/> | ||||
|     <property name="Remote" type="b" access="read"/> | ||||
|     <property name="Class" type="s" access="read"/> | ||||
|     <property name="Type" type="s" access="read"/> | ||||
|     <property name="State" type="s" access="read"/> | ||||
| </interface> | ||||
| </node>`; | ||||
|  | ||||
| const LogindSession = Gio.DBusProxy.makeProxyWrapper(LogindSessionIface); | ||||
|  | ||||
| const PkOfflineIface = '<node> \ | ||||
| <interface name="org.freedesktop.PackageKit.Offline"> \ | ||||
|     <property name="UpdatePrepared" type="b" access="read"/> \ | ||||
|     <property name="UpdateTriggered" type="b" access="read"/> \ | ||||
|     <property name="UpgradePrepared" type="b" access="read"/> \ | ||||
|     <property name="UpgradeTriggered" type="b" access="read"/> \ | ||||
|     <property name="PreparedUpgrade" type="a{sv}" access="read"/> \ | ||||
|     <method name="Trigger"> \ | ||||
|         <arg type="s" name="action" direction="in"/> \ | ||||
|     </method> \ | ||||
|     <method name="Cancel"/> \ | ||||
| </interface> \ | ||||
| </node>'; | ||||
| const PkOfflineIface = ` | ||||
| <node> | ||||
| <interface name="org.freedesktop.PackageKit.Offline"> | ||||
|     <property name="UpdatePrepared" type="b" access="read"/> | ||||
|     <property name="UpdateTriggered" type="b" access="read"/> | ||||
|     <property name="UpgradePrepared" type="b" access="read"/> | ||||
|     <property name="UpgradeTriggered" type="b" access="read"/> | ||||
|     <property name="PreparedUpgrade" type="a{sv}" access="read"/> | ||||
|     <method name="Trigger"> | ||||
|         <arg type="s" name="action" direction="in"/> | ||||
|     </method> | ||||
|     <method name="Cancel"/> | ||||
| </interface> | ||||
| </node>`; | ||||
|  | ||||
| const PkOfflineProxy = Gio.DBusProxy.makeProxyWrapper(PkOfflineIface); | ||||
|  | ||||
| const UPowerIface = '<node> \ | ||||
| <interface name="org.freedesktop.UPower"> \ | ||||
|     <property name="OnBattery" type="b" access="read"/> \ | ||||
| </interface> \ | ||||
| </node>'; | ||||
| const UPowerIface = ` | ||||
| <node> | ||||
| <interface name="org.freedesktop.UPower"> | ||||
|     <property name="OnBattery" type="b" access="read"/> | ||||
| </interface> | ||||
| </node>`; | ||||
|  | ||||
| const UPowerProxy = Gio.DBusProxy.makeProxyWrapper(UPowerIface); | ||||
|  | ||||
|   | ||||
| @@ -472,6 +472,8 @@ var KeyboardModel = new Lang.Class({ | ||||
|     _loadModel(groupName) { | ||||
|         let file = Gio.File.new_for_uri('resource:///org/gnome/shell/osk-layouts/%s.json'.format(groupName)); | ||||
|         let [success, contents] = file.load_contents(null); | ||||
|         if (contents instanceof Uint8Array) | ||||
|             contents = imports.byteArray.toString(contents); | ||||
|  | ||||
|         return JSON.parse(contents); | ||||
|     }, | ||||
| @@ -490,13 +492,18 @@ var FocusTracker = new Lang.Class({ | ||||
|  | ||||
|     _init() { | ||||
|         this._currentWindow = null; | ||||
|         this._currentWindowPositionId = 0; | ||||
|  | ||||
|         global.display.connect('notify::focus-window', () => { | ||||
|             this._setCurrentWindow(global.display.focus_window); | ||||
|             this.emit('window-changed', this._currentWindow); | ||||
|         }); | ||||
|  | ||||
|         global.display.connect('grab-op-begin', (display, window, op) => { | ||||
|             if (window == this._currentWindow && | ||||
|                 (op == Meta.GrabOp.MOVING || op == Meta.GrabOp.KEYBOARD_MOVING)) | ||||
|                 this.emit('reset'); | ||||
|         }); | ||||
|  | ||||
|         /* Valid for wayland clients */ | ||||
|         Main.inputMethod.connect('cursor-location-changed', (o, rect) => { | ||||
|             let newRect = { x: rect.get_x(), y: rect.get_y(), width: rect.get_width(), height: rect.get_height() }; | ||||
| @@ -518,18 +525,7 @@ var FocusTracker = new Lang.Class({ | ||||
|     }, | ||||
|  | ||||
|     _setCurrentWindow(window) { | ||||
|         if (this._currentWindow) | ||||
|             this._currentWindow.disconnect(this._currentWindowPositionId); | ||||
|  | ||||
|         this._currentWindow = window; | ||||
|         if (window) { | ||||
|             this._currentWindowPositionId = this._currentWindow.connect('position-changed', () => { | ||||
|                 if (global.display.get_grab_op() == Meta.GrabOp.NONE) | ||||
|                     this.emit('position-changed'); | ||||
|                 else | ||||
|                     this.emit('reset'); | ||||
|             }); | ||||
|         } | ||||
|     }, | ||||
|  | ||||
|     _setCurrentRect(rect) { | ||||
|   | ||||
| @@ -204,6 +204,7 @@ var LayoutManager = new Lang.Class({ | ||||
|  | ||||
|         // Set up stage hierarchy to group all UI actors under one container. | ||||
|         this.uiGroup = new Shell.GenericContainer({ name: 'uiGroup' }); | ||||
|         this.uiGroup.set_flags(Clutter.ActorFlags.NO_LAYOUT); | ||||
|         this.uiGroup.connect('allocate', (actor, box, flags) => { | ||||
|             let children = actor.get_children(); | ||||
|             for (let i = 0; i < children.length; i++) | ||||
|   | ||||
| @@ -9,89 +9,91 @@ const ZOOM_SERVICE_PATH = '/org/gnome/Magnifier/ZoomRegion'; | ||||
|  | ||||
| // Subset of gnome-mag's Magnifier dbus interface -- to be expanded.  See: | ||||
| // http://git.gnome.org/browse/gnome-mag/tree/xml/...Magnifier.xml | ||||
| const MagnifierIface = '<node> \ | ||||
| <interface name="org.gnome.Magnifier"> \ | ||||
| <method name="setActive"> \ | ||||
|     <arg type="b" direction="in" /> \ | ||||
| </method> \ | ||||
| <method name="isActive"> \ | ||||
|     <arg type="b" direction="out" /> \ | ||||
| </method> \ | ||||
| <method name="showCursor" /> \ | ||||
| <method name="hideCursor" /> \ | ||||
| <method name="createZoomRegion"> \ | ||||
|     <arg type="d" direction="in" /> \ | ||||
|     <arg type="d" direction="in" /> \ | ||||
|     <arg type="ai" direction="in" /> \ | ||||
|     <arg type="ai" direction="in" /> \ | ||||
|     <arg type="o" direction="out" /> \ | ||||
| </method> \ | ||||
| <method name="addZoomRegion"> \ | ||||
|     <arg type="o" direction="in" /> \ | ||||
|     <arg type="b" direction="out" /> \ | ||||
| </method> \ | ||||
| <method name="getZoomRegions"> \ | ||||
|     <arg type="ao" direction="out" /> \ | ||||
| </method> \ | ||||
| <method name="clearAllZoomRegions" /> \ | ||||
| <method name="fullScreenCapable"> \ | ||||
|     <arg type="b" direction="out" /> \ | ||||
| </method> \ | ||||
| <method name="setCrosswireSize"> \ | ||||
|     <arg type="i" direction="in" /> \ | ||||
| </method> \ | ||||
| <method name="getCrosswireSize"> \ | ||||
|     <arg type="i" direction="out" /> \ | ||||
| </method> \ | ||||
| <method name="setCrosswireLength"> \ | ||||
|     <arg type="i" direction="in" /> \ | ||||
| </method> \ | ||||
| <method name="getCrosswireLength"> \ | ||||
|     <arg type="i" direction="out" /> \ | ||||
| </method> \ | ||||
| <method name="setCrosswireClip"> \ | ||||
|     <arg type="b" direction="in" /> \ | ||||
| </method> \ | ||||
| <method name="getCrosswireClip"> \ | ||||
|     <arg type="b" direction="out" /> \ | ||||
| </method> \ | ||||
| <method name="setCrosswireColor"> \ | ||||
|     <arg type="u" direction="in" /> \ | ||||
| </method> \ | ||||
| <method name="getCrosswireColor"> \ | ||||
|     <arg type="u" direction="out" /> \ | ||||
| </method> \ | ||||
| </interface> \ | ||||
| </node>'; | ||||
| const MagnifierIface = ` | ||||
| <node> | ||||
| <interface name="org.gnome.Magnifier"> | ||||
| <method name="setActive"> | ||||
|     <arg type="b" direction="in" /> | ||||
| </method> | ||||
| <method name="isActive"> | ||||
|     <arg type="b" direction="out" /> | ||||
| </method> | ||||
| <method name="showCursor" /> | ||||
| <method name="hideCursor" /> | ||||
| <method name="createZoomRegion"> | ||||
|     <arg type="d" direction="in" /> | ||||
|     <arg type="d" direction="in" /> | ||||
|     <arg type="ai" direction="in" /> | ||||
|     <arg type="ai" direction="in" /> | ||||
|     <arg type="o" direction="out" /> | ||||
| </method> | ||||
| <method name="addZoomRegion"> | ||||
|     <arg type="o" direction="in" /> | ||||
|     <arg type="b" direction="out" /> | ||||
| </method> | ||||
| <method name="getZoomRegions"> | ||||
|     <arg type="ao" direction="out" /> | ||||
| </method> | ||||
| <method name="clearAllZoomRegions" /> | ||||
| <method name="fullScreenCapable"> | ||||
|     <arg type="b" direction="out" /> | ||||
| </method> | ||||
| <method name="setCrosswireSize"> | ||||
|     <arg type="i" direction="in" /> | ||||
| </method> | ||||
| <method name="getCrosswireSize"> | ||||
|     <arg type="i" direction="out" /> | ||||
| </method> | ||||
| <method name="setCrosswireLength"> | ||||
|     <arg type="i" direction="in" /> | ||||
| </method> | ||||
| <method name="getCrosswireLength"> | ||||
|     <arg type="i" direction="out" /> | ||||
| </method> | ||||
| <method name="setCrosswireClip"> | ||||
|     <arg type="b" direction="in" /> | ||||
| </method> | ||||
| <method name="getCrosswireClip"> | ||||
|     <arg type="b" direction="out" /> | ||||
| </method> | ||||
| <method name="setCrosswireColor"> | ||||
|     <arg type="u" direction="in" /> | ||||
| </method> | ||||
| <method name="getCrosswireColor"> | ||||
|     <arg type="u" direction="out" /> | ||||
| </method> | ||||
| </interface> | ||||
| </node>`; | ||||
|  | ||||
| // Subset of gnome-mag's ZoomRegion dbus interface -- to be expanded.  See: | ||||
| // http://git.gnome.org/browse/gnome-mag/tree/xml/...ZoomRegion.xml | ||||
| const ZoomRegionIface = '<node> \ | ||||
| <interface name="org.gnome.Magnifier.ZoomRegion"> \ | ||||
| <method name="setMagFactor"> \ | ||||
|     <arg type="d" direction="in" /> \ | ||||
|     <arg type="d" direction="in" /> \ | ||||
| </method> \ | ||||
| <method name="getMagFactor"> \ | ||||
|     <arg type="d" direction="out" /> \ | ||||
|     <arg type="d" direction="out" /> \ | ||||
| </method> \ | ||||
| <method name="setRoi"> \ | ||||
|     <arg type="ai" direction="in" /> \ | ||||
| </method> \ | ||||
| <method name="getRoi"> \ | ||||
|     <arg type="ai" direction="out" /> \ | ||||
| </method> \ | ||||
| <method name="shiftContentsTo"> \ | ||||
|     <arg type="i" direction="in" /> \ | ||||
|     <arg type="i" direction="in" /> \ | ||||
|     <arg type="b" direction="out" /> \ | ||||
| </method> \ | ||||
| <method name="moveResize"> \ | ||||
|     <arg type="ai" direction="in" /> \ | ||||
| </method> \ | ||||
| </interface> \ | ||||
| </node>'; | ||||
| const ZoomRegionIface = ` | ||||
| <node> | ||||
| <interface name="org.gnome.Magnifier.ZoomRegion"> | ||||
| <method name="setMagFactor"> | ||||
|     <arg type="d" direction="in" /> | ||||
|     <arg type="d" direction="in" /> | ||||
| </method> | ||||
| <method name="getMagFactor"> | ||||
|     <arg type="d" direction="out" /> | ||||
|     <arg type="d" direction="out" /> | ||||
| </method> | ||||
| <method name="setRoi"> | ||||
|     <arg type="ai" direction="in" /> | ||||
| </method> | ||||
| <method name="getRoi"> | ||||
|     <arg type="ai" direction="out" /> | ||||
| </method> | ||||
| <method name="shiftContentsTo"> | ||||
|     <arg type="i" direction="in" /> | ||||
|     <arg type="i" direction="in" /> | ||||
|     <arg type="b" direction="out" /> | ||||
| </method> | ||||
| <method name="moveResize"> | ||||
|     <arg type="ai" direction="in" /> | ||||
| </method> | ||||
| </interface> | ||||
| </node>`; | ||||
|  | ||||
| // For making unique ZoomRegion DBus proxy object paths of the form: | ||||
| // '/org/gnome/Magnifier/ZoomRegion/zoomer0', | ||||
|   | ||||
| @@ -8,41 +8,44 @@ const Calendar = imports.ui.calendar; | ||||
| const Main = imports.ui.main; | ||||
| const MessageList = imports.ui.messageList; | ||||
|  | ||||
| const DBusIface = '<node> \ | ||||
| <interface name="org.freedesktop.DBus"> \ | ||||
|   <method name="ListNames"> \ | ||||
|     <arg type="as" direction="out" name="names" /> \ | ||||
|   </method> \ | ||||
|   <signal name="NameOwnerChanged"> \ | ||||
|     <arg type="s" direction="out" name="name" /> \ | ||||
|     <arg type="s" direction="out" name="oldOwner" /> \ | ||||
|     <arg type="s" direction="out" name="newOwner" /> \ | ||||
|   </signal> \ | ||||
| </interface> \ | ||||
| </node>'; | ||||
| const DBusIface = ` | ||||
| <node> | ||||
| <interface name="org.freedesktop.DBus"> | ||||
|   <method name="ListNames"> | ||||
|     <arg type="as" direction="out" name="names" /> | ||||
|   </method> | ||||
|   <signal name="NameOwnerChanged"> | ||||
|     <arg type="s" direction="out" name="name" /> | ||||
|     <arg type="s" direction="out" name="oldOwner" /> | ||||
|     <arg type="s" direction="out" name="newOwner" /> | ||||
|   </signal> | ||||
| </interface> | ||||
| </node>`; | ||||
| const DBusProxy = Gio.DBusProxy.makeProxyWrapper(DBusIface); | ||||
|  | ||||
| const MprisIface = '<node> \ | ||||
| <interface name="org.mpris.MediaPlayer2"> \ | ||||
|   <method name="Raise" /> \ | ||||
|   <property name="CanRaise" type="b" access="read" /> \ | ||||
|   <property name="DesktopEntry" type="s" access="read" /> \ | ||||
| </interface> \ | ||||
| </node>'; | ||||
| const MprisIface = ` | ||||
| <node> | ||||
| <interface name="org.mpris.MediaPlayer2"> | ||||
|   <method name="Raise" /> | ||||
|   <property name="CanRaise" type="b" access="read" /> | ||||
|   <property name="DesktopEntry" type="s" access="read" /> | ||||
| </interface> | ||||
| </node>`; | ||||
| const MprisProxy = Gio.DBusProxy.makeProxyWrapper(MprisIface); | ||||
|  | ||||
| const MprisPlayerIface = '<node> \ | ||||
| <interface name="org.mpris.MediaPlayer2.Player"> \ | ||||
|   <method name="PlayPause" /> \ | ||||
|   <method name="Next" /> \ | ||||
|   <method name="Previous" /> \ | ||||
|   <property name="CanGoNext" type="b" access="read" /> \ | ||||
|   <property name="CanGoPrevious" type="b" access="read" /> \ | ||||
|   <property name="CanPlay" type="b" access="read" /> \ | ||||
|   <property name="Metadata" type="a{sv}" access="read" /> \ | ||||
|   <property name="PlaybackStatus" type="s" access="read" /> \ | ||||
| </interface> \ | ||||
| </node>'; | ||||
| const MprisPlayerIface = ` | ||||
| <node> | ||||
| <interface name="org.mpris.MediaPlayer2.Player"> | ||||
|   <method name="PlayPause" /> | ||||
|   <method name="Next" /> | ||||
|   <method name="Previous" /> | ||||
|   <property name="CanGoNext" type="b" access="read" /> | ||||
|   <property name="CanGoPrevious" type="b" access="read" /> | ||||
|   <property name="CanPlay" type="b" access="read" /> | ||||
|   <property name="Metadata" type="a{sv}" access="read" /> | ||||
|   <property name="PlaybackStatus" type="s" access="read" /> | ||||
| </interface> | ||||
| </node>`; | ||||
| const MprisPlayerProxy = Gio.DBusProxy.makeProxyWrapper(MprisPlayerIface); | ||||
|  | ||||
| const MPRIS_PLAYER_PREFIX = 'org.mpris.MediaPlayer2.'; | ||||
|   | ||||
| @@ -17,55 +17,57 @@ const Params = imports.misc.params; | ||||
| const Util = imports.misc.util; | ||||
|  | ||||
| // Should really be defined in Gio.js | ||||
| const BusIface = '<node> \ | ||||
| <interface name="org.freedesktop.DBus"> \ | ||||
| <method name="GetConnectionUnixProcessID"> \ | ||||
|     <arg type="s" direction="in" /> \ | ||||
|     <arg type="u" direction="out" /> \ | ||||
| </method> \ | ||||
| </interface> \ | ||||
| </node>'; | ||||
| const BusIface = ` | ||||
| <node> | ||||
| <interface name="org.freedesktop.DBus"> | ||||
| <method name="GetConnectionUnixProcessID"> | ||||
|     <arg type="s" direction="in" /> | ||||
|     <arg type="u" direction="out" /> | ||||
| </method> | ||||
| </interface> | ||||
| </node>`; | ||||
|  | ||||
| var BusProxy = Gio.DBusProxy.makeProxyWrapper(BusIface); | ||||
| function Bus() { | ||||
|     return new BusProxy(Gio.DBus.session, 'org.freedesktop.DBus', '/org/freedesktop/DBus'); | ||||
| } | ||||
|  | ||||
| const FdoNotificationsIface = '<node> \ | ||||
| <interface name="org.freedesktop.Notifications"> \ | ||||
| <method name="Notify"> \ | ||||
|     <arg type="s" direction="in"/> \ | ||||
|     <arg type="u" direction="in"/> \ | ||||
|     <arg type="s" direction="in"/> \ | ||||
|     <arg type="s" direction="in"/> \ | ||||
|     <arg type="s" direction="in"/> \ | ||||
|     <arg type="as" direction="in"/> \ | ||||
|     <arg type="a{sv}" direction="in"/> \ | ||||
|     <arg type="i" direction="in"/> \ | ||||
|     <arg type="u" direction="out"/> \ | ||||
| </method> \ | ||||
| <method name="CloseNotification"> \ | ||||
|     <arg type="u" direction="in"/> \ | ||||
| </method> \ | ||||
| <method name="GetCapabilities"> \ | ||||
|     <arg type="as" direction="out"/> \ | ||||
| </method> \ | ||||
| <method name="GetServerInformation"> \ | ||||
|     <arg type="s" direction="out"/> \ | ||||
|     <arg type="s" direction="out"/> \ | ||||
|     <arg type="s" direction="out"/> \ | ||||
|     <arg type="s" direction="out"/> \ | ||||
| </method> \ | ||||
| <signal name="NotificationClosed"> \ | ||||
|     <arg type="u"/> \ | ||||
|     <arg type="u"/> \ | ||||
| </signal> \ | ||||
| <signal name="ActionInvoked"> \ | ||||
|     <arg type="u"/> \ | ||||
|     <arg type="s"/> \ | ||||
| </signal> \ | ||||
| </interface> \ | ||||
| </node>'; | ||||
| const FdoNotificationsIface = ` | ||||
| <node> | ||||
| <interface name="org.freedesktop.Notifications"> | ||||
| <method name="Notify"> | ||||
|     <arg type="s" direction="in"/> | ||||
|     <arg type="u" direction="in"/> | ||||
|     <arg type="s" direction="in"/> | ||||
|     <arg type="s" direction="in"/> | ||||
|     <arg type="s" direction="in"/> | ||||
|     <arg type="as" direction="in"/> | ||||
|     <arg type="a{sv}" direction="in"/> | ||||
|     <arg type="i" direction="in"/> | ||||
|     <arg type="u" direction="out"/> | ||||
| </method> | ||||
| <method name="CloseNotification"> | ||||
|     <arg type="u" direction="in"/> | ||||
| </method> | ||||
| <method name="GetCapabilities"> | ||||
|     <arg type="as" direction="out"/> | ||||
| </method> | ||||
| <method name="GetServerInformation"> | ||||
|     <arg type="s" direction="out"/> | ||||
|     <arg type="s" direction="out"/> | ||||
|     <arg type="s" direction="out"/> | ||||
|     <arg type="s" direction="out"/> | ||||
| </method> | ||||
| <signal name="NotificationClosed"> | ||||
|     <arg type="u"/> | ||||
|     <arg type="u"/> | ||||
| </signal> | ||||
| <signal name="ActionInvoked"> | ||||
|     <arg type="u"/> | ||||
|     <arg type="s"/> | ||||
| </signal> | ||||
| </interface> | ||||
| </node>`; | ||||
|  | ||||
| var NotificationClosedReason = { | ||||
|     EXPIRED: 1, | ||||
| @@ -654,18 +656,19 @@ var GtkNotificationDaemonNotification = new Lang.Class({ | ||||
|     }, | ||||
| }); | ||||
|  | ||||
| const FdoApplicationIface = '<node> \ | ||||
| <interface name="org.freedesktop.Application"> \ | ||||
| <method name="ActivateAction"> \ | ||||
|     <arg type="s" direction="in" /> \ | ||||
|     <arg type="av" direction="in" /> \ | ||||
|     <arg type="a{sv}" direction="in" /> \ | ||||
| </method> \ | ||||
| <method name="Activate"> \ | ||||
|     <arg type="a{sv}" direction="in" /> \ | ||||
| </method> \ | ||||
| </interface> \ | ||||
| </node>'; | ||||
| const FdoApplicationIface = ` | ||||
| <node> | ||||
| <interface name="org.freedesktop.Application"> | ||||
| <method name="ActivateAction"> | ||||
|     <arg type="s" direction="in" /> | ||||
|     <arg type="av" direction="in" /> | ||||
|     <arg type="a{sv}" direction="in" /> | ||||
| </method> | ||||
| <method name="Activate"> | ||||
|     <arg type="a{sv}" direction="in" /> | ||||
| </method> | ||||
| </interface> | ||||
| </node>`; | ||||
| const FdoApplicationProxy = Gio.DBusProxy.makeProxyWrapper(FdoApplicationIface); | ||||
|  | ||||
| function objectPathFromAppId(appId) { | ||||
| @@ -774,19 +777,20 @@ var GtkNotificationDaemonAppSource = new Lang.Class({ | ||||
|     }, | ||||
| }); | ||||
|  | ||||
| const GtkNotificationsIface = '<node> \ | ||||
| <interface name="org.gtk.Notifications"> \ | ||||
| <method name="AddNotification"> \ | ||||
|     <arg type="s" direction="in" /> \ | ||||
|     <arg type="s" direction="in" /> \ | ||||
|     <arg type="a{sv}" direction="in" /> \ | ||||
| </method> \ | ||||
| <method name="RemoveNotification"> \ | ||||
|     <arg type="s" direction="in" /> \ | ||||
|     <arg type="s" direction="in" /> \ | ||||
| </method> \ | ||||
| </interface> \ | ||||
| </node>'; | ||||
| const GtkNotificationsIface = ` | ||||
| <node> | ||||
| <interface name="org.gtk.Notifications"> | ||||
| <method name="AddNotification"> | ||||
|     <arg type="s" direction="in" /> | ||||
|     <arg type="s" direction="in" /> | ||||
|     <arg type="a{sv}" direction="in" /> | ||||
| </method> | ||||
| <method name="RemoveNotification"> | ||||
|     <arg type="s" direction="in" /> | ||||
|     <arg type="s" direction="in" /> | ||||
| </method> | ||||
| </interface> | ||||
| </node>`; | ||||
|  | ||||
| var GtkNotificationDaemon = new Lang.Class({ | ||||
|     Name: 'GtkNotificationDaemon', | ||||
|   | ||||
| @@ -4,6 +4,7 @@ const Clutter = imports.gi.Clutter; | ||||
| const GLib = imports.gi.GLib; | ||||
| const St = imports.gi.St; | ||||
|  | ||||
| const BarLevel = imports.ui.barLevel; | ||||
| const Lang = imports.lang; | ||||
| const Layout = imports.ui.layout; | ||||
| const Main = imports.ui.main; | ||||
| @@ -17,16 +18,18 @@ var LEVEL_ANIMATION_TIME = 0.1; | ||||
|  | ||||
| var LevelBar = new Lang.Class({ | ||||
|     Name: 'LevelBar', | ||||
|     Extends: BarLevel.BarLevel, | ||||
|  | ||||
|     _init() { | ||||
|         this._level = 0; | ||||
|         this._maxLevel = 100; | ||||
|  | ||||
|         this.actor = new St.Bin({ style_class: 'level', | ||||
|                                   x_align: St.Align.START, | ||||
|                                   y_fill: true }); | ||||
|         this._bar = new St.Widget({ style_class: 'level-bar' }); | ||||
|         let params = { | ||||
|             styleClass: 'level', | ||||
|         } | ||||
|         this.parent(this._level, params); | ||||
|  | ||||
|         this.actor.set_child(this._bar); | ||||
|         this.actor.accessible_name = _("Volume"); | ||||
|  | ||||
|         this.actor.connect('notify::width', () => { this.level = this.level; }); | ||||
|     }, | ||||
| @@ -36,12 +39,19 @@ var LevelBar = new Lang.Class({ | ||||
|     }, | ||||
|  | ||||
|     set level(value) { | ||||
|         this._level = Math.max(0, Math.min(value, 100)); | ||||
|         this._level = Math.max(0, Math.min(value, this._maxLevel)); | ||||
|  | ||||
|         let alloc = this.actor.get_allocation_box(); | ||||
|         let newWidth = Math.round((alloc.x2 - alloc.x1) * this._level / 100); | ||||
|         if (newWidth != this._bar.width) | ||||
|             this._bar.width = newWidth; | ||||
|         this.setValue(this._level / 100); | ||||
|     }, | ||||
|  | ||||
|     get maxLevel() { | ||||
|         return this._maxLevel; | ||||
|     }, | ||||
|  | ||||
|     set maxLevel(value) { | ||||
|         this._maxLevel = Math.max(100, value); | ||||
|  | ||||
|         this.setMaximumValue(this._maxLevel / 100); | ||||
|     } | ||||
| }); | ||||
|  | ||||
| @@ -140,6 +150,12 @@ var OsdWindow = new Lang.Class({ | ||||
|         } | ||||
|     }, | ||||
|  | ||||
|     setMaxLevel(maxLevel) { | ||||
|         if (maxLevel === undefined) | ||||
|             maxLevel = 100; | ||||
|         this._level.maxLevel = maxLevel; | ||||
|     }, | ||||
|  | ||||
|     show() { | ||||
|         if (!this._icon.gicon) | ||||
|             return; | ||||
| @@ -189,6 +205,7 @@ var OsdWindow = new Lang.Class({ | ||||
|         this.actor.hide(); | ||||
|         this.setLabel(null); | ||||
|         this.setLevel(null); | ||||
|         this.setMaxLevel(null); | ||||
|     }, | ||||
|  | ||||
|     _relayout() { | ||||
| @@ -233,24 +250,25 @@ var OsdWindowManager = new Lang.Class({ | ||||
|         this._osdWindows.length = Main.layoutManager.monitors.length; | ||||
|     }, | ||||
|  | ||||
|     _showOsdWindow(monitorIndex, icon, label, level) { | ||||
|     _showOsdWindow(monitorIndex, icon, label, level, maxLevel) { | ||||
|         this._osdWindows[monitorIndex].setIcon(icon); | ||||
|         this._osdWindows[monitorIndex].setLabel(label); | ||||
|         this._osdWindows[monitorIndex].setLevel(level); | ||||
|         this._osdWindows[monitorIndex].setMaxLevel(maxLevel); | ||||
|         this._osdWindows[monitorIndex].show(); | ||||
|     }, | ||||
|  | ||||
|     show(monitorIndex, icon, label, level) { | ||||
|     show(monitorIndex, icon, label, level, maxLevel) { | ||||
|         if (monitorIndex != -1) { | ||||
|             for (let i = 0; i < this._osdWindows.length; i++) { | ||||
|                 if (i == monitorIndex) | ||||
|                     this._showOsdWindow(i, icon, label, level); | ||||
|                     this._showOsdWindow(i, icon, label, level, maxLevel); | ||||
|                 else | ||||
|                     this._osdWindows[i].cancel(); | ||||
|             } | ||||
|         } else { | ||||
|             for (let i = 0; i < this._osdWindows.length; i++) | ||||
|                 this._showOsdWindow(i, icon, label, level); | ||||
|                 this._showOsdWindow(i, icon, label, level, maxLevel); | ||||
|         } | ||||
|     }, | ||||
|  | ||||
|   | ||||
| @@ -395,10 +395,8 @@ var Overview = new Lang.Class({ | ||||
|         if (!Main.layoutManager.primaryMonitor) | ||||
|             return; | ||||
|  | ||||
|         let workArea = Main.layoutManager.getWorkAreaForMonitor(Main.layoutManager.primaryIndex); | ||||
|  | ||||
|         this._coverPane.set_position(0, workArea.y); | ||||
|         this._coverPane.set_size(workArea.width, workArea.height); | ||||
|         this._coverPane.set_position(0, 0); | ||||
|         this._coverPane.set_size(global.screen_width, global.screen_height); | ||||
|  | ||||
|         this._updateBackgrounds(); | ||||
|     }, | ||||
|   | ||||
| @@ -253,13 +253,23 @@ var ThumbnailsSlider = new Lang.Class({ | ||||
|         this.actor.add_actor(this._thumbnailsBox.actor); | ||||
|  | ||||
|         Main.layoutManager.connect('monitors-changed', this._updateSlide.bind(this)); | ||||
|         global.workspace_manager.connect('active-workspace-changed', | ||||
|                                          this._updateSlide.bind(this)); | ||||
|         global.workspace_manager.connect('notify::n-workspaces', | ||||
|                                          this._updateSlide.bind(this)); | ||||
|         this.actor.connect('notify::hover', this._updateSlide.bind(this)); | ||||
|         this._thumbnailsBox.actor.bind_property('visible', this.actor, 'visible', GObject.BindingFlags.SYNC_CREATE); | ||||
|     }, | ||||
|  | ||||
|     _getAlwaysZoomOut() { | ||||
|         // Always show the pager on hover or during a drag | ||||
|         let alwaysZoomOut = this.actor.hover || this._inDrag; | ||||
|         // Always show the pager on hover, during a drag, or if workspaces are | ||||
|         // actually used, e.g. there are windows on any non-active workspace | ||||
|         let workspaceManager = global.workspace_manager; | ||||
|         let alwaysZoomOut = this.actor.hover || | ||||
|                             this._inDrag || | ||||
|                             !Meta.prefs_get_dynamic_workspaces() || | ||||
|                             workspaceManager.n_workspaces > 2 || | ||||
|                             workspaceManager.get_active_workspace_index() != 0; | ||||
|  | ||||
|         if (!alwaysZoomOut) { | ||||
|             let monitors = Main.layoutManager.monitors; | ||||
| @@ -284,6 +294,11 @@ var ThumbnailsSlider = new Lang.Class({ | ||||
|         return child.get_theme_node().get_length('visible-width'); | ||||
|     }, | ||||
|  | ||||
|     _onDragEnd() { | ||||
|         this.actor.sync_hover(); | ||||
|         this.parent(); | ||||
|     }, | ||||
|  | ||||
|     _getSlide() { | ||||
|         if (!this._visible) | ||||
|             return 0; | ||||
|   | ||||
| @@ -313,6 +313,8 @@ var PadDiagram = new Lang.Class({ | ||||
|     _init(params) { | ||||
|         let file = Gio.File.new_for_uri('resource:///org/gnome/shell/theme/pad-osd.css'); | ||||
|         let [success, css, etag] = file.load_contents(null); | ||||
|         if (css instanceof Uint8Array) | ||||
|             css = imports.byteArray.toString(css); | ||||
|         this._curEdited = null; | ||||
|         this._prevEdited = null; | ||||
|         this._css = css; | ||||
| @@ -960,14 +962,15 @@ var PadOsd = new Lang.Class({ | ||||
| }); | ||||
| Signals.addSignalMethods(PadOsd.prototype); | ||||
|  | ||||
| const PadOsdIface = '<node> \ | ||||
| <interface name="org.gnome.Shell.Wacom.PadOsd"> \ | ||||
| <method name="Show"> \ | ||||
|     <arg name="device_node" direction="in" type="o"/> \ | ||||
|     <arg name="edition_mode" direction="in" type="b"/> \ | ||||
| </method> \ | ||||
| </interface> \ | ||||
| </node>'; | ||||
| const PadOsdIface = ` | ||||
| <node> | ||||
| <interface name="org.gnome.Shell.Wacom.PadOsd"> | ||||
| <method name="Show"> | ||||
|     <arg name="device_node" direction="in" type="o"/> | ||||
|     <arg name="edition_mode" direction="in" type="b"/> | ||||
| </method> | ||||
| </interface> | ||||
| </node>`; | ||||
|  | ||||
| var PadOsdService = new Lang.Class({ | ||||
|     Name: 'PadOsdService', | ||||
|   | ||||
| @@ -307,8 +307,11 @@ var AppMenuButton = new Lang.Class({ | ||||
|             } | ||||
|         } | ||||
|  | ||||
|         let shellShowsAppMenu = this._gtkSettings.gtk_shell_shows_app_menu; | ||||
|         Meta.prefs_set_show_fallback_app_menu(!shellShowsAppMenu); | ||||
|  | ||||
|         let visible = (this._targetApp != null && | ||||
|                        this._gtkSettings.gtk_shell_shows_app_menu && | ||||
|                        shellShowsAppMenu && | ||||
|                        !Main.overview.visibleTarget); | ||||
|         if (visible) | ||||
|             this.show(); | ||||
| @@ -710,6 +713,7 @@ var AggregateMenu = new Lang.Class({ | ||||
|             this._bluetooth = null; | ||||
|         } | ||||
|  | ||||
|         this._remoteAccess = new imports.ui.status.remoteAccess.RemoteAccessApplet(); | ||||
|         this._power = new imports.ui.status.power.Indicator(); | ||||
|         this._rfkill = new imports.ui.status.rfkill.Indicator(); | ||||
|         this._volume = new imports.ui.status.volume.Indicator(); | ||||
| @@ -730,6 +734,7 @@ var AggregateMenu = new Lang.Class({ | ||||
|         if (this._bluetooth) { | ||||
|             this._indicators.add_child(this._bluetooth.indicators); | ||||
|         } | ||||
|         this._indicators.add_child(this._remoteAccess.indicators); | ||||
|         this._indicators.add_child(this._rfkill.indicators); | ||||
|         this._indicators.add_child(this._volume.indicators); | ||||
|         this._indicators.add_child(this._power.indicators); | ||||
| @@ -744,6 +749,7 @@ var AggregateMenu = new Lang.Class({ | ||||
|         if (this._bluetooth) { | ||||
|             this.menu.addMenuItem(this._bluetooth.menu); | ||||
|         } | ||||
|         this.menu.addMenuItem(this._remoteAccess.menu); | ||||
|         this.menu.addMenuItem(this._location.menu); | ||||
|         this.menu.addMenuItem(this._rfkill.menu); | ||||
|         this.menu.addMenuItem(this._power.menu); | ||||
| @@ -773,6 +779,7 @@ var Panel = new Lang.Class({ | ||||
|         this.actor = new Shell.GenericContainer({ name: 'panel', | ||||
|                                                   reactive: true }); | ||||
|         this.actor._delegate = this; | ||||
|         this.actor.set_offscreen_redirect(Clutter.OffscreenRedirect.ALWAYS); | ||||
|  | ||||
|         this._sessionStyle = null; | ||||
|  | ||||
|   | ||||
| @@ -12,53 +12,55 @@ const Search = imports.ui.search; | ||||
|  | ||||
| const KEY_FILE_GROUP = 'Shell Search Provider'; | ||||
|  | ||||
| const SearchProviderIface = '<node> \ | ||||
| <interface name="org.gnome.Shell.SearchProvider"> \ | ||||
| <method name="GetInitialResultSet"> \ | ||||
|     <arg type="as" direction="in" /> \ | ||||
|     <arg type="as" direction="out" /> \ | ||||
| </method> \ | ||||
| <method name="GetSubsearchResultSet"> \ | ||||
|     <arg type="as" direction="in" /> \ | ||||
|     <arg type="as" direction="in" /> \ | ||||
|     <arg type="as" direction="out" /> \ | ||||
| </method> \ | ||||
| <method name="GetResultMetas"> \ | ||||
|     <arg type="as" direction="in" /> \ | ||||
|     <arg type="aa{sv}" direction="out" /> \ | ||||
| </method> \ | ||||
| <method name="ActivateResult"> \ | ||||
|     <arg type="s" direction="in" /> \ | ||||
| </method> \ | ||||
| </interface> \ | ||||
| </node>'; | ||||
| const SearchProviderIface = ` | ||||
| <node> | ||||
| <interface name="org.gnome.Shell.SearchProvider"> | ||||
| <method name="GetInitialResultSet"> | ||||
|     <arg type="as" direction="in" /> | ||||
|     <arg type="as" direction="out" /> | ||||
| </method> | ||||
| <method name="GetSubsearchResultSet"> | ||||
|     <arg type="as" direction="in" /> | ||||
|     <arg type="as" direction="in" /> | ||||
|     <arg type="as" direction="out" /> | ||||
| </method> | ||||
| <method name="GetResultMetas"> | ||||
|     <arg type="as" direction="in" /> | ||||
|     <arg type="aa{sv}" direction="out" /> | ||||
| </method> | ||||
| <method name="ActivateResult"> | ||||
|     <arg type="s" direction="in" /> | ||||
| </method> | ||||
| </interface> | ||||
| </node>`; | ||||
|  | ||||
| const SearchProvider2Iface = '<node> \ | ||||
| <interface name="org.gnome.Shell.SearchProvider2"> \ | ||||
| <method name="GetInitialResultSet"> \ | ||||
|     <arg type="as" direction="in" /> \ | ||||
|     <arg type="as" direction="out" /> \ | ||||
| </method> \ | ||||
| <method name="GetSubsearchResultSet"> \ | ||||
|     <arg type="as" direction="in" /> \ | ||||
|     <arg type="as" direction="in" /> \ | ||||
|     <arg type="as" direction="out" /> \ | ||||
| </method> \ | ||||
| <method name="GetResultMetas"> \ | ||||
|     <arg type="as" direction="in" /> \ | ||||
|     <arg type="aa{sv}" direction="out" /> \ | ||||
| </method> \ | ||||
| <method name="ActivateResult"> \ | ||||
|     <arg type="s" direction="in" /> \ | ||||
|     <arg type="as" direction="in" /> \ | ||||
|     <arg type="u" direction="in" /> \ | ||||
| </method> \ | ||||
| <method name="LaunchSearch"> \ | ||||
|     <arg type="as" direction="in" /> \ | ||||
|     <arg type="u" direction="in" /> \ | ||||
| </method> \ | ||||
| </interface> \ | ||||
| </node>'; | ||||
| const SearchProvider2Iface = ` | ||||
| <node> | ||||
| <interface name="org.gnome.Shell.SearchProvider2"> | ||||
| <method name="GetInitialResultSet"> | ||||
|     <arg type="as" direction="in" /> | ||||
|     <arg type="as" direction="out" /> | ||||
| </method> | ||||
| <method name="GetSubsearchResultSet"> | ||||
|     <arg type="as" direction="in" /> | ||||
|     <arg type="as" direction="in" /> | ||||
|     <arg type="as" direction="out" /> | ||||
| </method> | ||||
| <method name="GetResultMetas"> | ||||
|     <arg type="as" direction="in" /> | ||||
|     <arg type="aa{sv}" direction="out" /> | ||||
| </method> | ||||
| <method name="ActivateResult"> | ||||
|     <arg type="s" direction="in" /> | ||||
|     <arg type="as" direction="in" /> | ||||
|     <arg type="u" direction="in" /> | ||||
| </method> | ||||
| <method name="LaunchSearch"> | ||||
|     <arg type="as" direction="in" /> | ||||
|     <arg type="u" direction="in" /> | ||||
| </method> | ||||
| </interface> | ||||
| </node>`; | ||||
|  | ||||
| var SearchProviderProxyInfo = Gio.DBusInterfaceInfo.new_for_xml(SearchProviderIface); | ||||
| var SearchProvider2ProxyInfo = Gio.DBusInterfaceInfo.new_for_xml(SearchProvider2Iface); | ||||
|   | ||||
| @@ -62,7 +62,11 @@ var RunDialog = new Lang.Class({ | ||||
|                                    'rt': () => { | ||||
|                                        Main.reloadThemeResource(); | ||||
|                                        Main.loadTheme(); | ||||
|                                    } | ||||
|                                    }, | ||||
|  | ||||
|                                    'check_cloexec_fds': () => { | ||||
|                                        Shell.util_check_cloexec_fds(); | ||||
|                                    }, | ||||
|                                  }; | ||||
|  | ||||
|  | ||||
| @@ -114,18 +118,16 @@ var RunDialog = new Lang.Class({ | ||||
|  | ||||
|         this._history = new History.HistoryManager({ gsettingsKey: HISTORY_KEY, | ||||
|                                                      entry: this._entryText }); | ||||
|         this._entryText.connect('activate', (o) => { | ||||
|             this.popModal(); | ||||
|             this._run(o.get_text(), | ||||
|                       Clutter.get_current_event().get_state() & Clutter.ModifierType.CONTROL_MASK); | ||||
|             if (!this._commandError || | ||||
|                 !this.pushModal()) | ||||
|                 this.close(); | ||||
|         }); | ||||
|         this._entryText.connect('key-press-event', (o, e) => { | ||||
|             let symbol = e.get_key_symbol(); | ||||
|             if (symbol == Clutter.Return || symbol == Clutter.KP_Enter) { | ||||
|                 this.popModal(); | ||||
|                 this._run(o.get_text(), | ||||
|                           e.get_state() & Clutter.ModifierType.CONTROL_MASK); | ||||
|                 if (!this._commandError || | ||||
|                     !this.pushModal()) | ||||
|                     this.close(); | ||||
|  | ||||
|                 return Clutter.EVENT_STOP; | ||||
|             } | ||||
|             if (symbol == Clutter.Tab) { | ||||
|                 let text = o.get_text(); | ||||
|                 let prefix; | ||||
|   | ||||
| @@ -8,29 +8,30 @@ const Signals = imports.signals; | ||||
|  | ||||
| const Main = imports.ui.main; | ||||
|  | ||||
| const ScreencastIface = '<node> \ | ||||
| <interface name="org.gnome.Shell.Screencast"> \ | ||||
| <method name="Screencast"> \ | ||||
|     <arg type="s" direction="in" name="file_template"/> \ | ||||
|     <arg type="a{sv}" direction="in" name="options"/> \ | ||||
|     <arg type="b" direction="out" name="success"/> \ | ||||
|     <arg type="s" direction="out" name="filename_used"/> \ | ||||
| </method> \ | ||||
| <method name="ScreencastArea"> \ | ||||
|     <arg type="i" direction="in" name="x"/> \ | ||||
|     <arg type="i" direction="in" name="y"/> \ | ||||
|     <arg type="i" direction="in" name="width"/> \ | ||||
|     <arg type="i" direction="in" name="height"/> \ | ||||
|     <arg type="s" direction="in" name="file_template"/> \ | ||||
|     <arg type="a{sv}" direction="in" name="options"/> \ | ||||
|     <arg type="b" direction="out" name="success"/> \ | ||||
|     <arg type="s" direction="out" name="filename_used"/> \ | ||||
| </method> \ | ||||
| <method name="StopScreencast"> \ | ||||
|     <arg type="b" direction="out" name="success"/> \ | ||||
| </method> \ | ||||
| </interface> \ | ||||
| </node>'; | ||||
| const ScreencastIface = ` | ||||
| <node> | ||||
| <interface name="org.gnome.Shell.Screencast"> | ||||
| <method name="Screencast"> | ||||
|     <arg type="s" direction="in" name="file_template"/> | ||||
|     <arg type="a{sv}" direction="in" name="options"/> | ||||
|     <arg type="b" direction="out" name="success"/> | ||||
|     <arg type="s" direction="out" name="filename_used"/> | ||||
| </method> | ||||
| <method name="ScreencastArea"> | ||||
|     <arg type="i" direction="in" name="x"/> | ||||
|     <arg type="i" direction="in" name="y"/> | ||||
|     <arg type="i" direction="in" name="width"/> | ||||
|     <arg type="i" direction="in" name="height"/> | ||||
|     <arg type="s" direction="in" name="file_template"/> | ||||
|     <arg type="a{sv}" direction="in" name="options"/> | ||||
|     <arg type="b" direction="out" name="success"/> | ||||
|     <arg type="s" direction="out" name="filename_used"/> | ||||
| </method> | ||||
| <method name="StopScreencast"> | ||||
|     <arg type="b" direction="out" name="success"/> | ||||
| </method> | ||||
| </interface> | ||||
| </node>`; | ||||
|  | ||||
| var ScreencastService = new Lang.Class({ | ||||
|     Name: 'ScreencastService', | ||||
|   | ||||
| @@ -16,47 +16,51 @@ const Lightbox = imports.ui.lightbox; | ||||
| const Main = imports.ui.main; | ||||
| const Tweener = imports.ui.tweener; | ||||
|  | ||||
| const ScreenshotIface = '<node> \ | ||||
| <interface name="org.gnome.Shell.Screenshot"> \ | ||||
| <method name="ScreenshotArea"> \ | ||||
|     <arg type="i" direction="in" name="x"/> \ | ||||
|     <arg type="i" direction="in" name="y"/> \ | ||||
|     <arg type="i" direction="in" name="width"/> \ | ||||
|     <arg type="i" direction="in" name="height"/> \ | ||||
|     <arg type="b" direction="in" name="flash"/> \ | ||||
|     <arg type="s" direction="in" name="filename"/> \ | ||||
|     <arg type="b" direction="out" name="success"/> \ | ||||
|     <arg type="s" direction="out" name="filename_used"/> \ | ||||
| </method> \ | ||||
| <method name="ScreenshotWindow"> \ | ||||
|     <arg type="b" direction="in" name="include_frame"/> \ | ||||
|     <arg type="b" direction="in" name="include_cursor"/> \ | ||||
|     <arg type="b" direction="in" name="flash"/> \ | ||||
|     <arg type="s" direction="in" name="filename"/> \ | ||||
|     <arg type="b" direction="out" name="success"/> \ | ||||
|     <arg type="s" direction="out" name="filename_used"/> \ | ||||
| </method> \ | ||||
| <method name="Screenshot"> \ | ||||
|     <arg type="b" direction="in" name="include_cursor"/> \ | ||||
|     <arg type="b" direction="in" name="flash"/> \ | ||||
|     <arg type="s" direction="in" name="filename"/> \ | ||||
|     <arg type="b" direction="out" name="success"/> \ | ||||
|     <arg type="s" direction="out" name="filename_used"/> \ | ||||
| </method> \ | ||||
| <method name="SelectArea"> \ | ||||
|     <arg type="i" direction="out" name="x"/> \ | ||||
|     <arg type="i" direction="out" name="y"/> \ | ||||
|     <arg type="i" direction="out" name="width"/> \ | ||||
|     <arg type="i" direction="out" name="height"/> \ | ||||
| </method> \ | ||||
| <method name="FlashArea"> \ | ||||
|     <arg type="i" direction="in" name="x"/> \ | ||||
|     <arg type="i" direction="in" name="y"/> \ | ||||
|     <arg type="i" direction="in" name="width"/> \ | ||||
|     <arg type="i" direction="in" name="height"/> \ | ||||
| </method> \ | ||||
| </interface> \ | ||||
| </node>'; | ||||
| const ScreenshotIface = ` | ||||
| <node> | ||||
| <interface name="org.gnome.Shell.Screenshot"> | ||||
| <method name="ScreenshotArea"> | ||||
|     <arg type="i" direction="in" name="x"/> | ||||
|     <arg type="i" direction="in" name="y"/> | ||||
|     <arg type="i" direction="in" name="width"/> | ||||
|     <arg type="i" direction="in" name="height"/> | ||||
|     <arg type="b" direction="in" name="flash"/> | ||||
|     <arg type="s" direction="in" name="filename"/> | ||||
|     <arg type="b" direction="out" name="success"/> | ||||
|     <arg type="s" direction="out" name="filename_used"/> | ||||
| </method> | ||||
| <method name="ScreenshotWindow"> | ||||
|     <arg type="b" direction="in" name="include_frame"/> | ||||
|     <arg type="b" direction="in" name="include_cursor"/> | ||||
|     <arg type="b" direction="in" name="flash"/> | ||||
|     <arg type="s" direction="in" name="filename"/> | ||||
|     <arg type="b" direction="out" name="success"/> | ||||
|     <arg type="s" direction="out" name="filename_used"/> | ||||
| </method> | ||||
| <method name="Screenshot"> | ||||
|     <arg type="b" direction="in" name="include_cursor"/> | ||||
|     <arg type="b" direction="in" name="flash"/> | ||||
|     <arg type="s" direction="in" name="filename"/> | ||||
|     <arg type="b" direction="out" name="success"/> | ||||
|     <arg type="s" direction="out" name="filename_used"/> | ||||
| </method> | ||||
| <method name="SelectArea"> | ||||
|     <arg type="i" direction="out" name="x"/> | ||||
|     <arg type="i" direction="out" name="y"/> | ||||
|     <arg type="i" direction="out" name="width"/> | ||||
|     <arg type="i" direction="out" name="height"/> | ||||
| </method> | ||||
| <method name="FlashArea"> | ||||
|     <arg type="i" direction="in" name="x"/> | ||||
|     <arg type="i" direction="in" name="y"/> | ||||
|     <arg type="i" direction="in" name="width"/> | ||||
|     <arg type="i" direction="in" name="height"/> | ||||
| </method> | ||||
| <method name="PickColor"> | ||||
|     <arg type="a{sv}" direction="out" name="result"/> | ||||
| </method> | ||||
| </interface> | ||||
| </node>`; | ||||
|  | ||||
| var ScreenshotService = new Lang.Class({ | ||||
|     Name: 'ScreenshotService', | ||||
| @@ -72,10 +76,13 @@ var ScreenshotService = new Lang.Class({ | ||||
|         Gio.DBus.session.own_name('org.gnome.Shell.Screenshot', Gio.BusNameOwnerFlags.REPLACE, null, null); | ||||
|     }, | ||||
|  | ||||
|     _createScreenshot(invocation) { | ||||
|     _createScreenshot(invocation, needsDisk=true) { | ||||
|         let lockedDown = false; | ||||
|         if (needsDisk) | ||||
|             lockedDown = this._lockdownSettings.get_boolean('disable-save-to-disk') | ||||
|  | ||||
|         let sender = invocation.get_sender(); | ||||
|         if (this._screenShooter.has(sender) || | ||||
|             this._lockdownSettings.get_boolean('disable-save-to-disk')) { | ||||
|         if (this._screenShooter.has(sender) || lockedDown) { | ||||
|             invocation.return_value(GLib.Variant.new('(bs)', [false, ''])); | ||||
|             return null; | ||||
|         } | ||||
| @@ -110,7 +117,7 @@ var ScreenshotService = new Lang.Class({ | ||||
|                y + height <= global.screen_height; | ||||
|     }, | ||||
|  | ||||
|     _onScreenshotComplete(obj, result, area, filenameUsed, flash, invocation) { | ||||
|     _onScreenshotComplete(result, area, filenameUsed, flash, invocation) { | ||||
|         if (result) { | ||||
|             if (flash) { | ||||
|                 let flashspot = new Flashspot(area); | ||||
| @@ -157,9 +164,15 @@ var ScreenshotService = new Lang.Class({ | ||||
|         if (!screenshot) | ||||
|             return; | ||||
|         screenshot.screenshot_area (x, y, width, height, filename, | ||||
|             (obj, result, area, filenameUsed) => { | ||||
|                 this._onScreenshotComplete(obj, result, area, filenameUsed, | ||||
|                                            flash, invocation); | ||||
|             (o, res) => { | ||||
|                 try { | ||||
|                     let [result, area, filenameUsed] = | ||||
|                         screenshot.screenshot_area_finish(res); | ||||
|                     this._onScreenshotComplete(result, area, filenameUsed, | ||||
|                                                flash, invocation); | ||||
|                 } catch (e) { | ||||
|                     invocation.return_gerror (e); | ||||
|                 } | ||||
|             }); | ||||
|     }, | ||||
|  | ||||
| @@ -169,9 +182,15 @@ var ScreenshotService = new Lang.Class({ | ||||
|         if (!screenshot) | ||||
|             return; | ||||
|         screenshot.screenshot_window (include_frame, include_cursor, filename, | ||||
|             (obj, result, area, filenameUsed) => { | ||||
|                 this._onScreenshotComplete(obj, result, area, filenameUsed, | ||||
|                                            flash, invocation); | ||||
|             (o, res) => { | ||||
|                 try { | ||||
|                     let [result, area, filenameUsed] = | ||||
|                         screenshot.screenshot_window_finish(res); | ||||
|                     this._onScreenshotComplete(result, area, filenameUsed, | ||||
|                                                flash, invocation); | ||||
|                 } catch (e) { | ||||
|                     invocation.return_gerror (e); | ||||
|                 } | ||||
|             }); | ||||
|     }, | ||||
|  | ||||
| @@ -181,9 +200,15 @@ var ScreenshotService = new Lang.Class({ | ||||
|         if (!screenshot) | ||||
|             return; | ||||
|         screenshot.screenshot(include_cursor, filename, | ||||
|             (obj, result, area, filenameUsed) => { | ||||
|                 this._onScreenshotComplete(obj, result, area, filenameUsed, | ||||
|                                            flash, invocation); | ||||
|             (o, res) => { | ||||
|                 try { | ||||
|                     let [result, area, filenameUsed] = | ||||
|                         screenshot.screenshot_finish(res); | ||||
|                     this._onScreenshotComplete(result, area, filenameUsed, | ||||
|                                                flash, invocation); | ||||
|                 } catch (e) { | ||||
|                     invocation.return_gerror (e); | ||||
|                 } | ||||
|             }); | ||||
|     }, | ||||
|  | ||||
| @@ -215,6 +240,34 @@ var ScreenshotService = new Lang.Class({ | ||||
|         let flashspot = new Flashspot({ x : x, y : y, width: width, height: height}); | ||||
|         flashspot.fire(); | ||||
|         invocation.return_value(null); | ||||
|     }, | ||||
|  | ||||
|     PickColorAsync(params, invocation) { | ||||
|         let pickPixel = new PickPixel(); | ||||
|         pickPixel.show(); | ||||
|         pickPixel.connect('finished', (pickPixel, coords) => { | ||||
|             if (coords) { | ||||
|                 let screenshot = this._createScreenshot(invocation, false); | ||||
|                 if (!screenshot) | ||||
|                     return; | ||||
|                 screenshot.pick_color(...coords, (o, res) => { | ||||
|                     let [success, color] = screenshot.pick_color_finish(res); | ||||
|                     let { red, green, blue } = color; | ||||
|                     let retval = GLib.Variant.new('(a{sv})', [{ | ||||
|                         color: GLib.Variant.new('(ddd)', [ | ||||
|                             red / 255.0, | ||||
|                             green / 255.0, | ||||
|                             blue / 255.0 | ||||
|                         ]) | ||||
|                     }]); | ||||
|                     this._removeShooterForSender(invocation.get_sender()); | ||||
|                     invocation.return_value(retval); | ||||
|                 }); | ||||
|             } else { | ||||
|                 invocation.return_error_literal(Gio.IOErrorEnum, Gio.IOErrorEnum.CANCELLED, | ||||
|                     "Operation was cancelled"); | ||||
|             } | ||||
|         }); | ||||
|     } | ||||
| }); | ||||
|  | ||||
| @@ -341,6 +394,54 @@ var SelectArea = new Lang.Class({ | ||||
| }); | ||||
| Signals.addSignalMethods(SelectArea.prototype); | ||||
|  | ||||
| var PickPixel = new Lang.Class({ | ||||
|     Name: 'PickPixel', | ||||
|  | ||||
|     _init() { | ||||
|         this._result = null; | ||||
|  | ||||
|         this._group = new St.Widget({ visible: false, | ||||
|                                       reactive: true }); | ||||
|         Main.uiGroup.add_actor(this._group); | ||||
|  | ||||
|         this._grabHelper = new GrabHelper.GrabHelper(this._group); | ||||
|  | ||||
|         this._group.connect('button-release-event', | ||||
|                             this._onButtonRelease.bind(this)); | ||||
|  | ||||
|         let constraint = new Clutter.BindConstraint({ source: global.stage, | ||||
|                                                       coordinate: Clutter.BindCoordinate.ALL }); | ||||
|         this._group.add_constraint(constraint); | ||||
|     }, | ||||
|  | ||||
|     show() { | ||||
|         if (!this._grabHelper.grab({ actor: this._group, | ||||
|                                      onUngrab: this._onUngrab.bind(this) })) | ||||
|             return; | ||||
|  | ||||
|         global.display.set_cursor(Meta.Cursor.CROSSHAIR); | ||||
|         Main.uiGroup.set_child_above_sibling(this._group, null); | ||||
|         this._group.visible = true; | ||||
|     }, | ||||
|  | ||||
|     _onButtonRelease(actor, event) { | ||||
|         this._result = event.get_coords(); | ||||
|         this._grabHelper.ungrab(); | ||||
|         return Clutter.EVENT_PROPAGATE; | ||||
|     }, | ||||
|  | ||||
|     _onUngrab() { | ||||
|         global.display.set_cursor(Meta.Cursor.DEFAULT); | ||||
|         this.emit('finished', this._result); | ||||
|  | ||||
|         GLib.idle_add(GLib.PRIORITY_DEFAULT, () => { | ||||
|             this._group.destroy(); | ||||
|             return GLib.SOURCE_REMOVE; | ||||
|         }); | ||||
|     } | ||||
| }); | ||||
| Signals.addSignalMethods(PickPixel.prototype); | ||||
|  | ||||
| var FLASHSPOT_ANIMATION_OUT_TIME = 0.5; // seconds | ||||
|  | ||||
| var Flashspot = new Lang.Class({ | ||||
|   | ||||
| @@ -68,19 +68,20 @@ function waitLeisure() { | ||||
|     return callback => { cb = callback; }; | ||||
| } | ||||
|  | ||||
| const PerfHelperIface = '<node> \ | ||||
| <interface name="org.gnome.Shell.PerfHelper"> \ | ||||
| <method name="CreateWindow"> \ | ||||
|     <arg type="i" direction="in" /> \ | ||||
|     <arg type="i" direction="in" /> \ | ||||
|     <arg type="b" direction="in" /> \ | ||||
|     <arg type="b" direction="in" /> \ | ||||
|     <arg type="b" direction="in" /> \ | ||||
| </method> \ | ||||
| <method name="WaitWindows" /> \ | ||||
| <method name="DestroyWindows" /> \ | ||||
| </interface> \ | ||||
| </node>'; | ||||
| const PerfHelperIface = ` | ||||
| <node> | ||||
| <interface name="org.gnome.Shell.PerfHelper"> | ||||
| <method name="CreateWindow"> | ||||
|     <arg type="i" direction="in" /> | ||||
|     <arg type="i" direction="in" /> | ||||
|     <arg type="b" direction="in" /> | ||||
|     <arg type="b" direction="in" /> | ||||
|     <arg type="b" direction="in" /> | ||||
| </method> | ||||
| <method name="WaitWindows" /> | ||||
| <method name="DestroyWindows" /> | ||||
| </interface> | ||||
| </node>`; | ||||
|  | ||||
| var PerfHelperProxy = Gio.DBusProxy.makeProxyWrapper(PerfHelperIface); | ||||
| function PerfHelper() { | ||||
|   | ||||
| @@ -117,6 +117,8 @@ function _loadMode(file, info) { | ||||
|     let fileContent, success, tag, newMode; | ||||
|     try { | ||||
|         [success, fileContent, tag] = file.load_contents(null); | ||||
|         if (fileContent instanceof Uint8Array) | ||||
|             fileContent = imports.byteArray.toString(fileContent); | ||||
|         newMode = JSON.parse(fileContent); | ||||
|     } catch(e) { | ||||
|         return; | ||||
|   | ||||
| @@ -14,70 +14,72 @@ const Main = imports.ui.main; | ||||
| const Screenshot = imports.ui.screenshot; | ||||
| const ViewSelector = imports.ui.viewSelector; | ||||
|  | ||||
| const GnomeShellIface = '<node> \ | ||||
| <interface name="org.gnome.Shell"> \ | ||||
| <method name="Eval"> \ | ||||
|     <arg type="s" direction="in" name="script" /> \ | ||||
|     <arg type="b" direction="out" name="success" /> \ | ||||
|     <arg type="s" direction="out" name="result" /> \ | ||||
| </method> \ | ||||
| <method name="FocusSearch"/> \ | ||||
| <method name="ShowOSD"> \ | ||||
|     <arg type="a{sv}" direction="in" name="params"/> \ | ||||
| </method> \ | ||||
| <method name="ShowMonitorLabels"> \ | ||||
|     <arg type="a{uv}" direction="in" name="params" /> \ | ||||
| </method> \ | ||||
| <method name="ShowMonitorLabels2"> \ | ||||
|     <arg type="a{sv}" direction="in" name="params" /> \ | ||||
| </method> \ | ||||
| <method name="HideMonitorLabels" /> \ | ||||
| <method name="FocusApp"> \ | ||||
|     <arg type="s" direction="in" name="id"/> \ | ||||
| </method> \ | ||||
| <method name="ShowApplications" /> \ | ||||
| <method name="GrabAccelerator"> \ | ||||
|     <arg type="s" direction="in" name="accelerator"/> \ | ||||
|     <arg type="u" direction="in" name="flags"/> \ | ||||
|     <arg type="u" direction="out" name="action"/> \ | ||||
| </method> \ | ||||
| <method name="GrabAccelerators"> \ | ||||
|     <arg type="a(su)" direction="in" name="accelerators"/> \ | ||||
|     <arg type="au" direction="out" name="actions"/> \ | ||||
| </method> \ | ||||
| <method name="UngrabAccelerator"> \ | ||||
|     <arg type="u" direction="in" name="action"/> \ | ||||
|     <arg type="b" direction="out" name="success"/> \ | ||||
| </method> \ | ||||
| <signal name="AcceleratorActivated"> \ | ||||
|     <arg name="action" type="u" /> \ | ||||
|     <arg name="parameters" type="a{sv}" /> \ | ||||
| </signal> \ | ||||
| <property name="Mode" type="s" access="read" /> \ | ||||
| <property name="OverviewActive" type="b" access="readwrite" /> \ | ||||
| <property name="ShellVersion" type="s" access="read" /> \ | ||||
| </interface> \ | ||||
| </node>'; | ||||
| const GnomeShellIface = ` | ||||
| <node> | ||||
| <interface name="org.gnome.Shell"> | ||||
| <method name="Eval"> | ||||
|     <arg type="s" direction="in" name="script" /> | ||||
|     <arg type="b" direction="out" name="success" /> | ||||
|     <arg type="s" direction="out" name="result" /> | ||||
| </method> | ||||
| <method name="FocusSearch"/> | ||||
| <method name="ShowOSD"> | ||||
|     <arg type="a{sv}" direction="in" name="params"/> | ||||
| </method> | ||||
| <method name="ShowMonitorLabels"> | ||||
|     <arg type="a{uv}" direction="in" name="params" /> | ||||
| </method> | ||||
| <method name="ShowMonitorLabels2"> | ||||
|     <arg type="a{sv}" direction="in" name="params" /> | ||||
| </method> | ||||
| <method name="HideMonitorLabels" /> | ||||
| <method name="FocusApp"> | ||||
|     <arg type="s" direction="in" name="id"/> | ||||
| </method> | ||||
| <method name="ShowApplications" /> | ||||
| <method name="GrabAccelerator"> | ||||
|     <arg type="s" direction="in" name="accelerator"/> | ||||
|     <arg type="u" direction="in" name="flags"/> | ||||
|     <arg type="u" direction="out" name="action"/> | ||||
| </method> | ||||
| <method name="GrabAccelerators"> | ||||
|     <arg type="a(su)" direction="in" name="accelerators"/> | ||||
|     <arg type="au" direction="out" name="actions"/> | ||||
| </method> | ||||
| <method name="UngrabAccelerator"> | ||||
|     <arg type="u" direction="in" name="action"/> | ||||
|     <arg type="b" direction="out" name="success"/> | ||||
| </method> | ||||
| <signal name="AcceleratorActivated"> | ||||
|     <arg name="action" type="u" /> | ||||
|     <arg name="parameters" type="a{sv}" /> | ||||
| </signal> | ||||
| <property name="Mode" type="s" access="read" /> | ||||
| <property name="OverviewActive" type="b" access="readwrite" /> | ||||
| <property name="ShellVersion" type="s" access="read" /> | ||||
| </interface> | ||||
| </node>`; | ||||
|  | ||||
| const ScreenSaverIface = '<node> \ | ||||
| <interface name="org.gnome.ScreenSaver"> \ | ||||
| <method name="Lock"> \ | ||||
| </method> \ | ||||
| <method name="GetActive"> \ | ||||
|     <arg name="active" direction="out" type="b" /> \ | ||||
| </method> \ | ||||
| <method name="SetActive"> \ | ||||
|     <arg name="value" direction="in" type="b" /> \ | ||||
| </method> \ | ||||
| <method name="GetActiveTime"> \ | ||||
|     <arg name="value" direction="out" type="u" /> \ | ||||
| </method> \ | ||||
| <signal name="ActiveChanged"> \ | ||||
|     <arg name="new_value" type="b" /> \ | ||||
| </signal> \ | ||||
| <signal name="WakeUpScreen" /> \ | ||||
| </interface> \ | ||||
| </node>'; | ||||
| const ScreenSaverIface = ` | ||||
| <node> | ||||
| <interface name="org.gnome.ScreenSaver"> | ||||
| <method name="Lock"> | ||||
| </method> | ||||
| <method name="GetActive"> | ||||
|     <arg name="active" direction="out" type="b" /> | ||||
| </method> | ||||
| <method name="SetActive"> | ||||
|     <arg name="value" direction="in" type="b" /> | ||||
| </method> | ||||
| <method name="GetActiveTime"> | ||||
|     <arg name="value" direction="out" type="u" /> | ||||
| </method> | ||||
| <signal name="ActiveChanged"> | ||||
|     <arg name="new_value" type="b" /> | ||||
| </signal> | ||||
| <signal name="WakeUpScreen" /> | ||||
| </interface> | ||||
| </node>`; | ||||
|  | ||||
| var GnomeShell = new Lang.Class({ | ||||
|     Name: 'GnomeShellDBus', | ||||
| @@ -145,15 +147,20 @@ var GnomeShell = new Lang.Class({ | ||||
|         for (let param in params) | ||||
|             params[param] = params[param].deep_unpack(); | ||||
|  | ||||
|         let monitorIndex = params['monitor'] || -1; | ||||
|         let label = params['label'] || undefined; | ||||
|         let level = params['level'] || undefined; | ||||
|         let { monitor: monitorIndex, | ||||
|               label, | ||||
|               level, | ||||
|               max_level: maxLevel, | ||||
|               icon: serializedIcon } = params; | ||||
|  | ||||
|         if (monitorIndex === undefined) | ||||
|             monitorIndex = -1; | ||||
|  | ||||
|         let icon = null; | ||||
|         if (params['icon']) | ||||
|             icon = Gio.Icon.new_for_string(params['icon']); | ||||
|         if (serializedIcon) | ||||
|             icon = Gio.Icon.new_for_string(serializedIcon); | ||||
|  | ||||
|         Main.osdWindowManager.show(monitorIndex, icon, label, level); | ||||
|         Main.osdWindowManager.show(monitorIndex, icon, label, level, maxLevel); | ||||
|     }, | ||||
|  | ||||
|     FocusApp(id) { | ||||
| @@ -288,43 +295,44 @@ var GnomeShell = new Lang.Class({ | ||||
|     ShellVersion: Config.PACKAGE_VERSION | ||||
| }); | ||||
|  | ||||
| const GnomeShellExtensionsIface = '<node> \ | ||||
| <interface name="org.gnome.Shell.Extensions"> \ | ||||
| <method name="ListExtensions"> \ | ||||
|     <arg type="a{sa{sv}}" direction="out" name="extensions" /> \ | ||||
| </method> \ | ||||
| <method name="GetExtensionInfo"> \ | ||||
|     <arg type="s" direction="in" name="extension" /> \ | ||||
|     <arg type="a{sv}" direction="out" name="info" /> \ | ||||
| </method> \ | ||||
| <method name="GetExtensionErrors"> \ | ||||
|     <arg type="s" direction="in" name="extension" /> \ | ||||
|     <arg type="as" direction="out" name="errors" /> \ | ||||
| </method> \ | ||||
| <signal name="ExtensionStatusChanged"> \ | ||||
|     <arg type="s" name="uuid"/> \ | ||||
|     <arg type="i" name="state"/> \ | ||||
|     <arg type="s" name="error"/> \ | ||||
| </signal> \ | ||||
| <method name="InstallRemoteExtension"> \ | ||||
|     <arg type="s" direction="in" name="uuid"/> \ | ||||
|     <arg type="s" direction="out" name="result"/> \ | ||||
| </method> \ | ||||
| <method name="UninstallExtension"> \ | ||||
|     <arg type="s" direction="in" name="uuid"/> \ | ||||
|     <arg type="b" direction="out" name="success"/> \ | ||||
| </method> \ | ||||
| <method name="LaunchExtensionPrefs"> \ | ||||
|     <arg type="s" direction="in" name="uuid"/> \ | ||||
| </method> \ | ||||
| <method name="ReloadExtension"> \ | ||||
|     <arg type="s" direction="in" name="uuid"/> \ | ||||
| </method> \ | ||||
| <method name="CheckForUpdates"> \ | ||||
| </method> \ | ||||
| <property name="ShellVersion" type="s" access="read" /> \ | ||||
| </interface> \ | ||||
| </node>'; | ||||
| const GnomeShellExtensionsIface = ` | ||||
| <node> | ||||
| <interface name="org.gnome.Shell.Extensions"> | ||||
| <method name="ListExtensions"> | ||||
|     <arg type="a{sa{sv}}" direction="out" name="extensions" /> | ||||
| </method> | ||||
| <method name="GetExtensionInfo"> | ||||
|     <arg type="s" direction="in" name="extension" /> | ||||
|     <arg type="a{sv}" direction="out" name="info" /> | ||||
| </method> | ||||
| <method name="GetExtensionErrors"> | ||||
|     <arg type="s" direction="in" name="extension" /> | ||||
|     <arg type="as" direction="out" name="errors" /> | ||||
| </method> | ||||
| <signal name="ExtensionStatusChanged"> | ||||
|     <arg type="s" name="uuid"/> | ||||
|     <arg type="i" name="state"/> | ||||
|     <arg type="s" name="error"/> | ||||
| </signal> | ||||
| <method name="InstallRemoteExtension"> | ||||
|     <arg type="s" direction="in" name="uuid"/> | ||||
|     <arg type="s" direction="out" name="result"/> | ||||
| </method> | ||||
| <method name="UninstallExtension"> | ||||
|     <arg type="s" direction="in" name="uuid"/> | ||||
|     <arg type="b" direction="out" name="success"/> | ||||
| </method> | ||||
| <method name="LaunchExtensionPrefs"> | ||||
|     <arg type="s" direction="in" name="uuid"/> | ||||
| </method> | ||||
| <method name="ReloadExtension"> | ||||
|     <arg type="s" direction="in" name="uuid"/> | ||||
| </method> | ||||
| <method name="CheckForUpdates"> | ||||
| </method> | ||||
| <property name="ShellVersion" type="s" access="read" /> | ||||
| </interface> | ||||
| </node>`; | ||||
|  | ||||
| var GnomeShellExtensions = new Lang.Class({ | ||||
|     Name: 'GnomeShellExtensionsDBus', | ||||
|   | ||||
| @@ -436,38 +436,39 @@ var ShellProcessesDialog = new Lang.Class({ | ||||
| }); | ||||
| Signals.addSignalMethods(ShellProcessesDialog.prototype); | ||||
|  | ||||
| const GnomeShellMountOpIface = '<node> \ | ||||
| <interface name="org.Gtk.MountOperationHandler"> \ | ||||
| <method name="AskPassword"> \ | ||||
|     <arg type="s" direction="in" name="object_id"/> \ | ||||
|     <arg type="s" direction="in" name="message"/> \ | ||||
|     <arg type="s" direction="in" name="icon_name"/> \ | ||||
|     <arg type="s" direction="in" name="default_user"/> \ | ||||
|     <arg type="s" direction="in" name="default_domain"/> \ | ||||
|     <arg type="u" direction="in" name="flags"/> \ | ||||
|     <arg type="u" direction="out" name="response"/> \ | ||||
|     <arg type="a{sv}" direction="out" name="response_details"/> \ | ||||
| </method> \ | ||||
| <method name="AskQuestion"> \ | ||||
|     <arg type="s" direction="in" name="object_id"/> \ | ||||
|     <arg type="s" direction="in" name="message"/> \ | ||||
|     <arg type="s" direction="in" name="icon_name"/> \ | ||||
|     <arg type="as" direction="in" name="choices"/> \ | ||||
|     <arg type="u" direction="out" name="response"/> \ | ||||
|     <arg type="a{sv}" direction="out" name="response_details"/> \ | ||||
| </method> \ | ||||
| <method name="ShowProcesses"> \ | ||||
|     <arg type="s" direction="in" name="object_id"/> \ | ||||
|     <arg type="s" direction="in" name="message"/> \ | ||||
|     <arg type="s" direction="in" name="icon_name"/> \ | ||||
|     <arg type="ai" direction="in" name="application_pids"/> \ | ||||
|     <arg type="as" direction="in" name="choices"/> \ | ||||
|     <arg type="u" direction="out" name="response"/> \ | ||||
|     <arg type="a{sv}" direction="out" name="response_details"/> \ | ||||
| </method> \ | ||||
| <method name="Close"/> \ | ||||
| </interface> \ | ||||
| </node>'; | ||||
| const GnomeShellMountOpIface = ` | ||||
| <node> | ||||
| <interface name="org.Gtk.MountOperationHandler"> | ||||
| <method name="AskPassword"> | ||||
|     <arg type="s" direction="in" name="object_id"/> | ||||
|     <arg type="s" direction="in" name="message"/> | ||||
|     <arg type="s" direction="in" name="icon_name"/> | ||||
|     <arg type="s" direction="in" name="default_user"/> | ||||
|     <arg type="s" direction="in" name="default_domain"/> | ||||
|     <arg type="u" direction="in" name="flags"/> | ||||
|     <arg type="u" direction="out" name="response"/> | ||||
|     <arg type="a{sv}" direction="out" name="response_details"/> | ||||
| </method> | ||||
| <method name="AskQuestion"> | ||||
|     <arg type="s" direction="in" name="object_id"/> | ||||
|     <arg type="s" direction="in" name="message"/> | ||||
|     <arg type="s" direction="in" name="icon_name"/> | ||||
|     <arg type="as" direction="in" name="choices"/> | ||||
|     <arg type="u" direction="out" name="response"/> | ||||
|     <arg type="a{sv}" direction="out" name="response_details"/> | ||||
| </method> | ||||
| <method name="ShowProcesses"> | ||||
|     <arg type="s" direction="in" name="object_id"/> | ||||
|     <arg type="s" direction="in" name="message"/> | ||||
|     <arg type="s" direction="in" name="icon_name"/> | ||||
|     <arg type="ai" direction="in" name="application_pids"/> | ||||
|     <arg type="as" direction="in" name="choices"/> | ||||
|     <arg type="u" direction="out" name="response"/> | ||||
|     <arg type="a{sv}" direction="out" name="response_details"/> | ||||
| </method> | ||||
| <method name="Close"/> | ||||
| </interface> | ||||
| </node>`; | ||||
|  | ||||
| var ShellMountOperationType = { | ||||
|     NONE: 0, | ||||
|   | ||||
							
								
								
									
										109
									
								
								js/ui/slider.js
									
									
									
									
									
								
							
							
						
						
									
										109
									
								
								js/ui/slider.js
									
									
									
									
									
								
							| @@ -7,55 +7,38 @@ const Lang = imports.lang; | ||||
| const St = imports.gi.St; | ||||
| const Signals = imports.signals; | ||||
|  | ||||
| const BarLevel = imports.ui.barLevel; | ||||
|  | ||||
| var SLIDER_SCROLL_STEP = 0.02; /* Slider scrolling step in % */ | ||||
|  | ||||
| var Slider = new Lang.Class({ | ||||
|     Name: "Slider", | ||||
|     Extends: BarLevel.BarLevel, | ||||
|  | ||||
|     _init(value) { | ||||
|         if (isNaN(value)) | ||||
|             // Avoid spreading NaNs around | ||||
|             throw TypeError('The slider value must be a number'); | ||||
|         this._value = Math.max(Math.min(value, 1), 0); | ||||
|         this._sliderWidth = 0; | ||||
|         let params = { | ||||
|             styleClass: 'slider', | ||||
|             canFocus: true, | ||||
|             reactive: true, | ||||
|             accessibleRole: Atk.Role.SLIDER, | ||||
|         } | ||||
|         this.parent(value, params) | ||||
|  | ||||
|         this.actor = new St.DrawingArea({ style_class: 'slider', | ||||
|                                           can_focus: true, | ||||
|                                           reactive: true, | ||||
|                                           accessible_role: Atk.Role.SLIDER }); | ||||
|         this.actor.connect('repaint', this._sliderRepaint.bind(this)); | ||||
|         this.actor.connect('button-press-event', this._startDragging.bind(this)); | ||||
|         this.actor.connect('touch-event', this._touchDragging.bind(this)); | ||||
|         this.actor.connect('scroll-event', this._onScrollEvent.bind(this)); | ||||
|         this.actor.connect('key-press-event', this.onKeyPressEvent.bind(this)); | ||||
|         this.actor.connect('allocation-changed', (actor, box) => { | ||||
|             this._sliderWidth = box.get_width(); | ||||
|         }); | ||||
|  | ||||
|         this._releaseId = this._motionId = 0; | ||||
|         this._dragging = false; | ||||
|  | ||||
|         this._customAccessible = St.GenericAccessible.new_for_actor(this.actor); | ||||
|         this.actor.set_accessible(this._customAccessible); | ||||
|  | ||||
|         this._customAccessible.connect('get-current-value', this._getCurrentValue.bind(this)); | ||||
|         this._customAccessible.connect('get-minimum-value', this._getMinimumValue.bind(this)); | ||||
|         this._customAccessible.connect('get-maximum-value', this._getMaximumValue.bind(this)); | ||||
|         this._customAccessible.connect('get-minimum-increment', this._getMinimumIncrement.bind(this)); | ||||
|         this._customAccessible.connect('set-current-value', this._setCurrentValue.bind(this)); | ||||
|  | ||||
|         this.connect('value-changed', this._valueChanged.bind(this)); | ||||
|     }, | ||||
|  | ||||
|     setValue(value) { | ||||
|         if (isNaN(value)) | ||||
|             throw TypeError('The slider value must be a number'); | ||||
|     _barLevelRepaint(area) { | ||||
|         this.parent(area); | ||||
|  | ||||
|         this._value = Math.max(Math.min(value, 1), 0); | ||||
|         this.actor.queue_repaint(); | ||||
|     }, | ||||
|  | ||||
|     _sliderRepaint(area) { | ||||
|         // Add handle | ||||
|         let cr = area.get_context(); | ||||
|         let themeNode = area.get_theme_node(); | ||||
|         let [width, height] = area.get_surface_size(); | ||||
| @@ -66,41 +49,9 @@ var Slider = new Lang.Class({ | ||||
|         let [hasHandleColor, handleBorderColor] = | ||||
|             themeNode.lookup_color('-slider-handle-border-color', false); | ||||
|  | ||||
|         let sliderHeight = themeNode.get_length('-slider-height'); | ||||
|  | ||||
|         let sliderBorderWidth = themeNode.get_length('-slider-border-width'); | ||||
|         let sliderBorderRadius = Math.min(width, sliderHeight) / 2; | ||||
|  | ||||
|         let sliderBorderColor = themeNode.get_color('-slider-border-color'); | ||||
|         let sliderColor = themeNode.get_color('-slider-background-color'); | ||||
|  | ||||
|         let sliderActiveBorderColor = themeNode.get_color('-slider-active-border-color'); | ||||
|         let sliderActiveColor = themeNode.get_color('-slider-active-background-color'); | ||||
|  | ||||
|         const TAU = Math.PI * 2; | ||||
|  | ||||
|         let handleX = handleRadius + (width - 2 * handleRadius) * this._value; | ||||
|  | ||||
|         cr.arc(sliderBorderRadius + sliderBorderWidth, height / 2, sliderBorderRadius, TAU * 1/4, TAU * 3/4); | ||||
|         cr.lineTo(handleX, (height - sliderHeight) / 2); | ||||
|         cr.lineTo(handleX, (height + sliderHeight) / 2); | ||||
|         cr.lineTo(sliderBorderRadius + sliderBorderWidth, (height + sliderHeight) / 2); | ||||
|         Clutter.cairo_set_source_color(cr, sliderActiveColor); | ||||
|         cr.fillPreserve(); | ||||
|         Clutter.cairo_set_source_color(cr, sliderActiveBorderColor); | ||||
|         cr.setLineWidth(sliderBorderWidth); | ||||
|         cr.stroke(); | ||||
|  | ||||
|         cr.arc(width - sliderBorderRadius - sliderBorderWidth, height / 2, sliderBorderRadius, TAU * 3/4, TAU * 1/4); | ||||
|         cr.lineTo(handleX, (height + sliderHeight) / 2); | ||||
|         cr.lineTo(handleX, (height - sliderHeight) / 2); | ||||
|         cr.lineTo(width - sliderBorderRadius - sliderBorderWidth, (height - sliderHeight) / 2); | ||||
|         Clutter.cairo_set_source_color(cr, sliderColor); | ||||
|         cr.fillPreserve(); | ||||
|         Clutter.cairo_set_source_color(cr, sliderBorderColor); | ||||
|         cr.setLineWidth(sliderBorderWidth); | ||||
|         cr.stroke(); | ||||
|  | ||||
|         let handleX = handleRadius + (width - 2 * handleRadius) * this._value / this._maxValue; | ||||
|         let handleY = height / 2; | ||||
|  | ||||
|         let color = themeNode.get_foreground_color(); | ||||
| @@ -208,7 +159,7 @@ var Slider = new Lang.Class({ | ||||
|             delta = -dy * SLIDER_SCROLL_STEP; | ||||
|         } | ||||
|  | ||||
|         this._value = Math.min(Math.max(0, this._value + delta), 1); | ||||
|         this._value = Math.min(Math.max(0, this._value + delta), this._maxValue); | ||||
|  | ||||
|         this.actor.queue_repaint(); | ||||
|         this.emit('value-changed', this._value); | ||||
| @@ -230,7 +181,7 @@ var Slider = new Lang.Class({ | ||||
|         let key = event.get_key_symbol(); | ||||
|         if (key == Clutter.KEY_Right || key == Clutter.KEY_Left) { | ||||
|             let delta = key == Clutter.KEY_Right ? 0.1 : -0.1; | ||||
|             this._value = Math.max(0, Math.min(this._value + delta, 1)); | ||||
|             this._value = Math.max(0, Math.min(this._value + delta, this._maxValue)); | ||||
|             this.actor.queue_repaint(); | ||||
|             this.emit('drag-begin'); | ||||
|             this.emit('value-changed', this._value); | ||||
| @@ -246,7 +197,7 @@ var Slider = new Lang.Class({ | ||||
|         relX = absX - sliderX; | ||||
|         relY = absY - sliderY; | ||||
|  | ||||
|         let width = this._sliderWidth; | ||||
|         let width = this._barLevelWidth; | ||||
|         let handleRadius = this.actor.get_theme_node().get_length('-slider-handle-radius'); | ||||
|  | ||||
|         let newvalue; | ||||
| @@ -256,38 +207,14 @@ var Slider = new Lang.Class({ | ||||
|             newvalue = 1; | ||||
|         else | ||||
|             newvalue = (relX - handleRadius) / (width - 2 * handleRadius); | ||||
|         this._value = newvalue; | ||||
|         this._value = newvalue * this._maxValue; | ||||
|         this.actor.queue_repaint(); | ||||
|         this.emit('value-changed', this._value); | ||||
|     }, | ||||
|  | ||||
|     _getCurrentValue(actor) { | ||||
|         return this._value; | ||||
|     }, | ||||
|  | ||||
|     _getMinimumValue(actor) { | ||||
|         return 0; | ||||
|     }, | ||||
|  | ||||
|     _getMaximumValue(actor) { | ||||
|         return 1; | ||||
|     }, | ||||
|  | ||||
|     _getMinimumIncrement(actor) { | ||||
|         return 0.1; | ||||
|     }, | ||||
|  | ||||
|     _setCurrentValue(actor, value) { | ||||
|         this._value = value; | ||||
|     }, | ||||
|  | ||||
|     _valueChanged(slider, value, property) { | ||||
|         this._customAccessible.notify ("accessible-value"); | ||||
|     }, | ||||
|  | ||||
|     get value() { | ||||
|         return this._value; | ||||
|     } | ||||
| }); | ||||
|  | ||||
| Signals.addSignalMethods(Slider.prototype); | ||||
|   | ||||
| @@ -11,13 +11,14 @@ const PopupMenu = imports.ui.popupMenu; | ||||
| const BUS_NAME = 'org.gnome.SettingsDaemon.Rfkill'; | ||||
| const OBJECT_PATH = '/org/gnome/SettingsDaemon/Rfkill'; | ||||
|  | ||||
| const RfkillManagerInterface = '<node> \ | ||||
| <interface name="org.gnome.SettingsDaemon.Rfkill"> \ | ||||
| <property name="BluetoothAirplaneMode" type="b" access="readwrite" /> \ | ||||
| <property name="BluetoothHasAirplaneMode" type="b" access="read" /> \ | ||||
| <property name="BluetoothHardwareAirplaneMode" type="b" access="readwrite" /> \ | ||||
| </interface> \ | ||||
| </node>'; | ||||
| const RfkillManagerInterface = ` | ||||
| <node> | ||||
| <interface name="org.gnome.SettingsDaemon.Rfkill"> | ||||
| <property name="BluetoothAirplaneMode" type="b" access="readwrite" /> | ||||
| <property name="BluetoothHasAirplaneMode" type="b" access="read" /> | ||||
| <property name="BluetoothHardwareAirplaneMode" type="b" access="readwrite" /> | ||||
| </interface> | ||||
| </node>`; | ||||
|  | ||||
| const RfkillManagerProxy = Gio.DBusProxy.makeProxyWrapper(RfkillManagerInterface); | ||||
|  | ||||
|   | ||||
| @@ -11,11 +11,12 @@ const Slider = imports.ui.slider; | ||||
| const BUS_NAME = 'org.gnome.SettingsDaemon.Power'; | ||||
| const OBJECT_PATH = '/org/gnome/SettingsDaemon/Power'; | ||||
|  | ||||
| const BrightnessInterface = '<node> \ | ||||
| <interface name="org.gnome.SettingsDaemon.Power.Screen"> \ | ||||
| <property name="Brightness" type="i" access="readwrite"/> \ | ||||
| </interface> \ | ||||
| </node>'; | ||||
| const BrightnessInterface = ` | ||||
| <node> | ||||
| <interface name="org.gnome.SettingsDaemon.Power.Screen"> | ||||
| <property name="Brightness" type="i" access="readwrite"/> | ||||
| </interface> | ||||
| </node>`; | ||||
|  | ||||
| const BrightnessProxy = Gio.DBusProxy.makeProxyWrapper(BrightnessInterface); | ||||
|  | ||||
|   | ||||
| @@ -40,29 +40,31 @@ function accuracyLevelToString(accuracyLevel) { | ||||
|     return 'NONE'; | ||||
| } | ||||
|  | ||||
| var GeoclueIface = '<node> \ | ||||
|   <interface name="org.freedesktop.GeoClue2.Manager"> \ | ||||
|     <property name="InUse" type="b" access="read"/> \ | ||||
|     <property name="AvailableAccuracyLevel" type="u" access="read"/> \ | ||||
|     <method name="AddAgent"> \ | ||||
|       <arg name="id" type="s" direction="in"/> \ | ||||
|     </method> \ | ||||
|   </interface> \ | ||||
| </node>'; | ||||
| var GeoclueIface = ` | ||||
| <node> | ||||
|   <interface name="org.freedesktop.GeoClue2.Manager"> | ||||
|     <property name="InUse" type="b" access="read"/> | ||||
|     <property name="AvailableAccuracyLevel" type="u" access="read"/> | ||||
|     <method name="AddAgent"> | ||||
|       <arg name="id" type="s" direction="in"/> | ||||
|     </method> | ||||
|   </interface> | ||||
| </node>`; | ||||
|  | ||||
| const GeoclueManager = Gio.DBusProxy.makeProxyWrapper(GeoclueIface); | ||||
|  | ||||
| var AgentIface = '<node> \ | ||||
|   <interface name="org.freedesktop.GeoClue2.Agent"> \ | ||||
|     <property name="MaxAccuracyLevel" type="u" access="read"/> \ | ||||
|     <method name="AuthorizeApp"> \ | ||||
|       <arg name="desktop_id" type="s" direction="in"/> \ | ||||
|       <arg name="req_accuracy_level" type="u" direction="in"/> \ | ||||
|       <arg name="authorized" type="b" direction="out"/> \ | ||||
|       <arg name="allowed_accuracy_level" type="u" direction="out"/> \ | ||||
|     </method> \ | ||||
|   </interface> \ | ||||
| </node>'; | ||||
| var AgentIface = ` | ||||
| <node> | ||||
|   <interface name="org.freedesktop.GeoClue2.Agent"> | ||||
|     <property name="MaxAccuracyLevel" type="u" access="read"/> | ||||
|     <method name="AuthorizeApp"> | ||||
|       <arg name="desktop_id" type="s" direction="in"/> | ||||
|       <arg name="req_accuracy_level" type="u" direction="in"/> | ||||
|       <arg name="authorized" type="b" direction="out"/> | ||||
|       <arg name="allowed_accuracy_level" type="u" direction="out"/> | ||||
|     </method> | ||||
|   </interface> | ||||
| </node>`; | ||||
|  | ||||
| var Indicator = new Lang.Class({ | ||||
|     Name: 'LocationIndicator', | ||||
|   | ||||
| @@ -51,25 +51,26 @@ var PortalHelperResult = { | ||||
|     RECHECK: 2 | ||||
| }; | ||||
|  | ||||
| const PortalHelperIface = '<node> \ | ||||
| <interface name="org.gnome.Shell.PortalHelper"> \ | ||||
| <method name="Authenticate"> \ | ||||
|     <arg type="o" direction="in" name="connection" /> \ | ||||
|     <arg type="s" direction="in" name="url" /> \ | ||||
|     <arg type="u" direction="in" name="timestamp" /> \ | ||||
| </method> \ | ||||
| <method name="Close"> \ | ||||
|     <arg type="o" direction="in" name="connection" /> \ | ||||
| </method> \ | ||||
| <method name="Refresh"> \ | ||||
|     <arg type="o" direction="in" name="connection" /> \ | ||||
| </method> \ | ||||
| <signal name="Done"> \ | ||||
|     <arg type="o" name="connection" /> \ | ||||
|     <arg type="u" name="result" /> \ | ||||
| </signal> \ | ||||
| </interface> \ | ||||
| </node>'; | ||||
| const PortalHelperIface = ` | ||||
| <node> | ||||
| <interface name="org.gnome.Shell.PortalHelper"> | ||||
| <method name="Authenticate"> | ||||
|     <arg type="o" direction="in" name="connection" /> | ||||
|     <arg type="s" direction="in" name="url" /> | ||||
|     <arg type="u" direction="in" name="timestamp" /> | ||||
| </method> | ||||
| <method name="Close"> | ||||
|     <arg type="o" direction="in" name="connection" /> | ||||
| </method> | ||||
| <method name="Refresh"> | ||||
|     <arg type="o" direction="in" name="connection" /> | ||||
| </method> | ||||
| <signal name="Done"> | ||||
|     <arg type="o" name="connection" /> | ||||
|     <arg type="u" name="result" /> | ||||
| </signal> | ||||
| </interface> | ||||
| </node>`; | ||||
| const PortalHelperProxy = Gio.DBusProxy.makeProxyWrapper(PortalHelperIface); | ||||
|  | ||||
| function signalToIcon(value) { | ||||
|   | ||||
| @@ -10,12 +10,13 @@ const PopupMenu = imports.ui.popupMenu; | ||||
| const BUS_NAME = 'org.gnome.SettingsDaemon.Color'; | ||||
| const OBJECT_PATH = '/org/gnome/SettingsDaemon/Color'; | ||||
|  | ||||
| const ColorInterface = '<node> \ | ||||
| <interface name="org.gnome.SettingsDaemon.Color"> \ | ||||
|   <property name="DisabledUntilTomorrow" type="b" access="readwrite"/> \ | ||||
|   <property name="NightLightActive" type="b" access="read"/> \ | ||||
| </interface> \ | ||||
| </node>'; | ||||
| const ColorInterface = ` | ||||
| <node> | ||||
| <interface name="org.gnome.SettingsDaemon.Color"> | ||||
|   <property name="DisabledUntilTomorrow" type="b" access="readwrite"/> | ||||
|   <property name="NightLightActive" type="b" access="read"/> | ||||
| </interface> | ||||
| </node>`; | ||||
|  | ||||
| const ColorProxy = Gio.DBusProxy.makeProxyWrapper(ColorInterface); | ||||
|  | ||||
|   | ||||
| @@ -13,17 +13,18 @@ const PopupMenu = imports.ui.popupMenu; | ||||
| const BUS_NAME = 'org.freedesktop.UPower'; | ||||
| const OBJECT_PATH = '/org/freedesktop/UPower/devices/DisplayDevice'; | ||||
|  | ||||
| const DisplayDeviceInterface = '<node> \ | ||||
| <interface name="org.freedesktop.UPower.Device"> \ | ||||
|   <property name="Type" type="u" access="read"/> \ | ||||
|   <property name="State" type="u" access="read"/> \ | ||||
|   <property name="Percentage" type="d" access="read"/> \ | ||||
|   <property name="TimeToEmpty" type="x" access="read"/> \ | ||||
|   <property name="TimeToFull" type="x" access="read"/> \ | ||||
|   <property name="IsPresent" type="b" access="read"/> \ | ||||
|   <property name="IconName" type="s" access="read"/> \ | ||||
| </interface> \ | ||||
| </node>'; | ||||
| const DisplayDeviceInterface = ` | ||||
| <node> | ||||
| <interface name="org.freedesktop.UPower.Device"> | ||||
|   <property name="Type" type="u" access="read"/> | ||||
|   <property name="State" type="u" access="read"/> | ||||
|   <property name="Percentage" type="d" access="read"/> | ||||
|   <property name="TimeToEmpty" type="x" access="read"/> | ||||
|   <property name="TimeToFull" type="x" access="read"/> | ||||
|   <property name="IsPresent" type="b" access="read"/> | ||||
|   <property name="IconName" type="s" access="read"/> | ||||
| </interface> | ||||
| </node>`; | ||||
|  | ||||
| const PowerManagerProxy = Gio.DBusProxy.makeProxyWrapper(DisplayDeviceInterface); | ||||
|  | ||||
|   | ||||
							
								
								
									
										81
									
								
								js/ui/status/remoteAccess.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										81
									
								
								js/ui/status/remoteAccess.js
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,81 @@ | ||||
| // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*- | ||||
|  | ||||
| const Lang = imports.lang; | ||||
| const Meta = imports.gi.Meta; | ||||
|  | ||||
| const PanelMenu = imports.ui.panelMenu; | ||||
| const PopupMenu = imports.ui.popupMenu; | ||||
|  | ||||
| var RemoteAccessApplet = new Lang.Class({ | ||||
|     Name: 'RemoteAccessApplet', | ||||
|     Extends: PanelMenu.SystemIndicator, | ||||
|  | ||||
|     _init() { | ||||
|         this.parent(); | ||||
|  | ||||
|         let backend = Meta.get_backend(); | ||||
|         let controller = backend.get_remote_access_controller(); | ||||
|  | ||||
|         if (!controller) | ||||
|             return; | ||||
|  | ||||
|         // We can't possibly know about all types of screen sharing on X11, so | ||||
|         // showing these controls on X11 might give a false sense of security. | ||||
|         // Thus, only enable these controls when using Wayland, where we are | ||||
|         // in control of sharing. | ||||
|         if (!Meta.is_wayland_compositor()) | ||||
|             return; | ||||
|  | ||||
|         this._handles = new Set(); | ||||
|         this._indicator = null; | ||||
|         this._menuSection = null; | ||||
|  | ||||
|         controller.connect('new-handle', (controller, handle) => { | ||||
|             this._onNewHandle(handle); | ||||
|         }); | ||||
|     }, | ||||
|  | ||||
|     _ensureControls() { | ||||
|         if (this._indicator) | ||||
|             return; | ||||
|  | ||||
|         this._indicator = this._addIndicator(); | ||||
|         this._indicator.icon_name = 'screen-shared-symbolic'; | ||||
|         this._indicator.add_style_class_name('remote-access-indicator'); | ||||
|         this._item = | ||||
|             new PopupMenu.PopupSubMenuMenuItem(_("Screen is Being Shared"), | ||||
|                                                true); | ||||
|         this._item.menu.addAction(_("Turn off"), | ||||
|                                   () => { | ||||
|                                       for (let handle of this._handles) | ||||
|                                             handle.stop(); | ||||
|                                   }); | ||||
|         this._item.icon.icon_name = 'screen-shared-symbolic'; | ||||
|         this.menu.addMenuItem(this._item); | ||||
|     }, | ||||
|  | ||||
|     _sync() { | ||||
|         if (this._handles.size == 0) { | ||||
|             this._indicator.visible = false; | ||||
|             this._item.actor.visible = false; | ||||
|         } else { | ||||
|             this._indicator.visible = true; | ||||
|             this._item.actor.visible = true; | ||||
|         } | ||||
|     }, | ||||
|  | ||||
|     _onStopped(handle) { | ||||
|         this._handles.delete(handle); | ||||
|         this._sync(); | ||||
|     }, | ||||
|  | ||||
|     _onNewHandle(handle) { | ||||
|         this._handles.add(handle); | ||||
|         handle.connect('stopped', this._onStopped.bind(this)); | ||||
|  | ||||
|         if (this._handles.size == 1) { | ||||
|             this._ensureControls(); | ||||
|             this._sync(); | ||||
|         } | ||||
|     }, | ||||
| }); | ||||
| @@ -11,13 +11,14 @@ const PopupMenu = imports.ui.popupMenu; | ||||
| const BUS_NAME = 'org.gnome.SettingsDaemon.Rfkill'; | ||||
| const OBJECT_PATH = '/org/gnome/SettingsDaemon/Rfkill'; | ||||
|  | ||||
| const RfkillManagerInterface = '<node> \ | ||||
| <interface name="org.gnome.SettingsDaemon.Rfkill"> \ | ||||
| <property name="AirplaneMode" type="b" access="readwrite" /> \ | ||||
| <property name="HardwareAirplaneMode" type="b" access="read" /> \ | ||||
| <property name="ShouldShowAirplaneMode" type="b" access="read" /> \ | ||||
| </interface> \ | ||||
| </node>'; | ||||
| const RfkillManagerInterface = ` | ||||
| <node> | ||||
| <interface name="org.gnome.SettingsDaemon.Rfkill"> | ||||
| <property name="AirplaneMode" type="b" access="readwrite" /> | ||||
| <property name="HardwareAirplaneMode" type="b" access="read" /> | ||||
| <property name="ShouldShowAirplaneMode" type="b" access="read" /> | ||||
| </interface> | ||||
| </node>`; | ||||
|  | ||||
| const RfkillManagerProxy = Gio.DBusProxy.makeProxyWrapper(RfkillManagerInterface); | ||||
|  | ||||
|   | ||||
| @@ -261,8 +261,19 @@ var Indicator = new Lang.Class({ | ||||
|         item = new PopupMenu.PopupBaseMenuItem({ reactive: false, | ||||
|                                                  can_focus: false }); | ||||
|  | ||||
|         this._settingsAction = this._createActionButton('preferences-system-symbolic', _("Settings")); | ||||
|         this._settingsAction.connect('clicked', () => { this._onSettingsClicked(); }); | ||||
|         let app = this._settingsApp = Shell.AppSystem.get_default().lookup_app( | ||||
|             'gnome-control-center.desktop' | ||||
|         ); | ||||
|         if (app) { | ||||
|             let [icon, name] = [app.app_info.get_icon().names[0], | ||||
|                                 app.get_name()]; | ||||
|             this._settingsAction = this._createActionButton(icon, name); | ||||
|             this._settingsAction.connect('clicked', | ||||
|                                          this._onSettingsClicked.bind(this)); | ||||
|         } else { | ||||
|             log('Missing required core component Settings, expect trouble…'); | ||||
|             this._settingsAction = new St.Widget(); | ||||
|         } | ||||
|         item.actor.add(this._settingsAction, { expand: true, x_fill: false }); | ||||
|  | ||||
|         this._orientationLockAction = this._createActionButton('', _("Orientation Lock")); | ||||
| @@ -280,7 +291,7 @@ var Indicator = new Lang.Class({ | ||||
|                                           'icon-name', | ||||
|                                           bindFlags); | ||||
|  | ||||
|         this._lockScreenAction = this._createActionButton('changes-prevent-symbolic', _("Lock")); | ||||
|         this._lockScreenAction = this._createActionButton('changes-prevent', _("Lock")); | ||||
|         this._lockScreenAction.connect('clicked', () => { | ||||
|             this.menu.itemActivated(BoxPointer.PopupAnimation.NONE); | ||||
|             this._systemActions.activateLockScreen(); | ||||
| @@ -291,7 +302,7 @@ var Indicator = new Lang.Class({ | ||||
|                                           'visible', | ||||
|                                           bindFlags); | ||||
|  | ||||
|         this._suspendAction = this._createActionButton('media-playback-pause-symbolic', _("Suspend")); | ||||
|         this._suspendAction = this._createActionButton('media-playback-pause', _("Suspend")); | ||||
|         this._suspendAction.connect('clicked', () => { | ||||
|             this.menu.itemActivated(BoxPointer.PopupAnimation.NONE); | ||||
|             this._systemActions.activateSuspend(); | ||||
| @@ -301,7 +312,7 @@ var Indicator = new Lang.Class({ | ||||
|                                           'visible', | ||||
|                                           bindFlags); | ||||
|  | ||||
|         this._powerOffAction = this._createActionButton('system-shutdown-symbolic', _("Power Off")); | ||||
|         this._powerOffAction = this._createActionButton('system-shutdown', _("Power Off")); | ||||
|         this._powerOffAction.connect('clicked', () => { | ||||
|             this.menu.itemActivated(BoxPointer.PopupAnimation.NONE); | ||||
|             this._systemActions.activatePowerOff(); | ||||
| @@ -330,8 +341,7 @@ var Indicator = new Lang.Class({ | ||||
|  | ||||
|     _onSettingsClicked() { | ||||
|         this.menu.itemActivated(); | ||||
|         let app = Shell.AppSystem.get_default().lookup_app('gnome-control-center.desktop'); | ||||
|         Main.overview.hide(); | ||||
|         app.activate(); | ||||
|         this._settingsApp.activate(); | ||||
|     } | ||||
| }); | ||||
|   | ||||
| @@ -14,40 +14,42 @@ const PanelMenu = imports.ui.panelMenu; | ||||
|  | ||||
| /* Keep in sync with data/org.freedesktop.bolt.xml */ | ||||
|  | ||||
| const BoltClientInterface = '<node> \ | ||||
|   <interface name="org.freedesktop.bolt1.Manager"> \ | ||||
|     <property name="Probing" type="b" access="read"></property> \ | ||||
|     <property name="AuthMode" type="s" access="readwrite"></property> \ | ||||
|     <method name="EnrollDevice"> \ | ||||
|       <arg type="s" name="uid" direction="in"> </arg> \ | ||||
|       <arg type="s" name="policy" direction="in"> </arg> \ | ||||
|       <arg type="s" name="flags" direction="in"> </arg> \ | ||||
|       <arg name="device" direction="out" type="o"> </arg> \ | ||||
|     </method> \ | ||||
|     <signal name="DeviceAdded"> \ | ||||
|       <arg name="device" type="o"> </arg> \ | ||||
|     </signal> \ | ||||
|   </interface> \ | ||||
| </node>'; | ||||
| const BoltClientInterface = ` | ||||
| <node> | ||||
|   <interface name="org.freedesktop.bolt1.Manager"> | ||||
|     <property name="Probing" type="b" access="read"></property> | ||||
|     <property name="AuthMode" type="s" access="readwrite"></property> | ||||
|     <method name="EnrollDevice"> | ||||
|       <arg type="s" name="uid" direction="in"> </arg> | ||||
|       <arg type="s" name="policy" direction="in"> </arg> | ||||
|       <arg type="s" name="flags" direction="in"> </arg> | ||||
|       <arg name="device" direction="out" type="o"> </arg> | ||||
|     </method> | ||||
|     <signal name="DeviceAdded"> | ||||
|       <arg name="device" type="o"> </arg> | ||||
|     </signal> | ||||
|   </interface> | ||||
| </node>`; | ||||
|  | ||||
| const BoltDeviceInterface = '<node> \ | ||||
|   <interface name="org.freedesktop.bolt1.Device"> \ | ||||
|     <property name="Uid" type="s" access="read"></property> \ | ||||
|     <property name="Name" type="s" access="read"></property> \ | ||||
|     <property name="Vendor" type="s" access="read"></property> \ | ||||
|     <property name="Type" type="s" access="read"></property> \ | ||||
|     <property name="Status" type="s" access="read"></property> \ | ||||
|     <property name="Parent" type="s" access="read"></property> \ | ||||
|     <property name="SysfsPath" type="s" access="read"></property> \ | ||||
|     <property name="Stored" type="b" access="read"></property> \ | ||||
|     <property name="Policy" type="s" access="read"></property> \ | ||||
|     <property name="Key" type="s" access="read"></property> \ | ||||
|     <property name="Label" type="s" access="read"></property> \ | ||||
|     <property name="ConnectTime" type="t" access="read"></property> \ | ||||
|     <property name="AuthorizeTime" type="t" access="read"></property> \ | ||||
|     <property name="StoreTime" type="t" access="read"></property> \ | ||||
|   </interface> \ | ||||
| </node>'; | ||||
| const BoltDeviceInterface = ` | ||||
| <node> | ||||
|   <interface name="org.freedesktop.bolt1.Device"> | ||||
|     <property name="Uid" type="s" access="read"></property> | ||||
|     <property name="Name" type="s" access="read"></property> | ||||
|     <property name="Vendor" type="s" access="read"></property> | ||||
|     <property name="Type" type="s" access="read"></property> | ||||
|     <property name="Status" type="s" access="read"></property> | ||||
|     <property name="Parent" type="s" access="read"></property> | ||||
|     <property name="SysfsPath" type="s" access="read"></property> | ||||
|     <property name="Stored" type="b" access="read"></property> | ||||
|     <property name="Policy" type="s" access="read"></property> | ||||
|     <property name="Key" type="s" access="read"></property> | ||||
|     <property name="Label" type="s" access="read"></property> | ||||
|     <property name="ConnectTime" type="t" access="read"></property> | ||||
|     <property name="AuthorizeTime" type="t" access="read"></property> | ||||
|     <property name="StoreTime" type="t" access="read"></property> | ||||
|   </interface> | ||||
| </node>`; | ||||
|  | ||||
| const BoltDeviceProxy = Gio.DBusProxy.makeProxyWrapper(BoltDeviceInterface); | ||||
|  | ||||
|   | ||||
| @@ -12,6 +12,8 @@ const PanelMenu = imports.ui.panelMenu; | ||||
| const PopupMenu = imports.ui.popupMenu; | ||||
| const Slider = imports.ui.slider; | ||||
|  | ||||
| const ALLOW_AMPLIFIED_VOLUME_KEY = 'allow-volume-above-100-percent'; | ||||
|  | ||||
| var VOLUME_NOTIFY_ID = 1; | ||||
|  | ||||
| // Each Gvc.MixerControl is a connection to PulseAudio, | ||||
| @@ -36,6 +38,11 @@ var StreamSlider = new Lang.Class({ | ||||
|         this.item = new PopupMenu.PopupBaseMenuItem({ activate: false }); | ||||
|  | ||||
|         this._slider = new Slider.Slider(0); | ||||
|  | ||||
|         this._soundSettings = new Gio.Settings({ schema_id: 'org.gnome.desktop.sound' }); | ||||
|         this._soundSettings.connect('changed::' + ALLOW_AMPLIFIED_VOLUME_KEY, this._amplifySettingsChanged.bind(this)); | ||||
|         this._amplifySettingsChanged(); | ||||
|  | ||||
|         this._slider.connect('value-changed', this._sliderChanged.bind(this)); | ||||
|         this._slider.connect('drag-end', this._notifyVolumeChange.bind(this)); | ||||
|  | ||||
| @@ -135,21 +142,40 @@ var StreamSlider = new Lang.Class({ | ||||
|         this.emit('stream-updated'); | ||||
|     }, | ||||
|  | ||||
|     _amplifySettingsChanged() { | ||||
|         this._allowAmplified = this._soundSettings.get_boolean(ALLOW_AMPLIFIED_VOLUME_KEY); | ||||
|  | ||||
|         if (this._allowAmplified) | ||||
|             this._slider.setMaximumValue(this.getMaxLevel() / 100); | ||||
|         else | ||||
|             this._slider.setMaximumValue(1); | ||||
|  | ||||
|         if (this._stream) | ||||
|             this._updateVolume(); | ||||
|     }, | ||||
|  | ||||
|     getIcon() { | ||||
|         if (!this._stream) | ||||
|             return null; | ||||
|  | ||||
|         let icons = ["audio-volume-muted-symbolic", | ||||
|                      "audio-volume-low-symbolic", | ||||
|                      "audio-volume-medium-symbolic", | ||||
|                      "audio-volume-high-symbolic", | ||||
|                      "audio-volume-overamplified-symbolic"]; | ||||
|  | ||||
|         let volume = this._stream.volume; | ||||
|         let n; | ||||
|         if (this._stream.is_muted || volume <= 0) { | ||||
|             return 'audio-volume-muted-symbolic'; | ||||
|             n = 0; | ||||
|         } else { | ||||
|             let n = Math.floor(3 * volume / this._control.get_vol_max_norm()) + 1; | ||||
|             if (n < 2) | ||||
|                 return 'audio-volume-low-symbolic'; | ||||
|             if (n >= 3) | ||||
|                 return 'audio-volume-high-symbolic'; | ||||
|             return 'audio-volume-medium-symbolic'; | ||||
|             n = Math.ceil(3 * volume / this._control.get_vol_max_norm()); | ||||
|             if (n < 1) | ||||
|                 n = 1; | ||||
|             else if (n > 3) | ||||
|                 n = 4; | ||||
|         } | ||||
|         return icons[n]; | ||||
|     }, | ||||
|  | ||||
|     getLevel() { | ||||
| @@ -157,6 +183,14 @@ var StreamSlider = new Lang.Class({ | ||||
|             return null; | ||||
|  | ||||
|         return 100 * this._stream.volume / this._control.get_vol_max_norm(); | ||||
|     }, | ||||
|  | ||||
|     getMaxLevel() { | ||||
|         let maxVolume = this._control.get_vol_max_norm(); | ||||
|         if (this._allowAmplified) | ||||
|             maxVolume = this._control.get_vol_max_amplified(); | ||||
|  | ||||
|         return 100 * maxVolume / this._control.get_vol_max_norm(); | ||||
|     } | ||||
| }); | ||||
| Signals.addSignalMethods(StreamSlider.prototype); | ||||
| @@ -310,6 +344,10 @@ var VolumeMenu = new Lang.Class({ | ||||
|  | ||||
|     getLevel() { | ||||
|         return this._output.getLevel(); | ||||
|     }, | ||||
|  | ||||
|     getMaxLevel() { | ||||
|         return this._output.getMaxLevel(); | ||||
|     } | ||||
| }); | ||||
|  | ||||
| @@ -346,8 +384,9 @@ var Indicator = new Lang.Class({ | ||||
|             return result; | ||||
|  | ||||
|         let gicon = new Gio.ThemedIcon({ name: this._volumeMenu.getIcon() }); | ||||
|         let level = this._volumeMenu.getLevel(); | ||||
|         Main.osdWindowManager.show(-1, gicon, null, level); | ||||
|         let level = parseInt(this._volumeMenu.getLevel()); | ||||
|         let maxLevel = parseInt(this._volumeMenu.getMaxLevel()); | ||||
|         Main.osdWindowManager.show(-1, gicon, null, level, maxLevel); | ||||
|         return result; | ||||
|     } | ||||
| }); | ||||
|   | ||||
| @@ -230,14 +230,14 @@ var ViewSelector = new Lang.Class({ | ||||
|  | ||||
|         Main.wm.addKeybinding('toggle-application-view', | ||||
|                               new Gio.Settings({ schema_id: SHELL_KEYBINDINGS_SCHEMA }), | ||||
|                               Meta.KeyBindingFlags.NONE, | ||||
|                               Meta.KeyBindingFlags.IGNORE_AUTOREPEAT, | ||||
|                               Shell.ActionMode.NORMAL | | ||||
|                               Shell.ActionMode.OVERVIEW, | ||||
|                               this._toggleAppsPage.bind(this)); | ||||
|  | ||||
|         Main.wm.addKeybinding('toggle-overview', | ||||
|                               new Gio.Settings({ schema_id: SHELL_KEYBINDINGS_SCHEMA }), | ||||
|                               Meta.KeyBindingFlags.NONE, | ||||
|                               Meta.KeyBindingFlags.IGNORE_AUTOREPEAT, | ||||
|                               Shell.ActionMode.NORMAL | | ||||
|                               Shell.ActionMode.OVERVIEW, | ||||
|                               Main.overview.toggle.bind(Main.overview)); | ||||
|   | ||||
| @@ -3,6 +3,7 @@ | ||||
| const Clutter = imports.gi.Clutter; | ||||
| const GLib = imports.gi.GLib; | ||||
| const Gio = imports.gi.Gio; | ||||
| const GObject = imports.gi.GObject; | ||||
| const Lang = imports.lang; | ||||
| const Mainloop = imports.mainloop; | ||||
| const Meta = imports.gi.Meta; | ||||
| @@ -34,25 +35,27 @@ var WINDOW_ANIMATION_TIME = 0.25; | ||||
| var DIM_BRIGHTNESS = -0.3; | ||||
| var DIM_TIME = 0.500; | ||||
| var UNDIM_TIME = 0.250; | ||||
| var MOTION_THRESHOLD = 100; | ||||
|  | ||||
| var ONE_SECOND = 1000; // in ms | ||||
|  | ||||
| const GSD_WACOM_BUS_NAME = 'org.gnome.SettingsDaemon.Wacom'; | ||||
| const GSD_WACOM_OBJECT_PATH = '/org/gnome/SettingsDaemon/Wacom'; | ||||
|  | ||||
| const GsdWacomIface = '<node name="/org/gnome/SettingsDaemon/Wacom"> \ | ||||
| <interface name="org.gnome.SettingsDaemon.Wacom"> \ | ||||
|   <method name="SetGroupModeLED"> \ | ||||
|     <arg name="device_path" direction="in" type="s"/> \ | ||||
|     <arg name="group" direction="in" type="u"/> \ | ||||
|     <arg name="mode" direction="in" type="u"/> \ | ||||
|   </method> \ | ||||
|   <method name="SetOLEDLabels"> \ | ||||
|     <arg name="device_path" direction="in" type="s"/> \ | ||||
|     <arg name="labels" direction="in" type="as"/> \ | ||||
|   </method> \ | ||||
|   </interface> \ | ||||
| </node>'; | ||||
| const GsdWacomIface = ` | ||||
| <node name="/org/gnome/SettingsDaemon/Wacom"> | ||||
| <interface name="org.gnome.SettingsDaemon.Wacom"> | ||||
|   <method name="SetGroupModeLED"> | ||||
|     <arg name="device_path" direction="in" type="s"/> | ||||
|     <arg name="group" direction="in" type="u"/> | ||||
|     <arg name="mode" direction="in" type="u"/> | ||||
|   </method> | ||||
|   <method name="SetOLEDLabels"> | ||||
|     <arg name="device_path" direction="in" type="s"/> | ||||
|     <arg name="labels" direction="in" type="as"/> | ||||
|   </method> | ||||
|   </interface> | ||||
| </node>`; | ||||
|  | ||||
| const GsdWacomProxy = Gio.DBusProxy.makeProxyWrapper(GsdWacomIface); | ||||
|  | ||||
| @@ -213,20 +216,12 @@ var WorkspaceTracker = new Lang.Class({ | ||||
|         global.display.connect('restacked', | ||||
|                                this._windowsRestacked.bind(this)); | ||||
|  | ||||
|         this._workspaceSettings = this._getWorkspaceSettings(); | ||||
|         this._workspaceSettings = new Gio.Settings({ schema_id: 'org.gnome.mutter' }); | ||||
|         this._workspaceSettings.connect('changed::dynamic-workspaces', this._queueCheckWorkspaces.bind(this)); | ||||
|  | ||||
|         this._nWorkspacesChanged(); | ||||
|     }, | ||||
|  | ||||
|     _getWorkspaceSettings() { | ||||
|         let settings = global.get_overrides_settings(); | ||||
|         if (settings && | ||||
|             settings.settings_schema.list_keys().indexOf('dynamic-workspaces') > -1) | ||||
|             return settings; | ||||
|         return new Gio.Settings({ schema_id: 'org.gnome.mutter' }); | ||||
|     }, | ||||
|  | ||||
|     blockUpdates() { | ||||
|         this._pauseWorkspaceCheck = true; | ||||
|     }, | ||||
| @@ -495,13 +490,8 @@ var TouchpadWorkspaceSwitchAction = new Lang.Class({ | ||||
|     }, | ||||
|  | ||||
|     _checkActivated() { | ||||
|         const MOTION_THRESHOLD = 50; | ||||
|         let allowedModes = Shell.ActionMode.NORMAL | Shell.ActionMode.OVERVIEW; | ||||
|         let dir; | ||||
|  | ||||
|         if ((allowedModes & Main.actionMode) == 0) | ||||
|             return; | ||||
|  | ||||
|         if (this._dy < -MOTION_THRESHOLD) | ||||
|             dir = Meta.MotionDirection.DOWN; | ||||
|         else if (this._dy > MOTION_THRESHOLD) | ||||
| @@ -511,26 +501,35 @@ var TouchpadWorkspaceSwitchAction = new Lang.Class({ | ||||
|         else if (this._dx > MOTION_THRESHOLD) | ||||
|             dir = Meta.MotionDirection.LEFT; | ||||
|         else | ||||
|             return; | ||||
|             return false; | ||||
|  | ||||
|         this.emit('activated', dir); | ||||
|         return true; | ||||
|     }, | ||||
|  | ||||
|     _handleEvent(actor, event) { | ||||
|         let allowedModes = Shell.ActionMode.NORMAL | Shell.ActionMode.OVERVIEW; | ||||
|  | ||||
|         if (event.type() != Clutter.EventType.TOUCHPAD_SWIPE) | ||||
|             return Clutter.EVENT_PROPAGATE; | ||||
|  | ||||
|         if (event.get_touchpad_gesture_finger_count() != 4) | ||||
|             return Clutter.EVENT_PROPAGATE; | ||||
|  | ||||
|         if ((allowedModes & Main.actionMode) == 0) | ||||
|             return Clutter.EVENT_PROPAGATE; | ||||
|  | ||||
|         if (event.get_gesture_phase() == Clutter.TouchpadGesturePhase.UPDATE) { | ||||
|             let [dx, dy] = event.get_gesture_motion_delta(); | ||||
|  | ||||
|             this._dx += dx; | ||||
|             this._dy += dy; | ||||
|             // Scale deltas up a bit to make it feel snappier | ||||
|             this._dx += dx * 2; | ||||
|             this._dy += dy * 2; | ||||
|             this.emit('motion', this._dx, this._dy); | ||||
|         } else { | ||||
|             if (event.get_gesture_phase() == Clutter.TouchpadGesturePhase.END) | ||||
|                 this._checkActivated(); | ||||
|             if ((event.get_gesture_phase() == Clutter.TouchpadGesturePhase.END && ! this._checkActivated()) || | ||||
|                 event.get_gesture_phase() == Clutter.TouchpadGesturePhase.CANCEL) | ||||
|                 this.emit('cancel'); | ||||
|  | ||||
|             this._dx = 0; | ||||
|             this._dy = 0; | ||||
| @@ -544,14 +543,14 @@ Signals.addSignalMethods(TouchpadWorkspaceSwitchAction.prototype); | ||||
| var WorkspaceSwitchAction = new Lang.Class({ | ||||
|     Name: 'WorkspaceSwitchAction', | ||||
|     Extends: Clutter.SwipeAction, | ||||
|     Signals: { 'activated': { param_types: [Meta.MotionDirection.$gtype] } }, | ||||
|     Signals: { 'activated': { param_types: [Meta.MotionDirection.$gtype] }, | ||||
|                'motion':    { param_types: [GObject.TYPE_DOUBLE, GObject.TYPE_DOUBLE] }, | ||||
|                'cancel':    { param_types: [] }}, | ||||
|  | ||||
|     _init() { | ||||
|         const MOTION_THRESHOLD = 50; | ||||
|  | ||||
|         this.parent(); | ||||
|         this.set_n_touch_points(4); | ||||
|         this.set_threshold_trigger_distance(MOTION_THRESHOLD, MOTION_THRESHOLD); | ||||
|         this._swept = false; | ||||
|  | ||||
|         global.display.connect('grab-op-begin', () => { | ||||
|             this.cancel(); | ||||
| @@ -561,13 +560,35 @@ var WorkspaceSwitchAction = new Lang.Class({ | ||||
|     vfunc_gesture_prepare(actor) { | ||||
|         let allowedModes = Shell.ActionMode.NORMAL | Shell.ActionMode.OVERVIEW; | ||||
|  | ||||
|         this._swept = false; | ||||
|  | ||||
|         if (!this.parent(actor)) | ||||
|             return false; | ||||
|  | ||||
|         return (allowedModes & Main.actionMode); | ||||
|     }, | ||||
|  | ||||
|     vfunc_swept(actor, direction) { | ||||
|     vfunc_gesture_progress(actor) { | ||||
|         let [x, y] = this.get_motion_coords(0); | ||||
|         let [xPress, yPress] = this.get_press_coords(0); | ||||
|         this.emit('motion', x - xPress, y - yPress); | ||||
|         return true; | ||||
|     }, | ||||
|  | ||||
|     vfunc_gesture_cancel(actor) { | ||||
|         if (!this._swept) | ||||
|             this.emit('cancel'); | ||||
|     }, | ||||
|  | ||||
|     vfunc_swipe(actor, direction) { | ||||
|         let [x, y] = this.get_motion_coords(0); | ||||
|         let [xPress, yPress] = this.get_press_coords(0); | ||||
|         if (Math.abs(x - xPress) < MOTION_THRESHOLD && | ||||
|             Math.abs(y - yPress) < MOTION_THRESHOLD) { | ||||
|             this.emit('cancel'); | ||||
|             return; | ||||
|         } | ||||
|  | ||||
|         let dir; | ||||
|  | ||||
|         if (direction & Clutter.SwipeDirection.UP) | ||||
| @@ -579,6 +600,7 @@ var WorkspaceSwitchAction = new Lang.Class({ | ||||
|         else if (direction & Clutter.SwipeDirection.RIGHT) | ||||
|             dir = Meta.MotionDirection.LEFT; | ||||
|  | ||||
|         this._swept = true; | ||||
|         this.emit('activated', dir); | ||||
|     } | ||||
| }); | ||||
| @@ -635,8 +657,8 @@ var AppSwitchAction = new Lang.Class({ | ||||
|  | ||||
|         if (this.get_n_current_points() == 3) { | ||||
|             for (let i = 0; i < this.get_n_current_points(); i++) { | ||||
|                 [startX, startY] = this.get_press_coords(i); | ||||
|                 [x, y] = this.get_motion_coords(i); | ||||
|                 let [startX, startY] = this.get_press_coords(i); | ||||
|                 let [x, y] = this.get_motion_coords(i); | ||||
|  | ||||
|                 if (Math.abs(x - startX) > MOTION_THRESHOLD || | ||||
|                     Math.abs(y - startY) > MOTION_THRESHOLD) | ||||
| @@ -700,7 +722,14 @@ var WindowManager = new Lang.Class({ | ||||
|         this._isWorkspacePrepended = false; | ||||
|  | ||||
|         this._switchData = null; | ||||
|         this._shellwm.connect('kill-switch-workspace', this._switchWorkspaceDone.bind(this)); | ||||
|         this._shellwm.connect('kill-switch-workspace', (shellwm) => { | ||||
|             if (this._switchData) { | ||||
|                 if (this._switchData.inProgress) | ||||
|                     this._switchWorkspaceDone(shellwm); | ||||
|                 else if (!this._switchData.gestureActivated) | ||||
|                     this._finishWorkspaceSwitch(this._switchData); | ||||
|             } | ||||
|         }); | ||||
|         this._shellwm.connect('kill-window-effects', (shellwm, actor) => { | ||||
|             this._minimizeWindowDone(shellwm, actor); | ||||
|             this._mapWindowDone(shellwm, actor); | ||||
| @@ -920,14 +949,14 @@ var WindowManager = new Lang.Class({ | ||||
|  | ||||
|         this.addKeybinding('open-application-menu', | ||||
|                            new Gio.Settings({ schema_id: SHELL_KEYBINDINGS_SCHEMA }), | ||||
|                            Meta.KeyBindingFlags.NONE, | ||||
|                            Meta.KeyBindingFlags.IGNORE_AUTOREPEAT, | ||||
|                            Shell.ActionMode.NORMAL | | ||||
|                            Shell.ActionMode.POPUP, | ||||
|                            this._toggleAppMenu.bind(this)); | ||||
|  | ||||
|         this.addKeybinding('toggle-message-tray', | ||||
|                            new Gio.Settings({ schema_id: SHELL_KEYBINDINGS_SCHEMA }), | ||||
|                            Meta.KeyBindingFlags.NONE, | ||||
|                            Meta.KeyBindingFlags.IGNORE_AUTOREPEAT, | ||||
|                            Shell.ActionMode.NORMAL | | ||||
|                            Shell.ActionMode.OVERVIEW | | ||||
|                            Shell.ActionMode.POPUP, | ||||
| @@ -982,12 +1011,16 @@ var WindowManager = new Lang.Class({ | ||||
|                                                            false, -1, 1); | ||||
|  | ||||
|         let gesture = new WorkspaceSwitchAction(); | ||||
|         gesture.connect('motion', this._switchWorkspaceMotion.bind(this)); | ||||
|         gesture.connect('activated', this._actionSwitchWorkspace.bind(this)); | ||||
|         gesture.connect('cancel', this._switchWorkspaceCancel.bind(this)); | ||||
|         global.stage.add_action(gesture); | ||||
|  | ||||
|         // This is not a normal Clutter.GestureAction, doesn't need add_action() | ||||
|         gesture = new TouchpadWorkspaceSwitchAction(global.stage); | ||||
|         gesture.connect('motion', this._switchWorkspaceMotion.bind(this)); | ||||
|         gesture.connect('activated', this._actionSwitchWorkspace.bind(this)); | ||||
|         gesture.connect('cancel', this._switchWorkspaceCancel.bind(this)); | ||||
|  | ||||
|         gesture = new AppSwitchAction(); | ||||
|         gesture.connect('activated', this._switchApp.bind(this)); | ||||
| @@ -999,6 +1032,14 @@ var WindowManager = new Lang.Class({ | ||||
|             Main.keyboard.show(Main.layoutManager.bottomIndex); | ||||
|         }); | ||||
|         global.stage.add_action(gesture); | ||||
|  | ||||
|         gesture = new EdgeDragAction.EdgeDragAction(St.Side.TOP, mode); | ||||
|         gesture.connect('activated',  () => { | ||||
|             let currentWindow = global.display.focus_window; | ||||
|             if (currentWindow) | ||||
|                 currentWindow.unmake_fullscreen(); | ||||
|         }); | ||||
|         global.stage.add_action(gesture); | ||||
|     }, | ||||
|  | ||||
|     _showPadOsd(display, device, settings, imagePath, editionMode, monitorIndex) { | ||||
| @@ -1008,11 +1049,52 @@ var WindowManager = new Lang.Class({ | ||||
|         return this._currentPadOsd.actor; | ||||
|     }, | ||||
|  | ||||
|     _switchWorkspaceMotion(action, xRel, yRel) { | ||||
|         let workspaceManager = global.workspace_manager; | ||||
|         let activeWorkspace = workspaceManager.get_active_workspace(); | ||||
|  | ||||
|         if (!this._switchData) | ||||
|             this._prepareWorkspaceSwitch(activeWorkspace.index(), -1); | ||||
|  | ||||
|         if (yRel < 0 && !this._switchData.surroundings[Meta.MotionDirection.DOWN]) | ||||
|             yRel = 0; | ||||
|         if (yRel > 0 && !this._switchData.surroundings[Meta.MotionDirection.UP]) | ||||
|             yRel = 0; | ||||
|         if (xRel < 0 && !this._switchData.surroundings[Meta.MotionDirection.RIGHT]) | ||||
|             xRel = 0; | ||||
|         if (xRel > 0 && !this._switchData.surroundings[Meta.MotionDirection.LEFT]) | ||||
|             xRel = 0; | ||||
|  | ||||
|         this._switchData.container.set_position(xRel, yRel); | ||||
|     }, | ||||
|  | ||||
|     _switchWorkspaceCancel() { | ||||
|         if (!this._switchData || this._switchData.inProgress) | ||||
|             return; | ||||
|         let switchData = this._switchData; | ||||
|         this._switchData = null; | ||||
|         Tweener.addTween(switchData.container, | ||||
|                          { x: 0, | ||||
|                            y: 0, | ||||
|                            time: WINDOW_ANIMATION_TIME, | ||||
|                            transition: 'easeOutQuad', | ||||
|                            onComplete: this._finishWorkspaceSwitch, | ||||
|                            onCompleteScope: this, | ||||
|                            onCompleteParams: [switchData], | ||||
|                          }); | ||||
|     }, | ||||
|  | ||||
|     _actionSwitchWorkspace(action, direction) { | ||||
|             let workspaceManager = global.workspace_manager; | ||||
|             let activeWorkspace = workspaceManager.get_active_workspace(); | ||||
|             let newWs = activeWorkspace.get_neighbor(direction); | ||||
|         let workspaceManager = global.workspace_manager; | ||||
|         let activeWorkspace = workspaceManager.get_active_workspace(); | ||||
|         let newWs = activeWorkspace.get_neighbor(direction); | ||||
|  | ||||
|         if (newWs == activeWorkspace) { | ||||
|             this._switchWorkspaceCancel(); | ||||
|         } else { | ||||
|             this._switchData.gestureActivated = true; | ||||
|             this.actionMoveWorkspace(newWs); | ||||
|         } | ||||
|     }, | ||||
|  | ||||
|     _lookupIndex(windows, metaWindow) { | ||||
| @@ -1692,63 +1774,104 @@ var WindowManager = new Lang.Class({ | ||||
|         if (this._switchData == null) | ||||
|             return; | ||||
|  | ||||
|         // Update stacking of windows in inGroup (aka the workspace we are | ||||
|         // switching to). Windows in outGroup are about to be hidden anyway, | ||||
|         // so we just ignore them here. | ||||
|         let windows = global.get_window_actors(); | ||||
|         let sibling = null; | ||||
|         let lastCurSibling = null; | ||||
|         let lastDirSibling = []; | ||||
|         for (let i = 0; i < windows.length; i++) { | ||||
|             if (windows[i].get_parent() != this._switchData.inGroup) | ||||
|                 continue; | ||||
|             if (windows[i].get_parent() == this._switchData.curGroup) { | ||||
|                 this._switchData.curGroup.set_child_above_sibling(windows[i], lastCurSibling); | ||||
|                 lastCurSibling = windows[i]; | ||||
|             } else { | ||||
|                 for (let dir of Object.values(Meta.MotionDirection)) { | ||||
|                     let info = this._switchData.surroundings[dir]; | ||||
|                     if (!info || windows[i].get_parent() != info.actor) | ||||
|                         continue; | ||||
|  | ||||
|             this._switchData.inGroup.set_child_above_sibling(windows[i], sibling); | ||||
|             sibling = windows[i]; | ||||
|                     let sibling = lastDirSibling[dir]; | ||||
|                     if (sibling == undefined) | ||||
|                         sibling = null; | ||||
|  | ||||
|                     info.actor.set_child_above_sibling(windows[i], sibling); | ||||
|                     lastDirSibling[dir] = windows[i]; | ||||
|                     break; | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
|     }, | ||||
|  | ||||
|     _switchWorkspace(shellwm, from, to, direction) { | ||||
|         if (!Main.sessionMode.hasWorkspaces || !this._shouldAnimate()) { | ||||
|             shellwm.completed_switch_workspace(); | ||||
|             return; | ||||
|         } | ||||
|  | ||||
|         let windows = global.get_window_actors(); | ||||
|  | ||||
|         /* @direction is the direction that the "camera" moves, so the | ||||
|          * screen contents have to move one screen's worth in the | ||||
|          * opposite direction. | ||||
|          */ | ||||
|     _getPositionForDirection(direction) { | ||||
|         let xDest = 0, yDest = 0; | ||||
|  | ||||
|         if (direction == Meta.MotionDirection.UP || | ||||
|             direction == Meta.MotionDirection.UP_LEFT || | ||||
|             direction == Meta.MotionDirection.UP_RIGHT) | ||||
|                 yDest = global.screen_height - Main.panel.actor.height; | ||||
|             yDest = -global.screen_height + Main.panel.actor.height; | ||||
|         else if (direction == Meta.MotionDirection.DOWN || | ||||
|             direction == Meta.MotionDirection.DOWN_LEFT || | ||||
|             direction == Meta.MotionDirection.DOWN_RIGHT) | ||||
|                 yDest = -global.screen_height + Main.panel.actor.height; | ||||
|             yDest = global.screen_height - Main.panel.actor.height; | ||||
|  | ||||
|         if (direction == Meta.MotionDirection.LEFT || | ||||
|             direction == Meta.MotionDirection.UP_LEFT || | ||||
|             direction == Meta.MotionDirection.DOWN_LEFT) | ||||
|                 xDest = global.screen_width; | ||||
|             xDest = -global.screen_width; | ||||
|         else if (direction == Meta.MotionDirection.RIGHT || | ||||
|                  direction == Meta.MotionDirection.UP_RIGHT || | ||||
|                  direction == Meta.MotionDirection.DOWN_RIGHT) | ||||
|                 xDest = -global.screen_width; | ||||
|             xDest = global.screen_width; | ||||
|  | ||||
|         let switchData = {}; | ||||
|         this._switchData = switchData; | ||||
|         switchData.inGroup = new Clutter.Actor(); | ||||
|         switchData.outGroup = new Clutter.Actor(); | ||||
|         switchData.movingWindowBin = new Clutter.Actor(); | ||||
|         switchData.windows = []; | ||||
|         return [xDest, yDest]; | ||||
|     }, | ||||
|  | ||||
|     _prepareWorkspaceSwitch(from, to, direction) { | ||||
|         if (this._switchData) | ||||
|             return; | ||||
|  | ||||
|         let wgroup = global.window_group; | ||||
|         wgroup.add_actor(switchData.inGroup); | ||||
|         wgroup.add_actor(switchData.outGroup); | ||||
|         let windows = global.get_window_actors(); | ||||
|         let switchData = {}; | ||||
|  | ||||
|         this._switchData = switchData; | ||||
|         switchData.curGroup = new Clutter.Actor(); | ||||
|         switchData.movingWindowBin = new Clutter.Actor(); | ||||
|         switchData.windows = []; | ||||
|         switchData.surroundings = {}; | ||||
|         switchData.gestureActivated = false; | ||||
|         switchData.inProgress = false; | ||||
|  | ||||
|         switchData.container = new Clutter.Actor(); | ||||
|         switchData.container.add_actor(switchData.curGroup); | ||||
|  | ||||
|         wgroup.add_actor(switchData.movingWindowBin); | ||||
|         wgroup.add_actor(switchData.container); | ||||
|  | ||||
|         let workspaceManager = global.workspace_manager; | ||||
|         let curWs = workspaceManager.get_workspace_by_index (from); | ||||
|  | ||||
|         for (let dir of Object.values(Meta.MotionDirection)) { | ||||
|             let ws = null; | ||||
|  | ||||
|             if (to < 0) | ||||
|                 ws = curWs.get_neighbor(dir); | ||||
|             else if (dir == direction) | ||||
|                 ws = workspaceManager.get_workspace_by_index(to); | ||||
|  | ||||
|             if (ws == null || ws == curWs) { | ||||
|                 switchData.surroundings[dir] = null; | ||||
|                 continue; | ||||
|             } | ||||
|  | ||||
|             let info = { index: ws.index(), | ||||
|                          actor: new Clutter.Actor() }; | ||||
|             switchData.surroundings[dir] = info; | ||||
|             switchData.container.add_actor(info.actor); | ||||
|             info.actor.raise_top(); | ||||
|  | ||||
|             let [x, y] = this._getPositionForDirection(dir); | ||||
|             info.actor.set_position(x, y); | ||||
|         } | ||||
|  | ||||
|         switchData.movingWindowBin.raise_top(); | ||||
|  | ||||
|         for (let i = 0; i < windows.length; i++) { | ||||
|             let actor = windows[i]; | ||||
| @@ -1769,20 +1892,70 @@ var WindowManager = new Lang.Class({ | ||||
|                 actor.reparent(switchData.movingWindowBin); | ||||
|             } else if (window.get_workspace().index() == from) { | ||||
|                 switchData.windows.push(record); | ||||
|                 actor.reparent(switchData.outGroup); | ||||
|             } else if (window.get_workspace().index() == to) { | ||||
|                 switchData.windows.push(record); | ||||
|                 actor.reparent(switchData.inGroup); | ||||
|                 actor.show(); | ||||
|                 actor.reparent(switchData.curGroup); | ||||
|             } else { | ||||
|                 let visible = false; | ||||
|                 for (let dir of Object.values(Meta.MotionDirection)) { | ||||
|                     let info = switchData.surroundings[dir]; | ||||
|  | ||||
|                     if (!info || info.index != window.get_workspace().index()) | ||||
|                         continue; | ||||
|  | ||||
|                     switchData.windows.push(record); | ||||
|                     actor.reparent(info.actor); | ||||
|                     visible = true; | ||||
|                     break; | ||||
|                 } | ||||
|  | ||||
|                 actor.visible = visible; | ||||
|             } | ||||
|         } | ||||
|     }, | ||||
|  | ||||
|         switchData.inGroup.set_position(-xDest, -yDest); | ||||
|         switchData.inGroup.raise_top(); | ||||
|     _finishWorkspaceSwitch(switchData) { | ||||
|         this._switchData = null; | ||||
|  | ||||
|         switchData.movingWindowBin.raise_top(); | ||||
|         for (let i = 0; i < switchData.windows.length; i++) { | ||||
|             let w = switchData.windows[i]; | ||||
|             if (w.window.is_destroyed()) // Window gone | ||||
|                 continue; | ||||
|  | ||||
|         Tweener.addTween(switchData.outGroup, | ||||
|             w.window.reparent(w.parent); | ||||
|  | ||||
|             if (w.window.get_meta_window().get_workspace() != | ||||
|                 global.workspace_manager.get_active_workspace()) | ||||
|                 w.window.hide(); | ||||
|         } | ||||
|         Tweener.removeTweens(switchData.container); | ||||
|         switchData.container.destroy(); | ||||
|         switchData.movingWindowBin.destroy(); | ||||
|  | ||||
|         this._movingWindow = null; | ||||
|     }, | ||||
|  | ||||
|     _switchWorkspace(shellwm, from, to, direction) { | ||||
|         if (!Main.sessionMode.hasWorkspaces || !this._shouldAnimate()) { | ||||
|             shellwm.completed_switch_workspace(); | ||||
|             return; | ||||
|         } | ||||
|  | ||||
|         // If we come from a gesture, switchData will already be set, | ||||
|         // and we don't want to overwrite it. | ||||
|         if (!this._switchData) | ||||
|             this._prepareWorkspaceSwitch(from, to, direction); | ||||
|  | ||||
|         this._switchData.inProgress = true; | ||||
|  | ||||
|         let [xDest, yDest] = this._getPositionForDirection(direction); | ||||
|  | ||||
|         /* @direction is the direction that the "camera" moves, so the | ||||
|          * screen contents have to move one screen's worth in the | ||||
|          * opposite direction. | ||||
|          */ | ||||
|         xDest = -xDest; | ||||
|         yDest = -yDest; | ||||
|  | ||||
|         Tweener.addTween(this._switchData.container, | ||||
|                          { x: xDest, | ||||
|                            y: yDest, | ||||
|                            time: WINDOW_ANIMATION_TIME, | ||||
| @@ -1791,39 +1964,10 @@ var WindowManager = new Lang.Class({ | ||||
|                            onCompleteScope: this, | ||||
|                            onCompleteParams: [shellwm] | ||||
|                          }); | ||||
|         Tweener.addTween(switchData.inGroup, | ||||
|                          { x: 0, | ||||
|                            y: 0, | ||||
|                            time: WINDOW_ANIMATION_TIME, | ||||
|                            transition: 'easeOutQuad' | ||||
|                          }); | ||||
|     }, | ||||
|  | ||||
|     _switchWorkspaceDone(shellwm) { | ||||
|         let switchData = this._switchData; | ||||
|         if (!switchData) | ||||
|             return; | ||||
|         this._switchData = null; | ||||
|  | ||||
|         for (let i = 0; i < switchData.windows.length; i++) { | ||||
|                 let w = switchData.windows[i]; | ||||
|                 if (w.window.is_destroyed()) // Window gone | ||||
|                     continue; | ||||
|                 if (w.window.get_parent() == switchData.outGroup) { | ||||
|                     w.window.reparent(w.parent); | ||||
|                     w.window.hide(); | ||||
|                 } else | ||||
|                     w.window.reparent(w.parent); | ||||
|         } | ||||
|         Tweener.removeTweens(switchData.inGroup); | ||||
|         Tweener.removeTweens(switchData.outGroup); | ||||
|         switchData.inGroup.destroy(); | ||||
|         switchData.outGroup.destroy(); | ||||
|         switchData.movingWindowBin.destroy(); | ||||
|  | ||||
|         if (this._movingWindow) | ||||
|             this._movingWindow = null; | ||||
|  | ||||
|         this._finishWorkspaceSwitch(this._switchData); | ||||
|         shellwm.completed_switch_workspace(); | ||||
|     }, | ||||
|  | ||||
|   | ||||
| @@ -137,8 +137,10 @@ var WindowClone = new Lang.Class({ | ||||
|         this._dragSlot = [0, 0, 0, 0]; | ||||
|         this._stackAbove = null; | ||||
|  | ||||
|         this._windowClone._updateId = this.metaWindow.connect('size-changed', | ||||
|             this._onRealWindowSizeChanged.bind(this)); | ||||
|         this._windowClone._sizeChangedId = this.metaWindow.connect('size-changed', | ||||
|             this._onMetaWindowSizeChanged.bind(this)); | ||||
|         this._windowClone._posChangedId = this.metaWindow.connect('position-changed', | ||||
|             this._computeBoundingBox.bind(this)); | ||||
|         this._windowClone._destroyId = | ||||
|             this.realWindow.connect('destroy', () => { | ||||
|                 // First destroy the clone and then destroy everything | ||||
| @@ -177,6 +179,7 @@ var WindowClone = new Lang.Class({ | ||||
|         this.inDrag = false; | ||||
|  | ||||
|         this._selected = false; | ||||
|         this._closeRequested = false; | ||||
|     }, | ||||
|  | ||||
|     set slot(slot) { | ||||
| @@ -192,7 +195,6 @@ var WindowClone = new Lang.Class({ | ||||
|  | ||||
|     deleteAll() { | ||||
|         // Delete all windows, starting from the bottom-most (most-modal) one | ||||
|  | ||||
|         let windows = this.actor.get_children(); | ||||
|         for (let i = windows.length - 1; i >= 1; i--) { | ||||
|             let realWindow = windows[i].source; | ||||
| @@ -202,12 +204,24 @@ var WindowClone = new Lang.Class({ | ||||
|         } | ||||
|  | ||||
|         this.metaWindow.delete(global.get_current_time()); | ||||
|         this._closeRequested = true; | ||||
|     }, | ||||
|  | ||||
|     addAttachedDialog(win) { | ||||
|         this._doAddAttachedDialog(win, win.get_compositor_private()); | ||||
|         this._computeBoundingBox(); | ||||
|         this.emit('size-changed'); | ||||
|     addDialog(win) { | ||||
|         let parent = win.get_transient_for(); | ||||
|         while (parent.is_attached_dialog()) | ||||
|             parent = parent.get_transient_for(); | ||||
|  | ||||
|         // Display dialog if it is attached to our metaWindow | ||||
|         if (win.is_attached_dialog() && parent == this.metaWindow) { | ||||
|             this._doAddAttachedDialog(win, win.get_compositor_private()); | ||||
|             this._onMetaWindowSizeChanged(); | ||||
|         } | ||||
|  | ||||
|         // The dialog popped up after the user tried to close the window, | ||||
|         // assume it's a close confirmation and leave the overview | ||||
|         if (this._closeRequested) | ||||
|             this._activate(); | ||||
|     }, | ||||
|  | ||||
|     hasAttachedDialogs() { | ||||
| @@ -216,15 +230,14 @@ var WindowClone = new Lang.Class({ | ||||
|  | ||||
|     _doAddAttachedDialog(metaWin, realWin) { | ||||
|         let clone = new Clutter.Clone({ source: realWin }); | ||||
|         clone._updateId = metaWin.connect('size-changed', () => { | ||||
|             this._computeBoundingBox(); | ||||
|             this.emit('size-changed'); | ||||
|         }); | ||||
|         clone._sizeChangedId = metaWin.connect('size-changed', | ||||
|             this._onMetaWindowSizeChanged.bind(this)); | ||||
|         clone._posChangedId = metaWin.connect('position-changed', | ||||
|             this._onMetaWindowSizeChanged.bind(this)); | ||||
|         clone._destroyId = realWin.connect('destroy', () => { | ||||
|             clone.destroy(); | ||||
|  | ||||
|             this._computeBoundingBox(); | ||||
|             this.emit('size-changed'); | ||||
|             this._onMetaWindowSizeChanged(); | ||||
|         }); | ||||
|         this.actor.add_child(clone); | ||||
|     }, | ||||
| @@ -321,12 +334,13 @@ var WindowClone = new Lang.Class({ | ||||
|             else | ||||
|                 realWindow = child.source; | ||||
|  | ||||
|             realWindow.meta_window.disconnect(child._updateId); | ||||
|             realWindow.meta_window.disconnect(child._sizeChangedId); | ||||
|             realWindow.meta_window.disconnect(child._posChangedId); | ||||
|             realWindow.disconnect(child._destroyId); | ||||
|         }); | ||||
|     }, | ||||
|  | ||||
|     _onRealWindowSizeChanged() { | ||||
|     _onMetaWindowSizeChanged() { | ||||
|         this._computeBoundingBox(); | ||||
|         this.emit('size-changed'); | ||||
|     }, | ||||
| @@ -461,14 +475,12 @@ var WindowOverlay = new Lang.Class({ | ||||
|         button._overlap = 0; | ||||
|  | ||||
|         this._idleToggleCloseId = 0; | ||||
|         button.connect('clicked', this._closeWindow.bind(this)); | ||||
|         button.connect('clicked', () => this._windowClone.deleteAll()); | ||||
|  | ||||
|         windowClone.actor.connect('destroy', this._onDestroy.bind(this)); | ||||
|         windowClone.connect('show-chrome', this._onShowChrome.bind(this)); | ||||
|         windowClone.connect('hide-chrome', this._onHideChrome.bind(this)); | ||||
|  | ||||
|         this._windowAddedId = 0; | ||||
|  | ||||
|         button.hide(); | ||||
|         title.hide(); | ||||
|  | ||||
| @@ -589,43 +601,12 @@ var WindowOverlay = new Lang.Class({ | ||||
|         Tweener.addTween(actor, params); | ||||
|     }, | ||||
|  | ||||
|     _closeWindow(actor) { | ||||
|         let metaWindow = this._windowClone.metaWindow; | ||||
|         this._workspace = metaWindow.get_workspace(); | ||||
|  | ||||
|         this._windowAddedId = this._workspace.connect('window-added', | ||||
|                                                       this._onWindowAdded.bind(this)); | ||||
|  | ||||
|         this._windowClone.deleteAll(); | ||||
|     }, | ||||
|  | ||||
|     _windowCanClose() { | ||||
|         return this._windowClone.metaWindow.can_close() && | ||||
|                !this._windowClone.hasAttachedDialogs(); | ||||
|     }, | ||||
|  | ||||
|     _onWindowAdded(workspace, win) { | ||||
|         let metaWindow = this._windowClone.metaWindow; | ||||
|  | ||||
|         if (win.get_transient_for() == metaWindow) { | ||||
|             workspace.disconnect(this._windowAddedId); | ||||
|             this._windowAddedId = 0; | ||||
|  | ||||
|             // use an idle handler to avoid mapping problems - | ||||
|             // see comment in Workspace._windowAdded | ||||
|             let id = Mainloop.idle_add(() => { | ||||
|                 this._windowClone.emit('selected'); | ||||
|                 return GLib.SOURCE_REMOVE; | ||||
|             }); | ||||
|             GLib.Source.set_name_by_id(id, '[gnome-shell] this._windowClone.emit'); | ||||
|         } | ||||
|     }, | ||||
|  | ||||
|     _onDestroy() { | ||||
|         if (this._windowAddedId > 0) { | ||||
|             this._workspace.disconnect(this._windowAddedId); | ||||
|             this._windowAddedId = 0; | ||||
|         } | ||||
|         if (this._idleToggleCloseId > 0) { | ||||
|             Mainloop.source_remove(this._idleToggleCloseId); | ||||
|             this._idleToggleCloseId = 0; | ||||
| @@ -1515,21 +1496,17 @@ var Workspace = new Lang.Class({ | ||||
|             return; | ||||
|  | ||||
|         if (!this._isOverviewWindow(win)) { | ||||
|             if (metaWin.is_attached_dialog()) { | ||||
|                 let parent = metaWin.get_transient_for(); | ||||
|                 while (parent.is_attached_dialog()) | ||||
|                     parent = metaWin.get_transient_for(); | ||||
|             if (metaWin.get_transient_for() == null) | ||||
|                 return; | ||||
|  | ||||
|                 let idx = this._lookupIndex (parent); | ||||
|                 if (idx < 0) { | ||||
|                     // parent was not created yet, it will take care | ||||
|                     // of the dialog when created | ||||
|                     return; | ||||
|                 } | ||||
|             // Let the top-most ancestor handle all transients | ||||
|             let parent = metaWin.find_root_ancestor(); | ||||
|             let clone = this._windows.find(c => c.metaWindow == parent); | ||||
|  | ||||
|                 let clone = this._windows[idx]; | ||||
|                 clone.addAttachedDialog(metaWin); | ||||
|             } | ||||
|             // If no clone was found, the parent hasn't been created yet | ||||
|             // and will take care of the dialog when added | ||||
|             if (clone) | ||||
|                 clone.addDialog(metaWin); | ||||
|  | ||||
|             return; | ||||
|         } | ||||
|   | ||||
| @@ -68,7 +68,7 @@ var WindowClone = new Lang.Class({ | ||||
|         this.realWindow = realWindow; | ||||
|         this.metaWindow = realWindow.meta_window; | ||||
|  | ||||
|         this.clone._updateId = this.metaWindow.connect('position-changed', | ||||
|         this.clone._updateId = this.realWindow.connect('notify::position', | ||||
|                                                        this._onPositionChanged.bind(this)); | ||||
|         this.clone._destroyId = this.realWindow.connect('destroy', () => { | ||||
|             // First destroy the clone and then destroy everything | ||||
| @@ -153,7 +153,7 @@ var WindowClone = new Lang.Class({ | ||||
|         let clone = new Clutter.Clone({ source: realDialog }); | ||||
|         this._updateDialogPosition(realDialog, clone); | ||||
|  | ||||
|         clone._updateId = metaDialog.connect('position-changed', dialog => { | ||||
|         clone._updateId = realDialog.connect('notify::position', dialog => { | ||||
|             this._updateDialogPosition(dialog, clone); | ||||
|         }); | ||||
|         clone._destroyId = realDialog.connect('destroy', () => { | ||||
| @@ -171,7 +171,6 @@ var WindowClone = new Lang.Class({ | ||||
|     }, | ||||
|  | ||||
|     _onPositionChanged() { | ||||
|         let rect = this.metaWindow.get_frame_rect(); | ||||
|         this.actor.set_position(this.realWindow.x, this.realWindow.y); | ||||
|     }, | ||||
|  | ||||
| @@ -179,7 +178,7 @@ var WindowClone = new Lang.Class({ | ||||
|         this.actor.get_children().forEach(child => { | ||||
|             let realWindow = child.source; | ||||
|  | ||||
|             realWindow.meta_window.disconnect(child._updateId); | ||||
|             realWindow.disconnect(child._updateId); | ||||
|             realWindow.disconnect(child._destroyId); | ||||
|         }); | ||||
|     }, | ||||
| @@ -417,7 +416,7 @@ var WorkspaceThumbnail = new Lang.Class({ | ||||
|         } else if (metaWin.is_attached_dialog()) { | ||||
|             let parent = metaWin.get_transient_for(); | ||||
|             while (parent.is_attached_dialog()) | ||||
|                 parent = metaWin.get_transient_for(); | ||||
|                 parent = parent.get_transient_for(); | ||||
|  | ||||
|             let idx = this._lookupIndex (parent); | ||||
|             if (idx < 0) { | ||||
| @@ -679,7 +678,11 @@ var ThumbnailsBox = new Lang.Class({ | ||||
|         this._settings.connect('changed::dynamic-workspaces', | ||||
|             this._updateSwitcherVisibility.bind(this)); | ||||
|  | ||||
|         Main.layoutManager.connect('monitors-changed', this._rebuildThumbnails.bind(this)); | ||||
|         Main.layoutManager.connect('monitors-changed', () => { | ||||
|             this._destroyThumbnails(); | ||||
|             if (Main.overview.visible) | ||||
|                 this._createThumbnails(); | ||||
|         }); | ||||
|  | ||||
|         this._switchWorkspaceNotifyId = 0; | ||||
|         this._nWorkspacesNotifyId = 0; | ||||
| @@ -882,10 +885,6 @@ var ThumbnailsBox = new Lang.Class({ | ||||
|             Main.overview.connect('windows-restacked', | ||||
|                                   this._syncStacking.bind(this)); | ||||
|  | ||||
|         this._workareasChangedId = | ||||
|             global.display.connect('workareas-changed', | ||||
|                                    this._rebuildThumbnails.bind(this)); | ||||
|  | ||||
|         this._targetScale = 0; | ||||
|         this._scale = 0; | ||||
|         this._pendingScaleUpdate = false; | ||||
| @@ -919,24 +918,12 @@ var ThumbnailsBox = new Lang.Class({ | ||||
|             this._syncStackingId = 0; | ||||
|         } | ||||
|  | ||||
|         if (this._workareasChangedId > 0) { | ||||
|             global.display.disconnect(this._workareasChangedId); | ||||
|             this._workareasChangedId = 0; | ||||
|         } | ||||
|  | ||||
|         for (let w = 0; w < this._thumbnails.length; w++) | ||||
|             this._thumbnails[w].destroy(); | ||||
|         this._thumbnails = []; | ||||
|         this._porthole = null; | ||||
|     }, | ||||
|  | ||||
|     _rebuildThumbnails() { | ||||
|         this._destroyThumbnails(); | ||||
|  | ||||
|         if (Main.overview.visible) | ||||
|             this._createThumbnails(); | ||||
|     }, | ||||
|  | ||||
|     _workspacesChanged() { | ||||
|         let validThumbnails = | ||||
|             this._thumbnails.filter(t => t.state <= ThumbnailState.NORMAL); | ||||
|   | ||||
							
								
								
									
										22
									
								
								meson.build
									
									
									
									
									
								
							
							
						
						
									
										22
									
								
								meson.build
									
									
									
									
									
								
							| @@ -1,6 +1,6 @@ | ||||
| project('gnome-shell', 'c', | ||||
|   version: '3.29.4', | ||||
|   meson_version: '>= 0.42.0', | ||||
|   version: '3.30.0', | ||||
|   meson_version: '>= 0.47.0', | ||||
|   license: 'GPLv2+' | ||||
| ) | ||||
|  | ||||
| @@ -23,9 +23,9 @@ gi_req = '>= 1.49.1' | ||||
| gjs_req = '>= 1.47.0' | ||||
| gtk_req = '>= 3.15.0' | ||||
| json_glib_req = '>= 0.13.2' | ||||
| mutter_req = '>= 3.29.4' | ||||
| mutter_req = '>= 3.30.0' | ||||
| polkit_req = '>= 0.100' | ||||
| schemas_req = '>= 3.21.3' | ||||
| schemas_req = '>= 3.27.90' | ||||
| startup_req = '>= 0.11' | ||||
| ibus_req = '>= 1.5.2' | ||||
|  | ||||
| @@ -44,10 +44,12 @@ datadir = join_paths(prefix, get_option('datadir')) | ||||
| libdir = join_paths(prefix, get_option('libdir')) | ||||
| libexecdir = join_paths(prefix, get_option('libexecdir')) | ||||
| mandir = join_paths(prefix, get_option('mandir')) | ||||
| sysconfdir = join_paths(prefix, get_option('sysconfdir')) | ||||
|  | ||||
| pkgdatadir = join_paths(datadir, meson.project_name()) | ||||
| pkglibdir = join_paths(libdir, meson.project_name()) | ||||
|  | ||||
| autostartdir = join_paths(sysconfdir, 'xdg', 'autostart') | ||||
| convertdir = join_paths(datadir, 'GConf', 'gsettings') | ||||
| desktopdir = join_paths(datadir, 'applications') | ||||
| ifacedir = join_paths(datadir, 'dbus-1', 'interfaces') | ||||
| @@ -64,7 +66,7 @@ plugindir = get_variable('BROWSER_PLUGIN_DIR', mozplugindir) | ||||
| # systemduserunitdir = systemd_dep.get_pkgconfig_variable('systemduserunitdir', | ||||
| #                                                         define_variable: ['prefix', prefix]) | ||||
| # and uncomment systemd_dep below | ||||
| systemduserunitdir = join_paths(libdir, 'systemd', 'user') | ||||
| systemduserunitdir = join_paths(prefix, 'lib', 'systemd', 'user') | ||||
|  | ||||
| keybindings_dep = dependency('gnome-keybindings', required: false) | ||||
| if keybindings_dep.found() | ||||
| @@ -161,6 +163,11 @@ cdata.set_quoted('PACKAGE_VERSION', meson.project_version()) | ||||
| cdata.set('HAVE_NETWORKMANAGER', have_networkmanager) | ||||
| cdata.set('HAVE_SYSTEMD', have_systemd) | ||||
|  | ||||
| # New API added in glib-2.57.2 | ||||
| cdata.set('HAVE_GIO_DESKTOP_LAUNCH_URIS_WITH_FDS', | ||||
|           cc.has_function('g_desktop_app_info_launch_uris_as_manager_with_fds', | ||||
|                           dependencies : gio_dep) | ||||
| ) | ||||
| cdata.set('HAVE_FDWALK', cc.has_function('fdwalk')) | ||||
| cdata.set('HAVE_MALLINFO', cc.has_function('mallinfo')) | ||||
| cdata.set('HAVE_SYS_RESOURCE_H', cc.has_header('sys/resource.h')) | ||||
| @@ -168,6 +175,10 @@ cdata.set('HAVE__NL_TIME_FIRST_WEEKDAY', | ||||
|   cc.has_header_symbol('langinfo.h', '_NL_TIME_FIRST_WEEKDAY') | ||||
| ) | ||||
|  | ||||
| cdata.set('HAVE_FDWALK', | ||||
|           cc.has_function('fdwalk') | ||||
| ) | ||||
|  | ||||
| config_h = configure_file( | ||||
|   input: 'config.h.meson', | ||||
|   output: 'config.h', | ||||
| @@ -194,6 +205,7 @@ subdir('src') | ||||
| subdir('po') | ||||
| subdir('data') | ||||
| subdir('tests') | ||||
| subdir('tools') | ||||
|  | ||||
| if get_option('gtk_doc') | ||||
|   subdir('docs/reference') | ||||
|   | ||||
| @@ -40,6 +40,7 @@ js/ui/messageList.js | ||||
| js/ui/messageTray.js | ||||
| js/ui/mpris.js | ||||
| js/ui/notificationDaemon.js | ||||
| js/ui/osdWindow.js | ||||
| js/ui/overviewControls.js | ||||
| js/ui/overview.js | ||||
| js/ui/padOsd.js | ||||
| @@ -58,6 +59,7 @@ js/ui/status/location.js | ||||
| js/ui/status/network.js | ||||
| js/ui/status/nightLight.js | ||||
| js/ui/status/power.js | ||||
| js/ui/status/remoteAccess.js | ||||
| js/ui/status/rfkill.js | ||||
| js/ui/status/system.js | ||||
| js/ui/status/thunderbolt.js | ||||
|   | ||||
							
								
								
									
										230
									
								
								po/ca.po
									
									
									
									
									
								
							
							
						
						
									
										230
									
								
								po/ca.po
									
									
									
									
									
								
							| @@ -10,7 +10,7 @@ msgid "" | ||||
| msgstr "" | ||||
| "Project-Id-Version: HEAD\n" | ||||
| "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues\n" | ||||
| "POT-Creation-Date: 2018-04-13 19:54+0000\n" | ||||
| "POT-Creation-Date: 2018-08-01 18:08+0000\n" | ||||
| "PO-Revision-Date: 2018-03-10 21:24+0100\n" | ||||
| "Last-Translator: Robert Antoni Buj Gelonch <rbuj@fedoraproject.org>\n" | ||||
| "Language-Team: Catalan <tradgnome@softcatala.org>\n" | ||||
| @@ -299,36 +299,36 @@ msgstr "" | ||||
| "Si és «true» (cert), només les finestres de l'espai de treball actual es " | ||||
| "mostren en el canviador. En cas contrari, es mostren totes les finestres." | ||||
|  | ||||
| #: data/org.gnome.shell.gschema.xml.in:197 | ||||
| #: data/org.gnome.shell.gschema.xml.in:198 | ||||
| msgid "Attach modal dialog to the parent window" | ||||
| msgstr "Adjunta el diàleg modal a la finestra pare" | ||||
|  | ||||
| #: data/org.gnome.shell.gschema.xml.in:198 | ||||
| #: data/org.gnome.shell.gschema.xml.in:207 | ||||
| #: data/org.gnome.shell.gschema.xml.in:215 | ||||
| #: data/org.gnome.shell.gschema.xml.in:223 | ||||
| #: data/org.gnome.shell.gschema.xml.in:231 | ||||
| #: data/org.gnome.shell.gschema.xml.in:199 | ||||
| #: data/org.gnome.shell.gschema.xml.in:208 | ||||
| #: data/org.gnome.shell.gschema.xml.in:216 | ||||
| #: data/org.gnome.shell.gschema.xml.in:224 | ||||
| #: data/org.gnome.shell.gschema.xml.in:232 | ||||
| msgid "" | ||||
| "This key overrides the key in org.gnome.mutter when running GNOME Shell." | ||||
| msgstr "" | ||||
| "Si s'executa el GNOME Shell, aquesta clau sobreescriu la clau «org.gnome." | ||||
| "mutter»." | ||||
|  | ||||
| #: data/org.gnome.shell.gschema.xml.in:206 | ||||
| #: data/org.gnome.shell.gschema.xml.in:207 | ||||
| msgid "Enable edge tiling when dropping windows on screen edges" | ||||
| msgstr "" | ||||
| "Habilita el mòsaic a les vores en deixar anar les finestres a les vores de " | ||||
| "la pantalla" | ||||
|  | ||||
| #: data/org.gnome.shell.gschema.xml.in:214 | ||||
| #: data/org.gnome.shell.gschema.xml.in:215 | ||||
| msgid "Workspaces are managed dynamically" | ||||
| msgstr "Els espais de treball es gestionen dinàmicament" | ||||
|  | ||||
| #: data/org.gnome.shell.gschema.xml.in:222 | ||||
| #: data/org.gnome.shell.gschema.xml.in:223 | ||||
| msgid "Workspaces only on primary monitor" | ||||
| msgstr "Només en el monitor principal hi ha espais de treball" | ||||
|  | ||||
| #: data/org.gnome.shell.gschema.xml.in:230 | ||||
| #: data/org.gnome.shell.gschema.xml.in:231 | ||||
| msgid "Delay focus changes in mouse mode until the pointer stops moving" | ||||
| msgstr "" | ||||
| "Retarda el canvi del focus, quan s'està en mode ratolí, fins que el punter " | ||||
| @@ -369,20 +369,20 @@ msgctxt "button" | ||||
| msgid "Sign In" | ||||
| msgstr "Entra" | ||||
|  | ||||
| #: js/gdm/loginDialog.js:315 | ||||
| #: js/gdm/loginDialog.js:319 | ||||
| msgid "Choose Session" | ||||
| msgstr "Trieu la sessió" | ||||
|  | ||||
| #. translators: this message is shown below the user list on the | ||||
| #. login screen. It can be activated to reveal an entry for | ||||
| #. manually entering the username. | ||||
| #: js/gdm/loginDialog.js:458 | ||||
| #: js/gdm/loginDialog.js:462 | ||||
| msgid "Not listed?" | ||||
| msgstr "No esteu llistat?" | ||||
|  | ||||
| #. Translators: this message is shown below the username entry field | ||||
| #. to clue the user in on how to login to the local network realm | ||||
| #: js/gdm/loginDialog.js:887 | ||||
| #: js/gdm/loginDialog.js:891 | ||||
| #, javascript-format | ||||
| msgid "(e.g., user or %s)" | ||||
| msgstr "(p. ex. l'usuari o %s)" | ||||
| @@ -390,12 +390,12 @@ msgstr "(p. ex. l'usuari o %s)" | ||||
| #. TTLS and PEAP are actually much more complicated, but this complication | ||||
| #. is not visible here since we only care about phase2 authentication | ||||
| #. (and don't even care of which one) | ||||
| #: js/gdm/loginDialog.js:892 js/ui/components/networkAgent.js:243 | ||||
| #: js/gdm/loginDialog.js:896 js/ui/components/networkAgent.js:243 | ||||
| #: js/ui/components/networkAgent.js:261 | ||||
| msgid "Username: " | ||||
| msgstr "Nom d'usuari:" | ||||
|  | ||||
| #: js/gdm/loginDialog.js:1228 | ||||
| #: js/gdm/loginDialog.js:1234 | ||||
| msgid "Login Window" | ||||
| msgstr "Finestra d'entrada" | ||||
|  | ||||
| @@ -408,7 +408,7 @@ msgstr "Error d'autenticació" | ||||
| #. as a cue to display our own message. | ||||
| #. Translators: this message is shown below the password entry field | ||||
| #. to indicate the user can swipe their finger instead | ||||
| #: js/gdm/util.js:482 | ||||
| #: js/gdm/util.js:485 | ||||
| msgid "(or swipe finger)" | ||||
| msgstr "(o passeu el dit)" | ||||
|  | ||||
| @@ -649,23 +649,23 @@ msgstr "Freqüent" | ||||
| msgid "All" | ||||
| msgstr "Totes" | ||||
|  | ||||
| #: js/ui/appDisplay.js:1886 | ||||
| #: js/ui/appDisplay.js:1890 | ||||
| msgid "New Window" | ||||
| msgstr "Finestra nova" | ||||
|  | ||||
| #: js/ui/appDisplay.js:1900 | ||||
| #: js/ui/appDisplay.js:1904 | ||||
| msgid "Launch using Dedicated Graphics Card" | ||||
| msgstr "Inicia usant una targeta gràfica dedicada" | ||||
|  | ||||
| #: js/ui/appDisplay.js:1927 js/ui/dash.js:285 | ||||
| #: js/ui/appDisplay.js:1931 js/ui/dash.js:285 | ||||
| msgid "Remove from Favorites" | ||||
| msgstr "Suprimeix dels preferits" | ||||
|  | ||||
| #: js/ui/appDisplay.js:1933 | ||||
| #: js/ui/appDisplay.js:1937 | ||||
| msgid "Add to Favorites" | ||||
| msgstr "Afegeix als preferits" | ||||
|  | ||||
| #: js/ui/appDisplay.js:1943 | ||||
| #: js/ui/appDisplay.js:1947 | ||||
| msgid "Show Details" | ||||
| msgstr "Mostra els detalls" | ||||
|  | ||||
| @@ -695,7 +695,7 @@ msgstr "Auriculars" | ||||
| msgid "Headset" | ||||
| msgstr "Auriculars amb micròfon" | ||||
|  | ||||
| #: js/ui/audioDeviceSelection.js:82 js/ui/status/volume.js:221 | ||||
| #: js/ui/audioDeviceSelection.js:82 js/ui/status/volume.js:255 | ||||
| msgid "Microphone" | ||||
| msgstr "Micròfon" | ||||
|  | ||||
| @@ -707,7 +707,7 @@ msgstr "Canvia el fons de l'escriptori…" | ||||
| msgid "Display Settings" | ||||
| msgstr "Paràmetres de la pantalla" | ||||
|  | ||||
| #: js/ui/backgroundMenu.js:22 js/ui/status/system.js:264 | ||||
| #: js/ui/backgroundMenu.js:22 | ||||
| msgid "Settings" | ||||
| msgstr "Paràmetres" | ||||
|  | ||||
| @@ -812,35 +812,35 @@ msgctxt "event list time" | ||||
| msgid "All Day" | ||||
| msgstr "Tot el dia" | ||||
|  | ||||
| #: js/ui/calendar.js:864 | ||||
| #: js/ui/calendar.js:866 | ||||
| msgctxt "calendar heading" | ||||
| msgid "%A, %B %d" | ||||
| msgstr "%A %-d %B" | ||||
|  | ||||
| #: js/ui/calendar.js:868 | ||||
| #: js/ui/calendar.js:870 | ||||
| msgctxt "calendar heading" | ||||
| msgid "%A, %B %d, %Y" | ||||
| msgstr "%A %d %B de %Y" | ||||
|  | ||||
| #: js/ui/calendar.js:1086 | ||||
| #: js/ui/calendar.js:1100 | ||||
| msgid "No Notifications" | ||||
| msgstr "Cap notificació" | ||||
|  | ||||
| #: js/ui/calendar.js:1089 | ||||
| #: js/ui/calendar.js:1103 | ||||
| msgid "No Events" | ||||
| msgstr "Cap cita" | ||||
|  | ||||
| #: js/ui/calendar.js:1117 | ||||
| #: js/ui/calendar.js:1131 | ||||
| msgid "Clear All" | ||||
| msgstr "Neteja-ho tot" | ||||
|  | ||||
| #. Translators: %s is an application name | ||||
| #: js/ui/closeDialog.js:44 | ||||
| #: js/ui/closeDialog.js:47 | ||||
| #, javascript-format | ||||
| msgid "“%s” is not responding." | ||||
| msgstr "«%s» no està responent." | ||||
|  | ||||
| #: js/ui/closeDialog.js:45 | ||||
| #: js/ui/closeDialog.js:48 | ||||
| msgid "" | ||||
| "You may choose to wait a short while for it to continue or force the " | ||||
| "application to quit entirely." | ||||
| @@ -848,11 +848,11 @@ msgstr "" | ||||
| "Podeu esperar un moment perquè continuï o podeu forçar-ne la sortida " | ||||
| "completa." | ||||
|  | ||||
| #: js/ui/closeDialog.js:61 | ||||
| #: js/ui/closeDialog.js:64 | ||||
| msgid "Force Quit" | ||||
| msgstr "Força la sortida" | ||||
|  | ||||
| #: js/ui/closeDialog.js:64 | ||||
| #: js/ui/closeDialog.js:67 | ||||
| msgid "Wait" | ||||
| msgstr "Espera" | ||||
|  | ||||
| @@ -869,7 +869,7 @@ msgstr "S'ha desconnectat un dispositiu extern" | ||||
| msgid "Open with %s" | ||||
| msgstr "Obre amb %s" | ||||
|  | ||||
| #: js/ui/components/keyring.js:107 js/ui/components/polkitAgent.js:295 | ||||
| #: js/ui/components/keyring.js:107 js/ui/components/polkitAgent.js:297 | ||||
| msgid "Password:" | ||||
| msgstr "Contrasenya:" | ||||
|  | ||||
| @@ -906,11 +906,11 @@ msgstr "Contrasenya de la clau privada:" | ||||
| msgid "Service: " | ||||
| msgstr "Servei:" | ||||
|  | ||||
| #: js/ui/components/networkAgent.js:292 js/ui/components/networkAgent.js:659 | ||||
| #: js/ui/components/networkAgent.js:292 js/ui/components/networkAgent.js:664 | ||||
| msgid "Authentication required by wireless network" | ||||
| msgstr "La xarxa sense fil requereix autenticació" | ||||
|  | ||||
| #: js/ui/components/networkAgent.js:293 js/ui/components/networkAgent.js:660 | ||||
| #: js/ui/components/networkAgent.js:293 js/ui/components/networkAgent.js:665 | ||||
| #, javascript-format | ||||
| msgid "" | ||||
| "Passwords or encryption keys are required to access the wireless network " | ||||
| @@ -919,7 +919,7 @@ msgstr "" | ||||
| "Per accedir a la xarxa sense fil «%s» calen les contrasenyes o les claus " | ||||
| "d'encriptació." | ||||
|  | ||||
| #: js/ui/components/networkAgent.js:297 js/ui/components/networkAgent.js:663 | ||||
| #: js/ui/components/networkAgent.js:297 js/ui/components/networkAgent.js:668 | ||||
| msgid "Wired 802.1X authentication" | ||||
| msgstr "Autenticació 802.1X amb fil" | ||||
|  | ||||
| @@ -927,15 +927,15 @@ msgstr "Autenticació 802.1X amb fil" | ||||
| msgid "Network name: " | ||||
| msgstr "Nom de la xarxa: " | ||||
|  | ||||
| #: js/ui/components/networkAgent.js:304 js/ui/components/networkAgent.js:667 | ||||
| #: js/ui/components/networkAgent.js:304 js/ui/components/networkAgent.js:672 | ||||
| msgid "DSL authentication" | ||||
| msgstr "Autenticació DSL" | ||||
|  | ||||
| #: js/ui/components/networkAgent.js:311 js/ui/components/networkAgent.js:673 | ||||
| #: js/ui/components/networkAgent.js:311 js/ui/components/networkAgent.js:678 | ||||
| msgid "PIN code required" | ||||
| msgstr "Cal que introduïu el codi PIN" | ||||
|  | ||||
| #: js/ui/components/networkAgent.js:312 js/ui/components/networkAgent.js:674 | ||||
| #: js/ui/components/networkAgent.js:312 js/ui/components/networkAgent.js:679 | ||||
| msgid "PIN code is needed for the mobile broadband device" | ||||
| msgstr "Cal que introduïu el codi PIN del dispositiu de banda ampla mòbil" | ||||
|  | ||||
| @@ -943,17 +943,17 @@ msgstr "Cal que introduïu el codi PIN del dispositiu de banda ampla mòbil" | ||||
| msgid "PIN: " | ||||
| msgstr "PIN: " | ||||
|  | ||||
| #: js/ui/components/networkAgent.js:320 js/ui/components/networkAgent.js:680 | ||||
| #: js/ui/components/networkAgent.js:320 js/ui/components/networkAgent.js:685 | ||||
| msgid "Mobile broadband network password" | ||||
| msgstr "Contrasenya de la xarxa de banda ampla mòbil" | ||||
|  | ||||
| #: js/ui/components/networkAgent.js:321 js/ui/components/networkAgent.js:664 | ||||
| #: js/ui/components/networkAgent.js:668 js/ui/components/networkAgent.js:681 | ||||
| #: js/ui/components/networkAgent.js:321 js/ui/components/networkAgent.js:669 | ||||
| #: js/ui/components/networkAgent.js:673 js/ui/components/networkAgent.js:686 | ||||
| #, javascript-format | ||||
| msgid "A password is required to connect to “%s”." | ||||
| msgstr "Cal introduir una contrasenya per connectar-vos a «%s»." | ||||
|  | ||||
| #: js/ui/components/networkAgent.js:648 js/ui/status/network.js:1691 | ||||
| #: js/ui/components/networkAgent.js:653 js/ui/status/network.js:1704 | ||||
| msgid "Network Manager" | ||||
| msgstr "Gestor de connexions de xarxa" | ||||
|  | ||||
| @@ -973,7 +973,7 @@ msgstr "Autentica" | ||||
| #. * requested authentication was not gained; this can happen | ||||
| #. * because of an authentication error (like invalid password), | ||||
| #. * for instance. | ||||
| #: js/ui/components/polkitAgent.js:281 js/ui/shellMountOperation.js:327 | ||||
| #: js/ui/components/polkitAgent.js:283 js/ui/shellMountOperation.js:327 | ||||
| msgid "Sorry, that didn’t work. Please try again." | ||||
| msgstr "No ha funcionat. Torneu-ho a provar." | ||||
|  | ||||
| @@ -1308,13 +1308,13 @@ msgid "Leave On" | ||||
| msgstr "Deixa-ho actiu" | ||||
|  | ||||
| #: js/ui/kbdA11yDialog.js:59 js/ui/status/bluetooth.js:143 | ||||
| #: js/ui/status/network.js:1281 | ||||
| #: js/ui/status/network.js:1294 | ||||
| msgid "Turn On" | ||||
| msgstr "Activa" | ||||
|  | ||||
| #: js/ui/kbdA11yDialog.js:67 js/ui/status/bluetooth.js:143 | ||||
| #: js/ui/status/network.js:154 js/ui/status/network.js:337 | ||||
| #: js/ui/status/network.js:1281 js/ui/status/network.js:1396 | ||||
| #: js/ui/status/network.js:1294 js/ui/status/network.js:1409 | ||||
| #: js/ui/status/nightLight.js:47 js/ui/status/rfkill.js:90 | ||||
| #: js/ui/status/rfkill.js:117 | ||||
| msgid "Turn Off" | ||||
| @@ -1376,7 +1376,7 @@ msgstr "Mostra el codi font" | ||||
| msgid "Web Page" | ||||
| msgstr "Pàgina web" | ||||
|  | ||||
| #: js/ui/messageTray.js:1493 | ||||
| #: js/ui/messageTray.js:1495 | ||||
| msgid "System Information" | ||||
| msgstr "Informació de l'ordinador" | ||||
|  | ||||
| @@ -1388,6 +1388,10 @@ msgstr "Artista desconegut" | ||||
| msgid "Unknown title" | ||||
| msgstr "Títol desconegut" | ||||
|  | ||||
| #: js/ui/osdWindow.js:32 js/ui/status/volume.js:204 | ||||
| msgid "Volume" | ||||
| msgstr "Volum" | ||||
|  | ||||
| #: js/ui/overview.js:83 | ||||
| msgid "Undo" | ||||
| msgstr "Desfés" | ||||
| @@ -1430,42 +1434,42 @@ msgstr "Assigna la pulsació de tecla" | ||||
| msgid "Done" | ||||
| msgstr "Fet" | ||||
|  | ||||
| #: js/ui/padOsd.js:740 | ||||
| #: js/ui/padOsd.js:742 | ||||
| msgid "Edit…" | ||||
| msgstr "Edita…" | ||||
|  | ||||
| #: js/ui/padOsd.js:782 js/ui/padOsd.js:887 | ||||
| #: js/ui/padOsd.js:784 js/ui/padOsd.js:889 | ||||
| msgid "None" | ||||
| msgstr "Cap" | ||||
|  | ||||
| #: js/ui/padOsd.js:841 | ||||
| #: js/ui/padOsd.js:843 | ||||
| msgid "Press a button to configure" | ||||
| msgstr "Premeu un botó per a configurar" | ||||
|  | ||||
| #: js/ui/padOsd.js:842 | ||||
| #: js/ui/padOsd.js:844 | ||||
| msgid "Press Esc to exit" | ||||
| msgstr "Premeu Esc per sortir" | ||||
|  | ||||
| #: js/ui/padOsd.js:845 | ||||
| #: js/ui/padOsd.js:847 | ||||
| msgid "Press any key to exit" | ||||
| msgstr "Premeu qualsevol tecla per sortir" | ||||
|  | ||||
| #: js/ui/panel.js:355 | ||||
| #: js/ui/panel.js:356 | ||||
| msgid "Quit" | ||||
| msgstr "Surt" | ||||
|  | ||||
| #. Translators: If there is no suitable word for "Activities" | ||||
| #. in your language, you can use the word for "Overview". | ||||
| #: js/ui/panel.js:411 | ||||
| #: js/ui/panel.js:412 | ||||
| msgid "Activities" | ||||
| msgstr "Activitats" | ||||
|  | ||||
| #: js/ui/panel.js:692 | ||||
| #: js/ui/panel.js:693 | ||||
| msgctxt "System menu in the top bar" | ||||
| msgid "System" | ||||
| msgstr "Sistema" | ||||
|  | ||||
| #: js/ui/panel.js:811 | ||||
| #: js/ui/panel.js:816 | ||||
| msgid "Top Bar" | ||||
| msgstr "Barra superior" | ||||
|  | ||||
| @@ -1474,23 +1478,23 @@ msgstr "Barra superior" | ||||
| #. "ON" and "OFF") or "toggle-switch-intl" (for toggle | ||||
| #. switches containing "◯" and "|"). Other values will | ||||
| #. simply result in invisible toggle switches. | ||||
| #: js/ui/popupMenu.js:291 | ||||
| #: js/ui/popupMenu.js:300 | ||||
| msgid "toggle-switch-us" | ||||
| msgstr "toggle-switch-intl" | ||||
|  | ||||
| #: js/ui/runDialog.js:70 | ||||
| #: js/ui/runDialog.js:74 | ||||
| msgid "Enter a Command" | ||||
| msgstr "Introduïu una ordre" | ||||
|  | ||||
| #: js/ui/runDialog.js:110 js/ui/windowMenu.js:175 | ||||
| #: js/ui/runDialog.js:114 js/ui/windowMenu.js:174 | ||||
| msgid "Close" | ||||
| msgstr "Tanca" | ||||
|  | ||||
| #: js/ui/runDialog.js:273 | ||||
| #: js/ui/runDialog.js:278 | ||||
| msgid "Restart is not available on Wayland" | ||||
| msgstr "El reinici no està disponible en Wayland" | ||||
|  | ||||
| #: js/ui/runDialog.js:278 | ||||
| #: js/ui/runDialog.js:283 | ||||
| msgid "Restarting…" | ||||
| msgstr "S'està reiniciant…" | ||||
|  | ||||
| @@ -1514,7 +1518,7 @@ msgid_plural "%d new notifications" | ||||
| msgstr[0] "%d notificació nova" | ||||
| msgstr[1] "%d notificacions noves" | ||||
|  | ||||
| #: js/ui/screenShield.js:451 js/ui/status/system.js:283 | ||||
| #: js/ui/screenShield.js:451 js/ui/status/system.js:294 | ||||
| msgid "Lock" | ||||
| msgstr "Bloqueja" | ||||
|  | ||||
| @@ -1697,7 +1701,7 @@ msgid "<unknown>" | ||||
| msgstr "<desconegut>" | ||||
|  | ||||
| #. Translators: %s is a network identifier | ||||
| #: js/ui/status/network.js:441 js/ui/status/network.js:1310 | ||||
| #: js/ui/status/network.js:441 js/ui/status/network.js:1323 | ||||
| #, javascript-format | ||||
| msgid "%s Off" | ||||
| msgstr "%s apagat" | ||||
| @@ -1724,7 +1728,7 @@ msgid "%s Disconnecting" | ||||
| msgstr "%s s'està desconnectant" | ||||
|  | ||||
| #. Translators: %s is a network identifier | ||||
| #: js/ui/status/network.js:459 js/ui/status/network.js:1302 | ||||
| #: js/ui/status/network.js:459 js/ui/status/network.js:1315 | ||||
| #, javascript-format | ||||
| msgid "%s Connecting" | ||||
| msgstr "%s s'està connectant" | ||||
| @@ -1764,7 +1768,7 @@ msgid "Mobile Broadband Settings" | ||||
| msgstr "Configuració de la xarxa de banda ampla mòbil" | ||||
|  | ||||
| #. Translators: %s is a network identifier | ||||
| #: js/ui/status/network.js:578 js/ui/status/network.js:1307 | ||||
| #: js/ui/status/network.js:578 js/ui/status/network.js:1320 | ||||
| #, javascript-format | ||||
| msgid "%s Hardware Disabled" | ||||
| msgstr "%s maquinari inhabilitat" | ||||
| @@ -1820,81 +1824,81 @@ msgstr "Cap xarxa" | ||||
| msgid "Use hardware switch to turn off" | ||||
| msgstr "Utilitza l'interruptor de maquinari per desactivar-la" | ||||
|  | ||||
| #: js/ui/status/network.js:1173 | ||||
| #: js/ui/status/network.js:1186 | ||||
| msgid "Select Network" | ||||
| msgstr "Trieu una xarxa" | ||||
|  | ||||
| #: js/ui/status/network.js:1179 | ||||
| #: js/ui/status/network.js:1192 | ||||
| msgid "Wi-Fi Settings" | ||||
| msgstr "Paràmetres de la xarxa sense fil" | ||||
|  | ||||
| #. Translators: %s is a network identifier | ||||
| #: js/ui/status/network.js:1298 | ||||
| #: js/ui/status/network.js:1311 | ||||
| #, javascript-format | ||||
| msgid "%s Hotspot Active" | ||||
| msgstr "Hostpot %s actiu" | ||||
|  | ||||
| #. Translators: %s is a network identifier | ||||
| #: js/ui/status/network.js:1313 | ||||
| #: js/ui/status/network.js:1326 | ||||
| #, javascript-format | ||||
| msgid "%s Not Connected" | ||||
| msgstr "%s no està connectat" | ||||
|  | ||||
| #: js/ui/status/network.js:1413 | ||||
| #: js/ui/status/network.js:1426 | ||||
| msgid "connecting…" | ||||
| msgstr "s'està connectant..." | ||||
|  | ||||
| #. Translators: this is for network connections that require some kind of key or password | ||||
| #: js/ui/status/network.js:1416 | ||||
| #: js/ui/status/network.js:1429 | ||||
| msgid "authentication required" | ||||
| msgstr "cal autenticació" | ||||
|  | ||||
| #: js/ui/status/network.js:1418 | ||||
| #: js/ui/status/network.js:1431 | ||||
| msgid "connection failed" | ||||
| msgstr "ha fallat la connexió" | ||||
|  | ||||
| #: js/ui/status/network.js:1472 | ||||
| #: js/ui/status/network.js:1485 | ||||
| msgid "VPN Settings" | ||||
| msgstr "Paràmetres de la VPN" | ||||
|  | ||||
| #: js/ui/status/network.js:1485 | ||||
| #: js/ui/status/network.js:1498 | ||||
| msgid "VPN" | ||||
| msgstr "VPN" | ||||
|  | ||||
| #: js/ui/status/network.js:1495 | ||||
| #: js/ui/status/network.js:1508 | ||||
| msgid "VPN Off" | ||||
| msgstr "VPN apagada" | ||||
|  | ||||
| #: js/ui/status/network.js:1559 js/ui/status/rfkill.js:93 | ||||
| #: js/ui/status/network.js:1572 js/ui/status/rfkill.js:93 | ||||
| msgid "Network Settings" | ||||
| msgstr "Paràmetres de xarxa" | ||||
|  | ||||
| #: js/ui/status/network.js:1588 | ||||
| #: js/ui/status/network.js:1601 | ||||
| #, javascript-format | ||||
| msgid "%s Wired Connection" | ||||
| msgid_plural "%s Wired Connections" | ||||
| msgstr[0] "%s connexió amb fil" | ||||
| msgstr[1] "%s connexions amb fil" | ||||
|  | ||||
| #: js/ui/status/network.js:1592 | ||||
| #: js/ui/status/network.js:1605 | ||||
| #, javascript-format | ||||
| msgid "%s Wi-Fi Connection" | ||||
| msgid_plural "%s Wi-Fi Connections" | ||||
| msgstr[0] "%s connexió Wifi" | ||||
| msgstr[1] "%s connexions Wifi" | ||||
|  | ||||
| #: js/ui/status/network.js:1596 | ||||
| #: js/ui/status/network.js:1609 | ||||
| #, javascript-format | ||||
| msgid "%s Modem Connection" | ||||
| msgid_plural "%s Modem Connections" | ||||
| msgstr[0] "%s connexió mòdem" | ||||
| msgstr[1] "%s connexions mòdem" | ||||
|  | ||||
| #: js/ui/status/network.js:1728 | ||||
| #: js/ui/status/network.js:1741 | ||||
| msgid "Connection failed" | ||||
| msgstr "Ha fallat la connexió" | ||||
|  | ||||
| #: js/ui/status/network.js:1729 | ||||
| #: js/ui/status/network.js:1742 | ||||
| msgid "Activation of network connection failed" | ||||
| msgstr "Ha fallat l'activació de la connexió de xarxa" | ||||
|  | ||||
| @@ -1945,6 +1949,14 @@ msgstr "%d∶%02d per completar la càrrega (%d %%)" | ||||
| msgid "%d %%" | ||||
| msgstr "%d %%" | ||||
|  | ||||
| #: js/ui/status/remoteAccess.js:46 | ||||
| msgid "Screen is Being Shared" | ||||
| msgstr "Es comparteix la pantalla" | ||||
|  | ||||
| #: js/ui/status/remoteAccess.js:48 | ||||
| msgid "Turn off" | ||||
| msgstr "Desactiva" | ||||
|  | ||||
| #. The menu only appears when airplane mode is on, so just | ||||
| #. statically build it as if it was on, rather than dynamically | ||||
| #. changing the menu contents. | ||||
| @@ -1964,28 +1976,28 @@ msgstr "Surt" | ||||
| msgid "Account Settings" | ||||
| msgstr "Paràmetres del compte" | ||||
|  | ||||
| #: js/ui/status/system.js:268 | ||||
| #: js/ui/status/system.js:279 | ||||
| msgid "Orientation Lock" | ||||
| msgstr "Bloqueja l'orientació" | ||||
|  | ||||
| #: js/ui/status/system.js:294 | ||||
| #: js/ui/status/system.js:305 | ||||
| msgid "Suspend" | ||||
| msgstr "Atura temporalment" | ||||
|  | ||||
| #: js/ui/status/system.js:304 | ||||
| #: js/ui/status/system.js:315 | ||||
| msgid "Power Off" | ||||
| msgstr "Apaga" | ||||
|  | ||||
| #: js/ui/status/thunderbolt.js:294 | ||||
| #: js/ui/status/thunderbolt.js:298 | ||||
| msgid "Thunderbolt" | ||||
| msgstr "Thunderbolt" | ||||
|  | ||||
| #. we are done | ||||
| #: js/ui/status/thunderbolt.js:350 | ||||
| #: js/ui/status/thunderbolt.js:354 | ||||
| msgid "Unknown Thunderbolt device" | ||||
| msgstr "Dispostiu Thunderbolt desconegut" | ||||
|  | ||||
| #: js/ui/status/thunderbolt.js:351 | ||||
| #: js/ui/status/thunderbolt.js:355 | ||||
| msgid "" | ||||
| "New device has been detected while you were away. Please disconnect and " | ||||
| "reconnect the device to start using it." | ||||
| @@ -1993,23 +2005,19 @@ msgstr "" | ||||
| "El nou dispositiu s'ha detectat mentre estàveu absents. Desconnecteu i " | ||||
| "torneu a connectar el dispositiu per a començar a utilitzar-lo." | ||||
|  | ||||
| #: js/ui/status/thunderbolt.js:356 | ||||
| #: js/ui/status/thunderbolt.js:360 | ||||
| msgid "Thunderbolt authorization error" | ||||
| msgstr "S'ha produït un error d'autorització a Thunderbolt" | ||||
|  | ||||
| #: js/ui/status/thunderbolt.js:357 | ||||
| #,  javascript-format | ||||
| #: js/ui/status/thunderbolt.js:361 | ||||
| #, javascript-format | ||||
| msgid "Could not authorize the Thunderbolt device: %s" | ||||
| msgstr "No s'ha pogut autoritzar el dispositiu Thunderbolt: %s" | ||||
|  | ||||
| #: js/ui/status/volume.js:128 | ||||
| #: js/ui/status/volume.js:135 | ||||
| msgid "Volume changed" | ||||
| msgstr "S'ha canviat el volum" | ||||
|  | ||||
| #: js/ui/status/volume.js:170 | ||||
| msgid "Volume" | ||||
| msgstr "Volum" | ||||
|  | ||||
| #. Translators: this is for display mirroring i.e. cloning. | ||||
| #. * Try to keep it under around 15 characters. | ||||
| #. | ||||
| @@ -2059,22 +2067,22 @@ msgstr "Cerca" | ||||
| msgid "“%s” is ready" | ||||
| msgstr "«%s» ja està a punt" | ||||
|  | ||||
| #: js/ui/windowManager.js:72 | ||||
| #: js/ui/windowManager.js:74 | ||||
| msgid "Do you want to keep these display settings?" | ||||
| msgstr "Voleu mantenir aquesta configuració de la pantalla?" | ||||
|  | ||||
| #. Translators: this and the following message should be limited in lenght, | ||||
| #. to avoid ellipsizing the labels. | ||||
| #. | ||||
| #: js/ui/windowManager.js:84 | ||||
| #: js/ui/windowManager.js:86 | ||||
| msgid "Revert Settings" | ||||
| msgstr "Descarta els canvis" | ||||
|  | ||||
| #: js/ui/windowManager.js:87 | ||||
| #: js/ui/windowManager.js:89 | ||||
| msgid "Keep Changes" | ||||
| msgstr "Mantén els canvis" | ||||
|  | ||||
| #: js/ui/windowManager.js:105 | ||||
| #: js/ui/windowManager.js:107 | ||||
| #, javascript-format | ||||
| msgid "Settings changes will revert in %d second" | ||||
| msgid_plural "Settings changes will revert in %d seconds" | ||||
| @@ -2083,7 +2091,7 @@ msgstr[1] "Es descartaran els canvis d'aquí %d segons" | ||||
|  | ||||
| #. Translators: This represents the size of a window. The first number is | ||||
| #. * the width of the window and the second is the height. | ||||
| #: js/ui/windowManager.js:660 | ||||
| #: js/ui/windowManager.js:689 | ||||
| #, javascript-format | ||||
| msgid "%d × %d" | ||||
| msgstr "%d × %d" | ||||
| @@ -2136,19 +2144,19 @@ msgstr "Mou a l'espai de treball superior" | ||||
| msgid "Move to Workspace Down" | ||||
| msgstr "Mou a l'espai de treball inferior" | ||||
|  | ||||
| #: js/ui/windowMenu.js:140 | ||||
| #: js/ui/windowMenu.js:139 | ||||
| msgid "Move to Monitor Up" | ||||
| msgstr "Mou a la pantalla de dalt" | ||||
|  | ||||
| #: js/ui/windowMenu.js:149 | ||||
| #: js/ui/windowMenu.js:148 | ||||
| msgid "Move to Monitor Down" | ||||
| msgstr "Mou a la pantalla de baix" | ||||
|  | ||||
| #: js/ui/windowMenu.js:158 | ||||
| #: js/ui/windowMenu.js:157 | ||||
| msgid "Move to Monitor Left" | ||||
| msgstr "Mou a la pantalla de l'esquerra" | ||||
|  | ||||
| #: js/ui/windowMenu.js:167 | ||||
| #: js/ui/windowMenu.js:166 | ||||
| msgid "Move to Monitor Right" | ||||
| msgstr "Mou a la pantalla de la dreta" | ||||
|  | ||||
| @@ -2161,28 +2169,28 @@ msgstr "Calendari de l'Evolution" | ||||
| msgid "evolution" | ||||
| msgstr "evolution" | ||||
|  | ||||
| #: src/main.c:432 | ||||
| #: src/main.c:410 | ||||
| msgid "Print version" | ||||
| msgstr "Mostra la versió" | ||||
|  | ||||
| #: src/main.c:438 | ||||
| #: src/main.c:416 | ||||
| msgid "Mode used by GDM for login screen" | ||||
| msgstr "El mode que utilitzarà el GDM per a la pantalla d'entrada" | ||||
|  | ||||
| #: src/main.c:444 | ||||
| #: src/main.c:422 | ||||
| msgid "Use a specific mode, e.g. “gdm” for login screen" | ||||
| msgstr "Utilitza un mode específic, p. ex. «gdm» per la pantalla d'entrada" | ||||
|  | ||||
| #: src/main.c:450 | ||||
| #: src/main.c:428 | ||||
| msgid "List possible modes" | ||||
| msgstr "Llista els modes possibles" | ||||
|  | ||||
| #: src/shell-app.c:270 | ||||
| #: src/shell-app.c:272 | ||||
| msgctxt "program" | ||||
| msgid "Unknown" | ||||
| msgstr "Desconegut" | ||||
|  | ||||
| #: src/shell-app.c:511 | ||||
| #: src/shell-app.c:523 | ||||
| #, c-format | ||||
| msgid "Failed to launch “%s”" | ||||
| msgstr "No s'ha pogut iniciar «%s»" | ||||
|   | ||||
							
								
								
									
										520
									
								
								po/en_GB.po
									
									
									
									
									
								
							
							
						
						
									
										520
									
								
								po/en_GB.po
									
									
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										164
									
								
								po/es.po
									
									
									
									
									
								
							
							
						
						
									
										164
									
								
								po/es.po
									
									
									
									
									
								
							| @@ -9,8 +9,8 @@ msgid "" | ||||
| msgstr "" | ||||
| "Project-Id-Version: gnome-shell.master\n" | ||||
| "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues\n" | ||||
| "POT-Creation-Date: 2018-04-13 19:54+0000\n" | ||||
| "PO-Revision-Date: 2018-04-25 12:54+0200\n" | ||||
| "POT-Creation-Date: 2018-07-24 18:34+0000\n" | ||||
| "PO-Revision-Date: 2018-07-27 13:15+0200\n" | ||||
| "Last-Translator: Daniel Mustieles <daniel.mustieles@gmail.com>\n" | ||||
| "Language-Team: es <gnome-es-list@gnome.org>\n" | ||||
| "Language: es\n" | ||||
| @@ -18,7 +18,7 @@ msgstr "" | ||||
| "Content-Type: text/plain; charset=UTF-8\n" | ||||
| "Content-Transfer-Encoding: 8bit\n" | ||||
| "Plural-Forms: nplurals=2; plural=(n != 1);\n" | ||||
| "X-Generator: Gtranslator 2.91.6\n" | ||||
| "X-Generator: Gtranslator 2.91.7\n" | ||||
|  | ||||
| #: data/50-gnome-shell-system.xml:6 | ||||
| msgid "System" | ||||
| @@ -366,20 +366,20 @@ msgctxt "button" | ||||
| msgid "Sign In" | ||||
| msgstr "Iniciar sesión" | ||||
|  | ||||
| #: js/gdm/loginDialog.js:315 | ||||
| #: js/gdm/loginDialog.js:319 | ||||
| msgid "Choose Session" | ||||
| msgstr "Elegir sesión" | ||||
|  | ||||
| #. translators: this message is shown below the user list on the | ||||
| #. login screen. It can be activated to reveal an entry for | ||||
| #. manually entering the username. | ||||
| #: js/gdm/loginDialog.js:458 | ||||
| #: js/gdm/loginDialog.js:462 | ||||
| msgid "Not listed?" | ||||
| msgstr "¿No está en la lista?" | ||||
|  | ||||
| #. Translators: this message is shown below the username entry field | ||||
| #. to clue the user in on how to login to the local network realm | ||||
| #: js/gdm/loginDialog.js:887 | ||||
| #: js/gdm/loginDialog.js:891 | ||||
| #, javascript-format | ||||
| msgid "(e.g., user or %s)" | ||||
| msgstr "(ej., usuario o %s)" | ||||
| @@ -387,12 +387,12 @@ msgstr "(ej., usuario o %s)" | ||||
| #. TTLS and PEAP are actually much more complicated, but this complication | ||||
| #. is not visible here since we only care about phase2 authentication | ||||
| #. (and don't even care of which one) | ||||
| #: js/gdm/loginDialog.js:892 js/ui/components/networkAgent.js:243 | ||||
| #: js/gdm/loginDialog.js:896 js/ui/components/networkAgent.js:243 | ||||
| #: js/ui/components/networkAgent.js:261 | ||||
| msgid "Username: " | ||||
| msgstr "Nombre de usuario:" | ||||
|  | ||||
| #: js/gdm/loginDialog.js:1228 | ||||
| #: js/gdm/loginDialog.js:1234 | ||||
| msgid "Login Window" | ||||
| msgstr "Ventana de inicio de sesión" | ||||
|  | ||||
| @@ -405,7 +405,7 @@ msgstr "Error de autenticación" | ||||
| #. as a cue to display our own message. | ||||
| #. Translators: this message is shown below the password entry field | ||||
| #. to indicate the user can swipe their finger instead | ||||
| #: js/gdm/util.js:482 | ||||
| #: js/gdm/util.js:485 | ||||
| msgid "(or swipe finger)" | ||||
| msgstr "(o pase el dedo)" | ||||
|  | ||||
| @@ -645,23 +645,23 @@ msgstr "Frecuentes" | ||||
| msgid "All" | ||||
| msgstr "Todas" | ||||
|  | ||||
| #: js/ui/appDisplay.js:1886 | ||||
| #: js/ui/appDisplay.js:1890 | ||||
| msgid "New Window" | ||||
| msgstr "Ventana nueva" | ||||
|  | ||||
| #: js/ui/appDisplay.js:1900 | ||||
| #: js/ui/appDisplay.js:1904 | ||||
| msgid "Launch using Dedicated Graphics Card" | ||||
| msgstr "Lanzar usando la tarjeta gráfica dedicada" | ||||
|  | ||||
| #: js/ui/appDisplay.js:1927 js/ui/dash.js:285 | ||||
| #: js/ui/appDisplay.js:1931 js/ui/dash.js:285 | ||||
| msgid "Remove from Favorites" | ||||
| msgstr "Quitar de los favoritos" | ||||
|  | ||||
| #: js/ui/appDisplay.js:1933 | ||||
| #: js/ui/appDisplay.js:1937 | ||||
| msgid "Add to Favorites" | ||||
| msgstr "Añadir a los favoritos" | ||||
|  | ||||
| #: js/ui/appDisplay.js:1943 | ||||
| #: js/ui/appDisplay.js:1947 | ||||
| msgid "Show Details" | ||||
| msgstr "Mostrar detalles" | ||||
|  | ||||
| @@ -808,35 +808,35 @@ msgctxt "event list time" | ||||
| msgid "All Day" | ||||
| msgstr "Todo el día" | ||||
|  | ||||
| #: js/ui/calendar.js:864 | ||||
| #: js/ui/calendar.js:866 | ||||
| msgctxt "calendar heading" | ||||
| msgid "%A, %B %d" | ||||
| msgstr "%A, %d de %B" | ||||
|  | ||||
| #: js/ui/calendar.js:868 | ||||
| #: js/ui/calendar.js:870 | ||||
| msgctxt "calendar heading" | ||||
| msgid "%A, %B %d, %Y" | ||||
| msgstr "%A, %d de %B de %Y" | ||||
|  | ||||
| #: js/ui/calendar.js:1086 | ||||
| #: js/ui/calendar.js:1100 | ||||
| msgid "No Notifications" | ||||
| msgstr "No hay notificaciones" | ||||
|  | ||||
| #: js/ui/calendar.js:1089 | ||||
| #: js/ui/calendar.js:1103 | ||||
| msgid "No Events" | ||||
| msgstr "No hay eventos" | ||||
|  | ||||
| #: js/ui/calendar.js:1117 | ||||
| #: js/ui/calendar.js:1131 | ||||
| msgid "Clear All" | ||||
| msgstr "Limpiar todo" | ||||
|  | ||||
| #. Translators: %s is an application name | ||||
| #: js/ui/closeDialog.js:44 | ||||
| #: js/ui/closeDialog.js:47 | ||||
| #, javascript-format | ||||
| msgid "“%s” is not responding." | ||||
| msgstr "«%s» no responde." | ||||
|  | ||||
| #: js/ui/closeDialog.js:45 | ||||
| #: js/ui/closeDialog.js:48 | ||||
| msgid "" | ||||
| "You may choose to wait a short while for it to continue or force the " | ||||
| "application to quit entirely." | ||||
| @@ -844,11 +844,11 @@ msgstr "" | ||||
| "Puede elegir esperar un momento para que continúe o forzar a la aplicación a " | ||||
| "terminar." | ||||
|  | ||||
| #: js/ui/closeDialog.js:61 | ||||
| #: js/ui/closeDialog.js:64 | ||||
| msgid "Force Quit" | ||||
| msgstr "Forzar la salida" | ||||
|  | ||||
| #: js/ui/closeDialog.js:64 | ||||
| #: js/ui/closeDialog.js:67 | ||||
| msgid "Wait" | ||||
| msgstr "Esperar" | ||||
|  | ||||
| @@ -865,7 +865,7 @@ msgstr "Dispositivo externo desconectado" | ||||
| msgid "Open with %s" | ||||
| msgstr "Abrir con %s" | ||||
|  | ||||
| #: js/ui/components/keyring.js:107 js/ui/components/polkitAgent.js:295 | ||||
| #: js/ui/components/keyring.js:107 js/ui/components/polkitAgent.js:297 | ||||
| msgid "Password:" | ||||
| msgstr "Contraseña:" | ||||
|  | ||||
| @@ -902,11 +902,11 @@ msgstr "Contraseña de la clave privada:" | ||||
| msgid "Service: " | ||||
| msgstr "Servicio:" | ||||
|  | ||||
| #: js/ui/components/networkAgent.js:292 js/ui/components/networkAgent.js:659 | ||||
| #: js/ui/components/networkAgent.js:292 js/ui/components/networkAgent.js:664 | ||||
| msgid "Authentication required by wireless network" | ||||
| msgstr "La red inalámbrica requiere autenticación" | ||||
|  | ||||
| #: js/ui/components/networkAgent.js:293 js/ui/components/networkAgent.js:660 | ||||
| #: js/ui/components/networkAgent.js:293 js/ui/components/networkAgent.js:665 | ||||
| #, javascript-format | ||||
| msgid "" | ||||
| "Passwords or encryption keys are required to access the wireless network " | ||||
| @@ -915,7 +915,7 @@ msgstr "" | ||||
| "Se necesitan contraseñas o claves de cifrado para acceder a la red " | ||||
| "inalámbrica «%s»." | ||||
|  | ||||
| #: js/ui/components/networkAgent.js:297 js/ui/components/networkAgent.js:663 | ||||
| #: js/ui/components/networkAgent.js:297 js/ui/components/networkAgent.js:668 | ||||
| msgid "Wired 802.1X authentication" | ||||
| msgstr "Autenticación 802.1X cableada" | ||||
|  | ||||
| @@ -923,15 +923,15 @@ msgstr "Autenticación 802.1X cableada" | ||||
| msgid "Network name: " | ||||
| msgstr "Nombre de la red: " | ||||
|  | ||||
| #: js/ui/components/networkAgent.js:304 js/ui/components/networkAgent.js:667 | ||||
| #: js/ui/components/networkAgent.js:304 js/ui/components/networkAgent.js:672 | ||||
| msgid "DSL authentication" | ||||
| msgstr "Autenticación DSL" | ||||
|  | ||||
| #: js/ui/components/networkAgent.js:311 js/ui/components/networkAgent.js:673 | ||||
| #: js/ui/components/networkAgent.js:311 js/ui/components/networkAgent.js:678 | ||||
| msgid "PIN code required" | ||||
| msgstr "Código PIN requerido" | ||||
|  | ||||
| #: js/ui/components/networkAgent.js:312 js/ui/components/networkAgent.js:674 | ||||
| #: js/ui/components/networkAgent.js:312 js/ui/components/networkAgent.js:679 | ||||
| msgid "PIN code is needed for the mobile broadband device" | ||||
| msgstr "Se necesita un código PIN para el dispositivo de banda ancha móvil" | ||||
|  | ||||
| @@ -939,17 +939,17 @@ msgstr "Se necesita un código PIN para el dispositivo de banda ancha móvil" | ||||
| msgid "PIN: " | ||||
| msgstr "PIN: " | ||||
|  | ||||
| #: js/ui/components/networkAgent.js:320 js/ui/components/networkAgent.js:680 | ||||
| #: js/ui/components/networkAgent.js:320 js/ui/components/networkAgent.js:685 | ||||
| msgid "Mobile broadband network password" | ||||
| msgstr "Contraseña de la red de banda ancha móvil" | ||||
|  | ||||
| #: js/ui/components/networkAgent.js:321 js/ui/components/networkAgent.js:664 | ||||
| #: js/ui/components/networkAgent.js:668 js/ui/components/networkAgent.js:681 | ||||
| #: js/ui/components/networkAgent.js:321 js/ui/components/networkAgent.js:669 | ||||
| #: js/ui/components/networkAgent.js:673 js/ui/components/networkAgent.js:686 | ||||
| #, javascript-format | ||||
| msgid "A password is required to connect to “%s”." | ||||
| msgstr "Se requiere una contraseña para conectarse a «%s»." | ||||
|  | ||||
| #: js/ui/components/networkAgent.js:648 js/ui/status/network.js:1691 | ||||
| #: js/ui/components/networkAgent.js:653 js/ui/status/network.js:1704 | ||||
| msgid "Network Manager" | ||||
| msgstr "Gestor de la red" | ||||
|  | ||||
| @@ -969,7 +969,7 @@ msgstr "Autenticar" | ||||
| #. * requested authentication was not gained; this can happen | ||||
| #. * because of an authentication error (like invalid password), | ||||
| #. * for instance. | ||||
| #: js/ui/components/polkitAgent.js:281 js/ui/shellMountOperation.js:327 | ||||
| #: js/ui/components/polkitAgent.js:283 js/ui/shellMountOperation.js:327 | ||||
| msgid "Sorry, that didn’t work. Please try again." | ||||
| msgstr "Eso no ha funcionado. Inténtelo de nuevo." | ||||
|  | ||||
| @@ -1301,13 +1301,13 @@ msgid "Leave On" | ||||
| msgstr "Dejar activada" | ||||
|  | ||||
| #: js/ui/kbdA11yDialog.js:59 js/ui/status/bluetooth.js:143 | ||||
| #: js/ui/status/network.js:1281 | ||||
| #: js/ui/status/network.js:1294 | ||||
| msgid "Turn On" | ||||
| msgstr "Encender" | ||||
|  | ||||
| #: js/ui/kbdA11yDialog.js:67 js/ui/status/bluetooth.js:143 | ||||
| #: js/ui/status/network.js:154 js/ui/status/network.js:337 | ||||
| #: js/ui/status/network.js:1281 js/ui/status/network.js:1396 | ||||
| #: js/ui/status/network.js:1294 js/ui/status/network.js:1409 | ||||
| #: js/ui/status/nightLight.js:47 js/ui/status/rfkill.js:90 | ||||
| #: js/ui/status/rfkill.js:117 | ||||
| msgid "Turn Off" | ||||
| @@ -1369,7 +1369,7 @@ msgstr "Ver fuente" | ||||
| msgid "Web Page" | ||||
| msgstr "Página web" | ||||
|  | ||||
| #: js/ui/messageTray.js:1493 | ||||
| #: js/ui/messageTray.js:1495 | ||||
| msgid "System Information" | ||||
| msgstr "Información del sistema" | ||||
|  | ||||
| @@ -1443,22 +1443,22 @@ msgstr "Pulse Esc para salir" | ||||
| msgid "Press any key to exit" | ||||
| msgstr "Pulse cualquier tecla para salir" | ||||
|  | ||||
| #: js/ui/panel.js:355 | ||||
| #: js/ui/panel.js:356 | ||||
| msgid "Quit" | ||||
| msgstr "Salir" | ||||
|  | ||||
| #. Translators: If there is no suitable word for "Activities" | ||||
| #. in your language, you can use the word for "Overview". | ||||
| #: js/ui/panel.js:411 | ||||
| #: js/ui/panel.js:412 | ||||
| msgid "Activities" | ||||
| msgstr "Actividades" | ||||
|  | ||||
| #: js/ui/panel.js:692 | ||||
| #: js/ui/panel.js:693 | ||||
| msgctxt "System menu in the top bar" | ||||
| msgid "System" | ||||
| msgstr "Sistema" | ||||
|  | ||||
| #: js/ui/panel.js:811 | ||||
| #: js/ui/panel.js:816 | ||||
| msgid "Top Bar" | ||||
| msgstr "Barra superior" | ||||
|  | ||||
| @@ -1467,7 +1467,7 @@ msgstr "Barra superior" | ||||
| #. "ON" and "OFF") or "toggle-switch-intl" (for toggle | ||||
| #. switches containing "◯" and "|"). Other values will | ||||
| #. simply result in invisible toggle switches. | ||||
| #: js/ui/popupMenu.js:291 | ||||
| #: js/ui/popupMenu.js:300 | ||||
| msgid "toggle-switch-us" | ||||
| msgstr "toggle-switch-intl" | ||||
|  | ||||
| @@ -1475,15 +1475,15 @@ msgstr "toggle-switch-intl" | ||||
| msgid "Enter a Command" | ||||
| msgstr "Introducir un comando" | ||||
|  | ||||
| #: js/ui/runDialog.js:110 js/ui/windowMenu.js:175 | ||||
| #: js/ui/runDialog.js:110 js/ui/windowMenu.js:174 | ||||
| msgid "Close" | ||||
| msgstr "Cerrar" | ||||
|  | ||||
| #: js/ui/runDialog.js:273 | ||||
| #: js/ui/runDialog.js:274 | ||||
| msgid "Restart is not available on Wayland" | ||||
| msgstr "Reiniciar si no está disponible en Wayland" | ||||
|  | ||||
| #: js/ui/runDialog.js:278 | ||||
| #: js/ui/runDialog.js:279 | ||||
| msgid "Restarting…" | ||||
| msgstr "Reiniciando…" | ||||
|  | ||||
| @@ -1690,7 +1690,7 @@ msgid "<unknown>" | ||||
| msgstr "<desconocido>" | ||||
|  | ||||
| #. Translators: %s is a network identifier | ||||
| #: js/ui/status/network.js:441 js/ui/status/network.js:1310 | ||||
| #: js/ui/status/network.js:441 js/ui/status/network.js:1323 | ||||
| #, javascript-format | ||||
| msgid "%s Off" | ||||
| msgstr "%s apagada" | ||||
| @@ -1716,7 +1716,7 @@ msgid "%s Disconnecting" | ||||
| msgstr "Desconectando %s" | ||||
|  | ||||
| #. Translators: %s is a network identifier | ||||
| #: js/ui/status/network.js:459 js/ui/status/network.js:1302 | ||||
| #: js/ui/status/network.js:459 js/ui/status/network.js:1315 | ||||
| #, javascript-format | ||||
| msgid "%s Connecting" | ||||
| msgstr "Conectando %s" | ||||
| @@ -1756,7 +1756,7 @@ msgid "Mobile Broadband Settings" | ||||
| msgstr "Configuración de banda ancha móvil" | ||||
|  | ||||
| #. Translators: %s is a network identifier | ||||
| #: js/ui/status/network.js:578 js/ui/status/network.js:1307 | ||||
| #: js/ui/status/network.js:578 js/ui/status/network.js:1320 | ||||
| #, javascript-format | ||||
| msgid "%s Hardware Disabled" | ||||
| msgstr "Hardware %s desactivado" | ||||
| @@ -1812,81 +1812,81 @@ msgstr "No hay redes" | ||||
| msgid "Use hardware switch to turn off" | ||||
| msgstr "Usar el interruptor hardware para apagar" | ||||
|  | ||||
| #: js/ui/status/network.js:1173 | ||||
| #: js/ui/status/network.js:1186 | ||||
| msgid "Select Network" | ||||
| msgstr "Seleccionar red" | ||||
|  | ||||
| #: js/ui/status/network.js:1179 | ||||
| #: js/ui/status/network.js:1192 | ||||
| msgid "Wi-Fi Settings" | ||||
| msgstr "Configuración de Wi-Fi" | ||||
|  | ||||
| #. Translators: %s is a network identifier | ||||
| #: js/ui/status/network.js:1298 | ||||
| #: js/ui/status/network.js:1311 | ||||
| #, javascript-format | ||||
| msgid "%s Hotspot Active" | ||||
| msgstr "Punto de acceso %s activo" | ||||
|  | ||||
| #. Translators: %s is a network identifier | ||||
| #: js/ui/status/network.js:1313 | ||||
| #: js/ui/status/network.js:1326 | ||||
| #, javascript-format | ||||
| msgid "%s Not Connected" | ||||
| msgstr "%s no conectado" | ||||
|  | ||||
| #: js/ui/status/network.js:1413 | ||||
| #: js/ui/status/network.js:1426 | ||||
| msgid "connecting…" | ||||
| msgstr "conectando…" | ||||
|  | ||||
| #. Translators: this is for network connections that require some kind of key or password | ||||
| #: js/ui/status/network.js:1416 | ||||
| #: js/ui/status/network.js:1429 | ||||
| msgid "authentication required" | ||||
| msgstr "se necesita autenticación" | ||||
|  | ||||
| #: js/ui/status/network.js:1418 | ||||
| #: js/ui/status/network.js:1431 | ||||
| msgid "connection failed" | ||||
| msgstr "falló la conexión" | ||||
|  | ||||
| #: js/ui/status/network.js:1472 | ||||
| #: js/ui/status/network.js:1485 | ||||
| msgid "VPN Settings" | ||||
| msgstr "Configuración de VPN" | ||||
|  | ||||
| #: js/ui/status/network.js:1485 | ||||
| #: js/ui/status/network.js:1498 | ||||
| msgid "VPN" | ||||
| msgstr "VPN" | ||||
|  | ||||
| #: js/ui/status/network.js:1495 | ||||
| #: js/ui/status/network.js:1508 | ||||
| msgid "VPN Off" | ||||
| msgstr "VPN apagada" | ||||
|  | ||||
| #: js/ui/status/network.js:1559 js/ui/status/rfkill.js:93 | ||||
| #: js/ui/status/network.js:1572 js/ui/status/rfkill.js:93 | ||||
| msgid "Network Settings" | ||||
| msgstr "Configuración de la red" | ||||
|  | ||||
| #: js/ui/status/network.js:1588 | ||||
| #: js/ui/status/network.js:1601 | ||||
| #, javascript-format | ||||
| msgid "%s Wired Connection" | ||||
| msgid_plural "%s Wired Connections" | ||||
| msgstr[0] "%s conexión cableada" | ||||
| msgstr[1] "%s conexiones cableadas" | ||||
|  | ||||
| #: js/ui/status/network.js:1592 | ||||
| #: js/ui/status/network.js:1605 | ||||
| #, javascript-format | ||||
| msgid "%s Wi-Fi Connection" | ||||
| msgid_plural "%s Wi-Fi Connections" | ||||
| msgstr[0] "%s conexión inalámbrica" | ||||
| msgstr[1] "%s conexiones inalámbricas" | ||||
|  | ||||
| #: js/ui/status/network.js:1596 | ||||
| #: js/ui/status/network.js:1609 | ||||
| #, javascript-format | ||||
| msgid "%s Modem Connection" | ||||
| msgid_plural "%s Modem Connections" | ||||
| msgstr[0] "%s conexión por módem" | ||||
| msgstr[1] "%s conexiones por módem" | ||||
|  | ||||
| #: js/ui/status/network.js:1728 | ||||
| #: js/ui/status/network.js:1741 | ||||
| msgid "Connection failed" | ||||
| msgstr "Falló la conexión" | ||||
|  | ||||
| #: js/ui/status/network.js:1729 | ||||
| #: js/ui/status/network.js:1742 | ||||
| msgid "Activation of network connection failed" | ||||
| msgstr "Falló la activación de la conexión de red" | ||||
|  | ||||
| @@ -1937,6 +1937,15 @@ msgstr "%d∶%02d para la carga completa (%d %%)" | ||||
| msgid "%d %%" | ||||
| msgstr "%d %%" | ||||
|  | ||||
| #: js/ui/status/remoteAccess.js:45 | ||||
| msgid "Screen is Being Shared" | ||||
| msgstr "Se está compartiendo la pantalla" | ||||
|  | ||||
| #: js/ui/status/remoteAccess.js:47 | ||||
| #| msgid "Turn Off" | ||||
| msgid "Turn off" | ||||
| msgstr "Apagar" | ||||
|  | ||||
| #. The menu only appears when airplane mode is on, so just | ||||
| #. statically build it as if it was on, rather than dynamically | ||||
| #. changing the menu contents. | ||||
| @@ -1968,16 +1977,16 @@ msgstr "Suspender" | ||||
| msgid "Power Off" | ||||
| msgstr "Apagar" | ||||
|  | ||||
| #: js/ui/status/thunderbolt.js:294 | ||||
| #: js/ui/status/thunderbolt.js:298 | ||||
| msgid "Thunderbolt" | ||||
| msgstr "Thunderbolt" | ||||
|  | ||||
| #. we are done | ||||
| #: js/ui/status/thunderbolt.js:350 | ||||
| #: js/ui/status/thunderbolt.js:354 | ||||
| msgid "Unknown Thunderbolt device" | ||||
| msgstr "Dispositivo Thunderbolt desconocido" | ||||
|  | ||||
| #: js/ui/status/thunderbolt.js:351 | ||||
| #: js/ui/status/thunderbolt.js:355 | ||||
| msgid "" | ||||
| "New device has been detected while you were away. Please disconnect and " | ||||
| "reconnect the device to start using it." | ||||
| @@ -1985,13 +1994,12 @@ msgstr "" | ||||
| "Se ha detectado un dispositivo nuevo mientras estaba fuera. Desconéctelo y " | ||||
| "vuélvalo a conectar para empezar a usarlo." | ||||
|  | ||||
| #: js/ui/status/thunderbolt.js:356 | ||||
| #: js/ui/status/thunderbolt.js:360 | ||||
| msgid "Thunderbolt authorization error" | ||||
| msgstr "Error de autorización de Thunderbolt" | ||||
|  | ||||
| #: js/ui/status/thunderbolt.js:357 | ||||
| #: js/ui/status/thunderbolt.js:361 | ||||
| #, javascript-format | ||||
| #| msgid "Could not authorize the thunderbolt device: %s" | ||||
| msgid "Could not authorize the Thunderbolt device: %s" | ||||
| msgstr "No se pudo autorizar el dispositivo Thunderbolt: %s" | ||||
|  | ||||
| @@ -2076,7 +2084,7 @@ msgstr[1] "La configuración se revertirá en %d segundos" | ||||
|  | ||||
| #. Translators: This represents the size of a window. The first number is | ||||
| #. * the width of the window and the second is the height. | ||||
| #: js/ui/windowManager.js:660 | ||||
| #: js/ui/windowManager.js:668 | ||||
| #, javascript-format | ||||
| msgid "%d × %d" | ||||
| msgstr "%d × %d" | ||||
| @@ -2129,19 +2137,19 @@ msgstr "Subir a un área de trabajo" | ||||
| msgid "Move to Workspace Down" | ||||
| msgstr "Bajar a un área de trabajo" | ||||
|  | ||||
| #: js/ui/windowMenu.js:140 | ||||
| #: js/ui/windowMenu.js:139 | ||||
| msgid "Move to Monitor Up" | ||||
| msgstr "Mover a la pantalla de arriba" | ||||
|  | ||||
| #: js/ui/windowMenu.js:149 | ||||
| #: js/ui/windowMenu.js:148 | ||||
| msgid "Move to Monitor Down" | ||||
| msgstr "Mover a la pantalla de abajo" | ||||
|  | ||||
| #: js/ui/windowMenu.js:158 | ||||
| #: js/ui/windowMenu.js:157 | ||||
| msgid "Move to Monitor Left" | ||||
| msgstr "Mover a la pantalla de la izquierda" | ||||
|  | ||||
| #: js/ui/windowMenu.js:167 | ||||
| #: js/ui/windowMenu.js:166 | ||||
| msgid "Move to Monitor Right" | ||||
| msgstr "Mover a la pantalla de la derecha" | ||||
|  | ||||
| @@ -2172,12 +2180,12 @@ msgstr "" | ||||
| msgid "List possible modes" | ||||
| msgstr "Listar los modos posibles" | ||||
|  | ||||
| #: src/shell-app.c:270 | ||||
| #: src/shell-app.c:272 | ||||
| msgctxt "program" | ||||
| msgid "Unknown" | ||||
| msgstr "Desconocido" | ||||
|  | ||||
| #: src/shell-app.c:511 | ||||
| #: src/shell-app.c:523 | ||||
| #, c-format | ||||
| msgid "Failed to launch “%s”" | ||||
| msgstr "Falló al lanzar «%s»" | ||||
|   | ||||
							
								
								
									
										278
									
								
								po/fr.po
									
									
									
									
									
								
							
							
						
						
									
										278
									
								
								po/fr.po
									
									
									
									
									
								
							| @@ -14,22 +14,22 @@ | ||||
| # Alain Lojewski <allomervan@gmail.com>, 2014-2018. | ||||
| # Erwan Georget <egeorget@opmbx.org>, 2016. | ||||
| # Claude Paroz <claude@2xlibre.net>, 2010-2011, 2016. | ||||
| # Charles Monzat <superboa@hotmail.fr>, 2016. | ||||
| # Charles Monzat <superboa@hotmail.fr>, 2016, 2018. | ||||
| # | ||||
| msgid "" | ||||
| msgstr "" | ||||
| "Project-Id-Version: gnome-shell master fr\n" | ||||
| "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues\n" | ||||
| "POT-Creation-Date: 2018-03-03 10:22+0000\n" | ||||
| "PO-Revision-Date: 2018-03-01 09:00+0100\n" | ||||
| "Last-Translator: Alain Lojewski <allomervan@gmail.com>\n" | ||||
| "POT-Creation-Date: 2018-08-01 18:08+0000\n" | ||||
| "PO-Revision-Date: 2018-08-09 19:51+0200\n" | ||||
| "Last-Translator: Charles Monzat <superboa@hotmail.fr>\n" | ||||
| "Language-Team: français <gnomefr@traduc.org>\n" | ||||
| "Language: fr\n" | ||||
| "MIME-Version: 1.0\n" | ||||
| "Content-Type: text/plain; charset=UTF-8\n" | ||||
| "Content-Transfer-Encoding: 8bit\n" | ||||
| "Plural-Forms: nplurals=2; plural=(n > 1);\n" | ||||
| "X-Generator: Poedit 1.8.12\n" | ||||
| "X-Generator: Gtranslator 2.91.7\n" | ||||
|  | ||||
| #: data/50-gnome-shell-system.xml:6 | ||||
| msgid "System" | ||||
| @@ -234,7 +234,7 @@ msgstr "" | ||||
|  | ||||
| #: data/org.gnome.shell.gschema.xml.in:116 | ||||
| msgid "Keybinding to open the overview" | ||||
| msgstr "Combinaison de touches pour ouvrir la vue d'ensemble" | ||||
| msgstr "Combinaison de touches pour ouvrir la vue d’ensemble" | ||||
|  | ||||
| #: data/org.gnome.shell.gschema.xml.in:117 | ||||
| msgid "Keybinding to open the Activities Overview." | ||||
| @@ -312,34 +312,34 @@ msgstr "" | ||||
| "Si vrai, seules les fenêtres de l’espace de travail actuel sont affichées " | ||||
| "dans le sélecteur. Sinon, toutes les fenêtres y sont incluses." | ||||
|  | ||||
| #: data/org.gnome.shell.gschema.xml.in:197 | ||||
| #: data/org.gnome.shell.gschema.xml.in:198 | ||||
| msgid "Attach modal dialog to the parent window" | ||||
| msgstr "Attacher les dialogues modaux à leur fenêtre parente" | ||||
|  | ||||
| #: data/org.gnome.shell.gschema.xml.in:198 | ||||
| #: data/org.gnome.shell.gschema.xml.in:207 | ||||
| #: data/org.gnome.shell.gschema.xml.in:215 | ||||
| #: data/org.gnome.shell.gschema.xml.in:223 | ||||
| #: data/org.gnome.shell.gschema.xml.in:231 | ||||
| #: data/org.gnome.shell.gschema.xml.in:199 | ||||
| #: data/org.gnome.shell.gschema.xml.in:208 | ||||
| #: data/org.gnome.shell.gschema.xml.in:216 | ||||
| #: data/org.gnome.shell.gschema.xml.in:224 | ||||
| #: data/org.gnome.shell.gschema.xml.in:232 | ||||
| msgid "" | ||||
| "This key overrides the key in org.gnome.mutter when running GNOME Shell." | ||||
| msgstr "" | ||||
| "Cette clé prend le pas sur la clé dans org.gnome.mutter lorsque GNOME Shell " | ||||
| "est lancé." | ||||
|  | ||||
| #: data/org.gnome.shell.gschema.xml.in:206 | ||||
| #: data/org.gnome.shell.gschema.xml.in:207 | ||||
| msgid "Enable edge tiling when dropping windows on screen edges" | ||||
| msgstr "Activer l’empilage des fenêtres déposées sur les bords de l'écran" | ||||
| msgstr "Activer l’empilage des fenêtres déposées sur les bords de l’écran" | ||||
|  | ||||
| #: data/org.gnome.shell.gschema.xml.in:214 | ||||
| #: data/org.gnome.shell.gschema.xml.in:215 | ||||
| msgid "Workspaces are managed dynamically" | ||||
| msgstr "Les espaces de travail sont gérés dynamiquement" | ||||
|  | ||||
| #: data/org.gnome.shell.gschema.xml.in:222 | ||||
| #: data/org.gnome.shell.gschema.xml.in:223 | ||||
| msgid "Workspaces only on primary monitor" | ||||
| msgstr "Les espaces de travail sont uniquement sur l’écran principal" | ||||
|  | ||||
| #: data/org.gnome.shell.gschema.xml.in:230 | ||||
| #: data/org.gnome.shell.gschema.xml.in:231 | ||||
| msgid "Delay focus changes in mouse mode until the pointer stops moving" | ||||
| msgstr "" | ||||
| "Retarder les changements de focus en mode souris jusqu’à ce que le pointeur " | ||||
| @@ -362,7 +362,7 @@ msgstr "" | ||||
| "préférences de %s :" | ||||
|  | ||||
| #: js/gdm/authPrompt.js:147 js/ui/audioDeviceSelection.js:71 | ||||
| #: js/ui/components/networkAgent.js:117 js/ui/components/polkitAgent.js:148 | ||||
| #: js/ui/components/networkAgent.js:117 js/ui/components/polkitAgent.js:153 | ||||
| #: js/ui/endSessionDialog.js:482 js/ui/extensionDownloader.js:197 | ||||
| #: js/ui/shellMountOperation.js:343 js/ui/status/network.js:919 | ||||
| msgid "Cancel" | ||||
| @@ -382,20 +382,20 @@ msgctxt "button" | ||||
| msgid "Sign In" | ||||
| msgstr "Se connecter" | ||||
|  | ||||
| #: js/gdm/loginDialog.js:315 | ||||
| #: js/gdm/loginDialog.js:319 | ||||
| msgid "Choose Session" | ||||
| msgstr "Choisir une session" | ||||
|  | ||||
| #. translators: this message is shown below the user list on the | ||||
| #. login screen. It can be activated to reveal an entry for | ||||
| #. manually entering the username. | ||||
| #: js/gdm/loginDialog.js:458 | ||||
| #: js/gdm/loginDialog.js:462 | ||||
| msgid "Not listed?" | ||||
| msgstr "Absent de la liste ?" | ||||
|  | ||||
| #. Translators: this message is shown below the username entry field | ||||
| #. to clue the user in on how to login to the local network realm | ||||
| #: js/gdm/loginDialog.js:887 | ||||
| #: js/gdm/loginDialog.js:891 | ||||
| #, javascript-format | ||||
| msgid "(e.g., user or %s)" | ||||
| msgstr "(par ex. utilisateur ou %s)" | ||||
| @@ -403,12 +403,12 @@ msgstr "(par ex. utilisateur ou %s)" | ||||
| #. TTLS and PEAP are actually much more complicated, but this complication | ||||
| #. is not visible here since we only care about phase2 authentication | ||||
| #. (and don't even care of which one) | ||||
| #: js/gdm/loginDialog.js:892 js/ui/components/networkAgent.js:243 | ||||
| #: js/gdm/loginDialog.js:896 js/ui/components/networkAgent.js:243 | ||||
| #: js/ui/components/networkAgent.js:261 | ||||
| msgid "Username: " | ||||
| msgstr "Nom d’utilisateur : " | ||||
|  | ||||
| #: js/gdm/loginDialog.js:1228 | ||||
| #: js/gdm/loginDialog.js:1234 | ||||
| msgid "Login Window" | ||||
| msgstr "Fenêtre de connexion" | ||||
|  | ||||
| @@ -421,7 +421,7 @@ msgstr "Erreur d’authentification" | ||||
| #. as a cue to display our own message. | ||||
| #. Translators: this message is shown below the password entry field | ||||
| #. to indicate the user can swipe their finger instead | ||||
| #: js/gdm/util.js:482 | ||||
| #: js/gdm/util.js:485 | ||||
| msgid "(or swipe finger)" | ||||
| msgstr "(ou faites glisser le doigt)" | ||||
|  | ||||
| @@ -662,32 +662,32 @@ msgstr "Fréquemment utilisées" | ||||
| msgid "All" | ||||
| msgstr "Toutes" | ||||
|  | ||||
| #: js/ui/appDisplay.js:1886 | ||||
| #: js/ui/appDisplay.js:1890 | ||||
| msgid "New Window" | ||||
| msgstr "Nouvelle fenêtre" | ||||
|  | ||||
| #: js/ui/appDisplay.js:1900 | ||||
| #: js/ui/appDisplay.js:1904 | ||||
| msgid "Launch using Dedicated Graphics Card" | ||||
| msgstr "Démarrer en utilisant la carte graphique dédiée" | ||||
|  | ||||
| #: js/ui/appDisplay.js:1927 js/ui/dash.js:285 | ||||
| #: js/ui/appDisplay.js:1931 js/ui/dash.js:285 | ||||
| msgid "Remove from Favorites" | ||||
| msgstr "Enlever des favoris" | ||||
|  | ||||
| #: js/ui/appDisplay.js:1933 | ||||
| #: js/ui/appDisplay.js:1937 | ||||
| msgid "Add to Favorites" | ||||
| msgstr "Ajouter aux favoris" | ||||
|  | ||||
| #: js/ui/appDisplay.js:1943 | ||||
| #: js/ui/appDisplay.js:1947 | ||||
| msgid "Show Details" | ||||
| msgstr "Afficher les détails" | ||||
|  | ||||
| #: js/ui/appFavorites.js:138 | ||||
| #: js/ui/appFavorites.js:140 | ||||
| #, javascript-format | ||||
| msgid "%s has been added to your favorites." | ||||
| msgstr "%s a été ajouté à vos favoris." | ||||
|  | ||||
| #: js/ui/appFavorites.js:172 | ||||
| #: js/ui/appFavorites.js:174 | ||||
| #, javascript-format | ||||
| msgid "%s has been removed from your favorites." | ||||
| msgstr "%s a été supprimé de vos favoris." | ||||
| @@ -708,7 +708,7 @@ msgstr "Casque audio" | ||||
| msgid "Headset" | ||||
| msgstr "Micro-casque" | ||||
|  | ||||
| #: js/ui/audioDeviceSelection.js:82 js/ui/status/volume.js:221 | ||||
| #: js/ui/audioDeviceSelection.js:82 js/ui/status/volume.js:255 | ||||
| msgid "Microphone" | ||||
| msgstr "Microphone" | ||||
|  | ||||
| @@ -720,7 +720,7 @@ msgstr "Modifier l’arrière-plan…" | ||||
| msgid "Display Settings" | ||||
| msgstr "Paramètres d’affichage" | ||||
|  | ||||
| #: js/ui/backgroundMenu.js:22 js/ui/status/system.js:264 | ||||
| #: js/ui/backgroundMenu.js:22 | ||||
| msgid "Settings" | ||||
| msgstr "Paramètres" | ||||
|  | ||||
| @@ -840,35 +840,35 @@ msgctxt "event list time" | ||||
| msgid "All Day" | ||||
| msgstr "Journée" | ||||
|  | ||||
| #: js/ui/calendar.js:864 | ||||
| #: js/ui/calendar.js:866 | ||||
| msgctxt "calendar heading" | ||||
| msgid "%A, %B %d" | ||||
| msgstr "%A %d %B" | ||||
|  | ||||
| #: js/ui/calendar.js:868 | ||||
| #: js/ui/calendar.js:870 | ||||
| msgctxt "calendar heading" | ||||
| msgid "%A, %B %d, %Y" | ||||
| msgstr "%A %d %B, %Y" | ||||
|  | ||||
| #: js/ui/calendar.js:1086 | ||||
| #: js/ui/calendar.js:1100 | ||||
| msgid "No Notifications" | ||||
| msgstr "Aucune notification" | ||||
|  | ||||
| #: js/ui/calendar.js:1089 | ||||
| #: js/ui/calendar.js:1103 | ||||
| msgid "No Events" | ||||
| msgstr "Aucun évènement" | ||||
|  | ||||
| #: js/ui/calendar.js:1117 | ||||
| #: js/ui/calendar.js:1131 | ||||
| msgid "Clear All" | ||||
| msgstr "Effacer tout" | ||||
|  | ||||
| #. Translators: %s is an application name | ||||
| #: js/ui/closeDialog.js:44 | ||||
| #: js/ui/closeDialog.js:47 | ||||
| #, javascript-format | ||||
| msgid "“%s” is not responding." | ||||
| msgstr "« %s » ne répond pas." | ||||
|  | ||||
| #: js/ui/closeDialog.js:45 | ||||
| #: js/ui/closeDialog.js:48 | ||||
| msgid "" | ||||
| "You may choose to wait a short while for it to continue or force the " | ||||
| "application to quit entirely." | ||||
| @@ -876,11 +876,11 @@ msgstr "" | ||||
| "Vous pouvez soit attendre un peu pour continuer, soit forcer l’application à " | ||||
| "quitter." | ||||
|  | ||||
| #: js/ui/closeDialog.js:61 | ||||
| #: js/ui/closeDialog.js:64 | ||||
| msgid "Force Quit" | ||||
| msgstr "Forcer à quitter" | ||||
|  | ||||
| #: js/ui/closeDialog.js:64 | ||||
| #: js/ui/closeDialog.js:67 | ||||
| msgid "Wait" | ||||
| msgstr "Attendre" | ||||
|  | ||||
| @@ -897,7 +897,7 @@ msgstr "Disque externe déconnecté" | ||||
| msgid "Open with %s" | ||||
| msgstr "Ouvrir avec %s" | ||||
|  | ||||
| #: js/ui/components/keyring.js:107 js/ui/components/polkitAgent.js:284 | ||||
| #: js/ui/components/keyring.js:107 js/ui/components/polkitAgent.js:297 | ||||
| msgid "Password:" | ||||
| msgstr "Mot de passe :" | ||||
|  | ||||
| @@ -934,11 +934,11 @@ msgstr "Mot de passe de la clé privée : " | ||||
| msgid "Service: " | ||||
| msgstr "Service : " | ||||
|  | ||||
| #: js/ui/components/networkAgent.js:292 js/ui/components/networkAgent.js:659 | ||||
| #: js/ui/components/networkAgent.js:292 js/ui/components/networkAgent.js:664 | ||||
| msgid "Authentication required by wireless network" | ||||
| msgstr "L’authentification est requise par le réseau sans fil" | ||||
|  | ||||
| #: js/ui/components/networkAgent.js:293 js/ui/components/networkAgent.js:660 | ||||
| #: js/ui/components/networkAgent.js:293 js/ui/components/networkAgent.js:665 | ||||
| #, javascript-format | ||||
| msgid "" | ||||
| "Passwords or encryption keys are required to access the wireless network " | ||||
| @@ -947,7 +947,7 @@ msgstr "" | ||||
| "Il faut un mot de passe ou une clé de chiffrement pour accéder au réseau " | ||||
| "sans fil « %s »" | ||||
|  | ||||
| #: js/ui/components/networkAgent.js:297 js/ui/components/networkAgent.js:663 | ||||
| #: js/ui/components/networkAgent.js:297 js/ui/components/networkAgent.js:668 | ||||
| msgid "Wired 802.1X authentication" | ||||
| msgstr "Authentification filaire 802.1X" | ||||
|  | ||||
| @@ -955,15 +955,15 @@ msgstr "Authentification filaire 802.1X" | ||||
| msgid "Network name: " | ||||
| msgstr "Nom du réseau : " | ||||
|  | ||||
| #: js/ui/components/networkAgent.js:304 js/ui/components/networkAgent.js:667 | ||||
| #: js/ui/components/networkAgent.js:304 js/ui/components/networkAgent.js:672 | ||||
| msgid "DSL authentication" | ||||
| msgstr "Authentification DSL" | ||||
|  | ||||
| #: js/ui/components/networkAgent.js:311 js/ui/components/networkAgent.js:673 | ||||
| #: js/ui/components/networkAgent.js:311 js/ui/components/networkAgent.js:678 | ||||
| msgid "PIN code required" | ||||
| msgstr "Code PIN requis" | ||||
|  | ||||
| #: js/ui/components/networkAgent.js:312 js/ui/components/networkAgent.js:674 | ||||
| #: js/ui/components/networkAgent.js:312 js/ui/components/networkAgent.js:679 | ||||
| msgid "PIN code is needed for the mobile broadband device" | ||||
| msgstr "Un code PIN est nécessaire pour les connexions mobiles" | ||||
|  | ||||
| @@ -971,29 +971,29 @@ msgstr "Un code PIN est nécessaire pour les connexions mobiles" | ||||
| msgid "PIN: " | ||||
| msgstr "PIN : " | ||||
|  | ||||
| #: js/ui/components/networkAgent.js:320 js/ui/components/networkAgent.js:680 | ||||
| #: js/ui/components/networkAgent.js:320 js/ui/components/networkAgent.js:685 | ||||
| msgid "Mobile broadband network password" | ||||
| msgstr "Mot de passe de la connexion mobile" | ||||
|  | ||||
| #: js/ui/components/networkAgent.js:321 js/ui/components/networkAgent.js:664 | ||||
| #: js/ui/components/networkAgent.js:668 js/ui/components/networkAgent.js:681 | ||||
| #: js/ui/components/networkAgent.js:321 js/ui/components/networkAgent.js:669 | ||||
| #: js/ui/components/networkAgent.js:673 js/ui/components/networkAgent.js:686 | ||||
| #, javascript-format | ||||
| msgid "A password is required to connect to “%s”." | ||||
| msgstr "Un mot de passe est requis pour se connecter à « %s »." | ||||
|  | ||||
| #: js/ui/components/networkAgent.js:648 js/ui/status/network.js:1691 | ||||
| #: js/ui/components/networkAgent.js:653 js/ui/status/network.js:1704 | ||||
| msgid "Network Manager" | ||||
| msgstr "Gestionnaire de réseau" | ||||
|  | ||||
| #: js/ui/components/polkitAgent.js:43 | ||||
| #: js/ui/components/polkitAgent.js:48 | ||||
| msgid "Authentication Required" | ||||
| msgstr "Authentification nécessaire" | ||||
|  | ||||
| #: js/ui/components/polkitAgent.js:71 | ||||
| #: js/ui/components/polkitAgent.js:76 | ||||
| msgid "Administrator" | ||||
| msgstr "Administrateur" | ||||
|  | ||||
| #: js/ui/components/polkitAgent.js:151 | ||||
| #: js/ui/components/polkitAgent.js:156 | ||||
| msgid "Authenticate" | ||||
| msgstr "S’authentifier" | ||||
|  | ||||
| @@ -1001,7 +1001,7 @@ msgstr "S’authentifier" | ||||
| #. * requested authentication was not gained; this can happen | ||||
| #. * because of an authentication error (like invalid password), | ||||
| #. * for instance. | ||||
| #: js/ui/components/polkitAgent.js:270 js/ui/shellMountOperation.js:327 | ||||
| #: js/ui/components/polkitAgent.js:283 js/ui/shellMountOperation.js:327 | ||||
| msgid "Sorry, that didn’t work. Please try again." | ||||
| msgstr "Échec de l’authentification. Essayez à nouveau." | ||||
|  | ||||
| @@ -1061,7 +1061,7 @@ msgstr "Ajouter des horloges locales…" | ||||
| msgid "World Clocks" | ||||
| msgstr "Horloges locales" | ||||
|  | ||||
| #: js/ui/dateMenu.js:225 | ||||
| #: js/ui/dateMenu.js:227 | ||||
| msgid "Weather" | ||||
| msgstr "Météo" | ||||
|  | ||||
| @@ -1069,7 +1069,7 @@ msgstr "Météo" | ||||
| #. libgweather for the possible condition strings. If at all | ||||
| #. possible, the sentence should match the grammatical case etc. of | ||||
| #. the inserted conditions. | ||||
| #: js/ui/dateMenu.js:289 | ||||
| #: js/ui/dateMenu.js:291 | ||||
| #, javascript-format | ||||
| msgid "%s all day." | ||||
| msgstr "%s toute la journée." | ||||
| @@ -1078,7 +1078,7 @@ msgstr "%s toute la journée." | ||||
| #. libgweather for the possible condition strings. If at all | ||||
| #. possible, the sentence should match the grammatical case etc. of | ||||
| #. the inserted conditions. | ||||
| #: js/ui/dateMenu.js:295 | ||||
| #: js/ui/dateMenu.js:297 | ||||
| #, javascript-format | ||||
| msgid "%s, then %s later." | ||||
| msgstr "%s, puis %s plus tard." | ||||
| @@ -1087,30 +1087,30 @@ msgstr "%s, puis %s plus tard." | ||||
| #. libgweather for the possible condition strings. If at all | ||||
| #. possible, the sentence should match the grammatical case etc. of | ||||
| #. the inserted conditions. | ||||
| #: js/ui/dateMenu.js:301 | ||||
| #: js/ui/dateMenu.js:303 | ||||
| #, javascript-format | ||||
| msgid "%s, then %s, followed by %s later." | ||||
| msgstr "%s, puis %s, suivi par %s plus tard." | ||||
|  | ||||
| #: js/ui/dateMenu.js:312 | ||||
| #: js/ui/dateMenu.js:314 | ||||
| msgid "Select a location…" | ||||
| msgstr "Choisir un emplacement…" | ||||
|  | ||||
| #: js/ui/dateMenu.js:315 | ||||
| #: js/ui/dateMenu.js:317 | ||||
| msgid "Loading…" | ||||
| msgstr "Chargement…" | ||||
|  | ||||
| #. Translators: %s is a temperature with unit, e.g. "23℃" | ||||
| #: js/ui/dateMenu.js:321 | ||||
| #: js/ui/dateMenu.js:323 | ||||
| #, javascript-format | ||||
| msgid "Feels like %s." | ||||
| msgstr "Température ressentie : %s." | ||||
|  | ||||
| #: js/ui/dateMenu.js:324 | ||||
| #: js/ui/dateMenu.js:326 | ||||
| msgid "Go online for weather information" | ||||
| msgstr "Chercher les informations météorologiques en ligne" | ||||
|  | ||||
| #: js/ui/dateMenu.js:326 | ||||
| #: js/ui/dateMenu.js:328 | ||||
| msgid "Weather information is currently unavailable" | ||||
| msgstr "Les informations météorologiques ne sont pas disponibles actuellement" | ||||
|  | ||||
| @@ -1344,13 +1344,13 @@ msgid "Leave On" | ||||
| msgstr "Laisser activé" | ||||
|  | ||||
| #: js/ui/kbdA11yDialog.js:59 js/ui/status/bluetooth.js:143 | ||||
| #: js/ui/status/network.js:1281 | ||||
| #: js/ui/status/network.js:1294 | ||||
| msgid "Turn On" | ||||
| msgstr "Activer" | ||||
|  | ||||
| #: js/ui/kbdA11yDialog.js:67 js/ui/status/bluetooth.js:143 | ||||
| #: js/ui/status/network.js:154 js/ui/status/network.js:337 | ||||
| #: js/ui/status/network.js:1281 js/ui/status/network.js:1396 | ||||
| #: js/ui/status/network.js:1294 js/ui/status/network.js:1409 | ||||
| #: js/ui/status/nightLight.js:47 js/ui/status/rfkill.js:90 | ||||
| #: js/ui/status/rfkill.js:117 | ||||
| msgid "Turn Off" | ||||
| @@ -1412,7 +1412,7 @@ msgstr "Afficher la source" | ||||
| msgid "Web Page" | ||||
| msgstr "Page Web" | ||||
|  | ||||
| #: js/ui/messageTray.js:1493 | ||||
| #: js/ui/messageTray.js:1495 | ||||
| msgid "System Information" | ||||
| msgstr "Informations du système" | ||||
|  | ||||
| @@ -1424,6 +1424,10 @@ msgstr "Artiste inconnu" | ||||
| msgid "Unknown title" | ||||
| msgstr "Titre inconnu" | ||||
|  | ||||
| #: js/ui/osdWindow.js:32 js/ui/status/volume.js:204 | ||||
| msgid "Volume" | ||||
| msgstr "Volume" | ||||
|  | ||||
| #: js/ui/overview.js:83 | ||||
| msgid "Undo" | ||||
| msgstr "Annuler" | ||||
| @@ -1466,42 +1470,42 @@ msgstr "Associer une touche" | ||||
| msgid "Done" | ||||
| msgstr "Terminé" | ||||
|  | ||||
| #: js/ui/padOsd.js:740 | ||||
| #: js/ui/padOsd.js:742 | ||||
| msgid "Edit…" | ||||
| msgstr "Édition…" | ||||
|  | ||||
| #: js/ui/padOsd.js:782 js/ui/padOsd.js:887 | ||||
| #: js/ui/padOsd.js:784 js/ui/padOsd.js:889 | ||||
| msgid "None" | ||||
| msgstr "Aucun" | ||||
|  | ||||
| #: js/ui/padOsd.js:841 | ||||
| #: js/ui/padOsd.js:843 | ||||
| msgid "Press a button to configure" | ||||
| msgstr "Appuyez sur un bouton pour le configurer" | ||||
|  | ||||
| #: js/ui/padOsd.js:842 | ||||
| #: js/ui/padOsd.js:844 | ||||
| msgid "Press Esc to exit" | ||||
| msgstr "Appuyez sur Échap. pour quitter" | ||||
|  | ||||
| #: js/ui/padOsd.js:845 | ||||
| #: js/ui/padOsd.js:847 | ||||
| msgid "Press any key to exit" | ||||
| msgstr "Appuyez sur une touche pour quitter" | ||||
|  | ||||
| #: js/ui/panel.js:355 | ||||
| #: js/ui/panel.js:356 | ||||
| msgid "Quit" | ||||
| msgstr "Quitter" | ||||
|  | ||||
| #. Translators: If there is no suitable word for "Activities" | ||||
| #. in your language, you can use the word for "Overview". | ||||
| #: js/ui/panel.js:411 | ||||
| #: js/ui/panel.js:412 | ||||
| msgid "Activities" | ||||
| msgstr "Activités" | ||||
|  | ||||
| #: js/ui/panel.js:692 | ||||
| #: js/ui/panel.js:693 | ||||
| msgctxt "System menu in the top bar" | ||||
| msgid "System" | ||||
| msgstr "Système" | ||||
|  | ||||
| #: js/ui/panel.js:811 | ||||
| #: js/ui/panel.js:816 | ||||
| msgid "Top Bar" | ||||
| msgstr "Barre supérieure" | ||||
|  | ||||
| @@ -1510,23 +1514,23 @@ msgstr "Barre supérieure" | ||||
| #. "ON" and "OFF") or "toggle-switch-intl" (for toggle | ||||
| #. switches containing "◯" and "|"). Other values will | ||||
| #. simply result in invisible toggle switches. | ||||
| #: js/ui/popupMenu.js:291 | ||||
| #: js/ui/popupMenu.js:300 | ||||
| msgid "toggle-switch-us" | ||||
| msgstr "toggle-switch-intl" | ||||
|  | ||||
| #: js/ui/runDialog.js:70 | ||||
| #: js/ui/runDialog.js:74 | ||||
| msgid "Enter a Command" | ||||
| msgstr "Saisissez une commande" | ||||
|  | ||||
| #: js/ui/runDialog.js:110 js/ui/windowMenu.js:175 | ||||
| #: js/ui/runDialog.js:114 js/ui/windowMenu.js:174 | ||||
| msgid "Close" | ||||
| msgstr "Fermer" | ||||
|  | ||||
| #: js/ui/runDialog.js:273 | ||||
| #: js/ui/runDialog.js:278 | ||||
| msgid "Restart is not available on Wayland" | ||||
| msgstr "Le redémarrage n’est pas disponible sur Wayland" | ||||
|  | ||||
| #: js/ui/runDialog.js:278 | ||||
| #: js/ui/runDialog.js:283 | ||||
| msgid "Restarting…" | ||||
| msgstr "Redémarrage…" | ||||
|  | ||||
| @@ -1550,7 +1554,7 @@ msgid_plural "%d new notifications" | ||||
| msgstr[0] "%d nouvelle notification" | ||||
| msgstr[1] "%d nouvelles notifications" | ||||
|  | ||||
| #: js/ui/screenShield.js:451 js/ui/status/system.js:283 | ||||
| #: js/ui/screenShield.js:451 js/ui/status/system.js:294 | ||||
| msgid "Lock" | ||||
| msgstr "Verrouiller" | ||||
|  | ||||
| @@ -1706,7 +1710,7 @@ msgstr "Paramètres de confidentialité" | ||||
|  | ||||
| #: js/ui/status/location.js:196 | ||||
| msgid "Location In Use" | ||||
| msgstr "Localisation en cours d'utilisation" | ||||
| msgstr "Localisation en cours d’utilisation" | ||||
|  | ||||
| #: js/ui/status/location.js:200 | ||||
| msgid "Location Disabled" | ||||
| @@ -1733,7 +1737,7 @@ msgid "<unknown>" | ||||
| msgstr "<inconnu>" | ||||
|  | ||||
| #. Translators: %s is a network identifier | ||||
| #: js/ui/status/network.js:441 js/ui/status/network.js:1310 | ||||
| #: js/ui/status/network.js:441 js/ui/status/network.js:1323 | ||||
| #, javascript-format | ||||
| msgid "%s Off" | ||||
| msgstr "%s éteint" | ||||
| @@ -1759,7 +1763,7 @@ msgid "%s Disconnecting" | ||||
| msgstr "Déconnexion de %s en cours" | ||||
|  | ||||
| #. Translators: %s is a network identifier | ||||
| #: js/ui/status/network.js:459 js/ui/status/network.js:1302 | ||||
| #: js/ui/status/network.js:459 js/ui/status/network.js:1315 | ||||
| #, javascript-format | ||||
| msgid "%s Connecting" | ||||
| msgstr "Connexion de %s en cours" | ||||
| @@ -1799,7 +1803,7 @@ msgid "Mobile Broadband Settings" | ||||
| msgstr "Paramètres connexion mobile" | ||||
|  | ||||
| #. Translators: %s is a network identifier | ||||
| #: js/ui/status/network.js:578 js/ui/status/network.js:1307 | ||||
| #: js/ui/status/network.js:578 js/ui/status/network.js:1320 | ||||
| #, javascript-format | ||||
| msgid "%s Hardware Disabled" | ||||
| msgstr "Équipement %s désactivé" | ||||
| @@ -1855,81 +1859,81 @@ msgstr "Aucun réseau disponible" | ||||
| msgid "Use hardware switch to turn off" | ||||
| msgstr "Utiliser l’interrupteur matériel pour éteindre" | ||||
|  | ||||
| #: js/ui/status/network.js:1173 | ||||
| #: js/ui/status/network.js:1186 | ||||
| msgid "Select Network" | ||||
| msgstr "Sélectionner un réseau" | ||||
|  | ||||
| #: js/ui/status/network.js:1179 | ||||
| #: js/ui/status/network.js:1192 | ||||
| msgid "Wi-Fi Settings" | ||||
| msgstr "Paramètres Wi-Fi" | ||||
|  | ||||
| #. Translators: %s is a network identifier | ||||
| #: js/ui/status/network.js:1298 | ||||
| #: js/ui/status/network.js:1311 | ||||
| #, javascript-format | ||||
| msgid "%s Hotspot Active" | ||||
| msgstr "Point d’accès %s actif" | ||||
|  | ||||
| #. Translators: %s is a network identifier | ||||
| #: js/ui/status/network.js:1313 | ||||
| #: js/ui/status/network.js:1326 | ||||
| #, javascript-format | ||||
| msgid "%s Not Connected" | ||||
| msgstr "%s non connecté" | ||||
|  | ||||
| #: js/ui/status/network.js:1413 | ||||
| #: js/ui/status/network.js:1426 | ||||
| msgid "connecting…" | ||||
| msgstr "connexion…" | ||||
|  | ||||
| #. Translators: this is for network connections that require some kind of key or password | ||||
| #: js/ui/status/network.js:1416 | ||||
| #: js/ui/status/network.js:1429 | ||||
| msgid "authentication required" | ||||
| msgstr "authentification nécessaire" | ||||
|  | ||||
| #: js/ui/status/network.js:1418 | ||||
| #: js/ui/status/network.js:1431 | ||||
| msgid "connection failed" | ||||
| msgstr "échec de connexion" | ||||
|  | ||||
| #: js/ui/status/network.js:1472 | ||||
| #: js/ui/status/network.js:1485 | ||||
| msgid "VPN Settings" | ||||
| msgstr "Paramètres VPN" | ||||
|  | ||||
| #: js/ui/status/network.js:1485 | ||||
| #: js/ui/status/network.js:1498 | ||||
| msgid "VPN" | ||||
| msgstr "VPN" | ||||
|  | ||||
| #: js/ui/status/network.js:1495 | ||||
| #: js/ui/status/network.js:1508 | ||||
| msgid "VPN Off" | ||||
| msgstr "VPN désactivé" | ||||
|  | ||||
| #: js/ui/status/network.js:1559 js/ui/status/rfkill.js:93 | ||||
| #: js/ui/status/network.js:1572 js/ui/status/rfkill.js:93 | ||||
| msgid "Network Settings" | ||||
| msgstr "Paramètres du réseau" | ||||
|  | ||||
| #: js/ui/status/network.js:1588 | ||||
| #: js/ui/status/network.js:1601 | ||||
| #, javascript-format | ||||
| msgid "%s Wired Connection" | ||||
| msgid_plural "%s Wired Connections" | ||||
| msgstr[0] "%s connexion filaire." | ||||
| msgstr[1] "%s connexions filaires." | ||||
|  | ||||
| #: js/ui/status/network.js:1592 | ||||
| #: js/ui/status/network.js:1605 | ||||
| #, javascript-format | ||||
| msgid "%s Wi-Fi Connection" | ||||
| msgid_plural "%s Wi-Fi Connections" | ||||
| msgstr[0] "%s connexion Wi-Fi." | ||||
| msgstr[1] "%s connexions Wi-Fi." | ||||
|  | ||||
| #: js/ui/status/network.js:1596 | ||||
| #: js/ui/status/network.js:1609 | ||||
| #, javascript-format | ||||
| msgid "%s Modem Connection" | ||||
| msgid_plural "%s Modem Connections" | ||||
| msgstr[0] "%s connexion à un modem." | ||||
| msgstr[1] "%s connexions à des modem." | ||||
|  | ||||
| #: js/ui/status/network.js:1728 | ||||
| #: js/ui/status/network.js:1741 | ||||
| msgid "Connection failed" | ||||
| msgstr "Échec de connexion" | ||||
|  | ||||
| #: js/ui/status/network.js:1729 | ||||
| #: js/ui/status/network.js:1742 | ||||
| msgid "Activation of network connection failed" | ||||
| msgstr "L’activation de la connexion réseau a échoué" | ||||
|  | ||||
| @@ -1947,11 +1951,11 @@ msgstr "Reprendre" | ||||
|  | ||||
| #: js/ui/status/nightLight.js:71 | ||||
| msgid "Disable Until Tomorrow" | ||||
| msgstr "Désactiver jusqu'à demain" | ||||
| msgstr "Désactiver jusqu’à demain" | ||||
|  | ||||
| #: js/ui/status/power.js:61 | ||||
| msgid "Power Settings" | ||||
| msgstr "Paramètres de gestion de l'énergie" | ||||
| msgstr "Paramètres de gestion de l’énergie" | ||||
|  | ||||
| #: js/ui/status/power.js:77 | ||||
| msgid "Fully Charged" | ||||
| @@ -1980,6 +1984,14 @@ msgstr "%d∶%02d avant chargement complet (%d %%)" | ||||
| msgid "%d %%" | ||||
| msgstr "%d %%" | ||||
|  | ||||
| #: js/ui/status/remoteAccess.js:46 | ||||
| msgid "Screen is Being Shared" | ||||
| msgstr "L’écran est partagé" | ||||
|  | ||||
| #: js/ui/status/remoteAccess.js:48 | ||||
| msgid "Turn off" | ||||
| msgstr "Éteindre" | ||||
|  | ||||
| #. The menu only appears when airplane mode is on, so just | ||||
| #. statically build it as if it was on, rather than dynamically | ||||
| #. changing the menu contents. | ||||
| @@ -1999,28 +2011,28 @@ msgstr "Fermer la session" | ||||
| msgid "Account Settings" | ||||
| msgstr "Paramètres du compte" | ||||
|  | ||||
| #: js/ui/status/system.js:268 | ||||
| #: js/ui/status/system.js:279 | ||||
| msgid "Orientation Lock" | ||||
| msgstr "Verrouillage de l’orientation " | ||||
|  | ||||
| #: js/ui/status/system.js:294 | ||||
| #: js/ui/status/system.js:305 | ||||
| msgid "Suspend" | ||||
| msgstr "Mettre en veille" | ||||
|  | ||||
| #: js/ui/status/system.js:304 | ||||
| #: js/ui/status/system.js:315 | ||||
| msgid "Power Off" | ||||
| msgstr "Éteindre" | ||||
|  | ||||
| #: js/ui/status/thunderbolt.js:272 | ||||
| #: js/ui/status/thunderbolt.js:298 | ||||
| msgid "Thunderbolt" | ||||
| msgstr "Interface Thunderbolt" | ||||
|  | ||||
| #. we are done | ||||
| #: js/ui/status/thunderbolt.js:328 | ||||
| #: js/ui/status/thunderbolt.js:354 | ||||
| msgid "Unknown Thunderbolt device" | ||||
| msgstr "Périphérique Thunderbolt inconnu" | ||||
|  | ||||
| #: js/ui/status/thunderbolt.js:329 | ||||
| #: js/ui/status/thunderbolt.js:355 | ||||
| msgid "" | ||||
| "New device has been detected while you were away. Please disconnect and " | ||||
| "reconnect the device to start using it." | ||||
| @@ -2028,23 +2040,19 @@ msgstr "" | ||||
| "Un nouveau périphérique a été détecté pendant votre absence. Veuillez le " | ||||
| "débrancher et rebrancher avant de commencer à l’utiliser" | ||||
|  | ||||
| #: js/ui/status/thunderbolt.js:334 | ||||
| #: js/ui/status/thunderbolt.js:360 | ||||
| msgid "Thunderbolt authorization error" | ||||
| msgstr "Erreur d’autorisation Thunderbolt" | ||||
|  | ||||
| #: js/ui/status/thunderbolt.js:335 | ||||
| #: js/ui/status/thunderbolt.js:361 | ||||
| #, javascript-format | ||||
| msgid "Could not authorize the thunderbolt device: %s" | ||||
| msgid "Could not authorize the Thunderbolt device: %s" | ||||
| msgstr "Impossible d’autoriser le périphérique Thunderbolt : %s" | ||||
|  | ||||
| #: js/ui/status/volume.js:128 | ||||
| #: js/ui/status/volume.js:135 | ||||
| msgid "Volume changed" | ||||
| msgstr "Volume modifié" | ||||
|  | ||||
| #: js/ui/status/volume.js:170 | ||||
| msgid "Volume" | ||||
| msgstr "Volume" | ||||
|  | ||||
| #. Translators: this is for display mirroring i.e. cloning. | ||||
| #. * Try to keep it under around 15 characters. | ||||
| #. | ||||
| @@ -2094,22 +2102,22 @@ msgstr "Recherche" | ||||
| msgid "“%s” is ready" | ||||
| msgstr "« %s » est prêt" | ||||
|  | ||||
| #: js/ui/windowManager.js:72 | ||||
| #: js/ui/windowManager.js:74 | ||||
| msgid "Do you want to keep these display settings?" | ||||
| msgstr "Voulez-vous conserver ces paramètres d’affichage ?" | ||||
|  | ||||
| #. Translators: this and the following message should be limited in lenght, | ||||
| #. to avoid ellipsizing the labels. | ||||
| #. | ||||
| #: js/ui/windowManager.js:84 | ||||
| #: js/ui/windowManager.js:86 | ||||
| msgid "Revert Settings" | ||||
| msgstr "Restaurer les paramètres" | ||||
|  | ||||
| #: js/ui/windowManager.js:87 | ||||
| #: js/ui/windowManager.js:89 | ||||
| msgid "Keep Changes" | ||||
| msgstr "Conserver les modifications" | ||||
|  | ||||
| #: js/ui/windowManager.js:105 | ||||
| #: js/ui/windowManager.js:107 | ||||
| #, javascript-format | ||||
| msgid "Settings changes will revert in %d second" | ||||
| msgid_plural "Settings changes will revert in %d seconds" | ||||
| @@ -2118,7 +2126,7 @@ msgstr[1] "Les paramètres seront restaurés dans %d secondes" | ||||
|  | ||||
| #. Translators: This represents the size of a window. The first number is | ||||
| #. * the width of the window and the second is the height. | ||||
| #: js/ui/windowManager.js:660 | ||||
| #: js/ui/windowManager.js:689 | ||||
| #, javascript-format | ||||
| msgid "%d × %d" | ||||
| msgstr "%d × %d" | ||||
| @@ -2171,19 +2179,19 @@ msgstr "Déplacer vers l’espace de travail supérieur" | ||||
| msgid "Move to Workspace Down" | ||||
| msgstr "Déplacer vers l’espace de travail inférieur" | ||||
|  | ||||
| #: js/ui/windowMenu.js:140 | ||||
| #: js/ui/windowMenu.js:139 | ||||
| msgid "Move to Monitor Up" | ||||
| msgstr "Déplacer vers l’écran du haut" | ||||
|  | ||||
| #: js/ui/windowMenu.js:149 | ||||
| #: js/ui/windowMenu.js:148 | ||||
| msgid "Move to Monitor Down" | ||||
| msgstr "Déplacer vers l’écran du bas" | ||||
|  | ||||
| #: js/ui/windowMenu.js:158 | ||||
| #: js/ui/windowMenu.js:157 | ||||
| msgid "Move to Monitor Left" | ||||
| msgstr "Déplacer vers l’écran de gauche" | ||||
|  | ||||
| #: js/ui/windowMenu.js:167 | ||||
| #: js/ui/windowMenu.js:166 | ||||
| msgid "Move to Monitor Right" | ||||
| msgstr "Déplacer vers l’écran de droite" | ||||
|  | ||||
| @@ -2196,29 +2204,29 @@ msgstr "Agenda d’Evolution" | ||||
| msgid "evolution" | ||||
| msgstr "evolution" | ||||
|  | ||||
| #: src/main.c:432 | ||||
| #: src/main.c:410 | ||||
| msgid "Print version" | ||||
| msgstr "Affiche la version" | ||||
|  | ||||
| #: src/main.c:438 | ||||
| #: src/main.c:416 | ||||
| msgid "Mode used by GDM for login screen" | ||||
| msgstr "Mode utilisé par GDM pour l’écran de connexion" | ||||
|  | ||||
| #: src/main.c:444 | ||||
| #: src/main.c:422 | ||||
| msgid "Use a specific mode, e.g. “gdm” for login screen" | ||||
| msgstr "" | ||||
| "Utiliser un mode particulier, par ex. « gdm » pour l’écran de connexion" | ||||
|  | ||||
| #: src/main.c:450 | ||||
| #: src/main.c:428 | ||||
| msgid "List possible modes" | ||||
| msgstr "Lister les modes possibles" | ||||
|  | ||||
| #: src/shell-app.c:270 | ||||
| #: src/shell-app.c:272 | ||||
| msgctxt "program" | ||||
| msgid "Unknown" | ||||
| msgstr "Inconnu" | ||||
|  | ||||
| #: src/shell-app.c:511 | ||||
| #: src/shell-app.c:523 | ||||
| #, c-format | ||||
| msgid "Failed to launch “%s”" | ||||
| msgstr "Impossible de lancer « %s »" | ||||
|   | ||||
							
								
								
									
										232
									
								
								po/fur.po
									
									
									
									
									
								
							
							
						
						
									
										232
									
								
								po/fur.po
									
									
									
									
									
								
							| @@ -7,15 +7,15 @@ msgid "" | ||||
| msgstr "" | ||||
| "Project-Id-Version: video-subtitles master\n" | ||||
| "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues\n" | ||||
| "POT-Creation-Date: 2018-04-13 19:54+0000\n" | ||||
| "PO-Revision-Date: 2018-04-23 21:41+0200\n" | ||||
| "POT-Creation-Date: 2018-08-01 18:08+0000\n" | ||||
| "PO-Revision-Date: 2018-08-08 06:58+0200\n" | ||||
| "Last-Translator: Fabio Tomat <f.t.public@gmail.com>\n" | ||||
| "Language-Team: Friulian <fur@li.org>\n" | ||||
| "Language: fur\n" | ||||
| "MIME-Version: 1.0\n" | ||||
| "Content-Type: text/plain; charset=UTF-8\n" | ||||
| "Content-Transfer-Encoding: 8bit\n" | ||||
| "X-Generator: Poedit 2.0.6\n" | ||||
| "X-Generator: Poedit 2.0.7\n" | ||||
| "Plural-Forms: nplurals=2; plural=(n != 1);\n" | ||||
|  | ||||
| #: data/50-gnome-shell-system.xml:6 | ||||
| @@ -286,36 +286,36 @@ msgstr "" | ||||
| "Se vêr, nome i barcons dal spazi di lavôr curint a vegnin mostrâts intal " | ||||
| "seletôr. Se no, ducj i barcons a vegnin includûts." | ||||
|  | ||||
| #: data/org.gnome.shell.gschema.xml.in:197 | ||||
| #: data/org.gnome.shell.gschema.xml.in:198 | ||||
| msgid "Attach modal dialog to the parent window" | ||||
| msgstr "Lee il barcon modâl al barcon gjenitôr" | ||||
|  | ||||
| #: data/org.gnome.shell.gschema.xml.in:198 | ||||
| #: data/org.gnome.shell.gschema.xml.in:207 | ||||
| #: data/org.gnome.shell.gschema.xml.in:215 | ||||
| #: data/org.gnome.shell.gschema.xml.in:223 | ||||
| #: data/org.gnome.shell.gschema.xml.in:231 | ||||
| #: data/org.gnome.shell.gschema.xml.in:199 | ||||
| #: data/org.gnome.shell.gschema.xml.in:208 | ||||
| #: data/org.gnome.shell.gschema.xml.in:216 | ||||
| #: data/org.gnome.shell.gschema.xml.in:224 | ||||
| #: data/org.gnome.shell.gschema.xml.in:232 | ||||
| msgid "" | ||||
| "This key overrides the key in org.gnome.mutter when running GNOME Shell." | ||||
| msgstr "" | ||||
| "Cheste clâf e sorplante chê in org.gnome.mutter cuant che al è in esecuzion " | ||||
| "GNOME Shell." | ||||
|  | ||||
| #: data/org.gnome.shell.gschema.xml.in:206 | ||||
| #: data/org.gnome.shell.gschema.xml.in:207 | ||||
| msgid "Enable edge tiling when dropping windows on screen edges" | ||||
| msgstr "" | ||||
| "Abilite la tasseladure sul ôr cuant che si strissine i barcons tal ôr dal " | ||||
| "visôr" | ||||
|  | ||||
| #: data/org.gnome.shell.gschema.xml.in:214 | ||||
| #: data/org.gnome.shell.gschema.xml.in:215 | ||||
| msgid "Workspaces are managed dynamically" | ||||
| msgstr "I spazis di vore a son ministrât in maniere dinamiche" | ||||
|  | ||||
| #: data/org.gnome.shell.gschema.xml.in:222 | ||||
| #: data/org.gnome.shell.gschema.xml.in:223 | ||||
| msgid "Workspaces only on primary monitor" | ||||
| msgstr "Spazis di lavôr dome sul visôr principâl" | ||||
|  | ||||
| #: data/org.gnome.shell.gschema.xml.in:230 | ||||
| #: data/org.gnome.shell.gschema.xml.in:231 | ||||
| msgid "Delay focus changes in mouse mode until the pointer stops moving" | ||||
| msgstr "" | ||||
| "Tardâ il cambiament dal focus te modalitât mouse fintant che il pontadôr no " | ||||
| @@ -358,20 +358,20 @@ msgctxt "button" | ||||
| msgid "Sign In" | ||||
| msgstr "Jentre" | ||||
|  | ||||
| #: js/gdm/loginDialog.js:315 | ||||
| #: js/gdm/loginDialog.js:319 | ||||
| msgid "Choose Session" | ||||
| msgstr "Selezione Session" | ||||
|  | ||||
| #. translators: this message is shown below the user list on the | ||||
| #. login screen. It can be activated to reveal an entry for | ||||
| #. manually entering the username. | ||||
| #: js/gdm/loginDialog.js:458 | ||||
| #: js/gdm/loginDialog.js:462 | ||||
| msgid "Not listed?" | ||||
| msgstr "No in liste?" | ||||
|  | ||||
| #. Translators: this message is shown below the username entry field | ||||
| #. to clue the user in on how to login to the local network realm | ||||
| #: js/gdm/loginDialog.js:887 | ||||
| #: js/gdm/loginDialog.js:891 | ||||
| #, javascript-format | ||||
| msgid "(e.g., user or %s)" | ||||
| msgstr "(p.e., utent o %s)" | ||||
| @@ -379,12 +379,12 @@ msgstr "(p.e., utent o %s)" | ||||
| #. TTLS and PEAP are actually much more complicated, but this complication | ||||
| #. is not visible here since we only care about phase2 authentication | ||||
| #. (and don't even care of which one) | ||||
| #: js/gdm/loginDialog.js:892 js/ui/components/networkAgent.js:243 | ||||
| #: js/gdm/loginDialog.js:896 js/ui/components/networkAgent.js:243 | ||||
| #: js/ui/components/networkAgent.js:261 | ||||
| msgid "Username: " | ||||
| msgstr "Non utent:" | ||||
|  | ||||
| #: js/gdm/loginDialog.js:1228 | ||||
| #: js/gdm/loginDialog.js:1234 | ||||
| msgid "Login Window" | ||||
| msgstr "Barcon di acès" | ||||
|  | ||||
| @@ -397,7 +397,7 @@ msgstr "Erôr di autenticazion" | ||||
| #. as a cue to display our own message. | ||||
| #. Translators: this message is shown below the password entry field | ||||
| #. to indicate the user can swipe their finger instead | ||||
| #: js/gdm/util.js:482 | ||||
| #: js/gdm/util.js:485 | ||||
| msgid "(or swipe finger)" | ||||
| msgstr "(o passe cul dêt)" | ||||
|  | ||||
| @@ -638,23 +638,23 @@ msgstr "Dispès" | ||||
| msgid "All" | ||||
| msgstr "Dutis" | ||||
|  | ||||
| #: js/ui/appDisplay.js:1886 | ||||
| #: js/ui/appDisplay.js:1890 | ||||
| msgid "New Window" | ||||
| msgstr "Gnûf barcon" | ||||
|  | ||||
| #: js/ui/appDisplay.js:1900 | ||||
| #: js/ui/appDisplay.js:1904 | ||||
| msgid "Launch using Dedicated Graphics Card" | ||||
| msgstr "Invie doprant une schede grafiche dedicade" | ||||
|  | ||||
| #: js/ui/appDisplay.js:1927 js/ui/dash.js:285 | ||||
| #: js/ui/appDisplay.js:1931 js/ui/dash.js:285 | ||||
| msgid "Remove from Favorites" | ||||
| msgstr "Gjave dai preferîts" | ||||
|  | ||||
| #: js/ui/appDisplay.js:1933 | ||||
| #: js/ui/appDisplay.js:1937 | ||||
| msgid "Add to Favorites" | ||||
| msgstr "Zonte tai preferîts" | ||||
|  | ||||
| #: js/ui/appDisplay.js:1943 | ||||
| #: js/ui/appDisplay.js:1947 | ||||
| msgid "Show Details" | ||||
| msgstr "Mostre Detais" | ||||
|  | ||||
| @@ -684,7 +684,7 @@ msgstr "Cufis" | ||||
| msgid "Headset" | ||||
| msgstr "Cufis cun microfon" | ||||
|  | ||||
| #: js/ui/audioDeviceSelection.js:82 js/ui/status/volume.js:221 | ||||
| #: js/ui/audioDeviceSelection.js:82 js/ui/status/volume.js:255 | ||||
| msgid "Microphone" | ||||
| msgstr "Microfon" | ||||
|  | ||||
| @@ -696,7 +696,7 @@ msgstr "Cambie sfont…" | ||||
| msgid "Display Settings" | ||||
| msgstr "Impostazions visôr" | ||||
|  | ||||
| #: js/ui/backgroundMenu.js:22 js/ui/status/system.js:264 | ||||
| #: js/ui/backgroundMenu.js:22 | ||||
| msgid "Settings" | ||||
| msgstr "Impostazions" | ||||
|  | ||||
| @@ -801,35 +801,35 @@ msgctxt "event list time" | ||||
| msgid "All Day" | ||||
| msgstr "Dut il dì" | ||||
|  | ||||
| #: js/ui/calendar.js:864 | ||||
| #: js/ui/calendar.js:866 | ||||
| msgctxt "calendar heading" | ||||
| msgid "%A, %B %d" | ||||
| msgstr "%A, %d di %B" | ||||
|  | ||||
| #: js/ui/calendar.js:868 | ||||
| #: js/ui/calendar.js:870 | ||||
| msgctxt "calendar heading" | ||||
| msgid "%A, %B %d, %Y" | ||||
| msgstr "%A, %d di %B dal %Y" | ||||
|  | ||||
| #: js/ui/calendar.js:1086 | ||||
| #: js/ui/calendar.js:1100 | ||||
| msgid "No Notifications" | ||||
| msgstr "Nissune notifiche" | ||||
|  | ||||
| #: js/ui/calendar.js:1089 | ||||
| #: js/ui/calendar.js:1103 | ||||
| msgid "No Events" | ||||
| msgstr "Nissun event" | ||||
|  | ||||
| #: js/ui/calendar.js:1117 | ||||
| #: js/ui/calendar.js:1131 | ||||
| msgid "Clear All" | ||||
| msgstr "Nete dut" | ||||
|  | ||||
| #. Translators: %s is an application name | ||||
| #: js/ui/closeDialog.js:44 | ||||
| #: js/ui/closeDialog.js:47 | ||||
| #, javascript-format | ||||
| msgid "“%s” is not responding." | ||||
| msgstr "“%s” nol rispuint." | ||||
|  | ||||
| #: js/ui/closeDialog.js:45 | ||||
| #: js/ui/closeDialog.js:48 | ||||
| msgid "" | ||||
| "You may choose to wait a short while for it to continue or force the " | ||||
| "application to quit entirely." | ||||
| @@ -837,11 +837,11 @@ msgstr "" | ||||
| "Si pues sielzi di spietâ un tic che al continui o sfuarçâ la aplicazion a " | ||||
| "jessî dal dut." | ||||
|  | ||||
| #: js/ui/closeDialog.js:61 | ||||
| #: js/ui/closeDialog.js:64 | ||||
| msgid "Force Quit" | ||||
| msgstr "Sfuarce jessude" | ||||
|  | ||||
| #: js/ui/closeDialog.js:64 | ||||
| #: js/ui/closeDialog.js:67 | ||||
| msgid "Wait" | ||||
| msgstr "Spiete" | ||||
|  | ||||
| @@ -858,7 +858,7 @@ msgstr "Dispositîf esterni distacât" | ||||
| msgid "Open with %s" | ||||
| msgstr "Vierç cun %s" | ||||
|  | ||||
| #: js/ui/components/keyring.js:107 js/ui/components/polkitAgent.js:295 | ||||
| #: js/ui/components/keyring.js:107 js/ui/components/polkitAgent.js:297 | ||||
| msgid "Password:" | ||||
| msgstr "Password:" | ||||
|  | ||||
| @@ -895,11 +895,11 @@ msgstr "Password di clâf privade:" | ||||
| msgid "Service: " | ||||
| msgstr "Servizi:" | ||||
|  | ||||
| #: js/ui/components/networkAgent.js:292 js/ui/components/networkAgent.js:659 | ||||
| #: js/ui/components/networkAgent.js:292 js/ui/components/networkAgent.js:664 | ||||
| msgid "Authentication required by wireless network" | ||||
| msgstr "La rêt cence fîl e domande autenticazion" | ||||
|  | ||||
| #: js/ui/components/networkAgent.js:293 js/ui/components/networkAgent.js:660 | ||||
| #: js/ui/components/networkAgent.js:293 js/ui/components/networkAgent.js:665 | ||||
| #, javascript-format | ||||
| msgid "" | ||||
| "Passwords or encryption keys are required to access the wireless network " | ||||
| @@ -908,7 +908,7 @@ msgstr "" | ||||
| "Si scugne meti une password o une clâf di cifradure par jentrâ te rêt cence " | ||||
| "fîl \"%s\"." | ||||
|  | ||||
| #: js/ui/components/networkAgent.js:297 js/ui/components/networkAgent.js:663 | ||||
| #: js/ui/components/networkAgent.js:297 js/ui/components/networkAgent.js:668 | ||||
| msgid "Wired 802.1X authentication" | ||||
| msgstr "Autenticazion vie fîl 802.1X" | ||||
|  | ||||
| @@ -916,15 +916,15 @@ msgstr "Autenticazion vie fîl 802.1X" | ||||
| msgid "Network name: " | ||||
| msgstr "Non rêt:" | ||||
|  | ||||
| #: js/ui/components/networkAgent.js:304 js/ui/components/networkAgent.js:667 | ||||
| #: js/ui/components/networkAgent.js:304 js/ui/components/networkAgent.js:672 | ||||
| msgid "DSL authentication" | ||||
| msgstr "Autenticazion DSL" | ||||
|  | ||||
| #: js/ui/components/networkAgent.js:311 js/ui/components/networkAgent.js:673 | ||||
| #: js/ui/components/networkAgent.js:311 js/ui/components/networkAgent.js:678 | ||||
| msgid "PIN code required" | ||||
| msgstr "Si pretint un codiç PIN" | ||||
|  | ||||
| #: js/ui/components/networkAgent.js:312 js/ui/components/networkAgent.js:674 | ||||
| #: js/ui/components/networkAgent.js:312 js/ui/components/networkAgent.js:679 | ||||
| msgid "PIN code is needed for the mobile broadband device" | ||||
| msgstr "Si scugne meti un codiç PIN pal dispositîf a bande largje mobil" | ||||
|  | ||||
| @@ -932,17 +932,17 @@ msgstr "Si scugne meti un codiç PIN pal dispositîf a bande largje mobil" | ||||
| msgid "PIN: " | ||||
| msgstr "PIN: " | ||||
|  | ||||
| #: js/ui/components/networkAgent.js:320 js/ui/components/networkAgent.js:680 | ||||
| #: js/ui/components/networkAgent.js:320 js/ui/components/networkAgent.js:685 | ||||
| msgid "Mobile broadband network password" | ||||
| msgstr "Passowrd rêt mobil a bande largje" | ||||
|  | ||||
| #: js/ui/components/networkAgent.js:321 js/ui/components/networkAgent.js:664 | ||||
| #: js/ui/components/networkAgent.js:668 js/ui/components/networkAgent.js:681 | ||||
| #: js/ui/components/networkAgent.js:321 js/ui/components/networkAgent.js:669 | ||||
| #: js/ui/components/networkAgent.js:673 js/ui/components/networkAgent.js:686 | ||||
| #, javascript-format | ||||
| msgid "A password is required to connect to “%s”." | ||||
| msgstr "A covente une password par tacâsi a '%s'." | ||||
|  | ||||
| #: js/ui/components/networkAgent.js:648 js/ui/status/network.js:1691 | ||||
| #: js/ui/components/networkAgent.js:653 js/ui/status/network.js:1704 | ||||
| msgid "Network Manager" | ||||
| msgstr "Ministradôr di rêt" | ||||
|  | ||||
| @@ -962,7 +962,7 @@ msgstr "Autentiche" | ||||
| #. * requested authentication was not gained; this can happen | ||||
| #. * because of an authentication error (like invalid password), | ||||
| #. * for instance. | ||||
| #: js/ui/components/polkitAgent.js:281 js/ui/shellMountOperation.js:327 | ||||
| #: js/ui/components/polkitAgent.js:283 js/ui/shellMountOperation.js:327 | ||||
| msgid "Sorry, that didn’t work. Please try again." | ||||
| msgstr "Mi displâs, no je lade drete. Prove di gnûf." | ||||
|  | ||||
| @@ -1294,13 +1294,13 @@ msgid "Leave On" | ||||
| msgstr "Lasse ativât" | ||||
|  | ||||
| #: js/ui/kbdA11yDialog.js:59 js/ui/status/bluetooth.js:143 | ||||
| #: js/ui/status/network.js:1281 | ||||
| #: js/ui/status/network.js:1294 | ||||
| msgid "Turn On" | ||||
| msgstr "Impie" | ||||
|  | ||||
| #: js/ui/kbdA11yDialog.js:67 js/ui/status/bluetooth.js:143 | ||||
| #: js/ui/status/network.js:154 js/ui/status/network.js:337 | ||||
| #: js/ui/status/network.js:1281 js/ui/status/network.js:1396 | ||||
| #: js/ui/status/network.js:1294 js/ui/status/network.js:1409 | ||||
| #: js/ui/status/nightLight.js:47 js/ui/status/rfkill.js:90 | ||||
| #: js/ui/status/rfkill.js:117 | ||||
| msgid "Turn Off" | ||||
| @@ -1362,7 +1362,7 @@ msgstr "Viôt sorzint" | ||||
| msgid "Web Page" | ||||
| msgstr "Pagjine Web" | ||||
|  | ||||
| #: js/ui/messageTray.js:1493 | ||||
| #: js/ui/messageTray.js:1495 | ||||
| msgid "System Information" | ||||
| msgstr "Informazion di sisteme" | ||||
|  | ||||
| @@ -1374,6 +1374,10 @@ msgstr "Artist no cognossût" | ||||
| msgid "Unknown title" | ||||
| msgstr "Titul no cognossût" | ||||
|  | ||||
| #: js/ui/osdWindow.js:32 js/ui/status/volume.js:204 | ||||
| msgid "Volume" | ||||
| msgstr "Volum" | ||||
|  | ||||
| #: js/ui/overview.js:83 | ||||
| msgid "Undo" | ||||
| msgstr "Anule" | ||||
| @@ -1416,43 +1420,43 @@ msgstr "Assegne batidure" | ||||
| msgid "Done" | ||||
| msgstr "Fat" | ||||
|  | ||||
| #: js/ui/padOsd.js:740 | ||||
| #: js/ui/padOsd.js:742 | ||||
| msgid "Edit…" | ||||
| msgstr "Modifiche…" | ||||
|  | ||||
| # masculin o feminin | ||||
| #: js/ui/padOsd.js:782 js/ui/padOsd.js:887 | ||||
| #: js/ui/padOsd.js:784 js/ui/padOsd.js:889 | ||||
| msgid "None" | ||||
| msgstr "Nissune" | ||||
|  | ||||
| #: js/ui/padOsd.js:841 | ||||
| #: js/ui/padOsd.js:843 | ||||
| msgid "Press a button to configure" | ||||
| msgstr "Frache un boton par configurâ" | ||||
|  | ||||
| #: js/ui/padOsd.js:842 | ||||
| #: js/ui/padOsd.js:844 | ||||
| msgid "Press Esc to exit" | ||||
| msgstr "Frache Esc par jessî" | ||||
|  | ||||
| #: js/ui/padOsd.js:845 | ||||
| #: js/ui/padOsd.js:847 | ||||
| msgid "Press any key to exit" | ||||
| msgstr "Frache un tast par jessî" | ||||
|  | ||||
| #: js/ui/panel.js:355 | ||||
| #: js/ui/panel.js:356 | ||||
| msgid "Quit" | ||||
| msgstr "Jes" | ||||
|  | ||||
| #. Translators: If there is no suitable word for "Activities" | ||||
| #. in your language, you can use the word for "Overview". | ||||
| #: js/ui/panel.js:411 | ||||
| #: js/ui/panel.js:412 | ||||
| msgid "Activities" | ||||
| msgstr "Ativitâts" | ||||
|  | ||||
| #: js/ui/panel.js:692 | ||||
| #: js/ui/panel.js:693 | ||||
| msgctxt "System menu in the top bar" | ||||
| msgid "System" | ||||
| msgstr "Sisteme" | ||||
|  | ||||
| #: js/ui/panel.js:811 | ||||
| #: js/ui/panel.js:816 | ||||
| msgid "Top Bar" | ||||
| msgstr "Sbare parsore" | ||||
|  | ||||
| @@ -1461,24 +1465,24 @@ msgstr "Sbare parsore" | ||||
| #. "ON" and "OFF") or "toggle-switch-intl" (for toggle | ||||
| #. switches containing "◯" and "|"). Other values will | ||||
| #. simply result in invisible toggle switches. | ||||
| #: js/ui/popupMenu.js:291 | ||||
| #: js/ui/popupMenu.js:300 | ||||
| msgid "toggle-switch-us" | ||||
| msgstr "toggle-switch-intl" | ||||
|  | ||||
| #: js/ui/runDialog.js:70 | ||||
| #: js/ui/runDialog.js:74 | ||||
| msgid "Enter a Command" | ||||
| msgstr "Scrîf un comant" | ||||
|  | ||||
| #: js/ui/runDialog.js:110 js/ui/windowMenu.js:175 | ||||
| #: js/ui/runDialog.js:114 js/ui/windowMenu.js:174 | ||||
| msgid "Close" | ||||
| msgstr "Siere" | ||||
|  | ||||
| # torne invie o torne tache | ||||
| #: js/ui/runDialog.js:273 | ||||
| #: js/ui/runDialog.js:278 | ||||
| msgid "Restart is not available on Wayland" | ||||
| msgstr "Il tornâ a tacâ nol è disponibil in Wayland" | ||||
|  | ||||
| #: js/ui/runDialog.js:278 | ||||
| #: js/ui/runDialog.js:283 | ||||
| msgid "Restarting…" | ||||
| msgstr "Daûr a tornâ a inviâ…" | ||||
|  | ||||
| @@ -1502,7 +1506,7 @@ msgid_plural "%d new notifications" | ||||
| msgstr[0] "%d gnove notifiche" | ||||
| msgstr[1] "%d gnovis modifichis" | ||||
|  | ||||
| #: js/ui/screenShield.js:451 js/ui/status/system.js:283 | ||||
| #: js/ui/screenShield.js:451 js/ui/status/system.js:294 | ||||
| msgid "Lock" | ||||
| msgstr "Bloche" | ||||
|  | ||||
| @@ -1686,7 +1690,7 @@ msgid "<unknown>" | ||||
| msgstr "<no cognossût>" | ||||
|  | ||||
| #. Translators: %s is a network identifier | ||||
| #: js/ui/status/network.js:441 js/ui/status/network.js:1310 | ||||
| #: js/ui/status/network.js:441 js/ui/status/network.js:1323 | ||||
| #, javascript-format | ||||
| msgid "%s Off" | ||||
| msgstr "%s distudât" | ||||
| @@ -1712,7 +1716,7 @@ msgid "%s Disconnecting" | ||||
| msgstr "%s daûr a disconeti" | ||||
|  | ||||
| #. Translators: %s is a network identifier | ||||
| #: js/ui/status/network.js:459 js/ui/status/network.js:1302 | ||||
| #: js/ui/status/network.js:459 js/ui/status/network.js:1315 | ||||
| #, javascript-format | ||||
| msgid "%s Connecting" | ||||
| msgstr "%s in conession" | ||||
| @@ -1752,7 +1756,7 @@ msgid "Mobile Broadband Settings" | ||||
| msgstr "Impostazions bande largje mobil" | ||||
|  | ||||
| #. Translators: %s is a network identifier | ||||
| #: js/ui/status/network.js:578 js/ui/status/network.js:1307 | ||||
| #: js/ui/status/network.js:578 js/ui/status/network.js:1320 | ||||
| #, javascript-format | ||||
| msgid "%s Hardware Disabled" | ||||
| msgstr "%s disabilitât vie hardware " | ||||
| @@ -1808,81 +1812,81 @@ msgstr "Nissune rêt" | ||||
| msgid "Use hardware switch to turn off" | ||||
| msgstr "Dopre interutôr fisic par distudâ" | ||||
|  | ||||
| #: js/ui/status/network.js:1173 | ||||
| #: js/ui/status/network.js:1186 | ||||
| msgid "Select Network" | ||||
| msgstr "Selezione rêt" | ||||
|  | ||||
| #: js/ui/status/network.js:1179 | ||||
| #: js/ui/status/network.js:1192 | ||||
| msgid "Wi-Fi Settings" | ||||
| msgstr "Impostazions Wi-Fi" | ||||
|  | ||||
| #. Translators: %s is a network identifier | ||||
| #: js/ui/status/network.js:1298 | ||||
| #: js/ui/status/network.js:1311 | ||||
| #, javascript-format | ||||
| msgid "%s Hotspot Active" | ||||
| msgstr "Hotspot %s atîf" | ||||
|  | ||||
| #. Translators: %s is a network identifier | ||||
| #: js/ui/status/network.js:1313 | ||||
| #: js/ui/status/network.js:1326 | ||||
| #, javascript-format | ||||
| msgid "%s Not Connected" | ||||
| msgstr "%s distacât" | ||||
|  | ||||
| #: js/ui/status/network.js:1413 | ||||
| #: js/ui/status/network.js:1426 | ||||
| msgid "connecting…" | ||||
| msgstr "daûr a coneti…" | ||||
|  | ||||
| #. Translators: this is for network connections that require some kind of key or password | ||||
| #: js/ui/status/network.js:1416 | ||||
| #: js/ui/status/network.js:1429 | ||||
| msgid "authentication required" | ||||
| msgstr "autenticazion necessarie" | ||||
|  | ||||
| #: js/ui/status/network.js:1418 | ||||
| #: js/ui/status/network.js:1431 | ||||
| msgid "connection failed" | ||||
| msgstr "conession falide" | ||||
|  | ||||
| #: js/ui/status/network.js:1472 | ||||
| #: js/ui/status/network.js:1485 | ||||
| msgid "VPN Settings" | ||||
| msgstr "Impostazions VPN" | ||||
|  | ||||
| #: js/ui/status/network.js:1485 | ||||
| #: js/ui/status/network.js:1498 | ||||
| msgid "VPN" | ||||
| msgstr "VPN" | ||||
|  | ||||
| #: js/ui/status/network.js:1495 | ||||
| #: js/ui/status/network.js:1508 | ||||
| msgid "VPN Off" | ||||
| msgstr "VPN distudât" | ||||
|  | ||||
| #: js/ui/status/network.js:1559 js/ui/status/rfkill.js:93 | ||||
| #: js/ui/status/network.js:1572 js/ui/status/rfkill.js:93 | ||||
| msgid "Network Settings" | ||||
| msgstr "Impostazions rêt" | ||||
|  | ||||
| #: js/ui/status/network.js:1588 | ||||
| #: js/ui/status/network.js:1601 | ||||
| #, javascript-format | ||||
| msgid "%s Wired Connection" | ||||
| msgid_plural "%s Wired Connections" | ||||
| msgstr[0] "%s conession cablade" | ||||
| msgstr[1] "%s conessions cabladis" | ||||
|  | ||||
| #: js/ui/status/network.js:1592 | ||||
| #: js/ui/status/network.js:1605 | ||||
| #, javascript-format | ||||
| msgid "%s Wi-Fi Connection" | ||||
| msgid_plural "%s Wi-Fi Connections" | ||||
| msgstr[0] "%s conession cence fîi" | ||||
| msgstr[1] "%s conessions cence fîi" | ||||
|  | ||||
| #: js/ui/status/network.js:1596 | ||||
| #: js/ui/status/network.js:1609 | ||||
| #, javascript-format | ||||
| msgid "%s Modem Connection" | ||||
| msgid_plural "%s Modem Connections" | ||||
| msgstr[0] "%s conession modem" | ||||
| msgstr[1] "%s conessions modem" | ||||
|  | ||||
| #: js/ui/status/network.js:1728 | ||||
| #: js/ui/status/network.js:1741 | ||||
| msgid "Connection failed" | ||||
| msgstr "Conession falide" | ||||
|  | ||||
| #: js/ui/status/network.js:1729 | ||||
| #: js/ui/status/network.js:1742 | ||||
| msgid "Activation of network connection failed" | ||||
| msgstr "Ativazion de conession di rêt falide" | ||||
|  | ||||
| @@ -1933,6 +1937,14 @@ msgstr "%d∶%02d par jessi plene (%d%%)" | ||||
| msgid "%d %%" | ||||
| msgstr "%d %%" | ||||
|  | ||||
| #: js/ui/status/remoteAccess.js:46 | ||||
| msgid "Screen is Being Shared" | ||||
| msgstr "Il schermi al è condividût" | ||||
|  | ||||
| #: js/ui/status/remoteAccess.js:48 | ||||
| msgid "Turn off" | ||||
| msgstr "Distude" | ||||
|  | ||||
| #. The menu only appears when airplane mode is on, so just | ||||
| #. statically build it as if it was on, rather than dynamically | ||||
| #. changing the menu contents. | ||||
| @@ -1952,28 +1964,28 @@ msgstr "Jes" | ||||
| msgid "Account Settings" | ||||
| msgstr "Impostazions account" | ||||
|  | ||||
| #: js/ui/status/system.js:268 | ||||
| #: js/ui/status/system.js:279 | ||||
| msgid "Orientation Lock" | ||||
| msgstr "Bloc Orientament" | ||||
|  | ||||
| #: js/ui/status/system.js:294 | ||||
| #: js/ui/status/system.js:305 | ||||
| msgid "Suspend" | ||||
| msgstr "Sospindi" | ||||
|  | ||||
| #: js/ui/status/system.js:304 | ||||
| #: js/ui/status/system.js:315 | ||||
| msgid "Power Off" | ||||
| msgstr "Distude" | ||||
|  | ||||
| #: js/ui/status/thunderbolt.js:294 | ||||
| #: js/ui/status/thunderbolt.js:298 | ||||
| msgid "Thunderbolt" | ||||
| msgstr "Thunderbolt" | ||||
|  | ||||
| #. we are done | ||||
| #: js/ui/status/thunderbolt.js:350 | ||||
| #: js/ui/status/thunderbolt.js:354 | ||||
| msgid "Unknown Thunderbolt device" | ||||
| msgstr "Dispositîf Thunderbolt no cognossût" | ||||
|  | ||||
| #: js/ui/status/thunderbolt.js:351 | ||||
| #: js/ui/status/thunderbolt.js:355 | ||||
| msgid "" | ||||
| "New device has been detected while you were away. Please disconnect and " | ||||
| "reconnect the device to start using it." | ||||
| @@ -1981,23 +1993,19 @@ msgstr "" | ||||
| "Un gnûf dispositîf al è stât rilevât intant che tu jeris vie. Par plasê " | ||||
| "disconet e torne conet il dispositîf par tacâ a doprâlu." | ||||
|  | ||||
| #: js/ui/status/thunderbolt.js:356 | ||||
| #: js/ui/status/thunderbolt.js:360 | ||||
| msgid "Thunderbolt authorization error" | ||||
| msgstr "Erôr di autorizazion di Thunderbolt" | ||||
|  | ||||
| #: js/ui/status/thunderbolt.js:357 | ||||
| #: js/ui/status/thunderbolt.js:361 | ||||
| #, javascript-format | ||||
| msgid "Could not authorize the Thunderbolt device: %s" | ||||
| msgstr "Impussibil autorizâ il dispositîf Thunderbolt: %s" | ||||
|  | ||||
| #: js/ui/status/volume.js:128 | ||||
| #: js/ui/status/volume.js:135 | ||||
| msgid "Volume changed" | ||||
| msgstr "Volum modificât" | ||||
|  | ||||
| #: js/ui/status/volume.js:170 | ||||
| msgid "Volume" | ||||
| msgstr "Volum" | ||||
|  | ||||
| #. Translators: this is for display mirroring i.e. cloning. | ||||
| #. * Try to keep it under around 15 characters. | ||||
| #. | ||||
| @@ -2047,22 +2055,22 @@ msgstr "Cîr" | ||||
| msgid "“%s” is ready" | ||||
| msgstr "“%s” al è pront" | ||||
|  | ||||
| #: js/ui/windowManager.js:72 | ||||
| #: js/ui/windowManager.js:74 | ||||
| msgid "Do you want to keep these display settings?" | ||||
| msgstr "Vûstu tignî chestis impostazions di visôr?" | ||||
|  | ||||
| #. Translators: this and the following message should be limited in lenght, | ||||
| #. to avoid ellipsizing the labels. | ||||
| #. | ||||
| #: js/ui/windowManager.js:84 | ||||
| #: js/ui/windowManager.js:86 | ||||
| msgid "Revert Settings" | ||||
| msgstr "Ripristine impostazions" | ||||
|  | ||||
| #: js/ui/windowManager.js:87 | ||||
| #: js/ui/windowManager.js:89 | ||||
| msgid "Keep Changes" | ||||
| msgstr "Ten lis modifichis" | ||||
|  | ||||
| #: js/ui/windowManager.js:105 | ||||
| #: js/ui/windowManager.js:107 | ||||
| #, javascript-format | ||||
| msgid "Settings changes will revert in %d second" | ||||
| msgid_plural "Settings changes will revert in %d seconds" | ||||
| @@ -2073,7 +2081,7 @@ msgstr[1] "" | ||||
|  | ||||
| #. Translators: This represents the size of a window. The first number is | ||||
| #. * the width of the window and the second is the height. | ||||
| #: js/ui/windowManager.js:660 | ||||
| #: js/ui/windowManager.js:689 | ||||
| #, javascript-format | ||||
| msgid "%d × %d" | ||||
| msgstr "%d × %d" | ||||
| @@ -2126,19 +2134,19 @@ msgstr "Sposte tal spazi di lavôr Parsore" | ||||
| msgid "Move to Workspace Down" | ||||
| msgstr "Sposte tal spazi di lavôr Disot" | ||||
|  | ||||
| #: js/ui/windowMenu.js:140 | ||||
| #: js/ui/windowMenu.js:139 | ||||
| msgid "Move to Monitor Up" | ||||
| msgstr "Sposte tal visôr parsore" | ||||
|  | ||||
| #: js/ui/windowMenu.js:149 | ||||
| #: js/ui/windowMenu.js:148 | ||||
| msgid "Move to Monitor Down" | ||||
| msgstr "Sposte tal visôr disot" | ||||
|  | ||||
| #: js/ui/windowMenu.js:158 | ||||
| #: js/ui/windowMenu.js:157 | ||||
| msgid "Move to Monitor Left" | ||||
| msgstr "Sposte tal visôr a çampe" | ||||
|  | ||||
| #: js/ui/windowMenu.js:167 | ||||
| #: js/ui/windowMenu.js:166 | ||||
| msgid "Move to Monitor Right" | ||||
| msgstr "Sposte tal visôr a drete" | ||||
|  | ||||
| @@ -2151,28 +2159,28 @@ msgstr "Calendari di Evolution" | ||||
| msgid "evolution" | ||||
| msgstr "evolution" | ||||
|  | ||||
| #: src/main.c:432 | ||||
| #: src/main.c:410 | ||||
| msgid "Print version" | ||||
| msgstr "Stampe version" | ||||
|  | ||||
| #: src/main.c:438 | ||||
| #: src/main.c:416 | ||||
| msgid "Mode used by GDM for login screen" | ||||
| msgstr "Modalitât doprade da GDM pe videade di acès" | ||||
|  | ||||
| #: src/main.c:444 | ||||
| #: src/main.c:422 | ||||
| msgid "Use a specific mode, e.g. “gdm” for login screen" | ||||
| msgstr "Dopre une modalitât specifiche, par esempli “gdm” pe videade di acès" | ||||
|  | ||||
| #: src/main.c:450 | ||||
| #: src/main.c:428 | ||||
| msgid "List possible modes" | ||||
| msgstr "Liste modalitâts pussibilis" | ||||
|  | ||||
| #: src/shell-app.c:270 | ||||
| #: src/shell-app.c:272 | ||||
| msgctxt "program" | ||||
| msgid "Unknown" | ||||
| msgstr "No cognossût" | ||||
|  | ||||
| #: src/shell-app.c:511 | ||||
| #: src/shell-app.c:523 | ||||
| #, c-format | ||||
| msgid "Failed to launch “%s”" | ||||
| msgstr "No soi rivât a eseguî '%s'" | ||||
|   | ||||
							
								
								
									
										160
									
								
								po/id.po
									
									
									
									
									
								
							
							
						
						
									
										160
									
								
								po/id.po
									
									
									
									
									
								
							| @@ -9,8 +9,8 @@ msgid "" | ||||
| msgstr "" | ||||
| "Project-Id-Version: gnome-shell master\n" | ||||
| "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues\n" | ||||
| "POT-Creation-Date: 2018-04-13 19:54+0000\n" | ||||
| "PO-Revision-Date: 2018-04-23 13:41+0700\n" | ||||
| "POT-Creation-Date: 2018-07-24 18:34+0000\n" | ||||
| "PO-Revision-Date: 2018-07-25 16:01+0700\n" | ||||
| "Last-Translator: Kukuh Syafaat <kukuhsyafaat@gnome.org>\n" | ||||
| "Language-Team: Indonesian <gnome-l10n-id@googlegroups.com>\n" | ||||
| "Language: id\n" | ||||
| @@ -360,20 +360,20 @@ msgctxt "button" | ||||
| msgid "Sign In" | ||||
| msgstr "Masuk" | ||||
|  | ||||
| #: js/gdm/loginDialog.js:315 | ||||
| #: js/gdm/loginDialog.js:319 | ||||
| msgid "Choose Session" | ||||
| msgstr "Pilih Sesi" | ||||
|  | ||||
| #. translators: this message is shown below the user list on the | ||||
| #. login screen. It can be activated to reveal an entry for | ||||
| #. manually entering the username. | ||||
| #: js/gdm/loginDialog.js:458 | ||||
| #: js/gdm/loginDialog.js:462 | ||||
| msgid "Not listed?" | ||||
| msgstr "Tak masuk daftar?" | ||||
|  | ||||
| #. Translators: this message is shown below the username entry field | ||||
| #. to clue the user in on how to login to the local network realm | ||||
| #: js/gdm/loginDialog.js:887 | ||||
| #: js/gdm/loginDialog.js:891 | ||||
| #, javascript-format | ||||
| msgid "(e.g., user or %s)" | ||||
| msgstr "(cth., pengguna dari %s)" | ||||
| @@ -381,12 +381,12 @@ msgstr "(cth., pengguna dari %s)" | ||||
| #. TTLS and PEAP are actually much more complicated, but this complication | ||||
| #. is not visible here since we only care about phase2 authentication | ||||
| #. (and don't even care of which one) | ||||
| #: js/gdm/loginDialog.js:892 js/ui/components/networkAgent.js:243 | ||||
| #: js/gdm/loginDialog.js:896 js/ui/components/networkAgent.js:243 | ||||
| #: js/ui/components/networkAgent.js:261 | ||||
| msgid "Username: " | ||||
| msgstr "Nama pengguna: " | ||||
|  | ||||
| #: js/gdm/loginDialog.js:1228 | ||||
| #: js/gdm/loginDialog.js:1234 | ||||
| msgid "Login Window" | ||||
| msgstr "Jendela Log Masuk" | ||||
|  | ||||
| @@ -399,7 +399,7 @@ msgstr "Galat otentikasi" | ||||
| #. as a cue to display our own message. | ||||
| #. Translators: this message is shown below the password entry field | ||||
| #. to indicate the user can swipe their finger instead | ||||
| #: js/gdm/util.js:482 | ||||
| #: js/gdm/util.js:485 | ||||
| msgid "(or swipe finger)" | ||||
| msgstr "(atau gesekkan jari)" | ||||
|  | ||||
| @@ -634,23 +634,23 @@ msgstr "Sering" | ||||
| msgid "All" | ||||
| msgstr "Semua" | ||||
|  | ||||
| #: js/ui/appDisplay.js:1886 | ||||
| #: js/ui/appDisplay.js:1890 | ||||
| msgid "New Window" | ||||
| msgstr "Jendela Baru" | ||||
|  | ||||
| #: js/ui/appDisplay.js:1900 | ||||
| #: js/ui/appDisplay.js:1904 | ||||
| msgid "Launch using Dedicated Graphics Card" | ||||
| msgstr "Luncurkan menggunakan Kartu Grafis Terdedikasi" | ||||
|  | ||||
| #: js/ui/appDisplay.js:1927 js/ui/dash.js:285 | ||||
| #: js/ui/appDisplay.js:1931 js/ui/dash.js:285 | ||||
| msgid "Remove from Favorites" | ||||
| msgstr "Hapus dari Favorit" | ||||
|  | ||||
| #: js/ui/appDisplay.js:1933 | ||||
| #: js/ui/appDisplay.js:1937 | ||||
| msgid "Add to Favorites" | ||||
| msgstr "Tambah ke Favorit" | ||||
|  | ||||
| #: js/ui/appDisplay.js:1943 | ||||
| #: js/ui/appDisplay.js:1947 | ||||
| msgid "Show Details" | ||||
| msgstr "Tampilkan Rincian" | ||||
|  | ||||
| @@ -797,35 +797,35 @@ msgctxt "event list time" | ||||
| msgid "All Day" | ||||
| msgstr "Sepanjang Hari" | ||||
|  | ||||
| #: js/ui/calendar.js:864 | ||||
| #: js/ui/calendar.js:866 | ||||
| msgctxt "calendar heading" | ||||
| msgid "%A, %B %d" | ||||
| msgstr "%A, %d %B" | ||||
|  | ||||
| #: js/ui/calendar.js:868 | ||||
| #: js/ui/calendar.js:870 | ||||
| msgctxt "calendar heading" | ||||
| msgid "%A, %B %d, %Y" | ||||
| msgstr "%A, %d %B %Y" | ||||
|  | ||||
| #: js/ui/calendar.js:1086 | ||||
| #: js/ui/calendar.js:1100 | ||||
| msgid "No Notifications" | ||||
| msgstr "Tak Ada Pemberitahuan" | ||||
|  | ||||
| #: js/ui/calendar.js:1089 | ||||
| #: js/ui/calendar.js:1103 | ||||
| msgid "No Events" | ||||
| msgstr "Tak Ada Kejadian" | ||||
|  | ||||
| #: js/ui/calendar.js:1117 | ||||
| #: js/ui/calendar.js:1131 | ||||
| msgid "Clear All" | ||||
| msgstr "Bersihkan Semua" | ||||
|  | ||||
| #. Translators: %s is an application name | ||||
| #: js/ui/closeDialog.js:44 | ||||
| #: js/ui/closeDialog.js:47 | ||||
| #, javascript-format | ||||
| msgid "“%s” is not responding." | ||||
| msgstr "\"%s\" tidak merespon." | ||||
|  | ||||
| #: js/ui/closeDialog.js:45 | ||||
| #: js/ui/closeDialog.js:48 | ||||
| msgid "" | ||||
| "You may choose to wait a short while for it to continue or force the " | ||||
| "application to quit entirely." | ||||
| @@ -833,11 +833,11 @@ msgstr "" | ||||
| "Anda dapat memilih untuk menunggu sebentar untuk melanjutkan atau memaksa " | ||||
| "aplikasi keluar." | ||||
|  | ||||
| #: js/ui/closeDialog.js:61 | ||||
| #: js/ui/closeDialog.js:64 | ||||
| msgid "Force Quit" | ||||
| msgstr "Tutup Paksa" | ||||
|  | ||||
| #: js/ui/closeDialog.js:64 | ||||
| #: js/ui/closeDialog.js:67 | ||||
| msgid "Wait" | ||||
| msgstr "Tunggu" | ||||
|  | ||||
| @@ -854,7 +854,7 @@ msgstr "Drive eksternal terputus" | ||||
| msgid "Open with %s" | ||||
| msgstr "Buka dengan %s" | ||||
|  | ||||
| #: js/ui/components/keyring.js:107 js/ui/components/polkitAgent.js:295 | ||||
| #: js/ui/components/keyring.js:107 js/ui/components/polkitAgent.js:297 | ||||
| msgid "Password:" | ||||
| msgstr "Sandi:" | ||||
|  | ||||
| @@ -891,11 +891,11 @@ msgstr "Sandi kunci privat: " | ||||
| msgid "Service: " | ||||
| msgstr "Layanan: " | ||||
|  | ||||
| #: js/ui/components/networkAgent.js:292 js/ui/components/networkAgent.js:659 | ||||
| #: js/ui/components/networkAgent.js:292 js/ui/components/networkAgent.js:664 | ||||
| msgid "Authentication required by wireless network" | ||||
| msgstr "Otentikasi diperlukan oleh jaringan nirkabel" | ||||
|  | ||||
| #: js/ui/components/networkAgent.js:293 js/ui/components/networkAgent.js:660 | ||||
| #: js/ui/components/networkAgent.js:293 js/ui/components/networkAgent.js:665 | ||||
| #, javascript-format | ||||
| msgid "" | ||||
| "Passwords or encryption keys are required to access the wireless network " | ||||
| @@ -904,7 +904,7 @@ msgstr "" | ||||
| "Sandi atau kunci enkripsi diperlukan untuk mengakses jaringan nirkabel \"%s" | ||||
| "\"." | ||||
|  | ||||
| #: js/ui/components/networkAgent.js:297 js/ui/components/networkAgent.js:663 | ||||
| #: js/ui/components/networkAgent.js:297 js/ui/components/networkAgent.js:668 | ||||
| msgid "Wired 802.1X authentication" | ||||
| msgstr "Otentikasi 802.1X kabel" | ||||
|  | ||||
| @@ -912,15 +912,15 @@ msgstr "Otentikasi 802.1X kabel" | ||||
| msgid "Network name: " | ||||
| msgstr "Nama jaringan: " | ||||
|  | ||||
| #: js/ui/components/networkAgent.js:304 js/ui/components/networkAgent.js:667 | ||||
| #: js/ui/components/networkAgent.js:304 js/ui/components/networkAgent.js:672 | ||||
| msgid "DSL authentication" | ||||
| msgstr "Otentikasi DSL" | ||||
|  | ||||
| #: js/ui/components/networkAgent.js:311 js/ui/components/networkAgent.js:673 | ||||
| #: js/ui/components/networkAgent.js:311 js/ui/components/networkAgent.js:678 | ||||
| msgid "PIN code required" | ||||
| msgstr "Perlu kode PIN" | ||||
|  | ||||
| #: js/ui/components/networkAgent.js:312 js/ui/components/networkAgent.js:674 | ||||
| #: js/ui/components/networkAgent.js:312 js/ui/components/networkAgent.js:679 | ||||
| msgid "PIN code is needed for the mobile broadband device" | ||||
| msgstr "Kode PIN diperlukan untuk perangkat data seluler" | ||||
|  | ||||
| @@ -928,17 +928,17 @@ msgstr "Kode PIN diperlukan untuk perangkat data seluler" | ||||
| msgid "PIN: " | ||||
| msgstr "PIN: " | ||||
|  | ||||
| #: js/ui/components/networkAgent.js:320 js/ui/components/networkAgent.js:680 | ||||
| #: js/ui/components/networkAgent.js:320 js/ui/components/networkAgent.js:685 | ||||
| msgid "Mobile broadband network password" | ||||
| msgstr "Sandi jaringan data seluler" | ||||
|  | ||||
| #: js/ui/components/networkAgent.js:321 js/ui/components/networkAgent.js:664 | ||||
| #: js/ui/components/networkAgent.js:668 js/ui/components/networkAgent.js:681 | ||||
| #: js/ui/components/networkAgent.js:321 js/ui/components/networkAgent.js:669 | ||||
| #: js/ui/components/networkAgent.js:673 js/ui/components/networkAgent.js:686 | ||||
| #, javascript-format | ||||
| msgid "A password is required to connect to “%s”." | ||||
| msgstr "Perlu suatu sandi untuk menyambung ke \"%s\"." | ||||
|  | ||||
| #: js/ui/components/networkAgent.js:648 js/ui/status/network.js:1691 | ||||
| #: js/ui/components/networkAgent.js:653 js/ui/status/network.js:1704 | ||||
| msgid "Network Manager" | ||||
| msgstr "Manajer Jaringan" | ||||
|  | ||||
| @@ -958,7 +958,7 @@ msgstr "Otentikasi" | ||||
| #. * requested authentication was not gained; this can happen | ||||
| #. * because of an authentication error (like invalid password), | ||||
| #. * for instance. | ||||
| #: js/ui/components/polkitAgent.js:281 js/ui/shellMountOperation.js:327 | ||||
| #: js/ui/components/polkitAgent.js:283 js/ui/shellMountOperation.js:327 | ||||
| msgid "Sorry, that didn’t work. Please try again." | ||||
| msgstr "Maaf, tidak berhasil. Silakan coba lagi." | ||||
|  | ||||
| @@ -1281,13 +1281,13 @@ msgid "Leave On" | ||||
| msgstr "Biarkan Menyala" | ||||
|  | ||||
| #: js/ui/kbdA11yDialog.js:59 js/ui/status/bluetooth.js:143 | ||||
| #: js/ui/status/network.js:1281 | ||||
| #: js/ui/status/network.js:1294 | ||||
| msgid "Turn On" | ||||
| msgstr "Nyalakan" | ||||
|  | ||||
| #: js/ui/kbdA11yDialog.js:67 js/ui/status/bluetooth.js:143 | ||||
| #: js/ui/status/network.js:154 js/ui/status/network.js:337 | ||||
| #: js/ui/status/network.js:1281 js/ui/status/network.js:1396 | ||||
| #: js/ui/status/network.js:1294 js/ui/status/network.js:1409 | ||||
| #: js/ui/status/nightLight.js:47 js/ui/status/rfkill.js:90 | ||||
| #: js/ui/status/rfkill.js:117 | ||||
| msgid "Turn Off" | ||||
| @@ -1349,7 +1349,7 @@ msgstr "Tilik Sumber" | ||||
| msgid "Web Page" | ||||
| msgstr "Halaman Web" | ||||
|  | ||||
| #: js/ui/messageTray.js:1493 | ||||
| #: js/ui/messageTray.js:1495 | ||||
| msgid "System Information" | ||||
| msgstr "Informasi Sistem" | ||||
|  | ||||
| @@ -1423,22 +1423,22 @@ msgstr "Tekan Esc untuk keluar" | ||||
| msgid "Press any key to exit" | ||||
| msgstr "Tekan tombol apa saja untuk keluar" | ||||
|  | ||||
| #: js/ui/panel.js:355 | ||||
| #: js/ui/panel.js:356 | ||||
| msgid "Quit" | ||||
| msgstr "Keluar" | ||||
|  | ||||
| #. Translators: If there is no suitable word for "Activities" | ||||
| #. in your language, you can use the word for "Overview". | ||||
| #: js/ui/panel.js:411 | ||||
| #: js/ui/panel.js:412 | ||||
| msgid "Activities" | ||||
| msgstr "Aktivitas" | ||||
|  | ||||
| #: js/ui/panel.js:692 | ||||
| #: js/ui/panel.js:693 | ||||
| msgctxt "System menu in the top bar" | ||||
| msgid "System" | ||||
| msgstr "Sistem" | ||||
|  | ||||
| #: js/ui/panel.js:811 | ||||
| #: js/ui/panel.js:816 | ||||
| msgid "Top Bar" | ||||
| msgstr "Bar Atas" | ||||
|  | ||||
| @@ -1448,7 +1448,7 @@ msgstr "Bar Atas" | ||||
| #. "ON" and "OFF") or "toggle-switch-intl" (for toggle | ||||
| #. switches containing "◯" and "|"). Other values will | ||||
| #. simply result in invisible toggle switches. | ||||
| #: js/ui/popupMenu.js:291 | ||||
| #: js/ui/popupMenu.js:300 | ||||
| msgid "toggle-switch-us" | ||||
| msgstr "toggle-switch-intl" | ||||
|  | ||||
| @@ -1456,15 +1456,15 @@ msgstr "toggle-switch-intl" | ||||
| msgid "Enter a Command" | ||||
| msgstr "Ketikkan Perintah" | ||||
|  | ||||
| #: js/ui/runDialog.js:110 js/ui/windowMenu.js:175 | ||||
| #: js/ui/runDialog.js:110 js/ui/windowMenu.js:174 | ||||
| msgid "Close" | ||||
| msgstr "Tutup" | ||||
|  | ||||
| #: js/ui/runDialog.js:273 | ||||
| #: js/ui/runDialog.js:274 | ||||
| msgid "Restart is not available on Wayland" | ||||
| msgstr "Memulai ulang tidak tersedia di Wayland" | ||||
|  | ||||
| #: js/ui/runDialog.js:278 | ||||
| #: js/ui/runDialog.js:279 | ||||
| msgid "Restarting…" | ||||
| msgstr "Memulai ulang..." | ||||
|  | ||||
| @@ -1665,7 +1665,7 @@ msgid "<unknown>" | ||||
| msgstr "<tak dikenal>" | ||||
|  | ||||
| #. Translators: %s is a network identifier | ||||
| #: js/ui/status/network.js:441 js/ui/status/network.js:1310 | ||||
| #: js/ui/status/network.js:441 js/ui/status/network.js:1323 | ||||
| #, javascript-format | ||||
| msgid "%s Off" | ||||
| msgstr "%s Mati" | ||||
| @@ -1691,7 +1691,7 @@ msgid "%s Disconnecting" | ||||
| msgstr "%s Memutus" | ||||
|  | ||||
| #. Translators: %s is a network identifier | ||||
| #: js/ui/status/network.js:459 js/ui/status/network.js:1302 | ||||
| #: js/ui/status/network.js:459 js/ui/status/network.js:1315 | ||||
| #, javascript-format | ||||
| msgid "%s Connecting" | ||||
| msgstr "%s Menyambung" | ||||
| @@ -1731,7 +1731,7 @@ msgid "Mobile Broadband Settings" | ||||
| msgstr "Pengaturan Data Seluler" | ||||
|  | ||||
| #. Translators: %s is a network identifier | ||||
| #: js/ui/status/network.js:578 js/ui/status/network.js:1307 | ||||
| #: js/ui/status/network.js:578 js/ui/status/network.js:1320 | ||||
| #, javascript-format | ||||
| msgid "%s Hardware Disabled" | ||||
| msgstr "%s Perangkat Keras Dinonaktifkan" | ||||
| @@ -1787,78 +1787,78 @@ msgstr "Tiada Jaringan" | ||||
| msgid "Use hardware switch to turn off" | ||||
| msgstr "Pakai saklar perangkat keras untuk mematikan" | ||||
|  | ||||
| #: js/ui/status/network.js:1173 | ||||
| #: js/ui/status/network.js:1186 | ||||
| msgid "Select Network" | ||||
| msgstr "Pilih Jaringan" | ||||
|  | ||||
| #: js/ui/status/network.js:1179 | ||||
| #: js/ui/status/network.js:1192 | ||||
| msgid "Wi-Fi Settings" | ||||
| msgstr "Pengaturan Wi-Fi" | ||||
|  | ||||
| #. Translators: %s is a network identifier | ||||
| #: js/ui/status/network.js:1298 | ||||
| #: js/ui/status/network.js:1311 | ||||
| #, javascript-format | ||||
| msgid "%s Hotspot Active" | ||||
| msgstr "%s Hotspot Aktif" | ||||
|  | ||||
| #. Translators: %s is a network identifier | ||||
| #: js/ui/status/network.js:1313 | ||||
| #: js/ui/status/network.js:1326 | ||||
| #, javascript-format | ||||
| msgid "%s Not Connected" | ||||
| msgstr "%s Tak Tersambung" | ||||
|  | ||||
| #: js/ui/status/network.js:1413 | ||||
| #: js/ui/status/network.js:1426 | ||||
| msgid "connecting…" | ||||
| msgstr "menghubungi..." | ||||
|  | ||||
| #. Translators: this is for network connections that require some kind of key or password | ||||
| #: js/ui/status/network.js:1416 | ||||
| #: js/ui/status/network.js:1429 | ||||
| msgid "authentication required" | ||||
| msgstr "diperlukan otentikasi" | ||||
|  | ||||
| #: js/ui/status/network.js:1418 | ||||
| #: js/ui/status/network.js:1431 | ||||
| msgid "connection failed" | ||||
| msgstr "koneksi gagal" | ||||
|  | ||||
| #: js/ui/status/network.js:1472 | ||||
| #: js/ui/status/network.js:1485 | ||||
| msgid "VPN Settings" | ||||
| msgstr "Pengaturan VPN" | ||||
|  | ||||
| #: js/ui/status/network.js:1485 | ||||
| #: js/ui/status/network.js:1498 | ||||
| msgid "VPN" | ||||
| msgstr "VPN" | ||||
|  | ||||
| #: js/ui/status/network.js:1495 | ||||
| #: js/ui/status/network.js:1508 | ||||
| msgid "VPN Off" | ||||
| msgstr "VPN Mati" | ||||
|  | ||||
| #: js/ui/status/network.js:1559 js/ui/status/rfkill.js:93 | ||||
| #: js/ui/status/network.js:1572 js/ui/status/rfkill.js:93 | ||||
| msgid "Network Settings" | ||||
| msgstr "Pengaturan Jaringan" | ||||
|  | ||||
| #: js/ui/status/network.js:1588 | ||||
| #: js/ui/status/network.js:1601 | ||||
| #, javascript-format | ||||
| msgid "%s Wired Connection" | ||||
| msgid_plural "%s Wired Connections" | ||||
| msgstr[0] "%s Koneksi Kabel" | ||||
|  | ||||
| #: js/ui/status/network.js:1592 | ||||
| #: js/ui/status/network.js:1605 | ||||
| #, javascript-format | ||||
| msgid "%s Wi-Fi Connection" | ||||
| msgid_plural "%s Wi-Fi Connections" | ||||
| msgstr[0] "%s Koneksi Wi-Fi" | ||||
|  | ||||
| #: js/ui/status/network.js:1596 | ||||
| #: js/ui/status/network.js:1609 | ||||
| #, javascript-format | ||||
| msgid "%s Modem Connection" | ||||
| msgid_plural "%s Modem Connections" | ||||
| msgstr[0] "%s Koneksi Modem" | ||||
|  | ||||
| #: js/ui/status/network.js:1728 | ||||
| #: js/ui/status/network.js:1741 | ||||
| msgid "Connection failed" | ||||
| msgstr "Koneksi gagal" | ||||
|  | ||||
| #: js/ui/status/network.js:1729 | ||||
| #: js/ui/status/network.js:1742 | ||||
| msgid "Activation of network connection failed" | ||||
| msgstr "Aktivasi koneksi jaringan gagal" | ||||
|  | ||||
| @@ -1909,6 +1909,14 @@ msgstr "%d:%02d Sampai Penuh (%d%%)" | ||||
| msgid "%d %%" | ||||
| msgstr "%d %%" | ||||
|  | ||||
| #: js/ui/status/remoteAccess.js:45 | ||||
| msgid "Screen is Being Shared" | ||||
| msgstr "Layar Sedang Dibagi" | ||||
|  | ||||
| #: js/ui/status/remoteAccess.js:47 | ||||
| msgid "Turn off" | ||||
| msgstr "Matikan" | ||||
|  | ||||
| #. The menu only appears when airplane mode is on, so just | ||||
| #. statically build it as if it was on, rather than dynamically | ||||
| #. changing the menu contents. | ||||
| @@ -1940,16 +1948,16 @@ msgstr "Suspensi" | ||||
| msgid "Power Off" | ||||
| msgstr "Matikan" | ||||
|  | ||||
| #: js/ui/status/thunderbolt.js:294 | ||||
| #: js/ui/status/thunderbolt.js:298 | ||||
| msgid "Thunderbolt" | ||||
| msgstr "Thunderbolt" | ||||
|  | ||||
| #. we are done | ||||
| #: js/ui/status/thunderbolt.js:350 | ||||
| #: js/ui/status/thunderbolt.js:354 | ||||
| msgid "Unknown Thunderbolt device" | ||||
| msgstr "Perangkat Thunderbolt tak dikenal" | ||||
|  | ||||
| #: js/ui/status/thunderbolt.js:351 | ||||
| #: js/ui/status/thunderbolt.js:355 | ||||
| msgid "" | ||||
| "New device has been detected while you were away. Please disconnect and " | ||||
| "reconnect the device to start using it." | ||||
| @@ -1957,11 +1965,11 @@ msgstr "" | ||||
| "Perangkat baru telah terdeteksi saat Anda pergi. Harap lepaskan dan " | ||||
| "sambungkan kembali perangkat untuk mulai menggunakannya." | ||||
|  | ||||
| #: js/ui/status/thunderbolt.js:356 | ||||
| #: js/ui/status/thunderbolt.js:360 | ||||
| msgid "Thunderbolt authorization error" | ||||
| msgstr "Autorisasi Thunderbolt galat" | ||||
|  | ||||
| #: js/ui/status/thunderbolt.js:357 | ||||
| #: js/ui/status/thunderbolt.js:361 | ||||
| #, javascript-format | ||||
| msgid "Could not authorize the Thunderbolt device: %s" | ||||
| msgstr "Tidak dapat mengautorisasi perangkat Thunderbolt: %s" | ||||
| @@ -2046,7 +2054,7 @@ msgstr[0] "Perubahan tatanan akan dikembalikan dalam %d detik" | ||||
|  | ||||
| #. Translators: This represents the size of a window. The first number is | ||||
| #. * the width of the window and the second is the height. | ||||
| #: js/ui/windowManager.js:660 | ||||
| #: js/ui/windowManager.js:668 | ||||
| #, javascript-format | ||||
| msgid "%d × %d" | ||||
| msgstr "%d × %d" | ||||
| @@ -2099,19 +2107,19 @@ msgstr "Pindah ke Ruang Kerja Atas" | ||||
| msgid "Move to Workspace Down" | ||||
| msgstr "Pindah ke Ruang Kerja Bawah" | ||||
|  | ||||
| #: js/ui/windowMenu.js:140 | ||||
| #: js/ui/windowMenu.js:139 | ||||
| msgid "Move to Monitor Up" | ||||
| msgstr "Pindah ke Ruang Kerja Atas" | ||||
|  | ||||
| #: js/ui/windowMenu.js:149 | ||||
| #: js/ui/windowMenu.js:148 | ||||
| msgid "Move to Monitor Down" | ||||
| msgstr "Pindah ke Ruang Kerja Bawah" | ||||
|  | ||||
| #: js/ui/windowMenu.js:158 | ||||
| #: js/ui/windowMenu.js:157 | ||||
| msgid "Move to Monitor Left" | ||||
| msgstr "Pindahkan ke Monitor Kiri" | ||||
|  | ||||
| #: js/ui/windowMenu.js:167 | ||||
| #: js/ui/windowMenu.js:166 | ||||
| msgid "Move to Monitor Right" | ||||
| msgstr "Pindahkan ke Monitor Kanan" | ||||
|  | ||||
| @@ -2140,12 +2148,12 @@ msgstr "Menggunakan mode tertentu, mis. \"gdm\" untuk layar masuk" | ||||
| msgid "List possible modes" | ||||
| msgstr "Menampilkan mode yang mungkin" | ||||
|  | ||||
| #: src/shell-app.c:270 | ||||
| #: src/shell-app.c:272 | ||||
| msgctxt "program" | ||||
| msgid "Unknown" | ||||
| msgstr "Tak dikenal" | ||||
|  | ||||
| #: src/shell-app.c:511 | ||||
| #: src/shell-app.c:523 | ||||
| #, c-format | ||||
| msgid "Failed to launch “%s”" | ||||
| msgstr "Gagal meluncurkan \"%s\"" | ||||
|   | ||||
							
								
								
									
										315
									
								
								po/ko.po
									
									
									
									
									
								
							
							
						
						
									
										315
									
								
								po/ko.po
									
									
									
									
									
								
							| @@ -14,13 +14,14 @@ | ||||
| #   - VPN: 가상사설망 | ||||
| #   - pairing (bluetooth 관련): 페어링 | ||||
| #   - Wayland: 웨일랜드로 음역 | ||||
| #   - Night Light: 야간 모드 (gnome-control-center와 일치) | ||||
| # | ||||
| msgid "" | ||||
| msgstr "" | ||||
| "Project-Id-Version: gnome-shell\n" | ||||
| "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues\n" | ||||
| "POT-Creation-Date: 2018-02-22 09:24+0000\n" | ||||
| "PO-Revision-Date: 2018-02-25 09:21+0900\n" | ||||
| "POT-Creation-Date: 2018-08-01 18:08+0000\n" | ||||
| "PO-Revision-Date: 2018-08-26 15:05+0900\n" | ||||
| "Last-Translator: Changwoo Ryu <cwryu@debian.org>\n" | ||||
| "Language-Team: GNOME Korea <gnome-kr@googlegroups.com>\n" | ||||
| "Language: ko\n" | ||||
| @@ -283,32 +284,32 @@ msgstr "" | ||||
| "참이면, 현재 작업 공간에 창이 있는 창만 창 전환 창에 표시합니다. 거짓이면 모" | ||||
| "든 창을 표시합니다." | ||||
|  | ||||
| #: data/org.gnome.shell.gschema.xml.in:197 | ||||
| #: data/org.gnome.shell.gschema.xml.in:198 | ||||
| msgid "Attach modal dialog to the parent window" | ||||
| msgstr "상위 창에 모달 대화창 붙이기" | ||||
|  | ||||
| #: data/org.gnome.shell.gschema.xml.in:198 | ||||
| #: data/org.gnome.shell.gschema.xml.in:207 | ||||
| #: data/org.gnome.shell.gschema.xml.in:215 | ||||
| #: data/org.gnome.shell.gschema.xml.in:223 | ||||
| #: data/org.gnome.shell.gschema.xml.in:231 | ||||
| #: data/org.gnome.shell.gschema.xml.in:199 | ||||
| #: data/org.gnome.shell.gschema.xml.in:208 | ||||
| #: data/org.gnome.shell.gschema.xml.in:216 | ||||
| #: data/org.gnome.shell.gschema.xml.in:224 | ||||
| #: data/org.gnome.shell.gschema.xml.in:232 | ||||
| msgid "" | ||||
| "This key overrides the key in org.gnome.mutter when running GNOME Shell." | ||||
| msgstr "그놈 셸을 실행할 때 org.gnome.mutter의 키 대신 사용됩니다." | ||||
|  | ||||
| #: data/org.gnome.shell.gschema.xml.in:206 | ||||
| #: data/org.gnome.shell.gschema.xml.in:207 | ||||
| msgid "Enable edge tiling when dropping windows on screen edges" | ||||
| msgstr "화면 가장자리에 창을 놓을 때 가장자리에 맞춥니다" | ||||
|  | ||||
| #: data/org.gnome.shell.gschema.xml.in:214 | ||||
| #: data/org.gnome.shell.gschema.xml.in:215 | ||||
| msgid "Workspaces are managed dynamically" | ||||
| msgstr "작업 공간을 동적으로 관리" | ||||
|  | ||||
| #: data/org.gnome.shell.gschema.xml.in:222 | ||||
| #: data/org.gnome.shell.gschema.xml.in:223 | ||||
| msgid "Workspaces only on primary monitor" | ||||
| msgstr "주 모니터에서만 작업 공간 사용" | ||||
|  | ||||
| #: data/org.gnome.shell.gschema.xml.in:230 | ||||
| #: data/org.gnome.shell.gschema.xml.in:231 | ||||
| msgid "Delay focus changes in mouse mode until the pointer stops moving" | ||||
| msgstr "마우스 포인터가 움직이지 않을 때까지 포커스 전환을 미루기" | ||||
|  | ||||
| @@ -327,7 +328,7 @@ msgid "There was an error loading the preferences dialog for %s:" | ||||
| msgstr "%s에 대한 기본 설정 대화상자를 불러오는데 오류가 발생했습니다:" | ||||
|  | ||||
| #: js/gdm/authPrompt.js:147 js/ui/audioDeviceSelection.js:71 | ||||
| #: js/ui/components/networkAgent.js:117 js/ui/components/polkitAgent.js:148 | ||||
| #: js/ui/components/networkAgent.js:117 js/ui/components/polkitAgent.js:153 | ||||
| #: js/ui/endSessionDialog.js:482 js/ui/extensionDownloader.js:197 | ||||
| #: js/ui/shellMountOperation.js:343 js/ui/status/network.js:919 | ||||
| msgid "Cancel" | ||||
| @@ -347,20 +348,20 @@ msgctxt "button" | ||||
| msgid "Sign In" | ||||
| msgstr "로그인" | ||||
|  | ||||
| #: js/gdm/loginDialog.js:315 | ||||
| #: js/gdm/loginDialog.js:319 | ||||
| msgid "Choose Session" | ||||
| msgstr "세션 선택" | ||||
|  | ||||
| #. translators: this message is shown below the user list on the | ||||
| #. login screen. It can be activated to reveal an entry for | ||||
| #. manually entering the username. | ||||
| #: js/gdm/loginDialog.js:458 | ||||
| #: js/gdm/loginDialog.js:462 | ||||
| msgid "Not listed?" | ||||
| msgstr "목록에 없습니까?" | ||||
|  | ||||
| #. Translators: this message is shown below the username entry field | ||||
| #. to clue the user in on how to login to the local network realm | ||||
| #: js/gdm/loginDialog.js:887 | ||||
| #: js/gdm/loginDialog.js:891 | ||||
| #, javascript-format | ||||
| msgid "(e.g., user or %s)" | ||||
| msgstr "(예를 들어, 사용자 또는 %s)" | ||||
| @@ -368,12 +369,12 @@ msgstr "(예를 들어, 사용자 또는 %s)" | ||||
| #. TTLS and PEAP are actually much more complicated, but this complication | ||||
| #. is not visible here since we only care about phase2 authentication | ||||
| #. (and don't even care of which one) | ||||
| #: js/gdm/loginDialog.js:892 js/ui/components/networkAgent.js:243 | ||||
| #: js/gdm/loginDialog.js:896 js/ui/components/networkAgent.js:243 | ||||
| #: js/ui/components/networkAgent.js:261 | ||||
| msgid "Username: " | ||||
| msgstr "사용자 이름: " | ||||
|  | ||||
| #: js/gdm/loginDialog.js:1228 | ||||
| #: js/gdm/loginDialog.js:1234 | ||||
| msgid "Login Window" | ||||
| msgstr "로그인 창" | ||||
|  | ||||
| @@ -386,7 +387,7 @@ msgstr "인증 오류" | ||||
| #. as a cue to display our own message. | ||||
| #. Translators: this message is shown below the password entry field | ||||
| #. to indicate the user can swipe their finger instead | ||||
| #: js/gdm/util.js:482 | ||||
| #: js/gdm/util.js:485 | ||||
| msgid "(or swipe finger)" | ||||
| msgstr "(또는 지문을 문지르십시오)" | ||||
|  | ||||
| @@ -621,33 +622,33 @@ msgstr "자주" | ||||
| msgid "All" | ||||
| msgstr "모두" | ||||
|  | ||||
| #: js/ui/appDisplay.js:1886 | ||||
| #: js/ui/appDisplay.js:1890 | ||||
| msgid "New Window" | ||||
| msgstr "새 창" | ||||
|  | ||||
| #: js/ui/appDisplay.js:1900 | ||||
| #: js/ui/appDisplay.js:1904 | ||||
| msgid "Launch using Dedicated Graphics Card" | ||||
| msgstr "지정한 그래픽 카드를 사용해 시작" | ||||
|  | ||||
| #: js/ui/appDisplay.js:1927 js/ui/dash.js:285 | ||||
| #: js/ui/appDisplay.js:1931 js/ui/dash.js:285 | ||||
| msgid "Remove from Favorites" | ||||
| msgstr "즐겨찾기에서 제거" | ||||
|  | ||||
| #: js/ui/appDisplay.js:1933 | ||||
| #: js/ui/appDisplay.js:1937 | ||||
| msgid "Add to Favorites" | ||||
| msgstr "즐겨찾기에 추가" | ||||
|  | ||||
| # 주의: "Show ..." 형태지만 보이기로 번역하지 않는다 | ||||
| #: js/ui/appDisplay.js:1943 | ||||
| #: js/ui/appDisplay.js:1947 | ||||
| msgid "Show Details" | ||||
| msgstr "자세히 보기" | ||||
|  | ||||
| #: js/ui/appFavorites.js:138 | ||||
| #: js/ui/appFavorites.js:140 | ||||
| #, javascript-format | ||||
| msgid "%s has been added to your favorites." | ||||
| msgstr "%s 프로그램을 즐겨찾기에 추가했습니다." | ||||
|  | ||||
| #: js/ui/appFavorites.js:172 | ||||
| #: js/ui/appFavorites.js:174 | ||||
| #, javascript-format | ||||
| msgid "%s has been removed from your favorites." | ||||
| msgstr "%s 프로그램을 즐겨찾기에서 제거했습니다." | ||||
| @@ -668,7 +669,7 @@ msgstr "헤드폰" | ||||
| msgid "Headset" | ||||
| msgstr "헤드셋" | ||||
|  | ||||
| #: js/ui/audioDeviceSelection.js:82 js/ui/status/volume.js:221 | ||||
| #: js/ui/audioDeviceSelection.js:82 js/ui/status/volume.js:255 | ||||
| msgid "Microphone" | ||||
| msgstr "마이크" | ||||
|  | ||||
| @@ -680,7 +681,7 @@ msgstr "배경 바꾸기…" | ||||
| msgid "Display Settings" | ||||
| msgstr "디스플레이 설정" | ||||
|  | ||||
| #: js/ui/backgroundMenu.js:22 js/ui/status/system.js:264 | ||||
| #: js/ui/backgroundMenu.js:22 | ||||
| msgid "Settings" | ||||
| msgstr "설정" | ||||
|  | ||||
| @@ -785,46 +786,46 @@ msgctxt "event list time" | ||||
| msgid "All Day" | ||||
| msgstr "종일" | ||||
|  | ||||
| #: js/ui/calendar.js:864 | ||||
| #: js/ui/calendar.js:866 | ||||
| msgctxt "calendar heading" | ||||
| msgid "%A, %B %d" | ||||
| msgstr "%B %d일 %A" | ||||
|  | ||||
| #: js/ui/calendar.js:868 | ||||
| #: js/ui/calendar.js:870 | ||||
| msgctxt "calendar heading" | ||||
| msgid "%A, %B %d, %Y" | ||||
| msgstr "%Y년 %B %d일 %A" | ||||
|  | ||||
| #: js/ui/calendar.js:1086 | ||||
| #: js/ui/calendar.js:1100 | ||||
| msgid "No Notifications" | ||||
| msgstr "알림 없음" | ||||
|  | ||||
| #: js/ui/calendar.js:1089 | ||||
| #: js/ui/calendar.js:1103 | ||||
| msgid "No Events" | ||||
| msgstr "행사 없음" | ||||
|  | ||||
| #: js/ui/calendar.js:1117 | ||||
| #: js/ui/calendar.js:1131 | ||||
| msgid "Clear All" | ||||
| msgstr "모두 지우기" | ||||
|  | ||||
| #. Translators: %s is an application name | ||||
| #: js/ui/closeDialog.js:44 | ||||
| #: js/ui/closeDialog.js:47 | ||||
| #, javascript-format | ||||
| msgid "“%s” is not responding." | ||||
| msgstr "“%s” 프로그램이 응답하지 않습니다." | ||||
|  | ||||
| #: js/ui/closeDialog.js:45 | ||||
| #: js/ui/closeDialog.js:48 | ||||
| msgid "" | ||||
| "You may choose to wait a short while for it to continue or force the " | ||||
| "application to quit entirely." | ||||
| msgstr "" | ||||
| "좀 더 기다려서 계속 할 수도 있고, 강제로 프로그램을 끝낼 수도 있습니다." | ||||
|  | ||||
| #: js/ui/closeDialog.js:61 | ||||
| #: js/ui/closeDialog.js:64 | ||||
| msgid "Force Quit" | ||||
| msgstr "강제로 끝내기" | ||||
|  | ||||
| #: js/ui/closeDialog.js:64 | ||||
| #: js/ui/closeDialog.js:67 | ||||
| msgid "Wait" | ||||
| msgstr "기다리기" | ||||
|  | ||||
| @@ -841,7 +842,7 @@ msgstr "외부 드라이브 연결 끊김" | ||||
| msgid "Open with %s" | ||||
| msgstr "%s 프로그램으로 열기" | ||||
|  | ||||
| #: js/ui/components/keyring.js:107 js/ui/components/polkitAgent.js:284 | ||||
| #: js/ui/components/keyring.js:107 js/ui/components/polkitAgent.js:297 | ||||
| msgid "Password:" | ||||
| msgstr "암호:" | ||||
|  | ||||
| @@ -878,18 +879,18 @@ msgstr "개인 키 암호: " | ||||
| msgid "Service: " | ||||
| msgstr "서비스: " | ||||
|  | ||||
| #: js/ui/components/networkAgent.js:292 js/ui/components/networkAgent.js:659 | ||||
| #: js/ui/components/networkAgent.js:292 js/ui/components/networkAgent.js:664 | ||||
| msgid "Authentication required by wireless network" | ||||
| msgstr "무선 네트워크에서 인증이 필요합니다" | ||||
|  | ||||
| #: js/ui/components/networkAgent.js:293 js/ui/components/networkAgent.js:660 | ||||
| #: js/ui/components/networkAgent.js:293 js/ui/components/networkAgent.js:665 | ||||
| #, javascript-format | ||||
| msgid "" | ||||
| "Passwords or encryption keys are required to access the wireless network " | ||||
| "“%s”." | ||||
| msgstr "“%s” 무선 네트워크에 연결하려면 암호 또는 암호화 키가 필요합니다." | ||||
|  | ||||
| #: js/ui/components/networkAgent.js:297 js/ui/components/networkAgent.js:663 | ||||
| #: js/ui/components/networkAgent.js:297 js/ui/components/networkAgent.js:668 | ||||
| msgid "Wired 802.1X authentication" | ||||
| msgstr "유선 802.1X 인증" | ||||
|  | ||||
| @@ -897,15 +898,15 @@ msgstr "유선 802.1X 인증" | ||||
| msgid "Network name: " | ||||
| msgstr "네트워크 이름: " | ||||
|  | ||||
| #: js/ui/components/networkAgent.js:304 js/ui/components/networkAgent.js:667 | ||||
| #: js/ui/components/networkAgent.js:304 js/ui/components/networkAgent.js:672 | ||||
| msgid "DSL authentication" | ||||
| msgstr "인증이 필요합니다" | ||||
|  | ||||
| #: js/ui/components/networkAgent.js:311 js/ui/components/networkAgent.js:673 | ||||
| #: js/ui/components/networkAgent.js:311 js/ui/components/networkAgent.js:678 | ||||
| msgid "PIN code required" | ||||
| msgstr "PIN 코드가 필요합니다" | ||||
|  | ||||
| #: js/ui/components/networkAgent.js:312 js/ui/components/networkAgent.js:674 | ||||
| #: js/ui/components/networkAgent.js:312 js/ui/components/networkAgent.js:679 | ||||
| msgid "PIN code is needed for the mobile broadband device" | ||||
| msgstr "휴대전화 네트워크 장치를 사용하려면 PIN 코드가 필요합니다" | ||||
|  | ||||
| @@ -913,29 +914,29 @@ msgstr "휴대전화 네트워크 장치를 사용하려면 PIN 코드가 필요 | ||||
| msgid "PIN: " | ||||
| msgstr "PIN: " | ||||
|  | ||||
| #: js/ui/components/networkAgent.js:320 js/ui/components/networkAgent.js:680 | ||||
| #: js/ui/components/networkAgent.js:320 js/ui/components/networkAgent.js:685 | ||||
| msgid "Mobile broadband network password" | ||||
| msgstr "휴대전화 네트워크 암호" | ||||
|  | ||||
| #: js/ui/components/networkAgent.js:321 js/ui/components/networkAgent.js:664 | ||||
| #: js/ui/components/networkAgent.js:668 js/ui/components/networkAgent.js:681 | ||||
| #: js/ui/components/networkAgent.js:321 js/ui/components/networkAgent.js:669 | ||||
| #: js/ui/components/networkAgent.js:673 js/ui/components/networkAgent.js:686 | ||||
| #, javascript-format | ||||
| msgid "A password is required to connect to “%s”." | ||||
| msgstr "“%s”에 연결하려면 암호가 필요합니다." | ||||
|  | ||||
| #: js/ui/components/networkAgent.js:648 js/ui/status/network.js:1691 | ||||
| #: js/ui/components/networkAgent.js:653 js/ui/status/network.js:1704 | ||||
| msgid "Network Manager" | ||||
| msgstr "네트워크 관리" | ||||
|  | ||||
| #: js/ui/components/polkitAgent.js:43 | ||||
| #: js/ui/components/polkitAgent.js:48 | ||||
| msgid "Authentication Required" | ||||
| msgstr "인증이 필요합니다" | ||||
|  | ||||
| #: js/ui/components/polkitAgent.js:71 | ||||
| #: js/ui/components/polkitAgent.js:76 | ||||
| msgid "Administrator" | ||||
| msgstr "관리자" | ||||
|  | ||||
| #: js/ui/components/polkitAgent.js:151 | ||||
| #: js/ui/components/polkitAgent.js:156 | ||||
| msgid "Authenticate" | ||||
| msgstr "인증" | ||||
|  | ||||
| @@ -943,7 +944,7 @@ msgstr "인증" | ||||
| #. * requested authentication was not gained; this can happen | ||||
| #. * because of an authentication error (like invalid password), | ||||
| #. * for instance. | ||||
| #: js/ui/components/polkitAgent.js:270 js/ui/shellMountOperation.js:327 | ||||
| #: js/ui/components/polkitAgent.js:283 js/ui/shellMountOperation.js:327 | ||||
| msgid "Sorry, that didn’t work. Please try again." | ||||
| msgstr "죄송합니다. 동작하지 않았습니다. 다시 시도하십시오." | ||||
|  | ||||
| @@ -991,7 +992,7 @@ msgstr "세계 시계 추가…" | ||||
| msgid "World Clocks" | ||||
| msgstr "세계 시계" | ||||
|  | ||||
| #: js/ui/dateMenu.js:225 | ||||
| #: js/ui/dateMenu.js:227 | ||||
| msgid "Weather" | ||||
| msgstr "날씨" | ||||
|  | ||||
| @@ -999,7 +1000,7 @@ msgstr "날씨" | ||||
| #. libgweather for the possible condition strings. If at all | ||||
| #. possible, the sentence should match the grammatical case etc. of | ||||
| #. the inserted conditions. | ||||
| #: js/ui/dateMenu.js:289 | ||||
| #: js/ui/dateMenu.js:291 | ||||
| #, javascript-format | ||||
| msgid "%s all day." | ||||
| msgstr "하루 종일 %s." | ||||
| @@ -1008,7 +1009,7 @@ msgstr "하루 종일 %s." | ||||
| #. libgweather for the possible condition strings. If at all | ||||
| #. possible, the sentence should match the grammatical case etc. of | ||||
| #. the inserted conditions. | ||||
| #: js/ui/dateMenu.js:295 | ||||
| #: js/ui/dateMenu.js:297 | ||||
| #, javascript-format | ||||
| msgid "%s, then %s later." | ||||
| msgstr "%s, 그리고 나중에 %s." | ||||
| @@ -1017,30 +1018,30 @@ msgstr "%s, 그리고 나중에 %s." | ||||
| #. libgweather for the possible condition strings. If at all | ||||
| #. possible, the sentence should match the grammatical case etc. of | ||||
| #. the inserted conditions. | ||||
| #: js/ui/dateMenu.js:301 | ||||
| #: js/ui/dateMenu.js:303 | ||||
| #, javascript-format | ||||
| msgid "%s, then %s, followed by %s later." | ||||
| msgstr "%s, 그리고 %s, 또 나중에 %s." | ||||
|  | ||||
| #: js/ui/dateMenu.js:312 | ||||
| #: js/ui/dateMenu.js:314 | ||||
| msgid "Select a location…" | ||||
| msgstr "위치를 선택하십시오…" | ||||
|  | ||||
| #: js/ui/dateMenu.js:315 | ||||
| #: js/ui/dateMenu.js:317 | ||||
| msgid "Loading…" | ||||
| msgstr "읽어들이는 중…" | ||||
|  | ||||
| #. Translators: %s is a temperature with unit, e.g. "23℃" | ||||
| #: js/ui/dateMenu.js:321 | ||||
| #: js/ui/dateMenu.js:323 | ||||
| #, javascript-format | ||||
| msgid "Feels like %s." | ||||
| msgstr "체감 온도 %s." | ||||
|  | ||||
| #: js/ui/dateMenu.js:324 | ||||
| #: js/ui/dateMenu.js:326 | ||||
| msgid "Go online for weather information" | ||||
| msgstr "날씨 정보를 온라인으로 가져옵니다" | ||||
|  | ||||
| #: js/ui/dateMenu.js:326 | ||||
| #: js/ui/dateMenu.js:328 | ||||
| msgid "Weather information is currently unavailable" | ||||
| msgstr "날씨 정보를 현재 사용할 수 없습니다" | ||||
|  | ||||
| @@ -1228,7 +1229,9 @@ msgstr "느린 키 끔" | ||||
| msgid "" | ||||
| "You just held down the Shift key for 8 seconds. This is the shortcut for the " | ||||
| "Slow Keys feature, which affects the way your keyboard works." | ||||
| msgstr "Shift 키를 8초 동안 누르고 있었습니다. 느린 키 기능의 바로 가기이고, 이렇게 하면 키보드 동작이 달라집니다." | ||||
| msgstr "" | ||||
| "Shift 키를 8초 동안 누르고 있었습니다. 느린 키 기능의 바로 가기이고, 이렇게 " | ||||
| "하면 키보드 동작이 달라집니다." | ||||
|  | ||||
| #: js/ui/kbdA11yDialog.js:42 | ||||
| msgid "Sticky Keys Turned On" | ||||
| @@ -1260,13 +1263,13 @@ msgid "Leave On" | ||||
| msgstr "계속 유지" | ||||
|  | ||||
| #: js/ui/kbdA11yDialog.js:59 js/ui/status/bluetooth.js:143 | ||||
| #: js/ui/status/network.js:1281 | ||||
| #: js/ui/status/network.js:1294 | ||||
| msgid "Turn On" | ||||
| msgstr "켜기" | ||||
|  | ||||
| #: js/ui/kbdA11yDialog.js:67 js/ui/status/bluetooth.js:143 | ||||
| #: js/ui/status/network.js:154 js/ui/status/network.js:337 | ||||
| #: js/ui/status/network.js:1281 js/ui/status/network.js:1396 | ||||
| #: js/ui/status/network.js:1294 js/ui/status/network.js:1409 | ||||
| #: js/ui/status/nightLight.js:47 js/ui/status/rfkill.js:90 | ||||
| #: js/ui/status/rfkill.js:117 | ||||
| msgid "Turn Off" | ||||
| @@ -1328,7 +1331,7 @@ msgstr "소스 보기" | ||||
| msgid "Web Page" | ||||
| msgstr "웹페이지" | ||||
|  | ||||
| #: js/ui/messageTray.js:1493 | ||||
| #: js/ui/messageTray.js:1495 | ||||
| msgid "System Information" | ||||
| msgstr "시스템 정보" | ||||
|  | ||||
| @@ -1340,6 +1343,11 @@ msgstr "알 수 없는 음악가" | ||||
| msgid "Unknown title" | ||||
| msgstr "알 수 없는 제목" | ||||
|  | ||||
| # 오디오 볼륨 | ||||
| #: js/ui/osdWindow.js:32 js/ui/status/volume.js:204 | ||||
| msgid "Volume" | ||||
| msgstr "볼륨" | ||||
|  | ||||
| #: js/ui/overview.js:83 | ||||
| msgid "Undo" | ||||
| msgstr "실행 취소" | ||||
| @@ -1382,42 +1390,42 @@ msgstr "키 누르기 지정" | ||||
| msgid "Done" | ||||
| msgstr "마침" | ||||
|  | ||||
| #: js/ui/padOsd.js:740 | ||||
| #: js/ui/padOsd.js:742 | ||||
| msgid "Edit…" | ||||
| msgstr "편집…" | ||||
|  | ||||
| #: js/ui/padOsd.js:782 js/ui/padOsd.js:887 | ||||
| #: js/ui/padOsd.js:784 js/ui/padOsd.js:889 | ||||
| msgid "None" | ||||
| msgstr "없음" | ||||
|  | ||||
| #: js/ui/padOsd.js:841 | ||||
| #: js/ui/padOsd.js:843 | ||||
| msgid "Press a button to configure" | ||||
| msgstr "설정하려면 단추를 누르십시오" | ||||
|  | ||||
| #: js/ui/padOsd.js:842 | ||||
| #: js/ui/padOsd.js:844 | ||||
| msgid "Press Esc to exit" | ||||
| msgstr "나가려면 Esc를 누르십시오" | ||||
|  | ||||
| #: js/ui/padOsd.js:845 | ||||
| #: js/ui/padOsd.js:847 | ||||
| msgid "Press any key to exit" | ||||
| msgstr "나가려면 아무 키나 누르십시오" | ||||
|  | ||||
| #: js/ui/panel.js:355 | ||||
| #: js/ui/panel.js:356 | ||||
| msgid "Quit" | ||||
| msgstr "끝내기" | ||||
|  | ||||
| #. Translators: If there is no suitable word for "Activities" | ||||
| #. in your language, you can use the word for "Overview". | ||||
| #: js/ui/panel.js:411 | ||||
| #: js/ui/panel.js:412 | ||||
| msgid "Activities" | ||||
| msgstr "현재 활동" | ||||
|  | ||||
| #: js/ui/panel.js:692 | ||||
| #: js/ui/panel.js:693 | ||||
| msgctxt "System menu in the top bar" | ||||
| msgid "System" | ||||
| msgstr "시스템" | ||||
|  | ||||
| #: js/ui/panel.js:811 | ||||
| #: js/ui/panel.js:816 | ||||
| msgid "Top Bar" | ||||
| msgstr "위 막대" | ||||
|  | ||||
| @@ -1426,23 +1434,23 @@ msgstr "위 막대" | ||||
| #. "ON" and "OFF") or "toggle-switch-intl" (for toggle | ||||
| #. switches containing "◯" and "|"). Other values will | ||||
| #. simply result in invisible toggle switches. | ||||
| #: js/ui/popupMenu.js:291 | ||||
| #: js/ui/popupMenu.js:300 | ||||
| msgid "toggle-switch-us" | ||||
| msgstr "toggle-switch-intl" | ||||
|  | ||||
| #: js/ui/runDialog.js:70 | ||||
| #: js/ui/runDialog.js:74 | ||||
| msgid "Enter a Command" | ||||
| msgstr "명령을 입력하십시오" | ||||
|  | ||||
| #: js/ui/runDialog.js:110 js/ui/windowMenu.js:175 | ||||
| #: js/ui/runDialog.js:114 js/ui/windowMenu.js:174 | ||||
| msgid "Close" | ||||
| msgstr "닫기" | ||||
|  | ||||
| #: js/ui/runDialog.js:273 | ||||
| #: js/ui/runDialog.js:278 | ||||
| msgid "Restart is not available on Wayland" | ||||
| msgstr "웨일랜드에서는 다시 시작 기능을 사용할 수 없습니다" | ||||
|  | ||||
| #: js/ui/runDialog.js:278 | ||||
| #: js/ui/runDialog.js:283 | ||||
| msgid "Restarting…" | ||||
| msgstr "다시 시작하는 중…" | ||||
|  | ||||
| @@ -1464,7 +1472,7 @@ msgid "%d new notification" | ||||
| msgid_plural "%d new notifications" | ||||
| msgstr[0] "새 알림 %d개" | ||||
|  | ||||
| #: js/ui/screenShield.js:451 js/ui/status/system.js:283 | ||||
| #: js/ui/screenShield.js:451 js/ui/status/system.js:294 | ||||
| msgid "Lock" | ||||
| msgstr "잠그기" | ||||
|  | ||||
| @@ -1643,7 +1651,7 @@ msgid "<unknown>" | ||||
| msgstr "<알 수 없음>" | ||||
|  | ||||
| #. Translators: %s is a network identifier | ||||
| #: js/ui/status/network.js:441 js/ui/status/network.js:1310 | ||||
| #: js/ui/status/network.js:441 js/ui/status/network.js:1323 | ||||
| #, javascript-format | ||||
| msgid "%s Off" | ||||
| msgstr "%s 꺼짐" | ||||
| @@ -1669,7 +1677,7 @@ msgid "%s Disconnecting" | ||||
| msgstr "%s 연결 끊는 중" | ||||
|  | ||||
| #. Translators: %s is a network identifier | ||||
| #: js/ui/status/network.js:459 js/ui/status/network.js:1302 | ||||
| #: js/ui/status/network.js:459 js/ui/status/network.js:1315 | ||||
| #, javascript-format | ||||
| msgid "%s Connecting" | ||||
| msgstr "%s 연결하는 중" | ||||
| @@ -1709,7 +1717,7 @@ msgid "Mobile Broadband Settings" | ||||
| msgstr "휴대전화 네트워크 설정" | ||||
|  | ||||
| #. Translators: %s is a network identifier | ||||
| #: js/ui/status/network.js:578 js/ui/status/network.js:1307 | ||||
| #: js/ui/status/network.js:578 js/ui/status/network.js:1320 | ||||
| #, javascript-format | ||||
| msgid "%s Hardware Disabled" | ||||
| msgstr "%s 하드웨어 사용 않음" | ||||
| @@ -1765,88 +1773,88 @@ msgstr "네트워크 없음" | ||||
| msgid "Use hardware switch to turn off" | ||||
| msgstr "끄려면 하드웨어 스위치를 사용하십시오" | ||||
|  | ||||
| #: js/ui/status/network.js:1173 | ||||
| #: js/ui/status/network.js:1186 | ||||
| msgid "Select Network" | ||||
| msgstr "네트워크 선택" | ||||
|  | ||||
| #: js/ui/status/network.js:1179 | ||||
| #: js/ui/status/network.js:1192 | ||||
| msgid "Wi-Fi Settings" | ||||
| msgstr "와이파이 설정" | ||||
|  | ||||
| #. Translators: %s is a network identifier | ||||
| #: js/ui/status/network.js:1298 | ||||
| #: js/ui/status/network.js:1311 | ||||
| #, javascript-format | ||||
| msgid "%s Hotspot Active" | ||||
| msgstr "%s 핫스팟 사용 중" | ||||
|  | ||||
| #. Translators: %s is a network identifier | ||||
| #: js/ui/status/network.js:1313 | ||||
| #: js/ui/status/network.js:1326 | ||||
| #, javascript-format | ||||
| msgid "%s Not Connected" | ||||
| msgstr "%s 연결되지 않음" | ||||
|  | ||||
| #: js/ui/status/network.js:1413 | ||||
| #: js/ui/status/network.js:1426 | ||||
| msgid "connecting…" | ||||
| msgstr "연결하는 중…" | ||||
|  | ||||
| #. Translators: this is for network connections that require some kind of key or password | ||||
| #: js/ui/status/network.js:1416 | ||||
| #: js/ui/status/network.js:1429 | ||||
| msgid "authentication required" | ||||
| msgstr "인증 필요" | ||||
|  | ||||
| #: js/ui/status/network.js:1418 | ||||
| #: js/ui/status/network.js:1431 | ||||
| msgid "connection failed" | ||||
| msgstr "연결 실패" | ||||
|  | ||||
| #: js/ui/status/network.js:1472 | ||||
| #: js/ui/status/network.js:1485 | ||||
| msgid "VPN Settings" | ||||
| msgstr "가상사설망 설정" | ||||
|  | ||||
| #: js/ui/status/network.js:1485 | ||||
| #: js/ui/status/network.js:1498 | ||||
| msgid "VPN" | ||||
| msgstr "가상사설망" | ||||
|  | ||||
| #: js/ui/status/network.js:1495 | ||||
| #: js/ui/status/network.js:1508 | ||||
| msgid "VPN Off" | ||||
| msgstr "가상사설망 꺼짐" | ||||
|  | ||||
| #: js/ui/status/network.js:1559 js/ui/status/rfkill.js:93 | ||||
| #: js/ui/status/network.js:1572 js/ui/status/rfkill.js:93 | ||||
| msgid "Network Settings" | ||||
| msgstr "네트워크 설정" | ||||
|  | ||||
| #: js/ui/status/network.js:1588 | ||||
| #: js/ui/status/network.js:1601 | ||||
| #, javascript-format | ||||
| msgid "%s Wired Connection" | ||||
| msgid_plural "%s Wired Connections" | ||||
| msgstr[0] "%s 유선 연결" | ||||
|  | ||||
| #: js/ui/status/network.js:1592 | ||||
| #: js/ui/status/network.js:1605 | ||||
| #, javascript-format | ||||
| msgid "%s Wi-Fi Connection" | ||||
| msgid_plural "%s Wi-Fi Connections" | ||||
| msgstr[0] "%s 와이파이 연결" | ||||
|  | ||||
| #: js/ui/status/network.js:1596 | ||||
| #: js/ui/status/network.js:1609 | ||||
| #, javascript-format | ||||
| msgid "%s Modem Connection" | ||||
| msgid_plural "%s Modem Connections" | ||||
| msgstr[0] "%s 모뎀 연결" | ||||
|  | ||||
| #: js/ui/status/network.js:1728 | ||||
| #: js/ui/status/network.js:1741 | ||||
| msgid "Connection failed" | ||||
| msgstr "연결이 실패했습니다" | ||||
|  | ||||
| #: js/ui/status/network.js:1729 | ||||
| #: js/ui/status/network.js:1742 | ||||
| msgid "Activation of network connection failed" | ||||
| msgstr "네트워크 연결이 실패했습니다" | ||||
|  | ||||
| #: js/ui/status/nightLight.js:68 | ||||
| msgid "Night Light Disabled" | ||||
| msgstr "야간 조명 사용하지 않음" | ||||
| msgstr "야간 모드 사용하지 않음" | ||||
|  | ||||
| #: js/ui/status/nightLight.js:69 | ||||
| msgid "Night Light On" | ||||
| msgstr "야간 조명 켬" | ||||
| msgstr "야간 모드 켬" | ||||
|  | ||||
| #: js/ui/status/nightLight.js:70 | ||||
| msgid "Resume" | ||||
| @@ -1887,6 +1895,14 @@ msgstr "충전까지 %d:%02d(%d %%)" | ||||
| msgid "%d %%" | ||||
| msgstr "%d %%" | ||||
|  | ||||
| #: js/ui/status/remoteAccess.js:46 | ||||
| msgid "Screen is Being Shared" | ||||
| msgstr "화면을 공유하는 중입니다" | ||||
|  | ||||
| #: js/ui/status/remoteAccess.js:48 | ||||
| msgid "Turn off" | ||||
| msgstr "끄기" | ||||
|  | ||||
| #. The menu only appears when airplane mode is on, so just | ||||
| #. statically build it as if it was on, rather than dynamically | ||||
| #. changing the menu contents. | ||||
| @@ -1906,28 +1922,28 @@ msgstr "로그아웃" | ||||
| msgid "Account Settings" | ||||
| msgstr "계정 설정" | ||||
|  | ||||
| #: js/ui/status/system.js:268 | ||||
| #: js/ui/status/system.js:279 | ||||
| msgid "Orientation Lock" | ||||
| msgstr "방향 잠금" | ||||
|  | ||||
| #: js/ui/status/system.js:294 | ||||
| #: js/ui/status/system.js:305 | ||||
| msgid "Suspend" | ||||
| msgstr "절전" | ||||
|  | ||||
| #: js/ui/status/system.js:304 | ||||
| #: js/ui/status/system.js:315 | ||||
| msgid "Power Off" | ||||
| msgstr "컴퓨터 끄기" | ||||
|  | ||||
| #: js/ui/status/thunderbolt.js:272 | ||||
| #: js/ui/status/thunderbolt.js:298 | ||||
| msgid "Thunderbolt" | ||||
| msgstr "썬더볼트" | ||||
|  | ||||
| #. we are done | ||||
| #: js/ui/status/thunderbolt.js:328 | ||||
| #: js/ui/status/thunderbolt.js:354 | ||||
| msgid "Unknown Thunderbolt device" | ||||
| msgstr "알 수 없는 썬더볼트 장치" | ||||
|  | ||||
| #: js/ui/status/thunderbolt.js:329 | ||||
| #: js/ui/status/thunderbolt.js:355 | ||||
| msgid "" | ||||
| "New device has been detected while you were away. Please disconnect and " | ||||
| "reconnect the device to start using it." | ||||
| @@ -1935,25 +1951,20 @@ msgstr "" | ||||
| "자리에 없는 동안 새 장치를 검색했습니다. 이 장치를 사용하려면 장치 연결을 끊" | ||||
| "었다가 다시 연결하십시오." | ||||
|  | ||||
| #: js/ui/status/thunderbolt.js:334 | ||||
| #: js/ui/status/thunderbolt.js:360 | ||||
| msgid "Thunderbolt authorization error" | ||||
| msgstr "썬더볼트 권한 오류" | ||||
|  | ||||
| #: js/ui/status/thunderbolt.js:335 | ||||
| #: js/ui/status/thunderbolt.js:361 | ||||
| #, javascript-format | ||||
| msgid "Could not authorize the thunderbolt device: %s" | ||||
| msgid "Could not authorize the Thunderbolt device: %s" | ||||
| msgstr "썬더볼트 장치에 권한을 부여할 수 없습니다: %s" | ||||
|  | ||||
| # 오디오 볼륨 | ||||
| #: js/ui/status/volume.js:128 | ||||
| #: js/ui/status/volume.js:135 | ||||
| msgid "Volume changed" | ||||
| msgstr "볼륨 바꿈" | ||||
|  | ||||
| # 오디오 볼륨 | ||||
| #: js/ui/status/volume.js:170 | ||||
| msgid "Volume" | ||||
| msgstr "볼륨" | ||||
|  | ||||
| #. Translators: this is for display mirroring i.e. cloning. | ||||
| #. * Try to keep it under around 15 characters. | ||||
| #. | ||||
| @@ -2003,22 +2014,22 @@ msgstr "검색" | ||||
| msgid "“%s” is ready" | ||||
| msgstr "“%s” 프로그램이 준비되었습니다" | ||||
|  | ||||
| #: js/ui/windowManager.js:72 | ||||
| #: js/ui/windowManager.js:74 | ||||
| msgid "Do you want to keep these display settings?" | ||||
| msgstr "이 디스플레이 설정을 유지하시겠습니까?" | ||||
|  | ||||
| #. Translators: this and the following message should be limited in lenght, | ||||
| #. to avoid ellipsizing the labels. | ||||
| #. | ||||
| #: js/ui/windowManager.js:84 | ||||
| #: js/ui/windowManager.js:86 | ||||
| msgid "Revert Settings" | ||||
| msgstr "설정 되돌리기" | ||||
|  | ||||
| #: js/ui/windowManager.js:87 | ||||
| #: js/ui/windowManager.js:89 | ||||
| msgid "Keep Changes" | ||||
| msgstr "바뀐 사항 유지" | ||||
|  | ||||
| #: js/ui/windowManager.js:105 | ||||
| #: js/ui/windowManager.js:107 | ||||
| #, javascript-format | ||||
| msgid "Settings changes will revert in %d second" | ||||
| msgid_plural "Settings changes will revert in %d seconds" | ||||
| @@ -2026,7 +2037,7 @@ msgstr[0] "바뀐 설정을 %d초 후에 되돌립니다" | ||||
|  | ||||
| #. Translators: This represents the size of a window. The first number is | ||||
| #. * the width of the window and the second is the height. | ||||
| #: js/ui/windowManager.js:660 | ||||
| #: js/ui/windowManager.js:689 | ||||
| #, javascript-format | ||||
| msgid "%d × %d" | ||||
| msgstr "%d × %d" | ||||
| @@ -2079,19 +2090,19 @@ msgstr "위 작업 공간으로 옮기기" | ||||
| msgid "Move to Workspace Down" | ||||
| msgstr "아래 작업 공간으로 옮기기" | ||||
|  | ||||
| #: js/ui/windowMenu.js:140 | ||||
| #: js/ui/windowMenu.js:139 | ||||
| msgid "Move to Monitor Up" | ||||
| msgstr "위 모니터로 옮기기" | ||||
|  | ||||
| #: js/ui/windowMenu.js:149 | ||||
| #: js/ui/windowMenu.js:148 | ||||
| msgid "Move to Monitor Down" | ||||
| msgstr "아래 모니터로 옮기기" | ||||
|  | ||||
| #: js/ui/windowMenu.js:158 | ||||
| #: js/ui/windowMenu.js:157 | ||||
| msgid "Move to Monitor Left" | ||||
| msgstr "왼쪽 모니터로 옮기기" | ||||
|  | ||||
| #: js/ui/windowMenu.js:167 | ||||
| #: js/ui/windowMenu.js:166 | ||||
| msgid "Move to Monitor Right" | ||||
| msgstr "오른쪽 모니터로 옮기기" | ||||
|  | ||||
| @@ -2105,28 +2116,28 @@ msgid "evolution" | ||||
| msgstr "evolution" | ||||
|  | ||||
| # 커맨드라인 옵션 설명 | ||||
| #: src/main.c:432 | ||||
| #: src/main.c:410 | ||||
| msgid "Print version" | ||||
| msgstr "버전을 표시합니다" | ||||
|  | ||||
| #: src/main.c:438 | ||||
| #: src/main.c:416 | ||||
| msgid "Mode used by GDM for login screen" | ||||
| msgstr "GDM에서 로그인 화면에 사용할 모드" | ||||
|  | ||||
| #: src/main.c:444 | ||||
| #: src/main.c:422 | ||||
| msgid "Use a specific mode, e.g. “gdm” for login screen" | ||||
| msgstr "특정 모드 사용. 예를 들어 로그인 화면에 대해 “gdm”" | ||||
|  | ||||
| #: src/main.c:450 | ||||
| #: src/main.c:428 | ||||
| msgid "List possible modes" | ||||
| msgstr "가능한 모드 목록 표시" | ||||
|  | ||||
| #: src/shell-app.c:270 | ||||
| #: src/shell-app.c:272 | ||||
| msgctxt "program" | ||||
| msgid "Unknown" | ||||
| msgstr "알 수 없음" | ||||
|  | ||||
| #: src/shell-app.c:511 | ||||
| #: src/shell-app.c:523 | ||||
| #, c-format | ||||
| msgid "Failed to launch “%s”" | ||||
| msgstr "“%s” 실행에 실패했습니다" | ||||
| @@ -2162,45 +2173,3 @@ msgstr[0] "%u개 입력" | ||||
| #: subprojects/gvc/gvc-mixer-control.c:2738 | ||||
| msgid "System Sounds" | ||||
| msgstr "시스템 소리" | ||||
|  | ||||
| #~ msgctxt "search-result" | ||||
| #~ msgid "Power off" | ||||
| #~ msgstr "컴퓨터 끄기" | ||||
|  | ||||
| #~ msgctxt "search-result" | ||||
| #~ msgid "Log out" | ||||
| #~ msgstr "로그아웃" | ||||
|  | ||||
| #~ msgctxt "search-result" | ||||
| #~ msgid "Switch user" | ||||
| #~ msgstr "사용자 바꾸기" | ||||
|  | ||||
| #~ msgid "Hide tray" | ||||
| #~ msgstr "트레이 숨기기" | ||||
|  | ||||
| #~ msgid "Status Icons" | ||||
| #~ msgstr "상태 아이콘" | ||||
|  | ||||
| #~ msgid "GNOME Shell Extension Preferences" | ||||
| #~ msgstr "그놈 셸 확장 기본 설정" | ||||
|  | ||||
| #~ msgid "Web Authentication Redirect" | ||||
| #~ msgstr "웹 인증 리다이렉트" | ||||
|  | ||||
| #~ msgid "Events" | ||||
| #~ msgstr "행사" | ||||
|  | ||||
| #~ msgid "Notifications" | ||||
| #~ msgstr "알림" | ||||
|  | ||||
| #~ msgid "Clear section" | ||||
| #~ msgstr "부분 지우기" | ||||
|  | ||||
| #~ msgid "Media" | ||||
| #~ msgstr "미디어" | ||||
|  | ||||
| #~ msgid "Not In Use" | ||||
| #~ msgstr "사용 중 아님" | ||||
|  | ||||
| #~ msgid "%d x %d" | ||||
| #~ msgstr "%d x %d" | ||||
|   | ||||
							
								
								
									
										271
									
								
								po/lt.po
									
									
									
									
									
								
							
							
						
						
									
										271
									
								
								po/lt.po
									
									
									
									
									
								
							| @@ -10,8 +10,8 @@ msgid "" | ||||
| msgstr "" | ||||
| "Project-Id-Version: gnome-shell master\n" | ||||
| "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues\n" | ||||
| "POT-Creation-Date: 2018-02-26 17:00+0000\n" | ||||
| "PO-Revision-Date: 2018-02-28 23:39+0200\n" | ||||
| "POT-Creation-Date: 2018-08-01 18:08+0000\n" | ||||
| "PO-Revision-Date: 2018-08-05 23:20+0300\n" | ||||
| "Last-Translator: Aurimas Černius <aurisc4@gmail.com>\n" | ||||
| "Language-Team: Lietuvių <gnome-lt@lists.akl.lt>\n" | ||||
| "Language: lt\n" | ||||
| @@ -290,32 +290,32 @@ msgstr "" | ||||
| "Jei teigiama, perjungimo lange rodomi tik langai iš dabartinės darbo " | ||||
| "srities. Priešingu atveju įtraukiami visi langai." | ||||
|  | ||||
| #: data/org.gnome.shell.gschema.xml.in:197 | ||||
| #: data/org.gnome.shell.gschema.xml.in:198 | ||||
| msgid "Attach modal dialog to the parent window" | ||||
| msgstr "Prikabinti modalinį dialogą prie tėvinio lango" | ||||
|  | ||||
| #: data/org.gnome.shell.gschema.xml.in:198 | ||||
| #: data/org.gnome.shell.gschema.xml.in:207 | ||||
| #: data/org.gnome.shell.gschema.xml.in:215 | ||||
| #: data/org.gnome.shell.gschema.xml.in:223 | ||||
| #: data/org.gnome.shell.gschema.xml.in:231 | ||||
| #: data/org.gnome.shell.gschema.xml.in:199 | ||||
| #: data/org.gnome.shell.gschema.xml.in:208 | ||||
| #: data/org.gnome.shell.gschema.xml.in:216 | ||||
| #: data/org.gnome.shell.gschema.xml.in:224 | ||||
| #: data/org.gnome.shell.gschema.xml.in:232 | ||||
| msgid "" | ||||
| "This key overrides the key in org.gnome.mutter when running GNOME Shell." | ||||
| msgstr "Šis raktas perrašo org.gnome.mutter raktą, kai vykdoma GNOME Shell." | ||||
|  | ||||
| #: data/org.gnome.shell.gschema.xml.in:206 | ||||
| #: data/org.gnome.shell.gschema.xml.in:207 | ||||
| msgid "Enable edge tiling when dropping windows on screen edges" | ||||
| msgstr "Įjungti kraštų išplėtimą, kai langai numetami ekrano kraštuose" | ||||
|  | ||||
| #: data/org.gnome.shell.gschema.xml.in:214 | ||||
| #: data/org.gnome.shell.gschema.xml.in:215 | ||||
| msgid "Workspaces are managed dynamically" | ||||
| msgstr "Darbo sritys yra tvarkomos dinamiškai" | ||||
|  | ||||
| #: data/org.gnome.shell.gschema.xml.in:222 | ||||
| #: data/org.gnome.shell.gschema.xml.in:223 | ||||
| msgid "Workspaces only on primary monitor" | ||||
| msgstr "Darbo sritys tik pagrindiniame monitoriuje" | ||||
|  | ||||
| #: data/org.gnome.shell.gschema.xml.in:230 | ||||
| #: data/org.gnome.shell.gschema.xml.in:231 | ||||
| msgid "Delay focus changes in mouse mode until the pointer stops moving" | ||||
| msgstr "Atidėti fokuso pakeitimus pelei iki žymiklis nustos judėti" | ||||
|  | ||||
| @@ -334,7 +334,7 @@ msgid "There was an error loading the preferences dialog for %s:" | ||||
| msgstr "Kilo klaida įkeliant %s nuostatų dialogą:" | ||||
|  | ||||
| #: js/gdm/authPrompt.js:147 js/ui/audioDeviceSelection.js:71 | ||||
| #: js/ui/components/networkAgent.js:117 js/ui/components/polkitAgent.js:148 | ||||
| #: js/ui/components/networkAgent.js:117 js/ui/components/polkitAgent.js:153 | ||||
| #: js/ui/endSessionDialog.js:482 js/ui/extensionDownloader.js:197 | ||||
| #: js/ui/shellMountOperation.js:343 js/ui/status/network.js:919 | ||||
| msgid "Cancel" | ||||
| @@ -354,20 +354,20 @@ msgctxt "button" | ||||
| msgid "Sign In" | ||||
| msgstr "Prisijungti" | ||||
|  | ||||
| #: js/gdm/loginDialog.js:315 | ||||
| #: js/gdm/loginDialog.js:319 | ||||
| msgid "Choose Session" | ||||
| msgstr "Pasirinkite seansą" | ||||
|  | ||||
| #. translators: this message is shown below the user list on the | ||||
| #. login screen. It can be activated to reveal an entry for | ||||
| #. manually entering the username. | ||||
| #: js/gdm/loginDialog.js:458 | ||||
| #: js/gdm/loginDialog.js:462 | ||||
| msgid "Not listed?" | ||||
| msgstr "Nėra sąraše?" | ||||
|  | ||||
| #. Translators: this message is shown below the username entry field | ||||
| #. to clue the user in on how to login to the local network realm | ||||
| #: js/gdm/loginDialog.js:887 | ||||
| #: js/gdm/loginDialog.js:891 | ||||
| #, javascript-format | ||||
| msgid "(e.g., user or %s)" | ||||
| msgstr "(pvz., naudotojas arba %s)" | ||||
| @@ -375,12 +375,12 @@ msgstr "(pvz., naudotojas arba %s)" | ||||
| #. TTLS and PEAP are actually much more complicated, but this complication | ||||
| #. is not visible here since we only care about phase2 authentication | ||||
| #. (and don't even care of which one) | ||||
| #: js/gdm/loginDialog.js:892 js/ui/components/networkAgent.js:243 | ||||
| #: js/gdm/loginDialog.js:896 js/ui/components/networkAgent.js:243 | ||||
| #: js/ui/components/networkAgent.js:261 | ||||
| msgid "Username: " | ||||
| msgstr "Naudotojo vardas: " | ||||
|  | ||||
| #: js/gdm/loginDialog.js:1228 | ||||
| #: js/gdm/loginDialog.js:1234 | ||||
| msgid "Login Window" | ||||
| msgstr "Prisijungimo langas" | ||||
|  | ||||
| @@ -393,7 +393,7 @@ msgstr "Tapatybės patvirtinimo klaida" | ||||
| #. as a cue to display our own message. | ||||
| #. Translators: this message is shown below the password entry field | ||||
| #. to indicate the user can swipe their finger instead | ||||
| #: js/gdm/util.js:482 | ||||
| #: js/gdm/util.js:485 | ||||
| msgid "(or swipe finger)" | ||||
| msgstr "(arba perbraukite pirštu)" | ||||
|  | ||||
| @@ -639,32 +639,32 @@ msgstr "Dažnai naudojamos" | ||||
| msgid "All" | ||||
| msgstr "Visos" | ||||
|  | ||||
| #: js/ui/appDisplay.js:1886 | ||||
| #: js/ui/appDisplay.js:1890 | ||||
| msgid "New Window" | ||||
| msgstr "Naujas langas" | ||||
|  | ||||
| #: js/ui/appDisplay.js:1900 | ||||
| #: js/ui/appDisplay.js:1904 | ||||
| msgid "Launch using Dedicated Graphics Card" | ||||
| msgstr "Paleisti naudojant dedikuotą grafikos kortą" | ||||
|  | ||||
| #: js/ui/appDisplay.js:1927 js/ui/dash.js:285 | ||||
| #: js/ui/appDisplay.js:1931 js/ui/dash.js:285 | ||||
| msgid "Remove from Favorites" | ||||
| msgstr "Pašalinti iš mėgstamų" | ||||
|  | ||||
| #: js/ui/appDisplay.js:1933 | ||||
| #: js/ui/appDisplay.js:1937 | ||||
| msgid "Add to Favorites" | ||||
| msgstr "Pridėti prie mėgstamų" | ||||
|  | ||||
| #: js/ui/appDisplay.js:1943 | ||||
| #: js/ui/appDisplay.js:1947 | ||||
| msgid "Show Details" | ||||
| msgstr "Rodyti detalią informaciją" | ||||
|  | ||||
| #: js/ui/appFavorites.js:138 | ||||
| #: js/ui/appFavorites.js:140 | ||||
| #, javascript-format | ||||
| msgid "%s has been added to your favorites." | ||||
| msgstr "%s pridėta prie jūsų mėgstamų." | ||||
|  | ||||
| #: js/ui/appFavorites.js:172 | ||||
| #: js/ui/appFavorites.js:174 | ||||
| #, javascript-format | ||||
| msgid "%s has been removed from your favorites." | ||||
| msgstr "%s pašalinta iš jūsų mėgstamų." | ||||
| @@ -685,7 +685,7 @@ msgstr "Ausinės" | ||||
| msgid "Headset" | ||||
| msgstr "Ausinės su mikrofonu" | ||||
|  | ||||
| #: js/ui/audioDeviceSelection.js:82 js/ui/status/volume.js:221 | ||||
| #: js/ui/audioDeviceSelection.js:82 js/ui/status/volume.js:255 | ||||
| msgid "Microphone" | ||||
| msgstr "Mikrofonas" | ||||
|  | ||||
| @@ -697,7 +697,7 @@ msgstr "Keisti foną…" | ||||
| msgid "Display Settings" | ||||
| msgstr "Ekrano nustatymai" | ||||
|  | ||||
| #: js/ui/backgroundMenu.js:22 js/ui/status/system.js:264 | ||||
| #: js/ui/backgroundMenu.js:22 | ||||
| msgid "Settings" | ||||
| msgstr "Nustatymai" | ||||
|  | ||||
| @@ -802,35 +802,35 @@ msgctxt "event list time" | ||||
| msgid "All Day" | ||||
| msgstr "Visa diena" | ||||
|  | ||||
| #: js/ui/calendar.js:864 | ||||
| #: js/ui/calendar.js:866 | ||||
| msgctxt "calendar heading" | ||||
| msgid "%A, %B %d" | ||||
| msgstr "%A, %B %d d." | ||||
|  | ||||
| #: js/ui/calendar.js:868 | ||||
| #: js/ui/calendar.js:870 | ||||
| msgctxt "calendar heading" | ||||
| msgid "%A, %B %d, %Y" | ||||
| msgstr "%A, %Y m. %B %d d." | ||||
|  | ||||
| #: js/ui/calendar.js:1086 | ||||
| #: js/ui/calendar.js:1100 | ||||
| msgid "No Notifications" | ||||
| msgstr "Nėra pranešimų" | ||||
|  | ||||
| #: js/ui/calendar.js:1089 | ||||
| #: js/ui/calendar.js:1103 | ||||
| msgid "No Events" | ||||
| msgstr "Nėra įvykių" | ||||
|  | ||||
| #: js/ui/calendar.js:1117 | ||||
| #: js/ui/calendar.js:1131 | ||||
| msgid "Clear All" | ||||
| msgstr "Viską išvalyti" | ||||
|  | ||||
| #. Translators: %s is an application name | ||||
| #: js/ui/closeDialog.js:44 | ||||
| #: js/ui/closeDialog.js:47 | ||||
| #, javascript-format | ||||
| msgid "“%s” is not responding." | ||||
| msgstr "„%s“ neatsiliepia." | ||||
|  | ||||
| #: js/ui/closeDialog.js:45 | ||||
| #: js/ui/closeDialog.js:48 | ||||
| msgid "" | ||||
| "You may choose to wait a short while for it to continue or force the " | ||||
| "application to quit entirely." | ||||
| @@ -838,11 +838,11 @@ msgstr "" | ||||
| "Galite dar palaukti ir duoti programai laiko arba galite priverstinai " | ||||
| "išjungti programą." | ||||
|  | ||||
| #: js/ui/closeDialog.js:61 | ||||
| #: js/ui/closeDialog.js:64 | ||||
| msgid "Force Quit" | ||||
| msgstr "Priverstinai išjungti" | ||||
|  | ||||
| #: js/ui/closeDialog.js:64 | ||||
| #: js/ui/closeDialog.js:67 | ||||
| msgid "Wait" | ||||
| msgstr "Laukti" | ||||
|  | ||||
| @@ -859,7 +859,7 @@ msgstr "Atjungta išorinė laikmena" | ||||
| msgid "Open with %s" | ||||
| msgstr "Atverti su %s" | ||||
|  | ||||
| #: js/ui/components/keyring.js:107 js/ui/components/polkitAgent.js:284 | ||||
| #: js/ui/components/keyring.js:107 js/ui/components/polkitAgent.js:297 | ||||
| msgid "Password:" | ||||
| msgstr "Slaptažodis:" | ||||
|  | ||||
| @@ -896,11 +896,11 @@ msgstr "Privataus rakto slaptažodis: " | ||||
| msgid "Service: " | ||||
| msgstr "Tarnyba: " | ||||
|  | ||||
| #: js/ui/components/networkAgent.js:292 js/ui/components/networkAgent.js:659 | ||||
| #: js/ui/components/networkAgent.js:292 js/ui/components/networkAgent.js:664 | ||||
| msgid "Authentication required by wireless network" | ||||
| msgstr "Belaidžiam tinklui reikia patvirtinti tapatybę" | ||||
|  | ||||
| #: js/ui/components/networkAgent.js:293 js/ui/components/networkAgent.js:660 | ||||
| #: js/ui/components/networkAgent.js:293 js/ui/components/networkAgent.js:665 | ||||
| #, javascript-format | ||||
| msgid "" | ||||
| "Passwords or encryption keys are required to access the wireless network " | ||||
| @@ -909,7 +909,7 @@ msgstr "" | ||||
| "Slaptažodžiai arba šifravimo raktai yra būtini priėjimui prie belaidžio " | ||||
| "tinklo „%s“." | ||||
|  | ||||
| #: js/ui/components/networkAgent.js:297 js/ui/components/networkAgent.js:663 | ||||
| #: js/ui/components/networkAgent.js:297 js/ui/components/networkAgent.js:668 | ||||
| msgid "Wired 802.1X authentication" | ||||
| msgstr "Laidinis 802.1X tapatybės patvirtinimas" | ||||
|  | ||||
| @@ -917,15 +917,15 @@ msgstr "Laidinis 802.1X tapatybės patvirtinimas" | ||||
| msgid "Network name: " | ||||
| msgstr "Tinklo vardas: " | ||||
|  | ||||
| #: js/ui/components/networkAgent.js:304 js/ui/components/networkAgent.js:667 | ||||
| #: js/ui/components/networkAgent.js:304 js/ui/components/networkAgent.js:672 | ||||
| msgid "DSL authentication" | ||||
| msgstr "DSL tapatybės patvirtinimas" | ||||
|  | ||||
| #: js/ui/components/networkAgent.js:311 js/ui/components/networkAgent.js:673 | ||||
| #: js/ui/components/networkAgent.js:311 js/ui/components/networkAgent.js:678 | ||||
| msgid "PIN code required" | ||||
| msgstr "Reikalingas PIN kodas" | ||||
|  | ||||
| #: js/ui/components/networkAgent.js:312 js/ui/components/networkAgent.js:674 | ||||
| #: js/ui/components/networkAgent.js:312 js/ui/components/networkAgent.js:679 | ||||
| msgid "PIN code is needed for the mobile broadband device" | ||||
| msgstr "Reikalingas PIN kodas mobiliajam plačiajuosčiam įrenginiui" | ||||
|  | ||||
| @@ -933,29 +933,29 @@ msgstr "Reikalingas PIN kodas mobiliajam plačiajuosčiam įrenginiui" | ||||
| msgid "PIN: " | ||||
| msgstr "PIN: " | ||||
|  | ||||
| #: js/ui/components/networkAgent.js:320 js/ui/components/networkAgent.js:680 | ||||
| #: js/ui/components/networkAgent.js:320 js/ui/components/networkAgent.js:685 | ||||
| msgid "Mobile broadband network password" | ||||
| msgstr "Mobiliojo plačiajuosčio tinklo slaptažodis" | ||||
|  | ||||
| #: js/ui/components/networkAgent.js:321 js/ui/components/networkAgent.js:664 | ||||
| #: js/ui/components/networkAgent.js:668 js/ui/components/networkAgent.js:681 | ||||
| #: js/ui/components/networkAgent.js:321 js/ui/components/networkAgent.js:669 | ||||
| #: js/ui/components/networkAgent.js:673 js/ui/components/networkAgent.js:686 | ||||
| #, javascript-format | ||||
| msgid "A password is required to connect to “%s”." | ||||
| msgstr "Būtinas slaptažodis norint prisijungti prie „%s“." | ||||
|  | ||||
| #: js/ui/components/networkAgent.js:648 js/ui/status/network.js:1691 | ||||
| #: js/ui/components/networkAgent.js:653 js/ui/status/network.js:1704 | ||||
| msgid "Network Manager" | ||||
| msgstr "Tinklo tvarkymas" | ||||
|  | ||||
| #: js/ui/components/polkitAgent.js:43 | ||||
| #: js/ui/components/polkitAgent.js:48 | ||||
| msgid "Authentication Required" | ||||
| msgstr "Reikia patvirtinti tapatybę" | ||||
|  | ||||
| #: js/ui/components/polkitAgent.js:71 | ||||
| #: js/ui/components/polkitAgent.js:76 | ||||
| msgid "Administrator" | ||||
| msgstr "Administratorius" | ||||
|  | ||||
| #: js/ui/components/polkitAgent.js:151 | ||||
| #: js/ui/components/polkitAgent.js:156 | ||||
| msgid "Authenticate" | ||||
| msgstr "Patvirtinti tapatybę" | ||||
|  | ||||
| @@ -963,7 +963,7 @@ msgstr "Patvirtinti tapatybę" | ||||
| #. * requested authentication was not gained; this can happen | ||||
| #. * because of an authentication error (like invalid password), | ||||
| #. * for instance. | ||||
| #: js/ui/components/polkitAgent.js:270 js/ui/shellMountOperation.js:327 | ||||
| #: js/ui/components/polkitAgent.js:283 js/ui/shellMountOperation.js:327 | ||||
| msgid "Sorry, that didn’t work. Please try again." | ||||
| msgstr "Atsiprašome, tai nesuveikė. Bandykite dar kartą." | ||||
|  | ||||
| @@ -1011,7 +1011,7 @@ msgstr "Pridėti pasaulio laikrodžius…" | ||||
| msgid "World Clocks" | ||||
| msgstr "Pasaulio laikrodžiai" | ||||
|  | ||||
| #: js/ui/dateMenu.js:225 | ||||
| #: js/ui/dateMenu.js:227 | ||||
| msgid "Weather" | ||||
| msgstr "Orai" | ||||
|  | ||||
| @@ -1019,7 +1019,7 @@ msgstr "Orai" | ||||
| #. libgweather for the possible condition strings. If at all | ||||
| #. possible, the sentence should match the grammatical case etc. of | ||||
| #. the inserted conditions. | ||||
| #: js/ui/dateMenu.js:289 | ||||
| #: js/ui/dateMenu.js:291 | ||||
| #, javascript-format | ||||
| msgid "%s all day." | ||||
| msgstr "%s visą dieną." | ||||
| @@ -1028,7 +1028,7 @@ msgstr "%s visą dieną." | ||||
| #. libgweather for the possible condition strings. If at all | ||||
| #. possible, the sentence should match the grammatical case etc. of | ||||
| #. the inserted conditions. | ||||
| #: js/ui/dateMenu.js:295 | ||||
| #: js/ui/dateMenu.js:297 | ||||
| #, javascript-format | ||||
| msgid "%s, then %s later." | ||||
| msgstr "%s, o vėliau %s." | ||||
| @@ -1037,30 +1037,30 @@ msgstr "%s, o vėliau %s." | ||||
| #. libgweather for the possible condition strings. If at all | ||||
| #. possible, the sentence should match the grammatical case etc. of | ||||
| #. the inserted conditions. | ||||
| #: js/ui/dateMenu.js:301 | ||||
| #: js/ui/dateMenu.js:303 | ||||
| #, javascript-format | ||||
| msgid "%s, then %s, followed by %s later." | ||||
| msgstr "%s, tuomet %s, o po to vėliau %s." | ||||
|  | ||||
| #: js/ui/dateMenu.js:312 | ||||
| #: js/ui/dateMenu.js:314 | ||||
| msgid "Select a location…" | ||||
| msgstr "Pasirinkite vietą…" | ||||
|  | ||||
| #: js/ui/dateMenu.js:315 | ||||
| #: js/ui/dateMenu.js:317 | ||||
| msgid "Loading…" | ||||
| msgstr "Įkeliama…" | ||||
|  | ||||
| #. Translators: %s is a temperature with unit, e.g. "23℃" | ||||
| #: js/ui/dateMenu.js:321 | ||||
| #: js/ui/dateMenu.js:323 | ||||
| #, javascript-format | ||||
| msgid "Feels like %s." | ||||
| msgstr "Jaučiama kaip %s." | ||||
|  | ||||
| #: js/ui/dateMenu.js:324 | ||||
| #: js/ui/dateMenu.js:326 | ||||
| msgid "Go online for weather information" | ||||
| msgstr "Prisijunkite prie tinklo orų informacijai gauti" | ||||
|  | ||||
| #: js/ui/dateMenu.js:326 | ||||
| #: js/ui/dateMenu.js:328 | ||||
| msgid "Weather information is currently unavailable" | ||||
| msgstr "Orų informacija šiuo metu yra neprieinama" | ||||
|  | ||||
| @@ -1252,12 +1252,10 @@ msgid "Allow" | ||||
| msgstr "Leisti" | ||||
|  | ||||
| #: js/ui/kbdA11yDialog.js:33 | ||||
| #| msgid "Slow Keys" | ||||
| msgid "Slow Keys Turned On" | ||||
| msgstr "Lėtieji klavišai įjungti" | ||||
|  | ||||
| #: js/ui/kbdA11yDialog.js:34 | ||||
| #| msgid "Slow Keys" | ||||
| msgid "Slow Keys Turned Off" | ||||
| msgstr "Lėtieji klavišai išjungti" | ||||
|  | ||||
| @@ -1270,12 +1268,10 @@ msgstr "" | ||||
| "trumpinus, kuris keičia klaviatūros veikseną." | ||||
|  | ||||
| #: js/ui/kbdA11yDialog.js:42 | ||||
| #| msgid "Sticky Keys" | ||||
| msgid "Sticky Keys Turned On" | ||||
| msgstr "Kibieji klavišai įjungti" | ||||
|  | ||||
| #: js/ui/kbdA11yDialog.js:43 | ||||
| #| msgid "Sticky Keys" | ||||
| msgid "Sticky Keys Turned Off" | ||||
| msgstr "Kibieji klavišai išjungti" | ||||
|  | ||||
| @@ -1302,13 +1298,13 @@ msgid "Leave On" | ||||
| msgstr "Palikti įjungtą" | ||||
|  | ||||
| #: js/ui/kbdA11yDialog.js:59 js/ui/status/bluetooth.js:143 | ||||
| #: js/ui/status/network.js:1281 | ||||
| #: js/ui/status/network.js:1294 | ||||
| msgid "Turn On" | ||||
| msgstr "Įjungti" | ||||
|  | ||||
| #: js/ui/kbdA11yDialog.js:67 js/ui/status/bluetooth.js:143 | ||||
| #: js/ui/status/network.js:154 js/ui/status/network.js:337 | ||||
| #: js/ui/status/network.js:1281 js/ui/status/network.js:1396 | ||||
| #: js/ui/status/network.js:1294 js/ui/status/network.js:1409 | ||||
| #: js/ui/status/nightLight.js:47 js/ui/status/rfkill.js:90 | ||||
| #: js/ui/status/rfkill.js:117 | ||||
| msgid "Turn Off" | ||||
| @@ -1319,7 +1315,6 @@ msgid "Leave Off" | ||||
| msgstr "Palikti išjungtą" | ||||
|  | ||||
| #: js/ui/keyboard.js:198 | ||||
| #| msgid "Date & Time Settings" | ||||
| msgid "Region & Language Settings" | ||||
| msgstr "Regiono ir kalbos nustatymai" | ||||
|  | ||||
| @@ -1371,7 +1366,7 @@ msgstr "Žiūrėti šaltinį" | ||||
| msgid "Web Page" | ||||
| msgstr "Tinklalapis" | ||||
|  | ||||
| #: js/ui/messageTray.js:1493 | ||||
| #: js/ui/messageTray.js:1495 | ||||
| msgid "System Information" | ||||
| msgstr "Sistemos informacija" | ||||
|  | ||||
| @@ -1383,6 +1378,10 @@ msgstr "Nežinomas atlikėjas" | ||||
| msgid "Unknown title" | ||||
| msgstr "Nežinomas pavadinimas" | ||||
|  | ||||
| #: js/ui/osdWindow.js:32 js/ui/status/volume.js:204 | ||||
| msgid "Volume" | ||||
| msgstr "Garsumas" | ||||
|  | ||||
| #: js/ui/overview.js:83 | ||||
| msgid "Undo" | ||||
| msgstr "Atšaukti" | ||||
| @@ -1425,42 +1424,42 @@ msgstr "Priskirti klavišų kombinaciją" | ||||
| msgid "Done" | ||||
| msgstr "Atlikta" | ||||
|  | ||||
| #: js/ui/padOsd.js:740 | ||||
| #: js/ui/padOsd.js:742 | ||||
| msgid "Edit…" | ||||
| msgstr "Keisti…" | ||||
|  | ||||
| #: js/ui/padOsd.js:782 js/ui/padOsd.js:887 | ||||
| #: js/ui/padOsd.js:784 js/ui/padOsd.js:889 | ||||
| msgid "None" | ||||
| msgstr "Nėra" | ||||
|  | ||||
| #: js/ui/padOsd.js:841 | ||||
| #: js/ui/padOsd.js:843 | ||||
| msgid "Press a button to configure" | ||||
| msgstr "Spauskite mygtuką konfigūravimui" | ||||
|  | ||||
| #: js/ui/padOsd.js:842 | ||||
| #: js/ui/padOsd.js:844 | ||||
| msgid "Press Esc to exit" | ||||
| msgstr "Spauskit Esc išėjimui" | ||||
|  | ||||
| #: js/ui/padOsd.js:845 | ||||
| #: js/ui/padOsd.js:847 | ||||
| msgid "Press any key to exit" | ||||
| msgstr "Išėjimui spauskite bet kurį klavišą" | ||||
|  | ||||
| #: js/ui/panel.js:355 | ||||
| #: js/ui/panel.js:356 | ||||
| msgid "Quit" | ||||
| msgstr "Užverti" | ||||
|  | ||||
| #. Translators: If there is no suitable word for "Activities" | ||||
| #. in your language, you can use the word for "Overview". | ||||
| #: js/ui/panel.js:411 | ||||
| #: js/ui/panel.js:412 | ||||
| msgid "Activities" | ||||
| msgstr "Apžvalga" | ||||
|  | ||||
| #: js/ui/panel.js:692 | ||||
| #: js/ui/panel.js:693 | ||||
| msgctxt "System menu in the top bar" | ||||
| msgid "System" | ||||
| msgstr "Sistema" | ||||
|  | ||||
| #: js/ui/panel.js:811 | ||||
| #: js/ui/panel.js:816 | ||||
| msgid "Top Bar" | ||||
| msgstr "Viršutinė juosta" | ||||
|  | ||||
| @@ -1469,23 +1468,23 @@ msgstr "Viršutinė juosta" | ||||
| #. "ON" and "OFF") or "toggle-switch-intl" (for toggle | ||||
| #. switches containing "◯" and "|"). Other values will | ||||
| #. simply result in invisible toggle switches. | ||||
| #: js/ui/popupMenu.js:291 | ||||
| #: js/ui/popupMenu.js:300 | ||||
| msgid "toggle-switch-us" | ||||
| msgstr "toggle-switch-intl" | ||||
|  | ||||
| #: js/ui/runDialog.js:70 | ||||
| #: js/ui/runDialog.js:74 | ||||
| msgid "Enter a Command" | ||||
| msgstr "Įveskite komandą" | ||||
|  | ||||
| #: js/ui/runDialog.js:110 js/ui/windowMenu.js:175 | ||||
| #: js/ui/runDialog.js:114 js/ui/windowMenu.js:174 | ||||
| msgid "Close" | ||||
| msgstr "Užverti" | ||||
|  | ||||
| #: js/ui/runDialog.js:273 | ||||
| #: js/ui/runDialog.js:278 | ||||
| msgid "Restart is not available on Wayland" | ||||
| msgstr "Perleisti Wayland aplinkoje negalima" | ||||
|  | ||||
| #: js/ui/runDialog.js:278 | ||||
| #: js/ui/runDialog.js:283 | ||||
| msgid "Restarting…" | ||||
| msgstr "Perleidžiama…" | ||||
|  | ||||
| @@ -1511,7 +1510,7 @@ msgstr[0] "%d naujas pranešimas" | ||||
| msgstr[1] "%d nauji pranešimai" | ||||
| msgstr[2] "%d naujų pranešimų" | ||||
|  | ||||
| #: js/ui/screenShield.js:451 js/ui/status/system.js:283 | ||||
| #: js/ui/screenShield.js:451 js/ui/status/system.js:294 | ||||
| msgid "Lock" | ||||
| msgstr "Užrakinti" | ||||
|  | ||||
| @@ -1694,7 +1693,7 @@ msgid "<unknown>" | ||||
| msgstr "<nežinoma>" | ||||
|  | ||||
| #. Translators: %s is a network identifier | ||||
| #: js/ui/status/network.js:441 js/ui/status/network.js:1310 | ||||
| #: js/ui/status/network.js:441 js/ui/status/network.js:1323 | ||||
| #, javascript-format | ||||
| msgid "%s Off" | ||||
| msgstr "%s išjungtas" | ||||
| @@ -1720,7 +1719,7 @@ msgid "%s Disconnecting" | ||||
| msgstr "Atsijungiama nuo %s" | ||||
|  | ||||
| #. Translators: %s is a network identifier | ||||
| #: js/ui/status/network.js:459 js/ui/status/network.js:1302 | ||||
| #: js/ui/status/network.js:459 js/ui/status/network.js:1315 | ||||
| #, javascript-format | ||||
| msgid "%s Connecting" | ||||
| msgstr "Jungiamasi prie %s" | ||||
| @@ -1760,7 +1759,7 @@ msgid "Mobile Broadband Settings" | ||||
| msgstr "Mobiliojo plačiajuosčio tinklo nustatymai" | ||||
|  | ||||
| #. Translators: %s is a network identifier | ||||
| #: js/ui/status/network.js:578 js/ui/status/network.js:1307 | ||||
| #: js/ui/status/network.js:578 js/ui/status/network.js:1320 | ||||
| #, javascript-format | ||||
| msgid "%s Hardware Disabled" | ||||
| msgstr "%s aparatinė įranga išjungta" | ||||
| @@ -1816,56 +1815,56 @@ msgstr "Nėra tinklų" | ||||
| msgid "Use hardware switch to turn off" | ||||
| msgstr "Išjungimui naudoti aparatinį jungiklį" | ||||
|  | ||||
| #: js/ui/status/network.js:1173 | ||||
| #: js/ui/status/network.js:1186 | ||||
| msgid "Select Network" | ||||
| msgstr "Pasirinkite tinklą" | ||||
|  | ||||
| #: js/ui/status/network.js:1179 | ||||
| #: js/ui/status/network.js:1192 | ||||
| msgid "Wi-Fi Settings" | ||||
| msgstr "Belaidžio ryšio nustatymai" | ||||
|  | ||||
| #. Translators: %s is a network identifier | ||||
| #: js/ui/status/network.js:1298 | ||||
| #: js/ui/status/network.js:1311 | ||||
| #, javascript-format | ||||
| msgid "%s Hotspot Active" | ||||
| msgstr "Prieigos taškas %s aktyvus" | ||||
|  | ||||
| #. Translators: %s is a network identifier | ||||
| #: js/ui/status/network.js:1313 | ||||
| #: js/ui/status/network.js:1326 | ||||
| #, javascript-format | ||||
| msgid "%s Not Connected" | ||||
| msgstr "Neprisijungta prie %s" | ||||
|  | ||||
| #: js/ui/status/network.js:1413 | ||||
| #: js/ui/status/network.js:1426 | ||||
| msgid "connecting…" | ||||
| msgstr "jungiamasi…" | ||||
|  | ||||
| #. Translators: this is for network connections that require some kind of key or password | ||||
| #: js/ui/status/network.js:1416 | ||||
| #: js/ui/status/network.js:1429 | ||||
| msgid "authentication required" | ||||
| msgstr "reikia patvirtinti tapatybę" | ||||
|  | ||||
| #: js/ui/status/network.js:1418 | ||||
| #: js/ui/status/network.js:1431 | ||||
| msgid "connection failed" | ||||
| msgstr "nepavyko prisijungti" | ||||
|  | ||||
| #: js/ui/status/network.js:1472 | ||||
| #: js/ui/status/network.js:1485 | ||||
| msgid "VPN Settings" | ||||
| msgstr "VPN nustatymai" | ||||
|  | ||||
| #: js/ui/status/network.js:1485 | ||||
| #: js/ui/status/network.js:1498 | ||||
| msgid "VPN" | ||||
| msgstr "VPN" | ||||
|  | ||||
| #: js/ui/status/network.js:1495 | ||||
| #: js/ui/status/network.js:1508 | ||||
| msgid "VPN Off" | ||||
| msgstr "VPN išjungtas" | ||||
|  | ||||
| #: js/ui/status/network.js:1559 js/ui/status/rfkill.js:93 | ||||
| #: js/ui/status/network.js:1572 js/ui/status/rfkill.js:93 | ||||
| msgid "Network Settings" | ||||
| msgstr "Tinklo nustatymai" | ||||
|  | ||||
| #: js/ui/status/network.js:1588 | ||||
| #: js/ui/status/network.js:1601 | ||||
| #, javascript-format | ||||
| msgid "%s Wired Connection" | ||||
| msgid_plural "%s Wired Connections" | ||||
| @@ -1873,7 +1872,7 @@ msgstr[0] "%s laidinis ryšys" | ||||
| msgstr[1] "%s laidiniai ryšiai" | ||||
| msgstr[2] "%s laidinių ryšių" | ||||
|  | ||||
| #: js/ui/status/network.js:1592 | ||||
| #: js/ui/status/network.js:1605 | ||||
| #, javascript-format | ||||
| msgid "%s Wi-Fi Connection" | ||||
| msgid_plural "%s Wi-Fi Connections" | ||||
| @@ -1881,7 +1880,7 @@ msgstr[0] "%s belaidis ryšys" | ||||
| msgstr[1] "%s belaidžiai ryšiai" | ||||
| msgstr[2] "%s belaidžių ryšių" | ||||
|  | ||||
| #: js/ui/status/network.js:1596 | ||||
| #: js/ui/status/network.js:1609 | ||||
| #, javascript-format | ||||
| msgid "%s Modem Connection" | ||||
| msgid_plural "%s Modem Connections" | ||||
| @@ -1889,11 +1888,11 @@ msgstr[0] "%s modemo ryšys" | ||||
| msgstr[1] "%s modemo ryšiai" | ||||
| msgstr[2] "%s modemo ryšių" | ||||
|  | ||||
| #: js/ui/status/network.js:1728 | ||||
| #: js/ui/status/network.js:1741 | ||||
| msgid "Connection failed" | ||||
| msgstr "Nepavyko prisijungti" | ||||
|  | ||||
| #: js/ui/status/network.js:1729 | ||||
| #: js/ui/status/network.js:1742 | ||||
| msgid "Activation of network connection failed" | ||||
| msgstr "Tinklo ryšio nepavyko aktyvuoti" | ||||
|  | ||||
| @@ -1944,6 +1943,15 @@ msgstr "%d∶%02d iki pilno (%d %%)" | ||||
| msgid "%d %%" | ||||
| msgstr "%d %%" | ||||
|  | ||||
| #: js/ui/status/remoteAccess.js:46 | ||||
| msgid "Screen is Being Shared" | ||||
| msgstr "Ekranas yra bendrinamas" | ||||
|  | ||||
| #: js/ui/status/remoteAccess.js:48 | ||||
| #| msgid "Turn Off" | ||||
| msgid "Turn off" | ||||
| msgstr "Išjungti" | ||||
|  | ||||
| #. The menu only appears when airplane mode is on, so just | ||||
| #. statically build it as if it was on, rather than dynamically | ||||
| #. changing the menu contents. | ||||
| @@ -1963,28 +1971,28 @@ msgstr "Atsijungti" | ||||
| msgid "Account Settings" | ||||
| msgstr "Paskyros nustatymai" | ||||
|  | ||||
| #: js/ui/status/system.js:268 | ||||
| #: js/ui/status/system.js:279 | ||||
| msgid "Orientation Lock" | ||||
| msgstr "Padėties užrakinimas" | ||||
|  | ||||
| #: js/ui/status/system.js:294 | ||||
| #: js/ui/status/system.js:305 | ||||
| msgid "Suspend" | ||||
| msgstr "Pristabdyti" | ||||
|  | ||||
| #: js/ui/status/system.js:304 | ||||
| #: js/ui/status/system.js:315 | ||||
| msgid "Power Off" | ||||
| msgstr "Išjungti" | ||||
|  | ||||
| #: js/ui/status/thunderbolt.js:272 | ||||
| #: js/ui/status/thunderbolt.js:298 | ||||
| msgid "Thunderbolt" | ||||
| msgstr "Thunderbolt" | ||||
|  | ||||
| #. we are done | ||||
| #: js/ui/status/thunderbolt.js:328 | ||||
| #: js/ui/status/thunderbolt.js:354 | ||||
| msgid "Unknown Thunderbolt device" | ||||
| msgstr "Nežinoma Thunderbolt įrenginys" | ||||
|  | ||||
| #: js/ui/status/thunderbolt.js:329 | ||||
| #: js/ui/status/thunderbolt.js:355 | ||||
| msgid "" | ||||
| "New device has been detected while you were away. Please disconnect and " | ||||
| "reconnect the device to start using it." | ||||
| @@ -1992,23 +2000,20 @@ msgstr "" | ||||
| "Jums nesant aptiktas naujas įrenginys. Atjunkite ir vėl prijunkite įrenginį, " | ||||
| "jei norite jį naudoti." | ||||
|  | ||||
| #: js/ui/status/thunderbolt.js:334 | ||||
| #: js/ui/status/thunderbolt.js:360 | ||||
| msgid "Thunderbolt authorization error" | ||||
| msgstr "Thunderbolt autorizacijos klaida" | ||||
|  | ||||
| #: js/ui/status/thunderbolt.js:335 | ||||
| #: js/ui/status/thunderbolt.js:361 | ||||
| #, javascript-format | ||||
| msgid "Could not authorize the thunderbolt device: %s" | ||||
| msgstr "Nepavyko autorizuoti thunderbolt įrenginio: %s" | ||||
| #| msgid "Could not authorize the thunderbolt device: %s" | ||||
| msgid "Could not authorize the Thunderbolt device: %s" | ||||
| msgstr "Nepavyko autorizuoti Thunderbolt įrenginio: %s" | ||||
|  | ||||
| #: js/ui/status/volume.js:128 | ||||
| #: js/ui/status/volume.js:135 | ||||
| msgid "Volume changed" | ||||
| msgstr "Garsumas pakeistas" | ||||
|  | ||||
| #: js/ui/status/volume.js:170 | ||||
| msgid "Volume" | ||||
| msgstr "Garsumas" | ||||
|  | ||||
| #. Translators: this is for display mirroring i.e. cloning. | ||||
| #. * Try to keep it under around 15 characters. | ||||
| #. | ||||
| @@ -2058,22 +2063,22 @@ msgstr "Ieškoti" | ||||
| msgid "“%s” is ready" | ||||
| msgstr "„%s“ yra pasirengusi" | ||||
|  | ||||
| #: js/ui/windowManager.js:72 | ||||
| #: js/ui/windowManager.js:74 | ||||
| msgid "Do you want to keep these display settings?" | ||||
| msgstr "Ar norite įrašyti šiuos vaizduoklio nustatymus?" | ||||
|  | ||||
| #. Translators: this and the following message should be limited in lenght, | ||||
| #. to avoid ellipsizing the labels. | ||||
| #. | ||||
| #: js/ui/windowManager.js:84 | ||||
| #: js/ui/windowManager.js:86 | ||||
| msgid "Revert Settings" | ||||
| msgstr "Grąžinti nustatymus" | ||||
|  | ||||
| #: js/ui/windowManager.js:87 | ||||
| #: js/ui/windowManager.js:89 | ||||
| msgid "Keep Changes" | ||||
| msgstr "Įrašyti pakeitimus" | ||||
|  | ||||
| #: js/ui/windowManager.js:105 | ||||
| #: js/ui/windowManager.js:107 | ||||
| #, javascript-format | ||||
| msgid "Settings changes will revert in %d second" | ||||
| msgid_plural "Settings changes will revert in %d seconds" | ||||
| @@ -2083,7 +2088,7 @@ msgstr[2] "Pakeitimai bus grąžinti po %d sekundžių" | ||||
|  | ||||
| #. Translators: This represents the size of a window. The first number is | ||||
| #. * the width of the window and the second is the height. | ||||
| #: js/ui/windowManager.js:660 | ||||
| #: js/ui/windowManager.js:689 | ||||
| #, javascript-format | ||||
| msgid "%d × %d" | ||||
| msgstr "%d × %d" | ||||
| @@ -2136,19 +2141,19 @@ msgstr "Perkelti į aukščiau esančią darbo sritį" | ||||
| msgid "Move to Workspace Down" | ||||
| msgstr "Perkelti į žemiau esančią darbo sritį" | ||||
|  | ||||
| #: js/ui/windowMenu.js:140 | ||||
| #: js/ui/windowMenu.js:139 | ||||
| msgid "Move to Monitor Up" | ||||
| msgstr "Perkelti į aukščiau esantį monitorių" | ||||
|  | ||||
| #: js/ui/windowMenu.js:149 | ||||
| #: js/ui/windowMenu.js:148 | ||||
| msgid "Move to Monitor Down" | ||||
| msgstr "Perkelti į žemiau esantį monitorių" | ||||
|  | ||||
| #: js/ui/windowMenu.js:158 | ||||
| #: js/ui/windowMenu.js:157 | ||||
| msgid "Move to Monitor Left" | ||||
| msgstr "Perkelti į kairiau esantį monitorių" | ||||
|  | ||||
| #: js/ui/windowMenu.js:167 | ||||
| #: js/ui/windowMenu.js:166 | ||||
| msgid "Move to Monitor Right" | ||||
| msgstr "Perkelti į dešiniau esantį monitorių" | ||||
|  | ||||
| @@ -2161,28 +2166,28 @@ msgstr "Evolution kalendorius" | ||||
| msgid "evolution" | ||||
| msgstr "evolution" | ||||
|  | ||||
| #: src/main.c:432 | ||||
| #: src/main.c:410 | ||||
| msgid "Print version" | ||||
| msgstr "Išvesti versijos numerį" | ||||
|  | ||||
| #: src/main.c:438 | ||||
| #: src/main.c:416 | ||||
| msgid "Mode used by GDM for login screen" | ||||
| msgstr "Veiksena, naudojama GDM prisijungimo ekrane" | ||||
|  | ||||
| #: src/main.c:444 | ||||
| #: src/main.c:422 | ||||
| msgid "Use a specific mode, e.g. “gdm” for login screen" | ||||
| msgstr "Naudoti konkrečią veikseną, pvz., „gdm“ prisijungimo ekranui" | ||||
|  | ||||
| #: src/main.c:450 | ||||
| #: src/main.c:428 | ||||
| msgid "List possible modes" | ||||
| msgstr "Išvardinti galimas veiksenas" | ||||
|  | ||||
| #: src/shell-app.c:270 | ||||
| #: src/shell-app.c:272 | ||||
| msgctxt "program" | ||||
| msgid "Unknown" | ||||
| msgstr "Nežinoma" | ||||
|  | ||||
| #: src/shell-app.c:511 | ||||
| #: src/shell-app.c:523 | ||||
| #, c-format | ||||
| msgid "Failed to launch “%s”" | ||||
| msgstr "Nepavyko paleisti „%s“" | ||||
|   | ||||
Some files were not shown because too many files have changed in this diff Show More
		Reference in New Issue
	
	Block a user