Compare commits
	
		
			91 Commits
		
	
	
		
			wip/jimmac
			...
			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 | 
							
								
								
									
										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;
 | 
			
		||||
 
 | 
			
		||||
@@ -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>
 | 
			
		||||
 
 | 
			
		||||
@@ -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();
 | 
			
		||||
@@ -776,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);
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -41,6 +41,7 @@ var RemoteAccessApplet = new Lang.Class({
 | 
			
		||||
 | 
			
		||||
        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);
 | 
			
		||||
 
 | 
			
		||||
@@ -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();
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -179,6 +179,7 @@ var WindowClone = new Lang.Class({
 | 
			
		||||
        this.inDrag = false;
 | 
			
		||||
 | 
			
		||||
        this._selected = false;
 | 
			
		||||
        this._closeRequested = false;
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    set slot(slot) {
 | 
			
		||||
@@ -194,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;
 | 
			
		||||
@@ -204,11 +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._onMetaWindowSizeChanged();
 | 
			
		||||
    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() {
 | 
			
		||||
@@ -462,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();
 | 
			
		||||
 | 
			
		||||
@@ -590,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;
 | 
			
		||||
@@ -1516,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;
 | 
			
		||||
        }
 | 
			
		||||
 
 | 
			
		||||
@@ -416,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) {
 | 
			
		||||
@@ -678,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;
 | 
			
		||||
@@ -881,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;
 | 
			
		||||
@@ -918,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);
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										20
									
								
								meson.build
									
									
									
									
									
								
							
							
						
						
									
										20
									
								
								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')
 | 
			
		||||
@@ -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
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										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»"
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										231
									
								
								po/fr.po
									
									
									
									
									
								
							
							
						
						
									
										231
									
								
								po/fr.po
									
									
									
									
									
								
							@@ -20,8 +20,8 @@ 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-04-13 19:54+0000\n"
 | 
			
		||||
"PO-Revision-Date: 2018-04-18 19:30+0200\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"
 | 
			
		||||
@@ -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"
 | 
			
		||||
 | 
			
		||||
#: 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 "
 | 
			
		||||
@@ -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,23 +662,23 @@ 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"
 | 
			
		||||
 | 
			
		||||
@@ -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:295
 | 
			
		||||
#: 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,17 +971,17 @@ 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"
 | 
			
		||||
 | 
			
		||||
@@ -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: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 "Échec de l’authentification. Essayez à nouveau."
 | 
			
		||||
 | 
			
		||||
@@ -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"
 | 
			
		||||
 | 
			
		||||
@@ -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é"
 | 
			
		||||
 | 
			
		||||
@@ -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:294
 | 
			
		||||
#: js/ui/status/thunderbolt.js:298
 | 
			
		||||
msgid "Thunderbolt"
 | 
			
		||||
msgstr "Interface Thunderbolt"
 | 
			
		||||
 | 
			
		||||
#. we are done
 | 
			
		||||
#: js/ui/status/thunderbolt.js:350
 | 
			
		||||
#: js/ui/status/thunderbolt.js:354
 | 
			
		||||
msgid "Unknown Thunderbolt device"
 | 
			
		||||
msgstr "Périphérique Thunderbolt inconnu"
 | 
			
		||||
 | 
			
		||||
#: 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."
 | 
			
		||||
@@ -2028,24 +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:356
 | 
			
		||||
#: js/ui/status/thunderbolt.js:360
 | 
			
		||||
msgid "Thunderbolt authorization error"
 | 
			
		||||
msgstr "Erreur d’autorisation 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 "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.
 | 
			
		||||
#.
 | 
			
		||||
@@ -2095,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"
 | 
			
		||||
@@ -2119,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"
 | 
			
		||||
@@ -2172,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"
 | 
			
		||||
 | 
			
		||||
@@ -2197,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