Compare commits

..

25 Commits

Author SHA1 Message Date
Owen W. Taylor
b80641f45d Add support for meta_restart() and MetaDisplay::restart
Support was added to Mutter to allow it to trigger a restart
to allow for restarts when switching in or out of stereo mode.

Hook up to the new signals on MetaDisplay to show the restart
message and reexec. Meta.is_restart() is used to suppress
the startup animation.

This also allows us to do 'Alt-F2 r' restarts more cleanly
without a visual flash and animation.
2014-05-08 19:08:01 -04:00
Carles Ferrando
e4e3252ffc [l10n] Updated Catalan (Valencian) translation 2014-05-09 00:03:24 +02:00
Florian Müllner
e9ae77186d system: Keep key focus when switching between alternatives
When switching between alternatives in AltSwitcher, the currently
visible child is replaced with the alternative. If the original
child has the key focus when it is removed from the stage, the
focus is lost. Detect this case and manually move the focus to
the new child.

https://bugzilla.gnome.org/show_bug.cgi?id=727259
2014-05-06 14:29:28 +02:00
Giovanni Campagna
a0c146bbfd Fix Italian translation
- "Aereo" is the thing that flies, "Aero" is the Windows 7 theme.
- "Abilita", not "Abilitato", for the Enable action.
2014-05-04 15:23:25 +02:00
Ihar Hrachyshka
6d679148b6 Updated Belarusian translation. 2014-05-03 14:46:52 +02:00
Giovanni Campagna
07198c5890 rfkill: make the Airplane mode menu insensitive in the lock screen
Like we do for the bluetooth and wifi menus

https://bugzilla.gnome.org/show_bug.cgi?id=729224
2014-04-30 22:00:00 +02:00
Florian Müllner
4720bc3412 workspaceThumbnails: Fix removal of multiple workspaces
When workspaces have been removed, we need to remove the corresponding
thumbnails as well; the number of thumbnails that need removing is
the difference between the old number of workspaces and the new one.
Currently we assume that the old number of workspaces corresponds to
the number of existing thumbnails, but that may actually be wrong:
A thumbnail will still be animated out after its workspace has been
removed. As a result, we end up removing too many thumbnails when a
workspace is removed while a thumbnail of a previously removed workspace
is still animating out. Fix this by basing the old number of workspaces
only on thumbnails that have not been removed previously.

https://bugzilla.gnome.org/show_bug.cgi?id=728820
2014-04-26 17:51:42 +02:00
Bastien Nocera
7113821964 osdWindow: Fix setting a zero-level in osdWindow
Commit 7101cc3170 caused a small
regression insomuch that it checks for a valid "level" but simply using
"if (level)" which will be false if level is undefined and if
level == 0.

Check for not undefined instead.

https://bugzilla.gnome.org/show_bug.cgi?id=727384
2014-04-25 15:19:32 +02:00
Adel Gadllah
c2ae98209d networkAgent: Handle empty vpn 'keyfiles'
Passing back no data is valid in case both secrets (group and user passwords)
are stored.

Just confirm the request in that case.

https://bugzilla.gnome.org/show_bug.cgi?id=728681
2014-04-23 13:10:37 +02:00
Daniel Korostil
21f0e422c0 Updated Ukrainian translation 2014-04-22 23:08:29 +03:00
Giovanni Campagna
eb0f2b8b34 rfkill: fix turning off airplane mode from the menu
The menu does not have a proxy anymore, it needs to go through
the manager.

https://bugzilla.gnome.org/show_bug.cgi?id=728512
2014-04-21 19:14:08 +02:00
Wouter Bolsterlee
65e781a973 Updated Dutch translation 2014-04-18 20:16:28 +02:00
Florian Müllner
4590903159 Bump version to 3.12.1
Update NEWS.
2014-04-15 23:37:57 +02:00
Florian Müllner
8b6fcbea50 layout: Don't always extend struts to the screen edge
NetWM struts are defined in terms of screen edges (rather than monitor
edges), which works poorly with vertical monitor layouts (as it renders
entire monitors unusable). Don't extend struts in those cases.

https://bugzilla.gnome.org/show_bug.cgi?id=663690
2014-04-15 23:36:33 +02:00
Florian Müllner
c6067ffa1d extension-prefs: Force linking with libgnome-shell-js
Use the same hack we use for the main executable to fool the linker
when using --as-needed.

https://bugzilla.gnome.org/show_bug.cgi?id=727948
2014-04-15 23:36:33 +02:00
Rui Matos
7b4254da4e Revert "global: Run maybe_gc at leisure again"
It's causing segfaults so let's back it out for 3.12.1

This reverts commit 2f576e3076.
2014-04-15 14:14:47 +02:00
Adel Gadllah
2f576e3076 global: Run maybe_gc at leisure again
The deadlocks are now fixed this should keep memory usage low,
avoid memory fragmentation and prevent the gc from running at
inconvient times.
2014-04-14 23:11:30 +02:00
Мирослав Николић
60d7c3ad86 Updated Serbian translation 2014-04-14 19:33:40 +02:00
Ikuya Awashiro
43fdc15ac0 l10n: Update Japanese translation 2014-04-15 00:36:18 +09:00
Ask H. Larsen
f082a58071 Updated Danish translation 2014-04-13 21:58:56 +02:00
Balázs Úr
ae5dfb5740 Updated Hungarian translation 2014-04-13 15:42:58 +02:00
Rūdolfs Mazurs
e8fdba4f66 Updated Latvian translation 2014-04-12 12:36:23 +03:00
Rui Matos
1030cdfe8a layout: Change setDummyCursorPosition to also set the size
If we are being used to follow a text entry cursor we also need to set
the size so that the popup menu avoids covering it.

https://bugzilla.gnome.org/show_bug.cgi?id=727579
2014-04-11 16:51:31 +02:00
Khoem Sokhem
ca2d626b59 Added Khmer translation 2014-04-10 23:35:19 +02:00
Dirgita
2b4eaf6b3f Updated Indonesian translation 2014-04-10 23:35:11 +02:00
142 changed files with 7593 additions and 10426 deletions

3
.gitignore vendored
View File

@@ -78,8 +78,11 @@ src/gnome-shell-calendar-server
src/gnome-shell-extension-prefs src/gnome-shell-extension-prefs
src/gnome-shell-extension-tool src/gnome-shell-extension-tool
src/gnome-shell-hotplug-sniffer src/gnome-shell-hotplug-sniffer
src/gnome-shell-jhbuild
src/gnome-shell-perf-helper src/gnome-shell-perf-helper
src/gnome-shell-perf-tool src/gnome-shell-perf-tool
src/gnome-shell-real
src/gnome-shell-wayland
src/hotplug-sniffer/org.gnome.Shell.HotplugSniffer.service src/hotplug-sniffer/org.gnome.Shell.HotplugSniffer.service
src/run-js-test src/run-js-test
src/test-recorder src/test-recorder

71
NEWS
View File

@@ -1,49 +1,4 @@
3.13.3 3.12.1
======
* Don't allow closing windows with attached modals [Florian; #729886]
* Fix self-restarting on OpenBSD [Antoine; #727763]
* Improve behavior of window buttons with compositor menus [Florian; #731058]
* Work around atspi-related performance regression [Alejandro; #730118]
* Misc bug fixes and cleanups [Florian, Lan, Jasper, Christophe, Debarshi,
Zeeshan; #728271, #726460, #703833, #731118, #731220, #695487, #730527,
#728170, #731619, #731738, #731882, #731923]
Contributors:
Zeeshan Ali (Khattak), Christophe Fergeau, Adel Gadllah, Antoine Jacoutot,
Ting-Wei Lan, Florian Müllner, Alejandro Piñeiro, Debarshi Ray,
Carlos Soriano, Jasper St. Pierre, Wim Taymans, Rico Tzschichholz
Translations:
Philip Withnall [en_GB], Milo Casagrande [it], Aurimas Černius [lt],
Enrico Nicoletto [pt_BR], Kjartan Maraas [nb], Balázs Meskó [hu],
Muhammet Kara [tr], Daniel Mustieles [es], Yosef Or Boczko [he],
Matej Urbančič [sl], Mattias Eriksson [sv]
3.13.2
======
* Make airplane mode menu insensitive in lock screen [Giovanni; #729224]
* Don't always extend struts to the screen edge [Florian; #683819]
* Fix keynav for alternatives in AltSwitcher [Florian; #727259]
* Implement window menus in the shell [Jasper; #726352]
* Support resource:/// URLs in GNOME_SHELL_JS envvar [Owen; #730409]
* Fix switcher popups with keybindings containing Escape [Rui; #730739]
* Update extension-prefs UI to follow GNOME 3 patterns [Florian; #730829]
* Add support for fallback app menu in window decorations [Florian; #730752]
* Fix keynav escaping open app folders [Florian; #726760]
* Misc. bug fixes [Kalev, Florian, Owen; #729429, #728449, #730408, #730753,
#730653]
Contributors:
Giovanni Campagna, Piotr Drąg, Kalev Lember, Rui Matos, Florian Müllner,
Vadim Rutkovsky, Carlos Soriano, Jasper St. Pierre, Owen W. Taylor
Translations:
Ihar Hrachyshka [be], Giovanni Campagna [it], Carles Ferrando [ca@valencia],
Daniel Mustieles [es], Aurimas Černius [lt], Enrico Nicoletto [pt_BR],
Yosef Or Boczko [he], Marek Černocký [cs], Muhammet Kara [tr],
Georges Neto [pt_BR], Andika Triwidada [id]
3.13.1
====== ======
* Ensure the currently focused app icon is viewable [Rui; #726759] * Ensure the currently focused app icon is viewable [Rui; #726759]
* Improve language in location menu [Zeeshan; #726498] * Improve language in location menu [Zeeshan; #726498]
@@ -52,27 +7,12 @@ Translations:
* Fix bad antialiasing on panel menu buttons [Carlos; #727336] * Fix bad antialiasing on panel menu buttons [Carlos; #727336]
* Don't hide location menu [Zeeshan; #727398] * Don't hide location menu [Zeeshan; #727398]
* Fix IM candidate window obscuring current text [Rui; #727579] * Fix IM candidate window obscuring current text [Rui; #727579]
* Fix extension-prefs tool when linked with --as-needed [Florian; #727948]
* Don't always extend struts to the screen edge [Florian; #663690] * Don't always extend struts to the screen edge [Florian; #663690]
* Add shortcuts for switching to the last workspace [Elad; #659288]
* Show OSD window on all monitors [Adel; #722684]
* Improve consistency of labels in network menu [Paul; #727163]
* Fix zombie search providers showing up [Jasper; #728597]
* Remove ConsoleKit support [Florian; #686626]
* Fix region screenshots with open shell menus [Florian; #709126]
* Support <shift>insert in text entries [Florian; #648318]
* Improve app picker scrolling on touch [Jasper; #729064]
* Don't make date button clickable when on current date [Carlos; #726724]
* Tweak heuristic for hiding workspace switcher [Florian; #662457]
* Add option to show in Software to app context menu [Matthias; #643043]
* Misc. bug fixes and cleanups [Bastien, Florian, Giovanni, Adel, Vadim,
Carlos; #727983, #727948, #728512, #728681, #728897, #727384, #728820,
#715042, #728449, #728343]
Contributors: Contributors:
Elad Alfassa, Zeeshan Ali (Khattak), Giovanni Campagna, Cosimo Cecchi, Zeeshan Ali (Khattak), Cosimo Cecchi, Piotr Drąg, Rui Matos, Simon McVittie,
Matthias Clasen, Piotr Drąg, Adel Gadllah, Paul Lange, Rui Matos, Florian Müllner, Alejandro Piñeiro, Carlos Soriano
Simon McVittie, Florian Müllner, Bastien Nocera, Alejandro Piñeiro,
Vadim Rutkovsky, Carlos Soriano, Jasper St. Pierre
Translations: Translations:
Khaled Hosny [ar], Piotr Drąg [pl], Yosef Or Boczko [he], Khaled Hosny [ar], Piotr Drąg [pl], Yosef Or Boczko [he],
@@ -84,8 +24,7 @@ Translations:
Fran Diéguez [gl], Pau Iranzo [ca], Luca Ferretti [it], Milo Casagrande [it], Fran Diéguez [gl], Pau Iranzo [ca], Luca Ferretti [it], Milo Casagrande [it],
Tiago S [pt], Victor Ibragimov [tg], Dirgita [id], Khoem Sokhem [km], Tiago S [pt], Victor Ibragimov [tg], Dirgita [id], Khoem Sokhem [km],
Rūdolfs Mazurs [lv], Balázs Úr [hu], Ask H. Larsen [da], Ikuya Awashiro [ja], Rūdolfs Mazurs [lv], Balázs Úr [hu], Ask H. Larsen [da], Ikuya Awashiro [ja],
Wouter Bolsterlee [nl], Daniel Korostil [uk], Daniel Șerbănescu [ro], Мирослав Николић [sr, sr@latin]
Enrico Nicoletto [pt_BR]
3.12.0 3.12.0
====== ======

View File

@@ -1,5 +1,5 @@
AC_PREREQ(2.63) AC_PREREQ(2.63)
AC_INIT([gnome-shell],[3.13.3],[https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-shell],[gnome-shell]) AC_INIT([gnome-shell],[3.12.1],[https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-shell],[gnome-shell])
AC_CONFIG_HEADERS([config.h]) AC_CONFIG_HEADERS([config.h])
AC_CONFIG_SRCDIR([src/shell-global.c]) AC_CONFIG_SRCDIR([src/shell-global.c])
@@ -76,7 +76,7 @@ AC_MSG_RESULT($enable_systemd)
CLUTTER_MIN_VERSION=1.15.90 CLUTTER_MIN_VERSION=1.15.90
GOBJECT_INTROSPECTION_MIN_VERSION=0.10.1 GOBJECT_INTROSPECTION_MIN_VERSION=0.10.1
GJS_MIN_VERSION=1.39.0 GJS_MIN_VERSION=1.39.0
MUTTER_MIN_VERSION=3.13.3 MUTTER_MIN_VERSION=3.12.1
GTK_MIN_VERSION=3.7.9 GTK_MIN_VERSION=3.7.9
GIO_MIN_VERSION=2.37.0 GIO_MIN_VERSION=2.37.0
LIBECAL_MIN_VERSION=3.5.3 LIBECAL_MIN_VERSION=3.5.3
@@ -112,6 +112,13 @@ fi
PKG_CHECK_MODULES(GNOME_SHELL, $SHARED_PCS) PKG_CHECK_MODULES(GNOME_SHELL, $SHARED_PCS)
PKG_CHECK_MODULES(MUTTER, libmutter >= $MUTTER_MIN_VERSION) PKG_CHECK_MODULES(MUTTER, libmutter >= $MUTTER_MIN_VERSION)
PKG_CHECK_MODULES(MUTTER_WAYLAND, [libmutter-wayland >= $MUTTER_MIN_VERSION],
[MUTTER_WAYLAND_TYPELIB_DIR=`$PKG_CONFIG --variable=typelibdir libmutter-wayland`
AC_SUBST(MUTTER_WAYLAND_TYPELIB_DIR)
have_mutter_wayland=yes],
[have_mutter_wayland=no])
AM_CONDITIONAL(HAVE_MUTTER_WAYLAND, test $have_mutter_wayland != no)
PKG_CHECK_MODULES(GNOME_SHELL_JS, gio-2.0 gjs-internals-1.0 >= $GJS_MIN_VERSION) PKG_CHECK_MODULES(GNOME_SHELL_JS, gio-2.0 gjs-internals-1.0 >= $GJS_MIN_VERSION)
PKG_CHECK_MODULES(ST, clutter-1.0 gtk+-3.0 libcroco-0.6 >= 0.6.8 x11) PKG_CHECK_MODULES(ST, clutter-1.0 gtk+-3.0 libcroco-0.6 >= 0.6.8 x11)
@@ -223,14 +230,6 @@ fi
AM_CONDITIONAL(ENABLE_MAN, test "$enable_man" != no) AM_CONDITIONAL(ENABLE_MAN, test "$enable_man" != no)
GNOME_COMPILE_WARNINGS([error]) GNOME_COMPILE_WARNINGS([error])
case "$WARN_CFLAGS" in
*-Werror*)
WARN_CFLAGS="$WARN_CFLAGS -Wno-error=deprecated-declarations"
;;
esac
AM_CFLAGS="$AM_CFLAGS $WARN_CFLAGS"
AC_SUBST(AM_CFLAGS)
BROWSER_PLUGIN_DIR="${BROWSER_PLUGIN_DIR:-"\${libdir}/mozilla/plugins"}" BROWSER_PLUGIN_DIR="${BROWSER_PLUGIN_DIR:-"\${libdir}/mozilla/plugins"}"
AC_ARG_VAR([BROWSER_PLUGIN_DIR],[Where to install the plugin to]) AC_ARG_VAR([BROWSER_PLUGIN_DIR],[Where to install the plugin to])

View File

@@ -1,23 +1,9 @@
CLEANFILES =
desktopdir=$(datadir)/applications desktopdir=$(datadir)/applications
desktop_DATA = gnome-shell.desktop gnome-shell-wayland.desktop gnome-shell-extension-prefs.desktop desktop_DATA = gnome-shell.desktop gnome-shell-extension-prefs.desktop
if HAVE_MUTTER_WAYLAND
desktop_DATA += gnome-shell-wayland.desktop
endif HAVE_MUTTER_WAYLAND
if HAVE_NETWORKMANAGER
desktop_DATA += org.gnome.Shell.PortalHelper.desktop
servicedir = $(datadir)/dbus-1/services
service_DATA = org.gnome.Shell.PortalHelper.service
CLEANFILES += \
org.gnome.Shell.PortalHelper.service \
org.gnome.Shell.PortalHelper.desktop
endif
%.service: %.service.in
$(AM_V_GEN) sed -e "s|@libexecdir[@]|$(libexecdir)|" \
$< > $@ || rm $@
# We substitute in bindir so it works as an autostart # We substitute in bindir so it works as an autostart
# file when built in a non-system prefix # file when built in a non-system prefix
@@ -53,6 +39,7 @@ dist_theme_DATA = \
theme/filter-selected-rtl.svg \ theme/filter-selected-rtl.svg \
theme/gnome-shell.css \ theme/gnome-shell.css \
theme/logged-in-indicator.svg \ theme/logged-in-indicator.svg \
theme/menu-arrow-symbolic.svg \
theme/message-tray-background.png \ theme/message-tray-background.png \
theme/more-results.svg \ theme/more-results.svg \
theme/noise-texture.png \ theme/noise-texture.png \
@@ -106,11 +93,9 @@ EXTRA_DIST = \
$(menu_DATA) \ $(menu_DATA) \
$(convert_DATA) \ $(convert_DATA) \
$(keys_in_files) \ $(keys_in_files) \
org.gnome.Shell.PortalHelper.desktop.in \
org.gnome.Shell.PortalHelper.service.in \
org.gnome.shell.gschema.xml.in.in org.gnome.shell.gschema.xml.in.in
CLEANFILES += \ CLEANFILES = \
gnome-shell.desktop.in \ gnome-shell.desktop.in \
gnome-shell-wayland.desktop.in \ gnome-shell-wayland.desktop.in \
gnome-shell-extension-prefs.in \ gnome-shell-extension-prefs.in \

View File

@@ -1,4 +1,5 @@
[org.gnome.shell.overrides] [org.gnome.shell.overrides]
attach-modal-dialogs = /desktop/gnome/shell/windows/attach_modal_dialogs attach-modal-dialogs = /desktop/gnome/shell/windows/attach_modal_dialogs
button-layout = /desktop/gnome/shell/windows/button_layout
edge-tiling = /desktop/gnome/shell/windows/edge_tiling edge-tiling = /desktop/gnome/shell/windows/edge_tiling
workspaces-only-on-primary = /desktop/gnome/shell/windows/workspaces_only_on_primary workspaces-only-on-primary = /desktop/gnome/shell/windows/workspaces_only_on_primary

View File

@@ -2,7 +2,7 @@
Type=Application Type=Application
_Name=GNOME Shell (wayland compositor) _Name=GNOME Shell (wayland compositor)
_Comment=Window management and application launching _Comment=Window management and application launching
Exec=@bindir@/gnome-shell --wayland --display-server Exec=@bindir@/mutter-launch -- gnome-shell-wayland --wayland --display-server
X-GNOME-Bugzilla-Bugzilla=GNOME X-GNOME-Bugzilla-Bugzilla=GNOME
X-GNOME-Bugzilla-Product=gnome-shell X-GNOME-Bugzilla-Product=gnome-shell
X-GNOME-Bugzilla-Component=general X-GNOME-Bugzilla-Component=general

View File

@@ -1,9 +0,0 @@
[Desktop Entry]
_Name=Captive Portal
Type=Application
Exec=gapplication launch org.gnome.Shell.PortalHelper
DBusActivatable=true
NoDisplay=true
Icon=network-workgroup
StartupNotify=true
OnlyShowIn=GNOME;

View File

@@ -1,3 +0,0 @@
[D-BUS Service]
Name=org.gnome.Shell.PortalHelper
Exec=@libexecdir@/gnome-shell-portal-helper

View File

@@ -38,6 +38,7 @@
<method name="Screencast"> <method name="Screencast">
<arg type="s" direction="in" name="file_template"/> <arg type="s" direction="in" name="file_template"/>
<arg type="a{sv}" direction="in" name="options"/> <arg type="a{sv}" direction="in" name="options"/>
<arg type="b" direction="in" name="flash"/>
<arg type="b" direction="out" name="success"/> <arg type="b" direction="out" name="success"/>
<arg type="s" direction="out" name="filename_used"/> <arg type="s" direction="out" name="filename_used"/>
</method> </method>

View File

@@ -31,7 +31,7 @@
</_description> </_description>
</key> </key>
<key name="favorite-apps" type="as"> <key name="favorite-apps" type="as">
<default>[ 'epiphany.desktop', 'evolution.desktop', 'empathy.desktop', 'rhythmbox.desktop', 'shotwell.desktop', 'libreoffice-writer.desktop', 'org.gnome.Nautilus.desktop', 'org.gnome.Documents.desktop' ]</default> <default>[ 'epiphany.desktop', 'evolution.desktop', 'empathy.desktop', 'rhythmbox.desktop', 'shotwell.desktop', 'libreoffice-writer.desktop', 'nautilus.desktop', 'gnome-documents.desktop' ]</default>
<_summary>List of desktop file IDs for favorite applications</_summary> <_summary>List of desktop file IDs for favorite applications</_summary>
<_description> <_description>
The applications corresponding to these identifiers The applications corresponding to these identifiers
@@ -40,10 +40,10 @@
</key> </key>
<key name="app-picker-view" type="u"> <key name="app-picker-view" type="u">
<default>0</default> <default>0</default>
<_summary>App Picker View</_summary> <summary>App Picker View</summary>
<_description> <description>
Index of the currently selected view in the application picker. Index of the currently selected view in the application picker.
</_description> </description>
</key> </key>
<key name="command-history" type="as"> <key name="command-history" type="as">
<default>[]</default> <default>[]</default>
@@ -128,8 +128,8 @@
</key> </key>
<key name="pause-resume-tweens" type="as"> <key name="pause-resume-tweens" type="as">
<default>[]</default> <default>[]</default>
<_summary>Keybinding that pauses and resumes all running tweens, for debugging purposes</_summary> <summary>Keybinding that pauses and resumes all running tweens, for debugging purposes</summary>
<_description></_description> <description></description>
</key> </key>
</schema> </schema>
@@ -175,11 +175,11 @@
gettext-domain="@GETTEXT_PACKAGE@"> gettext-domain="@GETTEXT_PACKAGE@">
<key type="b" name="current-workspace-only"> <key type="b" name="current-workspace-only">
<default>false</default> <default>false</default>
<_summary>Limit switcher to current workspace.</_summary> <summary>Limit switcher to current workspace.</summary>
<_description> <description>
If true, only applications that have windows on the current workspace are shown in the switcher. If true, only applications that have windows on the current workspace are shown in the switcher.
Otherwise, all applications are included. Otherwise, all applications are included.
</_description> </description>
</key> </key>
</schema> </schema>
@@ -202,11 +202,11 @@
</key> </key>
<key type="b" name="current-workspace-only"> <key type="b" name="current-workspace-only">
<default>true</default> <default>true</default>
<_summary>Limit switcher to current workspace.</_summary> <summary>Limit switcher to current workspace.</summary>
<_description> <description>
If true, only windows from the current workspace are shown in the switcher. If true, only windows from the current workspace are shown in the switcher.
Otherwise, all windows are included. Otherwise, all windows are included.
</_description> </description>
</key> </key>
</schema> </schema>
@@ -221,6 +221,15 @@
</_description> </_description>
</key> </key>
<key name="button-layout" type="s">
<default>":close"</default>
<_summary>Arrangement of buttons on the titlebar</_summary>
<_description>
This key overrides the key in org.gnome.desktop.wm.preferences when
running GNOME Shell.
</_description>
</key>
<key name="edge-tiling" type="b"> <key name="edge-tiling" type="b">
<default>true</default> <default>true</default>
<_summary>Enable edge tiling when dropping windows on screen edges</_summary> <_summary>Enable edge tiling when dropping windows on screen edges</_summary>

View File

@@ -45,7 +45,7 @@ stage {
/* small bold */ /* small bold */
.dash-label, .dash-label,
.window-caption, .window-caption,
.switcher-list, .switcher-list,
.app-well-app > .overview-icon, .app-well-app > .overview-icon,
.show-apps > .overview-icon, .show-apps > .overview-icon,
.grid-search-result .overview-icon { .grid-search-result .overview-icon {
@@ -153,21 +153,6 @@ StScrollBar StButton#vhandle:active {
-arrow-rise: 11px; -arrow-rise: 11px;
} }
.popup-menu-boxpointer.fallback-app-menu {
-arrow-border-radius: 4px;
-arrow-background-color: #ededed;
-arrow-border-width: 1px;
-arrow-border-color: #a6a6a6;
-arrow-base: 24px;
-arrow-rise: 11px;
}
.popup-menu-boxpointer.fallback-app-menu.dark {
-arrow-background-color: #3f4747;
-arrow-border-color: #282b2b;
}
.popup-menu { .popup-menu {
min-width: 200px; min-width: 200px;
} }
@@ -181,15 +166,6 @@ StScrollBar StButton#vhandle:active {
background-color: #333333; background-color: #333333;
} }
.fallback-app-menu .popup-submenu-menu-item:open {
background-color: #888888;
color: white;
}
.fallback-app-menu.dark .popup-submenu-menu-item:open {
background-color: #333333;
}
.popup-sub-menu { .popup-sub-menu {
background-gradient-start: rgba(80,80,80,0.3); background-gradient-start: rgba(80,80,80,0.3);
background-gradient-end: rgba(80,80,80,0.4); background-gradient-end: rgba(80,80,80,0.4);
@@ -197,20 +173,6 @@ StScrollBar StButton#vhandle:active {
box-shadow: inset 0px 2px 4px rgba(0,0,0,0.9); box-shadow: inset 0px 2px 4px rgba(0,0,0,0.9);
} }
.fallback-app-menu .popup-sub-menu {
background-gradient-start: #dddddd;
background-gradient-end: #dfdfdf;
background-gradient-direction: vertical;
box-shadow: inset 0px 2px 4px rgba(0,0,0,0.4);
}
.fallback-app-menu.dark .popup-sub-menu {
background-gradient-start: #474747;
background-gradient-end: #4b4b4b;
background-gradient-direction: vertical;
box-shadow: inset 0px 2px 4px rgba(0,0,0,0.9);
}
.popup-sub-menu:scrolled .popup-menu-item:ltr { .popup-sub-menu:scrolled .popup-menu-item:ltr {
padding-right: 0em; padding-right: 0em;
} }
@@ -259,29 +221,7 @@ StScrollBar StButton#vhandle:active {
color: #9f9f9f; color: #9f9f9f;
} }
.fallback-app-menu .popup-menu-item { .popup-image-menu-item {
color: #43484a;
}
.fallback-app-menu .popup-menu-item:active {
color: white;
background-color: #4689cd;
}
.fallback-app-menu .popup-menu-item:insensitive {
color: gray;
}
.fallback-app-menu.dark .popup-menu-item {
color: white;
}
.fallback-app-menu.dark .popup-menu-item:active {
background-color: #445f7d;
}
.fallback-app-menu.dark .popup-menu-item:insensitive {
color: #9f9f9f;
} }
.popup-separator-menu-item { .popup-separator-menu-item {
@@ -293,15 +233,8 @@ StScrollBar StButton#vhandle:active {
padding: 8px 0px; padding: 8px 0px;
} }
.fallback-app-menu .popup-separator-menu-item { .popup-alternating-menu-item:alternate {
-gradient-start: #a0a2a3; font-weight: bold;
-gradient-end: #a0a2a3;
-margin-horizontal: 0;
}
.fallback-app-menu.dark .popup-separator-menu-item {
-gradient-start: #818584;
-gradient-end: #818584;
} }
.popup-status-menu-item { .popup-status-menu-item {
@@ -403,14 +336,6 @@ StScrollBar StButton#vhandle:active {
icon-size: 16px; icon-size: 16px;
} }
.no-networks-label {
color: #999999;
}
.no-networks-box {
spacing: 12px;
}
/* Buttons */ /* Buttons */
.candidate-page-button, .candidate-page-button,
@@ -657,6 +582,11 @@ StScrollBar StButton#vhandle:active {
app-icon-bottom-clip: 2px; app-icon-bottom-clip: 2px;
} }
.app-menu-icon {
width: 24px;
height: 24px;
}
.panel-button { .panel-button {
-natural-hpadding: 12px; -natural-hpadding: 12px;
-minimum-hpadding: 6px; -minimum-hpadding: 6px;
@@ -1227,6 +1157,11 @@ StScrollBar StButton#vhandle:active {
text-shadow: black 0px 2px 2px; text-shadow: black 0px 2px 2px;
} }
#LookingGlassDialog .lg-inspector-title {
font-weight: bold;
padding-bottom: 8px;
}
.lg-dialog StEntry { .lg-dialog StEntry {
selection-background-color: #bbbbbb; selection-background-color: #bbbbbb;
selected-color: #333333; selected-color: #333333;
@@ -1306,8 +1241,14 @@ StScrollBar StButton#vhandle:active {
width: 0.3em; width: 0.3em;
} }
#calendarPopup .calendar {
padding: 10px;
}
.calendar { .calendar {
padding: .4em 1.75em .8em 1.75em; padding: .4em 1.75em .8em 1.75em;
spacing-rows: 0px;
spacing-columns: 0px;
} }
.calendar-month-label { .calendar-month-label {
@@ -1503,8 +1444,11 @@ StScrollBar StButton#vhandle:active {
padding-right: 8pt; padding-right: 8pt;
} }
/* Message Tray */ .url-highlighter {
link-color: #ccccff;
}
/* Message Tray */
#message-tray { #message-tray {
background: #2e3436 url(message-tray-background.png); background: #2e3436 url(message-tray-background.png);
background-repeat: repeat; background-repeat: repeat;
@@ -1527,12 +1471,13 @@ StScrollBar StButton#vhandle:active {
color: #eeeeee; color: #eeeeee;
} }
.url-highlighter { .no-messages-label,
link-color: #ccccff; .no-networks-label {
color: #999999;
} }
.no-messages-label { .no-networks-box {
color: #999999; spacing: 12px;
} }
.notification { .notification {
@@ -1828,6 +1773,26 @@ StScrollBar StButton#vhandle:active {
spacing: 8px; spacing: 8px;
} }
.thumbnail-scroll-gradient-left {
background-gradient-direction: horizontal;
background-gradient-start: rgba(51, 51, 51, 1.0);
background-gradient-end: rgba(51, 51, 51, 0);
border-radius: 24px;
border-radius-topright: 0px;
border-radius-bottomright: 0px;
width: 60px;
}
.thumbnail-scroll-gradient-right {
background-gradient-direction: horizontal;
background-gradient-start: rgba(51, 51, 51, 0);
background-gradient-end: rgba(51, 51, 51, 1.0);
border-radius: 24px;
border-radius-topleft: 0px;
border-radius-bottomleft: 0px;
width: 60px;
}
.switcher-list .item-box { .switcher-list .item-box {
padding: 8px; padding: 8px;
border-radius: 8px; border-radius: 8px;
@@ -2092,11 +2057,20 @@ StScrollBar StButton#vhandle:active {
font-size: 10pt; font-size: 10pt;
} }
/* Restart message */
.restart-message {
font-size: 14pt;
}
/* ShellMountOperation Dialogs */ /* ShellMountOperation Dialogs */
.shell-mount-operation-icon { .shell-mount-operation-icon {
icon-size: 48px; icon-size: 48px;
} }
.mount-password-reask {
color: red;
}
.show-processes-dialog, .show-processes-dialog,
.mount-question-dialog { .mount-question-dialog {
spacing: 24px; spacing: 24px;
@@ -2392,6 +2366,13 @@ StScrollBar StButton#vhandle:active {
padding-bottom: 1em; padding-bottom: 1em;
} }
.login-dialog-title {
font-size: 14pt;
font-weight: bold;
color: #666666;
padding-bottom: 2em;
}
.login-dialog { .login-dialog {
/* Reset border and background */ /* Reset border and background */
border: none; border: none;
@@ -2440,6 +2421,10 @@ StScrollBar StButton#vhandle:active {
background-size: contain; background-size: contain;
} }
.login-dialog-user-list-item-text-box {
padding: 0 0.5em;
}
.login-dialog-user-list-item .login-dialog-timed-login-indicator { .login-dialog-user-list-item .login-dialog-timed-login-indicator {
background-color: rgba(0,0,0,0.0); background-color: rgba(0,0,0,0.0);
height: 2px; height: 2px;

View File

@@ -0,0 +1,90 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="16"
height="16"
id="svg3863"
version="1.1"
inkscape:version="0.48.4 r9939"
sodipodi:docname="menu-arrow.svg">
<defs
id="defs3865" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="15.836083"
inkscape:cx="-3.1641676"
inkscape:cy="11.823817"
inkscape:current-layer="layer1"
showgrid="true"
inkscape:grid-bbox="true"
inkscape:document-units="px"
showguides="true"
inkscape:guide-bbox="true"
inkscape:window-width="1366"
inkscape:window-height="702"
inkscape:window-x="0"
inkscape:window-y="27"
inkscape:window-maximized="1"
inkscape:snap-bbox="true">
<sodipodi:guide
orientation="1,0"
position="15.996443,16.922964"
id="guide3873" />
<sodipodi:guide
orientation="0,1"
position="28.041217,3.1256134"
id="guide3875" />
<sodipodi:guide
orientation="0,1"
position="-0.80372916,24.469088"
id="guide3877" />
<sodipodi:guide
orientation="1,0"
position="3.0363102,34.649657"
id="guide3879" />
<sodipodi:guide
orientation="1,0"
position="29.023553,28.577037"
id="guide3881" />
<inkscape:grid
type="xygrid"
id="grid2988" />
</sodipodi:namedview>
<metadata
id="metadata3868">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
id="layer1"
inkscape:label="Layer 1"
inkscape:groupmode="layer"
transform="translate(0,-16)">
<path
style="fill:#ffffff;fill-opacity:1;stroke:none"
d="m 4,23 8,0 -4,5 z"
id="path3883"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccc" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.5 KiB

View File

@@ -66,7 +66,6 @@ IGNORE_HFILES= \
gactionmuxer.h \ gactionmuxer.h \
gactionobservable.h \ gactionobservable.h \
gactionobserver.h \ gactionobserver.h \
shell-network-agent.h \
shell-recorder-src.h shell-recorder-src.h
if !BUILD_RECORDER if !BUILD_RECORDER

View File

@@ -50,6 +50,7 @@
<xi:include href="xml/shell-wm.xml"/> <xi:include href="xml/shell-wm.xml"/>
<xi:include href="xml/shell-util.xml"/> <xi:include href="xml/shell-util.xml"/>
<xi:include href="xml/shell-mount-operation.xml"/> <xi:include href="xml/shell-mount-operation.xml"/>
<xi:include href="xml/shell-network-agent.xml"/>
<xi:include href="xml/shell-polkit-authentication-agent.xml"/> <xi:include href="xml/shell-polkit-authentication-agent.xml"/>
<xi:include href="xml/shell-tp-client.xml"/> <xi:include href="xml/shell-tp-client.xml"/>
</chapter> </chapter>

View File

@@ -23,11 +23,6 @@ const GnomeShellIface = '<node> \
</interface> \ </interface> \
</node>'; </node>';
const customCss = '.prefs-button { \
padding: 8px; \
border-radius: 20px; \
}';
const GnomeShellProxy = Gio.DBusProxy.makeProxyWrapper(GnomeShellIface); const GnomeShellProxy = Gio.DBusProxy.makeProxyWrapper(GnomeShellIface);
function stripPrefix(string, prefix) { function stripPrefix(string, prefix) {
@@ -51,9 +46,13 @@ const Application = new Lang.Class({
this._extensionPrefsModules = {}; this._extensionPrefsModules = {};
this._extensionIters = {};
this._startupUuid = null; this._startupUuid = null;
this._loaded = false; },
this._skipMainWindow = false;
_buildModel: function() {
this._model = new Gtk.ListStore();
this._model.set_column_types([GObject.TYPE_STRING, GObject.TYPE_STRING]);
}, },
_extensionAvailable: function(uuid) { _extensionAvailable: function(uuid) {
@@ -71,6 +70,11 @@ const Application = new Lang.Class({
return true; return true;
}, },
_setExtensionInsensitive: function(layout, cell, model, iter, data) {
let uuid = model.get_value(iter, 0);
cell.set_sensitive(this._extensionAvailable(uuid));
},
_getExtensionPrefsModule: function(extension) { _getExtensionPrefsModule: function(extension) {
let uuid = extension.metadata.uuid; let uuid = extension.metadata.uuid;
@@ -100,23 +104,21 @@ const Application = new Lang.Class({
widget = this._buildErrorUI(extension, e); widget = this._buildErrorUI(extension, e);
} }
let dialog = new Gtk.Dialog({ use_header_bar: true, // Destroy the current prefs widget, if it exists
modal: true, if (this._extensionPrefsBin.get_child())
title: extension.metadata.name }); this._extensionPrefsBin.get_child().destroy();
if (this._skipMainWindow) { this._extensionPrefsBin.add(widget);
this.application.add_window(dialog); this._extensionSelector.set_active_iter(this._extensionIters[uuid]);
if (this._window) },
this._window.destroy();
this._window = dialog;
this._window.window_position = Gtk.WindowPosition.CENTER;
} else {
dialog.transient_for = this._window;
}
dialog.set_default_size(600, 400); _extensionSelected: function() {
dialog.get_content_area().add(widget); let [success, iter] = this._extensionSelector.get_active_iter();
dialog.show(); if (!success)
return;
let uuid = this._model.get_value(iter, 0);
this._selectExtension(uuid);
}, },
_buildErrorUI: function(extension, exc) { _buildErrorUI: function(extension, exc) {
@@ -149,26 +151,48 @@ const Application = new Lang.Class({
_buildUI: function(app) { _buildUI: function(app) {
this._window = new Gtk.ApplicationWindow({ application: app, this._window = new Gtk.ApplicationWindow({ application: app,
window_position: Gtk.WindowPosition.CENTER }); window_position: Gtk.WindowPosition.CENTER,
title: _("GNOME Shell Extension Preferences") });
this._window.set_size_request(800, 500); this._window.set_size_request(600, 400);
this._titlebar = new Gtk.HeaderBar({ show_close_button: true, let vbox = new Gtk.Box({ orientation: Gtk.Orientation.VERTICAL });
title: _("GNOME Shell Extensions") }); this._window.add(vbox);
this._window.set_titlebar(this._titlebar);
let scroll = new Gtk.ScrolledWindow({ hscrollbar_policy: Gtk.PolicyType.NEVER, let toolbar = new Gtk.Toolbar();
shadow_type: Gtk.ShadowType.IN, toolbar.get_style_context().add_class(Gtk.STYLE_CLASS_PRIMARY_TOOLBAR);
halign: Gtk.Align.CENTER, vbox.add(toolbar);
margin: 18 }); let toolitem;
this._window.add(scroll);
this._extensionSelector = new Gtk.ListBox({ selection_mode: Gtk.SelectionMode.NONE }); let label = new Gtk.Label({ label: '<b>' + _("Extension") + '</b>',
this._extensionSelector.set_sort_func(Lang.bind(this, this._sortList)); use_markup: true });
this._extensionSelector.set_header_func(Lang.bind(this, this._updateHeader)); toolitem = new Gtk.ToolItem({ child: label });
toolbar.add(toolitem);
scroll.add(this._extensionSelector); this._extensionSelector = new Gtk.ComboBox({ model: this._model,
margin_left: 8,
hexpand: true });
this._extensionSelector.get_style_context().add_class(Gtk.STYLE_CLASS_RAISED);
let renderer = new Gtk.CellRendererText();
this._extensionSelector.pack_start(renderer, true);
this._extensionSelector.add_attribute(renderer, 'text', 1);
this._extensionSelector.set_cell_data_func(renderer, Lang.bind(this, this._setExtensionInsensitive));
this._extensionSelector.connect('changed', Lang.bind(this, this._extensionSelected));
toolitem = new Gtk.ToolItem({ child: this._extensionSelector });
toolitem.set_expand(true);
toolbar.add(toolitem);
this._extensionPrefsBin = new Gtk.Frame();
vbox.add(this._extensionPrefsBin);
let label = new Gtk.Label({
label: _("Select an extension to configure using the combobox above."),
vexpand: true
});
this._extensionPrefsBin.add(label);
this._shellProxy = new GnomeShellProxy(Gio.DBus.session, 'org.gnome.Shell', '/org/gnome/Shell'); this._shellProxy = new GnomeShellProxy(Gio.DBus.session, 'org.gnome.Shell', '/org/gnome/Shell');
this._shellProxy.connectSignal('ExtensionStatusChanged', Lang.bind(this, function(proxy, senderName, [uuid, state, error]) { this._shellProxy.connectSignal('ExtensionStatusChanged', Lang.bind(this, function(proxy, senderName, [uuid, state, error]) {
@@ -179,35 +203,6 @@ const Application = new Lang.Class({
this._window.show_all(); this._window.show_all();
}, },
_addCustomStyle: function() {
let provider = new Gtk.CssProvider();
try {
provider.load_from_data(customCss, -1);
} catch(e) {
log('Failed to add application style');
return;
}
let screen = this._window.window.get_screen();
let priority = Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION;
Gtk.StyleContext.add_provider_for_screen(screen, provider, priority);
},
_sortList: function(row1, row2) {
let name1 = ExtensionUtils.extensions[row1.uuid].metadata.name;
let name2 = ExtensionUtils.extensions[row2.uuid].metadata.name;
return name1.localeCompare(name2);
},
_updateHeader: function(row, before) {
if (!before || row.get_header())
return;
let sep = new Gtk.Separator({ orientation: Gtk.Orientation.HORIZONTAL });
row.set_header(sep);
},
_scanExtensions: function() { _scanExtensions: function() {
let finder = new ExtensionUtils.ExtensionFinder(); let finder = new ExtensionUtils.ExtensionFinder();
finder.connect('extension-found', Lang.bind(this, this._extensionFound)); finder.connect('extension-found', Lang.bind(this, this._extensionFound));
@@ -216,24 +211,15 @@ const Application = new Lang.Class({
}, },
_extensionFound: function(finder, extension) { _extensionFound: function(finder, extension) {
let row = new ExtensionRow(extension.uuid); let iter = this._model.append();
this._model.set(iter, [0, 1], [extension.uuid, extension.metadata.name]);
row.prefsButton.visible = this._extensionAvailable(row.uuid); this._extensionIters[extension.uuid] = iter;
row.prefsButton.connect('clicked', Lang.bind(this,
function() {
this._selectExtension(row.uuid);
}));
row.show_all();
this._extensionSelector.add(row);
}, },
_extensionsLoaded: function() { _extensionsLoaded: function() {
if (this._startupUuid && this._extensionAvailable(this._startupUuid)) if (this._startupUuid && this._extensionAvailable(this._startupUuid))
this._selectExtension(this._startupUuid); this._selectExtension(this._startupUuid);
this._startupUuid = null; this._startupUuid = null;
this._skipMainWindow = false;
this._loaded = true;
}, },
_onActivate: function() { _onActivate: function() {
@@ -241,125 +227,29 @@ const Application = new Lang.Class({
}, },
_onStartup: function(app) { _onStartup: function(app) {
this._buildModel();
this._buildUI(app); this._buildUI(app);
this._addCustomStyle();
this._scanExtensions(); this._scanExtensions();
}, },
_onCommandLine: function(app, commandLine) { _onCommandLine: function(app, commandLine) {
app.activate(); app.activate();
let args = commandLine.get_arguments(); let args = commandLine.get_arguments();
if (args.length) { if (args.length) {
let uuid = args[0]; let uuid = args[0];
this._skipMainWindow = true;
// Strip off "extension:///" prefix which fakes a URI, if it exists // Strip off "extension:///" prefix which fakes a URI, if it exists
uuid = stripPrefix(uuid, "extension:///"); uuid = stripPrefix(uuid, "extension:///");
if (this._extensionAvailable(uuid)) if (this._extensionAvailable(uuid))
this._selectExtension(uuid); this._selectExtension(uuid);
else if (!this._loaded)
this._startupUuid = uuid;
else else
this._skipMainWindow = false; this._startupUuid = uuid;
} }
return 0; return 0;
} }
}); });
const ExtensionRow = new Lang.Class({
Name: 'ExtensionRow',
Extends: Gtk.ListBoxRow,
_init: function(uuid) {
this.parent();
this.uuid = uuid;
this._settings = new Gio.Settings({ schema_id: 'org.gnome.shell' });
this._settings.connect('changed::enabled-extensions', Lang.bind(this,
function() {
this._switch.state = this._isEnabled();
}));
this._buildUI();
},
_buildUI: function() {
let extension = ExtensionUtils.extensions[this.uuid];
let hbox = new Gtk.Box({ orientation: Gtk.Orientation.HORIZONTAL,
hexpand: true, margin: 12, spacing: 6 });
this.add(hbox);
let vbox = new Gtk.Box({ orientation: Gtk.Orientation.VERTICAL,
spacing: 6, hexpand: true });
hbox.add(vbox);
let name = GLib.markup_escape_text(extension.metadata.name, -1);
let label = new Gtk.Label({ label: '<b>' + name + '</b>',
use_markup: true,
halign: Gtk.Align.START });
vbox.add(label);
let desc = extension.metadata.description.split('\n')[0];
label = new Gtk.Label({ label: desc,
ellipsize: Pango.EllipsizeMode.END,
halign: Gtk.Align.START });
vbox.add(label);
let button = new Gtk.Button({ valign: Gtk.Align.CENTER,
no_show_all: true });
button.add(new Gtk.Image({ icon_name: 'emblem-system-symbolic',
icon_size: Gtk.IconSize.BUTTON,
visible: true }));
button.get_style_context().add_class('prefs-button');
hbox.add(button);
this.prefsButton = button;
this._switch = new Gtk.Switch({ valign: Gtk.Align.CENTER,
state: this._isEnabled() });
this._switch.connect('notify::active', Lang.bind(this,
function() {
if (this._switch.active)
this._enable();
else
this._disable();
}));
this._switch.connect('state-set', function() { return true; });
hbox.add(this._switch);
},
_isEnabled: function() {
let extensions = this._settings.get_strv('enabled-extensions');
return extensions.indexOf(this.uuid) != -1;
},
_enable: function() {
let extensions = this._settings.get_strv('enabled-extensions');
if (extensions.indexOf(this.uuid) != -1)
return;
extensions.push(this.uuid);
this._settings.set_strv('enabled-extensions', extensions);
},
_disable: function() {
let extensions = this._settings.get_strv('enabled-extensions');
let pos = extensions.indexOf(this.uuid);
if (pos == -1)
return;
do {
extensions.splice(pos, 1);
pos = extensions.indexOf(this.uuid);
} while (pos != -1);
this._settings.set_strv('enabled-extensions', extensions);
}
});
function initEnvironment() { function initEnvironment() {
// Monkey-patch in a "global" object that fakes some Shell utilities // Monkey-patch in a "global" object that fakes some Shell utilities
// that ExtensionUtils depends on. // that ExtensionUtils depends on.

View File

@@ -48,6 +48,8 @@ const _SCROLL_ANIMATION_TIME = 0.5;
const _TIMED_LOGIN_IDLE_THRESHOLD = 5.0; const _TIMED_LOGIN_IDLE_THRESHOLD = 5.0;
const _LOGO_ICON_HEIGHT = 48; const _LOGO_ICON_HEIGHT = 48;
let _loginDialog = null;
const UserListItem = new Lang.Class({ const UserListItem = new Lang.Class({
Name: 'UserListItem', Name: 'UserListItem',
@@ -382,7 +384,7 @@ const LoginDialog = new Lang.Class({
Lang.bind(this, this._onTimedLoginRequested)); Lang.bind(this, this._onTimedLoginRequested));
} }
this._settings = new Gio.Settings({ schema_id: GdmUtil.LOGIN_SCREEN_SCHEMA }); this._settings = new Gio.Settings({ schema: GdmUtil.LOGIN_SCREEN_SCHEMA });
this._settings.connect('changed::' + GdmUtil.BANNER_MESSAGE_KEY, this._settings.connect('changed::' + GdmUtil.BANNER_MESSAGE_KEY,
Lang.bind(this, this._updateBanner)); Lang.bind(this, this._updateBanner));
@@ -481,7 +483,7 @@ const LoginDialog = new Lang.Class({
}, },
_ensureUserListLoaded: function() { _ensureUserListLoaded: function() {
if (!this._userManager.is_loaded) { if (!this._userManager.is_loaded)
this._userManagerLoadedId = this._userManager.connect('notify::is-loaded', this._userManagerLoadedId = this._userManager.connect('notify::is-loaded',
Lang.bind(this, function() { Lang.bind(this, function() {
if (this._userManager.is_loaded) { if (this._userManager.is_loaded) {
@@ -490,10 +492,8 @@ const LoginDialog = new Lang.Class({
this._userManagerLoadedId = 0; this._userManagerLoadedId = 0;
} }
})); }));
} else { else
let id = GLib.idle_add(GLib.PRIORITY_DEFAULT, Lang.bind(this, this._loadUserList)); GLib.idle_add(GLib.PRIORITY_DEFAULT, Lang.bind(this, this._loadUserList));
GLib.Source.set_name_by_id(id, '[gnome-shell] _loadUserList');
}
}, },
_updateDisableUserList: function() { _updateDisableUserList: function() {
@@ -686,11 +686,10 @@ const LoginDialog = new Lang.Class({
}, },
onUpdateScope: this, onUpdateScope: this,
onComplete: function() { onComplete: function() {
let id = Mainloop.idle_add(Lang.bind(this, function() { Mainloop.idle_add(Lang.bind(this, function() {
this._greeter.call_start_session_when_ready_sync(serviceName, true, null); this._greeter.call_start_session_when_ready_sync(serviceName, true, null);
return GLib.SOURCE_REMOVE; return GLib.SOURCE_REMOVE;
})); }));
GLib.Source.set_name_by_id(id, '[gnome-shell] this._greeter.call_start_session_when_ready_sync');
}, },
onCompleteScope: this }); onCompleteScope: this });
}, },
@@ -746,7 +745,6 @@ const LoginDialog = new Lang.Class({
hold.release(); hold.release();
return GLib.SOURCE_REMOVE; return GLib.SOURCE_REMOVE;
}); });
GLib.Source.set_name_by_id(this._timedLoginIdleTimeOutId, '[gnome-shell] this._timedLoginAnimationTime');
return hold; return hold;
}, },

View File

@@ -128,7 +128,7 @@ const ShellUserVerifier = new Lang.Class({
this._client = client; this._client = client;
this._settings = new Gio.Settings({ schema_id: LOGIN_SCREEN_SCHEMA }); this._settings = new Gio.Settings({ schema: LOGIN_SCREEN_SCHEMA });
this._settings.connect('changed', this._settings.connect('changed',
Lang.bind(this, this._updateDefaultService)); Lang.bind(this, this._updateDefaultService));
this._updateDefaultService(); this._updateDefaultService();
@@ -252,7 +252,6 @@ const ShellUserVerifier = new Lang.Class({
this._queueMessageTimeout(); this._queueMessageTimeout();
return GLib.SOURCE_REMOVE; return GLib.SOURCE_REMOVE;
})); }));
GLib.Source.set_name_by_id(this._messageQueueTimeoutId, '[gnome-shell] this._queueMessageTimeout');
}, },
_queueMessage: function(message, messageType) { _queueMessage: function(message, messageType) {

View File

@@ -26,13 +26,10 @@
<file>perf/core.js</file> <file>perf/core.js</file>
<file>portalHelper/main.js</file>
<file>ui/altTab.js</file> <file>ui/altTab.js</file>
<file>ui/animation.js</file> <file>ui/animation.js</file>
<file>ui/appDisplay.js</file> <file>ui/appDisplay.js</file>
<file>ui/appFavorites.js</file> <file>ui/appFavorites.js</file>
<file>ui/appSwitchAction.js</file>
<file>ui/backgroundMenu.js</file> <file>ui/backgroundMenu.js</file>
<file>ui/background.js</file> <file>ui/background.js</file>
<file>ui/boxpointer.js</file> <file>ui/boxpointer.js</file>
@@ -42,7 +39,6 @@
<file>ui/dash.js</file> <file>ui/dash.js</file>
<file>ui/dateMenu.js</file> <file>ui/dateMenu.js</file>
<file>ui/dnd.js</file> <file>ui/dnd.js</file>
<file>ui/edgeDragAction.js</file>
<file>ui/endSessionDialog.js</file> <file>ui/endSessionDialog.js</file>
<file>ui/environment.js</file> <file>ui/environment.js</file>
<file>ui/extensionDownloader.js</file> <file>ui/extensionDownloader.js</file>
@@ -81,7 +77,6 @@
<file>ui/shellDBus.js</file> <file>ui/shellDBus.js</file>
<file>ui/shellEntry.js</file> <file>ui/shellEntry.js</file>
<file>ui/shellMountOperation.js</file> <file>ui/shellMountOperation.js</file>
<file>ui/showOverviewAction.js</file>
<file>ui/slider.js</file> <file>ui/slider.js</file>
<file>ui/switcherPopup.js</file> <file>ui/switcherPopup.js</file>
<file>ui/tweener.js</file> <file>ui/tweener.js</file>
@@ -89,10 +84,8 @@
<file>ui/userWidget.js</file> <file>ui/userWidget.js</file>
<file>ui/viewSelector.js</file> <file>ui/viewSelector.js</file>
<file>ui/windowAttentionHandler.js</file> <file>ui/windowAttentionHandler.js</file>
<file>ui/windowMenu.js</file>
<file>ui/windowManager.js</file> <file>ui/windowManager.js</file>
<file>ui/workspace.js</file> <file>ui/workspace.js</file>
<file>ui/workspaceSwitchAction.js</file>
<file>ui/workspaceSwitcherPopup.js</file> <file>ui/workspaceSwitcherPopup.js</file>
<file>ui/workspaceThumbnail.js</file> <file>ui/workspaceThumbnail.js</file>
<file>ui/workspacesView.js</file> <file>ui/workspacesView.js</file>

View File

@@ -46,6 +46,32 @@ const SystemdLoginSessionIface = '<node> \
const SystemdLoginManager = Gio.DBusProxy.makeProxyWrapper(SystemdLoginManagerIface); const SystemdLoginManager = Gio.DBusProxy.makeProxyWrapper(SystemdLoginManagerIface);
const SystemdLoginSession = Gio.DBusProxy.makeProxyWrapper(SystemdLoginSessionIface); const SystemdLoginSession = Gio.DBusProxy.makeProxyWrapper(SystemdLoginSessionIface);
const ConsoleKitManagerIface = '<node> \
<interface name="org.freedesktop.ConsoleKit.Manager"> \
<method name="CanRestart"> \
<arg type="b" direction="out"/> \
</method> \
<method name="CanStop"> \
<arg type="b" direction="out"/> \
</method> \
<method name="Restart" /> \
<method name="Stop" /> \
<method name="GetCurrentSession"> \
<arg type="o" direction="out" /> \
</method> \
</interface> \
</node>';
const ConsoleKitSessionIface = '<node> \
<interface name="org.freedesktop.ConsoleKit.Session"> \
<signal name="Lock" /> \
<signal name="Unlock" /> \
</interface> \
</node>';
const ConsoleKitSession = Gio.DBusProxy.makeProxyWrapper(ConsoleKitSessionIface);
const ConsoleKitManager = Gio.DBusProxy.makeProxyWrapper(ConsoleKitManagerIface);
function haveSystemd() { function haveSystemd() {
return GLib.access("/run/systemd/seats", 0) >= 0; return GLib.access("/run/systemd/seats", 0) >= 0;
} }
@@ -75,7 +101,7 @@ function canLock() {
-1, null); -1, null);
let version = result.deep_unpack()[0].deep_unpack(); let version = result.deep_unpack()[0].deep_unpack();
return haveSystemd() && versionCompare('3.5.91', version); return versionCompare('3.5.91', version);
} catch(e) { } catch(e) {
return false; return false;
} }
@@ -93,7 +119,7 @@ function getLoginManager() {
if (haveSystemd()) if (haveSystemd())
_loginManager = new LoginManagerSystemd(); _loginManager = new LoginManagerSystemd();
else else
_loginManager = new LoginManagerDummy(); _loginManager = new LoginManagerConsoleKit();
} }
return _loginManager; return _loginManager;
@@ -110,6 +136,9 @@ const LoginManagerSystemd = new Lang.Class({
Lang.bind(this, this._prepareForSleep)); Lang.bind(this, this._prepareForSleep));
}, },
// Having this function is a bit of a hack since the Systemd and ConsoleKit
// session objects have different interfaces - but in both cases there are
// Lock/Unlock signals, and that's all we count upon at the moment.
getCurrentSessionProxy: function(callback) { getCurrentSessionProxy: function(callback) {
if (this._currentSession) { if (this._currentSession) {
callback (this._currentSession); callback (this._currentSession);
@@ -162,7 +191,7 @@ const LoginManagerSystemd = new Lang.Class({
let fd = -1; let fd = -1;
try { try {
let [outVariant, fdList] = proxy.call_with_unix_fd_list_finish(result); let [outVariant, fdList] = proxy.call_with_unix_fd_list_finish(result);
fd = fdList.steal_fds()[0]; fd = fdList.steal_fds(outVariant.deep_unpack())[0];
callback(new Gio.UnixInputStream({ fd: fd })); callback(new Gio.UnixInputStream({ fd: fd }));
} catch(e) { } catch(e) {
logError(e, "Error getting systemd inhibitor"); logError(e, "Error getting systemd inhibitor");
@@ -177,13 +206,35 @@ const LoginManagerSystemd = new Lang.Class({
}); });
Signals.addSignalMethods(LoginManagerSystemd.prototype); Signals.addSignalMethods(LoginManagerSystemd.prototype);
const LoginManagerDummy = new Lang.Class({ const LoginManagerConsoleKit = new Lang.Class({
Name: 'LoginManagerDummy', Name: 'LoginManagerConsoleKit',
_init: function() {
this._proxy = new ConsoleKitManager(Gio.DBus.system,
'org.freedesktop.ConsoleKit',
'/org/freedesktop/ConsoleKit/Manager');
},
// Having this function is a bit of a hack since the Systemd and ConsoleKit
// session objects have different interfaces - but in both cases there are
// Lock/Unlock signals, and that's all we count upon at the moment.
getCurrentSessionProxy: function(callback) { getCurrentSessionProxy: function(callback) {
// we could return a DummySession object that fakes whatever callers if (this._currentSession) {
// expect (at the time of writing: connect() and connectSignal() callback (this._currentSession);
// methods), but just never calling the callback should be safer return;
}
this._proxy.GetCurrentSessionRemote(Lang.bind(this,
function(result, error) {
if (error) {
logError(error, 'Could not get a proxy for the current session');
} else {
this._currentSession = new ConsoleKitSession(Gio.DBus.system,
'org.freedesktop.ConsoleKit',
result[0]);
callback(this._currentSession);
}
}));
}, },
canSuspend: function(asyncCallback) { canSuspend: function(asyncCallback) {
@@ -203,4 +254,4 @@ const LoginManagerDummy = new Lang.Class({
callback(null); callback(null);
} }
}); });
Signals.addSignalMethods(LoginManagerDummy.prototype); Signals.addSignalMethods(LoginManagerConsoleKit.prototype);

View File

@@ -129,7 +129,7 @@ function trySpawn(argv)
// Dummy child watch; we don't want to double-fork internally // Dummy child watch; we don't want to double-fork internally
// because then we lose the parent-child relationship, which // because then we lose the parent-child relationship, which
// can break polkit. See https://bugzilla.redhat.com//show_bug.cgi?id=819275 // can break polkit. See https://bugzilla.redhat.com//show_bug.cgi?id=819275
GLib.child_watch_add(GLib.PRIORITY_DEFAULT, pid, function () {}); GLib.child_watch_add(GLib.PRIORITY_DEFAULT, pid, function () {}, null);
} }
// trySpawnCommandLine: // trySpawnCommandLine:

View File

@@ -1,248 +0,0 @@
const Format = imports.format;
const Gettext = imports.gettext;
const GLib = imports.gi.GLib;
const GObject = imports.gi.GObject;
const Gio = imports.gi.Gio;
const Gtk = imports.gi.Gtk;
const Lang = imports.lang;
const Pango = imports.gi.Pango;
const Soup = imports.gi.Soup;
const WebKit = imports.gi.WebKit2;
const _ = Gettext.gettext;
const Config = imports.misc.config;
const PortalHelperResult = {
CANCELLED: 0,
COMPLETED: 1,
RECHECK: 2
};
const INACTIVITY_TIMEOUT = 30000; //ms
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 PortalWindow = new Lang.Class({
Name: 'PortalWindow',
Extends: Gtk.ApplicationWindow,
_init: function(application, url, timestamp, doneCallback) {
this.parent({ application: application });
if (url) {
this._uri = new Soup.URI(uri);
} else {
url = 'http://www.gnome.org';
this._uri = null;
this._everSeenRedirect = false;
}
this._originalUrl = url;
this._doneCallback = doneCallback;
this._lastRecheck = 0;
this._recheckAtExit = false;
this._webView = new WebKit.WebView();
this._webView.connect('decide-policy', Lang.bind(this, this._onDecidePolicy));
this._webView.load_uri(url);
this._webView.connect('notify::title', Lang.bind(this, this._syncTitle));
this._syncTitle();
this.add(this._webView);
this._webView.show();
this.maximize();
this.present_with_time(timestamp);
},
_syncTitle: function() {
let title = this._webView.title;
if (title) {
this.title = title;
} else {
// TRANSLATORS: this is the title of the wifi captive portal login
// window, until we know the title of the actual login page
this.title = _("Web Authentication Redirect");
}
},
refresh: function() {
this._everSeenRedirect = false;
this._webView.load_uri(this._originalUrl);
},
vfunc_delete_event: function(event) {
if (this._recheckAtExit)
this._doneCallback(PortalHelperResult.RECHECK);
else
this._doneCallback(PortalHelperResult.CANCELLED);
return false;
},
_onDecidePolicy: function(view, decision, type) {
if (type == WebKit.PolicyDecisionType.NEW_WINDOW_ACTION) {
decision.ignore();
return true;
}
if (type != WebKit.PolicyDecisionType.NAVIGATION_ACTION)
return false;
let request = decision.get_request();
let uri = new Soup.URI(request.get_uri());
if (this._uri != null) {
if (!uri.host_equal(uri, this._uri)) {
// We *may* have finished here, but we don't know for
// sure. Tell gnome-shell to run another connectivity check
// (but ratelimit the checks, we don't want to spam
// gnome.org for portals that have 10 or more internal
// redirects - and unfortunately they exist)
// If we hit the rate limit, we also queue a recheck
// when the window is closed, just in case we miss the
// final check and don't realize we're connected
// This should not be a problem in the cancelled logic,
// because if the user doesn't want to start the login,
// we should not see any redirect at all, outside this._uri
let now = GLib.get_monotonic_time();
let shouldRecheck = (now - this._lastRecheck) >
CONNECTIVITY_RECHECK_RATELIMIT_TIMEOUT;
if (shouldRecheck) {
this._lastRecheck = now;
this._recheckAtExit = false;
this._doneCallback(PortalHelperResult.RECHECK);
} else {
this._recheckAtExit = true;
}
}
// Update the URI, in case of chained redirects, so we still
// think we're doing the login until gnome-shell kills us
this._uri = uri;
} else {
if (uri.get_host() == 'www.gnome.org' && this._everSeenRedirect) {
// Yay, we got to gnome!
decision.ignore();
this._doneCallback(PortalHelperResult.COMPLETED);
return true;
} else if (uri.get_host() != 'www.gnome.org') {
this._everSeenRedirect = true;
}
}
decision.use();
return true;
},
});
const WebPortalHelper = new Lang.Class({
Name: 'WebPortalHelper',
Extends: Gtk.Application,
_init: function() {
this.parent({ application_id: 'org.gnome.Shell.PortalHelper',
flags: Gio.ApplicationFlags.IS_SERVICE,
inactivity_timeout: 30000 });
this._dbusImpl = Gio.DBusExportedObject.wrapJSObject(HelperDBusInterface, this);
this._queue = [];
},
vfunc_dbus_register: function(connection, path) {
this._dbusImpl.export(connection, path);
this.parent(connection, path);
return true;
},
vfunc_dbus_unregister: function(connection, path) {
this._dbusImpl.unexport_from_connection(connection);
this.parent(connection, path);
},
vfunc_activate: function() {
// If launched manually (for example for testing), force a dummy authentication
// session with the default url
this.Authenticate('/org/gnome/dummy', '', 0);
},
Authenticate: function(connection, url, timestamp) {
this._queue.push({ connection: connection, url: url, timestamp: timestamp });
this._processQueue();
},
Close: function(connection) {
for (let i = 0; i < this._queue.length; i++) {
let obj = this._queue[i];
if (obj.connection == connection) {
if (obj.window)
obj.window.destroy();
this._queue.splice(i, 1);
break;
}
}
this._processQueue();
},
Refresh: function(connection) {
for (let i = 0; i < this._queue.length; i++) {
let obj = this._queue[i];
if (obj.connection == connection) {
if (obj.window)
obj.window.refresh();
break;
}
}
},
_processQueue: function() {
if (this._queue.length == 0)
return;
let top = this._queue[0];
if (top.window != null)
return;
top.window = new PortalWindow(this, top.uri, top.timestamp, Lang.bind(this, function(result) {
this._dbusImpl.emit_signal('Done', new GLib.Variant('(ou)', [top.connection, result]));
}));
},
});
function initEnvironment() {
String.prototype.format = Format.format;
}
function main(argv) {
initEnvironment();
Gettext.bindtextdomain(Config.GETTEXT_PACKAGE, Config.LOCALEDIR);
Gettext.textdomain(Config.GETTEXT_PACKAGE);
let app = new WebPortalHelper();
return app.run(argv);
}

View File

@@ -167,8 +167,6 @@ const AppSwitcherPopup = new Lang.Class({
this._select(this._selectedIndex, this._nextWindow()); this._select(this._selectedIndex, this._nextWindow());
else if (keysym == Clutter.Up) else if (keysym == Clutter.Up)
this._select(this._selectedIndex, null, true); this._select(this._selectedIndex, null, true);
else
return Clutter.EVENT_PROPAGATE;
} else { } else {
if (keysym == Clutter.Left) if (keysym == Clutter.Left)
this._select(this._previous()); this._select(this._previous());
@@ -176,11 +174,7 @@ const AppSwitcherPopup = new Lang.Class({
this._select(this._next()); this._select(this._next());
else if (keysym == Clutter.Down) else if (keysym == Clutter.Down)
this._select(this._selectedIndex, 0); this._select(this._selectedIndex, 0);
else
return Clutter.EVENT_PROPAGATE;
} }
return Clutter.EVENT_STOP;
}, },
_scrollHandler: function(direction) { _scrollHandler: function(direction) {
@@ -311,7 +305,6 @@ const AppSwitcherPopup = new Lang.Class({
this._thumbnailTimeoutId = Mainloop.timeout_add ( this._thumbnailTimeoutId = Mainloop.timeout_add (
THUMBNAIL_POPUP_TIME, THUMBNAIL_POPUP_TIME,
Lang.bind(this, this._timeoutPopupThumbnails)); Lang.bind(this, this._timeoutPopupThumbnails));
GLib.Source.set_name_by_id(this._thumbnailTimeoutId, '[gnome-shell] this._timeoutPopupThumbnails');
} }
}, },
@@ -367,12 +360,12 @@ const WindowSwitcherPopup = new Lang.Class({
_init: function(items) { _init: function(items) {
this.parent(items); this.parent(items);
this._settings = new Gio.Settings({ schema_id: 'org.gnome.shell.window-switcher' }); this._settings = new Gio.Settings({ schema: 'org.gnome.shell.window-switcher' });
}, },
_getWindowList: function() { _getWindowList: function() {
let workspace = this._settings.get_boolean('current-workspace-only') ? global.screen.get_active_workspace() : null; let workspace = this._settings.get_boolean('current-workspace-only') ? global.screen.get_active_workspace() : null;
return global.display.get_tab_list(Meta.TabList.NORMAL, workspace); return global.display.get_tab_list(Meta.TabList.NORMAL, global.screen, workspace);
}, },
_createSwitcher: function() { _createSwitcher: function() {
@@ -410,11 +403,7 @@ const WindowSwitcherPopup = new Lang.Class({
this._select(this._previous()); this._select(this._previous());
else if (keysym == Clutter.Right) else if (keysym == Clutter.Right)
this._select(this._next()); this._select(this._next());
else
return Clutter.EVENT_PROPAGATE;
} }
return Clutter.EVENT_STOP;
}, },
_finish: function() { _finish: function() {
@@ -456,10 +445,11 @@ const AppSwitcher = new Lang.Class({
this._arrows = []; this._arrows = [];
let windowTracker = Shell.WindowTracker.get_default(); let windowTracker = Shell.WindowTracker.get_default();
let settings = new Gio.Settings({ schema_id: 'org.gnome.shell.app-switcher' }); let settings = new Gio.Settings({ schema: 'org.gnome.shell.app-switcher' });
let workspace = settings.get_boolean('current-workspace-only') ? global.screen.get_active_workspace() let workspace = settings.get_boolean('current-workspace-only') ? global.screen.get_active_workspace()
: null; : null;
let allWindows = global.display.get_tab_list(Meta.TabList.NORMAL, workspace); let allWindows = global.display.get_tab_list(Meta.TabList.NORMAL,
global.screen, workspace);
// Construct the AppIcons, add to the popup // Construct the AppIcons, add to the popup
for (let i = 0; i < apps.length; i++) { for (let i = 0; i < apps.length; i++) {
@@ -566,7 +556,6 @@ const AppSwitcher = new Lang.Class({
this._mouseTimeOutId = 0; this._mouseTimeOutId = 0;
return GLib.SOURCE_REMOVE; return GLib.SOURCE_REMOVE;
})); }));
GLib.Source.set_name_by_id(this._mouseTimeOutId, '[gnome-shell] this._enterItem');
} else } else
this._itemEntered(index); this._itemEntered(index);
}, },

View File

@@ -34,7 +34,6 @@ const Animation = new Lang.Class({
this._showFrame(0); this._showFrame(0);
this._timeoutId = Mainloop.timeout_add(this._speed, Lang.bind(this, this._update)); this._timeoutId = Mainloop.timeout_add(this._speed, Lang.bind(this, this._update));
GLib.Source.set_name_by_id(this._timeoutId, '[gnome-shell] this._update');
} }
this._isPlaying = true; this._isPlaying = true;

View File

@@ -16,7 +16,6 @@ const Atk = imports.gi.Atk;
const AppFavorites = imports.ui.appFavorites; const AppFavorites = imports.ui.appFavorites;
const BoxPointer = imports.ui.boxpointer; const BoxPointer = imports.ui.boxpointer;
const DND = imports.ui.dnd; const DND = imports.ui.dnd;
const GrabHelper = imports.ui.grabHelper;
const IconGrid = imports.ui.iconGrid; const IconGrid = imports.ui.iconGrid;
const Main = imports.ui.main; const Main = imports.ui.main;
const Overview = imports.ui.overview; const Overview = imports.ui.overview;
@@ -42,7 +41,9 @@ const MIN_FREQUENT_APPS_COUNT = 3;
const INDICATORS_BASE_TIME = 0.25; const INDICATORS_BASE_TIME = 0.25;
const INDICATORS_ANIMATION_DELAY = 0.125; const INDICATORS_ANIMATION_DELAY = 0.125;
const INDICATORS_ANIMATION_MAX_TIME = 0.75; const INDICATORS_ANIMATION_MAX_TIME = 0.75;
// Fraction of page height the finger or mouse must reach
// to change page
const PAGE_SWITCH_TRESHOLD = 0.2;
const PAGE_SWITCH_TIME = 0.3; const PAGE_SWITCH_TIME = 0.3;
const VIEWS_SWITCH_TIME = 0.4; const VIEWS_SWITCH_TIME = 0.4;
@@ -80,10 +81,6 @@ function _getFolderName(folder) {
return name; return name;
} }
function clamp(value, min, max) {
return Math.max(min, Math.min(max, value));
}
const BaseAppView = new Lang.Class({ const BaseAppView = new Lang.Class({
Name: 'BaseAppView', Name: 'BaseAppView',
Abstract: true, Abstract: true,
@@ -371,7 +368,7 @@ const AllView = new Lang.Class({
Shell.AppSystem.get_default().connect('installed-changed', Lang.bind(this, function() { Shell.AppSystem.get_default().connect('installed-changed', Lang.bind(this, function() {
Main.queueDeferredWork(this._redisplayWorkId); Main.queueDeferredWork(this._redisplayWorkId);
})); }));
this._folderSettings = new Gio.Settings({ schema_id: 'org.gnome.desktop.app-folders' }); this._folderSettings = new Gio.Settings({ schema: 'org.gnome.desktop.app-folders' });
this._folderSettings.connect('changed::folder-children', Lang.bind(this, function() { this._folderSettings.connect('changed::folder-children', Lang.bind(this, function() {
Main.queueDeferredWork(this._redisplayWorkId); Main.queueDeferredWork(this._redisplayWorkId);
})); }));
@@ -442,8 +439,8 @@ const AllView = new Lang.Class({
}, },
goToPage: function(pageNumber) { goToPage: function(pageNumber) {
pageNumber = clamp(pageNumber, 0, this._grid.nPages() - 1); if(pageNumber < 0 || pageNumber > this._grid.nPages() - 1)
return;
if (this._currentPage == pageNumber && this._displayingPopup && this._currentPopup) if (this._currentPage == pageNumber && this._displayingPopup && this._currentPopup)
return; return;
if (this._displayingPopup && this._currentPopup) if (this._displayingPopup && this._currentPopup)
@@ -475,12 +472,14 @@ const AllView = new Lang.Class({
// longer than PAGE_SWITCH_TIME // longer than PAGE_SWITCH_TIME
time = Math.min(time, PAGE_SWITCH_TIME); time = Math.min(time, PAGE_SWITCH_TIME);
this._currentPage = pageNumber; if (pageNumber < this._grid.nPages() && pageNumber >= 0) {
Tweener.addTween(this._adjustment, this._currentPage = pageNumber;
{ value: this._grid.getPageY(this._currentPage), Tweener.addTween(this._adjustment,
time: time, { value: this._grid.getPageY(this._currentPage),
transition: 'easeOutQuad' }); time: time,
this._pageIndicators.setCurrentPage(pageNumber); transition: 'easeOutQuad' });
this._pageIndicators.setCurrentPage(pageNumber);
}
}, },
_diffToPage: function (pageNumber) { _diffToPage: function (pageNumber) {
@@ -527,19 +526,15 @@ const AllView = new Lang.Class({
_onPanEnd: function(action) { _onPanEnd: function(action) {
if (this._displayingPopup) if (this._displayingPopup)
return; return;
let diffCurrentPage = this._diffToPage(this._currentPage);
let pageHeight = this._grid.getPageHeight(); if (diffCurrentPage > this._scrollView.height * PAGE_SWITCH_TRESHOLD) {
if (action.get_velocity(0)[2] > 0)
// Calculate the scroll value we'd be at, which is our current this.goToPage(this._currentPage - 1);
// scroll plus any velocity the user had when they released else
// their finger. this.goToPage(this._currentPage + 1);
} else {
let velocity = -action.get_velocity(0)[2]; this.goToPage(this._currentPage);
let endPanValue = this._adjustment.value + velocity; }
let closestPage = Math.round(endPanValue / pageHeight);
this.goToPage(closestPage);
this._panning = false; this._panning = false;
}, },
@@ -741,7 +736,7 @@ const AppDisplay = new Lang.Class({
Name: 'AppDisplay', Name: 'AppDisplay',
_init: function() { _init: function() {
this._privacySettings = new Gio.Settings({ schema_id: 'org.gnome.desktop.privacy' }); this._privacySettings = new Gio.Settings({ schema: 'org.gnome.desktop.privacy' });
this._privacySettings.connect('changed::remember-app-usage', this._privacySettings.connect('changed::remember-app-usage',
Lang.bind(this, this._updateFrequentVisibility)); Lang.bind(this, this._updateFrequentVisibility));
@@ -769,7 +764,7 @@ const AppDisplay = new Lang.Class({
this._viewStack = new St.Widget({ x_expand: true, y_expand: true, this._viewStack = new St.Widget({ x_expand: true, y_expand: true,
layout_manager: this._viewStackLayout }); layout_manager: this._viewStackLayout });
this._viewStackLayout.connect('allocated-size-changed', Lang.bind(this, this._onAllocatedSizeChanged)); this._viewStackLayout.connect('allocated-size-changed', Lang.bind(this, this._onAllocatedSizeChanged));
this.actor.add_actor(this._viewStack); this.actor.add_actor(this._viewStack, { expand: true });
let layout = new ControlsBoxLayout({ homogeneous: true }); let layout = new ControlsBoxLayout({ homogeneous: true });
this._controls = new St.Widget({ style_class: 'app-view-controls', this._controls = new St.Widget({ style_class: 'app-view-controls',
layout_manager: layout }); layout_manager: layout });
@@ -953,7 +948,6 @@ const FolderView = new Lang.Class({
let subSize = Math.floor(FOLDER_SUBICON_FRACTION * size); let subSize = Math.floor(FOLDER_SUBICON_FRACTION * size);
let numItems = this._allItems.length; let numItems = this._allItems.length;
let rtl = icon.get_text_direction() == Clutter.TextDirection.RTL;
for (let i = 0; i < 4; i++) { for (let i = 0; i < 4; i++) {
let bin; let bin;
if (i < numItems) { if (i < numItems) {
@@ -962,7 +956,7 @@ const FolderView = new Lang.Class({
} else { } else {
bin = new St.Bin({ width: subSize, height: subSize }); bin = new St.Bin({ width: subSize, height: subSize });
} }
layout.pack(bin, rtl ? (i + 1) % 2 : i % 2, Math.floor(i / 2)); layout.pack(bin, i % 2, Math.floor(i / 2));
} }
return icon; return icon;
@@ -1251,8 +1245,18 @@ const AppFolderPopup = new Lang.Class({
function() { function() {
this.actor.destroy(); this.actor.destroy();
})); }));
this._grabHelper = new GrabHelper.GrabHelper(this.actor); this.actor.connect('key-press-event', Lang.bind(this, this._onKeyPress));
this._grabHelper.addActor(Main.layoutManager.overviewGroup); },
_onKeyPress: function(actor, event) {
if (!this._isOpen)
return Clutter.EVENT_PROPAGATE;
if (event.get_key_symbol() != Clutter.KEY_Escape)
return Clutter.EVENT_PROPAGATE;
this.popdown();
return Clutter.EVENT_STOP;
}, },
toggle: function() { toggle: function() {
@@ -1266,12 +1270,6 @@ const AppFolderPopup = new Lang.Class({
if (this._isOpen) if (this._isOpen)
return; return;
this._isOpen = this._grabHelper.grab({ actor: this.actor,
onUngrab: Lang.bind(this, this.popdown) });
if (!this._isOpen)
return;
this.actor.show(); this.actor.show();
this._boxPointer.setArrowActor(this._source.actor); this._boxPointer.setArrowActor(this._source.actor);
@@ -1280,6 +1278,7 @@ const AppFolderPopup = new Lang.Class({
this.actor.navigate_focus(null, Gtk.DirectionType.TAB_FORWARD, false); this.actor.navigate_focus(null, Gtk.DirectionType.TAB_FORWARD, false);
this._isOpen = true;
this.emit('open-state-changed', true); this.emit('open-state-changed', true);
}, },
@@ -1287,8 +1286,6 @@ const AppFolderPopup = new Lang.Class({
if (!this._isOpen) if (!this._isOpen)
return; return;
this._grabHelper.ungrab({ actor: this.actor });
this._boxPointer.hide(BoxPointer.PopupAnimation.FADE | this._boxPointer.hide(BoxPointer.PopupAnimation.FADE |
BoxPointer.PopupAnimation.SLIDE); BoxPointer.PopupAnimation.SLIDE);
this._isOpen = false; this._isOpen = false;
@@ -1405,7 +1402,6 @@ const AppIcon = new Lang.Class({
this.popupMenu(); this.popupMenu();
return GLib.SOURCE_REMOVE; return GLib.SOURCE_REMOVE;
})); }));
GLib.Source.set_name_by_id(this._menuTimeoutId, '[gnome-shell] this.popupMenu');
} else if (button == 3) { } else if (button == 3) {
this.popupMenu(); this.popupMenu();
return Clutter.EVENT_STOP; return Clutter.EVENT_STOP;
@@ -1601,26 +1597,6 @@ const AppIconMenu = new Lang.Class({
favs.addFavorite(this._source.app.get_id()); favs.addFavorite(this._source.app.get_id());
})); }));
} }
if (Shell.AppSystem.get_default().lookup_app('org.gnome.Software.desktop')) {
this._appendSeparator();
let item = this._appendMenuItem(_("Show Details"));
item.connect('activate', Lang.bind(this, function() {
let id = this._source.app.get_id();
let args = GLib.Variant.new('(ss)', [id, '']);
Gio.DBus.get(Gio.BusType.SESSION, null,
function(o, res) {
let bus = Gio.DBus.get_finish(res);
bus.call('org.gnome.Software',
'/org/gnome/Software',
'org.gtk.Actions', 'Activate',
GLib.Variant.new('(sava{sv})',
['details', [args], null]),
null, 0, -1, null, null);
Main.overview.hide();
});
}));
}
} }
}, },

View File

@@ -1,64 +0,0 @@
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
const Lang = imports.lang;
const Signals = imports.signals;
const Clutter = imports.gi.Clutter;
//in milliseconds
let LONG_PRESS_TIMEOUT = 250;
let MOTION_THRESHOLD = 30;
const AppSwitchAction = new Lang.Class({
Name: 'AppSwitchAction',
Extends: Clutter.GestureAction,
_init : function() {
this.parent();
this.set_n_touch_points (3);
global.display.connect('grab-op-begin', Lang.bind(this, this.cancel));
global.display.connect('grab-op-end', Lang.bind(this, this.cancel));
},
vfunc_gesture_prepare : function(action, actor) {
return this.get_n_current_points() <= 4;
},
vfunc_gesture_begin : function(action, actor) {
let nPoints = this.get_n_current_points();
let event = this.get_last_event (nPoints - 1);
if (nPoints == 3)
this._longPressStartTime = event.get_time();
else if (nPoints == 4) {
// Check whether the 4th finger press happens after a 3-finger long press,
// this only needs to be checked on the first 4th finger press
if (this._longPressStartTime != null &&
event.get_time() < this._longPressStartTime + LONG_PRESS_TIMEOUT)
this.cancel();
else {
this._longPressStartTime = null;
this.emit('activated');
}
}
return this.get_n_current_points() <= 4;
},
vfunc_gesture_progress : function(action, actor) {
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);
if (Math.abs(x - startX) > MOTION_THRESHOLD ||
Math.abs(y - startY) > MOTION_THRESHOLD)
return false;
}
}
return true;
}
});
Signals.addSignalMethods(AppSwitchAction.prototype);

View File

@@ -271,11 +271,10 @@ const BackgroundCache = new Lang.Class({
if (this._animationFilename == params.filename) { if (this._animationFilename == params.filename) {
if (params.onLoaded) { if (params.onLoaded) {
let id = GLib.idle_add(GLib.PRIORITY_DEFAULT, Lang.bind(this, function() { GLib.idle_add(GLib.PRIORITY_DEFAULT, Lang.bind(this, function() {
params.onLoaded(this._animation); params.onLoaded(this._animation);
return GLib.SOURCE_REMOVE; return GLib.SOURCE_REMOVE;
})); }));
GLib.Source.set_name_by_id(id, '[gnome-shell] params.onLoaded');
} }
} }
@@ -287,11 +286,10 @@ const BackgroundCache = new Lang.Class({
this._animation = animation; this._animation = animation;
if (params.onLoaded) { if (params.onLoaded) {
let id = GLib.idle_add(GLib.PRIORITY_DEFAULT, Lang.bind(this, function() { GLib.idle_add(GLib.PRIORITY_DEFAULT, Lang.bind(this, function() {
params.onLoaded(this._animation); params.onLoaded(this._animation);
return GLib.SOURCE_REMOVE; return GLib.SOURCE_REMOVE;
})); }));
GLib.Source.set_name_by_id(id, '[gnome-shell] params.onLoaded');
} }
})); }));
} }
@@ -388,11 +386,10 @@ const Background = new Lang.Class({
this.isLoaded = true; this.isLoaded = true;
let id = GLib.idle_add(GLib.PRIORITY_DEFAULT, Lang.bind(this, function() { GLib.idle_add(GLib.PRIORITY_DEFAULT, Lang.bind(this, function() {
this.emit('loaded'); this.emit('loaded');
return GLib.SOURCE_REMOVE; return GLib.SOURCE_REMOVE;
})); }));
GLib.Source.set_name_by_id(id, '[gnome-shell] this.emit');
}, },
_loadPattern: function() { _loadPattern: function() {
@@ -448,7 +445,7 @@ const Background = new Lang.Class({
let image = this._images[index]; let image = this._images[index];
if (image.content) if (image.content)
this._cache.removeImageContent(image.content); this._cache.removeImageContent(content);
image.content = content; image.content = content;
this._watchCacheFile(filename); this._watchCacheFile(filename);
}, },
@@ -535,7 +532,6 @@ const Background = new Lang.Class({
this._updateAnimation(); this._updateAnimation();
return GLib.SOURCE_REMOVE; return GLib.SOURCE_REMOVE;
})); }));
GLib.Source.set_name_by_id(this._updateAnimationTimeoutId, '[gnome-shell] this._updateAnimation');
}, },
_loadAnimation: function(filename) { _loadAnimation: function(filename) {
@@ -659,10 +655,7 @@ const SystemBackground = new Lang.Class({
}, },
_onDestroy: function() { _onDestroy: function() {
let content = this.actor.content; this._cache.removeImageContent(this.actor.content);
if (content)
this._cache.removeImageContent(content);
}, },
}); });
Signals.addSignalMethods(SystemBackground.prototype); Signals.addSignalMethods(SystemBackground.prototype);
@@ -728,7 +721,7 @@ const BackgroundManager = new Lang.Class({
controlPosition: true, controlPosition: true,
settingsSchema: BACKGROUND_SCHEMA }); settingsSchema: BACKGROUND_SCHEMA });
this._settings = new Gio.Settings({ schema_id: params.settingsSchema }); this._settings = new Gio.Settings({ schema: params.settingsSchema });
this._container = params.container; this._container = params.container;
this._layoutManager = params.layoutManager; this._layoutManager = params.layoutManager;
this._effects = params.effects; this._effects = params.effects;

View File

@@ -55,10 +55,6 @@ function addBackgroundMenu(actor, layoutManager) {
}); });
actor.add_action(clickAction); actor.add_action(clickAction);
global.display.connect('grab-op-begin', function () {
clickAction.release();
});
actor.connect('destroy', function() { actor.connect('destroy', function() {
actor._backgroundMenu.destroy(); actor._backgroundMenu.destroy();
actor._backgroundMenu = null; actor._backgroundMenu = null;

View File

@@ -14,9 +14,6 @@ const Shell = imports.gi.Shell;
const MSECS_IN_DAY = 24 * 60 * 60 * 1000; const MSECS_IN_DAY = 24 * 60 * 60 * 1000;
const SHOW_WEEKDATE_KEY = 'show-weekdate'; const SHOW_WEEKDATE_KEY = 'show-weekdate';
// alias to prevent xgettext from picking up strings translated in GTK+
const gtk30_ = Gettext_gtk30.gettext;
// in org.gnome.desktop.interface // in org.gnome.desktop.interface
const CLOCK_FORMAT_KEY = 'clock-format'; const CLOCK_FORMAT_KEY = 'clock-format';
@@ -383,14 +380,14 @@ const Calendar = new Lang.Class({
_init: function() { _init: function() {
this._weekStart = Shell.util_get_week_start(); this._weekStart = Shell.util_get_week_start();
this._settings = new Gio.Settings({ schema_id: 'org.gnome.shell.calendar' }); this._settings = new Gio.Settings({ schema: 'org.gnome.shell.calendar' });
this._settings.connect('changed::' + SHOW_WEEKDATE_KEY, Lang.bind(this, this._onSettingsChange)); this._settings.connect('changed::' + SHOW_WEEKDATE_KEY, Lang.bind(this, this._onSettingsChange));
this._useWeekdate = this._settings.get_boolean(SHOW_WEEKDATE_KEY); this._useWeekdate = this._settings.get_boolean(SHOW_WEEKDATE_KEY);
// Find the ordering for month/year in the calendar heading // Find the ordering for month/year in the calendar heading
this._headerFormatWithoutYear = '%B'; this._headerFormatWithoutYear = '%B';
switch (gtk30_('calendar:MY')) { switch (Gettext_gtk30.gettext('calendar:MY')) {
case 'calendar:MY': case 'calendar:MY':
this._headerFormat = '%B %Y'; this._headerFormat = '%B %Y';
break; break;
@@ -408,9 +405,9 @@ const Calendar = new Lang.Class({
this._shouldDateGrabFocus = false; this._shouldDateGrabFocus = false;
this.actor = new St.Widget({ style_class: 'calendar', this.actor = new St.Table({ homogeneous: false,
layout_manager: new Clutter.TableLayout(), style_class: 'calendar',
reactive: true }); reactive: true });
this.actor.connect('scroll-event', this.actor.connect('scroll-event',
Lang.bind(this, this._onScroll)); Lang.bind(this, this._onScroll));
@@ -441,14 +438,13 @@ const Calendar = new Lang.Class({
}, },
_buildHeader: function() { _buildHeader: function() {
let layout = this.actor.layout_manager;
let offsetCols = this._useWeekdate ? 1 : 0; let offsetCols = this._useWeekdate ? 1 : 0;
this.actor.destroy_all_children(); this.actor.destroy_all_children();
// Top line of the calendar '<| September 2009 |>' // Top line of the calendar '<| September 2009 |>'
this._topBox = new St.BoxLayout(); this._topBox = new St.BoxLayout();
layout.pack(this._topBox, 0, 0); this.actor.add(this._topBox,
layout.set_span(this._topBox, offsetCols + 7, 1); { row: 0, col: 0, col_span: offsetCols + 7 });
this._backButton = new St.Button({ style_class: 'calendar-change-month-back', this._backButton = new St.Button({ style_class: 'calendar-change-month-back',
accessible_name: _("Previous month"), accessible_name: _("Previous month"),
@@ -480,12 +476,10 @@ const Calendar = new Lang.Class({
let customDayAbbrev = _getCalendarDayAbbreviation(iter.getDay()); let customDayAbbrev = _getCalendarDayAbbreviation(iter.getDay());
let label = new St.Label({ style_class: 'calendar-day-base calendar-day-heading', let label = new St.Label({ style_class: 'calendar-day-base calendar-day-heading',
text: customDayAbbrev }); text: customDayAbbrev });
let col; this.actor.add(label,
if (this.actor.get_text_direction() == Clutter.TextDirection.RTL) { row: 1,
col = 6 - (7 + iter.getDay() - this._weekStart) % 7; col: offsetCols + (7 + iter.getDay() - this._weekStart) % 7,
else x_fill: false, x_align: St.Align.MIDDLE });
col = offsetCols + (7 + iter.getDay() - this._weekStart) % 7;
layout.pack(label, col, 1);
iter.setTime(iter.getTime() + MSECS_IN_DAY); iter.setTime(iter.getTime() + MSECS_IN_DAY);
} }
@@ -604,7 +598,6 @@ const Calendar = new Lang.Class({
beginDate.setTime(beginDate.getTime() - (weekPadding + daysToWeekStart) * MSECS_IN_DAY); beginDate.setTime(beginDate.getTime() - (weekPadding + daysToWeekStart) * MSECS_IN_DAY);
let layout = this.actor.layout_manager;
let iter = new Date(beginDate); let iter = new Date(beginDate);
let row = 2; let row = 2;
// nRows here means 6 weeks + one header + one navbar // nRows here means 6 weeks + one header + one navbar
@@ -652,19 +645,16 @@ const Calendar = new Lang.Class({
button.style_class = styleClass; button.style_class = styleClass;
let offsetCols = this._useWeekdate ? 1 : 0; let offsetCols = this._useWeekdate ? 1 : 0;
let col; this.actor.add(button,
if (rtl) { row: row, col: offsetCols + (7 + iter.getDay() - this._weekStart) % 7 });
col = 6 - (7 + iter.getDay() - this._weekStart) % 7;
else
col = offsetCols + (7 + iter.getDay() - this._weekStart) % 7;
layout.pack(button, col, row);
this._buttons.push(button); this._buttons.push(button);
if (this._useWeekdate && iter.getDay() == 4) { if (this._useWeekdate && iter.getDay() == 4) {
let label = new St.Label({ text: _getCalendarWeekForDate(iter).toString(), let label = new St.Label({ text: _getCalendarWeekForDate(iter).toString(),
style_class: 'calendar-day-base calendar-week-number'}); style_class: 'calendar-day-base calendar-week-number'});
layout.pack(label, rtl ? 7 : 0, row); this.actor.add(label,
{ row: row, col: 0, y_align: St.Align.MIDDLE });
} }
iter.setTime(iter.getTime() + MSECS_IN_DAY); iter.setTime(iter.getTime() + MSECS_IN_DAY);
@@ -707,12 +697,9 @@ const EventsList = new Lang.Class({
Name: 'EventsList', Name: 'EventsList',
_init: function() { _init: function() {
let layout = new Clutter.TableLayout(); this.actor = new St.Table({ style_class: 'events-table' });
this.actor = new St.Widget({ style_class: 'events-table',
layout_manager: layout });
layout.hookup_style(this.actor);
this._date = new Date(); this._date = new Date();
this._desktopSettings = new Gio.Settings({ schema_id: 'org.gnome.desktop.interface' }); this._desktopSettings = new Gio.Settings({ schema: 'org.gnome.desktop.interface' });
this._desktopSettings.connect('changed', Lang.bind(this, this._update)); this._desktopSettings.connect('changed', Lang.bind(this, this._update));
this._weekStart = Shell.util_get_week_start(); this._weekStart = Shell.util_get_week_start();
}, },
@@ -734,13 +721,9 @@ const EventsList = new Lang.Class({
dayLabel.clutter_text.line_wrap = false; dayLabel.clutter_text.line_wrap = false;
dayLabel.clutter_text.ellipsize = false; dayLabel.clutter_text.ellipsize = false;
let rtl = this.actor.get_text_direction() == Clutter.TextDirection.RTL; this.actor.add(dayLabel, { row: index, col: 0,
x_expand: false, x_align: St.Align.END,
let layout = this.actor.layout_manager; y_fill: false, y_align: St.Align.START });
layout.pack(dayLabel, rtl ? 2 : 0, index);
layout.child_set(dayLabel, { x_expand: false,
x_align: Clutter.TableAlignment.END,
y_align: Clutter.TableAlignment.START });
let clockFormat = this._desktopSettings.get_string(CLOCK_FORMAT_KEY); let clockFormat = this._desktopSettings.get_string(CLOCK_FORMAT_KEY);
let timeString = _formatEventTime(event, clockFormat); let timeString = _formatEventTime(event, clockFormat);
@@ -749,17 +732,18 @@ const EventsList = new Lang.Class({
timeLabel.clutter_text.line_wrap = false; timeLabel.clutter_text.line_wrap = false;
timeLabel.clutter_text.ellipsize = false; timeLabel.clutter_text.ellipsize = false;
layout.pack(timeLabel, 1, index); this.actor.add(timeLabel, { row: index, col: 1,
layout.child_set(timeLabel, { x_expand: false, x_expand: false, x_align: St.Align.MIDDLE,
y_align: Clutter.TableAlignment.START }); y_fill: false, y_align: St.Align.START });
let titleLabel = new St.Label({ style_class: 'events-day-task', let titleLabel = new St.Label({ style_class: 'events-day-task',
text: event.summary }); text: event.summary });
titleLabel.clutter_text.line_wrap = true; titleLabel.clutter_text.line_wrap = true;
titleLabel.clutter_text.ellipsize = false; titleLabel.clutter_text.ellipsize = false;
layout.pack(titleLabel, rtl ? 0 : 2, index); this.actor.add(titleLabel, { row: index, col: 2,
layout.child_set(titleLabel, { x_expand: true }); x_expand: true, x_align: St.Align.START,
y_fill: false, y_align: St.Align.START });
}, },
_addPeriod: function(header, index, begin, end, includeDayName, showNothingScheduled) { _addPeriod: function(header, index, begin, end, includeDayName, showNothingScheduled) {
@@ -768,10 +752,13 @@ const EventsList = new Lang.Class({
if (events.length == 0 && !showNothingScheduled) if (events.length == 0 && !showNothingScheduled)
return index; return index;
let label = new St.Label({ style_class: 'events-day-header', text: header }); this.actor.add(new St.Label({ style_class: 'events-day-header', text: header }),
let layout = this.actor.layout_manager; { row: index, col: 0, col_span: 3,
layout.pack(label, 0, index); // In theory, x_expand should be true here, but x_expand
layout.child_set(label, { column_span: 3, x_expand: false }); // is a property of the column for StTable, ie all day cells
// get it too
x_expand: false, x_align: St.Align.START,
y_fill: false, y_align: St.Align.START });
index++; index++;
for (let n = 0; n < events.length; n++) { for (let n = 0; n < events.length; n++) {

View File

@@ -23,7 +23,7 @@ const AutomountManager = new Lang.Class({
Name: 'AutomountManager', Name: 'AutomountManager',
_init: function() { _init: function() {
this._settings = new Gio.Settings({ schema_id: SETTINGS_SCHEMA }); this._settings = new Gio.Settings({ schema: SETTINGS_SCHEMA });
this._volumeQueue = []; this._volumeQueue = [];
this._session = new GnomeSession.SessionManager(); this._session = new GnomeSession.SessionManager();
this._session.connectSignal('InhibitorAdded', this._session.connectSignal('InhibitorAdded',
@@ -43,7 +43,6 @@ const AutomountManager = new Lang.Class({
this._driveEjectButtonId = this._volumeMonitor.connect('drive-eject-button', Lang.bind(this, this._onDriveEjectButton)); this._driveEjectButtonId = this._volumeMonitor.connect('drive-eject-button', Lang.bind(this, this._onDriveEjectButton));
this._mountAllId = Mainloop.idle_add(Lang.bind(this, this._startupMountAll)); this._mountAllId = Mainloop.idle_add(Lang.bind(this, this._startupMountAll));
GLib.Source.set_name_by_id(this._mountAllId, '[gnome-shell] this._startupMountAll');
}, },
disable: function() { disable: function() {
@@ -235,11 +234,10 @@ const AutomountManager = new Lang.Class({
}, },
_allowAutorunExpire: function(volume) { _allowAutorunExpire: function(volume) {
let id = Mainloop.timeout_add_seconds(AUTORUN_EXPIRE_TIMEOUT_SECS, function() { Mainloop.timeout_add_seconds(AUTORUN_EXPIRE_TIMEOUT_SECS, function() {
volume.allowAutorun = false; volume.allowAutorun = false;
return GLib.SOURCE_REMOVE; return GLib.SOURCE_REMOVE;
}); });
GLib.Source.set_name_by_id(id, '[gnome-shell] volume.allowAutorun');
} }
}); });
const Component = AutomountManager; const Component = AutomountManager;

View File

@@ -96,7 +96,7 @@ const ContentTypeDiscoverer = new Lang.Class({
_init: function(callback) { _init: function(callback) {
this._callback = callback; this._callback = callback;
this._settings = new Gio.Settings({ schema_id: SETTINGS_SCHEMA }); this._settings = new Gio.Settings({ schema: SETTINGS_SCHEMA });
}, },
guessContentTypes: function(mount) { guessContentTypes: function(mount) {
@@ -441,7 +441,7 @@ const AutorunTransientDispatcher = new Lang.Class({
_init: function(manager) { _init: function(manager) {
this._manager = manager; this._manager = manager;
this._sources = []; this._sources = [];
this._settings = new Gio.Settings({ schema_id: SETTINGS_SCHEMA }); this._settings = new Gio.Settings({ schema: SETTINGS_SCHEMA });
}, },
_getAutorunSettingForType: function(contentType) { _getAutorunSettingForType: function(contentType) {

View File

@@ -77,7 +77,6 @@ const NetworkSecretDialog = new Lang.Class({
layout_manager: layout }); layout_manager: layout });
layout.hookup_style(secretTable); layout.hookup_style(secretTable);
let rtl = secretTable.get_text_direction() == Clutter.TextDirection.RTL;
let initialFocusSet = false; let initialFocusSet = false;
let pos = 0; let pos = 0;
for (let i = 0; i < this._content.secrets.length; i++) { for (let i = 0; i < this._content.secrets.length; i++) {
@@ -117,15 +116,10 @@ const NetworkSecretDialog = new Lang.Class({
} else } else
secret.valid = true; secret.valid = true;
if (rtl) { layout.pack(label, 0, pos);
layout.pack(secret.entry, 0, pos);
layout.pack(label, 1, pos);
} else {
layout.pack(label, 0, pos);
layout.pack(secret.entry, 1, pos);
}
layout.child_set(label, { x_expand: false, y_fill: false, layout.child_set(label, { x_expand: false, y_fill: false,
x_align: Clutter.TableAlignment.START }); x_align: Clutter.TableAlignment.START });
layout.pack(secret.entry, 1, pos);
pos++; pos++;
if (secret.password) if (secret.password)

View File

@@ -681,7 +681,6 @@ const ChatSource = new Lang.Class({
Mainloop.source_remove(this._notifyTimeoutId); Mainloop.source_remove(this._notifyTimeoutId);
this._notifyTimeoutId = Mainloop.timeout_add(500, this._notifyTimeoutId = Mainloop.timeout_add(500,
Lang.bind(this, this._notifyTimeout)); Lang.bind(this, this._notifyTimeout));
GLib.Source.set_name_by_id(this._notifyTimeoutId, '[gnome-shell] this._notifyTimeout');
}, },
_notifyTimeout: function() { _notifyTimeout: function() {
@@ -783,6 +782,7 @@ const ChatNotification = new Lang.Class({
this._createScrollArea(); this._createScrollArea();
this._lastGroup = null; this._lastGroup = null;
this._lastGroupActor = null;
// Keep track of the bottom position for the current adjustment and // Keep track of the bottom position for the current adjustment and
// force a scroll to the bottom if things change while we were at the // force a scroll to the bottom if things change while we were at the
@@ -924,16 +924,14 @@ const ChatNotification = new Lang.Class({
realMessage: group != 'meta' }); realMessage: group != 'meta' });
if (!props.noTimestamp) { if (!props.noTimestamp) {
if (timestamp < currentTime - SCROLLBACK_IMMEDIATE_TIME) { if (timestamp < currentTime - SCROLLBACK_IMMEDIATE_TIME)
this.appendTimestamp(); this.appendTimestamp();
} else { else
// Schedule a new timestamp in SCROLLBACK_IMMEDIATE_TIME // Schedule a new timestamp in SCROLLBACK_IMMEDIATE_TIME
// from the timestamp of the message. // from the timestamp of the message.
this._timestampTimeoutId = Mainloop.timeout_add_seconds( this._timestampTimeoutId = Mainloop.timeout_add_seconds(
SCROLLBACK_IMMEDIATE_TIME - (currentTime - timestamp), SCROLLBACK_IMMEDIATE_TIME - (currentTime - timestamp),
Lang.bind(this, this.appendTimestamp)); Lang.bind(this, this.appendTimestamp));
GLib.Source.set_name_by_id(this._timestampTimeoutId, '[gnome-shell] this.appendTimestamp');
}
} }
this._filterMessages(); this._filterMessages();
@@ -946,76 +944,80 @@ const ChatNotification = new Lang.Class({
let format; let format;
let desktopSettings = new Gio.Settings({ schema_id: 'org.gnome.desktop.interface' }); let desktopSettings = new Gio.Settings({ schema: 'org.gnome.desktop.interface' });
let clockFormat = desktopSettings.get_string(CLOCK_FORMAT_KEY); let clockFormat = desktopSettings.get_string(CLOCK_FORMAT_KEY);
let hasAmPm = date.toLocaleFormat('%p') != '';
if (clockFormat == '24h' || !hasAmPm) { switch (clockFormat) {
// Show only the time if date is on today case '24h':
if(daysAgo < 1){ // Show only the time if date is on today
/* Translators: Time in 24h format */ if(daysAgo < 1){
format = _("%H\u2236%M"); /* Translators: Time in 24h format */
} format = _("%H\u2236%M");
// Show the word "Yesterday" and time if date is on yesterday }
else if(daysAgo <2){ // Show the word "Yesterday" and time if date is on yesterday
/* Translators: this is the word "Yesterday" followed by a else if(daysAgo <2){
time string in 24h format. i.e. "Yesterday, 14:30" */ /* Translators: this is the word "Yesterday" followed by a
// xgettext:no-c-format time string in 24h format. i.e. "Yesterday, 14:30" */
format = _("Yesterday, %H\u2236%M"); // xgettext:no-c-format
} format = _("Yesterday, %H\u2236%M");
// Show a week day and time if date is in the last week }
else if (daysAgo < 7) { // Show a week day and time if date is in the last week
/* Translators: this is the week day name followed by a time else if (daysAgo < 7) {
string in 24h format. i.e. "Monday, 14:30" */ /* Translators: this is the week day name followed by a time
// xgettext:no-c-format string in 24h format. i.e. "Monday, 14:30" */
format = _("%A, %H\u2236%M"); // xgettext:no-c-format
format = _("%A, %H\u2236%M");
} else if (date.getYear() == now.getYear()) { } else if (date.getYear() == now.getYear()) {
/* Translators: this is the month name and day number /* Translators: this is the month name and day number
followed by a time string in 24h format. followed by a time string in 24h format.
i.e. "May 25, 14:30" */ i.e. "May 25, 14:30" */
// xgettext:no-c-format // xgettext:no-c-format
format = _("%B %d, %H\u2236%M"); format = _("%B %d, %H\u2236%M");
} else { } else {
/* Translators: this is the month name, day number, year /* Translators: this is the month name, day number, year
number followed by a time string in 24h format. number followed by a time string in 24h format.
i.e. "May 25 2012, 14:30" */ i.e. "May 25 2012, 14:30" */
// xgettext:no-c-format // xgettext:no-c-format
format = _("%B %d %Y, %H\u2236%M"); format = _("%B %d %Y, %H\u2236%M");
} }
} else { break;
// Show only the time if date is on today default:
if(daysAgo < 1){ /* explicit fall-through */
/* Translators: Time in 24h format */ case '12h':
format = _("%l\u2236%M %p"); // Show only the time if date is on today
} if(daysAgo < 1){
// Show the word "Yesterday" and time if date is on yesterday /* Translators: Time in 24h format */
else if(daysAgo <2){ format = _("%l\u2236%M %p");
/* Translators: this is the word "Yesterday" followed by a }
time string in 12h format. i.e. "Yesterday, 2:30 pm" */ // Show the word "Yesterday" and time if date is on yesterday
// xgettext:no-c-format else if(daysAgo <2){
format = _("Yesterday, %l\u2236%M %p"); /* Translators: this is the word "Yesterday" followed by a
} time string in 12h format. i.e. "Yesterday, 2:30 pm" */
// Show a week day and time if date is in the last week // xgettext:no-c-format
else if (daysAgo < 7) { format = _("Yesterday, %l\u2236%M %p");
/* Translators: this is the week day name followed by a time }
string in 12h format. i.e. "Monday, 2:30 pm" */ // Show a week day and time if date is in the last week
// xgettext:no-c-format else if (daysAgo < 7) {
format = _("%A, %l\u2236%M %p"); /* Translators: this is the week day name followed by a time
string in 12h format. i.e. "Monday, 2:30 pm" */
// xgettext:no-c-format
format = _("%A, %l\u2236%M %p");
} else if (date.getYear() == now.getYear()) { } else if (date.getYear() == now.getYear()) {
/* Translators: this is the month name and day number /* Translators: this is the month name and day number
followed by a time string in 12h format. followed by a time string in 12h format.
i.e. "May 25, 2:30 pm" */ i.e. "May 25, 2:30 pm" */
// xgettext:no-c-format // xgettext:no-c-format
format = _("%B %d, %l\u2236%M %p"); format = _("%B %d, %l\u2236%M %p");
} else { } else {
/* Translators: this is the month name, day number, year /* Translators: this is the month name, day number, year
number followed by a time string in 12h format. number followed by a time string in 12h format.
i.e. "May 25 2012, 2:30 pm"*/ i.e. "May 25 2012, 2:30 pm"*/
// xgettext:no-c-format // xgettext:no-c-format
format = _("%B %d %Y, %l\u2236%M %p"); format = _("%B %d %Y, %l\u2236%M %p");
} }
break;
} }
return date.toLocaleFormat(format); return date.toLocaleFormat(format);
}, },
@@ -1098,7 +1100,6 @@ const ChatNotification = new Lang.Class({
this._composingTimeoutId = Mainloop.timeout_add_seconds( this._composingTimeoutId = Mainloop.timeout_add_seconds(
COMPOSING_STOP_TIMEOUT, COMPOSING_STOP_TIMEOUT,
Lang.bind(this, this._composingStopTimeout)); Lang.bind(this, this._composingStopTimeout));
GLib.Source.set_name_by_id(this._composingTimeoutId, '[gnome-shell] this._composingStopTimeout');
} else { } else {
this.source.setChatState(Tp.ChannelChatState.ACTIVE); this.source.setChatState(Tp.ChannelChatState.ACTIVE);
} }

View File

@@ -87,7 +87,7 @@ const CtrlAltTabManager = new Lang.Class({
if (Main.sessionMode.hasWindows && !Main.overview.visible) { if (Main.sessionMode.hasWindows && !Main.overview.visible) {
let screen = global.screen; let screen = global.screen;
let display = screen.get_display(); let display = screen.get_display();
let windows = display.get_tab_list(Meta.TabList.DOCKS, screen.get_active_workspace ()); let windows = display.get_tab_list(Meta.TabList.DOCKS, screen, screen.get_active_workspace ());
let windowTracker = Shell.WindowTracker.get_default(); let windowTracker = Shell.WindowTracker.get_default();
let textureCache = St.TextureCache.get_default(); let textureCache = St.TextureCache.get_default();
for (let i = 0; i < windows.length; i++) { for (let i = 0; i < windows.length; i++) {
@@ -165,10 +165,6 @@ const CtrlAltTabPopup = new Lang.Class({
this._select(this._previous()); this._select(this._previous());
else if (keysym == Clutter.Right) else if (keysym == Clutter.Right)
this._select(this._next()); this._select(this._next());
else
return Clutter.EVENT_PROPAGATE;
return Clutter.EVENT_STOP;
}, },
_finish : function(time) { _finish : function(time) {

View File

@@ -582,7 +582,6 @@ const Dash = new Lang.Class({
this._showLabelTimeoutId = 0; this._showLabelTimeoutId = 0;
return GLib.SOURCE_REMOVE; return GLib.SOURCE_REMOVE;
})); }));
GLib.Source.set_name_by_id(this._showLabelTimeoutId, '[gnome-shell] item.showLabel');
if (this._resetHoverTimeoutId > 0) { if (this._resetHoverTimeoutId > 0) {
Mainloop.source_remove(this._resetHoverTimeoutId); Mainloop.source_remove(this._resetHoverTimeoutId);
this._resetHoverTimeoutId = 0; this._resetHoverTimeoutId = 0;
@@ -600,7 +599,6 @@ const Dash = new Lang.Class({
this._resetHoverTimeoutId = 0; this._resetHoverTimeoutId = 0;
return GLib.SOURCE_REMOVE; return GLib.SOURCE_REMOVE;
})); }));
GLib.Source.set_name_by_id(this._resetHoverTimeoutId, '[gnome-shell] this._labelShowing');
} }
} }
}, },

View File

@@ -18,7 +18,8 @@ const PanelMenu = imports.ui.panelMenu;
const PopupMenu = imports.ui.popupMenu; const PopupMenu = imports.ui.popupMenu;
const Calendar = imports.ui.calendar; const Calendar = imports.ui.calendar;
function _onVertSepRepaint(area) { function _onVertSepRepaint (area)
{
let cr = area.get_context(); let cr = area.get_context();
let themeNode = area.get_theme_node(); let themeNode = area.get_theme_node();
let [width, height] = area.get_surface_size(); let [width, height] = area.get_surface_size();
@@ -32,7 +33,7 @@ function _onVertSepRepaint(area) {
cr.setLineWidth(stippleWidth); cr.setLineWidth(stippleWidth);
cr.stroke(); cr.stroke();
cr.$dispose(); cr.$dispose();
} };
const DateMenuButton = new Lang.Class({ const DateMenuButton = new Lang.Class({
Name: 'DateMenuButton', Name: 'DateMenuButton',
@@ -62,11 +63,8 @@ const DateMenuButton = new Lang.Class({
hbox.add(vbox); hbox.add(vbox);
// Date // Date
// Having the ability to go to the current date if the user is already
// on the current date can be confusing. So don't make the button reactive
// until the selected date changes.
this._date = new St.Button({ style_class: 'datemenu-date-label', this._date = new St.Button({ style_class: 'datemenu-date-label',
reactive: false can_focus: true,
}); });
this._date.connect('clicked', this._date.connect('clicked',
Lang.bind(this, function() { Lang.bind(this, function() {
@@ -84,9 +82,6 @@ const DateMenuButton = new Lang.Class({
// and the calender makes those dates unclickable when instantiated with // and the calender makes those dates unclickable when instantiated with
// a null event source // a null event source
this._eventList.setDate(date); this._eventList.setDate(date);
// Make the button reactive only if the selected date is not the current date.
this._date.can_focus = this._date.reactive = !this._isToday(date)
})); }));
vbox.add(this._calendar.actor); vbox.add(this._calendar.actor);
@@ -137,13 +132,6 @@ const DateMenuButton = new Lang.Class({
this._sessionUpdated(); this._sessionUpdated();
}, },
_isToday: function(date) {
let now = new Date();
return now.getYear() == date.getYear() &&
now.getMonth() == date.getMonth() &&
now.getDay() == date.getDay();
},
_appInstalledChanged: function() { _appInstalledChanged: function() {
this._calendarApp = undefined; this._calendarApp = undefined;
this._updateEventsVisibility(); this._updateEventsVisibility();

View File

@@ -395,7 +395,6 @@ const _Draggable = new Lang.Class({
this._updateHoverId = GLib.idle_add(GLib.PRIORITY_DEFAULT, this._updateHoverId = GLib.idle_add(GLib.PRIORITY_DEFAULT,
Lang.bind(this, this._updateDragHover)); Lang.bind(this, this._updateDragHover));
GLib.Source.set_name_by_id(this._updateHoverId, '[gnome-shell] this._updateDragHover');
}, },
_updateDragPosition : function (event) { _updateDragPosition : function (event) {

View File

@@ -1,76 +0,0 @@
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
const Lang = imports.lang;
const Signals = imports.signals;
const Meta = imports.gi.Meta;
const Clutter = imports.gi.Clutter;
const St = imports.gi.St;
let EDGE_THRESHOLD = 20;
let DRAG_DISTANCE = 80;
const EdgeDragAction = new Lang.Class({
Name: 'EdgeDragAction',
Extends: Clutter.GestureAction,
_init : function(side) {
this.parent();
this._side = side;
this.set_n_touch_points (1);
global.display.connect('grab-op-begin', Lang.bind(this, this.cancel));
global.display.connect('grab-op-end', Lang.bind(this, this.cancel));
},
_getMonitorRect : function (x, y) {
let rect = new Meta.Rectangle({ x: x - 1, y: y - 1, width: 1, height: 1 });
let monitorIndex = global.screen.get_monitor_index_for_rect(rect);
return global.screen.get_monitor_geometry(monitorIndex);
},
vfunc_gesture_prepare : function(action, actor) {
if (this.get_n_current_points() == 0)
return false;
let [x, y] = this.get_press_coords(0);
let monitorRect = this._getMonitorRect(x, y);
return ((this._side == St.Side.LEFT && x < monitorRect.x + EDGE_THRESHOLD) ||
(this._side == St.Side.RIGHT && x > monitorRect.x + monitorRect.width - EDGE_THRESHOLD) ||
(this._side == St.Side.TOP && y < monitorRect.y + EDGE_THRESHOLD) ||
(this._side == St.Side.BOTTOM && y > monitorRect.y + monitorRect.height - EDGE_THRESHOLD));
},
vfunc_gesture_progress : function (action, actor) {
let [startX, startY] = this.get_press_coords(0);
let [x, y] = this.get_motion_coords(0);
let offsetX = Math.abs (x - startX);
let offsetY = Math.abs (y - startY);
if (offsetX < EDGE_THRESHOLD && offsetY < EDGE_THRESHOLD)
return true;
if ((offsetX > offsetY &&
(this._side == St.Side.TOP || this._side == St.Side.BOTTOM)) ||
(offsetY > offsetX &&
(this._side == St.Side.LEFT || this._side == St.Side.RIGHT))) {
this.cancel();
return false;
}
return true;
},
vfunc_gesture_end : function (action, actor) {
let [startX, startY] = this.get_press_coords(0);
let [x, y] = this.get_motion_coords(0);
let monitorRect = this._getMonitorRect(startX, startY);
if ((this._side == St.Side.TOP && y > monitorRect.y + DRAG_DISTANCE) ||
(this._side == St.Side.BOTTOM && y < monitorRect.y + monitorRect.height - DRAG_DISTANCE) ||
(this._side == St.Side.LEFT && x > monitorRect.x + DRAG_DISTANCE) ||
(this._side == St.Side.RIGHT && x < monitorRect.x + monitorRect.width - DRAG_DISTANCE))
this.emit('activated');
}
});
Signals.addSignalMethods(EdgeDragAction.prototype);

View File

@@ -551,7 +551,6 @@ const EndSessionDialog = new Lang.Class({
return GLib.SOURCE_REMOVE; return GLib.SOURCE_REMOVE;
})); }));
GLib.Source.set_name_by_id(this._timerId, '[gnome-shell] this._confirm');
}, },
_stopTimer: function() { _stopTimer: function() {

View File

@@ -47,11 +47,8 @@ function _patchLayoutClass(layoutClass, styleProps) {
layoutClass.prototype.hookup_style = function(container) { layoutClass.prototype.hookup_style = function(container) {
container.connect('style-changed', Lang.bind(this, function() { container.connect('style-changed', Lang.bind(this, function() {
let node = container.get_theme_node(); let node = container.get_theme_node();
for (let prop in styleProps) { for (let prop in styleProps)
let [found, length] = node.lookup_length(styleProps[prop], false); this[prop] = node.get_length(styleProps[prop]);
if (found)
this[prop] = length;
}
})); }));
}; };
layoutClass.prototype.child_set = function(actor, props) { layoutClass.prototype.child_set = function(actor, props) {

View File

@@ -32,9 +32,11 @@ const FocusCaretTracker = new Lang.Class({
Name: 'FocusCaretTracker', Name: 'FocusCaretTracker',
_init: function() { _init: function() {
Atspi.init();
Atspi.set_timeout(250, 250);
this._atspiListener = Atspi.EventListener.new(Lang.bind(this, this._onChanged)); this._atspiListener = Atspi.EventListener.new(Lang.bind(this, this._onChanged));
this._atspiInited = false;
this._focusListenerRegistered = false; this._focusListenerRegistered = false;
this._caretListenerRegistered = false; this._caretListenerRegistered = false;
}, },
@@ -46,20 +48,12 @@ const FocusCaretTracker = new Lang.Class({
this.emit('caret-moved', event); this.emit('caret-moved', event);
}, },
_initAtspi: function() {
if (!this._atspiInited) {
Atspi.init();
Atspi.set_timeout(250, 250);
this._atspiInited = true;
}
},
registerFocusListener: function() { registerFocusListener: function() {
if (this._focusListenerRegistered) if (this._focusListenerRegistered)
return; return;
this._initAtspi(); // Ignore the return value, we get an exception if they fail
// And they should never fail
this._atspiListener.register(STATECHANGED + ':focused'); this._atspiListener.register(STATECHANGED + ':focused');
this._atspiListener.register(STATECHANGED + ':selected'); this._atspiListener.register(STATECHANGED + ':selected');
this._focusListenerRegistered = true; this._focusListenerRegistered = true;
@@ -69,8 +63,6 @@ const FocusCaretTracker = new Lang.Class({
if (this._caretListenerRegistered) if (this._caretListenerRegistered)
return; return;
this._initAtspi();
this._atspiListener.register(CARETMOVED); this._atspiListener.register(CARETMOVED);
this._caretListenerRegistered = true; this._caretListenerRegistered = true;
}, },

View File

@@ -522,6 +522,11 @@ const IconGrid = new Lang.Class({
this._fixedHItemSize = Math.max(this._hItemSize - neededSpacePerItem, MIN_ICON_SIZE); this._fixedHItemSize = Math.max(this._hItemSize - neededSpacePerItem, MIN_ICON_SIZE);
this._fixedVItemSize = Math.max(this._vItemSize - neededSpacePerItem, MIN_ICON_SIZE); this._fixedVItemSize = Math.max(this._vItemSize - neededSpacePerItem, MIN_ICON_SIZE);
if (this._fixedHItemSize < MIN_ICON_SIZE)
this._fixedHItemSize = MIN_ICON_SIZE;
if (this._fixedVItemSize < MIN_ICON_SIZE)
this._fixedVItemSize = MIN_ICON_SIZE;
this._updateSpacingForSize(availWidth, availHeight); this._updateSpacingForSize(availWidth, availHeight);
} }
let scale = Math.min(this._fixedHItemSize, this._fixedVItemSize) / Math.max(this._hItemSize, this._vItemSize); let scale = Math.min(this._fixedHItemSize, this._fixedVItemSize) / Math.max(this._hItemSize, this._vItemSize);
@@ -530,8 +535,8 @@ const IconGrid = new Lang.Class({
// Note that this is ICON_SIZE as used by BaseIcon, not elsewhere in IconGrid; it's a bit messed up // Note that this is ICON_SIZE as used by BaseIcon, not elsewhere in IconGrid; it's a bit messed up
_updateChildrenScale: function(scale) { _updateChildrenScale: function(scale) {
let newIconSize = Math.floor(ICON_SIZE * scale);
for (let i in this._items) { for (let i in this._items) {
let newIconSize = Math.floor(ICON_SIZE * scale);
this._items[i].icon.setIconSize(newIconSize); this._items[i].icon.setIconSize(newIconSize);
} }
} }
@@ -640,10 +645,6 @@ const PaginatedIconGrid = new Lang.Class({
return this._nPages; return this._nPages;
}, },
getPageHeight: function() {
return this._availableHeightPerPageForItems();
},
getPageY: function(pageNumber) { getPageY: function(pageNumber) {
if (!this._nPages) if (!this._nPages)
return 0; return 0;

View File

@@ -161,9 +161,9 @@ const Keyboard = new Lang.Class({
this._timestamp = global.display.get_current_time_roundtrip(); this._timestamp = global.display.get_current_time_roundtrip();
this._keyboardSettings = new Gio.Settings({ schema_id: KEYBOARD_SCHEMA }); this._keyboardSettings = new Gio.Settings({ schema: KEYBOARD_SCHEMA });
this._keyboardSettings.connect('changed', Lang.bind(this, this._settingsChanged)); this._keyboardSettings.connect('changed', Lang.bind(this, this._settingsChanged));
this._a11yApplicationsSettings = new Gio.Settings({ schema_id: A11Y_APPLICATIONS_SCHEMA }); this._a11yApplicationsSettings = new Gio.Settings({ schema: A11Y_APPLICATIONS_SCHEMA });
this._a11yApplicationsSettings.connect('changed', Lang.bind(this, this._settingsChanged)); this._a11yApplicationsSettings.connect('changed', Lang.bind(this, this._settingsChanged));
this._settingsChanged(); this._settingsChanged();
@@ -266,14 +266,12 @@ const Keyboard = new Lang.Class({
return; return;
} }
if (!this._showIdleId) { if (!this._showIdleId)
this._showIdleId = GLib.idle_add(GLib.PRIORITY_DEFAULT_IDLE, this._showIdleId = GLib.idle_add(GLib.PRIORITY_DEFAULT_IDLE,
Lang.bind(this, function() { Lang.bind(this, function() {
this.Show(time); this.Show(time);
return GLib.SOURCE_REMOVE; return GLib.SOURCE_REMOVE;
})); }));
GLib.Source.set_name_by_id(this._showIdleId, '[gnome-shell] this.Show');
}
}, },
_createLayersForGroup: function (gname) { _createLayersForGroup: function (gname) {
@@ -502,7 +500,6 @@ const Keyboard = new Lang.Class({
this._show(monitor); this._show(monitor);
return GLib.SOURCE_REMOVE; return GLib.SOURCE_REMOVE;
})); }));
GLib.Source.set_name_by_id(this._keyboardRestingId, '[gnome-shell] this._clearKeyboardRestTimer');
}, },
_show: function(monitor) { _show: function(monitor) {
@@ -529,7 +526,6 @@ const Keyboard = new Lang.Class({
this._hide(); this._hide();
return GLib.SOURCE_REMOVE; return GLib.SOURCE_REMOVE;
})); }));
GLib.Source.set_name_by_id(this._keyboardRestingId, '[gnome-shell] this._clearKeyboardRestTimer');
}, },
_hide: function() { _hide: function() {

View File

@@ -163,7 +163,7 @@ const LayoutManager = new Lang.Class({
// Normally, the stage is always covered so Clutter doesn't need to clear // Normally, the stage is always covered so Clutter doesn't need to clear
// it; however it becomes visible during the startup animation // it; however it becomes visible during the startup animation
// See the comment below for a longer explanation // See the comment below for a longer explanation
global.stage.background_color = DEFAULT_BACKGROUND_COLOR; global.stage.color = DEFAULT_BACKGROUND_COLOR;
// Set up stage hierarchy to group all UI actors under one container. // Set up stage hierarchy to group all UI actors under one container.
this.uiGroup = new Shell.GenericContainer({ name: 'uiGroup' }); this.uiGroup = new Shell.GenericContainer({ name: 'uiGroup' });
@@ -224,7 +224,7 @@ const LayoutManager = new Lang.Class({
// A dummy actor that tracks the mouse or text cursor, based on the // A dummy actor that tracks the mouse or text cursor, based on the
// position and size set in setDummyCursorGeometry. // position and size set in setDummyCursorGeometry.
this.dummyCursor = new St.Widget({ width: 0, height: 0, visible: false }); this.dummyCursor = new St.Widget({ width: 0, height: 0 });
this.uiGroup.add_actor(this.dummyCursor); this.uiGroup.add_actor(this.dummyCursor);
global.stage.remove_actor(global.top_window_group); global.stage.remove_actor(global.top_window_group);
@@ -597,13 +597,15 @@ const LayoutManager = new Lang.Class({
reactive: true }); reactive: true });
this.addChrome(this._coverPane); this.addChrome(this._coverPane);
if (Main.sessionMode.isGreeter) { if (Meta.is_restart()) {
// On restart, we don't do an animation
} else if (Main.sessionMode.isGreeter) {
this.panelBox.translation_y = -this.panelBox.height; this.panelBox.translation_y = -this.panelBox.height;
} else { } else {
this._updateBackgrounds(); this._updateBackgrounds();
// We need to force an update of the regions now before we scale // We need to force an update of the regions now before we scale
// the UI group to get the correct allocation for the struts. // the UI group to get the coorect allocation for the struts.
this._updateRegions(); this._updateRegions();
this.trayBox.hide(); this.trayBox.hide();
@@ -628,15 +630,16 @@ const LayoutManager = new Lang.Class({
// until the event loop is uncontended and idle. // until the event loop is uncontended and idle.
// This helps to prevent us from running the animation // This helps to prevent us from running the animation
// when the system is bogged down // when the system is bogged down
let id = GLib.idle_add(GLib.PRIORITY_LOW, Lang.bind(this, function() { GLib.idle_add(GLib.PRIORITY_LOW, Lang.bind(this, function() {
this._startupAnimation(); this._startupAnimation();
return GLib.SOURCE_REMOVE; return GLib.SOURCE_REMOVE;
})); }));
GLib.Source.set_name_by_id(id, '[gnome-shell] this._startupAnimation');
}, },
_startupAnimation: function() { _startupAnimation: function() {
if (Main.sessionMode.isGreeter) if (Meta.is_restart())
this._startupAnimationComplete();
else if (Main.sessionMode.isGreeter)
this._startupAnimationGreeter(); this._startupAnimationGreeter();
else else
this._startupAnimationSession(); this._startupAnimationSession();
@@ -1017,6 +1020,43 @@ const LayoutManager = new Lang.Class({
else else
continue; continue;
// Ensure that the strut rects goes all the way to the screen edge,
// as this really what mutter expects. However skip this step
// in cases where this would render an entire monitor unusable.
switch (side) {
case Meta.Side.TOP:
let hasMonitorsAbove = this.monitors.some(Lang.bind(this,
function(mon) {
return this._isAboveOrBelowPrimary(mon) &&
mon.y < primary.y;
}));
if (!hasMonitorsAbove)
y1 = 0;
break;
case Meta.Side.BOTTOM:
if (this.primaryIndex == this.bottomIndex)
y2 = global.screen_height;
break;
case Meta.Side.LEFT:
let hasMonitorsLeft = this.monitors.some(Lang.bind(this,
function(mon) {
return !this._isAboveOrBelowPrimary(mon) &&
mon.x < primary.x;
}));
if (!hasMonitorsLeft)
x1 = 0;
break;
case Meta.Side.RIGHT:
let hasMonitorsRight = this.monitors.some(Lang.bind(this,
function(mon) {
return !this._isAboveOrBelowPrimary(mon) &&
mon.x > primary.x;
}));
if (!hasMonitorsRight)
x2 = global.screen_width;
break;
}
let strutRect = new Meta.Rectangle({ x: x1, y: y1, width: x2 - x1, height: y2 - y1}); let strutRect = new Meta.Rectangle({ x: x1, y: y1, width: x2 - x1, height: y2 - y1});
let strut = new Meta.Strut({ rect: strutRect, side: side }); let strut = new Meta.Strut({ rect: strutRect, side: side });
struts.push(strut); struts.push(strut);

View File

@@ -797,7 +797,7 @@ const LookingGlass = new Lang.Class({
reactive: true }); reactive: true });
this.actor.connect('key-press-event', Lang.bind(this, this._globalKeyPressEvent)); this.actor.connect('key-press-event', Lang.bind(this, this._globalKeyPressEvent));
this._interfaceSettings = new Gio.Settings({ schema_id: 'org.gnome.desktop.interface' }); this._interfaceSettings = new Gio.Settings({ schema: 'org.gnome.desktop.interface' });
this._interfaceSettings.connect('changed::monospace-font-name', this._interfaceSettings.connect('changed::monospace-font-name',
Lang.bind(this, this._updateFont)); Lang.bind(this, this._updateFont));
this._updateFont(); this._updateFont();
@@ -843,10 +843,9 @@ const LookingGlass = new Lang.Class({
System.gc(); System.gc();
this._timeoutId = Mainloop.timeout_add(500, Lang.bind(this, function () { this._timeoutId = Mainloop.timeout_add(500, Lang.bind(this, function () {
gcIcon.icon_name = 'gnome-fs-trash-full'; gcIcon.icon_name = 'gnome-fs-trash-full';
this._timeoutId = 0; Mainloop.source_remove(this._timeoutId);
return GLib.SOURCE_REMOVE; return GLib.SOURCE_REMOVE;
})); }));
GLib.Source.set_name_by_id(this._timeoutId, '[gnome-shell] gcIcon.icon_name = \'gnome-fs-trash-full\'');
return Clutter.EVENT_PROPAGATE; return Clutter.EVENT_PROPAGATE;
})); }));

View File

@@ -441,8 +441,8 @@ const Magnifier = new Lang.Class({
}, },
_settingsInit: function(zoomRegion) { _settingsInit: function(zoomRegion) {
this._appSettings = new Gio.Settings({ schema_id: APPLICATIONS_SCHEMA }); this._appSettings = new Gio.Settings({ schema: APPLICATIONS_SCHEMA });
this._settings = new Gio.Settings({ schema_id: MAGNIFIER_SCHEMA }); this._settings = new Gio.Settings({ schema: MAGNIFIER_SCHEMA });
if (zoomRegion) { if (zoomRegion) {
// Mag factor is accurate to two decimal places. // Mag factor is accurate to two decimal places.

View File

@@ -18,6 +18,7 @@ const ExtensionSystem = imports.ui.extensionSystem;
const ExtensionDownloader = imports.ui.extensionDownloader; const ExtensionDownloader = imports.ui.extensionDownloader;
const Keyboard = imports.ui.keyboard; const Keyboard = imports.ui.keyboard;
const MessageTray = imports.ui.messageTray; const MessageTray = imports.ui.messageTray;
const ModalDialog = imports.ui.modalDialog;
const OsdWindow = imports.ui.osdWindow; const OsdWindow = imports.ui.osdWindow;
const Overview = imports.ui.overview; const Overview = imports.ui.overview;
const Panel = imports.ui.panel; const Panel = imports.ui.panel;
@@ -43,7 +44,6 @@ const DEFAULT_BACKGROUND_COLOR = Clutter.Color.from_pixel(0x2e3436ff);
const A11Y_SCHEMA = 'org.gnome.desktop.a11y.keyboard'; const A11Y_SCHEMA = 'org.gnome.desktop.a11y.keyboard';
const STICKY_KEYS_ENABLE = 'stickykeys-enable'; const STICKY_KEYS_ENABLE = 'stickykeys-enable';
const GNOMESHELL_STARTED_MESSAGE_ID = 'f3ea493c22934e26811cd62abe8e203a';
let componentManager = null; let componentManager = null;
let panel = null; let panel = null;
@@ -56,7 +56,7 @@ let screenShield = null;
let notificationDaemon = null; let notificationDaemon = null;
let windowAttentionHandler = null; let windowAttentionHandler = null;
let ctrlAltTabManager = null; let ctrlAltTabManager = null;
let osdWindowManager = null; let osdWindow = null;
let sessionMode = null; let sessionMode = null;
let shellDBusService = null; let shellDBusService = null;
let shellMountOpDBusService = null; let shellMountOpDBusService = null;
@@ -74,6 +74,7 @@ let _startDate;
let _defaultCssStylesheet = null; let _defaultCssStylesheet = null;
let _cssStylesheet = null; let _cssStylesheet = null;
let _a11ySettings = null; let _a11ySettings = null;
let dynamicWorkspacesSchema = null;
function _sessionUpdated() { function _sessionUpdated() {
_loadDefaultStylesheet(); _loadDefaultStylesheet();
@@ -103,6 +104,9 @@ function start() {
global.logError = window.log; global.logError = window.log;
global.log = window.log; global.log = window.log;
if (!Meta.is_wayland_compositor)
Meta.is_wayland_compositor = function () { return false; };
// Chain up async errors reported from C // Chain up async errors reported from C
global.connect('notify-error', function (global, msg, detail) { notifyError(msg, detail); }); global.connect('notify-error', function (global, msg, detail) { notifyError(msg, detail); });
@@ -110,6 +114,7 @@ function start() {
sessionMode = new SessionMode.SessionMode(); sessionMode = new SessionMode.SessionMode();
sessionMode.connect('updated', _sessionUpdated); sessionMode.connect('updated', _sessionUpdated);
_initializePrefs();
_initializeUI(); _initializeUI();
shellDBusService = new ShellDBus.GnomeShell(); shellDBusService = new ShellDBus.GnomeShell();
@@ -118,6 +123,17 @@ function start() {
_sessionUpdated(); _sessionUpdated();
} }
function _initializePrefs() {
let keys = new Gio.Settings({ schema: sessionMode.overridesSchema }).list_keys();
for (let i = 0; i < keys.length; i++)
Meta.prefs_override_preference_schema(keys[i], sessionMode.overridesSchema);
if (keys.indexOf('dynamic-workspaces') > -1)
dynamicWorkspacesSchema = sessionMode.overridesSchema;
else
dynamicWorkspacesSchema = 'org.gnome.mutter';
}
function _initializeUI() { function _initializeUI() {
// Ensure ShellWindowTracker and ShellAppUsage are initialized; this will // Ensure ShellWindowTracker and ShellAppUsage are initialized; this will
// also initialize ShellAppSystem first. ShellAppSystem // also initialize ShellAppSystem first. ShellAppSystem
@@ -143,7 +159,7 @@ function _initializeUI() {
screencastService = new Screencast.ScreencastService(); screencastService = new Screencast.ScreencastService();
xdndHandler = new XdndHandler.XdndHandler(); xdndHandler = new XdndHandler.XdndHandler();
ctrlAltTabManager = new CtrlAltTab.CtrlAltTabManager(); ctrlAltTabManager = new CtrlAltTab.CtrlAltTabManager();
osdWindowManager = new OsdWindow.OsdWindowManager(); osdWindow = new OsdWindow.OsdWindow();
overview = new Overview.Overview(); overview = new Overview.Overview();
wm = new WindowManager.WindowManager(); wm = new WindowManager.WindowManager();
magnifier = new Magnifier.Magnifier(); magnifier = new Magnifier.Magnifier();
@@ -160,13 +176,23 @@ function _initializeUI() {
layoutManager.init(); layoutManager.init();
overview.init(); overview.init();
_a11ySettings = new Gio.Settings({ schema_id: A11Y_SCHEMA }); _a11ySettings = new Gio.Settings({ schema: A11Y_SCHEMA });
global.display.connect('overlay-key', Lang.bind(overview, function () { global.display.connect('overlay-key', Lang.bind(overview, function () {
if (!_a11ySettings.get_boolean (STICKY_KEYS_ENABLE)) if (!_a11ySettings.get_boolean (STICKY_KEYS_ENABLE))
overview.toggle(); overview.toggle();
})); }));
global.display.connect('show-restart-message', function(display, message) {
showRestartMessage(message);
return true;
});
global.display.connect('restart', function() {
global.reexec_self();
return true;
});
// Provide the bus object for gnome-session to // Provide the bus object for gnome-session to
// initiate logouts. // initiate logouts.
EndSessionDialog.init(); EndSessionDialog.init();
@@ -176,6 +202,8 @@ function _initializeUI() {
_startDate = new Date(); _startDate = new Date();
log('GNOME Shell started at ' + _startDate);
let perfModuleName = GLib.getenv("SHELL_PERF_MODULE"); let perfModuleName = GLib.getenv("SHELL_PERF_MODULE");
if (perfModuleName) { if (perfModuleName) {
let perfOutput = GLib.getenv("SHELL_PERF_OUTPUT"); let perfOutput = GLib.getenv("SHELL_PERF_OUTPUT");
@@ -199,17 +227,6 @@ function _initializeUI() {
if (screenShield) { if (screenShield) {
screenShield.lockIfWasLocked(); screenShield.lockIfWasLocked();
} }
if (LoginManager.haveSystemd() &&
sessionMode.currentMode != 'gdm' &&
sessionMode.currentMode != 'initial-setup') {
// Do not import globally to not depend
// on systemd on non-systemd systems.
let GSystem = imports.gi.GSystem;
GSystem.log_structured_print('GNOME Shell started at ' + _startDate,
['MESSAGE_ID=' + GNOMESHELL_STARTED_MESSAGE_ID]);
} else {
log('GNOME Shell started at ' + _startDate);
}
}); });
} }
@@ -605,6 +622,30 @@ function queueDeferredWork(workId) {
_deferredTimeoutId = 0; _deferredTimeoutId = 0;
return GLib.SOURCE_REMOVE; return GLib.SOURCE_REMOVE;
}); });
GLib.Source.set_name_by_id(_deferredTimeoutId, '[gnome-shell] _runAllDeferredWork');
} }
} }
const RestartMessage = new Lang.Class({
Name: 'RestartMessage',
Extends: ModalDialog.ModalDialog,
_init : function(message) {
this.parent({ shellReactive: true,
styleClass: 'restart-message',
shouldFadeIn: false,
destroyOnClose: true });
let label = new St.Label({ text: message });
this.contentLayout.add(label, { x_fill: false,
y_fill: false,
x_align: St.Align.MIDDLE,
y_align: St.Align.MIDDLE });
this.buttonLayout.hide();
}
});
function showRestartMessage(message) {
let restartMessage = new RestartMessage(message);
restartMessage.open();
}

View File

@@ -15,7 +15,6 @@ const Signals = imports.signals;
const St = imports.gi.St; const St = imports.gi.St;
const Tp = imports.gi.TelepathyGLib; const Tp = imports.gi.TelepathyGLib;
const EdgeDragAction = imports.ui.edgeDragAction;
const BoxPointer = imports.ui.boxpointer; const BoxPointer = imports.ui.boxpointer;
const CtrlAltTab = imports.ui.ctrlAltTab; const CtrlAltTab = imports.ui.ctrlAltTab;
const GnomeSession = imports.misc.gnomeSession; const GnomeSession = imports.misc.gnomeSession;
@@ -112,6 +111,7 @@ const FocusGrabber = new Lang.Class({
if (this._focused) if (this._focused)
return; return;
this._prevFocusedWindow = global.display.focus_window;
this._prevKeyFocusActor = global.stage.get_key_focus(); this._prevKeyFocusActor = global.stage.get_key_focus();
this._focusActorChangedId = global.stage.connect('notify::key-focus', Lang.bind(this, this._focusActorChanged)); this._focusActorChangedId = global.stage.connect('notify::key-focus', Lang.bind(this, this._focusActorChanged));
@@ -316,7 +316,7 @@ const NotificationGenericPolicy = new Lang.Class({
this.id = 'generic'; this.id = 'generic';
this._masterSettings = new Gio.Settings({ schema_id: 'org.gnome.desktop.notifications' }); this._masterSettings = new Gio.Settings({ schema: 'org.gnome.desktop.notifications' });
this._masterSettings.connect('changed', Lang.bind(this, this._changed)); this._masterSettings.connect('changed', Lang.bind(this, this._changed));
}, },
@@ -366,8 +366,8 @@ const NotificationApplicationPolicy = new Lang.Class({
this.id = id; this.id = id;
this._canonicalId = this._canonicalizeId(id); this._canonicalId = this._canonicalizeId(id);
this._masterSettings = new Gio.Settings({ schema_id: 'org.gnome.desktop.notifications' }); this._masterSettings = new Gio.Settings({ schema: 'org.gnome.desktop.notifications' });
this._settings = new Gio.Settings({ schema_id: 'org.gnome.desktop.notifications.application', this._settings = new Gio.Settings({ schema: 'org.gnome.desktop.notifications.application',
path: '/org/gnome/desktop/notifications/application/' + this._canonicalId + '/' }); path: '/org/gnome/desktop/notifications/application/' + this._canonicalId + '/' });
this._masterSettings.connect('changed', Lang.bind(this, this._changed)); this._masterSettings.connect('changed', Lang.bind(this, this._changed));
@@ -504,6 +504,7 @@ const Notification = new Lang.Class({
this.bannerBodyMarkup = false; this.bannerBodyMarkup = false;
this._bannerBodyAdded = false; this._bannerBodyAdded = false;
this._titleFitsInBannerMode = true; this._titleFitsInBannerMode = true;
this._titleDirection = Clutter.TextDirection.DEFAULT;
this._spacing = 0; this._spacing = 0;
this._scrollPolicy = Gtk.PolicyType.AUTOMATIC; this._scrollPolicy = Gtk.PolicyType.AUTOMATIC;
this._imageBin = null; this._imageBin = null;
@@ -642,11 +643,10 @@ const Notification = new Lang.Class({
title = title ? _fixMarkup(title.replace(/\n/g, ' '), false) : ''; title = title ? _fixMarkup(title.replace(/\n/g, ' '), false) : '';
this._titleLabel.clutter_text.set_markup('<b>' + title + '</b>'); this._titleLabel.clutter_text.set_markup('<b>' + title + '</b>');
let titleDirection;
if (Pango.find_base_dir(title, -1) == Pango.Direction.RTL) if (Pango.find_base_dir(title, -1) == Pango.Direction.RTL)
titleDirection = Clutter.TextDirection.RTL; this._titleDirection = Clutter.TextDirection.RTL;
else else
titleDirection = Clutter.TextDirection.LTR; this._titleDirection = Clutter.TextDirection.LTR;
// Let the title's text direction control the overall direction // Let the title's text direction control the overall direction
// of the notification - in case where different scripts are used // of the notification - in case where different scripts are used
@@ -654,7 +654,7 @@ const Notification = new Lang.Class({
// arguably for action buttons as well. Labels other than the title // arguably for action buttons as well. Labels other than the title
// will be allocated at the available width, so that their alignment // will be allocated at the available width, so that their alignment
// is done correctly automatically. // is done correctly automatically.
this._table.set_text_direction(titleDirection); this._table.set_text_direction(this._titleDirection);
// Unless the notification has custom content, we save this.bannerBodyText // Unless the notification has custom content, we save this.bannerBodyText
// to add it to the content of the notification if the notification is // to add it to the content of the notification if the notification is
@@ -1901,14 +1901,14 @@ const MessageTray = new Lang.Class({
Main.sessionMode.connect('updated', Lang.bind(this, this._sessionUpdated)); Main.sessionMode.connect('updated', Lang.bind(this, this._sessionUpdated));
Main.wm.addKeybinding('toggle-message-tray', Main.wm.addKeybinding('toggle-message-tray',
new Gio.Settings({ schema_id: SHELL_KEYBINDINGS_SCHEMA }), new Gio.Settings({ schema: SHELL_KEYBINDINGS_SCHEMA }),
Meta.KeyBindingFlags.NONE, Meta.KeyBindingFlags.NONE,
Shell.KeyBindingMode.NORMAL | Shell.KeyBindingMode.NORMAL |
Shell.KeyBindingMode.MESSAGE_TRAY | Shell.KeyBindingMode.MESSAGE_TRAY |
Shell.KeyBindingMode.OVERVIEW, Shell.KeyBindingMode.OVERVIEW,
Lang.bind(this, this.toggleAndNavigate)); Lang.bind(this, this.toggleAndNavigate));
Main.wm.addKeybinding('focus-active-notification', Main.wm.addKeybinding('focus-active-notification',
new Gio.Settings({ schema_id: SHELL_KEYBINDINGS_SCHEMA }), new Gio.Settings({ schema: SHELL_KEYBINDINGS_SCHEMA }),
Meta.KeyBindingFlags.NONE, Meta.KeyBindingFlags.NONE,
Shell.KeyBindingMode.NORMAL | Shell.KeyBindingMode.NORMAL |
Shell.KeyBindingMode.MESSAGE_TRAY | Shell.KeyBindingMode.MESSAGE_TRAY |
@@ -1934,10 +1934,6 @@ const MessageTray = new Lang.Class({
this._messageTrayMenuButton = new MessageTrayMenuButton(this); this._messageTrayMenuButton = new MessageTrayMenuButton(this);
this.actor.add_actor(this._messageTrayMenuButton.actor); this.actor.add_actor(this._messageTrayMenuButton.actor);
let gesture = new EdgeDragAction.EdgeDragAction(St.Side.BOTTOM);
gesture.connect('activated', Lang.bind(this, this.toggle));
global.stage.add_action(gesture);
}, },
close: function() { close: function() {
@@ -1991,7 +1987,6 @@ const MessageTray = new Lang.Class({
this._trayDwellTimeoutId = Mainloop.timeout_add(TRAY_DWELL_TIME, this._trayDwellTimeoutId = Mainloop.timeout_add(TRAY_DWELL_TIME,
Lang.bind(this, this._trayDwellTimeout)); Lang.bind(this, this._trayDwellTimeout));
GLib.Source.set_name_by_id(this._trayDwellTimeoutId, '[gnome-shell] this._trayDwellTimeout');
} }
this._trayDwelling = true; this._trayDwelling = true;
} else { } else {
@@ -2272,16 +2267,6 @@ const MessageTray = new Lang.Class({
this._grabHelper.addActor(corner.actor); this._grabHelper.addActor(corner.actor);
}, },
_resetNotificationLeftTimeout: function() {
this._useLongerNotificationLeftTimeout = false;
if (this._notificationLeftTimeoutId) {
Mainloop.source_remove(this._notificationLeftTimeoutId);
this._notificationLeftTimeoutId = 0;
this._notificationLeftMouseX = -1;
this._notificationLeftMouseY = -1;
}
},
_onNotificationHoverChanged: function() { _onNotificationHoverChanged: function() {
if (this._notificationWidget.hover == this._notificationHovered) if (this._notificationWidget.hover == this._notificationHovered)
return; return;
@@ -2291,7 +2276,14 @@ const MessageTray = new Lang.Class({
// No dwell inside notifications at the bottom of the screen // No dwell inside notifications at the bottom of the screen
this._cancelTrayDwell(); this._cancelTrayDwell();
this._resetNotificationLeftTimeout(); this._useLongerNotificationLeftTimeout = false;
if (this._notificationLeftTimeoutId) {
Mainloop.source_remove(this._notificationLeftTimeoutId);
this._notificationLeftTimeoutId = 0;
this._notificationLeftMouseX = -1;
this._notificationLeftMouseY = -1;
return;
}
if (this._showNotificationMouseX >= 0) { if (this._showNotificationMouseX >= 0) {
let actorAtShowNotificationPosition = let actorAtShowNotificationPosition =
@@ -2308,7 +2300,6 @@ const MessageTray = new Lang.Class({
return; return;
} }
} }
this._pointerInNotification = true; this._pointerInNotification = true;
this._updateState(); this._updateState();
} else { } else {
@@ -2325,7 +2316,6 @@ const MessageTray = new Lang.Class({
// That gives the user more time to mouse away from the notification and mouse back in in order to expand it. // That gives the user more time to mouse away from the notification and mouse back in in order to expand it.
let timeout = this._useLongerNotificationLeftTimeout ? LONGER_HIDE_TIMEOUT * 1000 : HIDE_TIMEOUT * 1000; let timeout = this._useLongerNotificationLeftTimeout ? LONGER_HIDE_TIMEOUT * 1000 : HIDE_TIMEOUT * 1000;
this._notificationLeftTimeoutId = Mainloop.timeout_add(timeout, Lang.bind(this, this._onNotificationLeftTimeout)); this._notificationLeftTimeoutId = Mainloop.timeout_add(timeout, Lang.bind(this, this._onNotificationLeftTimeout));
GLib.Source.set_name_by_id(this._notificationLeftTimeoutId, '[gnome-shell] this._onNotificationLeftTimeout');
} }
}, },
@@ -2361,7 +2351,6 @@ const MessageTray = new Lang.Class({
this._notificationLeftMouseX = -1; this._notificationLeftMouseX = -1;
this._notificationLeftTimeoutId = Mainloop.timeout_add(LONGER_HIDE_TIMEOUT * 1000, this._notificationLeftTimeoutId = Mainloop.timeout_add(LONGER_HIDE_TIMEOUT * 1000,
Lang.bind(this, this._onNotificationLeftTimeout)); Lang.bind(this, this._onNotificationLeftTimeout));
GLib.Source.set_name_by_id(this._notificationLeftTimeoutId, '[gnome-shell] this._onNotificationLeftTimeout');
} else { } else {
this._notificationLeftTimeoutId = 0; this._notificationLeftTimeoutId = 0;
this._useLongerNotificationLeftTimeout = false; this._useLongerNotificationLeftTimeout = false;
@@ -2635,8 +2624,6 @@ const MessageTray = new Lang.Class({
// the mouse is moving towards it or within it. // the mouse is moving towards it or within it.
this._lastSeenMouseX = x; this._lastSeenMouseX = x;
this._lastSeenMouseY = y; this._lastSeenMouseY = y;
this._resetNotificationLeftTimeout();
}, },
_updateShowingNotification: function() { _updateShowingNotification: function() {
@@ -2681,12 +2668,10 @@ const MessageTray = new Lang.Class({
Mainloop.source_remove(this._notificationTimeoutId); Mainloop.source_remove(this._notificationTimeoutId);
this._notificationTimeoutId = 0; this._notificationTimeoutId = 0;
} }
if (timeout > 0) { if (timeout > 0)
this._notificationTimeoutId = this._notificationTimeoutId =
Mainloop.timeout_add(timeout, Mainloop.timeout_add(timeout,
Lang.bind(this, this._notificationTimeout)); Lang.bind(this, this._notificationTimeout));
GLib.Source.set_name_by_id(this._notificationTimeoutId, '[gnome-shell] this._notificationTimeout');
}
}, },
_notificationTimeout: function() { _notificationTimeout: function() {
@@ -2729,7 +2714,13 @@ const MessageTray = new Lang.Class({
this._notificationUnfocusedId = 0; this._notificationUnfocusedId = 0;
} }
this._resetNotificationLeftTimeout(); this._useLongerNotificationLeftTimeout = false;
if (this._notificationLeftTimeoutId) {
Mainloop.source_remove(this._notificationLeftTimeoutId);
this._notificationLeftTimeoutId = 0;
this._notificationLeftMouseX = -1;
this._notificationLeftMouseY = -1;
}
if (animate) { if (animate) {
this._tween(this._notificationWidget, '_notificationState', State.HIDDEN, this._tween(this._notificationWidget, '_notificationState', State.HIDDEN,

View File

@@ -43,6 +43,7 @@ const ModalDialog = new Lang.Class({
styleClass: null, styleClass: null,
keybindingMode: Shell.KeyBindingMode.SYSTEM_MODAL, keybindingMode: Shell.KeyBindingMode.SYSTEM_MODAL,
shouldFadeIn: true, shouldFadeIn: true,
shouldFadeOut: true,
destroyOnClose: true }); destroyOnClose: true });
this.state = State.CLOSED; this.state = State.CLOSED;
@@ -50,6 +51,7 @@ const ModalDialog = new Lang.Class({
this._keybindingMode = params.keybindingMode; this._keybindingMode = params.keybindingMode;
this._shellReactive = params.shellReactive; this._shellReactive = params.shellReactive;
this._shouldFadeIn = params.shouldFadeIn; this._shouldFadeIn = params.shouldFadeIn;
this._shouldFadeOut = params.shouldFadeOut;
this._destroyOnClose = params.destroyOnClose; this._destroyOnClose = params.destroyOnClose;
this._group = new St.Widget({ visible: false, this._group = new St.Widget({ visible: false,
@@ -307,6 +309,15 @@ const ModalDialog = new Lang.Class({
return true; return true;
}, },
_closeComplete: function() {
this.state = State.CLOSED;
this._group.hide();
this.emit('closed');
if (this._destroyOnClose)
this.destroy();
},
close: function(timestamp) { close: function(timestamp) {
if (this.state == State.CLOSED || this.state == State.CLOSING) if (this.state == State.CLOSED || this.state == State.CLOSING)
return; return;
@@ -315,20 +326,16 @@ const ModalDialog = new Lang.Class({
this.popModal(timestamp); this.popModal(timestamp);
this._savedKeyFocus = null; this._savedKeyFocus = null;
Tweener.addTween(this._group, if (this._shouldFadeOut)
{ opacity: 0, Tweener.addTween(this._group,
time: OPEN_AND_CLOSE_TIME, { opacity: 0,
transition: 'easeOutQuad', time: OPEN_AND_CLOSE_TIME,
onComplete: Lang.bind(this, transition: 'easeOutQuad',
function() { onComplete: Lang.bind(this,
this.state = State.CLOSED; this._closeComplete)
this._group.hide(); })
this.emit('closed'); else
this._closeComplete();
if (this._destroyOnClose)
this.destroy();
})
});
}, },
// Drop modal status without closing the dialog; this makes the // Drop modal status without closing the dialog; this makes the

View File

@@ -244,12 +244,11 @@ const FdoNotificationDaemon = new Lang.Class({
// Ignore replacesId since we already sent back a // Ignore replacesId since we already sent back a
// NotificationClosed for that id. // NotificationClosed for that id.
id = this._nextNotificationId++; id = this._nextNotificationId++;
let idle_id = Mainloop.idle_add(Lang.bind(this, Mainloop.idle_add(Lang.bind(this,
function () { function () {
this._emitNotificationClosed(id, NotificationClosedReason.DISMISSED); this._emitNotificationClosed(id, NotificationClosedReason.DISMISSED);
return GLib.SOURCE_REMOVE; return GLib.SOURCE_REMOVE;
})); }));
GLib.Source.set_name_by_id(idle_id, '[gnome-shell] this._emitNotificationClosed');
return invocation.return_value(GLib.Variant.new('(u)', [id])); return invocation.return_value(GLib.Variant.new('(u)', [id]));
} }

View File

@@ -73,17 +73,14 @@ const LevelBar = new Lang.Class({
const OsdWindow = new Lang.Class({ const OsdWindow = new Lang.Class({
Name: 'OsdWindow', Name: 'OsdWindow',
_init: function(monitorIndex) { _init: function() {
this._popupSize = 0; this._popupSize = 0;
this.actor = new St.Widget({ x_expand: true, this.actor = new St.Widget({ x_expand: true,
y_expand: true, y_expand: true,
x_align: Clutter.ActorAlign.CENTER, x_align: Clutter.ActorAlign.CENTER,
y_align: Clutter.ActorAlign.CENTER }); y_align: Clutter.ActorAlign.CENTER });
this._currentMonitor = undefined;
this._monitorIndex = monitorIndex; this.setMonitor (-1);
let constraint = new Layout.MonitorConstraint({ index: monitorIndex });
this.actor.add_constraint(constraint);
this._box = new St.BoxLayout({ style_class: 'osd-window', this._box = new St.BoxLayout({ style_class: 'osd-window',
vertical: true }); vertical: true });
this.actor.add_actor(this._box); this.actor.add_actor(this._box);
@@ -112,6 +109,7 @@ const OsdWindow = new Lang.Class({
Main.layoutManager.connect('monitors-changed', Main.layoutManager.connect('monitors-changed',
Lang.bind(this, this._monitorsChanged)); Lang.bind(this, this._monitorsChanged));
this._monitorsChanged(); this._monitorsChanged();
Main.uiGroup.add_child(this.actor); Main.uiGroup.add_child(this.actor);
}, },
@@ -158,7 +156,6 @@ const OsdWindow = new Lang.Class({
Mainloop.source_remove(this._hideTimeoutId); Mainloop.source_remove(this._hideTimeoutId);
this._hideTimeoutId = Mainloop.timeout_add(HIDE_TIMEOUT, this._hideTimeoutId = Mainloop.timeout_add(HIDE_TIMEOUT,
Lang.bind(this, this._hide)); Lang.bind(this, this._hide));
GLib.Source.set_name_by_id(this._hideTimeoutId, '[gnome-shell] this._hide');
}, },
cancel: function() { cancel: function() {
@@ -191,9 +188,12 @@ const OsdWindow = new Lang.Class({
_monitorsChanged: function() { _monitorsChanged: function() {
/* assume 110x110 on a 640x480 display and scale from there */ /* assume 110x110 on a 640x480 display and scale from there */
let monitor = Main.layoutManager.monitors[this._monitorIndex]; let monitor;
if (!monitor)
return; // we are about to be removed if (this._currentMonitor >= 0)
monitor = Main.layoutManager.monitors[this._currentMonitor];
else
monitor = Main.layoutManager.primaryMonitor;
let scalew = monitor.width / 640.0; let scalew = monitor.width / 640.0;
let scaleh = monitor.height / 480.0; let scaleh = monitor.height / 480.0;
@@ -222,56 +222,23 @@ const OsdWindow = new Lang.Class({
// but the theme takes measures in unscaled dimensions // but the theme takes measures in unscaled dimensions
let scaleFactor = St.ThemeContext.get_for_stage(global.stage).scale_factor; let scaleFactor = St.ThemeContext.get_for_stage(global.stage).scale_factor;
this._box.style = 'min-height: %dpx;'.format(Math.max(minWidth, minHeight) / scaleFactor); this._box.style = 'min-height: %dpx;'.format(Math.max(minWidth, minHeight) / scaleFactor);
} },
});
setMonitor: function(index) {
const OsdWindowManager = new Lang.Class({ let constraint;
Name: 'OsdWindowManager',
if (index < 0)
_init: function() { index = -1;
this._osdWindows = []; if (this._currentMonitor == index)
Main.layoutManager.connect('monitors-changed', return;
Lang.bind(this, this._monitorsChanged));
this._monitorsChanged(); if (index < 0)
}, constraint = new Layout.MonitorConstraint({ primary: true });
else
_monitorsChanged: function() { constraint = new Layout.MonitorConstraint({ index: index });
for (let i = 0; i < Main.layoutManager.monitors.length; i++) {
if (this._osdWindows[i] == undefined) this.actor.clear_constraints();
this._osdWindows[i] = new OsdWindow(i); this.actor.add_constraint(constraint);
} this._currentMonitor = index;
for (let i = Main.layoutManager.monitors.length; i < this._osdWindows.length; i++) {
this._osdWindows[i].actor.destroy();
this._osdWindows[i] = null;
}
this._osdWindows.length = Main.layoutManager.monitors.length;
},
_showOsdWindow: function(monitorIndex, icon, label, level) {
this._osdWindows[monitorIndex].setIcon(icon);
this._osdWindows[monitorIndex].setLabel(label);
this._osdWindows[monitorIndex].setLevel(level);
this._osdWindows[monitorIndex].show();
},
show: function(monitorIndex, icon, label, level) {
if (monitorIndex != -1) {
for (let i = 0; i < this._osdWindows.length; i++) {
if (i == monitorIndex)
this._showOsdWindow(i, icon, label, level);
else
this._osdWindows[i].cancel();
}
} else {
for (let i = 0; i < this._osdWindows.length; i++)
this._showOsdWindow(i, icon, label, level);
}
},
hideAll: function() {
for (let i = 0; i < this._osdWindows.length; i++)
this._osdWindows[i].cancel();
} }
}); });

View File

@@ -365,7 +365,6 @@ const Overview = new Lang.Class({
this._lastHoveredWindow = null; this._lastHoveredWindow = null;
return GLib.SOURCE_REMOVE; return GLib.SOURCE_REMOVE;
})); }));
GLib.Source.set_name_by_id(this._windowSwitchTimeoutId, '[gnome-shell] Main.activateWindow');
} }
return DND.DragMotionResult.CONTINUE; return DND.DragMotionResult.CONTINUE;

View File

@@ -259,18 +259,13 @@ const ThumbnailsSlider = new Lang.Class({
Main.layoutManager.connect('monitors-changed', Lang.bind(this, this._updateSlide)); Main.layoutManager.connect('monitors-changed', Lang.bind(this, this._updateSlide));
this.actor.connect('notify::hover', Lang.bind(this, this._updateSlide)); this.actor.connect('notify::hover', Lang.bind(this, this._updateSlide));
global.window_manager.connect('switch-workspace', Lang.bind(this, this._updateSlide));
this._thumbnailsBox.actor.bind_property('visible', this.actor, 'visible', GObject.BindingFlags.SYNC_CREATE); this._thumbnailsBox.actor.bind_property('visible', this.actor, 'visible', GObject.BindingFlags.SYNC_CREATE);
}, },
_getAlwaysZoomOut: function() { _getAlwaysZoomOut: function() {
// Always show the pager when hover, during a drag, or if workspaces are // Always show the pager when hover, during a drag, or if workspaces are
// actually used, e.g. there are windows on any non-active workspace // actually used, e.g. there are windows on more than one
let alwaysZoomOut = this.actor.hover || let alwaysZoomOut = this.actor.hover || this._inDrag || !Meta.prefs_get_dynamic_workspaces() || global.screen.n_workspaces > 2;
this._inDrag ||
!Meta.prefs_get_dynamic_workspaces() ||
global.screen.n_workspaces > 2 ||
global.screen.get_active_workspace_index() != 0;
if (!alwaysZoomOut) { if (!alwaysZoomOut) {
let monitors = Main.layoutManager.monitors; let monitors = Main.layoutManager.monitors;

View File

@@ -595,7 +595,6 @@ const ActivitiesButton = new Lang.Class({
Mainloop.source_remove(this._xdndTimeOut); Mainloop.source_remove(this._xdndTimeOut);
this._xdndTimeOut = Mainloop.timeout_add(BUTTON_DND_ACTIVATION_TIMEOUT, this._xdndTimeOut = Mainloop.timeout_add(BUTTON_DND_ACTIVATION_TIMEOUT,
Lang.bind(this, this._xdndToggleOverview, actor)); Lang.bind(this, this._xdndToggleOverview, actor));
GLib.Source.set_name_by_id(this._xdndTimeOut, '[gnome-shell] this._xdndToggleOverview');
return DND.DragMotionResult.CONTINUE; return DND.DragMotionResult.CONTINUE;
}, },

View File

@@ -41,7 +41,8 @@ const ButtonBox = new Lang.Class({
}, },
_getPreferredWidth: function(actor, forHeight, alloc) { _getPreferredWidth: function(actor, forHeight, alloc) {
let child = actor.get_first_child(); let children = actor.get_children();
let child = children.length > 0 ? children[0] : null;
if (child) { if (child) {
[alloc.min_size, alloc.natural_size] = child.get_preferred_width(-1); [alloc.min_size, alloc.natural_size] = child.get_preferred_width(-1);
@@ -54,7 +55,8 @@ const ButtonBox = new Lang.Class({
}, },
_getPreferredHeight: function(actor, forWidth, alloc) { _getPreferredHeight: function(actor, forWidth, alloc) {
let child = actor.get_first_child(); let children = actor.get_children();
let child = children.length > 0 ? children[0] : null;
if (child) { if (child) {
[alloc.min_size, alloc.natural_size] = child.get_preferred_height(-1); [alloc.min_size, alloc.natural_size] = child.get_preferred_height(-1);
@@ -64,11 +66,13 @@ const ButtonBox = new Lang.Class({
}, },
_allocate: function(actor, box, flags) { _allocate: function(actor, box, flags) {
let child = actor.get_first_child(); let children = actor.get_children();
if (!child) if (children.length == 0)
return; return;
let child = children[0];
let [minWidth, natWidth] = child.get_preferred_width(-1); let [minWidth, natWidth] = child.get_preferred_width(-1);
let [minHeight, natHeight] = child.get_preferred_height(-1);
let availWidth = box.x2 - box.x1; let availWidth = box.x2 - box.x1;
let availHeight = box.y2 - box.y1; let availHeight = box.y2 - box.y1;

View File

@@ -107,7 +107,6 @@ const PointerWatcher = new Lang.Class({
this._timeoutId = Mainloop.timeout_add(minInterval, this._timeoutId = Mainloop.timeout_add(minInterval,
Lang.bind(this, this._onTimeout)); Lang.bind(this, this._onTimeout));
GLib.Source.set_name_by_id(this._timeoutId, '[gnome-shell] this._onTimeout');
}, },
_onTimeout: function() { _onTimeout: function() {

View File

@@ -46,28 +46,33 @@ function isPopupMenuItemVisible(child) {
* @side Side to which the arrow points. * @side Side to which the arrow points.
*/ */
function arrowIcon(side) { function arrowIcon(side) {
let iconName; let rotation;
switch (side) { switch (side) {
case St.Side.TOP: case St.Side.TOP:
iconName = 'pan-up-symbolic'; rotation = 180;
break; break;
case St.Side.RIGHT: case St.Side.RIGHT:
iconName = 'pan-end-symbolic'; rotation = - 90;
break; break;
case St.Side.BOTTOM: case St.Side.BOTTOM:
iconName = 'pan-down-symbolic'; rotation = 0;
break; break;
case St.Side.LEFT: case St.Side.LEFT:
iconName = 'pan-start-symbolic'; rotation = 90;
break; break;
} }
let gicon = new Gio.FileIcon({ file: Gio.File.new_for_path(global.datadir +
'/theme/menu-arrow-symbolic.svg') });
let arrow = new St.Icon({ style_class: 'popup-menu-arrow', let arrow = new St.Icon({ style_class: 'popup-menu-arrow',
icon_name: iconName, gicon: gicon,
accessible_role: Atk.Role.ARROW, accessible_role: Atk.Role.ARROW,
y_expand: true, y_expand: true,
y_align: Clutter.ActorAlign.CENTER }); y_align: Clutter.ActorAlign.CENTER });
arrow.rotation_angle_z = rotation;
return arrow; return arrow;
} }
@@ -246,16 +251,8 @@ const PopupSeparatorMenuItem = new Lang.Class({
this.actor.add(this.label); this.actor.add(this.label);
this.actor.label_actor = this.label; this.actor.label_actor = this.label;
this.label.connect('notify::text',
Lang.bind(this, this._syncVisibility));
this._syncVisibility();
this._separator = new Separator.HorizontalSeparator({ style_class: 'popup-separator-menu-item' }); this._separator = new Separator.HorizontalSeparator({ style_class: 'popup-separator-menu-item' });
this.actor.add(this._separator.actor, { expand: true }); this.actor.add(this._separator.actor, { expand: true });
},
_syncVisibility: function() {
this.label.visible = this.label.text != '';
} }
}); });

View File

@@ -117,7 +117,7 @@ function loadRemoteSearchProviders(callback) {
} }
} }
let searchSettings = new Gio.Settings({ schema_id: Search.SEARCH_PROVIDERS_SCHEMA }); let searchSettings = new Gio.Settings({ schema: Search.SEARCH_PROVIDERS_SCHEMA });
if (searchSettings.get_boolean('disable-external')) { if (searchSettings.get_boolean('disable-external')) {
callback([]); callback([]);
return; return;

View File

@@ -38,8 +38,8 @@ const RunDialog = new Lang.Class({
this.parent({ styleClass: 'run-dialog', this.parent({ styleClass: 'run-dialog',
destroyOnClose: false }); destroyOnClose: false });
this._lockdownSettings = new Gio.Settings({ schema_id: LOCKDOWN_SCHEMA }); this._lockdownSettings = new Gio.Settings({ schema: LOCKDOWN_SCHEMA });
this._terminalSettings = new Gio.Settings({ schema_id: TERMINAL_SCHEMA }); this._terminalSettings = new Gio.Settings({ schema: TERMINAL_SCHEMA });
global.settings.connect('changed::development-tools', Lang.bind(this, function () { global.settings.connect('changed::development-tools', Lang.bind(this, function () {
this._enableInternalCommands = global.settings.get_boolean('development-tools'); this._enableInternalCommands = global.settings.get_boolean('development-tools');
})); }));
@@ -50,14 +50,10 @@ const RunDialog = new Lang.Class({
Main.createLookingGlass().open(); Main.createLookingGlass().open();
}), }),
'r': Lang.bind(this, function() { 'r': Lang.bind(this, this._restart),
global.reexec_self();
}),
// Developer brain backwards compatibility // Developer brain backwards compatibility
'restart': Lang.bind(this, function() { 'restart': Lang.bind(this, this._restart),
global.reexec_self();
}),
'debugexit': Lang.bind(this, function() { 'debugexit': Lang.bind(this, function() {
Meta.quit(Meta.ExitCode.ERROR); Meta.quit(Meta.ExitCode.ERROR);
@@ -271,6 +267,12 @@ const RunDialog = new Lang.Class({
} }
}, },
_restart: function() {
this._shouldFadeOut = false;
this.close();
Meta.restart('Restarting...');
},
open: function() { open: function() {
this._history.lastItem(); this._history.lastItem();
this._errorBox.hide(); this._errorBox.hide();

View File

@@ -563,7 +563,7 @@ const ScreenShield = new Lang.Class({
this._loginSession.connectSignal('Unlock', Lang.bind(this, function() { this.deactivate(false); })); this._loginSession.connectSignal('Unlock', Lang.bind(this, function() { this.deactivate(false); }));
})); }));
this._settings = new Gio.Settings({ schema_id: SCREENSAVER_SCHEMA }); this._settings = new Gio.Settings({ schema: SCREENSAVER_SCHEMA });
this._isModal = false; this._isModal = false;
this._hasLockScreen = false; this._hasLockScreen = false;
@@ -850,7 +850,6 @@ const ScreenShield = new Lang.Class({
this.lock(false); this.lock(false);
return GLib.SOURCE_REMOVE; return GLib.SOURCE_REMOVE;
})); }));
GLib.Source.set_name_by_id(this._lockTimeoutId, '[gnome-shell] this.lock');
} }
this._activateFade(this._longLightbox, STANDARD_FADE_TIME); this._activateFade(this._longLightbox, STANDARD_FADE_TIME);
@@ -1042,7 +1041,6 @@ const ScreenShield = new Lang.Class({
if (!this._arrowAnimationId) { if (!this._arrowAnimationId) {
this._arrowAnimationId = Mainloop.timeout_add(6000, Lang.bind(this, this._animateArrows)); this._arrowAnimationId = Mainloop.timeout_add(6000, Lang.bind(this, this._animateArrows));
GLib.Source.set_name_by_id(this._arrowAnimationId, '[gnome-shell] this._animateArrows');
this._animateArrows(); this._animateArrows();
} }
@@ -1110,11 +1108,10 @@ const ScreenShield = new Lang.Class({
if (params.fadeToBlack && params.animateFade) { if (params.fadeToBlack && params.animateFade) {
// Take a beat // Take a beat
let id = Mainloop.timeout_add(1000 * MANUAL_FADE_TIME, Lang.bind(this, function() { Mainloop.timeout_add(1000 * MANUAL_FADE_TIME, Lang.bind(this, function() {
this._activateFade(this._shortLightbox, MANUAL_FADE_TIME); this._activateFade(this._shortLightbox, MANUAL_FADE_TIME);
return GLib.SOURCE_REMOVE; return GLib.SOURCE_REMOVE;
})); }));
GLib.Source.set_name_by_id(id, '[gnome-shell] this._activateFade');
} else { } else {
if (params.fadeToBlack) if (params.fadeToBlack)
this._activateFade(this._shortLightbox, 0); this._activateFade(this._shortLightbox, 0);

View File

@@ -11,7 +11,6 @@ const Shell = imports.gi.Shell;
const Signals = imports.signals; const Signals = imports.signals;
const St = imports.gi.St; const St = imports.gi.St;
const GrabHelper = imports.ui.grabHelper;
const Lightbox = imports.ui.lightbox; const Lightbox = imports.ui.lightbox;
const Main = imports.ui.main; const Main = imports.ui.main;
const Tweener = imports.ui.tweener; const Tweener = imports.ui.tweener;
@@ -68,13 +67,6 @@ const ScreenshotService = new Lang.Class({
Gio.DBus.session.own_name('org.gnome.Shell.Screenshot', Gio.BusNameOwnerFlags.REPLACE, null, null); Gio.DBus.session.own_name('org.gnome.Shell.Screenshot', Gio.BusNameOwnerFlags.REPLACE, null, null);
}, },
_checkArea: function(x, y, width, height) {
return x >= 0 && y >= 0 &&
width > 0 && height > 0 &&
x + width <= global.screen_width &&
y + height <= global.screen_height;
},
_onScreenshotComplete: function(obj, result, area, filenameUsed, flash, invocation) { _onScreenshotComplete: function(obj, result, area, filenameUsed, flash, invocation) {
if (flash && result) { if (flash && result) {
let flashspot = new Flashspot(area); let flashspot = new Flashspot(area);
@@ -85,31 +77,13 @@ const ScreenshotService = new Lang.Class({
invocation.return_value(retval); invocation.return_value(retval);
}, },
_scaleArea: function(x, y, width, height) {
let scaleFactor = St.ThemeContext.get_for_stage(global.stage).scale_factor;
x *= scaleFactor;
y *= scaleFactor;
width *= scaleFactor;
height *= scaleFactor;
return [x, y, width, height];
},
_unscaleArea: function(x, y, width, height) {
let scaleFactor = St.ThemeContext.get_for_stage(global.stage).scale_factor;
x /= scaleFactor;
y /= scaleFactor;
width /= scaleFactor;
height /= scaleFactor;
return [x, y, width, height];
},
ScreenshotAreaAsync : function (params, invocation) { ScreenshotAreaAsync : function (params, invocation) {
let [x, y, width, height, flash, filename, callback] = params; let [x, y, width, height, flash, filename, callback] = params;
[x, y, width, height] = this._scaleArea(x, y, width, height); if (x < 0 || y < 0 ||
if (!this._checkArea(x, y, width, height)) { width <= 0 || height <= 0 ||
invocation.return_error_literal(Gio.IOErrorEnum, x + width > global.screen_width || y + height > global.screen_height) {
Gio.IOErrorEnum.CANCELLED, invocation.return_error_literal(Gio.IOErrorEnum, Gio.IOErrorEnum.CANCELLED,
"Invalid params"); "Invalid params");
return; return;
} }
let screenshot = new Shell.Screenshot(); let screenshot = new Shell.Screenshot();
@@ -140,9 +114,9 @@ const ScreenshotService = new Lang.Class({
selectArea.connect('finished', Lang.bind(this, selectArea.connect('finished', Lang.bind(this,
function(selectArea, areaRectangle) { function(selectArea, areaRectangle) {
if (areaRectangle) { if (areaRectangle) {
let retRectangle = this._unscaleArea(areaRectangle.x, areaRectangle.y, let retval = GLib.Variant.new('(iiii)',
areaRectangle.width, areaRectangle.height); [areaRectangle.x, areaRectangle.y,
let retval = GLib.Variant.new('(iiii)', retRectangle); areaRectangle.width, areaRectangle.height]);
invocation.return_value(retval); invocation.return_value(retval);
} else { } else {
invocation.return_error_literal(Gio.IOErrorEnum, Gio.IOErrorEnum.CANCELLED, invocation.return_error_literal(Gio.IOErrorEnum, Gio.IOErrorEnum.CANCELLED,
@@ -151,18 +125,9 @@ const ScreenshotService = new Lang.Class({
})); }));
}, },
FlashAreaAsync: function(params, invocation) { FlashArea: function(x, y, width, height) {
let [x, y, width, height] = params;
[x, y, width, height] = this._scaleArea(x, y, width, height);
if (!this._checkArea(x, y, width, height)) {
invocation.return_error_literal(Gio.IOErrorEnum,
Gio.IOErrorEnum.CANCELLED,
"Invalid params");
return;
}
let flashspot = new Flashspot({ x : x, y : y, width: width, height: height}); let flashspot = new Flashspot({ x : x, y : y, width: width, height: height});
flashspot.fire(); flashspot.fire();
invocation.return_value(null);
} }
}); });
@@ -174,7 +139,6 @@ const SelectArea = new Lang.Class({
this._startY = -1; this._startY = -1;
this._lastX = 0; this._lastX = 0;
this._lastY = 0; this._lastY = 0;
this._result = null;
this._initRubberbandColors(); this._initRubberbandColors();
@@ -184,12 +148,12 @@ const SelectArea = new Lang.Class({
y: 0 }); y: 0 });
Main.uiGroup.add_actor(this._group); Main.uiGroup.add_actor(this._group);
this._grabHelper = new GrabHelper.GrabHelper(this._group);
this._group.connect('button-press-event', this._group.connect('button-press-event',
Lang.bind(this, this._onButtonPress)); Lang.bind(this, this._onButtonPress));
this._group.connect('button-release-event', this._group.connect('button-release-event',
Lang.bind(this, this._onButtonRelease)); Lang.bind(this, this._onButtonRelease));
this._group.connect('key-press-event',
Lang.bind(this, this._onKeyPress));
this._group.connect('motion-event', this._group.connect('motion-event',
Lang.bind(this, this._onMotionEvent)); Lang.bind(this, this._onMotionEvent));
@@ -205,12 +169,10 @@ const SelectArea = new Lang.Class({
}, },
show: function() { show: function() {
if (!this._grabHelper.grab({ actor: this._group, if (!Main.pushModal(this._group) || this._group.visible)
onUngrab: Lang.bind(this, this._onUngrab) }))
return; return;
global.screen.set_cursor(Meta.Cursor.CROSSHAIR); global.screen.set_cursor(Meta.Cursor.CROSSHAIR);
Main.uiGroup.set_child_above_sibling(this._group, null);
this._group.visible = true; this._group.visible = true;
}, },
@@ -240,6 +202,13 @@ const SelectArea = new Lang.Class({
height: Math.abs(this._startY - this._lastY) }; height: Math.abs(this._startY - this._lastY) };
}, },
_onKeyPress: function(actor, event) {
if (event.get_key_symbol() == Clutter.Escape)
this._destroy(null, false);
return Clutter.EVENT_PROPAGATE;
},
_onMotionEvent: function(actor, event) { _onMotionEvent: function(actor, event) {
if (this._startX == -1 || this._startY == -1) if (this._startX == -1 || this._startY == -1)
return Clutter.EVENT_PROPAGATE; return Clutter.EVENT_PROPAGATE;
@@ -261,28 +230,24 @@ const SelectArea = new Lang.Class({
}, },
_onButtonRelease: function(actor, event) { _onButtonRelease: function(actor, event) {
this._result = this._getGeometry(); this._destroy(this._getGeometry(), true);
Tweener.addTween(this._group,
{ opacity: 0,
time: 0.2,
transition: 'easeOutQuad',
onComplete: Lang.bind(this,
function() {
this._grabHelper.ungrab();
})
});
return Clutter.EVENT_PROPAGATE; return Clutter.EVENT_PROPAGATE;
}, },
_onUngrab: function() { _destroy: function(geometry, fade) {
global.screen.set_cursor(Meta.Cursor.DEFAULT); Tweener.addTween(this._group,
this.emit('finished', this._result); { opacity: 0,
time: fade ? 0.2 : 0,
transition: 'easeOutQuad',
onComplete: Lang.bind(this,
function() {
Main.popModal(this._group);
this._group.destroy();
global.screen.set_cursor(Meta.Cursor.DEFAULT);
GLib.idle_add(GLib.PRIORITY_DEFAULT, Lang.bind(this, this.emit('finished', geometry);
function() { })
this._group.destroy(); });
return GLib.SOURCE_REMOVE;
}));
} }
}); });
Signals.addSignalMethods(SelectArea.prototype); Signals.addSignalMethods(SelectArea.prototype);

View File

@@ -39,12 +39,11 @@ const Main = imports.ui.main;
function sleep(milliseconds) { function sleep(milliseconds) {
let cb; let cb;
let id = Mainloop.timeout_add(milliseconds, function() { Mainloop.timeout_add(milliseconds, function() {
if (cb) if (cb)
cb(); cb();
return GLib.SOURCE_REMOVE; return GLib.SOURCE_REMOVE;
}); });
GLib.Source.set_name_by_id(id, '[gnome-shell] sleep');
return function(callback) { return function(callback) {
cb = callback; cb = callback;

View File

@@ -31,7 +31,7 @@ const SearchSystem = new Lang.Class({
this._registerProvider(new AppDisplay.AppSearchProvider()); this._registerProvider(new AppDisplay.AppSearchProvider());
this._searchSettings = new Gio.Settings({ schema_id: SEARCH_PROVIDERS_SCHEMA }); this._searchSettings = new Gio.Settings({ schema: SEARCH_PROVIDERS_SCHEMA });
this._searchSettings.connect('changed::disabled', Lang.bind(this, this._reloadRemoteProviders)); this._searchSettings.connect('changed::disabled', Lang.bind(this, this._reloadRemoteProviders));
this._searchSettings.connect('changed::disable-external', Lang.bind(this, this._reloadRemoteProviders)); this._searchSettings.connect('changed::disable-external', Lang.bind(this, this._reloadRemoteProviders));
this._searchSettings.connect('changed::sort-order', Lang.bind(this, this._reloadRemoteProviders)); this._searchSettings.connect('changed::sort-order', Lang.bind(this, this._reloadRemoteProviders));
@@ -68,9 +68,6 @@ const SearchSystem = new Lang.Class({
_unregisterProvider: function (provider) { _unregisterProvider: function (provider) {
let index = this._providers.indexOf(provider); let index = this._providers.indexOf(provider);
this._providers.splice(index, 1); this._providers.splice(index, 1);
if (provider.display)
provider.display.destroy();
}, },
getProviders: function() { getProviders: function() {

View File

@@ -18,6 +18,7 @@ const _modes = {
'restrictive': { 'restrictive': {
parentMode: null, parentMode: null,
stylesheetName: 'gnome-shell.css', stylesheetName: 'gnome-shell.css',
overridesSchema: 'org.gnome.shell.overrides',
hasOverview: false, hasOverview: false,
showCalendarEvents: false, showCalendarEvents: false,
allowSettings: false, allowSettings: false,
@@ -139,14 +140,13 @@ function _loadModes() {
function listModes() { function listModes() {
_loadModes(); _loadModes();
let id = Mainloop.idle_add(function() { Mainloop.idle_add(function() {
let names = Object.getOwnPropertyNames(_modes); let names = Object.getOwnPropertyNames(_modes);
for (let i = 0; i < names.length; i++) for (let i = 0; i < names.length; i++)
if (_modes[names[i]].isPrimary) if (_modes[names[i]].isPrimary)
print(names[i]); print(names[i]);
Mainloop.quit('listModes'); Mainloop.quit('listModes');
}); });
GLib.Source.set_name_by_id(id, '[gnome-shell] listModes');
Mainloop.run('listModes'); Mainloop.run('listModes');
} }

View File

@@ -141,7 +141,12 @@ const GnomeShell = new Lang.Class({
if (params['icon']) if (params['icon'])
icon = Gio.Icon.new_for_string(params['icon']); icon = Gio.Icon.new_for_string(params['icon']);
Main.osdWindowManager.show(monitorIndex, icon, params['label'], params['level']); Main.osdWindow.setIcon(icon);
Main.osdWindow.setMonitor (monitorIndex);
Main.osdWindow.setLabel(params['label']);
Main.osdWindow.setLevel(params['level']);
Main.osdWindow.show();
}, },
FocusApp: function(id) { FocusApp: function(id) {

View File

@@ -1,66 +0,0 @@
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
const Signals = imports.signals;
const Lang = imports.lang;
const Meta = imports.gi.Meta;
const Clutter = imports.gi.Clutter;
const ShowOverviewAction = new Lang.Class({
Name: 'ShowOverviewAction',
Extends: Clutter.GestureAction,
_init : function() {
this.parent();
this.set_n_touch_points (3);
global.display.connect('grab-op-begin', Lang.bind(this, this.cancel));
global.display.connect('grab-op-end', Lang.bind(this, this.cancel));
},
vfunc_gesture_prepare : function(action, actor) {
return this.get_n_current_points() == this.get_n_touch_points();
},
_getBoundingRect : function(motion) {
let minX, minY, maxX, maxY;
for (let i = 0; i < this.get_n_current_points(); i++) {
let x, y;
if (motion == true) {
[x, y] = this.get_motion_coords(i);
} else {
[x, y] = this.get_press_coords(i);
}
if (i == 0) {
minX = maxX = x;
minY = maxY = y;
} else {
minX = Math.min(minX, x);
minY = Math.min(minY, y);
maxX = Math.max(maxX, x);
maxY = Math.max(maxY, y);
}
}
return new Meta.Rectangle({ x: minX,
y: minY,
width: maxX - minX,
height: maxY - minY });
},
vfunc_gesture_begin : function(action, actor) {
this._initialRect = this._getBoundingRect(false);
return true;
},
vfunc_gesture_end : function(action, actor) {
let rect = this._getBoundingRect(true);
let oldArea = this._initialRect.width * this._initialRect.height;
let newArea = rect.width * rect.height;
let areaDiff = newArea / oldArea;
this.emit('activated', areaDiff);
}
});
Signals.addSignalMethods(ShowOverviewAction.prototype);

View File

@@ -48,7 +48,7 @@ const ATIndicator = new Lang.Class({
this.actor.add_child(this._hbox); this.actor.add_child(this._hbox);
this._a11ySettings = new Gio.Settings({ schema_id: A11Y_SCHEMA }); this._a11ySettings = new Gio.Settings({ schema: A11Y_SCHEMA });
this._a11ySettings.connect('changed::' + KEY_ALWAYS_SHOW, Lang.bind(this, this._queueSyncMenuVisibility)); this._a11ySettings.connect('changed::' + KEY_ALWAYS_SHOW, Lang.bind(this, this._queueSyncMenuVisibility));
let highContrast = this._buildHCItem(); let highContrast = this._buildHCItem();
@@ -103,7 +103,6 @@ const ATIndicator = new Lang.Class({
return; return;
this._syncMenuVisbilityIdle = Mainloop.idle_add(Lang.bind(this, this._syncMenuVisibility)); this._syncMenuVisbilityIdle = Mainloop.idle_add(Lang.bind(this, this._syncMenuVisibility));
GLib.Source.set_name_by_id(this._syncMenuVisbilityIdle, '[gnome-shell] this._syncMenuVisibility');
}, },
_buildItemExtended: function(string, initial_value, writable, on_set) { _buildItemExtended: function(string, initial_value, writable, on_set) {
@@ -118,7 +117,7 @@ const ATIndicator = new Lang.Class({
}, },
_buildItem: function(string, schema, key) { _buildItem: function(string, schema, key) {
let settings = new Gio.Settings({ schema_id: schema }); let settings = new Gio.Settings({ schema: schema });
let widget = this._buildItemExtended(string, let widget = this._buildItemExtended(string,
settings.get_boolean(key), settings.get_boolean(key),
settings.is_writable(key), settings.is_writable(key),
@@ -134,8 +133,8 @@ const ATIndicator = new Lang.Class({
}, },
_buildHCItem: function() { _buildHCItem: function() {
let interfaceSettings = new Gio.Settings({ schema_id: DESKTOP_INTERFACE_SCHEMA }); let interfaceSettings = new Gio.Settings({ schema: DESKTOP_INTERFACE_SCHEMA });
let wmSettings = new Gio.Settings({ schema_id: WM_SCHEMA }); let wmSettings = new Gio.Settings({ schema: WM_SCHEMA });
let gtkTheme = interfaceSettings.get_string(KEY_GTK_THEME); let gtkTheme = interfaceSettings.get_string(KEY_GTK_THEME);
let iconTheme = interfaceSettings.get_string(KEY_ICON_THEME); let iconTheme = interfaceSettings.get_string(KEY_ICON_THEME);
let wmTheme = wmSettings.get_string(KEY_WM_THEME); let wmTheme = wmSettings.get_string(KEY_WM_THEME);
@@ -186,7 +185,7 @@ const ATIndicator = new Lang.Class({
}, },
_buildFontItem: function() { _buildFontItem: function() {
let settings = new Gio.Settings({ schema_id: DESKTOP_INTERFACE_SCHEMA }); let settings = new Gio.Settings({ schema: DESKTOP_INTERFACE_SCHEMA });
let factor = settings.get_double(KEY_TEXT_SCALING_FACTOR); let factor = settings.get_double(KEY_TEXT_SCALING_FACTOR);
let initial_setting = (factor > 1.0); let initial_setting = (factor > 1.0);

View File

@@ -292,10 +292,6 @@ const InputSourcePopup = new Lang.Class({
this._select(this._previous()); this._select(this._previous());
else if (keysym == Clutter.Right) else if (keysym == Clutter.Right)
this._select(this._next()); this._select(this._next());
else
return Clutter.EVENT_PROPAGATE;
return Clutter.EVENT_STOP;
}, },
_finish : function() { _finish : function() {
@@ -365,18 +361,18 @@ const InputSourceIndicator = new Lang.Class({
this._mruSources = []; this._mruSources = [];
this._keybindingAction = this._keybindingAction =
Main.wm.addKeybinding('switch-input-source', Main.wm.addKeybinding('switch-input-source',
new Gio.Settings({ schema_id: "org.gnome.desktop.wm.keybindings" }), new Gio.Settings({ schema: "org.gnome.desktop.wm.keybindings" }),
Meta.KeyBindingFlags.REVERSES, Meta.KeyBindingFlags.REVERSES,
Shell.KeyBindingMode.ALL, Shell.KeyBindingMode.ALL,
Lang.bind(this, this._switchInputSource)); Lang.bind(this, this._switchInputSource));
this._keybindingActionBackward = this._keybindingActionBackward =
Main.wm.addKeybinding('switch-input-source-backward', Main.wm.addKeybinding('switch-input-source-backward',
new Gio.Settings({ schema_id: "org.gnome.desktop.wm.keybindings" }), new Gio.Settings({ schema: "org.gnome.desktop.wm.keybindings" }),
Meta.KeyBindingFlags.REVERSES | Meta.KeyBindingFlags.REVERSES |
Meta.KeyBindingFlags.IS_REVERSED, Meta.KeyBindingFlags.REVERSED,
Shell.KeyBindingMode.ALL, Shell.KeyBindingMode.ALL,
Lang.bind(this, this._switchInputSource)); Lang.bind(this, this._switchInputSource));
this._settings = new Gio.Settings({ schema_id: DESKTOP_INPUT_SOURCES_SCHEMA }); this._settings = new Gio.Settings({ schema: DESKTOP_INPUT_SOURCES_SCHEMA });
this._settings.connect('changed::' + KEY_CURRENT_INPUT_SOURCE, Lang.bind(this, this._currentInputSourceChanged)); this._settings.connect('changed::' + KEY_CURRENT_INPUT_SOURCE, Lang.bind(this, this._currentInputSourceChanged));
this._settings.connect('changed::' + KEY_INPUT_SOURCES, Lang.bind(this, this._inputSourcesChanged)); this._settings.connect('changed::' + KEY_INPUT_SOURCES, Lang.bind(this, this._inputSourcesChanged));

View File

@@ -43,7 +43,7 @@ const Indicator = new Lang.Class({
_init: function() { _init: function() {
this.parent(); this.parent();
this._settings = new Gio.Settings({ schema_id: LOCATION_SCHEMA }); this._settings = new Gio.Settings({ schema: LOCATION_SCHEMA });
this._settings.connect('changed::' + MAX_ACCURACY_LEVEL, this._settings.connect('changed::' + MAX_ACCURACY_LEVEL,
Lang.bind(this, this._onMaxAccuracyLevelChanged)); Lang.bind(this, this._onMaxAccuracyLevelChanged));
@@ -191,12 +191,8 @@ const Indicator = new Lang.Class({
let unpacked = properties.deep_unpack(); let unpacked = properties.deep_unpack();
if ("InUse" in unpacked) if ("InUse" in unpacked)
this._syncIndicator(); this._syncIndicator();
if ("AvailableAccuracyLevel" in unpacked) { if ("AvailableAccuracyLevel" in unpacked)
this._availableAccuracyLevel = this._proxy.AvailableAccuracyLevel; this._availableAccuracyLevel = this._proxy.AvailableAccuracyLevel;
if (this._getMaxAccuracyLevel() != 0)
this._settings.set_enum(MAX_ACCURACY_LEVEL, this._availableAccuracyLevel);
}
} }
}); });

View File

@@ -44,33 +44,6 @@ const NM80211Mode = NetworkManager['80211Mode'];
const NM80211ApFlags = NetworkManager['80211ApFlags']; const NM80211ApFlags = NetworkManager['80211ApFlags'];
const NM80211ApSecurityFlags = NetworkManager['80211ApSecurityFlags']; const NM80211ApSecurityFlags = NetworkManager['80211ApSecurityFlags'];
const PortalHelperResult = {
CANCELLED: 0,
COMPLETED: 1,
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 PortalHelperProxy = Gio.DBusProxy.makeProxyWrapper(PortalHelperIface);
function ssidCompare(one, two) { function ssidCompare(one, two) {
if (!one || !two) if (!one || !two)
return false; return false;
@@ -234,23 +207,13 @@ const NMConnectionSection = new Lang.Class({
this.item.menu.addMenuItem(this._labelSection); this.item.menu.addMenuItem(this._labelSection);
this.item.menu.addMenuItem(this._radioSection); this.item.menu.addMenuItem(this._radioSection);
this._notifyConnectivityId = this._client.connect('notify::connectivity', Lang.bind(this, this._iconChanged)); this.connect('icon-changed', Lang.bind(this, this._sync));
}, },
destroy: function() { destroy: function() {
if (this._notifyConnectivityId != 0) {
this._client.disconnect(this._notifyConnectivityId);
this._notifyConnectivityId = 0;
}
this.item.destroy(); this.item.destroy();
}, },
_iconChanged: function() {
this._sync();
this.emit('icon-changed');
},
_sync: function() { _sync: function() {
let nItems = this._connectionItems.size; let nItems = this._connectionItems.size;
@@ -315,7 +278,7 @@ const NMConnectionSection = new Lang.Class({
return; return;
item.connect('icon-changed', Lang.bind(this, function() { item.connect('icon-changed', Lang.bind(this, function() {
this._iconChanged(); this.emit('icon-changed');
})); }));
item.connect('activation-failed', Lang.bind(this, function(item, reason) { item.connect('activation-failed', Lang.bind(this, function(item, reason) {
this.emit('activation-failed', reason); this.emit('activation-failed', reason);
@@ -460,18 +423,18 @@ const NMConnectionDevice = new Lang.Class({
case NetworkManager.DeviceState.UNMANAGED: case NetworkManager.DeviceState.UNMANAGED:
/* Translators: this is for network devices that are physically present but are not /* Translators: this is for network devices that are physically present but are not
under NetworkManager's control (and thus cannot be used in the menu) */ under NetworkManager's control (and thus cannot be used in the menu) */
return _("Unmanaged"); return _("unmanaged");
case NetworkManager.DeviceState.DEACTIVATING: case NetworkManager.DeviceState.DEACTIVATING:
return _("Disconnecting"); return _("disconnecting...");
case NetworkManager.DeviceState.PREPARE: case NetworkManager.DeviceState.PREPARE:
case NetworkManager.DeviceState.CONFIG: case NetworkManager.DeviceState.CONFIG:
case NetworkManager.DeviceState.IP_CONFIG: case NetworkManager.DeviceState.IP_CONFIG:
case NetworkManager.DeviceState.IP_CHECK: case NetworkManager.DeviceState.IP_CHECK:
case NetworkManager.DeviceState.SECONDARIES: case NetworkManager.DeviceState.SECONDARIES:
return _("Connecting"); return _("connecting...");
case NetworkManager.DeviceState.NEED_AUTH: case NetworkManager.DeviceState.NEED_AUTH:
/* Translators: this is for network connections that require some kind of key or password */ /* Translators: this is for network connections that require some kind of key or password */
return _("Authentication required"); return _("authentication required");
case NetworkManager.DeviceState.UNAVAILABLE: case NetworkManager.DeviceState.UNAVAILABLE:
// This state is actually a compound of various states (generically unavailable, // This state is actually a compound of various states (generically unavailable,
// firmware missing), that are exposed by different properties (whose state may // firmware missing), that are exposed by different properties (whose state may
@@ -479,13 +442,13 @@ const NMConnectionDevice = new Lang.Class({
if (this._device.firmware_missing) { if (this._device.firmware_missing) {
/* Translators: this is for devices that require some kind of firmware or kernel /* Translators: this is for devices that require some kind of firmware or kernel
module, which is missing */ module, which is missing */
return _("Firmware missing"); return _("firmware missing");
} }
/* Translators: this is for a network device that cannot be activated (for example it /* Translators: this is for a network device that cannot be activated (for example it
is disabled by rfkill, or it has no coverage */ is disabled by rfkill, or it has no coverage */
return _("Unavailable"); return _("unavailable");
case NetworkManager.DeviceState.FAILED: case NetworkManager.DeviceState.FAILED:
return _("Connection failed"); return _("connection failed");
default: default:
log('Device state invalid, is %d'.format(this._device.state)); log('Device state invalid, is %d'.format(this._device.state));
return 'invalid'; return 'invalid';
@@ -560,7 +523,7 @@ const NMDeviceModem = new Lang.Class({
if (this._mobileDevice) { if (this._mobileDevice) {
this._operatorNameId = this._mobileDevice.connect('notify::operator-name', Lang.bind(this, this._sync)); this._operatorNameId = this._mobileDevice.connect('notify::operator-name', Lang.bind(this, this._sync));
this._signalQualityId = this._mobileDevice.connect('notify::signal-quality', Lang.bind(this, function() { this._signalQualityId = this._mobileDevice.connect('notify::signal-quality', Lang.bind(this, function() {
this._iconChanged(); this.emit('icon-changed');
})); }));
} }
}, },
@@ -1182,16 +1145,10 @@ const NMDeviceWireless = new Lang.Class({
this._wirelessHwEnabledChangedId = this._client.connect('notify::wireless-hardware-enabled', Lang.bind(this, this._sync)); this._wirelessHwEnabledChangedId = this._client.connect('notify::wireless-hardware-enabled', Lang.bind(this, this._sync));
this._activeApChangedId = this._device.connect('notify::active-access-point', Lang.bind(this, this._activeApChanged)); this._activeApChangedId = this._device.connect('notify::active-access-point', Lang.bind(this, this._activeApChanged));
this._stateChangedId = this._device.connect('state-changed', Lang.bind(this, this._deviceStateChanged)); this._stateChangedId = this._device.connect('state-changed', Lang.bind(this, this._deviceStateChanged));
this._notifyConnectivityId = this._client.connect('notify::connectivity', Lang.bind(this, this._iconChanged));
this._sync(); this._sync();
}, },
_iconChanged: function() {
this._sync();
this.emit('icon-changed');
},
destroy: function() { destroy: function() {
if (this._activeApChangedId) { if (this._activeApChangedId) {
GObject.Object.prototype.disconnect.call(this._device, this._activeApChangedId); GObject.Object.prototype.disconnect.call(this._device, this._activeApChangedId);
@@ -1217,10 +1174,6 @@ const NMDeviceWireless = new Lang.Class({
this._dialog.destroy(); this._dialog.destroy();
this._dialog = null; this._dialog = null;
} }
if (this._notifyConnectivityId) {
this._client.disconnect(this._notifyConnectivityId);
this._notifyConnectivityId = 0;
}
this.item.destroy(); this.item.destroy();
}, },
@@ -1258,7 +1211,7 @@ const NMDeviceWireless = new Lang.Class({
}, },
_strengthChanged: function() { _strengthChanged: function() {
this._iconChanged(); this.emit('icon-changed');
}, },
_activeApChanged: function() { _activeApChanged: function() {
@@ -1608,7 +1561,6 @@ const NMApplet = new Lang.Class({
this._activeConnections = [ ]; this._activeConnections = [ ];
this._connections = [ ]; this._connections = [ ];
this._connectivityQueue = [ ];
this._mainConnection = null; this._mainConnection = null;
this._mainConnectionIconChangedId = 0; this._mainConnectionIconChangedId = 0;
@@ -1637,7 +1589,6 @@ const NMApplet = new Lang.Class({
this._client.connect('notify::primary-connection', Lang.bind(this, this._syncMainConnection)); this._client.connect('notify::primary-connection', Lang.bind(this, this._syncMainConnection));
this._client.connect('notify::activating-connection', Lang.bind(this, this._syncMainConnection)); this._client.connect('notify::activating-connection', Lang.bind(this, this._syncMainConnection));
this._client.connect('notify::active-connections', Lang.bind(this, this._syncVPNConnections)); this._client.connect('notify::active-connections', Lang.bind(this, this._syncVPNConnections));
this._client.connect('notify::connectivity', Lang.bind(this, this._syncConnectivity));
this._client.connect('device-added', Lang.bind(this, this._deviceAdded)); this._client.connect('device-added', Lang.bind(this, this._deviceAdded));
this._client.connect('device-removed', Lang.bind(this, this._deviceRemoved)); this._client.connect('device-removed', Lang.bind(this, this._deviceRemoved));
this._settings.connect('new-connection', Lang.bind(this, this._newConnection)); this._settings.connect('new-connection', Lang.bind(this, this._newConnection));
@@ -1806,7 +1757,6 @@ const NMApplet = new Lang.Class({
} }
this._updateIcon(); this._updateIcon();
this._syncConnectivity();
}, },
_syncVPNConnections: function() { _syncVPNConnections: function() {
@@ -1912,97 +1862,6 @@ const NMApplet = new Lang.Class({
_syncNMState: function() { _syncNMState: function() {
this.indicators.visible = this._client.manager_running; this.indicators.visible = this._client.manager_running;
this.menu.actor.visible = this._client.networking_enabled; this.menu.actor.visible = this._client.networking_enabled;
this._syncConnectivity();
},
_flushConnectivityQueue: function() {
if (this._portalHelperProxy) {
for (let item of this._connectivityQueue)
this._portalHelperProxy.CloseRemote(item);
}
this._connectivityQueue = [];
},
_closeConnectivityCheck: function(path) {
let index = this._connectivityQueue.indexOf(path);
if (index >= 0) {
if (this._portalHelperProxy)
this._portalHelperProxy.CloseRemote(path);
this._connectivityQueue.splice(index, 1);
}
},
_portalHelperDone: function(proxy, emitter, parameters) {
let [path, result] = parameters;
if (result == PortalHelperResult.CANCELLED) {
// Keep the connection in the queue, so the user is not
// spammed with more logins until we next flush the queue,
// which will happen once he chooses a better connection
// or we get to full connectivity through other means
} else if (result == PortalHelperResult.COMPLETED) {
this._closeConnectivityCheck(path);
return;
} else if (result == PortalHelperResult.RECHECK) {
this._client.check_connectivity_async(null, Lang.bind(this, function(client, result) {
try {
let state = client.check_connectivity_finish(result);
if (state >= NetworkManager.ConnectivityState.FULL)
this._closeConnectivityCheck(path);
} catch(e) { }
}));
} else {
log('Invalid result from portal helper: ' + result);
}
},
_syncConnectivity: function() {
if (this._mainConnection == null ||
this._mainConnection.state != NetworkManager.ActiveConnectionState.ACTIVATED) {
this._flushConnectivityQueue();
return;
}
let isPortal = this._client.connectivity == NetworkManager.ConnectivityState.PORTAL;
// For testing, allow interpreting any value != FULL as PORTAL, because
// LIMITED (no upstream route after the default gateway) is easy to obtain
// with a tethered phone
// NONE is also possible, with a connection configured to force no default route
// (but in general we should only prompt a portal if we know there is a portal)
if (GLib.getenv('GNOME_SHELL_CONNECTIVITY_TEST') != null)
isPortal = isPortal || this._client.connectivity < NetworkManager.ConnectivityState.FULL;
if (!isPortal)
return;
let path = this._mainConnection.get_path();
for (let item of this._connectivityQueue) {
if (item == path)
return;
}
let timestamp = global.get_current_time();
if (this._portalHelperProxy) {
this._portalHelperProxy.AuthenticateRemote(path, '', timestamp);
} else {
new PortalHelperProxy(Gio.DBus.session, 'org.gnome.Shell.PortalHelper',
'/org/gnome/Shell/PortalHelper', Lang.bind(this, function (proxy, error) {
if (error) {
log('Error launching the portal helper: ' + error);
return;
}
this._portalHelperProxy = proxy;
proxy.connectSignal('Done', Lang.bind(this, this._portalHelperDone));
proxy.AuthenticateRemote(path, '', timestamp);
}));
}
this._connectivityQueue.push(path);
}, },
_updateIcon: function() { _updateIcon: function() {

View File

@@ -95,11 +95,11 @@ const Indicator = new Lang.Class({
_init: function() { _init: function() {
this.parent(); this.parent();
this._screenSaverSettings = new Gio.Settings({ schema_id: SCREENSAVER_SCHEMA }); this._screenSaverSettings = new Gio.Settings({ schema: SCREENSAVER_SCHEMA });
this._loginScreenSettings = new Gio.Settings({ schema_id: LOGIN_SCREEN_SCHEMA }); this._loginScreenSettings = new Gio.Settings({ schema: LOGIN_SCREEN_SCHEMA });
this._lockdownSettings = new Gio.Settings({ schema_id: LOCKDOWN_SCHEMA }); this._lockdownSettings = new Gio.Settings({ schema: LOCKDOWN_SCHEMA });
this._privacySettings = new Gio.Settings({ schema_id: PRIVACY_SCHEMA }); this._privacySettings = new Gio.Settings({ schema: PRIVACY_SCHEMA });
this._orientationSettings = new Gio.Settings({ schema_id: 'org.gnome.settings-daemon.peripherals.touchscreen' }); this._orientationSettings = new Gio.Settings({ schema: 'org.gnome.settings-daemon.peripherals.touchscreen' });
this._session = new GnomeSession.SessionManager(); this._session = new GnomeSession.SessionManager();
this._loginManager = LoginManager.getLoginManager(); this._loginManager = LoginManager.getLoginManager();

View File

@@ -161,12 +161,11 @@ const SwitcherPopup = new Lang.Class({
// disturbed by the popup briefly flashing. // disturbed by the popup briefly flashing.
this._initialDelayTimeoutId = Mainloop.timeout_add(POPUP_DELAY_TIMEOUT, this._initialDelayTimeoutId = Mainloop.timeout_add(POPUP_DELAY_TIMEOUT,
Lang.bind(this, function () { Lang.bind(this, function () {
Main.osdWindowManager.hideAll(); Main.osdWindow.cancel();
this.actor.opacity = 255; this.actor.opacity = 255;
this._initialDelayTimeoutId = 0; this._initialDelayTimeoutId = 0;
return GLib.SOURCE_REMOVE; return GLib.SOURCE_REMOVE;
})); }));
GLib.Source.set_name_by_id(this._initialDelayTimeoutId, '[gnome-shell] Main.osdWindow.cancel');
return true; return true;
}, },
@@ -190,11 +189,10 @@ const SwitcherPopup = new Lang.Class({
this._disableHover(); this._disableHover();
if (this._keyPressHandler(keysym, backwards, action) != Clutter.EVENT_PROPAGATE)
return Clutter.EVENT_STOP;
if (keysym == Clutter.Escape) if (keysym == Clutter.Escape)
this.destroy(); this.destroy();
else
this._keyPressHandler(keysym, backwards, action);
return Clutter.EVENT_STOP; return Clutter.EVENT_STOP;
}, },
@@ -252,7 +250,6 @@ const SwitcherPopup = new Lang.Class({
Mainloop.source_remove(this._motionTimeoutId); Mainloop.source_remove(this._motionTimeoutId);
this._motionTimeoutId = Mainloop.timeout_add(DISABLE_HOVER_TIMEOUT, Lang.bind(this, this._mouseTimedOut)); this._motionTimeoutId = Mainloop.timeout_add(DISABLE_HOVER_TIMEOUT, Lang.bind(this, this._mouseTimedOut));
GLib.Source.set_name_by_id(this._motionTimeoutId, '[gnome-shell] this._mouseTimedOut');
}, },
_mouseTimedOut: function() { _mouseTimedOut: function() {

View File

@@ -62,7 +62,7 @@ const UnlockDialog = new Lang.Class({
this.allowCancel = false; this.allowCancel = false;
let screenSaverSettings = new Gio.Settings({ schema_id: 'org.gnome.desktop.screensaver' }); let screenSaverSettings = new Gio.Settings({ schema: 'org.gnome.desktop.screensaver' });
if (screenSaverSettings.get_boolean('user-switch-enabled')) { if (screenSaverSettings.get_boolean('user-switch-enabled')) {
let otherUserLabel = new St.Label({ text: _("Log in as another user"), let otherUserLabel = new St.Label({ text: _("Log in as another user"),
style_class: 'login-dialog-not-listed-label' }); style_class: 'login-dialog-not-listed-label' });

View File

@@ -11,8 +11,6 @@ const Lang = imports.lang;
const Shell = imports.gi.Shell; const Shell = imports.gi.Shell;
const St = imports.gi.St; const St = imports.gi.St;
const EdgeDragAction = imports.ui.edgeDragAction;
const ShowOverviewAction = imports.ui.showOverviewAction;
const AppDisplay = imports.ui.appDisplay; const AppDisplay = imports.ui.appDisplay;
const Main = imports.ui.main; const Main = imports.ui.main;
const OverviewControls = imports.ui.overviewControls; const OverviewControls = imports.ui.overviewControls;
@@ -85,10 +83,10 @@ const ViewSelector = new Lang.Class({
icon_name: 'edit-find-symbolic' })); icon_name: 'edit-find-symbolic' }));
if (this._entry.get_text_direction() == Clutter.TextDirection.RTL) if (this._entry.get_text_direction() == Clutter.TextDirection.RTL)
this._clearIcon = new St.Icon({ style_class: 'search-entry-icon', this._clearIcon = new St.Icon({ style_class: 'search-entry-icon',
icon_name: 'edit-clear-symbolic-rtl' }); icon_name: 'edit-clear-rtl-symbolic' });
else else
this._clearIcon = new St.Icon({ style_class: 'search-entry-icon', this._clearIcon = new St.Icon({ style_class: 'search-entry-icon',
icon_name: 'edit-clear-symbolic-ltr' }); icon_name: 'edit-clear-symbolic' });
this._iconClickedId = 0; this._iconClickedId = 0;
this._capturedEventId = 0; this._capturedEventId = 0;
@@ -134,34 +132,19 @@ const ViewSelector = new Lang.Class({
})); }));
Main.wm.addKeybinding('toggle-application-view', Main.wm.addKeybinding('toggle-application-view',
new Gio.Settings({ schema_id: SHELL_KEYBINDINGS_SCHEMA }), new Gio.Settings({ schema: SHELL_KEYBINDINGS_SCHEMA }),
Meta.KeyBindingFlags.NONE, Meta.KeyBindingFlags.NONE,
Shell.KeyBindingMode.NORMAL | Shell.KeyBindingMode.NORMAL |
Shell.KeyBindingMode.OVERVIEW, Shell.KeyBindingMode.OVERVIEW,
Lang.bind(this, this._toggleAppsPage)); Lang.bind(this, this._toggleAppsPage));
Main.wm.addKeybinding('toggle-overview', Main.wm.addKeybinding('toggle-overview',
new Gio.Settings({ schema_id: SHELL_KEYBINDINGS_SCHEMA }), new Gio.Settings({ schema: SHELL_KEYBINDINGS_SCHEMA }),
Meta.KeyBindingFlags.NONE, Meta.KeyBindingFlags.NONE,
Shell.KeyBindingMode.NORMAL | Shell.KeyBindingMode.NORMAL |
Shell.KeyBindingMode.OVERVIEW, Shell.KeyBindingMode.OVERVIEW,
Lang.bind(Main.overview, Main.overview.toggle)); Lang.bind(Main.overview, Main.overview.toggle));
let gesture = new EdgeDragAction.EdgeDragAction(St.Side.RIGHT);
gesture.connect('activated', Lang.bind(this, function() {
if (Main.overview.visible)
Main.overview.hide();
else
this.showApps();
}));
global.stage.add_action(gesture);
gesture = new ShowOverviewAction.ShowOverviewAction();
gesture.connect('activated', Lang.bind(this, function(action, areaDiff) {
if (areaDiff < 0.7)
Main.overview.show();
}));
global.stage.add_action(gesture);
}, },
_toggleAppsPage: function() { _toggleAppsPage: function() {
@@ -299,13 +282,13 @@ const ViewSelector = new Lang.Class({
return Clutter.EVENT_STOP; return Clutter.EVENT_STOP;
} else if (this._shouldTriggerSearch(symbol)) { } else if (this._shouldTriggerSearch(symbol)) {
this.startSearch(event); this.startSearch(event);
} else if (!this._searchActive && !global.stage.key_focus) { } else if (!this._searchActive) {
if (symbol == Clutter.Tab || symbol == Clutter.Down) { if (symbol == Clutter.Tab || symbol == Clutter.Down) {
this._activePage.navigate_focus(null, Gtk.DirectionType.TAB_FORWARD, false); this._activePage.navigate_focus(null, Gtk.DirectionType.TAB_FORWARD, false);
return Clutter.EVENT_STOP; return true;
} else if (symbol == Clutter.ISO_Left_Tab) { } else if (symbol == Clutter.ISO_Left_Tab) {
this._activePage.navigate_focus(null, Gtk.DirectionType.TAB_BACKWARD, false); this._activePage.navigate_focus(null, Gtk.DirectionType.TAB_BACKWARD, false);
return Clutter.EVENT_STOP; return true;
} }
} }
return Clutter.EVENT_PROPAGATE; return Clutter.EVENT_PROPAGATE;
@@ -400,11 +383,9 @@ const ViewSelector = new Lang.Class({
this._iconClickedId = this._entry.connect('secondary-icon-clicked', this._iconClickedId = this._entry.connect('secondary-icon-clicked',
Lang.bind(this, this.reset)); Lang.bind(this, this.reset));
if (this._searchTimeoutId == 0) { if (this._searchTimeoutId == 0)
this._searchTimeoutId = Mainloop.timeout_add(150, this._searchTimeoutId = Mainloop.timeout_add(150,
Lang.bind(this, this._doSearch)); Lang.bind(this, this._doSearch));
GLib.Source.set_name_by_id(this._searchTimeoutId, '[gnome-shell] this._doSearch');
}
} else { } else {
if (this._iconClickedId > 0) { if (this._iconClickedId > 0) {
this._entry.disconnect(this._iconClickedId); this._entry.disconnect(this._iconClickedId);

View File

@@ -11,13 +11,10 @@ const St = imports.gi.St;
const Shell = imports.gi.Shell; const Shell = imports.gi.Shell;
const AltTab = imports.ui.altTab; const AltTab = imports.ui.altTab;
const WorkspaceSwitchAction = imports.ui.workspaceSwitchAction;
const AppSwitchAction = imports.ui.appSwitchAction;
const WorkspaceSwitcherPopup = imports.ui.workspaceSwitcherPopup; const WorkspaceSwitcherPopup = imports.ui.workspaceSwitcherPopup;
const Main = imports.ui.main; const Main = imports.ui.main;
const ModalDialog = imports.ui.modalDialog; const ModalDialog = imports.ui.modalDialog;
const Tweener = imports.ui.tweener; const Tweener = imports.ui.tweener;
const WindowMenu = imports.ui.windowMenu;
const SHELL_KEYBINDINGS_SCHEMA = 'org.gnome.shell.keybindings'; const SHELL_KEYBINDINGS_SCHEMA = 'org.gnome.shell.keybindings';
const WINDOW_ANIMATION_TIME = 0.25; const WINDOW_ANIMATION_TIME = 0.25;
@@ -85,7 +82,6 @@ const DisplayChangeDialog = new Lang.Class({
{ expand: false, x_fill: false, x_align: St.Align.END }); { expand: false, x_fill: false, x_align: St.Align.END });
this._timeoutId = Mainloop.timeout_add(ONE_SECOND, Lang.bind(this, this._tick)); this._timeoutId = Mainloop.timeout_add(ONE_SECOND, Lang.bind(this, this._tick));
GLib.Source.set_name_by_id(this._timeoutId, '[gnome-shell] this._tick');
}, },
close: function(timestamp) { close: function(timestamp) {
@@ -201,19 +197,12 @@ const WorkspaceTracker = new Lang.Class({
global.screen.connect('window-left-monitor', Lang.bind(this, this._windowLeftMonitor)); global.screen.connect('window-left-monitor', Lang.bind(this, this._windowLeftMonitor));
global.screen.connect('restacked', Lang.bind(this, this._windowsRestacked)); global.screen.connect('restacked', Lang.bind(this, this._windowsRestacked));
this._workspaceSettings = this._getWorkspaceSettings(); this._workspaceSettings = new Gio.Settings({ schema: Main.dynamicWorkspacesSchema });
this._workspaceSettings.connect('changed::dynamic-workspaces', Lang.bind(this, this._queueCheckWorkspaces)); this._workspaceSettings.connect('changed::dynamic-workspaces', Lang.bind(this, this._queueCheckWorkspaces));
this._nWorkspacesChanged(); this._nWorkspacesChanged();
}, },
_getWorkspaceSettings: function() {
let settings = global.get_overrides_settings();
if (settings.list_keys().indexOf('dynamic-workspaces') > -1)
return settings;
return new Gio.Settings({ schema_id: 'org.gnome.mutter' });
},
_checkWorkspaces: function() { _checkWorkspaces: function() {
let i; let i;
let emptyWorkspaces = []; let emptyWorkspaces = [];
@@ -282,20 +271,18 @@ const WorkspaceTracker = new Lang.Class({
this._queueCheckWorkspaces(); this._queueCheckWorkspaces();
return GLib.SOURCE_REMOVE; return GLib.SOURCE_REMOVE;
})); }));
GLib.Source.set_name_by_id(workspace._keepAliveId, '[gnome-shell] this._queueCheckWorkspaces');
}, },
_windowRemoved: function(workspace, window) { _windowRemoved: function(workspace, window) {
workspace._lastRemovedWindow = window; workspace._lastRemovedWindow = window;
this._queueCheckWorkspaces(); this._queueCheckWorkspaces();
let id = Mainloop.timeout_add(LAST_WINDOW_GRACE_TIME, Lang.bind(this, function() { Mainloop.timeout_add(LAST_WINDOW_GRACE_TIME, Lang.bind(this, function() {
if (workspace._lastRemovedWindow == window) { if (workspace._lastRemovedWindow == window) {
workspace._lastRemovedWindow = null; workspace._lastRemovedWindow = null;
this._queueCheckWorkspaces(); this._queueCheckWorkspaces();
} }
return GLib.SOURCE_REMOVE; return GLib.SOURCE_REMOVE;
})); }));
GLib.Source.set_name_by_id(id, '[gnome-shell] this._queueCheckWorkspaces');
}, },
_windowLeftMonitor: function(metaScreen, monitorIndex, metaWin) { _windowLeftMonitor: function(metaScreen, monitorIndex, metaWin) {
@@ -473,6 +460,8 @@ const WindowManager = new Lang.Class({
this._dimmedWindows = []; this._dimmedWindows = [];
this._animationBlockCount = 0;
this._allowedKeybindings = {}; this._allowedKeybindings = {};
this._switchData = null; this._switchData = null;
@@ -488,7 +477,6 @@ const WindowManager = new Lang.Class({
this._shellwm.connect('switch-workspace', Lang.bind(this, this._switchWorkspace)); this._shellwm.connect('switch-workspace', Lang.bind(this, this._switchWorkspace));
this._shellwm.connect('show-tile-preview', Lang.bind(this, this._showTilePreview)); this._shellwm.connect('show-tile-preview', Lang.bind(this, this._showTilePreview));
this._shellwm.connect('hide-tile-preview', Lang.bind(this, this._hideTilePreview)); this._shellwm.connect('hide-tile-preview', Lang.bind(this, this._hideTilePreview));
this._shellwm.connect('show-window-menu', Lang.bind(this, this._showWindowMenu));
this._shellwm.connect('minimize', Lang.bind(this, this._minimizeWindow)); this._shellwm.connect('minimize', Lang.bind(this, this._minimizeWindow));
this._shellwm.connect('maximize', Lang.bind(this, this._maximizeWindow)); this._shellwm.connect('maximize', Lang.bind(this, this._maximizeWindow));
this._shellwm.connect('unmaximize', Lang.bind(this, this._unmaximizeWindow)); this._shellwm.connect('unmaximize', Lang.bind(this, this._unmaximizeWindow));
@@ -516,10 +504,6 @@ const WindowManager = new Lang.Class({
Shell.KeyBindingMode.NORMAL | Shell.KeyBindingMode.NORMAL |
Shell.KeyBindingMode.OVERVIEW, Shell.KeyBindingMode.OVERVIEW,
Lang.bind(this, this._showWorkspaceSwitcher)); Lang.bind(this, this._showWorkspaceSwitcher));
this.setCustomKeybindingHandler('switch-to-workspace-last',
Shell.KeyBindingMode.NORMAL |
Shell.KeyBindingMode.OVERVIEW,
Lang.bind(this, this._showWorkspaceSwitcher));
this.setCustomKeybindingHandler('move-to-workspace-left', this.setCustomKeybindingHandler('move-to-workspace-left',
Shell.KeyBindingMode.NORMAL | Shell.KeyBindingMode.NORMAL |
Shell.KeyBindingMode.OVERVIEW, Shell.KeyBindingMode.OVERVIEW,
@@ -620,9 +604,6 @@ const WindowManager = new Lang.Class({
this.setCustomKeybindingHandler('move-to-workspace-12', this.setCustomKeybindingHandler('move-to-workspace-12',
Shell.KeyBindingMode.NORMAL, Shell.KeyBindingMode.NORMAL,
Lang.bind(this, this._showWorkspaceSwitcher)); Lang.bind(this, this._showWorkspaceSwitcher));
this.setCustomKeybindingHandler('move-to-workspace-last',
Shell.KeyBindingMode.NORMAL,
Lang.bind(this, this._showWorkspaceSwitcher));
this.setCustomKeybindingHandler('switch-applications', this.setCustomKeybindingHandler('switch-applications',
Shell.KeyBindingMode.NORMAL, Shell.KeyBindingMode.NORMAL,
Lang.bind(this, this._startAppSwitcher)); Lang.bind(this, this._startAppSwitcher));
@@ -657,13 +638,13 @@ const WindowManager = new Lang.Class({
Lang.bind(this, this._startA11ySwitcher)); Lang.bind(this, this._startA11ySwitcher));
this.addKeybinding('pause-resume-tweens', this.addKeybinding('pause-resume-tweens',
new Gio.Settings({ schema_id: SHELL_KEYBINDINGS_SCHEMA }), new Gio.Settings({ schema: SHELL_KEYBINDINGS_SCHEMA }),
Meta.KeyBindingFlags.NONE, Meta.KeyBindingFlags.NONE,
Shell.KeyBindingMode.ALL, Shell.KeyBindingMode.ALL,
Lang.bind(this, this._toggleTweens)); Lang.bind(this, this._toggleTweens));
this.addKeybinding('open-application-menu', this.addKeybinding('open-application-menu',
new Gio.Settings({ schema_id: SHELL_KEYBINDINGS_SCHEMA }), new Gio.Settings({ schema: SHELL_KEYBINDINGS_SCHEMA }),
Meta.KeyBindingFlags.NONE, Meta.KeyBindingFlags.NONE,
Shell.KeyBindingMode.NORMAL | Shell.KeyBindingMode.NORMAL |
Shell.KeyBindingMode.TOPBAR_POPUP, Shell.KeyBindingMode.TOPBAR_POPUP,
@@ -678,60 +659,11 @@ const WindowManager = new Lang.Class({
this._dimWindow(this._dimmedWindows[i]); this._dimWindow(this._dimmedWindows[i]);
})); }));
this._windowMenuManager = new WindowMenu.WindowMenuManager();
if (Main.sessionMode.hasWorkspaces) if (Main.sessionMode.hasWorkspaces)
this._workspaceTracker = new WorkspaceTracker(this); this._workspaceTracker = new WorkspaceTracker(this);
global.screen.override_workspace_layout(Meta.ScreenCorner.TOPLEFT, global.screen.override_workspace_layout(Meta.ScreenCorner.TOPLEFT,
false, -1, 1); false, -1, 1);
let gesture = new WorkspaceSwitchAction.WorkspaceSwitchAction();
gesture.connect('activated', Lang.bind(this, function(action, direction) {
let newWs = global.screen.get_active_workspace().get_neighbor(direction);
this.actionMoveWorkspace(newWs);
}));
global.stage.add_action(gesture);
gesture = new AppSwitchAction.AppSwitchAction();
gesture.connect('activated', Lang.bind(this, this._switchApp));
global.stage.add_action(gesture);
},
_lookupIndex: function (windows, metaWindow) {
for (let i = 0; i < windows.length; i++) {
if (windows[i].metaWindow == metaWindow) {
return i;
}
}
return -1;
},
_switchApp : function () {
let windows = global.get_window_actors().filter(Lang.bind(this, function(actor) {
let win = actor.metaWindow;
return (!win.is_override_redirect() &&
win.located_on_workspace(global.screen.get_active_workspace()));
}));
if (windows.length == 0)
return;
let focusWindow = global.display.focus_window;
let nextWindow;
if (focusWindow == null)
nextWindow = windows[0].metaWindow;
else {
let index = this._lookupIndex (windows, focusWindow) + 1;
if (index >= windows.length)
index = 0;
nextWindow = windows[index].metaWindow;
}
Main.activateWindow(nextWindow);
}, },
keepWorkspaceAlive: function(workspace, duration) { keepWorkspaceAlive: function(workspace, duration) {
@@ -762,8 +694,16 @@ const WindowManager = new Lang.Class({
this._allowedKeybindings[name] = modes; this._allowedKeybindings[name] = modes;
}, },
blockAnimations: function() {
this._animationBlockCount++;
},
unblockAnimations: function() {
this._animationBlockCount = Math.max(0, this._animationBlockCount - 1);
},
_shouldAnimate: function() { _shouldAnimate: function() {
return !Main.overview.visible; return !(Main.overview.visible || this._animationBlockCount > 0);
}, },
_shouldAnimateActor: function(actor) { _shouldAnimateActor: function(actor) {
@@ -952,7 +892,7 @@ const WindowManager = new Lang.Class({
/* Scale the window from the center of the parent */ /* Scale the window from the center of the parent */
this._checkDimming(actor.get_meta_window().get_transient_for()); this._checkDimming(actor.get_meta_window().get_transient_for());
actor.set_scale(1.0, 0.0); actor.set_scale(1.0, 0.0);
actor.set_pivot_point(0.5, 0.5); actor.scale_gravity = Clutter.Gravity.CENTER;
actor.show(); actor.show();
this._mapping.push(actor); this._mapping.push(actor);
@@ -1026,7 +966,7 @@ const WindowManager = new Lang.Class({
this._checkDimming(parent, window); this._checkDimming(parent, window);
actor.set_scale(1.0, 1.0); actor.set_scale(1.0, 1.0);
actor.set_pivot_point(0.5, 0.5); actor.scale_gravity = Clutter.Gravity.CENTER;
actor.show(); actor.show();
actor._parentDestroyId = parent.connect('unmanaged', Lang.bind(this, function () { actor._parentDestroyId = parent.connect('unmanaged', Lang.bind(this, function () {
@@ -1209,10 +1149,6 @@ const WindowManager = new Lang.Class({
this._tilePreview.hide(); this._tilePreview.hide();
}, },
_showWindowMenu: function(shellwm, window, menu, rect) {
this._windowMenuManager.showWindowMenuForWindow(window, menu, rect);
},
_startAppSwitcher : function(display, screen, window, binding) { _startAppSwitcher : function(display, screen, window, binding) {
/* prevent a corner case where both popups show up at once */ /* prevent a corner case where both popups show up at once */
if (this._workspaceSwitcherPopup != null) if (this._workspaceSwitcherPopup != null)
@@ -1269,10 +1205,7 @@ const WindowManager = new Lang.Class({
let newWs; let newWs;
let direction; let direction;
if (target == 'last') { if (isNaN(target)) {
direction = Meta.MotionDirection.DOWN;
newWs = screen.get_workspace_by_index(screen.n_workspaces - 1);
} else if (isNaN(target)) {
direction = Meta.MotionDirection[target.toUpperCase()]; direction = Meta.MotionDirection[target.toUpperCase()];
newWs = screen.get_active_workspace().get_neighbor(direction); newWs = screen.get_active_workspace().get_neighbor(direction);
} else if (target > 0) { } else if (target > 0) {

View File

@@ -1,185 +0,0 @@
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*
const Gtk = imports.gi.Gtk;
const Lang = imports.lang;
const Meta = imports.gi.Meta;
const St = imports.gi.St;
const Shell = imports.gi.Shell;
const BoxPointer = imports.ui.boxpointer;
const Main = imports.ui.main;
const PopupMenu = imports.ui.popupMenu;
const RemoteMenu = imports.ui.remoteMenu;
const WindowMenu = new Lang.Class({
Name: 'WindowMenu',
Extends: PopupMenu.PopupMenu,
_init: function(window, sourceActor) {
this.parent(sourceActor, 0, St.Side.TOP);
this.actor.add_style_class_name('window-menu');
Main.layoutManager.uiGroup.add_actor(this.actor);
this.actor.hide();
this._buildMenu(window);
},
_buildMenu: function(window) {
let type = window.get_window_type();
let item;
item = this.addAction(_("Minimize"), Lang.bind(this, function(event) {
window.minimize();
}));
if (!window.can_minimize())
item.setSensitive(false);
if (window.get_maximized()) {
item = this.addAction(_("Unmaximize"), Lang.bind(this, function() {
window.unmaximize(Meta.MaximizeFlags.BOTH);
}));
} else {
item = this.addAction(_("Maximize"), Lang.bind(this, function() {
window.maximize(Meta.MaximizeFlags.BOTH);
}));
}
if (!window.can_maximize())
item.setSensitive(false);
item = this.addAction(_("Move"), Lang.bind(this, function(event) {
window.begin_grab_op(Meta.GrabOp.KEYBOARD_MOVING, true, event.get_time());
}));
if (!window.allows_move())
item.setSensitive(false);
item = this.addAction(_("Resize"), Lang.bind(this, function(event) {
window.begin_grab_op(Meta.GrabOp.KEYBOARD_RESIZING_UNKNOWN, true, event.get_time());
}));
if (!window.allows_resize())
item.setSensitive(false);
if (!window.titlebar_is_onscreen() && type != Meta.WindowType.DOCK && type != Meta.WindowType.DESKTOP) {
this.addAction(_("Move Titlebar Onscreen"), Lang.bind(this, function(event) {
window.shove_titlebar_onscreen();
}));
}
item = this.addAction(_("Always on Top"), Lang.bind(this, function() {
if (window.is_above())
window.unmake_above();
else
window.make_above();
}));
if (window.is_above())
item.setOrnament(PopupMenu.Ornament.DOT);
if (window.get_maximized() ||
type == Meta.WindowType.DOCK ||
type == Meta.WindowType.DESKTOP ||
type == Meta.WindowType.SPLASHSCREEN)
item.setSensitive(false);
if (Main.sessionMode.hasWorkspaces &&
(!Meta.prefs_get_workspaces_only_on_primary() ||
window.is_on_primary_monitor())) {
let isSticky = window.is_on_all_workspaces();
item = this.addAction(_("Always on Visible Workspace"), Lang.bind(this, function() {
if (isSticky)
window.unstick();
else
window.stick();
}));
if (isSticky)
item.setOrnament(PopupMenu.Ornament.DOT);
if (window.is_always_on_all_workspaces())
item.setSensitive(false);
let nWorkspaces = global.screen.n_workspaces;
if (!isSticky) {
let workspace = window.get_workspace();
let idx = workspace.index();
if (idx > 0) {
this.addAction(_("Move to Workspace Up"), Lang.bind(this, function(event) {
window.change_workspace(workspace.get_neighbor(Meta.MotionDirection.UP));
}));
}
if (idx < nWorkspaces) {
this.addAction(_("Move to Workspace Down"), Lang.bind(this, function(event) {
window.change_workspace(workspace.get_neighbor(Meta.MotionDirection.DOWN));
}));
}
}
}
this.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
item = this.addAction(_("Close"), Lang.bind(this, function(event) {
window.delete(event.get_time());
}));
if (!window.can_close())
item.setSensitive(false);
}
});
const AppMenu = new Lang.Class({
Name: 'AppMenu',
Extends: RemoteMenu.RemoteMenu,
_init: function(window, sourceActor) {
let app = Shell.WindowTracker.get_default().get_window_app(window);
this.parent(sourceActor, app.menu, app.action_group);
this.actor.add_style_class_name('fallback-app-menu');
let variant = window.get_gtk_theme_variant();
if (variant)
this.actor.add_style_class_name(variant);
Main.layoutManager.uiGroup.add_actor(this.actor);
this.actor.hide();
}
});
const WindowMenuManager = new Lang.Class({
Name: 'WindowMenuManager',
_init: function() {
this._manager = new PopupMenu.PopupMenuManager({ actor: Main.layoutManager.dummyCursor });
this._sourceActor = new St.Widget({ reactive: true, visible: false });
this._sourceActor.connect('button-press-event', Lang.bind(this,
function() {
this._manager.activeMenu.toggle();
}));
Main.uiGroup.add_actor(this._sourceActor);
},
showWindowMenuForWindow: function(window, type, rect) {
let menuType = (type == Meta.WindowMenuType.WM) ? WindowMenu : AppMenu;
let menu = new menuType(window, this._sourceActor);
this._manager.addMenu(menu);
menu.connect('activate', function() {
window.check_alive(global.get_current_time());
});
this._sourceActor.set_size(rect.width, rect.height);
this._sourceActor.set_position(rect.x, rect.y);
this._sourceActor.show();
menu.open(BoxPointer.PopupAnimation.NONE);
menu.actor.navigate_focus(null, Gtk.DirectionType.TAB_FORWARD, false);
menu.connect('open-state-changed', Lang.bind(this, function(menu_, isOpen) {
if (isOpen)
return;
this._sourceActor.hide();
menu.destroy();
}));
}
});

View File

@@ -67,7 +67,7 @@ const WindowCloneLayout = new Lang.Class({
// paradoxically is the smaller rectangle, containing the positions // paradoxically is the smaller rectangle, containing the positions
// of the visible frame. The input rect contains everything, // of the visible frame. The input rect contains everything,
// including the invisible border padding. // including the invisible border padding.
let inputRect = window.get_buffer_rect(); let inputRect = window.get_input_rect();
let box = new Clutter.ActorBox(); let box = new Clutter.ActorBox();
@@ -200,10 +200,6 @@ const WindowClone = new Lang.Class({
this.emit('size-changed'); this.emit('size-changed');
}, },
hasAttachedDialogs: function() {
return this.actor.get_n_children() > 1;
},
_doAddAttachedDialog: function(metaWin, realWin) { _doAddAttachedDialog: function(metaWin, realWin) {
let clone = new Clutter.Clone({ source: realWin }); let clone = new Clutter.Clone({ source: realWin });
clone._updateId = metaWin.connect('size-changed', Lang.bind(this, function() { clone._updateId = metaWin.connect('size-changed', Lang.bind(this, function() {
@@ -239,14 +235,6 @@ const WindowClone = new Lang.Class({
return this._boundingBox; return this._boundingBox;
}, },
get width() {
return this._boundingBox.width;
},
get height() {
return this._boundingBox.height;
},
getOriginalPosition: function() { getOriginalPosition: function() {
return [this._boundingBox.x, this._boundingBox.y]; return [this._boundingBox.x, this._boundingBox.y];
}, },
@@ -265,8 +253,7 @@ const WindowClone = new Lang.Class({
rect = rect.union(metaWindow.get_outer_rect()); rect = rect.union(metaWindow.get_outer_rect());
}, this); }, this);
// Convert from a MetaRectangle to a native JS object this._boundingBox = rect;
this._boundingBox = { x: rect.x, y: rect.y, width: rect.width, height: rect.height };
this.actor.layout_manager.boundingBox = rect; this.actor.layout_manager.boundingBox = rect;
}, },
@@ -595,8 +582,7 @@ const WindowOverlay = new Lang.Class({
}, },
_windowCanClose: function() { _windowCanClose: function() {
return this._windowClone.metaWindow.can_close() && return this._windowClone.metaWindow.can_close();
!this._windowClone.hasAttachedDialogs();
}, },
_onWindowAdded: function(workspace, win) { _onWindowAdded: function(workspace, win) {
@@ -608,12 +594,11 @@ const WindowOverlay = new Lang.Class({
// use an idle handler to avoid mapping problems - // use an idle handler to avoid mapping problems -
// see comment in Workspace._windowAdded // see comment in Workspace._windowAdded
let id = Mainloop.idle_add(Lang.bind(this, Mainloop.idle_add(Lang.bind(this,
function() { function() {
this._windowClone.emit('selected'); this._windowClone.emit('selected');
return GLib.SOURCE_REMOVE; return GLib.SOURCE_REMOVE;
})); }));
GLib.Source.set_name_by_id(id, '[gnome-shell] this._windowClone.emit');
} }
}, },
@@ -684,10 +669,8 @@ const WindowOverlay = new Lang.Class({
}, },
_onLeave: function() { _onLeave: function() {
if (this._idleToggleCloseId == 0) { if (this._idleToggleCloseId == 0)
this._idleToggleCloseId = Mainloop.timeout_add(750, Lang.bind(this, this._idleToggleCloseButton)); this._idleToggleCloseId = Mainloop.timeout_add(750, Lang.bind(this, this._idleToggleCloseButton));
GLib.Source.set_name_by_id(this._idleToggleCloseId, '[gnome-shell] this._idleToggleCloseButton');
}
return Clutter.EVENT_PROPAGATE; return Clutter.EVENT_PROPAGATE;
}, },
@@ -841,7 +824,7 @@ const LayoutStrategy = new Lang.Class({
// thumbnails is much more important to preserve than the width of // thumbnails is much more important to preserve than the width of
// them, so two windows with equal height, but maybe differering // them, so two windows with equal height, but maybe differering
// widths line up. // widths line up.
let ratio = window.height / this._monitor.height; let ratio = window.actor.height / this._monitor.height;
// The purpose of this manipulation here is to prevent windows // The purpose of this manipulation here is to prevent windows
// from getting too small. For something like a calculator window, // from getting too small. For something like a calculator window,
@@ -943,11 +926,11 @@ const LayoutStrategy = new Lang.Class({
let window = row.windows[j]; let window = row.windows[j];
let s = scale * this._computeWindowScale(window) * row.additionalScale; let s = scale * this._computeWindowScale(window) * row.additionalScale;
let cellWidth = window.width * s; let cellWidth = window.actor.width * s;
let cellHeight = window.height * s; let cellHeight = window.actor.height * s;
s = Math.min(s, WINDOW_CLONE_MAXIMUM_SCALE); s = Math.min(s, WINDOW_CLONE_MAXIMUM_SCALE);
let cloneWidth = window.width * s; let cloneWidth = window.actor.width * s;
let cloneX = x + (cellWidth - cloneWidth) / 2; let cloneX = x + (cellWidth - cloneWidth) / 2;
let cloneY = row.y + row.height - cellHeight; let cloneY = row.y + row.height - cellHeight;
@@ -1001,7 +984,7 @@ const UnalignedLayoutStrategy = new Lang.Class({
for (let i = 0; i < windows.length; i++) { for (let i = 0; i < windows.length; i++) {
let window = windows[i]; let window = windows[i];
let s = this._computeWindowScale(window); let s = this._computeWindowScale(window);
totalWidth += window.width * s; totalWidth += window.actor.width * s;
} }
let idealRowWidth = totalWidth / numRows; let idealRowWidth = totalWidth / numRows;
@@ -1014,8 +997,8 @@ const UnalignedLayoutStrategy = new Lang.Class({
for (; windowIdx < windows.length; windowIdx++) { for (; windowIdx < windows.length; windowIdx++) {
let window = windows[windowIdx]; let window = windows[windowIdx];
let s = this._computeWindowScale(window); let s = this._computeWindowScale(window);
let width = window.width * s; let width = window.actor.width * s;
let height = window.height * s; let height = window.actor.height * s;
row.fullHeight = Math.max(row.fullHeight, height); row.fullHeight = Math.max(row.fullHeight, height);
// either new width is < idealWidth or new width is nearer from idealWidth then oldWidth // either new width is < idealWidth or new width is nearer from idealWidth then oldWidth
@@ -1140,11 +1123,6 @@ const Workspace = new Lang.Class({
this._positionWindowsFlags = 0; this._positionWindowsFlags = 0;
this._positionWindowsId = 0; this._positionWindowsId = 0;
this.actor.connect('notify::mapped', Lang.bind(this, function() {
if (this.actor.mapped)
this._syncActualGeometry();
}));
}, },
setFullGeometry: function(geom) { setFullGeometry: function(geom) {
@@ -1152,9 +1130,7 @@ const Workspace = new Lang.Class({
return; return;
this._fullGeometry = geom; this._fullGeometry = geom;
this._recalculateWindowPositions(WindowPositionFlags.NONE);
if (this.actor.mapped)
this._recalculateWindowPositions(WindowPositionFlags.NONE);
}, },
setActualGeometry: function(geom) { setActualGeometry: function(geom) {
@@ -1162,29 +1138,18 @@ const Workspace = new Lang.Class({
return; return;
this._actualGeometry = geom; this._actualGeometry = geom;
this._actualGeometryDirty = true;
if (this.actor.mapped) if (this._actualGeometryLater)
this._syncActualGeometry();
},
_syncActualGeometry: function() {
if (this._actualGeometryLater || !this._actualGeometryDirty)
return;
if (!this._actualGeometry)
return; return;
this._actualGeometryLater = Meta.later_add(Meta.LaterType.BEFORE_REDRAW, Lang.bind(this, function() { this._actualGeometryLater = Meta.later_add(Meta.LaterType.BEFORE_REDRAW, Lang.bind(this, function() {
this._actualGeometryLater = 0;
if (!this.actor.mapped)
return false;
let geom = this._actualGeometry; let geom = this._actualGeometry;
this._dropRect.set_position(geom.x, geom.y); this._dropRect.set_position(geom.x, geom.y);
this._dropRect.set_size(geom.width, geom.height); this._dropRect.set_size(geom.width, geom.height);
this._updateWindowPositions(Main.overview.animationInProgress ? WindowPositionFlags.ANIMATE : WindowPositionFlags.NONE); this._updateWindowPositions(Main.overview.animationInProgress ? WindowPositionFlags.ANIMATE : WindowPositionFlags.NONE);
this._actualGeometryLater = 0;
return false; return false;
})); }));
}, },
@@ -1453,7 +1418,6 @@ const Workspace = new Lang.Class({
this._currentLayout = null; this._currentLayout = null;
this._repositionWindowsId = Mainloop.timeout_add(750, this._repositionWindowsId = Mainloop.timeout_add(750,
Lang.bind(this, this._delayedWindowRepositioning)); Lang.bind(this, this._delayedWindowRepositioning));
GLib.Source.set_name_by_id(this._repositionWindowsId, '[gnome-shell] this._delayedWindowRepositioning');
}, },
_doAddWindow : function(metaWin) { _doAddWindow : function(metaWin) {
@@ -1465,15 +1429,14 @@ const Workspace = new Lang.Class({
if (!win) { if (!win) {
// Newly-created windows are added to a workspace before // Newly-created windows are added to a workspace before
// the compositor finds out about them... // the compositor finds out about them...
let id = Mainloop.idle_add(Lang.bind(this, Mainloop.idle_add(Lang.bind(this,
function () { function () {
if (this.actor && if (this.actor &&
metaWin.get_compositor_private() && metaWin.get_compositor_private() &&
metaWin.get_workspace() == this.metaWorkspace) metaWin.get_workspace() == this.metaWorkspace)
this._doAddWindow(metaWin); this._doAddWindow(metaWin);
return GLib.SOURCE_REMOVE; return GLib.SOURCE_REMOVE;
})); }));
GLib.Source.set_name_by_id(id, '[gnome-shell] this._doAddWindow');
return; return;
} }

View File

@@ -1,52 +0,0 @@
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
const Signals = imports.signals;
const Lang = imports.lang;
const Meta = imports.gi.Meta;
const Clutter = imports.gi.Clutter;
let MOTION_THRESHOLD = 50;
const WorkspaceSwitchAction = new Lang.Class({
Name: 'WorkspaceSwitchAction',
Extends: Clutter.GestureAction,
_init : function() {
this.parent();
this.set_n_touch_points (4);
global.display.connect('grab-op-begin', Lang.bind(this, this.cancel));
global.display.connect('grab-op-end', Lang.bind(this, this.cancel));
},
vfunc_gesture_prepare : function(action, actor) {
return this.get_n_current_points() == this.get_n_touch_points();
},
vfunc_gesture_end : function(action, actor) {
// Just check one touchpoint here
let [startX, startY] = this.get_press_coords(0);
let [x, y] = this.get_motion_coords(0);
let offsetX = x - startX;
let offsetY = y - startY;
let direction;
if (Math.abs(offsetX) < MOTION_THRESHOLD &&
Math.abs(offsetY) < MOTION_THRESHOLD)
return;
if (Math.abs(offsetY) > Math.abs(offsetX)) {
if (offsetY > 0)
direction = Meta.MotionDirection.UP;
else
direction = Meta.MotionDirection.DOWN;
} else {
if (offsetX > 0)
direction = Meta.MotionDirection.LEFT;
else
direction = Meta.MotionDirection.RIGHT;
}
this.emit('activated', direction);
}
});
Signals.addSignalMethods(WorkspaceSwitchAction.prototype);

View File

@@ -52,7 +52,6 @@ const WorkspaceSwitcherPopup = new Lang.Class({
this._globalSignals.push(global.screen.connect('workspace-removed', Lang.bind(this, this._redisplay))); this._globalSignals.push(global.screen.connect('workspace-removed', Lang.bind(this, this._redisplay)));
this._timeoutId = Mainloop.timeout_add(DISPLAY_TIMEOUT, Lang.bind(this, this._onTimeout)); this._timeoutId = Mainloop.timeout_add(DISPLAY_TIMEOUT, Lang.bind(this, this._onTimeout));
GLib.Source.set_name_by_id(this._timeoutId, '[gnome-shell] this._onTimeout');
}, },
_getPreferredHeight : function (actor, forWidth, alloc) { _getPreferredHeight : function (actor, forWidth, alloc) {
@@ -146,7 +145,6 @@ const WorkspaceSwitcherPopup = new Lang.Class({
if (this._timeoutId != 0) if (this._timeoutId != 0)
Mainloop.source_remove(this._timeoutId); Mainloop.source_remove(this._timeoutId);
this._timeoutId = Mainloop.timeout_add(DISPLAY_TIMEOUT, Lang.bind(this, this._onTimeout)); this._timeoutId = Mainloop.timeout_add(DISPLAY_TIMEOUT, Lang.bind(this, this._onTimeout));
GLib.Source.set_name_by_id(this._timeoutId, '[gnome-shell] this._onTimeout');
this._show(); this._show();
}, },

View File

@@ -386,15 +386,14 @@ const WorkspaceThumbnail = new Lang.Class({
if (!win) { if (!win) {
// Newly-created windows are added to a workspace before // Newly-created windows are added to a workspace before
// the compositor finds out about them... // the compositor finds out about them...
let id = Mainloop.idle_add(Lang.bind(this, Mainloop.idle_add(Lang.bind(this,
function () { function () {
if (!this._removed && if (!this._removed &&
metaWin.get_compositor_private() && metaWin.get_compositor_private() &&
metaWin.get_workspace() == this.metaWorkspace) metaWin.get_workspace() == this.metaWorkspace)
this._doAddWindow(metaWin); this._doAddWindow(metaWin);
return GLib.SOURCE_REMOVE; return GLib.SOURCE_REMOVE;
})); }));
GLib.Source.set_name_by_id(id, '[gnome-shell] this._doAddWindow');
return; return;
} }
@@ -665,7 +664,7 @@ const ThumbnailsBox = new Lang.Class({
Main.overview.connect('window-drag-cancelled', Main.overview.connect('window-drag-cancelled',
Lang.bind(this, this._onDragCancelled)); Lang.bind(this, this._onDragCancelled));
this._settings = new Gio.Settings({ schema_id: OVERRIDE_SCHEMA }); this._settings = new Gio.Settings({ schema: OVERRIDE_SCHEMA });
this._settings.connect('changed::dynamic-workspaces', this._settings.connect('changed::dynamic-workspaces',
Lang.bind(this, this._updateSwitcherVisibility)); Lang.bind(this, this._updateSwitcherVisibility));
}, },
@@ -826,14 +825,10 @@ const ThumbnailsBox = new Lang.Class({
window.change_workspace_by_index(window.get_workspace().index() + 1, true); window.change_workspace_by_index(window.get_workspace().index() + 1, true);
}); });
if (isWindow) { if (isWindow)
// ... and bam, a workspace, good as new. // ... and bam, a workspace, good as new.
// Move the window to our monitor first if necessary.
let thumbMonitor = this._thumbnails[newWorkspaceIndex].monitorIndex;
if (source.metaWindow.get_monitor() != thumbMonitor)
source.metaWindow.move_to_monitor(thumbMonitor);
source.metaWindow.change_workspace_by_index(newWorkspaceIndex, true); source.metaWindow.change_workspace_by_index(newWorkspaceIndex, true);
} else if (source.shellWorkspaceLaunch) { else if (source.shellWorkspaceLaunch) {
source.shellWorkspaceLaunch({ workspace: newWorkspaceIndex, source.shellWorkspaceLaunch({ workspace: newWorkspaceIndex,
timestamp: time }); timestamp: time });
// This new workspace will be automatically removed if the application fails // This new workspace will be automatically removed if the application fails

View File

@@ -74,12 +74,12 @@ const WorkspacesViewBase = new Lang.Class({
setFullGeometry: function(geom) { setFullGeometry: function(geom) {
this._fullGeometry = geom; this._fullGeometry = geom;
this._syncFullGeometry(); this._syncGeometry();
}, },
setActualGeometry: function(geom) { setActualGeometry: function(geom) {
this._actualGeometry = geom; this._actualGeometry = geom;
this._syncActualGeometry(); this._syncGeometry();
}, },
}); });
@@ -94,7 +94,7 @@ const WorkspacesView = new Lang.Class({
this._scrolling = false; // swipe-scrolling this._scrolling = false; // swipe-scrolling
this._animatingScroll = false; // programatically updating the adjustment this._animatingScroll = false; // programatically updating the adjustment
this._settings = new Gio.Settings({ schema_id: OVERRIDE_SCHEMA }); this._settings = new Gio.Settings({ schema: OVERRIDE_SCHEMA });
let activeWorkspaceIndex = global.screen.get_active_workspace_index(); let activeWorkspaceIndex = global.screen.get_active_workspace_index();
this.scrollAdjustment = new St.Adjustment({ value: activeWorkspaceIndex, this.scrollAdjustment = new St.Adjustment({ value: activeWorkspaceIndex,
@@ -127,12 +127,9 @@ const WorkspacesView = new Lang.Class({
this._workspaces[i].setReservedSlot(clone); this._workspaces[i].setReservedSlot(clone);
}, },
_syncFullGeometry: function() { _syncGeometry: function() {
for (let i = 0; i < this._workspaces.length; i++) for (let i = 0; i < this._workspaces.length; i++)
this._workspaces[i].setFullGeometry(this._fullGeometry); this._workspaces[i].setFullGeometry(this._fullGeometry);
},
_syncActualGeometry: function() {
for (let i = 0; i < this._workspaces.length; i++) for (let i = 0; i < this._workspaces.length; i++)
this._workspaces[i].setActualGeometry(this._actualGeometry); this._workspaces[i].setActualGeometry(this._actualGeometry);
}, },
@@ -263,12 +260,10 @@ const WorkspacesView = new Lang.Class({
} }
} }
if (this._fullGeometry) { if (this._fullGeometry)
this._updateWorkspaceActors(false); this._updateWorkspaceActors(false);
this._syncFullGeometry();
} this._syncGeometry();
if (this._actualGeometry)
this._syncActualGeometry();
}, },
_activeWorkspaceChanged: function(wm, from, to, direction) { _activeWorkspaceChanged: function(wm, from, to, direction) {
@@ -357,11 +352,8 @@ const ExtraWorkspaceView = new Lang.Class({
this._workspace.setReservedSlot(clone); this._workspace.setReservedSlot(clone);
}, },
_syncFullGeometry: function() { _syncGeometry: function() {
this._workspace.setFullGeometry(this._fullGeometry); this._workspace.setFullGeometry(this._fullGeometry);
},
_syncActualGeometry: function() {
this._workspace.setActualGeometry(this._actualGeometry); this._workspace.setActualGeometry(this._actualGeometry);
}, },
@@ -437,7 +429,7 @@ const WorkspacesDisplay = new Lang.Class({
this._workspacesViews = []; this._workspacesViews = [];
this._primaryScrollAdjustment = null; this._primaryScrollAdjustment = null;
this._settings = new Gio.Settings({ schema_id: OVERRIDE_SCHEMA }); this._settings = new Gio.Settings({ schema: OVERRIDE_SCHEMA });
this._settings.connect('changed::workspaces-only-on-primary', this._settings.connect('changed::workspaces-only-on-primary',
Lang.bind(this, Lang.bind(this,
this._workspacesOnlyOnPrimaryChanged)); this._workspacesOnlyOnPrimaryChanged));
@@ -606,9 +598,8 @@ const WorkspacesDisplay = new Lang.Class({
return; return;
let [x, y] = this.actor.get_transformed_position(); let [x, y] = this.actor.get_transformed_position();
let allocation = this.actor.allocation; let width = this.actor.allocation.x2 - this.actor.allocation.x1;
let width = allocation.x2 - allocation.x1; let height = this.actor.allocation.y2 - this.actor.allocation.y1;
let height = allocation.y2 - allocation.y1;
let primaryGeometry = { x: x, y: y, width: width, height: height }; let primaryGeometry = { x: x, y: y, width: width, height: height };
let monitors = Main.layoutManager.monitors; let monitors = Main.layoutManager.monitors;

View File

@@ -6,13 +6,11 @@ data/gnome-shell.desktop.in.in
data/gnome-shell-extension-prefs.desktop.in.in data/gnome-shell-extension-prefs.desktop.in.in
data/gnome-shell-wayland.desktop.in.in data/gnome-shell-wayland.desktop.in.in
data/org.gnome.shell.gschema.xml.in.in data/org.gnome.shell.gschema.xml.in.in
data/org.gnome.Shell.PortalHelper.desktop.in
js/extensionPrefs/main.js js/extensionPrefs/main.js
js/gdm/authPrompt.js js/gdm/authPrompt.js
js/gdm/loginDialog.js js/gdm/loginDialog.js
js/gdm/util.js js/gdm/util.js
js/misc/util.js js/misc/util.js
js/portalHelper/main.js
js/ui/appDisplay.js js/ui/appDisplay.js
js/ui/appFavorites.js js/ui/appFavorites.js
js/ui/backgroundMenu.js js/ui/backgroundMenu.js
@@ -57,7 +55,6 @@ js/ui/unlockDialog.js
js/ui/viewSelector.js js/ui/viewSelector.js
js/ui/windowAttentionHandler.js js/ui/windowAttentionHandler.js
js/ui/windowManager.js js/ui/windowManager.js
js/ui/windowMenu.js
src/calendar-server/evolution-calendar.desktop.in.in src/calendar-server/evolution-calendar.desktop.in.in
# Please do not remove this file from POTFILES.in. Run "git submodule init && git submodule update" to get it. # Please do not remove this file from POTFILES.in. Run "git submodule init && git submodule update" to get it.
src/gvc/gvc-mixer-control.c src/gvc/gvc-mixer-control.c

361
po/cs.po
View File

@@ -12,8 +12,8 @@ msgstr ""
"Project-Id-Version: gnome-shell\n" "Project-Id-Version: gnome-shell\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
"shell&keywords=I18N+L10N&component=general\n" "shell&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2014-05-18 07:27+0000\n" "POT-Creation-Date: 2014-03-27 20:52+0000\n"
"PO-Revision-Date: 2014-05-18 15:23+0200\n" "PO-Revision-Date: 2014-03-27 22:15+0100\n"
"Last-Translator: Marek Černocký <marek@manet.cz>\n" "Last-Translator: Marek Černocký <marek@manet.cz>\n"
"Language-Team: Czech <gnome-cs-list@gnome.org>\n" "Language-Team: Czech <gnome-cs-list@gnome.org>\n"
"Language: cs\n" "Language: cs\n"
@@ -336,25 +336,25 @@ msgstr "Vybrat sezení"
msgid "Not listed?" msgid "Not listed?"
msgstr "Nejste na seznamu?" msgstr "Nejste na seznamu?"
#: ../js/gdm/loginDialog.js:616 #: ../js/gdm/loginDialog.js:611
#, javascript-format #, javascript-format
msgid "(e.g., user or %s)" msgid "(e.g., user or %s)"
msgstr "(např. uživatel nebo %s)" msgstr "(např. uživatel nebo %s)"
#: ../js/gdm/loginDialog.js:621 ../js/ui/components/networkAgent.js:262 #: ../js/gdm/loginDialog.js:616 ../js/ui/components/networkAgent.js:262
#: ../js/ui/components/networkAgent.js:280 #: ../js/ui/components/networkAgent.js:280
msgid "Username: " msgid "Username: "
msgstr "Uživatelské jméno: " msgstr "Uživatelské jméno: "
#: ../js/gdm/loginDialog.js:924 #: ../js/gdm/loginDialog.js:917
msgid "Login Window" msgid "Login Window"
msgstr "Přihlašovací okno" msgstr "Přihlašovací okno"
#: ../js/gdm/util.js:323 #: ../js/gdm/util.js:322
msgid "Authentication error" msgid "Authentication error"
msgstr "Chyba ověření" msgstr "Chyba ověření"
#: ../js/gdm/util.js:453 #: ../js/gdm/util.js:452
msgid "(or swipe finger)" msgid "(or swipe finger)"
msgstr "(nebo otiskněte prst)" msgstr "(nebo otiskněte prst)"
@@ -371,34 +371,30 @@ msgstr "Nelze analyzovat příkaz:"
msgid "Execution of “%s” failed:" msgid "Execution of “%s” failed:"
msgstr "Vykonání „%s“ selhalo:" msgstr "Vykonání „%s“ selhalo:"
#: ../js/ui/appDisplay.js:640 #: ../js/ui/appDisplay.js:636
msgid "Frequently used applications will appear here" msgid "Frequently used applications will appear here"
msgstr "Zde se objeví často používané aplikace" msgstr "Zde se objeví často používané aplikace"
#: ../js/ui/appDisplay.js:751 #: ../js/ui/appDisplay.js:747
msgid "Frequent" msgid "Frequent"
msgstr "Časté" msgstr "Časté"
#: ../js/ui/appDisplay.js:758 #: ../js/ui/appDisplay.js:754
msgid "All" msgid "All"
msgstr "Všechny" msgstr "Všechny"
#: ../js/ui/appDisplay.js:1571 #: ../js/ui/appDisplay.js:1566
msgid "New Window" msgid "New Window"
msgstr "Nové okno" msgstr "Nové okno"
#: ../js/ui/appDisplay.js:1593 ../js/ui/dash.js:285 #: ../js/ui/appDisplay.js:1588 ../js/ui/dash.js:285
msgid "Remove from Favorites" msgid "Remove from Favorites"
msgstr "Odstranit z oblíbených" msgstr "Odstranit z oblíbených"
#: ../js/ui/appDisplay.js:1599 #: ../js/ui/appDisplay.js:1594
msgid "Add to Favorites" msgid "Add to Favorites"
msgstr "Přidat mezi oblíbené" msgstr "Přidat mezi oblíbené"
#: ../js/ui/appDisplay.js:1608
msgid "Show Details"
msgstr "Zobrazit podrobnosti"
#: ../js/ui/appFavorites.js:87 #: ../js/ui/appFavorites.js:87
#, javascript-format #, javascript-format
msgid "%s has been added to your favorites." msgid "%s has been added to your favorites."
@@ -409,8 +405,8 @@ msgstr "%s byl přidán mezi oblíbené."
msgid "%s has been removed from your favorites." msgid "%s has been removed from your favorites."
msgstr "%s byl odstraněn z oblíbených." msgstr "%s byl odstraněn z oblíbených."
#: ../js/ui/backgroundMenu.js:19 ../js/ui/panel.js:810 #: ../js/ui/backgroundMenu.js:19 ../js/ui/panel.js:809
#: ../js/ui/status/system.js:337 #: ../js/ui/status/system.js:334
msgid "Settings" msgid "Settings"
msgstr "Nastavení" msgstr "Nastavení"
@@ -421,14 +417,14 @@ msgstr "Změnit pozadí…"
#. Translators: Shown in calendar event list for all day events #. Translators: Shown in calendar event list for all day events
#. * Keep it short, best if you can use less then 10 characters #. * Keep it short, best if you can use less then 10 characters
#. */ #. */
#: ../js/ui/calendar.js:67 #: ../js/ui/calendar.js:64
msgctxt "event list time" msgctxt "event list time"
msgid "All Day" msgid "All Day"
msgstr "Celý den" msgstr "Celý den"
#. Translators: Shown in calendar event list, if 24h format, #. Translators: Shown in calendar event list, if 24h format,
#. \u2236 is a ratio character, similar to : */ #. \u2236 is a ratio character, similar to : */
#: ../js/ui/calendar.js:73 #: ../js/ui/calendar.js:70
msgctxt "event list time" msgctxt "event list time"
msgid "%H%M" msgid "%H%M"
msgstr "%k%M" msgstr "%k%M"
@@ -436,7 +432,7 @@ msgstr "%k%M"
#. Translators: Shown in calendar event list, if 12h format, #. Translators: Shown in calendar event list, if 12h format,
#. \u2236 is a ratio character, similar to : and \u2009 is #. \u2236 is a ratio character, similar to : and \u2009 is
#. a thin space */ #. a thin space */
#: ../js/ui/calendar.js:82 #: ../js/ui/calendar.js:79
msgctxt "event list time" msgctxt "event list time"
msgid "%l%M%p" msgid "%l%M%p"
msgstr "%l%M%p" msgstr "%l%M%p"
@@ -446,43 +442,43 @@ msgstr "%l%M%p"
#. * NOTE: These grid abbreviations are always shown together #. * NOTE: These grid abbreviations are always shown together
#. * and in order, e.g. "S M T W T F S". #. * and in order, e.g. "S M T W T F S".
#. */ #. */
#: ../js/ui/calendar.js:113 #: ../js/ui/calendar.js:110
msgctxt "grid sunday" msgctxt "grid sunday"
msgid "S" msgid "S"
msgstr "Ne" msgstr "Ne"
#. Translators: Calendar grid abbreviation for Monday */ #. Translators: Calendar grid abbreviation for Monday */
#: ../js/ui/calendar.js:115 #: ../js/ui/calendar.js:112
msgctxt "grid monday" msgctxt "grid monday"
msgid "M" msgid "M"
msgstr "Po" msgstr "Po"
#. Translators: Calendar grid abbreviation for Tuesday */ #. Translators: Calendar grid abbreviation for Tuesday */
#: ../js/ui/calendar.js:117 #: ../js/ui/calendar.js:114
msgctxt "grid tuesday" msgctxt "grid tuesday"
msgid "T" msgid "T"
msgstr "Út" msgstr "Út"
#. Translators: Calendar grid abbreviation for Wednesday */ #. Translators: Calendar grid abbreviation for Wednesday */
#: ../js/ui/calendar.js:119 #: ../js/ui/calendar.js:116
msgctxt "grid wednesday" msgctxt "grid wednesday"
msgid "W" msgid "W"
msgstr "St" msgstr "St"
#. Translators: Calendar grid abbreviation for Thursday */ #. Translators: Calendar grid abbreviation for Thursday */
#: ../js/ui/calendar.js:121 #: ../js/ui/calendar.js:118
msgctxt "grid thursday" msgctxt "grid thursday"
msgid "T" msgid "T"
msgstr "Čt" msgstr "Čt"
#. Translators: Calendar grid abbreviation for Friday */ #. Translators: Calendar grid abbreviation for Friday */
#: ../js/ui/calendar.js:123 #: ../js/ui/calendar.js:120
msgctxt "grid friday" msgctxt "grid friday"
msgid "F" msgid "F"
msgstr "Pá" msgstr "Pá"
#. Translators: Calendar grid abbreviation for Saturday */ #. Translators: Calendar grid abbreviation for Saturday */
#: ../js/ui/calendar.js:125 #: ../js/ui/calendar.js:122
msgctxt "grid saturday" msgctxt "grid saturday"
msgid "S" msgid "S"
msgstr "So" msgstr "So"
@@ -493,93 +489,97 @@ msgstr "So"
#. * so they need to be unique (e.g. Tuesday and Thursday cannot #. * so they need to be unique (e.g. Tuesday and Thursday cannot
#. * both be 'T'). #. * both be 'T').
#. */ #. */
#: ../js/ui/calendar.js:138 #: ../js/ui/calendar.js:135
msgctxt "list sunday" msgctxt "list sunday"
msgid "Su" msgid "Su"
msgstr "Ne" msgstr "Ne"
#. Translators: Event list abbreviation for Monday */ #. Translators: Event list abbreviation for Monday */
#: ../js/ui/calendar.js:140 #: ../js/ui/calendar.js:137
msgctxt "list monday" msgctxt "list monday"
msgid "M" msgid "M"
msgstr "Po" msgstr "Po"
#. Translators: Event list abbreviation for Tuesday */ #. Translators: Event list abbreviation for Tuesday */
#: ../js/ui/calendar.js:142 #: ../js/ui/calendar.js:139
msgctxt "list tuesday" msgctxt "list tuesday"
msgid "T" msgid "T"
msgstr "Út" msgstr "Út"
#. Translators: Event list abbreviation for Wednesday */ #. Translators: Event list abbreviation for Wednesday */
#: ../js/ui/calendar.js:144 #: ../js/ui/calendar.js:141
msgctxt "list wednesday" msgctxt "list wednesday"
msgid "W" msgid "W"
msgstr "St" msgstr "St"
#. Translators: Event list abbreviation for Thursday */ #. Translators: Event list abbreviation for Thursday */
#: ../js/ui/calendar.js:146 #: ../js/ui/calendar.js:143
msgctxt "list thursday" msgctxt "list thursday"
msgid "Th" msgid "Th"
msgstr "Čt" msgstr "Čt"
#. Translators: Event list abbreviation for Friday */ #. Translators: Event list abbreviation for Friday */
#: ../js/ui/calendar.js:148 #: ../js/ui/calendar.js:145
msgctxt "list friday" msgctxt "list friday"
msgid "F" msgid "F"
msgstr "Pá" msgstr "Pá"
#. Translators: Event list abbreviation for Saturday */ #. Translators: Event list abbreviation for Saturday */
#: ../js/ui/calendar.js:150 #: ../js/ui/calendar.js:147
msgctxt "list saturday" msgctxt "list saturday"
msgid "S" msgid "S"
msgstr "So" msgstr "So"
#: ../js/ui/calendar.js:453 #: ../js/ui/calendar.js:390
msgid "calendar:MY"
msgstr "calendar:MY"
#: ../js/ui/calendar.js:450
msgid "Previous month" msgid "Previous month"
msgstr "Předchozí měsíc" msgstr "Předchozí měsíc"
#: ../js/ui/calendar.js:463 #: ../js/ui/calendar.js:460
msgid "Next month" msgid "Next month"
msgstr "Následující měsíc" msgstr "Následující měsíc"
#. Translators: Text to show if there are no events */ #. Translators: Text to show if there are no events */
#: ../js/ui/calendar.js:775 #: ../js/ui/calendar.js:772
msgid "Nothing Scheduled" msgid "Nothing Scheduled"
msgstr "Nic nenaplánováno" msgstr "Nic nenaplánováno"
#. Translators: Shown on calendar heading when selected day occurs on current year */ #. Translators: Shown on calendar heading when selected day occurs on current year */
#: ../js/ui/calendar.js:793 #: ../js/ui/calendar.js:790
msgctxt "calendar heading" msgctxt "calendar heading"
msgid "%A, %B %d" msgid "%A, %B %d"
msgstr "%A, %e. %B" msgstr "%A, %e. %B"
#. Translators: Shown on calendar heading when selected day occurs on different year */ #. Translators: Shown on calendar heading when selected day occurs on different year */
#: ../js/ui/calendar.js:796 #: ../js/ui/calendar.js:793
msgctxt "calendar heading" msgctxt "calendar heading"
msgid "%A, %B %d, %Y" msgid "%A, %B %d, %Y"
msgstr "%A, %e. %B %Y" msgstr "%A, %e. %B %Y"
#: ../js/ui/calendar.js:807 #: ../js/ui/calendar.js:804
msgid "Today" msgid "Today"
msgstr "Dnes" msgstr "Dnes"
#: ../js/ui/calendar.js:811 #: ../js/ui/calendar.js:808
msgid "Tomorrow" msgid "Tomorrow"
msgstr "Zítra" msgstr "Zítra"
#: ../js/ui/calendar.js:822 #: ../js/ui/calendar.js:819
msgid "This week" msgid "This week"
msgstr "Tento týden" msgstr "Tento týden"
#: ../js/ui/calendar.js:830 #: ../js/ui/calendar.js:827
msgid "Next week" msgid "Next week"
msgstr "Následující týden" msgstr "Následující týden"
#: ../js/ui/components/automountManager.js:91 #: ../js/ui/components/automountManager.js:90
msgid "External drive connected" msgid "External drive connected"
msgstr "Externí svazek připojen" msgstr "Externí svazek připojen"
#: ../js/ui/components/automountManager.js:102 #: ../js/ui/components/automountManager.js:101
msgid "External drive disconnected" msgid "External drive disconnected"
msgstr "Externí svazek odpojen" msgstr "Externí svazek odpojen"
@@ -724,77 +724,77 @@ msgid "Mute"
msgstr "Ztlumit" msgstr "Ztlumit"
#. Translators: Time in 24h format */ #. Translators: Time in 24h format */
#: ../js/ui/components/telepathyClient.js:958 #: ../js/ui/components/telepathyClient.js:955
msgid "%H%M" msgid "%H%M"
msgstr "%k%M" msgstr "%k%M"
#. Translators: this is the word "Yesterday" followed by a #. Translators: this is the word "Yesterday" followed by a
#. time string in 24h format. i.e. "Yesterday, 14:30" */ #. time string in 24h format. i.e. "Yesterday, 14:30" */
#: ../js/ui/components/telepathyClient.js:965 #: ../js/ui/components/telepathyClient.js:962
msgid "Yesterday, %H%M" msgid "Yesterday, %H%M"
msgstr "včera, %k%M" msgstr "včera, %k%M"
#. Translators: this is the week day name followed by a time #. Translators: this is the week day name followed by a time
#. string in 24h format. i.e. "Monday, 14:30" */ #. string in 24h format. i.e. "Monday, 14:30" */
#: ../js/ui/components/telepathyClient.js:972 #: ../js/ui/components/telepathyClient.js:969
msgid "%A, %H%M" msgid "%A, %H%M"
msgstr "%A, %k%M" msgstr "%A, %k%M"
#. Translators: this is the month name and day number #. Translators: this is the month name and day number
#. followed by a time string in 24h format. #. followed by a time string in 24h format.
#. i.e. "May 25, 14:30" */ #. i.e. "May 25, 14:30" */
#: ../js/ui/components/telepathyClient.js:979 #: ../js/ui/components/telepathyClient.js:976
msgid "%B %d, %H%M" msgid "%B %d, %H%M"
msgstr "%e. %B %k%M" msgstr "%e. %B %k%M"
#. Translators: this is the month name, day number, year #. Translators: this is the month name, day number, year
#. number followed by a time string in 24h format. #. number followed by a time string in 24h format.
#. i.e. "May 25 2012, 14:30" */ #. i.e. "May 25 2012, 14:30" */
#: ../js/ui/components/telepathyClient.js:985 #: ../js/ui/components/telepathyClient.js:982
msgid "%B %d %Y, %H%M" msgid "%B %d %Y, %H%M"
msgstr "%e. %B %Y, %k%M" msgstr "%e. %B %Y, %k%M"
#. Translators: Time in 24h format */ #. Translators: Time in 24h format */
#: ../js/ui/components/telepathyClient.js:994 #: ../js/ui/components/telepathyClient.js:991
msgid "%l%M %p" msgid "%l%M %p"
msgstr "%l%M%p" msgstr "%l%M%p"
#. Translators: this is the word "Yesterday" followed by a #. Translators: this is the word "Yesterday" followed by a
#. time string in 12h format. i.e. "Yesterday, 2:30 pm" */ #. time string in 12h format. i.e. "Yesterday, 2:30 pm" */
#: ../js/ui/components/telepathyClient.js:1001 #: ../js/ui/components/telepathyClient.js:998
msgid "Yesterday, %l%M %p" msgid "Yesterday, %l%M %p"
msgstr "včera, %l%M%p" msgstr "včera, %l%M%p"
#. Translators: this is the week day name followed by a time #. Translators: this is the week day name followed by a time
#. string in 12h format. i.e. "Monday, 2:30 pm" */ #. string in 12h format. i.e. "Monday, 2:30 pm" */
#: ../js/ui/components/telepathyClient.js:1008 #: ../js/ui/components/telepathyClient.js:1005
msgid "%A, %l%M %p" msgid "%A, %l%M %p"
msgstr "%A, %l%M%p" msgstr "%A, %l%M%p"
#. Translators: this is the month name and day number #. Translators: this is the month name and day number
#. followed by a time string in 12h format. #. followed by a time string in 12h format.
#. i.e. "May 25, 2:30 pm" */ #. i.e. "May 25, 2:30 pm" */
#: ../js/ui/components/telepathyClient.js:1015 #: ../js/ui/components/telepathyClient.js:1012
msgid "%B %d, %l%M %p" msgid "%B %d, %l%M %p"
msgstr "%e. %B, %l%M%p" msgstr "%e. %B, %l%M%p"
#. Translators: this is the month name, day number, year #. Translators: this is the month name, day number, year
#. number followed by a time string in 12h format. #. number followed by a time string in 12h format.
#. i.e. "May 25 2012, 2:30 pm"*/ #. i.e. "May 25 2012, 2:30 pm"*/
#: ../js/ui/components/telepathyClient.js:1021 #: ../js/ui/components/telepathyClient.js:1018
msgid "%B %d %Y, %l%M %p" msgid "%B %d %Y, %l%M %p"
msgstr "%e. %B %Y, %l%M%p" msgstr "%e. %B %Y, %l%M%p"
#. Translators: this is the other person changing their old IM name to their new #. Translators: this is the other person changing their old IM name to their new
#. IM name. */ #. IM name. */
#: ../js/ui/components/telepathyClient.js:1054 #: ../js/ui/components/telepathyClient.js:1051
#, javascript-format #, javascript-format
msgid "%s is now known as %s" msgid "%s is now known as %s"
msgstr "%s je teď znám jako %s" msgstr "%s je teď znám jako %s"
#. translators: argument is a room name like #. translators: argument is a room name like
#. * room@jabber.org for example. */ #. * room@jabber.org for example. */
#: ../js/ui/components/telepathyClient.js:1158 #: ../js/ui/components/telepathyClient.js:1154
#, javascript-format #, javascript-format
msgid "Invitation to %s" msgid "Invitation to %s"
msgstr "Pozvánka na připojení k %s" msgstr "Pozvánka na připojení k %s"
@@ -802,38 +802,38 @@ msgstr "Pozvánka na připojení k %s"
#. translators: first argument is the name of a contact and the second #. translators: first argument is the name of a contact and the second
#. * one the name of a room. "Alice is inviting you to join room@jabber.org #. * one the name of a room. "Alice is inviting you to join room@jabber.org
#. * for example. */ #. * for example. */
#: ../js/ui/components/telepathyClient.js:1166 #: ../js/ui/components/telepathyClient.js:1162
#, javascript-format #, javascript-format
msgid "%s is inviting you to join %s" msgid "%s is inviting you to join %s"
msgstr "%s vás zve do %s" msgstr "%s vás zve do %s"
#: ../js/ui/components/telepathyClient.js:1168 #: ../js/ui/components/telepathyClient.js:1164
#: ../js/ui/components/telepathyClient.js:1203 #: ../js/ui/components/telepathyClient.js:1199
#: ../js/ui/components/telepathyClient.js:1237 #: ../js/ui/components/telepathyClient.js:1233
#: ../js/ui/components/telepathyClient.js:1295 #: ../js/ui/components/telepathyClient.js:1290
msgid "Decline" msgid "Decline"
msgstr "Odmítnout" msgstr "Odmítnout"
#: ../js/ui/components/telepathyClient.js:1174 #: ../js/ui/components/telepathyClient.js:1170
#: ../js/ui/components/telepathyClient.js:1243 #: ../js/ui/components/telepathyClient.js:1239
#: ../js/ui/components/telepathyClient.js:1300 #: ../js/ui/components/telepathyClient.js:1295
msgid "Accept" msgid "Accept"
msgstr "Přijmout" msgstr "Přijmout"
#. translators: argument is a contact name like Alice for example. */ #. translators: argument is a contact name like Alice for example. */
#: ../js/ui/components/telepathyClient.js:1193 #: ../js/ui/components/telepathyClient.js:1189
#, javascript-format #, javascript-format
msgid "Video call from %s" msgid "Video call from %s"
msgstr "Videohovor od %s" msgstr "Videohovor od %s"
#. translators: argument is a contact name like Alice for example. */ #. translators: argument is a contact name like Alice for example. */
#: ../js/ui/components/telepathyClient.js:1196 #: ../js/ui/components/telepathyClient.js:1192
#, javascript-format #, javascript-format
msgid "Call from %s" msgid "Call from %s"
msgstr "Hovor od %s" msgstr "Hovor od %s"
#. translators: this is a button label (verb), not a noun */ #. translators: this is a button label (verb), not a noun */
#: ../js/ui/components/telepathyClient.js:1210 #: ../js/ui/components/telepathyClient.js:1206
msgid "Answer" msgid "Answer"
msgstr "Zvednout" msgstr "Zvednout"
@@ -842,110 +842,110 @@ msgstr "Zvednout"
#. * file name. The string will be something #. * file name. The string will be something
#. * like: "Alice is sending you test.ogg" #. * like: "Alice is sending you test.ogg"
#. */ #. */
#: ../js/ui/components/telepathyClient.js:1231 #: ../js/ui/components/telepathyClient.js:1227
#, javascript-format #, javascript-format
msgid "%s is sending you %s" msgid "%s is sending you %s"
msgstr "%s vám posílá %s" msgstr "%s vám posílá %s"
#. To translators: The parameter is the contact's alias */ #. To translators: The parameter is the contact's alias */
#: ../js/ui/components/telepathyClient.js:1260 #: ../js/ui/components/telepathyClient.js:1256
#, javascript-format #, javascript-format
msgid "%s would like permission to see when you are online" msgid "%s would like permission to see when you are online"
msgstr "%s vás žádá o oprávnění vidět, že jste dostupní" msgstr "%s vás žádá o oprávnění vidět, že jste dostupní"
#: ../js/ui/components/telepathyClient.js:1346 #: ../js/ui/components/telepathyClient.js:1341
msgid "Network error" msgid "Network error"
msgstr "Chyba sítě" msgstr "Chyba sítě"
#: ../js/ui/components/telepathyClient.js:1348 #: ../js/ui/components/telepathyClient.js:1343
msgid "Authentication failed" msgid "Authentication failed"
msgstr "Ověření selhalo" msgstr "Ověření selhalo"
#: ../js/ui/components/telepathyClient.js:1350 #: ../js/ui/components/telepathyClient.js:1345
msgid "Encryption error" msgid "Encryption error"
msgstr "Chyba šifrování" msgstr "Chyba šifrování"
#: ../js/ui/components/telepathyClient.js:1352 #: ../js/ui/components/telepathyClient.js:1347
msgid "Certificate not provided" msgid "Certificate not provided"
msgstr "Certifikát neposkytnut" msgstr "Certifikát neposkytnut"
#: ../js/ui/components/telepathyClient.js:1354 #: ../js/ui/components/telepathyClient.js:1349
msgid "Certificate untrusted" msgid "Certificate untrusted"
msgstr "Nedůvěryhodný certifikát" msgstr "Nedůvěryhodný certifikát"
#: ../js/ui/components/telepathyClient.js:1356 #: ../js/ui/components/telepathyClient.js:1351
msgid "Certificate expired" msgid "Certificate expired"
msgstr "Platnost certifikátu vypršela" msgstr "Platnost certifikátu vypršela"
#: ../js/ui/components/telepathyClient.js:1358 #: ../js/ui/components/telepathyClient.js:1353
msgid "Certificate not activated" msgid "Certificate not activated"
msgstr "Certifikát není aktivován" msgstr "Certifikát není aktivován"
#: ../js/ui/components/telepathyClient.js:1360 #: ../js/ui/components/telepathyClient.js:1355
msgid "Certificate hostname mismatch" msgid "Certificate hostname mismatch"
msgstr "Název počítače certifikátu nesouhlasí" msgstr "Název počítače certifikátu nesouhlasí"
#: ../js/ui/components/telepathyClient.js:1362 #: ../js/ui/components/telepathyClient.js:1357
msgid "Certificate fingerprint mismatch" msgid "Certificate fingerprint mismatch"
msgstr "Otisk prstu certifikátu nesouhlasí" msgstr "Otisk prstu certifikátu nesouhlasí"
#: ../js/ui/components/telepathyClient.js:1364 #: ../js/ui/components/telepathyClient.js:1359
msgid "Certificate self-signed" msgid "Certificate self-signed"
msgstr "Certifikát je podepsán sám sebou" msgstr "Certifikát je podepsán sám sebou"
#: ../js/ui/components/telepathyClient.js:1366 #: ../js/ui/components/telepathyClient.js:1361
msgid "Status is set to offline" msgid "Status is set to offline"
msgstr "Stav nastaven na „Odhlášen“" msgstr "Stav nastaven na „Odhlášen“"
#: ../js/ui/components/telepathyClient.js:1368 #: ../js/ui/components/telepathyClient.js:1363
msgid "Encryption is not available" msgid "Encryption is not available"
msgstr "Šifrování není dostupné" msgstr "Šifrování není dostupné"
#: ../js/ui/components/telepathyClient.js:1370 #: ../js/ui/components/telepathyClient.js:1365
msgid "Certificate is invalid" msgid "Certificate is invalid"
msgstr "Certifikát je neplatný" msgstr "Certifikát je neplatný"
#: ../js/ui/components/telepathyClient.js:1372 #: ../js/ui/components/telepathyClient.js:1367
msgid "Connection has been refused" msgid "Connection has been refused"
msgstr "Spojení bylo odmítnuto" msgstr "Spojení bylo odmítnuto"
#: ../js/ui/components/telepathyClient.js:1374 #: ../js/ui/components/telepathyClient.js:1369
msgid "Connection can't be established" msgid "Connection can't be established"
msgstr "Spojení nemohlo bát navázáno" msgstr "Spojení nemohlo bát navázáno"
#: ../js/ui/components/telepathyClient.js:1376 #: ../js/ui/components/telepathyClient.js:1371
msgid "Connection has been lost" msgid "Connection has been lost"
msgstr "Spojení bylo ztraceno" msgstr "Spojení bylo ztraceno"
#: ../js/ui/components/telepathyClient.js:1378 #: ../js/ui/components/telepathyClient.js:1373
msgid "This account is already connected to the server" msgid "This account is already connected to the server"
msgstr "Tento účet je již připojen k serveru" msgstr "Tento účet je již připojen k serveru"
#: ../js/ui/components/telepathyClient.js:1380 #: ../js/ui/components/telepathyClient.js:1375
msgid "" msgid ""
"Connection has been replaced by a new connection using the same resource" "Connection has been replaced by a new connection using the same resource"
msgstr "Spojení bylo nahrazeno novým spojením, které používá stejný zdroj" msgstr "Spojení bylo nahrazeno novým spojením, které používá stejný zdroj"
#: ../js/ui/components/telepathyClient.js:1382 #: ../js/ui/components/telepathyClient.js:1377
msgid "The account already exists on the server" msgid "The account already exists on the server"
msgstr "Takový účet již na serveru existuje" msgstr "Takový účet již na serveru existuje"
#: ../js/ui/components/telepathyClient.js:1384 #: ../js/ui/components/telepathyClient.js:1379
msgid "Server is currently too busy to handle the connection" msgid "Server is currently too busy to handle the connection"
msgstr "Server je právě příliš zaneprázdněn na to, aby obsloužil spojení" msgstr "Server je právě příliš zaneprázdněn na to, aby obsloužil spojení"
#: ../js/ui/components/telepathyClient.js:1386 #: ../js/ui/components/telepathyClient.js:1381
msgid "Certificate has been revoked" msgid "Certificate has been revoked"
msgstr "Certifikát byl odvolán" msgstr "Certifikát byl odvolán"
#: ../js/ui/components/telepathyClient.js:1388 #: ../js/ui/components/telepathyClient.js:1383
msgid "" msgid ""
"Certificate uses an insecure cipher algorithm or is cryptographically weak" "Certificate uses an insecure cipher algorithm or is cryptographically weak"
msgstr "" msgstr ""
"Certifikát používá nepříliš bezpečný šifrovací algoritmus nebo je z " "Certifikát používá nepříliš bezpečný šifrovací algoritmus nebo je z "
"kryptografického hlediska slabý" "kryptografického hlediska slabý"
#: ../js/ui/components/telepathyClient.js:1390 #: ../js/ui/components/telepathyClient.js:1385
msgid "" msgid ""
"The length of the server certificate, or the depth of the server certificate " "The length of the server certificate, or the depth of the server certificate "
"chain, exceed the limits imposed by the cryptography library" "chain, exceed the limits imposed by the cryptography library"
@@ -953,22 +953,22 @@ msgstr ""
"Délka certifikátu serveru nebo délka zřetězených certifikátů serveru " "Délka certifikátu serveru nebo délka zřetězených certifikátů serveru "
"přesáhla omezení dané kryptografickou knihovnou" "přesáhla omezení dané kryptografickou knihovnou"
#: ../js/ui/components/telepathyClient.js:1392 #: ../js/ui/components/telepathyClient.js:1387
msgid "Internal error" msgid "Internal error"
msgstr "Vnitřní chyba" msgstr "Vnitřní chyba"
#. translators: argument is the account name, like #. translators: argument is the account name, like
#. * name@jabber.org for example. */ #. * name@jabber.org for example. */
#: ../js/ui/components/telepathyClient.js:1402 #: ../js/ui/components/telepathyClient.js:1397
#, javascript-format #, javascript-format
msgid "Unable to connect to %s" msgid "Unable to connect to %s"
msgstr "Nelze se připojit k „%s“" msgstr "Nelze se připojit k „%s“"
#: ../js/ui/components/telepathyClient.js:1407 #: ../js/ui/components/telepathyClient.js:1402
msgid "View account" msgid "View account"
msgstr "Zobrazit účet" msgstr "Zobrazit účet"
#: ../js/ui/components/telepathyClient.js:1444 #: ../js/ui/components/telepathyClient.js:1439
msgid "Unknown reason" msgid "Unknown reason"
msgstr "Neznámý důvod" msgstr "Neznámý důvod"
@@ -984,15 +984,15 @@ msgstr "Zobrazit aplikace"
msgid "Dash" msgid "Dash"
msgstr "Oblíbené" msgstr "Oblíbené"
#: ../js/ui/dateMenu.js:97 #: ../js/ui/dateMenu.js:91
msgid "Open Calendar" msgid "Open Calendar"
msgstr "Otevřít kalendář" msgstr "Otevřít kalendář"
#: ../js/ui/dateMenu.js:101 #: ../js/ui/dateMenu.js:95
msgid "Open Clocks" msgid "Open Clocks"
msgstr "Otevřít Hodiny" msgstr "Otevřít Hodiny"
#: ../js/ui/dateMenu.js:108 #: ../js/ui/dateMenu.js:102
msgid "Date & Time Settings" msgid "Date & Time Settings"
msgstr "Nastavení data a času" msgstr "Nastavení data a času"
@@ -1000,7 +1000,7 @@ msgstr "Nastavení data a času"
#. Translators: This is the date format to use when the calendar popup is #. Translators: This is the date format to use when the calendar popup is
#. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM"). #. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM").
#. */ #. */
#: ../js/ui/dateMenu.js:205 #: ../js/ui/dateMenu.js:192
msgid "%A %B %e, %Y" msgid "%A %B %e, %Y"
msgstr "%A, %e. %B, %Y" msgstr "%A, %e. %B, %Y"
@@ -1131,13 +1131,13 @@ msgid "Other users are logged in."
msgstr "Jsou přihlášeni jiní uživatelé." msgstr "Jsou přihlášeni jiní uživatelé."
#. Translators: Remote here refers to a remote session, like a ssh login */ #. Translators: Remote here refers to a remote session, like a ssh login */
#: ../js/ui/endSessionDialog.js:619 #: ../js/ui/endSessionDialog.js:618
#, javascript-format #, javascript-format
msgid "%s (remote)" msgid "%s (remote)"
msgstr "%s (vzdálený)" msgstr "%s (vzdálený)"
#. Translators: Console here refers to a tty like a VT console */ #. Translators: Console here refers to a tty like a VT console */
#: ../js/ui/endSessionDialog.js:622 #: ../js/ui/endSessionDialog.js:621
#, javascript-format #, javascript-format
msgid "%s (console)" msgid "%s (console)"
msgstr "%s (konzola)" msgstr "%s (konzola)"
@@ -1151,7 +1151,7 @@ msgstr "Instalovat"
msgid "Download and install “%s” from extensions.gnome.org?" msgid "Download and install “%s” from extensions.gnome.org?"
msgstr "Stáhnout a nainstalovat „%s“ z extensions.gnome.org?" msgstr "Stáhnout a nainstalovat „%s“ z extensions.gnome.org?"
#: ../js/ui/keyboard.js:645 ../js/ui/status/keyboard.js:335 #: ../js/ui/keyboard.js:641 ../js/ui/status/keyboard.js:335
msgid "Keyboard" msgid "Keyboard"
msgstr "Klávesnice" msgstr "Klávesnice"
@@ -1239,16 +1239,16 @@ msgstr "Žádné zprávy"
msgid "Message Tray" msgid "Message Tray"
msgstr "Lišta zpráv" msgstr "Lišta zpráv"
#: ../js/ui/messageTray.js:2967 #: ../js/ui/messageTray.js:2962
msgid "System Information" msgid "System Information"
msgstr "Informace o systému" msgstr "Informace o systému"
#: ../js/ui/notificationDaemon.js:516 ../src/shell-app.c:425 #: ../js/ui/notificationDaemon.js:515 ../src/shell-app.c:425
msgctxt "program" msgctxt "program"
msgid "Unknown" msgid "Unknown"
msgstr "Neznámé" msgstr "Neznámé"
#: ../js/ui/overviewControls.js:488 ../js/ui/screenShield.js:151 #: ../js/ui/overviewControls.js:483 ../js/ui/screenShield.js:151
#, javascript-format #, javascript-format
msgid "%d new message" msgid "%d new message"
msgid_plural "%d new messages" msgid_plural "%d new messages"
@@ -1282,7 +1282,7 @@ msgstr "Ukončit"
msgid "Activities" msgid "Activities"
msgstr "Činnosti" msgstr "Činnosti"
#: ../js/ui/panel.js:915 #: ../js/ui/panel.js:914
msgid "Top Bar" msgid "Top Bar"
msgstr "Horní lišta" msgstr "Horní lišta"
@@ -1294,7 +1294,7 @@ msgstr "toggle-switch-intl"
msgid "Enter a Command" msgid "Enter a Command"
msgstr "Zadejte příkaz:" msgstr "Zadejte příkaz:"
#: ../js/ui/runDialog.js:114 ../js/ui/windowMenu.js:117 #: ../js/ui/runDialog.js:114
msgid "Close" msgid "Close"
msgstr "Zavřít" msgstr "Zavřít"
@@ -1312,7 +1312,7 @@ msgstr[0] "%d nové upozornění"
msgstr[1] "%d nová upozornění" msgstr[1] "%d nová upozornění"
msgstr[2] "%d nových upozornění" msgstr[2] "%d nových upozornění"
#: ../js/ui/screenShield.js:474 ../js/ui/status/system.js:345 #: ../js/ui/screenShield.js:474 ../js/ui/status/system.js:342
msgid "Lock" msgid "Lock"
msgstr "Uzamknout" msgstr "Uzamknout"
@@ -1320,19 +1320,19 @@ msgstr "Uzamknout"
msgid "GNOME needs to lock the screen" msgid "GNOME needs to lock the screen"
msgstr "GNOME potřebuje uzamknout obrazovku" msgstr "GNOME potřebuje uzamknout obrazovku"
#: ../js/ui/screenShield.js:835 ../js/ui/screenShield.js:1312 #: ../js/ui/screenShield.js:835 ../js/ui/screenShield.js:1309
msgid "Unable to lock" msgid "Unable to lock"
msgstr "Nelze uzamknout obrazovku" msgstr "Nelze uzamknout obrazovku"
#: ../js/ui/screenShield.js:836 ../js/ui/screenShield.js:1313 #: ../js/ui/screenShield.js:836 ../js/ui/screenShield.js:1310
msgid "Lock was blocked by an application" msgid "Lock was blocked by an application"
msgstr "Zamknutí bylo zablokováno některou z aplikací" msgstr "Zamknutí bylo zablokováno některou z aplikací"
#: ../js/ui/search.js:606 #: ../js/ui/search.js:603
msgid "Searching…" msgid "Searching…"
msgstr "Hledá se…" msgstr "Hledá se…"
#: ../js/ui/search.js:652 #: ../js/ui/search.js:649
msgid "No results." msgid "No results."
msgstr "Žádné výsledky." msgstr "Žádné výsledky."
@@ -1396,11 +1396,11 @@ msgstr "Vícenásobné stisky kláves"
msgid "Mouse Keys" msgid "Mouse Keys"
msgstr "Myš klávesnicí" msgstr "Myš klávesnicí"
#: ../js/ui/status/accessibility.js:144 #: ../js/ui/status/accessibility.js:143
msgid "High Contrast" msgid "High Contrast"
msgstr "Vysoký kontrast" msgstr "Vysoký kontrast"
#: ../js/ui/status/accessibility.js:193 #: ../js/ui/status/accessibility.js:192
msgid "Large Text" msgid "Large Text"
msgstr "Styl velkého textu" msgstr "Styl velkého textu"
@@ -1410,8 +1410,8 @@ msgstr "Bluetooth"
#: ../js/ui/status/bluetooth.js:51 ../js/ui/status/network.js:151 #: ../js/ui/status/bluetooth.js:51 ../js/ui/status/network.js:151
#: ../js/ui/status/network.js:323 ../js/ui/status/network.js:1234 #: ../js/ui/status/network.js:323 ../js/ui/status/network.js:1234
#: ../js/ui/status/network.js:1345 ../js/ui/status/rfkill.js:86 #: ../js/ui/status/network.js:1345 ../js/ui/status/rfkill.js:85
#: ../js/ui/status/rfkill.js:114 #: ../js/ui/status/rfkill.js:105
msgid "Turn Off" msgid "Turn Off"
msgstr "Vypnout" msgstr "Vypnout"
@@ -1471,37 +1471,37 @@ msgstr "Připojeno"
#. Translators: this is for network devices that are physically present but are not #. Translators: this is for network devices that are physically present but are not
#. under NetworkManager's control (and thus cannot be used in the menu) */ #. under NetworkManager's control (and thus cannot be used in the menu) */
#: ../js/ui/status/network.js:426 #: ../js/ui/status/network.js:426
msgid "Unmanaged" msgid "unmanaged"
msgstr "Nespravováno" msgstr "nespravováno"
#: ../js/ui/status/network.js:428 #: ../js/ui/status/network.js:428
msgid "Disconnecting" msgid "disconnecting..."
msgstr "Odpojuje se…" msgstr "odpojování…"
#: ../js/ui/status/network.js:434 ../js/ui/status/network.js:1254 #: ../js/ui/status/network.js:434 ../js/ui/status/network.js:1362
msgid "Connecting" msgid "connecting..."
msgstr "Připojuje se…" msgstr "připojování…"
#. Translators: this is for network connections that require some kind of key or password */ #. Translators: this is for network connections that require some kind of key or password */
#: ../js/ui/status/network.js:437 #: ../js/ui/status/network.js:437 ../js/ui/status/network.js:1365
msgid "Authentication required" msgid "authentication required"
msgstr "Je vyžadováno ověření" msgstr "je vyžadováno ověření"
#. Translators: this is for devices that require some kind of firmware or kernel #. Translators: this is for devices that require some kind of firmware or kernel
#. module, which is missing */ #. module, which is missing */
#: ../js/ui/status/network.js:445 #: ../js/ui/status/network.js:445
msgid "Firmware missing" msgid "firmware missing"
msgstr "Schází firmware" msgstr "nedostupný firmware"
#. Translators: this is for a network device that cannot be activated (for example it #. Translators: this is for a network device that cannot be activated (for example it
#. is disabled by rfkill, or it has no coverage */ #. is disabled by rfkill, or it has no coverage */
#: ../js/ui/status/network.js:449 #: ../js/ui/status/network.js:449
msgid "Unavailable" msgid "unavailable"
msgstr "Nedostupné" msgstr "nedostupné"
#: ../js/ui/status/network.js:451 ../js/ui/status/network.js:1646 #: ../js/ui/status/network.js:451 ../js/ui/status/network.js:1367
msgid "Connection failed" msgid "connection failed"
msgstr "Připojení selhalo" msgstr "připojení selhalo"
#: ../js/ui/status/network.js:467 #: ../js/ui/status/network.js:467
msgid "Wired Settings" msgid "Wired Settings"
@@ -1555,7 +1555,7 @@ msgstr "Vyberte síť"
msgid "No Networks" msgid "No Networks"
msgstr "Žádné sítě" msgstr "Žádné sítě"
#: ../js/ui/status/network.js:866 ../js/ui/status/rfkill.js:112 #: ../js/ui/status/network.js:866 ../js/ui/status/rfkill.js:103
msgid "Use hardware switch to turn off" msgid "Use hardware switch to turn off"
msgstr "K vypnutí použijte fyzický vypínač" msgstr "K vypnutí použijte fyzický vypínač"
@@ -1575,20 +1575,11 @@ msgstr "Zapnout"
msgid "Hotspot Active" msgid "Hotspot Active"
msgstr "Hotspot aktivní" msgstr "Hotspot aktivní"
#: ../js/ui/status/network.js:1362 #: ../js/ui/status/network.js:1254
msgid "connecting..." msgid "Connecting"
msgstr "připojování…" msgstr "Připojuje se…"
#. Translators: this is for network connections that require some kind of key or password */ #: ../js/ui/status/network.js:1433 ../js/ui/status/rfkill.js:88
#: ../js/ui/status/network.js:1365
msgid "authentication required"
msgstr "je vyžadováno ověření"
#: ../js/ui/status/network.js:1367
msgid "connection failed"
msgstr "připojení selhalo"
#: ../js/ui/status/network.js:1433 ../js/ui/status/rfkill.js:89
msgid "Network Settings" msgid "Network Settings"
msgstr "Nastavení sítě" msgstr "Nastavení sítě"
@@ -1604,6 +1595,10 @@ msgstr "VPN"
msgid "Network Manager" msgid "Network Manager"
msgstr "Network Manager" msgstr "Network Manager"
#: ../js/ui/status/network.js:1646
msgid "Connection failed"
msgstr "Připojení selhalo"
#: ../js/ui/status/network.js:1647 #: ../js/ui/status/network.js:1647
msgid "Activation of network connection failed" msgid "Activation of network connection failed"
msgstr "Aktivace síťového připojení selhala" msgstr "Aktivace síťového připojení selhala"
@@ -1638,31 +1633,31 @@ msgstr "Záložní zdroj"
msgid "Battery" msgid "Battery"
msgstr "Baterie" msgstr "Baterie"
#: ../js/ui/status/rfkill.js:83 #: ../js/ui/status/rfkill.js:82
msgid "Airplane Mode" msgid "Airplane Mode"
msgstr "Režim „letadlo“" msgstr "Režim „letadlo“"
#: ../js/ui/status/rfkill.js:85 #: ../js/ui/status/rfkill.js:84
msgid "On" msgid "On"
msgstr "Zapnuto" msgstr "Zapnuto"
#: ../js/ui/status/system.js:317 #: ../js/ui/status/system.js:314
msgid "Switch User" msgid "Switch User"
msgstr "Přepnout uživatele" msgstr "Přepnout uživatele"
#: ../js/ui/status/system.js:322 #: ../js/ui/status/system.js:319
msgid "Log Out" msgid "Log Out"
msgstr "Odhlásit se" msgstr "Odhlásit se"
#: ../js/ui/status/system.js:341 #: ../js/ui/status/system.js:338
msgid "Orientation Lock" msgid "Orientation Lock"
msgstr "Zámek otočení" msgstr "Zámek otočení"
#: ../js/ui/status/system.js:349 #: ../js/ui/status/system.js:346
msgid "Suspend" msgid "Suspend"
msgstr "Uspat do paměti" msgstr "Uspat do paměti"
#: ../js/ui/status/system.js:352 #: ../js/ui/status/system.js:349
msgid "Power Off" msgid "Power Off"
msgstr "Vypnout" msgstr "Vypnout"
@@ -1699,22 +1694,22 @@ msgstr "Hledat"
msgid "“%s” is ready" msgid "“%s” is ready"
msgstr "Připraveno „%s“" msgstr "Připraveno „%s“"
#: ../js/ui/windowManager.js:57 #: ../js/ui/windowManager.js:56
msgid "Do you want to keep these display settings?" msgid "Do you want to keep these display settings?"
msgstr "Chcete zachovat nastavení displeje?" msgstr "Chcete zachovat nastavení displeje?"
#. Translators: this and the following message should be limited in lenght, #. Translators: this and the following message should be limited in lenght,
#. to avoid ellipsizing the labels. #. to avoid ellipsizing the labels.
#. */ #. */
#: ../js/ui/windowManager.js:76 #: ../js/ui/windowManager.js:75
msgid "Revert Settings" msgid "Revert Settings"
msgstr "Obnovit původní" msgstr "Obnovit původní"
#: ../js/ui/windowManager.js:80 #: ../js/ui/windowManager.js:79
msgid "Keep Changes" msgid "Keep Changes"
msgstr "Zachovat" msgstr "Zachovat"
#: ../js/ui/windowManager.js:99 #: ../js/ui/windowManager.js:97
#, javascript-format #, javascript-format
msgid "Settings changes will revert in %d second" msgid "Settings changes will revert in %d second"
msgid_plural "Settings changes will revert in %d seconds" msgid_plural "Settings changes will revert in %d seconds"
@@ -1722,46 +1717,6 @@ msgstr[0] "Nastavení se obnoví na původní za %d sekundu"
msgstr[1] "Nastavení se obnoví na původní za %d sekundy" msgstr[1] "Nastavení se obnoví na původní za %d sekundy"
msgstr[2] "Nastavení se obnoví na původní za %d sekund" msgstr[2] "Nastavení se obnoví na původní za %d sekund"
#: ../js/ui/windowMenu.js:33
msgid "Minimize"
msgstr "Minimalizovat"
#: ../js/ui/windowMenu.js:40
msgid "Unmaximize"
msgstr "Zrušit maximalizaci"
#: ../js/ui/windowMenu.js:44
msgid "Maximize"
msgstr "Maximalizovat"
#: ../js/ui/windowMenu.js:51
msgid "Move"
msgstr "Přesunout"
#: ../js/ui/windowMenu.js:57
msgid "Resize"
msgstr "Změnit velikost"
#: ../js/ui/windowMenu.js:64
msgid "Move Titlebar Onscreen"
msgstr ""
#: ../js/ui/windowMenu.js:69
msgid "Always on Top"
msgstr "Vždy nahoře"
#: ../js/ui/windowMenu.js:86
msgid "Always on Visible Workspace"
msgstr "Vždy na viditelné ploše"
#: ../js/ui/windowMenu.js:103
msgid "Move to Workspace Up"
msgstr "Přesunout o plochu výš"
#: ../js/ui/windowMenu.js:108
msgid "Move to Workspace Down"
msgstr "Přesunout o plochu níž"
#: ../src/calendar-server/evolution-calendar.desktop.in.in.h:1 #: ../src/calendar-server/evolution-calendar.desktop.in.in.h:1
msgid "Evolution Calendar" msgid "Evolution Calendar"
msgstr "Kalendář Evolution" msgstr "Kalendář Evolution"
@@ -1819,6 +1774,6 @@ msgstr "Hesla si neodpovídají."
msgid "Password cannot be blank" msgid "Password cannot be blank"
msgstr "Heslo nemůže být prázdné." msgstr "Heslo nemůže být prázdné."
#: ../src/shell-polkit-authentication-agent.c:346 #: ../src/shell-polkit-authentication-agent.c:343
msgid "Authentication dialog was dismissed by the user" msgid "Authentication dialog was dismissed by the user"
msgstr "Dialogové okno ověření bylo uživatelem zrušeno" msgstr "Dialogové okno ověření bylo uživatelem zrušeno"

470
po/da.po

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

533
po/es.po

File diff suppressed because it is too large Load Diff

290
po/gl.po
View File

@@ -11,8 +11,8 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: gnome-shell master\n" "Project-Id-Version: gnome-shell master\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2014-04-30 15:34+0200\n" "POT-Creation-Date: 2014-03-31 23:35+0200\n"
"PO-Revision-Date: 2014-04-30 15:34+0200\n" "PO-Revision-Date: 2014-03-31 23:35+0200\n"
"Last-Translator: Fran Dieguez <frandieguez@gnome.org>\n" "Last-Translator: Fran Dieguez <frandieguez@gnome.org>\n"
"Language-Team: gnome-l10n-gl@gnome.org\n" "Language-Team: gnome-l10n-gl@gnome.org\n"
"Language: gl\n" "Language: gl\n"
@@ -340,25 +340,25 @@ msgstr "Escolla unha sesión"
msgid "Not listed?" msgid "Not listed?"
msgstr "Non está na lista?" msgstr "Non está na lista?"
#: ../js/gdm/loginDialog.js:616 #: ../js/gdm/loginDialog.js:614
#, javascript-format #, javascript-format
msgid "(e.g., user or %s)" msgid "(e.g., user or %s)"
msgstr "(p.ex., usuario ou %s)" msgstr "(p.ex., usuario ou %s)"
#: ../js/gdm/loginDialog.js:621 ../js/ui/components/networkAgent.js:262 #: ../js/gdm/loginDialog.js:619 ../js/ui/components/networkAgent.js:262
#: ../js/ui/components/networkAgent.js:280 #: ../js/ui/components/networkAgent.js:280
msgid "Username: " msgid "Username: "
msgstr "Nome de usuario: " msgstr "Nome de usuario: "
#: ../js/gdm/loginDialog.js:924 #: ../js/gdm/loginDialog.js:920
msgid "Login Window" msgid "Login Window"
msgstr "Xanela de inicio de sesión" msgstr "Xanela de inicio de sesión"
#: ../js/gdm/util.js:323 #: ../js/gdm/util.js:322
msgid "Authentication error" msgid "Authentication error"
msgstr "Erro de autenticación" msgstr "Erro de autenticación"
#: ../js/gdm/util.js:453 #: ../js/gdm/util.js:452
msgid "(or swipe finger)" msgid "(or swipe finger)"
msgstr "(ou pase o dedo)" msgstr "(ou pase o dedo)"
@@ -375,27 +375,27 @@ msgstr "Non foi posíbel analizar a orde:"
msgid "Execution of “%s” failed:" msgid "Execution of “%s” failed:"
msgstr "Produciuse un fallo na execución de «%s»:" msgstr "Produciuse un fallo na execución de «%s»:"
#: ../js/ui/appDisplay.js:640 #: ../js/ui/appDisplay.js:636
msgid "Frequently used applications will appear here" msgid "Frequently used applications will appear here"
msgstr "Os aplicativos usados recentemente aparecerán aquí" msgstr "Os aplicativos usados recentemente aparecerán aquí"
#: ../js/ui/appDisplay.js:751 #: ../js/ui/appDisplay.js:747
msgid "Frequent" msgid "Frequent"
msgstr "Frecuentes" msgstr "Frecuentes"
#: ../js/ui/appDisplay.js:758 #: ../js/ui/appDisplay.js:754
msgid "All" msgid "All"
msgstr "Todos" msgstr "Todos"
#: ../js/ui/appDisplay.js:1571 #: ../js/ui/appDisplay.js:1566
msgid "New Window" msgid "New Window"
msgstr "Xanela nova" msgstr "Xanela nova"
#: ../js/ui/appDisplay.js:1593 ../js/ui/dash.js:285 #: ../js/ui/appDisplay.js:1588 ../js/ui/dash.js:285
msgid "Remove from Favorites" msgid "Remove from Favorites"
msgstr "Retirar dos marcadores" msgstr "Retirar dos marcadores"
#: ../js/ui/appDisplay.js:1599 #: ../js/ui/appDisplay.js:1594
msgid "Add to Favorites" msgid "Add to Favorites"
msgstr "Engadir aos favoritos" msgstr "Engadir aos favoritos"
@@ -409,7 +409,7 @@ msgstr "%s foi engadido aos seus favoritos."
msgid "%s has been removed from your favorites." msgid "%s has been removed from your favorites."
msgstr "%s retirouse dos seus marcadores." msgstr "%s retirouse dos seus marcadores."
#: ../js/ui/backgroundMenu.js:19 ../js/ui/panel.js:810 #: ../js/ui/backgroundMenu.js:19 ../js/ui/panel.js:809
#: ../js/ui/status/system.js:334 #: ../js/ui/status/system.js:334
msgid "Settings" msgid "Settings"
msgstr "Preferencias" msgstr "Preferencias"
@@ -421,14 +421,14 @@ msgstr "Cambiar fondo de escritorio…"
#. Translators: Shown in calendar event list for all day events #. Translators: Shown in calendar event list for all day events
#. * Keep it short, best if you can use less then 10 characters #. * Keep it short, best if you can use less then 10 characters
#. */ #. */
#: ../js/ui/calendar.js:67 #: ../js/ui/calendar.js:64
msgctxt "event list time" msgctxt "event list time"
msgid "All Day" msgid "All Day"
msgstr "Todo o día" msgstr "Todo o día"
#. Translators: Shown in calendar event list, if 24h format, #. Translators: Shown in calendar event list, if 24h format,
#. \u2236 is a ratio character, similar to : */ #. \u2236 is a ratio character, similar to : */
#: ../js/ui/calendar.js:73 #: ../js/ui/calendar.js:70
msgctxt "event list time" msgctxt "event list time"
msgid "%H%M" msgid "%H%M"
msgstr "%H%M" msgstr "%H%M"
@@ -436,7 +436,7 @@ msgstr "%H%M"
#. Translators: Shown in calendar event list, if 12h format, #. Translators: Shown in calendar event list, if 12h format,
#. \u2236 is a ratio character, similar to : and \u2009 is #. \u2236 is a ratio character, similar to : and \u2009 is
#. a thin space */ #. a thin space */
#: ../js/ui/calendar.js:82 #: ../js/ui/calendar.js:79
msgctxt "event list time" msgctxt "event list time"
msgid "%l%M%p" msgid "%l%M%p"
msgstr "%l%M%p" msgstr "%l%M%p"
@@ -446,43 +446,43 @@ msgstr "%l%M%p"
#. * NOTE: These grid abbreviations are always shown together #. * NOTE: These grid abbreviations are always shown together
#. * and in order, e.g. "S M T W T F S". #. * and in order, e.g. "S M T W T F S".
#. */ #. */
#: ../js/ui/calendar.js:113 #: ../js/ui/calendar.js:110
msgctxt "grid sunday" msgctxt "grid sunday"
msgid "S" msgid "S"
msgstr "D" msgstr "D"
#. Translators: Calendar grid abbreviation for Monday */ #. Translators: Calendar grid abbreviation for Monday */
#: ../js/ui/calendar.js:115 #: ../js/ui/calendar.js:112
msgctxt "grid monday" msgctxt "grid monday"
msgid "M" msgid "M"
msgstr "L" msgstr "L"
#. Translators: Calendar grid abbreviation for Tuesday */ #. Translators: Calendar grid abbreviation for Tuesday */
#: ../js/ui/calendar.js:117 #: ../js/ui/calendar.js:114
msgctxt "grid tuesday" msgctxt "grid tuesday"
msgid "T" msgid "T"
msgstr "M" msgstr "M"
#. Translators: Calendar grid abbreviation for Wednesday */ #. Translators: Calendar grid abbreviation for Wednesday */
#: ../js/ui/calendar.js:119 #: ../js/ui/calendar.js:116
msgctxt "grid wednesday" msgctxt "grid wednesday"
msgid "W" msgid "W"
msgstr "W" msgstr "W"
#. Translators: Calendar grid abbreviation for Thursday */ #. Translators: Calendar grid abbreviation for Thursday */
#: ../js/ui/calendar.js:121 #: ../js/ui/calendar.js:118
msgctxt "grid thursday" msgctxt "grid thursday"
msgid "T" msgid "T"
msgstr "X" msgstr "X"
#. Translators: Calendar grid abbreviation for Friday */ #. Translators: Calendar grid abbreviation for Friday */
#: ../js/ui/calendar.js:123 #: ../js/ui/calendar.js:120
msgctxt "grid friday" msgctxt "grid friday"
msgid "F" msgid "F"
msgstr "V" msgstr "V"
#. Translators: Calendar grid abbreviation for Saturday */ #. Translators: Calendar grid abbreviation for Saturday */
#: ../js/ui/calendar.js:125 #: ../js/ui/calendar.js:122
msgctxt "grid saturday" msgctxt "grid saturday"
msgid "S" msgid "S"
msgstr "S" msgstr "S"
@@ -493,93 +493,97 @@ msgstr "S"
#. * so they need to be unique (e.g. Tuesday and Thursday cannot #. * so they need to be unique (e.g. Tuesday and Thursday cannot
#. * both be 'T'). #. * both be 'T').
#. */ #. */
#: ../js/ui/calendar.js:138 #: ../js/ui/calendar.js:135
msgctxt "list sunday" msgctxt "list sunday"
msgid "Su" msgid "Su"
msgstr "Do" msgstr "Do"
#. Translators: Event list abbreviation for Monday */ #. Translators: Event list abbreviation for Monday */
#: ../js/ui/calendar.js:140 #: ../js/ui/calendar.js:137
msgctxt "list monday" msgctxt "list monday"
msgid "M" msgid "M"
msgstr "L" msgstr "L"
#. Translators: Event list abbreviation for Tuesday */ #. Translators: Event list abbreviation for Tuesday */
#: ../js/ui/calendar.js:142 #: ../js/ui/calendar.js:139
msgctxt "list tuesday" msgctxt "list tuesday"
msgid "T" msgid "T"
msgstr "M" msgstr "M"
#. Translators: Event list abbreviation for Wednesday */ #. Translators: Event list abbreviation for Wednesday */
#: ../js/ui/calendar.js:144 #: ../js/ui/calendar.js:141
msgctxt "list wednesday" msgctxt "list wednesday"
msgid "W" msgid "W"
msgstr "W" msgstr "W"
#. Translators: Event list abbreviation for Thursday */ #. Translators: Event list abbreviation for Thursday */
#: ../js/ui/calendar.js:146 #: ../js/ui/calendar.js:143
msgctxt "list thursday" msgctxt "list thursday"
msgid "Th" msgid "Th"
msgstr "X" msgstr "X"
#. Translators: Event list abbreviation for Friday */ #. Translators: Event list abbreviation for Friday */
#: ../js/ui/calendar.js:148 #: ../js/ui/calendar.js:145
msgctxt "list friday" msgctxt "list friday"
msgid "F" msgid "F"
msgstr "V" msgstr "V"
#. Translators: Event list abbreviation for Saturday */ #. Translators: Event list abbreviation for Saturday */
#: ../js/ui/calendar.js:150 #: ../js/ui/calendar.js:147
msgctxt "list saturday" msgctxt "list saturday"
msgid "S" msgid "S"
msgstr "S" msgstr "S"
#: ../js/ui/calendar.js:453 #: ../js/ui/calendar.js:390
msgid "calendar:MY"
msgstr "calendar:MY"
#: ../js/ui/calendar.js:450
msgid "Previous month" msgid "Previous month"
msgstr "Anterior mes" msgstr "Anterior mes"
#: ../js/ui/calendar.js:463 #: ../js/ui/calendar.js:460
msgid "Next month" msgid "Next month"
msgstr "Seguinte mes" msgstr "Seguinte mes"
#. Translators: Text to show if there are no events */ #. Translators: Text to show if there are no events */
#: ../js/ui/calendar.js:775 #: ../js/ui/calendar.js:772
msgid "Nothing Scheduled" msgid "Nothing Scheduled"
msgstr "Nada programado" msgstr "Nada programado"
#. Translators: Shown on calendar heading when selected day occurs on current year */ #. Translators: Shown on calendar heading when selected day occurs on current year */
#: ../js/ui/calendar.js:793 #: ../js/ui/calendar.js:790
msgctxt "calendar heading" msgctxt "calendar heading"
msgid "%A, %B %d" msgid "%A, %B %d"
msgstr "%A, %d de %B" msgstr "%A, %d de %B"
#. Translators: Shown on calendar heading when selected day occurs on different year */ #. Translators: Shown on calendar heading when selected day occurs on different year */
#: ../js/ui/calendar.js:796 #: ../js/ui/calendar.js:793
msgctxt "calendar heading" msgctxt "calendar heading"
msgid "%A, %B %d, %Y" msgid "%A, %B %d, %Y"
msgstr "%A, %d de %B de %Y" msgstr "%A, %d de %B de %Y"
#: ../js/ui/calendar.js:807 #: ../js/ui/calendar.js:804
msgid "Today" msgid "Today"
msgstr "Hoxe" msgstr "Hoxe"
#: ../js/ui/calendar.js:811 #: ../js/ui/calendar.js:808
msgid "Tomorrow" msgid "Tomorrow"
msgstr "Mañá" msgstr "Mañá"
#: ../js/ui/calendar.js:822 #: ../js/ui/calendar.js:819
msgid "This week" msgid "This week"
msgstr "Esta semana" msgstr "Esta semana"
#: ../js/ui/calendar.js:830 #: ../js/ui/calendar.js:827
msgid "Next week" msgid "Next week"
msgstr "A vindeira semana" msgstr "A vindeira semana"
#: ../js/ui/components/automountManager.js:91 #: ../js/ui/components/automountManager.js:90
msgid "External drive connected" msgid "External drive connected"
msgstr "Unidade externa conectada" msgstr "Unidade externa conectada"
#: ../js/ui/components/automountManager.js:102 #: ../js/ui/components/automountManager.js:101
msgid "External drive disconnected" msgid "External drive disconnected"
msgstr "Unidade externa desconectada" msgstr "Unidade externa desconectada"
@@ -724,77 +728,77 @@ msgid "Mute"
msgstr "Silenciar" msgstr "Silenciar"
#. Translators: Time in 24h format */ #. Translators: Time in 24h format */
#: ../js/ui/components/telepathyClient.js:958 #: ../js/ui/components/telepathyClient.js:955
msgid "%H%M" msgid "%H%M"
msgstr "%H%M" msgstr "%H%M"
#. Translators: this is the word "Yesterday" followed by a #. Translators: this is the word "Yesterday" followed by a
#. time string in 24h format. i.e. "Yesterday, 14:30" */ #. time string in 24h format. i.e. "Yesterday, 14:30" */
#: ../js/ui/components/telepathyClient.js:965 #: ../js/ui/components/telepathyClient.js:962
msgid "Yesterday, %H%M" msgid "Yesterday, %H%M"
msgstr "Onte, %H:%M" msgstr "Onte, %H:%M"
#. Translators: this is the week day name followed by a time #. Translators: this is the week day name followed by a time
#. string in 24h format. i.e. "Monday, 14:30" */ #. string in 24h format. i.e. "Monday, 14:30" */
#: ../js/ui/components/telepathyClient.js:972 #: ../js/ui/components/telepathyClient.js:969
msgid "%A, %H%M" msgid "%A, %H%M"
msgstr "%A ás %H:%M" msgstr "%A ás %H:%M"
#. Translators: this is the month name and day number #. Translators: this is the month name and day number
#. followed by a time string in 24h format. #. followed by a time string in 24h format.
#. i.e. "May 25, 14:30" */ #. i.e. "May 25, 14:30" */
#: ../js/ui/components/telepathyClient.js:979 #: ../js/ui/components/telepathyClient.js:976
msgid "%B %d, %H%M" msgid "%B %d, %H%M"
msgstr "%d de %B ás %H:%M" msgstr "%d de %B ás %H:%M"
#. Translators: this is the month name, day number, year #. Translators: this is the month name, day number, year
#. number followed by a time string in 24h format. #. number followed by a time string in 24h format.
#. i.e. "May 25 2012, 14:30" */ #. i.e. "May 25 2012, 14:30" */
#: ../js/ui/components/telepathyClient.js:985 #: ../js/ui/components/telepathyClient.js:982
msgid "%B %d %Y, %H%M" msgid "%B %d %Y, %H%M"
msgstr "%d de %B de %Y ás %H:%M" msgstr "%d de %B de %Y ás %H:%M"
#. Translators: Time in 24h format */ #. Translators: Time in 24h format */
#: ../js/ui/components/telepathyClient.js:994 #: ../js/ui/components/telepathyClient.js:991
msgid "%l%M %p" msgid "%l%M %p"
msgstr "%l:%M %p" msgstr "%l:%M %p"
#. Translators: this is the word "Yesterday" followed by a #. Translators: this is the word "Yesterday" followed by a
#. time string in 12h format. i.e. "Yesterday, 2:30 pm" */ #. time string in 12h format. i.e. "Yesterday, 2:30 pm" */
#: ../js/ui/components/telepathyClient.js:1001 #: ../js/ui/components/telepathyClient.js:998
msgid "Yesterday, %l%M %p" msgid "Yesterday, %l%M %p"
msgstr "Onte, %H:%M" msgstr "Onte, %H:%M"
#. Translators: this is the week day name followed by a time #. Translators: this is the week day name followed by a time
#. string in 12h format. i.e. "Monday, 2:30 pm" */ #. string in 12h format. i.e. "Monday, 2:30 pm" */
#: ../js/ui/components/telepathyClient.js:1008 #: ../js/ui/components/telepathyClient.js:1005
msgid "%A, %l%M %p" msgid "%A, %l%M %p"
msgstr "%A, %l%M %p" msgstr "%A, %l%M %p"
#. Translators: this is the month name and day number #. Translators: this is the month name and day number
#. followed by a time string in 12h format. #. followed by a time string in 12h format.
#. i.e. "May 25, 2:30 pm" */ #. i.e. "May 25, 2:30 pm" */
#: ../js/ui/components/telepathyClient.js:1015 #: ../js/ui/components/telepathyClient.js:1012
msgid "%B %d, %l%M %p" msgid "%B %d, %l%M %p"
msgstr "%d de %B, %l%M %p" msgstr "%d de %B, %l%M %p"
#. Translators: this is the month name, day number, year #. Translators: this is the month name, day number, year
#. number followed by a time string in 12h format. #. number followed by a time string in 12h format.
#. i.e. "May 25 2012, 2:30 pm"*/ #. i.e. "May 25 2012, 2:30 pm"*/
#: ../js/ui/components/telepathyClient.js:1021 #: ../js/ui/components/telepathyClient.js:1018
msgid "%B %d %Y, %l%M %p" msgid "%B %d %Y, %l%M %p"
msgstr "%d de %B de %Y, %l%M %p" msgstr "%d de %B de %Y, %l%M %p"
#. Translators: this is the other person changing their old IM name to their new #. Translators: this is the other person changing their old IM name to their new
#. IM name. */ #. IM name. */
#: ../js/ui/components/telepathyClient.js:1054 #: ../js/ui/components/telepathyClient.js:1051
#, javascript-format #, javascript-format
msgid "%s is now known as %s" msgid "%s is now known as %s"
msgstr "Agora %s chámase %s" msgstr "Agora %s chámase %s"
#. translators: argument is a room name like #. translators: argument is a room name like
#. * room@jabber.org for example. */ #. * room@jabber.org for example. */
#: ../js/ui/components/telepathyClient.js:1158 #: ../js/ui/components/telepathyClient.js:1154
#, javascript-format #, javascript-format
msgid "Invitation to %s" msgid "Invitation to %s"
msgstr "Convite a %s" msgstr "Convite a %s"
@@ -802,38 +806,38 @@ msgstr "Convite a %s"
#. translators: first argument is the name of a contact and the second #. translators: first argument is the name of a contact and the second
#. * one the name of a room. "Alice is inviting you to join room@jabber.org #. * one the name of a room. "Alice is inviting you to join room@jabber.org
#. * for example. */ #. * for example. */
#: ../js/ui/components/telepathyClient.js:1166 #: ../js/ui/components/telepathyClient.js:1162
#, javascript-format #, javascript-format
msgid "%s is inviting you to join %s" msgid "%s is inviting you to join %s"
msgstr "%s estalle convidando a unirse a %s" msgstr "%s estalle convidando a unirse a %s"
#: ../js/ui/components/telepathyClient.js:1168 #: ../js/ui/components/telepathyClient.js:1164
#: ../js/ui/components/telepathyClient.js:1203 #: ../js/ui/components/telepathyClient.js:1199
#: ../js/ui/components/telepathyClient.js:1237 #: ../js/ui/components/telepathyClient.js:1233
#: ../js/ui/components/telepathyClient.js:1295 #: ../js/ui/components/telepathyClient.js:1291
msgid "Decline" msgid "Decline"
msgstr "Rexeitar" msgstr "Rexeitar"
#: ../js/ui/components/telepathyClient.js:1174 #: ../js/ui/components/telepathyClient.js:1170
#: ../js/ui/components/telepathyClient.js:1243 #: ../js/ui/components/telepathyClient.js:1239
#: ../js/ui/components/telepathyClient.js:1300 #: ../js/ui/components/telepathyClient.js:1296
msgid "Accept" msgid "Accept"
msgstr "Aceptar" msgstr "Aceptar"
#. translators: argument is a contact name like Alice for example. */ #. translators: argument is a contact name like Alice for example. */
#: ../js/ui/components/telepathyClient.js:1193 #: ../js/ui/components/telepathyClient.js:1189
#, javascript-format #, javascript-format
msgid "Video call from %s" msgid "Video call from %s"
msgstr "Videochamada de %s" msgstr "Videochamada de %s"
#. translators: argument is a contact name like Alice for example. */ #. translators: argument is a contact name like Alice for example. */
#: ../js/ui/components/telepathyClient.js:1196 #: ../js/ui/components/telepathyClient.js:1192
#, javascript-format #, javascript-format
msgid "Call from %s" msgid "Call from %s"
msgstr "Chamada de %s" msgstr "Chamada de %s"
#. translators: this is a button label (verb), not a noun */ #. translators: this is a button label (verb), not a noun */
#: ../js/ui/components/telepathyClient.js:1210 #: ../js/ui/components/telepathyClient.js:1206
msgid "Answer" msgid "Answer"
msgstr "Responder" msgstr "Responder"
@@ -842,112 +846,112 @@ msgstr "Responder"
#. * file name. The string will be something #. * file name. The string will be something
#. * like: "Alice is sending you test.ogg" #. * like: "Alice is sending you test.ogg"
#. */ #. */
#: ../js/ui/components/telepathyClient.js:1231 #: ../js/ui/components/telepathyClient.js:1227
#, javascript-format #, javascript-format
msgid "%s is sending you %s" msgid "%s is sending you %s"
msgstr "%s esta enviándolle %s" msgstr "%s esta enviándolle %s"
#. To translators: The parameter is the contact's alias */ #. To translators: The parameter is the contact's alias */
#: ../js/ui/components/telepathyClient.js:1260 #: ../js/ui/components/telepathyClient.js:1256
#, javascript-format #, javascript-format
msgid "%s would like permission to see when you are online" msgid "%s would like permission to see when you are online"
msgstr "%s solicítalle permiso para ver cando está en liña" msgstr "%s solicítalle permiso para ver cando está en liña"
#: ../js/ui/components/telepathyClient.js:1346 #: ../js/ui/components/telepathyClient.js:1342
msgid "Network error" msgid "Network error"
msgstr "Erro da rede" msgstr "Erro da rede"
#: ../js/ui/components/telepathyClient.js:1348 #: ../js/ui/components/telepathyClient.js:1344
msgid "Authentication failed" msgid "Authentication failed"
msgstr "Fallou a autenticación" msgstr "Fallou a autenticación"
#: ../js/ui/components/telepathyClient.js:1350 #: ../js/ui/components/telepathyClient.js:1346
msgid "Encryption error" msgid "Encryption error"
msgstr "Erro de cifrado" msgstr "Erro de cifrado"
#: ../js/ui/components/telepathyClient.js:1352 #: ../js/ui/components/telepathyClient.js:1348
msgid "Certificate not provided" msgid "Certificate not provided"
msgstr "Certificado non fornecido" msgstr "Certificado non fornecido"
#: ../js/ui/components/telepathyClient.js:1354 #: ../js/ui/components/telepathyClient.js:1350
msgid "Certificate untrusted" msgid "Certificate untrusted"
msgstr "Non se confía no certificado" msgstr "Non se confía no certificado"
#: ../js/ui/components/telepathyClient.js:1356 #: ../js/ui/components/telepathyClient.js:1352
msgid "Certificate expired" msgid "Certificate expired"
msgstr "Certificado caducado" msgstr "Certificado caducado"
#: ../js/ui/components/telepathyClient.js:1358 #: ../js/ui/components/telepathyClient.js:1354
msgid "Certificate not activated" msgid "Certificate not activated"
msgstr "Certificado non activado" msgstr "Certificado non activado"
#: ../js/ui/components/telepathyClient.js:1360 #: ../js/ui/components/telepathyClient.js:1356
msgid "Certificate hostname mismatch" msgid "Certificate hostname mismatch"
msgstr "O nome do servidor do certificado non coincide" msgstr "O nome do servidor do certificado non coincide"
#: ../js/ui/components/telepathyClient.js:1362 #: ../js/ui/components/telepathyClient.js:1358
msgid "Certificate fingerprint mismatch" msgid "Certificate fingerprint mismatch"
msgstr "A pegada do certificado non coincide" msgstr "A pegada do certificado non coincide"
#: ../js/ui/components/telepathyClient.js:1364 #: ../js/ui/components/telepathyClient.js:1360
msgid "Certificate self-signed" msgid "Certificate self-signed"
msgstr "Certificado autoasinado" msgstr "Certificado autoasinado"
#: ../js/ui/components/telepathyClient.js:1366 #: ../js/ui/components/telepathyClient.js:1362
msgid "Status is set to offline" msgid "Status is set to offline"
msgstr "O estado está definido a «desconectado»" msgstr "O estado está definido a «desconectado»"
#: ../js/ui/components/telepathyClient.js:1368 #: ../js/ui/components/telepathyClient.js:1364
msgid "Encryption is not available" msgid "Encryption is not available"
msgstr "O cifrado non está dispoñíbel" msgstr "O cifrado non está dispoñíbel"
#: ../js/ui/components/telepathyClient.js:1370 #: ../js/ui/components/telepathyClient.js:1366
msgid "Certificate is invalid" msgid "Certificate is invalid"
msgstr "O certificado non é válido" msgstr "O certificado non é válido"
#: ../js/ui/components/telepathyClient.js:1372 #: ../js/ui/components/telepathyClient.js:1368
msgid "Connection has been refused" msgid "Connection has been refused"
msgstr "Rexeitouse a conexión" msgstr "Rexeitouse a conexión"
#: ../js/ui/components/telepathyClient.js:1374 #: ../js/ui/components/telepathyClient.js:1370
msgid "Connection can't be established" msgid "Connection can't be established"
msgstr "Non é posíbel estabelecer a conexión" msgstr "Non é posíbel estabelecer a conexión"
#: ../js/ui/components/telepathyClient.js:1376 #: ../js/ui/components/telepathyClient.js:1372
msgid "Connection has been lost" msgid "Connection has been lost"
msgstr "Perdeuse a conexión" msgstr "Perdeuse a conexión"
#: ../js/ui/components/telepathyClient.js:1378 #: ../js/ui/components/telepathyClient.js:1374
msgid "This account is already connected to the server" msgid "This account is already connected to the server"
msgstr "Esta cuenta xa está conectada ao servidor" msgstr "Esta cuenta xa está conectada ao servidor"
#: ../js/ui/components/telepathyClient.js:1380 #: ../js/ui/components/telepathyClient.js:1376
msgid "" msgid ""
"Connection has been replaced by a new connection using the same resource" "Connection has been replaced by a new connection using the same resource"
msgstr "" msgstr ""
"Substituíuse a conexión por unha nova conexión empregando o mesmo recurso" "Substituíuse a conexión por unha nova conexión empregando o mesmo recurso"
#: ../js/ui/components/telepathyClient.js:1382 #: ../js/ui/components/telepathyClient.js:1378
msgid "The account already exists on the server" msgid "The account already exists on the server"
msgstr "Esta conta xa existe no servidor" msgstr "Esta conta xa existe no servidor"
#: ../js/ui/components/telepathyClient.js:1384 #: ../js/ui/components/telepathyClient.js:1380
msgid "Server is currently too busy to handle the connection" msgid "Server is currently too busy to handle the connection"
msgstr "" msgstr ""
"Nestes intres o servidor está moi ocupado tentando xestionar a conexión" "Nestes intres o servidor está moi ocupado tentando xestionar a conexión"
#: ../js/ui/components/telepathyClient.js:1386 #: ../js/ui/components/telepathyClient.js:1382
msgid "Certificate has been revoked" msgid "Certificate has been revoked"
msgstr "Revogouse o certificado" msgstr "Revogouse o certificado"
#: ../js/ui/components/telepathyClient.js:1388 #: ../js/ui/components/telepathyClient.js:1384
msgid "" msgid ""
"Certificate uses an insecure cipher algorithm or is cryptographically weak" "Certificate uses an insecure cipher algorithm or is cryptographically weak"
msgstr "" msgstr ""
"O certificado usa un algoritmo de cifrado inseguro ou é criptográficamente " "O certificado usa un algoritmo de cifrado inseguro ou é criptográficamente "
"débil" "débil"
#: ../js/ui/components/telepathyClient.js:1390 #: ../js/ui/components/telepathyClient.js:1386
msgid "" msgid ""
"The length of the server certificate, or the depth of the server certificate " "The length of the server certificate, or the depth of the server certificate "
"chain, exceed the limits imposed by the cryptography library" "chain, exceed the limits imposed by the cryptography library"
@@ -956,22 +960,22 @@ msgstr ""
"certificado do servidor excede os límites impostos pola biblioteca de " "certificado do servidor excede os límites impostos pola biblioteca de "
"criptografía." "criptografía."
#: ../js/ui/components/telepathyClient.js:1392 #: ../js/ui/components/telepathyClient.js:1388
msgid "Internal error" msgid "Internal error"
msgstr "Erro interno" msgstr "Erro interno"
#. translators: argument is the account name, like #. translators: argument is the account name, like
#. * name@jabber.org for example. */ #. * name@jabber.org for example. */
#: ../js/ui/components/telepathyClient.js:1402 #: ../js/ui/components/telepathyClient.js:1398
#, javascript-format #, javascript-format
msgid "Unable to connect to %s" msgid "Unable to connect to %s"
msgstr "Non foi posíbel conectarse a %s" msgstr "Non foi posíbel conectarse a %s"
#: ../js/ui/components/telepathyClient.js:1407 #: ../js/ui/components/telepathyClient.js:1403
msgid "View account" msgid "View account"
msgstr "Ver conta" msgstr "Ver conta"
#: ../js/ui/components/telepathyClient.js:1444 #: ../js/ui/components/telepathyClient.js:1440
msgid "Unknown reason" msgid "Unknown reason"
msgstr "Razón descoñecida" msgstr "Razón descoñecida"
@@ -987,22 +991,22 @@ msgstr "Mostrar aplicativos"
msgid "Dash" msgid "Dash"
msgstr "Taboleiro" msgstr "Taboleiro"
#: ../js/ui/dateMenu.js:97 #: ../js/ui/dateMenu.js:91
msgid "Open Calendar" msgid "Open Calendar"
msgstr "Abrir Calendario" msgstr "Abrir Calendario"
#: ../js/ui/dateMenu.js:101 #: ../js/ui/dateMenu.js:95
msgid "Open Clocks" msgid "Open Clocks"
msgstr "Abrir Reloxos" msgstr "Abrir Reloxos"
#: ../js/ui/dateMenu.js:108 #: ../js/ui/dateMenu.js:102
msgid "Date & Time Settings" msgid "Date & Time Settings"
msgstr "Preferencias de data e hora" msgstr "Preferencias de data e hora"
#. Translators: This is the date format to use when the calendar popup is #. Translators: This is the date format to use when the calendar popup is
#. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM"). #. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM").
#. */ #. */
#: ../js/ui/dateMenu.js:205 #: ../js/ui/dateMenu.js:192
msgid "%A %B %e, %Y" msgid "%A %B %e, %Y"
msgstr "%a, %e de %B, %Y" msgstr "%a, %e de %B, %Y"
@@ -1125,13 +1129,13 @@ msgid "Other users are logged in."
msgstr "Hai outros usuarios conectados." msgstr "Hai outros usuarios conectados."
#. Translators: Remote here refers to a remote session, like a ssh login */ #. Translators: Remote here refers to a remote session, like a ssh login */
#: ../js/ui/endSessionDialog.js:619 #: ../js/ui/endSessionDialog.js:618
#, javascript-format #, javascript-format
msgid "%s (remote)" msgid "%s (remote)"
msgstr "%s (remoto)" msgstr "%s (remoto)"
#. Translators: Console here refers to a tty like a VT console */ #. Translators: Console here refers to a tty like a VT console */
#: ../js/ui/endSessionDialog.js:622 #: ../js/ui/endSessionDialog.js:621
#, javascript-format #, javascript-format
msgid "%s (console)" msgid "%s (console)"
msgstr "%s (consola)" msgstr "%s (consola)"
@@ -1145,7 +1149,7 @@ msgstr "Instalar"
msgid "Download and install “%s” from extensions.gnome.org?" msgid "Download and install “%s” from extensions.gnome.org?"
msgstr "Desexa descargar e instalar «%s» desde extensions.gnome.org?" msgstr "Desexa descargar e instalar «%s» desde extensions.gnome.org?"
#: ../js/ui/keyboard.js:645 ../js/ui/status/keyboard.js:335 #: ../js/ui/keyboard.js:641 ../js/ui/status/keyboard.js:335
msgid "Keyboard" msgid "Keyboard"
msgstr "Teclado" msgstr "Teclado"
@@ -1233,11 +1237,11 @@ msgstr "Non hai mensaxes"
msgid "Message Tray" msgid "Message Tray"
msgstr "Bandexa de mensaxes" msgstr "Bandexa de mensaxes"
#: ../js/ui/messageTray.js:2967 #: ../js/ui/messageTray.js:2962
msgid "System Information" msgid "System Information"
msgstr "Información do sistema" msgstr "Información do sistema"
#: ../js/ui/notificationDaemon.js:516 ../src/shell-app.c:425 #: ../js/ui/notificationDaemon.js:515 ../src/shell-app.c:425
msgctxt "program" msgctxt "program"
msgid "Unknown" msgid "Unknown"
msgstr "Descoñecido" msgstr "Descoñecido"
@@ -1275,7 +1279,7 @@ msgstr "Saír"
msgid "Activities" msgid "Activities"
msgstr "Actividades" msgstr "Actividades"
#: ../js/ui/panel.js:915 #: ../js/ui/panel.js:914
msgid "Top Bar" msgid "Top Bar"
msgstr "Barra superior" msgstr "Barra superior"
@@ -1312,19 +1316,19 @@ msgstr "Bloquear"
msgid "GNOME needs to lock the screen" msgid "GNOME needs to lock the screen"
msgstr "GNOME precisa bloquear a pantalla" msgstr "GNOME precisa bloquear a pantalla"
#: ../js/ui/screenShield.js:835 ../js/ui/screenShield.js:1312 #: ../js/ui/screenShield.js:835 ../js/ui/screenShield.js:1309
msgid "Unable to lock" msgid "Unable to lock"
msgstr "Non foi posíbel bloquear" msgstr "Non foi posíbel bloquear"
#: ../js/ui/screenShield.js:836 ../js/ui/screenShield.js:1313 #: ../js/ui/screenShield.js:836 ../js/ui/screenShield.js:1310
msgid "Lock was blocked by an application" msgid "Lock was blocked by an application"
msgstr "Un aplicativo impediu o bloqueo" msgstr "Un aplicativo impediu o bloqueo"
#: ../js/ui/search.js:606 #: ../js/ui/search.js:603
msgid "Searching…" msgid "Searching…"
msgstr "Buscando…" msgstr "Buscando…"
#: ../js/ui/search.js:652 #: ../js/ui/search.js:649
msgid "No results." msgid "No results."
msgstr "Sen resultados." msgstr "Sen resultados."
@@ -1388,11 +1392,11 @@ msgstr "Rexeite de teclas"
msgid "Mouse Keys" msgid "Mouse Keys"
msgstr "Teclas do rato" msgstr "Teclas do rato"
#: ../js/ui/status/accessibility.js:144 #: ../js/ui/status/accessibility.js:143
msgid "High Contrast" msgid "High Contrast"
msgstr "Contraste alto" msgstr "Contraste alto"
#: ../js/ui/status/accessibility.js:193 #: ../js/ui/status/accessibility.js:192
msgid "Large Text" msgid "Large Text"
msgstr "Texto grande" msgstr "Texto grande"
@@ -1462,37 +1466,37 @@ msgstr "Conectado"
#. Translators: this is for network devices that are physically present but are not #. Translators: this is for network devices that are physically present but are not
#. under NetworkManager's control (and thus cannot be used in the menu) */ #. under NetworkManager's control (and thus cannot be used in the menu) */
#: ../js/ui/status/network.js:426 #: ../js/ui/status/network.js:426
msgid "Unmanaged" msgid "unmanaged"
msgstr "Sen xestionar" msgstr "non xestionada"
#: ../js/ui/status/network.js:428 #: ../js/ui/status/network.js:428
msgid "Disconnecting" msgid "disconnecting..."
msgstr "Desconectando…" msgstr "desconectando…"
#: ../js/ui/status/network.js:434 ../js/ui/status/network.js:1254 #: ../js/ui/status/network.js:434 ../js/ui/status/network.js:1362
msgid "Connecting" msgid "connecting..."
msgstr "Conectando" msgstr "conectando"
#. Translators: this is for network connections that require some kind of key or password */ #. Translators: this is for network connections that require some kind of key or password */
#: ../js/ui/status/network.js:437 #: ../js/ui/status/network.js:437 ../js/ui/status/network.js:1365
msgid "Authentication required" msgid "authentication required"
msgstr "Requírese autenticación" msgstr "requírese autenticación"
#. Translators: this is for devices that require some kind of firmware or kernel #. Translators: this is for devices that require some kind of firmware or kernel
#. module, which is missing */ #. module, which is missing */
#: ../js/ui/status/network.js:445 #: ../js/ui/status/network.js:445
msgid "Firmware missing" msgid "firmware missing"
msgstr "Falta o «firmware»" msgstr "falta o «firmware»"
#. Translators: this is for a network device that cannot be activated (for example it #. Translators: this is for a network device that cannot be activated (for example it
#. is disabled by rfkill, or it has no coverage */ #. is disabled by rfkill, or it has no coverage */
#: ../js/ui/status/network.js:449 #: ../js/ui/status/network.js:449
msgid "Unavailable" msgid "unavailable"
msgstr "Non dispoñíbel" msgstr "non dispoñíbel"
#: ../js/ui/status/network.js:451 ../js/ui/status/network.js:1646 #: ../js/ui/status/network.js:451 ../js/ui/status/network.js:1367
msgid "Connection failed" msgid "connection failed"
msgstr "Produciuse un fallo na conexión" msgstr "conexión fallada"
#: ../js/ui/status/network.js:467 #: ../js/ui/status/network.js:467
msgid "Wired Settings" msgid "Wired Settings"
@@ -1566,18 +1570,9 @@ msgstr "Activar"
msgid "Hotspot Active" msgid "Hotspot Active"
msgstr "Punto wifi activo" msgstr "Punto wifi activo"
#: ../js/ui/status/network.js:1362 #: ../js/ui/status/network.js:1254
msgid "connecting..." msgid "Connecting"
msgstr "conectando" msgstr "Conectando"
#. Translators: this is for network connections that require some kind of key or password */
#: ../js/ui/status/network.js:1365
msgid "authentication required"
msgstr "requírese autenticación"
#: ../js/ui/status/network.js:1367
msgid "connection failed"
msgstr "conexión fallada"
#: ../js/ui/status/network.js:1433 ../js/ui/status/rfkill.js:88 #: ../js/ui/status/network.js:1433 ../js/ui/status/rfkill.js:88
msgid "Network Settings" msgid "Network Settings"
@@ -1595,6 +1590,10 @@ msgstr "VPN"
msgid "Network Manager" msgid "Network Manager"
msgstr "Xestor da rede" msgstr "Xestor da rede"
#: ../js/ui/status/network.js:1646
msgid "Connection failed"
msgstr "Produciuse un fallo na conexión"
#: ../js/ui/status/network.js:1647 #: ../js/ui/status/network.js:1647
msgid "Activation of network connection failed" msgid "Activation of network connection failed"
msgstr "Produciuse un fallo na activación da conexión de rede" msgstr "Produciuse un fallo na activación da conexión de rede"
@@ -1705,7 +1704,7 @@ msgstr "Reverter preferencias"
msgid "Keep Changes" msgid "Keep Changes"
msgstr "Manter cambios" msgstr "Manter cambios"
#: ../js/ui/windowManager.js:98 #: ../js/ui/windowManager.js:97
#, javascript-format #, javascript-format
msgid "Settings changes will revert in %d second" msgid "Settings changes will revert in %d second"
msgid_plural "Settings changes will revert in %d seconds" msgid_plural "Settings changes will revert in %d seconds"
@@ -1769,16 +1768,10 @@ msgstr "Os contrasinais non coinciden."
msgid "Password cannot be blank" msgid "Password cannot be blank"
msgstr "O contrasinal non pode estar baleiro" msgstr "O contrasinal non pode estar baleiro"
#: ../src/shell-polkit-authentication-agent.c:346 #: ../src/shell-polkit-authentication-agent.c:343
msgid "Authentication dialog was dismissed by the user" msgid "Authentication dialog was dismissed by the user"
msgstr "O usuario rexeitou o diálogo de autenticación" msgstr "O usuario rexeitou o diálogo de autenticación"
#~ msgid "calendar:MY"
#~ msgstr "calendar:MY"
#~ msgid "unavailable"
#~ msgstr "non dispoñíbel"
#~ msgctxt "event list time" #~ msgctxt "event list time"
#~ msgid "%H\\u2236%M" #~ msgid "%H\\u2236%M"
#~ msgstr "%H\\u2236%M" #~ msgstr "%H\\u2236%M"
@@ -2226,6 +2219,9 @@ msgstr "O usuario rexeitou o diálogo de autenticación"
#~ msgid "VPN Connections" #~ msgid "VPN Connections"
#~ msgstr "Conexións VPN" #~ msgstr "Conexións VPN"
#~ msgid "Unavailable"
#~ msgstr "Non dispoñíbel"
#~ msgid "System Settings" #~ msgid "System Settings"
#~ msgstr "Preferencias do sistema" #~ msgstr "Preferencias do sistema"

536
po/he.po

File diff suppressed because it is too large Load Diff

413
po/hu.po

File diff suppressed because it is too large Load Diff

367
po/id.po
View File

@@ -10,9 +10,9 @@ msgstr ""
"Project-Id-Version: gnome-shell master\n" "Project-Id-Version: gnome-shell master\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
"shell&keywords=I18N+L10N&component=general\n" "shell&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2014-05-22 07:28+0000\n" "POT-Creation-Date: 2014-04-05 19:59+0000\n"
"PO-Revision-Date: 2014-05-22 16:21+0700\n" "PO-Revision-Date: 2014-04-09 05:35+0700\n"
"Last-Translator: Andika Triwidada <andika@gmail.com>\n" "Last-Translator: Dirgita <dirgitadevina@yahoo.co.id>\n"
"Language-Team: Indonesian <gnome-l10n-id@googlegroups.com>\n" "Language-Team: Indonesian <gnome-l10n-id@googlegroups.com>\n"
"Language: id\n" "Language: id\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
@@ -20,7 +20,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n" "Plural-Forms: nplurals=1; plural=0;\n"
"X-Poedit-SourceCharset: UTF-8\n" "X-Poedit-SourceCharset: UTF-8\n"
"X-Generator: Poedit 1.5.7\n" "X-Generator: Lokalize 1.5\n"
#: ../data/50-gnome-shell-system.xml.in.h:1 #: ../data/50-gnome-shell-system.xml.in.h:1
msgid "System" msgid "System"
@@ -341,25 +341,25 @@ msgstr "Pilih Sesi"
msgid "Not listed?" msgid "Not listed?"
msgstr "Tak masuk daftar?" msgstr "Tak masuk daftar?"
#: ../js/gdm/loginDialog.js:616 #: ../js/gdm/loginDialog.js:614
#, javascript-format #, javascript-format
msgid "(e.g., user or %s)" msgid "(e.g., user or %s)"
msgstr "(cth., pengguna dari %s)" msgstr "(cth., pengguna dari %s)"
#: ../js/gdm/loginDialog.js:621 ../js/ui/components/networkAgent.js:262 #: ../js/gdm/loginDialog.js:619 ../js/ui/components/networkAgent.js:262
#: ../js/ui/components/networkAgent.js:280 #: ../js/ui/components/networkAgent.js:280
msgid "Username: " msgid "Username: "
msgstr "Nama pengguna: " msgstr "Nama pengguna: "
#: ../js/gdm/loginDialog.js:924 #: ../js/gdm/loginDialog.js:920
msgid "Login Window" msgid "Login Window"
msgstr "Jendela Log Masuk" msgstr "Jendela Log Masuk"
#: ../js/gdm/util.js:323 #: ../js/gdm/util.js:322
msgid "Authentication error" msgid "Authentication error"
msgstr "Galat otentikasi" msgstr "Galat otentikasi"
#: ../js/gdm/util.js:453 #: ../js/gdm/util.js:452
msgid "(or swipe finger)" msgid "(or swipe finger)"
msgstr "(atau gesekkan jari)" msgstr "(atau gesekkan jari)"
@@ -376,34 +376,30 @@ msgstr "Tak dapat mengurai perintah:"
msgid "Execution of “%s” failed:" msgid "Execution of “%s” failed:"
msgstr "Eksekusi \"%s\" gagal:" msgstr "Eksekusi \"%s\" gagal:"
#: ../js/ui/appDisplay.js:640 #: ../js/ui/appDisplay.js:636
msgid "Frequently used applications will appear here" msgid "Frequently used applications will appear here"
msgstr "Aplikasi yang sering dipakai akan muncul di sini" msgstr "Aplikasi yang sering dipakai akan muncul di sini"
#: ../js/ui/appDisplay.js:751 #: ../js/ui/appDisplay.js:747
msgid "Frequent" msgid "Frequent"
msgstr "Sering" msgstr "Sering"
#: ../js/ui/appDisplay.js:758 #: ../js/ui/appDisplay.js:754
msgid "All" msgid "All"
msgstr "Semua" msgstr "Semua"
#: ../js/ui/appDisplay.js:1571 #: ../js/ui/appDisplay.js:1566
msgid "New Window" msgid "New Window"
msgstr "Jendela Baru" msgstr "Jendela Baru"
#: ../js/ui/appDisplay.js:1593 ../js/ui/dash.js:285 #: ../js/ui/appDisplay.js:1588 ../js/ui/dash.js:285
msgid "Remove from Favorites" msgid "Remove from Favorites"
msgstr "Hapus dari Favorit" msgstr "Hapus dari Favorit"
#: ../js/ui/appDisplay.js:1599 #: ../js/ui/appDisplay.js:1594
msgid "Add to Favorites" msgid "Add to Favorites"
msgstr "Tambah ke Favorit" msgstr "Tambah ke Favorit"
#: ../js/ui/appDisplay.js:1608
msgid "Show Details"
msgstr "Tampilkan Rincian"
#: ../js/ui/appFavorites.js:87 #: ../js/ui/appFavorites.js:87
#, javascript-format #, javascript-format
msgid "%s has been added to your favorites." msgid "%s has been added to your favorites."
@@ -414,8 +410,8 @@ msgstr "%s telah ditambahkan ke favorit Anda."
msgid "%s has been removed from your favorites." msgid "%s has been removed from your favorites."
msgstr "%s telah dihapus dari favorit Anda." msgstr "%s telah dihapus dari favorit Anda."
#: ../js/ui/backgroundMenu.js:19 ../js/ui/panel.js:810 #: ../js/ui/backgroundMenu.js:19 ../js/ui/panel.js:809
#: ../js/ui/status/system.js:337 #: ../js/ui/status/system.js:334
msgid "Settings" msgid "Settings"
msgstr "Pengaturan" msgstr "Pengaturan"
@@ -426,14 +422,14 @@ msgstr "Ubah Latar…"
#. Translators: Shown in calendar event list for all day events #. Translators: Shown in calendar event list for all day events
#. * Keep it short, best if you can use less then 10 characters #. * Keep it short, best if you can use less then 10 characters
#. */ #. */
#: ../js/ui/calendar.js:67 #: ../js/ui/calendar.js:64
msgctxt "event list time" msgctxt "event list time"
msgid "All Day" msgid "All Day"
msgstr "Sepanjang Hari" msgstr "Sepanjang Hari"
#. Translators: Shown in calendar event list, if 24h format, #. Translators: Shown in calendar event list, if 24h format,
#. \u2236 is a ratio character, similar to : */ #. \u2236 is a ratio character, similar to : */
#: ../js/ui/calendar.js:73 #: ../js/ui/calendar.js:70
msgctxt "event list time" msgctxt "event list time"
msgid "%H%M" msgid "%H%M"
msgstr "%H%M" msgstr "%H%M"
@@ -441,7 +437,7 @@ msgstr "%H%M"
#. Translators: Shown in calendar event list, if 12h format, #. Translators: Shown in calendar event list, if 12h format,
#. \u2236 is a ratio character, similar to : and \u2009 is #. \u2236 is a ratio character, similar to : and \u2009 is
#. a thin space */ #. a thin space */
#: ../js/ui/calendar.js:82 #: ../js/ui/calendar.js:79
msgctxt "event list time" msgctxt "event list time"
msgid "%l%M%p" msgid "%l%M%p"
msgstr "%l%M%p" msgstr "%l%M%p"
@@ -451,43 +447,43 @@ msgstr "%l%M%p"
#. * NOTE: These grid abbreviations are always shown together #. * NOTE: These grid abbreviations are always shown together
#. * and in order, e.g. "S M T W T F S". #. * and in order, e.g. "S M T W T F S".
#. */ #. */
#: ../js/ui/calendar.js:113 #: ../js/ui/calendar.js:110
msgctxt "grid sunday" msgctxt "grid sunday"
msgid "S" msgid "S"
msgstr "M" msgstr "M"
#. Translators: Calendar grid abbreviation for Monday */ #. Translators: Calendar grid abbreviation for Monday */
#: ../js/ui/calendar.js:115 #: ../js/ui/calendar.js:112
msgctxt "grid monday" msgctxt "grid monday"
msgid "M" msgid "M"
msgstr "S" msgstr "S"
#. Translators: Calendar grid abbreviation for Tuesday */ #. Translators: Calendar grid abbreviation for Tuesday */
#: ../js/ui/calendar.js:117 #: ../js/ui/calendar.js:114
msgctxt "grid tuesday" msgctxt "grid tuesday"
msgid "T" msgid "T"
msgstr "S" msgstr "S"
#. Translators: Calendar grid abbreviation for Wednesday */ #. Translators: Calendar grid abbreviation for Wednesday */
#: ../js/ui/calendar.js:119 #: ../js/ui/calendar.js:116
msgctxt "grid wednesday" msgctxt "grid wednesday"
msgid "W" msgid "W"
msgstr "R" msgstr "R"
#. Translators: Calendar grid abbreviation for Thursday */ #. Translators: Calendar grid abbreviation for Thursday */
#: ../js/ui/calendar.js:121 #: ../js/ui/calendar.js:118
msgctxt "grid thursday" msgctxt "grid thursday"
msgid "T" msgid "T"
msgstr "K" msgstr "K"
#. Translators: Calendar grid abbreviation for Friday */ #. Translators: Calendar grid abbreviation for Friday */
#: ../js/ui/calendar.js:123 #: ../js/ui/calendar.js:120
msgctxt "grid friday" msgctxt "grid friday"
msgid "F" msgid "F"
msgstr "J" msgstr "J"
#. Translators: Calendar grid abbreviation for Saturday */ #. Translators: Calendar grid abbreviation for Saturday */
#: ../js/ui/calendar.js:125 #: ../js/ui/calendar.js:122
msgctxt "grid saturday" msgctxt "grid saturday"
msgid "S" msgid "S"
msgstr "S" msgstr "S"
@@ -498,93 +494,97 @@ msgstr "S"
#. * so they need to be unique (e.g. Tuesday and Thursday cannot #. * so they need to be unique (e.g. Tuesday and Thursday cannot
#. * both be 'T'). #. * both be 'T').
#. */ #. */
#: ../js/ui/calendar.js:138 #: ../js/ui/calendar.js:135
msgctxt "list sunday" msgctxt "list sunday"
msgid "Su" msgid "Su"
msgstr "Min" msgstr "Min"
#. Translators: Event list abbreviation for Monday */ #. Translators: Event list abbreviation for Monday */
#: ../js/ui/calendar.js:140 #: ../js/ui/calendar.js:137
msgctxt "list monday" msgctxt "list monday"
msgid "M" msgid "M"
msgstr "Sen" msgstr "Sen"
#. Translators: Event list abbreviation for Tuesday */ #. Translators: Event list abbreviation for Tuesday */
#: ../js/ui/calendar.js:142 #: ../js/ui/calendar.js:139
msgctxt "list tuesday" msgctxt "list tuesday"
msgid "T" msgid "T"
msgstr "Sel" msgstr "Sel"
#. Translators: Event list abbreviation for Wednesday */ #. Translators: Event list abbreviation for Wednesday */
#: ../js/ui/calendar.js:144 #: ../js/ui/calendar.js:141
msgctxt "list wednesday" msgctxt "list wednesday"
msgid "W" msgid "W"
msgstr "Rab" msgstr "Rab"
#. Translators: Event list abbreviation for Thursday */ #. Translators: Event list abbreviation for Thursday */
#: ../js/ui/calendar.js:146 #: ../js/ui/calendar.js:143
msgctxt "list thursday" msgctxt "list thursday"
msgid "Th" msgid "Th"
msgstr "Kam" msgstr "Kam"
#. Translators: Event list abbreviation for Friday */ #. Translators: Event list abbreviation for Friday */
#: ../js/ui/calendar.js:148 #: ../js/ui/calendar.js:145
msgctxt "list friday" msgctxt "list friday"
msgid "F" msgid "F"
msgstr "Jum" msgstr "Jum"
#. Translators: Event list abbreviation for Saturday */ #. Translators: Event list abbreviation for Saturday */
#: ../js/ui/calendar.js:150 #: ../js/ui/calendar.js:147
msgctxt "list saturday" msgctxt "list saturday"
msgid "S" msgid "S"
msgstr "Sab" msgstr "Sab"
#: ../js/ui/calendar.js:453 #: ../js/ui/calendar.js:390
msgid "calendar:MY"
msgstr "calendar:MY"
#: ../js/ui/calendar.js:450
msgid "Previous month" msgid "Previous month"
msgstr "Bulan sebelumnya" msgstr "Bulan sebelumnya"
#: ../js/ui/calendar.js:463 #: ../js/ui/calendar.js:460
msgid "Next month" msgid "Next month"
msgstr "Bulan selanjutnya" msgstr "Bulan selanjutnya"
#. Translators: Text to show if there are no events */ #. Translators: Text to show if there are no events */
#: ../js/ui/calendar.js:775 #: ../js/ui/calendar.js:772
msgid "Nothing Scheduled" msgid "Nothing Scheduled"
msgstr "Tak Ada Jadwal" msgstr "Tak Ada Jadwal"
#. Translators: Shown on calendar heading when selected day occurs on current year */ #. Translators: Shown on calendar heading when selected day occurs on current year */
#: ../js/ui/calendar.js:793 #: ../js/ui/calendar.js:790
msgctxt "calendar heading" msgctxt "calendar heading"
msgid "%A, %B %d" msgid "%A, %B %d"
msgstr "%A, %d %B" msgstr "%A, %d %B"
#. Translators: Shown on calendar heading when selected day occurs on different year */ #. Translators: Shown on calendar heading when selected day occurs on different year */
#: ../js/ui/calendar.js:796 #: ../js/ui/calendar.js:793
msgctxt "calendar heading" msgctxt "calendar heading"
msgid "%A, %B %d, %Y" msgid "%A, %B %d, %Y"
msgstr "%A, %d %B %Y" msgstr "%A, %d %B %Y"
#: ../js/ui/calendar.js:807 #: ../js/ui/calendar.js:804
msgid "Today" msgid "Today"
msgstr "Hari ini" msgstr "Hari ini"
#: ../js/ui/calendar.js:811 #: ../js/ui/calendar.js:808
msgid "Tomorrow" msgid "Tomorrow"
msgstr "Besok" msgstr "Besok"
#: ../js/ui/calendar.js:822 #: ../js/ui/calendar.js:819
msgid "This week" msgid "This week"
msgstr "Minggu ini" msgstr "Minggu ini"
#: ../js/ui/calendar.js:830 #: ../js/ui/calendar.js:827
msgid "Next week" msgid "Next week"
msgstr "Minggu depan" msgstr "Minggu depan"
#: ../js/ui/components/automountManager.js:91 #: ../js/ui/components/automountManager.js:90
msgid "External drive connected" msgid "External drive connected"
msgstr "Drive eksternal tersambung" msgstr "Drive eksternal tersambung"
#: ../js/ui/components/automountManager.js:102 #: ../js/ui/components/automountManager.js:101
msgid "External drive disconnected" msgid "External drive disconnected"
msgstr "Drive eksternal terputus" msgstr "Drive eksternal terputus"
@@ -729,77 +729,77 @@ msgid "Mute"
msgstr "Bisu" msgstr "Bisu"
#. Translators: Time in 24h format */ #. Translators: Time in 24h format */
#: ../js/ui/components/telepathyClient.js:958 #: ../js/ui/components/telepathyClient.js:955
msgid "%H%M" msgid "%H%M"
msgstr "%H%M" msgstr "%H%M"
#. Translators: this is the word "Yesterday" followed by a #. Translators: this is the word "Yesterday" followed by a
#. time string in 24h format. i.e. "Yesterday, 14:30" */ #. time string in 24h format. i.e. "Yesterday, 14:30" */
#: ../js/ui/components/telepathyClient.js:965 #: ../js/ui/components/telepathyClient.js:962
msgid "Yesterday, %H%M" msgid "Yesterday, %H%M"
msgstr "Kemarin, %H:%M" msgstr "Kemarin, %H:%M"
#. Translators: this is the week day name followed by a time #. Translators: this is the week day name followed by a time
#. string in 24h format. i.e. "Monday, 14:30" */ #. string in 24h format. i.e. "Monday, 14:30" */
#: ../js/ui/components/telepathyClient.js:972 #: ../js/ui/components/telepathyClient.js:969
msgid "%A, %H%M" msgid "%A, %H%M"
msgstr "%A, %H%M" msgstr "%A, %H%M"
#. Translators: this is the month name and day number #. Translators: this is the month name and day number
#. followed by a time string in 24h format. #. followed by a time string in 24h format.
#. i.e. "May 25, 14:30" */ #. i.e. "May 25, 14:30" */
#: ../js/ui/components/telepathyClient.js:979 #: ../js/ui/components/telepathyClient.js:976
msgid "%B %d, %H%M" msgid "%B %d, %H%M"
msgstr "%d %B, %H%M" msgstr "%d %B, %H%M"
#. Translators: this is the month name, day number, year #. Translators: this is the month name, day number, year
#. number followed by a time string in 24h format. #. number followed by a time string in 24h format.
#. i.e. "May 25 2012, 14:30" */ #. i.e. "May 25 2012, 14:30" */
#: ../js/ui/components/telepathyClient.js:985 #: ../js/ui/components/telepathyClient.js:982
msgid "%B %d %Y, %H%M" msgid "%B %d %Y, %H%M"
msgstr "%d %B %Y, %H%M" msgstr "%d %B %Y, %H%M"
#. Translators: Time in 24h format */ #. Translators: Time in 24h format */
#: ../js/ui/components/telepathyClient.js:994 #: ../js/ui/components/telepathyClient.js:991
msgid "%l%M %p" msgid "%l%M %p"
msgstr "%H%M" msgstr "%H%M"
#. Translators: this is the word "Yesterday" followed by a #. Translators: this is the word "Yesterday" followed by a
#. time string in 12h format. i.e. "Yesterday, 2:30 pm" */ #. time string in 12h format. i.e. "Yesterday, 2:30 pm" */
#: ../js/ui/components/telepathyClient.js:1001 #: ../js/ui/components/telepathyClient.js:998
msgid "Yesterday, %l%M %p" msgid "Yesterday, %l%M %p"
msgstr "Kemarin, %l%M %p" msgstr "Kemarin, %l%M %p"
#. Translators: this is the week day name followed by a time #. Translators: this is the week day name followed by a time
#. string in 12h format. i.e. "Monday, 2:30 pm" */ #. string in 12h format. i.e. "Monday, 2:30 pm" */
#: ../js/ui/components/telepathyClient.js:1008 #: ../js/ui/components/telepathyClient.js:1005
msgid "%A, %l%M %p" msgid "%A, %l%M %p"
msgstr "%A, %l%M %p" msgstr "%A, %l%M %p"
#. Translators: this is the month name and day number #. Translators: this is the month name and day number
#. followed by a time string in 12h format. #. followed by a time string in 12h format.
#. i.e. "May 25, 2:30 pm" */ #. i.e. "May 25, 2:30 pm" */
#: ../js/ui/components/telepathyClient.js:1015 #: ../js/ui/components/telepathyClient.js:1012
msgid "%B %d, %l%M %p" msgid "%B %d, %l%M %p"
msgstr "%d %B, %l%M %p" msgstr "%d %B, %l%M %p"
#. Translators: this is the month name, day number, year #. Translators: this is the month name, day number, year
#. number followed by a time string in 12h format. #. number followed by a time string in 12h format.
#. i.e. "May 25 2012, 2:30 pm"*/ #. i.e. "May 25 2012, 2:30 pm"*/
#: ../js/ui/components/telepathyClient.js:1021 #: ../js/ui/components/telepathyClient.js:1018
msgid "%B %d %Y, %l%M %p" msgid "%B %d %Y, %l%M %p"
msgstr "%d %B %Y, %l%M %p" msgstr "%d %B %Y, %l%M %p"
#. Translators: this is the other person changing their old IM name to their new #. Translators: this is the other person changing their old IM name to their new
#. IM name. */ #. IM name. */
#: ../js/ui/components/telepathyClient.js:1054 #: ../js/ui/components/telepathyClient.js:1051
#, javascript-format #, javascript-format
msgid "%s is now known as %s" msgid "%s is now known as %s"
msgstr "%s sekarang dikenal sebagai %s" msgstr "%s sekarang dikenal sebagai %s"
#. translators: argument is a room name like #. translators: argument is a room name like
#. * room@jabber.org for example. */ #. * room@jabber.org for example. */
#: ../js/ui/components/telepathyClient.js:1158 #: ../js/ui/components/telepathyClient.js:1154
#, javascript-format #, javascript-format
msgid "Invitation to %s" msgid "Invitation to %s"
msgstr "Undangan ke %s" msgstr "Undangan ke %s"
@@ -807,38 +807,38 @@ msgstr "Undangan ke %s"
#. translators: first argument is the name of a contact and the second #. translators: first argument is the name of a contact and the second
#. * one the name of a room. "Alice is inviting you to join room@jabber.org #. * one the name of a room. "Alice is inviting you to join room@jabber.org
#. * for example. */ #. * for example. */
#: ../js/ui/components/telepathyClient.js:1166 #: ../js/ui/components/telepathyClient.js:1162
#, javascript-format #, javascript-format
msgid "%s is inviting you to join %s" msgid "%s is inviting you to join %s"
msgstr "%s mengundang Anda untuk bergabung dengan %s" msgstr "%s mengundang Anda untuk bergabung dengan %s"
#: ../js/ui/components/telepathyClient.js:1168 #: ../js/ui/components/telepathyClient.js:1164
#: ../js/ui/components/telepathyClient.js:1203 #: ../js/ui/components/telepathyClient.js:1199
#: ../js/ui/components/telepathyClient.js:1237 #: ../js/ui/components/telepathyClient.js:1233
#: ../js/ui/components/telepathyClient.js:1295 #: ../js/ui/components/telepathyClient.js:1291
msgid "Decline" msgid "Decline"
msgstr "Tolak" msgstr "Tolak"
#: ../js/ui/components/telepathyClient.js:1174 #: ../js/ui/components/telepathyClient.js:1170
#: ../js/ui/components/telepathyClient.js:1243 #: ../js/ui/components/telepathyClient.js:1239
#: ../js/ui/components/telepathyClient.js:1300 #: ../js/ui/components/telepathyClient.js:1296
msgid "Accept" msgid "Accept"
msgstr "Terima" msgstr "Terima"
#. translators: argument is a contact name like Alice for example. */ #. translators: argument is a contact name like Alice for example. */
#: ../js/ui/components/telepathyClient.js:1193 #: ../js/ui/components/telepathyClient.js:1189
#, javascript-format #, javascript-format
msgid "Video call from %s" msgid "Video call from %s"
msgstr "Panggilan video dari %s" msgstr "Panggilan video dari %s"
#. translators: argument is a contact name like Alice for example. */ #. translators: argument is a contact name like Alice for example. */
#: ../js/ui/components/telepathyClient.js:1196 #: ../js/ui/components/telepathyClient.js:1192
#, javascript-format #, javascript-format
msgid "Call from %s" msgid "Call from %s"
msgstr "Panggilan dari %s" msgstr "Panggilan dari %s"
#. translators: this is a button label (verb), not a noun */ #. translators: this is a button label (verb), not a noun */
#: ../js/ui/components/telepathyClient.js:1210 #: ../js/ui/components/telepathyClient.js:1206
msgid "Answer" msgid "Answer"
msgstr "Jawab" msgstr "Jawab"
@@ -847,111 +847,111 @@ msgstr "Jawab"
#. * file name. The string will be something #. * file name. The string will be something
#. * like: "Alice is sending you test.ogg" #. * like: "Alice is sending you test.ogg"
#. */ #. */
#: ../js/ui/components/telepathyClient.js:1231 #: ../js/ui/components/telepathyClient.js:1227
#, javascript-format #, javascript-format
msgid "%s is sending you %s" msgid "%s is sending you %s"
msgstr "%s sedang mengirimi Anda %s" msgstr "%s sedang mengirimi Anda %s"
#. To translators: The parameter is the contact's alias */ #. To translators: The parameter is the contact's alias */
#: ../js/ui/components/telepathyClient.js:1260 #: ../js/ui/components/telepathyClient.js:1256
#, javascript-format #, javascript-format
msgid "%s would like permission to see when you are online" msgid "%s would like permission to see when you are online"
msgstr "%s ingin minta izin melihat Anda ketika Anda daring" msgstr "%s ingin minta izin melihat Anda ketika Anda daring"
#: ../js/ui/components/telepathyClient.js:1346 #: ../js/ui/components/telepathyClient.js:1342
msgid "Network error" msgid "Network error"
msgstr "Galat jaringan" msgstr "Galat jaringan"
#: ../js/ui/components/telepathyClient.js:1348 #: ../js/ui/components/telepathyClient.js:1344
msgid "Authentication failed" msgid "Authentication failed"
msgstr "Otentikasi gagal" msgstr "Otentikasi gagal"
#: ../js/ui/components/telepathyClient.js:1350 #: ../js/ui/components/telepathyClient.js:1346
msgid "Encryption error" msgid "Encryption error"
msgstr "Galat enkripsi" msgstr "Galat enkripsi"
#: ../js/ui/components/telepathyClient.js:1352 #: ../js/ui/components/telepathyClient.js:1348
msgid "Certificate not provided" msgid "Certificate not provided"
msgstr "Sertifikat tidak disediakan" msgstr "Sertifikat tidak disediakan"
#: ../js/ui/components/telepathyClient.js:1354 #: ../js/ui/components/telepathyClient.js:1350
msgid "Certificate untrusted" msgid "Certificate untrusted"
msgstr "Sertifikat tidak dipercaya" msgstr "Sertifikat tidak dipercaya"
#: ../js/ui/components/telepathyClient.js:1356 #: ../js/ui/components/telepathyClient.js:1352
msgid "Certificate expired" msgid "Certificate expired"
msgstr "Sertifikat kadaluarsa" msgstr "Sertifikat kadaluarsa"
#: ../js/ui/components/telepathyClient.js:1358 #: ../js/ui/components/telepathyClient.js:1354
msgid "Certificate not activated" msgid "Certificate not activated"
msgstr "Sertifikat tidak diaktifkan" msgstr "Sertifikat tidak diaktifkan"
#: ../js/ui/components/telepathyClient.js:1360 #: ../js/ui/components/telepathyClient.js:1356
msgid "Certificate hostname mismatch" msgid "Certificate hostname mismatch"
msgstr "Nama host sertifikat tidak cocok" msgstr "Nama host sertifikat tidak cocok"
#: ../js/ui/components/telepathyClient.js:1362 #: ../js/ui/components/telepathyClient.js:1358
msgid "Certificate fingerprint mismatch" msgid "Certificate fingerprint mismatch"
msgstr "Sidik jari sertifikat tidak cocok" msgstr "Sidik jari sertifikat tidak cocok"
#: ../js/ui/components/telepathyClient.js:1364 #: ../js/ui/components/telepathyClient.js:1360
msgid "Certificate self-signed" msgid "Certificate self-signed"
msgstr "Sertifikat ditandatangani sendiri" msgstr "Sertifikat ditandatangani sendiri"
#: ../js/ui/components/telepathyClient.js:1366 #: ../js/ui/components/telepathyClient.js:1362
msgid "Status is set to offline" msgid "Status is set to offline"
msgstr "Status diatur ke luring" msgstr "Status diatur ke luring"
#: ../js/ui/components/telepathyClient.js:1368 #: ../js/ui/components/telepathyClient.js:1364
msgid "Encryption is not available" msgid "Encryption is not available"
msgstr "Enkripsi tidak tersedia" msgstr "Enkripsi tidak tersedia"
#: ../js/ui/components/telepathyClient.js:1370 #: ../js/ui/components/telepathyClient.js:1366
msgid "Certificate is invalid" msgid "Certificate is invalid"
msgstr "Sertifikat tidak valid" msgstr "Sertifikat tidak valid"
#: ../js/ui/components/telepathyClient.js:1372 #: ../js/ui/components/telepathyClient.js:1368
msgid "Connection has been refused" msgid "Connection has been refused"
msgstr "Koneksi telah ditolak" msgstr "Koneksi telah ditolak"
#: ../js/ui/components/telepathyClient.js:1374 #: ../js/ui/components/telepathyClient.js:1370
msgid "Connection can't be established" msgid "Connection can't be established"
msgstr "Koneksi tak dapat dijalin" msgstr "Koneksi tak dapat dijalin"
#: ../js/ui/components/telepathyClient.js:1376 #: ../js/ui/components/telepathyClient.js:1372
msgid "Connection has been lost" msgid "Connection has been lost"
msgstr "Koneksi telah terputus" msgstr "Koneksi telah terputus"
#: ../js/ui/components/telepathyClient.js:1378 #: ../js/ui/components/telepathyClient.js:1374
msgid "This account is already connected to the server" msgid "This account is already connected to the server"
msgstr "Akun ini telah tersambung pada server" msgstr "Akun ini telah tersambung pada server"
#: ../js/ui/components/telepathyClient.js:1380 #: ../js/ui/components/telepathyClient.js:1376
msgid "" msgid ""
"Connection has been replaced by a new connection using the same resource" "Connection has been replaced by a new connection using the same resource"
msgstr "" msgstr ""
"Koneksi telah digantikan oleh koneksi baru memakai sumberdaya yang sama" "Koneksi telah digantikan oleh koneksi baru memakai sumberdaya yang sama"
#: ../js/ui/components/telepathyClient.js:1382 #: ../js/ui/components/telepathyClient.js:1378
msgid "The account already exists on the server" msgid "The account already exists on the server"
msgstr "Akun ini sudah ada di server" msgstr "Akun ini sudah ada di server"
#: ../js/ui/components/telepathyClient.js:1384 #: ../js/ui/components/telepathyClient.js:1380
msgid "Server is currently too busy to handle the connection" msgid "Server is currently too busy to handle the connection"
msgstr "Server kini terlalu sibuk untuk menangani koneksi" msgstr "Server kini terlalu sibuk untuk menangani koneksi"
#: ../js/ui/components/telepathyClient.js:1386 #: ../js/ui/components/telepathyClient.js:1382
msgid "Certificate has been revoked" msgid "Certificate has been revoked"
msgstr "Sertifikat telah dicabut" msgstr "Sertifikat telah dicabut"
#: ../js/ui/components/telepathyClient.js:1388 #: ../js/ui/components/telepathyClient.js:1384
msgid "" msgid ""
"Certificate uses an insecure cipher algorithm or is cryptographically weak" "Certificate uses an insecure cipher algorithm or is cryptographically weak"
msgstr "" msgstr ""
"Sertifikat memakai algorima cipher yang tak aman atau lemah secara " "Sertifikat memakai algorima cipher yang tak aman atau lemah secara "
"kriptografi" "kriptografi"
#: ../js/ui/components/telepathyClient.js:1390 #: ../js/ui/components/telepathyClient.js:1386
msgid "" msgid ""
"The length of the server certificate, or the depth of the server certificate " "The length of the server certificate, or the depth of the server certificate "
"chain, exceed the limits imposed by the cryptography library" "chain, exceed the limits imposed by the cryptography library"
@@ -959,22 +959,22 @@ msgstr ""
"Panjang sertifikat server, atau kedalaman rantai sertifikat server, " "Panjang sertifikat server, atau kedalaman rantai sertifikat server, "
"melampaui batas yang diberlakukan oleh pustaka kriptografi" "melampaui batas yang diberlakukan oleh pustaka kriptografi"
#: ../js/ui/components/telepathyClient.js:1392 #: ../js/ui/components/telepathyClient.js:1388
msgid "Internal error" msgid "Internal error"
msgstr "Galat internal" msgstr "Galat internal"
#. translators: argument is the account name, like #. translators: argument is the account name, like
#. * name@jabber.org for example. */ #. * name@jabber.org for example. */
#: ../js/ui/components/telepathyClient.js:1402 #: ../js/ui/components/telepathyClient.js:1398
#, javascript-format #, javascript-format
msgid "Unable to connect to %s" msgid "Unable to connect to %s"
msgstr "Tak bisa menyambung ke %s" msgstr "Tak bisa menyambung ke %s"
#: ../js/ui/components/telepathyClient.js:1407 #: ../js/ui/components/telepathyClient.js:1403
msgid "View account" msgid "View account"
msgstr "Tilik akun" msgstr "Tilik akun"
#: ../js/ui/components/telepathyClient.js:1444 #: ../js/ui/components/telepathyClient.js:1440
msgid "Unknown reason" msgid "Unknown reason"
msgstr "Alasan yang tidak diketahui" msgstr "Alasan yang tidak diketahui"
@@ -990,22 +990,22 @@ msgstr "Tampilkan Aplikasi"
msgid "Dash" msgid "Dash"
msgstr "Dash" msgstr "Dash"
#: ../js/ui/dateMenu.js:97 #: ../js/ui/dateMenu.js:91
msgid "Open Calendar" msgid "Open Calendar"
msgstr "Buka Kalender" msgstr "Buka Kalender"
#: ../js/ui/dateMenu.js:101 #: ../js/ui/dateMenu.js:95
msgid "Open Clocks" msgid "Open Clocks"
msgstr "Buka Jam" msgstr "Buka Jam"
#: ../js/ui/dateMenu.js:108 #: ../js/ui/dateMenu.js:102
msgid "Date & Time Settings" msgid "Date & Time Settings"
msgstr "Pengaturan Waktu & Tanggal" msgstr "Pengaturan Waktu & Tanggal"
#. Translators: This is the date format to use when the calendar popup is #. Translators: This is the date format to use when the calendar popup is
#. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM"). #. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM").
#. */ #. */
#: ../js/ui/dateMenu.js:205 #: ../js/ui/dateMenu.js:192
msgid "%A %B %e, %Y" msgid "%A %B %e, %Y"
msgstr "%A, %e %B %Y" msgstr "%A, %e %B %Y"
@@ -1122,13 +1122,13 @@ msgid "Other users are logged in."
msgstr "Pengguna lain sedang log masuk." msgstr "Pengguna lain sedang log masuk."
#. Translators: Remote here refers to a remote session, like a ssh login */ #. Translators: Remote here refers to a remote session, like a ssh login */
#: ../js/ui/endSessionDialog.js:619 #: ../js/ui/endSessionDialog.js:618
#, javascript-format #, javascript-format
msgid "%s (remote)" msgid "%s (remote)"
msgstr "%s (jarak jauh)" msgstr "%s (jarak jauh)"
#. Translators: Console here refers to a tty like a VT console */ #. Translators: Console here refers to a tty like a VT console */
#: ../js/ui/endSessionDialog.js:622 #: ../js/ui/endSessionDialog.js:621
#, javascript-format #, javascript-format
msgid "%s (console)" msgid "%s (console)"
msgstr "%s (konsol)" msgstr "%s (konsol)"
@@ -1142,7 +1142,7 @@ msgstr "Pasang"
msgid "Download and install “%s” from extensions.gnome.org?" msgid "Download and install “%s” from extensions.gnome.org?"
msgstr "Unduh dan pasang \"%s\" dari extensions.gnome.org?" msgstr "Unduh dan pasang \"%s\" dari extensions.gnome.org?"
#: ../js/ui/keyboard.js:645 ../js/ui/status/keyboard.js:335 #: ../js/ui/keyboard.js:641 ../js/ui/status/keyboard.js:335
msgid "Keyboard" msgid "Keyboard"
msgstr "Papan Ketik" msgstr "Papan Ketik"
@@ -1230,16 +1230,16 @@ msgstr "Tiada Pesan"
msgid "Message Tray" msgid "Message Tray"
msgstr "Baki Pesan" msgstr "Baki Pesan"
#: ../js/ui/messageTray.js:2967 #: ../js/ui/messageTray.js:2962
msgid "System Information" msgid "System Information"
msgstr "Informasi Sistem" msgstr "Informasi Sistem"
#: ../js/ui/notificationDaemon.js:516 ../src/shell-app.c:425 #: ../js/ui/notificationDaemon.js:515 ../src/shell-app.c:425
msgctxt "program" msgctxt "program"
msgid "Unknown" msgid "Unknown"
msgstr "Tak dikenal" msgstr "Tak dikenal"
#: ../js/ui/overviewControls.js:488 ../js/ui/screenShield.js:151 #: ../js/ui/overviewControls.js:483 ../js/ui/screenShield.js:151
#, javascript-format #, javascript-format
msgid "%d new message" msgid "%d new message"
msgid_plural "%d new messages" msgid_plural "%d new messages"
@@ -1271,7 +1271,7 @@ msgstr "Keluar"
msgid "Activities" msgid "Activities"
msgstr "Aktivitas" msgstr "Aktivitas"
#: ../js/ui/panel.js:915 #: ../js/ui/panel.js:914
msgid "Top Bar" msgid "Top Bar"
msgstr "Bar Atas" msgstr "Bar Atas"
@@ -1284,7 +1284,7 @@ msgstr "toggle-switch-intl"
msgid "Enter a Command" msgid "Enter a Command"
msgstr "Ketikkan Perintah" msgstr "Ketikkan Perintah"
#: ../js/ui/runDialog.js:114 ../js/ui/windowMenu.js:117 #: ../js/ui/runDialog.js:114
msgid "Close" msgid "Close"
msgstr "Tutup" msgstr "Tutup"
@@ -1300,7 +1300,7 @@ msgid "%d new notification"
msgid_plural "%d new notifications" msgid_plural "%d new notifications"
msgstr[0] "%d pemberitahuan baru" msgstr[0] "%d pemberitahuan baru"
#: ../js/ui/screenShield.js:474 ../js/ui/status/system.js:345 #: ../js/ui/screenShield.js:474 ../js/ui/status/system.js:342
msgid "Lock" msgid "Lock"
msgstr "Kunci" msgstr "Kunci"
@@ -1308,19 +1308,19 @@ msgstr "Kunci"
msgid "GNOME needs to lock the screen" msgid "GNOME needs to lock the screen"
msgstr "GNOME perlu mengunci layar" msgstr "GNOME perlu mengunci layar"
#: ../js/ui/screenShield.js:835 ../js/ui/screenShield.js:1312 #: ../js/ui/screenShield.js:835 ../js/ui/screenShield.js:1309
msgid "Unable to lock" msgid "Unable to lock"
msgstr "Tak bisa mengunci" msgstr "Tak bisa mengunci"
#: ../js/ui/screenShield.js:836 ../js/ui/screenShield.js:1313 #: ../js/ui/screenShield.js:836 ../js/ui/screenShield.js:1310
msgid "Lock was blocked by an application" msgid "Lock was blocked by an application"
msgstr "Kunci diblokir oleh suatu aplikasi" msgstr "Kunci diblokir oleh suatu aplikasi"
#: ../js/ui/search.js:606 #: ../js/ui/search.js:603
msgid "Searching…" msgid "Searching…"
msgstr "Mencari…" msgstr "Mencari…"
#: ../js/ui/search.js:652 #: ../js/ui/search.js:649
msgid "No results." msgid "No results."
msgstr "Tak ada yang cocok." msgstr "Tak ada yang cocok."
@@ -1384,11 +1384,11 @@ msgstr "Tombol Pantul"
msgid "Mouse Keys" msgid "Mouse Keys"
msgstr "Tombol Tetikus" msgstr "Tombol Tetikus"
#: ../js/ui/status/accessibility.js:144 #: ../js/ui/status/accessibility.js:143
msgid "High Contrast" msgid "High Contrast"
msgstr "Kontras Tinggi" msgstr "Kontras Tinggi"
#: ../js/ui/status/accessibility.js:193 #: ../js/ui/status/accessibility.js:192
msgid "Large Text" msgid "Large Text"
msgstr "Teks Besar" msgstr "Teks Besar"
@@ -1398,8 +1398,8 @@ msgstr "Bluetooth"
#: ../js/ui/status/bluetooth.js:51 ../js/ui/status/network.js:151 #: ../js/ui/status/bluetooth.js:51 ../js/ui/status/network.js:151
#: ../js/ui/status/network.js:323 ../js/ui/status/network.js:1234 #: ../js/ui/status/network.js:323 ../js/ui/status/network.js:1234
#: ../js/ui/status/network.js:1345 ../js/ui/status/rfkill.js:86 #: ../js/ui/status/network.js:1345 ../js/ui/status/rfkill.js:85
#: ../js/ui/status/rfkill.js:114 #: ../js/ui/status/rfkill.js:105
msgid "Turn Off" msgid "Turn Off"
msgstr "Matikan" msgstr "Matikan"
@@ -1457,37 +1457,37 @@ msgstr "Tersambung"
#. Translators: this is for network devices that are physically present but are not #. Translators: this is for network devices that are physically present but are not
#. under NetworkManager's control (and thus cannot be used in the menu) */ #. under NetworkManager's control (and thus cannot be used in the menu) */
#: ../js/ui/status/network.js:426 #: ../js/ui/status/network.js:426
msgid "Unmanaged" msgid "unmanaged"
msgstr "Tak Dikelola" msgstr "tak dikelola"
#: ../js/ui/status/network.js:428 #: ../js/ui/status/network.js:428
msgid "Disconnecting" msgid "disconnecting..."
msgstr "Memutus" msgstr "memutus..."
#: ../js/ui/status/network.js:434 ../js/ui/status/network.js:1254 #: ../js/ui/status/network.js:434 ../js/ui/status/network.js:1362
msgid "Connecting" msgid "connecting..."
msgstr "Menyambung" msgstr "menghubungi..."
#. Translators: this is for network connections that require some kind of key or password */ #. Translators: this is for network connections that require some kind of key or password */
#: ../js/ui/status/network.js:437 #: ../js/ui/status/network.js:437 ../js/ui/status/network.js:1365
msgid "Authentication required" msgid "authentication required"
msgstr "Diperlukan otentikasi" msgstr "diperlukan otentikasi"
#. Translators: this is for devices that require some kind of firmware or kernel #. Translators: this is for devices that require some kind of firmware or kernel
#. module, which is missing */ #. module, which is missing */
#: ../js/ui/status/network.js:445 #: ../js/ui/status/network.js:445
msgid "Firmware missing" msgid "firmware missing"
msgstr "Firmware hilang" msgstr "firmware hilang"
#. Translators: this is for a network device that cannot be activated (for example it #. Translators: this is for a network device that cannot be activated (for example it
#. is disabled by rfkill, or it has no coverage */ #. is disabled by rfkill, or it has no coverage */
#: ../js/ui/status/network.js:449 #: ../js/ui/status/network.js:449
msgid "Unavailable" msgid "unavailable"
msgstr "Tak tersedia" msgstr "tidak tersedia"
#: ../js/ui/status/network.js:451 ../js/ui/status/network.js:1646 #: ../js/ui/status/network.js:451 ../js/ui/status/network.js:1367
msgid "Connection failed" msgid "connection failed"
msgstr "Koneksi gagal" msgstr "koneksi gagal"
#: ../js/ui/status/network.js:467 #: ../js/ui/status/network.js:467
msgid "Wired Settings" msgid "Wired Settings"
@@ -1541,7 +1541,7 @@ msgstr "Pilih jaringan"
msgid "No Networks" msgid "No Networks"
msgstr "Tiada Jaringan" msgstr "Tiada Jaringan"
#: ../js/ui/status/network.js:866 ../js/ui/status/rfkill.js:112 #: ../js/ui/status/network.js:866 ../js/ui/status/rfkill.js:103
msgid "Use hardware switch to turn off" msgid "Use hardware switch to turn off"
msgstr "Pakai saklar perangkat keras untuk mematikan" msgstr "Pakai saklar perangkat keras untuk mematikan"
@@ -1561,20 +1561,11 @@ msgstr "Nyalakan"
msgid "Hotspot Active" msgid "Hotspot Active"
msgstr "Hotspot Aktif" msgstr "Hotspot Aktif"
#: ../js/ui/status/network.js:1362 #: ../js/ui/status/network.js:1254
msgid "connecting..." msgid "Connecting"
msgstr "menghubungi..." msgstr "Menyambung"
#. Translators: this is for network connections that require some kind of key or password */ #: ../js/ui/status/network.js:1433 ../js/ui/status/rfkill.js:88
#: ../js/ui/status/network.js:1365
msgid "authentication required"
msgstr "diperlukan otentikasi"
#: ../js/ui/status/network.js:1367
msgid "connection failed"
msgstr "koneksi gagal"
#: ../js/ui/status/network.js:1433 ../js/ui/status/rfkill.js:89
msgid "Network Settings" msgid "Network Settings"
msgstr "Pengaturan Jaringan" msgstr "Pengaturan Jaringan"
@@ -1590,6 +1581,10 @@ msgstr "VPN"
msgid "Network Manager" msgid "Network Manager"
msgstr "Manajer Jaringan" msgstr "Manajer Jaringan"
#: ../js/ui/status/network.js:1646
msgid "Connection failed"
msgstr "Koneksi gagal"
#: ../js/ui/status/network.js:1647 #: ../js/ui/status/network.js:1647
msgid "Activation of network connection failed" msgid "Activation of network connection failed"
msgstr "Aktivasi koneksi jaringan gagal" msgstr "Aktivasi koneksi jaringan gagal"
@@ -1624,31 +1619,31 @@ msgstr "UPS"
msgid "Battery" msgid "Battery"
msgstr "Baterai" msgstr "Baterai"
#: ../js/ui/status/rfkill.js:83 #: ../js/ui/status/rfkill.js:82
msgid "Airplane Mode" msgid "Airplane Mode"
msgstr "Mode Pesawat Terbang" msgstr "Mode Pesawat Terbang"
#: ../js/ui/status/rfkill.js:85 #: ../js/ui/status/rfkill.js:84
msgid "On" msgid "On"
msgstr "Nyala" msgstr "Nyala"
#: ../js/ui/status/system.js:317 #: ../js/ui/status/system.js:314
msgid "Switch User" msgid "Switch User"
msgstr "Ganti Pengguna" msgstr "Ganti Pengguna"
#: ../js/ui/status/system.js:322 #: ../js/ui/status/system.js:319
msgid "Log Out" msgid "Log Out"
msgstr "Keluar" msgstr "Keluar"
#: ../js/ui/status/system.js:341 #: ../js/ui/status/system.js:338
msgid "Orientation Lock" msgid "Orientation Lock"
msgstr "Kunci Orientasi" msgstr "Kunci Orientasi"
#: ../js/ui/status/system.js:349 #: ../js/ui/status/system.js:346
msgid "Suspend" msgid "Suspend"
msgstr "Suspensi" msgstr "Suspensi"
#: ../js/ui/status/system.js:352 #: ../js/ui/status/system.js:349
msgid "Power Off" msgid "Power Off"
msgstr "Matikan" msgstr "Matikan"
@@ -1685,67 +1680,27 @@ msgstr "Cari"
msgid "“%s” is ready" msgid "“%s” is ready"
msgstr "'%s' siap" msgstr "'%s' siap"
#: ../js/ui/windowManager.js:57 #: ../js/ui/windowManager.js:56
msgid "Do you want to keep these display settings?" msgid "Do you want to keep these display settings?"
msgstr "Apakah Anda ingin mempertahankan pengaturan tampilan ini?" msgstr "Apakah Anda ingin mempertahankan pengaturan tampilan ini?"
#. Translators: this and the following message should be limited in lenght, #. Translators: this and the following message should be limited in lenght,
#. to avoid ellipsizing the labels. #. to avoid ellipsizing the labels.
#. */ #. */
#: ../js/ui/windowManager.js:76 #: ../js/ui/windowManager.js:75
msgid "Revert Settings" msgid "Revert Settings"
msgstr "Balikkan Tatanan" msgstr "Balikkan Tatanan"
#: ../js/ui/windowManager.js:80 #: ../js/ui/windowManager.js:79
msgid "Keep Changes" msgid "Keep Changes"
msgstr "Simpan Perubahan" msgstr "Simpan Perubahan"
#: ../js/ui/windowManager.js:99 #: ../js/ui/windowManager.js:97
#, javascript-format #, javascript-format
msgid "Settings changes will revert in %d second" msgid "Settings changes will revert in %d second"
msgid_plural "Settings changes will revert in %d seconds" msgid_plural "Settings changes will revert in %d seconds"
msgstr[0] "Perubahan tatanan akan dikembalikan dalam %d detik" msgstr[0] "Perubahan tatanan akan dikembalikan dalam %d detik"
#: ../js/ui/windowMenu.js:33
msgid "Minimize"
msgstr "Minimalkan"
#: ../js/ui/windowMenu.js:40
msgid "Unmaximize"
msgstr "Tak Maksimalkan"
#: ../js/ui/windowMenu.js:44
msgid "Maximize"
msgstr "Maksimalkan"
#: ../js/ui/windowMenu.js:51
msgid "Move"
msgstr "Pindah"
#: ../js/ui/windowMenu.js:57
msgid "Resize"
msgstr "Ubah Ukuran"
#: ../js/ui/windowMenu.js:64
msgid "Move Titlebar Onscreen"
msgstr "Pindahkan Bilah Judul Pada Layar"
#: ../js/ui/windowMenu.js:69
msgid "Always on Top"
msgstr "Selalu di Puncak"
#: ../js/ui/windowMenu.js:86
msgid "Always on Visible Workspace"
msgstr "Selalu pada Ruang Kerja yang Tampak"
#: ../js/ui/windowMenu.js:103
msgid "Move to Workspace Up"
msgstr "Pindah ke Ruang Kerja Atas"
#: ../js/ui/windowMenu.js:108
msgid "Move to Workspace Down"
msgstr "Pindah ke Ruang Kerja Bawah"
#: ../src/calendar-server/evolution-calendar.desktop.in.in.h:1 #: ../src/calendar-server/evolution-calendar.desktop.in.in.h:1
msgid "Evolution Calendar" msgid "Evolution Calendar"
msgstr "Evolution Kalender" msgstr "Evolution Kalender"
@@ -1799,6 +1754,8 @@ msgstr "Sandi tidak cocok."
msgid "Password cannot be blank" msgid "Password cannot be blank"
msgstr "Sandi tidak boleh kosong" msgstr "Sandi tidak boleh kosong"
#: ../src/shell-polkit-authentication-agent.c:346 #: ../src/shell-polkit-authentication-agent.c:343
msgid "Authentication dialog was dismissed by the user" msgid "Authentication dialog was dismissed by the user"
msgstr "Dialog otentikasi ditolak oleh pengguna" msgstr "Dialog otentikasi ditolak oleh pengguna"

View File

@@ -11,8 +11,8 @@ msgstr ""
"Project-Id-Version: gnome-shell\n" "Project-Id-Version: gnome-shell\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
"shell&keywords=I18N+L10N&component=general\n" "shell&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2014-05-27 19:20+0000\n" "POT-Creation-Date: 2014-04-06 07:54+0000\n"
"PO-Revision-Date: 2014-05-31 14:54+0100\n" "PO-Revision-Date: 2014-04-06 14:15+0100\n"
"Last-Translator: Milo Casagrande <milo@milo.name>\n" "Last-Translator: Milo Casagrande <milo@milo.name>\n"
"Language-Team: Italiano <tp@lists.linux.it>\n" "Language-Team: Italiano <tp@lists.linux.it>\n"
"Language: it\n" "Language: it\n"
@@ -421,7 +421,7 @@ msgid "%s has been removed from your favorites."
msgstr "%s è stato rimosso dai preferiti." msgstr "%s è stato rimosso dai preferiti."
#: ../js/ui/backgroundMenu.js:19 ../js/ui/panel.js:809 #: ../js/ui/backgroundMenu.js:19 ../js/ui/panel.js:809
#: ../js/ui/status/system.js:337 #: ../js/ui/status/system.js:334
msgid "Settings" msgid "Settings"
msgstr "Impostazioni" msgstr "Impostazioni"
@@ -1076,7 +1076,7 @@ msgstr[1] "Il sistema verrà spento automaticamente tra %d secondi."
#: ../js/ui/endSessionDialog.js:93 #: ../js/ui/endSessionDialog.js:93
msgctxt "checkbox" msgctxt "checkbox"
msgid "Install pending software updates" msgid "Install pending software updates"
msgstr "Installare gli aggiornamenti software in sospeso" msgstr "Installa gli aggiornamenti software in sospeso"
#: ../js/ui/endSessionDialog.js:96 ../js/ui/endSessionDialog.js:113 #: ../js/ui/endSessionDialog.js:96 ../js/ui/endSessionDialog.js:113
msgctxt "button" msgctxt "button"
@@ -1130,7 +1130,7 @@ msgstr "Installa e spegni"
#: ../js/ui/endSessionDialog.js:131 #: ../js/ui/endSessionDialog.js:131
msgctxt "checkbox" msgctxt "checkbox"
msgid "Power off after updates are installed" msgid "Power off after updates are installed"
msgstr "Spegnere dopo aver installato gli aggiornamenti" msgstr "Spegne dopo aver installato gli aggiornamenti"
#: ../js/ui/endSessionDialog.js:315 #: ../js/ui/endSessionDialog.js:315
msgid "Running on battery power: please plug in before installing updates." msgid "Running on battery power: please plug in before installing updates."
@@ -1167,7 +1167,7 @@ msgstr "Installa"
msgid "Download and install “%s” from extensions.gnome.org?" msgid "Download and install “%s” from extensions.gnome.org?"
msgstr "Scaricare e installare «%s» da extensions.gnome.org?" msgstr "Scaricare e installare «%s» da extensions.gnome.org?"
#: ../js/ui/keyboard.js:641 ../js/ui/status/keyboard.js:339 #: ../js/ui/keyboard.js:641 ../js/ui/status/keyboard.js:335
msgid "Keyboard" msgid "Keyboard"
msgstr "Tastiera" msgstr "Tastiera"
@@ -1328,7 +1328,7 @@ msgid_plural "%d new notifications"
msgstr[0] "%d nuova notifica" msgstr[0] "%d nuova notifica"
msgstr[1] "%d nuove notifiche" msgstr[1] "%d nuove notifiche"
#: ../js/ui/screenShield.js:474 ../js/ui/status/system.js:345 #: ../js/ui/screenShield.js:474 ../js/ui/status/system.js:342
msgid "Lock" msgid "Lock"
msgstr "Blocca" msgstr "Blocca"
@@ -1344,11 +1344,11 @@ msgstr "Impossibile bloccare"
msgid "Lock was blocked by an application" msgid "Lock was blocked by an application"
msgstr "Il blocco è stato impedito da un'applicazione." msgstr "Il blocco è stato impedito da un'applicazione."
#: ../js/ui/search.js:606 #: ../js/ui/search.js:603
msgid "Searching…" msgid "Searching…"
msgstr "Ricerca…" msgstr "Ricerca…"
#: ../js/ui/search.js:652 #: ../js/ui/search.js:649
msgid "No results." msgid "No results."
msgstr "Nessun risultato." msgstr "Nessun risultato."
@@ -1427,8 +1427,8 @@ msgstr "Bluetooth"
#: ../js/ui/status/bluetooth.js:51 ../js/ui/status/network.js:151 #: ../js/ui/status/bluetooth.js:51 ../js/ui/status/network.js:151
#: ../js/ui/status/network.js:323 ../js/ui/status/network.js:1234 #: ../js/ui/status/network.js:323 ../js/ui/status/network.js:1234
#: ../js/ui/status/network.js:1345 ../js/ui/status/rfkill.js:86 #: ../js/ui/status/network.js:1345 ../js/ui/status/rfkill.js:85
#: ../js/ui/status/rfkill.js:114 #: ../js/ui/status/rfkill.js:105
msgid "Turn Off" msgid "Turn Off"
msgstr "Spegni" msgstr "Spegni"
@@ -1451,7 +1451,7 @@ msgstr "Non collegato"
msgid "Brightness" msgid "Brightness"
msgstr "Luminosità" msgstr "Luminosità"
#: ../js/ui/status/keyboard.js:407 #: ../js/ui/status/keyboard.js:403
msgid "Show Keyboard Layout" msgid "Show Keyboard Layout"
msgstr "Mostra disposizione tastiera" msgstr "Mostra disposizione tastiera"
@@ -1461,11 +1461,13 @@ msgstr "Posizione"
# (ndt) o disabilitata? # (ndt) o disabilitata?
#: ../js/ui/status/location.js:60 ../js/ui/status/location.js:168 #: ../js/ui/status/location.js:60 ../js/ui/status/location.js:168
#| msgid "Disabled"
msgid "Disable" msgid "Disable"
msgstr "Disabilitato" msgstr "Disabilitato"
# (ndt) o abilitata? # (ndt) o abilitata?
#: ../js/ui/status/location.js:165 #: ../js/ui/status/location.js:165
#| msgid "Enabled"
msgid "Enable" msgid "Enable"
msgstr "Abilita" msgstr "Abilita"
@@ -1575,7 +1577,7 @@ msgstr "Seleziona una rete"
msgid "No Networks" msgid "No Networks"
msgstr "Nessuna rete" msgstr "Nessuna rete"
#: ../js/ui/status/network.js:866 ../js/ui/status/rfkill.js:112 #: ../js/ui/status/network.js:866 ../js/ui/status/rfkill.js:103
msgid "Use hardware switch to turn off" msgid "Use hardware switch to turn off"
msgstr "Usare l'interruttore hardware per disattivare" msgstr "Usare l'interruttore hardware per disattivare"
@@ -1599,7 +1601,7 @@ msgstr "Hotspot attivo"
msgid "Connecting" msgid "Connecting"
msgstr "Connessione" msgstr "Connessione"
#: ../js/ui/status/network.js:1433 ../js/ui/status/rfkill.js:89 #: ../js/ui/status/network.js:1433 ../js/ui/status/rfkill.js:88
msgid "Network Settings" msgid "Network Settings"
msgstr "Impostazioni rete" msgstr "Impostazioni rete"
@@ -1654,31 +1656,31 @@ msgstr "UPS"
msgid "Battery" msgid "Battery"
msgstr "Batteria" msgstr "Batteria"
#: ../js/ui/status/rfkill.js:83 #: ../js/ui/status/rfkill.js:82
msgid "Airplane Mode" msgid "Airplane Mode"
msgstr "Modalità aereo" msgstr "Modalità aereo"
#: ../js/ui/status/rfkill.js:85 #: ../js/ui/status/rfkill.js:84
msgid "On" msgid "On"
msgstr "On" msgstr "On"
#: ../js/ui/status/system.js:317 #: ../js/ui/status/system.js:314
msgid "Switch User" msgid "Switch User"
msgstr "Cambia utente" msgstr "Cambia utente"
#: ../js/ui/status/system.js:322 #: ../js/ui/status/system.js:319
msgid "Log Out" msgid "Log Out"
msgstr "Termina sessione" msgstr "Termina sessione"
#: ../js/ui/status/system.js:341 #: ../js/ui/status/system.js:338
msgid "Orientation Lock" msgid "Orientation Lock"
msgstr "Blocco orientazione" msgstr "Blocco orientazione"
#: ../js/ui/status/system.js:349 #: ../js/ui/status/system.js:346
msgid "Suspend" msgid "Suspend"
msgstr "Sospendi" msgstr "Sospendi"
#: ../js/ui/status/system.js:352 #: ../js/ui/status/system.js:349
msgid "Power Off" msgid "Power Off"
msgstr "Spegni" msgstr "Spegni"

3499
po/km.po

File diff suppressed because it is too large Load Diff

507
po/lt.po

File diff suppressed because it is too large Load Diff

444
po/nb.po

File diff suppressed because it is too large Load Diff

View File

@@ -10,27 +10,26 @@
# Gabriel F. Vilar <cogumm@gmail.com>, 2011. # Gabriel F. Vilar <cogumm@gmail.com>, 2011.
# Adorilson Bezerra <adorilson@gmail.com>, 2011, 2014. # Adorilson Bezerra <adorilson@gmail.com>, 2011, 2014.
# Djavan Fagundes <djavan@comum.org>, 2012. # Djavan Fagundes <djavan@comum.org>, 2012.
# Enrico Nicoletto <liverig@gmail.com>, 2013, 2014.
# Juan Diego Martins da Costa Cruz <juan.martins@ifrn.edu.br>, 2013. # Juan Diego Martins da Costa Cruz <juan.martins@ifrn.edu.br>, 2013.
# Fábio Nogueira <fnogueira@gnome.org>, 2014. # Fábio Nogueira <fnogueira@gnome.org>, 2014.
# Rafael Ferreira <rafael.f.f1@gmail.com>, 2013, 2014. # Rafael Ferreira <rafael.f.f1@gmail.com>, 2013, 2014.
# Georges Basile Stavracas Neto <georges.stavracas@gmail.com>, 2014.
# Enrico Nicoletto <liverig@gmail.com>, 2013, 2014.
# #
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: gnome-shell\n" "Project-Id-Version: gnome-shell\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
"shell&keywords=I18N+L10N&component=general\n" "shell&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2014-06-03 07:28+0000\n" "POT-Creation-Date: 2014-03-27 18:23+0000\n"
"PO-Revision-Date: 2014-06-03 10:26-0300\n" "PO-Revision-Date: 2014-03-27 15:29-0300\n"
"Last-Translator: Enrico Nicoletto <liverig@gmail.com>\n" "Last-Translator: Antonio Fernandes C. Neto <fernandesn@gnome.org>\n"
"Language-Team: Brazilian Portuguese <gnome-pt_br-list@gnome.org>\n" "Language-Team: Brazilian Portuguese <gnome-pt_br-list@gnome.org>\n"
"Language: pt_BR\n" "Language: pt_BR\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n"
"X-Generator: Poedit 1.6.5\n" "X-Generator: Poedit 1.6.4\n"
"X-Project-Style: gnome\n" "X-Project-Style: gnome\n"
#: ../data/50-gnome-shell-system.xml.in.h:1 #: ../data/50-gnome-shell-system.xml.in.h:1
@@ -67,12 +66,13 @@ msgid "Window management and application launching"
msgstr "Gerenciamento de janelas e lançador de aplicativos" msgstr "Gerenciamento de janelas e lançador de aplicativos"
#: ../data/gnome-shell-extension-prefs.desktop.in.in.h:1 #: ../data/gnome-shell-extension-prefs.desktop.in.in.h:1
#: ../js/extensionPrefs/main.js:155
msgid "GNOME Shell Extension Preferences" msgid "GNOME Shell Extension Preferences"
msgstr "Preferências de extensões do Shell do GNOME" msgstr "Preferências de extensões do GNOME Shell"
#: ../data/gnome-shell-extension-prefs.desktop.in.in.h:2 #: ../data/gnome-shell-extension-prefs.desktop.in.in.h:2
msgid "Configure GNOME Shell Extensions" msgid "Configure GNOME Shell Extensions"
msgstr "Configurar extensões do Shell do GNOME" msgstr "Configurar extensões do GNOME Shell"
# Traduções do Xfce e da Microsoft usam compositor --Enrico # Traduções do Xfce e da Microsoft usam compositor --Enrico
#: ../data/gnome-shell-wayland.desktop.in.in.h:1 #: ../data/gnome-shell-wayland.desktop.in.in.h:1
@@ -285,31 +285,47 @@ msgstr ""
"GNOME." "GNOME."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:35 #: ../data/org.gnome.shell.gschema.xml.in.in.h:35
msgid "Arrangement of buttons on the titlebar"
msgstr "Organização dos botões na barra de título"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:36
msgid ""
"This key overrides the key in org.gnome.desktop.wm.preferences when running "
"GNOME Shell."
msgstr ""
"Esta chave sobrescreve a chave em org.gnome.desktop.wm.preferences ao "
"executar o Shell do GNOME."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:37
msgid "Enable edge tiling when dropping windows on screen edges" msgid "Enable edge tiling when dropping windows on screen edges"
msgstr "" msgstr ""
"Habilitar contorno ladrilhado ao arrastar janelas sobre as bordas da tela" "Habilitar contorno ladrilhado ao arrastar janelas sobre as bordas da tela"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:36 #: ../data/org.gnome.shell.gschema.xml.in.in.h:38
msgid "Workspaces are managed dynamically" msgid "Workspaces are managed dynamically"
msgstr "Espaços de trabalho são gerenciados dinamicamente" msgstr "Espaços de trabalho são gerenciados dinamicamente"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:37 #: ../data/org.gnome.shell.gschema.xml.in.in.h:39
msgid "Workspaces only on primary monitor" msgid "Workspaces only on primary monitor"
msgstr "Espaços de trabalho apenas no monitor primário" msgstr "Espaços de trabalho apenas no monitor primário"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:38 #: ../data/org.gnome.shell.gschema.xml.in.in.h:40
msgid "Delay focus changes in mouse mode until the pointer stops moving" msgid "Delay focus changes in mouse mode until the pointer stops moving"
msgstr "Atrasar foco altera o modo do mouse até o ponteiro parar de mover" msgstr "Atrasar foco altera o modo do mouse até o ponteiro parar de mover"
#: ../js/extensionPrefs/main.js:125 #: ../js/extensionPrefs/main.js:127
#, javascript-format #, javascript-format
msgid "There was an error loading the preferences dialog for %s:" msgid "There was an error loading the preferences dialog for %s:"
msgstr "Ocorreu um erro ao carregar o dialogo de preferências para %s:" msgstr "Ocorreu um erro ao carregar o dialogo de preferências para %s:"
#: ../js/extensionPrefs/main.js:157 #: ../js/extensionPrefs/main.js:167
#| msgid "Configure GNOME Shell Extensions" msgid "Extension"
msgid "GNOME Shell Extensions" msgstr "Extensão"
msgstr "Extensões do Shell do GNOME"
#: ../js/extensionPrefs/main.js:191
msgid "Select an extension to configure using the combobox above."
msgstr ""
"Selecione uma extensão para configurar usando a caixa de seleção abaixo."
#: ../js/gdm/authPrompt.js:147 ../js/ui/components/networkAgent.js:136 #: ../js/gdm/authPrompt.js:147 ../js/ui/components/networkAgent.js:136
#: ../js/ui/components/polkitAgent.js:166 ../js/ui/endSessionDialog.js:429 #: ../js/ui/components/polkitAgent.js:166 ../js/ui/endSessionDialog.js:429
@@ -332,33 +348,33 @@ msgctxt "button"
msgid "Sign In" msgid "Sign In"
msgstr "Entrar" msgstr "Entrar"
#: ../js/gdm/loginDialog.js:269 #: ../js/gdm/loginDialog.js:271
msgid "Choose Session" msgid "Choose Session"
msgstr "Escolher sessão" msgstr "Escolher sessão"
#: ../js/gdm/loginDialog.js:429 #: ../js/gdm/loginDialog.js:431
msgid "Not listed?" msgid "Not listed?"
msgstr "Não está listado?" msgstr "Não está listado?"
#: ../js/gdm/loginDialog.js:614 #: ../js/gdm/loginDialog.js:611
#, javascript-format #, javascript-format
msgid "(e.g., user or %s)" msgid "(e.g., user or %s)"
msgstr "(ex.: usuário ou %s)" msgstr "(ex.: usuário ou %s)"
#: ../js/gdm/loginDialog.js:619 ../js/ui/components/networkAgent.js:262 #: ../js/gdm/loginDialog.js:616 ../js/ui/components/networkAgent.js:262
#: ../js/ui/components/networkAgent.js:280 #: ../js/ui/components/networkAgent.js:280
msgid "Username: " msgid "Username: "
msgstr "Nome de usuário: " msgstr "Nome de usuário: "
#: ../js/gdm/loginDialog.js:922 #: ../js/gdm/loginDialog.js:917
msgid "Login Window" msgid "Login Window"
msgstr "Janela de sessão" msgstr "Janela de sessão"
#: ../js/gdm/util.js:323 #: ../js/gdm/util.js:322
msgid "Authentication error" msgid "Authentication error"
msgstr "Erro de autenticação" msgstr "Erro de autenticação"
#: ../js/gdm/util.js:453 #: ../js/gdm/util.js:452
msgid "(or swipe finger)" msgid "(or swipe finger)"
msgstr "(ou deslize o dedo)" msgstr "(ou deslize o dedo)"
@@ -375,34 +391,30 @@ msgstr "Não foi possível analisar comando:"
msgid "Execution of “%s” failed:" msgid "Execution of “%s” failed:"
msgstr "A execução de \"%s\" falhou:" msgstr "A execução de \"%s\" falhou:"
#: ../js/ui/appDisplay.js:640 #: ../js/ui/appDisplay.js:636
msgid "Frequently used applications will appear here" msgid "Frequently used applications will appear here"
msgstr "Aplicativos usados frequentemente vão aparecer aqui" msgstr "Aplicativos usados frequentemente vão aparecer aqui"
#: ../js/ui/appDisplay.js:751 #: ../js/ui/appDisplay.js:747
msgid "Frequent" msgid "Frequent"
msgstr "Frequente" msgstr "Frequente"
#: ../js/ui/appDisplay.js:758 #: ../js/ui/appDisplay.js:754
msgid "All" msgid "All"
msgstr "Todos" msgstr "Todos"
#: ../js/ui/appDisplay.js:1571 #: ../js/ui/appDisplay.js:1566
msgid "New Window" msgid "New Window"
msgstr "Nova janela" msgstr "Nova janela"
#: ../js/ui/appDisplay.js:1593 ../js/ui/dash.js:285 #: ../js/ui/appDisplay.js:1588 ../js/ui/dash.js:285
msgid "Remove from Favorites" msgid "Remove from Favorites"
msgstr "Remover dos favoritos" msgstr "Remover dos favoritos"
#: ../js/ui/appDisplay.js:1599 #: ../js/ui/appDisplay.js:1594
msgid "Add to Favorites" msgid "Add to Favorites"
msgstr "Adicionar aos favoritos" msgstr "Adicionar aos favoritos"
#: ../js/ui/appDisplay.js:1608
msgid "Show Details"
msgstr "Mostrar detalhes"
#: ../js/ui/appFavorites.js:87 #: ../js/ui/appFavorites.js:87
#, javascript-format #, javascript-format
msgid "%s has been added to your favorites." msgid "%s has been added to your favorites."
@@ -413,8 +425,8 @@ msgstr "%s foi adicionado aos seus favoritos."
msgid "%s has been removed from your favorites." msgid "%s has been removed from your favorites."
msgstr "%s foi removido dos seus favoritos." msgstr "%s foi removido dos seus favoritos."
#: ../js/ui/backgroundMenu.js:19 ../js/ui/panel.js:810 #: ../js/ui/backgroundMenu.js:19 ../js/ui/panel.js:809
#: ../js/ui/status/system.js:337 #: ../js/ui/status/system.js:334
msgid "Settings" msgid "Settings"
msgstr "Configurações" msgstr "Configurações"
@@ -425,14 +437,14 @@ msgstr "Alterar plano de fundo…"
#. Translators: Shown in calendar event list for all day events #. Translators: Shown in calendar event list for all day events
#. * Keep it short, best if you can use less then 10 characters #. * Keep it short, best if you can use less then 10 characters
#. */ #. */
#: ../js/ui/calendar.js:67 #: ../js/ui/calendar.js:64
msgctxt "event list time" msgctxt "event list time"
msgid "All Day" msgid "All Day"
msgstr "Dia todo" msgstr "Dia todo"
#. Translators: Shown in calendar event list, if 24h format, #. Translators: Shown in calendar event list, if 24h format,
#. \u2236 is a ratio character, similar to : */ #. \u2236 is a ratio character, similar to : */
#: ../js/ui/calendar.js:73 #: ../js/ui/calendar.js:70
msgctxt "event list time" msgctxt "event list time"
msgid "%H%M" msgid "%H%M"
msgstr "%H%M" msgstr "%H%M"
@@ -440,7 +452,7 @@ msgstr "%H%M"
#. Translators: Shown in calendar event list, if 12h format, #. Translators: Shown in calendar event list, if 12h format,
#. \u2236 is a ratio character, similar to : and \u2009 is #. \u2236 is a ratio character, similar to : and \u2009 is
#. a thin space */ #. a thin space */
#: ../js/ui/calendar.js:82 #: ../js/ui/calendar.js:79
msgctxt "event list time" msgctxt "event list time"
msgid "%l%M%p" msgid "%l%M%p"
msgstr "%l%M%p" msgstr "%l%M%p"
@@ -450,43 +462,43 @@ msgstr "%l%M%p"
#. * NOTE: These grid abbreviations are always shown together #. * NOTE: These grid abbreviations are always shown together
#. * and in order, e.g. "S M T W T F S". #. * and in order, e.g. "S M T W T F S".
#. */ #. */
#: ../js/ui/calendar.js:113 #: ../js/ui/calendar.js:110
msgctxt "grid sunday" msgctxt "grid sunday"
msgid "S" msgid "S"
msgstr "D" msgstr "D"
#. Translators: Calendar grid abbreviation for Monday */ #. Translators: Calendar grid abbreviation for Monday */
#: ../js/ui/calendar.js:115 #: ../js/ui/calendar.js:112
msgctxt "grid monday" msgctxt "grid monday"
msgid "M" msgid "M"
msgstr "S" msgstr "S"
#. Translators: Calendar grid abbreviation for Tuesday */ #. Translators: Calendar grid abbreviation for Tuesday */
#: ../js/ui/calendar.js:117 #: ../js/ui/calendar.js:114
msgctxt "grid tuesday" msgctxt "grid tuesday"
msgid "T" msgid "T"
msgstr "T" msgstr "T"
#. Translators: Calendar grid abbreviation for Wednesday */ #. Translators: Calendar grid abbreviation for Wednesday */
#: ../js/ui/calendar.js:119 #: ../js/ui/calendar.js:116
msgctxt "grid wednesday" msgctxt "grid wednesday"
msgid "W" msgid "W"
msgstr "Q" msgstr "Q"
#. Translators: Calendar grid abbreviation for Thursday */ #. Translators: Calendar grid abbreviation for Thursday */
#: ../js/ui/calendar.js:121 #: ../js/ui/calendar.js:118
msgctxt "grid thursday" msgctxt "grid thursday"
msgid "T" msgid "T"
msgstr "Q" msgstr "Q"
#. Translators: Calendar grid abbreviation for Friday */ #. Translators: Calendar grid abbreviation for Friday */
#: ../js/ui/calendar.js:123 #: ../js/ui/calendar.js:120
msgctxt "grid friday" msgctxt "grid friday"
msgid "F" msgid "F"
msgstr "S" msgstr "S"
#. Translators: Calendar grid abbreviation for Saturday */ #. Translators: Calendar grid abbreviation for Saturday */
#: ../js/ui/calendar.js:125 #: ../js/ui/calendar.js:122
msgctxt "grid saturday" msgctxt "grid saturday"
msgid "S" msgid "S"
msgstr "S" msgstr "S"
@@ -497,93 +509,97 @@ msgstr "S"
#. * so they need to be unique (e.g. Tuesday and Thursday cannot #. * so they need to be unique (e.g. Tuesday and Thursday cannot
#. * both be 'T'). #. * both be 'T').
#. */ #. */
#: ../js/ui/calendar.js:138 #: ../js/ui/calendar.js:135
msgctxt "list sunday" msgctxt "list sunday"
msgid "Su" msgid "Su"
msgstr "Dom" msgstr "Dom"
#. Translators: Event list abbreviation for Monday */ #. Translators: Event list abbreviation for Monday */
#: ../js/ui/calendar.js:140 #: ../js/ui/calendar.js:137
msgctxt "list monday" msgctxt "list monday"
msgid "M" msgid "M"
msgstr "Seg" msgstr "Seg"
#. Translators: Event list abbreviation for Tuesday */ #. Translators: Event list abbreviation for Tuesday */
#: ../js/ui/calendar.js:142 #: ../js/ui/calendar.js:139
msgctxt "list tuesday" msgctxt "list tuesday"
msgid "T" msgid "T"
msgstr "Ter" msgstr "Ter"
#. Translators: Event list abbreviation for Wednesday */ #. Translators: Event list abbreviation for Wednesday */
#: ../js/ui/calendar.js:144 #: ../js/ui/calendar.js:141
msgctxt "list wednesday" msgctxt "list wednesday"
msgid "W" msgid "W"
msgstr "Qua" msgstr "Qua"
#. Translators: Event list abbreviation for Thursday */ #. Translators: Event list abbreviation for Thursday */
#: ../js/ui/calendar.js:146 #: ../js/ui/calendar.js:143
msgctxt "list thursday" msgctxt "list thursday"
msgid "Th" msgid "Th"
msgstr "Qui" msgstr "Qui"
#. Translators: Event list abbreviation for Friday */ #. Translators: Event list abbreviation for Friday */
#: ../js/ui/calendar.js:148 #: ../js/ui/calendar.js:145
msgctxt "list friday" msgctxt "list friday"
msgid "F" msgid "F"
msgstr "Sex" msgstr "Sex"
#. Translators: Event list abbreviation for Saturday */ #. Translators: Event list abbreviation for Saturday */
#: ../js/ui/calendar.js:150 #: ../js/ui/calendar.js:147
msgctxt "list saturday" msgctxt "list saturday"
msgid "S" msgid "S"
msgstr "Sab" msgstr "Sab"
#: ../js/ui/calendar.js:454 #: ../js/ui/calendar.js:390
msgid "calendar:MY"
msgstr "calendar:MY"
#: ../js/ui/calendar.js:450
msgid "Previous month" msgid "Previous month"
msgstr "Mês anterior" msgstr "Mês anterior"
#: ../js/ui/calendar.js:464 #: ../js/ui/calendar.js:460
msgid "Next month" msgid "Next month"
msgstr "Próximo mês" msgstr "Próximo mês"
#. Translators: Text to show if there are no events */ #. Translators: Text to show if there are no events */
#: ../js/ui/calendar.js:775 #: ../js/ui/calendar.js:772
msgid "Nothing Scheduled" msgid "Nothing Scheduled"
msgstr "Nada agendado" msgstr "Nada agendado"
#. Translators: Shown on calendar heading when selected day occurs on current year */ #. Translators: Shown on calendar heading when selected day occurs on current year */
#: ../js/ui/calendar.js:793 #: ../js/ui/calendar.js:790
msgctxt "calendar heading" msgctxt "calendar heading"
msgid "%A, %B %d" msgid "%A, %B %d"
msgstr "%A, %d de %B" msgstr "%A, %d de %B"
#. Translators: Shown on calendar heading when selected day occurs on different year */ #. Translators: Shown on calendar heading when selected day occurs on different year */
#: ../js/ui/calendar.js:796 #: ../js/ui/calendar.js:793
msgctxt "calendar heading" msgctxt "calendar heading"
msgid "%A, %B %d, %Y" msgid "%A, %B %d, %Y"
msgstr "%A, %d de %B de %Y" msgstr "%A, %d de %B de %Y"
#: ../js/ui/calendar.js:807 #: ../js/ui/calendar.js:804
msgid "Today" msgid "Today"
msgstr "Hoje" msgstr "Hoje"
#: ../js/ui/calendar.js:811 #: ../js/ui/calendar.js:808
msgid "Tomorrow" msgid "Tomorrow"
msgstr "Amanhã" msgstr "Amanhã"
#: ../js/ui/calendar.js:822 #: ../js/ui/calendar.js:819
msgid "This week" msgid "This week"
msgstr "Esta semana" msgstr "Esta semana"
#: ../js/ui/calendar.js:830 #: ../js/ui/calendar.js:827
msgid "Next week" msgid "Next week"
msgstr "Próxima semana" msgstr "Próxima semana"
#: ../js/ui/components/automountManager.js:91 #: ../js/ui/components/automountManager.js:90
msgid "External drive connected" msgid "External drive connected"
msgstr "Unidade externa conectada" msgstr "Unidade externa conectada"
#: ../js/ui/components/automountManager.js:102 #: ../js/ui/components/automountManager.js:101
msgid "External drive disconnected" msgid "External drive disconnected"
msgstr "Unidade externa desconectada" msgstr "Unidade externa desconectada"
@@ -728,77 +744,77 @@ msgid "Mute"
msgstr "Sem áudio" msgstr "Sem áudio"
#. Translators: Time in 24h format */ #. Translators: Time in 24h format */
#: ../js/ui/components/telepathyClient.js:957 #: ../js/ui/components/telepathyClient.js:955
msgid "%H%M" msgid "%H%M"
msgstr "%H%M" msgstr "%H%M"
#. Translators: this is the word "Yesterday" followed by a #. Translators: this is the word "Yesterday" followed by a
#. time string in 24h format. i.e. "Yesterday, 14:30" */ #. time string in 24h format. i.e. "Yesterday, 14:30" */
#: ../js/ui/components/telepathyClient.js:964 #: ../js/ui/components/telepathyClient.js:962
msgid "Yesterday, %H%M" msgid "Yesterday, %H%M"
msgstr "Ontem, %H%M" msgstr "Ontem, %H%M"
#. Translators: this is the week day name followed by a time #. Translators: this is the week day name followed by a time
#. string in 24h format. i.e. "Monday, 14:30" */ #. string in 24h format. i.e. "Monday, 14:30" */
#: ../js/ui/components/telepathyClient.js:971 #: ../js/ui/components/telepathyClient.js:969
msgid "%A, %H%M" msgid "%A, %H%M"
msgstr "%A, %H%M" msgstr "%A, %H%M"
#. Translators: this is the month name and day number #. Translators: this is the month name and day number
#. followed by a time string in 24h format. #. followed by a time string in 24h format.
#. i.e. "May 25, 14:30" */ #. i.e. "May 25, 14:30" */
#: ../js/ui/components/telepathyClient.js:978 #: ../js/ui/components/telepathyClient.js:976
msgid "%B %d, %H%M" msgid "%B %d, %H%M"
msgstr "%d de %B, %H%M" msgstr "%d de %B, %H%M"
#. Translators: this is the month name, day number, year #. Translators: this is the month name, day number, year
#. number followed by a time string in 24h format. #. number followed by a time string in 24h format.
#. i.e. "May 25 2012, 14:30" */ #. i.e. "May 25 2012, 14:30" */
#: ../js/ui/components/telepathyClient.js:984 #: ../js/ui/components/telepathyClient.js:982
msgid "%B %d %Y, %H%M" msgid "%B %d %Y, %H%M"
msgstr "%d de %B de %Y, %H%M" msgstr "%d de %B de %Y, %H%M"
#. Translators: Time in 24h format */ #. Translators: Time in 24h format */
#: ../js/ui/components/telepathyClient.js:990 #: ../js/ui/components/telepathyClient.js:991
msgid "%l%M %p" msgid "%l%M %p"
msgstr "%l%M %p" msgstr "%l%M %p"
#. Translators: this is the word "Yesterday" followed by a #. Translators: this is the word "Yesterday" followed by a
#. time string in 12h format. i.e. "Yesterday, 2:30 pm" */ #. time string in 12h format. i.e. "Yesterday, 2:30 pm" */
#: ../js/ui/components/telepathyClient.js:997 #: ../js/ui/components/telepathyClient.js:998
msgid "Yesterday, %l%M %p" msgid "Yesterday, %l%M %p"
msgstr "Ontem, %l%M %p" msgstr "Ontem, %l%M %p"
#. Translators: this is the week day name followed by a time #. Translators: this is the week day name followed by a time
#. string in 12h format. i.e. "Monday, 2:30 pm" */ #. string in 12h format. i.e. "Monday, 2:30 pm" */
#: ../js/ui/components/telepathyClient.js:1004 #: ../js/ui/components/telepathyClient.js:1005
msgid "%A, %l%M %p" msgid "%A, %l%M %p"
msgstr "%A, %l%M %p" msgstr "%A, %l%M %p"
#. Translators: this is the month name and day number #. Translators: this is the month name and day number
#. followed by a time string in 12h format. #. followed by a time string in 12h format.
#. i.e. "May 25, 2:30 pm" */ #. i.e. "May 25, 2:30 pm" */
#: ../js/ui/components/telepathyClient.js:1011 #: ../js/ui/components/telepathyClient.js:1012
msgid "%B %d, %l%M %p" msgid "%B %d, %l%M %p"
msgstr "%d de %B, %l%M %p" msgstr "%d de %B, %l%M %p"
#. Translators: this is the month name, day number, year #. Translators: this is the month name, day number, year
#. number followed by a time string in 12h format. #. number followed by a time string in 12h format.
#. i.e. "May 25 2012, 2:30 pm"*/ #. i.e. "May 25 2012, 2:30 pm"*/
#: ../js/ui/components/telepathyClient.js:1017 #: ../js/ui/components/telepathyClient.js:1018
msgid "%B %d %Y, %l%M %p" msgid "%B %d %Y, %l%M %p"
msgstr "%d de %B de %Y, %l%M %p" msgstr "%d de %B de %Y, %l%M %p"
#. Translators: this is the other person changing their old IM name to their new #. Translators: this is the other person changing their old IM name to their new
#. IM name. */ #. IM name. */
#: ../js/ui/components/telepathyClient.js:1049 #: ../js/ui/components/telepathyClient.js:1051
#, javascript-format #, javascript-format
msgid "%s is now known as %s" msgid "%s is now known as %s"
msgstr "%s agora é conhecido como %s" msgstr "%s agora é conhecido como %s"
#. translators: argument is a room name like #. translators: argument is a room name like
#. * room@jabber.org for example. */ #. * room@jabber.org for example. */
#: ../js/ui/components/telepathyClient.js:1153 #: ../js/ui/components/telepathyClient.js:1154
#, javascript-format #, javascript-format
msgid "Invitation to %s" msgid "Invitation to %s"
msgstr "Convite para %s" msgstr "Convite para %s"
@@ -806,38 +822,38 @@ msgstr "Convite para %s"
#. translators: first argument is the name of a contact and the second #. translators: first argument is the name of a contact and the second
#. * one the name of a room. "Alice is inviting you to join room@jabber.org #. * one the name of a room. "Alice is inviting you to join room@jabber.org
#. * for example. */ #. * for example. */
#: ../js/ui/components/telepathyClient.js:1161 #: ../js/ui/components/telepathyClient.js:1162
#, javascript-format #, javascript-format
msgid "%s is inviting you to join %s" msgid "%s is inviting you to join %s"
msgstr "%s está convidando você para participar de %s" msgstr "%s está convidando você para participar de %s"
#: ../js/ui/components/telepathyClient.js:1163 #: ../js/ui/components/telepathyClient.js:1164
#: ../js/ui/components/telepathyClient.js:1198 #: ../js/ui/components/telepathyClient.js:1199
#: ../js/ui/components/telepathyClient.js:1232 #: ../js/ui/components/telepathyClient.js:1233
#: ../js/ui/components/telepathyClient.js:1290 #: ../js/ui/components/telepathyClient.js:1290
msgid "Decline" msgid "Decline"
msgstr "Recusar" msgstr "Recusar"
#: ../js/ui/components/telepathyClient.js:1169 #: ../js/ui/components/telepathyClient.js:1170
#: ../js/ui/components/telepathyClient.js:1238 #: ../js/ui/components/telepathyClient.js:1239
#: ../js/ui/components/telepathyClient.js:1295 #: ../js/ui/components/telepathyClient.js:1295
msgid "Accept" msgid "Accept"
msgstr "Aceitar" msgstr "Aceitar"
#. translators: argument is a contact name like Alice for example. */ #. translators: argument is a contact name like Alice for example. */
#: ../js/ui/components/telepathyClient.js:1188 #: ../js/ui/components/telepathyClient.js:1189
#, javascript-format #, javascript-format
msgid "Video call from %s" msgid "Video call from %s"
msgstr "Chamada de vídeo para %s" msgstr "Chamada de vídeo para %s"
#. translators: argument is a contact name like Alice for example. */ #. translators: argument is a contact name like Alice for example. */
#: ../js/ui/components/telepathyClient.js:1191 #: ../js/ui/components/telepathyClient.js:1192
#, javascript-format #, javascript-format
msgid "Call from %s" msgid "Call from %s"
msgstr "Chamada de %s" msgstr "Chamada de %s"
#. translators: this is a button label (verb), not a noun */ #. translators: this is a button label (verb), not a noun */
#: ../js/ui/components/telepathyClient.js:1205 #: ../js/ui/components/telepathyClient.js:1206
msgid "Answer" msgid "Answer"
msgstr "Atender" msgstr "Atender"
@@ -846,13 +862,13 @@ msgstr "Atender"
#. * file name. The string will be something #. * file name. The string will be something
#. * like: "Alice is sending you test.ogg" #. * like: "Alice is sending you test.ogg"
#. */ #. */
#: ../js/ui/components/telepathyClient.js:1226 #: ../js/ui/components/telepathyClient.js:1227
#, javascript-format #, javascript-format
msgid "%s is sending you %s" msgid "%s is sending you %s"
msgstr "%s está enviando %s" msgstr "%s está enviando %s"
#. To translators: The parameter is the contact's alias */ #. To translators: The parameter is the contact's alias */
#: ../js/ui/components/telepathyClient.js:1255 #: ../js/ui/components/telepathyClient.js:1256
#, javascript-format #, javascript-format
msgid "%s would like permission to see when you are online" msgid "%s would like permission to see when you are online"
msgstr "%s quer permissão para vê-lo quando conectado" msgstr "%s quer permissão para vê-lo quando conectado"
@@ -988,23 +1004,23 @@ msgstr "Mostrar aplicativos"
msgid "Dash" msgid "Dash"
msgstr "Dash" msgstr "Dash"
#: ../js/ui/dateMenu.js:97 #: ../js/ui/dateMenu.js:91
msgid "Open Calendar" msgid "Open Calendar"
msgstr "Abrir agenda" msgstr "Abrir agenda"
#: ../js/ui/dateMenu.js:101 #: ../js/ui/dateMenu.js:95
msgid "Open Clocks" msgid "Open Clocks"
msgstr "Abrir relógios" msgstr "Abrir relógios"
# O "&" foi inserido como "e" para versão 3.8.0 no gnome-control-center # O "&" foi inserido como "e" para versão 3.8.0 no gnome-control-center
#: ../js/ui/dateMenu.js:108 #: ../js/ui/dateMenu.js:102
msgid "Date & Time Settings" msgid "Date & Time Settings"
msgstr "Configurações de data & hora" msgstr "Configurações de data & hora"
#. Translators: This is the date format to use when the calendar popup is #. Translators: This is the date format to use when the calendar popup is
#. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM"). #. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM").
#. */ #. */
#: ../js/ui/dateMenu.js:205 #: ../js/ui/dateMenu.js:192
msgid "%A %B %e, %Y" msgid "%A %B %e, %Y"
msgstr "%A, %e de %B de %Y" msgstr "%A, %e de %B de %Y"
@@ -1129,13 +1145,13 @@ msgid "Other users are logged in."
msgstr "Outros usuários estão com sessão aberta." msgstr "Outros usuários estão com sessão aberta."
#. Translators: Remote here refers to a remote session, like a ssh login */ #. Translators: Remote here refers to a remote session, like a ssh login */
#: ../js/ui/endSessionDialog.js:619 #: ../js/ui/endSessionDialog.js:618
#, javascript-format #, javascript-format
msgid "%s (remote)" msgid "%s (remote)"
msgstr "%s (remoto)" msgstr "%s (remoto)"
#. Translators: Console here refers to a tty like a VT console */ #. Translators: Console here refers to a tty like a VT console */
#: ../js/ui/endSessionDialog.js:622 #: ../js/ui/endSessionDialog.js:621
#, javascript-format #, javascript-format
msgid "%s (console)" msgid "%s (console)"
msgstr "%s (console)" msgstr "%s (console)"
@@ -1149,7 +1165,7 @@ msgstr "Instalar"
msgid "Download and install “%s” from extensions.gnome.org?" msgid "Download and install “%s” from extensions.gnome.org?"
msgstr "Baixar e instalar \"%s\" de extensions.gnome.org?" msgstr "Baixar e instalar \"%s\" de extensions.gnome.org?"
#: ../js/ui/keyboard.js:645 ../js/ui/status/keyboard.js:339 #: ../js/ui/keyboard.js:641 ../js/ui/status/keyboard.js:335
msgid "Keyboard" msgid "Keyboard"
msgstr "Teclado" msgstr "Teclado"
@@ -1237,16 +1253,16 @@ msgstr "Sem mensagens"
msgid "Message Tray" msgid "Message Tray"
msgstr "Área de notificação" msgstr "Área de notificação"
#: ../js/ui/messageTray.js:2967 #: ../js/ui/messageTray.js:2962
msgid "System Information" msgid "System Information"
msgstr "Informações do sistema" msgstr "Informações do sistema"
#: ../js/ui/notificationDaemon.js:516 ../src/shell-app.c:425 #: ../js/ui/notificationDaemon.js:515 ../src/shell-app.c:425
msgctxt "program" msgctxt "program"
msgid "Unknown" msgid "Unknown"
msgstr "Desconhecido" msgstr "Desconhecido"
#: ../js/ui/overviewControls.js:488 ../js/ui/screenShield.js:151 #: ../js/ui/overviewControls.js:483 ../js/ui/screenShield.js:151
#, javascript-format #, javascript-format
msgid "%d new message" msgid "%d new message"
msgid_plural "%d new messages" msgid_plural "%d new messages"
@@ -1279,11 +1295,11 @@ msgstr "Sair"
msgid "Activities" msgid "Activities"
msgstr "Atividades" msgstr "Atividades"
#: ../js/ui/panel.js:915 #: ../js/ui/panel.js:914
msgid "Top Bar" msgid "Top Bar"
msgstr "Barra superior" msgstr "Barra superior"
#: ../js/ui/popupMenu.js:279 #: ../js/ui/popupMenu.js:271
msgid "toggle-switch-us" msgid "toggle-switch-us"
msgstr "toggle-switch-intl" msgstr "toggle-switch-intl"
@@ -1291,7 +1307,7 @@ msgstr "toggle-switch-intl"
msgid "Enter a Command" msgid "Enter a Command"
msgstr "Digite um comando" msgstr "Digite um comando"
#: ../js/ui/runDialog.js:114 ../js/ui/windowMenu.js:120 #: ../js/ui/runDialog.js:114
msgid "Close" msgid "Close"
msgstr "Fechar" msgstr "Fechar"
@@ -1308,7 +1324,7 @@ msgid_plural "%d new notifications"
msgstr[0] "%d nova notificação" msgstr[0] "%d nova notificação"
msgstr[1] "%d novas notificações" msgstr[1] "%d novas notificações"
#: ../js/ui/screenShield.js:474 ../js/ui/status/system.js:345 #: ../js/ui/screenShield.js:474 ../js/ui/status/system.js:342
msgid "Lock" msgid "Lock"
msgstr "Bloquear" msgstr "Bloquear"
@@ -1316,19 +1332,19 @@ msgstr "Bloquear"
msgid "GNOME needs to lock the screen" msgid "GNOME needs to lock the screen"
msgstr "GNOME precisa bloquear a tela" msgstr "GNOME precisa bloquear a tela"
#: ../js/ui/screenShield.js:835 ../js/ui/screenShield.js:1312 #: ../js/ui/screenShield.js:835 ../js/ui/screenShield.js:1309
msgid "Unable to lock" msgid "Unable to lock"
msgstr "Não foi possível bloquear" msgstr "Não foi possível bloquear"
#: ../js/ui/screenShield.js:836 ../js/ui/screenShield.js:1313 #: ../js/ui/screenShield.js:836 ../js/ui/screenShield.js:1310
msgid "Lock was blocked by an application" msgid "Lock was blocked by an application"
msgstr "O bloqueio foi impedido por um aplicativo" msgstr "O bloqueio foi impedido por um aplicativo"
#: ../js/ui/search.js:606 #: ../js/ui/search.js:603
msgid "Searching…" msgid "Searching…"
msgstr "Pesquisando…" msgstr "Pesquisando…"
#: ../js/ui/search.js:652 #: ../js/ui/search.js:649
msgid "No results." msgid "No results."
msgstr "Nenhum resultado." msgstr "Nenhum resultado."
@@ -1392,11 +1408,11 @@ msgstr "Teclas de repercussão"
msgid "Mouse Keys" msgid "Mouse Keys"
msgstr "Teclas do mouse" msgstr "Teclas do mouse"
#: ../js/ui/status/accessibility.js:144 #: ../js/ui/status/accessibility.js:143
msgid "High Contrast" msgid "High Contrast"
msgstr "Alto contraste" msgstr "Alto contraste"
#: ../js/ui/status/accessibility.js:193 #: ../js/ui/status/accessibility.js:192
msgid "Large Text" msgid "Large Text"
msgstr "Texto grande" msgstr "Texto grande"
@@ -1406,8 +1422,8 @@ msgstr "Bluetooth"
#: ../js/ui/status/bluetooth.js:51 ../js/ui/status/network.js:151 #: ../js/ui/status/bluetooth.js:51 ../js/ui/status/network.js:151
#: ../js/ui/status/network.js:323 ../js/ui/status/network.js:1234 #: ../js/ui/status/network.js:323 ../js/ui/status/network.js:1234
#: ../js/ui/status/network.js:1345 ../js/ui/status/rfkill.js:86 #: ../js/ui/status/network.js:1345 ../js/ui/status/rfkill.js:85
#: ../js/ui/status/rfkill.js:114 #: ../js/ui/status/rfkill.js:105
msgid "Turn Off" msgid "Turn Off"
msgstr "Desligar" msgstr "Desligar"
@@ -1430,7 +1446,7 @@ msgstr "Não conectado"
msgid "Brightness" msgid "Brightness"
msgstr "Brilho" msgstr "Brilho"
#: ../js/ui/status/keyboard.js:407 #: ../js/ui/status/keyboard.js:403
msgid "Show Keyboard Layout" msgid "Show Keyboard Layout"
msgstr "Exibir disposição de teclado" msgstr "Exibir disposição de teclado"
@@ -1463,41 +1479,40 @@ msgstr "Off"
msgid "Connected" msgid "Connected"
msgstr "Conectado" msgstr "Conectado"
# Não gerenciável para transmitir a idéia que o Networkmanager não consegue gerenciar o dispositivo --Enrico
#. Translators: this is for network devices that are physically present but are not #. Translators: this is for network devices that are physically present but are not
#. under NetworkManager's control (and thus cannot be used in the menu) */ #. under NetworkManager's control (and thus cannot be used in the menu) */
#: ../js/ui/status/network.js:426 #: ../js/ui/status/network.js:426
msgid "Unmanaged" msgid "unmanaged"
msgstr "Não gerenciável" msgstr "não gerenciado"
#: ../js/ui/status/network.js:428 #: ../js/ui/status/network.js:428
msgid "Disconnecting" msgid "disconnecting..."
msgstr "Desconectando" msgstr "desconectando..."
#: ../js/ui/status/network.js:434 ../js/ui/status/network.js:1254 #: ../js/ui/status/network.js:434 ../js/ui/status/network.js:1362
msgid "Connecting" msgid "connecting..."
msgstr "Conectando" msgstr "conectando..."
#. Translators: this is for network connections that require some kind of key or password */ #. Translators: this is for network connections that require some kind of key or password */
#: ../js/ui/status/network.js:437 #: ../js/ui/status/network.js:437 ../js/ui/status/network.js:1365
msgid "Authentication required" msgid "authentication required"
msgstr "Autenticação necessária" msgstr "autenticação necessária"
#. Translators: this is for devices that require some kind of firmware or kernel #. Translators: this is for devices that require some kind of firmware or kernel
#. module, which is missing */ #. module, which is missing */
#: ../js/ui/status/network.js:445 #: ../js/ui/status/network.js:445
msgid "Firmware missing" msgid "firmware missing"
msgstr "Firmware em falta" msgstr "firmware faltando"
#. Translators: this is for a network device that cannot be activated (for example it #. Translators: this is for a network device that cannot be activated (for example it
#. is disabled by rfkill, or it has no coverage */ #. is disabled by rfkill, or it has no coverage */
#: ../js/ui/status/network.js:449 #: ../js/ui/status/network.js:449
msgid "Unavailable" msgid "unavailable"
msgstr "Indisponível" msgstr "indisponível"
#: ../js/ui/status/network.js:451 ../js/ui/status/network.js:1646 #: ../js/ui/status/network.js:451 ../js/ui/status/network.js:1367
msgid "Connection failed" msgid "connection failed"
msgstr "Falha de conexão" msgstr "conexão falhou"
#: ../js/ui/status/network.js:467 #: ../js/ui/status/network.js:467
msgid "Wired Settings" msgid "Wired Settings"
@@ -1551,7 +1566,7 @@ msgstr "Selecione uma rede"
msgid "No Networks" msgid "No Networks"
msgstr "Nenhuma rede" msgstr "Nenhuma rede"
#: ../js/ui/status/network.js:866 ../js/ui/status/rfkill.js:112 #: ../js/ui/status/network.js:866 ../js/ui/status/rfkill.js:103
msgid "Use hardware switch to turn off" msgid "Use hardware switch to turn off"
msgstr "Usar alternador de hardware para desligar" msgstr "Usar alternador de hardware para desligar"
@@ -1571,20 +1586,11 @@ msgstr "Ligar"
msgid "Hotspot Active" msgid "Hotspot Active"
msgstr "Ponto de acesso ativo" msgstr "Ponto de acesso ativo"
#: ../js/ui/status/network.js:1362 #: ../js/ui/status/network.js:1254
msgid "connecting..." msgid "Connecting"
msgstr "conectando..." msgstr "Conectando"
#. Translators: this is for network connections that require some kind of key or password */ #: ../js/ui/status/network.js:1433 ../js/ui/status/rfkill.js:88
#: ../js/ui/status/network.js:1365
msgid "authentication required"
msgstr "autenticação necessária"
#: ../js/ui/status/network.js:1367
msgid "connection failed"
msgstr "conexão falhou"
#: ../js/ui/status/network.js:1433 ../js/ui/status/rfkill.js:89
msgid "Network Settings" msgid "Network Settings"
msgstr "Configurações de rede" msgstr "Configurações de rede"
@@ -1600,6 +1606,10 @@ msgstr "VPN"
msgid "Network Manager" msgid "Network Manager"
msgstr "Gerenciador de rede" msgstr "Gerenciador de rede"
#: ../js/ui/status/network.js:1646
msgid "Connection failed"
msgstr "Falha de conexão"
#: ../js/ui/status/network.js:1647 #: ../js/ui/status/network.js:1647
msgid "Activation of network connection failed" msgid "Activation of network connection failed"
msgstr "Falha ao ativar a conexão da rede" msgstr "Falha ao ativar a conexão da rede"
@@ -1636,31 +1646,31 @@ msgstr "No-break"
msgid "Battery" msgid "Battery"
msgstr "Bateria" msgstr "Bateria"
#: ../js/ui/status/rfkill.js:83 #: ../js/ui/status/rfkill.js:82
msgid "Airplane Mode" msgid "Airplane Mode"
msgstr "Modo avião" msgstr "Modo avião"
#: ../js/ui/status/rfkill.js:85 #: ../js/ui/status/rfkill.js:84
msgid "On" msgid "On"
msgstr "On" msgstr "On"
#: ../js/ui/status/system.js:317 #: ../js/ui/status/system.js:314
msgid "Switch User" msgid "Switch User"
msgstr "Alternar usuário" msgstr "Alternar usuário"
#: ../js/ui/status/system.js:322 #: ../js/ui/status/system.js:319
msgid "Log Out" msgid "Log Out"
msgstr "Encerrar sessão" msgstr "Encerrar sessão"
#: ../js/ui/status/system.js:341 #: ../js/ui/status/system.js:338
msgid "Orientation Lock" msgid "Orientation Lock"
msgstr "Bloqueio da orientação" msgstr "Bloqueio da orientação"
#: ../js/ui/status/system.js:349 #: ../js/ui/status/system.js:346
msgid "Suspend" msgid "Suspend"
msgstr "Suspender" msgstr "Suspender"
#: ../js/ui/status/system.js:352 #: ../js/ui/status/system.js:349
msgid "Power Off" msgid "Power Off"
msgstr "Desligar" msgstr "Desligar"
@@ -1697,68 +1707,28 @@ msgstr "Pesquisar"
msgid "“%s” is ready" msgid "“%s” is ready"
msgstr "\"%s\" está pronto" msgstr "\"%s\" está pronto"
#: ../js/ui/windowManager.js:57 #: ../js/ui/windowManager.js:56
msgid "Do you want to keep these display settings?" msgid "Do you want to keep these display settings?"
msgstr "Você deseja manter essas configurações de exibição?" msgstr "Você deseja manter essas configurações de exibição?"
#. Translators: this and the following message should be limited in lenght, #. Translators: this and the following message should be limited in lenght,
#. to avoid ellipsizing the labels. #. to avoid ellipsizing the labels.
#. */ #. */
#: ../js/ui/windowManager.js:76 #: ../js/ui/windowManager.js:75
msgid "Revert Settings" msgid "Revert Settings"
msgstr "Reverter configurações" msgstr "Reverter configurações"
#: ../js/ui/windowManager.js:80 #: ../js/ui/windowManager.js:79
msgid "Keep Changes" msgid "Keep Changes"
msgstr "Manter alterações" msgstr "Manter alterações"
#: ../js/ui/windowManager.js:99 #: ../js/ui/windowManager.js:97
#, javascript-format #, javascript-format
msgid "Settings changes will revert in %d second" msgid "Settings changes will revert in %d second"
msgid_plural "Settings changes will revert in %d seconds" msgid_plural "Settings changes will revert in %d seconds"
msgstr[0] "Alterações nas configurações serão revertidas em %d segundo" msgstr[0] "Alterações nas configurações serão revertidas em %d segundo"
msgstr[1] "Alterações nas configurações serão revertidas em %d segundos" msgstr[1] "Alterações nas configurações serão revertidas em %d segundos"
#: ../js/ui/windowMenu.js:34
msgid "Minimize"
msgstr "Minimizar"
#: ../js/ui/windowMenu.js:41
msgid "Unmaximize"
msgstr "Restaurar"
#: ../js/ui/windowMenu.js:45
msgid "Maximize"
msgstr "Maximizar"
#: ../js/ui/windowMenu.js:52
msgid "Move"
msgstr "Mover"
#: ../js/ui/windowMenu.js:58
msgid "Resize"
msgstr "Redimensionar"
#: ../js/ui/windowMenu.js:65
msgid "Move Titlebar Onscreen"
msgstr "Mover barra de título na tela"
#: ../js/ui/windowMenu.js:70
msgid "Always on Top"
msgstr "Sempre no topo"
#: ../js/ui/windowMenu.js:89
msgid "Always on Visible Workspace"
msgstr "Sempre na área de trabalho visível"
#: ../js/ui/windowMenu.js:106
msgid "Move to Workspace Up"
msgstr "Mover para a área de trabalho acima"
#: ../js/ui/windowMenu.js:111
msgid "Move to Workspace Down"
msgstr "Mover para a área de trabalho abaixo"
#: ../src/calendar-server/evolution-calendar.desktop.in.in.h:1 #: ../src/calendar-server/evolution-calendar.desktop.in.in.h:1
msgid "Evolution Calendar" msgid "Evolution Calendar"
msgstr "Agenda do Evolution" msgstr "Agenda do Evolution"
@@ -1814,30 +1784,10 @@ msgstr "As senhas não coincidem."
msgid "Password cannot be blank" msgid "Password cannot be blank"
msgstr "A senha não pode estar em branco" msgstr "A senha não pode estar em branco"
#: ../src/shell-polkit-authentication-agent.c:346 #: ../src/shell-polkit-authentication-agent.c:343
msgid "Authentication dialog was dismissed by the user" msgid "Authentication dialog was dismissed by the user"
msgstr "O diálogo de autenticação foi descartado pelo usuário" msgstr "O diálogo de autenticação foi descartado pelo usuário"
#~ msgid "Arrangement of buttons on the titlebar"
#~ msgstr "Organização dos botões na barra de título"
#~ msgid ""
#~ "This key overrides the key in org.gnome.desktop.wm.preferences when "
#~ "running GNOME Shell."
#~ msgstr ""
#~ "Esta chave sobrescreve a chave em org.gnome.desktop.wm.preferences ao "
#~ "executar o Shell do GNOME."
#~ msgid "Extension"
#~ msgstr "Extensão"
#~ msgid "Select an extension to configure using the combobox above."
#~ msgstr ""
#~ "Selecione uma extensão para configurar usando a caixa de seleção abaixo."
#~ msgid "calendar:MY"
#~ msgstr "calendar:MY"
#~ msgid "<b>%A</b>, <b>%H:%M</b>" #~ msgid "<b>%A</b>, <b>%H:%M</b>"
#~ msgstr "<b>%A</b>, <b>%H:%M</b>" #~ msgstr "<b>%A</b>, <b>%H:%M</b>"

1348
po/ro.po

File diff suppressed because it is too large Load Diff

584
po/ru.po

File diff suppressed because it is too large Load Diff

531
po/sl.po

File diff suppressed because it is too large Load Diff

192
po/sr.po
View File

@@ -9,8 +9,8 @@ msgstr ""
"Project-Id-Version: gnome-shell master\n" "Project-Id-Version: gnome-shell master\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
"shell&keywords=I18N+L10N&component=general\n" "shell&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2014-03-22 20:38+0000\n" "POT-Creation-Date: 2014-04-14 15:36+0000\n"
"PO-Revision-Date: 2014-03-23 11:08+0200\n" "PO-Revision-Date: 2014-04-14 19:31+0200\n"
"Last-Translator: Мирослав Николић <miroslavnikolic@rocketmail.com>\n" "Last-Translator: Мирослав Николић <miroslavnikolic@rocketmail.com>\n"
"Language-Team: Serbian <gnom@prevod.org>\n" "Language-Team: Serbian <gnom@prevod.org>\n"
"Language: sr\n" "Language: sr\n"
@@ -80,16 +80,10 @@ msgstr ""
"коришћењем „Alt-F2“ прозорчета." "коришћењем „Alt-F2“ прозорчета."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:3 #: ../data/org.gnome.shell.gschema.xml.in.in.h:3
#| msgid "Uuids of extensions to enable"
msgid "UUIDs of extensions to enable" msgid "UUIDs of extensions to enable"
msgstr "ЈУИБ-ови проширења за укључивање" msgstr "ЈУИБ-ови проширења за укључивање"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:4 #: ../data/org.gnome.shell.gschema.xml.in.in.h:4
#| msgid ""
#| "GNOME Shell extensions have a uuid property; this key lists extensions "
#| "which should be loaded. Any extension that wants to be loaded needs to be "
#| "in this list. You can also manipulate this list with the EnableExtension "
#| "and DisableExtension DBus methods on org.gnome.Shell."
msgid "" msgid ""
"GNOME Shell extensions have a UUID property; this key lists extensions which " "GNOME Shell extensions have a UUID property; this key lists extensions which "
"should be loaded. Any extension that wants to be loaded needs to be in this " "should be loaded. Any extension that wants to be loaded needs to be in this "
@@ -98,8 +92,8 @@ msgid ""
msgstr "" msgstr ""
"Проширења Гномове шкољке имају ЈУИБ вредност; овај кључ исписује проширења " "Проширења Гномове шкољке имају ЈУИБ вредност; овај кључ исписује проширења "
"која треба учитавати. Свако проширење које жели бити учитано мора бити на " "која треба учитавати. Свако проширење које жели бити учитано мора бити на "
"списку. Такође можете да управљате овим списком користећи начине " "списку. Такође можете да управљате овим списком користећи начине Д-"
"Д-магистрале „Укључи проширење“ и „Искључи проширење“ на „org.gnome.Shell“." "магистрале „Укључи проширење“ и „Искључи проширење“ на „org.gnome.Shell“."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:5 #: ../data/org.gnome.shell.gschema.xml.in.in.h:5
msgid "Disables the validation of extension version compatibility" msgid "Disables the validation of extension version compatibility"
@@ -136,14 +130,10 @@ msgid "History for the looking glass dialog"
msgstr "Историјат прозорчета огледала" msgstr "Историјат прозорчета огледала"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:11 #: ../data/org.gnome.shell.gschema.xml.in.in.h:11
#| msgid "Always show the 'Log out' menuitem in the user menu."
msgid "Always show the 'Log out' menu item in the user menu." msgid "Always show the 'Log out' menu item in the user menu."
msgstr "Увек приказује ставку изборника „Одјави ме“ у изборнику корисника." msgstr "Увек приказује ставку изборника „Одјави ме“ у изборнику корисника."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:12 #: ../data/org.gnome.shell.gschema.xml.in.in.h:12
#| msgid ""
#| "This key overrides the automatic hiding of the 'Log out' menuitem in "
#| "single-user, single-session situations."
msgid "" msgid ""
"This key overrides the automatic hiding of the 'Log out' menu item in single-" "This key overrides the automatic hiding of the 'Log out' menu item in single-"
"user, single-session situations." "user, single-session situations."
@@ -241,12 +231,12 @@ msgid ""
"using network resources (albeit with street-level accuracy at best)." "using network resources (albeit with street-level accuracy at best)."
msgstr "" msgstr ""
"Подешава највећи ниво тачности места коју програми могу да користе. Исправне " "Подешава највећи ниво тачности места коју програми могу да користе. Исправне "
"могућности су „off“ (искључује праћење места), „country“ (држава), „city“ " "могућности су „off“ (искључује праћење места), „country“ (држава), "
"(град), „neighborhood“ (комшилук), „street“ (улица), и „exact“ (тачно " "„city“ (град), „neighborhood“ (комшилук), „street“ (улица), и „exact“ (тачно "
"обично захтева ГПС пријемник). Имајте на уму да ће ово одлучити шта ће „Гео " "обично захтева ГПС пријемник). Имајте на уму да ће ово одлучити шта ће "
"индиција“ дозволити програмима само да виде и да могу пронаћи корисниково " "„Гео индиција“ дозволити програмима само да виде и да могу пронаћи "
"место на своју руку користећи изворишта мреже (мада са тачношћу на нивоу " "корисниково место на своју руку користећи изворишта мреже (мада са тачношћу "
"улице у најбољем случају)." "на нивоу улице у најбољем случају)."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:31 #: ../data/org.gnome.shell.gschema.xml.in.in.h:31
msgid "The application icon mode." msgid "The application icon mode."
@@ -335,25 +325,25 @@ msgctxt "button"
msgid "Sign In" msgid "Sign In"
msgstr "Пријави ме" msgstr "Пријави ме"
#: ../js/gdm/loginDialog.js:270 #: ../js/gdm/loginDialog.js:271
msgid "Choose Session" msgid "Choose Session"
msgstr "Изабери сесију" msgstr "Изабери сесију"
#: ../js/gdm/loginDialog.js:430 #: ../js/gdm/loginDialog.js:431
msgid "Not listed?" msgid "Not listed?"
msgstr "Није на списку?" msgstr "Није на списку?"
#: ../js/gdm/loginDialog.js:608 #: ../js/gdm/loginDialog.js:614
#, javascript-format #, javascript-format
msgid "(e.g., user or %s)" msgid "(e.g., user or %s)"
msgstr "(нпр., корисник или %s)" msgstr "(нпр., корисник или %s)"
#: ../js/gdm/loginDialog.js:613 ../js/ui/components/networkAgent.js:262 #: ../js/gdm/loginDialog.js:619 ../js/ui/components/networkAgent.js:262
#: ../js/ui/components/networkAgent.js:280 #: ../js/ui/components/networkAgent.js:280
msgid "Username: " msgid "Username: "
msgstr "Корисничко име: " msgstr "Корисничко име: "
#: ../js/gdm/loginDialog.js:884 #: ../js/gdm/loginDialog.js:920
msgid "Login Window" msgid "Login Window"
msgstr "Прозор за пријављивање" msgstr "Прозор за пријављивање"
@@ -375,31 +365,30 @@ msgstr "Не могу да обрадим наредбу:"
#: ../js/misc/util.js:156 #: ../js/misc/util.js:156
#, javascript-format #, javascript-format
#| msgid "Execution of '%s' failed:"
msgid "Execution of “%s” failed:" msgid "Execution of “%s” failed:"
msgstr "Није успело извршавање „%s“:" msgstr "Није успело извршавање „%s“:"
#: ../js/ui/appDisplay.js:629 #: ../js/ui/appDisplay.js:636
msgid "Frequently used applications will appear here" msgid "Frequently used applications will appear here"
msgstr "Често коришћени програми ће се појавити овде" msgstr "Често коришћени програми ће се појавити овде"
#: ../js/ui/appDisplay.js:740 #: ../js/ui/appDisplay.js:747
msgid "Frequent" msgid "Frequent"
msgstr "Често" msgstr "Често"
#: ../js/ui/appDisplay.js:747 #: ../js/ui/appDisplay.js:754
msgid "All" msgid "All"
msgstr "Све" msgstr "Све"
#: ../js/ui/appDisplay.js:1555 #: ../js/ui/appDisplay.js:1566
msgid "New Window" msgid "New Window"
msgstr "Нови прозор" msgstr "Нови прозор"
#: ../js/ui/appDisplay.js:1577 ../js/ui/dash.js:285 #: ../js/ui/appDisplay.js:1588 ../js/ui/dash.js:285
msgid "Remove from Favorites" msgid "Remove from Favorites"
msgstr "Уклони из омиљених" msgstr "Уклони из омиљених"
#: ../js/ui/appDisplay.js:1583 #: ../js/ui/appDisplay.js:1594
msgid "Add to Favorites" msgid "Add to Favorites"
msgstr "Додај у омиљене" msgstr "Додај у омиљене"
@@ -647,9 +636,6 @@ msgstr "Бежична мрежа захтева потврђивање иден
#: ../js/ui/components/networkAgent.js:312 #: ../js/ui/components/networkAgent.js:312
#, javascript-format #, javascript-format
#| msgid ""
#| "Passwords or encryption keys are required to access the wireless network "
#| "'%s'."
msgid "" msgid ""
"Passwords or encryption keys are required to access the wireless network " "Passwords or encryption keys are required to access the wireless network "
"“%s”." "“%s”."
@@ -686,7 +672,6 @@ msgstr "Лозинка мобилне широкопојасне мреже"
#: ../js/ui/components/networkAgent.js:339 #: ../js/ui/components/networkAgent.js:339
#, javascript-format #, javascript-format
#| msgid "A password is required to connect to '%s'."
msgid "A password is required to connect to “%s”." msgid "A password is required to connect to “%s”."
msgstr "Потребна је лозинка за повезивање на „%s“." msgstr "Потребна је лозинка за повезивање на „%s“."
@@ -736,23 +721,18 @@ msgstr "Утишај"
#. Translators: Time in 24h format */ #. Translators: Time in 24h format */
#: ../js/ui/components/telepathyClient.js:955 #: ../js/ui/components/telepathyClient.js:955
#| msgctxt "event list time"
#| msgid "%H%M"
msgid "%H%M" msgid "%H%M"
msgstr "%H%M" msgstr "%H%M"
#. Translators: this is the word "Yesterday" followed by a #. Translators: this is the word "Yesterday" followed by a
#. time string in 24h format. i.e. "Yesterday, 14:30" */ #. time string in 24h format. i.e. "Yesterday, 14:30" */
#: ../js/ui/components/telepathyClient.js:962 #: ../js/ui/components/telepathyClient.js:962
#| msgid "<b>Yesterday</b>, <b>%H:%M</b>"
msgid "Yesterday, %H%M" msgid "Yesterday, %H%M"
msgstr "Јуче, %H:%M" msgstr "Јуче, %H:%M"
#. Translators: this is the week day name followed by a time #. Translators: this is the week day name followed by a time
#. string in 24h format. i.e. "Monday, 14:30" */ #. string in 24h format. i.e. "Monday, 14:30" */
#: ../js/ui/components/telepathyClient.js:969 #: ../js/ui/components/telepathyClient.js:969
#| msgctxt "event list time"
#| msgid "%H%M"
msgid "%A, %H%M" msgid "%A, %H%M"
msgstr "%A, %H%M" msgstr "%A, %H%M"
@@ -760,8 +740,6 @@ msgstr "%A, %H%M"
#. followed by a time string in 24h format. #. followed by a time string in 24h format.
#. i.e. "May 25, 14:30" */ #. i.e. "May 25, 14:30" */
#: ../js/ui/components/telepathyClient.js:976 #: ../js/ui/components/telepathyClient.js:976
#| msgctxt "event list time"
#| msgid "%H%M"
msgid "%B %d, %H%M" msgid "%B %d, %H%M"
msgstr "%d. %B, %H%M" msgstr "%d. %B, %H%M"
@@ -774,8 +752,6 @@ msgstr "%d. %B %Y., %H:%M"
#. Translators: Time in 24h format */ #. Translators: Time in 24h format */
#: ../js/ui/components/telepathyClient.js:991 #: ../js/ui/components/telepathyClient.js:991
#| msgctxt "event list time"
#| msgid "%l%M%p"
msgid "%l%M %p" msgid "%l%M %p"
msgstr "%l%M%p" msgstr "%l%M%p"
@@ -788,8 +764,6 @@ msgstr "Јуче, %l:%M %p"
#. Translators: this is the week day name followed by a time #. Translators: this is the week day name followed by a time
#. string in 12h format. i.e. "Monday, 2:30 pm" */ #. string in 12h format. i.e. "Monday, 2:30 pm" */
#: ../js/ui/components/telepathyClient.js:1005 #: ../js/ui/components/telepathyClient.js:1005
#| msgctxt "event list time"
#| msgid "%l%M%p"
msgid "%A, %l%M %p" msgid "%A, %l%M %p"
msgstr "%A, %l%M %p" msgstr "%A, %l%M %p"
@@ -797,8 +771,6 @@ msgstr "%A, %l%M %p"
#. followed by a time string in 12h format. #. followed by a time string in 12h format.
#. i.e. "May 25, 2:30 pm" */ #. i.e. "May 25, 2:30 pm" */
#: ../js/ui/components/telepathyClient.js:1012 #: ../js/ui/components/telepathyClient.js:1012
#| msgctxt "event list time"
#| msgid "%l%M%p"
msgid "%B %d, %l%M %p" msgid "%B %d, %l%M %p"
msgstr "%d. %B, %l%M %p" msgstr "%d. %B, %l%M %p"
@@ -834,13 +806,13 @@ msgstr "%s вас позива да се придружите „%s“"
#: ../js/ui/components/telepathyClient.js:1164 #: ../js/ui/components/telepathyClient.js:1164
#: ../js/ui/components/telepathyClient.js:1199 #: ../js/ui/components/telepathyClient.js:1199
#: ../js/ui/components/telepathyClient.js:1233 #: ../js/ui/components/telepathyClient.js:1233
#: ../js/ui/components/telepathyClient.js:1290 #: ../js/ui/components/telepathyClient.js:1291
msgid "Decline" msgid "Decline"
msgstr "Одбиј" msgstr "Одбиј"
#: ../js/ui/components/telepathyClient.js:1170 #: ../js/ui/components/telepathyClient.js:1170
#: ../js/ui/components/telepathyClient.js:1239 #: ../js/ui/components/telepathyClient.js:1239
#: ../js/ui/components/telepathyClient.js:1295 #: ../js/ui/components/telepathyClient.js:1296
msgid "Accept" msgid "Accept"
msgstr "Прихвати" msgstr "Прихвати"
@@ -877,98 +849,98 @@ msgstr "%s вам шаље „%s“"
msgid "%s would like permission to see when you are online" msgid "%s would like permission to see when you are online"
msgstr "%s тражи одобрење да види када сте на вези" msgstr "%s тражи одобрење да види када сте на вези"
#: ../js/ui/components/telepathyClient.js:1341 #: ../js/ui/components/telepathyClient.js:1342
msgid "Network error" msgid "Network error"
msgstr "Грешка мреже" msgstr "Грешка мреже"
#: ../js/ui/components/telepathyClient.js:1343 #: ../js/ui/components/telepathyClient.js:1344
msgid "Authentication failed" msgid "Authentication failed"
msgstr "Потврђивање идентитета није успело" msgstr "Потврђивање идентитета није успело"
#: ../js/ui/components/telepathyClient.js:1345 #: ../js/ui/components/telepathyClient.js:1346
msgid "Encryption error" msgid "Encryption error"
msgstr "Грешка шифровања" msgstr "Грешка шифровања"
#: ../js/ui/components/telepathyClient.js:1347 #: ../js/ui/components/telepathyClient.js:1348
msgid "Certificate not provided" msgid "Certificate not provided"
msgstr "Уверење није прослеђено" msgstr "Уверење није прослеђено"
#: ../js/ui/components/telepathyClient.js:1349 #: ../js/ui/components/telepathyClient.js:1350
msgid "Certificate untrusted" msgid "Certificate untrusted"
msgstr "Уверење није поверљиво" msgstr "Уверење није поверљиво"
#: ../js/ui/components/telepathyClient.js:1351 #: ../js/ui/components/telepathyClient.js:1352
msgid "Certificate expired" msgid "Certificate expired"
msgstr "Уверење је истекло" msgstr "Уверење је истекло"
#: ../js/ui/components/telepathyClient.js:1353 #: ../js/ui/components/telepathyClient.js:1354
msgid "Certificate not activated" msgid "Certificate not activated"
msgstr "Уверење није активирано" msgstr "Уверење није активирано"
#: ../js/ui/components/telepathyClient.js:1355 #: ../js/ui/components/telepathyClient.js:1356
msgid "Certificate hostname mismatch" msgid "Certificate hostname mismatch"
msgstr "Назив домаћина уверења се не поклапа" msgstr "Назив домаћина уверења се не поклапа"
#: ../js/ui/components/telepathyClient.js:1357 #: ../js/ui/components/telepathyClient.js:1358
msgid "Certificate fingerprint mismatch" msgid "Certificate fingerprint mismatch"
msgstr "Отисак уверења се не поклапа" msgstr "Отисак уверења се не поклапа"
#: ../js/ui/components/telepathyClient.js:1359 #: ../js/ui/components/telepathyClient.js:1360
msgid "Certificate self-signed" msgid "Certificate self-signed"
msgstr "Уверење је самопотписано" msgstr "Уверење је самопотписано"
#: ../js/ui/components/telepathyClient.js:1361 #: ../js/ui/components/telepathyClient.js:1362
msgid "Status is set to offline" msgid "Status is set to offline"
msgstr "Стање је постављено на „неповезан“" msgstr "Стање је постављено на „неповезан“"
#: ../js/ui/components/telepathyClient.js:1363 #: ../js/ui/components/telepathyClient.js:1364
msgid "Encryption is not available" msgid "Encryption is not available"
msgstr "Шифровање није доступно" msgstr "Шифровање није доступно"
#: ../js/ui/components/telepathyClient.js:1365 #: ../js/ui/components/telepathyClient.js:1366
msgid "Certificate is invalid" msgid "Certificate is invalid"
msgstr "Уверење није исправно" msgstr "Уверење није исправно"
#: ../js/ui/components/telepathyClient.js:1367 #: ../js/ui/components/telepathyClient.js:1368
msgid "Connection has been refused" msgid "Connection has been refused"
msgstr "Веза је одбијена" msgstr "Веза је одбијена"
#: ../js/ui/components/telepathyClient.js:1369 #: ../js/ui/components/telepathyClient.js:1370
msgid "Connection can't be established" msgid "Connection can't be established"
msgstr "Веза не може бити успостављена" msgstr "Веза не може бити успостављена"
#: ../js/ui/components/telepathyClient.js:1371 #: ../js/ui/components/telepathyClient.js:1372
msgid "Connection has been lost" msgid "Connection has been lost"
msgstr "Веза је изгубљена" msgstr "Веза је изгубљена"
#: ../js/ui/components/telepathyClient.js:1373 #: ../js/ui/components/telepathyClient.js:1374
msgid "This account is already connected to the server" msgid "This account is already connected to the server"
msgstr "Овај налог је већ повезан са сервером" msgstr "Овај налог је већ повезан са сервером"
#: ../js/ui/components/telepathyClient.js:1375 #: ../js/ui/components/telepathyClient.js:1376
msgid "" msgid ""
"Connection has been replaced by a new connection using the same resource" "Connection has been replaced by a new connection using the same resource"
msgstr "Веза је замењена новом везом користећи исти ресурс" msgstr "Веза је замењена новом везом користећи исти ресурс"
#: ../js/ui/components/telepathyClient.js:1377 #: ../js/ui/components/telepathyClient.js:1378
msgid "The account already exists on the server" msgid "The account already exists on the server"
msgstr "Овај налог већ постоји на серверу" msgstr "Овај налог већ постоји на серверу"
#: ../js/ui/components/telepathyClient.js:1379 #: ../js/ui/components/telepathyClient.js:1380
msgid "Server is currently too busy to handle the connection" msgid "Server is currently too busy to handle the connection"
msgstr "Сервер је тренутно превише заузет да би руковао везом" msgstr "Сервер је тренутно превише заузет да би руковао везом"
#: ../js/ui/components/telepathyClient.js:1381 #: ../js/ui/components/telepathyClient.js:1382
msgid "Certificate has been revoked" msgid "Certificate has been revoked"
msgstr "Уверење је опозвано" msgstr "Уверење је опозвано"
#: ../js/ui/components/telepathyClient.js:1383 #: ../js/ui/components/telepathyClient.js:1384
msgid "" msgid ""
"Certificate uses an insecure cipher algorithm or is cryptographically weak" "Certificate uses an insecure cipher algorithm or is cryptographically weak"
msgstr "" msgstr ""
"Уверење користи несигуран алгоритам шифровања или је криптографски слабо" "Уверење користи несигуран алгоритам шифровања или је криптографски слабо"
#: ../js/ui/components/telepathyClient.js:1385 #: ../js/ui/components/telepathyClient.js:1386
msgid "" msgid ""
"The length of the server certificate, or the depth of the server certificate " "The length of the server certificate, or the depth of the server certificate "
"chain, exceed the limits imposed by the cryptography library" "chain, exceed the limits imposed by the cryptography library"
@@ -976,22 +948,22 @@ msgstr ""
"Дужина уверења сервера, или дубина ланца уверења сервера, премашује границе " "Дужина уверења сервера, или дубина ланца уверења сервера, премашује границе "
"које је задала библиотека шифровања" "које је задала библиотека шифровања"
#: ../js/ui/components/telepathyClient.js:1387 #: ../js/ui/components/telepathyClient.js:1388
msgid "Internal error" msgid "Internal error"
msgstr "Унутрашња грешка" msgstr "Унутрашња грешка"
#. translators: argument is the account name, like #. translators: argument is the account name, like
#. * name@jabber.org for example. */ #. * name@jabber.org for example. */
#: ../js/ui/components/telepathyClient.js:1397 #: ../js/ui/components/telepathyClient.js:1398
#, javascript-format #, javascript-format
msgid "Unable to connect to %s" msgid "Unable to connect to %s"
msgstr "Не могу да се повежем са „%s“" msgstr "Не могу да се повежем са „%s“"
#: ../js/ui/components/telepathyClient.js:1402 #: ../js/ui/components/telepathyClient.js:1403
msgid "View account" msgid "View account"
msgstr "Види налог" msgstr "Види налог"
#: ../js/ui/components/telepathyClient.js:1439 #: ../js/ui/components/telepathyClient.js:1440
msgid "Unknown reason" msgid "Unknown reason"
msgstr "Непознат разлог" msgstr "Непознат разлог"
@@ -1128,8 +1100,6 @@ msgstr[3] ""
"Систем ће се сам поново покренути и инсталирати ажурирања за %d секунду." "Систем ће се сам поново покренути и инсталирати ажурирања за %d секунду."
#: ../js/ui/endSessionDialog.js:129 #: ../js/ui/endSessionDialog.js:129
#| msgctxt "button"
#| msgid "Restart & Install"
msgctxt "button" msgctxt "button"
msgid "Restart &amp; Install" msgid "Restart &amp; Install"
msgstr "Поново покрени и инсталирај" msgstr "Поново покрени и инсталирај"
@@ -1147,8 +1117,7 @@ msgstr "Искључи након инсталирања освежења"
#: ../js/ui/endSessionDialog.js:315 #: ../js/ui/endSessionDialog.js:315
msgid "Running on battery power: please plug in before installing updates." msgid "Running on battery power: please plug in before installing updates."
msgstr "" msgstr ""
"Напајате се са батерије: прикључите мрежно напајање пре инсталирања " "Напајате се са батерије: прикључите мрежно напајање пре инсталирања освежења."
"освежења."
#: ../js/ui/endSessionDialog.js:332 #: ../js/ui/endSessionDialog.js:332
msgid "Some applications are busy or have unsaved work." msgid "Some applications are busy or have unsaved work."
@@ -1176,7 +1145,6 @@ msgstr "Инсталирај"
#: ../js/ui/extensionDownloader.js:204 #: ../js/ui/extensionDownloader.js:204
#, javascript-format #, javascript-format
#| msgid "Download and install '%s' from extensions.gnome.org?"
msgid "Download and install “%s” from extensions.gnome.org?" msgid "Download and install “%s” from extensions.gnome.org?"
msgstr "Да преузмем и да инсталирам „%s“ са „extensions.gnome.org“-а?" msgstr "Да преузмем и да инсталирам „%s“ са „extensions.gnome.org“-а?"
@@ -1202,7 +1170,8 @@ msgstr "Сакриј грешке"
msgid "Show Errors" msgid "Show Errors"
msgstr "Прикажите грешке" msgstr "Прикажите грешке"
#: ../js/ui/lookingGlass.js:716 #: ../js/ui/lookingGlass.js:716 ../js/ui/status/location.js:59
#: ../js/ui/status/location.js:167
msgid "Enabled" msgid "Enabled"
msgstr "Укључено" msgstr "Укључено"
@@ -1210,8 +1179,8 @@ msgstr "Укључено"
#. because it's disabled by rfkill (airplane mode) */ #. because it's disabled by rfkill (airplane mode) */
#. translators: #. translators:
#. * The device has been disabled #. * The device has been disabled
#: ../js/ui/lookingGlass.js:719 ../js/ui/status/network.js:555 #: ../js/ui/lookingGlass.js:719 ../js/ui/status/location.js:164
#: ../src/gvc/gvc-mixer-control.c:1830 #: ../js/ui/status/network.js:555 ../src/gvc/gvc-mixer-control.c:1830
msgid "Disabled" msgid "Disabled"
msgstr "Искључено" msgstr "Искључено"
@@ -1362,7 +1331,7 @@ msgstr "Неки програм је блокирао закључавање"
msgid "Searching…" msgid "Searching…"
msgstr "Тражим…" msgstr "Тражим…"
#: ../js/ui/search.js:646 #: ../js/ui/search.js:649
msgid "No results." msgid "No results."
msgstr "Нема одговарајућих резултата." msgstr "Нема одговарајућих резултата."
@@ -1438,8 +1407,7 @@ msgstr "Велики текст"
msgid "Bluetooth" msgid "Bluetooth"
msgstr "Блутут" msgstr "Блутут"
#: ../js/ui/status/bluetooth.js:51 ../js/ui/status/location.js:60 #: ../js/ui/status/bluetooth.js:51 ../js/ui/status/network.js:151
#: ../js/ui/status/location.js:167 ../js/ui/status/network.js:151
#: ../js/ui/status/network.js:323 ../js/ui/status/network.js:1234 #: ../js/ui/status/network.js:323 ../js/ui/status/network.js:1234
#: ../js/ui/status/network.js:1345 ../js/ui/status/rfkill.js:85 #: ../js/ui/status/network.js:1345 ../js/ui/status/rfkill.js:85
#: ../js/ui/status/rfkill.js:105 #: ../js/ui/status/rfkill.js:105
@@ -1472,30 +1440,33 @@ msgid "Show Keyboard Layout"
msgstr "Покажи распоред тастатуре" msgstr "Покажи распоред тастатуре"
#: ../js/ui/status/location.js:53 #: ../js/ui/status/location.js:53
#| msgid "Notifications"
msgid "Location" msgid "Location"
msgstr "Место" msgstr "Место"
#: ../js/ui/status/location.js:59 ../js/ui/status/location.js:166 #: ../js/ui/status/location.js:60 ../js/ui/status/location.js:168
#: ../js/ui/status/rfkill.js:84 #| msgid "Disabled"
msgid "On" msgid "Disable"
msgstr "Укљ." msgstr "Искључи"
#: ../js/ui/status/location.js:163 ../js/ui/status/network.js:420 #: ../js/ui/status/location.js:165
#: ../js/ui/status/network.js:1260 ../js/ui/status/network.js:1464 #| msgid "Enabled"
msgid "Off" msgid "Enable"
msgstr "Искљ."
#: ../js/ui/status/location.js:164 ../js/ui/status/network.js:1234
msgid "Turn On"
msgstr "Укључи" msgstr "Укључи"
#: ../js/ui/status/location.js:167
msgid "In Use"
msgstr "У употреби"
#: ../js/ui/status/network.js:74 #: ../js/ui/status/network.js:74
msgid "<unknown>" msgid "<unknown>"
msgstr "<непознато>" msgstr "<непознато>"
#: ../js/ui/status/network.js:420 ../js/ui/status/network.js:1260
#: ../js/ui/status/network.js:1464
msgid "Off"
msgstr "Искљ."
#: ../js/ui/status/network.js:422 #: ../js/ui/status/network.js:422
#| msgid "Connect"
msgid "Connected" msgid "Connected"
msgstr "Повезан" msgstr "Повезан"
@@ -1535,7 +1506,6 @@ msgid "connection failed"
msgstr "повезивање није успело" msgstr "повезивање није успело"
#: ../js/ui/status/network.js:467 #: ../js/ui/status/network.js:467
#| msgid "Wi-Fi Settings"
msgid "Wired Settings" msgid "Wired Settings"
msgstr "Подешавања жичане везе" msgstr "Подешавања жичане везе"
@@ -1552,7 +1522,6 @@ msgid "Use as Internet connection"
msgstr "Користи као Интернет везу" msgstr "Користи као Интернет везу"
#: ../js/ui/status/network.js:776 #: ../js/ui/status/network.js:776
#| msgid "Airplane Mode"
msgid "Airplane Mode is On" msgid "Airplane Mode is On"
msgstr "Режим у авиону је укључен" msgstr "Режим у авиону је укључен"
@@ -1561,12 +1530,10 @@ msgid "Wi-Fi is disabled when airplane mode is on."
msgstr "Бежична веза је искључена када је укључен режим у авиону." msgstr "Бежична веза је искључена када је укључен режим у авиону."
#: ../js/ui/status/network.js:778 #: ../js/ui/status/network.js:778
#| msgid "Airplane Mode"
msgid "Turn Off Airplane Mode" msgid "Turn Off Airplane Mode"
msgstr "Искључи режим у авиону" msgstr "Искључи режим у авиону"
#: ../js/ui/status/network.js:787 #: ../js/ui/status/network.js:787
#| msgid "Wi-Fi Settings"
msgid "Wi-Fi is Off" msgid "Wi-Fi is Off"
msgstr "Бежична веза је искључена" msgstr "Бежична веза је искључена"
@@ -1575,7 +1542,6 @@ msgid "Wi-Fi needs to be turned on in order to connect to a network."
msgstr "Бежична веза треба бити укључена да бисте се повезали на мрежу." msgstr "Бежична веза треба бити укључена да бисте се повезали на мрежу."
#: ../js/ui/status/network.js:789 #: ../js/ui/status/network.js:789
#| msgid "Turn On"
msgid "Turn On Wi-Fi" msgid "Turn On Wi-Fi"
msgstr "Укључи бежичну везу" msgstr "Укључи бежичну везу"
@@ -1603,12 +1569,15 @@ msgstr "Изабери мрежу"
msgid "Wi-Fi Settings" msgid "Wi-Fi Settings"
msgstr "Подешавања бежичне везе" msgstr "Подешавања бежичне везе"
#: ../js/ui/status/network.js:1234
msgid "Turn On"
msgstr "Укључи"
#: ../js/ui/status/network.js:1251 #: ../js/ui/status/network.js:1251
msgid "Hotspot Active" msgid "Hotspot Active"
msgstr "Врућа тачка је радна" msgstr "Врућа тачка је радна"
#: ../js/ui/status/network.js:1254 #: ../js/ui/status/network.js:1254
#| msgid "Connect"
msgid "Connecting" msgid "Connecting"
msgstr "Повезујем се" msgstr "Повезујем се"
@@ -1617,7 +1586,6 @@ msgid "Network Settings"
msgstr "Подешавања мреже" msgstr "Подешавања мреже"
#: ../js/ui/status/network.js:1435 #: ../js/ui/status/network.js:1435
#| msgid "Settings"
msgid "VPN Settings" msgid "VPN Settings"
msgstr "ВПН подешавања" msgstr "ВПН подешавања"
@@ -1671,6 +1639,10 @@ msgstr "Батерија"
msgid "Airplane Mode" msgid "Airplane Mode"
msgstr "Режим у авиону" msgstr "Режим у авиону"
#: ../js/ui/status/rfkill.js:84
msgid "On"
msgstr "Укљ."
#: ../js/ui/status/system.js:314 #: ../js/ui/status/system.js:314
msgid "Switch User" msgid "Switch User"
msgstr "Промени корисника" msgstr "Промени корисника"
@@ -1721,7 +1693,6 @@ msgstr "Тражи"
#: ../js/ui/windowAttentionHandler.js:19 #: ../js/ui/windowAttentionHandler.js:19
#, javascript-format #, javascript-format
#| msgid "'%s' is ready"
msgid "“%s” is ready" msgid "“%s” is ready"
msgstr "„%s“ је спреман" msgstr "„%s“ је спреман"
@@ -1797,7 +1768,6 @@ msgstr "Исписује могуће режиме"
#: ../src/shell-app.c:666 #: ../src/shell-app.c:666
#, c-format #, c-format
#| msgid "Failed to launch '%s'"
msgid "Failed to launch “%s”" msgid "Failed to launch “%s”"
msgstr "Нисам успео да покренем „%s“" msgstr "Нисам успео да покренем „%s“"

View File

@@ -9,8 +9,8 @@ msgstr ""
"Project-Id-Version: gnome-shell master\n" "Project-Id-Version: gnome-shell master\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
"shell&keywords=I18N+L10N&component=general\n" "shell&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2014-03-22 20:38+0000\n" "POT-Creation-Date: 2014-04-14 15:36+0000\n"
"PO-Revision-Date: 2014-03-23 11:08+0200\n" "PO-Revision-Date: 2014-04-14 19:31+0200\n"
"Last-Translator: Miroslav Nikolić <miroslavnikolic@rocketmail.com>\n" "Last-Translator: Miroslav Nikolić <miroslavnikolic@rocketmail.com>\n"
"Language-Team: Serbian <gnom@prevod.org>\n" "Language-Team: Serbian <gnom@prevod.org>\n"
"Language: sr\n" "Language: sr\n"
@@ -80,16 +80,10 @@ msgstr ""
"korišćenjem „Alt-F2“ prozorčeta." "korišćenjem „Alt-F2“ prozorčeta."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:3 #: ../data/org.gnome.shell.gschema.xml.in.in.h:3
#| msgid "Uuids of extensions to enable"
msgid "UUIDs of extensions to enable" msgid "UUIDs of extensions to enable"
msgstr "JUIB-ovi proširenja za uključivanje" msgstr "JUIB-ovi proširenja za uključivanje"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:4 #: ../data/org.gnome.shell.gschema.xml.in.in.h:4
#| msgid ""
#| "GNOME Shell extensions have a uuid property; this key lists extensions "
#| "which should be loaded. Any extension that wants to be loaded needs to be "
#| "in this list. You can also manipulate this list with the EnableExtension "
#| "and DisableExtension DBus methods on org.gnome.Shell."
msgid "" msgid ""
"GNOME Shell extensions have a UUID property; this key lists extensions which " "GNOME Shell extensions have a UUID property; this key lists extensions which "
"should be loaded. Any extension that wants to be loaded needs to be in this " "should be loaded. Any extension that wants to be loaded needs to be in this "
@@ -98,8 +92,8 @@ msgid ""
msgstr "" msgstr ""
"Proširenja Gnomove školjke imaju JUIB vrednost; ovaj ključ ispisuje proširenja " "Proširenja Gnomove školjke imaju JUIB vrednost; ovaj ključ ispisuje proširenja "
"koja treba učitavati. Svako proširenje koje želi biti učitano mora biti na " "koja treba učitavati. Svako proširenje koje želi biti učitano mora biti na "
"spisku. Takođe možete da upravljate ovim spiskom koristeći načine " "spisku. Takođe možete da upravljate ovim spiskom koristeći načine D-"
"D-magistrale „Uključi proširenje“ i „Isključi proširenje“ na „org.gnome.Shell“." "magistrale „Uključi proširenje“ i „Isključi proširenje“ na „org.gnome.Shell“."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:5 #: ../data/org.gnome.shell.gschema.xml.in.in.h:5
msgid "Disables the validation of extension version compatibility" msgid "Disables the validation of extension version compatibility"
@@ -136,14 +130,10 @@ msgid "History for the looking glass dialog"
msgstr "Istorijat prozorčeta ogledala" msgstr "Istorijat prozorčeta ogledala"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:11 #: ../data/org.gnome.shell.gschema.xml.in.in.h:11
#| msgid "Always show the 'Log out' menuitem in the user menu."
msgid "Always show the 'Log out' menu item in the user menu." msgid "Always show the 'Log out' menu item in the user menu."
msgstr "Uvek prikazuje stavku izbornika „Odjavi me“ u izborniku korisnika." msgstr "Uvek prikazuje stavku izbornika „Odjavi me“ u izborniku korisnika."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:12 #: ../data/org.gnome.shell.gschema.xml.in.in.h:12
#| msgid ""
#| "This key overrides the automatic hiding of the 'Log out' menuitem in "
#| "single-user, single-session situations."
msgid "" msgid ""
"This key overrides the automatic hiding of the 'Log out' menu item in single-" "This key overrides the automatic hiding of the 'Log out' menu item in single-"
"user, single-session situations." "user, single-session situations."
@@ -241,12 +231,12 @@ msgid ""
"using network resources (albeit with street-level accuracy at best)." "using network resources (albeit with street-level accuracy at best)."
msgstr "" msgstr ""
"Podešava najveći nivo tačnosti mesta koju programi mogu da koriste. Ispravne " "Podešava najveći nivo tačnosti mesta koju programi mogu da koriste. Ispravne "
"mogućnosti su „off“ (isključuje praćenje mesta), „country“ (država), „city“ " "mogućnosti su „off“ (isključuje praćenje mesta), „country“ (država), "
"(grad), „neighborhood“ (komšiluk), „street“ (ulica), i „exact“ (tačno " "„city“ (grad), „neighborhood“ (komšiluk), „street“ (ulica), i „exact“ (tačno "
"obično zahteva GPS prijemnik). Imajte na umu da će ovo odlučiti šta će „Geo " "obično zahteva GPS prijemnik). Imajte na umu da će ovo odlučiti šta će "
"indicija“ dozvoliti programima samo da vide i da mogu pronaći korisnikovo " "„Geo indicija“ dozvoliti programima samo da vide i da mogu pronaći "
"mesto na svoju ruku koristeći izvorišta mreže (mada sa tačnošću na nivou " "korisnikovo mesto na svoju ruku koristeći izvorišta mreže (mada sa tačnošću "
"ulice u najboljem slučaju)." "na nivou ulice u najboljem slučaju)."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:31 #: ../data/org.gnome.shell.gschema.xml.in.in.h:31
msgid "The application icon mode." msgid "The application icon mode."
@@ -335,25 +325,25 @@ msgctxt "button"
msgid "Sign In" msgid "Sign In"
msgstr "Prijavi me" msgstr "Prijavi me"
#: ../js/gdm/loginDialog.js:270 #: ../js/gdm/loginDialog.js:271
msgid "Choose Session" msgid "Choose Session"
msgstr "Izaberi sesiju" msgstr "Izaberi sesiju"
#: ../js/gdm/loginDialog.js:430 #: ../js/gdm/loginDialog.js:431
msgid "Not listed?" msgid "Not listed?"
msgstr "Nije na spisku?" msgstr "Nije na spisku?"
#: ../js/gdm/loginDialog.js:608 #: ../js/gdm/loginDialog.js:614
#, javascript-format #, javascript-format
msgid "(e.g., user or %s)" msgid "(e.g., user or %s)"
msgstr "(npr., korisnik ili %s)" msgstr "(npr., korisnik ili %s)"
#: ../js/gdm/loginDialog.js:613 ../js/ui/components/networkAgent.js:262 #: ../js/gdm/loginDialog.js:619 ../js/ui/components/networkAgent.js:262
#: ../js/ui/components/networkAgent.js:280 #: ../js/ui/components/networkAgent.js:280
msgid "Username: " msgid "Username: "
msgstr "Korisničko ime: " msgstr "Korisničko ime: "
#: ../js/gdm/loginDialog.js:884 #: ../js/gdm/loginDialog.js:920
msgid "Login Window" msgid "Login Window"
msgstr "Prozor za prijavljivanje" msgstr "Prozor za prijavljivanje"
@@ -375,31 +365,30 @@ msgstr "Ne mogu da obradim naredbu:"
#: ../js/misc/util.js:156 #: ../js/misc/util.js:156
#, javascript-format #, javascript-format
#| msgid "Execution of '%s' failed:"
msgid "Execution of “%s” failed:" msgid "Execution of “%s” failed:"
msgstr "Nije uspelo izvršavanje „%s“:" msgstr "Nije uspelo izvršavanje „%s“:"
#: ../js/ui/appDisplay.js:629 #: ../js/ui/appDisplay.js:636
msgid "Frequently used applications will appear here" msgid "Frequently used applications will appear here"
msgstr "Često korišćeni programi će se pojaviti ovde" msgstr "Često korišćeni programi će se pojaviti ovde"
#: ../js/ui/appDisplay.js:740 #: ../js/ui/appDisplay.js:747
msgid "Frequent" msgid "Frequent"
msgstr "Često" msgstr "Često"
#: ../js/ui/appDisplay.js:747 #: ../js/ui/appDisplay.js:754
msgid "All" msgid "All"
msgstr "Sve" msgstr "Sve"
#: ../js/ui/appDisplay.js:1555 #: ../js/ui/appDisplay.js:1566
msgid "New Window" msgid "New Window"
msgstr "Novi prozor" msgstr "Novi prozor"
#: ../js/ui/appDisplay.js:1577 ../js/ui/dash.js:285 #: ../js/ui/appDisplay.js:1588 ../js/ui/dash.js:285
msgid "Remove from Favorites" msgid "Remove from Favorites"
msgstr "Ukloni iz omiljenih" msgstr "Ukloni iz omiljenih"
#: ../js/ui/appDisplay.js:1583 #: ../js/ui/appDisplay.js:1594
msgid "Add to Favorites" msgid "Add to Favorites"
msgstr "Dodaj u omiljene" msgstr "Dodaj u omiljene"
@@ -647,9 +636,6 @@ msgstr "Bežična mreža zahteva potvrđivanje identiteta"
#: ../js/ui/components/networkAgent.js:312 #: ../js/ui/components/networkAgent.js:312
#, javascript-format #, javascript-format
#| msgid ""
#| "Passwords or encryption keys are required to access the wireless network "
#| "'%s'."
msgid "" msgid ""
"Passwords or encryption keys are required to access the wireless network " "Passwords or encryption keys are required to access the wireless network "
"“%s”." "“%s”."
@@ -686,7 +672,6 @@ msgstr "Lozinka mobilne širokopojasne mreže"
#: ../js/ui/components/networkAgent.js:339 #: ../js/ui/components/networkAgent.js:339
#, javascript-format #, javascript-format
#| msgid "A password is required to connect to '%s'."
msgid "A password is required to connect to “%s”." msgid "A password is required to connect to “%s”."
msgstr "Potrebna je lozinka za povezivanje na „%s“." msgstr "Potrebna je lozinka za povezivanje na „%s“."
@@ -736,23 +721,18 @@ msgstr "Utišaj"
#. Translators: Time in 24h format */ #. Translators: Time in 24h format */
#: ../js/ui/components/telepathyClient.js:955 #: ../js/ui/components/telepathyClient.js:955
#| msgctxt "event list time"
#| msgid "%H%M"
msgid "%H%M" msgid "%H%M"
msgstr "%H%M" msgstr "%H%M"
#. Translators: this is the word "Yesterday" followed by a #. Translators: this is the word "Yesterday" followed by a
#. time string in 24h format. i.e. "Yesterday, 14:30" */ #. time string in 24h format. i.e. "Yesterday, 14:30" */
#: ../js/ui/components/telepathyClient.js:962 #: ../js/ui/components/telepathyClient.js:962
#| msgid "<b>Yesterday</b>, <b>%H:%M</b>"
msgid "Yesterday, %H%M" msgid "Yesterday, %H%M"
msgstr "Juče, %H:%M" msgstr "Juče, %H:%M"
#. Translators: this is the week day name followed by a time #. Translators: this is the week day name followed by a time
#. string in 24h format. i.e. "Monday, 14:30" */ #. string in 24h format. i.e. "Monday, 14:30" */
#: ../js/ui/components/telepathyClient.js:969 #: ../js/ui/components/telepathyClient.js:969
#| msgctxt "event list time"
#| msgid "%H%M"
msgid "%A, %H%M" msgid "%A, %H%M"
msgstr "%A, %H%M" msgstr "%A, %H%M"
@@ -760,8 +740,6 @@ msgstr "%A, %H%M"
#. followed by a time string in 24h format. #. followed by a time string in 24h format.
#. i.e. "May 25, 14:30" */ #. i.e. "May 25, 14:30" */
#: ../js/ui/components/telepathyClient.js:976 #: ../js/ui/components/telepathyClient.js:976
#| msgctxt "event list time"
#| msgid "%H%M"
msgid "%B %d, %H%M" msgid "%B %d, %H%M"
msgstr "%d. %B, %H%M" msgstr "%d. %B, %H%M"
@@ -774,8 +752,6 @@ msgstr "%d. %B %Y., %H:%M"
#. Translators: Time in 24h format */ #. Translators: Time in 24h format */
#: ../js/ui/components/telepathyClient.js:991 #: ../js/ui/components/telepathyClient.js:991
#| msgctxt "event list time"
#| msgid "%l%M%p"
msgid "%l%M %p" msgid "%l%M %p"
msgstr "%l%M%p" msgstr "%l%M%p"
@@ -788,8 +764,6 @@ msgstr "Juče, %l:%M %p"
#. Translators: this is the week day name followed by a time #. Translators: this is the week day name followed by a time
#. string in 12h format. i.e. "Monday, 2:30 pm" */ #. string in 12h format. i.e. "Monday, 2:30 pm" */
#: ../js/ui/components/telepathyClient.js:1005 #: ../js/ui/components/telepathyClient.js:1005
#| msgctxt "event list time"
#| msgid "%l%M%p"
msgid "%A, %l%M %p" msgid "%A, %l%M %p"
msgstr "%A, %l%M %p" msgstr "%A, %l%M %p"
@@ -797,8 +771,6 @@ msgstr "%A, %l%M %p"
#. followed by a time string in 12h format. #. followed by a time string in 12h format.
#. i.e. "May 25, 2:30 pm" */ #. i.e. "May 25, 2:30 pm" */
#: ../js/ui/components/telepathyClient.js:1012 #: ../js/ui/components/telepathyClient.js:1012
#| msgctxt "event list time"
#| msgid "%l%M%p"
msgid "%B %d, %l%M %p" msgid "%B %d, %l%M %p"
msgstr "%d. %B, %l%M %p" msgstr "%d. %B, %l%M %p"
@@ -834,13 +806,13 @@ msgstr "%s vas poziva da se pridružite „%s“"
#: ../js/ui/components/telepathyClient.js:1164 #: ../js/ui/components/telepathyClient.js:1164
#: ../js/ui/components/telepathyClient.js:1199 #: ../js/ui/components/telepathyClient.js:1199
#: ../js/ui/components/telepathyClient.js:1233 #: ../js/ui/components/telepathyClient.js:1233
#: ../js/ui/components/telepathyClient.js:1290 #: ../js/ui/components/telepathyClient.js:1291
msgid "Decline" msgid "Decline"
msgstr "Odbij" msgstr "Odbij"
#: ../js/ui/components/telepathyClient.js:1170 #: ../js/ui/components/telepathyClient.js:1170
#: ../js/ui/components/telepathyClient.js:1239 #: ../js/ui/components/telepathyClient.js:1239
#: ../js/ui/components/telepathyClient.js:1295 #: ../js/ui/components/telepathyClient.js:1296
msgid "Accept" msgid "Accept"
msgstr "Prihvati" msgstr "Prihvati"
@@ -877,98 +849,98 @@ msgstr "%s vam šalje „%s“"
msgid "%s would like permission to see when you are online" msgid "%s would like permission to see when you are online"
msgstr "%s traži odobrenje da vidi kada ste na vezi" msgstr "%s traži odobrenje da vidi kada ste na vezi"
#: ../js/ui/components/telepathyClient.js:1341 #: ../js/ui/components/telepathyClient.js:1342
msgid "Network error" msgid "Network error"
msgstr "Greška mreže" msgstr "Greška mreže"
#: ../js/ui/components/telepathyClient.js:1343 #: ../js/ui/components/telepathyClient.js:1344
msgid "Authentication failed" msgid "Authentication failed"
msgstr "Potvrđivanje identiteta nije uspelo" msgstr "Potvrđivanje identiteta nije uspelo"
#: ../js/ui/components/telepathyClient.js:1345 #: ../js/ui/components/telepathyClient.js:1346
msgid "Encryption error" msgid "Encryption error"
msgstr "Greška šifrovanja" msgstr "Greška šifrovanja"
#: ../js/ui/components/telepathyClient.js:1347 #: ../js/ui/components/telepathyClient.js:1348
msgid "Certificate not provided" msgid "Certificate not provided"
msgstr "Uverenje nije prosleđeno" msgstr "Uverenje nije prosleđeno"
#: ../js/ui/components/telepathyClient.js:1349 #: ../js/ui/components/telepathyClient.js:1350
msgid "Certificate untrusted" msgid "Certificate untrusted"
msgstr "Uverenje nije poverljivo" msgstr "Uverenje nije poverljivo"
#: ../js/ui/components/telepathyClient.js:1351 #: ../js/ui/components/telepathyClient.js:1352
msgid "Certificate expired" msgid "Certificate expired"
msgstr "Uverenje je isteklo" msgstr "Uverenje je isteklo"
#: ../js/ui/components/telepathyClient.js:1353 #: ../js/ui/components/telepathyClient.js:1354
msgid "Certificate not activated" msgid "Certificate not activated"
msgstr "Uverenje nije aktivirano" msgstr "Uverenje nije aktivirano"
#: ../js/ui/components/telepathyClient.js:1355 #: ../js/ui/components/telepathyClient.js:1356
msgid "Certificate hostname mismatch" msgid "Certificate hostname mismatch"
msgstr "Naziv domaćina uverenja se ne poklapa" msgstr "Naziv domaćina uverenja se ne poklapa"
#: ../js/ui/components/telepathyClient.js:1357 #: ../js/ui/components/telepathyClient.js:1358
msgid "Certificate fingerprint mismatch" msgid "Certificate fingerprint mismatch"
msgstr "Otisak uverenja se ne poklapa" msgstr "Otisak uverenja se ne poklapa"
#: ../js/ui/components/telepathyClient.js:1359 #: ../js/ui/components/telepathyClient.js:1360
msgid "Certificate self-signed" msgid "Certificate self-signed"
msgstr "Uverenje je samopotpisano" msgstr "Uverenje je samopotpisano"
#: ../js/ui/components/telepathyClient.js:1361 #: ../js/ui/components/telepathyClient.js:1362
msgid "Status is set to offline" msgid "Status is set to offline"
msgstr "Stanje je postavljeno na „nepovezan“" msgstr "Stanje je postavljeno na „nepovezan“"
#: ../js/ui/components/telepathyClient.js:1363 #: ../js/ui/components/telepathyClient.js:1364
msgid "Encryption is not available" msgid "Encryption is not available"
msgstr "Šifrovanje nije dostupno" msgstr "Šifrovanje nije dostupno"
#: ../js/ui/components/telepathyClient.js:1365 #: ../js/ui/components/telepathyClient.js:1366
msgid "Certificate is invalid" msgid "Certificate is invalid"
msgstr "Uverenje nije ispravno" msgstr "Uverenje nije ispravno"
#: ../js/ui/components/telepathyClient.js:1367 #: ../js/ui/components/telepathyClient.js:1368
msgid "Connection has been refused" msgid "Connection has been refused"
msgstr "Veza je odbijena" msgstr "Veza je odbijena"
#: ../js/ui/components/telepathyClient.js:1369 #: ../js/ui/components/telepathyClient.js:1370
msgid "Connection can't be established" msgid "Connection can't be established"
msgstr "Veza ne može biti uspostavljena" msgstr "Veza ne može biti uspostavljena"
#: ../js/ui/components/telepathyClient.js:1371 #: ../js/ui/components/telepathyClient.js:1372
msgid "Connection has been lost" msgid "Connection has been lost"
msgstr "Veza je izgubljena" msgstr "Veza je izgubljena"
#: ../js/ui/components/telepathyClient.js:1373 #: ../js/ui/components/telepathyClient.js:1374
msgid "This account is already connected to the server" msgid "This account is already connected to the server"
msgstr "Ovaj nalog je već povezan sa serverom" msgstr "Ovaj nalog je već povezan sa serverom"
#: ../js/ui/components/telepathyClient.js:1375 #: ../js/ui/components/telepathyClient.js:1376
msgid "" msgid ""
"Connection has been replaced by a new connection using the same resource" "Connection has been replaced by a new connection using the same resource"
msgstr "Veza je zamenjena novom vezom koristeći isti resurs" msgstr "Veza je zamenjena novom vezom koristeći isti resurs"
#: ../js/ui/components/telepathyClient.js:1377 #: ../js/ui/components/telepathyClient.js:1378
msgid "The account already exists on the server" msgid "The account already exists on the server"
msgstr "Ovaj nalog već postoji na serveru" msgstr "Ovaj nalog već postoji na serveru"
#: ../js/ui/components/telepathyClient.js:1379 #: ../js/ui/components/telepathyClient.js:1380
msgid "Server is currently too busy to handle the connection" msgid "Server is currently too busy to handle the connection"
msgstr "Server je trenutno previše zauzet da bi rukovao vezom" msgstr "Server je trenutno previše zauzet da bi rukovao vezom"
#: ../js/ui/components/telepathyClient.js:1381 #: ../js/ui/components/telepathyClient.js:1382
msgid "Certificate has been revoked" msgid "Certificate has been revoked"
msgstr "Uverenje je opozvano" msgstr "Uverenje je opozvano"
#: ../js/ui/components/telepathyClient.js:1383 #: ../js/ui/components/telepathyClient.js:1384
msgid "" msgid ""
"Certificate uses an insecure cipher algorithm or is cryptographically weak" "Certificate uses an insecure cipher algorithm or is cryptographically weak"
msgstr "" msgstr ""
"Uverenje koristi nesiguran algoritam šifrovanja ili je kriptografski slabo" "Uverenje koristi nesiguran algoritam šifrovanja ili je kriptografski slabo"
#: ../js/ui/components/telepathyClient.js:1385 #: ../js/ui/components/telepathyClient.js:1386
msgid "" msgid ""
"The length of the server certificate, or the depth of the server certificate " "The length of the server certificate, or the depth of the server certificate "
"chain, exceed the limits imposed by the cryptography library" "chain, exceed the limits imposed by the cryptography library"
@@ -976,22 +948,22 @@ msgstr ""
"Dužina uverenja servera, ili dubina lanca uverenja servera, premašuje granice " "Dužina uverenja servera, ili dubina lanca uverenja servera, premašuje granice "
"koje je zadala biblioteka šifrovanja" "koje je zadala biblioteka šifrovanja"
#: ../js/ui/components/telepathyClient.js:1387 #: ../js/ui/components/telepathyClient.js:1388
msgid "Internal error" msgid "Internal error"
msgstr "Unutrašnja greška" msgstr "Unutrašnja greška"
#. translators: argument is the account name, like #. translators: argument is the account name, like
#. * name@jabber.org for example. */ #. * name@jabber.org for example. */
#: ../js/ui/components/telepathyClient.js:1397 #: ../js/ui/components/telepathyClient.js:1398
#, javascript-format #, javascript-format
msgid "Unable to connect to %s" msgid "Unable to connect to %s"
msgstr "Ne mogu da se povežem sa „%s“" msgstr "Ne mogu da se povežem sa „%s“"
#: ../js/ui/components/telepathyClient.js:1402 #: ../js/ui/components/telepathyClient.js:1403
msgid "View account" msgid "View account"
msgstr "Vidi nalog" msgstr "Vidi nalog"
#: ../js/ui/components/telepathyClient.js:1439 #: ../js/ui/components/telepathyClient.js:1440
msgid "Unknown reason" msgid "Unknown reason"
msgstr "Nepoznat razlog" msgstr "Nepoznat razlog"
@@ -1128,8 +1100,6 @@ msgstr[3] ""
"Sistem će se sam ponovo pokrenuti i instalirati ažuriranja za %d sekundu." "Sistem će se sam ponovo pokrenuti i instalirati ažuriranja za %d sekundu."
#: ../js/ui/endSessionDialog.js:129 #: ../js/ui/endSessionDialog.js:129
#| msgctxt "button"
#| msgid "Restart & Install"
msgctxt "button" msgctxt "button"
msgid "Restart &amp; Install" msgid "Restart &amp; Install"
msgstr "Ponovo pokreni i instaliraj" msgstr "Ponovo pokreni i instaliraj"
@@ -1147,8 +1117,7 @@ msgstr "Isključi nakon instaliranja osveženja"
#: ../js/ui/endSessionDialog.js:315 #: ../js/ui/endSessionDialog.js:315
msgid "Running on battery power: please plug in before installing updates." msgid "Running on battery power: please plug in before installing updates."
msgstr "" msgstr ""
"Napajate se sa baterije: priključite mrežno napajanje pre instaliranja " "Napajate se sa baterije: priključite mrežno napajanje pre instaliranja osveženja."
"osveženja."
#: ../js/ui/endSessionDialog.js:332 #: ../js/ui/endSessionDialog.js:332
msgid "Some applications are busy or have unsaved work." msgid "Some applications are busy or have unsaved work."
@@ -1176,7 +1145,6 @@ msgstr "Instaliraj"
#: ../js/ui/extensionDownloader.js:204 #: ../js/ui/extensionDownloader.js:204
#, javascript-format #, javascript-format
#| msgid "Download and install '%s' from extensions.gnome.org?"
msgid "Download and install “%s” from extensions.gnome.org?" msgid "Download and install “%s” from extensions.gnome.org?"
msgstr "Da preuzmem i da instaliram „%s“ sa „extensions.gnome.org“-a?" msgstr "Da preuzmem i da instaliram „%s“ sa „extensions.gnome.org“-a?"
@@ -1202,7 +1170,8 @@ msgstr "Sakrij greške"
msgid "Show Errors" msgid "Show Errors"
msgstr "Prikažite greške" msgstr "Prikažite greške"
#: ../js/ui/lookingGlass.js:716 #: ../js/ui/lookingGlass.js:716 ../js/ui/status/location.js:59
#: ../js/ui/status/location.js:167
msgid "Enabled" msgid "Enabled"
msgstr "Uključeno" msgstr "Uključeno"
@@ -1210,8 +1179,8 @@ msgstr "Uključeno"
#. because it's disabled by rfkill (airplane mode) */ #. because it's disabled by rfkill (airplane mode) */
#. translators: #. translators:
#. * The device has been disabled #. * The device has been disabled
#: ../js/ui/lookingGlass.js:719 ../js/ui/status/network.js:555 #: ../js/ui/lookingGlass.js:719 ../js/ui/status/location.js:164
#: ../src/gvc/gvc-mixer-control.c:1830 #: ../js/ui/status/network.js:555 ../src/gvc/gvc-mixer-control.c:1830
msgid "Disabled" msgid "Disabled"
msgstr "Isključeno" msgstr "Isključeno"
@@ -1362,7 +1331,7 @@ msgstr "Neki program je blokirao zaključavanje"
msgid "Searching…" msgid "Searching…"
msgstr "Tražim…" msgstr "Tražim…"
#: ../js/ui/search.js:646 #: ../js/ui/search.js:649
msgid "No results." msgid "No results."
msgstr "Nema odgovarajućih rezultata." msgstr "Nema odgovarajućih rezultata."
@@ -1438,8 +1407,7 @@ msgstr "Veliki tekst"
msgid "Bluetooth" msgid "Bluetooth"
msgstr "Blutut" msgstr "Blutut"
#: ../js/ui/status/bluetooth.js:51 ../js/ui/status/location.js:60 #: ../js/ui/status/bluetooth.js:51 ../js/ui/status/network.js:151
#: ../js/ui/status/location.js:167 ../js/ui/status/network.js:151
#: ../js/ui/status/network.js:323 ../js/ui/status/network.js:1234 #: ../js/ui/status/network.js:323 ../js/ui/status/network.js:1234
#: ../js/ui/status/network.js:1345 ../js/ui/status/rfkill.js:85 #: ../js/ui/status/network.js:1345 ../js/ui/status/rfkill.js:85
#: ../js/ui/status/rfkill.js:105 #: ../js/ui/status/rfkill.js:105
@@ -1472,30 +1440,33 @@ msgid "Show Keyboard Layout"
msgstr "Pokaži raspored tastature" msgstr "Pokaži raspored tastature"
#: ../js/ui/status/location.js:53 #: ../js/ui/status/location.js:53
#| msgid "Notifications"
msgid "Location" msgid "Location"
msgstr "Mesto" msgstr "Mesto"
#: ../js/ui/status/location.js:59 ../js/ui/status/location.js:166 #: ../js/ui/status/location.js:60 ../js/ui/status/location.js:168
#: ../js/ui/status/rfkill.js:84 #| msgid "Disabled"
msgid "On" msgid "Disable"
msgstr "Uklj." msgstr "Isključi"
#: ../js/ui/status/location.js:163 ../js/ui/status/network.js:420 #: ../js/ui/status/location.js:165
#: ../js/ui/status/network.js:1260 ../js/ui/status/network.js:1464 #| msgid "Enabled"
msgid "Off" msgid "Enable"
msgstr "Isklj."
#: ../js/ui/status/location.js:164 ../js/ui/status/network.js:1234
msgid "Turn On"
msgstr "Uključi" msgstr "Uključi"
#: ../js/ui/status/location.js:167
msgid "In Use"
msgstr "U upotrebi"
#: ../js/ui/status/network.js:74 #: ../js/ui/status/network.js:74
msgid "<unknown>" msgid "<unknown>"
msgstr "<nepoznato>" msgstr "<nepoznato>"
#: ../js/ui/status/network.js:420 ../js/ui/status/network.js:1260
#: ../js/ui/status/network.js:1464
msgid "Off"
msgstr "Isklj."
#: ../js/ui/status/network.js:422 #: ../js/ui/status/network.js:422
#| msgid "Connect"
msgid "Connected" msgid "Connected"
msgstr "Povezan" msgstr "Povezan"
@@ -1535,7 +1506,6 @@ msgid "connection failed"
msgstr "povezivanje nije uspelo" msgstr "povezivanje nije uspelo"
#: ../js/ui/status/network.js:467 #: ../js/ui/status/network.js:467
#| msgid "Wi-Fi Settings"
msgid "Wired Settings" msgid "Wired Settings"
msgstr "Podešavanja žičane veze" msgstr "Podešavanja žičane veze"
@@ -1552,7 +1522,6 @@ msgid "Use as Internet connection"
msgstr "Koristi kao Internet vezu" msgstr "Koristi kao Internet vezu"
#: ../js/ui/status/network.js:776 #: ../js/ui/status/network.js:776
#| msgid "Airplane Mode"
msgid "Airplane Mode is On" msgid "Airplane Mode is On"
msgstr "Režim u avionu je uključen" msgstr "Režim u avionu je uključen"
@@ -1561,12 +1530,10 @@ msgid "Wi-Fi is disabled when airplane mode is on."
msgstr "Bežična veza je isključena kada je uključen režim u avionu." msgstr "Bežična veza je isključena kada je uključen režim u avionu."
#: ../js/ui/status/network.js:778 #: ../js/ui/status/network.js:778
#| msgid "Airplane Mode"
msgid "Turn Off Airplane Mode" msgid "Turn Off Airplane Mode"
msgstr "Isključi režim u avionu" msgstr "Isključi režim u avionu"
#: ../js/ui/status/network.js:787 #: ../js/ui/status/network.js:787
#| msgid "Wi-Fi Settings"
msgid "Wi-Fi is Off" msgid "Wi-Fi is Off"
msgstr "Bežična veza je isključena" msgstr "Bežična veza je isključena"
@@ -1575,7 +1542,6 @@ msgid "Wi-Fi needs to be turned on in order to connect to a network."
msgstr "Bežična veza treba biti uključena da biste se povezali na mrežu." msgstr "Bežična veza treba biti uključena da biste se povezali na mrežu."
#: ../js/ui/status/network.js:789 #: ../js/ui/status/network.js:789
#| msgid "Turn On"
msgid "Turn On Wi-Fi" msgid "Turn On Wi-Fi"
msgstr "Uključi bežičnu vezu" msgstr "Uključi bežičnu vezu"
@@ -1603,12 +1569,15 @@ msgstr "Izaberi mrežu"
msgid "Wi-Fi Settings" msgid "Wi-Fi Settings"
msgstr "Podešavanja bežične veze" msgstr "Podešavanja bežične veze"
#: ../js/ui/status/network.js:1234
msgid "Turn On"
msgstr "Uključi"
#: ../js/ui/status/network.js:1251 #: ../js/ui/status/network.js:1251
msgid "Hotspot Active" msgid "Hotspot Active"
msgstr "Vruća tačka je radna" msgstr "Vruća tačka je radna"
#: ../js/ui/status/network.js:1254 #: ../js/ui/status/network.js:1254
#| msgid "Connect"
msgid "Connecting" msgid "Connecting"
msgstr "Povezujem se" msgstr "Povezujem se"
@@ -1617,7 +1586,6 @@ msgid "Network Settings"
msgstr "Podešavanja mreže" msgstr "Podešavanja mreže"
#: ../js/ui/status/network.js:1435 #: ../js/ui/status/network.js:1435
#| msgid "Settings"
msgid "VPN Settings" msgid "VPN Settings"
msgstr "VPN podešavanja" msgstr "VPN podešavanja"
@@ -1671,6 +1639,10 @@ msgstr "Baterija"
msgid "Airplane Mode" msgid "Airplane Mode"
msgstr "Režim u avionu" msgstr "Režim u avionu"
#: ../js/ui/status/rfkill.js:84
msgid "On"
msgstr "Uklj."
#: ../js/ui/status/system.js:314 #: ../js/ui/status/system.js:314
msgid "Switch User" msgid "Switch User"
msgstr "Promeni korisnika" msgstr "Promeni korisnika"
@@ -1721,7 +1693,6 @@ msgstr "Traži"
#: ../js/ui/windowAttentionHandler.js:19 #: ../js/ui/windowAttentionHandler.js:19
#, javascript-format #, javascript-format
#| msgid "'%s' is ready"
msgid "“%s” is ready" msgid "“%s” is ready"
msgstr "„%s“ je spreman" msgstr "„%s“ je spreman"
@@ -1797,7 +1768,6 @@ msgstr "Ispisuje moguće režime"
#: ../src/shell-app.c:666 #: ../src/shell-app.c:666
#, c-format #, c-format
#| msgid "Failed to launch '%s'"
msgid "Failed to launch “%s”" msgid "Failed to launch “%s”"
msgstr "Nisam uspeo da pokrenem „%s“" msgstr "Nisam uspeo da pokrenem „%s“"

973
po/sv.po

File diff suppressed because it is too large Load Diff

Some files were not shown because too many files have changed in this diff Show More