Compare commits
20 Commits
3.13.2
...
wip/waylan
Author | SHA1 | Date | |
---|---|---|---|
![]() |
28f4030aa2 | ||
![]() |
67fe376564 | ||
![]() |
fb824131ae | ||
![]() |
056375cbcf | ||
![]() |
84431cbc65 | ||
![]() |
92c283da4d | ||
![]() |
6e27ef8ff9 | ||
![]() |
0c511c884b | ||
![]() |
7afb503666 | ||
![]() |
0b9d01a1c0 | ||
![]() |
b978d99820 | ||
![]() |
6d8d094e0c | ||
![]() |
97e0175f48 | ||
![]() |
ebef4ff174 | ||
![]() |
82b8b32355 | ||
![]() |
5b4337f716 | ||
![]() |
5eb377bd3b | ||
![]() |
8173110842 | ||
![]() |
fee97da26b | ||
![]() |
0cc10e0c5d |
3
.gitignore
vendored
3
.gitignore
vendored
@@ -78,8 +78,11 @@ src/gnome-shell-calendar-server
|
||||
src/gnome-shell-extension-prefs
|
||||
src/gnome-shell-extension-tool
|
||||
src/gnome-shell-hotplug-sniffer
|
||||
src/gnome-shell-jhbuild
|
||||
src/gnome-shell-perf-helper
|
||||
src/gnome-shell-perf-tool
|
||||
src/gnome-shell-real
|
||||
src/gnome-shell-wayland
|
||||
src/hotplug-sniffer/org.gnome.Shell.HotplugSniffer.service
|
||||
src/run-js-test
|
||||
src/test-recorder
|
||||
|
114
NEWS
114
NEWS
@@ -1,117 +1,3 @@
|
||||
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]
|
||||
* Improve language in location menu [Zeeshan; #726498]
|
||||
* Improve HiDpi support [Cosimo; #726907]
|
||||
* Set accessible role for window previews [Alejandro; #726670]
|
||||
* Fix bad antialiasing on panel menu buttons [Carlos; #727336]
|
||||
* Don't hide location menu [Zeeshan; #727398]
|
||||
* Fix IM candidate window obscuring current text [Rui; #727579]
|
||||
* 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:
|
||||
Elad Alfassa, Zeeshan Ali (Khattak), Giovanni Campagna, Cosimo Cecchi,
|
||||
Matthias Clasen, Piotr Drąg, Adel Gadllah, Paul Lange, Rui Matos,
|
||||
Simon McVittie, Florian Müllner, Bastien Nocera, Alejandro Piñeiro,
|
||||
Vadim Rutkovsky, Carlos Soriano, Jasper St. Pierre
|
||||
|
||||
Translations:
|
||||
Khaled Hosny [ar], Piotr Drąg [pl], Yosef Or Boczko [he],
|
||||
Antonio Fernandes C. Neto [pt_BR], Marek Černocký [cs], maria thukididu [el],
|
||||
Andika Triwidada [id], Daniel Mustieles [es], Changwoo Ryu [ko],
|
||||
Benjamin Steinwender [de], Sphinx Jiang [zh_CN],
|
||||
Inaki Larranaga Murgoitio [eu], Marcus Lundblad [sv], Aurimas Černius [lt],
|
||||
Stas Solovey [ru], Alexandre Franke [fr], Matej Urbančič [sl],
|
||||
Fran Diéguez [gl], Pau Iranzo [ca], Luca Ferretti [it], Milo Casagrande [it],
|
||||
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],
|
||||
Wouter Bolsterlee [nl], Daniel Korostil [uk], Daniel Șerbănescu [ro],
|
||||
Enrico Nicoletto [pt_BR]
|
||||
|
||||
3.12.0
|
||||
======
|
||||
* gdm: Reset greeter when coming back to login screen [Jasper; #726989]
|
||||
|
||||
Contributors:
|
||||
Jasper St. Pierre
|
||||
|
||||
Translations:
|
||||
Daniel Martinez [an], Yuri Myasoedov [ru], Inaki Larranaga Murgoitio [eu],
|
||||
Abderrahim Kitouni [ar], Praveen Illa [te], Matej Urbančič [sl],
|
||||
Chao-Hsiung Liao [zh_HK, zh_TW], Frédéric Péters [fr],
|
||||
Мирослав Николић [sr, sr@latin], Ask H. Larsen [da], Kenneth Nielsen [da],
|
||||
Jiro Matsuzawa [ja], Dušan Kazik [sk]
|
||||
|
||||
3.11.92
|
||||
=======
|
||||
* calendar: Grab key focus after changing day [Volker; #725606]
|
||||
* gdm: Don't load user list if disabled [Florian; #725905]
|
||||
* Don't show network-offline in the top bar [Jasper; #725340]
|
||||
* Improve radial shade effect of modal dialogs [Giovanni; #725830]
|
||||
* Fix broken suspend-on-idle functionality [Giovanni; #712706]
|
||||
* Close wifi selection dialog when device disappears [Giovanni; #723935]
|
||||
* Don't close chats when pressing Escape [Giovanni; #724178]
|
||||
* Improve smartcard support in login/lock screen [Ray; #726262, #726263]
|
||||
* Wake up screen when resuming from suspend [Giovanni; #726378]
|
||||
* Make bluetooth and location items insensitive when locked [Florian; #726319]
|
||||
* Don't show bluetooth icon when there is no adapter [Giovanni; #725057]
|
||||
* Make sure to keep the OSK on top of modal dialogs [Rui; #719451]
|
||||
* Misc. bug fixes and cleanups [Giovanni, Ray, Adel, Daniel, Jasper, Florian;
|
||||
#725832, #725958, #722149, #724977, #724798, #725020, #723976, #726119,
|
||||
#726238, #585500, #704844, #726323, #726322, #726120, #726414]
|
||||
|
||||
Contributors:
|
||||
Giovanni Campagna, Daniel Drake, Adel Gadllah, Rui Matos, Florian Müllner,
|
||||
Volker Sobek, Jasper St. Pierre, Ray Strode
|
||||
|
||||
Translations:
|
||||
Fabio Tomat [fur], Rafael Ferreira [pt_BR], Fran Diéguez [gl],
|
||||
Marek Černocký [cs], Baurzhan Muftakhidinov [kk], Andika Triwidada [id],
|
||||
A S Alam [pa], Rūdolfs Mazurs [lv], Wylmer Wang [zh_CN],
|
||||
Aurimas Černius [lt], Cheng-Chia Tseng [zh_TW], Stas Solovey [ru],
|
||||
Tiagosdot [pt], Benjamin Steinwender [de], Frédéric Peters [fr],
|
||||
Daniel Korostil [uk], Yaron Shahrabani [he], Ville-Pekka Vainio [fi],
|
||||
maria thukididu [el], Victor Ibragimov [tg], Kjartan Maraas [nb],
|
||||
Gábor Kelemen [hu], Ask H. Larsen [da]
|
||||
|
||||
3.11.91
|
||||
=======
|
||||
* Don't use network profile name in menu [Giovanni; #725586]
|
||||
|
2
README
2
README
@@ -8,7 +8,7 @@ For more information about GNOME Shell, including instructions on how
|
||||
to build GNOME Shell from source and how to get involved with the project,
|
||||
see:
|
||||
|
||||
https://wiki.gnome.org/Projects/GnomeShell
|
||||
http://live.gnome.org/GnomeShell
|
||||
|
||||
Bugs should be reported at http://bugzilla.gnome.org against the 'gnome-shell'
|
||||
product.
|
||||
|
19
configure.ac
19
configure.ac
@@ -1,5 +1,5 @@
|
||||
AC_PREREQ(2.63)
|
||||
AC_INIT([gnome-shell],[3.13.2],[https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-shell],[gnome-shell])
|
||||
AC_INIT([gnome-shell],[3.11.91],[https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-shell],[gnome-shell])
|
||||
|
||||
AC_CONFIG_HEADERS([config.h])
|
||||
AC_CONFIG_SRCDIR([src/shell-global.c])
|
||||
@@ -76,7 +76,7 @@ AC_MSG_RESULT($enable_systemd)
|
||||
CLUTTER_MIN_VERSION=1.15.90
|
||||
GOBJECT_INTROSPECTION_MIN_VERSION=0.10.1
|
||||
GJS_MIN_VERSION=1.39.0
|
||||
MUTTER_MIN_VERSION=3.13.2
|
||||
MUTTER_MIN_VERSION=3.11.91
|
||||
GTK_MIN_VERSION=3.7.9
|
||||
GIO_MIN_VERSION=2.37.0
|
||||
LIBECAL_MIN_VERSION=3.5.3
|
||||
@@ -112,6 +112,13 @@ fi
|
||||
|
||||
PKG_CHECK_MODULES(GNOME_SHELL, $SHARED_PCS)
|
||||
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(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)
|
||||
|
||||
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"}"
|
||||
AC_ARG_VAR([BROWSER_PLUGIN_DIR],[Where to install the plugin to])
|
||||
|
@@ -1,5 +1,9 @@
|
||||
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
|
||||
|
||||
|
||||
# We substitute in bindir so it works as an autostart
|
||||
# file when built in a non-system prefix
|
||||
|
@@ -2,7 +2,7 @@
|
||||
Type=Application
|
||||
_Name=GNOME Shell (wayland compositor)
|
||||
_Comment=Window management and application launching
|
||||
Exec=@bindir@/gnome-shell --wayland --display-server
|
||||
Exec=@bindir@/gnome-shell-wayland --wayland --display-server
|
||||
X-GNOME-Bugzilla-Bugzilla=GNOME
|
||||
X-GNOME-Bugzilla-Product=gnome-shell
|
||||
X-GNOME-Bugzilla-Component=general
|
||||
|
@@ -31,7 +31,7 @@
|
||||
</_description>
|
||||
</key>
|
||||
<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>
|
||||
<_description>
|
||||
The applications corresponding to these identifiers
|
||||
@@ -221,6 +221,15 @@
|
||||
</_description>
|
||||
</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">
|
||||
<default>true</default>
|
||||
<_summary>Enable edge tiling when dropping windows on screen edges</_summary>
|
||||
|
@@ -153,21 +153,6 @@ StScrollBar StButton#vhandle:active {
|
||||
-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 {
|
||||
min-width: 200px;
|
||||
}
|
||||
@@ -181,15 +166,6 @@ StScrollBar StButton#vhandle:active {
|
||||
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 {
|
||||
background-gradient-start: rgba(80,80,80,0.3);
|
||||
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);
|
||||
}
|
||||
|
||||
.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 {
|
||||
padding-right: 0em;
|
||||
}
|
||||
@@ -259,29 +221,7 @@ StScrollBar StButton#vhandle:active {
|
||||
color: #9f9f9f;
|
||||
}
|
||||
|
||||
.fallback-app-menu .popup-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-image-menu-item {
|
||||
}
|
||||
|
||||
.popup-separator-menu-item {
|
||||
@@ -293,15 +233,8 @@ StScrollBar StButton#vhandle:active {
|
||||
padding: 8px 0px;
|
||||
}
|
||||
|
||||
.fallback-app-menu .popup-separator-menu-item {
|
||||
-gradient-start: #a0a2a3;
|
||||
-gradient-end: #a0a2a3;
|
||||
-margin-horizontal: 0;
|
||||
}
|
||||
|
||||
.fallback-app-menu.dark .popup-separator-menu-item {
|
||||
-gradient-start: #818584;
|
||||
-gradient-end: #818584;
|
||||
.popup-alternating-menu-item:alternate {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.popup-status-menu-item {
|
||||
@@ -649,6 +582,11 @@ StScrollBar StButton#vhandle:active {
|
||||
app-icon-bottom-clip: 2px;
|
||||
}
|
||||
|
||||
.app-menu-icon {
|
||||
width: 24px;
|
||||
height: 24px;
|
||||
}
|
||||
|
||||
.panel-button {
|
||||
-natural-hpadding: 12px;
|
||||
-minimum-hpadding: 6px;
|
||||
@@ -732,7 +670,7 @@ StScrollBar StButton#vhandle:active {
|
||||
color: #e6e6e6;
|
||||
border-radius: 32px; /* wish we could do 50% */
|
||||
padding: 13px;
|
||||
border: 2px solid #5f5f5f; /* using rgba() is flaky unfortunately */
|
||||
border: 1px solid #5f5f5f; /* using rgba() is flaky unfortunately */
|
||||
}
|
||||
|
||||
.system-menu-action:hover,
|
||||
@@ -740,7 +678,7 @@ StScrollBar StButton#vhandle:active {
|
||||
color: white;
|
||||
background-color: #4c4c4c;
|
||||
border: none;
|
||||
padding: 15px;
|
||||
padding: 14px;
|
||||
}
|
||||
|
||||
.system-menu-action:active {
|
||||
@@ -1041,8 +979,6 @@ StScrollBar StButton#vhandle:active {
|
||||
|
||||
.app-folder-icon {
|
||||
padding: 5px;
|
||||
spacing-rows: 5px;
|
||||
spacing-columns: 5px;
|
||||
}
|
||||
|
||||
.dash-item-container > StButton {
|
||||
@@ -1219,6 +1155,11 @@ StScrollBar StButton#vhandle:active {
|
||||
text-shadow: black 0px 2px 2px;
|
||||
}
|
||||
|
||||
#LookingGlassDialog .lg-inspector-title {
|
||||
font-weight: bold;
|
||||
padding-bottom: 8px;
|
||||
}
|
||||
|
||||
.lg-dialog StEntry {
|
||||
selection-background-color: #bbbbbb;
|
||||
selected-color: #333333;
|
||||
@@ -1298,6 +1239,10 @@ StScrollBar StButton#vhandle:active {
|
||||
width: 0.3em;
|
||||
}
|
||||
|
||||
#calendarPopup .calendar {
|
||||
padding: 10px;
|
||||
}
|
||||
|
||||
.calendar {
|
||||
padding: .4em 1.75em .8em 1.75em;
|
||||
spacing-rows: 0px;
|
||||
@@ -1826,6 +1771,26 @@ StScrollBar StButton#vhandle:active {
|
||||
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 {
|
||||
padding: 8px;
|
||||
border-radius: 8px;
|
||||
@@ -2095,6 +2060,10 @@ StScrollBar StButton#vhandle:active {
|
||||
icon-size: 48px;
|
||||
}
|
||||
|
||||
.mount-password-reask {
|
||||
color: red;
|
||||
}
|
||||
|
||||
.show-processes-dialog,
|
||||
.mount-question-dialog {
|
||||
spacing: 24px;
|
||||
@@ -2390,6 +2359,13 @@ StScrollBar StButton#vhandle:active {
|
||||
padding-bottom: 1em;
|
||||
}
|
||||
|
||||
.login-dialog-title {
|
||||
font-size: 14pt;
|
||||
font-weight: bold;
|
||||
color: #666666;
|
||||
padding-bottom: 2em;
|
||||
}
|
||||
|
||||
.login-dialog {
|
||||
/* Reset border and background */
|
||||
border: none;
|
||||
@@ -2438,6 +2414,10 @@ StScrollBar StButton#vhandle:active {
|
||||
background-size: contain;
|
||||
}
|
||||
|
||||
.login-dialog-user-list-item-text-box {
|
||||
padding: 0 0.5em;
|
||||
}
|
||||
|
||||
.login-dialog-user-list-item .login-dialog-timed-login-indicator {
|
||||
background-color: rgba(0,0,0,0.0);
|
||||
height: 2px;
|
||||
|
@@ -17,15 +17,17 @@ packages. If you are interested in building GNOME Shell from source,
|
||||
we would recommend building from version control using the build
|
||||
script described at:
|
||||
|
||||
https://wiki.gnome.org/Projects/GnomeShell
|
||||
http://live.gnome.org/GnomeShell
|
||||
|
||||
Not only will that give you the very latest version of this rapidly
|
||||
changing project, it will be much easier than get GNOME Shell and
|
||||
its dependencies to build from tarballs.</description>
|
||||
<homepage rdf:resource="https://wiki.gnome.org/Projects/GnomeShell" />
|
||||
<!--
|
||||
<homepage rdf:resource="http://live.gnome.org/GnomeShell" />
|
||||
-->
|
||||
<mailing-list rdf:resource="http://mail.gnome.org/mailman/listinfo/gnome-shell-list" />
|
||||
<download-page rdf:resource="http://download.gnome.org/sources/gnome-shell/" />
|
||||
<bug-database rdf:resource="https://bugzilla.gnome.org/browse.cgi?product=gnome-shell" />
|
||||
<bug-database rdf:resource="http://bugzilla.gnome.org/browse.cgi?product=gnome-shell" />
|
||||
|
||||
<category rdf:resource="http://api.gnome.org/doap-extensions#desktop" />
|
||||
|
||||
|
@@ -23,11 +23,6 @@ const GnomeShellIface = '<node> \
|
||||
</interface> \
|
||||
</node>';
|
||||
|
||||
const customCss = '.prefs-button { \
|
||||
padding: 8px; \
|
||||
border-radius: 20px; \
|
||||
}';
|
||||
|
||||
const GnomeShellProxy = Gio.DBusProxy.makeProxyWrapper(GnomeShellIface);
|
||||
|
||||
function stripPrefix(string, prefix) {
|
||||
@@ -51,9 +46,13 @@ const Application = new Lang.Class({
|
||||
|
||||
this._extensionPrefsModules = {};
|
||||
|
||||
this._extensionIters = {};
|
||||
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) {
|
||||
@@ -71,6 +70,11 @@ const Application = new Lang.Class({
|
||||
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) {
|
||||
let uuid = extension.metadata.uuid;
|
||||
|
||||
@@ -100,23 +104,21 @@ const Application = new Lang.Class({
|
||||
widget = this._buildErrorUI(extension, e);
|
||||
}
|
||||
|
||||
let dialog = new Gtk.Dialog({ use_header_bar: true,
|
||||
modal: true,
|
||||
title: extension.metadata.name });
|
||||
// Destroy the current prefs widget, if it exists
|
||||
if (this._extensionPrefsBin.get_child())
|
||||
this._extensionPrefsBin.get_child().destroy();
|
||||
|
||||
if (this._skipMainWindow) {
|
||||
this.application.add_window(dialog);
|
||||
if (this._window)
|
||||
this._window.destroy();
|
||||
this._window = dialog;
|
||||
this._window.window_position = Gtk.WindowPosition.CENTER;
|
||||
} else {
|
||||
dialog.transient_for = this._window;
|
||||
}
|
||||
this._extensionPrefsBin.add(widget);
|
||||
this._extensionSelector.set_active_iter(this._extensionIters[uuid]);
|
||||
},
|
||||
|
||||
dialog.set_default_size(600, 400);
|
||||
dialog.get_content_area().add(widget);
|
||||
dialog.show();
|
||||
_extensionSelected: function() {
|
||||
let [success, iter] = this._extensionSelector.get_active_iter();
|
||||
if (!success)
|
||||
return;
|
||||
|
||||
let uuid = this._model.get_value(iter, 0);
|
||||
this._selectExtension(uuid);
|
||||
},
|
||||
|
||||
_buildErrorUI: function(extension, exc) {
|
||||
@@ -149,26 +151,48 @@ const Application = new Lang.Class({
|
||||
|
||||
_buildUI: function(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,
|
||||
title: _("GNOME Shell Extensions") });
|
||||
this._window.set_titlebar(this._titlebar);
|
||||
let vbox = new Gtk.Box({ orientation: Gtk.Orientation.VERTICAL });
|
||||
this._window.add(vbox);
|
||||
|
||||
let scroll = new Gtk.ScrolledWindow({ hscrollbar_policy: Gtk.PolicyType.NEVER,
|
||||
shadow_type: Gtk.ShadowType.IN,
|
||||
halign: Gtk.Align.CENTER,
|
||||
margin: 18 });
|
||||
this._window.add(scroll);
|
||||
let toolbar = new Gtk.Toolbar();
|
||||
toolbar.get_style_context().add_class(Gtk.STYLE_CLASS_PRIMARY_TOOLBAR);
|
||||
vbox.add(toolbar);
|
||||
let toolitem;
|
||||
|
||||
this._extensionSelector = new Gtk.ListBox({ selection_mode: Gtk.SelectionMode.NONE });
|
||||
this._extensionSelector.set_sort_func(Lang.bind(this, this._sortList));
|
||||
this._extensionSelector.set_header_func(Lang.bind(this, this._updateHeader));
|
||||
let label = new Gtk.Label({ label: '<b>' + _("Extension") + '</b>',
|
||||
use_markup: true });
|
||||
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.connectSignal('ExtensionStatusChanged', Lang.bind(this, function(proxy, senderName, [uuid, state, error]) {
|
||||
@@ -179,35 +203,6 @@ const Application = new Lang.Class({
|
||||
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() {
|
||||
let finder = new ExtensionUtils.ExtensionFinder();
|
||||
finder.connect('extension-found', Lang.bind(this, this._extensionFound));
|
||||
@@ -216,24 +211,15 @@ const Application = new Lang.Class({
|
||||
},
|
||||
|
||||
_extensionFound: function(finder, extension) {
|
||||
let row = new ExtensionRow(extension.uuid);
|
||||
|
||||
row.prefsButton.visible = this._extensionAvailable(row.uuid);
|
||||
row.prefsButton.connect('clicked', Lang.bind(this,
|
||||
function() {
|
||||
this._selectExtension(row.uuid);
|
||||
}));
|
||||
|
||||
row.show_all();
|
||||
this._extensionSelector.add(row);
|
||||
let iter = this._model.append();
|
||||
this._model.set(iter, [0, 1], [extension.uuid, extension.metadata.name]);
|
||||
this._extensionIters[extension.uuid] = iter;
|
||||
},
|
||||
|
||||
_extensionsLoaded: function() {
|
||||
if (this._startupUuid && this._extensionAvailable(this._startupUuid))
|
||||
this._selectExtension(this._startupUuid);
|
||||
this._startupUuid = null;
|
||||
this._skipMainWindow = false;
|
||||
this._loaded = true;
|
||||
},
|
||||
|
||||
_onActivate: function() {
|
||||
@@ -241,125 +227,29 @@ const Application = new Lang.Class({
|
||||
},
|
||||
|
||||
_onStartup: function(app) {
|
||||
this._buildModel();
|
||||
this._buildUI(app);
|
||||
this._addCustomStyle();
|
||||
this._scanExtensions();
|
||||
},
|
||||
|
||||
_onCommandLine: function(app, commandLine) {
|
||||
app.activate();
|
||||
let args = commandLine.get_arguments();
|
||||
|
||||
if (args.length) {
|
||||
let uuid = args[0];
|
||||
|
||||
this._skipMainWindow = true;
|
||||
|
||||
// Strip off "extension:///" prefix which fakes a URI, if it exists
|
||||
uuid = stripPrefix(uuid, "extension:///");
|
||||
|
||||
if (this._extensionAvailable(uuid))
|
||||
this._selectExtension(uuid);
|
||||
else if (!this._loaded)
|
||||
this._startupUuid = uuid;
|
||||
else
|
||||
this._skipMainWindow = false;
|
||||
this._startupUuid = uuid;
|
||||
}
|
||||
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: '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() {
|
||||
// Monkey-patch in a "global" object that fakes some Shell utilities
|
||||
// that ExtensionUtils depends on.
|
||||
|
@@ -24,24 +24,10 @@ const AuthPromptMode = {
|
||||
UNLOCK_OR_LOG_IN: 1
|
||||
};
|
||||
|
||||
const AuthPromptStatus = {
|
||||
NOT_VERIFYING: 0,
|
||||
VERIFYING: 1,
|
||||
VERIFICATION_FAILED: 2,
|
||||
VERIFICATION_SUCCEEDED: 3
|
||||
};
|
||||
|
||||
const BeginRequestType = {
|
||||
PROVIDE_USERNAME: 0,
|
||||
DONT_PROVIDE_USERNAME: 1
|
||||
};
|
||||
|
||||
const AuthPrompt = new Lang.Class({
|
||||
Name: 'AuthPrompt',
|
||||
|
||||
_init: function(gdmClient, mode) {
|
||||
this.verificationStatus = AuthPromptStatus.NOT_VERIFYING;
|
||||
|
||||
this._gdmClient = gdmClient;
|
||||
this._mode = mode;
|
||||
|
||||
@@ -53,14 +39,11 @@ const AuthPrompt = new Lang.Class({
|
||||
|
||||
this._userVerifier = new GdmUtil.ShellUserVerifier(this._gdmClient, { reauthenticationOnly: reauthenticationOnly });
|
||||
|
||||
this._userVerifier.connect('needs-username', Lang.bind(this, this._onNeedsUserName));
|
||||
this._userVerifier.connect('ask-question', Lang.bind(this, this._onAskQuestion));
|
||||
this._userVerifier.connect('show-message', Lang.bind(this, this._onShowMessage));
|
||||
this._userVerifier.connect('verification-failed', Lang.bind(this, this._onVerificationFailed));
|
||||
this._userVerifier.connect('verification-complete', Lang.bind(this, this._onVerificationComplete));
|
||||
this._userVerifier.connect('reset', Lang.bind(this, this._onReset));
|
||||
this._userVerifier.connect('smartcard-status-changed', Lang.bind(this, this._onSmartcardStatusChanged));
|
||||
this._userVerifier.connect('ovirt-user-authenticated', Lang.bind(this, this._onOVirtUserAuthenticated));
|
||||
this.smartcardDetected = this._userVerifier.smartcardDetected;
|
||||
|
||||
this.connect('next', Lang.bind(this, function() {
|
||||
this.updateSensitivity(false);
|
||||
@@ -133,6 +116,10 @@ const AuthPrompt = new Lang.Class({
|
||||
this._defaultButtonWell.add_child(this._spinner.actor);
|
||||
},
|
||||
|
||||
get verificationStatus() {
|
||||
return this._userVerifier.verificationStatus;
|
||||
},
|
||||
|
||||
_onDestroy: function() {
|
||||
this._userVerifier.clear();
|
||||
this._userVerifier.disconnectAll();
|
||||
@@ -193,6 +180,14 @@ const AuthPrompt = new Lang.Class({
|
||||
}));
|
||||
},
|
||||
|
||||
_onNeedsUserName: function() {
|
||||
this.emit('needs-username');
|
||||
},
|
||||
|
||||
gotUserName: function(userName) {
|
||||
this._userVerifier.gotUserName(userName);
|
||||
},
|
||||
|
||||
_onAskQuestion: function(verifier, serviceName, question, passwordChar) {
|
||||
if (this._preemptiveAnswer) {
|
||||
if (this._queryingService)
|
||||
@@ -221,30 +216,6 @@ const AuthPrompt = new Lang.Class({
|
||||
this.emit('prompted');
|
||||
},
|
||||
|
||||
_onOVirtUserAuthenticated: function() {
|
||||
if (this.verificationStatus != AuthPromptStatus.VERIFICATION_SUCCEEDED)
|
||||
this.reset();
|
||||
},
|
||||
|
||||
_onSmartcardStatusChanged: function() {
|
||||
this.smartcardDetected = this._userVerifier.smartcardDetected;
|
||||
|
||||
// Most of the time we want to reset if the user inserts or removes
|
||||
// a smartcard. Smartcard insertion "preempts" what the user was
|
||||
// doing, and smartcard removal aborts the preemption.
|
||||
// The exceptions are: 1) Don't reset on smartcard insertion if we're already verifying
|
||||
// with a smartcard
|
||||
// 2) Don't reset if we've already succeeded at verification and
|
||||
// the user is getting logged in.
|
||||
if (this._userVerifier.serviceIsDefault(GdmUtil.SMARTCARD_SERVICE_NAME) &&
|
||||
this.verificationStatus == AuthPromptStatus.VERIFYING &&
|
||||
this.smartcardDetected)
|
||||
return;
|
||||
|
||||
if (this.verificationStatus != AuthPromptStatus.VERIFICATION_SUCCEEDED)
|
||||
this.reset();
|
||||
},
|
||||
|
||||
_onShowMessage: function(userVerifier, message, type) {
|
||||
this.setMessage(message, type);
|
||||
this.emit('prompted');
|
||||
@@ -256,15 +227,11 @@ const AuthPrompt = new Lang.Class({
|
||||
|
||||
this.updateSensitivity(true);
|
||||
this.setActorInDefaultButtonWell(null);
|
||||
this.verificationStatus = AuthPromptStatus.VERIFICATION_FAILED;
|
||||
},
|
||||
|
||||
_onVerificationComplete: function() {
|
||||
this.verificationStatus = AuthPromptStatus.VERIFICATION_SUCCEEDED;
|
||||
this.emit('failed');
|
||||
},
|
||||
|
||||
_onReset: function() {
|
||||
this.verificationStatus = AuthPromptStatus.NOT_VERIFYING;
|
||||
this.reset();
|
||||
},
|
||||
|
||||
@@ -428,38 +395,13 @@ const AuthPrompt = new Lang.Class({
|
||||
},
|
||||
|
||||
reset: function() {
|
||||
let oldStatus = this.verificationStatus;
|
||||
this.verificationStatus = AuthPromptStatus.NOT_VERIFYING;
|
||||
|
||||
if (oldStatus == AuthPromptStatus.VERIFYING)
|
||||
this._userVerifier.cancel();
|
||||
|
||||
this._queryingService = null;
|
||||
this.clear();
|
||||
this._message.opacity = 0;
|
||||
this.setUser(null);
|
||||
this.stopSpinning();
|
||||
|
||||
if (oldStatus == AuthPromptStatus.VERIFICATION_FAILED)
|
||||
this.emit('failed');
|
||||
|
||||
let beginRequestType;
|
||||
|
||||
if (this._mode == AuthPromptMode.UNLOCK_ONLY) {
|
||||
// The user is constant at the unlock screen, so it will immediately
|
||||
// respond to the request with the username
|
||||
beginRequestType = BeginRequestType.PROVIDE_USERNAME;
|
||||
} else if (this._userVerifier.serviceIsForeground(GdmUtil.OVIRT_SERVICE_NAME) ||
|
||||
this._userVerifier.serviceIsForeground(GdmUtil.SMARTCARD_SERVICE_NAME)) {
|
||||
// We don't need to know the username if the user preempted the login screen
|
||||
// with a smartcard or with preauthenticated oVirt credentials
|
||||
beginRequestType = BeginRequestType.DONT_PROVIDE_USERNAME;
|
||||
} else {
|
||||
// In all other cases, we should get the username up front.
|
||||
beginRequestType = BeginRequestType.PROVIDE_USERNAME;
|
||||
}
|
||||
|
||||
this.emit('reset', beginRequestType);
|
||||
this.emit('reset');
|
||||
},
|
||||
|
||||
addCharacter: function(unichar) {
|
||||
@@ -470,18 +412,13 @@ const AuthPrompt = new Lang.Class({
|
||||
this._entry.clutter_text.insert_unichar(unichar);
|
||||
},
|
||||
|
||||
begin: function(params) {
|
||||
params = Params.parse(params, { userName: null,
|
||||
hold: null });
|
||||
|
||||
begin: function() {
|
||||
this.updateSensitivity(false);
|
||||
this._userVerifier.begin();
|
||||
},
|
||||
|
||||
let hold = params.hold;
|
||||
if (!hold)
|
||||
hold = new Batch.Hold();
|
||||
|
||||
this._userVerifier.begin(params.userName, hold);
|
||||
this.verificationStatus = AuthPromptStatus.VERIFYING;
|
||||
needsUsername: function() {
|
||||
this._userVerifier.begin(userName);
|
||||
},
|
||||
|
||||
finish: function(onComplete) {
|
||||
@@ -499,7 +436,6 @@ const AuthPrompt = new Lang.Class({
|
||||
|
||||
cancel: function() {
|
||||
this.reset();
|
||||
this.emit('cancelled');
|
||||
}
|
||||
});
|
||||
Signals.addSignalMethods(AuthPrompt.prototype);
|
||||
|
@@ -36,7 +36,6 @@ const BoxPointer = imports.ui.boxpointer;
|
||||
const CtrlAltTab = imports.ui.ctrlAltTab;
|
||||
const GdmUtil = imports.gdm.util;
|
||||
const Layout = imports.ui.layout;
|
||||
const LoginManager = imports.misc.loginManager;
|
||||
const Main = imports.ui.main;
|
||||
const PopupMenu = imports.ui.popupMenu;
|
||||
const Realmd = imports.gdm.realmd;
|
||||
@@ -422,6 +421,7 @@ const LoginDialog = new Lang.Class({
|
||||
this._authPrompt = new AuthPrompt.AuthPrompt(gdmClient, AuthPrompt.AuthPromptMode.UNLOCK_OR_LOG_IN);
|
||||
this._authPrompt.connect('prompted', Lang.bind(this, this._onPrompted));
|
||||
this._authPrompt.connect('reset', Lang.bind(this, this._onReset));
|
||||
this._authPrompt.connect('needs-username', Lang.bind(this, this._onNeedsUserName));
|
||||
this._authPrompt.hide();
|
||||
this.actor.add_child(this._authPrompt.actor);
|
||||
|
||||
@@ -470,7 +470,7 @@ const LoginDialog = new Lang.Class({
|
||||
this._sessionMenuButton.actor.show();
|
||||
this._authPrompt.addActorToDefaultButtonWell(this._sessionMenuButton.actor);
|
||||
|
||||
this._disableUserList = undefined;
|
||||
this._updateDisableUserList();
|
||||
this._userListLoaded = false;
|
||||
|
||||
LoginManager.getLoginManager().getCurrentSessionProxy(Lang.bind(this, this._gotGreeterSessionProxy));
|
||||
@@ -478,12 +478,11 @@ const LoginDialog = new Lang.Class({
|
||||
// If the user list is enabled, it should take key focus; make sure the
|
||||
// screen shield is initialized first to prevent it from stealing the
|
||||
// focus later
|
||||
Main.layoutManager.connect('startup-complete',
|
||||
Lang.bind(this, this._updateDisableUserList));
|
||||
Main.layoutManager.connect('startup-complete', Lang.bind(this, this._reset));
|
||||
},
|
||||
|
||||
_ensureUserListLoaded: function() {
|
||||
if (!this._userManager.is_loaded) {
|
||||
if (!this._userManager.is_loaded)
|
||||
this._userManagerLoadedId = this._userManager.connect('notify::is-loaded',
|
||||
Lang.bind(this, function() {
|
||||
if (this._userManager.is_loaded) {
|
||||
@@ -492,21 +491,24 @@ const LoginDialog = new Lang.Class({
|
||||
this._userManagerLoadedId = 0;
|
||||
}
|
||||
}));
|
||||
} else {
|
||||
let id = GLib.idle_add(GLib.PRIORITY_DEFAULT, Lang.bind(this, this._loadUserList));
|
||||
GLib.Source.set_name_by_id(id, '[gnome-shell] _loadUserList');
|
||||
}
|
||||
else
|
||||
GLib.idle_add(GLib.PRIORITY_DEFAULT, Lang.bind(this, this._loadUserList));
|
||||
},
|
||||
|
||||
_reset: function() {
|
||||
this._authPrompt.reset();
|
||||
this._authPrompt.begin();
|
||||
},
|
||||
|
||||
_updateDisableUserList: function() {
|
||||
let disableUserList = this._settings.get_boolean(GdmUtil.DISABLE_USER_LIST_KEY);
|
||||
if (disableUserList == this._disableUserList)
|
||||
return;
|
||||
|
||||
if (disableUserList != this._disableUserList) {
|
||||
this._disableUserList = disableUserList;
|
||||
this._disableUserList = disableUserList;
|
||||
|
||||
if (this._authPrompt.verificationStatus == AuthPrompt.AuthPromptStatus.NOT_VERIFYING)
|
||||
this._authPrompt.reset();
|
||||
}
|
||||
if (this._authPrompt.verificationStatus == GdmUtil.VerificationStatus.ASKING_FOR_USERNAME)
|
||||
this._reset();
|
||||
},
|
||||
|
||||
_updateCancelButton: function() {
|
||||
@@ -514,7 +516,7 @@ const LoginDialog = new Lang.Class({
|
||||
|
||||
// Hide the cancel button if the user list is disabled and we're asking for
|
||||
// a username
|
||||
if (this._authPrompt.verificationStatus == AuthPrompt.AuthPromptStatus.NOT_VERIFYING && this._disableUserList)
|
||||
if (this._authPrompt.verificationStatus == GdmUtil.VerificationStatus.ASKING_FOR_USERNAME && this._disableUserList)
|
||||
cancelVisible = false;
|
||||
else
|
||||
cancelVisible = true;
|
||||
@@ -539,12 +541,9 @@ const LoginDialog = new Lang.Class({
|
||||
return;
|
||||
|
||||
this._logoBin.destroy_all_children();
|
||||
if (this._logoFileUri) {
|
||||
let scaleFactor = St.ThemeContext.get_for_stage(global.stage).scale_factor;
|
||||
if (this._logoFileUri)
|
||||
this._logoBin.add_child(this._textureCache.load_uri_async(this._logoFileUri,
|
||||
-1, _LOGO_ICON_HEIGHT,
|
||||
scaleFactor));
|
||||
}
|
||||
-1, _LOGO_ICON_HEIGHT));
|
||||
},
|
||||
|
||||
_updateLogo: function() {
|
||||
@@ -562,19 +561,18 @@ const LoginDialog = new Lang.Class({
|
||||
this._showPrompt();
|
||||
},
|
||||
|
||||
_onReset: function(authPrompt, beginRequest) {
|
||||
_onReset: function() {
|
||||
this._sessionMenuButton.updateSensitivity(true);
|
||||
|
||||
this._user = null;
|
||||
|
||||
if (beginRequest == AuthPrompt.BeginRequestType.PROVIDE_USERNAME) {
|
||||
if (!this._disableUserList)
|
||||
this._showUserList();
|
||||
else
|
||||
this._hideUserListAskForUsernameAndBeginVerification();
|
||||
} else {
|
||||
this._hideUserListAndBeginVerification();
|
||||
}
|
||||
this._reset();
|
||||
},
|
||||
|
||||
_onNeedsUserName: function() {
|
||||
if (!this._disableUserList)
|
||||
this._showUserList();
|
||||
else
|
||||
this._hideUserListAskForUsernameAndBeginVerification();
|
||||
},
|
||||
|
||||
_onDefaultSessionChanged: function(client, sessionId) {
|
||||
@@ -582,8 +580,8 @@ const LoginDialog = new Lang.Class({
|
||||
},
|
||||
|
||||
_shouldShowSessionMenuButton: function() {
|
||||
if (this._authPrompt.verificationStatus != AuthPrompt.AuthPromptStatus.VERIFYING &&
|
||||
this._authPrompt.verificationStatus != AuthPrompt.AuthPromptStatus.VERIFICATION_FAILED)
|
||||
if (this._authPrompt.verificationStatus != GdmUtil.VerificationStatus.VERIFYING &&
|
||||
this._authPrompt.verificationStatus != GdmUtil.VerificationStatus.VERIFICATION_FAILED)
|
||||
return false;
|
||||
|
||||
if (this._user && this._user.is_loaded && this._user.is_logged_in())
|
||||
@@ -633,7 +631,7 @@ const LoginDialog = new Lang.Class({
|
||||
this._user = this._userManager.get_user(answer);
|
||||
this._authPrompt.clear();
|
||||
this._authPrompt.startSpinning();
|
||||
this._authPrompt.begin({ userName: answer });
|
||||
this._authPrompt.gotUserName(answer);
|
||||
this._updateCancelButton();
|
||||
|
||||
realmManager.disconnect(realmSignalId)
|
||||
@@ -643,33 +641,29 @@ const LoginDialog = new Lang.Class({
|
||||
this._showPrompt();
|
||||
},
|
||||
|
||||
_loginScreenSessionActivated: function() {
|
||||
if (this._authPrompt.verificationStatus != AuthPrompt.AuthPromptStatus.VERIFICATION_SUCCEEDED)
|
||||
return;
|
||||
_sessionActivated: function() {
|
||||
// We fade out the shell after logging in, and then re-set
|
||||
// the greeter wen we're VT switched to again.
|
||||
|
||||
Tweener.addTween(this.actor,
|
||||
{ opacity: 255,
|
||||
time: _FADE_ANIMATION_TIME,
|
||||
transition: 'easeOutQuad',
|
||||
onUpdate: function() {
|
||||
let children = Main.layoutManager.uiGroup.get_children();
|
||||
// XXX: re-trigger startup animation
|
||||
if (this._authPrompt.verificationStatus == GdmUtil.VerificationStatus.VERIFICATION_SUCCEEDED) {
|
||||
this._reset();
|
||||
|
||||
for (let i = 0; i < children.length; i++) {
|
||||
if (children[i] != Main.layoutManager.screenShieldGroup)
|
||||
children[i].opacity = this.actor.opacity;
|
||||
}
|
||||
},
|
||||
onUpdateScope: this,
|
||||
onComplete: function() {
|
||||
this._authPrompt.reset();
|
||||
},
|
||||
onCompleteScope: this });
|
||||
// XXX: do something better here
|
||||
this.actor.opacity = 255;
|
||||
|
||||
let children = Main.layoutManager.uiGroup.get_children();
|
||||
for (let i = 0; i < children.length; i++) {
|
||||
if (children[i] != Main.layoutManager.screenShieldGroup)
|
||||
children[i].opacity = 255;
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
_gotGreeterSessionProxy: function(proxy) {
|
||||
proxy.connect('g-properties-changed', Lang.bind(this, function() {
|
||||
if (proxy.Active)
|
||||
this._loginScreenSessionActivated();
|
||||
this._sessionActivated();
|
||||
}));
|
||||
},
|
||||
|
||||
@@ -688,11 +682,10 @@ const LoginDialog = new Lang.Class({
|
||||
},
|
||||
onUpdateScope: this,
|
||||
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);
|
||||
return GLib.SOURCE_REMOVE;
|
||||
}));
|
||||
GLib.Source.set_name_by_id(id, '[gnome-shell] this._greeter.call_start_session_when_ready_sync');
|
||||
},
|
||||
onCompleteScope: this });
|
||||
},
|
||||
@@ -748,7 +741,6 @@ const LoginDialog = new Lang.Class({
|
||||
hold.release();
|
||||
return GLib.SOURCE_REMOVE;
|
||||
});
|
||||
GLib.Source.set_name_by_id(this._timedLoginIdleTimeOutId, '[gnome-shell] this._timedLoginAnimationTime');
|
||||
return hold;
|
||||
},
|
||||
|
||||
@@ -845,11 +837,6 @@ const LoginDialog = new Lang.Class({
|
||||
this._askForUsernameAndBeginVerification();
|
||||
},
|
||||
|
||||
_hideUserListAndBeginVerification: function() {
|
||||
this._hideUserList();
|
||||
this._authPrompt.begin();
|
||||
},
|
||||
|
||||
_showUserList: function() {
|
||||
this._ensureUserListLoaded();
|
||||
this._authPrompt.hide();
|
||||
@@ -863,11 +850,7 @@ const LoginDialog = new Lang.Class({
|
||||
this._authPrompt.setUser(item.user);
|
||||
|
||||
let userName = item.user.get_user_name();
|
||||
let hold = new Batch.Hold();
|
||||
|
||||
this._authPrompt.begin({ userName: userName,
|
||||
hold: hold });
|
||||
return hold;
|
||||
this._authPrompt.gotUserName(userName);
|
||||
},
|
||||
|
||||
_onUserListActivated: function(activatedItem) {
|
||||
@@ -882,9 +865,9 @@ const LoginDialog = new Lang.Class({
|
||||
|
||||
this._updateCancelButton();
|
||||
|
||||
let batch = new Batch.ConcurrentBatch(this, [new Batch.ConsecutiveBatch(this, tasks),
|
||||
this._beginVerificationForItem(activatedItem)]);
|
||||
let batch = new Batch.ConsecutiveBatch(this, tasks);
|
||||
batch.run();
|
||||
this._beginVerificationForItem(activatedItem);
|
||||
},
|
||||
|
||||
_onDestroy: function() {
|
||||
|
217
js/gdm/util.js
217
js/gdm/util.js
@@ -119,6 +119,14 @@ function cloneAndFadeOutActor(actor) {
|
||||
return hold;
|
||||
}
|
||||
|
||||
const VerificationStatus = {
|
||||
NOT_VERIFYING: 0,
|
||||
ASKING_FOR_USERNAME: 1,
|
||||
VERIFYING: 2,
|
||||
VERIFICATION_FAILED: 3,
|
||||
VERIFICATION_SUCCEEDED: 4,
|
||||
};
|
||||
|
||||
const ShellUserVerifier = new Lang.Class({
|
||||
Name: 'ShellUserVerifier',
|
||||
|
||||
@@ -131,7 +139,6 @@ const ShellUserVerifier = new Lang.Class({
|
||||
this._settings = new Gio.Settings({ schema: LOGIN_SCREEN_SCHEMA });
|
||||
this._settings.connect('changed',
|
||||
Lang.bind(this, this._updateDefaultService));
|
||||
this._updateDefaultService();
|
||||
|
||||
this._fprintManager = new Fprint.FprintManager();
|
||||
this._smartcardManager = SmartcardManager.getSmartcardManager();
|
||||
@@ -152,45 +159,69 @@ const ShellUserVerifier = new Lang.Class({
|
||||
this.hasPendingMessages = false;
|
||||
this.reauthenticating = false;
|
||||
|
||||
this._failCounter = 0;
|
||||
|
||||
this._oVirtCredentialsManager = OVirt.getOVirtCredentialsManager();
|
||||
|
||||
this._oVirtCredentialsManager.connect('user-authenticated', Lang.bind(this, this._oVirtUserAuthenticated));
|
||||
if (this._oVirtCredentialsManager.hasToken())
|
||||
this._oVirtUserAuthenticated(this._oVirtCredentialsManager.getToken());
|
||||
|
||||
this._oVirtCredentialsManager.connect('user-authenticated',
|
||||
Lang.bind(this, this._oVirtUserAuthenticated));
|
||||
this._reset();
|
||||
},
|
||||
|
||||
begin: function(userName, hold) {
|
||||
this._cancellable = new Gio.Cancellable();
|
||||
this._hold = hold;
|
||||
_reset: function() {
|
||||
// Clear previous attempts to authenticate
|
||||
this.verificationStatus = VerificationStatus.NOT_VERIFYING;
|
||||
this._userName = null;
|
||||
this._failCounter = 0;
|
||||
this._updateDefaultService();
|
||||
this.emit('reset');
|
||||
},
|
||||
|
||||
begin: function() {
|
||||
if (this._mode == AuthPromptMode.UNLOCK_ONLY) {
|
||||
// The user is constant at the unlock screen, so it will immediately
|
||||
// respond to the request with the username
|
||||
needsUsername = true;
|
||||
} else if (this._serviceIsForeground(GdmUtil.OVIRT_SERVICE_NAME) ||
|
||||
(this._smartcardDetected &&
|
||||
this._serviceIsForeground(GdmUtil.SMARTCARD_SERVICE_NAME))) {
|
||||
// We don't need to know the username if the user preempted the login screen
|
||||
// with a smartcard or with preauthenticated oVirt credentials
|
||||
needsUsername = false;
|
||||
} else {
|
||||
// In all other cases, we should get the username up front.
|
||||
needsUsername = true;
|
||||
}
|
||||
|
||||
if (needsUsername) {
|
||||
this.verificationStatus = VerificationStatus.ASKING_FOR_USERNAME;
|
||||
this.emit('needs-username');
|
||||
} else {
|
||||
this._beginAuthentication();
|
||||
}
|
||||
},
|
||||
|
||||
gotUserName: function(userName) {
|
||||
this._userName = userName;
|
||||
this._beginAuthentication();
|
||||
},
|
||||
|
||||
_beginAuthentication: function() {
|
||||
this.verificationStatus = VerificationStatus.VERIFYING;
|
||||
this._cancellable = new Gio.Cancellable();
|
||||
this.reauthenticating = false;
|
||||
|
||||
this._checkForFingerprintReader();
|
||||
|
||||
if (userName) {
|
||||
if (this._userName) {
|
||||
// If possible, reauthenticate an already running session,
|
||||
// so any session specific credentials get updated appropriately
|
||||
this._client.open_reauthentication_channel(userName, this._cancellable,
|
||||
this._client.open_reauthentication_channel(this._userName, this._cancellable,
|
||||
Lang.bind(this, this._reauthenticationChannelOpened));
|
||||
} else {
|
||||
this._client.get_user_verifier(this._cancellable, Lang.bind(this, this._userVerifierGot));
|
||||
}
|
||||
},
|
||||
|
||||
cancel: function() {
|
||||
if (this._cancellable)
|
||||
this._cancellable.cancel();
|
||||
|
||||
if (this._userVerifier) {
|
||||
this._userVerifier.call_cancel_sync(null);
|
||||
this.clear();
|
||||
}
|
||||
},
|
||||
|
||||
clear: function() {
|
||||
if (this._cancellable) {
|
||||
this._cancellable.cancel();
|
||||
@@ -198,6 +229,7 @@ const ShellUserVerifier = new Lang.Class({
|
||||
}
|
||||
|
||||
if (this._userVerifier) {
|
||||
this._userVerifier.call_cancel_sync(null);
|
||||
this._userVerifier.run_dispose();
|
||||
this._userVerifier = null;
|
||||
}
|
||||
@@ -205,24 +237,29 @@ const ShellUserVerifier = new Lang.Class({
|
||||
this._clearMessageQueue();
|
||||
},
|
||||
|
||||
answerQuery: function(serviceName, answer) {
|
||||
if (!this.hasPendingMessages) {
|
||||
this._userVerifier.call_answer_query(serviceName, answer, this._cancellable, null);
|
||||
_doAfterPendingMessages: function(func) {
|
||||
if (this.hasPendingMessages) {
|
||||
let signalId = this.connect('no-more-messages', Lang.bind(this, function() {
|
||||
this.disconnect(signalId);
|
||||
func();
|
||||
}));
|
||||
} else {
|
||||
let signalId = this.connect('no-more-messages',
|
||||
Lang.bind(this, function() {
|
||||
this.disconnect(signalId);
|
||||
this._userVerifier.call_answer_query(serviceName, answer, this._cancellable, null);
|
||||
}));
|
||||
func();
|
||||
}
|
||||
},
|
||||
|
||||
answerQuery: function(serviceName, answer) {
|
||||
this._doAfterPendingMessages(Lang.bind(this, function() {
|
||||
this._userVerifier.call_answer_query(serviceName, answer, this._cancellable, null);
|
||||
}));
|
||||
},
|
||||
|
||||
_getIntervalForMessage: function(message) {
|
||||
// We probably could be smarter here
|
||||
return message.length * USER_READ_TIME;
|
||||
},
|
||||
|
||||
finishMessageQueue: function() {
|
||||
_finishMessageQueue: function() {
|
||||
if (!this.hasPendingMessages)
|
||||
return;
|
||||
|
||||
@@ -234,7 +271,7 @@ const ShellUserVerifier = new Lang.Class({
|
||||
|
||||
_queueMessageTimeout: function() {
|
||||
if (this._messageQueue.length == 0) {
|
||||
this.finishMessageQueue();
|
||||
this._finishMessageQueue();
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -252,7 +289,6 @@ const ShellUserVerifier = new Lang.Class({
|
||||
this._queueMessageTimeout();
|
||||
return GLib.SOURCE_REMOVE;
|
||||
}));
|
||||
GLib.Source.set_name_by_id(this._messageQueueTimeoutId, '[gnome-shell] this._queueMessageTimeout');
|
||||
},
|
||||
|
||||
_queueMessage: function(message, messageType) {
|
||||
@@ -264,7 +300,7 @@ const ShellUserVerifier = new Lang.Class({
|
||||
},
|
||||
|
||||
_clearMessageQueue: function() {
|
||||
this.finishMessageQueue();
|
||||
this._finishMessageQueue();
|
||||
|
||||
if (this._messageQueueTimeoutId != 0) {
|
||||
GLib.source_remove(this._messageQueueTimeoutId);
|
||||
@@ -289,9 +325,9 @@ const ShellUserVerifier = new Lang.Class({
|
||||
}));
|
||||
},
|
||||
|
||||
_oVirtUserAuthenticated: function(token) {
|
||||
this._preemptingService = OVIRT_SERVICE_NAME;
|
||||
this.emit('ovirt-user-authenticated');
|
||||
_oVirtUserAuthenticated: function() {
|
||||
if (this.verificationStatus != GdmUtil.VerificationStatus.VERIFICATION_SUCCEEDED)
|
||||
this._reset();
|
||||
},
|
||||
|
||||
_checkForSmartcard: function() {
|
||||
@@ -299,26 +335,34 @@ const ShellUserVerifier = new Lang.Class({
|
||||
|
||||
if (!this._settings.get_boolean(SMARTCARD_AUTHENTICATION_KEY))
|
||||
smartcardDetected = false;
|
||||
else if (this._reauthOnly)
|
||||
else if (this.reauthenticating)
|
||||
smartcardDetected = this._smartcardManager.hasInsertedLoginToken();
|
||||
else
|
||||
smartcardDetected = this._smartcardManager.hasInsertedTokens();
|
||||
|
||||
if (smartcardDetected != this.smartcardDetected) {
|
||||
this.smartcardDetected = smartcardDetected;
|
||||
if (this._smartcardDetected == smartcardDetected)
|
||||
return;
|
||||
|
||||
if (this.smartcardDetected)
|
||||
this._preemptingService = SMARTCARD_SERVICE_NAME;
|
||||
else if (this._preemptingService == SMARTCARD_SERVICE_NAME)
|
||||
this._preemptingService = null;
|
||||
this._smartcardDetected = smartcardDetected;
|
||||
|
||||
this.emit('smartcard-status-changed');
|
||||
}
|
||||
// Most of the time we want to reset if the user inserts or removes
|
||||
// a smartcard. Smartcard insertion "preempts" what the user was
|
||||
// doing, and smartcard removal aborts the preemption.
|
||||
// The exceptions are: 1) Don't reset on smartcard insertion if we're already verifying
|
||||
// with a smartcard
|
||||
// 2) Don't reset if we've already succeeded at verification and
|
||||
// the user is getting logged in.
|
||||
if (this._serviceIsDefault(SMARTCARD_SERVICE_NAME) &&
|
||||
this.verificationStatus == VerificationStatus.VERIFYING &&
|
||||
this._smartcardDetected)
|
||||
return;
|
||||
|
||||
if (this.verificationStatus != VerificationStatus.VERIFICATION_SUCCEEDED)
|
||||
this._reset();
|
||||
},
|
||||
|
||||
_reportInitError: function(where, error) {
|
||||
logError(error, where);
|
||||
this._hold.release();
|
||||
|
||||
this._queueMessage(_("Authentication error"), MessageType.ERROR);
|
||||
this._verificationFailed(false);
|
||||
@@ -344,7 +388,6 @@ const ShellUserVerifier = new Lang.Class({
|
||||
this.reauthenticating = true;
|
||||
this._connectSignals();
|
||||
this._beginVerification();
|
||||
this._hold.release();
|
||||
},
|
||||
|
||||
_userVerifierGot: function(client, result) {
|
||||
@@ -359,7 +402,6 @@ const ShellUserVerifier = new Lang.Class({
|
||||
|
||||
this._connectSignals();
|
||||
this._beginVerification();
|
||||
this._hold.release();
|
||||
},
|
||||
|
||||
_connectSignals: function() {
|
||||
@@ -373,31 +415,32 @@ const ShellUserVerifier = new Lang.Class({
|
||||
},
|
||||
|
||||
_getForegroundService: function() {
|
||||
if (this._preemptingService)
|
||||
return this._preemptingService;
|
||||
if (this._oVirtCredentialsManager.hasToken())
|
||||
return OVIRT_SERVICE_NAME;
|
||||
if (this._smartcardDetected)
|
||||
return SMARTCARD_SERVICE_NAME;
|
||||
|
||||
return this._defaultService;
|
||||
},
|
||||
|
||||
serviceIsForeground: function(serviceName) {
|
||||
_serviceIsForeground: function(serviceName) {
|
||||
return serviceName == this._getForegroundService();
|
||||
},
|
||||
|
||||
serviceIsDefault: function(serviceName) {
|
||||
_serviceIsDefault: function(serviceName) {
|
||||
return serviceName == this._defaultService;
|
||||
},
|
||||
|
||||
_updateDefaultService: function() {
|
||||
if (this._settings.get_boolean(PASSWORD_AUTHENTICATION_KEY))
|
||||
this._defaultService = PASSWORD_SERVICE_NAME;
|
||||
else if (this.smartcardDetected)
|
||||
else if (this._smartcardDetected)
|
||||
this._defaultService = SMARTCARD_SERVICE_NAME;
|
||||
else if (this._haveFingerprintReader)
|
||||
this._defaultService = FINGERPRINT_SERVICE_NAME;
|
||||
},
|
||||
|
||||
_startService: function(serviceName) {
|
||||
this._hold.acquire();
|
||||
if (this._userName) {
|
||||
this._userVerifier.call_begin_verification_for_user(serviceName,
|
||||
this._userName,
|
||||
@@ -411,8 +454,6 @@ const ShellUserVerifier = new Lang.Class({
|
||||
this._reportInitError('Failed to start verification for user', e);
|
||||
return;
|
||||
}
|
||||
|
||||
this._hold.release();
|
||||
}));
|
||||
} else {
|
||||
this._userVerifier.call_begin_verification(serviceName,
|
||||
@@ -426,8 +467,6 @@ const ShellUserVerifier = new Lang.Class({
|
||||
this._reportInitError('Failed to start verification', e);
|
||||
return;
|
||||
}
|
||||
|
||||
this._hold.release();
|
||||
}));
|
||||
}
|
||||
},
|
||||
@@ -435,12 +474,12 @@ const ShellUserVerifier = new Lang.Class({
|
||||
_beginVerification: function() {
|
||||
this._startService(this._getForegroundService());
|
||||
|
||||
if (this._userName && this._haveFingerprintReader && !this.serviceIsForeground(FINGERPRINT_SERVICE_NAME))
|
||||
if (this._userName && this._haveFingerprintReader && !this._serviceIsForeground(FINGERPRINT_SERVICE_NAME))
|
||||
this._startService(FINGERPRINT_SERVICE_NAME);
|
||||
},
|
||||
|
||||
_onInfo: function(client, serviceName, info) {
|
||||
if (this.serviceIsForeground(serviceName)) {
|
||||
if (this._serviceIsForeground(serviceName)) {
|
||||
this._queueMessage(info, MessageType.INFO);
|
||||
} else if (serviceName == FINGERPRINT_SERVICE_NAME &&
|
||||
this._haveFingerprintReader) {
|
||||
@@ -455,21 +494,21 @@ const ShellUserVerifier = new Lang.Class({
|
||||
},
|
||||
|
||||
_onProblem: function(client, serviceName, problem) {
|
||||
if (!this.serviceIsForeground(serviceName))
|
||||
if (!this._serviceIsForeground(serviceName))
|
||||
return;
|
||||
|
||||
this._queueMessage(problem, MessageType.ERROR);
|
||||
},
|
||||
|
||||
_onInfoQuery: function(client, serviceName, question) {
|
||||
if (!this.serviceIsForeground(serviceName))
|
||||
if (!this._serviceIsForeground(serviceName))
|
||||
return;
|
||||
|
||||
this.emit('ask-question', serviceName, question, '');
|
||||
},
|
||||
|
||||
_onSecretInfoQuery: function(client, serviceName, secretQuestion) {
|
||||
if (!this.serviceIsForeground(serviceName))
|
||||
if (!this._serviceIsForeground(serviceName))
|
||||
return;
|
||||
|
||||
if (serviceName == OVIRT_SERVICE_NAME) {
|
||||
@@ -482,24 +521,11 @@ const ShellUserVerifier = new Lang.Class({
|
||||
},
|
||||
|
||||
_onReset: function() {
|
||||
// Clear previous attempts to authenticate
|
||||
this._failCounter = 0;
|
||||
this._updateDefaultService();
|
||||
|
||||
this.emit('reset');
|
||||
this._reset();
|
||||
},
|
||||
|
||||
_onVerificationComplete: function() {
|
||||
this.emit('verification-complete');
|
||||
},
|
||||
|
||||
_cancelAndReset: function() {
|
||||
this.cancel();
|
||||
this._onReset();
|
||||
},
|
||||
|
||||
_retry: function() {
|
||||
this.begin(this._userName, new Batch.Hold());
|
||||
this.verificationStatus = VerificationStatus.VERIFICATION_SUCCEEDED;
|
||||
},
|
||||
|
||||
_verificationFailed: function(retry) {
|
||||
@@ -512,38 +538,23 @@ const ShellUserVerifier = new Lang.Class({
|
||||
let canRetry = retry && this._userName &&
|
||||
this._failCounter < this._settings.get_int(ALLOWED_FAILURES_KEY);
|
||||
|
||||
if (canRetry) {
|
||||
if (!this.hasPendingMessages) {
|
||||
this._retry();
|
||||
} else {
|
||||
let signalId = this.connect('no-more-messages',
|
||||
Lang.bind(this, function() {
|
||||
this.disconnect(signalId);
|
||||
this._retry();
|
||||
}));
|
||||
}
|
||||
} else {
|
||||
if (!this.hasPendingMessages) {
|
||||
this._cancelAndReset();
|
||||
} else {
|
||||
let signalId = this.connect('no-more-messages',
|
||||
Lang.bind(this, function() {
|
||||
this.disconnect(signalId);
|
||||
this._cancelAndReset();
|
||||
}));
|
||||
}
|
||||
}
|
||||
|
||||
this.verificationStatus = VerificationStatus.VERIFICATION_FAILED;
|
||||
this.emit('verification-failed');
|
||||
|
||||
this._doAfterPendingMessages(Lang.bind(this, function() {
|
||||
if (canRetry)
|
||||
this._beginAuthentication();
|
||||
else
|
||||
this.clear();
|
||||
}));
|
||||
},
|
||||
|
||||
_onConversationStopped: function(client, serviceName) {
|
||||
// If the login failed with the preauthenticated oVirt credentials
|
||||
// then discard the credentials and revert to default authentication
|
||||
// mechanism.
|
||||
if (this.serviceIsForeground(OVIRT_SERVICE_NAME)) {
|
||||
if (this._serviceIsForeground(OVIRT_SERVICE_NAME)) {
|
||||
this._oVirtCredentialsManager.resetToken();
|
||||
this._preemptingService = null;
|
||||
this._verificationFailed(false);
|
||||
return;
|
||||
}
|
||||
@@ -551,7 +562,7 @@ const ShellUserVerifier = new Lang.Class({
|
||||
// if the password service fails, then cancel everything.
|
||||
// But if, e.g., fingerprint fails, still give
|
||||
// password authentication a chance to succeed
|
||||
if (this.serviceIsForeground(serviceName)) {
|
||||
if (this._serviceIsForeground(serviceName)) {
|
||||
this._verificationFailed(true);
|
||||
}
|
||||
},
|
||||
|
@@ -84,7 +84,6 @@
|
||||
<file>ui/userWidget.js</file>
|
||||
<file>ui/viewSelector.js</file>
|
||||
<file>ui/windowAttentionHandler.js</file>
|
||||
<file>ui/windowMenu.js</file>
|
||||
<file>ui/windowManager.js</file>
|
||||
<file>ui/workspace.js</file>
|
||||
<file>ui/workspaceSwitcherPopup.js</file>
|
||||
|
@@ -39,13 +39,39 @@ const SystemdLoginSessionIface = '<node> \
|
||||
<interface name="org.freedesktop.login1.Session"> \
|
||||
<signal name="Lock" /> \
|
||||
<signal name="Unlock" /> \
|
||||
<property name="Active" type="b" access="read" /> \
|
||||
<property name="Active" access="readonly" /> \
|
||||
</interface> \
|
||||
</node>';
|
||||
|
||||
const SystemdLoginManager = Gio.DBusProxy.makeProxyWrapper(SystemdLoginManagerIface);
|
||||
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() {
|
||||
return GLib.access("/run/systemd/seats", 0) >= 0;
|
||||
}
|
||||
@@ -75,7 +101,7 @@ function canLock() {
|
||||
-1, null);
|
||||
|
||||
let version = result.deep_unpack()[0].deep_unpack();
|
||||
return haveSystemd() && versionCompare('3.5.91', version);
|
||||
return versionCompare('3.5.91', version);
|
||||
} catch(e) {
|
||||
return false;
|
||||
}
|
||||
@@ -93,7 +119,7 @@ function getLoginManager() {
|
||||
if (haveSystemd())
|
||||
_loginManager = new LoginManagerSystemd();
|
||||
else
|
||||
_loginManager = new LoginManagerDummy();
|
||||
_loginManager = new LoginManagerConsoleKit();
|
||||
}
|
||||
|
||||
return _loginManager;
|
||||
@@ -110,6 +136,9 @@ const LoginManagerSystemd = new Lang.Class({
|
||||
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) {
|
||||
if (this._currentSession) {
|
||||
callback (this._currentSession);
|
||||
@@ -162,7 +191,7 @@ const LoginManagerSystemd = new Lang.Class({
|
||||
let fd = -1;
|
||||
try {
|
||||
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 }));
|
||||
} catch(e) {
|
||||
logError(e, "Error getting systemd inhibitor");
|
||||
@@ -177,13 +206,35 @@ const LoginManagerSystemd = new Lang.Class({
|
||||
});
|
||||
Signals.addSignalMethods(LoginManagerSystemd.prototype);
|
||||
|
||||
const LoginManagerDummy = new Lang.Class({
|
||||
Name: 'LoginManagerDummy',
|
||||
const LoginManagerConsoleKit = new Lang.Class({
|
||||
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) {
|
||||
// we could return a DummySession object that fakes whatever callers
|
||||
// expect (at the time of writing: connect() and connectSignal()
|
||||
// methods), but just never calling the callback should be safer
|
||||
if (this._currentSession) {
|
||||
callback (this._currentSession);
|
||||
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) {
|
||||
@@ -203,4 +254,4 @@ const LoginManagerDummy = new Lang.Class({
|
||||
callback(null);
|
||||
}
|
||||
});
|
||||
Signals.addSignalMethods(LoginManagerDummy.prototype);
|
||||
Signals.addSignalMethods(LoginManagerConsoleKit.prototype);
|
||||
|
@@ -129,7 +129,7 @@ function trySpawn(argv)
|
||||
// Dummy child watch; we don't want to double-fork internally
|
||||
// because then we lose the parent-child relationship, which
|
||||
// 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:
|
||||
|
@@ -167,8 +167,6 @@ const AppSwitcherPopup = new Lang.Class({
|
||||
this._select(this._selectedIndex, this._nextWindow());
|
||||
else if (keysym == Clutter.Up)
|
||||
this._select(this._selectedIndex, null, true);
|
||||
else
|
||||
return Clutter.EVENT_PROPAGATE;
|
||||
} else {
|
||||
if (keysym == Clutter.Left)
|
||||
this._select(this._previous());
|
||||
@@ -176,11 +174,7 @@ const AppSwitcherPopup = new Lang.Class({
|
||||
this._select(this._next());
|
||||
else if (keysym == Clutter.Down)
|
||||
this._select(this._selectedIndex, 0);
|
||||
else
|
||||
return Clutter.EVENT_PROPAGATE;
|
||||
}
|
||||
|
||||
return Clutter.EVENT_STOP;
|
||||
},
|
||||
|
||||
_scrollHandler: function(direction) {
|
||||
@@ -311,7 +305,6 @@ const AppSwitcherPopup = new Lang.Class({
|
||||
this._thumbnailTimeoutId = Mainloop.timeout_add (
|
||||
THUMBNAIL_POPUP_TIME,
|
||||
Lang.bind(this, this._timeoutPopupThumbnails));
|
||||
GLib.Source.set_name_by_id(this._thumbnailTimeoutId, '[gnome-shell] this._timeoutPopupThumbnails');
|
||||
}
|
||||
},
|
||||
|
||||
@@ -410,11 +403,7 @@ const WindowSwitcherPopup = new Lang.Class({
|
||||
this._select(this._previous());
|
||||
else if (keysym == Clutter.Right)
|
||||
this._select(this._next());
|
||||
else
|
||||
return Clutter.EVENT_PROPAGATE;
|
||||
}
|
||||
|
||||
return Clutter.EVENT_STOP;
|
||||
},
|
||||
|
||||
_finish: function() {
|
||||
@@ -567,7 +556,6 @@ const AppSwitcher = new Lang.Class({
|
||||
this._mouseTimeOutId = 0;
|
||||
return GLib.SOURCE_REMOVE;
|
||||
}));
|
||||
GLib.Source.set_name_by_id(this._mouseTimeOutId, '[gnome-shell] this._enterItem');
|
||||
} else
|
||||
this._itemEntered(index);
|
||||
},
|
||||
|
@@ -21,9 +21,7 @@ const Animation = new Lang.Class({
|
||||
this._isPlaying = false;
|
||||
this._timeoutId = 0;
|
||||
this._frame = 0;
|
||||
|
||||
let scaleFactor = St.ThemeContext.get_for_stage(global.stage).scale_factor;
|
||||
this._animations = St.TextureCache.get_default().load_sliced_image (filename, width, height, scaleFactor,
|
||||
this._animations = St.TextureCache.get_default().load_sliced_image (filename, width, height,
|
||||
Lang.bind(this, this._animationsLoaded));
|
||||
this.actor.set_child(this._animations);
|
||||
},
|
||||
@@ -34,7 +32,6 @@ const Animation = new Lang.Class({
|
||||
this._showFrame(0);
|
||||
|
||||
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;
|
||||
|
@@ -41,7 +41,9 @@ const MIN_FREQUENT_APPS_COUNT = 3;
|
||||
const INDICATORS_BASE_TIME = 0.25;
|
||||
const INDICATORS_ANIMATION_DELAY = 0.125;
|
||||
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 VIEWS_SWITCH_TIME = 0.4;
|
||||
@@ -79,10 +81,6 @@ function _getFolderName(folder) {
|
||||
return name;
|
||||
}
|
||||
|
||||
function clamp(value, min, max) {
|
||||
return Math.max(min, Math.min(max, value));
|
||||
}
|
||||
|
||||
const BaseAppView = new Lang.Class({
|
||||
Name: 'BaseAppView',
|
||||
Abstract: true,
|
||||
@@ -101,9 +99,6 @@ const BaseAppView = new Lang.Class({
|
||||
else
|
||||
this._grid = new IconGrid.IconGrid(gridParams);
|
||||
|
||||
this._grid.connect('key-focus-in', Lang.bind(this, function(grid, actor) {
|
||||
this._keyFocusIn(actor);
|
||||
}));
|
||||
// Standard hack for ClutterBinLayout
|
||||
this._grid.actor.x_expand = true;
|
||||
|
||||
@@ -111,10 +106,6 @@ const BaseAppView = new Lang.Class({
|
||||
this._allItems = [];
|
||||
},
|
||||
|
||||
_keyFocusIn: function(actor) {
|
||||
// Nothing by default
|
||||
},
|
||||
|
||||
removeAll: function() {
|
||||
this._grid.destroyAll();
|
||||
this._items = {};
|
||||
@@ -441,8 +432,8 @@ const AllView = new Lang.Class({
|
||||
},
|
||||
|
||||
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)
|
||||
return;
|
||||
if (this._displayingPopup && this._currentPopup)
|
||||
@@ -474,12 +465,14 @@ const AllView = new Lang.Class({
|
||||
// longer than PAGE_SWITCH_TIME
|
||||
time = Math.min(time, PAGE_SWITCH_TIME);
|
||||
|
||||
this._currentPage = pageNumber;
|
||||
Tweener.addTween(this._adjustment,
|
||||
{ value: this._grid.getPageY(this._currentPage),
|
||||
time: time,
|
||||
transition: 'easeOutQuad' });
|
||||
this._pageIndicators.setCurrentPage(pageNumber);
|
||||
if (pageNumber < this._grid.nPages() && pageNumber >= 0) {
|
||||
this._currentPage = pageNumber;
|
||||
Tweener.addTween(this._adjustment,
|
||||
{ value: this._grid.getPageY(this._currentPage),
|
||||
time: time,
|
||||
transition: 'easeOutQuad' });
|
||||
this._pageIndicators.setCurrentPage(pageNumber);
|
||||
}
|
||||
},
|
||||
|
||||
_diffToPage: function (pageNumber) {
|
||||
@@ -526,19 +519,15 @@ const AllView = new Lang.Class({
|
||||
_onPanEnd: function(action) {
|
||||
if (this._displayingPopup)
|
||||
return;
|
||||
|
||||
let pageHeight = this._grid.getPageHeight();
|
||||
|
||||
// Calculate the scroll value we'd be at, which is our current
|
||||
// scroll plus any velocity the user had when they released
|
||||
// their finger.
|
||||
|
||||
let velocity = -action.get_velocity(0)[2];
|
||||
let endPanValue = this._adjustment.value + velocity;
|
||||
|
||||
let closestPage = Math.round(endPanValue / pageHeight);
|
||||
this.goToPage(closestPage);
|
||||
|
||||
let diffCurrentPage = this._diffToPage(this._currentPage);
|
||||
if (diffCurrentPage > this._scrollView.height * PAGE_SWITCH_TRESHOLD) {
|
||||
if (action.get_velocity(0)[2] > 0)
|
||||
this.goToPage(this._currentPage - 1);
|
||||
else
|
||||
this.goToPage(this._currentPage + 1);
|
||||
} else {
|
||||
this.goToPage(this._currentPage);
|
||||
}
|
||||
this._panning = false;
|
||||
},
|
||||
|
||||
@@ -569,7 +558,7 @@ const AllView = new Lang.Class({
|
||||
}));
|
||||
},
|
||||
|
||||
_keyFocusIn: function(icon) {
|
||||
_ensureIconVisible: function(icon) {
|
||||
let itemPage = this._grid.getItemPage(icon);
|
||||
this.goToPage(itemPage);
|
||||
},
|
||||
@@ -768,7 +757,7 @@ const AppDisplay = new Lang.Class({
|
||||
this._viewStack = new St.Widget({ x_expand: true, y_expand: true,
|
||||
layout_manager: this._viewStackLayout });
|
||||
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 });
|
||||
this._controls = new St.Widget({ style_class: 'app-view-controls',
|
||||
layout_manager: layout });
|
||||
@@ -940,26 +929,19 @@ const FolderView = new Lang.Class({
|
||||
this.actor.add_action(action);
|
||||
},
|
||||
|
||||
_keyFocusIn: function(actor) {
|
||||
Util.ensureActorVisibleInScrollView(this.actor, actor);
|
||||
},
|
||||
|
||||
createFolderIcon: function(size) {
|
||||
let layout = new Clutter.TableLayout();
|
||||
let icon = new St.Widget({ layout_manager: layout,
|
||||
style_class: 'app-folder-icon' });
|
||||
layout.hookup_style(icon);
|
||||
let subSize = Math.floor(FOLDER_SUBICON_FRACTION * size);
|
||||
|
||||
let numItems = this._allItems.length;
|
||||
for (let i = 0; i < 4; i++) {
|
||||
let bin;
|
||||
if (i < numItems) {
|
||||
let texture = this._allItems[i].app.create_icon_texture(subSize);
|
||||
bin = new St.Bin({ child: texture });
|
||||
} else {
|
||||
bin = new St.Bin({ width: subSize, height: subSize });
|
||||
}
|
||||
let aligns = [ Clutter.ActorAlign.START, Clutter.ActorAlign.END ];
|
||||
for (let i = 0; i < Math.min(this._allItems.length, 4); i++) {
|
||||
let texture = this._allItems[i].app.create_icon_texture(subSize);
|
||||
let bin = new St.Bin({ child: texture,
|
||||
x_expand: true, y_expand: true });
|
||||
bin.set_x_align(aligns[i % 2]);
|
||||
bin.set_y_align(aligns[Math.floor(i / 2)]);
|
||||
layout.pack(bin, i % 2, Math.floor(i / 2));
|
||||
}
|
||||
|
||||
@@ -1406,7 +1388,6 @@ const AppIcon = new Lang.Class({
|
||||
this.popupMenu();
|
||||
return GLib.SOURCE_REMOVE;
|
||||
}));
|
||||
GLib.Source.set_name_by_id(this._menuTimeoutId, '[gnome-shell] this.popupMenu');
|
||||
} else if (button == 3) {
|
||||
this.popupMenu();
|
||||
return Clutter.EVENT_STOP;
|
||||
@@ -1602,26 +1583,6 @@ const AppIconMenu = new Lang.Class({
|
||||
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();
|
||||
});
|
||||
}));
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
|
@@ -132,25 +132,6 @@ const BackgroundCache = new Lang.Class({
|
||||
this._removeContent(this._images, content);
|
||||
},
|
||||
|
||||
_attachCallerToFileLoad: function(caller, fileLoad) {
|
||||
fileLoad.callers.push(caller);
|
||||
|
||||
if (!caller.cancellable)
|
||||
return;
|
||||
|
||||
caller.cancellable.connect(Lang.bind(this, function() {
|
||||
let idx = fileLoad.callers.indexOf(caller);
|
||||
fileLoad.callers.splice(idx, 1);
|
||||
|
||||
if (fileLoad.callers.length == 0) {
|
||||
fileLoad.cancellable.cancel();
|
||||
|
||||
let idx = this._pendingFileLoads.indexOf(fileLoad);
|
||||
this._pendingFileLoads.splice(idx, 1);
|
||||
}
|
||||
}));
|
||||
},
|
||||
|
||||
_loadImageContent: function(params) {
|
||||
params = Params.parse(params, { monitorIndex: 0,
|
||||
style: null,
|
||||
@@ -159,28 +140,27 @@ const BackgroundCache = new Lang.Class({
|
||||
cancellable: null,
|
||||
onFinished: null });
|
||||
|
||||
let caller = { monitorIndex: params.monitorIndex,
|
||||
effects: params.effects,
|
||||
cancellable: params.cancellable,
|
||||
onFinished: params.onFinished };
|
||||
|
||||
for (let i = 0; i < this._pendingFileLoads.length; i++) {
|
||||
let fileLoad = this._pendingFileLoads[i];
|
||||
|
||||
if (fileLoad.filename == params.filename &&
|
||||
fileLoad.style == params.style) {
|
||||
this._attachCallerToFileLoad(caller, fileLoad);
|
||||
if (this._pendingFileLoads[i].filename == params.filename &&
|
||||
this._pendingFileLoads[i].style == params.style) {
|
||||
this._pendingFileLoads[i].callers.push({ shouldCopy: true,
|
||||
monitorIndex: params.monitorIndex,
|
||||
effects: params.effects,
|
||||
onFinished: params.onFinished });
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
let fileLoad = { filename: params.filename,
|
||||
style: params.style,
|
||||
cancellable: new Gio.Cancellable(),
|
||||
callers: [] };
|
||||
this._attachCallerToFileLoad(caller, fileLoad);
|
||||
this._pendingFileLoads.push({ filename: params.filename,
|
||||
style: params.style,
|
||||
callers: [{ shouldCopy: false,
|
||||
monitorIndex: params.monitorIndex,
|
||||
effects: params.effects,
|
||||
onFinished: params.onFinished }] });
|
||||
|
||||
let content = new Meta.Background({ meta_screen: global.screen });
|
||||
let content = new Meta.Background({ meta_screen: global.screen,
|
||||
monitor: params.monitorIndex,
|
||||
effects: params.effects });
|
||||
|
||||
content.load_file_async(params.filename,
|
||||
params.style,
|
||||
@@ -191,26 +171,35 @@ const BackgroundCache = new Lang.Class({
|
||||
content.load_file_finish(result);
|
||||
|
||||
this._monitorFile(params.filename);
|
||||
this._images.push(content);
|
||||
} catch(e) {
|
||||
content = null;
|
||||
}
|
||||
|
||||
for (let i = 0; i < fileLoad.callers.length; i++) {
|
||||
let caller = fileLoad.callers[i];
|
||||
if (caller.onFinished) {
|
||||
let newContent;
|
||||
for (let i = 0; i < this._pendingFileLoads.length; i++) {
|
||||
let pendingLoad = this._pendingFileLoads[i];
|
||||
if (pendingLoad.filename != params.filename ||
|
||||
pendingLoad.style != params.style)
|
||||
continue;
|
||||
|
||||
if (content) {
|
||||
newContent = content.copy(caller.monitorIndex, caller.effects);
|
||||
this._images.push(newContent);
|
||||
for (let j = 0; j < pendingLoad.callers.length; j++) {
|
||||
if (pendingLoad.callers[j].onFinished) {
|
||||
let newContent;
|
||||
|
||||
if (content && pendingLoad.callers[j].shouldCopy) {
|
||||
newContent = content.copy(pendingLoad.callers[j].monitorIndex,
|
||||
pendingLoad.callers[j].effects);
|
||||
this._images.push(newContent);
|
||||
} else {
|
||||
newContent = content;
|
||||
}
|
||||
|
||||
pendingLoad.callers[j].onFinished(newContent);
|
||||
}
|
||||
|
||||
caller.onFinished(newContent);
|
||||
}
|
||||
}
|
||||
|
||||
let idx = this._pendingFileLoads.indexOf(fileLoad);
|
||||
this._pendingFileLoads.splice(idx, 1);
|
||||
this._pendingFileLoads.splice(i, 1);
|
||||
}
|
||||
}));
|
||||
},
|
||||
|
||||
@@ -271,11 +260,10 @@ const BackgroundCache = new Lang.Class({
|
||||
|
||||
if (this._animationFilename == params.filename) {
|
||||
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);
|
||||
return GLib.SOURCE_REMOVE;
|
||||
}));
|
||||
GLib.Source.set_name_by_id(id, '[gnome-shell] params.onLoaded');
|
||||
}
|
||||
}
|
||||
|
||||
@@ -287,11 +275,10 @@ const BackgroundCache = new Lang.Class({
|
||||
this._animation = animation;
|
||||
|
||||
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);
|
||||
return GLib.SOURCE_REMOVE;
|
||||
}));
|
||||
GLib.Source.set_name_by_id(id, '[gnome-shell] params.onLoaded');
|
||||
}
|
||||
}));
|
||||
}
|
||||
@@ -388,11 +375,10 @@ const Background = new Lang.Class({
|
||||
|
||||
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');
|
||||
return GLib.SOURCE_REMOVE;
|
||||
}));
|
||||
GLib.Source.set_name_by_id(id, '[gnome-shell] this.emit');
|
||||
},
|
||||
|
||||
_loadPattern: function() {
|
||||
@@ -535,7 +521,6 @@ const Background = new Lang.Class({
|
||||
this._updateAnimation();
|
||||
return GLib.SOURCE_REMOVE;
|
||||
}));
|
||||
GLib.Source.set_name_by_id(this._updateAnimationTimeoutId, '[gnome-shell] this._updateAnimation');
|
||||
},
|
||||
|
||||
_loadAnimation: function(filename) {
|
||||
@@ -758,18 +743,17 @@ const BackgroundManager = new Lang.Class({
|
||||
Lang.bind(this, function() {
|
||||
newBackground.disconnect(newBackground.loadedSignalId);
|
||||
newBackground.loadedSignalId = 0;
|
||||
|
||||
if (this._newBackground != newBackground) {
|
||||
/* Not interesting, we queued another load */
|
||||
newBackground.actor.destroy();
|
||||
return;
|
||||
}
|
||||
|
||||
Tweener.addTween(this.background.actor,
|
||||
{ opacity: 0,
|
||||
time: FADE_ANIMATION_TIME,
|
||||
transition: 'easeOutQuad',
|
||||
onComplete: Lang.bind(this, function() {
|
||||
if (this._newBackground != newBackground) {
|
||||
/* Not interesting, we queued another load */
|
||||
newBackground.actor.destroy();
|
||||
return;
|
||||
}
|
||||
|
||||
this.background.actor.destroy();
|
||||
this.background = newBackground;
|
||||
this._newBackground = null;
|
||||
|
@@ -35,7 +35,7 @@ function addBackgroundMenu(actor, layoutManager) {
|
||||
|
||||
function openMenu() {
|
||||
let [x, y] = global.get_pointer();
|
||||
Main.layoutManager.setDummyCursorGeometry(x, y, 0, 0);
|
||||
Main.layoutManager.setDummyCursorPosition(x, y);
|
||||
actor._backgroundMenu.open(BoxPointer.PopupAnimation.NONE);
|
||||
}
|
||||
|
||||
|
@@ -14,9 +14,6 @@ const Shell = imports.gi.Shell;
|
||||
const MSECS_IN_DAY = 24 * 60 * 60 * 1000;
|
||||
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
|
||||
const CLOCK_FORMAT_KEY = 'clock-format';
|
||||
|
||||
@@ -390,7 +387,7 @@ const Calendar = new Lang.Class({
|
||||
|
||||
// Find the ordering for month/year in the calendar heading
|
||||
this._headerFormatWithoutYear = '%B';
|
||||
switch (gtk30_('calendar:MY')) {
|
||||
switch (Gettext_gtk30.gettext('calendar:MY')) {
|
||||
case 'calendar:MY':
|
||||
this._headerFormat = '%B %Y';
|
||||
break;
|
||||
@@ -423,10 +420,8 @@ const Calendar = new Lang.Class({
|
||||
setEventSource: function(eventSource) {
|
||||
this._eventSource = eventSource;
|
||||
this._eventSource.connect('changed', Lang.bind(this, function() {
|
||||
this._rebuildCalendar();
|
||||
this._update();
|
||||
}));
|
||||
this._rebuildCalendar();
|
||||
this._update();
|
||||
},
|
||||
|
||||
|
@@ -43,7 +43,6 @@ const AutomountManager = new Lang.Class({
|
||||
this._driveEjectButtonId = this._volumeMonitor.connect('drive-eject-button', Lang.bind(this, this._onDriveEjectButton));
|
||||
|
||||
this._mountAllId = Mainloop.idle_add(Lang.bind(this, this._startupMountAll));
|
||||
GLib.Source.set_name_by_id(this._mountAllId, '[gnome-shell] this._startupMountAll');
|
||||
},
|
||||
|
||||
disable: function() {
|
||||
@@ -235,11 +234,10 @@ const AutomountManager = new Lang.Class({
|
||||
},
|
||||
|
||||
_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;
|
||||
return GLib.SOURCE_REMOVE;
|
||||
});
|
||||
GLib.Source.set_name_by_id(id, '[gnome-shell] volume.allowAutorun');
|
||||
}
|
||||
});
|
||||
const Component = AutomountManager;
|
||||
|
@@ -510,12 +510,10 @@ const VPNRequestHandler = new Lang.Class({
|
||||
|
||||
_showNewStyleDialog: function() {
|
||||
let keyfile = new GLib.KeyFile();
|
||||
let data;
|
||||
let contentOverride;
|
||||
|
||||
try {
|
||||
data = this._dataStdout.peek_buffer();
|
||||
|
||||
let data = this._dataStdout.peek_buffer();
|
||||
keyfile.load_from_data(data.toString(), data.length,
|
||||
GLib.KeyFileFlags.NONE);
|
||||
|
||||
@@ -548,16 +546,13 @@ const VPNRequestHandler = new Lang.Class({
|
||||
}
|
||||
}
|
||||
} catch(e) {
|
||||
// No output is a valid case it means "both secrets are stored"
|
||||
if (data.length > 0) {
|
||||
logError(e, 'error while reading VPN plugin output keyfile');
|
||||
logError(e, 'error while reading VPN plugin output keyfile');
|
||||
|
||||
this._agent.respond(this._requestId, Shell.NetworkAgentResponse.INTERNAL_ERROR);
|
||||
return;
|
||||
}
|
||||
this._agent.respond(this._requestId, Shell.NetworkAgentResponse.INTERNAL_ERROR);
|
||||
return;
|
||||
}
|
||||
|
||||
if (contentOverride && contentOverride.secrets.length) {
|
||||
if (contentOverride.secrets.length) {
|
||||
// Only show the dialog if we actually have something to ask
|
||||
this._shellDialog = new NetworkSecretDialog(this._agent, this._requestId, this._connection, 'vpn', [], contentOverride);
|
||||
this._shellDialog.open(global.get_current_time());
|
||||
|
@@ -681,7 +681,6 @@ const ChatSource = new Lang.Class({
|
||||
Mainloop.source_remove(this._notifyTimeoutId);
|
||||
this._notifyTimeoutId = Mainloop.timeout_add(500,
|
||||
Lang.bind(this, this._notifyTimeout));
|
||||
GLib.Source.set_name_by_id(this._notifyTimeoutId, '[gnome-shell] this._notifyTimeout');
|
||||
},
|
||||
|
||||
_notifyTimeout: function() {
|
||||
@@ -925,16 +924,14 @@ const ChatNotification = new Lang.Class({
|
||||
realMessage: group != 'meta' });
|
||||
|
||||
if (!props.noTimestamp) {
|
||||
if (timestamp < currentTime - SCROLLBACK_IMMEDIATE_TIME) {
|
||||
if (timestamp < currentTime - SCROLLBACK_IMMEDIATE_TIME)
|
||||
this.appendTimestamp();
|
||||
} else {
|
||||
else
|
||||
// Schedule a new timestamp in SCROLLBACK_IMMEDIATE_TIME
|
||||
// from the timestamp of the message.
|
||||
this._timestampTimeoutId = Mainloop.timeout_add_seconds(
|
||||
SCROLLBACK_IMMEDIATE_TIME - (currentTime - timestamp),
|
||||
Lang.bind(this, this.appendTimestamp));
|
||||
GLib.Source.set_name_by_id(this._timestampTimeoutId, '[gnome-shell] this.appendTimestamp');
|
||||
}
|
||||
}
|
||||
|
||||
this._filterMessages();
|
||||
@@ -1103,7 +1100,6 @@ const ChatNotification = new Lang.Class({
|
||||
this._composingTimeoutId = Mainloop.timeout_add_seconds(
|
||||
COMPOSING_STOP_TIMEOUT,
|
||||
Lang.bind(this, this._composingStopTimeout));
|
||||
GLib.Source.set_name_by_id(this._composingTimeoutId, '[gnome-shell] this._composingStopTimeout');
|
||||
} else {
|
||||
this.source.setChatState(Tp.ChannelChatState.ACTIVE);
|
||||
}
|
||||
@@ -1274,8 +1270,7 @@ const SubscriptionRequestNotification = new Lang.Class({
|
||||
|
||||
if (file) {
|
||||
let uri = file.get_uri();
|
||||
let scaleFactor = St.ThemeContext.get_for_stage(global.stage).scale_factor;
|
||||
iconBox.child = textureCache.load_uri_async(uri, iconBox._size, iconBox._size, scaleFactor);
|
||||
iconBox.child = textureCache.load_uri_async(uri, iconBox._size, iconBox._size);
|
||||
}
|
||||
else {
|
||||
iconBox.child = new St.Icon({ icon_name: 'avatar-default',
|
||||
@@ -1426,12 +1421,7 @@ const AccountNotification = new Lang.Class({
|
||||
if (status == Tp.ConnectionStatus.CONNECTED) {
|
||||
this.destroy();
|
||||
} else if (status == Tp.ConnectionStatus.DISCONNECTED) {
|
||||
let connectionError = account.connection_error;
|
||||
|
||||
if (connectionError == Tp.error_get_dbus_name(Tp.Error.CANCELLED))
|
||||
this.destroy();
|
||||
else
|
||||
this.update(this.title, this._getMessage(connectionError));
|
||||
this.update(this.title, this._getMessage(account.connection_error));
|
||||
}
|
||||
}));
|
||||
},
|
||||
|
@@ -165,10 +165,6 @@ const CtrlAltTabPopup = new Lang.Class({
|
||||
this._select(this._previous());
|
||||
else if (keysym == Clutter.Right)
|
||||
this._select(this._next());
|
||||
else
|
||||
return Clutter.EVENT_PROPAGATE;
|
||||
|
||||
return Clutter.EVENT_STOP;
|
||||
},
|
||||
|
||||
_finish : function(time) {
|
||||
|
@@ -582,7 +582,6 @@ const Dash = new Lang.Class({
|
||||
this._showLabelTimeoutId = 0;
|
||||
return GLib.SOURCE_REMOVE;
|
||||
}));
|
||||
GLib.Source.set_name_by_id(this._showLabelTimeoutId, '[gnome-shell] item.showLabel');
|
||||
if (this._resetHoverTimeoutId > 0) {
|
||||
Mainloop.source_remove(this._resetHoverTimeoutId);
|
||||
this._resetHoverTimeoutId = 0;
|
||||
@@ -600,7 +599,6 @@ const Dash = new Lang.Class({
|
||||
this._resetHoverTimeoutId = 0;
|
||||
return GLib.SOURCE_REMOVE;
|
||||
}));
|
||||
GLib.Source.set_name_by_id(this._resetHoverTimeoutId, '[gnome-shell] this._labelShowing');
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@@ -63,11 +63,8 @@ const DateMenuButton = new Lang.Class({
|
||||
hbox.add(vbox);
|
||||
|
||||
// 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',
|
||||
reactive: false
|
||||
can_focus: true,
|
||||
});
|
||||
this._date.connect('clicked',
|
||||
Lang.bind(this, function() {
|
||||
@@ -85,9 +82,6 @@ const DateMenuButton = new Lang.Class({
|
||||
// and the calender makes those dates unclickable when instantiated with
|
||||
// a null event source
|
||||
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);
|
||||
|
||||
@@ -138,13 +132,6 @@ const DateMenuButton = new Lang.Class({
|
||||
this._sessionUpdated();
|
||||
},
|
||||
|
||||
_isToday: function(date) {
|
||||
let now = new Date();
|
||||
return now.getYear() == date.getYear() &&
|
||||
now.getMonth() == date.getMonth() &&
|
||||
now.getDay() == date.getDay();
|
||||
},
|
||||
|
||||
_appInstalledChanged: function() {
|
||||
this._calendarApp = undefined;
|
||||
this._updateEventsVisibility();
|
||||
|
@@ -395,7 +395,6 @@ const _Draggable = new Lang.Class({
|
||||
|
||||
this._updateHoverId = GLib.idle_add(GLib.PRIORITY_DEFAULT,
|
||||
Lang.bind(this, this._updateDragHover));
|
||||
GLib.Source.set_name_by_id(this._updateHoverId, '[gnome-shell] this._updateDragHover');
|
||||
},
|
||||
|
||||
_updateDragPosition : function (event) {
|
||||
|
@@ -551,7 +551,6 @@ const EndSessionDialog = new Lang.Class({
|
||||
|
||||
return GLib.SOURCE_REMOVE;
|
||||
}));
|
||||
GLib.Source.set_name_by_id(this._timerId, '[gnome-shell] this._confirm');
|
||||
},
|
||||
|
||||
_stopTimer: function() {
|
||||
|
@@ -5,8 +5,6 @@ imports.gi.versions.Gio = '2.0';
|
||||
imports.gi.versions.Gdk = '3.0';
|
||||
imports.gi.versions.GdkPixbuf = '2.0';
|
||||
imports.gi.versions.Gtk = '3.0';
|
||||
imports.gi.versions.TelepathyGLib = '0.12';
|
||||
imports.gi.versions.TelepathyLogger = '0.2';
|
||||
|
||||
const Clutter = imports.gi.Clutter;;
|
||||
const Gettext = imports.gettext;
|
||||
@@ -47,11 +45,8 @@ function _patchLayoutClass(layoutClass, styleProps) {
|
||||
layoutClass.prototype.hookup_style = function(container) {
|
||||
container.connect('style-changed', Lang.bind(this, function() {
|
||||
let node = container.get_theme_node();
|
||||
for (let prop in styleProps) {
|
||||
let [found, length] = node.lookup_length(styleProps[prop], false);
|
||||
if (found)
|
||||
this[prop] = length;
|
||||
}
|
||||
for (let prop in styleProps)
|
||||
this[prop] = node.get_length(styleProps[prop]);
|
||||
}));
|
||||
};
|
||||
layoutClass.prototype.child_set = function(actor, props) {
|
||||
|
@@ -155,7 +155,7 @@ const CandidatePopup = new Lang.Class({
|
||||
|
||||
panelService.connect('set-cursor-location',
|
||||
Lang.bind(this, function(ps, x, y, w, h) {
|
||||
Main.layoutManager.setDummyCursorGeometry(x, y, w, h);
|
||||
Main.layoutManager.setDummyCursorPosition(x, y);
|
||||
if (this._boxPointer.actor.visible)
|
||||
this._boxPointer.setPosition(Main.layoutManager.dummyCursor, 0);
|
||||
}));
|
||||
|
@@ -214,20 +214,6 @@ const IconGrid = new Lang.Class({
|
||||
this._grid.connect('get-preferred-width', Lang.bind(this, this._getPreferredWidth));
|
||||
this._grid.connect('get-preferred-height', Lang.bind(this, this._getPreferredHeight));
|
||||
this._grid.connect('allocate', Lang.bind(this, this._allocate));
|
||||
this._grid.connect('actor-added', Lang.bind(this, this._childAdded));
|
||||
this._grid.connect('actor-removed', Lang.bind(this, this._childRemoved));
|
||||
},
|
||||
|
||||
_keyFocusIn: function(actor) {
|
||||
this.emit('key-focus-in', actor);
|
||||
},
|
||||
|
||||
_childAdded: function(grid, child) {
|
||||
child._iconGridKeyFocusInId = child.connect('key-focus-in', Lang.bind(this, this._keyFocusIn));
|
||||
},
|
||||
|
||||
_childRemoved: function(grid, child) {
|
||||
child.disconnect(child._iconGridKeyFocusInId);
|
||||
},
|
||||
|
||||
_getPreferredWidth: function (grid, forHeight, alloc) {
|
||||
@@ -541,7 +527,6 @@ const IconGrid = new Lang.Class({
|
||||
}
|
||||
}
|
||||
});
|
||||
Signals.addSignalMethods(IconGrid.prototype);
|
||||
|
||||
const PaginatedIconGrid = new Lang.Class({
|
||||
Name: 'PaginatedIconGrid',
|
||||
@@ -645,10 +630,6 @@ const PaginatedIconGrid = new Lang.Class({
|
||||
return this._nPages;
|
||||
},
|
||||
|
||||
getPageHeight: function() {
|
||||
return this._availableHeightPerPageForItems();
|
||||
},
|
||||
|
||||
getPageY: function(pageNumber) {
|
||||
if (!this._nPages)
|
||||
return 0;
|
||||
|
@@ -266,14 +266,12 @@ const Keyboard = new Lang.Class({
|
||||
return;
|
||||
}
|
||||
|
||||
if (!this._showIdleId) {
|
||||
this._showIdleId = GLib.idle_add(GLib.PRIORITY_DEFAULT_IDLE,
|
||||
Lang.bind(this, function() {
|
||||
this.Show(time);
|
||||
return GLib.SOURCE_REMOVE;
|
||||
}));
|
||||
GLib.Source.set_name_by_id(this._showIdleId, '[gnome-shell] this.Show');
|
||||
}
|
||||
if (!this._showIdleId)
|
||||
this._showIdleId = GLib.idle_add(GLib.PRIORITY_DEFAULT_IDLE,
|
||||
Lang.bind(this, function() {
|
||||
this.Show(time);
|
||||
return GLib.SOURCE_REMOVE;
|
||||
}));
|
||||
},
|
||||
|
||||
_createLayersForGroup: function (gname) {
|
||||
@@ -502,7 +500,6 @@ const Keyboard = new Lang.Class({
|
||||
this._show(monitor);
|
||||
return GLib.SOURCE_REMOVE;
|
||||
}));
|
||||
GLib.Source.set_name_by_id(this._keyboardRestingId, '[gnome-shell] this._clearKeyboardRestTimer');
|
||||
},
|
||||
|
||||
_show: function(monitor) {
|
||||
@@ -529,7 +526,6 @@ const Keyboard = new Lang.Class({
|
||||
this._hide();
|
||||
return GLib.SOURCE_REMOVE;
|
||||
}));
|
||||
GLib.Source.set_name_by_id(this._keyboardRestingId, '[gnome-shell] this._clearKeyboardRestTimer');
|
||||
},
|
||||
|
||||
_hide: function() {
|
||||
|
@@ -4,6 +4,7 @@ const Clutter = imports.gi.Clutter;
|
||||
const GLib = imports.gi.GLib;
|
||||
const GObject = imports.gi.GObject;
|
||||
const Lang = imports.lang;
|
||||
const Mainloop = imports.mainloop;
|
||||
const Meta = imports.gi.Meta;
|
||||
const Shell = imports.gi.Shell;
|
||||
const Signals = imports.signals;
|
||||
@@ -212,10 +213,6 @@ const LayoutManager = new Lang.Class({
|
||||
this.addChrome(this.trayBox);
|
||||
this._setupTrayPressure();
|
||||
|
||||
this.modalDialogGroup = new St.Widget({ name: 'modalDialogGroup',
|
||||
layout_manager: new Clutter.BinLayout() });
|
||||
this.uiGroup.add_actor(this.modalDialogGroup);
|
||||
|
||||
this.keyboardBox = new St.BoxLayout({ name: 'keyboardBox',
|
||||
reactive: true,
|
||||
track_hover: true });
|
||||
@@ -223,7 +220,7 @@ const LayoutManager = new Lang.Class({
|
||||
this._keyboardHeightNotifyId = 0;
|
||||
|
||||
// A dummy actor that tracks the mouse or text cursor, based on the
|
||||
// position and size set in setDummyCursorGeometry.
|
||||
// position set in setDummyCursorPosition.
|
||||
this.dummyCursor = new St.Widget({ width: 0, height: 0 });
|
||||
this.uiGroup.add_actor(this.dummyCursor);
|
||||
|
||||
@@ -603,7 +600,7 @@ const LayoutManager = new Lang.Class({
|
||||
this._updateBackgrounds();
|
||||
|
||||
// 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.trayBox.hide();
|
||||
@@ -628,11 +625,10 @@ const LayoutManager = new Lang.Class({
|
||||
// until the event loop is uncontended and idle.
|
||||
// This helps to prevent us from running the animation
|
||||
// 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();
|
||||
return GLib.SOURCE_REMOVE;
|
||||
}));
|
||||
GLib.Source.set_name_by_id(id, '[gnome-shell] this._startupAnimation');
|
||||
},
|
||||
|
||||
_startupAnimation: function() {
|
||||
@@ -729,7 +725,7 @@ const LayoutManager = new Lang.Class({
|
||||
this._updateRegions();
|
||||
},
|
||||
|
||||
// setDummyCursorGeometry:
|
||||
// setDummyCursorPosition:
|
||||
//
|
||||
// The cursor dummy is a standard widget commonly used for popup
|
||||
// menus and box pointers to track, as the box pointer API only
|
||||
@@ -738,10 +734,9 @@ const LayoutManager = new Lang.Class({
|
||||
// is what you should use. Given that the menu should not track
|
||||
// the actual mouse pointer as it moves, you need to call this
|
||||
// function before you show the menu to ensure it is at the right
|
||||
// position and has the right size.
|
||||
setDummyCursorGeometry: function(x, y, w, h) {
|
||||
// position.
|
||||
setDummyCursorPosition: function(x, y) {
|
||||
this.dummyCursor.set_position(Math.round(x), Math.round(y));
|
||||
this.dummyCursor.set_size(Math.round(w), Math.round(h));
|
||||
},
|
||||
|
||||
// addChrome:
|
||||
@@ -912,8 +907,8 @@ const LayoutManager = new Lang.Class({
|
||||
return;
|
||||
|
||||
if (!this._updateRegionIdle)
|
||||
this._updateRegionIdle = Meta.later_add(Meta.LaterType.BEFORE_REDRAW,
|
||||
Lang.bind(this, this._updateRegions));
|
||||
this._updateRegionIdle = Mainloop.idle_add(Lang.bind(this, this._updateRegions),
|
||||
Meta.PRIORITY_BEFORE_REDRAW);
|
||||
},
|
||||
|
||||
_getWindowActorsForWorkspace: function(workspace) {
|
||||
@@ -944,7 +939,7 @@ const LayoutManager = new Lang.Class({
|
||||
let rects = [], struts = [], i;
|
||||
|
||||
if (this._updateRegionIdle) {
|
||||
Meta.later_remove(this._updateRegionIdle);
|
||||
Mainloop.source_remove(this._updateRegionIdle);
|
||||
delete this._updateRegionIdle;
|
||||
}
|
||||
|
||||
@@ -1018,39 +1013,19 @@ const LayoutManager = new Lang.Class({
|
||||
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.
|
||||
// as this really what mutter expects.
|
||||
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;
|
||||
y1 = 0;
|
||||
break;
|
||||
case Meta.Side.BOTTOM:
|
||||
if (this.primaryIndex == this.bottomIndex)
|
||||
y2 = global.screen_height;
|
||||
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;
|
||||
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;
|
||||
x2 = global.screen_width;
|
||||
break;
|
||||
}
|
||||
|
||||
|
@@ -11,60 +11,30 @@ const Params = imports.misc.params;
|
||||
const Tweener = imports.ui.tweener;
|
||||
|
||||
const DEFAULT_FADE_FACTOR = 0.4;
|
||||
const VIGNETTE_BRIGHTNESS = 0.8;
|
||||
const VIGNETTE_SHARPNESS = 0.7;
|
||||
|
||||
const VIGNETTE_DECLARATIONS = '\
|
||||
uniform float brightness;\n\
|
||||
uniform float vignette_sharpness;\n';
|
||||
|
||||
const VIGNETTE_CODE = '\
|
||||
cogl_color_out.a = cogl_color_in.a;\n\
|
||||
cogl_color_out.rgb = vec3(0.0, 0.0, 0.0);\n\
|
||||
vec2 position = cogl_tex_coord_in[0].xy - 0.5;\n\
|
||||
float t = length(2.0 * position);\n\
|
||||
t = clamp(t, 0.0, 1.0);\n\
|
||||
float pixel_brightness = mix(1.0, 1.0 - vignette_sharpness, t);\n\
|
||||
cogl_color_out.a = cogl_color_out.a * (1 - pixel_brightness * brightness);';
|
||||
const GLSL_DIM_EFFECT_DECLARATIONS = '\
|
||||
float compute_dim_factor (const vec2 coords) {\
|
||||
vec2 dist = coords - vec2(0.5, 0.5); \
|
||||
float elipse_radius = 0.5; \
|
||||
/* interpolate darkening value, based on distance from screen center */ \
|
||||
float val = min(length(dist), elipse_radius); \
|
||||
return mix(0.3, 1.0, val / elipse_radius) * 0.4; \
|
||||
}';
|
||||
const GLSL_DIM_EFFECT_CODE = '\
|
||||
float a = compute_dim_factor (cogl_tex_coord0_in.xy);\
|
||||
cogl_color_out = vec4(0, 0, 0, cogl_color_in.a * a);'
|
||||
;
|
||||
|
||||
const RadialShaderQuad = new Lang.Class({
|
||||
Name: 'RadialShaderQuad',
|
||||
Extends: Shell.GLSLQuad,
|
||||
|
||||
_init: function(params) {
|
||||
this.parent(params);
|
||||
|
||||
this._brightnessLocation = this.get_uniform_location('brightness');
|
||||
this._sharpnessLocation = this.get_uniform_location('vignette_sharpness');
|
||||
|
||||
this.brightness = 1.0;
|
||||
this.vignetteSharpness = 0.0;
|
||||
},
|
||||
|
||||
vfunc_build_pipeline: function() {
|
||||
this.add_glsl_snippet(Shell.SnippetHook.FRAGMENT,
|
||||
VIGNETTE_DECLARATIONS, VIGNETTE_CODE, true);
|
||||
GLSL_DIM_EFFECT_DECLARATIONS,
|
||||
GLSL_DIM_EFFECT_CODE,
|
||||
true);
|
||||
},
|
||||
|
||||
get brightness() {
|
||||
return this._brightness;
|
||||
},
|
||||
|
||||
set brightness(v) {
|
||||
this._brightness = v;
|
||||
this.set_uniform_float(this._brightnessLocation,
|
||||
1, [this._brightness]);
|
||||
},
|
||||
|
||||
get vignetteSharpness() {
|
||||
return this._sharpness;
|
||||
},
|
||||
|
||||
set vignetteSharpness(v) {
|
||||
this._sharpness = v;
|
||||
this.set_uniform_float(this._sharpnessLocation,
|
||||
1, [this._sharpness]);
|
||||
}
|
||||
});
|
||||
|
||||
/**
|
||||
@@ -105,7 +75,6 @@ const Lightbox = new Lang.Class({
|
||||
this._container = container;
|
||||
this._children = container.get_children();
|
||||
this._fadeFactor = params.fadeFactor;
|
||||
this._radialEffect = params.radialEffect;
|
||||
if (params.radialEffect)
|
||||
this.actor = new RadialShaderQuad({ x: 0,
|
||||
y: 0,
|
||||
@@ -113,7 +82,6 @@ const Lightbox = new Lang.Class({
|
||||
else
|
||||
this.actor = new St.Bin({ x: 0,
|
||||
y: 0,
|
||||
opacity: 0,
|
||||
style_class: 'lightbox',
|
||||
reactive: params.inhibitEvents });
|
||||
|
||||
@@ -165,18 +133,9 @@ const Lightbox = new Lang.Class({
|
||||
fadeInTime = fadeInTime || 0;
|
||||
|
||||
Tweener.removeTweens(this.actor);
|
||||
if (this._radialEffect) {
|
||||
Tweener.addTween(this.actor,
|
||||
{ brightness: VIGNETTE_BRIGHTNESS,
|
||||
vignetteSharpness: VIGNETTE_SHARPNESS,
|
||||
time: fadeInTime,
|
||||
transition: 'easeOutQuad',
|
||||
onComplete: Lang.bind(this, function() {
|
||||
this.shown = true;
|
||||
this.emit('shown');
|
||||
})
|
||||
});
|
||||
} else {
|
||||
if (fadeInTime != 0) {
|
||||
this.shown = false;
|
||||
this.actor.opacity = 0;
|
||||
Tweener.addTween(this.actor,
|
||||
{ opacity: 255 * this._fadeFactor,
|
||||
time: fadeInTime,
|
||||
@@ -186,8 +145,11 @@ const Lightbox = new Lang.Class({
|
||||
this.emit('shown');
|
||||
})
|
||||
});
|
||||
} else {
|
||||
this.actor.opacity = 255 * this._fadeFactor;
|
||||
this.shown = true;
|
||||
this.emit('shown');
|
||||
}
|
||||
|
||||
this.actor.show();
|
||||
},
|
||||
|
||||
@@ -196,18 +158,7 @@ const Lightbox = new Lang.Class({
|
||||
|
||||
this.shown = false;
|
||||
Tweener.removeTweens(this.actor);
|
||||
if (this._radialEffect) {
|
||||
Tweener.addTween(this.actor,
|
||||
{ brightness: 1.0,
|
||||
vignetteSharpness: 0.0,
|
||||
opacity: 0,
|
||||
time: fadeOutTime,
|
||||
transition: 'easeOutQuad',
|
||||
onComplete: Lang.bind(this, function() {
|
||||
this.actor.hide();
|
||||
})
|
||||
});
|
||||
} else {
|
||||
if (fadeOutTime != 0) {
|
||||
Tweener.addTween(this.actor,
|
||||
{ opacity: 0,
|
||||
time: fadeOutTime,
|
||||
@@ -216,6 +167,8 @@ const Lightbox = new Lang.Class({
|
||||
this.actor.hide();
|
||||
})
|
||||
});
|
||||
} else {
|
||||
this.actor.hide();
|
||||
}
|
||||
},
|
||||
|
||||
|
@@ -843,10 +843,9 @@ const LookingGlass = new Lang.Class({
|
||||
System.gc();
|
||||
this._timeoutId = Mainloop.timeout_add(500, Lang.bind(this, function () {
|
||||
gcIcon.icon_name = 'gnome-fs-trash-full';
|
||||
this._timeoutId = 0;
|
||||
Mainloop.source_remove(this._timeoutId);
|
||||
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;
|
||||
}));
|
||||
|
||||
|
@@ -43,7 +43,6 @@ const DEFAULT_BACKGROUND_COLOR = Clutter.Color.from_pixel(0x2e3436ff);
|
||||
|
||||
const A11Y_SCHEMA = 'org.gnome.desktop.a11y.keyboard';
|
||||
const STICKY_KEYS_ENABLE = 'stickykeys-enable';
|
||||
const GNOMESHELL_STARTED_MESSAGE_ID = 'f3ea493c22934e26811cd62abe8e203a';
|
||||
|
||||
let componentManager = null;
|
||||
let panel = null;
|
||||
@@ -56,7 +55,7 @@ let screenShield = null;
|
||||
let notificationDaemon = null;
|
||||
let windowAttentionHandler = null;
|
||||
let ctrlAltTabManager = null;
|
||||
let osdWindowManager = null;
|
||||
let osdWindow = null;
|
||||
let sessionMode = null;
|
||||
let shellDBusService = null;
|
||||
let shellMountOpDBusService = null;
|
||||
@@ -104,6 +103,9 @@ function start() {
|
||||
global.logError = 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
|
||||
global.connect('notify-error', function (global, msg, detail) { notifyError(msg, detail); });
|
||||
|
||||
@@ -156,7 +158,7 @@ function _initializeUI() {
|
||||
screencastService = new Screencast.ScreencastService();
|
||||
xdndHandler = new XdndHandler.XdndHandler();
|
||||
ctrlAltTabManager = new CtrlAltTab.CtrlAltTabManager();
|
||||
osdWindowManager = new OsdWindow.OsdWindowManager();
|
||||
osdWindow = new OsdWindow.OsdWindow();
|
||||
overview = new Overview.Overview();
|
||||
wm = new WindowManager.WindowManager();
|
||||
magnifier = new Magnifier.Magnifier();
|
||||
@@ -189,6 +191,8 @@ function _initializeUI() {
|
||||
|
||||
_startDate = new Date();
|
||||
|
||||
log('GNOME Shell started at ' + _startDate);
|
||||
|
||||
let perfModuleName = GLib.getenv("SHELL_PERF_MODULE");
|
||||
if (perfModuleName) {
|
||||
let perfOutput = GLib.getenv("SHELL_PERF_OUTPUT");
|
||||
@@ -199,6 +203,10 @@ function _initializeUI() {
|
||||
ExtensionDownloader.init();
|
||||
ExtensionSystem.init();
|
||||
|
||||
layoutManager.connect('startup-prepared', function() {
|
||||
Meta.activate_session();
|
||||
});
|
||||
|
||||
if (sessionMode.isGreeter && screenShield) {
|
||||
layoutManager.connect('startup-prepared', function() {
|
||||
screenShield.showDialog();
|
||||
@@ -212,17 +220,6 @@ function _initializeUI() {
|
||||
if (screenShield) {
|
||||
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);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@@ -618,6 +615,5 @@ function queueDeferredWork(workId) {
|
||||
_deferredTimeoutId = 0;
|
||||
return GLib.SOURCE_REMOVE;
|
||||
});
|
||||
GLib.Source.set_name_by_id(_deferredTimeoutId, '[gnome-shell] _runAllDeferredWork');
|
||||
}
|
||||
}
|
||||
|
@@ -1987,7 +1987,6 @@ const MessageTray = new Lang.Class({
|
||||
|
||||
this._trayDwellTimeoutId = Mainloop.timeout_add(TRAY_DWELL_TIME,
|
||||
Lang.bind(this, this._trayDwellTimeout));
|
||||
GLib.Source.set_name_by_id(this._trayDwellTimeoutId, '[gnome-shell] this._trayDwellTimeout');
|
||||
}
|
||||
this._trayDwelling = true;
|
||||
} else {
|
||||
@@ -2028,18 +2027,13 @@ const MessageTray = new Lang.Class({
|
||||
|
||||
_onNotificationKeyRelease: function(actor, event) {
|
||||
if (event.get_key_symbol() == Clutter.KEY_Escape && event.get_state() == 0) {
|
||||
this._expireNotification();
|
||||
this._closeNotification();
|
||||
return Clutter.EVENT_STOP;
|
||||
}
|
||||
|
||||
return Clutter.EVENT_PROPAGATE;
|
||||
},
|
||||
|
||||
_expireNotification: function() {
|
||||
this._notificationExpired = true;
|
||||
this._updateState();
|
||||
},
|
||||
|
||||
_closeNotification: function() {
|
||||
if (this._notificationState == State.SHOWN) {
|
||||
this._closeButton.hide();
|
||||
@@ -2317,7 +2311,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.
|
||||
let timeout = this._useLongerNotificationLeftTimeout ? LONGER_HIDE_TIMEOUT * 1000 : HIDE_TIMEOUT * 1000;
|
||||
this._notificationLeftTimeoutId = Mainloop.timeout_add(timeout, Lang.bind(this, this._onNotificationLeftTimeout));
|
||||
GLib.Source.set_name_by_id(this._notificationLeftTimeoutId, '[gnome-shell] this._onNotificationLeftTimeout');
|
||||
}
|
||||
},
|
||||
|
||||
@@ -2353,7 +2346,6 @@ const MessageTray = new Lang.Class({
|
||||
this._notificationLeftMouseX = -1;
|
||||
this._notificationLeftTimeoutId = Mainloop.timeout_add(LONGER_HIDE_TIMEOUT * 1000,
|
||||
Lang.bind(this, this._onNotificationLeftTimeout));
|
||||
GLib.Source.set_name_by_id(this._notificationLeftTimeoutId, '[gnome-shell] this._onNotificationLeftTimeout');
|
||||
} else {
|
||||
this._notificationLeftTimeoutId = 0;
|
||||
this._useLongerNotificationLeftTimeout = false;
|
||||
@@ -2406,7 +2398,7 @@ const MessageTray = new Lang.Class({
|
||||
this._notificationTimeoutId == 0 &&
|
||||
this._notification.urgency != Urgency.CRITICAL &&
|
||||
!this._notification.focused &&
|
||||
!this._pointerInNotification) || this._notificationExpired;
|
||||
!this._pointerInNotification);
|
||||
let mustClose = (this._notificationRemoved || !hasNotifications || expired || this._traySummoned);
|
||||
|
||||
if (mustClose) {
|
||||
@@ -2467,10 +2459,6 @@ const MessageTray = new Lang.Class({
|
||||
this._hideDesktopClone();
|
||||
|
||||
this._updatingState = false;
|
||||
|
||||
// Clean transient variables that are used to communicate actions
|
||||
// to updateState()
|
||||
this._notificationExpired = false;
|
||||
},
|
||||
|
||||
_tween: function(actor, statevar, value, params) {
|
||||
@@ -2671,12 +2659,10 @@ const MessageTray = new Lang.Class({
|
||||
Mainloop.source_remove(this._notificationTimeoutId);
|
||||
this._notificationTimeoutId = 0;
|
||||
}
|
||||
if (timeout > 0) {
|
||||
if (timeout > 0)
|
||||
this._notificationTimeoutId =
|
||||
Mainloop.timeout_add(timeout,
|
||||
Lang.bind(this, this._notificationTimeout));
|
||||
GLib.Source.set_name_by_id(this._notificationTimeoutId, '[gnome-shell] this._notificationTimeout');
|
||||
}
|
||||
},
|
||||
|
||||
_notificationTimeout: function() {
|
||||
@@ -2795,12 +2781,7 @@ const MessageTray = new Lang.Class({
|
||||
{ y: expandedY,
|
||||
opacity: 255,
|
||||
time: ANIMATION_TIME,
|
||||
transition: 'easeOutQuad',
|
||||
// HACK: Drive the state machine here better,
|
||||
// instead of overwriting tweens
|
||||
onComplete: Lang.bind(this, function() {
|
||||
this._notificationState = State.SHOWN;
|
||||
}),
|
||||
transition: 'easeOutQuad'
|
||||
});
|
||||
}
|
||||
},
|
||||
|
@@ -41,6 +41,7 @@ const ModalDialog = new Lang.Class({
|
||||
_init: function(params) {
|
||||
params = Params.parse(params, { shellReactive: false,
|
||||
styleClass: null,
|
||||
parentActor: Main.uiGroup,
|
||||
keybindingMode: Shell.KeyBindingMode.SYSTEM_MODAL,
|
||||
shouldFadeIn: true,
|
||||
destroyOnClose: true });
|
||||
@@ -56,7 +57,7 @@ const ModalDialog = new Lang.Class({
|
||||
x: 0,
|
||||
y: 0,
|
||||
accessible_role: Atk.Role.DIALOG });
|
||||
Main.layoutManager.modalDialogGroup.add_actor(this._group);
|
||||
params.parentActor.add_actor(this._group);
|
||||
|
||||
let constraint = new Clutter.BindConstraint({ source: global.stage,
|
||||
coordinate: Clutter.BindCoordinate.ALL });
|
||||
|
@@ -244,12 +244,11 @@ const FdoNotificationDaemon = new Lang.Class({
|
||||
// Ignore replacesId since we already sent back a
|
||||
// NotificationClosed for that id.
|
||||
id = this._nextNotificationId++;
|
||||
let idle_id = Mainloop.idle_add(Lang.bind(this,
|
||||
function () {
|
||||
this._emitNotificationClosed(id, NotificationClosedReason.DISMISSED);
|
||||
return GLib.SOURCE_REMOVE;
|
||||
}));
|
||||
GLib.Source.set_name_by_id(idle_id, '[gnome-shell] this._emitNotificationClosed');
|
||||
Mainloop.idle_add(Lang.bind(this,
|
||||
function () {
|
||||
this._emitNotificationClosed(id, NotificationClosedReason.DISMISSED);
|
||||
return GLib.SOURCE_REMOVE;
|
||||
}));
|
||||
return invocation.return_value(GLib.Variant.new('(u)', [id]));
|
||||
}
|
||||
|
||||
|
@@ -73,17 +73,14 @@ const LevelBar = new Lang.Class({
|
||||
const OsdWindow = new Lang.Class({
|
||||
Name: 'OsdWindow',
|
||||
|
||||
_init: function(monitorIndex) {
|
||||
_init: function() {
|
||||
this._popupSize = 0;
|
||||
this.actor = new St.Widget({ x_expand: true,
|
||||
y_expand: true,
|
||||
x_align: Clutter.ActorAlign.CENTER,
|
||||
y_align: Clutter.ActorAlign.CENTER });
|
||||
|
||||
this._monitorIndex = monitorIndex;
|
||||
let constraint = new Layout.MonitorConstraint({ index: monitorIndex });
|
||||
this.actor.add_constraint(constraint);
|
||||
|
||||
this._currentMonitor = undefined;
|
||||
this.setMonitor (-1);
|
||||
this._box = new St.BoxLayout({ style_class: 'osd-window',
|
||||
vertical: true });
|
||||
this.actor.add_actor(this._box);
|
||||
@@ -112,6 +109,7 @@ const OsdWindow = new Lang.Class({
|
||||
Main.layoutManager.connect('monitors-changed',
|
||||
Lang.bind(this, this._monitorsChanged));
|
||||
this._monitorsChanged();
|
||||
|
||||
Main.uiGroup.add_child(this.actor);
|
||||
},
|
||||
|
||||
@@ -127,7 +125,7 @@ const OsdWindow = new Lang.Class({
|
||||
|
||||
setLevel: function(level) {
|
||||
this._level.actor.visible = (level != undefined);
|
||||
if (level != undefined) {
|
||||
if (level) {
|
||||
if (this.actor.visible)
|
||||
Tweener.addTween(this._level,
|
||||
{ level: level,
|
||||
@@ -158,7 +156,6 @@ const OsdWindow = new Lang.Class({
|
||||
Mainloop.source_remove(this._hideTimeoutId);
|
||||
this._hideTimeoutId = Mainloop.timeout_add(HIDE_TIMEOUT,
|
||||
Lang.bind(this, this._hide));
|
||||
GLib.Source.set_name_by_id(this._hideTimeoutId, '[gnome-shell] this._hide');
|
||||
},
|
||||
|
||||
cancel: function() {
|
||||
@@ -191,9 +188,12 @@ const OsdWindow = new Lang.Class({
|
||||
|
||||
_monitorsChanged: function() {
|
||||
/* assume 110x110 on a 640x480 display and scale from there */
|
||||
let monitor = Main.layoutManager.monitors[this._monitorIndex];
|
||||
if (!monitor)
|
||||
return; // we are about to be removed
|
||||
let monitor;
|
||||
|
||||
if (this._currentMonitor >= 0)
|
||||
monitor = Main.layoutManager.monitors[this._currentMonitor];
|
||||
else
|
||||
monitor = Main.layoutManager.primaryMonitor;
|
||||
|
||||
let scalew = monitor.width / 640.0;
|
||||
let scaleh = monitor.height / 480.0;
|
||||
@@ -222,56 +222,23 @@ const OsdWindow = new Lang.Class({
|
||||
// but the theme takes measures in unscaled dimensions
|
||||
let scaleFactor = St.ThemeContext.get_for_stage(global.stage).scale_factor;
|
||||
this._box.style = 'min-height: %dpx;'.format(Math.max(minWidth, minHeight) / scaleFactor);
|
||||
}
|
||||
});
|
||||
|
||||
const OsdWindowManager = new Lang.Class({
|
||||
Name: 'OsdWindowManager',
|
||||
|
||||
_init: function() {
|
||||
this._osdWindows = [];
|
||||
Main.layoutManager.connect('monitors-changed',
|
||||
Lang.bind(this, this._monitorsChanged));
|
||||
this._monitorsChanged();
|
||||
},
|
||||
|
||||
_monitorsChanged: function() {
|
||||
for (let i = 0; i < Main.layoutManager.monitors.length; i++) {
|
||||
if (this._osdWindows[i] == undefined)
|
||||
this._osdWindows[i] = new OsdWindow(i);
|
||||
}
|
||||
|
||||
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();
|
||||
},
|
||||
|
||||
setMonitor: function(index) {
|
||||
let constraint;
|
||||
|
||||
if (index < 0)
|
||||
index = -1;
|
||||
if (this._currentMonitor == index)
|
||||
return;
|
||||
|
||||
if (index < 0)
|
||||
constraint = new Layout.MonitorConstraint({ primary: true });
|
||||
else
|
||||
constraint = new Layout.MonitorConstraint({ index: index });
|
||||
|
||||
this.actor.clear_constraints();
|
||||
this.actor.add_constraint(constraint);
|
||||
this._currentMonitor = index;
|
||||
}
|
||||
});
|
||||
|
@@ -14,7 +14,6 @@ const Gdk = imports.gi.Gdk;
|
||||
const Background = imports.ui.background;
|
||||
const DND = imports.ui.dnd;
|
||||
const LayoutManager = imports.ui.layout;
|
||||
const Lightbox = imports.ui.lightbox;
|
||||
const Main = imports.ui.main;
|
||||
const MessageTray = imports.ui.messageTray;
|
||||
const OverviewControls = imports.ui.overviewControls;
|
||||
@@ -197,7 +196,11 @@ const Overview = new Lang.Class({
|
||||
|
||||
Tweener.addTween(background,
|
||||
{ brightness: 1.0,
|
||||
vignetteSharpness: 0.0,
|
||||
time: SHADE_ANIMATION_TIME,
|
||||
transition: 'easeOutQuad'
|
||||
});
|
||||
Tweener.addTween(background,
|
||||
{ vignetteSharpness: 0.0,
|
||||
time: SHADE_ANIMATION_TIME,
|
||||
transition: 'easeOutQuad'
|
||||
});
|
||||
@@ -210,8 +213,12 @@ const Overview = new Lang.Class({
|
||||
let background = backgrounds[i]._delegate;
|
||||
|
||||
Tweener.addTween(background,
|
||||
{ brightness: Lightbox.VIGNETTE_BRIGHTNESS,
|
||||
vignetteSharpness: Lightbox.VIGNETTE_SHARPNESS,
|
||||
{ brightness: 0.8,
|
||||
time: SHADE_ANIMATION_TIME,
|
||||
transition: 'easeOutQuad'
|
||||
});
|
||||
Tweener.addTween(background,
|
||||
{ vignetteSharpness: 0.7,
|
||||
time: SHADE_ANIMATION_TIME,
|
||||
transition: 'easeOutQuad'
|
||||
});
|
||||
@@ -365,7 +372,6 @@ const Overview = new Lang.Class({
|
||||
this._lastHoveredWindow = null;
|
||||
return GLib.SOURCE_REMOVE;
|
||||
}));
|
||||
GLib.Source.set_name_by_id(this._windowSwitchTimeoutId, '[gnome-shell] Main.activateWindow');
|
||||
}
|
||||
|
||||
return DND.DragMotionResult.CONTINUE;
|
||||
|
@@ -259,18 +259,13 @@ const ThumbnailsSlider = new Lang.Class({
|
||||
|
||||
Main.layoutManager.connect('monitors-changed', 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);
|
||||
},
|
||||
|
||||
_getAlwaysZoomOut: function() {
|
||||
// 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
|
||||
let alwaysZoomOut = this.actor.hover ||
|
||||
this._inDrag ||
|
||||
!Meta.prefs_get_dynamic_workspaces() ||
|
||||
global.screen.n_workspaces > 2 ||
|
||||
global.screen.get_active_workspace_index() != 0;
|
||||
// actually used, e.g. there are windows on more than one
|
||||
let alwaysZoomOut = this.actor.hover || this._inDrag || !Meta.prefs_get_dynamic_workspaces() || global.screen.n_workspaces > 2;
|
||||
|
||||
if (!alwaysZoomOut) {
|
||||
let monitors = Main.layoutManager.monitors;
|
||||
|
@@ -595,7 +595,6 @@ const ActivitiesButton = new Lang.Class({
|
||||
Mainloop.source_remove(this._xdndTimeOut);
|
||||
this._xdndTimeOut = Mainloop.timeout_add(BUTTON_DND_ACTIVATION_TIMEOUT,
|
||||
Lang.bind(this, this._xdndToggleOverview, actor));
|
||||
GLib.Source.set_name_by_id(this._xdndTimeOut, '[gnome-shell] this._xdndToggleOverview');
|
||||
|
||||
return DND.DragMotionResult.CONTINUE;
|
||||
},
|
||||
|
@@ -107,7 +107,6 @@ const PointerWatcher = new Lang.Class({
|
||||
|
||||
this._timeoutId = Mainloop.timeout_add(minInterval,
|
||||
Lang.bind(this, this._onTimeout));
|
||||
GLib.Source.set_name_by_id(this._timeoutId, '[gnome-shell] this._onTimeout');
|
||||
},
|
||||
|
||||
_onTimeout: function() {
|
||||
|
@@ -251,16 +251,8 @@ const PopupSeparatorMenuItem = new Lang.Class({
|
||||
this.actor.add(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.actor.add(this._separator.actor, { expand: true });
|
||||
},
|
||||
|
||||
_syncVisibility: function() {
|
||||
this.label.visible = this.label.text != '';
|
||||
}
|
||||
});
|
||||
|
||||
|
@@ -301,7 +301,7 @@ const NotificationsBox = new Lang.Class({
|
||||
});
|
||||
|
||||
this._updateVisibility();
|
||||
this.emit('wake-up-screen');
|
||||
Shell.util_wake_up_screen();
|
||||
}
|
||||
},
|
||||
|
||||
@@ -327,7 +327,7 @@ const NotificationsBox = new Lang.Class({
|
||||
|
||||
this._updateVisibility();
|
||||
if (obj.sourceBox.visible)
|
||||
this.emit('wake-up-screen');
|
||||
Shell.util_wake_up_screen();
|
||||
},
|
||||
|
||||
_visibleChanged: function(source, obj) {
|
||||
@@ -342,7 +342,7 @@ const NotificationsBox = new Lang.Class({
|
||||
|
||||
this._updateVisibility();
|
||||
if (obj.sourceBox.visible)
|
||||
this.emit('wake-up-screen');
|
||||
Shell.util_wake_up_screen();
|
||||
},
|
||||
|
||||
_detailedChanged: function(source, obj) {
|
||||
@@ -380,7 +380,6 @@ const NotificationsBox = new Lang.Class({
|
||||
this._sources.delete(source);
|
||||
},
|
||||
});
|
||||
Signals.addSignalMethods(NotificationsBox.prototype);
|
||||
|
||||
const Arrow = new Lang.Class({
|
||||
Name: 'Arrow',
|
||||
@@ -537,7 +536,7 @@ const ScreenShield = new Lang.Class({
|
||||
|
||||
this._smartcardManager = SmartcardManager.getSmartcardManager();
|
||||
this._smartcardManager.connect('smartcard-inserted',
|
||||
Lang.bind(this, function(manager, token) {
|
||||
Lang.bind(this, function(token) {
|
||||
if (this._isLocked && token.UsedToLogin)
|
||||
this._liftShield(true, 0);
|
||||
}));
|
||||
@@ -729,7 +728,7 @@ const ScreenShield = new Lang.Class({
|
||||
} else {
|
||||
this._inhibitSuspend();
|
||||
|
||||
this._wakeUpScreen();
|
||||
this._onUserBecameActive();
|
||||
}
|
||||
},
|
||||
|
||||
@@ -850,7 +849,6 @@ const ScreenShield = new Lang.Class({
|
||||
this.lock(false);
|
||||
return GLib.SOURCE_REMOVE;
|
||||
}));
|
||||
GLib.Source.set_name_by_id(this._lockTimeoutId, '[gnome-shell] this.lock');
|
||||
}
|
||||
|
||||
this._activateFade(this._longLightbox, STANDARD_FADE_TIME);
|
||||
@@ -1042,7 +1040,6 @@ const ScreenShield = new Lang.Class({
|
||||
|
||||
if (!this._arrowAnimationId) {
|
||||
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();
|
||||
}
|
||||
|
||||
@@ -1110,11 +1107,10 @@ const ScreenShield = new Lang.Class({
|
||||
if (params.fadeToBlack && params.animateFade) {
|
||||
// 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);
|
||||
return GLib.SOURCE_REMOVE;
|
||||
}));
|
||||
GLib.Source.set_name_by_id(id, '[gnome-shell] this._activateFade');
|
||||
} else {
|
||||
if (params.fadeToBlack)
|
||||
this._activateFade(this._shortLightbox, 0);
|
||||
@@ -1155,7 +1151,6 @@ const ScreenShield = new Lang.Class({
|
||||
this._lockScreenContents.add_actor(this._lockScreenContentsBox);
|
||||
|
||||
this._notificationsBox = new NotificationsBox();
|
||||
this._wakeUpScreenId = this._notificationsBox.connect('wake-up-screen', Lang.bind(this, this._wakeUpScreen));
|
||||
this._lockScreenContentsBox.add(this._notificationsBox.actor, { x_fill: true,
|
||||
y_fill: true,
|
||||
expand: true });
|
||||
@@ -1163,17 +1158,11 @@ const ScreenShield = new Lang.Class({
|
||||
this._hasLockScreen = true;
|
||||
},
|
||||
|
||||
_wakeUpScreen: function() {
|
||||
this._onUserBecameActive();
|
||||
this.emit('wake-up-screen');
|
||||
},
|
||||
|
||||
_clearLockScreen: function() {
|
||||
this._clock.destroy();
|
||||
this._clock = null;
|
||||
|
||||
if (this._notificationsBox) {
|
||||
this._notificationsBox.disconnect(this._wakeUpScreenId);
|
||||
this._notificationsBox.destroy();
|
||||
this._notificationsBox = null;
|
||||
}
|
||||
|
@@ -11,7 +11,6 @@ const Shell = imports.gi.Shell;
|
||||
const Signals = imports.signals;
|
||||
const St = imports.gi.St;
|
||||
|
||||
const GrabHelper = imports.ui.grabHelper;
|
||||
const Lightbox = imports.ui.lightbox;
|
||||
const Main = imports.ui.main;
|
||||
const Tweener = imports.ui.tweener;
|
||||
@@ -140,7 +139,6 @@ const SelectArea = new Lang.Class({
|
||||
this._startY = -1;
|
||||
this._lastX = 0;
|
||||
this._lastY = 0;
|
||||
this._result = null;
|
||||
|
||||
this._initRubberbandColors();
|
||||
|
||||
@@ -150,12 +148,12 @@ const SelectArea = new Lang.Class({
|
||||
y: 0 });
|
||||
Main.uiGroup.add_actor(this._group);
|
||||
|
||||
this._grabHelper = new GrabHelper.GrabHelper(this._group);
|
||||
|
||||
this._group.connect('button-press-event',
|
||||
Lang.bind(this, this._onButtonPress));
|
||||
this._group.connect('button-release-event',
|
||||
Lang.bind(this, this._onButtonRelease));
|
||||
this._group.connect('key-press-event',
|
||||
Lang.bind(this, this._onKeyPress));
|
||||
this._group.connect('motion-event',
|
||||
Lang.bind(this, this._onMotionEvent));
|
||||
|
||||
@@ -171,12 +169,10 @@ const SelectArea = new Lang.Class({
|
||||
},
|
||||
|
||||
show: function() {
|
||||
if (!this._grabHelper.grab({ actor: this._group,
|
||||
onUngrab: Lang.bind(this, this._onUngrab) }))
|
||||
if (!Main.pushModal(this._group) || this._group.visible)
|
||||
return;
|
||||
|
||||
global.screen.set_cursor(Meta.Cursor.CROSSHAIR);
|
||||
Main.uiGroup.set_child_above_sibling(this._group, null);
|
||||
this._group.visible = true;
|
||||
},
|
||||
|
||||
@@ -206,6 +202,13 @@ const SelectArea = new Lang.Class({
|
||||
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) {
|
||||
if (this._startX == -1 || this._startY == -1)
|
||||
return Clutter.EVENT_PROPAGATE;
|
||||
@@ -227,28 +230,24 @@ const SelectArea = new Lang.Class({
|
||||
},
|
||||
|
||||
_onButtonRelease: function(actor, event) {
|
||||
this._result = this._getGeometry();
|
||||
Tweener.addTween(this._group,
|
||||
{ opacity: 0,
|
||||
time: 0.2,
|
||||
transition: 'easeOutQuad',
|
||||
onComplete: Lang.bind(this,
|
||||
function() {
|
||||
this._grabHelper.ungrab();
|
||||
})
|
||||
});
|
||||
this._destroy(this._getGeometry(), true);
|
||||
return Clutter.EVENT_PROPAGATE;
|
||||
},
|
||||
|
||||
_onUngrab: function() {
|
||||
global.screen.set_cursor(Meta.Cursor.DEFAULT);
|
||||
this.emit('finished', this._result);
|
||||
_destroy: function(geometry, fade) {
|
||||
Tweener.addTween(this._group,
|
||||
{ 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,
|
||||
function() {
|
||||
this._group.destroy();
|
||||
return GLib.SOURCE_REMOVE;
|
||||
}));
|
||||
this.emit('finished', geometry);
|
||||
})
|
||||
});
|
||||
}
|
||||
});
|
||||
Signals.addSignalMethods(SelectArea.prototype);
|
||||
|
@@ -39,12 +39,11 @@ const Main = imports.ui.main;
|
||||
function sleep(milliseconds) {
|
||||
let cb;
|
||||
|
||||
let id = Mainloop.timeout_add(milliseconds, function() {
|
||||
Mainloop.timeout_add(milliseconds, function() {
|
||||
if (cb)
|
||||
cb();
|
||||
return GLib.SOURCE_REMOVE;
|
||||
});
|
||||
GLib.Source.set_name_by_id(id, '[gnome-shell] sleep');
|
||||
|
||||
return function(callback) {
|
||||
cb = callback;
|
||||
|
@@ -68,9 +68,6 @@ const SearchSystem = new Lang.Class({
|
||||
_unregisterProvider: function (provider) {
|
||||
let index = this._providers.indexOf(provider);
|
||||
this._providers.splice(index, 1);
|
||||
|
||||
if (provider.display)
|
||||
provider.display.destroy();
|
||||
},
|
||||
|
||||
getProviders: function() {
|
||||
@@ -318,8 +315,6 @@ const SearchResultsBase = new Lang.Class({
|
||||
},
|
||||
|
||||
clear: function() {
|
||||
for (let resultId in this._resultDisplays)
|
||||
this._resultDisplays[resultId].actor.destroy();
|
||||
this._resultDisplays = {};
|
||||
this._clearResultDisplay();
|
||||
this.actor.hide();
|
||||
@@ -343,22 +338,12 @@ const SearchResultsBase = new Lang.Class({
|
||||
}));
|
||||
|
||||
if (metasNeeded.length === 0) {
|
||||
callback(true);
|
||||
callback();
|
||||
} else {
|
||||
this._cancellable.cancel();
|
||||
this._cancellable.reset();
|
||||
|
||||
this.provider.getResultMetas(metasNeeded, Lang.bind(this, function(metas) {
|
||||
if (metas.length == 0) {
|
||||
callback(false);
|
||||
return;
|
||||
}
|
||||
if (metas.length != metasNeeded.length) {
|
||||
log('Wrong number of result metas returned by search provider');
|
||||
callback(false);
|
||||
return;
|
||||
}
|
||||
|
||||
metasNeeded.forEach(Lang.bind(this, function(resultId, i) {
|
||||
let meta = metas[i];
|
||||
let display = this._createResultDisplay(meta);
|
||||
@@ -366,7 +351,7 @@ const SearchResultsBase = new Lang.Class({
|
||||
display.actor.connect('key-focus-in', Lang.bind(this, this._keyFocusIn));
|
||||
this._resultDisplays[resultId] = display;
|
||||
}));
|
||||
callback(true);
|
||||
callback();
|
||||
}), this._cancellable);
|
||||
}
|
||||
},
|
||||
@@ -383,10 +368,8 @@ const SearchResultsBase = new Lang.Class({
|
||||
let results = this.provider.filterResults(providerResults, maxResults);
|
||||
let hasMoreResults = results.length < providerResults.length;
|
||||
|
||||
this._ensureResultActors(results, Lang.bind(this, function(successful) {
|
||||
this._ensureResultActors(results, Lang.bind(this, function() {
|
||||
this._clearResultDisplay();
|
||||
if (!successful)
|
||||
return;
|
||||
|
||||
// To avoid CSS transitions causing flickering when
|
||||
// the first search result stays the same, we hide the
|
||||
@@ -632,11 +615,8 @@ const SearchResults = new Lang.Class({
|
||||
if (newDefaultResult != this._defaultResult) {
|
||||
if (this._defaultResult)
|
||||
this._defaultResult.setSelected(false);
|
||||
if (newDefaultResult) {
|
||||
if (newDefaultResult)
|
||||
newDefaultResult.setSelected(this._highlightDefault);
|
||||
if (this._highlightDefault)
|
||||
Util.ensureActorVisibleInScrollView(this._scrollView, newDefaultResult.actor);
|
||||
}
|
||||
|
||||
this._defaultResult = newDefaultResult;
|
||||
}
|
||||
@@ -673,11 +653,8 @@ const SearchResults = new Lang.Class({
|
||||
|
||||
highlightDefault: function(highlight) {
|
||||
this._highlightDefault = highlight;
|
||||
if (this._defaultResult) {
|
||||
if (this._defaultResult)
|
||||
this._defaultResult.setSelected(highlight);
|
||||
if (highlight)
|
||||
Util.ensureActorVisibleInScrollView(this._scrollView, this._defaultResult.actor);
|
||||
}
|
||||
},
|
||||
|
||||
navigateFocus: function(direction) {
|
||||
|
@@ -140,14 +140,13 @@ function _loadModes() {
|
||||
|
||||
function listModes() {
|
||||
_loadModes();
|
||||
let id = Mainloop.idle_add(function() {
|
||||
Mainloop.idle_add(function() {
|
||||
let names = Object.getOwnPropertyNames(_modes);
|
||||
for (let i = 0; i < names.length; i++)
|
||||
if (_modes[names[i]].isPrimary)
|
||||
print(names[i]);
|
||||
Mainloop.quit('listModes');
|
||||
});
|
||||
GLib.Source.set_name_by_id(id, '[gnome-shell] listModes');
|
||||
Mainloop.run('listModes');
|
||||
}
|
||||
|
||||
|
@@ -69,7 +69,6 @@ const ScreenSaverIface = '<node> \
|
||||
<signal name="ActiveChanged"> \
|
||||
<arg name="new_value" type="b" /> \
|
||||
</signal> \
|
||||
<signal name="WakeUpScreen" /> \
|
||||
</interface> \
|
||||
</node>';
|
||||
|
||||
@@ -141,7 +140,12 @@ const GnomeShell = new Lang.Class({
|
||||
if (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) {
|
||||
@@ -403,9 +407,6 @@ const ScreenSaverDBus = new Lang.Class({
|
||||
screenShield.connect('active-changed', Lang.bind(this, function(shield) {
|
||||
this._dbusImpl.emit_signal('ActiveChanged', GLib.Variant.new('(b)', [shield.active]));
|
||||
}));
|
||||
screenShield.connect('wake-up-screen', Lang.bind(this, function(shield) {
|
||||
this._dbusImpl.emit_signal('WakeUpScreen', null);
|
||||
}));
|
||||
|
||||
this._dbusImpl = Gio.DBusExportedObject.wrapJSObject(ScreenSaverIface, this);
|
||||
this._dbusImpl.export(Gio.DBus.session, '/org/gnome/ScreenSaver');
|
||||
|
@@ -103,7 +103,6 @@ const ATIndicator = new Lang.Class({
|
||||
return;
|
||||
|
||||
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) {
|
||||
|
@@ -17,7 +17,6 @@ const OBJECT_PATH = '/org/gnome/SettingsDaemon/Rfkill';
|
||||
const RfkillManagerInterface = '<node> \
|
||||
<interface name="org.gnome.SettingsDaemon.Rfkill"> \
|
||||
<property name="BluetoothAirplaneMode" type="b" access="readwrite" /> \
|
||||
<property name="BluetoothHasAirplaneMode" type="b" access="read" /> \
|
||||
</interface> \
|
||||
</node>';
|
||||
|
||||
@@ -59,7 +58,6 @@ const Indicator = new Lang.Class({
|
||||
this._model.connect('row-changed', Lang.bind(this, this._sync));
|
||||
this._model.connect('row-deleted', Lang.bind(this, this._sync));
|
||||
this._model.connect('row-inserted', Lang.bind(this, this._sync));
|
||||
Main.sessionMode.connect('updated', Lang.bind(this, this._sync));
|
||||
this._sync();
|
||||
},
|
||||
|
||||
@@ -94,11 +92,9 @@ const Indicator = new Lang.Class({
|
||||
|
||||
_sync: function() {
|
||||
let nDevices = this._getNConnectedDevices();
|
||||
let sensitive = !Main.sessionMode.isLocked && !Main.sessionMode.isGreeter;
|
||||
|
||||
this.menu.setSensitive(sensitive);
|
||||
this._indicator.visible = nDevices > 0;
|
||||
this._item.actor.visible = this._proxy.BluetoothHasAirplaneMode && !this._proxy.BluetoothAirplaneMode;
|
||||
this._item.actor.visible = !this._proxy.BluetoothAirplaneMode;
|
||||
|
||||
if (nDevices > 0)
|
||||
this._item.status.text = ngettext("%d Connected Device", "%d Connected Devices", nDevices).format(nDevices);
|
||||
|
@@ -292,10 +292,6 @@ const InputSourcePopup = new Lang.Class({
|
||||
this._select(this._previous());
|
||||
else if (keysym == Clutter.Right)
|
||||
this._select(this._next());
|
||||
else
|
||||
return Clutter.EVENT_PROPAGATE;
|
||||
|
||||
return Clutter.EVENT_STOP;
|
||||
},
|
||||
|
||||
_finish : function() {
|
||||
|
@@ -4,10 +4,9 @@ const GLib = imports.gi.GLib;
|
||||
const Gio = imports.gi.Gio;
|
||||
const Lang = imports.lang;
|
||||
|
||||
const Main = imports.ui.main;
|
||||
const Shell = imports.gi.Shell;
|
||||
const PanelMenu = imports.ui.panelMenu;
|
||||
const PopupMenu = imports.ui.popupMenu;
|
||||
const Shell = imports.gi.Shell;
|
||||
|
||||
const LOCATION_SCHEMA = 'org.gnome.shell.location';
|
||||
const MAX_ACCURACY_LEVEL = 'max-accuracy-level';
|
||||
@@ -56,8 +55,8 @@ const Indicator = new Lang.Class({
|
||||
this._agent = Gio.DBusExportedObject.wrapJSObject(AgentIface, this);
|
||||
this._agent.export(Gio.DBus.system, '/org/freedesktop/GeoClue2/Agent');
|
||||
|
||||
this._item.status.text = _("Enabled");
|
||||
this._onOffAction = this._item.menu.addAction(_("Disable"), Lang.bind(this, this._onOnOffAction));
|
||||
this._item.status.text = _("On");
|
||||
this._onOffAction = this._item.menu.addAction(_("Turn Off"), Lang.bind(this, this._onOnOffAction));
|
||||
|
||||
this.menu.addMenuItem(this._item);
|
||||
|
||||
@@ -66,8 +65,6 @@ const Indicator = new Lang.Class({
|
||||
0,
|
||||
Lang.bind(this, this._connectToGeoclue),
|
||||
Lang.bind(this, this._onGeoclueVanished));
|
||||
Main.sessionMode.connect('updated', Lang.bind(this, this._onSessionUpdated));
|
||||
this._onSessionUpdated();
|
||||
this._onMaxAccuracyLevelChanged();
|
||||
this._connectToGeoclue();
|
||||
},
|
||||
@@ -97,7 +94,6 @@ const Indicator = new Lang.Class({
|
||||
}
|
||||
|
||||
this._indicator.visible = this._proxy.InUse;
|
||||
this._updateMenuLabels();
|
||||
},
|
||||
|
||||
_connectToGeoclue: function() {
|
||||
@@ -123,7 +119,7 @@ const Indicator = new Lang.Class({
|
||||
this._propertiesChangedId = this._proxy.connect('g-properties-changed',
|
||||
Lang.bind(this, this._onGeocluePropsChanged));
|
||||
|
||||
this._availableAccuracyLevel = this._proxy.AvailableAccuracyLevel;
|
||||
this._updateMenu();
|
||||
this._syncIndicator();
|
||||
|
||||
this._proxy.AddAgentRemote('gnome-shell', Lang.bind(this, this._onAgentRegistered));
|
||||
@@ -154,23 +150,14 @@ const Indicator = new Lang.Class({
|
||||
this._settings.set_enum(MAX_ACCURACY_LEVEL, 0);
|
||||
},
|
||||
|
||||
_onSessionUpdated: function() {
|
||||
let sensitive = !Main.sessionMode.isLocked && !Main.sessionMode.isGreeter;
|
||||
this.menu.setSensitive(sensitive);
|
||||
},
|
||||
|
||||
_updateMenuLabels: function() {
|
||||
if (this._getMaxAccuracyLevel() == 0) {
|
||||
this._item.status.text = _("Disabled");
|
||||
this._onOffAction.label.text = _("Enable");
|
||||
} else {
|
||||
this._item.status.text = this._indicator.visible ? _("In Use") : _("Enabled");
|
||||
this._onOffAction.label.text = _("Disable");
|
||||
}
|
||||
},
|
||||
|
||||
_onMaxAccuracyLevelChanged: function() {
|
||||
this._updateMenuLabels();
|
||||
if (this._getMaxAccuracyLevel() == 0) {
|
||||
this._item.status.text = _("Off");
|
||||
this._onOffAction.label.text = _("Turn On");
|
||||
} else {
|
||||
this._item.status.text = _("On");
|
||||
this._onOffAction.label.text = _("Turn Off");
|
||||
}
|
||||
|
||||
// Gotta ensure geoclue is up and we are registered as agent to it
|
||||
// before we emit the notify for this property change.
|
||||
@@ -187,12 +174,17 @@ const Indicator = new Lang.Class({
|
||||
this._agent.emit_property_changed('MaxAccuracyLevel', variant);
|
||||
},
|
||||
|
||||
_updateMenu: function() {
|
||||
this._availableAccuracyLevel = this._proxy.AvailableAccuracyLevel;
|
||||
this.menu.actor.visible = (this._availableAccuracyLevel != 0);
|
||||
},
|
||||
|
||||
_onGeocluePropsChanged: function(proxy, properties) {
|
||||
let unpacked = properties.deep_unpack();
|
||||
if ("InUse" in unpacked)
|
||||
this._syncIndicator();
|
||||
if ("AvailableAccuracyLevel" in unpacked)
|
||||
this._availableAccuracyLevel = this._proxy.AvailableAccuracyLevel;
|
||||
this._updateMenu();
|
||||
}
|
||||
});
|
||||
|
||||
|
@@ -293,13 +293,8 @@ const NMConnectionSection = new Lang.Class({
|
||||
},
|
||||
|
||||
removeConnection: function(connection) {
|
||||
let uuid = connection.get_uuid();
|
||||
let item = this._connectionItems.get(uuid);
|
||||
if (item == undefined)
|
||||
return;
|
||||
|
||||
item.destroy();
|
||||
this._connectionItems.delete(uuid);
|
||||
this._connectionItems.get(connection.get_uuid()).destroy();
|
||||
this._connectionItems.delete(connection.get_uuid());
|
||||
|
||||
let pos = this._connections.indexOf(connection);
|
||||
this._connections.splice(pos, 1);
|
||||
@@ -423,18 +418,18 @@ const NMConnectionDevice = new Lang.Class({
|
||||
case NetworkManager.DeviceState.UNMANAGED:
|
||||
/* Translators: this is for network devices that are physically present but are not
|
||||
under NetworkManager's control (and thus cannot be used in the menu) */
|
||||
return _("Unmanaged");
|
||||
return _("unmanaged");
|
||||
case NetworkManager.DeviceState.DEACTIVATING:
|
||||
return _("Disconnecting");
|
||||
return _("disconnecting...");
|
||||
case NetworkManager.DeviceState.PREPARE:
|
||||
case NetworkManager.DeviceState.CONFIG:
|
||||
case NetworkManager.DeviceState.IP_CONFIG:
|
||||
case NetworkManager.DeviceState.IP_CHECK:
|
||||
case NetworkManager.DeviceState.SECONDARIES:
|
||||
return _("Connecting");
|
||||
return _("connecting...");
|
||||
case NetworkManager.DeviceState.NEED_AUTH:
|
||||
/* Translators: this is for network connections that require some kind of key or password */
|
||||
return _("Authentication required");
|
||||
return _("authentication required");
|
||||
case NetworkManager.DeviceState.UNAVAILABLE:
|
||||
// This state is actually a compound of various states (generically unavailable,
|
||||
// firmware missing), that are exposed by different properties (whose state may
|
||||
@@ -442,13 +437,13 @@ const NMConnectionDevice = new Lang.Class({
|
||||
if (this._device.firmware_missing) {
|
||||
/* Translators: this is for devices that require some kind of firmware or kernel
|
||||
module, which is missing */
|
||||
return _("Firmware missing");
|
||||
return _("firmware missing");
|
||||
}
|
||||
/* Translators: this is for a network device that cannot be activated (for example it
|
||||
is disabled by rfkill, or it has no coverage */
|
||||
return _("Unavailable");
|
||||
return _("unavailable");
|
||||
case NetworkManager.DeviceState.FAILED:
|
||||
return _("Connection failed");
|
||||
return _("connection failed");
|
||||
default:
|
||||
log('Device state invalid, is %d'.format(this._device.state));
|
||||
return 'invalid';
|
||||
@@ -1170,10 +1165,6 @@ const NMDeviceWireless = new Lang.Class({
|
||||
this._client.disconnect(this._wirelessHwEnabledChangedId);
|
||||
this._wirelessHwEnabledChangedId = 0;
|
||||
}
|
||||
if (this._dialog) {
|
||||
this._dialog.destroy();
|
||||
this._dialog = null;
|
||||
}
|
||||
|
||||
this.item.destroy();
|
||||
},
|
||||
@@ -1866,7 +1857,8 @@ const NMApplet = new Lang.Class({
|
||||
|
||||
_updateIcon: function() {
|
||||
if (!this._client.networking_enabled || !this._mainConnection) {
|
||||
this._primaryIndicator.visible = false;
|
||||
this._primaryIndicator.icon_name = 'network-offline-symbolic';
|
||||
this._primaryIndicator.visible = true;
|
||||
} else {
|
||||
let dev = this._mainConnection._primaryDevice;
|
||||
this._primaryIndicator.visible = (dev != null);
|
||||
|
@@ -4,7 +4,6 @@ const Gio = imports.gi.Gio;
|
||||
const Lang = imports.lang;
|
||||
const Signals = imports.signals;
|
||||
|
||||
const Main = imports.ui.main;
|
||||
const PanelMenu = imports.ui.panelMenu;
|
||||
const PopupMenu = imports.ui.popupMenu;
|
||||
|
||||
@@ -84,18 +83,10 @@ const Indicator = new Lang.Class({
|
||||
this._item.icon.icon_name = 'airplane-mode-symbolic';
|
||||
this._item.status.text = _("On");
|
||||
this._offItem = this._item.menu.addAction(_("Turn Off"), Lang.bind(this, function() {
|
||||
this._manager.airplaneMode = false;
|
||||
this._proxy.AirplaneMode = false;
|
||||
}));
|
||||
this._item.menu.addSettingsAction(_("Network Settings"), 'gnome-network-panel.desktop');
|
||||
this.menu.addMenuItem(this._item);
|
||||
|
||||
Main.sessionMode.connect('updated', Lang.bind(this, this._sessionUpdated));
|
||||
this._sessionUpdated();
|
||||
},
|
||||
|
||||
_sessionUpdated: function() {
|
||||
let sensitive = !Main.sessionMode.isLocked && !Main.sessionMode.isGreeter;
|
||||
this.menu.setSensitive(sensitive);
|
||||
},
|
||||
|
||||
_sync: function() {
|
||||
|
@@ -56,10 +56,7 @@ const AltSwitcher = new Lang.Class({
|
||||
}
|
||||
|
||||
if (this.actor.get_child() != childToShow) {
|
||||
let hasFocus = this.actor.contains(global.stage.get_key_focus());
|
||||
this.actor.set_child(childToShow);
|
||||
if (hasFocus)
|
||||
childToShow.grab_key_focus();
|
||||
|
||||
// The actors might respond to hover, so
|
||||
// sync the pointer to make sure they update.
|
||||
|
@@ -161,12 +161,11 @@ const SwitcherPopup = new Lang.Class({
|
||||
// disturbed by the popup briefly flashing.
|
||||
this._initialDelayTimeoutId = Mainloop.timeout_add(POPUP_DELAY_TIMEOUT,
|
||||
Lang.bind(this, function () {
|
||||
Main.osdWindowManager.hideAll();
|
||||
Main.osdWindow.cancel();
|
||||
this.actor.opacity = 255;
|
||||
this._initialDelayTimeoutId = 0;
|
||||
return GLib.SOURCE_REMOVE;
|
||||
}));
|
||||
GLib.Source.set_name_by_id(this._initialDelayTimeoutId, '[gnome-shell] Main.osdWindow.cancel');
|
||||
return true;
|
||||
},
|
||||
|
||||
@@ -190,11 +189,10 @@ const SwitcherPopup = new Lang.Class({
|
||||
|
||||
this._disableHover();
|
||||
|
||||
if (this._keyPressHandler(keysym, backwards, action) != Clutter.EVENT_PROPAGATE)
|
||||
return Clutter.EVENT_STOP;
|
||||
|
||||
if (keysym == Clutter.Escape)
|
||||
this.destroy();
|
||||
else
|
||||
this._keyPressHandler(keysym, backwards, action);
|
||||
|
||||
return Clutter.EVENT_STOP;
|
||||
},
|
||||
@@ -252,7 +250,6 @@ const SwitcherPopup = new Lang.Class({
|
||||
Mainloop.source_remove(this._motionTimeoutId);
|
||||
|
||||
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() {
|
||||
|
@@ -53,8 +53,8 @@ const UnlockDialog = new Lang.Class({
|
||||
|
||||
this._authPrompt = new AuthPrompt.AuthPrompt(new Gdm.Client(), AuthPrompt.AuthPromptMode.UNLOCK_ONLY);
|
||||
this._authPrompt.connect('failed', Lang.bind(this, this._fail));
|
||||
this._authPrompt.connect('cancelled', Lang.bind(this, this._fail));
|
||||
this._authPrompt.connect('reset', Lang.bind(this, this._onReset));
|
||||
this._authPrompt.connect('needs-username', Lang.bind(this, this._onNeedsUserName));
|
||||
this._authPrompt.setPasswordChar('\u25cf');
|
||||
this._authPrompt.nextButton.label = _("Unlock");
|
||||
|
||||
@@ -101,6 +101,10 @@ const UnlockDialog = new Lang.Class({
|
||||
},
|
||||
|
||||
_onReset: function(authPrompt, beginRequest) {
|
||||
this._authPrompt.begin();
|
||||
},
|
||||
|
||||
_onNeedsUserName: function() {
|
||||
let userName;
|
||||
if (beginRequest == AuthPrompt.BeginRequestType.PROVIDE_USERNAME) {
|
||||
this._authPrompt.setUser(this._user);
|
||||
@@ -109,7 +113,7 @@ const UnlockDialog = new Lang.Class({
|
||||
userName = null;
|
||||
}
|
||||
|
||||
this._authPrompt.begin({ userName: userName });
|
||||
this._authPrompt.gotUserName(userName);
|
||||
},
|
||||
|
||||
_escape: function() {
|
||||
|
@@ -282,7 +282,7 @@ const ViewSelector = new Lang.Class({
|
||||
return Clutter.EVENT_STOP;
|
||||
} else if (this._shouldTriggerSearch(symbol)) {
|
||||
this.startSearch(event);
|
||||
} else if (!this._searchActive && !global.stage.key_focus) {
|
||||
} else if (!this._searchActive) {
|
||||
if (symbol == Clutter.Tab || symbol == Clutter.Down) {
|
||||
this._activePage.navigate_focus(null, Gtk.DirectionType.TAB_FORWARD, false);
|
||||
return true;
|
||||
@@ -383,11 +383,9 @@ const ViewSelector = new Lang.Class({
|
||||
this._iconClickedId = this._entry.connect('secondary-icon-clicked',
|
||||
Lang.bind(this, this.reset));
|
||||
|
||||
if (this._searchTimeoutId == 0) {
|
||||
if (this._searchTimeoutId == 0)
|
||||
this._searchTimeoutId = Mainloop.timeout_add(150,
|
||||
Lang.bind(this, this._doSearch));
|
||||
GLib.Source.set_name_by_id(this._searchTimeoutId, '[gnome-shell] this._doSearch');
|
||||
}
|
||||
} else {
|
||||
if (this._iconClickedId > 0) {
|
||||
this._entry.disconnect(this._iconClickedId);
|
||||
|
@@ -15,7 +15,6 @@ const WorkspaceSwitcherPopup = imports.ui.workspaceSwitcherPopup;
|
||||
const Main = imports.ui.main;
|
||||
const ModalDialog = imports.ui.modalDialog;
|
||||
const Tweener = imports.ui.tweener;
|
||||
const WindowMenu = imports.ui.windowMenu;
|
||||
|
||||
const SHELL_KEYBINDINGS_SCHEMA = 'org.gnome.shell.keybindings';
|
||||
const WINDOW_ANIMATION_TIME = 0.25;
|
||||
@@ -83,7 +82,6 @@ const DisplayChangeDialog = new Lang.Class({
|
||||
{ expand: false, x_fill: false, x_align: St.Align.END });
|
||||
|
||||
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) {
|
||||
@@ -273,20 +271,18 @@ const WorkspaceTracker = new Lang.Class({
|
||||
this._queueCheckWorkspaces();
|
||||
return GLib.SOURCE_REMOVE;
|
||||
}));
|
||||
GLib.Source.set_name_by_id(workspace._keepAliveId, '[gnome-shell] this._queueCheckWorkspaces');
|
||||
},
|
||||
|
||||
_windowRemoved: function(workspace, window) {
|
||||
workspace._lastRemovedWindow = window;
|
||||
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) {
|
||||
workspace._lastRemovedWindow = null;
|
||||
this._queueCheckWorkspaces();
|
||||
}
|
||||
return GLib.SOURCE_REMOVE;
|
||||
}));
|
||||
GLib.Source.set_name_by_id(id, '[gnome-shell] this._queueCheckWorkspaces');
|
||||
},
|
||||
|
||||
_windowLeftMonitor: function(metaScreen, monitorIndex, metaWin) {
|
||||
@@ -481,7 +477,6 @@ const WindowManager = new Lang.Class({
|
||||
this._shellwm.connect('switch-workspace', Lang.bind(this, this._switchWorkspace));
|
||||
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('show-window-menu', Lang.bind(this, this._showWindowMenu));
|
||||
this._shellwm.connect('minimize', Lang.bind(this, this._minimizeWindow));
|
||||
this._shellwm.connect('maximize', Lang.bind(this, this._maximizeWindow));
|
||||
this._shellwm.connect('unmaximize', Lang.bind(this, this._unmaximizeWindow));
|
||||
@@ -509,10 +504,6 @@ const WindowManager = new Lang.Class({
|
||||
Shell.KeyBindingMode.NORMAL |
|
||||
Shell.KeyBindingMode.OVERVIEW,
|
||||
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',
|
||||
Shell.KeyBindingMode.NORMAL |
|
||||
Shell.KeyBindingMode.OVERVIEW,
|
||||
@@ -613,9 +604,6 @@ const WindowManager = new Lang.Class({
|
||||
this.setCustomKeybindingHandler('move-to-workspace-12',
|
||||
Shell.KeyBindingMode.NORMAL,
|
||||
Lang.bind(this, this._showWorkspaceSwitcher));
|
||||
this.setCustomKeybindingHandler('move-to-workspace-last',
|
||||
Shell.KeyBindingMode.NORMAL,
|
||||
Lang.bind(this, this._showWorkspaceSwitcher));
|
||||
this.setCustomKeybindingHandler('switch-applications',
|
||||
Shell.KeyBindingMode.NORMAL,
|
||||
Lang.bind(this, this._startAppSwitcher));
|
||||
@@ -671,8 +659,6 @@ const WindowManager = new Lang.Class({
|
||||
this._dimWindow(this._dimmedWindows[i]);
|
||||
}));
|
||||
|
||||
this._windowMenuManager = new WindowMenu.WindowMenuManager();
|
||||
|
||||
if (Main.sessionMode.hasWorkspaces)
|
||||
this._workspaceTracker = new WorkspaceTracker(this);
|
||||
|
||||
@@ -1163,10 +1149,6 @@ const WindowManager = new Lang.Class({
|
||||
this._tilePreview.hide();
|
||||
},
|
||||
|
||||
_showWindowMenu: function(shellwm, window, menu, x, y) {
|
||||
this._windowMenuManager.showWindowMenuForWindow(window, menu, x, y);
|
||||
},
|
||||
|
||||
_startAppSwitcher : function(display, screen, window, binding) {
|
||||
/* prevent a corner case where both popups show up at once */
|
||||
if (this._workspaceSwitcherPopup != null)
|
||||
@@ -1223,10 +1205,7 @@ const WindowManager = new Lang.Class({
|
||||
let newWs;
|
||||
let direction;
|
||||
|
||||
if (target == 'last') {
|
||||
direction = Meta.MotionDirection.DOWN;
|
||||
newWs = screen.get_workspace_by_index(screen.n_workspaces - 1);
|
||||
} else if (isNaN(target)) {
|
||||
if (isNaN(target)) {
|
||||
direction = Meta.MotionDirection[target.toUpperCase()];
|
||||
newWs = screen.get_active_workspace().get_neighbor(direction);
|
||||
} else if (target > 0) {
|
||||
|
@@ -1,172 +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) {
|
||||
this.parent(Main.layoutManager.dummyCursor, 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) {
|
||||
let app = Shell.WindowTracker.get_default().get_window_app(window);
|
||||
|
||||
this.parent(Main.layoutManager.dummyCursor, 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 });
|
||||
},
|
||||
|
||||
showWindowMenuForWindow: function(window, type, x, y) {
|
||||
let menu = (type == Meta.WindowMenuType.WM) ? new WindowMenu(window)
|
||||
: new AppMenu(window);
|
||||
|
||||
this._manager.addMenu(menu);
|
||||
|
||||
menu.connect('activate', function() {
|
||||
window.check_alive(global.get_current_time());
|
||||
});
|
||||
|
||||
Main.layoutManager.setDummyCursorGeometry(x, y, 0, 0);
|
||||
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)
|
||||
menu.destroy();
|
||||
}));
|
||||
}
|
||||
});
|
@@ -8,8 +8,6 @@ const Meta = imports.gi.Meta;
|
||||
const Pango = imports.gi.Pango;
|
||||
const Shell = imports.gi.Shell;
|
||||
const St = imports.gi.St;
|
||||
const Atk = imports.gi.Atk;
|
||||
|
||||
const Signals = imports.signals;
|
||||
|
||||
const DND = imports.ui.dnd;
|
||||
@@ -123,7 +121,6 @@ const WindowClone = new Lang.Class({
|
||||
// the hierarchy that is sized to only the visible portion.
|
||||
this.actor = new St.Widget({ reactive: true,
|
||||
can_focus: true,
|
||||
accessible_role: Atk.Role.PUSH_BUTTON,
|
||||
layout_manager: new WindowCloneLayout() });
|
||||
|
||||
this.actor.add_child(this._windowClone);
|
||||
@@ -427,7 +424,6 @@ const WindowOverlay = new Lang.Class({
|
||||
text: metaWindow.title });
|
||||
title.clutter_text.ellipsize = Pango.EllipsizeMode.END;
|
||||
title._spacing = 0;
|
||||
windowClone.actor.label_actor = title;
|
||||
|
||||
this._updateCaptionId = metaWindow.connect('notify::title',
|
||||
Lang.bind(this, function(w) {
|
||||
@@ -594,12 +590,11 @@ const WindowOverlay = new Lang.Class({
|
||||
|
||||
// use an idle handler to avoid mapping problems -
|
||||
// see comment in Workspace._windowAdded
|
||||
let id = Mainloop.idle_add(Lang.bind(this,
|
||||
function() {
|
||||
this._windowClone.emit('selected');
|
||||
return GLib.SOURCE_REMOVE;
|
||||
}));
|
||||
GLib.Source.set_name_by_id(id, '[gnome-shell] this._windowClone.emit');
|
||||
Mainloop.idle_add(Lang.bind(this,
|
||||
function() {
|
||||
this._windowClone.emit('selected');
|
||||
return GLib.SOURCE_REMOVE;
|
||||
}));
|
||||
}
|
||||
},
|
||||
|
||||
@@ -670,10 +665,8 @@ const WindowOverlay = new Lang.Class({
|
||||
},
|
||||
|
||||
_onLeave: function() {
|
||||
if (this._idleToggleCloseId == 0) {
|
||||
if (this._idleToggleCloseId == 0)
|
||||
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;
|
||||
},
|
||||
|
||||
@@ -1421,7 +1414,6 @@ const Workspace = new Lang.Class({
|
||||
this._currentLayout = null;
|
||||
this._repositionWindowsId = Mainloop.timeout_add(750,
|
||||
Lang.bind(this, this._delayedWindowRepositioning));
|
||||
GLib.Source.set_name_by_id(this._repositionWindowsId, '[gnome-shell] this._delayedWindowRepositioning');
|
||||
},
|
||||
|
||||
_doAddWindow : function(metaWin) {
|
||||
@@ -1433,15 +1425,14 @@ const Workspace = new Lang.Class({
|
||||
if (!win) {
|
||||
// Newly-created windows are added to a workspace before
|
||||
// the compositor finds out about them...
|
||||
let id = Mainloop.idle_add(Lang.bind(this,
|
||||
function () {
|
||||
if (this.actor &&
|
||||
metaWin.get_compositor_private() &&
|
||||
metaWin.get_workspace() == this.metaWorkspace)
|
||||
this._doAddWindow(metaWin);
|
||||
return GLib.SOURCE_REMOVE;
|
||||
}));
|
||||
GLib.Source.set_name_by_id(id, '[gnome-shell] this._doAddWindow');
|
||||
Mainloop.idle_add(Lang.bind(this,
|
||||
function () {
|
||||
if (this.actor &&
|
||||
metaWin.get_compositor_private() &&
|
||||
metaWin.get_workspace() == this.metaWorkspace)
|
||||
this._doAddWindow(metaWin);
|
||||
return GLib.SOURCE_REMOVE;
|
||||
}));
|
||||
return;
|
||||
}
|
||||
|
||||
|
@@ -52,7 +52,6 @@ const WorkspaceSwitcherPopup = new Lang.Class({
|
||||
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));
|
||||
GLib.Source.set_name_by_id(this._timeoutId, '[gnome-shell] this._onTimeout');
|
||||
},
|
||||
|
||||
_getPreferredHeight : function (actor, forWidth, alloc) {
|
||||
@@ -146,7 +145,6 @@ const WorkspaceSwitcherPopup = new Lang.Class({
|
||||
if (this._timeoutId != 0)
|
||||
Mainloop.source_remove(this._timeoutId);
|
||||
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();
|
||||
},
|
||||
|
||||
|
@@ -386,15 +386,14 @@ const WorkspaceThumbnail = new Lang.Class({
|
||||
if (!win) {
|
||||
// Newly-created windows are added to a workspace before
|
||||
// the compositor finds out about them...
|
||||
let id = Mainloop.idle_add(Lang.bind(this,
|
||||
function () {
|
||||
Mainloop.idle_add(Lang.bind(this,
|
||||
function () {
|
||||
if (!this._removed &&
|
||||
metaWin.get_compositor_private() &&
|
||||
metaWin.get_workspace() == this.metaWorkspace)
|
||||
this._doAddWindow(metaWin);
|
||||
return GLib.SOURCE_REMOVE;
|
||||
}));
|
||||
GLib.Source.set_name_by_id(id, '[gnome-shell] this._doAddWindow');
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -826,14 +825,10 @@ const ThumbnailsBox = new Lang.Class({
|
||||
window.change_workspace_by_index(window.get_workspace().index() + 1, true);
|
||||
});
|
||||
|
||||
if (isWindow) {
|
||||
if (isWindow)
|
||||
// ... 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);
|
||||
} else if (source.shellWorkspaceLaunch) {
|
||||
else if (source.shellWorkspaceLaunch) {
|
||||
source.shellWorkspaceLaunch({ workspace: newWorkspaceIndex,
|
||||
timestamp: time });
|
||||
// This new workspace will be automatically removed if the application fails
|
||||
@@ -907,10 +902,7 @@ const ThumbnailsBox = new Lang.Class({
|
||||
},
|
||||
|
||||
_workspacesChanged: function() {
|
||||
let validThumbnails = this._thumbnails.filter(function(t) {
|
||||
return t.state <= ThumbnailState.NORMAL;
|
||||
});
|
||||
let oldNumWorkspaces = validThumbnails.length;
|
||||
let oldNumWorkspaces = this._thumbnails.length;
|
||||
let newNumWorkspaces = global.screen.n_workspaces;
|
||||
let active = global.screen.get_active_workspace_index();
|
||||
|
||||
|
@@ -33,7 +33,6 @@ id
|
||||
it
|
||||
ja
|
||||
kk
|
||||
km
|
||||
kn
|
||||
ko
|
||||
ku
|
||||
|
@@ -55,7 +55,6 @@ js/ui/unlockDialog.js
|
||||
js/ui/viewSelector.js
|
||||
js/ui/windowAttentionHandler.js
|
||||
js/ui/windowManager.js
|
||||
js/ui/windowMenu.js
|
||||
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.
|
||||
src/gvc/gvc-mixer-control.c
|
||||
|
258
po/ar.po
258
po/ar.po
@@ -2,15 +2,15 @@
|
||||
# This file is distributed under the same license as the PACKAGE package.
|
||||
# Khaled Hosny <khaledhosny@eglug.org>, 2009, 2010, 2011, 2012, 2013, 2014.
|
||||
# Muhammed Abd-ulaziz Abd-ullah <thenubianmuha_idrecy@yahoo.co.uk>, 2012.
|
||||
# Abderrahim Kitouni <a.kitouni@gmail.com>, 2012, 2014.
|
||||
# Abderrahim Kitouni <a.kitouni@gmail.com>, 2012.
|
||||
# Ibrahim Saed <ibraheem5000@gmail.com>, 2012.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: HEAD\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2014-03-26 01:34+0200\n"
|
||||
"PO-Revision-Date: 2014-03-21 11:05+0100\n"
|
||||
"Last-Translator: Abderrahim Kitouni <a.kitouni@gmail.com>\n"
|
||||
"POT-Creation-Date: 2014-02-28 22:55+0200\n"
|
||||
"PO-Revision-Date: 2014-02-28 23:08+0200\n"
|
||||
"Last-Translator: Khaled Hosny <khaledhosny@eglug.org>\n"
|
||||
"Language-Team: Arabic <doc@arabeyes.org>\n"
|
||||
"Language: ar\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
@@ -18,7 +18,7 @@ msgstr ""
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 "
|
||||
"&& n%100<=10 ? 3 : n%100>=11 ? 4 : 5;\n"
|
||||
"X-Generator: Virtaal 0.7.1\n"
|
||||
"X-Generator: Virtaal 1.0.0-beta1\n"
|
||||
"&& n%100<=10 ? 3: n%100>=11 ? 4 : 5;\n"
|
||||
"X-Project-Style: gnome\n"
|
||||
|
||||
@@ -210,7 +210,7 @@ msgid ""
|
||||
"Configures the maximum level of location accuracy applications are allowed "
|
||||
"to see. Valid options are 'off' (disable location tracking), 'country', "
|
||||
"'city', 'neighborhood', 'street', and 'exact' (typically requires GPS "
|
||||
"receiver). Please keep in mind that this only controls what GeoClue will "
|
||||
"receiver). Please keep in mind that this only controls what Geoclue will "
|
||||
"allow applications to see and they can find user's location on their own "
|
||||
"using network resources (albeit with street-level accuracy at best)."
|
||||
msgstr ""
|
||||
@@ -277,7 +277,7 @@ msgstr "اختر امتدادا لضبطه من القائمة أعلاه."
|
||||
#: ../js/gdm/authPrompt.js:147 ../js/ui/components/networkAgent.js:136
|
||||
#: ../js/ui/components/polkitAgent.js:166 ../js/ui/endSessionDialog.js:429
|
||||
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:399
|
||||
#: ../js/ui/status/network.js:878
|
||||
#: ../js/ui/status/network.js:883
|
||||
msgid "Cancel"
|
||||
msgstr "ألغِ"
|
||||
|
||||
@@ -295,25 +295,25 @@ msgctxt "button"
|
||||
msgid "Sign In"
|
||||
msgstr "ادخل"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:271
|
||||
#: ../js/gdm/loginDialog.js:270
|
||||
msgid "Choose Session"
|
||||
msgstr "أغلق الجلسة"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:431
|
||||
#: ../js/gdm/loginDialog.js:430
|
||||
msgid "Not listed?"
|
||||
msgstr "غير مدرج؟"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:611
|
||||
#: ../js/gdm/loginDialog.js:598
|
||||
#, javascript-format
|
||||
msgid "(e.g., user or %s)"
|
||||
msgstr "(مثلا مستخدم أو %s)"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:616 ../js/ui/components/networkAgent.js:262
|
||||
#: ../js/gdm/loginDialog.js:603 ../js/ui/components/networkAgent.js:262
|
||||
#: ../js/ui/components/networkAgent.js:280
|
||||
msgid "Username: "
|
||||
msgstr "اسم المستخدم: "
|
||||
|
||||
#: ../js/gdm/loginDialog.js:917
|
||||
#: ../js/gdm/loginDialog.js:868
|
||||
msgid "Login Window"
|
||||
msgstr "نافذة الولوج"
|
||||
|
||||
@@ -350,15 +350,15 @@ msgstr "شائعة"
|
||||
msgid "All"
|
||||
msgstr "الكل"
|
||||
|
||||
#: ../js/ui/appDisplay.js:1555
|
||||
#: ../js/ui/appDisplay.js:1552
|
||||
msgid "New Window"
|
||||
msgstr "نافذة جديدة"
|
||||
|
||||
#: ../js/ui/appDisplay.js:1577 ../js/ui/dash.js:285
|
||||
#: ../js/ui/appDisplay.js:1574 ../js/ui/dash.js:285
|
||||
msgid "Remove from Favorites"
|
||||
msgstr "أزِل من المفضّلة"
|
||||
|
||||
#: ../js/ui/appDisplay.js:1583
|
||||
#: ../js/ui/appDisplay.js:1580
|
||||
msgid "Add to Favorites"
|
||||
msgstr "أضِف إلى المفضّلة"
|
||||
|
||||
@@ -501,44 +501,44 @@ msgstr "السبت"
|
||||
msgid "calendar:MY"
|
||||
msgstr ""
|
||||
|
||||
#: ../js/ui/calendar.js:450
|
||||
#: ../js/ui/calendar.js:446
|
||||
msgid "Previous month"
|
||||
msgstr "الشهر السابق"
|
||||
|
||||
#: ../js/ui/calendar.js:460
|
||||
#: ../js/ui/calendar.js:456
|
||||
msgid "Next month"
|
||||
msgstr "الشهر التالي"
|
||||
|
||||
#. Translators: Text to show if there are no events */
|
||||
#: ../js/ui/calendar.js:772
|
||||
#: ../js/ui/calendar.js:762
|
||||
msgid "Nothing Scheduled"
|
||||
msgstr "الجدول خال"
|
||||
|
||||
#. Translators: Shown on calendar heading when selected day occurs on current year */
|
||||
#: ../js/ui/calendar.js:790
|
||||
#: ../js/ui/calendar.js:780
|
||||
msgctxt "calendar heading"
|
||||
msgid "%A, %B %d"
|
||||
msgstr "%A %d %B"
|
||||
|
||||
#. Translators: Shown on calendar heading when selected day occurs on different year */
|
||||
#: ../js/ui/calendar.js:793
|
||||
#: ../js/ui/calendar.js:783
|
||||
msgctxt "calendar heading"
|
||||
msgid "%A, %B %d, %Y"
|
||||
msgstr "%A %d %B %Y"
|
||||
|
||||
#: ../js/ui/calendar.js:804
|
||||
#: ../js/ui/calendar.js:794
|
||||
msgid "Today"
|
||||
msgstr "اليوم"
|
||||
|
||||
#: ../js/ui/calendar.js:808
|
||||
#: ../js/ui/calendar.js:798
|
||||
msgid "Tomorrow"
|
||||
msgstr "غدا"
|
||||
|
||||
#: ../js/ui/calendar.js:819
|
||||
#: ../js/ui/calendar.js:809
|
||||
msgid "This week"
|
||||
msgstr "هذا الأسبوع"
|
||||
|
||||
#: ../js/ui/calendar.js:827
|
||||
#: ../js/ui/calendar.js:817
|
||||
msgid "Next week"
|
||||
msgstr "الأسبوع القادم"
|
||||
|
||||
@@ -571,8 +571,8 @@ msgstr "كلمة السرّ:"
|
||||
msgid "Type again:"
|
||||
msgstr "أدخلها ثانية:"
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:131 ../js/ui/status/network.js:240
|
||||
#: ../js/ui/status/network.js:322 ../js/ui/status/network.js:881
|
||||
#: ../js/ui/components/networkAgent.js:131 ../js/ui/status/network.js:250
|
||||
#: ../js/ui/status/network.js:327 ../js/ui/status/network.js:886
|
||||
msgid "Connect"
|
||||
msgstr "اتصل"
|
||||
|
||||
@@ -697,7 +697,7 @@ msgstr "%H:%M"
|
||||
#. time string in 24h format. i.e. "Yesterday, 14:30" */
|
||||
#: ../js/ui/components/telepathyClient.js:962
|
||||
msgid "Yesterday, %H∶%M"
|
||||
msgstr "بالأمس، %H∶%M"
|
||||
msgstr "بالأمس، %H:%M"
|
||||
|
||||
#. Translators: this is the week day name followed by a time
|
||||
#. string in 24h format. i.e. "Monday, 14:30" */
|
||||
@@ -717,7 +717,7 @@ msgstr "%d %B، %H:%M"
|
||||
#. i.e. "May 25 2012, 14:30" */
|
||||
#: ../js/ui/components/telepathyClient.js:982
|
||||
msgid "%B %d %Y, %H∶%M"
|
||||
msgstr "%d %B، %H:%M"
|
||||
msgstr "%d %B %Y، %H:%M"
|
||||
|
||||
#. Translators: Time in 24h format */
|
||||
#: ../js/ui/components/telepathyClient.js:991
|
||||
@@ -728,27 +728,27 @@ msgstr "%l:%M %p"
|
||||
#. time string in 12h format. i.e. "Yesterday, 2:30 pm" */
|
||||
#: ../js/ui/components/telepathyClient.js:998
|
||||
msgid "Yesterday, %l∶%M %p"
|
||||
msgstr "بالأمس، %l∶%M %p"
|
||||
msgstr "بالأمس، %l:%M %p"
|
||||
|
||||
#. Translators: this is the week day name followed by a time
|
||||
#. string in 12h format. i.e. "Monday, 2:30 pm" */
|
||||
#: ../js/ui/components/telepathyClient.js:1005
|
||||
msgid "%A, %l∶%M %p"
|
||||
msgstr "%l:%M %p"
|
||||
msgstr "%A، %l:%M %p"
|
||||
|
||||
#. Translators: this is the month name and day number
|
||||
#. followed by a time string in 12h format.
|
||||
#. i.e. "May 25, 2:30 pm" */
|
||||
#: ../js/ui/components/telepathyClient.js:1012
|
||||
msgid "%B %d, %l∶%M %p"
|
||||
msgstr "%d %B، %H:%M"
|
||||
msgstr "%d %B، %l:%M %p"
|
||||
|
||||
#. Translators: this is the month name, day number, year
|
||||
#. number followed by a time string in 12h format.
|
||||
#. i.e. "May 25 2012, 2:30 pm"*/
|
||||
#: ../js/ui/components/telepathyClient.js:1018
|
||||
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
|
||||
#. IM name. */
|
||||
@@ -931,7 +931,7 @@ msgstr "تعذّر الاتصال مع %s"
|
||||
msgid "View account"
|
||||
msgstr "أظهر الحساب"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1439
|
||||
#: ../js/ui/components/telepathyClient.js:1434
|
||||
msgid "Unknown reason"
|
||||
msgstr "السبب غير معروف"
|
||||
|
||||
@@ -947,22 +947,22 @@ msgstr "أظهر التطبيقات"
|
||||
msgid "Dash"
|
||||
msgstr "الشريط"
|
||||
|
||||
#: ../js/ui/dateMenu.js:91
|
||||
#: ../js/ui/dateMenu.js:86
|
||||
msgid "Open Calendar"
|
||||
msgstr "افتح التقويم"
|
||||
|
||||
#: ../js/ui/dateMenu.js:95
|
||||
#: ../js/ui/dateMenu.js:90
|
||||
msgid "Open Clocks"
|
||||
msgstr "افتح الساعات"
|
||||
|
||||
#: ../js/ui/dateMenu.js:102
|
||||
#: ../js/ui/dateMenu.js:97
|
||||
msgid "Date & Time Settings"
|
||||
msgstr "إعدادات الوقت و التّاريخ"
|
||||
|
||||
#. 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").
|
||||
#. */
|
||||
#: ../js/ui/dateMenu.js:192
|
||||
#: ../js/ui/dateMenu.js:187
|
||||
msgid "%A %B %e, %Y"
|
||||
msgstr "%A %e %B، %Y"
|
||||
|
||||
@@ -978,6 +978,7 @@ msgid "Log Out"
|
||||
msgstr "خروج"
|
||||
|
||||
#: ../js/ui/endSessionDialog.js:69
|
||||
#, javascript-format
|
||||
msgid "%s will be logged out automatically in %d second."
|
||||
msgid_plural "%s will be logged out automatically in %d seconds."
|
||||
msgstr[0] "سيُخرج %s تلقائيا الآن."
|
||||
@@ -988,6 +989,7 @@ msgstr[4] "سيُخرج %s تلقائيا بعد %d ثانية."
|
||||
msgstr[5] "سيُخرج %s تلقائيا بعد %d ثانية."
|
||||
|
||||
#: ../js/ui/endSessionDialog.js:74
|
||||
#, javascript-format
|
||||
msgid "You will be logged out automatically in %d second."
|
||||
msgid_plural "You will be logged out automatically in %d seconds."
|
||||
msgstr[0] "ستُخرج تلقائيا الآن."
|
||||
@@ -1013,6 +1015,7 @@ msgid "Install Updates & Power Off"
|
||||
msgstr "ثبّت التحديثات ثم أطفئ"
|
||||
|
||||
#: ../js/ui/endSessionDialog.js:89
|
||||
#, javascript-format
|
||||
msgid "The system will power off automatically in %d second."
|
||||
msgid_plural "The system will power off automatically in %d seconds."
|
||||
msgstr[0] "سيُطفأ النظام تلقائيا الآن."
|
||||
@@ -1043,6 +1046,7 @@ msgid "Restart"
|
||||
msgstr "إعادة التشغيل"
|
||||
|
||||
#: ../js/ui/endSessionDialog.js:107
|
||||
#, javascript-format
|
||||
msgid "The system will restart automatically in %d second."
|
||||
msgid_plural "The system will restart automatically in %d seconds."
|
||||
msgstr[0] "سيُعاد تشغيل النظام تلقائيا الآن."
|
||||
@@ -1058,6 +1062,7 @@ msgid "Restart & Install Updates"
|
||||
msgstr "أعد التشغيل و ثبّت التحديثات"
|
||||
|
||||
#: ../js/ui/endSessionDialog.js:123
|
||||
#, javascript-format
|
||||
msgid "The system will automatically restart and install updates in %d second."
|
||||
msgid_plural ""
|
||||
"The system will automatically restart and install updates in %d seconds."
|
||||
@@ -1120,25 +1125,25 @@ msgstr "هل تريد تنزيل و تثبيت ”%s“ من extensions.gnome.o
|
||||
msgid "Keyboard"
|
||||
msgstr "لوحة المفاتيح"
|
||||
|
||||
#: ../js/ui/lookingGlass.js:643
|
||||
#: ../js/ui/lookingGlass.js:641
|
||||
msgid "No extensions installed"
|
||||
msgstr "لا امتدادات مثبّتة"
|
||||
|
||||
#. Translators: argument is an extension UUID. */
|
||||
#: ../js/ui/lookingGlass.js:697
|
||||
#: ../js/ui/lookingGlass.js:695
|
||||
#, javascript-format
|
||||
msgid "%s has not emitted any errors."
|
||||
msgstr "لم يصدر %s أي خطأ."
|
||||
|
||||
#: ../js/ui/lookingGlass.js:703
|
||||
#: ../js/ui/lookingGlass.js:701
|
||||
msgid "Hide Errors"
|
||||
msgstr "أخفِ الأخطاء"
|
||||
|
||||
#: ../js/ui/lookingGlass.js:707 ../js/ui/lookingGlass.js:767
|
||||
#: ../js/ui/lookingGlass.js:705 ../js/ui/lookingGlass.js:765
|
||||
msgid "Show Errors"
|
||||
msgstr "اظهر الأخطاء"
|
||||
|
||||
#: ../js/ui/lookingGlass.js:716
|
||||
#: ../js/ui/lookingGlass.js:714
|
||||
msgid "Enabled"
|
||||
msgstr "مفعّل"
|
||||
|
||||
@@ -1146,28 +1151,28 @@ msgstr "مفعّل"
|
||||
#. because it's disabled by rfkill (airplane mode) */
|
||||
#. translators:
|
||||
#. * The device has been disabled
|
||||
#: ../js/ui/lookingGlass.js:719 ../js/ui/status/network.js:555
|
||||
#: ../js/ui/lookingGlass.js:717 ../js/ui/status/network.js:560
|
||||
#: ../src/gvc/gvc-mixer-control.c:1830
|
||||
msgid "Disabled"
|
||||
msgstr "معطّل"
|
||||
|
||||
#: ../js/ui/lookingGlass.js:721
|
||||
#: ../js/ui/lookingGlass.js:719
|
||||
msgid "Error"
|
||||
msgstr "خطأ"
|
||||
|
||||
#: ../js/ui/lookingGlass.js:723
|
||||
#: ../js/ui/lookingGlass.js:721
|
||||
msgid "Out of date"
|
||||
msgstr "قديم"
|
||||
|
||||
#: ../js/ui/lookingGlass.js:725
|
||||
#: ../js/ui/lookingGlass.js:723
|
||||
msgid "Downloading"
|
||||
msgstr "ينزّل"
|
||||
|
||||
#: ../js/ui/lookingGlass.js:749
|
||||
#: ../js/ui/lookingGlass.js:747
|
||||
msgid "View Source"
|
||||
msgstr "اعرض المصدر"
|
||||
|
||||
#: ../js/ui/lookingGlass.js:758
|
||||
#: ../js/ui/lookingGlass.js:756
|
||||
msgid "Web Page"
|
||||
msgstr "صفحة الوب"
|
||||
|
||||
@@ -1203,7 +1208,7 @@ msgstr "لا رسائل"
|
||||
msgid "Message Tray"
|
||||
msgstr "لوحة الرسائل"
|
||||
|
||||
#: ../js/ui/messageTray.js:2962
|
||||
#: ../js/ui/messageTray.js:2948
|
||||
msgid "System Information"
|
||||
msgstr "معلومات النظام"
|
||||
|
||||
@@ -1213,6 +1218,7 @@ msgid "Unknown"
|
||||
msgstr "غير معروف"
|
||||
|
||||
#: ../js/ui/overviewControls.js:483 ../js/ui/screenShield.js:151
|
||||
#, javascript-format
|
||||
msgid "%d new message"
|
||||
msgid_plural "%d new messages"
|
||||
msgstr[0] "لا رسائل جديدة"
|
||||
@@ -1222,11 +1228,11 @@ msgstr[3] "%d رسائل جديدة"
|
||||
msgstr[4] "%d رسالة جديدة"
|
||||
msgstr[5] "%d رسالة جديدة"
|
||||
|
||||
#: ../js/ui/overview.js:84
|
||||
#: ../js/ui/overview.js:83
|
||||
msgid "Undo"
|
||||
msgstr "تراجع"
|
||||
|
||||
#: ../js/ui/overview.js:124
|
||||
#: ../js/ui/overview.js:123
|
||||
msgid "Overview"
|
||||
msgstr "نظرة عامة"
|
||||
|
||||
@@ -1234,7 +1240,7 @@ msgstr "نظرة عامة"
|
||||
#. in the search entry when no search is
|
||||
#. active; it should not exceed ~30
|
||||
#. characters. */
|
||||
#: ../js/ui/overview.js:250
|
||||
#: ../js/ui/overview.js:257
|
||||
msgid "Type to search…"
|
||||
msgstr "اكتب نصا للبحث عنه…"
|
||||
|
||||
@@ -1271,6 +1277,7 @@ msgid "%A, %B %d"
|
||||
msgstr "%A، %d %B"
|
||||
|
||||
#: ../js/ui/screenShield.js:153
|
||||
#, javascript-format
|
||||
msgid "%d new notification"
|
||||
msgid_plural "%d new notifications"
|
||||
msgstr[0] "لا تنبيهات جديدة"
|
||||
@@ -1280,27 +1287,27 @@ msgstr[3] "%d تنبيهات جديدة"
|
||||
msgstr[4] "%d تنبيها جديدا"
|
||||
msgstr[5] "%d تنبيه جديد"
|
||||
|
||||
#: ../js/ui/screenShield.js:474 ../js/ui/status/system.js:342
|
||||
#: ../js/ui/screenShield.js:473 ../js/ui/status/system.js:342
|
||||
msgid "Lock"
|
||||
msgstr "أوصِد"
|
||||
|
||||
#: ../js/ui/screenShield.js:708
|
||||
#: ../js/ui/screenShield.js:707
|
||||
msgid "GNOME needs to lock the screen"
|
||||
msgstr "تحتاج جنوم إلى إيصاد الشاشة"
|
||||
|
||||
#: ../js/ui/screenShield.js:835 ../js/ui/screenShield.js:1309
|
||||
#: ../js/ui/screenShield.js:834 ../js/ui/screenShield.js:1301
|
||||
msgid "Unable to lock"
|
||||
msgstr "تعذّر الإيصاد"
|
||||
|
||||
#: ../js/ui/screenShield.js:836 ../js/ui/screenShield.js:1310
|
||||
#: ../js/ui/screenShield.js:835 ../js/ui/screenShield.js:1302
|
||||
msgid "Lock was blocked by an application"
|
||||
msgstr "منع تطبيق الإيصاد"
|
||||
|
||||
#: ../js/ui/search.js:603
|
||||
#: ../js/ui/search.js:589
|
||||
msgid "Searching…"
|
||||
msgstr "يبحث…"
|
||||
|
||||
#: ../js/ui/search.js:646
|
||||
#: ../js/ui/search.js:632
|
||||
msgid "No results."
|
||||
msgstr "لا نتائج."
|
||||
|
||||
@@ -1372,23 +1379,24 @@ msgstr "تباين عال"
|
||||
msgid "Large Text"
|
||||
msgstr "نص كبير"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:49
|
||||
#: ../js/ui/status/bluetooth.js:48
|
||||
msgid "Bluetooth"
|
||||
msgstr "بلوتوث"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:51 ../js/ui/status/location.js:60
|
||||
#: ../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:1345 ../js/ui/status/rfkill.js:85
|
||||
#: ../js/ui/status/bluetooth.js:50 ../js/ui/status/location.js:59
|
||||
#: ../js/ui/status/location.js:159 ../js/ui/status/network.js:151
|
||||
#: ../js/ui/status/network.js:328 ../js/ui/status/network.js:1235
|
||||
#: ../js/ui/status/network.js:1346 ../js/ui/status/rfkill.js:85
|
||||
#: ../js/ui/status/rfkill.js:105
|
||||
msgid "Turn Off"
|
||||
msgstr "أوقف"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:54
|
||||
#: ../js/ui/status/bluetooth.js:53
|
||||
msgid "Bluetooth Settings"
|
||||
msgstr "إعدادات بلوتوث"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:104
|
||||
#: ../js/ui/status/bluetooth.js:100
|
||||
#, javascript-format
|
||||
msgid "%d Connected Device"
|
||||
msgid_plural "%d Connected Devices"
|
||||
msgstr[0] "لا أجهزة موصّلة"
|
||||
@@ -1398,7 +1406,7 @@ msgstr[3] "%d أجهزة موصّلة"
|
||||
msgstr[4] "%d جهازًا موصّلا"
|
||||
msgstr[5] "%d جهاز موصّل"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:106 ../js/ui/status/network.js:1262
|
||||
#: ../js/ui/status/bluetooth.js:102 ../js/ui/status/network.js:1263
|
||||
msgid "Not Connected"
|
||||
msgstr "غير متّصل"
|
||||
|
||||
@@ -1410,21 +1418,21 @@ msgstr "السطوع"
|
||||
msgid "Show Keyboard Layout"
|
||||
msgstr "أظهر تخطيط لوحة المفاتيح"
|
||||
|
||||
#: ../js/ui/status/location.js:53
|
||||
#: ../js/ui/status/location.js:52
|
||||
msgid "Location"
|
||||
msgstr "المكان"
|
||||
|
||||
#: ../js/ui/status/location.js:59 ../js/ui/status/location.js:166
|
||||
#: ../js/ui/status/location.js:58 ../js/ui/status/location.js:158
|
||||
#: ../js/ui/status/rfkill.js:84
|
||||
msgid "On"
|
||||
msgstr "مفعّل"
|
||||
|
||||
#: ../js/ui/status/location.js:163 ../js/ui/status/network.js:420
|
||||
#: ../js/ui/status/network.js:1260 ../js/ui/status/network.js:1464
|
||||
#: ../js/ui/status/location.js:155 ../js/ui/status/network.js:246
|
||||
#: ../js/ui/status/network.js:425 ../js/ui/status/network.js:1261
|
||||
msgid "Off"
|
||||
msgstr "مغلق"
|
||||
|
||||
#: ../js/ui/status/location.js:164 ../js/ui/status/network.js:1234
|
||||
#: ../js/ui/status/location.js:156 ../js/ui/status/network.js:1235
|
||||
msgid "Turn On"
|
||||
msgstr "شغّل"
|
||||
|
||||
@@ -1432,138 +1440,134 @@ msgstr "شغّل"
|
||||
msgid "<unknown>"
|
||||
msgstr "<غير معروفة>"
|
||||
|
||||
#: ../js/ui/status/network.js:422
|
||||
msgid "Connected"
|
||||
msgstr "مُتصل"
|
||||
|
||||
#. 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) */
|
||||
#: ../js/ui/status/network.js:426
|
||||
#: ../js/ui/status/network.js:431
|
||||
msgid "unmanaged"
|
||||
msgstr "غير مُدار"
|
||||
|
||||
#: ../js/ui/status/network.js:428
|
||||
#: ../js/ui/status/network.js:433
|
||||
msgid "disconnecting..."
|
||||
msgstr "يقطع الاتّصال..."
|
||||
|
||||
#: ../js/ui/status/network.js:434 ../js/ui/status/network.js:1362
|
||||
#: ../js/ui/status/network.js:439 ../js/ui/status/network.js:1363
|
||||
msgid "connecting..."
|
||||
msgstr "يتّصل..."
|
||||
|
||||
#. 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:1365
|
||||
#: ../js/ui/status/network.js:442 ../js/ui/status/network.js:1366
|
||||
msgid "authentication required"
|
||||
msgstr "الاستيثاق مطلوب"
|
||||
|
||||
#. Translators: this is for devices that require some kind of firmware or kernel
|
||||
#. module, which is missing */
|
||||
#: ../js/ui/status/network.js:445
|
||||
#: ../js/ui/status/network.js:450
|
||||
msgid "firmware missing"
|
||||
msgstr "البرمجية الثابتة (Firmware) غير موجودة"
|
||||
|
||||
#. Translators: this is for a network device that cannot be activated (for example it
|
||||
#. is disabled by rfkill, or it has no coverage */
|
||||
#: ../js/ui/status/network.js:449
|
||||
#: ../js/ui/status/network.js:454
|
||||
msgid "unavailable"
|
||||
msgstr "غير متاح"
|
||||
|
||||
#: ../js/ui/status/network.js:451 ../js/ui/status/network.js:1367
|
||||
#: ../js/ui/status/network.js:456 ../js/ui/status/network.js:1368
|
||||
msgid "connection failed"
|
||||
msgstr "فشل الاتصال"
|
||||
|
||||
#: ../js/ui/status/network.js:467
|
||||
#: ../js/ui/status/network.js:472
|
||||
msgid "Wired Settings"
|
||||
msgstr "إعدادات الاتصال السلكي"
|
||||
|
||||
#: ../js/ui/status/network.js:509 ../js/ui/status/network.js:587
|
||||
#: ../js/ui/status/network.js:514 ../js/ui/status/network.js:592
|
||||
msgid "Mobile Broadband Settings"
|
||||
msgstr "إعدادات شبكة الهاتف المحمول"
|
||||
|
||||
#: ../js/ui/status/network.js:551 ../js/ui/status/network.js:1258
|
||||
#: ../js/ui/status/network.js:556 ../js/ui/status/network.js:1259
|
||||
msgid "Hardware Disabled"
|
||||
msgstr "العتاد مُعَطَّل"
|
||||
|
||||
#: ../js/ui/status/network.js:595
|
||||
#: ../js/ui/status/network.js:600
|
||||
msgid "Use as Internet connection"
|
||||
msgstr "استخدمه اتّصالًا بالإنترنت"
|
||||
|
||||
#: ../js/ui/status/network.js:776
|
||||
#: ../js/ui/status/network.js:781
|
||||
msgid "Airplane Mode is On"
|
||||
msgstr "وضع الطائرة مُفعّل"
|
||||
|
||||
#: ../js/ui/status/network.js:777
|
||||
#: ../js/ui/status/network.js:782
|
||||
msgid "Wi-Fi is disabled when airplane mode is on."
|
||||
msgstr "الاتصال اللاسلكي مُعطّل في وضع الطائرة."
|
||||
|
||||
#: ../js/ui/status/network.js:778
|
||||
#: ../js/ui/status/network.js:783
|
||||
msgid "Turn Off Airplane Mode"
|
||||
msgstr "عطّل وضع الطائرة"
|
||||
|
||||
#: ../js/ui/status/network.js:787
|
||||
#: ../js/ui/status/network.js:792
|
||||
msgid "Wi-Fi is Off"
|
||||
msgstr "الاتصال اللاسلكي مغلق"
|
||||
|
||||
#: ../js/ui/status/network.js:788
|
||||
#: ../js/ui/status/network.js:793
|
||||
msgid "Wi-Fi needs to be turned on in order to connect to a network."
|
||||
msgstr "تحتاج إلى تشغيل الاتصال اللاسلكي للاتصال بالشبكة."
|
||||
|
||||
#: ../js/ui/status/network.js:789
|
||||
#: ../js/ui/status/network.js:794
|
||||
msgid "Turn On Wi-Fi"
|
||||
msgstr "شغّل الاتصال اللاسلكي"
|
||||
|
||||
#: ../js/ui/status/network.js:814
|
||||
#: ../js/ui/status/network.js:819
|
||||
msgid "Wi-Fi Networks"
|
||||
msgstr "الشبكات اللاسلكية"
|
||||
|
||||
#: ../js/ui/status/network.js:816
|
||||
#: ../js/ui/status/network.js:821
|
||||
msgid "Select a network"
|
||||
msgstr "اختر شبكة"
|
||||
|
||||
#: ../js/ui/status/network.js:845
|
||||
#: ../js/ui/status/network.js:850
|
||||
msgid "No Networks"
|
||||
msgstr "لا شبكات"
|
||||
|
||||
#: ../js/ui/status/network.js:866 ../js/ui/status/rfkill.js:103
|
||||
#: ../js/ui/status/network.js:871 ../js/ui/status/rfkill.js:103
|
||||
msgid "Use hardware switch to turn off"
|
||||
msgstr "استخدم زر العتاد للإغلاق"
|
||||
|
||||
#: ../js/ui/status/network.js:1136
|
||||
#: ../js/ui/status/network.js:1141
|
||||
msgid "Select Network"
|
||||
msgstr "اختر شبكة"
|
||||
|
||||
#: ../js/ui/status/network.js:1142
|
||||
#: ../js/ui/status/network.js:1147
|
||||
msgid "Wi-Fi Settings"
|
||||
msgstr "إعدادات الاتصال اللاسلكي"
|
||||
|
||||
#: ../js/ui/status/network.js:1251
|
||||
#: ../js/ui/status/network.js:1252
|
||||
msgid "Hotspot Active"
|
||||
msgstr "نقطة الاتصال نشطة"
|
||||
|
||||
#: ../js/ui/status/network.js:1254
|
||||
#: ../js/ui/status/network.js:1255
|
||||
msgid "Connecting"
|
||||
msgstr "يتّصل"
|
||||
|
||||
#: ../js/ui/status/network.js:1433 ../js/ui/status/rfkill.js:88
|
||||
#: ../js/ui/status/network.js:1434 ../js/ui/status/rfkill.js:88
|
||||
msgid "Network Settings"
|
||||
msgstr "إعدادات الشّبكة"
|
||||
|
||||
#: ../js/ui/status/network.js:1435
|
||||
#: ../js/ui/status/network.js:1436
|
||||
msgid "VPN Settings"
|
||||
msgstr "إعدادات شخف (VPN)"
|
||||
|
||||
#: ../js/ui/status/network.js:1454
|
||||
#: ../js/ui/status/network.js:1455
|
||||
msgid "VPN"
|
||||
msgstr "شخف (VPN)"
|
||||
|
||||
#: ../js/ui/status/network.js:1607
|
||||
#: ../js/ui/status/network.js:1598
|
||||
msgid "Network Manager"
|
||||
msgstr "مدير الشبكة"
|
||||
|
||||
#: ../js/ui/status/network.js:1646
|
||||
#: ../js/ui/status/network.js:1637
|
||||
msgid "Connection failed"
|
||||
msgstr "فشل الاتصال"
|
||||
|
||||
#: ../js/ui/status/network.js:1647
|
||||
#: ../js/ui/status/network.js:1638
|
||||
msgid "Activation of network connection failed"
|
||||
msgstr "فشل تفعيل اتصال الشبكة"
|
||||
|
||||
@@ -1582,12 +1586,12 @@ msgstr "يَحسِب…"
|
||||
#: ../js/ui/status/power.js:86
|
||||
#, javascript-format
|
||||
msgid "%d∶%02d Remaining (%d%%)"
|
||||
msgstr "بقي %d∶%02d (%d%%)"
|
||||
msgstr "بقي %d:%02d (%d%%)"
|
||||
|
||||
#: ../js/ui/status/power.js:91
|
||||
#, javascript-format
|
||||
msgid "%d∶%02d Until Full (%d%%)"
|
||||
msgstr "بقي على الاكتمال %d∶%02d (%d%%)"
|
||||
msgstr "بقي على الاكتمال %d:%02d (%d%%)"
|
||||
|
||||
#: ../js/ui/status/power.js:119
|
||||
msgid "UPS"
|
||||
@@ -1670,6 +1674,7 @@ msgid "Keep Changes"
|
||||
msgstr "أبق على التغييرات"
|
||||
|
||||
#: ../js/ui/windowManager.js:97
|
||||
#, javascript-format
|
||||
msgid "Settings changes will revert in %d second"
|
||||
msgid_plural "Settings changes will revert in %d seconds"
|
||||
msgstr[0] "سيُتراجع عن التغييرات الآن"
|
||||
@@ -1746,35 +1751,6 @@ msgstr "لا يمكن أن تكون كلمة السرّ فارغة"
|
||||
msgid "Authentication dialog was dismissed by the user"
|
||||
msgstr "أغلق المستخدم مربع الاستيثاق الحِواري"
|
||||
|
||||
#~ msgctxt "event list time"
|
||||
#~ msgid "%H\\u2236%M"
|
||||
#~ msgstr "%H:%M"
|
||||
|
||||
#~ msgctxt "event list time"
|
||||
#~ msgid "%l\\u2236%M\\u2009%p"
|
||||
#~ msgstr "%l:%M\\u2009%p"
|
||||
|
||||
#~ msgid "%H\\u2236%M"
|
||||
#~ msgstr "%H\\u2236%M"
|
||||
|
||||
#~ msgid "%A, %H\\u2236%M"
|
||||
#~ msgstr "%A، %H\\u2236%M"
|
||||
|
||||
#~ msgid "%B %d, %H\\u2236%M"
|
||||
#~ msgstr "%d %B، %H\\u2236%M"
|
||||
|
||||
#~ msgid "%B %d %Y, %H\\u2236%M"
|
||||
#~ msgstr "%d %B %Y، %H\\u2236%M"
|
||||
|
||||
#~ msgid "%l\\u2236%M %p"
|
||||
#~ msgstr "%H\\u2236%M"
|
||||
|
||||
#~ msgid "%A, %l\\u2236%M %p"
|
||||
#~ msgstr "%A، %l\\u2236%M %p"
|
||||
|
||||
#~ msgid "%B %d, %l\\u2236%M %p"
|
||||
#~ msgstr "%d %B، %l\\u2236%M %p"
|
||||
|
||||
#~ msgid "<b>%A</b>, <b>%H:%M</b>"
|
||||
#~ msgstr "<b>%A</b>، <b>%H:%M</b>"
|
||||
|
||||
@@ -1784,6 +1760,14 @@ msgstr "أغلق المستخدم مربع الاستيثاق الحِواري"
|
||||
#~ msgid "<b>%B</b> <b>%d</b> <b>%Y</b>, <b>%H:%M</b> "
|
||||
#~ msgstr "<b>%d</b> <b>%B</b> <b>%Y</b>، <b>%H:%M</b> "
|
||||
|
||||
#~ msgctxt "event list time"
|
||||
#~ msgid "%H\\u2236%M"
|
||||
#~ msgstr "%H:%M"
|
||||
|
||||
#~ msgctxt "event list time"
|
||||
#~ msgid "%l\\u2236%M\\u2009%p"
|
||||
#~ msgstr "%l:%M\\u2009%p"
|
||||
|
||||
#~ msgid "Settings Menu"
|
||||
#~ msgstr "قائمة الإعدادات"
|
||||
|
||||
|
316
po/be.po
316
po/be.po
@@ -5,7 +5,7 @@ msgstr ""
|
||||
"Project-Id-Version: gnome-shell.master\n"
|
||||
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
|
||||
"shell&keywords=I18N+L10N&component=general\n"
|
||||
"POT-Creation-Date: 2014-04-30 19:59+0000\n"
|
||||
"POT-Creation-Date: 2014-02-22 08:29+0000\n"
|
||||
"PO-Revision-Date: 2012-10-16 12:05+0300\n"
|
||||
"Last-Translator: Ihar Hrachyshka <ihar.hrachyshka@gmail.com>\n"
|
||||
"Language-Team: Belarusian <i18n-bel-gnome@googlegroups.com>\n"
|
||||
@@ -107,8 +107,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Абалонка GNOME запусціць толькі тыя пашырэнні, аўтары якіх сцвярджаюць, што "
|
||||
"яны працуюць з бягучай версіяй абалонкі. Уключэнне гэтай настройкі выключыць "
|
||||
"гэту праверку, і для ўсіх пашырэнняў будзе ажыццёўлена спроба загрузкі "
|
||||
"незалежна ад сцвярджэнняў іх аўтараў."
|
||||
"гэту праверку, і для ўсіх пашырэнняў будзе ажыццёўлена спроба загрузкі незалежна ад "
|
||||
"сцвярджэнняў іх аўтараў."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:7
|
||||
msgid "List of desktop file IDs for favorite applications"
|
||||
@@ -228,17 +228,10 @@ msgid ""
|
||||
"Configures the maximum level of location accuracy applications are allowed "
|
||||
"to see. Valid options are 'off' (disable location tracking), 'country', "
|
||||
"'city', 'neighborhood', 'street', and 'exact' (typically requires GPS "
|
||||
"receiver). Please keep in mind that this only controls what GeoClue will "
|
||||
"receiver). Please keep in mind that this only controls what Geoclue will "
|
||||
"allow applications to see and they can find user's location on their own "
|
||||
"using network resources (albeit with street-level accuracy at best)."
|
||||
msgstr ""
|
||||
"Настройка максімальнай дакладнасці вызначэння месцапалажэння, даступнай праграмам. "
|
||||
"Магчымыя значэнні: \"off\" (выключыць вызначэнне месцапалажэння), \"country\" (краіна), "
|
||||
"\"city\" (горад), \"neighborhood\" (раён), \"street\" (вуліца) і \"exact\" (дэталёва, "
|
||||
"звычайна патрабуе GPS-прыёмнік). Увага: гэта настройка вызначае толькі тое, што "
|
||||
"даступна праграмам з дапамогай службы GeoClue, але яны могуць самастойна вызначаць "
|
||||
"месцапалажэнне з дапамогай спецыяльных сеціўных рэсурсаў (праўда, максімальная дакладнасць "
|
||||
"такіх рэсурсаў - назва вуліцы)."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:31
|
||||
msgid "The application icon mode."
|
||||
@@ -295,8 +288,7 @@ msgstr ""
|
||||
#: ../js/extensionPrefs/main.js:127
|
||||
#, javascript-format
|
||||
msgid "There was an error loading the preferences dialog for %s:"
|
||||
msgstr ""
|
||||
"Падчас спробы загрузкі дыялогавага акенца настроек для %s адбылася памылка:"
|
||||
msgstr "Падчас спробы загрузкі дыялогавага акенца настроек для %s адбылася памылка:"
|
||||
|
||||
#: ../js/extensionPrefs/main.js:167
|
||||
msgid "Extension"
|
||||
@@ -311,7 +303,7 @@ msgstr ""
|
||||
#: ../js/gdm/authPrompt.js:147 ../js/ui/components/networkAgent.js:136
|
||||
#: ../js/ui/components/polkitAgent.js:166 ../js/ui/endSessionDialog.js:429
|
||||
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:399
|
||||
#: ../js/ui/status/network.js:878
|
||||
#: ../js/ui/status/network.js:883
|
||||
msgid "Cancel"
|
||||
msgstr "Скасаваць"
|
||||
|
||||
@@ -329,25 +321,25 @@ msgctxt "button"
|
||||
msgid "Sign In"
|
||||
msgstr "Увайсці"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:271
|
||||
#: ../js/gdm/loginDialog.js:270
|
||||
msgid "Choose Session"
|
||||
msgstr "Выбар сеанса"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:431
|
||||
#: ../js/gdm/loginDialog.js:430
|
||||
msgid "Not listed?"
|
||||
msgstr "Няма ў спісе?"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:614
|
||||
#: ../js/gdm/loginDialog.js:598
|
||||
#, javascript-format
|
||||
msgid "(e.g., user or %s)"
|
||||
msgstr "(напр., карыстальнік ці %s)"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:619 ../js/ui/components/networkAgent.js:262
|
||||
#: ../js/gdm/loginDialog.js:603 ../js/ui/components/networkAgent.js:262
|
||||
#: ../js/ui/components/networkAgent.js:280
|
||||
msgid "Username: "
|
||||
msgstr "Імя карыстальніка: "
|
||||
|
||||
#: ../js/gdm/loginDialog.js:920
|
||||
#: ../js/gdm/loginDialog.js:868
|
||||
msgid "Login Window"
|
||||
msgstr "Акно ўваходу"
|
||||
|
||||
@@ -372,27 +364,27 @@ msgstr "Не ўдалося разабраць загад:"
|
||||
msgid "Execution of “%s” failed:"
|
||||
msgstr "Не ўдалося выканаць \"%s\":"
|
||||
|
||||
#: ../js/ui/appDisplay.js:636
|
||||
#: ../js/ui/appDisplay.js:629
|
||||
msgid "Frequently used applications will appear here"
|
||||
msgstr "Тут размешчаныя часта ўжываныя праграмы"
|
||||
|
||||
#: ../js/ui/appDisplay.js:747
|
||||
#: ../js/ui/appDisplay.js:740
|
||||
msgid "Frequent"
|
||||
msgstr "Часта"
|
||||
|
||||
#: ../js/ui/appDisplay.js:754
|
||||
#: ../js/ui/appDisplay.js:747
|
||||
msgid "All"
|
||||
msgstr "Усе"
|
||||
|
||||
#: ../js/ui/appDisplay.js:1566
|
||||
#: ../js/ui/appDisplay.js:1552
|
||||
msgid "New Window"
|
||||
msgstr "Новае акно"
|
||||
|
||||
#: ../js/ui/appDisplay.js:1588 ../js/ui/dash.js:285
|
||||
#: ../js/ui/appDisplay.js:1574 ../js/ui/dash.js:285
|
||||
msgid "Remove from Favorites"
|
||||
msgstr "Выдаліць са спіса ўпадабанага"
|
||||
|
||||
#: ../js/ui/appDisplay.js:1594
|
||||
#: ../js/ui/appDisplay.js:1580
|
||||
msgid "Add to Favorites"
|
||||
msgstr "Дадаць у спіс упадабанага"
|
||||
|
||||
@@ -535,44 +527,44 @@ msgstr "Сб"
|
||||
msgid "calendar:MY"
|
||||
msgstr "calendar:MY"
|
||||
|
||||
#: ../js/ui/calendar.js:450
|
||||
#: ../js/ui/calendar.js:446
|
||||
msgid "Previous month"
|
||||
msgstr "Папярэдні месяц"
|
||||
|
||||
#: ../js/ui/calendar.js:460
|
||||
#: ../js/ui/calendar.js:456
|
||||
msgid "Next month"
|
||||
msgstr "Наступны месяц"
|
||||
|
||||
#. Translators: Text to show if there are no events */
|
||||
#: ../js/ui/calendar.js:772
|
||||
#: ../js/ui/calendar.js:762
|
||||
msgid "Nothing Scheduled"
|
||||
msgstr "Нічога не прымеркавана"
|
||||
|
||||
#. Translators: Shown on calendar heading when selected day occurs on current year */
|
||||
#: ../js/ui/calendar.js:790
|
||||
#: ../js/ui/calendar.js:780
|
||||
msgctxt "calendar heading"
|
||||
msgid "%A, %B %d"
|
||||
msgstr "%A, %d %B"
|
||||
|
||||
#. Translators: Shown on calendar heading when selected day occurs on different year */
|
||||
#: ../js/ui/calendar.js:793
|
||||
#: ../js/ui/calendar.js:783
|
||||
msgctxt "calendar heading"
|
||||
msgid "%A, %B %d, %Y"
|
||||
msgstr "%A, %d %B, %Y"
|
||||
|
||||
#: ../js/ui/calendar.js:804
|
||||
#: ../js/ui/calendar.js:794
|
||||
msgid "Today"
|
||||
msgstr "Сёння"
|
||||
|
||||
#: ../js/ui/calendar.js:808
|
||||
#: ../js/ui/calendar.js:798
|
||||
msgid "Tomorrow"
|
||||
msgstr "Заўтра"
|
||||
|
||||
#: ../js/ui/calendar.js:819
|
||||
#: ../js/ui/calendar.js:809
|
||||
msgid "This week"
|
||||
msgstr "На гэтым тыдні"
|
||||
|
||||
#: ../js/ui/calendar.js:827
|
||||
#: ../js/ui/calendar.js:817
|
||||
msgid "Next week"
|
||||
msgstr "На наступным тыдні"
|
||||
|
||||
@@ -605,8 +597,8 @@ msgstr "Пароль:"
|
||||
msgid "Type again:"
|
||||
msgstr "Паўтарыце пароль:"
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:131 ../js/ui/status/network.js:240
|
||||
#: ../js/ui/status/network.js:322 ../js/ui/status/network.js:881
|
||||
#: ../js/ui/components/networkAgent.js:131 ../js/ui/status/network.js:250
|
||||
#: ../js/ui/status/network.js:327 ../js/ui/status/network.js:886
|
||||
msgid "Connect"
|
||||
msgstr "Злучыць"
|
||||
|
||||
@@ -813,13 +805,13 @@ msgstr "Удзельнік %s запрашае вас далучыцца да %s
|
||||
#: ../js/ui/components/telepathyClient.js:1164
|
||||
#: ../js/ui/components/telepathyClient.js:1199
|
||||
#: ../js/ui/components/telepathyClient.js:1233
|
||||
#: ../js/ui/components/telepathyClient.js:1291
|
||||
#: ../js/ui/components/telepathyClient.js:1290
|
||||
msgid "Decline"
|
||||
msgstr "Адмовіцца"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1170
|
||||
#: ../js/ui/components/telepathyClient.js:1239
|
||||
#: ../js/ui/components/telepathyClient.js:1296
|
||||
#: ../js/ui/components/telepathyClient.js:1295
|
||||
msgid "Accept"
|
||||
msgstr "Прыняць"
|
||||
|
||||
@@ -856,97 +848,97 @@ msgstr "%s пасылае вам %s"
|
||||
msgid "%s would like permission to see when you are online"
|
||||
msgstr "%s просіць дазволу на прагляд вашага сеткавага стану"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1342
|
||||
#: ../js/ui/components/telepathyClient.js:1341
|
||||
msgid "Network error"
|
||||
msgstr "Сеткавая памылка"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1344
|
||||
#: ../js/ui/components/telepathyClient.js:1343
|
||||
msgid "Authentication failed"
|
||||
msgstr "Няўдалая ідэнтыфікацыя"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1346
|
||||
#: ../js/ui/components/telepathyClient.js:1345
|
||||
msgid "Encryption error"
|
||||
msgstr "Памылка шыфравання"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1348
|
||||
#: ../js/ui/components/telepathyClient.js:1347
|
||||
msgid "Certificate not provided"
|
||||
msgstr "Сертыфікат не пададзены"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1350
|
||||
#: ../js/ui/components/telepathyClient.js:1349
|
||||
msgid "Certificate untrusted"
|
||||
msgstr "Сертыфікат не заслугоўвае даверу"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1352
|
||||
#: ../js/ui/components/telepathyClient.js:1351
|
||||
msgid "Certificate expired"
|
||||
msgstr "Сертыфікат састарэў"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1354
|
||||
#: ../js/ui/components/telepathyClient.js:1353
|
||||
msgid "Certificate not activated"
|
||||
msgstr "Сертыфікат не актывізаваны"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1356
|
||||
#: ../js/ui/components/telepathyClient.js:1355
|
||||
msgid "Certificate hostname mismatch"
|
||||
msgstr "Назва камп'ютара ў сертыфікаце не адпавядае патрэбнай"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1358
|
||||
#: ../js/ui/components/telepathyClient.js:1357
|
||||
msgid "Certificate fingerprint mismatch"
|
||||
msgstr "Адбітак сертыфіката не адпавядае патрэбнаму"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1360
|
||||
#: ../js/ui/components/telepathyClient.js:1359
|
||||
msgid "Certificate self-signed"
|
||||
msgstr "Сертыфікат уласнаручна падпісаны"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1362
|
||||
#: ../js/ui/components/telepathyClient.js:1361
|
||||
msgid "Status is set to offline"
|
||||
msgstr "Уключаны рэжым па-за сеткай"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1364
|
||||
#: ../js/ui/components/telepathyClient.js:1363
|
||||
msgid "Encryption is not available"
|
||||
msgstr "Шыфраванне недаступнае"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1366
|
||||
#: ../js/ui/components/telepathyClient.js:1365
|
||||
msgid "Certificate is invalid"
|
||||
msgstr "Хібны сертыфікат"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1368
|
||||
#: ../js/ui/components/telepathyClient.js:1367
|
||||
msgid "Connection has been refused"
|
||||
msgstr "Адмоўлена ў злучэнні"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1370
|
||||
#: ../js/ui/components/telepathyClient.js:1369
|
||||
msgid "Connection can't be established"
|
||||
msgstr "Не ўдалося ўсталяваць злучэнне"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1372
|
||||
#: ../js/ui/components/telepathyClient.js:1371
|
||||
msgid "Connection has been lost"
|
||||
msgstr "Злучэнне страчана"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1374
|
||||
#: ../js/ui/components/telepathyClient.js:1373
|
||||
msgid "This account is already connected to the server"
|
||||
msgstr "Гэты конт ужо злучаны з серверам"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1376
|
||||
#: ../js/ui/components/telepathyClient.js:1375
|
||||
msgid ""
|
||||
"Connection has been replaced by a new connection using the same resource"
|
||||
msgstr "Злучэнне заменена новым для таго ж самага рэсурсу"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1378
|
||||
#: ../js/ui/components/telepathyClient.js:1377
|
||||
msgid "The account already exists on the server"
|
||||
msgstr "Такі конт ужо існуе на серверы"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1380
|
||||
#: ../js/ui/components/telepathyClient.js:1379
|
||||
msgid "Server is currently too busy to handle the connection"
|
||||
msgstr "Сервер надта заняты і не можа абслужыць гэта злучэнне"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1382
|
||||
#: ../js/ui/components/telepathyClient.js:1381
|
||||
msgid "Certificate has been revoked"
|
||||
msgstr "Сертыфікат быў адкліканы"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1384
|
||||
#: ../js/ui/components/telepathyClient.js:1383
|
||||
msgid ""
|
||||
"Certificate uses an insecure cipher algorithm or is cryptographically weak"
|
||||
msgstr "Для сертыфіката выкарыстаны слабы або небяспечны алгарытм шыфравання"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1386
|
||||
#: ../js/ui/components/telepathyClient.js:1385
|
||||
msgid ""
|
||||
"The length of the server certificate, or the depth of the server certificate "
|
||||
"chain, exceed the limits imposed by the cryptography library"
|
||||
@@ -954,22 +946,22 @@ msgstr ""
|
||||
"Даўжыня сертыфіката сервера або глыбіня яго ланцуга перавышае абмежаванне, "
|
||||
"выстаўленае крыптаграфічнай бібліятэкай"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1388
|
||||
#: ../js/ui/components/telepathyClient.js:1387
|
||||
msgid "Internal error"
|
||||
msgstr "Унутраная памылка"
|
||||
|
||||
#. translators: argument is the account name, like
|
||||
#. * name@jabber.org for example. */
|
||||
#: ../js/ui/components/telepathyClient.js:1398
|
||||
#: ../js/ui/components/telepathyClient.js:1397
|
||||
#, javascript-format
|
||||
msgid "Unable to connect to %s"
|
||||
msgstr "Не ўдалося злучыцца з %s"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1403
|
||||
#: ../js/ui/components/telepathyClient.js:1402
|
||||
msgid "View account"
|
||||
msgstr "Праглядзець конт"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1440
|
||||
#: ../js/ui/components/telepathyClient.js:1434
|
||||
msgid "Unknown reason"
|
||||
msgstr "Невядомая прычына"
|
||||
|
||||
@@ -985,22 +977,22 @@ msgstr "Паказаць праграмы"
|
||||
msgid "Dash"
|
||||
msgstr "Прыборная дошка"
|
||||
|
||||
#: ../js/ui/dateMenu.js:91
|
||||
#: ../js/ui/dateMenu.js:86
|
||||
msgid "Open Calendar"
|
||||
msgstr "Адкрыць каляндар"
|
||||
|
||||
#: ../js/ui/dateMenu.js:95
|
||||
#: ../js/ui/dateMenu.js:90
|
||||
msgid "Open Clocks"
|
||||
msgstr "Адкрыць гадзіннікі"
|
||||
|
||||
#: ../js/ui/dateMenu.js:102
|
||||
#: ../js/ui/dateMenu.js:97
|
||||
msgid "Date & Time Settings"
|
||||
msgstr "Настройкі даты і часу"
|
||||
|
||||
#. 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").
|
||||
#. */
|
||||
#: ../js/ui/dateMenu.js:192
|
||||
#: ../js/ui/dateMenu.js:187
|
||||
msgid "%A %B %e, %Y"
|
||||
msgstr "%A, %e %B, %Y"
|
||||
|
||||
@@ -1116,9 +1108,7 @@ msgstr "Выключыць камп'ютар пасля ўсталявання
|
||||
|
||||
#: ../js/ui/endSessionDialog.js:315
|
||||
msgid "Running on battery power: please plug in before installing updates."
|
||||
msgstr ""
|
||||
"Камп'ютар сілкуецца ад акумулятара: падлучыце да знешняй крыніцы энергіі "
|
||||
"перад усталяваннем абновак."
|
||||
msgstr "Камп'ютар сілкуецца ад акумулятара: падлучыце да знешняй крыніцы энергіі перад усталяваннем абновак."
|
||||
|
||||
#: ../js/ui/endSessionDialog.js:332
|
||||
msgid "Some applications are busy or have unsaved work."
|
||||
@@ -1153,26 +1143,25 @@ msgstr "Сцягнуць і ўсталяваць \"%s\" з extensions.gnome.org?
|
||||
msgid "Keyboard"
|
||||
msgstr "Клавіятура"
|
||||
|
||||
#: ../js/ui/lookingGlass.js:643
|
||||
#: ../js/ui/lookingGlass.js:641
|
||||
msgid "No extensions installed"
|
||||
msgstr "Няма ўсталяваных пашырэнняў"
|
||||
|
||||
#. Translators: argument is an extension UUID. */
|
||||
#: ../js/ui/lookingGlass.js:697
|
||||
#: ../js/ui/lookingGlass.js:695
|
||||
#, javascript-format
|
||||
msgid "%s has not emitted any errors."
|
||||
msgstr "%s не зрабіў ніякіх памылак."
|
||||
|
||||
#: ../js/ui/lookingGlass.js:703
|
||||
#: ../js/ui/lookingGlass.js:701
|
||||
msgid "Hide Errors"
|
||||
msgstr "Хаваць памылкі"
|
||||
|
||||
#: ../js/ui/lookingGlass.js:707 ../js/ui/lookingGlass.js:767
|
||||
#: ../js/ui/lookingGlass.js:705 ../js/ui/lookingGlass.js:765
|
||||
msgid "Show Errors"
|
||||
msgstr "Паказваць памылкі"
|
||||
|
||||
#: ../js/ui/lookingGlass.js:716 ../js/ui/status/location.js:59
|
||||
#: ../js/ui/status/location.js:167
|
||||
#: ../js/ui/lookingGlass.js:714
|
||||
msgid "Enabled"
|
||||
msgstr "Уключана"
|
||||
|
||||
@@ -1180,64 +1169,64 @@ msgstr "Уключана"
|
||||
#. because it's disabled by rfkill (airplane mode) */
|
||||
#. translators:
|
||||
#. * The device has been disabled
|
||||
#: ../js/ui/lookingGlass.js:719 ../js/ui/status/location.js:164
|
||||
#: ../js/ui/status/network.js:555 ../src/gvc/gvc-mixer-control.c:1830
|
||||
#: ../js/ui/lookingGlass.js:717 ../js/ui/status/network.js:560
|
||||
#: ../src/gvc/gvc-mixer-control.c:1830
|
||||
msgid "Disabled"
|
||||
msgstr "Выключана"
|
||||
|
||||
#: ../js/ui/lookingGlass.js:721
|
||||
#: ../js/ui/lookingGlass.js:719
|
||||
msgid "Error"
|
||||
msgstr "Памылка"
|
||||
|
||||
#: ../js/ui/lookingGlass.js:723
|
||||
#: ../js/ui/lookingGlass.js:721
|
||||
msgid "Out of date"
|
||||
msgstr "Састарэла"
|
||||
|
||||
#: ../js/ui/lookingGlass.js:725
|
||||
#: ../js/ui/lookingGlass.js:723
|
||||
msgid "Downloading"
|
||||
msgstr "Сцягванне"
|
||||
|
||||
#: ../js/ui/lookingGlass.js:749
|
||||
#: ../js/ui/lookingGlass.js:747
|
||||
msgid "View Source"
|
||||
msgstr "Паглядзець выточны код"
|
||||
|
||||
#: ../js/ui/lookingGlass.js:758
|
||||
#: ../js/ui/lookingGlass.js:756
|
||||
msgid "Web Page"
|
||||
msgstr "Сеціўная старонка"
|
||||
|
||||
#: ../js/ui/messageTray.js:1326
|
||||
#: ../js/ui/messageTray.js:1324
|
||||
msgid "Open"
|
||||
msgstr "Адкрыць"
|
||||
|
||||
#: ../js/ui/messageTray.js:1333
|
||||
#: ../js/ui/messageTray.js:1331
|
||||
msgid "Remove"
|
||||
msgstr "Выдаліць"
|
||||
|
||||
#: ../js/ui/messageTray.js:1630
|
||||
#: ../js/ui/messageTray.js:1628
|
||||
msgid "Notifications"
|
||||
msgstr "Апавяшчэнні"
|
||||
|
||||
#: ../js/ui/messageTray.js:1637
|
||||
#: ../js/ui/messageTray.js:1635
|
||||
msgid "Clear Messages"
|
||||
msgstr "Ачысціць спіс апавяшчэнняў"
|
||||
|
||||
#: ../js/ui/messageTray.js:1656
|
||||
#: ../js/ui/messageTray.js:1654
|
||||
msgid "Notification Settings"
|
||||
msgstr "Настройкі апавяшчэння"
|
||||
|
||||
#: ../js/ui/messageTray.js:1709
|
||||
#: ../js/ui/messageTray.js:1707
|
||||
msgid "Tray Menu"
|
||||
msgstr "Меню трэя"
|
||||
|
||||
#: ../js/ui/messageTray.js:1926
|
||||
#: ../js/ui/messageTray.js:1924
|
||||
msgid "No Messages"
|
||||
msgstr "Апавяшчэнні адсутнічаюць"
|
||||
|
||||
#: ../js/ui/messageTray.js:1964
|
||||
#: ../js/ui/messageTray.js:1962
|
||||
msgid "Message Tray"
|
||||
msgstr "Абшар апавяшчэнняў"
|
||||
|
||||
#: ../js/ui/messageTray.js:2962
|
||||
#: ../js/ui/messageTray.js:2946
|
||||
msgid "System Information"
|
||||
msgstr "Сістэмная інфармацыя"
|
||||
|
||||
@@ -1254,11 +1243,11 @@ msgstr[0] "%d новае паведамленне"
|
||||
msgstr[1] "%d новыя паведамленні"
|
||||
msgstr[2] "%d новых паведамленняў"
|
||||
|
||||
#: ../js/ui/overview.js:84
|
||||
#: ../js/ui/overview.js:83
|
||||
msgid "Undo"
|
||||
msgstr "Адрабіць"
|
||||
|
||||
#: ../js/ui/overview.js:124
|
||||
#: ../js/ui/overview.js:123
|
||||
msgid "Overview"
|
||||
msgstr "Агляд"
|
||||
|
||||
@@ -1266,7 +1255,7 @@ msgstr "Агляд"
|
||||
#. in the search entry when no search is
|
||||
#. active; it should not exceed ~30
|
||||
#. characters. */
|
||||
#: ../js/ui/overview.js:250
|
||||
#: ../js/ui/overview.js:257
|
||||
msgid "Type to search…"
|
||||
msgstr "Увядзіце тэкст для пошуку..."
|
||||
|
||||
@@ -1310,27 +1299,27 @@ msgstr[0] "%d новае апавяшчэнне"
|
||||
msgstr[1] "%d новыя апавяшчэнні"
|
||||
msgstr[2] "%d новых апавяшчэнняў"
|
||||
|
||||
#: ../js/ui/screenShield.js:474 ../js/ui/status/system.js:342
|
||||
#: ../js/ui/screenShield.js:473 ../js/ui/status/system.js:342
|
||||
msgid "Lock"
|
||||
msgstr "Заблакіраваць"
|
||||
|
||||
#: ../js/ui/screenShield.js:708
|
||||
#: ../js/ui/screenShield.js:707
|
||||
msgid "GNOME needs to lock the screen"
|
||||
msgstr "GNOME патрабуе блакіравання экрана"
|
||||
|
||||
#: ../js/ui/screenShield.js:835 ../js/ui/screenShield.js:1309
|
||||
#: ../js/ui/screenShield.js:834 ../js/ui/screenShield.js:1301
|
||||
msgid "Unable to lock"
|
||||
msgstr "Не ўдалося заблакіраваць"
|
||||
|
||||
#: ../js/ui/screenShield.js:836 ../js/ui/screenShield.js:1310
|
||||
#: ../js/ui/screenShield.js:835 ../js/ui/screenShield.js:1302
|
||||
msgid "Lock was blocked by an application"
|
||||
msgstr "Блакіраванне стрымана праграмай"
|
||||
|
||||
#: ../js/ui/search.js:603
|
||||
#: ../js/ui/search.js:589
|
||||
msgid "Searching…"
|
||||
msgstr "Пошук..."
|
||||
|
||||
#: ../js/ui/search.js:649
|
||||
#: ../js/ui/search.js:632
|
||||
msgid "No results."
|
||||
msgstr "Нічога не знойдзена."
|
||||
|
||||
@@ -1402,22 +1391,23 @@ msgstr "Высокая кантраснасць"
|
||||
msgid "Large Text"
|
||||
msgstr "Буйны тэкст"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:49
|
||||
#: ../js/ui/status/bluetooth.js:48
|
||||
msgid "Bluetooth"
|
||||
msgstr "Bluetooth"
|
||||
|
||||
#: ../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:1345 ../js/ui/status/rfkill.js:86
|
||||
#: ../js/ui/status/rfkill.js:114
|
||||
#: ../js/ui/status/bluetooth.js:50 ../js/ui/status/location.js:62
|
||||
#: ../js/ui/status/location.js:162 ../js/ui/status/network.js:151
|
||||
#: ../js/ui/status/network.js:328 ../js/ui/status/network.js:1235
|
||||
#: ../js/ui/status/network.js:1346 ../js/ui/status/rfkill.js:85
|
||||
#: ../js/ui/status/rfkill.js:105
|
||||
msgid "Turn Off"
|
||||
msgstr "Выключыць"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:54
|
||||
#: ../js/ui/status/bluetooth.js:53
|
||||
msgid "Bluetooth Settings"
|
||||
msgstr "Настройкі Bluetooth"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:104
|
||||
#: ../js/ui/status/bluetooth.js:100
|
||||
#, javascript-format
|
||||
msgid "%d Connected Device"
|
||||
msgid_plural "%d Connected Devices"
|
||||
@@ -1425,7 +1415,7 @@ msgstr[0] "%d злучанае прыстасаванне"
|
||||
msgstr[1] "%d злучаныя прыстасаванні"
|
||||
msgstr[2] "%d злучаных прыстасаванняў"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:106 ../js/ui/status/network.js:1262
|
||||
#: ../js/ui/status/bluetooth.js:102 ../js/ui/status/network.js:1263
|
||||
msgid "Not Connected"
|
||||
msgstr "Няма злучэння"
|
||||
|
||||
@@ -1437,167 +1427,156 @@ msgstr "Яркасць"
|
||||
msgid "Show Keyboard Layout"
|
||||
msgstr "Паказаць клавіятурную раскладку"
|
||||
|
||||
#: ../js/ui/status/location.js:53
|
||||
#: ../js/ui/status/location.js:52
|
||||
msgid "Location"
|
||||
msgstr "Месцапалажэнне"
|
||||
|
||||
#: ../js/ui/status/location.js:60 ../js/ui/status/location.js:168
|
||||
msgid "Disable"
|
||||
msgstr "Выключыць"
|
||||
#: ../js/ui/status/location.js:61 ../js/ui/status/location.js:161
|
||||
#: ../js/ui/status/rfkill.js:84
|
||||
msgid "On"
|
||||
msgstr "Укл."
|
||||
|
||||
#: ../js/ui/status/location.js:165
|
||||
msgid "Enable"
|
||||
#: ../js/ui/status/location.js:158 ../js/ui/status/network.js:246
|
||||
#: ../js/ui/status/network.js:425 ../js/ui/status/network.js:1261
|
||||
msgid "Off"
|
||||
msgstr "Выключана"
|
||||
|
||||
#: ../js/ui/status/location.js:159 ../js/ui/status/network.js:1235
|
||||
msgid "Turn On"
|
||||
msgstr "Уключыць"
|
||||
|
||||
#: ../js/ui/status/location.js:167
|
||||
msgid "In Use"
|
||||
msgstr "Ужыта"
|
||||
|
||||
#: ../js/ui/status/network.js:74
|
||||
msgid "<unknown>"
|
||||
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
|
||||
msgid "Connected"
|
||||
msgstr "Злучана"
|
||||
|
||||
#. 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) */
|
||||
#: ../js/ui/status/network.js:426
|
||||
#: ../js/ui/status/network.js:431
|
||||
msgid "unmanaged"
|
||||
msgstr "непадкантрольна"
|
||||
|
||||
#: ../js/ui/status/network.js:428
|
||||
#: ../js/ui/status/network.js:433
|
||||
msgid "disconnecting..."
|
||||
msgstr "адлучэнне..."
|
||||
|
||||
#: ../js/ui/status/network.js:434 ../js/ui/status/network.js:1362
|
||||
#: ../js/ui/status/network.js:439 ../js/ui/status/network.js:1363
|
||||
msgid "connecting..."
|
||||
msgstr "усталяванне злучэння..."
|
||||
|
||||
#. 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:1365
|
||||
#: ../js/ui/status/network.js:442 ../js/ui/status/network.js:1366
|
||||
msgid "authentication required"
|
||||
msgstr "патрэбная ідэнтыфікацыя"
|
||||
|
||||
#. Translators: this is for devices that require some kind of firmware or kernel
|
||||
#. module, which is missing */
|
||||
#: ../js/ui/status/network.js:445
|
||||
#: ../js/ui/status/network.js:450
|
||||
msgid "firmware missing"
|
||||
msgstr "няма апаратнага апраграмавання"
|
||||
|
||||
#. Translators: this is for a network device that cannot be activated (for example it
|
||||
#. is disabled by rfkill, or it has no coverage */
|
||||
#: ../js/ui/status/network.js:449
|
||||
#: ../js/ui/status/network.js:454
|
||||
msgid "unavailable"
|
||||
msgstr "недаступна"
|
||||
|
||||
#: ../js/ui/status/network.js:451 ../js/ui/status/network.js:1367
|
||||
#: ../js/ui/status/network.js:456 ../js/ui/status/network.js:1368
|
||||
msgid "connection failed"
|
||||
msgstr "не ўдалося злучыцца"
|
||||
|
||||
#: ../js/ui/status/network.js:467
|
||||
#: ../js/ui/status/network.js:472
|
||||
msgid "Wired Settings"
|
||||
msgstr "Настройкі праваднога злучэння"
|
||||
|
||||
#: ../js/ui/status/network.js:509 ../js/ui/status/network.js:587
|
||||
#: ../js/ui/status/network.js:514 ../js/ui/status/network.js:592
|
||||
msgid "Mobile Broadband Settings"
|
||||
msgstr "Настройкі мабільнага злучэння"
|
||||
|
||||
#: ../js/ui/status/network.js:551 ../js/ui/status/network.js:1258
|
||||
#: ../js/ui/status/network.js:556 ../js/ui/status/network.js:1259
|
||||
msgid "Hardware Disabled"
|
||||
msgstr "Прыстасаванне выключана"
|
||||
|
||||
#: ../js/ui/status/network.js:595
|
||||
#: ../js/ui/status/network.js:600
|
||||
msgid "Use as Internet connection"
|
||||
msgstr "Ужыць для злучэння з Інтэрнэтам"
|
||||
|
||||
#: ../js/ui/status/network.js:776
|
||||
#: ../js/ui/status/network.js:781
|
||||
msgid "Airplane Mode is On"
|
||||
msgstr "Рэжым самалёта ўключаны"
|
||||
|
||||
#: ../js/ui/status/network.js:777
|
||||
#: ../js/ui/status/network.js:782
|
||||
msgid "Wi-Fi is disabled when airplane mode is on."
|
||||
msgstr "У рэжыме самалёта выключаецца Wi-Fi."
|
||||
|
||||
#: ../js/ui/status/network.js:778
|
||||
#: ../js/ui/status/network.js:783
|
||||
msgid "Turn Off Airplane Mode"
|
||||
msgstr "Выключыць рэжым самалёта"
|
||||
|
||||
#: ../js/ui/status/network.js:787
|
||||
#: ../js/ui/status/network.js:792
|
||||
msgid "Wi-Fi is Off"
|
||||
msgstr "Wi-Fi выключаны"
|
||||
|
||||
#: ../js/ui/status/network.js:788
|
||||
#: ../js/ui/status/network.js:793
|
||||
msgid "Wi-Fi needs to be turned on in order to connect to a network."
|
||||
msgstr "Каб злучыцца з сеткай, спачатку трэба ўключыць Wi-Fi."
|
||||
|
||||
#: ../js/ui/status/network.js:789
|
||||
#: ../js/ui/status/network.js:794
|
||||
msgid "Turn On Wi-Fi"
|
||||
msgstr "Уключыць Wi-Fi"
|
||||
|
||||
#: ../js/ui/status/network.js:814
|
||||
#: ../js/ui/status/network.js:819
|
||||
msgid "Wi-Fi Networks"
|
||||
msgstr "Сеткі Wi-Fi"
|
||||
|
||||
#: ../js/ui/status/network.js:816
|
||||
#: ../js/ui/status/network.js:821
|
||||
msgid "Select a network"
|
||||
msgstr "Выберыце сетку"
|
||||
|
||||
#: ../js/ui/status/network.js:845
|
||||
#: ../js/ui/status/network.js:850
|
||||
msgid "No Networks"
|
||||
msgstr "Няма сетак"
|
||||
|
||||
#: ../js/ui/status/network.js:866 ../js/ui/status/rfkill.js:112
|
||||
#: ../js/ui/status/network.js:871 ../js/ui/status/rfkill.js:103
|
||||
msgid "Use hardware switch to turn off"
|
||||
msgstr "Задзейнічаць апаратны выключальнік"
|
||||
|
||||
#: ../js/ui/status/network.js:1136
|
||||
#: ../js/ui/status/network.js:1141
|
||||
msgid "Select Network"
|
||||
msgstr "Выбраць сетку"
|
||||
|
||||
#: ../js/ui/status/network.js:1142
|
||||
#: ../js/ui/status/network.js:1147
|
||||
msgid "Wi-Fi Settings"
|
||||
msgstr "Настройкі Wi-Fi"
|
||||
|
||||
#: ../js/ui/status/network.js:1234
|
||||
msgid "Turn On"
|
||||
msgstr "Уключыць"
|
||||
|
||||
#: ../js/ui/status/network.js:1251
|
||||
#: ../js/ui/status/network.js:1252
|
||||
msgid "Hotspot Active"
|
||||
msgstr "Хотспот уключаны"
|
||||
|
||||
#: ../js/ui/status/network.js:1254
|
||||
#: ../js/ui/status/network.js:1255
|
||||
msgid "Connecting"
|
||||
msgstr "Злучэнне"
|
||||
|
||||
#: ../js/ui/status/network.js:1433 ../js/ui/status/rfkill.js:89
|
||||
#: ../js/ui/status/network.js:1434 ../js/ui/status/rfkill.js:88
|
||||
msgid "Network Settings"
|
||||
msgstr "Сеткавыя настройкі"
|
||||
|
||||
#: ../js/ui/status/network.js:1435
|
||||
#: ../js/ui/status/network.js:1436
|
||||
msgid "VPN Settings"
|
||||
msgstr "Настройкі VPN"
|
||||
|
||||
#: ../js/ui/status/network.js:1454
|
||||
#: ../js/ui/status/network.js:1455
|
||||
msgid "VPN"
|
||||
msgstr "VPN"
|
||||
|
||||
#: ../js/ui/status/network.js:1607
|
||||
#: ../js/ui/status/network.js:1598
|
||||
msgid "Network Manager"
|
||||
msgstr "Сеткавы кіраўнік"
|
||||
|
||||
#: ../js/ui/status/network.js:1646
|
||||
#: ../js/ui/status/network.js:1637
|
||||
msgid "Connection failed"
|
||||
msgstr "Не ўдалося злучыцца"
|
||||
|
||||
#: ../js/ui/status/network.js:1647
|
||||
#: ../js/ui/status/network.js:1638
|
||||
msgid "Activation of network connection failed"
|
||||
msgstr "Не ўдалося ўключыць сеткавае злучэнне"
|
||||
|
||||
@@ -1631,14 +1610,10 @@ msgstr "UPS"
|
||||
msgid "Battery"
|
||||
msgstr "Батарэя"
|
||||
|
||||
#: ../js/ui/status/rfkill.js:83
|
||||
#: ../js/ui/status/rfkill.js:82
|
||||
msgid "Airplane Mode"
|
||||
msgstr "Рэжым самалёта"
|
||||
|
||||
#: ../js/ui/status/rfkill.js:85
|
||||
msgid "On"
|
||||
msgstr "Укл."
|
||||
|
||||
#: ../js/ui/status/system.js:314
|
||||
msgid "Switch User"
|
||||
msgstr "Перамяніць карыстальніка"
|
||||
@@ -1775,3 +1750,4 @@ msgstr "Пароль не можа быць пустым"
|
||||
#: ../src/shell-polkit-authentication-agent.c:343
|
||||
msgid "Authentication dialog was dismissed by the user"
|
||||
msgstr "Карыстальнік праігнараваў дыялогавае акенца ідэнтыфікацыі"
|
||||
|
||||
|
1028
po/ca@valencia.po
1028
po/ca@valencia.po
File diff suppressed because it is too large
Load Diff
341
po/el.po
341
po/el.po
@@ -7,8 +7,8 @@ msgstr ""
|
||||
"Project-Id-Version: gnome-shell.po.master\n"
|
||||
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
|
||||
"shell&keywords=I18N+L10N&component=general\n"
|
||||
"POT-Creation-Date: 2014-03-27 21:19+0000\n"
|
||||
"PO-Revision-Date: 2014-03-28 08:41+0300\n"
|
||||
"POT-Creation-Date: 2014-02-19 23:39+0000\n"
|
||||
"PO-Revision-Date: 2014-02-20 08:18+0300\n"
|
||||
"Last-Translator: Dimitris Spingos (Δημήτρης Σπίγγος) <dmtrs32@gmail.com>\n"
|
||||
"Language-Team: team@lists.gnome.gr\n"
|
||||
"Language: el\n"
|
||||
@@ -47,7 +47,7 @@ msgstr "Άνοιγμα του μενού εφαρμογών"
|
||||
|
||||
#: ../data/gnome-shell.desktop.in.in.h:1
|
||||
msgid "GNOME Shell"
|
||||
msgstr "Κέλυφος GNOME Shell"
|
||||
msgstr "GNOME Shell"
|
||||
|
||||
#: ../data/gnome-shell.desktop.in.in.h:2
|
||||
#: ../data/gnome-shell-wayland.desktop.in.in.h:2
|
||||
@@ -57,21 +57,21 @@ msgstr "Διαχείριση παραθύρων και εκκίνηση εφαρ
|
||||
#: ../data/gnome-shell-extension-prefs.desktop.in.in.h:1
|
||||
#: ../js/extensionPrefs/main.js:155
|
||||
msgid "GNOME Shell Extension Preferences"
|
||||
msgstr "Προτιμήσεις επεκτάσεων του κελύφους GNOME Shell"
|
||||
msgstr "Προτιμήσεις επεκτάσεων του GNOME Shell"
|
||||
|
||||
#: ../data/gnome-shell-extension-prefs.desktop.in.in.h:2
|
||||
msgid "Configure GNOME Shell Extensions"
|
||||
msgstr "Ρύθμιση επεκτάσεων του κελύφους GNOME Shell"
|
||||
msgstr "Ρύθμιση επεκτάσεων του GNOME Shell"
|
||||
|
||||
#: ../data/gnome-shell-wayland.desktop.in.in.h:1
|
||||
msgid "GNOME Shell (wayland compositor)"
|
||||
msgstr "Κέλυφος GNOME Shell (συνθετητής wayland)"
|
||||
msgstr "GNOME Shell (συνθετητής wayland)"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:1
|
||||
msgid "Enable internal tools useful for developers and testers from Alt-F2"
|
||||
msgstr ""
|
||||
"Ενεργοποίηση εσωτερικών εργαλείων χρήσιμων για τους προγραμματιστές και τους "
|
||||
"δοκιμαστές, με το Alt-F2"
|
||||
"δοκιμαστές με το Alt-F2"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:2
|
||||
msgid ""
|
||||
@@ -79,7 +79,7 @@ msgid ""
|
||||
"dialog."
|
||||
msgstr ""
|
||||
"Επιτρέπει την πρόσβαση σε εσωτερικά εργαλεία αποσφαλμάτωσης και "
|
||||
"παρακολούθησης, με τη χρήση του διαλόγου Alt-F2."
|
||||
"παρακολούθησης με τη χρήση του διαλόγου Alt-F2."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:3
|
||||
msgid "UUIDs of extensions to enable"
|
||||
@@ -92,10 +92,10 @@ msgid ""
|
||||
"list. You can also manipulate this list with the EnableExtension and "
|
||||
"DisableExtension D-Bus methods on org.gnome.Shell."
|
||||
msgstr ""
|
||||
"Οι επεκτάσεις του κελύφους GNOME έχουν μια ιδιότητα UUID. Αυτό το κλειδί "
|
||||
"Η επεκτάσεις του κελύφους GNOME έχουν μια ιδιότητα UUID· αυτό το κλειδί "
|
||||
"εμφανίζει τις επεκτάσεις που πρέπει να φορτωθούν. Οποιαδήποτε επέκταση που "
|
||||
"επιθυμεί να φορτωθεί πρέπει να είναι στον κατάλογο. Μπορείτε ακόμη να "
|
||||
"χειρισθείτε αυτόν τον κατάλογο με τις μεθόδους διαύλου δεδομένων "
|
||||
"χειριστείτε αυτόν τον κατάλογο με τις μεθόδους διαύλου δεδομένων "
|
||||
"EnableExtension and DisableExtension στο org.gnome.Shell."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:5
|
||||
@@ -152,7 +152,7 @@ msgid ""
|
||||
"Whether to remember password for mounting encrypted or remote filesystems"
|
||||
msgstr ""
|
||||
"Εάν θα θυμάται τον κωδικό πρόσβασης για προσάρτηση κρυπτογραφημένων ή "
|
||||
"απομεμακρυσμένων συστημάτων αρχείων"
|
||||
"απομακρυσμένων συστημάτων αρχείων"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:14
|
||||
msgid ""
|
||||
@@ -161,9 +161,9 @@ msgid ""
|
||||
"'Remember Password' checkbox will be present. This key sets the default "
|
||||
"state of the checkbox."
|
||||
msgstr ""
|
||||
"Το κέλυφος θα ζητήσει έναν κωδικό όταν προσαρτάται μια κρυπτογραφημένη "
|
||||
"συσκευή ή ένα απομεμακρυσμένο σύστημα αρχείων. Εάν ο κωδικός μπορεί να "
|
||||
"αποθηκευθεί για μελλοντική χρήση, θα παρουσιάζεται ένα πλαίσιο ελέγχου 'Να "
|
||||
"Το κέλυφος θα ζητήσει έναν κωδικό όταν μια κρυπτογραφημένη συσκευή ή ένα "
|
||||
"απομακρυσμένο σύστημα αρχείων προσαρτάται. Εάν ο κωδικός μπορεί να "
|
||||
"αποθηκευτεί για μελλοντική χρήση θα παρουσιάζεται ένα πλαίσιο ελέγχου 'Να "
|
||||
"μην απαιτείται ο κωδικός πρόσβασης'. Αυτό το κλειδί ορίζει την προεπιλεγμένη "
|
||||
"κατάσταση του πλαισίου ελέγχου."
|
||||
|
||||
@@ -174,7 +174,7 @@ msgstr "Εμφάνιση του αριθμού εβδομάδας στο ημε
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:16
|
||||
msgid "If true, display the ISO week date in the calendar."
|
||||
msgstr ""
|
||||
"Αν true, εμφανίζει τον αριθμό εβδομάδας σύμφωνα με το ISO στο ημερολόγιο."
|
||||
"Αν αληθές, εμφανίζει τον αριθμό εβδομάδας σύμφωνα με το ISO στο ημερολόγιο."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:17
|
||||
msgid "Keybinding to open the application menu"
|
||||
@@ -236,17 +236,17 @@ msgid ""
|
||||
"Configures the maximum level of location accuracy applications are allowed "
|
||||
"to see. Valid options are 'off' (disable location tracking), 'country', "
|
||||
"'city', 'neighborhood', 'street', and 'exact' (typically requires GPS "
|
||||
"receiver). Please keep in mind that this only controls what GeoClue will "
|
||||
"receiver). Please keep in mind that this only controls what Geoclue will "
|
||||
"allow applications to see and they can find user's location on their own "
|
||||
"using network resources (albeit with street-level accuracy at best)."
|
||||
msgstr ""
|
||||
"Ρυθμίζει το μέγιστο επίπεδο ακρίβειας στην εντόπιση θέσης το οποίο "
|
||||
"επιτρέπεται να βλέπουν οι εφαρμογές. Οι έγκυρες επιλογές είναι "
|
||||
"'όχι' (απενεργοποίηση εντοπισμού θέσης), 'χώρα', 'πόλη', 'γειτονιά', 'οδός' "
|
||||
"και 'ακριβώς' (τυπικά, απαιτεί δέκτη GPS). Παρακαλούμε να θυμάστε ότι αυτό "
|
||||
"ελέγχει μόνο τι θα επιτρέπει το Geoclue να βλέπουν οι εφαρμογές, ενώ αυτές "
|
||||
"μπορούν να βρουν τη θέση του χρήστη και από μόνες τους, χρησιμοποιώντας "
|
||||
"πόρους δικτύου (αν και, στην καλύτερη περίπτωση, με ακρίβεια επιπέδου οδού)."
|
||||
"Ρυθμίζει το μέγιστο επίπεδο των εφαρμογών ακρίβειας της θέσης που "
|
||||
"επιτρέπεται να δείτε. Οι έγκυρες επιλογές είναι 'όχι' (απενεργοποίηση "
|
||||
"εντοπισμού θέσης), 'χώρα', 'πόλη', 'γειτονιά', 'οδός' και 'ακριβώς' (απαιτεί "
|
||||
"τυπικά δέκτη GPS). Παρακαλούμε να θυμόσαστε ότι αυτό ελέγχει μόνο τι θα "
|
||||
"επιτρέψει στις εφαρμογές το Geoclue να δείτε και μπορούν να βρουν τη θέση "
|
||||
"του χρήστη από μόνες τους χρησιμοποιώντας πόρους δικτύου (αν και με ακρίβεια "
|
||||
"επιπέδου οδού στην καλύτερη περίπτωση)."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:31
|
||||
msgid "The application icon mode."
|
||||
@@ -258,7 +258,7 @@ msgid ""
|
||||
"are 'thumbnail-only' (shows a thumbnail of the window), 'app-icon-"
|
||||
"only' (shows only the application icon) or 'both'."
|
||||
msgstr ""
|
||||
"Διαμορφώνει πώς θα εμφανίζονται τα παράθυρα κατά την εναλλαγή των παραθύρων. "
|
||||
"Διαμορφώνει πώς τα παράθυρα θα εμφανίζονται στην εναλλαγή των παραθύρων. "
|
||||
"Έγκυρες ρυθμίσεις είναι 'thumbnail-only' (εμφανίζει μια μικρογραφία του "
|
||||
"παραθύρου), 'app-icon-only' (εμφανίζει μόνο το εικονίδιο της εφαρμογής) ή "
|
||||
"'both' - και τα δύο."
|
||||
@@ -271,8 +271,8 @@ msgstr "Προσάρτηση αποκλειστικού διαλόγου στο
|
||||
msgid ""
|
||||
"This key overrides the key in org.gnome.mutter when running GNOME Shell."
|
||||
msgstr ""
|
||||
"Αυτό το κλειδί υπερισχύει του κλειδιού που υπάρχει στο org.gnome.mutter όταν "
|
||||
"εκτελείται το GNOME Shell."
|
||||
"Αυτό το κλειδί υπερισχύει του κλειδιού στο org.gnome.mutter όταν εκτελείται "
|
||||
"το GNOME Shell."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:35
|
||||
msgid "Arrangement of buttons on the titlebar"
|
||||
@@ -283,18 +283,18 @@ msgid ""
|
||||
"This key overrides the key in org.gnome.desktop.wm.preferences when running "
|
||||
"GNOME Shell."
|
||||
msgstr ""
|
||||
"Αυτό το κλειδί υπερισχύει του κλειδιού που υπάρχει στο org.gnome.desktop.wm."
|
||||
"preferences όταν εκτελείται το GNOME Shell."
|
||||
"Αυτό το κλειδί υπερισχύει του κλειδιού στο org.gnome.desktop.wm.preferences "
|
||||
"όταν εκτελείται το GNOME Shell."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:37
|
||||
msgid "Enable edge tiling when dropping windows on screen edges"
|
||||
msgstr ""
|
||||
"Ενεργοποίηση της προσάρτησης άκρων, όταν αφήνετε παράθυρα στις άκρες της "
|
||||
"Ενεργοποίηση της προσάρτηση άκρων, όταν αφήνετε παράθυρα στις άκρες της "
|
||||
"οθόνης"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:38
|
||||
msgid "Workspaces are managed dynamically"
|
||||
msgstr "Η διαχείριση των χώρων γίνεται δυναμικά"
|
||||
msgstr "Οι χώροι εργασίας διαχειρίζονται δυναμικά"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:39
|
||||
msgid "Workspaces only on primary monitor"
|
||||
@@ -310,8 +310,8 @@ msgstr ""
|
||||
#, javascript-format
|
||||
msgid "There was an error loading the preferences dialog for %s:"
|
||||
msgstr ""
|
||||
"Προέκυψε ένα σφάλμα κατά τη φόρτωση του παραθύρου διαλόγου των προτιμήσεων "
|
||||
"για %s:"
|
||||
"Προέκυψε ένα σφάλμα στη φόρτωση του παραθύρου διαλόγου των προτιμήσεων για "
|
||||
"%s:"
|
||||
|
||||
#: ../js/extensionPrefs/main.js:167
|
||||
msgid "Extension"
|
||||
@@ -326,7 +326,7 @@ msgstr ""
|
||||
#: ../js/gdm/authPrompt.js:147 ../js/ui/components/networkAgent.js:136
|
||||
#: ../js/ui/components/polkitAgent.js:166 ../js/ui/endSessionDialog.js:429
|
||||
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:399
|
||||
#: ../js/ui/status/network.js:878
|
||||
#: ../js/ui/status/network.js:883
|
||||
msgid "Cancel"
|
||||
msgstr "Ακύρωση"
|
||||
|
||||
@@ -344,25 +344,25 @@ msgctxt "button"
|
||||
msgid "Sign In"
|
||||
msgstr "Σύνδεση"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:271
|
||||
#: ../js/gdm/loginDialog.js:270
|
||||
msgid "Choose Session"
|
||||
msgstr "Επιλογή συνεδρίας"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:431
|
||||
#: ../js/gdm/loginDialog.js:430
|
||||
msgid "Not listed?"
|
||||
msgstr "Δεν είστε στη λίστα;"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:611
|
||||
#: ../js/gdm/loginDialog.js:598
|
||||
#, javascript-format
|
||||
msgid "(e.g., user or %s)"
|
||||
msgstr "(π.χ., χρήστης ή %s)"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:616 ../js/ui/components/networkAgent.js:262
|
||||
#: ../js/gdm/loginDialog.js:603 ../js/ui/components/networkAgent.js:262
|
||||
#: ../js/ui/components/networkAgent.js:280
|
||||
msgid "Username: "
|
||||
msgstr "Όνομα χρήστη: "
|
||||
|
||||
#: ../js/gdm/loginDialog.js:917
|
||||
#: ../js/gdm/loginDialog.js:868
|
||||
msgid "Login Window"
|
||||
msgstr "Παράθυρο σύνδεσης"
|
||||
|
||||
@@ -380,34 +380,34 @@ msgstr "Δε βρέθηκε η εντολή"
|
||||
|
||||
#: ../js/misc/util.js:148
|
||||
msgid "Could not parse command:"
|
||||
msgstr "Δεν ήταν δυνατό να γίνει ανάλυση της εντολής:"
|
||||
msgstr "Δεν ήταν δυνατό να επεξεργαστεί η εντολή:"
|
||||
|
||||
#: ../js/misc/util.js:156
|
||||
#, javascript-format
|
||||
msgid "Execution of “%s” failed:"
|
||||
msgstr "Η εκτέλεση του “%s” απέτυχε:"
|
||||
|
||||
#: ../js/ui/appDisplay.js:636
|
||||
#: ../js/ui/appDisplay.js:629
|
||||
msgid "Frequently used applications will appear here"
|
||||
msgstr "Οι πιο συχνά χρησιμοποιούμενες εφαρμογές θα εμφανιστούν εδώ"
|
||||
msgstr "Οι συχνά χρησιμοποιούμενες εφαρμογές θα εμφανιστούν εδώ"
|
||||
|
||||
#: ../js/ui/appDisplay.js:747
|
||||
#: ../js/ui/appDisplay.js:740
|
||||
msgid "Frequent"
|
||||
msgstr "Συχνά"
|
||||
|
||||
#: ../js/ui/appDisplay.js:754
|
||||
#: ../js/ui/appDisplay.js:747
|
||||
msgid "All"
|
||||
msgstr "Όλα"
|
||||
|
||||
#: ../js/ui/appDisplay.js:1566
|
||||
#: ../js/ui/appDisplay.js:1552
|
||||
msgid "New Window"
|
||||
msgstr "Νέο παράθυρο"
|
||||
|
||||
#: ../js/ui/appDisplay.js:1588 ../js/ui/dash.js:285
|
||||
#: ../js/ui/appDisplay.js:1574 ../js/ui/dash.js:285
|
||||
msgid "Remove from Favorites"
|
||||
msgstr "Αφαίρεση από τα αγαπημένα"
|
||||
|
||||
#: ../js/ui/appDisplay.js:1594
|
||||
#: ../js/ui/appDisplay.js:1580
|
||||
msgid "Add to Favorites"
|
||||
msgstr "Προσθήκη στα αγαπημένα"
|
||||
|
||||
@@ -550,44 +550,44 @@ msgstr "Σα"
|
||||
msgid "calendar:MY"
|
||||
msgstr "ημερολόγιο:MY"
|
||||
|
||||
#: ../js/ui/calendar.js:450
|
||||
#: ../js/ui/calendar.js:446
|
||||
msgid "Previous month"
|
||||
msgstr "Προηγούμενος μήνας"
|
||||
|
||||
#: ../js/ui/calendar.js:460
|
||||
#: ../js/ui/calendar.js:456
|
||||
msgid "Next month"
|
||||
msgstr "Επόμενος μήνας"
|
||||
|
||||
#. Translators: Text to show if there are no events */
|
||||
#: ../js/ui/calendar.js:772
|
||||
#: ../js/ui/calendar.js:762
|
||||
msgid "Nothing Scheduled"
|
||||
msgstr "Τίποτα προγραμματισμένο"
|
||||
|
||||
#. Translators: Shown on calendar heading when selected day occurs on current year */
|
||||
#: ../js/ui/calendar.js:790
|
||||
#: ../js/ui/calendar.js:780
|
||||
msgctxt "calendar heading"
|
||||
msgid "%A, %B %d"
|
||||
msgstr "%A, %d %B"
|
||||
msgstr "%A, %B %d"
|
||||
|
||||
#. Translators: Shown on calendar heading when selected day occurs on different year */
|
||||
#: ../js/ui/calendar.js:793
|
||||
#: ../js/ui/calendar.js:783
|
||||
msgctxt "calendar heading"
|
||||
msgid "%A, %B %d, %Y"
|
||||
msgstr "%A, %d %B %Y"
|
||||
msgstr "%A, %B %d, %Y"
|
||||
|
||||
#: ../js/ui/calendar.js:804
|
||||
#: ../js/ui/calendar.js:794
|
||||
msgid "Today"
|
||||
msgstr "Σήμερα"
|
||||
|
||||
#: ../js/ui/calendar.js:808
|
||||
#: ../js/ui/calendar.js:798
|
||||
msgid "Tomorrow"
|
||||
msgstr "Αύριο"
|
||||
|
||||
#: ../js/ui/calendar.js:819
|
||||
#: ../js/ui/calendar.js:809
|
||||
msgid "This week"
|
||||
msgstr "Αυτή η εβδομάδα"
|
||||
|
||||
#: ../js/ui/calendar.js:827
|
||||
#: ../js/ui/calendar.js:817
|
||||
msgid "Next week"
|
||||
msgstr "Επόμενη εβδομάδα"
|
||||
|
||||
@@ -620,8 +620,8 @@ msgstr "Κωδικός:"
|
||||
msgid "Type again:"
|
||||
msgstr "Πληκτρολογήστε ξανά:"
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:131 ../js/ui/status/network.js:240
|
||||
#: ../js/ui/status/network.js:322 ../js/ui/status/network.js:881
|
||||
#: ../js/ui/components/networkAgent.js:131 ../js/ui/status/network.js:250
|
||||
#: ../js/ui/status/network.js:327 ../js/ui/status/network.js:886
|
||||
msgid "Connect"
|
||||
msgstr "Σύνδεση"
|
||||
|
||||
@@ -960,8 +960,8 @@ msgstr "Το πιστοποιητικό έχει ανακληθεί"
|
||||
msgid ""
|
||||
"Certificate uses an insecure cipher algorithm or is cryptographically weak"
|
||||
msgstr ""
|
||||
"Το πιστοποιητικό χρησιμοποιεί έναν μη ασφαλή αλγόριθμο αποκρυπτογράφησης "
|
||||
"αποτυπώματος ή είναι κρυπτογραφικά ασθενές"
|
||||
"Το πιστοποιητικό χρησιμοποιεί ένα μη ασφαλή αλγόριθμο αποτυπώματος ή είναι "
|
||||
"αδύναμο κρυπτογραφικά"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1385
|
||||
msgid ""
|
||||
@@ -987,7 +987,7 @@ msgstr "Αδυναμία σύνδεσης με %s"
|
||||
msgid "View account"
|
||||
msgstr "Προβολή λογαριασμού"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1439
|
||||
#: ../js/ui/components/telepathyClient.js:1434
|
||||
msgid "Unknown reason"
|
||||
msgstr "Άγνωστος λόγος"
|
||||
|
||||
@@ -1003,24 +1003,24 @@ msgstr "Εμφάνιση εφαρμογών"
|
||||
msgid "Dash"
|
||||
msgstr "Ταμπλό"
|
||||
|
||||
#: ../js/ui/dateMenu.js:91
|
||||
#: ../js/ui/dateMenu.js:86
|
||||
msgid "Open Calendar"
|
||||
msgstr "Άνοιγμα ημερολογίου"
|
||||
|
||||
#: ../js/ui/dateMenu.js:95
|
||||
#: ../js/ui/dateMenu.js:90
|
||||
msgid "Open Clocks"
|
||||
msgstr "Άνοιγμα ρολογιών"
|
||||
|
||||
#: ../js/ui/dateMenu.js:102
|
||||
#: ../js/ui/dateMenu.js:97
|
||||
msgid "Date & Time Settings"
|
||||
msgstr "Ρυθμίσεις ημερομηνίας & ώρας"
|
||||
|
||||
#. 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").
|
||||
#. */
|
||||
#: ../js/ui/dateMenu.js:192
|
||||
#: ../js/ui/dateMenu.js:187
|
||||
msgid "%A %B %e, %Y"
|
||||
msgstr "%A, %e %B %Y"
|
||||
msgstr "%A %B %e, %Y"
|
||||
|
||||
#: ../js/ui/endSessionDialog.js:66
|
||||
#, javascript-format
|
||||
@@ -1066,8 +1066,8 @@ msgstr "Εγκατάσταση ενημερώσεων & τερματισμός"
|
||||
#, javascript-format
|
||||
msgid "The system will power off automatically in %d second."
|
||||
msgid_plural "The system will power off automatically in %d seconds."
|
||||
msgstr[0] "Το σύστημα θα τερματισθεί αυτόματα σε %d δευτερόλεπτο."
|
||||
msgstr[1] "Το σύστημα θα τερματισθεί αυτόματα σε %d δευτερόλεπτα."
|
||||
msgstr[0] "Το σύστημα θα τερματιστεί αυτόματα σε %d δευτερόλεπτο."
|
||||
msgstr[1] "Το σύστημα θα τερματιστεί αυτόματα σε %d δευτερόλεπτα."
|
||||
|
||||
#: ../js/ui/endSessionDialog.js:93
|
||||
msgctxt "checkbox"
|
||||
@@ -1137,11 +1137,11 @@ msgstr ""
|
||||
#: ../js/ui/endSessionDialog.js:332
|
||||
msgid "Some applications are busy or have unsaved work."
|
||||
msgstr ""
|
||||
"Κάποιες εφαρμογές είναι απασχολημένες ή έχουν εργασία που δεν αποθηκεύθηκε."
|
||||
"Κάποιες εφαρμογές είναι απασχολημένες ή έχουν εργασία που δεν αποθηκεύτηκε."
|
||||
|
||||
#: ../js/ui/endSessionDialog.js:339
|
||||
msgid "Other users are logged in."
|
||||
msgstr "Είναι συνδεδεμένοι άλλοι χρήστες."
|
||||
msgstr "Είναι συνδεμένοι άλλοι χρήστες."
|
||||
|
||||
#. Translators: Remote here refers to a remote session, like a ssh login */
|
||||
#: ../js/ui/endSessionDialog.js:618
|
||||
@@ -1168,26 +1168,25 @@ msgstr "Λήψη και εγκατάσταση του “%s” από το exten
|
||||
msgid "Keyboard"
|
||||
msgstr "Πληκτρολόγιο"
|
||||
|
||||
#: ../js/ui/lookingGlass.js:643
|
||||
#: ../js/ui/lookingGlass.js:641
|
||||
msgid "No extensions installed"
|
||||
msgstr "Δεν υπάρχουν εγκατεστημένες επεκτάσεις"
|
||||
|
||||
#. Translators: argument is an extension UUID. */
|
||||
#: ../js/ui/lookingGlass.js:697
|
||||
#: ../js/ui/lookingGlass.js:695
|
||||
#, javascript-format
|
||||
msgid "%s has not emitted any errors."
|
||||
msgstr "Το %s δεν έδωσε σφάλματα."
|
||||
|
||||
#: ../js/ui/lookingGlass.js:703
|
||||
#: ../js/ui/lookingGlass.js:701
|
||||
msgid "Hide Errors"
|
||||
msgstr "Απόκρυψη σφαλμάτων"
|
||||
|
||||
#: ../js/ui/lookingGlass.js:707 ../js/ui/lookingGlass.js:767
|
||||
#: ../js/ui/lookingGlass.js:705 ../js/ui/lookingGlass.js:765
|
||||
msgid "Show Errors"
|
||||
msgstr "Εμφάνιση σφαλμάτων"
|
||||
|
||||
#: ../js/ui/lookingGlass.js:716 ../js/ui/status/location.js:59
|
||||
#: ../js/ui/status/location.js:167
|
||||
#: ../js/ui/lookingGlass.js:714
|
||||
msgid "Enabled"
|
||||
msgstr "Ενεργοποιημένο"
|
||||
|
||||
@@ -1195,64 +1194,64 @@ msgstr "Ενεργοποιημένο"
|
||||
#. because it's disabled by rfkill (airplane mode) */
|
||||
#. translators:
|
||||
#. * The device has been disabled
|
||||
#: ../js/ui/lookingGlass.js:719 ../js/ui/status/location.js:164
|
||||
#: ../js/ui/status/network.js:555 ../src/gvc/gvc-mixer-control.c:1830
|
||||
#: ../js/ui/lookingGlass.js:717 ../js/ui/status/network.js:560
|
||||
#: ../src/gvc/gvc-mixer-control.c:1830
|
||||
msgid "Disabled"
|
||||
msgstr "Απενεργοποιημένο"
|
||||
|
||||
#: ../js/ui/lookingGlass.js:721
|
||||
#: ../js/ui/lookingGlass.js:719
|
||||
msgid "Error"
|
||||
msgstr "Σφάλμα"
|
||||
|
||||
#: ../js/ui/lookingGlass.js:723
|
||||
#: ../js/ui/lookingGlass.js:721
|
||||
msgid "Out of date"
|
||||
msgstr "Μη ενημερωμένο"
|
||||
|
||||
#: ../js/ui/lookingGlass.js:725
|
||||
#: ../js/ui/lookingGlass.js:723
|
||||
msgid "Downloading"
|
||||
msgstr "Γίνεται λήψη"
|
||||
|
||||
#: ../js/ui/lookingGlass.js:749
|
||||
#: ../js/ui/lookingGlass.js:747
|
||||
msgid "View Source"
|
||||
msgstr "Προβολή πηγής"
|
||||
|
||||
#: ../js/ui/lookingGlass.js:758
|
||||
#: ../js/ui/lookingGlass.js:756
|
||||
msgid "Web Page"
|
||||
msgstr "Ιστοσελίδα"
|
||||
|
||||
#: ../js/ui/messageTray.js:1326
|
||||
#: ../js/ui/messageTray.js:1324
|
||||
msgid "Open"
|
||||
msgstr "Άνοιγμα"
|
||||
|
||||
#: ../js/ui/messageTray.js:1333
|
||||
#: ../js/ui/messageTray.js:1331
|
||||
msgid "Remove"
|
||||
msgstr "Αφαίρεση"
|
||||
|
||||
#: ../js/ui/messageTray.js:1630
|
||||
#: ../js/ui/messageTray.js:1628
|
||||
msgid "Notifications"
|
||||
msgstr "Ειδοποιήσεις"
|
||||
|
||||
#: ../js/ui/messageTray.js:1637
|
||||
#: ../js/ui/messageTray.js:1635
|
||||
msgid "Clear Messages"
|
||||
msgstr "Καθαρισμός μηνυμάτων"
|
||||
|
||||
#: ../js/ui/messageTray.js:1656
|
||||
#: ../js/ui/messageTray.js:1654
|
||||
msgid "Notification Settings"
|
||||
msgstr "Ρυθμίσεις ειδοποιήσεων"
|
||||
|
||||
#: ../js/ui/messageTray.js:1709
|
||||
#: ../js/ui/messageTray.js:1707
|
||||
msgid "Tray Menu"
|
||||
msgstr "Μενού περιοχής ειδοποιήσεων"
|
||||
|
||||
#: ../js/ui/messageTray.js:1926
|
||||
#: ../js/ui/messageTray.js:1924
|
||||
msgid "No Messages"
|
||||
msgstr "Κανένα μήνυμα"
|
||||
|
||||
#: ../js/ui/messageTray.js:1964
|
||||
#: ../js/ui/messageTray.js:1962
|
||||
msgid "Message Tray"
|
||||
msgstr "Περιοχή ειδοποιήσεων μηνυμάτων"
|
||||
|
||||
#: ../js/ui/messageTray.js:2962
|
||||
#: ../js/ui/messageTray.js:2946
|
||||
msgid "System Information"
|
||||
msgstr "Πληροφορίες συστήματος"
|
||||
|
||||
@@ -1268,11 +1267,11 @@ msgid_plural "%d new messages"
|
||||
msgstr[0] "%d νέο μήνυμα"
|
||||
msgstr[1] "%d νέα μηνύματα"
|
||||
|
||||
#: ../js/ui/overview.js:84
|
||||
#: ../js/ui/overview.js:83
|
||||
msgid "Undo"
|
||||
msgstr "Αναίρεση"
|
||||
|
||||
#: ../js/ui/overview.js:124
|
||||
#: ../js/ui/overview.js:123
|
||||
msgid "Overview"
|
||||
msgstr "Επισκόπηση"
|
||||
|
||||
@@ -1280,7 +1279,7 @@ msgstr "Επισκόπηση"
|
||||
#. in the search entry when no search is
|
||||
#. active; it should not exceed ~30
|
||||
#. characters. */
|
||||
#: ../js/ui/overview.js:250
|
||||
#: ../js/ui/overview.js:257
|
||||
msgid "Type to search…"
|
||||
msgstr "Πληκτρολογήστε για αναζήτηση…"
|
||||
|
||||
@@ -1314,7 +1313,7 @@ msgstr "Κλείσιμο"
|
||||
#. long format */
|
||||
#: ../js/ui/screenShield.js:88
|
||||
msgid "%A, %B %d"
|
||||
msgstr "%A, %d %B"
|
||||
msgstr "%A, %B %d"
|
||||
|
||||
#: ../js/ui/screenShield.js:153
|
||||
#, javascript-format
|
||||
@@ -1323,27 +1322,27 @@ msgid_plural "%d new notifications"
|
||||
msgstr[0] "%d νέα ειδοποίηση"
|
||||
msgstr[1] "%d νέες ειδοποιήσεις"
|
||||
|
||||
#: ../js/ui/screenShield.js:474 ../js/ui/status/system.js:342
|
||||
#: ../js/ui/screenShield.js:473 ../js/ui/status/system.js:342
|
||||
msgid "Lock"
|
||||
msgstr "Κλείδωμα"
|
||||
|
||||
#: ../js/ui/screenShield.js:708
|
||||
#: ../js/ui/screenShield.js:707
|
||||
msgid "GNOME needs to lock the screen"
|
||||
msgstr "Το GNOME χρειάζεται να κλειδώσει την οθόνη"
|
||||
|
||||
#: ../js/ui/screenShield.js:835 ../js/ui/screenShield.js:1309
|
||||
#: ../js/ui/screenShield.js:834 ../js/ui/screenShield.js:1301
|
||||
msgid "Unable to lock"
|
||||
msgstr "Αδυναμία κλειδώματος"
|
||||
|
||||
#: ../js/ui/screenShield.js:836 ../js/ui/screenShield.js:1310
|
||||
#: ../js/ui/screenShield.js:835 ../js/ui/screenShield.js:1302
|
||||
msgid "Lock was blocked by an application"
|
||||
msgstr "Το κλείδωμα εμποδίσθηκε από μια εφαρμογή"
|
||||
msgstr "Το κλείδωμα εμποδίστηκε από μια εφαρμογή"
|
||||
|
||||
#: ../js/ui/search.js:603
|
||||
#: ../js/ui/search.js:589
|
||||
msgid "Searching…"
|
||||
msgstr "Αναζήτηση…"
|
||||
|
||||
#: ../js/ui/search.js:649
|
||||
#: ../js/ui/search.js:632
|
||||
msgid "No results."
|
||||
msgstr "Δε βρέθηκαν αποτελέσματα."
|
||||
|
||||
@@ -1415,29 +1414,30 @@ msgstr "Υψηλή αντίθεση"
|
||||
msgid "Large Text"
|
||||
msgstr "Μεγάλο κείμενο"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:49
|
||||
#: ../js/ui/status/bluetooth.js:48
|
||||
msgid "Bluetooth"
|
||||
msgstr "Bluetooth"
|
||||
|
||||
#: ../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:1345 ../js/ui/status/rfkill.js:85
|
||||
#: ../js/ui/status/bluetooth.js:50 ../js/ui/status/location.js:62
|
||||
#: ../js/ui/status/location.js:162 ../js/ui/status/network.js:151
|
||||
#: ../js/ui/status/network.js:328 ../js/ui/status/network.js:1235
|
||||
#: ../js/ui/status/network.js:1346 ../js/ui/status/rfkill.js:85
|
||||
#: ../js/ui/status/rfkill.js:105
|
||||
msgid "Turn Off"
|
||||
msgstr "Σβήσιμο"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:54
|
||||
#: ../js/ui/status/bluetooth.js:53
|
||||
msgid "Bluetooth Settings"
|
||||
msgstr "Ρυθμίσεις Bluetooth"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:104
|
||||
#: ../js/ui/status/bluetooth.js:100
|
||||
#, javascript-format
|
||||
msgid "%d Connected Device"
|
||||
msgid_plural "%d Connected Devices"
|
||||
msgstr[0] "%d συνδεδεμένη συσκευή"
|
||||
msgstr[1] "%d συνδεδεμένες συσκευές"
|
||||
msgstr[0] "%d συνδεμένη συσκευή"
|
||||
msgstr[1] "%d συνδεμένες συσκευές"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:106 ../js/ui/status/network.js:1262
|
||||
#: ../js/ui/status/bluetooth.js:102 ../js/ui/status/network.js:1263
|
||||
msgid "Not Connected"
|
||||
msgstr "Χωρίς σύνδεση"
|
||||
|
||||
@@ -1449,170 +1449,159 @@ msgstr "Φωτεινότητα"
|
||||
msgid "Show Keyboard Layout"
|
||||
msgstr "Εμφάνιση διάταξης πληκτρολογίου"
|
||||
|
||||
#: ../js/ui/status/location.js:53
|
||||
#: ../js/ui/status/location.js:52
|
||||
msgid "Location"
|
||||
msgstr "Θέση"
|
||||
|
||||
#: ../js/ui/status/location.js:60 ../js/ui/status/location.js:168
|
||||
msgid "Disable"
|
||||
msgstr "Απενεργοποίηση"
|
||||
|
||||
#: ../js/ui/status/location.js:165
|
||||
msgid "Enable"
|
||||
#: ../js/ui/status/location.js:61 ../js/ui/status/location.js:161
|
||||
#: ../js/ui/status/rfkill.js:84
|
||||
msgid "On"
|
||||
msgstr "Ενεργοποίηση"
|
||||
|
||||
#: ../js/ui/status/location.js:167
|
||||
msgid "In Use"
|
||||
msgstr "Σε χρήση"
|
||||
#: ../js/ui/status/location.js:158 ../js/ui/status/network.js:246
|
||||
#: ../js/ui/status/network.js:425 ../js/ui/status/network.js:1261
|
||||
msgid "Off"
|
||||
msgstr "Εκτός σύνδεσης"
|
||||
|
||||
#: ../js/ui/status/location.js:159 ../js/ui/status/network.js:1235
|
||||
msgid "Turn On"
|
||||
msgstr "Ενεργοποίηση"
|
||||
|
||||
#: ../js/ui/status/network.js:74
|
||||
msgid "<unknown>"
|
||||
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
|
||||
msgid "Connected"
|
||||
msgstr "Συνδέθηκε"
|
||||
|
||||
#. 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) */
|
||||
#: ../js/ui/status/network.js:426
|
||||
#: ../js/ui/status/network.js:431
|
||||
msgid "unmanaged"
|
||||
msgstr "χωρίς διαχείριση"
|
||||
msgstr "μη διαχειριζόμενες"
|
||||
|
||||
#: ../js/ui/status/network.js:428
|
||||
#: ../js/ui/status/network.js:433
|
||||
msgid "disconnecting..."
|
||||
msgstr "αποσύνδεση..."
|
||||
|
||||
#: ../js/ui/status/network.js:434 ../js/ui/status/network.js:1362
|
||||
#: ../js/ui/status/network.js:439 ../js/ui/status/network.js:1363
|
||||
msgid "connecting..."
|
||||
msgstr "σύνδεση..."
|
||||
|
||||
#. 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:1365
|
||||
#: ../js/ui/status/network.js:442 ../js/ui/status/network.js:1366
|
||||
msgid "authentication required"
|
||||
msgstr "απαιτείται πιστοποίηση"
|
||||
|
||||
#. Translators: this is for devices that require some kind of firmware or kernel
|
||||
#. module, which is missing */
|
||||
#: ../js/ui/status/network.js:445
|
||||
#: ../js/ui/status/network.js:450
|
||||
msgid "firmware missing"
|
||||
msgstr "έλλειψη λογισμικού υλικού (firmware)"
|
||||
msgstr "έλλειψη firmware"
|
||||
|
||||
#. Translators: this is for a network device that cannot be activated (for example it
|
||||
#. is disabled by rfkill, or it has no coverage */
|
||||
#: ../js/ui/status/network.js:449
|
||||
#: ../js/ui/status/network.js:454
|
||||
msgid "unavailable"
|
||||
msgstr "μη διαθέσιμο"
|
||||
|
||||
#: ../js/ui/status/network.js:451 ../js/ui/status/network.js:1367
|
||||
#: ../js/ui/status/network.js:456 ../js/ui/status/network.js:1368
|
||||
msgid "connection failed"
|
||||
msgstr "αποτυχία σύνδεσης"
|
||||
|
||||
#: ../js/ui/status/network.js:467
|
||||
#: ../js/ui/status/network.js:472
|
||||
msgid "Wired Settings"
|
||||
msgstr "Ενσύρματες ρυθμίσεις"
|
||||
|
||||
#: ../js/ui/status/network.js:509 ../js/ui/status/network.js:587
|
||||
#: ../js/ui/status/network.js:514 ../js/ui/status/network.js:592
|
||||
msgid "Mobile Broadband Settings"
|
||||
msgstr "Ρυθμίσεις Κινήτης Ευρυζωνικής"
|
||||
|
||||
#: ../js/ui/status/network.js:551 ../js/ui/status/network.js:1258
|
||||
#: ../js/ui/status/network.js:556 ../js/ui/status/network.js:1259
|
||||
msgid "Hardware Disabled"
|
||||
msgstr "Το Υλικό απενεργοποιήθηκε"
|
||||
msgstr "Το Υλικό Απενεργοποιήθηκε"
|
||||
|
||||
#: ../js/ui/status/network.js:595
|
||||
#: ../js/ui/status/network.js:600
|
||||
msgid "Use as Internet connection"
|
||||
msgstr "Χρήση με σύνδεση διαδικτύου"
|
||||
|
||||
#: ../js/ui/status/network.js:776
|
||||
#: ../js/ui/status/network.js:781
|
||||
msgid "Airplane Mode is On"
|
||||
msgstr "Η κατάσταση λειτουργίας αεροπλάνου είναι ενεργή"
|
||||
|
||||
#: ../js/ui/status/network.js:777
|
||||
#: ../js/ui/status/network.js:782
|
||||
msgid "Wi-Fi is disabled when airplane mode is on."
|
||||
msgstr ""
|
||||
"Η ασύρματη σύνδεση είναι ανενεργή όταν η λειτουργία αεροπλάνου είναι ενεργή."
|
||||
|
||||
#: ../js/ui/status/network.js:778
|
||||
#: ../js/ui/status/network.js:783
|
||||
msgid "Turn Off Airplane Mode"
|
||||
msgstr "Απενεργοποίηση της κατάστασης λειτουργίας αεροπλάνου"
|
||||
|
||||
#: ../js/ui/status/network.js:787
|
||||
#: ../js/ui/status/network.js:792
|
||||
msgid "Wi-Fi is Off"
|
||||
msgstr "Το ασύρματο δίκτυο είναι ανενεργό"
|
||||
|
||||
#: ../js/ui/status/network.js:788
|
||||
#: ../js/ui/status/network.js:793
|
||||
msgid "Wi-Fi needs to be turned on in order to connect to a network."
|
||||
msgstr ""
|
||||
"Το ασύρματο δίκτυο χρειάζεται να ενεργοποιηθεί για να συνδεθείτε με ένα "
|
||||
"δίκτυο."
|
||||
|
||||
#: ../js/ui/status/network.js:789
|
||||
#: ../js/ui/status/network.js:794
|
||||
msgid "Turn On Wi-Fi"
|
||||
msgstr "Ενεργοποίηση του ασυρμάτου δικτύου Wi-Fi"
|
||||
msgstr "Ενεργοποιήστε το ασύρματο δικτύο"
|
||||
|
||||
#: ../js/ui/status/network.js:814
|
||||
#: ../js/ui/status/network.js:819
|
||||
msgid "Wi-Fi Networks"
|
||||
msgstr "Δίκτυα Wi-Fi"
|
||||
|
||||
#: ../js/ui/status/network.js:816
|
||||
#: ../js/ui/status/network.js:821
|
||||
msgid "Select a network"
|
||||
msgstr "Επιλογή δικτύου"
|
||||
|
||||
#: ../js/ui/status/network.js:845
|
||||
#: ../js/ui/status/network.js:850
|
||||
msgid "No Networks"
|
||||
msgstr "Χωρίς δίκτυα"
|
||||
|
||||
#: ../js/ui/status/network.js:866 ../js/ui/status/rfkill.js:103
|
||||
#: ../js/ui/status/network.js:871 ../js/ui/status/rfkill.js:103
|
||||
msgid "Use hardware switch to turn off"
|
||||
msgstr "Χρήση διακόπτη υλικού για τερματισμό"
|
||||
msgstr "Χρησιμοποιήστε διακόπτη υλικού για τερματισμό"
|
||||
|
||||
#: ../js/ui/status/network.js:1136
|
||||
#: ../js/ui/status/network.js:1141
|
||||
msgid "Select Network"
|
||||
msgstr "Επιλογή δικτύου"
|
||||
|
||||
#: ../js/ui/status/network.js:1142
|
||||
#: ../js/ui/status/network.js:1147
|
||||
msgid "Wi-Fi Settings"
|
||||
msgstr "Ρυθμίσεις Wi-Fi"
|
||||
|
||||
#: ../js/ui/status/network.js:1234
|
||||
msgid "Turn On"
|
||||
msgstr "Ενεργοποίηση"
|
||||
|
||||
#: ../js/ui/status/network.js:1251
|
||||
#: ../js/ui/status/network.js:1252
|
||||
msgid "Hotspot Active"
|
||||
msgstr "Ενεργό θερμό σημείο"
|
||||
|
||||
#: ../js/ui/status/network.js:1254
|
||||
#: ../js/ui/status/network.js:1255
|
||||
msgid "Connecting"
|
||||
msgstr "Συνδέεται"
|
||||
|
||||
#: ../js/ui/status/network.js:1433 ../js/ui/status/rfkill.js:88
|
||||
#: ../js/ui/status/network.js:1434 ../js/ui/status/rfkill.js:88
|
||||
msgid "Network Settings"
|
||||
msgstr "Ρυθμίσεις δικτύου"
|
||||
|
||||
#: ../js/ui/status/network.js:1435
|
||||
#: ../js/ui/status/network.js:1436
|
||||
msgid "VPN Settings"
|
||||
msgstr "Ρυθμίσεις VPN"
|
||||
|
||||
#: ../js/ui/status/network.js:1454
|
||||
#: ../js/ui/status/network.js:1455
|
||||
msgid "VPN"
|
||||
msgstr "VPN"
|
||||
|
||||
#: ../js/ui/status/network.js:1607
|
||||
#: ../js/ui/status/network.js:1598
|
||||
msgid "Network Manager"
|
||||
msgstr "Διαχειριστής δικτύου"
|
||||
|
||||
#: ../js/ui/status/network.js:1646
|
||||
#: ../js/ui/status/network.js:1637
|
||||
msgid "Connection failed"
|
||||
msgstr "Αποτυχία σύνδεσης"
|
||||
|
||||
#: ../js/ui/status/network.js:1647
|
||||
#: ../js/ui/status/network.js:1638
|
||||
msgid "Activation of network connection failed"
|
||||
msgstr "Απέτυχε η ενεργοποίηση της σύνδεσης δικτύου"
|
||||
|
||||
@@ -1650,10 +1639,6 @@ msgstr "Μπαταρία"
|
||||
msgid "Airplane Mode"
|
||||
msgstr "Κατάσταση λειτουργίας αεροπλάνου"
|
||||
|
||||
#: ../js/ui/status/rfkill.js:84
|
||||
msgid "On"
|
||||
msgstr "Ενεργοποίηση"
|
||||
|
||||
#: ../js/ui/status/system.js:314
|
||||
msgid "Switch User"
|
||||
msgstr "Αλλαγή χρήστη"
|
||||
@@ -1767,8 +1752,8 @@ msgstr ""
|
||||
#: ../src/main.c:361
|
||||
msgid "Use a specific mode, e.g. \"gdm\" for login screen"
|
||||
msgstr ""
|
||||
"Χρήση μιας συγκεκριμένης κατάστασης λειτουργίας, π.χ. \"gdm\" για την οθόνη "
|
||||
"σύνδεσης"
|
||||
"Χρησιμοποιήστε μια συγκεκριμένη κατάσταση λειτουργίας, π.χ. \"gdm\" για την "
|
||||
"οθόνη σύνδεσης"
|
||||
|
||||
#: ../src/main.c:367
|
||||
msgid "List possible modes"
|
||||
|
170
po/fi.po
170
po/fi.po
@@ -26,8 +26,8 @@ msgstr ""
|
||||
"Project-Id-Version: gnome-shell\n"
|
||||
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
|
||||
"shell&keywords=I18N+L10N&component=general\n"
|
||||
"POT-Creation-Date: 2014-03-05 20:31+0000\n"
|
||||
"PO-Revision-Date: 2014-03-05 22:43+0200\n"
|
||||
"POT-Creation-Date: 2014-02-24 08:30+0000\n"
|
||||
"PO-Revision-Date: 2014-02-24 21:20+0200\n"
|
||||
"Last-Translator: Jiri Grönroos <jiri.gronroos+l10n@iki.fi>\n"
|
||||
"Language-Team: suomi <gnome-fi-laatu@lists.sourceforge.net>\n"
|
||||
"Language: fi\n"
|
||||
@@ -100,9 +100,10 @@ msgstr ""
|
||||
"kautta."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:3
|
||||
#, fuzzy
|
||||
#| msgid "Uuids of extensions to enable"
|
||||
msgid "UUIDs of extensions to enable"
|
||||
msgstr "Käyttöön otettavien laajennusten UUID:t"
|
||||
msgstr "Käyttöön otettavien laajennosten UUID:t"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:4
|
||||
#, fuzzy
|
||||
@@ -124,7 +125,7 @@ msgstr ""
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:5
|
||||
msgid "Disables the validation of extension version compatibility"
|
||||
msgstr "Poistaa käytöstä laajennusten versioyhteensopivuuden tarkistuksen"
|
||||
msgstr ""
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:6
|
||||
msgid ""
|
||||
@@ -152,6 +153,7 @@ msgid "History for the looking glass dialog"
|
||||
msgstr "Historia näyttölasi-ikkunalle"
|
||||
|
||||
#: ../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."
|
||||
msgstr "Näytä aina \"Kirjaudu ulos\"-toiminto käyttäjävalikossa."
|
||||
|
||||
@@ -249,7 +251,7 @@ msgid ""
|
||||
"Configures the maximum level of location accuracy applications are allowed "
|
||||
"to see. Valid options are 'off' (disable location tracking), 'country', "
|
||||
"'city', 'neighborhood', 'street', and 'exact' (typically requires GPS "
|
||||
"receiver). Please keep in mind that this only controls what GeoClue will "
|
||||
"receiver). Please keep in mind that this only controls what Geoclue will "
|
||||
"allow applications to see and they can find user's location on their own "
|
||||
"using network resources (albeit with street-level accuracy at best)."
|
||||
msgstr ""
|
||||
@@ -322,7 +324,7 @@ msgstr "Valitse muokattava laajennus alta."
|
||||
#: ../js/gdm/authPrompt.js:147 ../js/ui/components/networkAgent.js:136
|
||||
#: ../js/ui/components/polkitAgent.js:166 ../js/ui/endSessionDialog.js:429
|
||||
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:399
|
||||
#: ../js/ui/status/network.js:873
|
||||
#: ../js/ui/status/network.js:883
|
||||
msgid "Cancel"
|
||||
msgstr "Peru"
|
||||
|
||||
@@ -380,6 +382,7 @@ msgstr "Komentoa ei voi jäsentää:"
|
||||
|
||||
#: ../js/misc/util.js:156
|
||||
#, javascript-format
|
||||
#| msgid "Execution of '%s' failed:"
|
||||
msgid "Execution of “%s” failed:"
|
||||
msgstr "Kohteen ”%s” suorittaminen epäonnistui:"
|
||||
|
||||
@@ -555,35 +558,35 @@ msgid "Next month"
|
||||
msgstr "Seuraava kuukausi"
|
||||
|
||||
#. Translators: Text to show if there are no events */
|
||||
#: ../js/ui/calendar.js:763
|
||||
#: ../js/ui/calendar.js:762
|
||||
msgid "Nothing Scheduled"
|
||||
msgstr "Ei merkintöjä"
|
||||
|
||||
#. Translators: Shown on calendar heading when selected day occurs on current year */
|
||||
#: ../js/ui/calendar.js:781
|
||||
#: ../js/ui/calendar.js:780
|
||||
msgctxt "calendar heading"
|
||||
msgid "%A, %B %d"
|
||||
msgstr "%A, %e. %Bta"
|
||||
|
||||
#. Translators: Shown on calendar heading when selected day occurs on different year */
|
||||
#: ../js/ui/calendar.js:784
|
||||
#: ../js/ui/calendar.js:783
|
||||
msgctxt "calendar heading"
|
||||
msgid "%A, %B %d, %Y"
|
||||
msgstr "%A, %e. %Bta %Y"
|
||||
|
||||
#: ../js/ui/calendar.js:795
|
||||
#: ../js/ui/calendar.js:794
|
||||
msgid "Today"
|
||||
msgstr "Tänään"
|
||||
|
||||
#: ../js/ui/calendar.js:799
|
||||
#: ../js/ui/calendar.js:798
|
||||
msgid "Tomorrow"
|
||||
msgstr "Huomenna"
|
||||
|
||||
#: ../js/ui/calendar.js:810
|
||||
#: ../js/ui/calendar.js:809
|
||||
msgid "This week"
|
||||
msgstr "Tällä viikolla"
|
||||
|
||||
#: ../js/ui/calendar.js:818
|
||||
#: ../js/ui/calendar.js:817
|
||||
msgid "Next week"
|
||||
msgstr "Ensi viikolla"
|
||||
|
||||
@@ -616,8 +619,8 @@ msgstr "Salasana:"
|
||||
msgid "Type again:"
|
||||
msgstr "Uudelleen:"
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:131 ../js/ui/status/network.js:240
|
||||
#: ../js/ui/status/network.js:317 ../js/ui/status/network.js:876
|
||||
#: ../js/ui/components/networkAgent.js:131 ../js/ui/status/network.js:250
|
||||
#: ../js/ui/status/network.js:327 ../js/ui/status/network.js:886
|
||||
msgid "Connect"
|
||||
msgstr "Yhdistä"
|
||||
|
||||
@@ -651,6 +654,9 @@ msgstr "Langaton verkko vaatii tunnistautumisen"
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:312
|
||||
#, javascript-format
|
||||
#| msgid ""
|
||||
#| "Passwords or encryption keys are required to access the wireless network "
|
||||
#| "'%s'."
|
||||
msgid ""
|
||||
"Passwords or encryption keys are required to access the wireless network "
|
||||
"“%s”."
|
||||
@@ -686,6 +692,7 @@ msgstr "Mobiililaajakaistan verkkosalasana"
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:339
|
||||
#, javascript-format
|
||||
#| msgid "A password is required to connect to '%s'."
|
||||
msgid "A password is required to connect to “%s”."
|
||||
msgstr "Salasana vaaditaan kohteeseen \"%s\" yhdistämiseksi."
|
||||
|
||||
@@ -735,18 +742,23 @@ msgstr "Vaimenna"
|
||||
|
||||
#. Translators: Time in 24h format */
|
||||
#: ../js/ui/components/telepathyClient.js:955
|
||||
#| msgctxt "event list time"
|
||||
#| msgid "%H∶%M"
|
||||
msgid "%H∶%M"
|
||||
msgstr "%H∶%M"
|
||||
|
||||
#. Translators: this is the word "Yesterday" followed by a
|
||||
#. time string in 24h format. i.e. "Yesterday, 14:30" */
|
||||
#: ../js/ui/components/telepathyClient.js:962
|
||||
#| msgid "<b>Yesterday</b>, <b>%H:%M</b>"
|
||||
msgid "Yesterday, %H∶%M"
|
||||
msgstr "Eilen, %H∶%M"
|
||||
|
||||
#. Translators: this is the week day name followed by a time
|
||||
#. string in 24h format. i.e. "Monday, 14:30" */
|
||||
#: ../js/ui/components/telepathyClient.js:969
|
||||
#| msgctxt "event list time"
|
||||
#| msgid "%H∶%M"
|
||||
msgid "%A, %H∶%M"
|
||||
msgstr "%A, %H∶%M"
|
||||
|
||||
@@ -754,6 +766,8 @@ msgstr "%A, %H∶%M"
|
||||
#. followed by a time string in 24h format.
|
||||
#. i.e. "May 25, 14:30" */
|
||||
#: ../js/ui/components/telepathyClient.js:976
|
||||
#| msgctxt "event list time"
|
||||
#| msgid "%H∶%M"
|
||||
msgid "%B %d, %H∶%M"
|
||||
msgstr "%e. %Bta, %H∶%M"
|
||||
|
||||
@@ -766,6 +780,8 @@ msgstr "%e. %Bta %Y, %H∶%M"
|
||||
|
||||
#. Translators: Time in 24h format */
|
||||
#: ../js/ui/components/telepathyClient.js:991
|
||||
#| msgctxt "event list time"
|
||||
#| msgid "%l∶%M %p"
|
||||
msgid "%l∶%M %p"
|
||||
msgstr "%l∶%M %p"
|
||||
|
||||
@@ -778,6 +794,7 @@ msgstr "Eilen, %l∶%M %p"
|
||||
#. Translators: this is the week day name followed by a time
|
||||
#. string in 12h format. i.e. "Monday, 2:30 pm" */
|
||||
#: ../js/ui/components/telepathyClient.js:1005
|
||||
#| msgid "%a %l:%M %p"
|
||||
msgid "%A, %l∶%M %p"
|
||||
msgstr "%A, %l∶%M %p"
|
||||
|
||||
@@ -995,22 +1012,22 @@ msgstr "Näytä sovellukset"
|
||||
msgid "Dash"
|
||||
msgstr "Pikavalikko"
|
||||
|
||||
#: ../js/ui/dateMenu.js:91
|
||||
#: ../js/ui/dateMenu.js:86
|
||||
msgid "Open Calendar"
|
||||
msgstr "Avaa kalenteri"
|
||||
|
||||
#: ../js/ui/dateMenu.js:95
|
||||
#: ../js/ui/dateMenu.js:90
|
||||
msgid "Open Clocks"
|
||||
msgstr "Avaa kellot"
|
||||
|
||||
#: ../js/ui/dateMenu.js:102
|
||||
#: ../js/ui/dateMenu.js:97
|
||||
msgid "Date & Time Settings"
|
||||
msgstr "Ajan & päiväyksen asetukset"
|
||||
|
||||
#. 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").
|
||||
#. */
|
||||
#: ../js/ui/dateMenu.js:192
|
||||
#: ../js/ui/dateMenu.js:187
|
||||
msgid "%A %B %e, %Y"
|
||||
msgstr "%A, %e. %Bta %Y"
|
||||
|
||||
@@ -1108,6 +1125,8 @@ msgstr[1] ""
|
||||
"sekunnin kuluttua."
|
||||
|
||||
#: ../js/ui/endSessionDialog.js:129
|
||||
#| msgctxt "button"
|
||||
#| msgid "Restart & Install"
|
||||
msgctxt "button"
|
||||
msgid "Restart & Install"
|
||||
msgstr "Käynnistä uudelleen ja asenna"
|
||||
@@ -1154,6 +1173,7 @@ msgstr "Asenna"
|
||||
|
||||
#: ../js/ui/extensionDownloader.js:204
|
||||
#, javascript-format
|
||||
#| msgid "Download and install '%s' from extensions.gnome.org?"
|
||||
msgid "Download and install “%s” from extensions.gnome.org?"
|
||||
msgstr "Ladataanko ja asennetaanko ”%s” sivustolta extensions.gnome.org?"
|
||||
|
||||
@@ -1187,7 +1207,7 @@ msgstr "Käytössä"
|
||||
#. because it's disabled by rfkill (airplane mode) */
|
||||
#. translators:
|
||||
#. * The device has been disabled
|
||||
#: ../js/ui/lookingGlass.js:717 ../js/ui/status/network.js:550
|
||||
#: ../js/ui/lookingGlass.js:717 ../js/ui/status/network.js:560
|
||||
#: ../src/gvc/gvc-mixer-control.c:1830
|
||||
msgid "Disabled"
|
||||
msgstr "Ei käytössä"
|
||||
@@ -1212,39 +1232,39 @@ msgstr "Näytä lähde"
|
||||
msgid "Web Page"
|
||||
msgstr "Verkkosivusto"
|
||||
|
||||
#: ../js/ui/messageTray.js:1326
|
||||
#: ../js/ui/messageTray.js:1324
|
||||
msgid "Open"
|
||||
msgstr "Avaa"
|
||||
|
||||
#: ../js/ui/messageTray.js:1333
|
||||
#: ../js/ui/messageTray.js:1331
|
||||
msgid "Remove"
|
||||
msgstr "Poista"
|
||||
|
||||
#: ../js/ui/messageTray.js:1630
|
||||
#: ../js/ui/messageTray.js:1628
|
||||
msgid "Notifications"
|
||||
msgstr "Ilmoitukset"
|
||||
|
||||
#: ../js/ui/messageTray.js:1637
|
||||
#: ../js/ui/messageTray.js:1635
|
||||
msgid "Clear Messages"
|
||||
msgstr "Tyhjennä viestit"
|
||||
|
||||
#: ../js/ui/messageTray.js:1656
|
||||
#: ../js/ui/messageTray.js:1654
|
||||
msgid "Notification Settings"
|
||||
msgstr "Ilmoitusasetukset"
|
||||
|
||||
#: ../js/ui/messageTray.js:1709
|
||||
#: ../js/ui/messageTray.js:1707
|
||||
msgid "Tray Menu"
|
||||
msgstr "Viestialuevalikko"
|
||||
|
||||
#: ../js/ui/messageTray.js:1926
|
||||
#: ../js/ui/messageTray.js:1924
|
||||
msgid "No Messages"
|
||||
msgstr "Ei viestejä"
|
||||
|
||||
#: ../js/ui/messageTray.js:1964
|
||||
#: ../js/ui/messageTray.js:1962
|
||||
msgid "Message Tray"
|
||||
msgstr "Viestialue"
|
||||
|
||||
#: ../js/ui/messageTray.js:2948
|
||||
#: ../js/ui/messageTray.js:2946
|
||||
msgid "System Information"
|
||||
msgstr "Järjestelmän tiedot"
|
||||
|
||||
@@ -1411,10 +1431,10 @@ msgstr "Suuri tekstin koko"
|
||||
msgid "Bluetooth"
|
||||
msgstr "Bluetooth"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:50 ../js/ui/status/location.js:59
|
||||
#: ../js/ui/status/location.js:159 ../js/ui/status/network.js:151
|
||||
#: ../js/ui/status/network.js:318 ../js/ui/status/network.js:1225
|
||||
#: ../js/ui/status/network.js:1336 ../js/ui/status/rfkill.js:85
|
||||
#: ../js/ui/status/bluetooth.js:50 ../js/ui/status/location.js:62
|
||||
#: ../js/ui/status/location.js:162 ../js/ui/status/network.js:151
|
||||
#: ../js/ui/status/network.js:328 ../js/ui/status/network.js:1235
|
||||
#: ../js/ui/status/network.js:1346 ../js/ui/status/rfkill.js:85
|
||||
#: ../js/ui/status/rfkill.js:105
|
||||
msgid "Turn Off"
|
||||
msgstr "Sammuta"
|
||||
@@ -1430,7 +1450,7 @@ msgid_plural "%d Connected Devices"
|
||||
msgstr[0] "%d yhdistetty laite"
|
||||
msgstr[1] "%d yhdistettyä laitetta"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:102 ../js/ui/status/network.js:1253
|
||||
#: ../js/ui/status/bluetooth.js:102 ../js/ui/status/network.js:1263
|
||||
msgid "Not Connected"
|
||||
msgstr "Ei yhdistetty"
|
||||
|
||||
@@ -1443,20 +1463,21 @@ msgid "Show Keyboard Layout"
|
||||
msgstr "Näytä näppäimistön asettelu"
|
||||
|
||||
#: ../js/ui/status/location.js:52
|
||||
#| msgid "Notifications"
|
||||
msgid "Location"
|
||||
msgstr "Sijainti"
|
||||
|
||||
#: ../js/ui/status/location.js:58 ../js/ui/status/location.js:158
|
||||
#: ../js/ui/status/location.js:61 ../js/ui/status/location.js:161
|
||||
#: ../js/ui/status/rfkill.js:84
|
||||
msgid "On"
|
||||
msgstr "Päällä"
|
||||
|
||||
#: ../js/ui/status/location.js:155 ../js/ui/status/network.js:415
|
||||
#: ../js/ui/status/network.js:1251 ../js/ui/status/network.js:1455
|
||||
#: ../js/ui/status/location.js:158 ../js/ui/status/network.js:246
|
||||
#: ../js/ui/status/network.js:425 ../js/ui/status/network.js:1261
|
||||
msgid "Off"
|
||||
msgstr "Pois"
|
||||
|
||||
#: ../js/ui/status/location.js:156 ../js/ui/status/network.js:1225
|
||||
#: ../js/ui/status/location.js:159 ../js/ui/status/network.js:1235
|
||||
msgid "Turn On"
|
||||
msgstr "Ota käyttöön"
|
||||
|
||||
@@ -1464,127 +1485,130 @@ msgstr "Ota käyttöön"
|
||||
msgid "<unknown>"
|
||||
msgstr "<tuntematon>"
|
||||
|
||||
#: ../js/ui/status/network.js:417
|
||||
#| msgid "Connect"
|
||||
msgid "Connected"
|
||||
msgstr "Yhdistetty"
|
||||
|
||||
#. 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) */
|
||||
#: ../js/ui/status/network.js:421
|
||||
#: ../js/ui/status/network.js:431
|
||||
msgid "unmanaged"
|
||||
msgstr "ei hallinnassa"
|
||||
|
||||
#: ../js/ui/status/network.js:423
|
||||
#: ../js/ui/status/network.js:433
|
||||
msgid "disconnecting..."
|
||||
msgstr "katkaistaan yhteyttä…"
|
||||
|
||||
#: ../js/ui/status/network.js:429 ../js/ui/status/network.js:1353
|
||||
#: ../js/ui/status/network.js:439 ../js/ui/status/network.js:1363
|
||||
msgid "connecting..."
|
||||
msgstr "yhdistetään…"
|
||||
|
||||
#. Translators: this is for network connections that require some kind of key or password */
|
||||
#: ../js/ui/status/network.js:432 ../js/ui/status/network.js:1356
|
||||
#: ../js/ui/status/network.js:442 ../js/ui/status/network.js:1366
|
||||
msgid "authentication required"
|
||||
msgstr "tunnistautuminen vaaditaan"
|
||||
|
||||
#. Translators: this is for devices that require some kind of firmware or kernel
|
||||
#. module, which is missing */
|
||||
#: ../js/ui/status/network.js:440
|
||||
#: ../js/ui/status/network.js:450
|
||||
msgid "firmware missing"
|
||||
msgstr "laiteohjelmisto puuttuu"
|
||||
|
||||
#. Translators: this is for a network device that cannot be activated (for example it
|
||||
#. is disabled by rfkill, or it has no coverage */
|
||||
#: ../js/ui/status/network.js:444
|
||||
#: ../js/ui/status/network.js:454
|
||||
msgid "unavailable"
|
||||
msgstr "ei käytettävissä"
|
||||
|
||||
#: ../js/ui/status/network.js:446 ../js/ui/status/network.js:1358
|
||||
#: ../js/ui/status/network.js:456 ../js/ui/status/network.js:1368
|
||||
msgid "connection failed"
|
||||
msgstr "yhteys katkesi"
|
||||
|
||||
#: ../js/ui/status/network.js:462
|
||||
#: ../js/ui/status/network.js:472
|
||||
#| msgid "Wi-Fi Settings"
|
||||
msgid "Wired Settings"
|
||||
msgstr "Kiinteän yhteyden asetukset"
|
||||
|
||||
#: ../js/ui/status/network.js:504 ../js/ui/status/network.js:582
|
||||
#: ../js/ui/status/network.js:514 ../js/ui/status/network.js:592
|
||||
msgid "Mobile Broadband Settings"
|
||||
msgstr "Mobiililaajakaistan asetukset"
|
||||
|
||||
#: ../js/ui/status/network.js:546 ../js/ui/status/network.js:1249
|
||||
#: ../js/ui/status/network.js:556 ../js/ui/status/network.js:1259
|
||||
#| msgid "hardware disabled"
|
||||
msgid "Hardware Disabled"
|
||||
msgstr "Laite on pois käytöstä"
|
||||
|
||||
#: ../js/ui/status/network.js:590
|
||||
#: ../js/ui/status/network.js:600
|
||||
msgid "Use as Internet connection"
|
||||
msgstr "Käytä internetyhteytenä"
|
||||
|
||||
#: ../js/ui/status/network.js:771
|
||||
#: ../js/ui/status/network.js:781
|
||||
#| msgid "Airplane Mode"
|
||||
msgid "Airplane Mode is On"
|
||||
msgstr "Lentokonetila on päällä"
|
||||
|
||||
#: ../js/ui/status/network.js:772
|
||||
#: ../js/ui/status/network.js:782
|
||||
msgid "Wi-Fi is disabled when airplane mode is on."
|
||||
msgstr "Wifi on pois päältä lentokonetilan ollessa päällä."
|
||||
|
||||
#: ../js/ui/status/network.js:773
|
||||
#: ../js/ui/status/network.js:783
|
||||
#| msgid "Airplane Mode"
|
||||
msgid "Turn Off Airplane Mode"
|
||||
msgstr "Käytä lentokonetilaa"
|
||||
|
||||
#: ../js/ui/status/network.js:782
|
||||
#: ../js/ui/status/network.js:792
|
||||
#| msgid "Wi-Fi Settings"
|
||||
msgid "Wi-Fi is Off"
|
||||
msgstr "Wifi on pois"
|
||||
|
||||
#: ../js/ui/status/network.js:783
|
||||
#: ../js/ui/status/network.js:793
|
||||
msgid "Wi-Fi needs to be turned on in order to connect to a network."
|
||||
msgstr "Wifin tulee olla päällä, jotta yhteys verkkoon on mahdollinen."
|
||||
|
||||
#: ../js/ui/status/network.js:784
|
||||
#: ../js/ui/status/network.js:794
|
||||
#| msgid "Turn On"
|
||||
msgid "Turn On Wi-Fi"
|
||||
msgstr "Ota wifi käyttöön"
|
||||
|
||||
#: ../js/ui/status/network.js:809
|
||||
#: ../js/ui/status/network.js:819
|
||||
msgid "Wi-Fi Networks"
|
||||
msgstr "Wifi-verkot"
|
||||
|
||||
#: ../js/ui/status/network.js:811
|
||||
#: ../js/ui/status/network.js:821
|
||||
msgid "Select a network"
|
||||
msgstr "Valitse verkko"
|
||||
|
||||
#: ../js/ui/status/network.js:840
|
||||
#: ../js/ui/status/network.js:850
|
||||
msgid "No Networks"
|
||||
msgstr "Ei verkkoja"
|
||||
|
||||
#: ../js/ui/status/network.js:861 ../js/ui/status/rfkill.js:103
|
||||
#: ../js/ui/status/network.js:871 ../js/ui/status/rfkill.js:103
|
||||
msgid "Use hardware switch to turn off"
|
||||
msgstr "Käytä laitepainiketta sammuttaaksesi"
|
||||
msgstr ""
|
||||
|
||||
#: ../js/ui/status/network.js:1131
|
||||
#: ../js/ui/status/network.js:1141
|
||||
msgid "Select Network"
|
||||
msgstr "Valitse verkko"
|
||||
|
||||
#: ../js/ui/status/network.js:1137
|
||||
#: ../js/ui/status/network.js:1147
|
||||
msgid "Wi-Fi Settings"
|
||||
msgstr "Wifin asetukset"
|
||||
|
||||
#: ../js/ui/status/network.js:1242
|
||||
#: ../js/ui/status/network.js:1252
|
||||
msgid "Hotspot Active"
|
||||
msgstr "Yhteyspiste aktiivisena"
|
||||
|
||||
#: ../js/ui/status/network.js:1245
|
||||
#: ../js/ui/status/network.js:1255
|
||||
#| msgid "Connection"
|
||||
msgid "Connecting"
|
||||
msgstr "Yhdistetään"
|
||||
|
||||
#: ../js/ui/status/network.js:1424 ../js/ui/status/rfkill.js:88
|
||||
#: ../js/ui/status/network.js:1434 ../js/ui/status/rfkill.js:88
|
||||
msgid "Network Settings"
|
||||
msgstr "Verkkoasetukset"
|
||||
|
||||
#: ../js/ui/status/network.js:1426
|
||||
#: ../js/ui/status/network.js:1436
|
||||
#| msgid "Settings"
|
||||
msgid "VPN Settings"
|
||||
msgstr "VPN-asetukset"
|
||||
|
||||
#: ../js/ui/status/network.js:1445
|
||||
#: ../js/ui/status/network.js:1455
|
||||
msgid "VPN"
|
||||
msgstr "VPN"
|
||||
|
||||
@@ -1684,6 +1708,7 @@ msgstr "Haku"
|
||||
|
||||
#: ../js/ui/windowAttentionHandler.js:19
|
||||
#, javascript-format
|
||||
#| msgid "'%s' is ready"
|
||||
msgid "“%s” is ready"
|
||||
msgstr "“%s” on valmis"
|
||||
|
||||
@@ -1753,6 +1778,7 @@ msgstr "Listaa mahdolliset tilat"
|
||||
|
||||
#: ../src/shell-app.c:666
|
||||
#, c-format
|
||||
#| msgid "Failed to launch '%s'"
|
||||
msgid "Failed to launch “%s”"
|
||||
msgstr "Sovelluksen ”%s” käynnistäminen epäonnistui"
|
||||
|
||||
|
293
po/ko.po
293
po/ko.po
@@ -18,8 +18,8 @@ msgstr ""
|
||||
"Project-Id-Version: gnome-shell\n"
|
||||
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
|
||||
"shell&keywords=I18N+L10N&component=general\n"
|
||||
"POT-Creation-Date: 2014-03-28 20:56+0000\n"
|
||||
"PO-Revision-Date: 2014-03-29 16:13+0900\n"
|
||||
"POT-Creation-Date: 2014-03-05 08:30+0000\n"
|
||||
"PO-Revision-Date: 2014-03-05 19:53+0900\n"
|
||||
"Last-Translator: Changwoo Ryu <cwryu@debian.org>\n"
|
||||
"Language-Team: GNOME Korea <gnome-kr@googlegroups.com>\n"
|
||||
"Language: Korean\n"
|
||||
@@ -108,10 +108,7 @@ msgid ""
|
||||
"GNOME Shell will only load extensions that claim to support the current "
|
||||
"running version. Enabling this option will disable this check and try to "
|
||||
"load all extensions regardless of the versions they claim to support."
|
||||
msgstr ""
|
||||
"그놈 셸에서 현재 실행 중인 버전을 지원하는 확장 기능만 읽어들입니다. 이 옵션"
|
||||
"을 사용하면 이 버전 검사를 하지 않고, 지원한다고 지정된 버전에 관계없이 모든 "
|
||||
"확장 기능을 읽어들입니다."
|
||||
msgstr "그놈 셸에서 현재 실행 중인 버전을 지원하는 확장 기능만 읽어들입니다. 이 옵션을 사용하면 이 버전 검사를 하지 않고, 지원한다고 지정된 버전에 관계없이 모든 확장 기능을 읽어들입니다."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:7
|
||||
msgid "List of desktop file IDs for favorite applications"
|
||||
@@ -139,9 +136,7 @@ msgstr "사용자 메뉴에 '로그아웃' 메뉴 항목을 항상 표시합니
|
||||
msgid ""
|
||||
"This key overrides the automatic hiding of the 'Log out' menu item in single-"
|
||||
"user, single-session situations."
|
||||
msgstr ""
|
||||
"이 키를 설정하면, 단일 사용자 및 단일 세션에서 '로그아웃' 메뉴 항목 자동 감추"
|
||||
"기 기능을 사용하지 않습니다."
|
||||
msgstr "이 키를 설정하면, 단일 사용자 및 단일 세션에서 '로그아웃' 메뉴 항목 자동 감추기 기능을 사용하지 않습니다."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:13
|
||||
msgid ""
|
||||
@@ -230,13 +225,7 @@ msgid ""
|
||||
"receiver). Please keep in mind that this only controls what GeoClue will "
|
||||
"allow applications to see and they can find user's location on their own "
|
||||
"using network resources (albeit with street-level accuracy at best)."
|
||||
msgstr ""
|
||||
"프로그램에서 확인할 수 있는 위치의 정확도 최대 단계를 설정합니다. 쓸 수 있는 "
|
||||
"값은 'off'(위치 추적 기능 사용하지 않음), 'country'(국가), 'city'(도시), "
|
||||
"'neighborhood'(이웃), 'street'(길), 'exact'(정확한 위치, 보통 GPS 리시버 필"
|
||||
"요)입니다. 단 이 옵션은 GeoClue를 사용하는 프로그램이 쓸 수 있는 위치 정보만 "
|
||||
"설정합니다. 그래서 응용 프로그램이 자체적으로 네트워크를 사용해 사용자 위치"
|
||||
"를 알아낼 수는 있습니다(이 경우 보통 길 위치 정도만 알아낼 수 있지만)."
|
||||
msgstr "프로그램에서 확인할 수 있는 위치의 정확도 최대 단계를 설정합니다. 쓸 수 있는 값은 'off'(위치 추적 기능 사용하지 않음), 'country'(국가), 'city'(도시), 'neighborhood'(이웃), 'street'(길), 'exact'(정확한 위치, 보통 GPS 리시버 필요)입니다. 단 이 옵션은 GeoClue를 사용하는 프로그램이 쓸 수 있는 위치 정보만 설정합니다. 그래서 응용 프로그램이 자체적으로 네트워크를 사용해 사용자 위치를 알아낼 수는 있습니다(이 경우 보통 길 위치 정도만 알아낼 수 있지만)."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:31
|
||||
msgid "The application icon mode."
|
||||
@@ -303,7 +292,7 @@ msgstr "위의 콤보상자를 사용해 설정할 확장을 선택하십시오.
|
||||
#: ../js/gdm/authPrompt.js:147 ../js/ui/components/networkAgent.js:136
|
||||
#: ../js/ui/components/polkitAgent.js:166 ../js/ui/endSessionDialog.js:429
|
||||
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:399
|
||||
#: ../js/ui/status/network.js:878
|
||||
#: ../js/ui/status/network.js:873
|
||||
msgid "Cancel"
|
||||
msgstr "취소"
|
||||
|
||||
@@ -321,25 +310,25 @@ msgctxt "button"
|
||||
msgid "Sign In"
|
||||
msgstr "로그인"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:271
|
||||
#: ../js/gdm/loginDialog.js:270
|
||||
msgid "Choose Session"
|
||||
msgstr "세션 선택"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:431
|
||||
#: ../js/gdm/loginDialog.js:430
|
||||
msgid "Not listed?"
|
||||
msgstr "목록에 없습니까?"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:614
|
||||
#: ../js/gdm/loginDialog.js:598
|
||||
#, javascript-format
|
||||
msgid "(e.g., user or %s)"
|
||||
msgstr "(예를 들어, 사용자 또는 %s)"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:619 ../js/ui/components/networkAgent.js:262
|
||||
#: ../js/gdm/loginDialog.js:603 ../js/ui/components/networkAgent.js:262
|
||||
#: ../js/ui/components/networkAgent.js:280
|
||||
msgid "Username: "
|
||||
msgstr "사용자 이름: "
|
||||
|
||||
#: ../js/gdm/loginDialog.js:920
|
||||
#: ../js/gdm/loginDialog.js:868
|
||||
msgid "Login Window"
|
||||
msgstr "로그인 창"
|
||||
|
||||
@@ -364,27 +353,27 @@ msgstr "명령어를 파싱할 수 없습니다:"
|
||||
msgid "Execution of “%s” failed:"
|
||||
msgstr "“%s” 실행이 실패했습니다:"
|
||||
|
||||
#: ../js/ui/appDisplay.js:636
|
||||
#: ../js/ui/appDisplay.js:629
|
||||
msgid "Frequently used applications will appear here"
|
||||
msgstr "자주 사용하는 프로그램이 여기 나타납니다"
|
||||
|
||||
#: ../js/ui/appDisplay.js:747
|
||||
#: ../js/ui/appDisplay.js:740
|
||||
msgid "Frequent"
|
||||
msgstr "자주"
|
||||
|
||||
#: ../js/ui/appDisplay.js:754
|
||||
#: ../js/ui/appDisplay.js:747
|
||||
msgid "All"
|
||||
msgstr "모두"
|
||||
|
||||
#: ../js/ui/appDisplay.js:1566
|
||||
#: ../js/ui/appDisplay.js:1552
|
||||
msgid "New Window"
|
||||
msgstr "새 창"
|
||||
|
||||
#: ../js/ui/appDisplay.js:1588 ../js/ui/dash.js:285
|
||||
#: ../js/ui/appDisplay.js:1574 ../js/ui/dash.js:285
|
||||
msgid "Remove from Favorites"
|
||||
msgstr "즐겨찾기에서 제거"
|
||||
|
||||
#: ../js/ui/appDisplay.js:1594
|
||||
#: ../js/ui/appDisplay.js:1580
|
||||
msgid "Add to Favorites"
|
||||
msgstr "즐겨찾기에 추가"
|
||||
|
||||
@@ -528,44 +517,44 @@ msgstr "토"
|
||||
msgid "calendar:MY"
|
||||
msgstr "calendar:YM"
|
||||
|
||||
#: ../js/ui/calendar.js:450
|
||||
#: ../js/ui/calendar.js:446
|
||||
msgid "Previous month"
|
||||
msgstr "이전 달"
|
||||
|
||||
#: ../js/ui/calendar.js:460
|
||||
#: ../js/ui/calendar.js:456
|
||||
msgid "Next month"
|
||||
msgstr "다음 달"
|
||||
|
||||
#. Translators: Text to show if there are no events */
|
||||
#: ../js/ui/calendar.js:772
|
||||
#: ../js/ui/calendar.js:762
|
||||
msgid "Nothing Scheduled"
|
||||
msgstr "일정이 없습니다"
|
||||
|
||||
#. Translators: Shown on calendar heading when selected day occurs on current year */
|
||||
#: ../js/ui/calendar.js:790
|
||||
#: ../js/ui/calendar.js:780
|
||||
msgctxt "calendar heading"
|
||||
msgid "%A, %B %d"
|
||||
msgstr "%B %d일 %A"
|
||||
|
||||
#. Translators: Shown on calendar heading when selected day occurs on different year */
|
||||
#: ../js/ui/calendar.js:793
|
||||
#: ../js/ui/calendar.js:783
|
||||
msgctxt "calendar heading"
|
||||
msgid "%A, %B %d, %Y"
|
||||
msgstr "%Y년 %B %d일 %A"
|
||||
|
||||
#: ../js/ui/calendar.js:804
|
||||
#: ../js/ui/calendar.js:794
|
||||
msgid "Today"
|
||||
msgstr "오늘"
|
||||
|
||||
#: ../js/ui/calendar.js:808
|
||||
#: ../js/ui/calendar.js:798
|
||||
msgid "Tomorrow"
|
||||
msgstr "내일"
|
||||
|
||||
#: ../js/ui/calendar.js:819
|
||||
#: ../js/ui/calendar.js:809
|
||||
msgid "This week"
|
||||
msgstr "이번주"
|
||||
|
||||
#: ../js/ui/calendar.js:827
|
||||
#: ../js/ui/calendar.js:817
|
||||
msgid "Next week"
|
||||
msgstr "다음주"
|
||||
|
||||
@@ -599,7 +588,7 @@ msgid "Type again:"
|
||||
msgstr "다시 입력하십시오:"
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:131 ../js/ui/status/network.js:240
|
||||
#: ../js/ui/status/network.js:322 ../js/ui/status/network.js:881
|
||||
#: ../js/ui/status/network.js:317 ../js/ui/status/network.js:876
|
||||
msgid "Connect"
|
||||
msgstr "연결"
|
||||
|
||||
@@ -802,13 +791,13 @@ msgstr "%s 님이 %s에 입장하도록 초대합니다"
|
||||
#: ../js/ui/components/telepathyClient.js:1164
|
||||
#: ../js/ui/components/telepathyClient.js:1199
|
||||
#: ../js/ui/components/telepathyClient.js:1233
|
||||
#: ../js/ui/components/telepathyClient.js:1291
|
||||
#: ../js/ui/components/telepathyClient.js:1290
|
||||
msgid "Decline"
|
||||
msgstr "거부"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1170
|
||||
#: ../js/ui/components/telepathyClient.js:1239
|
||||
#: ../js/ui/components/telepathyClient.js:1296
|
||||
#: ../js/ui/components/telepathyClient.js:1295
|
||||
msgid "Accept"
|
||||
msgstr "허용"
|
||||
|
||||
@@ -845,97 +834,97 @@ msgstr "%s님이 %s 파일을 보냅니다"
|
||||
msgid "%s would like permission to see when you are online"
|
||||
msgstr "연결 상태인지 알 수 있는 권한을 %s님이 요청합니다"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1342
|
||||
#: ../js/ui/components/telepathyClient.js:1341
|
||||
msgid "Network error"
|
||||
msgstr "네트워크 오류"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1344
|
||||
#: ../js/ui/components/telepathyClient.js:1343
|
||||
msgid "Authentication failed"
|
||||
msgstr "인증이 실패했습니다"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1346
|
||||
#: ../js/ui/components/telepathyClient.js:1345
|
||||
msgid "Encryption error"
|
||||
msgstr "암호화 오류"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1348
|
||||
#: ../js/ui/components/telepathyClient.js:1347
|
||||
msgid "Certificate not provided"
|
||||
msgstr "인증서가 없습니다"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1350
|
||||
#: ../js/ui/components/telepathyClient.js:1349
|
||||
msgid "Certificate untrusted"
|
||||
msgstr "인증서를 신뢰할 수 없습니다"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1352
|
||||
#: ../js/ui/components/telepathyClient.js:1351
|
||||
msgid "Certificate expired"
|
||||
msgstr "인증서가 만료되었습니다"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1354
|
||||
#: ../js/ui/components/telepathyClient.js:1353
|
||||
msgid "Certificate not activated"
|
||||
msgstr "인증서를 활성화하지 않았습니다"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1356
|
||||
#: ../js/ui/components/telepathyClient.js:1355
|
||||
msgid "Certificate hostname mismatch"
|
||||
msgstr "인증서 호스트 이름이 맞지 않습니다"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1358
|
||||
#: ../js/ui/components/telepathyClient.js:1357
|
||||
msgid "Certificate fingerprint mismatch"
|
||||
msgstr "인증서 핑거프린트가 맞지 않습니다"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1360
|
||||
#: ../js/ui/components/telepathyClient.js:1359
|
||||
msgid "Certificate self-signed"
|
||||
msgstr "인증서가 자기 서명한 인증서입니다"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1362
|
||||
#: ../js/ui/components/telepathyClient.js:1361
|
||||
msgid "Status is set to offline"
|
||||
msgstr "상태를 오프라인으로 설정"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1364
|
||||
#: ../js/ui/components/telepathyClient.js:1363
|
||||
msgid "Encryption is not available"
|
||||
msgstr "암호화를 사용할 수 없습니다"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1366
|
||||
#: ../js/ui/components/telepathyClient.js:1365
|
||||
msgid "Certificate is invalid"
|
||||
msgstr "인증서가 올바르지 않습니다"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1368
|
||||
#: ../js/ui/components/telepathyClient.js:1367
|
||||
msgid "Connection has been refused"
|
||||
msgstr "연결이 거부되었습니다"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1370
|
||||
#: ../js/ui/components/telepathyClient.js:1369
|
||||
msgid "Connection can't be established"
|
||||
msgstr "연결할 수 없습니다"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1372
|
||||
#: ../js/ui/components/telepathyClient.js:1371
|
||||
msgid "Connection has been lost"
|
||||
msgstr "연결이 끊어졌습니다"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1374
|
||||
#: ../js/ui/components/telepathyClient.js:1373
|
||||
msgid "This account is already connected to the server"
|
||||
msgstr "이 계정은 이미 서버에 연결했습니다"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1376
|
||||
#: ../js/ui/components/telepathyClient.js:1375
|
||||
msgid ""
|
||||
"Connection has been replaced by a new connection using the same resource"
|
||||
msgstr "같은 자원을 사용하는 새로운 연결로 바꾸었습니다"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1378
|
||||
#: ../js/ui/components/telepathyClient.js:1377
|
||||
msgid "The account already exists on the server"
|
||||
msgstr "계정이 이미 서버에 있습니다"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1380
|
||||
#: ../js/ui/components/telepathyClient.js:1379
|
||||
msgid "Server is currently too busy to handle the connection"
|
||||
msgstr "서버가 처리할 작업이 많아 연결을 처리할 수 없습니다"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1382
|
||||
#: ../js/ui/components/telepathyClient.js:1381
|
||||
msgid "Certificate has been revoked"
|
||||
msgstr "인증서를 철회했습니다"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1384
|
||||
#: ../js/ui/components/telepathyClient.js:1383
|
||||
msgid ""
|
||||
"Certificate uses an insecure cipher algorithm or is cryptographically weak"
|
||||
msgstr "인증서가 보안에 취약한 알고리즘을 사용하거나 암호화 기능이 취약합니다."
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1386
|
||||
#: ../js/ui/components/telepathyClient.js:1385
|
||||
msgid ""
|
||||
"The length of the server certificate, or the depth of the server certificate "
|
||||
"chain, exceed the limits imposed by the cryptography library"
|
||||
@@ -943,22 +932,22 @@ msgstr ""
|
||||
"서버 인증서의 길이, 또는 서버 인증서 체인의 단계가 암호화 라이브러리의 제한"
|
||||
"을 넘어갑니다."
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1388
|
||||
#: ../js/ui/components/telepathyClient.js:1387
|
||||
msgid "Internal error"
|
||||
msgstr "내부 오류"
|
||||
|
||||
#. translators: argument is the account name, like
|
||||
#. * name@jabber.org for example. */
|
||||
#: ../js/ui/components/telepathyClient.js:1398
|
||||
#: ../js/ui/components/telepathyClient.js:1397
|
||||
#, javascript-format
|
||||
msgid "Unable to connect to %s"
|
||||
msgstr "%s에 연결할 수 없습니다"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1403
|
||||
#: ../js/ui/components/telepathyClient.js:1402
|
||||
msgid "View account"
|
||||
msgstr "계정 보기"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1440
|
||||
#: ../js/ui/components/telepathyClient.js:1434
|
||||
msgid "Unknown reason"
|
||||
msgstr "알 수 없는 이유"
|
||||
|
||||
@@ -974,22 +963,22 @@ msgstr "프로그램 표시"
|
||||
msgid "Dash"
|
||||
msgstr "대시보드"
|
||||
|
||||
#: ../js/ui/dateMenu.js:91
|
||||
#: ../js/ui/dateMenu.js:86
|
||||
msgid "Open Calendar"
|
||||
msgstr "달력 열기"
|
||||
|
||||
#: ../js/ui/dateMenu.js:95
|
||||
#: ../js/ui/dateMenu.js:90
|
||||
msgid "Open Clocks"
|
||||
msgstr "시계 열기"
|
||||
|
||||
#: ../js/ui/dateMenu.js:102
|
||||
#: ../js/ui/dateMenu.js:97
|
||||
msgid "Date & Time Settings"
|
||||
msgstr "날짜 및 시각 설정"
|
||||
|
||||
#. 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").
|
||||
#. */
|
||||
#: ../js/ui/dateMenu.js:192
|
||||
#: ../js/ui/dateMenu.js:187
|
||||
msgid "%A %B %e, %Y"
|
||||
msgstr "%Y년 %B %e일 %A"
|
||||
|
||||
@@ -1121,33 +1110,31 @@ msgstr "설치"
|
||||
#: ../js/ui/extensionDownloader.js:204
|
||||
#, javascript-format
|
||||
msgid "Download and install “%s” from extensions.gnome.org?"
|
||||
msgstr ""
|
||||
"extensions.gnome.org 사이트에서 “%s” 확장을 다운로드해 설치하시겠습니까?"
|
||||
msgstr "extensions.gnome.org 사이트에서 “%s” 확장을 다운로드해 설치하시겠습니까?"
|
||||
|
||||
#: ../js/ui/keyboard.js:641 ../js/ui/status/keyboard.js:335
|
||||
msgid "Keyboard"
|
||||
msgstr "키보드"
|
||||
|
||||
#: ../js/ui/lookingGlass.js:643
|
||||
#: ../js/ui/lookingGlass.js:641
|
||||
msgid "No extensions installed"
|
||||
msgstr "확장을 설치하지 않았습니다"
|
||||
|
||||
#. Translators: argument is an extension UUID. */
|
||||
#: ../js/ui/lookingGlass.js:697
|
||||
#: ../js/ui/lookingGlass.js:695
|
||||
#, javascript-format
|
||||
msgid "%s has not emitted any errors."
|
||||
msgstr "%s에서 발생한 에러가 없습니다."
|
||||
|
||||
#: ../js/ui/lookingGlass.js:703
|
||||
#: ../js/ui/lookingGlass.js:701
|
||||
msgid "Hide Errors"
|
||||
msgstr "오류 숨기기"
|
||||
|
||||
#: ../js/ui/lookingGlass.js:707 ../js/ui/lookingGlass.js:767
|
||||
#: ../js/ui/lookingGlass.js:705 ../js/ui/lookingGlass.js:765
|
||||
msgid "Show Errors"
|
||||
msgstr "오류 보이기"
|
||||
|
||||
#: ../js/ui/lookingGlass.js:716 ../js/ui/status/location.js:59
|
||||
#: ../js/ui/status/location.js:167
|
||||
#: ../js/ui/lookingGlass.js:714
|
||||
msgid "Enabled"
|
||||
msgstr "사용"
|
||||
|
||||
@@ -1155,28 +1142,28 @@ msgstr "사용"
|
||||
#. because it's disabled by rfkill (airplane mode) */
|
||||
#. translators:
|
||||
#. * The device has been disabled
|
||||
#: ../js/ui/lookingGlass.js:719 ../js/ui/status/location.js:164
|
||||
#: ../js/ui/status/network.js:555 ../src/gvc/gvc-mixer-control.c:1830
|
||||
#: ../js/ui/lookingGlass.js:717 ../js/ui/status/network.js:550
|
||||
#: ../src/gvc/gvc-mixer-control.c:1830
|
||||
msgid "Disabled"
|
||||
msgstr "사용 않음"
|
||||
|
||||
#: ../js/ui/lookingGlass.js:721
|
||||
#: ../js/ui/lookingGlass.js:719
|
||||
msgid "Error"
|
||||
msgstr "오류"
|
||||
|
||||
#: ../js/ui/lookingGlass.js:723
|
||||
#: ../js/ui/lookingGlass.js:721
|
||||
msgid "Out of date"
|
||||
msgstr "오래 된 버전"
|
||||
|
||||
#: ../js/ui/lookingGlass.js:725
|
||||
#: ../js/ui/lookingGlass.js:723
|
||||
msgid "Downloading"
|
||||
msgstr "다운로드 중"
|
||||
|
||||
#: ../js/ui/lookingGlass.js:749
|
||||
#: ../js/ui/lookingGlass.js:747
|
||||
msgid "View Source"
|
||||
msgstr "소스 보기"
|
||||
|
||||
#: ../js/ui/lookingGlass.js:758
|
||||
#: ../js/ui/lookingGlass.js:756
|
||||
msgid "Web Page"
|
||||
msgstr "웹페이지"
|
||||
|
||||
@@ -1212,7 +1199,7 @@ msgstr "메시지 없음"
|
||||
msgid "Message Tray"
|
||||
msgstr "메시지 트레이"
|
||||
|
||||
#: ../js/ui/messageTray.js:2962
|
||||
#: ../js/ui/messageTray.js:2948
|
||||
msgid "System Information"
|
||||
msgstr "시스템 정보"
|
||||
|
||||
@@ -1227,11 +1214,11 @@ msgid "%d new message"
|
||||
msgid_plural "%d new messages"
|
||||
msgstr[0] "새 메시지 %d개"
|
||||
|
||||
#: ../js/ui/overview.js:84
|
||||
#: ../js/ui/overview.js:83
|
||||
msgid "Undo"
|
||||
msgstr "실행 취소"
|
||||
|
||||
#: ../js/ui/overview.js:124
|
||||
#: ../js/ui/overview.js:123
|
||||
msgid "Overview"
|
||||
msgstr "개요"
|
||||
|
||||
@@ -1239,7 +1226,7 @@ msgstr "개요"
|
||||
#. in the search entry when no search is
|
||||
#. active; it should not exceed ~30
|
||||
#. characters. */
|
||||
#: ../js/ui/overview.js:250
|
||||
#: ../js/ui/overview.js:257
|
||||
msgid "Type to search…"
|
||||
msgstr "검색하려면 입력하십시오…"
|
||||
|
||||
@@ -1281,27 +1268,27 @@ msgid "%d new notification"
|
||||
msgid_plural "%d new notifications"
|
||||
msgstr[0] "새 알림 %d개"
|
||||
|
||||
#: ../js/ui/screenShield.js:474 ../js/ui/status/system.js:342
|
||||
#: ../js/ui/screenShield.js:473 ../js/ui/status/system.js:342
|
||||
msgid "Lock"
|
||||
msgstr "잠그기"
|
||||
|
||||
#: ../js/ui/screenShield.js:708
|
||||
#: ../js/ui/screenShield.js:707
|
||||
msgid "GNOME needs to lock the screen"
|
||||
msgstr "그놈에서 화면을 잠궈야 합니다"
|
||||
|
||||
#: ../js/ui/screenShield.js:835 ../js/ui/screenShield.js:1309
|
||||
#: ../js/ui/screenShield.js:834 ../js/ui/screenShield.js:1301
|
||||
msgid "Unable to lock"
|
||||
msgstr "잠글 수 없습니다"
|
||||
|
||||
#: ../js/ui/screenShield.js:836 ../js/ui/screenShield.js:1310
|
||||
#: ../js/ui/screenShield.js:835 ../js/ui/screenShield.js:1302
|
||||
msgid "Lock was blocked by an application"
|
||||
msgstr "프로그램이 잠금을 막았습니다"
|
||||
|
||||
#: ../js/ui/search.js:603
|
||||
#: ../js/ui/search.js:589
|
||||
msgid "Searching…"
|
||||
msgstr "검색하는 중…"
|
||||
|
||||
#: ../js/ui/search.js:649
|
||||
#: ../js/ui/search.js:632
|
||||
msgid "No results."
|
||||
msgstr "결과가 없습니다."
|
||||
|
||||
@@ -1373,28 +1360,29 @@ msgstr "고대비"
|
||||
msgid "Large Text"
|
||||
msgstr "큰 글자"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:49
|
||||
#: ../js/ui/status/bluetooth.js:48
|
||||
msgid "Bluetooth"
|
||||
msgstr "블루투스"
|
||||
|
||||
#: ../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:1345 ../js/ui/status/rfkill.js:85
|
||||
#: ../js/ui/status/bluetooth.js:50 ../js/ui/status/location.js:59
|
||||
#: ../js/ui/status/location.js:159 ../js/ui/status/network.js:151
|
||||
#: ../js/ui/status/network.js:318 ../js/ui/status/network.js:1225
|
||||
#: ../js/ui/status/network.js:1336 ../js/ui/status/rfkill.js:85
|
||||
#: ../js/ui/status/rfkill.js:105
|
||||
msgid "Turn Off"
|
||||
msgstr "끄기"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:54
|
||||
#: ../js/ui/status/bluetooth.js:53
|
||||
msgid "Bluetooth Settings"
|
||||
msgstr "블루투스 설정"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:104
|
||||
#: ../js/ui/status/bluetooth.js:100
|
||||
#, javascript-format
|
||||
msgid "%d Connected Device"
|
||||
msgid_plural "%d Connected Devices"
|
||||
msgstr[0] "연결된 장치 %d개"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:106 ../js/ui/status/network.js:1262
|
||||
#: ../js/ui/status/bluetooth.js:102 ../js/ui/status/network.js:1253
|
||||
msgid "Not Connected"
|
||||
msgstr "연결되지 않음"
|
||||
|
||||
@@ -1406,167 +1394,160 @@ msgstr "밝기"
|
||||
msgid "Show Keyboard Layout"
|
||||
msgstr "키보드 배치 표시"
|
||||
|
||||
#: ../js/ui/status/location.js:53
|
||||
#: ../js/ui/status/location.js:52
|
||||
msgid "Location"
|
||||
msgstr "위치"
|
||||
|
||||
#: ../js/ui/status/location.js:60 ../js/ui/status/location.js:168
|
||||
msgid "Disable"
|
||||
msgstr "사용 않기"
|
||||
#: ../js/ui/status/location.js:58 ../js/ui/status/location.js:158
|
||||
#: ../js/ui/status/rfkill.js:84
|
||||
msgid "On"
|
||||
msgstr "켜기"
|
||||
|
||||
#: ../js/ui/status/location.js:165
|
||||
msgid "Enable"
|
||||
msgstr "사용"
|
||||
#: ../js/ui/status/location.js:155 ../js/ui/status/network.js:415
|
||||
#: ../js/ui/status/network.js:1251 ../js/ui/status/network.js:1455
|
||||
msgid "Off"
|
||||
msgstr "끄기"
|
||||
|
||||
#: ../js/ui/status/location.js:167
|
||||
msgid "In Use"
|
||||
msgstr "사용 중"
|
||||
#: ../js/ui/status/location.js:156 ../js/ui/status/network.js:1225
|
||||
msgid "Turn On"
|
||||
msgstr "켜기"
|
||||
|
||||
#: ../js/ui/status/network.js:74
|
||||
msgid "<unknown>"
|
||||
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:417
|
||||
msgid "Connected"
|
||||
msgstr "연결됨"
|
||||
|
||||
#. 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) */
|
||||
#: ../js/ui/status/network.js:426
|
||||
#: ../js/ui/status/network.js:421
|
||||
msgid "unmanaged"
|
||||
msgstr "관리되지 않음"
|
||||
|
||||
#: ../js/ui/status/network.js:428
|
||||
#: ../js/ui/status/network.js:423
|
||||
msgid "disconnecting..."
|
||||
msgstr "연결 끊는 중..."
|
||||
|
||||
#: ../js/ui/status/network.js:434 ../js/ui/status/network.js:1362
|
||||
#: ../js/ui/status/network.js:429 ../js/ui/status/network.js:1353
|
||||
msgid "connecting..."
|
||||
msgstr "연결하는 중..."
|
||||
|
||||
#. 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:1365
|
||||
#: ../js/ui/status/network.js:432 ../js/ui/status/network.js:1356
|
||||
msgid "authentication required"
|
||||
msgstr "인증 필요"
|
||||
|
||||
#. Translators: this is for devices that require some kind of firmware or kernel
|
||||
#. module, which is missing */
|
||||
#: ../js/ui/status/network.js:445
|
||||
#: ../js/ui/status/network.js:440
|
||||
msgid "firmware missing"
|
||||
msgstr "펌웨어 없음"
|
||||
|
||||
#. Translators: this is for a network device that cannot be activated (for example it
|
||||
#. is disabled by rfkill, or it has no coverage */
|
||||
#: ../js/ui/status/network.js:449
|
||||
#: ../js/ui/status/network.js:444
|
||||
msgid "unavailable"
|
||||
msgstr "사용 불가"
|
||||
|
||||
#: ../js/ui/status/network.js:451 ../js/ui/status/network.js:1367
|
||||
#: ../js/ui/status/network.js:446 ../js/ui/status/network.js:1358
|
||||
msgid "connection failed"
|
||||
msgstr "연결 실패"
|
||||
|
||||
#: ../js/ui/status/network.js:467
|
||||
#: ../js/ui/status/network.js:462
|
||||
msgid "Wired Settings"
|
||||
msgstr "유선 네트워크 설정"
|
||||
|
||||
#: ../js/ui/status/network.js:509 ../js/ui/status/network.js:587
|
||||
#: ../js/ui/status/network.js:504 ../js/ui/status/network.js:582
|
||||
msgid "Mobile Broadband Settings"
|
||||
msgstr "휴대전화 네트워크 설정"
|
||||
|
||||
#: ../js/ui/status/network.js:551 ../js/ui/status/network.js:1258
|
||||
#: ../js/ui/status/network.js:546 ../js/ui/status/network.js:1249
|
||||
msgid "Hardware Disabled"
|
||||
msgstr "하드웨어 사용 않음"
|
||||
|
||||
#: ../js/ui/status/network.js:595
|
||||
#: ../js/ui/status/network.js:590
|
||||
msgid "Use as Internet connection"
|
||||
msgstr "인터넷 연결에 사용"
|
||||
|
||||
#: ../js/ui/status/network.js:776
|
||||
#: ../js/ui/status/network.js:771
|
||||
msgid "Airplane Mode is On"
|
||||
msgstr "비행기 모드 켜짐"
|
||||
|
||||
#: ../js/ui/status/network.js:777
|
||||
#: ../js/ui/status/network.js:772
|
||||
msgid "Wi-Fi is disabled when airplane mode is on."
|
||||
msgstr "비행기 모드에서는 와이파이를 사용하지 않습니다."
|
||||
|
||||
#: ../js/ui/status/network.js:778
|
||||
#: ../js/ui/status/network.js:773
|
||||
msgid "Turn Off Airplane Mode"
|
||||
msgstr "비행기 모드 끄기"
|
||||
|
||||
#: ../js/ui/status/network.js:787
|
||||
#: ../js/ui/status/network.js:782
|
||||
msgid "Wi-Fi is Off"
|
||||
msgstr "와이파이 꺼짐"
|
||||
|
||||
#: ../js/ui/status/network.js:788
|
||||
#: ../js/ui/status/network.js:783
|
||||
msgid "Wi-Fi needs to be turned on in order to connect to a network."
|
||||
msgstr "네트워크에 연결하려면 와이파이를 켜야 합니다."
|
||||
|
||||
#: ../js/ui/status/network.js:789
|
||||
#: ../js/ui/status/network.js:784
|
||||
msgid "Turn On Wi-Fi"
|
||||
msgstr "와이파이 켜기"
|
||||
|
||||
#: ../js/ui/status/network.js:814
|
||||
#: ../js/ui/status/network.js:809
|
||||
msgid "Wi-Fi Networks"
|
||||
msgstr "와이파이 네트워크"
|
||||
|
||||
#: ../js/ui/status/network.js:816
|
||||
#: ../js/ui/status/network.js:811
|
||||
msgid "Select a network"
|
||||
msgstr "네트워크를 선택하십시오"
|
||||
|
||||
#: ../js/ui/status/network.js:845
|
||||
#: ../js/ui/status/network.js:840
|
||||
msgid "No Networks"
|
||||
msgstr "네트워크 없음"
|
||||
|
||||
#: ../js/ui/status/network.js:866 ../js/ui/status/rfkill.js:103
|
||||
#: ../js/ui/status/network.js:861 ../js/ui/status/rfkill.js:103
|
||||
msgid "Use hardware switch to turn off"
|
||||
msgstr "끄려면 하드웨어 스위치를 사용하십시오"
|
||||
|
||||
#: ../js/ui/status/network.js:1136
|
||||
#: ../js/ui/status/network.js:1131
|
||||
msgid "Select Network"
|
||||
msgstr "네트워크 선택"
|
||||
|
||||
#: ../js/ui/status/network.js:1142
|
||||
#: ../js/ui/status/network.js:1137
|
||||
msgid "Wi-Fi Settings"
|
||||
msgstr "와이파이 설정"
|
||||
|
||||
#: ../js/ui/status/network.js:1234
|
||||
msgid "Turn On"
|
||||
msgstr "켜기"
|
||||
|
||||
#: ../js/ui/status/network.js:1251
|
||||
#: ../js/ui/status/network.js:1242
|
||||
msgid "Hotspot Active"
|
||||
msgstr "핫스팟 사용 중"
|
||||
|
||||
#: ../js/ui/status/network.js:1254
|
||||
#: ../js/ui/status/network.js:1245
|
||||
msgid "Connecting"
|
||||
msgstr "연결하는 중"
|
||||
|
||||
#: ../js/ui/status/network.js:1433 ../js/ui/status/rfkill.js:88
|
||||
#: ../js/ui/status/network.js:1424 ../js/ui/status/rfkill.js:88
|
||||
msgid "Network Settings"
|
||||
msgstr "네트워크 설정"
|
||||
|
||||
#: ../js/ui/status/network.js:1435
|
||||
#: ../js/ui/status/network.js:1426
|
||||
msgid "VPN Settings"
|
||||
msgstr "가상사설망 설정"
|
||||
|
||||
#: ../js/ui/status/network.js:1454
|
||||
#: ../js/ui/status/network.js:1445
|
||||
msgid "VPN"
|
||||
msgstr "가상사설망"
|
||||
|
||||
#: ../js/ui/status/network.js:1607
|
||||
#: ../js/ui/status/network.js:1598
|
||||
msgid "Network Manager"
|
||||
msgstr "네트워크 관리"
|
||||
|
||||
#: ../js/ui/status/network.js:1646
|
||||
#: ../js/ui/status/network.js:1637
|
||||
msgid "Connection failed"
|
||||
msgstr "연결이 실패했습니다"
|
||||
|
||||
#: ../js/ui/status/network.js:1647
|
||||
#: ../js/ui/status/network.js:1638
|
||||
msgid "Activation of network connection failed"
|
||||
msgstr "네트워크 연결이 실패했습니다"
|
||||
|
||||
@@ -1604,10 +1585,6 @@ msgstr "배터리"
|
||||
msgid "Airplane Mode"
|
||||
msgstr "비행기 모드"
|
||||
|
||||
#: ../js/ui/status/rfkill.js:84
|
||||
msgid "On"
|
||||
msgstr "켜기"
|
||||
|
||||
#: ../js/ui/status/system.js:314
|
||||
msgid "Switch User"
|
||||
msgstr "사용자 바꾸기"
|
||||
|
190
po/nb.po
190
po/nb.po
@@ -8,8 +8,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: gnome-shell 3.11.x\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2014-03-18 22:49+0100\n"
|
||||
"PO-Revision-Date: 2014-03-18 22:52+0100\n"
|
||||
"POT-Creation-Date: 2014-03-05 06:45+0100\n"
|
||||
"PO-Revision-Date: 2014-03-05 06:47+0100\n"
|
||||
"Last-Translator: Kjartan Maraas <kmaraas@gnome.org>\n"
|
||||
"Language-Team: Norwegian bokmål <i18n-nb@lister.ping.uio.no>\n"
|
||||
"Language: \n"
|
||||
@@ -101,7 +101,7 @@ msgid ""
|
||||
"GNOME Shell will only load extensions that claim to support the current "
|
||||
"running version. Enabling this option will disable this check and try to "
|
||||
"load all extensions regardless of the versions they claim to support."
|
||||
msgstr "GNOME Shell vil kun laste utvidelser som hevder å støtte kjørende versjon. Hvis du slår på dette valget deaktiverer du denne sjekken og alle utvidelser vil lastes uavhengig av hvilke versjoner de hevder å støtte."
|
||||
msgstr ""
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:7
|
||||
msgid "List of desktop file IDs for favorite applications"
|
||||
@@ -131,12 +131,12 @@ msgstr "Alltid vis menyoppføringen «Logg ut» i brukermenyen."
|
||||
msgid ""
|
||||
"This key overrides the automatic hiding of the 'Log out' menu item in single-"
|
||||
"user, single-session situations."
|
||||
msgstr "Denne nøkkelen overstyrer skjuling av menyoppføringen «Logg ut» i situasjonen én bruker, én sesjon."
|
||||
msgstr ""
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:13
|
||||
msgid ""
|
||||
"Whether to remember password for mounting encrypted or remote filesystems"
|
||||
msgstr "Hvorvidt passord for eksterne eller krypterte filsystemer skal huskes."
|
||||
msgstr ""
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:14
|
||||
msgid ""
|
||||
@@ -283,7 +283,7 @@ msgstr "Velg en utvidelse som skal konfigureres med komboboksen over."
|
||||
#: ../js/gdm/authPrompt.js:147 ../js/ui/components/networkAgent.js:136
|
||||
#: ../js/ui/components/polkitAgent.js:166 ../js/ui/endSessionDialog.js:429
|
||||
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:399
|
||||
#: ../js/ui/status/network.js:878
|
||||
#: ../js/ui/status/network.js:873
|
||||
msgid "Cancel"
|
||||
msgstr "Avbryt"
|
||||
|
||||
@@ -309,17 +309,17 @@ msgstr "Velg økt"
|
||||
msgid "Not listed?"
|
||||
msgstr "Ikke listet?"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:608
|
||||
#: ../js/gdm/loginDialog.js:598
|
||||
#, javascript-format
|
||||
msgid "(e.g., user or %s)"
|
||||
msgstr "(f.eks. bruker eller %s)"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:613 ../js/ui/components/networkAgent.js:262
|
||||
#: ../js/gdm/loginDialog.js:603 ../js/ui/components/networkAgent.js:262
|
||||
#: ../js/ui/components/networkAgent.js:280
|
||||
msgid "Username: "
|
||||
msgstr "Brukernavn: "
|
||||
|
||||
#: ../js/gdm/loginDialog.js:884
|
||||
#: ../js/gdm/loginDialog.js:868
|
||||
msgid "Login Window"
|
||||
msgstr "Innloggingsvindu"
|
||||
|
||||
@@ -356,15 +356,15 @@ msgstr "Ofte"
|
||||
msgid "All"
|
||||
msgstr "Alle"
|
||||
|
||||
#: ../js/ui/appDisplay.js:1555
|
||||
#: ../js/ui/appDisplay.js:1552
|
||||
msgid "New Window"
|
||||
msgstr "Nytt vindu"
|
||||
|
||||
#: ../js/ui/appDisplay.js:1577 ../js/ui/dash.js:285
|
||||
#: ../js/ui/appDisplay.js:1574 ../js/ui/dash.js:285
|
||||
msgid "Remove from Favorites"
|
||||
msgstr "Fjern fra favoritter"
|
||||
|
||||
#: ../js/ui/appDisplay.js:1583
|
||||
#: ../js/ui/appDisplay.js:1580
|
||||
msgid "Add to Favorites"
|
||||
msgstr "Legg til i favoritter"
|
||||
|
||||
@@ -507,44 +507,44 @@ msgstr "Lø"
|
||||
msgid "calendar:MY"
|
||||
msgstr "calendar:MY"
|
||||
|
||||
#: ../js/ui/calendar.js:450
|
||||
#: ../js/ui/calendar.js:446
|
||||
msgid "Previous month"
|
||||
msgstr "Forrige måned"
|
||||
|
||||
#: ../js/ui/calendar.js:460
|
||||
#: ../js/ui/calendar.js:456
|
||||
msgid "Next month"
|
||||
msgstr "Neste måned"
|
||||
|
||||
#. Translators: Text to show if there are no events */
|
||||
#: ../js/ui/calendar.js:772
|
||||
#: ../js/ui/calendar.js:762
|
||||
msgid "Nothing Scheduled"
|
||||
msgstr "Ingenting planlagt"
|
||||
|
||||
#. Translators: Shown on calendar heading when selected day occurs on current year */
|
||||
#: ../js/ui/calendar.js:790
|
||||
#: ../js/ui/calendar.js:780
|
||||
msgctxt "calendar heading"
|
||||
msgid "%A, %B %d"
|
||||
msgstr "%A %B %d"
|
||||
|
||||
#. Translators: Shown on calendar heading when selected day occurs on different year */
|
||||
#: ../js/ui/calendar.js:793
|
||||
#: ../js/ui/calendar.js:783
|
||||
msgctxt "calendar heading"
|
||||
msgid "%A, %B %d, %Y"
|
||||
msgstr "%A %B %d, %Y"
|
||||
|
||||
#: ../js/ui/calendar.js:804
|
||||
#: ../js/ui/calendar.js:794
|
||||
msgid "Today"
|
||||
msgstr "I dag"
|
||||
|
||||
#: ../js/ui/calendar.js:808
|
||||
#: ../js/ui/calendar.js:798
|
||||
msgid "Tomorrow"
|
||||
msgstr "I morgen"
|
||||
|
||||
#: ../js/ui/calendar.js:819
|
||||
#: ../js/ui/calendar.js:809
|
||||
msgid "This week"
|
||||
msgstr "Denne uken"
|
||||
|
||||
#: ../js/ui/calendar.js:827
|
||||
#: ../js/ui/calendar.js:817
|
||||
msgid "Next week"
|
||||
msgstr "Neste uke"
|
||||
|
||||
@@ -578,7 +578,7 @@ msgid "Type again:"
|
||||
msgstr "Skriv på nytt:"
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:131 ../js/ui/status/network.js:240
|
||||
#: ../js/ui/status/network.js:322 ../js/ui/status/network.js:881
|
||||
#: ../js/ui/status/network.js:317 ../js/ui/status/network.js:876
|
||||
msgid "Connect"
|
||||
msgstr "Koble til"
|
||||
|
||||
@@ -941,7 +941,7 @@ msgstr "Kan ikke koble til %s"
|
||||
msgid "View account"
|
||||
msgstr "Vis konto"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1439
|
||||
#: ../js/ui/components/telepathyClient.js:1434
|
||||
msgid "Unknown reason"
|
||||
msgstr "Ukjent årsak"
|
||||
|
||||
@@ -957,22 +957,22 @@ msgstr "Vis programmer"
|
||||
msgid "Dash"
|
||||
msgstr "Favoritter"
|
||||
|
||||
#: ../js/ui/dateMenu.js:91
|
||||
#: ../js/ui/dateMenu.js:86
|
||||
msgid "Open Calendar"
|
||||
msgstr "Åpne kalender"
|
||||
|
||||
#: ../js/ui/dateMenu.js:95
|
||||
#: ../js/ui/dateMenu.js:90
|
||||
msgid "Open Clocks"
|
||||
msgstr "Åpne Klokker"
|
||||
|
||||
#: ../js/ui/dateMenu.js:102
|
||||
#: ../js/ui/dateMenu.js:97
|
||||
msgid "Date & Time Settings"
|
||||
msgstr "Innstillinger for dato og klokkeslett"
|
||||
|
||||
#. 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").
|
||||
#. */
|
||||
#: ../js/ui/dateMenu.js:192
|
||||
#: ../js/ui/dateMenu.js:187
|
||||
msgid "%A %B %e, %Y"
|
||||
msgstr "%a %e %B, %Y"
|
||||
|
||||
@@ -1084,9 +1084,7 @@ msgstr "Slå av etter at oppdateringer er installert"
|
||||
|
||||
#: ../js/ui/endSessionDialog.js:315
|
||||
msgid "Running on battery power: please plug in before installing updates."
|
||||
msgstr ""
|
||||
"Kjører på batteristrøm: vennligst koble til strøm før oppdateringer blir "
|
||||
"installert."
|
||||
msgstr "Kjører på batteristrøm: vennligst koble til strøm før oppdateringer blir installert."
|
||||
|
||||
#: ../js/ui/endSessionDialog.js:332
|
||||
msgid "Some applications are busy or have unsaved work."
|
||||
@@ -1121,25 +1119,25 @@ msgstr "Last ned og installer «%s» fra extensions.gnome.org?"
|
||||
msgid "Keyboard"
|
||||
msgstr "Tastatur"
|
||||
|
||||
#: ../js/ui/lookingGlass.js:643
|
||||
#: ../js/ui/lookingGlass.js:641
|
||||
msgid "No extensions installed"
|
||||
msgstr "Ingen utvidelser installert"
|
||||
|
||||
#. Translators: argument is an extension UUID. */
|
||||
#: ../js/ui/lookingGlass.js:697
|
||||
#: ../js/ui/lookingGlass.js:695
|
||||
#, javascript-format
|
||||
msgid "%s has not emitted any errors."
|
||||
msgstr "%s har ikke avgitt noen feil."
|
||||
|
||||
#: ../js/ui/lookingGlass.js:703
|
||||
#: ../js/ui/lookingGlass.js:701
|
||||
msgid "Hide Errors"
|
||||
msgstr "Skjul feil"
|
||||
|
||||
#: ../js/ui/lookingGlass.js:707 ../js/ui/lookingGlass.js:767
|
||||
#: ../js/ui/lookingGlass.js:705 ../js/ui/lookingGlass.js:765
|
||||
msgid "Show Errors"
|
||||
msgstr "Vis feil"
|
||||
|
||||
#: ../js/ui/lookingGlass.js:716
|
||||
#: ../js/ui/lookingGlass.js:714
|
||||
msgid "Enabled"
|
||||
msgstr "Aktivert"
|
||||
|
||||
@@ -1147,28 +1145,28 @@ msgstr "Aktivert"
|
||||
#. because it's disabled by rfkill (airplane mode) */
|
||||
#. translators:
|
||||
#. * The device has been disabled
|
||||
#: ../js/ui/lookingGlass.js:719 ../js/ui/status/network.js:555
|
||||
#: ../js/ui/lookingGlass.js:717 ../js/ui/status/network.js:550
|
||||
#: ../src/gvc/gvc-mixer-control.c:1830
|
||||
msgid "Disabled"
|
||||
msgstr "Deaktivert"
|
||||
|
||||
#: ../js/ui/lookingGlass.js:721
|
||||
#: ../js/ui/lookingGlass.js:719
|
||||
msgid "Error"
|
||||
msgstr "Feil"
|
||||
|
||||
#: ../js/ui/lookingGlass.js:723
|
||||
#: ../js/ui/lookingGlass.js:721
|
||||
msgid "Out of date"
|
||||
msgstr "Utdatert"
|
||||
|
||||
#: ../js/ui/lookingGlass.js:725
|
||||
#: ../js/ui/lookingGlass.js:723
|
||||
msgid "Downloading"
|
||||
msgstr "Laster ned"
|
||||
|
||||
#: ../js/ui/lookingGlass.js:749
|
||||
#: ../js/ui/lookingGlass.js:747
|
||||
msgid "View Source"
|
||||
msgstr "Vis kildekode"
|
||||
|
||||
#: ../js/ui/lookingGlass.js:758
|
||||
#: ../js/ui/lookingGlass.js:756
|
||||
msgid "Web Page"
|
||||
msgstr "Nettside"
|
||||
|
||||
@@ -1204,7 +1202,7 @@ msgstr "Ingen meldinger"
|
||||
msgid "Message Tray"
|
||||
msgstr "Meldingstrau"
|
||||
|
||||
#: ../js/ui/messageTray.js:2962
|
||||
#: ../js/ui/messageTray.js:2948
|
||||
msgid "System Information"
|
||||
msgstr "Systeminformasjon"
|
||||
|
||||
@@ -1220,11 +1218,11 @@ msgid_plural "%d new messages"
|
||||
msgstr[0] "%d ny melding"
|
||||
msgstr[1] "%d nye meldinger"
|
||||
|
||||
#: ../js/ui/overview.js:84
|
||||
#: ../js/ui/overview.js:83
|
||||
msgid "Undo"
|
||||
msgstr "Angre"
|
||||
|
||||
#: ../js/ui/overview.js:124
|
||||
#: ../js/ui/overview.js:123
|
||||
msgid "Overview"
|
||||
msgstr "Oversikt"
|
||||
|
||||
@@ -1232,7 +1230,7 @@ msgstr "Oversikt"
|
||||
#. in the search entry when no search is
|
||||
#. active; it should not exceed ~30
|
||||
#. characters. */
|
||||
#: ../js/ui/overview.js:250
|
||||
#: ../js/ui/overview.js:257
|
||||
msgid "Type to search…"
|
||||
msgstr "Skriv for å søke …"
|
||||
|
||||
@@ -1275,27 +1273,27 @@ msgid_plural "%d new notifications"
|
||||
msgstr[0] "%d ny varsling"
|
||||
msgstr[1] "%d nye varslinger"
|
||||
|
||||
#: ../js/ui/screenShield.js:474 ../js/ui/status/system.js:342
|
||||
#: ../js/ui/screenShield.js:473 ../js/ui/status/system.js:342
|
||||
msgid "Lock"
|
||||
msgstr "Lås"
|
||||
|
||||
#: ../js/ui/screenShield.js:708
|
||||
#: ../js/ui/screenShield.js:707
|
||||
msgid "GNOME needs to lock the screen"
|
||||
msgstr "GNOME må låse skjermen"
|
||||
|
||||
#: ../js/ui/screenShield.js:835 ../js/ui/screenShield.js:1309
|
||||
#: ../js/ui/screenShield.js:834 ../js/ui/screenShield.js:1301
|
||||
msgid "Unable to lock"
|
||||
msgstr "Kan ikke låse"
|
||||
|
||||
#: ../js/ui/screenShield.js:836 ../js/ui/screenShield.js:1310
|
||||
#: ../js/ui/screenShield.js:835 ../js/ui/screenShield.js:1302
|
||||
msgid "Lock was blocked by an application"
|
||||
msgstr "Låsing ble stoppet av et program"
|
||||
|
||||
#: ../js/ui/search.js:603
|
||||
#: ../js/ui/search.js:589
|
||||
msgid "Searching…"
|
||||
msgstr "Søker …"
|
||||
|
||||
#: ../js/ui/search.js:646
|
||||
#: ../js/ui/search.js:632
|
||||
msgid "No results."
|
||||
msgstr "Ingen resultater."
|
||||
|
||||
@@ -1367,30 +1365,30 @@ msgstr "Høy kontrast"
|
||||
msgid "Large Text"
|
||||
msgstr "Stor tekst"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:49
|
||||
#: ../js/ui/status/bluetooth.js:48
|
||||
msgid "Bluetooth"
|
||||
msgstr "Bluetooth"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:51 ../js/ui/status/location.js:60
|
||||
#: ../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:1345 ../js/ui/status/rfkill.js:85
|
||||
#: ../js/ui/status/bluetooth.js:50 ../js/ui/status/location.js:59
|
||||
#: ../js/ui/status/location.js:159 ../js/ui/status/network.js:151
|
||||
#: ../js/ui/status/network.js:318 ../js/ui/status/network.js:1225
|
||||
#: ../js/ui/status/network.js:1336 ../js/ui/status/rfkill.js:85
|
||||
#: ../js/ui/status/rfkill.js:105
|
||||
msgid "Turn Off"
|
||||
msgstr "Slå av"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:54
|
||||
#: ../js/ui/status/bluetooth.js:53
|
||||
msgid "Bluetooth Settings"
|
||||
msgstr "Innstillinger for Bluetooth"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:104
|
||||
#: ../js/ui/status/bluetooth.js:100
|
||||
#, javascript-format
|
||||
msgid "%d Connected Device"
|
||||
msgid_plural "%d Connected Devices"
|
||||
msgstr[0] "%d tilkoblet enhet"
|
||||
msgstr[1] "%d tilkoblede enheter"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:106 ../js/ui/status/network.js:1262
|
||||
#: ../js/ui/status/bluetooth.js:102 ../js/ui/status/network.js:1253
|
||||
msgid "Not Connected"
|
||||
msgstr "Ikke koblet til"
|
||||
|
||||
@@ -1402,21 +1400,21 @@ msgstr "Lysstyrke"
|
||||
msgid "Show Keyboard Layout"
|
||||
msgstr "Vis tastaturutforming"
|
||||
|
||||
#: ../js/ui/status/location.js:53
|
||||
#: ../js/ui/status/location.js:52
|
||||
msgid "Location"
|
||||
msgstr "Lokasjon"
|
||||
|
||||
#: ../js/ui/status/location.js:59 ../js/ui/status/location.js:166
|
||||
#: ../js/ui/status/location.js:58 ../js/ui/status/location.js:158
|
||||
#: ../js/ui/status/rfkill.js:84
|
||||
msgid "On"
|
||||
msgstr "På"
|
||||
|
||||
#: ../js/ui/status/location.js:163 ../js/ui/status/network.js:420
|
||||
#: ../js/ui/status/network.js:1260 ../js/ui/status/network.js:1464
|
||||
#: ../js/ui/status/location.js:155 ../js/ui/status/network.js:415
|
||||
#: ../js/ui/status/network.js:1251 ../js/ui/status/network.js:1455
|
||||
msgid "Off"
|
||||
msgstr "Av"
|
||||
|
||||
#: ../js/ui/status/location.js:164 ../js/ui/status/network.js:1234
|
||||
#: ../js/ui/status/location.js:156 ../js/ui/status/network.js:1225
|
||||
msgid "Turn On"
|
||||
msgstr "Slå på"
|
||||
|
||||
@@ -1424,138 +1422,138 @@ msgstr "Slå på"
|
||||
msgid "<unknown>"
|
||||
msgstr "<ukjent>"
|
||||
|
||||
#: ../js/ui/status/network.js:422
|
||||
#: ../js/ui/status/network.js:417
|
||||
msgid "Connected"
|
||||
msgstr "Koblet til"
|
||||
|
||||
#. 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) */
|
||||
#: ../js/ui/status/network.js:426
|
||||
#: ../js/ui/status/network.js:421
|
||||
msgid "unmanaged"
|
||||
msgstr "ikke håndtert"
|
||||
|
||||
#: ../js/ui/status/network.js:428
|
||||
#: ../js/ui/status/network.js:423
|
||||
msgid "disconnecting..."
|
||||
msgstr "kobler fra …"
|
||||
|
||||
#: ../js/ui/status/network.js:434 ../js/ui/status/network.js:1362
|
||||
#: ../js/ui/status/network.js:429 ../js/ui/status/network.js:1353
|
||||
msgid "connecting..."
|
||||
msgstr "kobler til …"
|
||||
|
||||
#. 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:1365
|
||||
#: ../js/ui/status/network.js:432 ../js/ui/status/network.js:1356
|
||||
msgid "authentication required"
|
||||
msgstr "autentisering kreves"
|
||||
|
||||
#. Translators: this is for devices that require some kind of firmware or kernel
|
||||
#. module, which is missing */
|
||||
#: ../js/ui/status/network.js:445
|
||||
#: ../js/ui/status/network.js:440
|
||||
msgid "firmware missing"
|
||||
msgstr "fastvare mangler"
|
||||
|
||||
#. Translators: this is for a network device that cannot be activated (for example it
|
||||
#. is disabled by rfkill, or it has no coverage */
|
||||
#: ../js/ui/status/network.js:449
|
||||
#: ../js/ui/status/network.js:444
|
||||
msgid "unavailable"
|
||||
msgstr "ikke tilgjengelig"
|
||||
|
||||
#: ../js/ui/status/network.js:451 ../js/ui/status/network.js:1367
|
||||
#: ../js/ui/status/network.js:446 ../js/ui/status/network.js:1358
|
||||
msgid "connection failed"
|
||||
msgstr "tilkobling feilet"
|
||||
|
||||
#: ../js/ui/status/network.js:467
|
||||
#: ../js/ui/status/network.js:462
|
||||
msgid "Wired Settings"
|
||||
msgstr "Innstillinger for trådbundet nettverk"
|
||||
|
||||
#: ../js/ui/status/network.js:509 ../js/ui/status/network.js:587
|
||||
#: ../js/ui/status/network.js:504 ../js/ui/status/network.js:582
|
||||
msgid "Mobile Broadband Settings"
|
||||
msgstr "Innstillinger for mobilt bredbånd"
|
||||
|
||||
#: ../js/ui/status/network.js:551 ../js/ui/status/network.js:1258
|
||||
#: ../js/ui/status/network.js:546 ../js/ui/status/network.js:1249
|
||||
msgid "Hardware Disabled"
|
||||
msgstr "Maskinvare slått av"
|
||||
|
||||
#: ../js/ui/status/network.js:595
|
||||
#: ../js/ui/status/network.js:590
|
||||
msgid "Use as Internet connection"
|
||||
msgstr "Bruk som internettforbindelse"
|
||||
|
||||
#: ../js/ui/status/network.js:776
|
||||
#: ../js/ui/status/network.js:771
|
||||
msgid "Airplane Mode is On"
|
||||
msgstr "Flymodus er slått på"
|
||||
|
||||
#: ../js/ui/status/network.js:777
|
||||
#: ../js/ui/status/network.js:772
|
||||
msgid "Wi-Fi is disabled when airplane mode is on."
|
||||
msgstr "Trådløst blir slått av når flymodus slås på."
|
||||
|
||||
#: ../js/ui/status/network.js:778
|
||||
#: ../js/ui/status/network.js:773
|
||||
msgid "Turn Off Airplane Mode"
|
||||
msgstr "Slå av flymodus"
|
||||
|
||||
#: ../js/ui/status/network.js:787
|
||||
#: ../js/ui/status/network.js:782
|
||||
msgid "Wi-Fi is Off"
|
||||
msgstr "Trådløs er av"
|
||||
|
||||
#: ../js/ui/status/network.js:788
|
||||
#: ../js/ui/status/network.js:783
|
||||
msgid "Wi-Fi needs to be turned on in order to connect to a network."
|
||||
msgstr "Trådløs må slås på for å koble til et nettverk."
|
||||
|
||||
#: ../js/ui/status/network.js:789
|
||||
#: ../js/ui/status/network.js:784
|
||||
msgid "Turn On Wi-Fi"
|
||||
msgstr "Slå på trådløs"
|
||||
|
||||
#: ../js/ui/status/network.js:814
|
||||
#: ../js/ui/status/network.js:809
|
||||
msgid "Wi-Fi Networks"
|
||||
msgstr "Wi-Fi nettverk"
|
||||
|
||||
#: ../js/ui/status/network.js:816
|
||||
#: ../js/ui/status/network.js:811
|
||||
msgid "Select a network"
|
||||
msgstr "Velg et nettverk"
|
||||
|
||||
#: ../js/ui/status/network.js:845
|
||||
#: ../js/ui/status/network.js:840
|
||||
msgid "No Networks"
|
||||
msgstr "Ingen nettverk"
|
||||
|
||||
#: ../js/ui/status/network.js:866 ../js/ui/status/rfkill.js:103
|
||||
#: ../js/ui/status/network.js:861 ../js/ui/status/rfkill.js:103
|
||||
msgid "Use hardware switch to turn off"
|
||||
msgstr "Bruk maskinvarebryter til å slå av"
|
||||
|
||||
#: ../js/ui/status/network.js:1136
|
||||
#: ../js/ui/status/network.js:1131
|
||||
msgid "Select Network"
|
||||
msgstr "Velg nettverk"
|
||||
|
||||
#: ../js/ui/status/network.js:1142
|
||||
#: ../js/ui/status/network.js:1137
|
||||
msgid "Wi-Fi Settings"
|
||||
msgstr "Innstillinger"
|
||||
|
||||
#: ../js/ui/status/network.js:1251
|
||||
#: ../js/ui/status/network.js:1242
|
||||
msgid "Hotspot Active"
|
||||
msgstr "Trådløst aksesspunkt aktivt"
|
||||
|
||||
#: ../js/ui/status/network.js:1254
|
||||
#: ../js/ui/status/network.js:1245
|
||||
msgid "Connecting"
|
||||
msgstr "Kobler til"
|
||||
|
||||
#: ../js/ui/status/network.js:1433 ../js/ui/status/rfkill.js:88
|
||||
#: ../js/ui/status/network.js:1424 ../js/ui/status/rfkill.js:88
|
||||
msgid "Network Settings"
|
||||
msgstr "Innstillinger for nettverk"
|
||||
|
||||
#: ../js/ui/status/network.js:1435
|
||||
#: ../js/ui/status/network.js:1426
|
||||
msgid "VPN Settings"
|
||||
msgstr "Innstillinger for VPN"
|
||||
|
||||
#: ../js/ui/status/network.js:1454
|
||||
#: ../js/ui/status/network.js:1445
|
||||
msgid "VPN"
|
||||
msgstr "VPN"
|
||||
|
||||
#: ../js/ui/status/network.js:1607
|
||||
#: ../js/ui/status/network.js:1598
|
||||
msgid "Network Manager"
|
||||
msgstr "Nettverkshåndtering"
|
||||
|
||||
#: ../js/ui/status/network.js:1646
|
||||
#: ../js/ui/status/network.js:1637
|
||||
msgid "Connection failed"
|
||||
msgstr "Tilkobling feilet"
|
||||
|
||||
#: ../js/ui/status/network.js:1647
|
||||
#: ../js/ui/status/network.js:1638
|
||||
msgid "Activation of network connection failed"
|
||||
msgstr "Aktivering av nettverkstilkobling feilet"
|
||||
|
||||
|
217
po/pl.po
217
po/pl.po
@@ -12,8 +12,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: gnome-shell\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2014-03-27 19:22+0100\n"
|
||||
"PO-Revision-Date: 2014-03-27 19:23+0100\n"
|
||||
"POT-Creation-Date: 2014-03-04 18:14+0100\n"
|
||||
"PO-Revision-Date: 2014-03-04 18:15+0100\n"
|
||||
"Last-Translator: Piotr Drąg <piotrdrag@gmail.com>\n"
|
||||
"Language-Team: Polish <gnomepl@aviary.pl>\n"
|
||||
"Language: pl\n"
|
||||
@@ -325,7 +325,7 @@ msgstr ""
|
||||
#: ../js/gdm/authPrompt.js:147 ../js/ui/components/networkAgent.js:136
|
||||
#: ../js/ui/components/polkitAgent.js:166 ../js/ui/endSessionDialog.js:429
|
||||
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:399
|
||||
#: ../js/ui/status/network.js:878
|
||||
#: ../js/ui/status/network.js:873
|
||||
msgid "Cancel"
|
||||
msgstr "Anuluj"
|
||||
|
||||
@@ -343,25 +343,25 @@ msgctxt "button"
|
||||
msgid "Sign In"
|
||||
msgstr "Zaloguj"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:271
|
||||
#: ../js/gdm/loginDialog.js:270
|
||||
msgid "Choose Session"
|
||||
msgstr "Wybór sesji"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:431
|
||||
#: ../js/gdm/loginDialog.js:430
|
||||
msgid "Not listed?"
|
||||
msgstr "Inny użytkownik?"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:611
|
||||
#: ../js/gdm/loginDialog.js:598
|
||||
#, javascript-format
|
||||
msgid "(e.g., user or %s)"
|
||||
msgstr "(np. użytkownik lub %s)"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:616 ../js/ui/components/networkAgent.js:262
|
||||
#: ../js/gdm/loginDialog.js:603 ../js/ui/components/networkAgent.js:262
|
||||
#: ../js/ui/components/networkAgent.js:280
|
||||
msgid "Username: "
|
||||
msgstr "Nazwa użytkownika: "
|
||||
|
||||
#: ../js/gdm/loginDialog.js:917
|
||||
#: ../js/gdm/loginDialog.js:868
|
||||
msgid "Login Window"
|
||||
msgstr "Okno logowania"
|
||||
|
||||
@@ -386,27 +386,27 @@ msgstr "Nie można przetworzyć polecenia:"
|
||||
msgid "Execution of “%s” failed:"
|
||||
msgstr "Wykonanie polecenia \"%s\" się nie powiodło:"
|
||||
|
||||
#: ../js/ui/appDisplay.js:636
|
||||
#: ../js/ui/appDisplay.js:629
|
||||
msgid "Frequently used applications will appear here"
|
||||
msgstr "W tym miejscu pojawią się często używane programy"
|
||||
|
||||
#: ../js/ui/appDisplay.js:747
|
||||
#: ../js/ui/appDisplay.js:740
|
||||
msgid "Frequent"
|
||||
msgstr "Często używane"
|
||||
|
||||
#: ../js/ui/appDisplay.js:754
|
||||
#: ../js/ui/appDisplay.js:747
|
||||
msgid "All"
|
||||
msgstr "Wszystkie"
|
||||
|
||||
#: ../js/ui/appDisplay.js:1566
|
||||
#: ../js/ui/appDisplay.js:1552
|
||||
msgid "New Window"
|
||||
msgstr "Nowe okno"
|
||||
|
||||
#: ../js/ui/appDisplay.js:1588 ../js/ui/dash.js:285
|
||||
#: ../js/ui/appDisplay.js:1574 ../js/ui/dash.js:285
|
||||
msgid "Remove from Favorites"
|
||||
msgstr "Usuń z ulubionych"
|
||||
|
||||
#: ../js/ui/appDisplay.js:1594
|
||||
#: ../js/ui/appDisplay.js:1580
|
||||
msgid "Add to Favorites"
|
||||
msgstr "Dodaj do ulubionych"
|
||||
|
||||
@@ -549,44 +549,44 @@ msgstr "S"
|
||||
msgid "calendar:MY"
|
||||
msgstr "calendar:MY"
|
||||
|
||||
#: ../js/ui/calendar.js:450
|
||||
#: ../js/ui/calendar.js:446
|
||||
msgid "Previous month"
|
||||
msgstr "Poprzedni miesiąc"
|
||||
|
||||
#: ../js/ui/calendar.js:460
|
||||
#: ../js/ui/calendar.js:456
|
||||
msgid "Next month"
|
||||
msgstr "Następny miesiąc"
|
||||
|
||||
#. Translators: Text to show if there are no events */
|
||||
#: ../js/ui/calendar.js:772
|
||||
#: ../js/ui/calendar.js:762
|
||||
msgid "Nothing Scheduled"
|
||||
msgstr "Nic nie zaplanowano"
|
||||
|
||||
#. Translators: Shown on calendar heading when selected day occurs on current year */
|
||||
#: ../js/ui/calendar.js:790
|
||||
#: ../js/ui/calendar.js:780
|
||||
msgctxt "calendar heading"
|
||||
msgid "%A, %B %d"
|
||||
msgstr "%A, %e %B"
|
||||
|
||||
#. Translators: Shown on calendar heading when selected day occurs on different year */
|
||||
#: ../js/ui/calendar.js:793
|
||||
#: ../js/ui/calendar.js:783
|
||||
msgctxt "calendar heading"
|
||||
msgid "%A, %B %d, %Y"
|
||||
msgstr "%A, %e %B %Y"
|
||||
|
||||
#: ../js/ui/calendar.js:804
|
||||
#: ../js/ui/calendar.js:794
|
||||
msgid "Today"
|
||||
msgstr "Dzisiaj"
|
||||
|
||||
#: ../js/ui/calendar.js:808
|
||||
#: ../js/ui/calendar.js:798
|
||||
msgid "Tomorrow"
|
||||
msgstr "Jutro"
|
||||
|
||||
#: ../js/ui/calendar.js:819
|
||||
#: ../js/ui/calendar.js:809
|
||||
msgid "This week"
|
||||
msgstr "Ten tydzień"
|
||||
|
||||
#: ../js/ui/calendar.js:827
|
||||
#: ../js/ui/calendar.js:817
|
||||
msgid "Next week"
|
||||
msgstr "Następny tydzień"
|
||||
|
||||
@@ -620,7 +620,7 @@ msgid "Type again:"
|
||||
msgstr "Proszę wpisać ponownie:"
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:131 ../js/ui/status/network.js:240
|
||||
#: ../js/ui/status/network.js:322 ../js/ui/status/network.js:881
|
||||
#: ../js/ui/status/network.js:317 ../js/ui/status/network.js:876
|
||||
msgid "Connect"
|
||||
msgstr "Połącz"
|
||||
|
||||
@@ -984,7 +984,7 @@ msgstr "Nie można połączyć się z kontem %s"
|
||||
msgid "View account"
|
||||
msgstr "Wyświetl konto"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1439
|
||||
#: ../js/ui/components/telepathyClient.js:1434
|
||||
msgid "Unknown reason"
|
||||
msgstr "Nieznana przyczyna"
|
||||
|
||||
@@ -1000,22 +1000,22 @@ msgstr "Wyświetl programy"
|
||||
msgid "Dash"
|
||||
msgstr "Ulubione"
|
||||
|
||||
#: ../js/ui/dateMenu.js:91
|
||||
#: ../js/ui/dateMenu.js:86
|
||||
msgid "Open Calendar"
|
||||
msgstr "Otwórz kalendarz"
|
||||
|
||||
#: ../js/ui/dateMenu.js:95
|
||||
#: ../js/ui/dateMenu.js:90
|
||||
msgid "Open Clocks"
|
||||
msgstr "Otwórz zegar"
|
||||
|
||||
#: ../js/ui/dateMenu.js:102
|
||||
#: ../js/ui/dateMenu.js:97
|
||||
msgid "Date & Time Settings"
|
||||
msgstr "Ustawienia daty i czasu"
|
||||
|
||||
#. 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").
|
||||
#. */
|
||||
#: ../js/ui/dateMenu.js:192
|
||||
#: ../js/ui/dateMenu.js:187
|
||||
msgid "%A %B %e, %Y"
|
||||
msgstr "%A, %e %B %Y"
|
||||
|
||||
@@ -1169,26 +1169,25 @@ msgstr ""
|
||||
msgid "Keyboard"
|
||||
msgstr "Klawiatura"
|
||||
|
||||
#: ../js/ui/lookingGlass.js:643
|
||||
#: ../js/ui/lookingGlass.js:641
|
||||
msgid "No extensions installed"
|
||||
msgstr "Nie zainstalowano rozszerzeń"
|
||||
|
||||
#. Translators: argument is an extension UUID. */
|
||||
#: ../js/ui/lookingGlass.js:697
|
||||
#: ../js/ui/lookingGlass.js:695
|
||||
#, javascript-format
|
||||
msgid "%s has not emitted any errors."
|
||||
msgstr "Rozszerzenie %s nie wysłało żadnych błędów."
|
||||
|
||||
#: ../js/ui/lookingGlass.js:703
|
||||
#: ../js/ui/lookingGlass.js:701
|
||||
msgid "Hide Errors"
|
||||
msgstr "Ukryj błędy"
|
||||
|
||||
#: ../js/ui/lookingGlass.js:707 ../js/ui/lookingGlass.js:767
|
||||
#: ../js/ui/lookingGlass.js:705 ../js/ui/lookingGlass.js:765
|
||||
msgid "Show Errors"
|
||||
msgstr "Wyświetl błędy"
|
||||
|
||||
#: ../js/ui/lookingGlass.js:716 ../js/ui/status/location.js:59
|
||||
#: ../js/ui/status/location.js:167
|
||||
#: ../js/ui/lookingGlass.js:714
|
||||
msgid "Enabled"
|
||||
msgstr "Włączone"
|
||||
|
||||
@@ -1196,28 +1195,28 @@ msgstr "Włączone"
|
||||
#. because it's disabled by rfkill (airplane mode) */
|
||||
#. translators:
|
||||
#. * The device has been disabled
|
||||
#: ../js/ui/lookingGlass.js:719 ../js/ui/status/location.js:164
|
||||
#: ../js/ui/status/network.js:555 ../src/gvc/gvc-mixer-control.c:1830
|
||||
#: ../js/ui/lookingGlass.js:717 ../js/ui/status/network.js:550
|
||||
#: ../src/gvc/gvc-mixer-control.c:1830
|
||||
msgid "Disabled"
|
||||
msgstr "Wyłączone"
|
||||
|
||||
#: ../js/ui/lookingGlass.js:721
|
||||
#: ../js/ui/lookingGlass.js:719
|
||||
msgid "Error"
|
||||
msgstr "Błąd"
|
||||
|
||||
#: ../js/ui/lookingGlass.js:723
|
||||
#: ../js/ui/lookingGlass.js:721
|
||||
msgid "Out of date"
|
||||
msgstr "Nieaktualne"
|
||||
|
||||
#: ../js/ui/lookingGlass.js:725
|
||||
#: ../js/ui/lookingGlass.js:723
|
||||
msgid "Downloading"
|
||||
msgstr "Pobieranie"
|
||||
|
||||
#: ../js/ui/lookingGlass.js:749
|
||||
#: ../js/ui/lookingGlass.js:747
|
||||
msgid "View Source"
|
||||
msgstr "Wyświetl źródło"
|
||||
|
||||
#: ../js/ui/lookingGlass.js:758
|
||||
#: ../js/ui/lookingGlass.js:756
|
||||
msgid "Web Page"
|
||||
msgstr "Strona WWW"
|
||||
|
||||
@@ -1253,7 +1252,7 @@ msgstr "Brak wiadomości"
|
||||
msgid "Message Tray"
|
||||
msgstr "Obszar powiadamiania"
|
||||
|
||||
#: ../js/ui/messageTray.js:2962
|
||||
#: ../js/ui/messageTray.js:2948
|
||||
msgid "System Information"
|
||||
msgstr "Informacje systemowe"
|
||||
|
||||
@@ -1270,11 +1269,11 @@ msgstr[0] "%d nowa wiadomość"
|
||||
msgstr[1] "%d nowe wiadomości"
|
||||
msgstr[2] "%d nowych wiadomości"
|
||||
|
||||
#: ../js/ui/overview.js:84
|
||||
#: ../js/ui/overview.js:83
|
||||
msgid "Undo"
|
||||
msgstr "Cofnij"
|
||||
|
||||
#: ../js/ui/overview.js:124
|
||||
#: ../js/ui/overview.js:123
|
||||
msgid "Overview"
|
||||
msgstr "Podgląd"
|
||||
|
||||
@@ -1282,7 +1281,7 @@ msgstr "Podgląd"
|
||||
#. in the search entry when no search is
|
||||
#. active; it should not exceed ~30
|
||||
#. characters. */
|
||||
#: ../js/ui/overview.js:250
|
||||
#: ../js/ui/overview.js:257
|
||||
msgid "Type to search…"
|
||||
msgstr "Wyszukiwanie…"
|
||||
|
||||
@@ -1326,27 +1325,27 @@ msgstr[0] "%d nowe powiadomienie"
|
||||
msgstr[1] "%d nowe powiadomienia"
|
||||
msgstr[2] "%d nowych powiadomień"
|
||||
|
||||
#: ../js/ui/screenShield.js:474 ../js/ui/status/system.js:342
|
||||
#: ../js/ui/screenShield.js:473 ../js/ui/status/system.js:342
|
||||
msgid "Lock"
|
||||
msgstr "Zablokuj ekran"
|
||||
|
||||
#: ../js/ui/screenShield.js:708
|
||||
#: ../js/ui/screenShield.js:707
|
||||
msgid "GNOME needs to lock the screen"
|
||||
msgstr "Środowisko GNOME musi zablokować ekran"
|
||||
|
||||
#: ../js/ui/screenShield.js:835 ../js/ui/screenShield.js:1309
|
||||
#: ../js/ui/screenShield.js:834 ../js/ui/screenShield.js:1301
|
||||
msgid "Unable to lock"
|
||||
msgstr "Nie można zablokować"
|
||||
|
||||
#: ../js/ui/screenShield.js:836 ../js/ui/screenShield.js:1310
|
||||
#: ../js/ui/screenShield.js:835 ../js/ui/screenShield.js:1302
|
||||
msgid "Lock was blocked by an application"
|
||||
msgstr "Blokowanie zostało zablokowane przez program"
|
||||
|
||||
#: ../js/ui/search.js:603
|
||||
#: ../js/ui/search.js:589
|
||||
msgid "Searching…"
|
||||
msgstr "Wyszukiwanie…"
|
||||
|
||||
#: ../js/ui/search.js:649
|
||||
#: ../js/ui/search.js:632
|
||||
msgid "No results."
|
||||
msgstr "Brak wyników."
|
||||
|
||||
@@ -1418,22 +1417,23 @@ msgstr "Wysoki kontrast"
|
||||
msgid "Large Text"
|
||||
msgstr "Duży tekst"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:49
|
||||
#: ../js/ui/status/bluetooth.js:48
|
||||
msgid "Bluetooth"
|
||||
msgstr "Bluetooth"
|
||||
|
||||
#: ../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:1345 ../js/ui/status/rfkill.js:85
|
||||
#: ../js/ui/status/bluetooth.js:50 ../js/ui/status/location.js:59
|
||||
#: ../js/ui/status/location.js:159 ../js/ui/status/network.js:151
|
||||
#: ../js/ui/status/network.js:318 ../js/ui/status/network.js:1225
|
||||
#: ../js/ui/status/network.js:1336 ../js/ui/status/rfkill.js:85
|
||||
#: ../js/ui/status/rfkill.js:105
|
||||
msgid "Turn Off"
|
||||
msgstr "Wyłącz"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:54
|
||||
#: ../js/ui/status/bluetooth.js:53
|
||||
msgid "Bluetooth Settings"
|
||||
msgstr "Ustawienia Bluetooth"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:104
|
||||
#: ../js/ui/status/bluetooth.js:100
|
||||
#, javascript-format
|
||||
msgid "%d Connected Device"
|
||||
msgid_plural "%d Connected Devices"
|
||||
@@ -1441,7 +1441,7 @@ msgstr[0] "%d połączone urządzenie"
|
||||
msgstr[1] "%d połączone urządzenia"
|
||||
msgstr[2] "%d połączonych urządzeń"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:106 ../js/ui/status/network.js:1262
|
||||
#: ../js/ui/status/bluetooth.js:102 ../js/ui/status/network.js:1253
|
||||
msgid "Not Connected"
|
||||
msgstr "Nie połączono"
|
||||
|
||||
@@ -1453,167 +1453,160 @@ msgstr "Jasność"
|
||||
msgid "Show Keyboard Layout"
|
||||
msgstr "Wyświetl układ klawiatury"
|
||||
|
||||
#: ../js/ui/status/location.js:53
|
||||
#: ../js/ui/status/location.js:52
|
||||
msgid "Location"
|
||||
msgstr "Położenie"
|
||||
|
||||
#: ../js/ui/status/location.js:60 ../js/ui/status/location.js:168
|
||||
msgid "Disable"
|
||||
msgstr "Wyłącz"
|
||||
#: ../js/ui/status/location.js:58 ../js/ui/status/location.js:158
|
||||
#: ../js/ui/status/rfkill.js:84
|
||||
msgid "On"
|
||||
msgstr "Włączone"
|
||||
|
||||
#: ../js/ui/status/location.js:165
|
||||
msgid "Enable"
|
||||
#: ../js/ui/status/location.js:155 ../js/ui/status/network.js:415
|
||||
#: ../js/ui/status/network.js:1251 ../js/ui/status/network.js:1455
|
||||
msgid "Off"
|
||||
msgstr "Wyłączone"
|
||||
|
||||
#: ../js/ui/status/location.js:156 ../js/ui/status/network.js:1225
|
||||
msgid "Turn On"
|
||||
msgstr "Włącz"
|
||||
|
||||
#: ../js/ui/status/location.js:167
|
||||
msgid "In Use"
|
||||
msgstr "Używane"
|
||||
|
||||
#: ../js/ui/status/network.js:74
|
||||
msgid "<unknown>"
|
||||
msgstr "<nieznane>"
|
||||
|
||||
#: ../js/ui/status/network.js:420 ../js/ui/status/network.js:1260
|
||||
#: ../js/ui/status/network.js:1464
|
||||
msgid "Off"
|
||||
msgstr "Wyłączone"
|
||||
|
||||
#: ../js/ui/status/network.js:422
|
||||
#: ../js/ui/status/network.js:417
|
||||
msgid "Connected"
|
||||
msgstr "Połączono"
|
||||
|
||||
#. 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) */
|
||||
#: ../js/ui/status/network.js:426
|
||||
#: ../js/ui/status/network.js:421
|
||||
msgid "unmanaged"
|
||||
msgstr "niezarządzane"
|
||||
|
||||
#: ../js/ui/status/network.js:428
|
||||
#: ../js/ui/status/network.js:423
|
||||
msgid "disconnecting..."
|
||||
msgstr "rozłączanie…"
|
||||
|
||||
#: ../js/ui/status/network.js:434 ../js/ui/status/network.js:1362
|
||||
#: ../js/ui/status/network.js:429 ../js/ui/status/network.js:1353
|
||||
msgid "connecting..."
|
||||
msgstr "łączenie…"
|
||||
|
||||
#. 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:1365
|
||||
#: ../js/ui/status/network.js:432 ../js/ui/status/network.js:1356
|
||||
msgid "authentication required"
|
||||
msgstr "wymagane jest uwierzytelnienie"
|
||||
|
||||
#. Translators: this is for devices that require some kind of firmware or kernel
|
||||
#. module, which is missing */
|
||||
#: ../js/ui/status/network.js:445
|
||||
#: ../js/ui/status/network.js:440
|
||||
msgid "firmware missing"
|
||||
msgstr "brak oprogramowania sprzętowego"
|
||||
|
||||
#. Translators: this is for a network device that cannot be activated (for example it
|
||||
#. is disabled by rfkill, or it has no coverage */
|
||||
#: ../js/ui/status/network.js:449
|
||||
#: ../js/ui/status/network.js:444
|
||||
msgid "unavailable"
|
||||
msgstr "niedostępne"
|
||||
|
||||
#: ../js/ui/status/network.js:451 ../js/ui/status/network.js:1367
|
||||
#: ../js/ui/status/network.js:446 ../js/ui/status/network.js:1358
|
||||
msgid "connection failed"
|
||||
msgstr "połączenie się nie powiodło"
|
||||
|
||||
#: ../js/ui/status/network.js:467
|
||||
#: ../js/ui/status/network.js:462
|
||||
msgid "Wired Settings"
|
||||
msgstr "Ustawienia sieci przewodowej"
|
||||
|
||||
#: ../js/ui/status/network.js:509 ../js/ui/status/network.js:587
|
||||
#: ../js/ui/status/network.js:504 ../js/ui/status/network.js:582
|
||||
msgid "Mobile Broadband Settings"
|
||||
msgstr "Ustawienia sieci komórkowej"
|
||||
|
||||
#: ../js/ui/status/network.js:551 ../js/ui/status/network.js:1258
|
||||
#: ../js/ui/status/network.js:546 ../js/ui/status/network.js:1249
|
||||
msgid "Hardware Disabled"
|
||||
msgstr "Sprzęt jest wyłączony"
|
||||
|
||||
#: ../js/ui/status/network.js:595
|
||||
#: ../js/ui/status/network.js:590
|
||||
msgid "Use as Internet connection"
|
||||
msgstr "Użyj jako połączenie internetowe"
|
||||
|
||||
#: ../js/ui/status/network.js:776
|
||||
#: ../js/ui/status/network.js:771
|
||||
msgid "Airplane Mode is On"
|
||||
msgstr "Tryb samolotowy jest włączony"
|
||||
|
||||
#: ../js/ui/status/network.js:777
|
||||
#: ../js/ui/status/network.js:772
|
||||
msgid "Wi-Fi is disabled when airplane mode is on."
|
||||
msgstr "Sieć Wi-Fi jest wyłączona, kiedy tryb samolotowy jest włączony."
|
||||
|
||||
#: ../js/ui/status/network.js:778
|
||||
#: ../js/ui/status/network.js:773
|
||||
msgid "Turn Off Airplane Mode"
|
||||
msgstr "Wyłącz tryb samolotowy"
|
||||
|
||||
#: ../js/ui/status/network.js:787
|
||||
#: ../js/ui/status/network.js:782
|
||||
msgid "Wi-Fi is Off"
|
||||
msgstr "Sieć Wi-Fi jest wyłączona"
|
||||
|
||||
#: ../js/ui/status/network.js:788
|
||||
#: ../js/ui/status/network.js:783
|
||||
msgid "Wi-Fi needs to be turned on in order to connect to a network."
|
||||
msgstr "Wi-Fi musi być włączone, aby połączyć z siecią."
|
||||
|
||||
#: ../js/ui/status/network.js:789
|
||||
#: ../js/ui/status/network.js:784
|
||||
msgid "Turn On Wi-Fi"
|
||||
msgstr "Włącz sieć Wi-Fi"
|
||||
|
||||
#: ../js/ui/status/network.js:814
|
||||
#: ../js/ui/status/network.js:809
|
||||
msgid "Wi-Fi Networks"
|
||||
msgstr "Sieci Wi-Fi"
|
||||
|
||||
#: ../js/ui/status/network.js:816
|
||||
#: ../js/ui/status/network.js:811
|
||||
msgid "Select a network"
|
||||
msgstr "Wybór sieci"
|
||||
|
||||
#: ../js/ui/status/network.js:845
|
||||
#: ../js/ui/status/network.js:840
|
||||
msgid "No Networks"
|
||||
msgstr "Brak sieci"
|
||||
|
||||
#: ../js/ui/status/network.js:866 ../js/ui/status/rfkill.js:103
|
||||
#: ../js/ui/status/network.js:861 ../js/ui/status/rfkill.js:103
|
||||
msgid "Use hardware switch to turn off"
|
||||
msgstr "Należy użyć przełącznika sprzętowego, aby wyłączyć"
|
||||
|
||||
#: ../js/ui/status/network.js:1136
|
||||
#: ../js/ui/status/network.js:1131
|
||||
msgid "Select Network"
|
||||
msgstr "Wybierz sieć"
|
||||
|
||||
#: ../js/ui/status/network.js:1142
|
||||
#: ../js/ui/status/network.js:1137
|
||||
msgid "Wi-Fi Settings"
|
||||
msgstr "Ustawienia sieci Wi-Fi"
|
||||
|
||||
#: ../js/ui/status/network.js:1234
|
||||
msgid "Turn On"
|
||||
msgstr "Włącz"
|
||||
|
||||
#: ../js/ui/status/network.js:1251
|
||||
#: ../js/ui/status/network.js:1242
|
||||
msgid "Hotspot Active"
|
||||
msgstr "Hotspot jest aktywny"
|
||||
|
||||
#: ../js/ui/status/network.js:1254
|
||||
#: ../js/ui/status/network.js:1245
|
||||
msgid "Connecting"
|
||||
msgstr "Łączenie"
|
||||
|
||||
#: ../js/ui/status/network.js:1433 ../js/ui/status/rfkill.js:88
|
||||
#: ../js/ui/status/network.js:1424 ../js/ui/status/rfkill.js:88
|
||||
msgid "Network Settings"
|
||||
msgstr "Ustawienia sieci"
|
||||
|
||||
#: ../js/ui/status/network.js:1435
|
||||
#: ../js/ui/status/network.js:1426
|
||||
msgid "VPN Settings"
|
||||
msgstr "Ustawienia sieci VPN"
|
||||
|
||||
#: ../js/ui/status/network.js:1454
|
||||
#: ../js/ui/status/network.js:1445
|
||||
msgid "VPN"
|
||||
msgstr "VPN"
|
||||
|
||||
#: ../js/ui/status/network.js:1607
|
||||
#: ../js/ui/status/network.js:1598
|
||||
msgid "Network Manager"
|
||||
msgstr "Menedżer sieci"
|
||||
|
||||
#: ../js/ui/status/network.js:1646
|
||||
#: ../js/ui/status/network.js:1637
|
||||
msgid "Connection failed"
|
||||
msgstr "Połączenie się nie powiodło"
|
||||
|
||||
#: ../js/ui/status/network.js:1647
|
||||
#: ../js/ui/status/network.js:1638
|
||||
msgid "Activation of network connection failed"
|
||||
msgstr "Aktywacja połączenia sieciowego się nie powiodła"
|
||||
|
||||
@@ -1651,10 +1644,6 @@ msgstr "Akumulator"
|
||||
msgid "Airplane Mode"
|
||||
msgstr "Tryb samolotowy"
|
||||
|
||||
#: ../js/ui/status/rfkill.js:84
|
||||
msgid "On"
|
||||
msgstr "Włączone"
|
||||
|
||||
#: ../js/ui/status/system.js:314
|
||||
msgid "Switch User"
|
||||
msgstr "Przełącz użytkownika"
|
||||
|
621
po/pt_BR.po
621
po/pt_BR.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
Reference in New Issue
Block a user