Compare commits
252 Commits
3.16.0
...
matthiasc/
Author | SHA1 | Date | |
---|---|---|---|
39f974358c | |||
0fb98606ef | |||
dd0d5a757c | |||
0bbb226faf | |||
35b38d5cb2 | |||
09e8a437d4 | |||
d2bedcc182 | |||
84eda6e459 | |||
f5e7530fc7 | |||
f983b34784 | |||
36bbe64898 | |||
627a393ed6 | |||
a025b151ef | |||
18b6f13395 | |||
051413550f | |||
3e10574736 | |||
9a3041004b | |||
87f71b8ce1 | |||
825146f1e3 | |||
52995416fd | |||
6c43d0247a | |||
9aa98d9f0c | |||
c3a29d6df1 | |||
82f84416a9 | |||
9dd3162dbe | |||
7ef519756a | |||
3bbe74d1c1 | |||
409f6718b8 | |||
9c0e179080 | |||
b3b278d41f | |||
0f466dbafb | |||
fbb4a9a3a6 | |||
8ddae5cd71 | |||
b0915c7b60 | |||
831bb4e334 | |||
4e025506fa | |||
abccf451bf | |||
14954117c0 | |||
629f408fe5 | |||
86c6ab3c01 | |||
4a6ff94701 | |||
e480b08d58 | |||
caf53861d1 | |||
d0480648ba | |||
eb8cfe799f | |||
b9f2541880 | |||
bde9b08bfe | |||
8a4c862633 | |||
785c90f4b8 | |||
dd6a11e4c7 | |||
64e9503adb | |||
36c885bf34 | |||
ad7cde805d | |||
2c2c67f4dc | |||
cc4f8dfab0 | |||
0fb13608c5 | |||
09dbe17da0 | |||
fdd347c9aa | |||
572095515b | |||
f2d4aa0822 | |||
030a22d795 | |||
c70afcdb44 | |||
526d6c03b8 | |||
261b55300d | |||
e13bfd9a17 | |||
e096d18bac | |||
9460f0e4f3 | |||
e6591f52ac | |||
07e3d1fd5c | |||
1fbc6b24c8 | |||
982777be94 | |||
6610a34ad0 | |||
bfa8a0441a | |||
7723622ec7 | |||
6bcc8c70ef | |||
d114d5f95a | |||
b5c734da42 | |||
2077bb94c1 | |||
65a4ee7fb4 | |||
debf293298 | |||
a0df3e7d1e | |||
0d67c2d164 | |||
682bd7b622 | |||
fa0e54edbb | |||
5a0b209663 | |||
7e8859fd0e | |||
444fa2e0ab | |||
a31455b921 | |||
ac0213a516 | |||
45a6e2c305 | |||
11cbd396c0 | |||
a343445cd2 | |||
be3d62487c | |||
58905bd01a | |||
08506eac2d | |||
02c6b0374d | |||
0722c06275 | |||
17a4044d97 | |||
27a7194634 | |||
d73f560bcc | |||
e92f43b83e | |||
fed79ce4e6 | |||
fc45cf03bf | |||
efde11a0f3 | |||
fb951ff9b5 | |||
f5865e895e | |||
b8c2d4c6c7 | |||
778ad49ab4 | |||
fe7dd1305f | |||
378a3df5ea | |||
e63b81d69c | |||
c2fa2cdd8a | |||
6f215427f8 | |||
67ed4e0570 | |||
8a15178557 | |||
f3ecfab378 | |||
804563d5b2 | |||
c3e5d983b9 | |||
d21edcfed5 | |||
9b69a45eee | |||
7424ee755a | |||
ff664fd1d8 | |||
fd3f03580d | |||
a09150846a | |||
f2a9c55637 | |||
eaa3f83e46 | |||
e786cc1454 | |||
cd0c632fcb | |||
d5f248cb82 | |||
6a800abe06 | |||
fe265554a7 | |||
7305466765 | |||
9ac55a98f1 | |||
a1149fb6ad | |||
dfc4cc4aaf | |||
ef7541291b | |||
248a3e6b7e | |||
6b1e381750 | |||
feaf6108f9 | |||
9ad104585d | |||
7c44af3616 | |||
0599bf41b0 | |||
eac303f84c | |||
7bdd1c625c | |||
0003760fd9 | |||
eafb8c8e38 | |||
60c8105559 | |||
54626c6f7e | |||
cca528a630 | |||
530193a3a2 | |||
52e3149040 | |||
ad297ea9dc | |||
2015fc97dc | |||
35889a0f7d | |||
dcd84a4b53 | |||
01374989b1 | |||
f300462003 | |||
1e4da1b99c | |||
e1de6cb98d | |||
59a18c4ead | |||
b881e4b62a | |||
7060ae077b | |||
a7b0910566 | |||
60706f72d4 | |||
2e77f6b34b | |||
50d5030949 | |||
03dbb0f931 | |||
249619fabd | |||
60d1f7797c | |||
dc4b8c876e | |||
1724723e63 | |||
02455b1e28 | |||
47a9b97f8b | |||
0aa29daa72 | |||
182b1c1941 | |||
bbc8010de3 | |||
15baa56584 | |||
a72683707f | |||
f4baa4ddf8 | |||
f9eb36434f | |||
bc5e16bcea | |||
86e04048ff | |||
d7c0ff5e89 | |||
51e1efa277 | |||
67f636cc68 | |||
fcdfebd0e7 | |||
069ec3b910 | |||
1092f55b54 | |||
8a8abf12f9 | |||
f044e29526 | |||
4f703019ca | |||
0e6baec350 | |||
08690d658f | |||
674325e96c | |||
f8aa486ad1 | |||
be78f0f36a | |||
9917f05be8 | |||
d23228522c | |||
8c9896561e | |||
23cdb2125e | |||
43fc598bd5 | |||
2105d2f952 | |||
d18ec919dd | |||
da3e5f9746 | |||
594a227bc1 | |||
7277744dc0 | |||
e4718d3f7f | |||
5afd04781c | |||
a0868bac6b | |||
265b1f0292 | |||
2c12f3a509 | |||
0141a2be9e | |||
6660342d2f | |||
92667e3b7f | |||
a0632e3e02 | |||
c6d2946ce6 | |||
86304418a9 | |||
2f228e21da | |||
8521556723 | |||
9f5ac0e6d5 | |||
cc38dd1d49 | |||
66a5c0c094 | |||
8e802fd32f | |||
e87656af16 | |||
8327dbd611 | |||
e1b575dddc | |||
018025dada | |||
49fe0335ee | |||
bbe417121c | |||
0068098996 | |||
36d9cc329d | |||
1f2e53dd15 | |||
048a14f1f3 | |||
fd6ef482f0 | |||
d8926b96e2 | |||
934ec3c3fe | |||
216e996f66 | |||
a4b5583995 | |||
b00a1d6b7f | |||
d24abab4a8 | |||
23a9fb0314 | |||
5e26d0c90c | |||
aeb971c33a | |||
8897385714 | |||
e2a17fa8b4 | |||
14da6b68dc | |||
9a01a7ae07 | |||
c3bf4a325d | |||
2d71456944 | |||
9934529a0b | |||
ef6e8f5bb2 | |||
2ce7a3baa6 |
151
NEWS
@ -1,3 +1,154 @@
|
||||
3.18.0
|
||||
======
|
||||
|
||||
Translations:
|
||||
Sendy Aditya Suryana [id], Kris Thomsen [da], Seán de Búrca [ga],
|
||||
Andika Triwidada [id], Enrico Nicoletto [pt_BR], Anders Jonsson [sv],
|
||||
Rūdolfs Mazurs [lv]
|
||||
|
||||
3.17.92
|
||||
=======
|
||||
* Fix race when loading multiple background animations [Josselin; #741453]
|
||||
|
||||
Contributors:
|
||||
Michael Biebl, Josselin Mouette, Florian Müllner
|
||||
|
||||
Translations:
|
||||
Baurzhan Muftakhidinov [kk], Changwoo Ryu [ko], Christian Kirbach [de],
|
||||
Kjartan Maraas [nb], Jiri Grönroos [fi], Arash Mousavi [fa],
|
||||
Jiro Matsuzawa [ja], Marek Černocký [cs], Milo Casagrande [it]
|
||||
|
||||
3.17.91
|
||||
=======
|
||||
* Fix login screen spinner causing wakeups while VT-switched away
|
||||
[Ray, Rui; #753891]
|
||||
* Fix scrolling of user list on login screen [Florian; #754525]
|
||||
|
||||
Contributors:
|
||||
Piotr Drąg, Rui Matos, Florian Müllner, Ray Strode
|
||||
|
||||
Translations:
|
||||
Dušan Kazik [sk], Jordi Mas [ca], Aurimas Černius [lt], Stas Solovey [ru],
|
||||
Piotr Drąg [pl], Pedro Albuquerque [pt], Daniel Mustieles [es],
|
||||
Chao-Hsiung Liao [zh_TW], Muhammet Kara [tr], Fran Dieguez [gl],
|
||||
Hannie Dumoleyn [nl], Yosef Or Boczko [he], Tom Tryfonidis [el],
|
||||
A S Alam [pa], Balázs Úr [hu], Alexandre Franke [fr], Frédéric Péters [fr]
|
||||
|
||||
3.17.90
|
||||
=======
|
||||
* Avoid caret/focus viewport changes during pointer movement [Rui; #752138]
|
||||
* Match GTK+'s modal dialogs for system modal dialogs [Carlos; #746108]
|
||||
* Refine message list style [Florian; #749958]
|
||||
* Fix type-ahead behavior for backspace and compose key [Rui; #753319, #753320]
|
||||
* Refine the system status menu [Florian; #751377]
|
||||
* Misc. bug fixes and cleanups [Bastien, Ray, Florian, Jakub; #752779, #752739,
|
||||
#741366, #651503, #753064, #753181, #752881]
|
||||
|
||||
Contributors:
|
||||
Rui Matos, Florian Müllner, Bastien Nocera, Carlos Soriano, Jakub Steiner,
|
||||
Ray Strode, Rico Tzschichholz
|
||||
|
||||
Translations:
|
||||
Marek Černocký [cs], Kjartan Maraas [nb], Jordi Mas [ca], Muhammet Kara [tr],
|
||||
Enrico Nicoletto [pt_BR]
|
||||
|
||||
3.17.4
|
||||
======
|
||||
* Fix fuzziness of app menu icon [Jakub; #747932]
|
||||
* Implement 4 finger swipe gesture for touchpads [Carlos; #752250]
|
||||
* Misc. bug fixes [Florian, Alexandre, Piotr, Ray, Mario; #751921, #659969,
|
||||
#752438, #752675]
|
||||
|
||||
Contributors:
|
||||
Piotr Drąg, Alexandre Franke, Carlos Garnacho, Florian Müllner,
|
||||
Mario Sanchez Prada, Jakub Steiner, Jasper St. Pierre, Ray Strode
|
||||
|
||||
Translations:
|
||||
Benjamin Steinwender [de], Pedro Albuquerque [pt], Fabio Tomat [fur],
|
||||
Matej Urbančič [sl], Daniel Mustieles [es], Yosef Or Boczko [he],
|
||||
Daniel Martinez [an]
|
||||
|
||||
3.17.3
|
||||
======
|
||||
* Handle touch events in OSK on wayland [Rui; #750287]
|
||||
* Reinstate left/right movement to window menu [Ron; #751344]
|
||||
* Allow extensions to disable "Window is ready" notification [Adel; #748846]
|
||||
* Misc. bug fixes [Watson, Michael, Ray, Rui, Florian, Cosimo; #750465,
|
||||
#751016, #751517, #750714, #751541, #751599]
|
||||
|
||||
Contributors:
|
||||
Michael Biebl, Cosimo Cecchi, Adel Gadllah, Rui Matos, Florian Müllner,
|
||||
Ray Strode, Wim Taymans, Ron Yorston, Watson Yuuma Sato
|
||||
|
||||
Translations:
|
||||
Sebastian Rasmussen [sv], Dimitris Spingos [el], Muhammet Kara [tr],
|
||||
Stas Solovey [ru], Benjamin Steinwender [de], Balázs Úr [hu],
|
||||
Victor Ibragimov [tg], Dušan Kazik [sk], Pedro Albuquerque [pt]
|
||||
|
||||
3.17.2
|
||||
======
|
||||
* Remove StTable widget [Florian; #703833]
|
||||
* Increase visibility of expanders in alt-tab popup [Jakub; #745058]
|
||||
* Ensure suspend inhibitors are released when VT switched away [Rui; #749228]
|
||||
* Use iio-sensor-proxy directly for orientation lock [Bastien; #749671]
|
||||
* Misc. bug fixes [Florian, Lan, Carlos; #749279, #749383, #749529, #749490,
|
||||
#749742]
|
||||
|
||||
Contributors:
|
||||
Carlos Garnacho, Ting-Wei Lan, Rui Matos, Florian Müllner, Bastien Nocera,
|
||||
Jakub Steiner
|
||||
|
||||
Translations:
|
||||
Yosef Or Boczko [he], sun [zh_CN], Felipe Braga [pt_BR],
|
||||
Victor Ibragimov [tg], Gábor Kelemen [hu], Cédric Valmary [oc],
|
||||
Dušan Kazik [sk], Kjartan Maraas [nb], Bruno Ramalhete [pt],
|
||||
Matej Urbančič [sl], Daniel Mustieles [es]
|
||||
|
||||
3.17.1
|
||||
======
|
||||
* Add Display Settings entry to background menu [Meet; #697346]
|
||||
* Add window menu option to move to different monitor [Isaac; #633994]
|
||||
* Improve switch style in default/highContrast themes [Jakub; #746294, #747912]
|
||||
* Make event highlight in calendar more prominent [Jakub; #747715]
|
||||
* Fix keyboard focus when focusing a notification banner [Florian; #747205]
|
||||
* Move notification banners below the dateMenu [Meet, Florian; #745910]
|
||||
* Misc. bug fixes [Mario, Rui; #748338, #748541]
|
||||
|
||||
Contributors:
|
||||
Isaac Ge, Rui Matos, Florian Müllner, Meet Parikh, Mario Sanchez Prada,
|
||||
Jakub Steiner, Jasper St. Pierre
|
||||
|
||||
Translations:
|
||||
Sveinn í Felli [is], Marek Černocký [cs], laurent Soleil [oc]
|
||||
|
||||
3.16.1
|
||||
======
|
||||
* gdm: Move long session chooser menus to the side [Florian; #734352]
|
||||
* Work around background corruption with NVIDIA driver [Rui; #739178]
|
||||
* Don't allow move-to-workspace for always-sticky windows [Florian; #746782]
|
||||
* Allow switching workspaces with PgUp/PgDown in overview [Devyani; #742581]
|
||||
* Bump time PAM messages are displayed [Sarvjeet; #720885]
|
||||
* Fix "stutter" when moving window past the last workspace [Shivam; #712778]
|
||||
* Fix blurred text on login screen [Clément; #746912]
|
||||
* keyboard: Restore whole MRU list after password mode [Rui; #746605]
|
||||
* Pass event timestamps when activating remote actions [Owen; #747323]
|
||||
* Fix hung login screen when password is typed too quickly [Shivam; #737586]
|
||||
* Make on-screen keyboard work for shell chrome on wayland [Rui; #747274]
|
||||
* Implement reexec_self() for FreeBSD [Ting-Wei; #747788]
|
||||
* Allow to dismiss resident notifications [Florian; #746860]
|
||||
* Temporarily reveal legacy tray when icons are added [Florian; #746025]
|
||||
* Make concealed tray smaller to minimize overlap with apps [Florian; #746787]
|
||||
* Misc. bug fixes [Florian, Rui, Giovanni; #746323, #746579, #746902, #746364,
|
||||
#746509, #747636]
|
||||
|
||||
Contributors:
|
||||
Sarvjeet, Giovanni Campagna, Adel Gadllah, Clément Guérin, Devyani Kota,
|
||||
Ting-Wei Lan, Rui Matos, Shivam Mishra, Florian Müllner, Owen W. Taylor
|
||||
|
||||
Translations:
|
||||
Khaled Hosny [ar], Dušan Kazik [sk], Yuri Myasoedov [ru], Stas Solovey [ru],
|
||||
Hannie Dumoleyn [nl], Rūdolfs Mazurs [lv]
|
||||
|
||||
3.16.0
|
||||
======
|
||||
* Revert erroneous login dialog changes [Ray; #740142]
|
||||
|
21
configure.ac
@ -1,5 +1,6 @@
|
||||
AC_PREREQ(2.63)
|
||||
AC_INIT([gnome-shell],[3.16.0],[https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-shell],[gnome-shell])
|
||||
AC_INIT([gnome-shell],[3.18.0],[https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-shell],[gnome-shell])
|
||||
AX_IS_RELEASE([git-directory])
|
||||
|
||||
AC_CONFIG_HEADERS([config.h])
|
||||
AC_CONFIG_SRCDIR([src/shell-global.c])
|
||||
@ -63,8 +64,8 @@ AC_ARG_ENABLE([systemd],
|
||||
[enable_systemd=$enableval],
|
||||
[enable_systemd=auto])
|
||||
AS_IF([test x$enable_systemd != xno], [
|
||||
AC_MSG_CHECKING([for libsystemd-journal])
|
||||
PKG_CHECK_EXISTS([libsystemd-journal],
|
||||
AC_MSG_CHECKING([for libsystemd])
|
||||
PKG_CHECK_EXISTS([libsystemd],
|
||||
[have_systemd=yes
|
||||
AC_DEFINE([HAVE_SYSTEMD], [1], [Define if we have systemd])],
|
||||
[have_systemd=no])
|
||||
@ -74,13 +75,13 @@ AS_IF([test x$enable_systemd != xno], [
|
||||
AC_MSG_RESULT($enable_systemd)
|
||||
|
||||
CLUTTER_MIN_VERSION=1.21.5
|
||||
GOBJECT_INTROSPECTION_MIN_VERSION=0.10.1
|
||||
GOBJECT_INTROSPECTION_MIN_VERSION=1.45.4
|
||||
GJS_MIN_VERSION=1.39.0
|
||||
MUTTER_MIN_VERSION=3.16.0
|
||||
MUTTER_MIN_VERSION=3.18.0
|
||||
GTK_MIN_VERSION=3.15.0
|
||||
GIO_MIN_VERSION=2.37.0
|
||||
GIO_MIN_VERSION=2.45.3
|
||||
LIBECAL_MIN_VERSION=3.5.3
|
||||
LIBEDATASERVER_MIN_VERSION=3.13.90
|
||||
LIBEDATASERVER_MIN_VERSION=3.17.2
|
||||
TELEPATHY_GLIB_MIN_VERSION=0.17.5
|
||||
POLKIT_MIN_VERSION=0.100
|
||||
STARTUP_NOTIFICATION_MIN_VERSION=0.11
|
||||
@ -106,7 +107,7 @@ SHARED_PCS="gio-unix-2.0 >= $GIO_MIN_VERSION
|
||||
polkit-agent-1 >= $POLKIT_MIN_VERSION
|
||||
gcr-base-3 >= $GCR_MIN_VERSION"
|
||||
if test x$have_systemd = xyes; then
|
||||
SHARED_PCS="${SHARED_PCS} libsystemd-journal"
|
||||
SHARED_PCS="${SHARED_PCS} libsystemd"
|
||||
fi
|
||||
|
||||
PKG_CHECK_MODULES(GNOME_SHELL, $SHARED_PCS)
|
||||
@ -220,7 +221,7 @@ if test "$enable_man" != no; then
|
||||
fi
|
||||
AM_CONDITIONAL(ENABLE_MAN, test "$enable_man" != no)
|
||||
|
||||
GNOME_COMPILE_WARNINGS([error])
|
||||
AX_COMPILER_FLAGS()
|
||||
case "$WARN_CFLAGS" in
|
||||
*-Werror*)
|
||||
WARN_CFLAGS="$WARN_CFLAGS -Wno-error=deprecated-declarations"
|
||||
@ -269,7 +270,7 @@ Build configuration:
|
||||
Prefix: ${prefix}
|
||||
Source code location: ${srcdir}
|
||||
Compiler: ${CC}
|
||||
Compiler Warnings: $enable_compile_warnings
|
||||
Compiler Warnings: $ax_enable_compile_warnings
|
||||
|
||||
Support for NetworkManager: $have_networkmanager
|
||||
Support for GStreamer recording: $build_recorder
|
||||
|
@ -32,8 +32,10 @@
|
||||
<file>summary-counter.svg</file>
|
||||
<file>toggle-off-us.svg</file>
|
||||
<file>toggle-off-intl.svg</file>
|
||||
<file>toggle-off-hc.svg</file>
|
||||
<file>toggle-on-us.svg</file>
|
||||
<file>toggle-on-intl.svg</file>
|
||||
<file>toggle-on-hc.svg</file>
|
||||
<file>ws-switch-arrow-up.png</file>
|
||||
<file>ws-switch-arrow-down.png</file>
|
||||
</gresource>
|
||||
|
@ -51,6 +51,7 @@
|
||||
</key>
|
||||
<key name="looking-glass-history" type="as">
|
||||
<default>[]</default>
|
||||
<!-- Translators: looking glass is a debugger and inspector tool, see https://live.gnome.org/GnomeShell/LookingGlass -->
|
||||
<_summary>History for the looking glass dialog</_summary>
|
||||
</key>
|
||||
<key name="always-show-log-out" type="b">
|
||||
|
@ -10,11 +10,11 @@
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="29"
|
||||
height="29"
|
||||
width="24"
|
||||
height="24"
|
||||
id="svg10621"
|
||||
version="1.1"
|
||||
inkscape:version="0.48.2 r9819"
|
||||
inkscape:version="0.91 r13725"
|
||||
sodipodi:docname="calendar-today.svg">
|
||||
<defs
|
||||
id="defs10623">
|
||||
@ -118,17 +118,6 @@
|
||||
fx="51"
|
||||
fy="30"
|
||||
r="42" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient34508-1-3"
|
||||
id="radialGradient3113"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.72146227,0,0,0.27484277,14.205424,21.754717)"
|
||||
cx="51"
|
||||
cy="30"
|
||||
fx="51"
|
||||
fy="30"
|
||||
r="42" />
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
@ -137,22 +126,23 @@
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="15.839192"
|
||||
inkscape:cx="20.652108"
|
||||
inkscape:cy="11.839084"
|
||||
inkscape:zoom="8"
|
||||
inkscape:cx="-23.537329"
|
||||
inkscape:cy="-31.442864"
|
||||
inkscape:document-units="px"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="true"
|
||||
showgrid="false"
|
||||
fit-margin-top="0"
|
||||
fit-margin-left="0"
|
||||
fit-margin-right="0"
|
||||
fit-margin-bottom="0"
|
||||
inkscape:window-width="1280"
|
||||
inkscape:window-height="741"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="27"
|
||||
inkscape:window-maximized="1"
|
||||
borderlayer="true">
|
||||
inkscape:window-width="2133"
|
||||
inkscape:window-height="1241"
|
||||
inkscape:window-x="238"
|
||||
inkscape:window-y="88"
|
||||
inkscape:window-maximized="0"
|
||||
borderlayer="true"
|
||||
inkscape:showpageshadow="false">
|
||||
<inkscape:grid
|
||||
type="xygrid"
|
||||
id="grid3109"
|
||||
@ -169,7 +159,7 @@
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
@ -177,28 +167,12 @@
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(-469.08263,-532.99307)">
|
||||
<path
|
||||
sodipodi:type="arc"
|
||||
style="opacity:0.4625;color:#000000;fill:url(#radialGradient3113);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
|
||||
id="path34506-3"
|
||||
sodipodi:cx="51"
|
||||
sodipodi:cy="30"
|
||||
sodipodi:rx="42"
|
||||
sodipodi:ry="16"
|
||||
d="M 9,29.999999 A 42,16 0 0 1 93,30 l -42,0 z"
|
||||
sodipodi:start="3.1415927"
|
||||
sodipodi:end="6.2831853"
|
||||
transform="matrix(0.43692393,0,0,1.3783114,461.29951,517.6437)"
|
||||
inkscape:export-filename="/home/jimmac/src/cvs/gnome/gnome-shell-design/mockups/motion/textures/panel.png"
|
||||
inkscape:export-xdpi="90"
|
||||
inkscape:export-ydpi="90" />
|
||||
<rect
|
||||
style="fill:#ffffff;fill-opacity:0.50196078;stroke-width:0.43599999;stroke-miterlimit:4;stroke-dasharray:none"
|
||||
id="rect2996"
|
||||
width="31"
|
||||
height="3"
|
||||
x="468.08264"
|
||||
y="558.99304" />
|
||||
transform="translate(-469.08263,-537.99307)">
|
||||
<circle
|
||||
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#ffffff;fill-opacity:0.23756906;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
|
||||
id="path7305"
|
||||
cx="481.57138"
|
||||
cy="559.4649"
|
||||
r="1.5" />
|
||||
</g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 6.1 KiB After Width: | Height: | Size: 5.6 KiB |
@ -37,14 +37,13 @@ stage {
|
||||
icon-shadow: 0 1px black; }
|
||||
.button:focus {
|
||||
color: #eeeeec;
|
||||
border-color: #215d9c;
|
||||
box-shadow: inset 0 1px #454f52;
|
||||
text-shadow: 0 1px black;
|
||||
icon-shadow: 0 1px black; }
|
||||
icon-shadow: 0 1px black;
|
||||
box-shadow: inset 0px 0px 0px 1px #215d9c; }
|
||||
.button:insensitive {
|
||||
color: #7f7f7f;
|
||||
color: gray;
|
||||
border-color: rgba(0, 0, 0, 0.7);
|
||||
background-color: rgba(62, 67, 68, 0.7);
|
||||
background-color: rgba(62, 67, 69, 0.7);
|
||||
box-shadow: none;
|
||||
text-shadow: none;
|
||||
icon-shadow: none; }
|
||||
@ -52,9 +51,46 @@ stage {
|
||||
color: white;
|
||||
border-color: rgba(0, 0, 0, 0.7);
|
||||
background-color: #222728;
|
||||
box-shadow: inset 0 0 black;
|
||||
text-shadow: none;
|
||||
icon-shadow: none; }
|
||||
|
||||
.modal-dialog-linked-button {
|
||||
border-right-width: 1px;
|
||||
color: #eeeeec;
|
||||
background-color: #2e3436;
|
||||
border-color: rgba(0, 0, 0, 0.7);
|
||||
box-shadow: inset 0 1px #454f52;
|
||||
text-shadow: 0 1px black;
|
||||
icon-shadow: 0 1px black;
|
||||
padding: 12px; }
|
||||
.modal-dialog-linked-button:insensitive {
|
||||
color: gray;
|
||||
border-color: rgba(0, 0, 0, 0.7);
|
||||
background-color: rgba(62, 67, 69, 0.7);
|
||||
box-shadow: none;
|
||||
text-shadow: none;
|
||||
icon-shadow: none; }
|
||||
.modal-dialog-linked-button:active {
|
||||
color: white;
|
||||
border-color: rgba(0, 0, 0, 0.7);
|
||||
background-color: #222728;
|
||||
box-shadow: inset 0 0 black;
|
||||
text-shadow: none;
|
||||
icon-shadow: none; }
|
||||
.modal-dialog-linked-button:focus {
|
||||
color: #eeeeec;
|
||||
text-shadow: 0 1px black;
|
||||
icon-shadow: 0 1px black;
|
||||
box-shadow: inset 0px 0px 0px 1px #215d9c; }
|
||||
.modal-dialog-linked-button:first-child {
|
||||
border-radius: 0px 0px 0px 6px; }
|
||||
.modal-dialog-linked-button:last-child {
|
||||
border-right-width: 0px;
|
||||
border-radius: 0px 0px 6px 0px; }
|
||||
.modal-dialog-linked-button:first-child:last-child {
|
||||
border-right-width: 0px;
|
||||
border-radius: 0px 0px 6px 6px; }
|
||||
|
||||
/* Entries */
|
||||
StEntry {
|
||||
@ -71,8 +107,8 @@ StEntry {
|
||||
box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.4);
|
||||
border-color: rgba(166, 166, 166, 0.5); }
|
||||
StEntry:insensitive {
|
||||
color: #7f7f7f;
|
||||
border-color: #0d0d0d;
|
||||
color: gray;
|
||||
border-color: #0e0e0e;
|
||||
box-shadow: none; }
|
||||
StEntry StIcon.capslock-warning {
|
||||
icon-size: 16px;
|
||||
@ -95,10 +131,10 @@ StScrollBar {
|
||||
background-color: transparent; }
|
||||
StScrollBar StButton#vhandle, StScrollBar StButton#hhandle {
|
||||
border-radius: 8px;
|
||||
background-color: #000;
|
||||
background-color: #999999;
|
||||
margin: 3px; }
|
||||
StScrollBar StButton#vhandle:hover, StScrollBar StButton#hhandle:hover {
|
||||
background-color: #1a1a1a; }
|
||||
background-color: #cccccc; }
|
||||
StScrollBar StButton#vhandle:active, StScrollBar StButton#hhandle:active {
|
||||
background-color: #215d9c; }
|
||||
|
||||
@ -106,7 +142,7 @@ StScrollBar {
|
||||
.slider {
|
||||
height: 1em;
|
||||
-slider-height: 0.3em;
|
||||
-slider-background-color: #0d0d0d;
|
||||
-slider-background-color: #0e0e0e;
|
||||
-slider-border-color: black;
|
||||
-slider-active-background-color: #215d9c;
|
||||
-slider-active-border-color: #184472;
|
||||
@ -160,11 +196,12 @@ StScrollBar {
|
||||
background-color: white; }
|
||||
|
||||
.modal-dialog {
|
||||
border-radius: 5px;
|
||||
border-radius: 9px;
|
||||
color: #eeeeec;
|
||||
background-color: rgba(23, 25, 26, 0.95);
|
||||
border: 3px solid rgba(238, 238, 236, 0.5);
|
||||
padding: 24px; }
|
||||
border: 3px solid rgba(238, 238, 236, 0.5); }
|
||||
.modal-dialog .modal-dialog-content-box {
|
||||
padding: 24px; }
|
||||
.modal-dialog .run-dialog-entry {
|
||||
width: 20em;
|
||||
margin-bottom: 6px; }
|
||||
@ -179,10 +216,6 @@ StScrollBar {
|
||||
color: #d6d6d1;
|
||||
padding-bottom: .4em; }
|
||||
|
||||
.button-dialog-button-box {
|
||||
spacing: 18px;
|
||||
padding-top: 48px; }
|
||||
|
||||
.show-processes-dialog-subject,
|
||||
.mount-question-dialog-subject,
|
||||
.end-session-dialog-subject {
|
||||
@ -411,7 +444,7 @@ StScrollBar {
|
||||
|
||||
.popup-menu-ornament {
|
||||
text-align: right;
|
||||
width: 1em; }
|
||||
width: 1.2em; }
|
||||
|
||||
.popup-menu-boxpointer,
|
||||
.candidate-popup-boxpointer {
|
||||
@ -488,10 +521,9 @@ StScrollBar {
|
||||
|
||||
.switcher-arrow {
|
||||
border-color: transparent;
|
||||
color: black; }
|
||||
|
||||
.switcher-arrow:highlighted {
|
||||
color: #fff; }
|
||||
color: rgba(255, 255, 255, 0.8); }
|
||||
.switcher-arrow:highlighted {
|
||||
color: #fff; }
|
||||
|
||||
.input-source-switcher-symbol {
|
||||
font-size: 34pt;
|
||||
@ -561,7 +593,7 @@ StScrollBar {
|
||||
-panel-corner-border-color: transparent; }
|
||||
#panel .panel-corner:active, #panel .panel-corner:overview, #panel .panel-corner:focus {
|
||||
-panel-corner-border-color: #256ab1; }
|
||||
#panel .panel-corner.lock-screen, #panel .panel-corner.login-screen, #panel .panel-cornerunlock-screen {
|
||||
#panel .panel-corner.lock-screen, #panel .panel-corner.login-screen, #panel .panel-corner.unlock-screen {
|
||||
-panel-corner-radius: 0;
|
||||
-panel-corner-background-color: transparent;
|
||||
-panel-corner-border-color: transparent; }
|
||||
@ -703,15 +735,16 @@ StScrollBar {
|
||||
border-left-width: 1px; }
|
||||
|
||||
.calendar-nonwork-day {
|
||||
color: #7f7f7f; }
|
||||
color: gray; }
|
||||
|
||||
.calendar-today {
|
||||
font-weight: bold;
|
||||
border: 1px solid rgba(0, 0, 0, 0.5); }
|
||||
|
||||
.calendar-day-with-events {
|
||||
color: #f2f2f2;
|
||||
font-weight: bold; }
|
||||
color: white;
|
||||
font-weight: bold;
|
||||
background-image: url("resource:///org/gnome/shell/theme/calendar-today.svg"); }
|
||||
|
||||
.calendar-other-month-day {
|
||||
color: rgba(255, 255, 255, 0.15);
|
||||
@ -754,7 +787,12 @@ StScrollBar {
|
||||
padding: 8px 8px 8px 0px; }
|
||||
|
||||
.message-icon-bin > StIcon {
|
||||
icon-size: 48px; }
|
||||
icon-size: 32px; }
|
||||
|
||||
.message-secondary-bin:ltr {
|
||||
padding-left: 8px; }
|
||||
.message-secondary-bin:rtl {
|
||||
padding-right: 8px; }
|
||||
|
||||
.message-secondary-bin {
|
||||
color: #999999; }
|
||||
@ -763,14 +801,20 @@ StScrollBar {
|
||||
icon-size: 16px; }
|
||||
|
||||
.message-title {
|
||||
font-weight: bold; }
|
||||
font-weight: bold;
|
||||
font-size: 1.1em; }
|
||||
|
||||
.message-content {
|
||||
padding: 8px; }
|
||||
padding: 8px;
|
||||
font-size: .9em; }
|
||||
|
||||
.system-switch-user-submenu-icon {
|
||||
icon-size: 24px;
|
||||
border: 1px solid rgba(255, 255, 255, 0.4); }
|
||||
.system-switch-user-submenu-icon.user-icon {
|
||||
icon-size: 20px;
|
||||
padding: 0 2px; }
|
||||
|
||||
.system-switch-user-submenu-icon.default-icon {
|
||||
icon-size: 16px;
|
||||
padding: 0 4px; }
|
||||
|
||||
#appMenu {
|
||||
spinner-image: url("resource:///org/gnome/shell/theme/process-working.svg");
|
||||
@ -834,7 +878,8 @@ StScrollBar {
|
||||
min-width: 470px; }
|
||||
|
||||
.nm-dialog-content {
|
||||
spacing: 20px; }
|
||||
spacing: 20px;
|
||||
padding: 24px; }
|
||||
|
||||
.nm-dialog-header-hbox {
|
||||
spacing: 10px; }
|
||||
@ -1016,7 +1061,7 @@ StScrollBar {
|
||||
color: white;
|
||||
border-color: rgba(0, 0, 0, 0.7);
|
||||
background-color: #222728;
|
||||
box-shadow: none;
|
||||
box-shadow: inset 0 0 black;
|
||||
text-shadow: none;
|
||||
icon-shadow: none; }
|
||||
.app-view-control:first-child {
|
||||
@ -1335,10 +1380,9 @@ StScrollBar {
|
||||
color: white; }
|
||||
.keyboard-key:focus {
|
||||
color: #eeeeec;
|
||||
border-color: #215d9c;
|
||||
box-shadow: inset 0 1px #454f52;
|
||||
text-shadow: 0 1px black;
|
||||
icon-shadow: 0 1px black; }
|
||||
icon-shadow: 0 1px black;
|
||||
box-shadow: inset 0px 0px 0px 1px #215d9c; }
|
||||
.keyboard-key:hover, .keyboard-key:checked {
|
||||
color: white;
|
||||
border-color: rgba(0, 0, 0, 0.7);
|
||||
@ -1350,7 +1394,7 @@ StScrollBar {
|
||||
color: white;
|
||||
border-color: rgba(0, 0, 0, 0.7);
|
||||
background-color: #222728;
|
||||
box-shadow: none;
|
||||
box-shadow: inset 0 0 black;
|
||||
text-shadow: none;
|
||||
icon-shadow: none; }
|
||||
.keyboard-key:grayed {
|
||||
@ -1443,13 +1487,13 @@ StScrollBar {
|
||||
color: white;
|
||||
border-color: rgba(0, 0, 0, 0.7);
|
||||
background-color: #1c5187;
|
||||
box-shadow: none;
|
||||
box-shadow: inset 0 0 black;
|
||||
text-shadow: none;
|
||||
icon-shadow: none; }
|
||||
.login-dialog .modal-dialog-button:default:insensitive {
|
||||
color: #7f7f7f;
|
||||
color: gray;
|
||||
border-color: rgba(0, 0, 0, 0.7);
|
||||
background-color: rgba(62, 67, 68, 0.7);
|
||||
background-color: rgba(62, 67, 69, 0.7);
|
||||
box-shadow: none;
|
||||
text-shadow: none;
|
||||
icon-shadow: none; }
|
||||
@ -1696,3 +1740,11 @@ StScrollBar {
|
||||
|
||||
stage {
|
||||
-st-icon-style: symbolic; }
|
||||
|
||||
.toggle-switch {
|
||||
width: 48px; }
|
||||
|
||||
.toggle-switch-us, .toggle-switch-intl {
|
||||
background-image: url("resource:///org/gnome/shell/theme/toggle-off-hc.svg"); }
|
||||
.toggle-switch-us:checked, .toggle-switch-intl:checked {
|
||||
background-image: url("resource:///org/gnome/shell/theme/toggle-on-hc.svg"); }
|
||||
|
@ -6,3 +6,9 @@
|
||||
stage {
|
||||
-st-icon-style: symbolic;
|
||||
}
|
||||
|
||||
.toggle-switch { width: 48px; }
|
||||
.toggle-switch-us, .toggle-switch-intl {
|
||||
background-image: url("resource:///org/gnome/shell/theme/toggle-off-hc.svg");
|
||||
&:checked { background-image: url("resource:///org/gnome/shell/theme/toggle-on-hc.svg"); }
|
||||
}
|
||||
|
@ -37,14 +37,13 @@ stage {
|
||||
icon-shadow: 0 1px black; }
|
||||
.button:focus {
|
||||
color: #eeeeec;
|
||||
border-color: #215d9c;
|
||||
box-shadow: inset 0 1px #454f52;
|
||||
text-shadow: 0 1px black;
|
||||
icon-shadow: 0 1px black; }
|
||||
icon-shadow: 0 1px black;
|
||||
box-shadow: inset 0px 0px 0px 1px #215d9c; }
|
||||
.button:insensitive {
|
||||
color: #939695;
|
||||
color: #949796;
|
||||
border-color: rgba(0, 0, 0, 0.7);
|
||||
background-color: rgba(66, 71, 73, 0.7);
|
||||
background-color: rgba(66, 72, 73, 0.7);
|
||||
box-shadow: none;
|
||||
text-shadow: none;
|
||||
icon-shadow: none; }
|
||||
@ -52,9 +51,46 @@ stage {
|
||||
color: white;
|
||||
border-color: rgba(0, 0, 0, 0.7);
|
||||
background-color: #222728;
|
||||
box-shadow: inset 0 0 black;
|
||||
text-shadow: none;
|
||||
icon-shadow: none; }
|
||||
|
||||
.modal-dialog-linked-button {
|
||||
border-right-width: 1px;
|
||||
color: #eeeeec;
|
||||
background-color: #2e3436;
|
||||
border-color: rgba(0, 0, 0, 0.7);
|
||||
box-shadow: inset 0 1px #454f52;
|
||||
text-shadow: 0 1px black;
|
||||
icon-shadow: 0 1px black;
|
||||
padding: 12px; }
|
||||
.modal-dialog-linked-button:insensitive {
|
||||
color: #949796;
|
||||
border-color: rgba(0, 0, 0, 0.7);
|
||||
background-color: rgba(66, 72, 73, 0.7);
|
||||
box-shadow: none;
|
||||
text-shadow: none;
|
||||
icon-shadow: none; }
|
||||
.modal-dialog-linked-button:active {
|
||||
color: white;
|
||||
border-color: rgba(0, 0, 0, 0.7);
|
||||
background-color: #222728;
|
||||
box-shadow: inset 0 0 black;
|
||||
text-shadow: none;
|
||||
icon-shadow: none; }
|
||||
.modal-dialog-linked-button:focus {
|
||||
color: #eeeeec;
|
||||
text-shadow: 0 1px black;
|
||||
icon-shadow: 0 1px black;
|
||||
box-shadow: inset 0px 0px 0px 1px #215d9c; }
|
||||
.modal-dialog-linked-button:first-child {
|
||||
border-radius: 0px 0px 0px 6px; }
|
||||
.modal-dialog-linked-button:last-child {
|
||||
border-right-width: 0px;
|
||||
border-radius: 0px 0px 6px 0px; }
|
||||
.modal-dialog-linked-button:first-child:last-child {
|
||||
border-right-width: 0px;
|
||||
border-radius: 0px 0px 6px 6px; }
|
||||
|
||||
/* Entries */
|
||||
StEntry {
|
||||
@ -71,8 +107,8 @@ StEntry {
|
||||
box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.4);
|
||||
border-color: rgba(154, 154, 142, 0.5); }
|
||||
StEntry:insensitive {
|
||||
color: #939695;
|
||||
border-color: #323636;
|
||||
color: #949796;
|
||||
border-color: #333636;
|
||||
box-shadow: none; }
|
||||
StEntry StIcon.capslock-warning {
|
||||
icon-size: 16px;
|
||||
@ -95,10 +131,10 @@ StScrollBar {
|
||||
background-color: transparent; }
|
||||
StScrollBar StButton#vhandle, StScrollBar StButton#hhandle {
|
||||
border-radius: 8px;
|
||||
background-color: #393f3f;
|
||||
background-color: #a6a8a7;
|
||||
margin: 3px; }
|
||||
StScrollBar StButton#vhandle:hover, StScrollBar StButton#hhandle:hover {
|
||||
background-color: #515a5a; }
|
||||
background-color: #cacbc9; }
|
||||
StScrollBar StButton#vhandle:active, StScrollBar StButton#hhandle:active {
|
||||
background-color: #215d9c; }
|
||||
|
||||
@ -106,7 +142,7 @@ StScrollBar {
|
||||
.slider {
|
||||
height: 1em;
|
||||
-slider-height: 0.3em;
|
||||
-slider-background-color: #323636;
|
||||
-slider-background-color: #333636;
|
||||
-slider-border-color: #1c1f1f;
|
||||
-slider-active-background-color: #215d9c;
|
||||
-slider-active-border-color: #184472;
|
||||
@ -160,11 +196,12 @@ StScrollBar {
|
||||
background-color: white; }
|
||||
|
||||
.modal-dialog {
|
||||
border-radius: 5px;
|
||||
border-radius: 9px;
|
||||
color: #eeeeec;
|
||||
background-color: rgba(23, 25, 26, 0.95);
|
||||
border: 3px solid rgba(238, 238, 236, 0.5);
|
||||
padding: 24px; }
|
||||
border: 3px solid rgba(238, 238, 236, 0.5); }
|
||||
.modal-dialog .modal-dialog-content-box {
|
||||
padding: 24px; }
|
||||
.modal-dialog .run-dialog-entry {
|
||||
width: 20em;
|
||||
margin-bottom: 6px; }
|
||||
@ -179,10 +216,6 @@ StScrollBar {
|
||||
color: #d6d6d1;
|
||||
padding-bottom: .4em; }
|
||||
|
||||
.button-dialog-button-box {
|
||||
spacing: 18px;
|
||||
padding-top: 48px; }
|
||||
|
||||
.show-processes-dialog-subject,
|
||||
.mount-question-dialog-subject,
|
||||
.end-session-dialog-subject {
|
||||
@ -411,7 +444,7 @@ StScrollBar {
|
||||
|
||||
.popup-menu-ornament {
|
||||
text-align: right;
|
||||
width: 1em; }
|
||||
width: 1.2em; }
|
||||
|
||||
.popup-menu-boxpointer,
|
||||
.candidate-popup-boxpointer {
|
||||
@ -488,10 +521,9 @@ StScrollBar {
|
||||
|
||||
.switcher-arrow {
|
||||
border-color: transparent;
|
||||
color: #1c1f1f; }
|
||||
|
||||
.switcher-arrow:highlighted {
|
||||
color: #eeeeec; }
|
||||
color: rgba(238, 238, 236, 0.8); }
|
||||
.switcher-arrow:highlighted {
|
||||
color: #eeeeec; }
|
||||
|
||||
.input-source-switcher-symbol {
|
||||
font-size: 34pt;
|
||||
@ -561,7 +593,7 @@ StScrollBar {
|
||||
-panel-corner-border-color: transparent; }
|
||||
#panel .panel-corner:active, #panel .panel-corner:overview, #panel .panel-corner:focus {
|
||||
-panel-corner-border-color: #256ab1; }
|
||||
#panel .panel-corner.lock-screen, #panel .panel-corner.login-screen, #panel .panel-cornerunlock-screen {
|
||||
#panel .panel-corner.lock-screen, #panel .panel-corner.login-screen, #panel .panel-corner.unlock-screen {
|
||||
-panel-corner-radius: 0;
|
||||
-panel-corner-background-color: transparent;
|
||||
-panel-corner-border-color: transparent; }
|
||||
@ -703,15 +735,16 @@ StScrollBar {
|
||||
border-left-width: 1px; }
|
||||
|
||||
.calendar-nonwork-day {
|
||||
color: #939695; }
|
||||
color: #949796; }
|
||||
|
||||
.calendar-today {
|
||||
font-weight: bold;
|
||||
border: 1px solid rgba(28, 31, 31, 0.5); }
|
||||
|
||||
.calendar-day-with-events {
|
||||
color: #e2e2df;
|
||||
font-weight: bold; }
|
||||
color: white;
|
||||
font-weight: bold;
|
||||
background-image: url("resource:///org/gnome/shell/theme/calendar-today.svg"); }
|
||||
|
||||
.calendar-other-month-day {
|
||||
color: rgba(238, 238, 236, 0.15);
|
||||
@ -754,7 +787,12 @@ StScrollBar {
|
||||
padding: 8px 8px 8px 0px; }
|
||||
|
||||
.message-icon-bin > StIcon {
|
||||
icon-size: 48px; }
|
||||
icon-size: 32px; }
|
||||
|
||||
.message-secondary-bin:ltr {
|
||||
padding-left: 8px; }
|
||||
.message-secondary-bin:rtl {
|
||||
padding-right: 8px; }
|
||||
|
||||
.message-secondary-bin {
|
||||
color: #8e8e80; }
|
||||
@ -763,14 +801,20 @@ StScrollBar {
|
||||
icon-size: 16px; }
|
||||
|
||||
.message-title {
|
||||
font-weight: bold; }
|
||||
font-weight: bold;
|
||||
font-size: 1.1em; }
|
||||
|
||||
.message-content {
|
||||
padding: 8px; }
|
||||
padding: 8px;
|
||||
font-size: .9em; }
|
||||
|
||||
.system-switch-user-submenu-icon {
|
||||
icon-size: 24px;
|
||||
border: 1px solid rgba(238, 238, 236, 0.4); }
|
||||
.system-switch-user-submenu-icon.user-icon {
|
||||
icon-size: 20px;
|
||||
padding: 0 2px; }
|
||||
|
||||
.system-switch-user-submenu-icon.default-icon {
|
||||
icon-size: 16px;
|
||||
padding: 0 4px; }
|
||||
|
||||
#appMenu {
|
||||
spinner-image: url("resource:///org/gnome/shell/theme/process-working.svg");
|
||||
@ -779,7 +823,7 @@ StScrollBar {
|
||||
color: transparent; }
|
||||
|
||||
.aggregate-menu {
|
||||
width: 360px; }
|
||||
width: 280px; }
|
||||
.aggregate-menu .popup-menu-icon {
|
||||
padding: 0 4px; }
|
||||
|
||||
@ -834,7 +878,8 @@ StScrollBar {
|
||||
min-width: 470px; }
|
||||
|
||||
.nm-dialog-content {
|
||||
spacing: 20px; }
|
||||
spacing: 20px;
|
||||
padding: 24px; }
|
||||
|
||||
.nm-dialog-header-hbox {
|
||||
spacing: 10px; }
|
||||
@ -1016,7 +1061,7 @@ StScrollBar {
|
||||
color: white;
|
||||
border-color: rgba(0, 0, 0, 0.7);
|
||||
background-color: #222728;
|
||||
box-shadow: none;
|
||||
box-shadow: inset 0 0 black;
|
||||
text-shadow: none;
|
||||
icon-shadow: none; }
|
||||
.app-view-control:first-child {
|
||||
@ -1335,10 +1380,9 @@ StScrollBar {
|
||||
color: white; }
|
||||
.keyboard-key:focus {
|
||||
color: #eeeeec;
|
||||
border-color: #215d9c;
|
||||
box-shadow: inset 0 1px #454f52;
|
||||
text-shadow: 0 1px black;
|
||||
icon-shadow: 0 1px black; }
|
||||
icon-shadow: 0 1px black;
|
||||
box-shadow: inset 0px 0px 0px 1px #215d9c; }
|
||||
.keyboard-key:hover, .keyboard-key:checked {
|
||||
color: white;
|
||||
border-color: rgba(0, 0, 0, 0.7);
|
||||
@ -1350,7 +1394,7 @@ StScrollBar {
|
||||
color: white;
|
||||
border-color: rgba(0, 0, 0, 0.7);
|
||||
background-color: #222728;
|
||||
box-shadow: none;
|
||||
box-shadow: inset 0 0 black;
|
||||
text-shadow: none;
|
||||
icon-shadow: none; }
|
||||
.keyboard-key:grayed {
|
||||
@ -1443,13 +1487,13 @@ StScrollBar {
|
||||
color: white;
|
||||
border-color: rgba(0, 0, 0, 0.7);
|
||||
background-color: #1c5187;
|
||||
box-shadow: none;
|
||||
box-shadow: inset 0 0 black;
|
||||
text-shadow: none;
|
||||
icon-shadow: none; }
|
||||
.login-dialog .modal-dialog-button:default:insensitive {
|
||||
color: #939695;
|
||||
color: #949796;
|
||||
border-color: rgba(0, 0, 0, 0.7);
|
||||
background-color: rgba(66, 71, 73, 0.7);
|
||||
background-color: rgba(66, 72, 73, 0.7);
|
||||
box-shadow: none;
|
||||
text-shadow: none;
|
||||
icon-shadow: none; }
|
||||
|
Before Width: | Height: | Size: 26 KiB After Width: | Height: | Size: 98 KiB |
133
data/theme/toggle-off-hc.svg
Normal file
@ -0,0 +1,133 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="48"
|
||||
height="22"
|
||||
id="svg2857"
|
||||
version="1.1"
|
||||
inkscape:version="0.91 r13725"
|
||||
sodipodi:docname="toggle-off-hc.svg">
|
||||
<defs
|
||||
id="defs2859">
|
||||
<inkscape:perspective
|
||||
sodipodi:type="inkscape:persp3d"
|
||||
inkscape:vp_x="0 : 526.18109 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_z="744.09448 : 526.18109 : 1"
|
||||
inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
|
||||
id="perspective2865" />
|
||||
<inkscape:perspective
|
||||
id="perspective2843"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:path-effect
|
||||
effect="spiro"
|
||||
id="path-effect77541-4"
|
||||
is_visible="true" />
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#000000"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="1"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="1"
|
||||
inkscape:cx="-6.1820581"
|
||||
inkscape:cy="-16.463788"
|
||||
inkscape:document-units="px"
|
||||
inkscape:current-layer="g37994"
|
||||
showgrid="false"
|
||||
inkscape:window-width="2560"
|
||||
inkscape:window-height="1364"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="27"
|
||||
inkscape:window-maximized="1"
|
||||
borderlayer="true"
|
||||
inkscape:showpageshadow="false"
|
||||
inkscape:snap-nodes="false"
|
||||
inkscape:snap-bbox="true"
|
||||
showborder="true">
|
||||
<inkscape:grid
|
||||
type="xygrid"
|
||||
id="grid12954"
|
||||
empspacing="5"
|
||||
visible="true"
|
||||
enabled="true"
|
||||
snapvisiblegridlinesonly="true" />
|
||||
</sodipodi:namedview>
|
||||
<metadata
|
||||
id="metadata2862">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(-444.64286,-781.36218)">
|
||||
<g
|
||||
transform="matrix(0.6526046,0,0,0.80554422,99.592644,-636.32172)"
|
||||
id="g37994">
|
||||
<g
|
||||
transform="matrix(1.5323214,0,0,1.2413968,-324.76058,489.69039)"
|
||||
id="toggle-off"
|
||||
inkscape:label="#g8477">
|
||||
<circle
|
||||
cy="1033.993"
|
||||
cx="571.95966"
|
||||
id="path8444"
|
||||
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#555753;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
|
||||
r="7" />
|
||||
<rect
|
||||
ry="2.0108337"
|
||||
rx="1.9562569"
|
||||
y="1031.9885"
|
||||
x="565.0083"
|
||||
height="4.0216675"
|
||||
width="34.850178"
|
||||
id="rect8461"
|
||||
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#555753;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
|
||||
</g>
|
||||
<g
|
||||
transform="matrix(1.5323214,0,0,1.2413968,-324.85635,491.16456)"
|
||||
id="toggle-on"
|
||||
inkscape:label="#g8481">
|
||||
<rect
|
||||
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#3465a4;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
|
||||
id="rect8475"
|
||||
width="34.850178"
|
||||
height="4.0216675"
|
||||
x="565.0083"
|
||||
y="1070.9279"
|
||||
rx="1.9562569"
|
||||
ry="2.0108337" />
|
||||
<circle
|
||||
transform="scale(-1,1)"
|
||||
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#3465a4;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
|
||||
id="circle8463"
|
||||
cx="-591.0213"
|
||||
cy="1072.9402"
|
||||
r="9" />
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 6.1 KiB |
113
data/theme/toggle-on-hc.svg
Normal file
@ -0,0 +1,113 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="48"
|
||||
height="22"
|
||||
id="svg2857"
|
||||
version="1.1"
|
||||
inkscape:version="0.91 r13725"
|
||||
sodipodi:docname="toggle-on-hc.svg">
|
||||
<defs
|
||||
id="defs2859">
|
||||
<inkscape:perspective
|
||||
sodipodi:type="inkscape:persp3d"
|
||||
inkscape:vp_x="0 : 526.18109 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_z="744.09448 : 526.18109 : 1"
|
||||
inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
|
||||
id="perspective2865" />
|
||||
<inkscape:perspective
|
||||
id="perspective2843"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:path-effect
|
||||
effect="spiro"
|
||||
id="path-effect77541-4"
|
||||
is_visible="true" />
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#000000"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="1"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="1"
|
||||
inkscape:cx="-222.95215"
|
||||
inkscape:cy="3.9378433"
|
||||
inkscape:document-units="px"
|
||||
inkscape:current-layer="g37994"
|
||||
showgrid="false"
|
||||
inkscape:window-width="2560"
|
||||
inkscape:window-height="1364"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="27"
|
||||
inkscape:window-maximized="1"
|
||||
borderlayer="true"
|
||||
inkscape:showpageshadow="false"
|
||||
inkscape:snap-nodes="false"
|
||||
inkscape:snap-bbox="true"
|
||||
showborder="true">
|
||||
<inkscape:grid
|
||||
type="xygrid"
|
||||
id="grid12954"
|
||||
empspacing="5"
|
||||
visible="true"
|
||||
enabled="true"
|
||||
snapvisiblegridlinesonly="true" />
|
||||
</sodipodi:namedview>
|
||||
<metadata
|
||||
id="metadata2862">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(-444.64286,-781.36218)">
|
||||
<g
|
||||
transform="matrix(0.6526046,0,0,0.80554422,99.592644,-636.32172)"
|
||||
id="g37994">
|
||||
<g
|
||||
transform="matrix(1.5323214,0,0,1.2413968,-324.85635,441.50868)"
|
||||
id="toggle-on"
|
||||
inkscape:label="#g8481">
|
||||
<rect
|
||||
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#3465a4;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
|
||||
id="rect8475"
|
||||
width="34.850178"
|
||||
height="4.0216675"
|
||||
x="565.0083"
|
||||
y="1070.9279"
|
||||
rx="1.9562569"
|
||||
ry="2.0108337" />
|
||||
<circle
|
||||
transform="scale(-1,1)"
|
||||
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#3465a4;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
|
||||
id="circle8463"
|
||||
cx="-591.0213"
|
||||
cy="1072.9402"
|
||||
r="9" />
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 4.4 KiB |
@ -14,7 +14,7 @@
|
||||
height="22"
|
||||
id="svg2857"
|
||||
version="1.1"
|
||||
inkscape:version="0.48.5 r10040"
|
||||
inkscape:version="0.91 r13725"
|
||||
sodipodi:docname="toggle-on-intl.svg">
|
||||
<defs
|
||||
id="defs2859">
|
||||
@ -52,7 +52,7 @@
|
||||
<stop
|
||||
id="stop77465"
|
||||
offset="1"
|
||||
style="stop-color:#204a87;stop-opacity:1" />
|
||||
style="stop-color:#205b9a;stop-opacity:1" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
@ -88,14 +88,14 @@
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="1"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="32"
|
||||
inkscape:cx="17.255148"
|
||||
inkscape:cy="8.9252639"
|
||||
inkscape:zoom="1"
|
||||
inkscape:cx="37.410841"
|
||||
inkscape:cy="16.009314"
|
||||
inkscape:document-units="px"
|
||||
inkscape:current-layer="g37994"
|
||||
showgrid="true"
|
||||
showgrid="false"
|
||||
inkscape:window-width="2560"
|
||||
inkscape:window-height="1375"
|
||||
inkscape:window-height="1376"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="27"
|
||||
inkscape:window-maximized="1"
|
||||
|
Before Width: | Height: | Size: 6.8 KiB After Width: | Height: | Size: 6.8 KiB |
@ -14,7 +14,7 @@
|
||||
height="22"
|
||||
id="svg2857"
|
||||
version="1.1"
|
||||
inkscape:version="0.48.5 r10040"
|
||||
inkscape:version="0.91 r13725"
|
||||
sodipodi:docname="toggle-on-us.svg">
|
||||
<defs
|
||||
id="defs2859">
|
||||
@ -32,28 +32,6 @@
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient77461"
|
||||
id="linearGradient77551"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.3066667,0,0,1,-841.64667,-483)"
|
||||
x1="1164.7644"
|
||||
y1="962.93695"
|
||||
x2="1164.7644"
|
||||
y2="970.51404" />
|
||||
<linearGradient
|
||||
id="linearGradient77461"
|
||||
inkscape:collect="always">
|
||||
<stop
|
||||
id="stop77463"
|
||||
offset="0"
|
||||
style="stop-color:#182f4c;stop-opacity:1" />
|
||||
<stop
|
||||
id="stop77465"
|
||||
offset="1"
|
||||
style="stop-color:#204a87;stop-opacity:1" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient76469-7-7-4"
|
||||
@ -80,6 +58,38 @@
|
||||
effect="spiro"
|
||||
id="path-effect77541-4"
|
||||
is_visible="true" />
|
||||
<linearGradient
|
||||
id="linearGradient77461-1"
|
||||
inkscape:collect="always">
|
||||
<stop
|
||||
id="stop77463-1"
|
||||
offset="0"
|
||||
style="stop-color:#182f4c;stop-opacity:1" />
|
||||
<stop
|
||||
id="stop77465-4"
|
||||
offset="1"
|
||||
style="stop-color:#205b9a;stop-opacity:1" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient77461-1"
|
||||
id="linearGradient77551-6-5"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.8527367,0,0,0.80554422,-969.41608,-778.00299)"
|
||||
x1="1164.7644"
|
||||
y1="962.93695"
|
||||
x2="1164.7644"
|
||||
y2="970.51404" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient77461-1"
|
||||
id="linearGradient11198"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.3066667,0,0,1,-1066.3709,794.25325)"
|
||||
x1="1322.5831"
|
||||
y1="-312.51855"
|
||||
x2="1322.5831"
|
||||
y2="-306.53461" />
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
@ -89,13 +99,13 @@
|
||||
inkscape:pageopacity="1"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="1"
|
||||
inkscape:cx="33.380898"
|
||||
inkscape:cy="6.9658271"
|
||||
inkscape:cx="-26.798898"
|
||||
inkscape:cy="5.3753009"
|
||||
inkscape:document-units="px"
|
||||
inkscape:current-layer="g37994"
|
||||
showgrid="false"
|
||||
inkscape:window-width="2560"
|
||||
inkscape:window-height="1375"
|
||||
inkscape:window-height="1376"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="27"
|
||||
inkscape:window-maximized="1"
|
||||
@ -152,7 +162,7 @@
|
||||
height="25"
|
||||
width="98"
|
||||
id="rect38000"
|
||||
style="color:#000000;fill:url(#linearGradient77551);fill-opacity:1;fill-rule:nonzero;stroke:#182f4c;stroke-width:1.37920964;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
|
||||
style="color:#000000;fill:url(#linearGradient11198);fill-opacity:1;fill-rule:nonzero;stroke:#182f4c;stroke-width:1.37920964;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;clip-rule:nonzero;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;filter-blend-mode:normal;filter-gaussianBlur-deviation:0;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto" />
|
||||
</g>
|
||||
<g
|
||||
transform="translate(2.0625,-2)"
|
||||
|
Before Width: | Height: | Size: 7.0 KiB After Width: | Height: | Size: 7.7 KiB |
@ -35,7 +35,6 @@
|
||||
<xi:include href="xml/st-bin.xml"/>
|
||||
<xi:include href="xml/st-box-layout.xml"/>
|
||||
<xi:include href="xml/st-scroll-view.xml"/>
|
||||
<xi:include href="xml/st-table.xml"/>
|
||||
</chapter>
|
||||
|
||||
<chapter id="styling">
|
||||
|
@ -54,7 +54,6 @@ const Application = new Lang.Class({
|
||||
this._startupUuid = null;
|
||||
this._loaded = false;
|
||||
this._skipMainWindow = false;
|
||||
this._settings = new Gio.Settings({ schema_id: 'org.gnome.shell' });
|
||||
},
|
||||
|
||||
_extensionAvailable: function(uuid) {
|
||||
|
@ -14,7 +14,7 @@ const ShellEntry = imports.ui.shellEntry;
|
||||
const Tweener = imports.ui.tweener;
|
||||
const UserWidget = imports.ui.userWidget;
|
||||
|
||||
const DEFAULT_BUTTON_WELL_ICON_SIZE = 24;
|
||||
const DEFAULT_BUTTON_WELL_ICON_SIZE = 16;
|
||||
const DEFAULT_BUTTON_WELL_ANIMATION_DELAY = 1.0;
|
||||
const DEFAULT_BUTTON_WELL_ANIMATION_TIME = 0.3;
|
||||
|
||||
@ -194,17 +194,15 @@ const AuthPrompt = new Lang.Class({
|
||||
},
|
||||
|
||||
_onAskQuestion: function(verifier, serviceName, question, passwordChar) {
|
||||
if (this._preemptiveAnswer) {
|
||||
if (this._queryingService)
|
||||
this._userVerifier.answerQuery(this._queryingService, this._preemptiveAnswer);
|
||||
this._preemptiveAnswer = null;
|
||||
return;
|
||||
}
|
||||
|
||||
if (this._queryingService)
|
||||
this.clear();
|
||||
|
||||
this._queryingService = serviceName;
|
||||
if (this._preemptiveAnswer) {
|
||||
this._userVerifier.answerQuery(this._queryingService, this._preemptiveAnswer);
|
||||
this._preemptiveAnswer = null;
|
||||
return;
|
||||
}
|
||||
this.setPasswordChar(passwordChar);
|
||||
this.setQuestion(question);
|
||||
|
||||
@ -260,6 +258,7 @@ const AuthPrompt = new Lang.Class({
|
||||
},
|
||||
|
||||
_onVerificationComplete: function() {
|
||||
this.setActorInDefaultButtonWell(null);
|
||||
this.verificationStatus = AuthPromptStatus.VERIFICATION_SUCCEEDED;
|
||||
this.cancelButton.reactive = false;
|
||||
},
|
||||
@ -283,6 +282,12 @@ const AuthPrompt = new Lang.Class({
|
||||
if (oldActor)
|
||||
Tweener.removeTweens(oldActor);
|
||||
|
||||
let wasSpinner;
|
||||
if (oldActor == this._spinner.actor)
|
||||
wasSpinner = true;
|
||||
else
|
||||
wasSpinner = false;
|
||||
|
||||
let isSpinner;
|
||||
if (actor == this._spinner.actor)
|
||||
isSpinner = true;
|
||||
@ -292,6 +297,11 @@ const AuthPrompt = new Lang.Class({
|
||||
if (this._defaultButtonWellActor != actor && oldActor) {
|
||||
if (!animate) {
|
||||
oldActor.opacity = 0;
|
||||
|
||||
if (wasSpinner) {
|
||||
if (this._spinner)
|
||||
this._spinner.stop();
|
||||
}
|
||||
} else {
|
||||
Tweener.addTween(oldActor,
|
||||
{ opacity: 0,
|
||||
@ -300,7 +310,7 @@ const AuthPrompt = new Lang.Class({
|
||||
transition: 'linear',
|
||||
onCompleteScope: this,
|
||||
onComplete: function() {
|
||||
if (isSpinner) {
|
||||
if (wasSpinner) {
|
||||
if (this._spinner)
|
||||
this._spinner.stop();
|
||||
}
|
||||
@ -403,7 +413,7 @@ const AuthPrompt = new Lang.Class({
|
||||
},
|
||||
|
||||
updateSensitivity: function(sensitive) {
|
||||
this._updateNextButtonSensitivity(sensitive);
|
||||
this._updateNextButtonSensitivity(sensitive && this._entry.text.length > 0);
|
||||
this._entry.reactive = sensitive;
|
||||
this._entry.clutter_text.editable = sensitive;
|
||||
},
|
||||
@ -434,8 +444,9 @@ const AuthPrompt = new Lang.Class({
|
||||
let oldStatus = this.verificationStatus;
|
||||
this.verificationStatus = AuthPromptStatus.NOT_VERIFYING;
|
||||
this.cancelButton.reactive = true;
|
||||
this.nextButton.label = _("Next");
|
||||
|
||||
if (oldStatus == AuthPromptStatus.VERIFYING)
|
||||
if (this._userVerifier)
|
||||
this._userVerifier.cancel();
|
||||
|
||||
this._queryingService = null;
|
||||
@ -490,6 +501,7 @@ const AuthPrompt = new Lang.Class({
|
||||
|
||||
finish: function(onComplete) {
|
||||
if (!this._userVerifier.hasPendingMessages) {
|
||||
this._userVerifier.clear();
|
||||
onComplete();
|
||||
return;
|
||||
}
|
||||
@ -497,12 +509,13 @@ const AuthPrompt = new Lang.Class({
|
||||
let signalId = this._userVerifier.connect('no-more-messages',
|
||||
Lang.bind(this, function() {
|
||||
this._userVerifier.disconnect(signalId);
|
||||
this._userVerifier.clear();
|
||||
onComplete();
|
||||
}));
|
||||
},
|
||||
|
||||
cancel: function() {
|
||||
if (this.verificationStatus == AuthPromptStatus.NOT_VERIFYING || this.verificationStatus == AuthPromptStatus.VERIFICATION_SUCCEEDED) {
|
||||
if (this.verificationStatus == AuthPromptStatus.VERIFICATION_SUCCEEDED) {
|
||||
return;
|
||||
}
|
||||
this.reset();
|
||||
|
@ -49,6 +49,7 @@ const _FADE_ANIMATION_TIME = 0.25;
|
||||
const _SCROLL_ANIMATION_TIME = 0.5;
|
||||
const _TIMED_LOGIN_IDLE_THRESHOLD = 5.0;
|
||||
const _LOGO_ICON_HEIGHT = 48;
|
||||
const _MAX_BOTTOM_MENU_ITEMS = 5;
|
||||
|
||||
const UserListItem = new Lang.Class({
|
||||
Name: 'UserListItem',
|
||||
@ -283,7 +284,16 @@ const SessionMenuButton = new Lang.Class({
|
||||
|
||||
this.actor = new St.Bin({ child: this._button });
|
||||
|
||||
this._menu = new PopupMenu.PopupMenu(this._button, 0, St.Side.TOP);
|
||||
let side = St.Side.TOP;
|
||||
let align = 0;
|
||||
if (Gdm.get_session_ids().length > _MAX_BOTTOM_MENU_ITEMS) {
|
||||
if (this.actor.text_direction == Clutter.TextDirection.RTL)
|
||||
side = St.Side.RIGHT;
|
||||
else
|
||||
side = St.Side.LEFT;
|
||||
align = 0.5;
|
||||
}
|
||||
this._menu = new PopupMenu.PopupMenu(this._button, align, side);
|
||||
Main.uiGroup.add_actor(this._menu.actor);
|
||||
this._menu.actor.hide();
|
||||
|
||||
@ -496,7 +506,7 @@ const LoginDialog = new Lang.Class({
|
||||
let [minWidth, minHeight, natWidth, natHeight] = this._bannerView.get_preferred_size();
|
||||
let centerX = dialogBox.x1 + (dialogBox.x2 - dialogBox.x1) / 2;
|
||||
|
||||
actorBox.x1 = centerX - natWidth / 2;
|
||||
actorBox.x1 = Math.floor(centerX - natWidth / 2);
|
||||
actorBox.y1 = dialogBox.y1 + Main.layoutManager.panelBox.height;
|
||||
actorBox.x2 = actorBox.x1 + natWidth;
|
||||
actorBox.y2 = actorBox.y1 + natHeight;
|
||||
@ -510,7 +520,7 @@ const LoginDialog = new Lang.Class({
|
||||
let [minWidth, minHeight, natWidth, natHeight] = this._logoBin.get_preferred_size();
|
||||
let centerX = dialogBox.x1 + (dialogBox.x2 - dialogBox.x1) / 2;
|
||||
|
||||
actorBox.x1 = centerX - natWidth / 2;
|
||||
actorBox.x1 = Math.floor(centerX - natWidth / 2);
|
||||
actorBox.y1 = dialogBox.y2 - natHeight;
|
||||
actorBox.x2 = actorBox.x1 + natWidth;
|
||||
actorBox.y2 = actorBox.y1 + natHeight;
|
||||
@ -525,8 +535,11 @@ const LoginDialog = new Lang.Class({
|
||||
let centerX = dialogBox.x1 + (dialogBox.x2 - dialogBox.x1) / 2;
|
||||
let centerY = dialogBox.y1 + (dialogBox.y2 - dialogBox.y1) / 2;
|
||||
|
||||
actorBox.x1 = centerX - natWidth / 2;
|
||||
actorBox.y1 = centerY - natHeight / 2;
|
||||
natWidth = Math.min(natWidth, dialogBox.x2 - dialogBox.x1);
|
||||
natHeight = Math.min(natHeight, dialogBox.y2 - dialogBox.y1);
|
||||
|
||||
actorBox.x1 = Math.floor(centerX - natWidth / 2);
|
||||
actorBox.y1 = Math.floor(centerY - natHeight / 2);
|
||||
actorBox.x2 = actorBox.x1 + natWidth;
|
||||
actorBox.y2 = actorBox.y1 + natHeight;
|
||||
|
||||
@ -574,14 +587,21 @@ const LoginDialog = new Lang.Class({
|
||||
// try a different layout, or if we have what extra space we
|
||||
// can hand out
|
||||
if (bannerAllocation) {
|
||||
let leftOverYSpace = dialogHeight - bannerHeight - authPromptHeight - logoHeight;
|
||||
let bannerSpace;
|
||||
|
||||
if (authPromptAllocation)
|
||||
bannerSpace = authPromptAllocation.y1 - bannerAllocation.y1;
|
||||
else
|
||||
bannerSpace = 0;
|
||||
|
||||
let leftOverYSpace = bannerSpace - bannerHeight;
|
||||
|
||||
if (leftOverYSpace > 0) {
|
||||
// First figure out how much left over space is up top
|
||||
let leftOverTopSpace = leftOverYSpace / 2;
|
||||
|
||||
// Then, shift the banner into the middle of that extra space
|
||||
let yShift = leftOverTopSpace / 2;
|
||||
let yShift = Math.floor(leftOverTopSpace / 2);
|
||||
|
||||
bannerAllocation.y1 += yShift;
|
||||
bannerAllocation.y2 += yShift;
|
||||
@ -607,8 +627,8 @@ const LoginDialog = new Lang.Class({
|
||||
let centerGap = wideSpacing / 8;
|
||||
|
||||
// place the banner along the left edge of the center margin
|
||||
bannerAllocation.x2 = centerX - centerGap / 2;
|
||||
bannerAllocation.x1 = bannerAllocation.x2 - wideBannerWidth;
|
||||
bannerAllocation.x2 = Math.floor(centerX - centerGap / 2);
|
||||
bannerAllocation.x1 = Math.floor(bannerAllocation.x2 - wideBannerWidth);
|
||||
|
||||
// figure out how tall it would like to be and try to accomodate
|
||||
// but don't let it get too close to the logo
|
||||
@ -616,11 +636,11 @@ const LoginDialog = new Lang.Class({
|
||||
|
||||
let maxWideHeight = dialogHeight - 3 * logoHeight;
|
||||
wideBannerHeight = Math.min(maxWideHeight, wideBannerHeight);
|
||||
bannerAllocation.y1 = centerY - wideBannerHeight / 2;
|
||||
bannerAllocation.y1 = Math.floor(centerY - wideBannerHeight / 2);
|
||||
bannerAllocation.y2 = bannerAllocation.y1 + wideBannerHeight;
|
||||
|
||||
// place the auth prompt along the right edge of the center margin
|
||||
authPromptAllocation.x1 = centerX + centerGap / 2;
|
||||
authPromptAllocation.x1 = Math.floor(centerX + centerGap / 2);
|
||||
authPromptAllocation.x2 = authPromptAllocation.x1 + authPromptWidth;
|
||||
} else {
|
||||
// If we aren't going to do a wide view, then we need to limit
|
||||
@ -630,7 +650,7 @@ const LoginDialog = new Lang.Class({
|
||||
leftOverYSpace += bannerHeight;
|
||||
|
||||
// Then figure out how much of that space is up top
|
||||
let availableTopSpace = leftOverYSpace / 2;
|
||||
let availableTopSpace = Math.floor(leftOverYSpace / 2);
|
||||
|
||||
// Then give all of that space to the banner
|
||||
bannerAllocation.y2 = bannerAllocation.y1 + availableTopSpace;
|
||||
@ -641,7 +661,7 @@ const LoginDialog = new Lang.Class({
|
||||
let leftOverYSpace = dialogHeight - userSelectionHeight - logoHeight;
|
||||
|
||||
if (leftOverYSpace > 0) {
|
||||
let topExpansion = leftOverYSpace / 2;
|
||||
let topExpansion = Math.floor(leftOverYSpace / 2);
|
||||
let bottomExpansion = topExpansion;
|
||||
|
||||
userSelectionAllocation.y1 -= topExpansion;
|
||||
@ -857,7 +877,7 @@ const LoginDialog = new Lang.Class({
|
||||
},
|
||||
|
||||
_loginScreenSessionActivated: function() {
|
||||
if (this._authPrompt.verificationStatus != AuthPrompt.AuthPromptStatus.VERIFICATION_SUCCEEDED)
|
||||
if (this.actor.opacity == 255 && this._authPrompt.verificationStatus == AuthPrompt.AuthPromptStatus.NOT_VERIFYING)
|
||||
return;
|
||||
|
||||
Tweener.addTween(this.actor,
|
||||
@ -874,7 +894,8 @@ const LoginDialog = new Lang.Class({
|
||||
},
|
||||
onUpdateScope: this,
|
||||
onComplete: function() {
|
||||
this._authPrompt.reset();
|
||||
if (this._authPrompt.verificationStatus != AuthPrompt.AuthPromptStatus.NOT_VERIFYING)
|
||||
this._authPrompt.reset();
|
||||
},
|
||||
onCompleteScope: this });
|
||||
},
|
||||
|
@ -35,8 +35,8 @@ const ALLOWED_FAILURES_KEY = 'allowed-failures';
|
||||
const LOGO_KEY = 'logo';
|
||||
const DISABLE_USER_LIST_KEY = 'disable-user-list';
|
||||
|
||||
// Give user 16ms to read each character of a PAM message
|
||||
const USER_READ_TIME = 16
|
||||
// Give user 48ms to read each character of a PAM message
|
||||
const USER_READ_TIME = 48
|
||||
|
||||
const MessageType = {
|
||||
NONE: 0,
|
||||
|
@ -134,7 +134,7 @@ const LoginManagerSystemd = new Lang.Class({
|
||||
if (error)
|
||||
asyncCallback(false);
|
||||
else
|
||||
asyncCallback(result[0] != 'no');
|
||||
asyncCallback(result[0] != 'no' && result[0] != 'na');
|
||||
});
|
||||
},
|
||||
|
||||
|
@ -7,7 +7,7 @@ const St = imports.gi.St;
|
||||
const Signals = imports.signals;
|
||||
const Atk = imports.gi.Atk;
|
||||
|
||||
const ANIMATED_ICON_UPDATE_TIMEOUT = 100;
|
||||
const ANIMATED_ICON_UPDATE_TIMEOUT = 14;
|
||||
|
||||
const Animation = new Lang.Class({
|
||||
Name: 'Animation',
|
||||
|
@ -366,8 +366,6 @@ const AllView = new Lang.Class({
|
||||
Extends: BaseAppView,
|
||||
|
||||
_init: function() {
|
||||
this._settings = new Gio.Settings({ schema_id: 'org.gnome.shell' });
|
||||
|
||||
this.parent({ usePagination: true }, null);
|
||||
this._scrollView = new St.ScrollView({ style_class: 'all-apps',
|
||||
x_expand: true,
|
||||
@ -502,6 +500,11 @@ const AllView = new Lang.Class({
|
||||
|
||||
_loadApps: function() {
|
||||
let apps = Gio.AppInfo.get_all().filter(function(appInfo) {
|
||||
try {
|
||||
let id = appInfo.get_id(); // catch invalid file encodings
|
||||
} catch(e) {
|
||||
return false;
|
||||
}
|
||||
return appInfo.should_show();
|
||||
}).map(function(app) {
|
||||
return app.get_id();
|
||||
@ -525,7 +528,7 @@ const AllView = new Lang.Class({
|
||||
// at least on single-monitor setups.
|
||||
// This also disables drag-to-launch on multi-monitor setups,
|
||||
// but we hope that is not used much.
|
||||
let favoritesWritable = this._settings.is_writable('favorite-apps');
|
||||
let favoritesWritable = global.settings.is_writable('favorite-apps');
|
||||
|
||||
apps.forEach(Lang.bind(this, function(appId) {
|
||||
let app = appSys.lookup_app(appId);
|
||||
@ -755,7 +758,8 @@ const AllView = new Lang.Class({
|
||||
let fadeOffset = Math.min(this._grid.topPadding,
|
||||
this._grid.bottomPadding);
|
||||
this._scrollView.update_fade_effect(fadeOffset, 0);
|
||||
this._scrollView.get_effect('fade').fade_edges = true;
|
||||
if (fadeOffset > 0)
|
||||
this._scrollView.get_effect('fade').fade_edges = true;
|
||||
|
||||
if (this._availWidth != availWidth || this._availHeight != availHeight || oldNPages != this._grid.nPages()) {
|
||||
this._adjustment.value = 0;
|
||||
@ -783,8 +787,6 @@ const FrequentView = new Lang.Class({
|
||||
_init: function() {
|
||||
this.parent(null, { fillParent: true });
|
||||
|
||||
this._settings = new Gio.Settings({ schema_id: 'org.gnome.shell' });
|
||||
|
||||
this.actor = new St.Widget({ style_class: 'frequent-apps',
|
||||
layout_manager: new Clutter.BinLayout(),
|
||||
x_expand: true, y_expand: true });
|
||||
@ -827,7 +829,7 @@ const FrequentView = new Lang.Class({
|
||||
// at least on single-monitor setups.
|
||||
// This also disables drag-to-launch on multi-monitor setups,
|
||||
// but we hope that is not used much.
|
||||
let favoritesWritable = this._settings.is_writable('favorite-apps');
|
||||
let favoritesWritable = global.settings.is_writable('favorite-apps');
|
||||
|
||||
for (let i = 0; i < mostUsed.length; i++) {
|
||||
if (!mostUsed[i].get_app_info().should_show())
|
||||
@ -1064,7 +1066,7 @@ const AppSearchProvider = new Lang.Class({
|
||||
|
||||
getInitialResultSet: function(terms, callback, cancellable) {
|
||||
let query = terms.join(' ');
|
||||
let groups = Gio.DesktopAppInfo.search(query);
|
||||
let groups = Shell.AppSystem.search(query);
|
||||
let usage = Shell.AppUsage.get_default();
|
||||
let results = [];
|
||||
groups.forEach(function(group) {
|
||||
@ -1293,7 +1295,10 @@ const FolderIcon = new Lang.Class({
|
||||
if (!_listsIntersect(folderCategories, appCategories))
|
||||
return;
|
||||
|
||||
addAppId(appInfo.get_id());
|
||||
try {
|
||||
addAppId(appInfo.get_id()); // catch invalid file encodings
|
||||
} catch(e) {
|
||||
}
|
||||
});
|
||||
|
||||
this.actor.visible = this.view.getAllItems().length > 0;
|
||||
@ -1804,8 +1809,6 @@ const AppIconMenu = new Lang.Class({
|
||||
|
||||
this.actor.add_style_class_name('app-well-menu');
|
||||
|
||||
this._settings = new Gio.Settings({ schema_id: 'org.gnome.shell' });
|
||||
|
||||
// Chain our visibility and lifecycle to that of the source
|
||||
source.actor.connect('notify::mapped', Lang.bind(this, function () {
|
||||
if (!source.actor.mapped)
|
||||
@ -1867,7 +1870,7 @@ const AppIconMenu = new Lang.Class({
|
||||
}));
|
||||
}
|
||||
|
||||
let canFavorite = this._settings.is_writable('favorite-apps');
|
||||
let canFavorite = global.settings.is_writable('favorite-apps');
|
||||
|
||||
if (canFavorite) {
|
||||
this._appendSeparator();
|
||||
|
@ -144,6 +144,7 @@ const BackgroundCache = new Lang.Class({
|
||||
this._pendingFileLoads = [];
|
||||
this._fileMonitors = {};
|
||||
this._backgroundSources = {};
|
||||
this._animations = {};
|
||||
},
|
||||
|
||||
monitorFile: function(file) {
|
||||
@ -162,12 +163,13 @@ const BackgroundCache = new Lang.Class({
|
||||
|
||||
getAnimation: function(params) {
|
||||
params = Params.parse(params, { file: null,
|
||||
settingsSchema: null,
|
||||
onLoaded: null });
|
||||
|
||||
if (_fileEqual0(this._animationFile, params.file)) {
|
||||
if (this._animations[params.settingsSchema] && _fileEqual0(this._animationFile, params.file)) {
|
||||
if (params.onLoaded) {
|
||||
let id = GLib.idle_add(GLib.PRIORITY_DEFAULT, Lang.bind(this, function() {
|
||||
params.onLoaded(this._animation);
|
||||
params.onLoaded(this._animations[params.settingsSchema]);
|
||||
return GLib.SOURCE_REMOVE;
|
||||
}));
|
||||
GLib.Source.set_name_by_id(id, '[gnome-shell] params.onLoaded');
|
||||
@ -178,12 +180,11 @@ const BackgroundCache = new Lang.Class({
|
||||
let animation = new Animation({ file: params.file });
|
||||
|
||||
animation.load(Lang.bind(this, function() {
|
||||
this._animationFile = params.file;
|
||||
this._animation = animation;
|
||||
this._animations[params.settingsSchema] = animation;
|
||||
|
||||
if (params.onLoaded) {
|
||||
let id = GLib.idle_add(GLib.PRIORITY_DEFAULT, Lang.bind(this, function() {
|
||||
params.onLoaded(this._animation);
|
||||
params.onLoaded(this._animations[params.settingsSchema]);
|
||||
return GLib.SOURCE_REMOVE;
|
||||
}));
|
||||
GLib.Source.set_name_by_id(id, '[gnome-shell] params.onLoaded');
|
||||
@ -403,17 +404,18 @@ const Background = new Lang.Class({
|
||||
|
||||
_loadAnimation: function(file) {
|
||||
this._cache.getAnimation({ file: file,
|
||||
onLoaded: Lang.bind(this, function(animation) {
|
||||
this._animation = animation;
|
||||
settingsSchema: this._settings.schema_id,
|
||||
onLoaded: Lang.bind(this, function(animation) {
|
||||
this._animation = animation;
|
||||
|
||||
if (!this._animation || this._cancellable.is_cancelled()) {
|
||||
this._setLoaded();
|
||||
return;
|
||||
}
|
||||
if (!this._animation || this._cancellable.is_cancelled()) {
|
||||
this._setLoaded();
|
||||
return;
|
||||
}
|
||||
|
||||
this._updateAnimation();
|
||||
this._watchFile(file);
|
||||
})
|
||||
this._updateAnimation();
|
||||
this._watchFile(file);
|
||||
})
|
||||
});
|
||||
},
|
||||
|
||||
@ -527,6 +529,10 @@ const BackgroundSource = new Lang.Class({
|
||||
let file = null;
|
||||
let style;
|
||||
|
||||
// We don't watch changes to settings here,
|
||||
// instead we rely on Background to watch those
|
||||
// and emit 'changed' at the right time
|
||||
|
||||
if (this._overrideImage != null) {
|
||||
file = Gio.File.new_for_path(this._overrideImage);
|
||||
style = GDesktopEnums.BackgroundStyle.ZOOM; // Hardcode
|
||||
|
@ -16,9 +16,10 @@ const BackgroundMenu = new Lang.Class({
|
||||
_init: function(layoutManager) {
|
||||
this.parent(layoutManager.dummyCursor, 0, St.Side.TOP);
|
||||
|
||||
this.addSettingsAction(_("Settings"), 'gnome-control-center.desktop');
|
||||
this.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
|
||||
this.addSettingsAction(_("Change Background…"), 'gnome-background-panel.desktop');
|
||||
this.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
|
||||
this.addSettingsAction(_("Display Settings"), 'gnome-display-panel.desktop');
|
||||
this.addSettingsAction(_("Settings"), 'gnome-control-center.desktop');
|
||||
|
||||
this.actor.add_style_class_name('background-menu');
|
||||
|
||||
|
@ -24,6 +24,8 @@ const MSECS_IN_DAY = 24 * 60 * 60 * 1000;
|
||||
const SHOW_WEEKDATE_KEY = 'show-weekdate';
|
||||
const ELLIPSIS_CHAR = '\u2026';
|
||||
|
||||
const MESSAGE_ICON_SIZE = 32;
|
||||
|
||||
const MESSAGE_ANIMATION_TIME = 0.1;
|
||||
|
||||
const DEFAULT_EXPAND_LINES = 6;
|
||||
@ -976,7 +978,6 @@ const Message = new Lang.Class({
|
||||
this._iconBin = new St.Bin({ style_class: 'message-icon-bin',
|
||||
y_expand: true,
|
||||
visible: false });
|
||||
this._iconBin.set_y_align(Clutter.ActorAlign.START);
|
||||
hbox.add_actor(this._iconBin);
|
||||
|
||||
let contentBox = new St.BoxLayout({ style_class: 'message-content',
|
||||
@ -1106,6 +1107,8 @@ const Message = new Lang.Class({
|
||||
this._bodyStack.layout_manager.expansion = 1;
|
||||
this._actionBin.scale_y = 1;
|
||||
}
|
||||
|
||||
this.emit('expanded');
|
||||
},
|
||||
|
||||
unexpand: function(animate) {
|
||||
@ -1128,6 +1131,8 @@ const Message = new Lang.Class({
|
||||
this._actionBin.scale_y = 0;
|
||||
this.expanded = false;
|
||||
}
|
||||
|
||||
this.emit('unexpanded');
|
||||
},
|
||||
|
||||
canClose: function() {
|
||||
@ -1225,7 +1230,7 @@ const NotificationMessage = new Lang.Class({
|
||||
this._closed = true;
|
||||
this.notification.destroy(MessageTray.NotificationDestroyedReason.DISMISSED);
|
||||
}));
|
||||
notification.connect('destroy', Lang.bind(this,
|
||||
this._destroyId = notification.connect('destroy', Lang.bind(this,
|
||||
function() {
|
||||
if (!this._closed)
|
||||
this.close();
|
||||
@ -1236,9 +1241,10 @@ const NotificationMessage = new Lang.Class({
|
||||
|
||||
_getIcon: function() {
|
||||
if (this.notification.gicon)
|
||||
return new St.Icon({ gicon: this.notification.gicon, icon_size: 48 });
|
||||
return new St.Icon({ gicon: this.notification.gicon,
|
||||
icon_size: MESSAGE_ICON_SIZE });
|
||||
else
|
||||
return this.notification.source.createIcon(48);
|
||||
return this.notification.source.createIcon(MESSAGE_ICON_SIZE);
|
||||
},
|
||||
|
||||
_onUpdated: function(n, clear) {
|
||||
@ -1248,10 +1254,6 @@ const NotificationMessage = new Lang.Class({
|
||||
this.setUseBodyMarkup(n.bannerBodyMarkup);
|
||||
},
|
||||
|
||||
canClose: function() {
|
||||
return !this.notification.resident;
|
||||
},
|
||||
|
||||
_onClicked: function() {
|
||||
this.notification.activate();
|
||||
},
|
||||
@ -1260,6 +1262,10 @@ const NotificationMessage = new Lang.Class({
|
||||
if (this._updatedId)
|
||||
this.notification.disconnect(this._updatedId);
|
||||
this._updatedId = 0;
|
||||
|
||||
if (this._destroyId)
|
||||
this.notification.disconnect(this._destroyId);
|
||||
this._destroyId = 0;
|
||||
}
|
||||
});
|
||||
|
||||
|
@ -9,9 +9,15 @@ const Gio = imports.gi.Gio;
|
||||
const GObject = imports.gi.GObject;
|
||||
const Gcr = imports.gi.Gcr;
|
||||
|
||||
const Animation = imports.ui.animation;
|
||||
const ModalDialog = imports.ui.modalDialog;
|
||||
const ShellEntry = imports.ui.shellEntry;
|
||||
const CheckBox = imports.ui.checkBox;
|
||||
const Tweener = imports.ui.tweener;
|
||||
|
||||
const WORK_SPINNER_ICON_SIZE = 16;
|
||||
const WORK_SPINNER_ANIMATION_DELAY = 1.0;
|
||||
const WORK_SPINNER_ANIMATION_TIME = 0.3;
|
||||
|
||||
const KeyringDialog = new Lang.Class({
|
||||
Name: 'KeyringDialog',
|
||||
@ -58,27 +64,47 @@ const KeyringDialog = new Lang.Class({
|
||||
{ y_fill: true,
|
||||
y_align: St.Align.START });
|
||||
|
||||
this._workSpinner = null;
|
||||
this._controlTable = null;
|
||||
|
||||
|
||||
this._cancelButton = this.addButton({ label: '',
|
||||
action: Lang.bind(this, this._onCancelButton),
|
||||
key: Clutter.Escape },
|
||||
{ expand: true, x_fill: false, x_align: St.Align.START });
|
||||
this.placeSpinner({ expand: false,
|
||||
x_fill: false,
|
||||
y_fill: false,
|
||||
x_align: St.Align.END,
|
||||
y_align: St.Align.MIDDLE });
|
||||
key: Clutter.Escape });
|
||||
this._continueButton = this.addButton({ label: '',
|
||||
action: Lang.bind(this, this._onContinueButton),
|
||||
default: true },
|
||||
{ expand: false, x_fill: false, x_align: St.Align.END });
|
||||
default: true });
|
||||
|
||||
this.prompt.bind_property('cancel-label', this._cancelButton, 'label', GObject.BindingFlags.SYNC_CREATE);
|
||||
this.prompt.bind_property('continue-label', this._continueButton, 'label', GObject.BindingFlags.SYNC_CREATE);
|
||||
},
|
||||
|
||||
_setWorking: function(working) {
|
||||
if (!this._workSpinner)
|
||||
return;
|
||||
|
||||
Tweener.removeTweens(this._workSpinner.actor);
|
||||
if (working) {
|
||||
this._workSpinner.play();
|
||||
Tweener.addTween(this._workSpinner.actor,
|
||||
{ opacity: 255,
|
||||
delay: WORK_SPINNER_ANIMATION_DELAY,
|
||||
time: WORK_SPINNER_ANIMATION_TIME,
|
||||
transition: 'linear'
|
||||
});
|
||||
} else {
|
||||
Tweener.addTween(this._workSpinner.actor,
|
||||
{ opacity: 0,
|
||||
time: WORK_SPINNER_ANIMATION_TIME,
|
||||
transition: 'linear',
|
||||
onCompleteScope: this,
|
||||
onComplete: function() {
|
||||
if (this._workSpinner)
|
||||
this._workSpinner.stop();
|
||||
}
|
||||
});
|
||||
}
|
||||
},
|
||||
|
||||
_buildControlTable: function() {
|
||||
let layout = new Clutter.GridLayout({ orientation: Clutter.Orientation.VERTICAL });
|
||||
let table = new St.Widget({ style_class: 'keyring-dialog-control-table',
|
||||
@ -101,15 +127,22 @@ const KeyringDialog = new Lang.Class({
|
||||
ShellEntry.addContextMenu(this._passwordEntry, { isPassword: true });
|
||||
this._passwordEntry.clutter_text.connect('activate', Lang.bind(this, this._onPasswordActivate));
|
||||
|
||||
let spinnerIcon = Gio.File.new_for_uri('resource:///org/gnome/shell/theme/process-working.svg');
|
||||
this._workSpinner = new Animation.AnimatedIcon(spinnerIcon, WORK_SPINNER_ICON_SIZE);
|
||||
this._workSpinner.actor.opacity = 0;
|
||||
|
||||
if (rtl) {
|
||||
layout.attach(this._passwordEntry, 0, row, 1, 1);
|
||||
layout.attach(label, 1, row, 1, 1);
|
||||
layout.attach(this._workSpinner.actor, 0, row, 1, 1);
|
||||
layout.attach(this._passwordEntry, 1, row, 1, 1);
|
||||
layout.attach(label, 2, row, 1, 1);
|
||||
} else {
|
||||
layout.attach(label, 0, row, 1, 1);
|
||||
layout.attach(this._passwordEntry, 1, row, 1, 1);
|
||||
layout.attach(this._workSpinner.actor, 2, row, 1, 1);
|
||||
}
|
||||
row++;
|
||||
} else {
|
||||
this._workSpinner = null;
|
||||
this._passwordEntry = null;
|
||||
}
|
||||
|
||||
@ -178,7 +211,7 @@ const KeyringDialog = new Lang.Class({
|
||||
|
||||
this._continueButton.can_focus = sensitive;
|
||||
this._continueButton.reactive = sensitive;
|
||||
this.setWorking(!sensitive);
|
||||
this._setWorking(!sensitive);
|
||||
},
|
||||
|
||||
_ensureOpen: function() {
|
||||
|
@ -13,13 +13,19 @@ const Mainloop = imports.mainloop;
|
||||
const Polkit = imports.gi.Polkit;
|
||||
const PolkitAgent = imports.gi.PolkitAgent;
|
||||
|
||||
const Animation = imports.ui.animation;
|
||||
const Components = imports.ui.components;
|
||||
const ModalDialog = imports.ui.modalDialog;
|
||||
const ShellEntry = imports.ui.shellEntry;
|
||||
const UserWidget = imports.ui.userWidget;
|
||||
const Tweener = imports.ui.tweener;
|
||||
|
||||
const DIALOG_ICON_SIZE = 48;
|
||||
|
||||
const WORK_SPINNER_ICON_SIZE = 16;
|
||||
const WORK_SPINNER_ANIMATION_DELAY = 1.0;
|
||||
const WORK_SPINNER_ANIMATION_TIME = 0.3;
|
||||
|
||||
const AuthenticationDialog = new Lang.Class({
|
||||
Name: 'AuthenticationDialog',
|
||||
Extends: ModalDialog.ModalDialog,
|
||||
@ -136,6 +142,13 @@ const AuthenticationDialog = new Lang.Class({
|
||||
this._passwordEntry.clutter_text.connect('activate', Lang.bind(this, this._onEntryActivate));
|
||||
this._passwordBox.add(this._passwordEntry,
|
||||
{ expand: true });
|
||||
|
||||
let spinnerIcon = Gio.File.new_for_uri('resource:///org/gnome/shell/theme/process-working.svg');
|
||||
this._workSpinner = new Animation.AnimatedIcon(spinnerIcon, WORK_SPINNER_ICON_SIZE);
|
||||
this._workSpinner.actor.opacity = 0;
|
||||
|
||||
this._passwordBox.add(this._workSpinner.actor);
|
||||
|
||||
this.setInitialKeyFocus(this._passwordEntry);
|
||||
this._passwordBox.hide();
|
||||
|
||||
@ -165,17 +178,10 @@ const AuthenticationDialog = new Lang.Class({
|
||||
|
||||
this._cancelButton = this.addButton({ label: _("Cancel"),
|
||||
action: Lang.bind(this, this.cancel),
|
||||
key: Clutter.Escape },
|
||||
{ expand: true, x_fill: false, x_align: St.Align.START });
|
||||
this.placeSpinner({ expand: false,
|
||||
x_fill: false,
|
||||
y_fill: false,
|
||||
x_align: St.Align.END,
|
||||
y_align: St.Align.MIDDLE });
|
||||
key: Clutter.Escape });
|
||||
this._okButton = this.addButton({ label: _("Authenticate"),
|
||||
action: Lang.bind(this, this._onAuthenticateButtonPressed),
|
||||
default: true },
|
||||
{ expand: false, x_fill: false, x_align: St.Align.END });
|
||||
default: true });
|
||||
|
||||
this._doneEmitted = false;
|
||||
|
||||
@ -183,6 +189,30 @@ const AuthenticationDialog = new Lang.Class({
|
||||
this._cookie = cookie;
|
||||
},
|
||||
|
||||
_setWorking: function(working) {
|
||||
Tweener.removeTweens(this._workSpinner.actor);
|
||||
if (working) {
|
||||
this._workSpinner.play();
|
||||
Tweener.addTween(this._workSpinner.actor,
|
||||
{ opacity: 255,
|
||||
delay: WORK_SPINNER_ANIMATION_DELAY,
|
||||
time: WORK_SPINNER_ANIMATION_TIME,
|
||||
transition: 'linear'
|
||||
});
|
||||
} else {
|
||||
Tweener.addTween(this._workSpinner.actor,
|
||||
{ opacity: 0,
|
||||
time: WORK_SPINNER_ANIMATION_TIME,
|
||||
transition: 'linear',
|
||||
onCompleteScope: this,
|
||||
onComplete: function() {
|
||||
if (this._workSpinner)
|
||||
this._workSpinner.stop();
|
||||
}
|
||||
});
|
||||
}
|
||||
},
|
||||
|
||||
performAuthentication: function() {
|
||||
this.destroySession();
|
||||
this._session = new PolkitAgent.Session({ identity: this._identityToAuth,
|
||||
@ -229,7 +259,7 @@ const AuthenticationDialog = new Lang.Class({
|
||||
|
||||
this._okButton.can_focus = sensitive;
|
||||
this._okButton.reactive = sensitive;
|
||||
this.setWorking(!sensitive);
|
||||
this._setWorking(!sensitive);
|
||||
},
|
||||
|
||||
_onEntryActivate: function() {
|
||||
|
@ -158,14 +158,6 @@ const TelepathyClient = new Lang.Class({
|
||||
this._chatSources[channel.get_object_path()] = source;
|
||||
source.connect('destroy', Lang.bind(this,
|
||||
function() {
|
||||
if (this._tpClient.is_handling_channel(channel)) {
|
||||
// The chat box has been destroyed so it can't
|
||||
// handle the channel any more.
|
||||
channel.close_async(function(src, result) {
|
||||
channel.close_finish(result);
|
||||
});
|
||||
}
|
||||
|
||||
delete this._chatSources[channel.get_object_path()];
|
||||
}));
|
||||
},
|
||||
@ -274,13 +266,6 @@ const ChatSource = new Lang.Class({
|
||||
this._channel = channel;
|
||||
this._closedId = this._channel.connect('invalidated', Lang.bind(this, this._channelClosed));
|
||||
|
||||
this._notification = new ChatNotification(this);
|
||||
this._notification.connect('activated', Lang.bind(this, this.open));
|
||||
this._notification.connect('updated', Lang.bind(this,
|
||||
function() {
|
||||
if (this._banner && this._banner.expanded)
|
||||
this._ackMessages();
|
||||
}));
|
||||
this._notifyTimeoutId = 0;
|
||||
|
||||
this._presence = contact.get_presence_type();
|
||||
@ -295,12 +280,31 @@ const ChatSource = new Lang.Class({
|
||||
|
||||
// Add ourselves as a source.
|
||||
Main.messageTray.add(this);
|
||||
this.pushNotification(this._notification);
|
||||
|
||||
this._getLogMessages();
|
||||
},
|
||||
|
||||
_ensureNotification: function() {
|
||||
if (this._notification)
|
||||
return;
|
||||
|
||||
this._notification = new ChatNotification(this);
|
||||
this._notification.connect('activated', Lang.bind(this, this.open));
|
||||
this._notification.connect('updated', Lang.bind(this,
|
||||
function() {
|
||||
if (this._banner && this._banner.expanded)
|
||||
this._ackMessages();
|
||||
}));
|
||||
this._notification.connect('destroy', Lang.bind(this,
|
||||
function() {
|
||||
this._notification = null;
|
||||
}));
|
||||
this.pushNotification(this._notification);
|
||||
},
|
||||
|
||||
_createPolicy: function() {
|
||||
if (this._account.protocol_name == 'irc')
|
||||
return new MessageTray.NotificationApplicationPolicy('org.gnome.Polari');
|
||||
return new MessageTray.NotificationApplicationPolicy('empathy');
|
||||
},
|
||||
|
||||
@ -326,7 +330,8 @@ const ChatSource = new Lang.Class({
|
||||
return;
|
||||
|
||||
this.setTitle(newAlias);
|
||||
this._notification.appendAliasChange(oldAlias, newAlias);
|
||||
if (this._notification)
|
||||
this._notification.appendAliasChange(oldAlias, newAlias);
|
||||
},
|
||||
|
||||
getIcon: function() {
|
||||
@ -369,9 +374,10 @@ const ChatSource = new Lang.Class({
|
||||
|
||||
_updateAvatarIcon: function() {
|
||||
this.iconUpdated();
|
||||
this._notification.update(this._notification.title,
|
||||
this._notification.bannerBodyText,
|
||||
{ gicon: this.getIcon() });
|
||||
if (this._notifiction)
|
||||
this._notification.update(this._notification.title,
|
||||
this._notification.bannerBodyText,
|
||||
{ gicon: this.getIcon() });
|
||||
},
|
||||
|
||||
open: function() {
|
||||
@ -412,6 +418,7 @@ const ChatSource = new Lang.Class({
|
||||
let [success, events] = logManager.get_filtered_events_finish(result);
|
||||
|
||||
let logMessages = events.map(makeMessageFromTplEvent);
|
||||
this._ensureNotification();
|
||||
|
||||
let pendingTpMessages = this._channel.get_pending_messages();
|
||||
let pendingMessages = [];
|
||||
@ -461,6 +468,18 @@ const ChatSource = new Lang.Class({
|
||||
},
|
||||
|
||||
destroy: function(reason) {
|
||||
if (this._client.is_handling_channel(this._channel)) {
|
||||
// The chat box has been destroyed so it can't
|
||||
// handle the channel any more.
|
||||
this._channel.close_async(function(channel, result) {
|
||||
channel.close_finish(result);
|
||||
});
|
||||
}
|
||||
|
||||
// Keep source alive while the channel is open
|
||||
if (reason != MessageTray.NotificationDestroyedReason.SOURCE_CLOSED)
|
||||
return;
|
||||
|
||||
if (this._destroyed)
|
||||
return;
|
||||
|
||||
@ -474,9 +493,6 @@ const ChatSource = new Lang.Class({
|
||||
this._contact.disconnect(this._notifyAvatarId);
|
||||
this._contact.disconnect(this._presenceChangedId);
|
||||
|
||||
if (this._timestampTimeoutId)
|
||||
Mainloop.source_remove(this._timestampTimeoutId);
|
||||
|
||||
this.parent(reason);
|
||||
},
|
||||
|
||||
@ -501,6 +517,7 @@ const ChatSource = new Lang.Class({
|
||||
if (message.get_message_type() == Tp.ChannelTextMessageType.DELIVERY_REPORT)
|
||||
return;
|
||||
|
||||
this._ensureNotification();
|
||||
this._pendingMessages.push(message);
|
||||
this.countUpdated();
|
||||
|
||||
@ -528,6 +545,7 @@ const ChatSource = new Lang.Class({
|
||||
// This is called for both messages we send from
|
||||
// our client and other clients as well.
|
||||
_messageSent: function(channel, message, flags, token) {
|
||||
this._ensureNotification();
|
||||
message = makeMessageFromTpMessage(message, NotificationDirection.SENT);
|
||||
this._notification.appendMessage(message);
|
||||
},
|
||||
@ -565,9 +583,10 @@ const ChatSource = new Lang.Class({
|
||||
},
|
||||
|
||||
_presenceChanged: function (contact, presence, status, message) {
|
||||
this._notification.update(this._notification.title,
|
||||
this._notification.bannerBodyText,
|
||||
{ secondaryGIcon: this.getSecondaryIcon() });
|
||||
if (this._notification)
|
||||
this._notification.update(this._notification.title,
|
||||
this._notification.bannerBodyText,
|
||||
{ secondaryGIcon: this.getSecondaryIcon() });
|
||||
},
|
||||
|
||||
_pendingRemoved: function(channel, message) {
|
||||
@ -577,6 +596,10 @@ const ChatSource = new Lang.Class({
|
||||
this._pendingMessages.splice(idx, 1);
|
||||
this.countUpdated();
|
||||
}
|
||||
|
||||
if (this._pendingMessages.length == 0 &&
|
||||
this._banner && !this._banner.expanded)
|
||||
this._banner.hide();
|
||||
},
|
||||
|
||||
_ackMessages: function() {
|
||||
@ -600,6 +623,13 @@ const ChatNotification = new Lang.Class({
|
||||
this._timestampTimeoutId = 0;
|
||||
},
|
||||
|
||||
destroy: function(reason) {
|
||||
if (this._timestampTimeoutId)
|
||||
Mainloop.source_remove(this._timestampTimeoutId);
|
||||
this._timestampTimeoutId = 0;
|
||||
this.parent(reason);
|
||||
},
|
||||
|
||||
/**
|
||||
* appendMessage:
|
||||
* @message: An object with the properties:
|
||||
@ -682,6 +712,7 @@ const ChatNotification = new Lang.Class({
|
||||
// Reset the old message timeout
|
||||
if (this._timestampTimeoutId)
|
||||
Mainloop.source_remove(this._timestampTimeoutId);
|
||||
this._timestampTimeoutId = 0;
|
||||
|
||||
let message = { realMessage: props.group != 'meta',
|
||||
showTimestamp: false };
|
||||
@ -830,6 +861,10 @@ const ChatNotificationBanner = new Lang.Class({
|
||||
adjustment.value = adjustment.upper;
|
||||
},
|
||||
|
||||
hide: function() {
|
||||
this.emit('done-displaying');
|
||||
},
|
||||
|
||||
_addMessage: function(message) {
|
||||
let highlighter = new Calendar.URLHighlighter(message.body, true, true);
|
||||
let body = highlighter.actor;
|
||||
|
@ -242,8 +242,6 @@ const ShowAppsIcon = new Lang.Class({
|
||||
_init: function() {
|
||||
this.parent();
|
||||
|
||||
this._settings = new Gio.Settings({ schema_id: 'org.gnome.shell' });
|
||||
|
||||
this.toggleButton = new St.Button({ style_class: 'show-apps',
|
||||
track_hover: true,
|
||||
can_focus: true,
|
||||
@ -272,7 +270,7 @@ const ShowAppsIcon = new Lang.Class({
|
||||
if (app == null)
|
||||
return false;
|
||||
|
||||
if (!this._settings.is_writable('favorite-apps'))
|
||||
if (!global.settings.is_writable('favorite-apps'))
|
||||
return false;
|
||||
|
||||
let id = app.get_id();
|
||||
@ -430,8 +428,6 @@ const Dash = new Lang.Class({
|
||||
|
||||
this._workId = Main.initializeDeferredWork(this._box, Lang.bind(this, this._redisplay));
|
||||
|
||||
this._settings = new Gio.Settings({ schema_id: 'org.gnome.shell' });
|
||||
|
||||
this._appSystem = Shell.AppSystem.get_default();
|
||||
|
||||
this._appSystem.connect('installed-changed', Lang.bind(this, function() {
|
||||
@ -864,7 +860,7 @@ const Dash = new Lang.Class({
|
||||
if (app == null || app.is_window_backed())
|
||||
return DND.DragMotionResult.NO_DROP;
|
||||
|
||||
if (!this._settings.is_writable('favorite-apps'))
|
||||
if (!global.settings.is_writable('favorite-apps'))
|
||||
return DND.DragMotionResult.NO_DROP;
|
||||
|
||||
let favorites = AppFavorites.getAppFavorites().getFavorites();
|
||||
@ -943,7 +939,7 @@ const Dash = new Lang.Class({
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!this._settings.is_writable('favorite-apps'))
|
||||
if (!global.settings.is_writable('favorite-apps'))
|
||||
return false;
|
||||
|
||||
let id = app.get_id();
|
||||
|
@ -357,8 +357,6 @@ const DateMenuButton = new Lang.Class({
|
||||
this._date.setDate(now);
|
||||
this._messageList.setDate(now);
|
||||
}
|
||||
// Block notification banners while the menu is open
|
||||
Main.messageTray.bannerBlocked = isOpen;
|
||||
}));
|
||||
|
||||
// Fill up the first column
|
||||
|
@ -81,7 +81,6 @@ function init() {
|
||||
|
||||
// Miscellaneous monkeypatching
|
||||
_patchContainerClass(St.BoxLayout);
|
||||
_patchContainerClass(St.Table);
|
||||
|
||||
_patchLayoutClass(Clutter.TableLayout, { row_spacing: 'spacing-rows',
|
||||
column_spacing: 'spacing-columns' });
|
||||
|
@ -24,9 +24,6 @@ const KEYBOARD_TYPE = 'keyboard-type';
|
||||
const A11Y_APPLICATIONS_SCHEMA = 'org.gnome.desktop.a11y.applications';
|
||||
const SHOW_KEYBOARD = 'screen-keyboard-enabled';
|
||||
|
||||
const CURSOR_BUS_NAME = 'org.gnome.SettingsDaemon.Cursor';
|
||||
const CURSOR_OBJECT_PATH = '/org/gnome/SettingsDaemon/Cursor';
|
||||
|
||||
const CARIBOU_BUS_NAME = 'org.gnome.Caribou.Daemon';
|
||||
const CARIBOU_OBJECT_PATH = '/org/gnome/Caribou/Daemon';
|
||||
|
||||
@ -114,6 +111,35 @@ const Key = new Lang.Class({
|
||||
key.release();
|
||||
return Clutter.EVENT_PROPAGATE;
|
||||
}));
|
||||
button.connect('touch-event', Lang.bind(this,
|
||||
function (actor, event) {
|
||||
let device = event.get_device();
|
||||
let sequence = event.get_event_sequence();
|
||||
|
||||
// We only handle touch events here on wayland. On X11
|
||||
// we do get emulated pointer events, which already works
|
||||
// for single-touch cases. Besides, the X11 passive touch grab
|
||||
// set up by Mutter will make us see first the touch events
|
||||
// and later the pointer events, so it will look like two
|
||||
// unrelated series of events, we want to avoid double handling
|
||||
// in these cases.
|
||||
if (!Meta.is_wayland_compositor())
|
||||
return Clutter.EVENT_PROPAGATE;
|
||||
|
||||
if (!this._touchPressed &&
|
||||
event.type() == Clutter.EventType.TOUCH_BEGIN) {
|
||||
device.sequence_grab(sequence, actor);
|
||||
this._touchPressed = true;
|
||||
key.press();
|
||||
} else if (this._touchPressed &&
|
||||
event.type() == Clutter.EventType.TOUCH_END &&
|
||||
device.sequence_get_grabbed_actor(sequence) == actor) {
|
||||
device.sequence_ungrab(sequence);
|
||||
this._touchPressed = false;
|
||||
key.release();
|
||||
}
|
||||
return Clutter.EVENT_PROPAGATE;
|
||||
}));
|
||||
|
||||
return button;
|
||||
},
|
||||
@ -178,12 +204,13 @@ const Keyboard = new Lang.Class({
|
||||
this._keyboardSettings.connect('changed', Lang.bind(this, this._sync));
|
||||
this._a11yApplicationsSettings = new Gio.Settings({ schema_id: A11Y_APPLICATIONS_SCHEMA });
|
||||
this._a11yApplicationsSettings.connect('changed', Lang.bind(this, this._sync));
|
||||
this._watchNameId = Gio.bus_watch_name(Gio.BusType.SESSION, CURSOR_BUS_NAME, 0,
|
||||
Lang.bind(this, this._sync),
|
||||
Lang.bind(this, this._sync));
|
||||
this._daemonProxy = null;
|
||||
this._lastDeviceId = null;
|
||||
|
||||
if (Meta.is_wayland_compositor() &&
|
||||
Caribou.DisplayAdapter.set_default)
|
||||
Caribou.DisplayAdapter.set_default(new ShellWaylandAdapter());
|
||||
|
||||
Meta.get_backend().connect('last-device-changed', Lang.bind(this,
|
||||
function (backend, deviceId) {
|
||||
let manager = Clutter.DeviceManager.get_default();
|
||||
@ -725,3 +752,24 @@ const KeyboardSource = new Lang.Class({
|
||||
this._keyboard.show(Main.layoutManager.bottomIndex);
|
||||
}
|
||||
});
|
||||
|
||||
const ShellWaylandAdapter = new Lang.Class({
|
||||
Name: 'ShellWaylandAdapter',
|
||||
Extends: Caribou.XAdapter,
|
||||
|
||||
vfunc_keyval_press: function(keyval) {
|
||||
let focus = global.stage.get_key_focus();
|
||||
if (focus instanceof Clutter.Text)
|
||||
Shell.util_text_insert_keyval(focus, keyval);
|
||||
else
|
||||
this.parent(keyval);
|
||||
},
|
||||
|
||||
vfunc_keyval_release: function(keyval) {
|
||||
let focus = global.stage.get_key_focus();
|
||||
if (focus instanceof Clutter.Text)
|
||||
return; // do nothing
|
||||
else
|
||||
this.parent(keyval);
|
||||
},
|
||||
});
|
||||
|
@ -11,6 +11,7 @@ const St = imports.gi.St;
|
||||
|
||||
const Background = imports.ui.background;
|
||||
const BackgroundMenu = imports.ui.backgroundMenu;
|
||||
const LoginManager = imports.misc.loginManager;
|
||||
|
||||
const DND = imports.ui.dnd;
|
||||
const Main = imports.ui.main;
|
||||
@ -273,6 +274,18 @@ const LayoutManager = new Lang.Class({
|
||||
global.screen.connect('in-fullscreen-changed',
|
||||
Lang.bind(this, this._updateFullscreen));
|
||||
this._monitorsChanged();
|
||||
|
||||
// NVIDIA drivers don't preserve FBO contents across
|
||||
// suspend/resume, see
|
||||
// https://bugzilla.gnome.org/show_bug.cgi?id=739178
|
||||
if (Shell.util_need_background_refresh()) {
|
||||
LoginManager.getLoginManager().connect('prepare-for-sleep',
|
||||
function(lm, suspending) {
|
||||
if (suspending)
|
||||
return;
|
||||
Meta.Background.refresh_all();
|
||||
});
|
||||
}
|
||||
},
|
||||
|
||||
// This is called by Main after everything else is constructed
|
||||
@ -824,6 +837,7 @@ const LayoutManager = new Lang.Class({
|
||||
// need to connect to 'destroy' too.
|
||||
|
||||
this._trackedActors.push(actorData);
|
||||
this._updateActorVisibility(actorData);
|
||||
this._queueUpdateRegions();
|
||||
},
|
||||
|
||||
@ -842,25 +856,23 @@ const LayoutManager = new Lang.Class({
|
||||
this._queueUpdateRegions();
|
||||
},
|
||||
|
||||
_updateActorVisibility: function(actorData) {
|
||||
if (!actorData.trackFullscreen)
|
||||
return;
|
||||
|
||||
let monitor = this.findMonitorForActor(actorData.actor);
|
||||
actorData.actor.visible = !(global.window_group.visible &&
|
||||
monitor &&
|
||||
monitor.inFullscreen);
|
||||
},
|
||||
|
||||
_updateVisibility: function() {
|
||||
let windowsVisible = Main.sessionMode.hasWindows && !this._inOverview;
|
||||
|
||||
global.window_group.visible = windowsVisible;
|
||||
global.top_window_group.visible = windowsVisible;
|
||||
|
||||
for (let i = 0; i < this._trackedActors.length; i++) {
|
||||
let actorData = this._trackedActors[i], visible;
|
||||
if (!actorData.trackFullscreen)
|
||||
continue;
|
||||
|
||||
if (!windowsVisible)
|
||||
visible = true;
|
||||
else if (this.findMonitorForActor(actorData.actor).inFullscreen)
|
||||
visible = false;
|
||||
else
|
||||
visible = true;
|
||||
actorData.actor.visible = visible;
|
||||
}
|
||||
this._trackedActors.forEach(Lang.bind(this, this._updateActorVisibility));
|
||||
},
|
||||
|
||||
getWorkAreaForMonitor: function(monitorIndex) {
|
||||
@ -1303,8 +1315,11 @@ const PressureBarrier = new Lang.Class({
|
||||
},
|
||||
|
||||
_onBarrierLeft: function(barrier, event) {
|
||||
this._reset();
|
||||
this._isTriggered = false;
|
||||
barrier._isHit = false;
|
||||
if (this._barriers.every(function(b) { return !b._isHit; })) {
|
||||
this._reset();
|
||||
this._isTriggered = false;
|
||||
}
|
||||
},
|
||||
|
||||
_trigger: function() {
|
||||
@ -1314,6 +1329,8 @@ const PressureBarrier = new Lang.Class({
|
||||
},
|
||||
|
||||
_onBarrierHit: function(barrier, event) {
|
||||
barrier._isHit = true;
|
||||
|
||||
// If we've triggered the barrier, wait until the pointer has the
|
||||
// left the barrier hitbox until we trigger it again.
|
||||
if (this._isTriggered)
|
||||
|
@ -1,4 +1,5 @@
|
||||
const Clutter = imports.gi.Clutter;
|
||||
const GLib = imports.gi.GLib;
|
||||
const GObject = imports.gi.GObject;
|
||||
const Meta = imports.gi.Meta;
|
||||
const Shell = imports.gi.Shell;
|
||||
@ -28,8 +29,9 @@ const STANDARD_TRAY_ICON_IMPLEMENTATIONS = {
|
||||
};
|
||||
|
||||
// Offset of the original position from the bottom-right corner
|
||||
const CONCEALED_VISIBLE_FRACTION = 0.2;
|
||||
const CONCEALED_WIDTH = 3;
|
||||
const REVEAL_ANIMATION_TIME = 0.2;
|
||||
const TEMP_REVEAL_TIME = 2;
|
||||
|
||||
const BARRIER_THRESHOLD = 70;
|
||||
const BARRIER_TIMEOUT = 1000;
|
||||
@ -100,6 +102,7 @@ const LegacyTray = new Lang.Class({
|
||||
|
||||
Main.layoutManager.addChrome(this.actor, { affectsInputRegion: false });
|
||||
Main.layoutManager.trackChrome(this._slider, { affectsInputRegion: true });
|
||||
Main.uiGroup.set_child_below_sibling(this.actor, Main.layoutManager.modalDialogGroup);
|
||||
Main.ctrlAltTabManager.addGroup(this.actor,
|
||||
_("Status Icons"), 'focus-legacy-systray-symbolic',
|
||||
{ sortGroup: CtrlAltTab.SortGroup.BOTTOM });
|
||||
@ -173,7 +176,15 @@ const LegacyTray = new Lang.Class({
|
||||
}));
|
||||
|
||||
this._iconBox.add_actor(button);
|
||||
this._sync();
|
||||
|
||||
if (!this._concealHandle.visible) {
|
||||
this._concealHandle.show();
|
||||
GLib.timeout_add_seconds(GLib.PRIORITY_DEFAULT, TEMP_REVEAL_TIME,
|
||||
Lang.bind(this, function() {
|
||||
this._concealHandle.hide();
|
||||
return GLib.SOURCE_REMOVE;
|
||||
}));
|
||||
}
|
||||
},
|
||||
|
||||
_onTrayIconRemoved: function(tm, icon) {
|
||||
@ -204,11 +215,7 @@ const LegacyTray = new Lang.Class({
|
||||
this._horizontalBarrier.y2 == y2)
|
||||
return;
|
||||
|
||||
if (this._horizontalBarrier) {
|
||||
this._pressureBarrier.removeBarrier(this._horizontalBarrier);
|
||||
this._horizontalBarrier.destroy();
|
||||
this._horizontalBarrier = null;
|
||||
}
|
||||
this._unsetBarrier();
|
||||
|
||||
let directions = (rtl ? Meta.BarrierDirection.NEGATIVE_X : Meta.BarrierDirection.POSITIVE_X);
|
||||
this._horizontalBarrier = new Meta.Barrier({ display: global.display,
|
||||
@ -218,6 +225,15 @@ const LegacyTray = new Lang.Class({
|
||||
this._pressureBarrier.addBarrier(this._horizontalBarrier);
|
||||
},
|
||||
|
||||
_unsetBarrier: function() {
|
||||
if (this._horizontalBarrier == null)
|
||||
return;
|
||||
|
||||
this._pressureBarrier.removeBarrier(this._horizontalBarrier);
|
||||
this._horizontalBarrier.destroy();
|
||||
this._horizontalBarrier = null;
|
||||
},
|
||||
|
||||
_sync: function() {
|
||||
// FIXME: we no longer treat tray icons as notifications
|
||||
let allowed = Main.sessionMode.hasNotifications;
|
||||
@ -238,17 +254,20 @@ const LegacyTray = new Lang.Class({
|
||||
let [, boxWidth] = this._box.get_preferred_width(-1);
|
||||
let [, handleWidth] = this._revealHandle.get_preferred_width(-1);
|
||||
|
||||
targetSlide = handleWidth / boxWidth;
|
||||
if (!this._revealHandle.hover)
|
||||
targetSlide *= CONCEALED_VISIBLE_FRACTION;
|
||||
if (this._revealHandle.hover)
|
||||
targetSlide = handleWidth / boxWidth;
|
||||
else
|
||||
targetSlide = CONCEALED_WIDTH / boxWidth;
|
||||
}
|
||||
|
||||
if (this.actor.visible)
|
||||
if (this.actor.visible) {
|
||||
Tweener.addTween(this._slideLayout,
|
||||
{ slideX: targetSlide,
|
||||
time: REVEAL_ANIMATION_TIME,
|
||||
transition: 'easeOutQuad' });
|
||||
else
|
||||
} else {
|
||||
this._slideLayout.slideX = targetSlide;
|
||||
this._unsetBarrier();
|
||||
}
|
||||
}
|
||||
});
|
||||
|
@ -4,6 +4,7 @@ const Atspi = imports.gi.Atspi;
|
||||
const Clutter = imports.gi.Clutter;
|
||||
const GDesktopEnums = imports.gi.GDesktopEnums;
|
||||
const Gio = imports.gi.Gio;
|
||||
const GLib = imports.gi.GLib;
|
||||
const Shell = imports.gi.Shell;
|
||||
const St = imports.gi.St;
|
||||
const Lang = imports.lang;
|
||||
@ -22,6 +23,8 @@ const MOUSE_POLL_FREQUENCY = 50;
|
||||
const CROSSHAIRS_CLIP_SIZE = [100, 100];
|
||||
const NO_CHANGE = 0.0;
|
||||
|
||||
const POINTER_REST_TIME = 1000; // milliseconds
|
||||
|
||||
// Settings
|
||||
const APPLICATIONS_SCHEMA = 'org.gnome.desktop.a11y.applications';
|
||||
const SHOW_KEY = 'screen-magnifier-enabled';
|
||||
@ -444,55 +447,6 @@ const Magnifier = new Lang.Class({
|
||||
this._appSettings = new Gio.Settings({ schema_id: APPLICATIONS_SCHEMA });
|
||||
this._settings = new Gio.Settings({ schema_id: MAGNIFIER_SCHEMA });
|
||||
|
||||
if (zoomRegion) {
|
||||
// Mag factor is accurate to two decimal places.
|
||||
let aPref = parseFloat(this._settings.get_double(MAG_FACTOR_KEY).toFixed(2));
|
||||
if (aPref != 0.0)
|
||||
zoomRegion.setMagFactor(aPref, aPref);
|
||||
|
||||
aPref = this._settings.get_enum(SCREEN_POSITION_KEY);
|
||||
if (aPref)
|
||||
zoomRegion.setScreenPosition(aPref);
|
||||
|
||||
zoomRegion.setLensMode(this._settings.get_boolean(LENS_MODE_KEY));
|
||||
zoomRegion.setClampScrollingAtEdges(!this._settings.get_boolean(CLAMP_MODE_KEY));
|
||||
|
||||
aPref = this._settings.get_enum(MOUSE_TRACKING_KEY);
|
||||
if (aPref)
|
||||
zoomRegion.setMouseTrackingMode(aPref);
|
||||
|
||||
aPref = this._settings.get_enum(FOCUS_TRACKING_KEY);
|
||||
if (aPref)
|
||||
zoomRegion.setFocusTrackingMode(aPref);
|
||||
|
||||
aPref = this._settings.get_enum(CARET_TRACKING_KEY);
|
||||
if (aPref)
|
||||
zoomRegion.setCaretTrackingMode(aPref);
|
||||
|
||||
aPref = this._settings.get_boolean(INVERT_LIGHTNESS_KEY);
|
||||
if (aPref)
|
||||
zoomRegion.setInvertLightness(aPref);
|
||||
|
||||
aPref = this._settings.get_double(COLOR_SATURATION_KEY);
|
||||
if (aPref)
|
||||
zoomRegion.setColorSaturation(aPref);
|
||||
|
||||
let bc = {};
|
||||
bc.r = this._settings.get_double(BRIGHT_RED_KEY);
|
||||
bc.g = this._settings.get_double(BRIGHT_GREEN_KEY);
|
||||
bc.b = this._settings.get_double(BRIGHT_BLUE_KEY);
|
||||
zoomRegion.setBrightness(bc);
|
||||
|
||||
bc.r = this._settings.get_double(CONTRAST_RED_KEY);
|
||||
bc.g = this._settings.get_double(CONTRAST_GREEN_KEY);
|
||||
bc.b = this._settings.get_double(CONTRAST_BLUE_KEY);
|
||||
zoomRegion.setContrast(bc);
|
||||
}
|
||||
|
||||
let showCrosshairs = this._settings.get_boolean(SHOW_CROSS_HAIRS_KEY);
|
||||
this.addCrosshairs();
|
||||
this.setCrosshairsVisible(showCrosshairs);
|
||||
|
||||
this._appSettings.connect('changed::' + SHOW_KEY,
|
||||
Lang.bind(this, function() {
|
||||
this.setActive(this._appSettings.get_boolean(SHOW_KEY));
|
||||
@ -561,6 +515,56 @@ const Magnifier = new Lang.Class({
|
||||
Lang.bind(this, function() {
|
||||
this.setCrosshairsClip(this._settings.get_boolean(CROSS_HAIRS_CLIP_KEY));
|
||||
}));
|
||||
|
||||
if (zoomRegion) {
|
||||
// Mag factor is accurate to two decimal places.
|
||||
let aPref = parseFloat(this._settings.get_double(MAG_FACTOR_KEY).toFixed(2));
|
||||
if (aPref != 0.0)
|
||||
zoomRegion.setMagFactor(aPref, aPref);
|
||||
|
||||
aPref = this._settings.get_enum(SCREEN_POSITION_KEY);
|
||||
if (aPref)
|
||||
zoomRegion.setScreenPosition(aPref);
|
||||
|
||||
zoomRegion.setLensMode(this._settings.get_boolean(LENS_MODE_KEY));
|
||||
zoomRegion.setClampScrollingAtEdges(!this._settings.get_boolean(CLAMP_MODE_KEY));
|
||||
|
||||
aPref = this._settings.get_enum(MOUSE_TRACKING_KEY);
|
||||
if (aPref)
|
||||
zoomRegion.setMouseTrackingMode(aPref);
|
||||
|
||||
aPref = this._settings.get_enum(FOCUS_TRACKING_KEY);
|
||||
if (aPref)
|
||||
zoomRegion.setFocusTrackingMode(aPref);
|
||||
|
||||
aPref = this._settings.get_enum(CARET_TRACKING_KEY);
|
||||
if (aPref)
|
||||
zoomRegion.setCaretTrackingMode(aPref);
|
||||
|
||||
aPref = this._settings.get_boolean(INVERT_LIGHTNESS_KEY);
|
||||
if (aPref)
|
||||
zoomRegion.setInvertLightness(aPref);
|
||||
|
||||
aPref = this._settings.get_double(COLOR_SATURATION_KEY);
|
||||
if (aPref)
|
||||
zoomRegion.setColorSaturation(aPref);
|
||||
|
||||
let bc = {};
|
||||
bc.r = this._settings.get_double(BRIGHT_RED_KEY);
|
||||
bc.g = this._settings.get_double(BRIGHT_GREEN_KEY);
|
||||
bc.b = this._settings.get_double(BRIGHT_BLUE_KEY);
|
||||
zoomRegion.setBrightness(bc);
|
||||
|
||||
bc.r = this._settings.get_double(CONTRAST_RED_KEY);
|
||||
bc.g = this._settings.get_double(CONTRAST_GREEN_KEY);
|
||||
bc.b = this._settings.get_double(CONTRAST_BLUE_KEY);
|
||||
zoomRegion.setContrast(bc);
|
||||
}
|
||||
|
||||
let showCrosshairs = this._settings.get_boolean(SHOW_CROSS_HAIRS_KEY);
|
||||
this.addCrosshairs();
|
||||
this.setCrosshairsVisible(showCrosshairs);
|
||||
|
||||
return this._appSettings.get_boolean(SHOW_KEY);
|
||||
},
|
||||
|
||||
@ -708,6 +712,9 @@ const ZoomRegion = new Lang.Class({
|
||||
this._xCaret = 0;
|
||||
this._yCaret = 0;
|
||||
|
||||
this._pointerIdleMonitor = Meta.IdleMonitor.get_for_device(Meta.VIRTUAL_CORE_POINTER_ID);
|
||||
this._scrollContentsTimerId = 0;
|
||||
|
||||
Main.layoutManager.connect('monitors-changed',
|
||||
Lang.bind(this, this._monitorsChanged));
|
||||
this._focusCaretTracker.connect('caret-moved',
|
||||
@ -1067,6 +1074,26 @@ const ZoomRegion = new Lang.Class({
|
||||
return this._isMouseOverRegion();
|
||||
},
|
||||
|
||||
_clearScrollContentsTimer: function() {
|
||||
if (this._scrollContentsTimerId != 0) {
|
||||
Mainloop.source_remove(this._scrollContentsTimerId);
|
||||
this._scrollContentsTimerId = 0;
|
||||
}
|
||||
},
|
||||
|
||||
_scrollContentsToDelayed: function(x, y) {
|
||||
if (this._pointerIdleMonitor.get_idletime() >= POINTER_REST_TIME) {
|
||||
this.scrollContentsTo(x, y);
|
||||
return;
|
||||
}
|
||||
|
||||
this._clearScrollContentsTimer();
|
||||
this._scrollContentsTimerId = Mainloop.timeout_add(POINTER_REST_TIME, Lang.bind(this, function() {
|
||||
this._scrollContentsToDelayed(x, y);
|
||||
return GLib.SOURCE_REMOVE;
|
||||
}));
|
||||
},
|
||||
|
||||
/**
|
||||
* scrollContentsTo:
|
||||
* Shift the contents of the magnified view such it is centered on the given
|
||||
@ -1075,6 +1102,8 @@ const ZoomRegion = new Lang.Class({
|
||||
* @y: The y-coord of the point to center on.
|
||||
*/
|
||||
scrollContentsTo: function(x, y) {
|
||||
this._clearScrollContentsTimer();
|
||||
|
||||
this._followingCursor = false;
|
||||
this._changeROI({ xCenter: x,
|
||||
yCenter: y });
|
||||
@ -1380,7 +1409,7 @@ const ZoomRegion = new Lang.Class({
|
||||
else if (this._caretTrackingMode == GDesktopEnums.MagnifierCaretTrackingMode.CENTERED)
|
||||
[xCaret, yCaret] = this._centerFromPointCentered(xCaret, yCaret);
|
||||
|
||||
this.scrollContentsTo(xCaret, yCaret);
|
||||
this._scrollContentsToDelayed(xCaret, yCaret);
|
||||
},
|
||||
|
||||
_centerFromFocusPosition: function() {
|
||||
@ -1394,7 +1423,7 @@ const ZoomRegion = new Lang.Class({
|
||||
else if (this._focusTrackingMode == GDesktopEnums.MagnifierFocusTrackingMode.CENTERED)
|
||||
[xFocus, yFocus] = this._centerFromPointCentered(xFocus, yFocus);
|
||||
|
||||
this.scrollContentsTo(xFocus, yFocus);
|
||||
this._scrollContentsToDelayed(xFocus, yFocus);
|
||||
},
|
||||
|
||||
_centerFromPointPush: function(xPoint, yPoint) {
|
||||
|
@ -69,26 +69,6 @@ const Urgency = {
|
||||
CRITICAL: 3
|
||||
};
|
||||
|
||||
function _fixMarkup(text, allowMarkup) {
|
||||
if (allowMarkup) {
|
||||
// Support &, ", ', < and >, escape all other
|
||||
// occurrences of '&'.
|
||||
let _text = text.replace(/&(?!amp;|quot;|apos;|lt;|gt;)/g, '&');
|
||||
|
||||
// Support <b>, <i>, and <u>, escape anything else
|
||||
// so it displays as raw markup.
|
||||
_text = _text.replace(/<(?!\/?[biu]>)/g, '<');
|
||||
|
||||
try {
|
||||
Pango.parse_markup(_text, -1, '');
|
||||
return _text;
|
||||
} catch (e) {}
|
||||
}
|
||||
|
||||
// !allowMarkup, or invalid markup
|
||||
return GLib.markup_escape_text(text, -1);
|
||||
}
|
||||
|
||||
const FocusGrabber = new Lang.Class({
|
||||
Name: 'FocusGrabber',
|
||||
|
||||
@ -258,6 +238,8 @@ const NotificationApplicationPolicy = new Lang.Class({
|
||||
|
||||
_changed: function(settings, key) {
|
||||
this.emit('policy-changed', key);
|
||||
if (key == 'enable')
|
||||
this.emit('enable-changed');
|
||||
},
|
||||
|
||||
_canonicalizeId: function(id) {
|
||||
@ -508,6 +490,7 @@ const NotificationBanner = new Lang.Class({
|
||||
_init: function(notification) {
|
||||
this.parent(notification);
|
||||
|
||||
this.actor.can_focus = false;
|
||||
this.actor.add_style_class_name('notification-banner');
|
||||
|
||||
this._buttonBox = null;
|
||||
@ -753,10 +736,6 @@ const Source = new Lang.Class({
|
||||
return this.count > 1;
|
||||
},
|
||||
|
||||
get isClearable() {
|
||||
return !this.isChat && !this.resident;
|
||||
},
|
||||
|
||||
countUpdated: function() {
|
||||
this.emit('count-updated');
|
||||
},
|
||||
@ -929,8 +908,6 @@ const MessageTray = new Lang.Class({
|
||||
this._notificationTimeoutId = 0;
|
||||
this._notificationRemoved = false;
|
||||
|
||||
this.clearableCount = 0;
|
||||
|
||||
Main.layoutManager.addChrome(this.actor, { affectsInputRegion: false });
|
||||
Main.layoutManager.trackChrome(this._bannerBin, { affectsInputRegion: true });
|
||||
|
||||
@ -981,6 +958,14 @@ const MessageTray = new Lang.Class({
|
||||
Shell.util_set_hidden_from_pick(this.actor, false);
|
||||
},
|
||||
|
||||
get bannerAlignment() {
|
||||
return this._bannerBin.get_x_align();
|
||||
},
|
||||
|
||||
set bannerAlignment(align) {
|
||||
this._bannerBin.set_x_align(align);
|
||||
},
|
||||
|
||||
_onNotificationKeyRelease: function(actor, event) {
|
||||
if (event.get_key_symbol() == Clutter.KEY_Escape && event.get_state() == 0) {
|
||||
this._expireNotification();
|
||||
@ -1031,9 +1016,6 @@ const MessageTray = new Lang.Class({
|
||||
destroyId: 0,
|
||||
};
|
||||
|
||||
if (source.isClearable)
|
||||
this.clearableCount++;
|
||||
|
||||
this._sources.set(source, obj);
|
||||
|
||||
obj.notifyId = source.connect('notify', Lang.bind(this, this._onNotify));
|
||||
@ -1046,9 +1028,6 @@ const MessageTray = new Lang.Class({
|
||||
let obj = this._sources.get(source);
|
||||
this._sources.delete(source);
|
||||
|
||||
if (source.isClearable)
|
||||
this.clearableCount--;
|
||||
|
||||
source.disconnect(obj.notifyId);
|
||||
source.disconnect(obj.destroyId);
|
||||
|
||||
|
@ -14,7 +14,6 @@ const Atk = imports.gi.Atk;
|
||||
|
||||
const Params = imports.misc.params;
|
||||
|
||||
const Animation = imports.ui.animation;
|
||||
const Layout = imports.ui.layout;
|
||||
const Lightbox = imports.ui.lightbox;
|
||||
const Main = imports.ui.main;
|
||||
@ -23,10 +22,6 @@ const Tweener = imports.ui.tweener;
|
||||
const OPEN_AND_CLOSE_TIME = 0.1;
|
||||
const FADE_OUT_DIALOG_TIME = 1.0;
|
||||
|
||||
const WORK_SPINNER_ICON_SIZE = 24;
|
||||
const WORK_SPINNER_ANIMATION_DELAY = 1.0;
|
||||
const WORK_SPINNER_ANIMATION_TIME = 0.3;
|
||||
|
||||
const State = {
|
||||
OPENED: 0,
|
||||
CLOSED: 1,
|
||||
@ -79,7 +74,9 @@ const ModalDialog = new Lang.Class({
|
||||
this._group.add_actor(this._backgroundBin);
|
||||
|
||||
this.dialogLayout = new St.BoxLayout({ style_class: 'modal-dialog',
|
||||
vertical: true });
|
||||
x_align: Clutter.ActorAlign.CENTER,
|
||||
y_align: Clutter.ActorAlign.CENTER,
|
||||
vertical: true });
|
||||
// modal dialogs are fixed width and grow vertically; set the request
|
||||
// mode accordingly so wrapped labels are handled correctly during
|
||||
// size requests.
|
||||
@ -100,7 +97,8 @@ const ModalDialog = new Lang.Class({
|
||||
this.backgroundStack.add_actor(this.dialogLayout);
|
||||
|
||||
|
||||
this.contentLayout = new St.BoxLayout({ vertical: true });
|
||||
this.contentLayout = new St.BoxLayout({ vertical: true,
|
||||
style_class: "modal-dialog-content-box" });
|
||||
this.dialogLayout.add(this.contentLayout,
|
||||
{ expand: true,
|
||||
x_fill: true,
|
||||
@ -108,8 +106,7 @@ const ModalDialog = new Lang.Class({
|
||||
x_align: St.Align.MIDDLE,
|
||||
y_align: St.Align.START });
|
||||
|
||||
this.buttonLayout = new St.BoxLayout({ style_class: 'modal-dialog-button-box',
|
||||
vertical: false });
|
||||
this.buttonLayout = new St.Widget ({ layout_manager: new Clutter.BoxLayout ({ homogeneous:true }) });
|
||||
this.dialogLayout.add(this.buttonLayout,
|
||||
{ x_align: St.Align.MIDDLE,
|
||||
y_align: St.Align.END });
|
||||
@ -118,8 +115,6 @@ const ModalDialog = new Lang.Class({
|
||||
this._initialKeyFocus = this.dialogLayout;
|
||||
this._initialKeyFocusDestroyId = 0;
|
||||
this._savedKeyFocus = null;
|
||||
|
||||
this._workSpinner = null;
|
||||
},
|
||||
|
||||
destroy: function() {
|
||||
@ -147,16 +142,12 @@ const ModalDialog = new Lang.Class({
|
||||
else
|
||||
x_alignment = St.Align.MIDDLE;
|
||||
|
||||
this.addButton(buttonInfo, { expand: true,
|
||||
x_fill: false,
|
||||
y_fill: false,
|
||||
x_align: x_alignment,
|
||||
y_align: St.Align.MIDDLE });
|
||||
this.addButton(buttonInfo);
|
||||
}
|
||||
},
|
||||
|
||||
addButton: function(buttonInfo, layoutInfo) {
|
||||
let label = buttonInfo['label'];
|
||||
addButton: function(buttonInfo) {
|
||||
let label = buttonInfo['label']
|
||||
let action = buttonInfo['action'];
|
||||
let key = buttonInfo['key'];
|
||||
let isDefault = buttonInfo['default'];
|
||||
@ -170,10 +161,12 @@ const ModalDialog = new Lang.Class({
|
||||
else
|
||||
keys = [];
|
||||
|
||||
let button = new St.Button({ style_class: 'modal-dialog-button button',
|
||||
let button = new St.Button({ style_class: 'modal-dialog-linked-button',
|
||||
button_mask: St.ButtonMask.ONE | St.ButtonMask.THREE,
|
||||
reactive: true,
|
||||
can_focus: true,
|
||||
x_expand: true,
|
||||
y_expand: true,
|
||||
label: label });
|
||||
button.connect('clicked', action);
|
||||
|
||||
@ -188,47 +181,11 @@ const ModalDialog = new Lang.Class({
|
||||
for (let i in keys)
|
||||
this._buttonKeys[keys[i]] = buttonInfo;
|
||||
|
||||
this.buttonLayout.add(button, layoutInfo);
|
||||
this.buttonLayout.add_actor(button);
|
||||
|
||||
return button;
|
||||
},
|
||||
|
||||
placeSpinner: function(layoutInfo) {
|
||||
let spinnerIcon = Gio.File.new_for_uri('resource:///org/gnome/shell/theme/process-working.svg');
|
||||
this._workSpinner = new Animation.AnimatedIcon(spinnerIcon, WORK_SPINNER_ICON_SIZE);
|
||||
this._workSpinner.actor.opacity = 0;
|
||||
this._workSpinner.actor.show();
|
||||
|
||||
this.buttonLayout.add(this._workSpinner.actor, layoutInfo);
|
||||
},
|
||||
|
||||
setWorking: function(working) {
|
||||
if (!this._workSpinner)
|
||||
return;
|
||||
|
||||
Tweener.removeTweens(this._workSpinner.actor);
|
||||
if (working) {
|
||||
this._workSpinner.play();
|
||||
Tweener.addTween(this._workSpinner.actor,
|
||||
{ opacity: 255,
|
||||
delay: WORK_SPINNER_ANIMATION_DELAY,
|
||||
time: WORK_SPINNER_ANIMATION_TIME,
|
||||
transition: 'linear'
|
||||
});
|
||||
} else {
|
||||
Tweener.addTween(this._workSpinner.actor,
|
||||
{ opacity: 0,
|
||||
time: WORK_SPINNER_ANIMATION_TIME,
|
||||
transition: 'linear',
|
||||
onCompleteScope: this,
|
||||
onComplete: function() {
|
||||
if (this._workSpinner)
|
||||
this._workSpinner.stop();
|
||||
}
|
||||
});
|
||||
}
|
||||
},
|
||||
|
||||
_onKeyPressEvent: function(object, event) {
|
||||
this._pressedKey = event.get_key_symbol();
|
||||
return Clutter.EVENT_PROPAGATE;
|
||||
|
@ -15,8 +15,7 @@ const OsdMonitorLabel = new Lang.Class({
|
||||
Name: 'OsdMonitorLabel',
|
||||
|
||||
_init: function(monitor, label) {
|
||||
this._actor = new St.Widget({ opacity: 0,
|
||||
x_expand: true,
|
||||
this._actor = new St.Widget({ x_expand: true,
|
||||
y_expand: true });
|
||||
|
||||
this._monitor = monitor;
|
||||
@ -34,10 +33,6 @@ const OsdMonitorLabel = new Lang.Class({
|
||||
this._position();
|
||||
|
||||
Meta.disable_unredirect_for_screen(global.screen);
|
||||
Tweener.addTween(this._actor,
|
||||
{ opacity: 255,
|
||||
time: FADE_TIME,
|
||||
transition: 'easeOutQuad' });
|
||||
},
|
||||
|
||||
_position: function() {
|
||||
@ -52,15 +47,8 @@ const OsdMonitorLabel = new Lang.Class({
|
||||
},
|
||||
|
||||
destroy: function() {
|
||||
Tweener.addTween(this._actor,
|
||||
{ opacity: 0,
|
||||
time: FADE_TIME,
|
||||
transition: 'easeOutQuad',
|
||||
onComplete: Lang.bind(this, function() {
|
||||
this._actor.destroy();
|
||||
Meta.enable_unredirect_for_screen(global.screen);
|
||||
})
|
||||
});
|
||||
this._actor.destroy();
|
||||
Meta.enable_unredirect_for_screen(global.screen);
|
||||
}
|
||||
});
|
||||
|
||||
|
@ -107,13 +107,6 @@ const Overview = new Lang.Class({
|
||||
|
||||
this._overviewCreated = true;
|
||||
|
||||
// The main Background actors are inside global.window_group which are
|
||||
// hidden when displaying the overview, so we create a new
|
||||
// one. Instances of this class share a single CoglTexture behind the
|
||||
// scenes which allows us to show the background with different
|
||||
// rendering options without duplicating the texture data.
|
||||
let monitor = Main.layoutManager.primaryMonitor;
|
||||
|
||||
let layout = new Clutter.BinLayout();
|
||||
this._stack = new Clutter.Actor({ layout_manager: layout });
|
||||
this._stack.add_constraint(new LayoutManager.MonitorConstraint({ primary: true }));
|
||||
@ -128,6 +121,11 @@ const Overview = new Lang.Class({
|
||||
y_expand: true });
|
||||
this._overview._delegate = this;
|
||||
|
||||
// The main Background actors are inside global.window_group which are
|
||||
// hidden when displaying the overview, so we create a new
|
||||
// one. Instances of this class share a single CoglTexture behind the
|
||||
// scenes which allows us to show the background with different
|
||||
// rendering options without duplicating the texture data.
|
||||
this._backgroundGroup = new Meta.BackgroundGroup();
|
||||
Main.layoutManager.overviewGroup.add_child(this._backgroundGroup);
|
||||
this._bgManagers = [];
|
||||
|
@ -25,12 +25,12 @@ const RemoteMenu = imports.ui.remoteMenu;
|
||||
const Main = imports.ui.main;
|
||||
const Tweener = imports.ui.tweener;
|
||||
|
||||
const PANEL_ICON_SIZE = 24;
|
||||
const APP_MENU_ICON_MARGIN = 2;
|
||||
const PANEL_ICON_SIZE = 16;
|
||||
const APP_MENU_ICON_MARGIN = 0;
|
||||
|
||||
const BUTTON_DND_ACTIVATION_TIMEOUT = 250;
|
||||
|
||||
const SPINNER_ANIMATION_TIME = 0.2;
|
||||
const SPINNER_ANIMATION_TIME = 1.0;
|
||||
|
||||
// To make sure the panel corners blend nicely with the panel,
|
||||
// we draw background and borders the same way, e.g. drawing
|
||||
@ -697,7 +697,6 @@ const AggregateMenu = new Lang.Class({
|
||||
this.menu.addMenuItem(this._location.menu);
|
||||
this.menu.addMenuItem(this._rfkill.menu);
|
||||
this.menu.addMenuItem(this._power.menu);
|
||||
this.menu.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
|
||||
this.menu.addMenuItem(this._system.menu);
|
||||
},
|
||||
});
|
||||
@ -933,6 +932,14 @@ const Panel = new Lang.Class({
|
||||
this._updateBox(panel.center, this._centerBox);
|
||||
this._updateBox(panel.right, this._rightBox);
|
||||
|
||||
if (panel.left.indexOf('dateMenu') != -1)
|
||||
Main.messageTray.bannerAlignment = Clutter.ActorAlign.START;
|
||||
else if (panel.right.indexOf('dateMenu') != -1)
|
||||
Main.messageTray.bannerAlignment = Clutter.ActorAlign.END;
|
||||
// Default to center if there is no dateMenu
|
||||
else
|
||||
Main.messageTray.bannerAlignment = Clutter.ActorAlign.CENTER;
|
||||
|
||||
if (this._sessionStyle)
|
||||
this._removeStyleClassName(this._sessionStyle);
|
||||
|
||||
@ -995,6 +1002,7 @@ const Panel = new Lang.Class({
|
||||
if (parent)
|
||||
parent.remove_actor(container);
|
||||
|
||||
|
||||
box.insert_child_at_index(container, position);
|
||||
if (indicator.menu)
|
||||
this.menuManager.addMenu(indicator.menu);
|
||||
@ -1004,6 +1012,8 @@ const Panel = new Lang.Class({
|
||||
emitter.disconnect(destroyId);
|
||||
container.destroy();
|
||||
}));
|
||||
indicator.connect('menu-set', Lang.bind(this, this._onMenuSet));
|
||||
this._onMenuSet(indicator);
|
||||
},
|
||||
|
||||
addToStatusArea: function(role, indicator, position, box) {
|
||||
@ -1035,5 +1045,24 @@ const Panel = new Lang.Class({
|
||||
this.actor.remove_style_class_name(className);
|
||||
this._rightCorner.actor.remove_style_class_name(className);
|
||||
this._leftCorner.actor.remove_style_class_name(className);
|
||||
},
|
||||
|
||||
_onMenuSet: function(indicator) {
|
||||
if (!indicator.menu || indicator.menu._openChangedId > 0)
|
||||
return;
|
||||
|
||||
indicator.menu._openChangedId = indicator.menu.connect('open-state-changed',
|
||||
Lang.bind(this, function(menu, isOpen) {
|
||||
let boxAlignment;
|
||||
if (this._leftBox.contains(indicator.container))
|
||||
boxAlignment = Clutter.ActorAlign.START;
|
||||
else if (this._centerBox.contains(indicator.container))
|
||||
boxAlignment = Clutter.ActorAlign.CENTER;
|
||||
else if (this._rightBox.contains(indicator.container))
|
||||
boxAlignment = Clutter.ActorAlign.END;
|
||||
|
||||
if (boxAlignment == Main.messageTray.bannerAlignment)
|
||||
Main.messageTray.bannerBlocked = isOpen;
|
||||
}));
|
||||
}
|
||||
});
|
||||
|
@ -128,6 +128,7 @@ const Button = new Lang.Class({
|
||||
Main.uiGroup.add_actor(this.menu.actor);
|
||||
this.menu.actor.hide();
|
||||
}
|
||||
this.emit('menu-set');
|
||||
},
|
||||
|
||||
_onEvent: function(actor, event) {
|
||||
|
@ -396,6 +396,7 @@ const PopupImageMenuItem = new Lang.Class({
|
||||
this.actor.add_child(this.label);
|
||||
this._icon = new St.Icon({ style_class: 'popup-menu-icon' });
|
||||
this.actor.add_child(this._icon, { align: St.Align.END });
|
||||
this.actor.label_actor = this.label;
|
||||
|
||||
this.setIcon(iconName);
|
||||
},
|
||||
@ -1059,11 +1060,6 @@ const PopupSubMenuMenuItem = new Lang.Class({
|
||||
let expander = new St.Bin({ style_class: 'popup-menu-item-expander' });
|
||||
this.actor.add(expander, { expand: true });
|
||||
|
||||
this.status = new St.Label({ style_class: 'popup-status-menu-item',
|
||||
y_expand: true,
|
||||
y_align: Clutter.ActorAlign.CENTER });
|
||||
this.actor.add_child(this.status);
|
||||
|
||||
this._triangle = arrowIcon(St.Side.RIGHT);
|
||||
this._triangle.pivot_point = new Clutter.Point({ x: 0.5, y: 0.6 });
|
||||
|
||||
|
@ -63,7 +63,7 @@ const SearchProvider2Iface = '<node> \
|
||||
var SearchProviderProxyInfo = Gio.DBusInterfaceInfo.new_for_xml(SearchProviderIface);
|
||||
var SearchProvider2ProxyInfo = Gio.DBusInterfaceInfo.new_for_xml(SearchProvider2Iface);
|
||||
|
||||
function loadRemoteSearchProviders(callback) {
|
||||
function loadRemoteSearchProviders(searchSettings, callback) {
|
||||
let objectPaths = {};
|
||||
let loadedProviders = [];
|
||||
|
||||
@ -124,7 +124,6 @@ function loadRemoteSearchProviders(callback) {
|
||||
}
|
||||
}
|
||||
|
||||
let searchSettings = new Gio.Settings({ schema_id: Search.SEARCH_PROVIDERS_SCHEMA });
|
||||
if (searchSettings.get_boolean('disable-external')) {
|
||||
callback([]);
|
||||
return;
|
||||
|
@ -507,21 +507,22 @@ const ScreenShield = new Lang.Class({
|
||||
this._liftShield(true, 0);
|
||||
}));
|
||||
|
||||
this._inhibitor = null;
|
||||
this._aboutToSuspend = false;
|
||||
this._loginManager = LoginManager.getLoginManager();
|
||||
this._loginManager.connect('prepare-for-sleep',
|
||||
Lang.bind(this, this._prepareForSleep));
|
||||
this._inhibitSuspend();
|
||||
|
||||
this._loginSession = null;
|
||||
this._loginManager.getCurrentSessionProxy(Lang.bind(this,
|
||||
function(sessionProxy) {
|
||||
this._loginSession = sessionProxy;
|
||||
this._loginSession.connectSignal('Lock', Lang.bind(this, function() { this.lock(false); }));
|
||||
this._loginSession.connectSignal('Unlock', Lang.bind(this, function() { this.deactivate(false); }));
|
||||
this._loginSession.connect('g-properties-changed', Lang.bind(this, this._syncInhibitor));
|
||||
this._syncInhibitor();
|
||||
}));
|
||||
|
||||
this._settings = new Gio.Settings({ schema_id: SCREENSAVER_SCHEMA });
|
||||
this._settings.connect('changed::' + LOCK_ENABLED_KEY, Lang.bind(this, this._syncInhibitor));
|
||||
|
||||
this._isModal = false;
|
||||
this._hasLockScreen = false;
|
||||
@ -547,6 +548,18 @@ const ScreenShield = new Lang.Class({
|
||||
|
||||
this.idleMonitor = Meta.IdleMonitor.get_core();
|
||||
this._cursorTracker = Meta.CursorTracker.get_for_screen(global.screen);
|
||||
|
||||
this._syncInhibitor();
|
||||
},
|
||||
|
||||
_setActive: function(active) {
|
||||
let prevIsActive = this._isActive;
|
||||
this._isActive = active;
|
||||
|
||||
if (prevIsActive != this._isActive)
|
||||
this.emit('active-changed');
|
||||
|
||||
this._syncInhibitor();
|
||||
},
|
||||
|
||||
_createBackground: function(monitorIndex) {
|
||||
@ -664,31 +677,28 @@ const ScreenShield = new Lang.Class({
|
||||
return Clutter.EVENT_STOP;
|
||||
},
|
||||
|
||||
_inhibitSuspend: function() {
|
||||
this._loginManager.inhibit(_("GNOME needs to lock the screen"),
|
||||
Lang.bind(this, function(inhibitor) {
|
||||
this._inhibitor = inhibitor;
|
||||
}));
|
||||
},
|
||||
|
||||
_uninhibitSuspend: function() {
|
||||
if (this._inhibitor)
|
||||
this._inhibitor.close(null);
|
||||
this._inhibitor = null;
|
||||
_syncInhibitor: function() {
|
||||
let inhibit = (this._loginSession && this._loginSession.Active &&
|
||||
!this._isActive && this._settings.get_boolean(LOCK_ENABLED_KEY));
|
||||
if (inhibit) {
|
||||
this._loginManager.inhibit(_("GNOME needs to lock the screen"),
|
||||
Lang.bind(this, function(inhibitor) {
|
||||
if (this._inhibitor)
|
||||
this._inhibitor.close(null);
|
||||
this._inhibitor = inhibitor;
|
||||
}));
|
||||
} else {
|
||||
if (this._inhibitor)
|
||||
this._inhibitor.close(null);
|
||||
this._inhibitor = null;
|
||||
}
|
||||
},
|
||||
|
||||
_prepareForSleep: function(loginManager, aboutToSuspend) {
|
||||
this._aboutToSuspend = aboutToSuspend;
|
||||
|
||||
if (aboutToSuspend) {
|
||||
if (!this._settings.get_boolean(LOCK_ENABLED_KEY)) {
|
||||
this._uninhibitSuspend();
|
||||
return;
|
||||
}
|
||||
this.lock(true);
|
||||
if (this._settings.get_boolean(LOCK_ENABLED_KEY))
|
||||
this.lock(true);
|
||||
} else {
|
||||
this._inhibitSuspend();
|
||||
|
||||
this._wakeUpScreen();
|
||||
}
|
||||
},
|
||||
@ -1083,15 +1093,7 @@ const ScreenShield = new Lang.Class({
|
||||
},
|
||||
|
||||
_completeLockScreenShown: function() {
|
||||
let prevIsActive = this._isActive;
|
||||
this._isActive = true;
|
||||
|
||||
if (prevIsActive != this._isActive)
|
||||
this.emit('active-changed');
|
||||
|
||||
if (this._aboutToSuspend)
|
||||
this._uninhibitSuspend();
|
||||
|
||||
this._setActive(true);
|
||||
this.emit('lock-screen-shown');
|
||||
},
|
||||
|
||||
@ -1185,8 +1187,7 @@ const ScreenShield = new Lang.Class({
|
||||
// gnome-settings-daemon will stop blanking the screen
|
||||
|
||||
this._activationTime = 0;
|
||||
this._isActive = false;
|
||||
this.emit('active-changed');
|
||||
this._setActive(false);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -1229,9 +1230,8 @@ const ScreenShield = new Lang.Class({
|
||||
}
|
||||
|
||||
this._activationTime = 0;
|
||||
this._isActive = false;
|
||||
this._setActive(false);
|
||||
this._isLocked = false;
|
||||
this.emit('active-changed');
|
||||
this.emit('locked-changed');
|
||||
global.set_runtime_state(LOCKED_STATE_STR, null);
|
||||
},
|
||||
|
@ -416,6 +416,7 @@ const SearchResults = new Lang.Class({
|
||||
|
||||
this._searchSettings = new Gio.Settings({ schema_id: SEARCH_PROVIDERS_SCHEMA });
|
||||
this._searchSettings.connect('changed::disabled', Lang.bind(this, this._reloadRemoteProviders));
|
||||
this._searchSettings.connect('changed::enabled', Lang.bind(this, this._reloadRemoteProviders));
|
||||
this._searchSettings.connect('changed::disable-external', Lang.bind(this, this._reloadRemoteProviders));
|
||||
this._searchSettings.connect('changed::sort-order', Lang.bind(this, this._reloadRemoteProviders));
|
||||
|
||||
@ -434,7 +435,7 @@ const SearchResults = new Lang.Class({
|
||||
this._unregisterProvider(provider);
|
||||
}));
|
||||
|
||||
RemoteSearch.loadRemoteSearchProviders(Lang.bind(this, function(providers) {
|
||||
RemoteSearch.loadRemoteSearchProviders(this._searchSettings, Lang.bind(this, function(providers) {
|
||||
providers.forEach(Lang.bind(this, this._registerProvider));
|
||||
}));
|
||||
},
|
||||
|
@ -119,23 +119,46 @@ const ATIndicator = new Lang.Class({
|
||||
|
||||
_buildItem: function(string, schema, key) {
|
||||
let settings = new Gio.Settings({ schema_id: schema });
|
||||
settings.connect('changed::'+key, Lang.bind(this, function() {
|
||||
widget.setToggleState(settings.get_boolean(key));
|
||||
|
||||
this._queueSyncMenuVisibility();
|
||||
}));
|
||||
|
||||
let widget = this._buildItemExtended(string,
|
||||
settings.get_boolean(key),
|
||||
settings.is_writable(key),
|
||||
function(enabled) {
|
||||
return settings.set_boolean(key, enabled);
|
||||
});
|
||||
settings.connect('changed::'+key, Lang.bind(this, function() {
|
||||
widget.setToggleState(settings.get_boolean(key));
|
||||
|
||||
this._queueSyncMenuVisibility();
|
||||
}));
|
||||
return widget;
|
||||
},
|
||||
|
||||
_buildHCItem: function() {
|
||||
let interfaceSettings = new Gio.Settings({ schema_id: DESKTOP_INTERFACE_SCHEMA });
|
||||
let wmSettings = new Gio.Settings({ schema_id: WM_SCHEMA });
|
||||
interfaceSettings.connect('changed::' + KEY_GTK_THEME, Lang.bind(this, function() {
|
||||
let value = interfaceSettings.get_string(KEY_GTK_THEME);
|
||||
if (value == HIGH_CONTRAST_THEME) {
|
||||
highContrast.setToggleState(true);
|
||||
} else {
|
||||
highContrast.setToggleState(false);
|
||||
gtkTheme = value;
|
||||
}
|
||||
|
||||
this._queueSyncMenuVisibility();
|
||||
}));
|
||||
interfaceSettings.connect('changed::' + KEY_ICON_THEME, function() {
|
||||
let value = interfaceSettings.get_string(KEY_ICON_THEME);
|
||||
if (value != HIGH_CONTRAST_THEME)
|
||||
iconTheme = value;
|
||||
});
|
||||
wmSettings.connect('changed::' + KEY_WM_THEME, function() {
|
||||
let value = wmSettings.get_string(KEY_WM_THEME);
|
||||
if (value != HIGH_CONTRAST_THEME)
|
||||
wmTheme = value;
|
||||
});
|
||||
|
||||
let gtkTheme = interfaceSettings.get_string(KEY_GTK_THEME);
|
||||
let iconTheme = interfaceSettings.get_string(KEY_ICON_THEME);
|
||||
let wmTheme = wmSettings.get_string(KEY_WM_THEME);
|
||||
@ -161,32 +184,18 @@ const ATIndicator = new Lang.Class({
|
||||
wmSettings.reset(KEY_WM_THEME);
|
||||
}
|
||||
});
|
||||
interfaceSettings.connect('changed::' + KEY_GTK_THEME, Lang.bind(this, function() {
|
||||
let value = interfaceSettings.get_string(KEY_GTK_THEME);
|
||||
if (value == HIGH_CONTRAST_THEME) {
|
||||
highContrast.setToggleState(true);
|
||||
} else {
|
||||
highContrast.setToggleState(false);
|
||||
gtkTheme = value;
|
||||
}
|
||||
|
||||
this._queueSyncMenuVisibility();
|
||||
}));
|
||||
interfaceSettings.connect('changed::' + KEY_ICON_THEME, function() {
|
||||
let value = interfaceSettings.get_string(KEY_ICON_THEME);
|
||||
if (value != HIGH_CONTRAST_THEME)
|
||||
iconTheme = value;
|
||||
});
|
||||
wmSettings.connect('changed::' + KEY_WM_THEME, function() {
|
||||
let value = wmSettings.get_string(KEY_WM_THEME);
|
||||
if (value != HIGH_CONTRAST_THEME)
|
||||
wmTheme = value;
|
||||
});
|
||||
return highContrast;
|
||||
},
|
||||
|
||||
_buildFontItem: function() {
|
||||
let settings = new Gio.Settings({ schema_id: DESKTOP_INTERFACE_SCHEMA });
|
||||
settings.connect('changed::' + KEY_TEXT_SCALING_FACTOR, Lang.bind(this, function() {
|
||||
let factor = settings.get_double(KEY_TEXT_SCALING_FACTOR);
|
||||
let active = (factor > 1.0);
|
||||
widget.setToggleState(active);
|
||||
|
||||
this._queueSyncMenuVisibility();
|
||||
}));
|
||||
|
||||
let factor = settings.get_double(KEY_TEXT_SCALING_FACTOR);
|
||||
let initial_setting = (factor > 1.0);
|
||||
@ -200,13 +209,6 @@ const ATIndicator = new Lang.Class({
|
||||
else
|
||||
settings.reset(KEY_TEXT_SCALING_FACTOR);
|
||||
});
|
||||
settings.connect('changed::' + KEY_TEXT_SCALING_FACTOR, Lang.bind(this, function() {
|
||||
let factor = settings.get_double(KEY_TEXT_SCALING_FACTOR);
|
||||
let active = (factor > 1.0);
|
||||
widget.setToggleState(active);
|
||||
|
||||
this._queueSyncMenuVisibility();
|
||||
}));
|
||||
return widget;
|
||||
}
|
||||
});
|
||||
|
@ -46,7 +46,7 @@ const Indicator = new Lang.Class({
|
||||
|
||||
// The Bluetooth menu only appears when Bluetooth is in use,
|
||||
// so just statically build it with a "Turn Off" menu item.
|
||||
this._item = new PopupMenu.PopupSubMenuMenuItem(_("Bluetooth"), true);
|
||||
this._item = new PopupMenu.PopupSubMenuMenuItem('', true);
|
||||
this._item.icon.icon_name = 'bluetooth-active-symbolic';
|
||||
this._item.menu.addAction(_("Turn Off"), Lang.bind(this, function() {
|
||||
this._proxy.BluetoothAirplaneMode = true;
|
||||
@ -101,8 +101,9 @@ const Indicator = new Lang.Class({
|
||||
this._item.actor.visible = this._proxy.BluetoothHasAirplaneMode && !this._proxy.BluetoothAirplaneMode;
|
||||
|
||||
if (nDevices > 0)
|
||||
this._item.status.text = ngettext("%d Connected Device", "%d Connected Devices", nDevices).format(nDevices);
|
||||
/* Translators: this is the number of connected bluetooth devices */
|
||||
this._item.label.text = ngettext("%d Connected", "%d Connected", nDevices).format(nDevices);
|
||||
else
|
||||
this._item.status.text = _("Not Connected");
|
||||
this._item.label.text = _("Not In Use");
|
||||
},
|
||||
});
|
||||
|
@ -295,11 +295,11 @@ const InputSourceManager = new Lang.Class({
|
||||
this._ibusSources = {};
|
||||
|
||||
this._currentSource = null;
|
||||
this._backupSource = null;
|
||||
|
||||
// All valid input sources currently in the gsettings
|
||||
// KEY_INPUT_SOURCES list ordered by most recently used
|
||||
this._mruSources = [];
|
||||
this._mruSourcesBackup = null;
|
||||
this._keybindingAction =
|
||||
Main.wm.addKeybinding('switch-input-source',
|
||||
new Gio.Settings({ schema_id: "org.gnome.desktop.wm.keybindings" }),
|
||||
@ -516,6 +516,11 @@ const InputSourceManager = new Lang.Class({
|
||||
|
||||
this._keyboardManager.setUserLayouts(sourcesList.map(function(x) { return x.xkbId; }));
|
||||
|
||||
if (!this._disableIBus && this._mruSourcesBackup) {
|
||||
this._mruSources = this._mruSourcesBackup;
|
||||
this._mruSourcesBackup = null;
|
||||
}
|
||||
|
||||
let mruSources = [];
|
||||
for (let i = 0; i < this._mruSources.length; i++) {
|
||||
for (let j = 0; j < sourcesList.length; j++)
|
||||
@ -527,20 +532,8 @@ const InputSourceManager = new Lang.Class({
|
||||
}
|
||||
this._mruSources = mruSources.concat(sourcesList);
|
||||
|
||||
if (this._mruSources.length > 0) {
|
||||
if (!this._disableIBus && this._backupSource) {
|
||||
for (let i = 0; i < this._mruSources.length; i++) {
|
||||
if (this._mruSources[i].type == this._backupSource.type &&
|
||||
this._mruSources[i].id == this._backupSource.id) {
|
||||
let currentSource = this._mruSources.splice(i, 1);
|
||||
this._mruSources = currentSource.concat(this._mruSources);
|
||||
break;
|
||||
}
|
||||
}
|
||||
this._backupSource = null;
|
||||
}
|
||||
if (this._mruSources.length > 0)
|
||||
this._mruSources[0].activate();
|
||||
}
|
||||
|
||||
// All ibus engines are preloaded here to reduce the launching time
|
||||
// when users switch the input sources.
|
||||
@ -605,16 +598,12 @@ const InputSourceManager = new Lang.Class({
|
||||
if (this._disableIBus)
|
||||
return;
|
||||
this._disableIBus = true;
|
||||
this._backupSource = this._currentSource;
|
||||
this._mruSourcesBackup = this._mruSources.slice();
|
||||
} else {
|
||||
if (!this._disableIBus)
|
||||
return;
|
||||
this._disableIBus = false;
|
||||
}
|
||||
// If this._mruSources is not cleared before this.reload() is called,
|
||||
// the order is different from the original one as IM sources will
|
||||
// be appended to XKB sources.
|
||||
this._mruSources = [];
|
||||
this.reload();
|
||||
},
|
||||
|
||||
|
@ -62,13 +62,13 @@ const Indicator = new Lang.Class({
|
||||
this._indicator = this._addIndicator();
|
||||
this._indicator.icon_name = 'find-location-symbolic';
|
||||
|
||||
this._item = new PopupMenu.PopupSubMenuMenuItem(_("Location"), true);
|
||||
this._item = new PopupMenu.PopupSubMenuMenuItem('', true);
|
||||
this._item.icon.icon_name = 'find-location-symbolic';
|
||||
|
||||
this._agent = Gio.DBusExportedObject.wrapJSObject(AgentIface, this);
|
||||
this._agent.export(Gio.DBus.system, '/org/freedesktop/GeoClue2/Agent');
|
||||
|
||||
this._item.status.text = _("Enabled");
|
||||
this._item.label.text = _("Location Enabled");
|
||||
this._onOffAction = this._item.menu.addAction(_("Disable"), Lang.bind(this, this._onOnOffAction));
|
||||
this._item.menu.addSettingsAction(_("Privacy Settings"), 'gnome-privacy-panel.desktop');
|
||||
|
||||
@ -173,10 +173,11 @@ const Indicator = new Lang.Class({
|
||||
|
||||
_updateMenuLabels: function() {
|
||||
if (this._settings.get_boolean(ENABLED)) {
|
||||
this._item.status.text = this._indicator.visible ? _("In Use") : _("Enabled");
|
||||
this._item.label.text = this._indicator.visible ? _("Location In Use")
|
||||
: _("Location Enabled");
|
||||
this._onOffAction.label.text = _("Disable");
|
||||
} else {
|
||||
this._item.status.text = _("Disabled");
|
||||
this._item.label.text = _("Location Disabled");
|
||||
this._onOffAction.label.text = _("Enable");
|
||||
}
|
||||
},
|
||||
|
@ -257,16 +257,8 @@ const NMConnectionSection = new Lang.Class({
|
||||
this._radioSection.actor.visible = (nItems > 1);
|
||||
this._labelSection.actor.visible = (nItems == 1);
|
||||
|
||||
this.item.status.text = this._getStatus();
|
||||
this.item.label.text = this._getStatus();
|
||||
this.item.icon.icon_name = this._getMenuIcon();
|
||||
|
||||
// desc can be undefined at cold-plug, before we called
|
||||
// NMGtk.disambiguate_device_names() at least once
|
||||
let desc = this._getDescription();
|
||||
if (desc)
|
||||
this.item.label.text = desc;
|
||||
else
|
||||
this.item.label.text = '';
|
||||
},
|
||||
|
||||
_getMenuIcon: function() {
|
||||
@ -355,6 +347,7 @@ const NMConnectionDevice = new Lang.Class({
|
||||
this.parent(client);
|
||||
this._device = device;
|
||||
this._settings = settings;
|
||||
this._description = '';
|
||||
|
||||
this._autoConnectItem = this.item.menu.addAction(_("Connect"), Lang.bind(this, this._autoConnect));
|
||||
this._deactivateItem = this._radioSection.addAction(_("Turn Off"), Lang.bind(this, this.deactivateConnection));
|
||||
@ -454,38 +447,44 @@ const NMConnectionDevice = new Lang.Class({
|
||||
|
||||
switch(this._device.state) {
|
||||
case NetworkManager.DeviceState.DISCONNECTED:
|
||||
return _("Off");
|
||||
/* Translators: %s is a network identifier */
|
||||
return _("%s Off").format(this._getDescription());
|
||||
case NetworkManager.DeviceState.ACTIVATED:
|
||||
return _("Connected");
|
||||
/* Translators: %s is a network identifier */
|
||||
return _("%s Connected").format(this._getDescription());
|
||||
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");
|
||||
under NetworkManager's control (and thus cannot be used in the menu);
|
||||
%s is a network identifier */
|
||||
return _("%s Unmanaged").format(this._getDescription());
|
||||
case NetworkManager.DeviceState.DEACTIVATING:
|
||||
return _("Disconnecting");
|
||||
/* Translators: %s is a network identifier */
|
||||
return _("%s Disconnecting").format(this._getDescription());
|
||||
case NetworkManager.DeviceState.PREPARE:
|
||||
case NetworkManager.DeviceState.CONFIG:
|
||||
case NetworkManager.DeviceState.IP_CONFIG:
|
||||
case NetworkManager.DeviceState.IP_CHECK:
|
||||
case NetworkManager.DeviceState.SECONDARIES:
|
||||
return _("Connecting");
|
||||
/* Translators: %s is a network identifier */
|
||||
return _("%s Connecting").format(this._getDescription());
|
||||
case NetworkManager.DeviceState.NEED_AUTH:
|
||||
/* Translators: this is for network connections that require some kind of key or password */
|
||||
return _("Authentication required");
|
||||
/* Translators: this is for network connections that require some kind of key or password; %s is a network identifier */
|
||||
return _("%s Requires Authentication").format(this._getDescription());
|
||||
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
|
||||
// or may not updated when we receive state-changed).
|
||||
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");
|
||||
module, which is missing; %s is a network identifier */
|
||||
return _("Firmware Missing For %s").format(this._getDescription());
|
||||
}
|
||||
/* 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");
|
||||
is disabled by rfkill, or it has no coverage; %s is a network identifier */
|
||||
return _("%s Unavailable").format(this._getDescription());
|
||||
case NetworkManager.DeviceState.FAILED:
|
||||
return _("Connection failed");
|
||||
/* Translators: %s is a network identifier */
|
||||
return _("%s Connection Failed").format(this._getDescription());
|
||||
default:
|
||||
log('Device state invalid, is %d'.format(this._device.state));
|
||||
return 'invalid';
|
||||
@ -585,11 +584,12 @@ const NMDeviceModem = new Lang.Class({
|
||||
|
||||
_getStatus: function() {
|
||||
if (!this._client.wwan_hardware_enabled)
|
||||
return _("Hardware Disabled");
|
||||
/* Translators: %s is a network identifier */
|
||||
return _("%s Hardware Disabled").format(this._getDescription());
|
||||
else if (!this._client.wwan_enabled)
|
||||
/* Translators: this is for a network device that cannot be activated
|
||||
because it's disabled by rfkill (airplane mode) */
|
||||
return _("Disabled");
|
||||
because it's disabled by rfkill (airplane mode); %s is a network identifier */
|
||||
return _("%s Disabled").format(this._getDescription());
|
||||
else if (this._device.state == NetworkManager.DeviceState.ACTIVATED &&
|
||||
this._mobileDevice && this._mobileDevice.operator_name)
|
||||
return this._mobileDevice.operator_name;
|
||||
@ -877,7 +877,7 @@ const NMWirelessDialog = new Lang.Class({
|
||||
y_align: Clutter.ActorAlign.CENTER });
|
||||
|
||||
let file = Gio.File.new_for_uri('resource:///org/gnome/shell/theme/process-working.svg');
|
||||
this._noNetworksSpinner = new Animation.AnimatedIcon(file, 24, 24);
|
||||
this._noNetworksSpinner = new Animation.AnimatedIcon(file, 16, 16);
|
||||
this._noNetworksBox.add_actor(this._noNetworksSpinner.actor);
|
||||
this._noNetworksBox.add_actor(new St.Label({ style_class: 'no-networks-label',
|
||||
text: _("No Networks") }));
|
||||
@ -917,10 +917,7 @@ const NMWirelessDialog = new Lang.Class({
|
||||
key: Clutter.Escape });
|
||||
this._connectButton = this.addButton({ action: Lang.bind(this, this._connect),
|
||||
label: _("Connect"),
|
||||
key: Clutter.Return },
|
||||
{ expand: true,
|
||||
x_fill: false,
|
||||
x_align: St.Align.END });
|
||||
key: Clutter.Return });
|
||||
},
|
||||
|
||||
_connect: function() {
|
||||
@ -1282,9 +1279,8 @@ const NMDeviceWireless = new Lang.Class({
|
||||
this._toggleItem.label.text = this._client.wireless_enabled ? _("Turn Off") : _("Turn On");
|
||||
this._toggleItem.actor.visible = this._client.wireless_hardware_enabled;
|
||||
|
||||
this.item.status.text = this._getStatus();
|
||||
this.item.icon.icon_name = this._getMenuIcon();
|
||||
this.item.label.text = this._description;
|
||||
this.item.label.text = this._getStatus();
|
||||
},
|
||||
|
||||
setDeviceDescription: function(desc) {
|
||||
@ -1296,18 +1292,23 @@ const NMDeviceWireless = new Lang.Class({
|
||||
let ap = this._device.active_access_point;
|
||||
|
||||
if (this._isHotSpotMaster())
|
||||
return _("Hotspot Active");
|
||||
/* Translators: %s is a network identifier */
|
||||
return _("%s Hotspot Active").format(this._description);
|
||||
else if (this._device.state >= NetworkManager.DeviceState.PREPARE &&
|
||||
this._device.state < NetworkManager.DeviceState.ACTIVATED)
|
||||
return _("Connecting");
|
||||
/* Translators: %s is a network identifier */
|
||||
return _("%s Connecting").format(this._description);
|
||||
else if (ap)
|
||||
return ssidToLabel(ap.get_ssid());
|
||||
else if (!this._client.wireless_hardware_enabled)
|
||||
return _("Hardware Disabled");
|
||||
/* Translators: %s is a network identifier */
|
||||
return _("%s Hardware Disabled").format(this._description);
|
||||
else if (!this._client.wireless_enabled)
|
||||
return _("Off");
|
||||
/* Translators: %s is a network identifier */
|
||||
return _("%s Off").format(this._description);
|
||||
else if (this._device.state == NetworkManager.DeviceState.DISCONNECTED)
|
||||
return _("Not Connected");
|
||||
/* Translators: %s is a network identifier */
|
||||
return _("%s Not Connected").format(this._description);
|
||||
else
|
||||
return '';
|
||||
},
|
||||
@ -1509,7 +1510,7 @@ const NMVPNSection = new Lang.Class({
|
||||
return item.getName();
|
||||
}
|
||||
|
||||
return _("Off");
|
||||
return _("VPN Off");
|
||||
},
|
||||
|
||||
_getMenuIcon: function() {
|
||||
|
@ -112,12 +112,6 @@ const Indicator = new Lang.Class({
|
||||
this._item.icon.icon_name = icon;
|
||||
|
||||
// The status label
|
||||
this._item.status.text = this._getStatus();
|
||||
|
||||
// The sub-menu heading
|
||||
if (this._proxy.Type == UPower.DeviceKind.UPS)
|
||||
this._item.label.text = _("UPS");
|
||||
else
|
||||
this._item.label.text = _("Battery");
|
||||
this._item.label.text = this._getStatus();
|
||||
},
|
||||
});
|
||||
|
@ -85,9 +85,8 @@ const Indicator = new Lang.Class({
|
||||
// The menu only appears when airplane mode is on, so just
|
||||
// statically build it as if it was on, rather than dynamically
|
||||
// changing the menu contents.
|
||||
this._item = new PopupMenu.PopupSubMenuMenuItem(_("Airplane Mode"), true);
|
||||
this._item = new PopupMenu.PopupSubMenuMenuItem(_("Airplane Mode On"), true);
|
||||
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;
|
||||
}));
|
||||
|
@ -17,15 +17,24 @@ const PanelMenu = imports.ui.panelMenu;
|
||||
const PopupMenu = imports.ui.popupMenu;
|
||||
|
||||
const LOCKDOWN_SCHEMA = 'org.gnome.desktop.lockdown';
|
||||
const SCREENSAVER_SCHEMA = 'org.gnome.desktop.screensaver';
|
||||
const LOGIN_SCREEN_SCHEMA = 'org.gnome.login-screen';
|
||||
const PRIVACY_SCHEMA = 'org.gnome.desktop.privacy'
|
||||
const DISABLE_USER_SWITCH_KEY = 'disable-user-switching';
|
||||
const DISABLE_LOCK_SCREEN_KEY = 'disable-lock-screen';
|
||||
const DISABLE_LOG_OUT_KEY = 'disable-log-out';
|
||||
const DISABLE_RESTART_KEY = 'disable-restart-buttons';
|
||||
const ALWAYS_SHOW_LOG_OUT_KEY = 'always-show-log-out';
|
||||
|
||||
const SENSOR_BUS_NAME = 'net.hadess.SensorProxy';
|
||||
const SENSOR_OBJECT_PATH = '/net/hadess/SensorProxy';
|
||||
|
||||
const SensorProxyInterface = '<node> \
|
||||
<interface name="net.hadess.SensorProxy"> \
|
||||
<property name="HasAccelerometer" type="b" access="read"/> \
|
||||
</interface> \
|
||||
</node>';
|
||||
|
||||
const SensorProxy = Gio.DBusProxy.makeProxyWrapper(SensorProxyInterface);
|
||||
|
||||
const AltSwitcher = new Lang.Class({
|
||||
Name: 'AltSwitcher',
|
||||
|
||||
@ -95,10 +104,8 @@ const Indicator = new Lang.Class({
|
||||
_init: function() {
|
||||
this.parent();
|
||||
|
||||
this._screenSaverSettings = new Gio.Settings({ schema_id: SCREENSAVER_SCHEMA });
|
||||
this._loginScreenSettings = new Gio.Settings({ schema_id: LOGIN_SCREEN_SCHEMA });
|
||||
this._lockdownSettings = new Gio.Settings({ schema_id: LOCKDOWN_SCHEMA });
|
||||
this._privacySettings = new Gio.Settings({ schema_id: PRIVACY_SCHEMA });
|
||||
this._orientationSettings = new Gio.Settings({ schema_id: 'org.gnome.settings-daemon.peripherals.touchscreen' });
|
||||
|
||||
this._session = new GnomeSession.SessionManager();
|
||||
@ -129,6 +136,7 @@ const Indicator = new Lang.Class({
|
||||
Lang.bind(this, this._updateMultiUser));
|
||||
this._updateSwitchUser();
|
||||
this._updateMultiUser();
|
||||
this._updateLockScreen();
|
||||
|
||||
// Whether shutdown is available or not depends on both lockdown
|
||||
// settings (disable-log-out) and Polkit policy - the latter doesn't
|
||||
@ -147,23 +155,32 @@ const Indicator = new Lang.Class({
|
||||
|
||||
this._orientationSettings.connect('changed::orientation-lock',
|
||||
Lang.bind(this, this._updateOrientationLock));
|
||||
this._orientationExists = false;
|
||||
Gio.DBus.session.watch_name('org.gnome.SettingsDaemon.Orientation',
|
||||
Gio.BusNameWatcherFlags.NONE,
|
||||
Lang.bind(this, function() {
|
||||
this._orientationExists = true;
|
||||
this._updateOrientationLock();
|
||||
}),
|
||||
Lang.bind(this, function() {
|
||||
this._orientationExists = false;
|
||||
this._updateOrientationLock();
|
||||
}));
|
||||
Gio.DBus.system.watch_name(SENSOR_BUS_NAME,
|
||||
Gio.BusNameWatcherFlags.NONE,
|
||||
Lang.bind(this, this._sensorProxyAppeared),
|
||||
Lang.bind(this, function() {
|
||||
this._sensorProxy = null;
|
||||
this._updateOrientationLock();
|
||||
}));
|
||||
this._updateOrientationLock();
|
||||
|
||||
Main.sessionMode.connect('updated', Lang.bind(this, this._sessionUpdated));
|
||||
this._sessionUpdated();
|
||||
},
|
||||
|
||||
_sensorProxyAppeared: function() {
|
||||
this._sensorProxy = new SensorProxy(Gio.DBus.system, SENSOR_BUS_NAME, SENSOR_OBJECT_PATH,
|
||||
Lang.bind(this, function(proxy, error) {
|
||||
if (error) {
|
||||
log(error.message);
|
||||
return;
|
||||
}
|
||||
this._sensorProxy.connect('g-properties-changed',
|
||||
Lang.bind(this, this._updateOrientationLock));
|
||||
this._updateOrientationLock();
|
||||
}));
|
||||
},
|
||||
|
||||
_updateActionsVisibility: function() {
|
||||
let visible = (this._settingsAction.visible ||
|
||||
this._orientationLockAction.visible ||
|
||||
@ -234,13 +251,22 @@ const Indicator = new Lang.Class({
|
||||
let file = Gio.File.new_for_path(iconFile);
|
||||
let gicon = new Gio.FileIcon({ file: file });
|
||||
this._switchUserSubMenu.icon.gicon = gicon;
|
||||
|
||||
this._switchUserSubMenu.icon.add_style_class_name('user-icon');
|
||||
this._switchUserSubMenu.icon.remove_style_class_name('default-icon');
|
||||
} else {
|
||||
this._switchUserSubMenu.icon.icon_name = 'avatar-default-symbolic';
|
||||
|
||||
this._switchUserSubMenu.icon.add_style_class_name('default-icon');
|
||||
this._switchUserSubMenu.icon.remove_style_class_name('user-icon');
|
||||
}
|
||||
},
|
||||
|
||||
_updateOrientationLock: function() {
|
||||
this._orientationLockAction.visible = this._orientationExists;
|
||||
if (this._sensorProxy)
|
||||
this._orientationLockAction.visible = this._sensorProxy.HasAccelerometer;
|
||||
else
|
||||
this._orientationLockAction.visible = false;
|
||||
|
||||
let locked = this._orientationSettings.get_boolean('orientation-lock');
|
||||
let icon = this._orientationLockAction.child;
|
||||
@ -324,6 +350,9 @@ const Indicator = new Lang.Class({
|
||||
this._switchUserSubMenu.menu.addMenuItem(item);
|
||||
this._logoutItem = item;
|
||||
|
||||
this._switchUserSubMenu.menu.addSettingsAction(_("Account Settings"),
|
||||
'gnome-user-accounts-panel.desktop');
|
||||
|
||||
this._user.connect('notify::is-loaded', Lang.bind(this, this._updateSwitchUserSubMenu));
|
||||
this._user.connect('changed', Lang.bind(this, this._updateSwitchUserSubMenu));
|
||||
|
||||
|
@ -465,6 +465,12 @@ const ViewSelector = new Lang.Class({
|
||||
},
|
||||
|
||||
_shouldTriggerSearch: function(symbol) {
|
||||
if (symbol == Clutter.Multi_key)
|
||||
return true;
|
||||
|
||||
if (symbol == Clutter.BackSpace && this._searchActive)
|
||||
return true;
|
||||
|
||||
let unicode = Clutter.keysym_to_unicode(symbol);
|
||||
if (unicode == 0)
|
||||
return false;
|
||||
@ -472,7 +478,7 @@ const ViewSelector = new Lang.Class({
|
||||
if (getTermsForSearchString(String.fromCharCode(unicode)).length > 0)
|
||||
return true;
|
||||
|
||||
return symbol == Clutter.BackSpace && this._searchActive;
|
||||
return false;
|
||||
},
|
||||
|
||||
startSearch: function(event) {
|
||||
|
@ -11,7 +11,8 @@ const WindowAttentionHandler = new Lang.Class({
|
||||
|
||||
_init : function() {
|
||||
this._tracker = Shell.WindowTracker.get_default();
|
||||
global.display.connect('window-demands-attention', Lang.bind(this, this._onWindowDemandsAttention));
|
||||
this._windowDemandsAttentionId = global.display.connect('window-demands-attention',
|
||||
Lang.bind(this, this._onWindowDemandsAttention));
|
||||
},
|
||||
|
||||
_getTitleAndBanner: function(app, window) {
|
||||
|
@ -19,8 +19,6 @@ const Tweener = imports.ui.tweener;
|
||||
const WindowMenu = imports.ui.windowMenu;
|
||||
|
||||
const SHELL_KEYBINDINGS_SCHEMA = 'org.gnome.shell.keybindings';
|
||||
const MAXIMIZE_WINDOW_ANIMATION_TIME = 0.15;
|
||||
const UNMAXIMIZE_WINDOW_ANIMATION_TIME = 0.15;
|
||||
const MINIMIZE_WINDOW_ANIMATION_TIME = 0.2;
|
||||
const SHOW_WINDOW_ANIMATION_TIME = 0.15;
|
||||
const DIALOG_SHOW_WINDOW_ANIMATION_TIME = 0.1;
|
||||
@ -83,12 +81,10 @@ const DisplayChangeDialog = new Lang.Class({
|
||||
*/
|
||||
this._cancelButton = this.addButton({ label: _("Revert Settings"),
|
||||
action: Lang.bind(this, this._onFailure),
|
||||
key: Clutter.Escape },
|
||||
{ expand: true, x_fill: false, x_align: St.Align.START });
|
||||
key: Clutter.Escape });
|
||||
this._okButton = this.addButton({ label: _("Keep Changes"),
|
||||
action: Lang.bind(this, this._onSuccess),
|
||||
default: true },
|
||||
{ expand: false, x_fill: false, x_align: St.Align.END });
|
||||
default: true });
|
||||
|
||||
this._timeoutId = Mainloop.timeout_add(ONE_SECOND, Lang.bind(this, this._tick));
|
||||
GLib.Source.set_name_by_id(this._timeoutId, '[gnome-shell] this._tick');
|
||||
@ -197,6 +193,8 @@ const WorkspaceTracker = new Lang.Class({
|
||||
this._workspaces = [];
|
||||
this._checkWorkspacesId = 0;
|
||||
|
||||
this._pauseWorkspaceCheck = false;
|
||||
|
||||
let tracker = Shell.WindowTracker.get_default();
|
||||
tracker.connect('startup-sequence-changed', Lang.bind(this, this._queueCheckWorkspaces));
|
||||
|
||||
@ -215,11 +213,20 @@ const WorkspaceTracker = new Lang.Class({
|
||||
|
||||
_getWorkspaceSettings: function() {
|
||||
let settings = global.get_overrides_settings();
|
||||
if (settings.list_keys().indexOf('dynamic-workspaces') > -1)
|
||||
if (settings &&
|
||||
settings.settings_schema.list_keys().indexOf('dynamic-workspaces') > -1)
|
||||
return settings;
|
||||
return new Gio.Settings({ schema_id: 'org.gnome.mutter' });
|
||||
},
|
||||
|
||||
blockUpdates: function() {
|
||||
this._pauseWorkspaceCheck = true;
|
||||
},
|
||||
|
||||
unblockUpdates: function() {
|
||||
this._pauseWorkspaceCheck = false;
|
||||
},
|
||||
|
||||
_checkWorkspaces: function() {
|
||||
let i;
|
||||
let emptyWorkspaces = [];
|
||||
@ -229,6 +236,10 @@ const WorkspaceTracker = new Lang.Class({
|
||||
return false;
|
||||
}
|
||||
|
||||
// Update workspaces only if Dynamic Workspace Management has not been paused by some other function
|
||||
if (this._pauseWorkspaceCheck)
|
||||
return true;
|
||||
|
||||
for (i = 0; i < this._workspaces.length; i++) {
|
||||
let lastRemoved = this._workspaces[i]._lastRemovedWindow;
|
||||
if ((lastRemoved &&
|
||||
@ -464,52 +475,100 @@ const TilePreview = new Lang.Class({
|
||||
}
|
||||
});
|
||||
|
||||
const TouchpadWorkspaceSwitchAction = new Lang.Class({
|
||||
Name: 'TouchpadWorkspaceSwitchAction',
|
||||
|
||||
_init: function(actor) {
|
||||
this._dx = 0;
|
||||
this._dy = 0;
|
||||
actor.connect('captured-event', Lang.bind(this, this._handleEvent));
|
||||
},
|
||||
|
||||
_checkActivated: function() {
|
||||
const MOTION_THRESHOLD = 50;
|
||||
let allowedModes = Shell.ActionMode.NORMAL | Shell.ActionMode.OVERVIEW;
|
||||
let dir;
|
||||
|
||||
if ((allowedModes & Main.actionMode) == 0)
|
||||
return;
|
||||
|
||||
if (this._dy < -MOTION_THRESHOLD)
|
||||
dir = Meta.MotionDirection.DOWN;
|
||||
else if (this._dy > MOTION_THRESHOLD)
|
||||
dir = Meta.MotionDirection.UP;
|
||||
else if (this._dx < -MOTION_THRESHOLD)
|
||||
dir = Meta.MotionDirection.RIGHT;
|
||||
else if (this._dx > MOTION_THRESHOLD)
|
||||
dir = Meta.MotionDirection.LEFT;
|
||||
else
|
||||
return;
|
||||
|
||||
this.emit('activated', dir);
|
||||
},
|
||||
|
||||
_handleEvent: function(actor, event) {
|
||||
if (event.type() != Clutter.EventType.TOUCHPAD_SWIPE)
|
||||
return Clutter.EVENT_PROPAGATE;
|
||||
|
||||
if (event.get_gesture_swipe_finger_count() != 4)
|
||||
return Clutter.EVENT_PROPAGATE;
|
||||
|
||||
if (event.get_gesture_phase() == Clutter.TouchpadGesturePhase.UPDATE) {
|
||||
let [dx, dy] = event.get_gesture_motion_delta(event);
|
||||
|
||||
this._dx += dx;
|
||||
this._dy += dy;
|
||||
} else {
|
||||
if (event.get_gesture_phase() == Clutter.TouchpadGesturePhase.END)
|
||||
this._checkActivated();
|
||||
|
||||
this._dx = 0;
|
||||
this._dy = 0;
|
||||
}
|
||||
|
||||
return Clutter.EVENT_STOP;
|
||||
}
|
||||
});
|
||||
Signals.addSignalMethods(TouchpadWorkspaceSwitchAction.prototype);
|
||||
|
||||
const WorkspaceSwitchAction = new Lang.Class({
|
||||
Name: 'WorkspaceSwitchAction',
|
||||
Extends: Clutter.GestureAction,
|
||||
Extends: Clutter.SwipeAction,
|
||||
|
||||
_init : function() {
|
||||
const MOTION_THRESHOLD = 50;
|
||||
|
||||
this.parent();
|
||||
this.set_n_touch_points(4);
|
||||
this.set_threshold_trigger_distance(MOTION_THRESHOLD, MOTION_THRESHOLD);
|
||||
|
||||
global.display.connect('grab-op-begin', Lang.bind(this, function() {
|
||||
this.cancel();
|
||||
}));
|
||||
},
|
||||
|
||||
vfunc_gesture_prepare : function(action, actor) {
|
||||
vfunc_gesture_prepare : function(actor) {
|
||||
let allowedModes = Shell.ActionMode.NORMAL | Shell.ActionMode.OVERVIEW;
|
||||
return this.get_n_current_points() == this.get_n_touch_points() &&
|
||||
(allowedModes & Main.actionMode);
|
||||
|
||||
if (!this.parent(actor))
|
||||
return false;
|
||||
|
||||
return (allowedModes & Main.actionMode);
|
||||
},
|
||||
|
||||
vfunc_gesture_end : function(action, actor) {
|
||||
const MOTION_THRESHOLD = 50;
|
||||
vfunc_swept : function(actor, direction) {
|
||||
let dir;
|
||||
|
||||
// Just check one touchpoint here
|
||||
let [startX, startY] = this.get_press_coords(0);
|
||||
let [x, y] = this.get_motion_coords(0);
|
||||
let offsetX = x - startX;
|
||||
let offsetY = y - startY;
|
||||
let direction;
|
||||
if (direction & Clutter.SwipeDirection.UP)
|
||||
dir = Meta.MotionDirection.DOWN;
|
||||
else if (direction & Clutter.SwipeDirection.DOWN)
|
||||
dir = Meta.MotionDirection.UP;
|
||||
else if (direction & Clutter.SwipeDirection.LEFT)
|
||||
dir = Meta.MotionDirection.RIGHT;
|
||||
else if (direction & Clutter.SwipeDirection.RIGHT)
|
||||
dir = Meta.MotionDirection.LEFT;
|
||||
|
||||
if (Math.abs(offsetX) < MOTION_THRESHOLD &&
|
||||
Math.abs(offsetY) < MOTION_THRESHOLD)
|
||||
return;
|
||||
|
||||
if (Math.abs(offsetY) > Math.abs(offsetX)) {
|
||||
if (offsetY > 0)
|
||||
direction = Meta.MotionDirection.UP;
|
||||
else
|
||||
direction = Meta.MotionDirection.DOWN;
|
||||
} else {
|
||||
if (offsetX > 0)
|
||||
direction = Meta.MotionDirection.LEFT;
|
||||
else
|
||||
direction = Meta.MotionDirection.RIGHT;
|
||||
}
|
||||
|
||||
this.emit('activated', direction);
|
||||
this.emit('activated', dir);
|
||||
}
|
||||
});
|
||||
Signals.addSignalMethods(WorkspaceSwitchAction.prototype);
|
||||
@ -617,8 +676,6 @@ const WindowManager = new Lang.Class({
|
||||
|
||||
this._minimizing = [];
|
||||
this._unminimizing = [];
|
||||
this._maximizing = [];
|
||||
this._unmaximizing = [];
|
||||
this._mapping = [];
|
||||
this._destroying = [];
|
||||
this._movingWindow = null;
|
||||
@ -627,12 +684,12 @@ const WindowManager = new Lang.Class({
|
||||
|
||||
this._allowedKeybindings = {};
|
||||
|
||||
this._isWorkspacePrepended = false;
|
||||
|
||||
this._switchData = null;
|
||||
this._shellwm.connect('kill-switch-workspace', Lang.bind(this, this._switchWorkspaceDone));
|
||||
this._shellwm.connect('kill-window-effects', Lang.bind(this, function (shellwm, actor) {
|
||||
this._minimizeWindowDone(shellwm, actor);
|
||||
this._maximizeWindowDone(shellwm, actor);
|
||||
this._unmaximizeWindowDone(shellwm, actor);
|
||||
this._mapWindowDone(shellwm, actor);
|
||||
this._destroyWindowDone(shellwm, actor);
|
||||
}));
|
||||
@ -643,8 +700,7 @@ const WindowManager = new Lang.Class({
|
||||
this._shellwm.connect('show-window-menu', Lang.bind(this, this._showWindowMenu));
|
||||
this._shellwm.connect('minimize', Lang.bind(this, this._minimizeWindow));
|
||||
this._shellwm.connect('unminimize', Lang.bind(this, this._unminimizeWindow));
|
||||
this._shellwm.connect('maximize', Lang.bind(this, this._maximizeWindow));
|
||||
this._shellwm.connect('unmaximize', Lang.bind(this, this._unmaximizeWindow));
|
||||
this._shellwm.connect('size-change', Lang.bind(this, this._sizeChangeWindow));
|
||||
this._shellwm.connect('map', Lang.bind(this, this._mapWindow));
|
||||
this._shellwm.connect('destroy', Lang.bind(this, this._destroyWindow));
|
||||
this._shellwm.connect('filter-keybinding', Lang.bind(this, this._filterKeybinding));
|
||||
@ -864,15 +920,22 @@ const WindowManager = new Lang.Class({
|
||||
false, -1, 1);
|
||||
|
||||
let gesture = new WorkspaceSwitchAction();
|
||||
gesture.connect('activated', Lang.bind(this, function(action, direction) {
|
||||
let newWs = global.screen.get_active_workspace().get_neighbor(direction);
|
||||
this.actionMoveWorkspace(newWs);
|
||||
}));
|
||||
gesture.connect('activated', Lang.bind(this, this._actionSwitchWorkspace));
|
||||
global.stage.add_action(gesture);
|
||||
|
||||
// This is not a normal Clutter.GestureAction, doesn't need add_action()
|
||||
gesture = new TouchpadWorkspaceSwitchAction(global.stage);
|
||||
gesture.connect('activated', Lang.bind(this, this._actionSwitchWorkspace));
|
||||
|
||||
gesture = new AppSwitchAction();
|
||||
gesture.connect('activated', Lang.bind(this, this._switchApp));
|
||||
global.stage.add_action(gesture);
|
||||
|
||||
},
|
||||
|
||||
_actionSwitchWorkspace: function(action, direction) {
|
||||
let newWs = global.screen.get_active_workspace().get_neighbor(direction);
|
||||
this.actionMoveWorkspace(newWs);
|
||||
},
|
||||
|
||||
_lookupIndex: function (windows, metaWindow) {
|
||||
@ -915,6 +978,8 @@ const WindowManager = new Lang.Class({
|
||||
if (!Meta.prefs_get_dynamic_workspaces())
|
||||
return;
|
||||
|
||||
global.screen.append_new_workspace(false, global.get_current_time());
|
||||
|
||||
let windows = global.get_window_actors().map(function(winActor) {
|
||||
return winActor.meta_window;
|
||||
});
|
||||
@ -1152,22 +1217,8 @@ const WindowManager = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
|
||||
_maximizeWindow : function(shellwm, actor, targetX, targetY, targetWidth, targetHeight) {
|
||||
shellwm.completed_maximize(actor);
|
||||
},
|
||||
|
||||
_maximizeWindowDone : function(shellwm, actor) {
|
||||
},
|
||||
|
||||
_maximizeWindowOverwrite : function(shellwm, actor) {
|
||||
},
|
||||
|
||||
_unmaximizeWindow : function(shellwm, actor, targetX, targetY, targetWidth, targetHeight) {
|
||||
shellwm.completed_unmaximize(actor);
|
||||
},
|
||||
|
||||
_unmaximizeWindowDone : function(shellwm, actor) {
|
||||
_sizeChangeWindow : function(shellwm, actor, whichChange, oldFrameRect, oldBufferRect) {
|
||||
shellwm.completed_size_change(actor);
|
||||
},
|
||||
|
||||
_hasAttachedDialogs: function(window, ignoreWindow) {
|
||||
@ -1626,14 +1677,26 @@ const WindowManager = new Lang.Class({
|
||||
let newWs;
|
||||
let direction;
|
||||
|
||||
if (action == 'move') {
|
||||
// "Moving" a window to another workspace doesn't make sense when
|
||||
// it cannot be unstuck, and is potentially confusing if a new
|
||||
// workspaces is added at the start/end
|
||||
if (window.is_always_on_all_workspaces() ||
|
||||
(Meta.prefs_get_workspaces_only_on_primary() &&
|
||||
window.get_monitor() != Main.layoutManager.primaryIndex))
|
||||
return;
|
||||
}
|
||||
|
||||
if (target == 'last') {
|
||||
direction = Meta.MotionDirection.DOWN;
|
||||
newWs = screen.get_workspace_by_index(screen.n_workspaces - 1);
|
||||
} else if (isNaN(target)) {
|
||||
// Prepend a new workspace dynamically
|
||||
if (screen.get_active_workspace_index() == 0 &&
|
||||
action == 'move' && target == 'up')
|
||||
action == 'move' && target == 'up' && this._isWorkspacePrepended == false) {
|
||||
this.insertWorkspace(0);
|
||||
this._isWorkspacePrepended = true;
|
||||
}
|
||||
|
||||
direction = Meta.MotionDirection[target.toUpperCase()];
|
||||
newWs = screen.get_active_workspace().get_neighbor(direction);
|
||||
@ -1658,9 +1721,12 @@ const WindowManager = new Lang.Class({
|
||||
|
||||
if (!Main.overview.visible) {
|
||||
if (this._workspaceSwitcherPopup == null) {
|
||||
this._workspaceTracker.blockUpdates();
|
||||
this._workspaceSwitcherPopup = new WorkspaceSwitcherPopup.WorkspaceSwitcherPopup();
|
||||
this._workspaceSwitcherPopup.connect('destroy', Lang.bind(this, function() {
|
||||
this._workspaceTracker.unblockUpdates();
|
||||
this._workspaceSwitcherPopup = null;
|
||||
this._isWorkspacePrepended = false;
|
||||
}));
|
||||
}
|
||||
this._workspaceSwitcherPopup.display(direction, newWs.index());
|
||||
|
@ -74,7 +74,7 @@ const WindowMenu = new Lang.Class({
|
||||
window.make_above();
|
||||
}));
|
||||
if (window.is_above())
|
||||
item.setOrnament(PopupMenu.Ornament.DOT);
|
||||
item.setOrnament(PopupMenu.Ornament.CHECK);
|
||||
if (window.get_maximized() == Meta.MaximizeFlags.BOTH ||
|
||||
type == Meta.WindowType.DOCK ||
|
||||
type == Meta.WindowType.DESKTOP ||
|
||||
@ -93,7 +93,7 @@ const WindowMenu = new Lang.Class({
|
||||
window.stick();
|
||||
}));
|
||||
if (isSticky)
|
||||
item.setOrnament(PopupMenu.Ornament.DOT);
|
||||
item.setOrnament(PopupMenu.Ornament.CHECK);
|
||||
if (window.is_always_on_all_workspaces())
|
||||
item.setSensitive(false);
|
||||
|
||||
@ -101,13 +101,22 @@ const WindowMenu = new Lang.Class({
|
||||
|
||||
if (!isSticky) {
|
||||
let workspace = window.get_workspace();
|
||||
let idx = workspace.index();
|
||||
if (idx > 0) {
|
||||
if (workspace != workspace.get_neighbor(Meta.MotionDirection.LEFT)) {
|
||||
this.addAction(_("Move to Workspace Left"), Lang.bind(this, function(event) {
|
||||
window.change_workspace(workspace.get_neighbor(Meta.MotionDirection.LEFT));
|
||||
}));
|
||||
}
|
||||
if (workspace != workspace.get_neighbor(Meta.MotionDirection.RIGHT)) {
|
||||
this.addAction(_("Move to Workspace Right"), Lang.bind(this, function(event) {
|
||||
window.change_workspace(workspace.get_neighbor(Meta.MotionDirection.RIGHT));
|
||||
}));
|
||||
}
|
||||
if (workspace != workspace.get_neighbor(Meta.MotionDirection.UP)) {
|
||||
this.addAction(_("Move to Workspace Up"), Lang.bind(this, function(event) {
|
||||
window.change_workspace(workspace.get_neighbor(Meta.MotionDirection.UP));
|
||||
}));
|
||||
}
|
||||
if (idx < nWorkspaces) {
|
||||
if (workspace != workspace.get_neighbor(Meta.MotionDirection.DOWN)) {
|
||||
this.addAction(_("Move to Workspace Down"), Lang.bind(this, function(event) {
|
||||
window.change_workspace(workspace.get_neighbor(Meta.MotionDirection.DOWN));
|
||||
}));
|
||||
@ -115,6 +124,39 @@ const WindowMenu = new Lang.Class({
|
||||
}
|
||||
}
|
||||
|
||||
let screen = global.screen;
|
||||
let nMonitors = screen.get_n_monitors();
|
||||
if (nMonitors > 1) {
|
||||
this.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
|
||||
|
||||
let monitorIndex = window.get_monitor();
|
||||
|
||||
let upMonitorIndex = screen.get_monitor_neighbor_index(monitorIndex, Meta.ScreenDirection.UP);
|
||||
if (upMonitorIndex != -1) {
|
||||
this.addAction(_("Move to Monitor Up"), Lang.bind(this, function(event) {
|
||||
window.move_to_monitor(upMonitorIndex);
|
||||
}));
|
||||
}
|
||||
let downMonitorIndex = screen.get_monitor_neighbor_index(monitorIndex, Meta.ScreenDirection.DOWN);
|
||||
if (downMonitorIndex != -1) {
|
||||
this.addAction(_("Move to Monitor Down"), Lang.bind(this, function(event) {
|
||||
window.move_to_monitor(downMonitorIndex);
|
||||
}));
|
||||
}
|
||||
let leftMonitorIndex = screen.get_monitor_neighbor_index(monitorIndex, Meta.ScreenDirection.LEFT);
|
||||
if (leftMonitorIndex != -1) {
|
||||
this.addAction(_("Move to Monitor Left"), Lang.bind(this, function(event) {
|
||||
window.move_to_monitor(leftMonitorIndex);
|
||||
}));
|
||||
}
|
||||
let rightMonitorIndex = screen.get_monitor_neighbor_index(monitorIndex, Meta.ScreenDirection.RIGHT);
|
||||
if (rightMonitorIndex != -1) {
|
||||
this.addAction(_("Move to Monitor Right"), Lang.bind(this, function(event) {
|
||||
window.move_to_monitor(rightMonitorIndex);
|
||||
}));
|
||||
}
|
||||
}
|
||||
|
||||
this.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
|
||||
|
||||
item = this.addAction(_("Close"), Lang.bind(this, function(event) {
|
||||
@ -167,6 +209,10 @@ const WindowMenuManager = new Lang.Class({
|
||||
menu.connect('activate', function() {
|
||||
window.check_alive(global.get_current_time());
|
||||
});
|
||||
let destroyId = window.connect('unmanaged',
|
||||
function() {
|
||||
menu.close();
|
||||
});
|
||||
|
||||
this._sourceActor.set_size(rect.width, rect.height);
|
||||
this._sourceActor.set_position(rect.x, rect.y);
|
||||
@ -180,6 +226,7 @@ const WindowMenuManager = new Lang.Class({
|
||||
|
||||
this._sourceActor.hide();
|
||||
menu.destroy();
|
||||
window.disconnect(destroyId);
|
||||
}));
|
||||
}
|
||||
});
|
||||
|
@ -97,8 +97,6 @@ const WorkspacesView = new Lang.Class({
|
||||
this._scrolling = false; // swipe-scrolling
|
||||
this._animatingScroll = false; // programatically updating the adjustment
|
||||
|
||||
this._settings = new Gio.Settings({ schema_id: OVERRIDE_SCHEMA });
|
||||
|
||||
let activeWorkspaceIndex = global.screen.get_active_workspace_index();
|
||||
this.scrollAdjustment = new St.Adjustment({ value: activeWorkspaceIndex,
|
||||
lower: 0,
|
||||
@ -418,7 +416,7 @@ const WorkspacesDisplay = new Lang.Class({
|
||||
this.actor.connect('notify::allocation', Lang.bind(this, this._updateWorkspacesActualGeometry));
|
||||
this.actor.connect('parent-set', Lang.bind(this, this._parentSet));
|
||||
|
||||
let clickAction = new Clutter.ClickAction()
|
||||
let clickAction = new Clutter.ClickAction();
|
||||
clickAction.connect('clicked', Lang.bind(this, function(action) {
|
||||
// Only switch to the workspace when there's no application
|
||||
// windows open. The problem is that it's too easy to miss
|
||||
@ -464,6 +462,7 @@ const WorkspacesDisplay = new Lang.Class({
|
||||
|
||||
this._notifyOpacityId = 0;
|
||||
this._scrollEventId = 0;
|
||||
this._keyPressEventId = 0;
|
||||
|
||||
this._fullGeometry = null;
|
||||
},
|
||||
@ -495,6 +494,9 @@ const WorkspacesDisplay = new Lang.Class({
|
||||
Lang.bind(this, this._onRestacked));
|
||||
if (this._scrollEventId == 0)
|
||||
this._scrollEventId = Main.overview.connect('scroll-event', Lang.bind(this, this._onScrollEvent));
|
||||
|
||||
if (this._keyPressEventId == 0)
|
||||
this._keyPressEventId = global.stage.connect('key-press-event', Lang.bind(this, this._onKeyPressEvent));
|
||||
},
|
||||
|
||||
animateFromOverview: function(fadeOnPrimary) {
|
||||
@ -517,7 +519,10 @@ const WorkspacesDisplay = new Lang.Class({
|
||||
Main.overview.disconnect(this._scrollEventId);
|
||||
this._scrollEventId = 0;
|
||||
}
|
||||
|
||||
if (this._keyPressEventId > 0) {
|
||||
global.stage.disconnect(this._keyPressEventId);
|
||||
this._keyPressEventId = 0;
|
||||
}
|
||||
for (let i = 0; i < this._workspacesViews.length; i++)
|
||||
this._workspacesViews[i].destroy();
|
||||
this._workspacesViews = [];
|
||||
@ -670,6 +675,25 @@ const WorkspacesDisplay = new Lang.Class({
|
||||
}
|
||||
Main.wm.actionMoveWorkspace(ws);
|
||||
return Clutter.EVENT_STOP;
|
||||
},
|
||||
|
||||
_onKeyPressEvent: function(actor, event) {
|
||||
if (!this.actor.mapped)
|
||||
return Clutter.EVENT_PROPAGATE;
|
||||
let activeWs = global.screen.get_active_workspace();
|
||||
let ws;
|
||||
switch (event.get_key_symbol()) {
|
||||
case Clutter.KEY_Page_Up:
|
||||
ws = activeWs.get_neighbor(Meta.MotionDirection.UP);
|
||||
break;
|
||||
case Clutter.KEY_Page_Down:
|
||||
ws = activeWs.get_neighbor(Meta.MotionDirection.DOWN);
|
||||
break;
|
||||
default:
|
||||
return Clutter.EVENT_PROPAGATE;
|
||||
}
|
||||
Main.wm.actionMoveWorkspace(ws);
|
||||
return Clutter.EVENT_STOP;
|
||||
}
|
||||
});
|
||||
Signals.addSignalMethods(WorkspacesDisplay.prototype);
|
||||
|
@ -50,6 +50,7 @@ nb
|
||||
ne
|
||||
nl
|
||||
nn
|
||||
oc
|
||||
or
|
||||
pa
|
||||
pl
|
||||
|
297
po/an.po
@ -9,24 +9,23 @@ 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: 2015-03-17 12:39+0000\n"
|
||||
"PO-Revision-Date: 2015-03-17 19:50+0100\n"
|
||||
"Last-Translator: Daniel Martinez <entaltoaragon@gmail.com>\n"
|
||||
"POT-Creation-Date: 2015-07-23 08:08+0000\n"
|
||||
"PO-Revision-Date: 2015-04-28 08:40+0200\n"
|
||||
"Last-Translator: Daniel <entaltoaragon@gmail.com>\n"
|
||||
"Language-Team: Aragonés <softaragones@googlegroups.com>\n"
|
||||
"Language: an\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"X-Generator: Gtranslator 2.91.6\n"
|
||||
"X-Generator: Pootle 2.5.1.1\n"
|
||||
"X-POOTLE-MTIME: 1430206804.000000\n"
|
||||
|
||||
#: ../data/50-gnome-shell-system.xml.in.h:1
|
||||
msgid "System"
|
||||
msgstr "Sistema"
|
||||
|
||||
#: ../data/50-gnome-shell-system.xml.in.h:2
|
||||
#| msgid "%d new notification"
|
||||
#| msgid_plural "%d new notifications"
|
||||
msgid "Show the notification list"
|
||||
msgstr "Amostrar a lista de notificacions"
|
||||
|
||||
@ -136,17 +135,18 @@ msgstr "Indiz de l'anvista seleccionada actual en o selector d'aplicacion."
|
||||
msgid "History for command (Alt-F2) dialog"
|
||||
msgstr "Historico d'o dialogo de comandos (Alt+F2)"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:12
|
||||
#. Translators: looking glass is a debugger and inspector tool, see https://live.gnome.org/GnomeShell/LookingGlass
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:13
|
||||
msgid "History for the looking glass dialog"
|
||||
msgstr "Historico d'o dialogo de \"looking glass\""
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:13
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:14
|
||||
msgid "Always show the 'Log out' menu item in the user menu."
|
||||
msgstr ""
|
||||
"Amostrar siempre l'elemento de menú \"Trancar sesión\" en o menú de "
|
||||
"l'usuario."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:14
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:15
|
||||
msgid ""
|
||||
"This key overrides the automatic hiding of the 'Log out' menu item in single-"
|
||||
"user, single-session situations."
|
||||
@ -154,14 +154,14 @@ msgstr ""
|
||||
"Ista clau sobrescribe a ocultación automatica de l'elemento de menú "
|
||||
"\"Trancar sesión\" en situacions d'un solo usuario u d'una sola sesión."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:15
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:16
|
||||
msgid ""
|
||||
"Whether to remember password for mounting encrypted or remote filesystems"
|
||||
msgstr ""
|
||||
"Indica si se debe recordar a clau ta amontar sistemas de fichers remotos u "
|
||||
"zifraus"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:16
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:17
|
||||
msgid ""
|
||||
"The shell will request a password when an encrypted device or a remote "
|
||||
"filesystem is mounted. If the password can be saved for future use a "
|
||||
@ -173,81 +173,79 @@ msgstr ""
|
||||
"s'amostrará a caixeta \"Remerar clau\". Ista clau estableix a valor "
|
||||
"predeterminada d'a caixeta."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:17
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:18
|
||||
msgid "Show the week date in the calendar"
|
||||
msgstr "Amostrar a calendata d'a semana en o calendario"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:18
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:19
|
||||
msgid "If true, display the ISO week date in the calendar."
|
||||
msgstr "Si ye cierta, amuestra a calendata de semana ISO en o calandario."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:19
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:20
|
||||
msgid "Keybinding to open the application menu"
|
||||
msgstr "Asociación de teclas ta ubrir o menú de l'aplicación"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:20
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:21
|
||||
msgid "Keybinding to open the application menu."
|
||||
msgstr "Asociación de teclas ta ubrir o menú de l'aplicación."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:21
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:22
|
||||
msgid "Keybinding to open the \"Show Applications\" view"
|
||||
msgstr "Asociación de teclas ta la vista \"Amostrar aplicacions\""
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:22
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:23
|
||||
msgid ""
|
||||
"Keybinding to open the \"Show Applications\" view of the Activities Overview."
|
||||
msgstr ""
|
||||
"Asociación de teclas ta ubrir la vista \"Amostrar aplicacions\" de la vista "
|
||||
"d'actividatz."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:23
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:24
|
||||
msgid "Keybinding to open the overview"
|
||||
msgstr "Asociación de teclas ta l'anvista cheneral"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:24
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:25
|
||||
msgid "Keybinding to open the Activities Overview."
|
||||
msgstr "Asociación de teclas ta ubrir l'anvista d'actividatz"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:25
|
||||
#| msgid "Keybinding to toggle the visibility of the message tray"
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:26
|
||||
msgid "Keybinding to toggle the visibility of the notification list"
|
||||
msgstr ""
|
||||
"Asociación de teclas ta cambiar a visibilidat d'a lista de notificacions"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:26
|
||||
#| msgid "Keybinding to toggle the visibility of the message tray."
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:27
|
||||
msgid "Keybinding to toggle the visibility of the notification list."
|
||||
msgstr ""
|
||||
"Asociación de teclas ta cambiar a visibilidat d'a lista de notificacions."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:27
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:28
|
||||
msgid "Keybinding to focus the active notification"
|
||||
msgstr "Asociación de teclas ta dar o foco a la notificación activa"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:28
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:29
|
||||
msgid "Keybinding to focus the active notification."
|
||||
msgstr "Asociación de teclas ta dar o foco a la notificación activa."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:29
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:30
|
||||
msgid ""
|
||||
"Keybinding that pauses and resumes all running tweens, for debugging purposes"
|
||||
msgstr ""
|
||||
"Asociación de teclas que pausan y continan todas as execucions de «tweens», "
|
||||
"ta propositos de depuraci'on"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:30
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:31
|
||||
msgid "Which keyboard to use"
|
||||
msgstr "Que teclau usar"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:31
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:32
|
||||
msgid "The type of keyboard to use."
|
||||
msgstr "O tipo de teclau que usar."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:32
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:33
|
||||
msgid "Limit switcher to current workspace."
|
||||
msgstr "Selector de limite ta l'aria de treballo actual."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:33
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:34
|
||||
msgid ""
|
||||
"If true, only applications that have windows on the current workspace are "
|
||||
"shown in the switcher. Otherwise, all applications are included."
|
||||
@ -256,21 +254,21 @@ msgstr ""
|
||||
"finestras en l'aria de treballo actual. D'atra man, s'incluirán todas as "
|
||||
"aplicacions."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:34
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:35
|
||||
msgid "The application icon mode."
|
||||
msgstr "O modo d'icono de l'aplicación."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:35
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:36
|
||||
msgid ""
|
||||
"Configures how the windows are shown in the switcher. Valid possibilities "
|
||||
"are 'thumbnail-only' (shows a thumbnail of the window), 'app-icon-"
|
||||
"only' (shows only the application icon) or 'both'."
|
||||
"are 'thumbnail-only' (shows a thumbnail of the window), 'app-icon-only' "
|
||||
"(shows only the application icon) or 'both'."
|
||||
msgstr ""
|
||||
"Configura cómo s'amuestran as finestras en o selector. Os valore posibles "
|
||||
"son \"thumbnail-only\" (amuestra una miniatura d'a finestra), \"app-icon-only"
|
||||
"\" (solament amuestra l'icono de l'aplicación) u \"both\"."
|
||||
"son \"thumbnail-only\" (amuestra una miniatura d'a finestra), \"app-icon-"
|
||||
"only\" (solament amuestra l'icono de l'aplicación) u \"both\"."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:36
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:37
|
||||
msgid ""
|
||||
"If true, only windows from the current workspace are shown in the switcher. "
|
||||
"Otherwise, all windows are included."
|
||||
@ -278,31 +276,31 @@ msgstr ""
|
||||
"Si en ye verdadero, nomás s'amostrarán en o selector finestras de l'aria de "
|
||||
"treballo actual. D'atra man, s'incluirán todas as finestras."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:37
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:38
|
||||
msgid "Attach modal dialog to the parent window"
|
||||
msgstr "Acoplar un dialogo modal a la finestra pai"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:38
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:39
|
||||
msgid ""
|
||||
"This key overrides the key in org.gnome.mutter when running GNOME Shell."
|
||||
msgstr ""
|
||||
"Ista clau sobrescribe a clau en org.gnome.mutter en executar GNOME Shell."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:39
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:40
|
||||
msgid "Enable edge tiling when dropping windows on screen edges"
|
||||
msgstr ""
|
||||
"Activar o mosaico en os bordes en arrocegar finestras a os bordes d'a "
|
||||
"finestra"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:40
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:41
|
||||
msgid "Workspaces are managed dynamically"
|
||||
msgstr "As arias de treballo se chestionan dinámicamente"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:41
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:42
|
||||
msgid "Workspaces only on primary monitor"
|
||||
msgstr "Arias de treballo solament en a pantalla prencipal"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:42
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:43
|
||||
msgid "Delay focus changes in mouse mode until the pointer stops moving"
|
||||
msgstr ""
|
||||
"Retardo en cambiar o foco d'o churi dica que o puntero deixa de mover-se"
|
||||
@ -311,12 +309,12 @@ msgstr ""
|
||||
msgid "Network Login"
|
||||
msgstr "Encetar sesión en o rete"
|
||||
|
||||
#: ../js/extensionPrefs/main.js:123
|
||||
#: ../js/extensionPrefs/main.js:122
|
||||
#, javascript-format
|
||||
msgid "There was an error loading the preferences dialog for %s:"
|
||||
msgstr "I habió una error en lanzar o diálogo de preferencias ta %s:"
|
||||
|
||||
#: ../js/extensionPrefs/main.js:155
|
||||
#: ../js/extensionPrefs/main.js:154
|
||||
msgid "GNOME Shell Extensions"
|
||||
msgstr "Extensions de GNOME Shell"
|
||||
|
||||
@ -327,39 +325,39 @@ msgstr "Extensions de GNOME Shell"
|
||||
msgid "Cancel"
|
||||
msgstr "Cancelar"
|
||||
|
||||
#: ../js/gdm/authPrompt.js:169 ../js/gdm/authPrompt.js:217
|
||||
#: ../js/gdm/authPrompt.js:169 ../js/gdm/authPrompt.js:215
|
||||
msgid "Next"
|
||||
msgstr "Siguient"
|
||||
|
||||
#: ../js/gdm/authPrompt.js:213 ../js/ui/shellMountOperation.js:403
|
||||
#: ../js/gdm/authPrompt.js:211 ../js/ui/shellMountOperation.js:403
|
||||
#: ../js/ui/unlockDialog.js:59
|
||||
msgid "Unlock"
|
||||
msgstr "Desbloquiar"
|
||||
|
||||
#: ../js/gdm/authPrompt.js:215
|
||||
#: ../js/gdm/authPrompt.js:213
|
||||
msgctxt "button"
|
||||
msgid "Sign In"
|
||||
msgstr "Encetar sesión"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:280
|
||||
#: ../js/gdm/loginDialog.js:281
|
||||
msgid "Choose Session"
|
||||
msgstr "Esleyir a sesión"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:420
|
||||
#: ../js/gdm/loginDialog.js:431
|
||||
msgid "Not listed?"
|
||||
msgstr "No ye en a lista?"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:829
|
||||
#: ../js/gdm/loginDialog.js:847
|
||||
#, javascript-format
|
||||
msgid "(e.g., user or %s)"
|
||||
msgstr "(eix., usuario u %s)"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:834 ../js/ui/components/networkAgent.js:271
|
||||
#: ../js/gdm/loginDialog.js:852 ../js/ui/components/networkAgent.js:271
|
||||
#: ../js/ui/components/networkAgent.js:289
|
||||
msgid "Username: "
|
||||
msgstr "Nombre d'usuario:"
|
||||
msgstr "Nombre d'usuario: "
|
||||
|
||||
#: ../js/gdm/loginDialog.js:1169
|
||||
#: ../js/gdm/loginDialog.js:1180
|
||||
msgid "Login Window"
|
||||
msgstr "Finestra d'inicio de sesión"
|
||||
|
||||
@ -452,31 +450,31 @@ msgstr "%d de %B de %Y, %l∶%M %"
|
||||
msgid "Web Authentication Redirect"
|
||||
msgstr "Rendrecera ta autentiación web"
|
||||
|
||||
#: ../js/ui/appDisplay.js:792
|
||||
#: ../js/ui/appDisplay.js:789
|
||||
msgid "Frequently used applications will appear here"
|
||||
msgstr "As aplicaciones usadas freqüentment amaneixerán aquí"
|
||||
|
||||
#: ../js/ui/appDisplay.js:912
|
||||
#: ../js/ui/appDisplay.js:909
|
||||
msgid "Frequent"
|
||||
msgstr "Freqüent"
|
||||
|
||||
#: ../js/ui/appDisplay.js:919
|
||||
#: ../js/ui/appDisplay.js:916
|
||||
msgid "All"
|
||||
msgstr "Todas"
|
||||
|
||||
#: ../js/ui/appDisplay.js:1850
|
||||
#: ../js/ui/appDisplay.js:1845
|
||||
msgid "New Window"
|
||||
msgstr "Finestra nueva"
|
||||
|
||||
#: ../js/ui/appDisplay.js:1878 ../js/ui/dash.js:291
|
||||
#: ../js/ui/appDisplay.js:1873 ../js/ui/dash.js:289
|
||||
msgid "Remove from Favorites"
|
||||
msgstr "Sacar d'os favoritos"
|
||||
|
||||
#: ../js/ui/appDisplay.js:1884
|
||||
#: ../js/ui/appDisplay.js:1879
|
||||
msgid "Add to Favorites"
|
||||
msgstr "Anyadir a os favoritos"
|
||||
|
||||
#: ../js/ui/appDisplay.js:1894
|
||||
#: ../js/ui/appDisplay.js:1889
|
||||
msgid "Show Details"
|
||||
msgstr "Amostrar detalles"
|
||||
|
||||
@ -490,15 +488,19 @@ msgstr "S'ha anyadiu %s a os suyos favoritos."
|
||||
msgid "%s has been removed from your favorites."
|
||||
msgstr "S'ha sacau %s d'os suyos favoritos"
|
||||
|
||||
#: ../js/ui/backgroundMenu.js:19 ../js/ui/panel.js:650
|
||||
#: ../js/ui/status/system.js:337
|
||||
msgid "Settings"
|
||||
msgstr "Configuración"
|
||||
|
||||
#: ../js/ui/backgroundMenu.js:21
|
||||
#: ../js/ui/backgroundMenu.js:19
|
||||
msgid "Change Background…"
|
||||
msgstr "Cambiar o fondo…"
|
||||
|
||||
#: ../js/ui/backgroundMenu.js:21
|
||||
msgid "Display Settings"
|
||||
msgstr "Preferencias de pantalla"
|
||||
|
||||
#: ../js/ui/backgroundMenu.js:22 ../js/ui/panel.js:650
|
||||
#: ../js/ui/status/system.js:357
|
||||
msgid "Settings"
|
||||
msgstr "Configuración"
|
||||
|
||||
#. Translators: Enter 0-6 (Sunday-Saturday) for non-work days. Examples: "0" (Sunday) "6" (Saturday) "06" (Sunday and Saturday). */
|
||||
#: ../js/ui/calendar.js:53
|
||||
msgctxt "calendar-no-work"
|
||||
@ -551,54 +553,53 @@ msgctxt "grid saturday"
|
||||
msgid "S"
|
||||
msgstr "S"
|
||||
|
||||
#: ../js/ui/calendar.js:563
|
||||
#: ../js/ui/calendar.js:564
|
||||
msgid "Previous month"
|
||||
msgstr "Mes anterior"
|
||||
|
||||
#: ../js/ui/calendar.js:573
|
||||
#: ../js/ui/calendar.js:574
|
||||
msgid "Next month"
|
||||
msgstr "Mes siguient"
|
||||
|
||||
#: ../js/ui/calendar.js:780
|
||||
#: ../js/ui/calendar.js:781
|
||||
msgid "Week %V"
|
||||
msgstr "Semana %V"
|
||||
|
||||
#. Translators: Shown in calendar event list for all day events
|
||||
#. * Keep it short, best if you can use less then 10 characters
|
||||
#. */
|
||||
#: ../js/ui/calendar.js:1182
|
||||
#: ../js/ui/calendar.js:1187
|
||||
msgctxt "event list time"
|
||||
msgid "All Day"
|
||||
msgstr "Tot o diya"
|
||||
|
||||
#: ../js/ui/calendar.js:1288
|
||||
#: ../js/ui/calendar.js:1289
|
||||
msgid "Clear section"
|
||||
msgstr "Limpiar a sección"
|
||||
|
||||
#: ../js/ui/calendar.js:1515
|
||||
#: ../js/ui/calendar.js:1516
|
||||
msgid "Events"
|
||||
msgstr "Eventos"
|
||||
|
||||
#: ../js/ui/calendar.js:1524
|
||||
#: ../js/ui/calendar.js:1525
|
||||
msgctxt "calendar heading"
|
||||
msgid "%A, %B %d"
|
||||
msgstr "%A, %d de %B"
|
||||
|
||||
#: ../js/ui/calendar.js:1528
|
||||
#: ../js/ui/calendar.js:1529
|
||||
msgctxt "calendar heading"
|
||||
msgid "%A, %B %d, %Y"
|
||||
msgstr "%A, %d de %B de %Y"
|
||||
|
||||
#: ../js/ui/calendar.js:1613
|
||||
#: ../js/ui/calendar.js:1614
|
||||
msgid "Notifications"
|
||||
msgstr "Notificacions"
|
||||
|
||||
#: ../js/ui/calendar.js:1764
|
||||
#| msgid "Notifications"
|
||||
#: ../js/ui/calendar.js:1765
|
||||
msgid "No Notifications"
|
||||
msgstr "No i hai notificacions"
|
||||
|
||||
#: ../js/ui/calendar.js:1767
|
||||
#: ../js/ui/calendar.js:1768
|
||||
msgid "No Events"
|
||||
msgstr "No i hai eventos"
|
||||
|
||||
@ -634,23 +635,23 @@ msgstr "Connectar"
|
||||
#: ../js/ui/components/networkAgent.js:293
|
||||
#: ../js/ui/components/networkAgent.js:303
|
||||
msgid "Password: "
|
||||
msgstr "Clau de paso:"
|
||||
msgstr "Clau de paso: "
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:238
|
||||
msgid "Key: "
|
||||
msgstr "Clau:"
|
||||
msgstr "Clau: "
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:277
|
||||
msgid "Identity: "
|
||||
msgstr "Identidat:"
|
||||
msgstr "Identidat: "
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:279
|
||||
msgid "Private key password: "
|
||||
msgstr "Clau d'a clau privada:"
|
||||
msgstr "Clau d'a clau privada: "
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:291
|
||||
msgid "Service: "
|
||||
msgstr "Servicio:"
|
||||
msgstr "Servicio: "
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:320
|
||||
#: ../js/ui/components/networkAgent.js:658
|
||||
@ -661,8 +662,8 @@ msgstr "O ret sin cordón requiere autenticación"
|
||||
#: ../js/ui/components/networkAgent.js:659
|
||||
#, javascript-format
|
||||
msgid ""
|
||||
"Passwords or encryption keys are required to access the wireless network "
|
||||
"“%s”."
|
||||
"Passwords or encryption keys are required to access the wireless network “"
|
||||
"%s”."
|
||||
msgstr ""
|
||||
"S'amenesten claus u claus de zifrau ta accedir a o ret inalambrico\"%s\"."
|
||||
|
||||
@ -673,7 +674,7 @@ msgstr "Autenticación 802.1X cableada"
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:327
|
||||
msgid "Network name: "
|
||||
msgstr "Nombre d'o ret:"
|
||||
msgstr "Nombre d'o ret: "
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:332
|
||||
#: ../js/ui/components/networkAgent.js:666
|
||||
@ -733,7 +734,7 @@ msgstr "Prebe atra vegada."
|
||||
|
||||
#. Translators: this is the other person changing their old IM name to their new
|
||||
#. IM name. */
|
||||
#: ../js/ui/components/telepathyClient.js:768
|
||||
#: ../js/ui/components/telepathyClient.js:757
|
||||
#, javascript-format
|
||||
msgid "%s is now known as %s"
|
||||
msgstr "Agora %s se dice %s"
|
||||
@ -742,11 +743,11 @@ msgstr "Agora %s se dice %s"
|
||||
msgid "Windows"
|
||||
msgstr "Finestras"
|
||||
|
||||
#: ../js/ui/dash.js:252 ../js/ui/dash.js:293
|
||||
#: ../js/ui/dash.js:250 ../js/ui/dash.js:291
|
||||
msgid "Show Applications"
|
||||
msgstr "Amostrar aplicacions"
|
||||
|
||||
#: ../js/ui/dash.js:453
|
||||
#: ../js/ui/dash.js:449
|
||||
msgid "Dash"
|
||||
msgstr "Tablero"
|
||||
|
||||
@ -754,7 +755,6 @@ msgstr "Tablero"
|
||||
#. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM").
|
||||
#. */
|
||||
#: ../js/ui/dateMenu.js:73
|
||||
#| msgid "%A %B %e, %Y"
|
||||
msgid "%B %e %Y"
|
||||
msgstr "%B %e %Y"
|
||||
|
||||
@ -763,7 +763,6 @@ msgstr "%B %e %Y"
|
||||
#. * date, e.g. "Tuesday February 17 2015".
|
||||
#. */
|
||||
#: ../js/ui/dateMenu.js:80
|
||||
#| msgid "%A %B %e, %Y"
|
||||
msgid "%A %B %e %Y"
|
||||
msgstr "%A %e de %B de %Y"
|
||||
|
||||
@ -772,7 +771,6 @@ msgid "Add world clocks…"
|
||||
msgstr "Adhibir reloches d'o mundo…"
|
||||
|
||||
#: ../js/ui/dateMenu.js:161
|
||||
#| msgid "Open Clocks"
|
||||
msgid "World Clocks"
|
||||
msgstr "Reloches d'o mundo"
|
||||
|
||||
@ -916,17 +914,16 @@ msgstr "Instalar"
|
||||
msgid "Download and install “%s” from extensions.gnome.org?"
|
||||
msgstr "Descargar y instalar \"%s\" dende extensions.gnome.org?"
|
||||
|
||||
#: ../js/ui/keyboard.js:714 ../js/ui/status/keyboard.js:580
|
||||
#: ../js/ui/keyboard.js:747 ../js/ui/status/keyboard.js:713
|
||||
msgid "Keyboard"
|
||||
msgstr "Teclau"
|
||||
|
||||
#. translators: 'Hide' is a verb */
|
||||
#: ../js/ui/legacyTray.js:64
|
||||
#| msgid "Hide Text"
|
||||
#: ../js/ui/legacyTray.js:66
|
||||
msgid "Hide tray"
|
||||
msgstr "Amagar servilla"
|
||||
|
||||
#: ../js/ui/legacyTray.js:104
|
||||
#: ../js/ui/legacyTray.js:107
|
||||
msgid "Status Icons"
|
||||
msgstr "Iconos d'estau"
|
||||
|
||||
@ -982,7 +979,7 @@ msgstr "Veyer fuent"
|
||||
msgid "Web Page"
|
||||
msgstr "Pachina web"
|
||||
|
||||
#: ../js/ui/messageTray.js:2133
|
||||
#: ../js/ui/messageTray.js:1486
|
||||
msgid "System Information"
|
||||
msgstr "Informacion d'o sistema"
|
||||
|
||||
@ -1024,7 +1021,7 @@ msgstr "toggle-switch-intl"
|
||||
msgid "Enter a Command"
|
||||
msgstr "Introducir un comando"
|
||||
|
||||
#: ../js/ui/runDialog.js:110 ../js/ui/windowMenu.js:120
|
||||
#: ../js/ui/runDialog.js:110 ../js/ui/windowMenu.js:162
|
||||
msgid "Close"
|
||||
msgstr "Trancar"
|
||||
|
||||
@ -1052,27 +1049,27 @@ msgid_plural "%d new notifications"
|
||||
msgstr[0] "%d notificación nueva"
|
||||
msgstr[1] "%d notificacions nuevas"
|
||||
|
||||
#: ../js/ui/screenShield.js:432 ../js/ui/status/system.js:345
|
||||
#: ../js/ui/screenShield.js:432 ../js/ui/status/system.js:365
|
||||
msgid "Lock"
|
||||
msgstr "Blocar"
|
||||
|
||||
#: ../js/ui/screenShield.js:668
|
||||
#: ../js/ui/screenShield.js:684
|
||||
msgid "GNOME needs to lock the screen"
|
||||
msgstr "GNOME ameneste blocar a pantalla"
|
||||
|
||||
#: ../js/ui/screenShield.js:795 ../js/ui/screenShield.js:1271
|
||||
#: ../js/ui/screenShield.js:805 ../js/ui/screenShield.js:1271
|
||||
msgid "Unable to lock"
|
||||
msgstr "No se podió blocar"
|
||||
|
||||
#: ../js/ui/screenShield.js:796 ../js/ui/screenShield.js:1272
|
||||
#: ../js/ui/screenShield.js:806 ../js/ui/screenShield.js:1272
|
||||
msgid "Lock was blocked by an application"
|
||||
msgstr "Una aplicación impidió o bloqueyo"
|
||||
|
||||
#: ../js/ui/search.js:616
|
||||
#: ../js/ui/search.js:617
|
||||
msgid "Searching…"
|
||||
msgstr "Mirando…"
|
||||
|
||||
#: ../js/ui/search.js:618
|
||||
#: ../js/ui/search.js:619
|
||||
msgid "No results."
|
||||
msgstr "No se troboron resultaus."
|
||||
|
||||
@ -1136,11 +1133,11 @@ msgstr "Refuso de teclas"
|
||||
msgid "Mouse Keys"
|
||||
msgstr "Teclas d'o ratet"
|
||||
|
||||
#: ../js/ui/status/accessibility.js:144
|
||||
#: ../js/ui/status/accessibility.js:167
|
||||
msgid "High Contrast"
|
||||
msgstr "Contraste alto"
|
||||
|
||||
#: ../js/ui/status/accessibility.js:193
|
||||
#: ../js/ui/status/accessibility.js:202
|
||||
msgid "Large Text"
|
||||
msgstr "Texto gran"
|
||||
|
||||
@ -1174,7 +1171,7 @@ msgstr "No connectau"
|
||||
msgid "Brightness"
|
||||
msgstr "Brilo"
|
||||
|
||||
#: ../js/ui/status/keyboard.js:603
|
||||
#: ../js/ui/status/keyboard.js:736
|
||||
msgid "Show Keyboard Layout"
|
||||
msgstr "Amostrar a distribución d'o teclau"
|
||||
|
||||
@ -1268,7 +1265,7 @@ msgstr "O modo avión ye enchegau"
|
||||
|
||||
#: ../js/ui/status/network.js:814
|
||||
msgid "Wi-Fi is disabled when airplane mode is on."
|
||||
msgstr "O Wi-Fi ye desactivau quan o modo avión ye enchegau."
|
||||
msgstr "O Wi-Fi ye desactivau quan o modo avión ye enchegau."
|
||||
|
||||
#: ../js/ui/status/network.js:815
|
||||
msgid "Turn Off Airplane Mode"
|
||||
@ -1385,23 +1382,23 @@ msgstr "Modo avión"
|
||||
msgid "On"
|
||||
msgstr "Enchegau"
|
||||
|
||||
#: ../js/ui/status/system.js:317
|
||||
#: ../js/ui/status/system.js:337
|
||||
msgid "Switch User"
|
||||
msgstr "Cambear d'usuario"
|
||||
|
||||
#: ../js/ui/status/system.js:322
|
||||
#: ../js/ui/status/system.js:342
|
||||
msgid "Log Out"
|
||||
msgstr "Trancar sesion"
|
||||
|
||||
#: ../js/ui/status/system.js:341
|
||||
#: ../js/ui/status/system.js:361
|
||||
msgid "Orientation Lock"
|
||||
msgstr "Bloqueyo d'Orientación"
|
||||
|
||||
#: ../js/ui/status/system.js:349
|
||||
#: ../js/ui/status/system.js:369
|
||||
msgid "Suspend"
|
||||
msgstr "Suspender"
|
||||
|
||||
#: ../js/ui/status/system.js:352
|
||||
#: ../js/ui/status/system.js:372
|
||||
msgid "Power Off"
|
||||
msgstr "Amortar"
|
||||
|
||||
@ -1433,27 +1430,27 @@ msgstr "Aplicacions"
|
||||
msgid "Search"
|
||||
msgstr "Mirar"
|
||||
|
||||
#: ../js/ui/windowAttentionHandler.js:19
|
||||
#: ../js/ui/windowAttentionHandler.js:20
|
||||
#, javascript-format
|
||||
msgid "“%s” is ready"
|
||||
msgstr "\"%s\" ye parau"
|
||||
|
||||
#: ../js/ui/windowManager.js:65
|
||||
#: ../js/ui/windowManager.js:63
|
||||
msgid "Do you want to keep these display settings?"
|
||||
msgstr "Quiers mantener istas opcions de pantalla?"
|
||||
|
||||
#. Translators: this and the following message should be limited in lenght,
|
||||
#. to avoid ellipsizing the labels.
|
||||
#. */
|
||||
#: ../js/ui/windowManager.js:84
|
||||
#: ../js/ui/windowManager.js:82
|
||||
msgid "Revert Settings"
|
||||
msgstr "Revertir as opcions"
|
||||
|
||||
#: ../js/ui/windowManager.js:88
|
||||
#: ../js/ui/windowManager.js:86
|
||||
msgid "Keep Changes"
|
||||
msgstr "Mantener os cambeos"
|
||||
|
||||
#: ../js/ui/windowManager.js:107
|
||||
#: ../js/ui/windowManager.js:105
|
||||
#, javascript-format
|
||||
msgid "Settings changes will revert in %d second"
|
||||
msgid_plural "Settings changes will revert in %d seconds"
|
||||
@ -1462,7 +1459,7 @@ msgstr[1] "Os cambeos d'as opcions serán revertius en %d segundos"
|
||||
|
||||
#. Translators: This represents the size of a window. The first number is
|
||||
#. * the width of the window and the second is the height. */
|
||||
#: ../js/ui/windowManager.js:599
|
||||
#: ../js/ui/windowManager.js:660
|
||||
#, javascript-format
|
||||
msgid "%d x %d"
|
||||
msgstr "%d x %d"
|
||||
@ -1499,14 +1496,48 @@ msgstr "Siempre veyible"
|
||||
msgid "Always on Visible Workspace"
|
||||
msgstr "Siempre en l'aria de treballo veyible"
|
||||
|
||||
#: ../js/ui/windowMenu.js:106
|
||||
#: ../js/ui/windowMenu.js:105
|
||||
#, fuzzy
|
||||
#| msgid "Move to Workspace Up"
|
||||
msgid "Move to Workspace Left"
|
||||
msgstr "Mover a l'aria de treballo d'a cucha"
|
||||
|
||||
#: ../js/ui/windowMenu.js:110
|
||||
#, fuzzy
|
||||
#| msgid "Move to Workspace Up"
|
||||
msgid "Move to Workspace Right"
|
||||
msgstr "Mover a l'aria de treballo d'a dreita"
|
||||
|
||||
#: ../js/ui/windowMenu.js:115
|
||||
msgid "Move to Workspace Up"
|
||||
msgstr "Mover ta l'aria de treballo d'alto"
|
||||
|
||||
#: ../js/ui/windowMenu.js:111
|
||||
#: ../js/ui/windowMenu.js:120
|
||||
msgid "Move to Workspace Down"
|
||||
msgstr "Mover ta l'aria de treballo d'abaixo"
|
||||
|
||||
#: ../js/ui/windowMenu.js:136
|
||||
#, fuzzy
|
||||
#| msgid "Move to Workspace Up"
|
||||
msgid "Move to Monitor Up"
|
||||
msgstr "Mover a la pantalla d'alto"
|
||||
|
||||
#: ../js/ui/windowMenu.js:142
|
||||
#, fuzzy
|
||||
#| msgid "Move to Workspace Down"
|
||||
msgid "Move to Monitor Down"
|
||||
msgstr "Mover a la pantalla d'abaixo"
|
||||
|
||||
#: ../js/ui/windowMenu.js:148
|
||||
#, fuzzy
|
||||
msgid "Move to Monitor Left"
|
||||
msgstr "Mover a la pantalla d'a cucha"
|
||||
|
||||
#: ../js/ui/windowMenu.js:154
|
||||
#, fuzzy
|
||||
msgid "Move to Monitor Right"
|
||||
msgstr "Mover a la pantalla d'a dreita"
|
||||
|
||||
#: ../src/calendar-server/evolution-calendar.desktop.in.in.h:1
|
||||
msgid "Evolution Calendar"
|
||||
msgstr "Calandario d'Evolution"
|
||||
@ -1561,11 +1592,11 @@ msgstr "Desconoxiu"
|
||||
msgid "Failed to launch “%s”"
|
||||
msgstr "Ha fallau en aventar \"%s\""
|
||||
|
||||
#: ../src/shell-keyring-prompt.c:714
|
||||
#: ../src/shell-keyring-prompt.c:742
|
||||
msgid "Passwords do not match."
|
||||
msgstr "As claus de paso no coinciden."
|
||||
|
||||
#: ../src/shell-keyring-prompt.c:722
|
||||
#: ../src/shell-keyring-prompt.c:750
|
||||
msgid "Password cannot be blank"
|
||||
msgstr "A clau de paso no puede estar vueda"
|
||||
|
||||
@ -1803,14 +1834,6 @@ msgstr "L'usuario refusó o dialogo d'autenticación"
|
||||
#~ msgid "The maximum accuracy level of location."
|
||||
#~ msgstr "O maximo libel de precisión d'ubicación."
|
||||
|
||||
#~| 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 allow applications to see and they can find user's location "
|
||||
#~| "on their own using network resources (albeit with street-level accuracy "
|
||||
#~| "at best)."
|
||||
#~ msgid ""
|
||||
#~ "Configures the maximum level of location accuracy applications are "
|
||||
#~ "allowed to see. Valid options are 'off' (disable location tracking), "
|
||||
@ -1822,8 +1845,8 @@ msgstr "L'usuario refusó o dialogo d'autenticación"
|
||||
#~ msgstr ""
|
||||
#~ "Configura o ran maximo de precisión d'ubicación que as aplicacions "
|
||||
#~ "pueden veyer. As opcions validas son 'off' (seguimiento d'ubicación "
|
||||
#~ "desenchegau), 'country', 'city', 'neighborhood', 'street', and "
|
||||
#~ "'exact' (typicament requier GPS "
|
||||
#~ "desenchegau), 'country', 'city', 'neighborhood', 'street', and 'exact' "
|
||||
#~ "(typicament requier GPS "
|
||||
|
||||
#~ msgid "Arrangement of buttons on the titlebar"
|
||||
#~ msgstr "Orden d'os botons en a barra de titol"
|
||||
@ -1968,7 +1991,6 @@ msgstr "L'usuario refusó o dialogo d'autenticación"
|
||||
#~ msgid "Session…"
|
||||
#~ msgstr "Sesión…"
|
||||
|
||||
#~| msgid "Power Off"
|
||||
#~ msgid "Power"
|
||||
#~ msgstr "Enerchía"
|
||||
|
||||
@ -2132,11 +2154,9 @@ msgstr "L'usuario refusó o dialogo d'autenticación"
|
||||
#~ msgid "%d%%"
|
||||
#~ msgstr "%d%%"
|
||||
|
||||
#~| msgid "AC adapter"
|
||||
#~ msgid "AC Adapter"
|
||||
#~ msgstr "Adaptador de corrient"
|
||||
|
||||
#~| msgid "Laptop battery"
|
||||
#~ msgid "Laptop Battery"
|
||||
#~ msgstr "Bateria d'o portatil"
|
||||
|
||||
@ -2149,11 +2169,9 @@ msgstr "L'usuario refusó o dialogo d'autenticación"
|
||||
#~ msgid "PDA"
|
||||
#~ msgstr "PDA"
|
||||
|
||||
#~| msgid "Cell phone"
|
||||
#~ msgid "Cell Phone"
|
||||
#~ msgstr "Telefono movil"
|
||||
|
||||
#~| msgid "Media player"
|
||||
#~ msgid "Media Player"
|
||||
#~ msgstr "Reproductor multimeya"
|
||||
|
||||
@ -2163,7 +2181,6 @@ msgstr "L'usuario refusó o dialogo d'autenticación"
|
||||
#~ msgid "Computer"
|
||||
#~ msgstr "Equipo"
|
||||
|
||||
#~| msgid "Unknown"
|
||||
#~ msgctxt "device"
|
||||
#~ msgid "Unknown"
|
||||
#~ msgstr "Desconoxiu"
|
||||
|
596
po/pt_BR.po
168
po/sl.po
@ -9,18 +9,18 @@ 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: 2015-03-15 08:36+0000\n"
|
||||
"PO-Revision-Date: 2015-03-15 09:41+0100\n"
|
||||
"POT-Creation-Date: 2015-07-08 08:07+0000\n"
|
||||
"PO-Revision-Date: 2015-07-08 15:46+0100\n"
|
||||
"Last-Translator: Matej Urbančič <mateju@svn.gnome.org>\n"
|
||||
"Language-Team: Slovenian GNOME Translation Team <gnome-si@googlegroups.com>\n"
|
||||
"Language: Slovenian\n"
|
||||
"Language: sl\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=4; plural=(n%100==1 ? 1 : n%100==2 ? 2 : n%100==3 || n"
|
||||
"%100==4 ? 3 : 0);\n"
|
||||
"X-Poedit-SourceCharset: utf-8\n"
|
||||
"X-Generator: Poedit 1.5.4\n"
|
||||
"X-Generator: Poedit 1.7.5\n"
|
||||
|
||||
#: ../data/50-gnome-shell-system.xml.in.h:1
|
||||
msgid "System"
|
||||
@ -302,12 +302,12 @@ msgstr ""
|
||||
msgid "Network Login"
|
||||
msgstr "Omrežna prijava"
|
||||
|
||||
#: ../js/extensionPrefs/main.js:123
|
||||
#: ../js/extensionPrefs/main.js:122
|
||||
#, javascript-format
|
||||
msgid "There was an error loading the preferences dialog for %s:"
|
||||
msgstr "Prišlo je do napake med nalaganjem pogovornega okna z možnosti za %s:"
|
||||
|
||||
#: ../js/extensionPrefs/main.js:155
|
||||
#: ../js/extensionPrefs/main.js:154
|
||||
msgid "GNOME Shell Extensions"
|
||||
msgstr "Razširitve lupine Gnome"
|
||||
|
||||
@ -318,39 +318,39 @@ msgstr "Razširitve lupine Gnome"
|
||||
msgid "Cancel"
|
||||
msgstr "Prekliči"
|
||||
|
||||
#: ../js/gdm/authPrompt.js:169 ../js/gdm/authPrompt.js:217
|
||||
#: ../js/gdm/authPrompt.js:169 ../js/gdm/authPrompt.js:215
|
||||
msgid "Next"
|
||||
msgstr "Naslednji"
|
||||
|
||||
#: ../js/gdm/authPrompt.js:213 ../js/ui/shellMountOperation.js:403
|
||||
#: ../js/gdm/authPrompt.js:211 ../js/ui/shellMountOperation.js:403
|
||||
#: ../js/ui/unlockDialog.js:59
|
||||
msgid "Unlock"
|
||||
msgstr "Odkleni"
|
||||
|
||||
#: ../js/gdm/authPrompt.js:215
|
||||
#: ../js/gdm/authPrompt.js:213
|
||||
msgctxt "button"
|
||||
msgid "Sign In"
|
||||
msgstr "Prijava"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:280
|
||||
#: ../js/gdm/loginDialog.js:281
|
||||
msgid "Choose Session"
|
||||
msgstr "Izbor seje"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:421
|
||||
#: ../js/gdm/loginDialog.js:431
|
||||
msgid "Not listed?"
|
||||
msgstr "Ali je ni na seznamu?"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:830
|
||||
#: ../js/gdm/loginDialog.js:847
|
||||
#, javascript-format
|
||||
msgid "(e.g., user or %s)"
|
||||
msgstr "(na primer, uporabnika ali %s)"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:835 ../js/ui/components/networkAgent.js:271
|
||||
#: ../js/gdm/loginDialog.js:852 ../js/ui/components/networkAgent.js:271
|
||||
#: ../js/ui/components/networkAgent.js:289
|
||||
msgid "Username: "
|
||||
msgstr "Uporabniško ime: "
|
||||
|
||||
#: ../js/gdm/loginDialog.js:1170
|
||||
#: ../js/gdm/loginDialog.js:1180
|
||||
msgid "Login Window"
|
||||
msgstr "Prijavno okno"
|
||||
|
||||
@ -443,31 +443,31 @@ msgstr "%B %d %Y, %l∶%M %p"
|
||||
msgid "Web Authentication Redirect"
|
||||
msgstr "Preusmeritev spletnega overjanja"
|
||||
|
||||
#: ../js/ui/appDisplay.js:792
|
||||
#: ../js/ui/appDisplay.js:789
|
||||
msgid "Frequently used applications will appear here"
|
||||
msgstr "Pogosto uporabljeni programi bodo prikazani tu"
|
||||
|
||||
#: ../js/ui/appDisplay.js:912
|
||||
#: ../js/ui/appDisplay.js:909
|
||||
msgid "Frequent"
|
||||
msgstr "Pogosto"
|
||||
|
||||
#: ../js/ui/appDisplay.js:919
|
||||
#: ../js/ui/appDisplay.js:916
|
||||
msgid "All"
|
||||
msgstr "Vse"
|
||||
|
||||
#: ../js/ui/appDisplay.js:1850
|
||||
#: ../js/ui/appDisplay.js:1845
|
||||
msgid "New Window"
|
||||
msgstr "Novo okno"
|
||||
|
||||
#: ../js/ui/appDisplay.js:1878 ../js/ui/dash.js:291
|
||||
#: ../js/ui/appDisplay.js:1873 ../js/ui/dash.js:289
|
||||
msgid "Remove from Favorites"
|
||||
msgstr "Odstrani iz priljubljenih"
|
||||
|
||||
#: ../js/ui/appDisplay.js:1884
|
||||
#: ../js/ui/appDisplay.js:1879
|
||||
msgid "Add to Favorites"
|
||||
msgstr "Dodaj med priljubljene"
|
||||
|
||||
#: ../js/ui/appDisplay.js:1894
|
||||
#: ../js/ui/appDisplay.js:1889
|
||||
msgid "Show Details"
|
||||
msgstr "Pokaži besedilo"
|
||||
|
||||
@ -481,15 +481,19 @@ msgstr "Program \"%s\" je dodan med priljubljeno."
|
||||
msgid "%s has been removed from your favorites."
|
||||
msgstr "Program \"%s\" je odstranjen iz priljubljenih."
|
||||
|
||||
#: ../js/ui/backgroundMenu.js:19 ../js/ui/panel.js:650
|
||||
#: ../js/ui/status/system.js:337
|
||||
msgid "Settings"
|
||||
msgstr "Nastavitve"
|
||||
|
||||
#: ../js/ui/backgroundMenu.js:21
|
||||
#: ../js/ui/backgroundMenu.js:19
|
||||
msgid "Change Background…"
|
||||
msgstr "Spremeni ozadje ..."
|
||||
|
||||
#: ../js/ui/backgroundMenu.js:21
|
||||
msgid "Display Settings"
|
||||
msgstr "Nastavitve zaslona"
|
||||
|
||||
#: ../js/ui/backgroundMenu.js:22 ../js/ui/panel.js:650
|
||||
#: ../js/ui/status/system.js:357
|
||||
msgid "Settings"
|
||||
msgstr "Nastavitve"
|
||||
|
||||
#. Translators: Enter 0-6 (Sunday-Saturday) for non-work days. Examples: "0" (Sunday) "6" (Saturday) "06" (Sunday and Saturday). */
|
||||
#: ../js/ui/calendar.js:53
|
||||
msgctxt "calendar-no-work"
|
||||
@ -542,53 +546,53 @@ msgctxt "grid saturday"
|
||||
msgid "S"
|
||||
msgstr "S"
|
||||
|
||||
#: ../js/ui/calendar.js:563
|
||||
#: ../js/ui/calendar.js:564
|
||||
msgid "Previous month"
|
||||
msgstr "Predhodni mesec"
|
||||
|
||||
#: ../js/ui/calendar.js:573
|
||||
#: ../js/ui/calendar.js:574
|
||||
msgid "Next month"
|
||||
msgstr "Naslednji mesec"
|
||||
|
||||
#: ../js/ui/calendar.js:780
|
||||
#: ../js/ui/calendar.js:781
|
||||
msgid "Week %V"
|
||||
msgstr "Teden %V"
|
||||
|
||||
#. Translators: Shown in calendar event list for all day events
|
||||
#. * Keep it short, best if you can use less then 10 characters
|
||||
#. */
|
||||
#: ../js/ui/calendar.js:1182
|
||||
#: ../js/ui/calendar.js:1187
|
||||
msgctxt "event list time"
|
||||
msgid "All Day"
|
||||
msgstr "Celodnevno"
|
||||
|
||||
#: ../js/ui/calendar.js:1288
|
||||
#: ../js/ui/calendar.js:1289
|
||||
msgid "Clear section"
|
||||
msgstr "Počisti odsek"
|
||||
|
||||
#: ../js/ui/calendar.js:1515
|
||||
#: ../js/ui/calendar.js:1516
|
||||
msgid "Events"
|
||||
msgstr "Dogodki"
|
||||
|
||||
#: ../js/ui/calendar.js:1524
|
||||
#: ../js/ui/calendar.js:1525
|
||||
msgctxt "calendar heading"
|
||||
msgid "%A, %B %d"
|
||||
msgstr "%A, %d. %m."
|
||||
|
||||
#: ../js/ui/calendar.js:1528
|
||||
#: ../js/ui/calendar.js:1529
|
||||
msgctxt "calendar heading"
|
||||
msgid "%A, %B %d, %Y"
|
||||
msgstr "%A, %d %B %Y"
|
||||
|
||||
#: ../js/ui/calendar.js:1613
|
||||
#: ../js/ui/calendar.js:1614
|
||||
msgid "Notifications"
|
||||
msgstr "Obvestila"
|
||||
|
||||
#: ../js/ui/calendar.js:1764
|
||||
#: ../js/ui/calendar.js:1765
|
||||
msgid "No Notifications"
|
||||
msgstr "Ni obvestil"
|
||||
|
||||
#: ../js/ui/calendar.js:1767
|
||||
#: ../js/ui/calendar.js:1768
|
||||
msgid "No Events"
|
||||
msgstr "Ni dogodkov"
|
||||
|
||||
@ -724,7 +728,7 @@ msgstr "Dejanje je spodletelo. Poskusite znova."
|
||||
|
||||
#. Translators: this is the other person changing their old IM name to their new
|
||||
#. IM name. */
|
||||
#: ../js/ui/components/telepathyClient.js:775
|
||||
#: ../js/ui/components/telepathyClient.js:757
|
||||
#, javascript-format
|
||||
msgid "%s is now known as %s"
|
||||
msgstr "%s je sedaj znan kot v %s"
|
||||
@ -733,11 +737,11 @@ msgstr "%s je sedaj znan kot v %s"
|
||||
msgid "Windows"
|
||||
msgstr "Okna"
|
||||
|
||||
#: ../js/ui/dash.js:252 ../js/ui/dash.js:293
|
||||
#: ../js/ui/dash.js:250 ../js/ui/dash.js:291
|
||||
msgid "Show Applications"
|
||||
msgstr "Pokaži programe"
|
||||
|
||||
#: ../js/ui/dash.js:453
|
||||
#: ../js/ui/dash.js:449
|
||||
msgid "Dash"
|
||||
msgstr "Pregledna plošča"
|
||||
|
||||
@ -916,16 +920,16 @@ msgstr "Namesti"
|
||||
msgid "Download and install “%s” from extensions.gnome.org?"
|
||||
msgstr "Prejmi in namesti “%s” preko povezave na extensions.gnome.org?"
|
||||
|
||||
#: ../js/ui/keyboard.js:714 ../js/ui/status/keyboard.js:580
|
||||
#: ../js/ui/keyboard.js:747 ../js/ui/status/keyboard.js:713
|
||||
msgid "Keyboard"
|
||||
msgstr "Tipkovnica"
|
||||
|
||||
#. translators: 'Hide' is a verb */
|
||||
#: ../js/ui/legacyTray.js:64
|
||||
#: ../js/ui/legacyTray.js:66
|
||||
msgid "Hide tray"
|
||||
msgstr "Skrij sistemsko vrstico"
|
||||
|
||||
#: ../js/ui/legacyTray.js:104
|
||||
#: ../js/ui/legacyTray.js:107
|
||||
msgid "Status Icons"
|
||||
msgstr "Ikone stanja"
|
||||
|
||||
@ -981,7 +985,7 @@ msgstr "Poglej vir"
|
||||
msgid "Web Page"
|
||||
msgstr "Spletna stran"
|
||||
|
||||
#: ../js/ui/messageTray.js:2133
|
||||
#: ../js/ui/messageTray.js:1486
|
||||
msgid "System Information"
|
||||
msgstr "Podrobnosti sistema"
|
||||
|
||||
@ -1023,7 +1027,7 @@ msgstr "toggle-switch-intl"
|
||||
msgid "Enter a Command"
|
||||
msgstr "Vnos ukaza"
|
||||
|
||||
#: ../js/ui/runDialog.js:110 ../js/ui/windowMenu.js:120
|
||||
#: ../js/ui/runDialog.js:110 ../js/ui/windowMenu.js:162
|
||||
msgid "Close"
|
||||
msgstr "Zapri"
|
||||
|
||||
@ -1055,27 +1059,27 @@ msgstr[1] "%d novo obvestilo"
|
||||
msgstr[2] "%d novi obvestili"
|
||||
msgstr[3] "%d nova obvestila"
|
||||
|
||||
#: ../js/ui/screenShield.js:432 ../js/ui/status/system.js:345
|
||||
#: ../js/ui/screenShield.js:432 ../js/ui/status/system.js:365
|
||||
msgid "Lock"
|
||||
msgstr "Zakleni"
|
||||
|
||||
#: ../js/ui/screenShield.js:668
|
||||
#: ../js/ui/screenShield.js:684
|
||||
msgid "GNOME needs to lock the screen"
|
||||
msgstr "Zakleniti je treba zaslon"
|
||||
|
||||
#: ../js/ui/screenShield.js:795 ../js/ui/screenShield.js:1271
|
||||
#: ../js/ui/screenShield.js:805 ../js/ui/screenShield.js:1271
|
||||
msgid "Unable to lock"
|
||||
msgstr "Zaklep ni mogoč"
|
||||
|
||||
#: ../js/ui/screenShield.js:796 ../js/ui/screenShield.js:1272
|
||||
#: ../js/ui/screenShield.js:806 ../js/ui/screenShield.js:1272
|
||||
msgid "Lock was blocked by an application"
|
||||
msgstr "Zaklep je preprečil program"
|
||||
|
||||
#: ../js/ui/search.js:616
|
||||
#: ../js/ui/search.js:617
|
||||
msgid "Searching…"
|
||||
msgstr "Iskanje ..."
|
||||
|
||||
#: ../js/ui/search.js:618
|
||||
#: ../js/ui/search.js:619
|
||||
msgid "No results."
|
||||
msgstr "Ni najdenih zadetkov."
|
||||
|
||||
@ -1139,11 +1143,11 @@ msgstr "Odskočne tipke"
|
||||
msgid "Mouse Keys"
|
||||
msgstr "Miškine tipke"
|
||||
|
||||
#: ../js/ui/status/accessibility.js:144
|
||||
#: ../js/ui/status/accessibility.js:167
|
||||
msgid "High Contrast"
|
||||
msgstr "Visok kontrast"
|
||||
|
||||
#: ../js/ui/status/accessibility.js:193
|
||||
#: ../js/ui/status/accessibility.js:202
|
||||
msgid "Large Text"
|
||||
msgstr "Veliko besedilo"
|
||||
|
||||
@ -1179,7 +1183,7 @@ msgstr "Ni vzpostavljene povezave"
|
||||
msgid "Brightness"
|
||||
msgstr "Svetlost"
|
||||
|
||||
#: ../js/ui/status/keyboard.js:603
|
||||
#: ../js/ui/status/keyboard.js:736
|
||||
msgid "Show Keyboard Layout"
|
||||
msgstr "Pokaži razporeditev tipkovnice"
|
||||
|
||||
@ -1390,23 +1394,23 @@ msgstr "Način letala"
|
||||
msgid "On"
|
||||
msgstr "Povezano"
|
||||
|
||||
#: ../js/ui/status/system.js:317
|
||||
#: ../js/ui/status/system.js:337
|
||||
msgid "Switch User"
|
||||
msgstr "Preklopi uporabnika"
|
||||
|
||||
#: ../js/ui/status/system.js:322
|
||||
#: ../js/ui/status/system.js:342
|
||||
msgid "Log Out"
|
||||
msgstr "Odjava"
|
||||
|
||||
#: ../js/ui/status/system.js:341
|
||||
#: ../js/ui/status/system.js:361
|
||||
msgid "Orientation Lock"
|
||||
msgstr "Zaklep položaja"
|
||||
|
||||
#: ../js/ui/status/system.js:349
|
||||
#: ../js/ui/status/system.js:369
|
||||
msgid "Suspend"
|
||||
msgstr "Zaustavi"
|
||||
|
||||
#: ../js/ui/status/system.js:352
|
||||
#: ../js/ui/status/system.js:372
|
||||
msgid "Power Off"
|
||||
msgstr "Izklop"
|
||||
|
||||
@ -1438,27 +1442,27 @@ msgstr "Programi"
|
||||
msgid "Search"
|
||||
msgstr "Poišči"
|
||||
|
||||
#: ../js/ui/windowAttentionHandler.js:19
|
||||
#: ../js/ui/windowAttentionHandler.js:20
|
||||
#, javascript-format
|
||||
msgid "“%s” is ready"
|
||||
msgstr "“%s” storitev je pripravljena"
|
||||
|
||||
#: ../js/ui/windowManager.js:65
|
||||
#: ../js/ui/windowManager.js:63
|
||||
msgid "Do you want to keep these display settings?"
|
||||
msgstr "Ali želite ohraniti te nastavitve zaslona?"
|
||||
|
||||
#. Translators: this and the following message should be limited in lenght,
|
||||
#. to avoid ellipsizing the labels.
|
||||
#. */
|
||||
#: ../js/ui/windowManager.js:84
|
||||
#: ../js/ui/windowManager.js:82
|
||||
msgid "Revert Settings"
|
||||
msgstr "Povrni nastavitve"
|
||||
|
||||
#: ../js/ui/windowManager.js:88
|
||||
#: ../js/ui/windowManager.js:86
|
||||
msgid "Keep Changes"
|
||||
msgstr "Sledi spremembam"
|
||||
|
||||
#: ../js/ui/windowManager.js:107
|
||||
#: ../js/ui/windowManager.js:105
|
||||
#, javascript-format
|
||||
msgid "Settings changes will revert in %d second"
|
||||
msgid_plural "Settings changes will revert in %d seconds"
|
||||
@ -1469,7 +1473,7 @@ msgstr[3] "Spremembe nastavitev bodo povrnjene v %d sekundah."
|
||||
|
||||
#. Translators: This represents the size of a window. The first number is
|
||||
#. * the width of the window and the second is the height. */
|
||||
#: ../js/ui/windowManager.js:599
|
||||
#: ../js/ui/windowManager.js:604
|
||||
#, javascript-format
|
||||
msgid "%d x %d"
|
||||
msgstr "%d x %d"
|
||||
@ -1506,14 +1510,38 @@ msgstr "Vedno na vrhu"
|
||||
msgid "Always on Visible Workspace"
|
||||
msgstr "Vedno na dejavni delovni površini"
|
||||
|
||||
#: ../js/ui/windowMenu.js:106
|
||||
#: ../js/ui/windowMenu.js:105
|
||||
msgid "Move to Workspace Left"
|
||||
msgstr "Premakni na delovno površino na levi"
|
||||
|
||||
#: ../js/ui/windowMenu.js:110
|
||||
msgid "Move to Workspace Right"
|
||||
msgstr "Premakni na delovno površino na desni"
|
||||
|
||||
#: ../js/ui/windowMenu.js:115
|
||||
msgid "Move to Workspace Up"
|
||||
msgstr "Premakni na zgornjo delovno površino"
|
||||
|
||||
#: ../js/ui/windowMenu.js:111
|
||||
#: ../js/ui/windowMenu.js:120
|
||||
msgid "Move to Workspace Down"
|
||||
msgstr "Premakni na spodnjo delovno površino"
|
||||
|
||||
#: ../js/ui/windowMenu.js:136
|
||||
msgid "Move to Monitor Up"
|
||||
msgstr "\t"
|
||||
|
||||
#: ../js/ui/windowMenu.js:142
|
||||
msgid "Move to Monitor Down"
|
||||
msgstr "Premakni na zaslon spodaj"
|
||||
|
||||
#: ../js/ui/windowMenu.js:148
|
||||
msgid "Move to Monitor Left"
|
||||
msgstr "Premakni na zaslon levo"
|
||||
|
||||
#: ../js/ui/windowMenu.js:154
|
||||
msgid "Move to Monitor Right"
|
||||
msgstr "Premakni na zaslon desno"
|
||||
|
||||
#: ../src/calendar-server/evolution-calendar.desktop.in.in.h:1
|
||||
msgid "Evolution Calendar"
|
||||
msgstr "Koledar Evolution "
|
||||
@ -1570,11 +1598,11 @@ msgstr "Neznano"
|
||||
msgid "Failed to launch “%s”"
|
||||
msgstr "Zaganjanje “%s” je spodletelo"
|
||||
|
||||
#: ../src/shell-keyring-prompt.c:714
|
||||
#: ../src/shell-keyring-prompt.c:742
|
||||
msgid "Passwords do not match."
|
||||
msgstr "Gesli se ne skladata."
|
||||
|
||||
#: ../src/shell-keyring-prompt.c:722
|
||||
#: ../src/shell-keyring-prompt.c:750
|
||||
msgid "Password cannot be blank"
|
||||
msgstr "Geslo ne more biti prazno"
|
||||
|
||||
|
729
po/sr@latin.po
163
po/tg.po
@ -8,8 +8,8 @@ msgstr ""
|
||||
"Project-Id-Version: Tajik Gnome\n"
|
||||
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
|
||||
"shell&keywords=I18N+L10N&component=general\n"
|
||||
"POT-Creation-Date: 2015-03-13 20:44+0000\n"
|
||||
"PO-Revision-Date: 2015-03-14 09:50+0500\n"
|
||||
"POT-Creation-Date: 2015-06-24 20:04+0000\n"
|
||||
"PO-Revision-Date: 2015-06-25 10:20+0500\n"
|
||||
"Last-Translator: Victor Ibragimov <victor.ibragimov@gmail.com>\n"
|
||||
"Language-Team: \n"
|
||||
"Language: tg\n"
|
||||
@ -17,7 +17,7 @@ msgstr ""
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"X-Generator: Poedit 1.6.5\n"
|
||||
"X-Generator: Poedit 1.7.5\n"
|
||||
|
||||
#: ../data/50-gnome-shell-system.xml.in.h:1
|
||||
msgid "System"
|
||||
@ -305,14 +305,14 @@ msgstr ""
|
||||
msgid "Network Login"
|
||||
msgstr "Воридшавии шабакавӣ"
|
||||
|
||||
#: ../js/extensionPrefs/main.js:123
|
||||
#: ../js/extensionPrefs/main.js:122
|
||||
#, javascript-format
|
||||
msgid "There was an error loading the preferences dialog for %s:"
|
||||
msgstr ""
|
||||
"Ҳангоми боркунии равзанаи гуфтугӯи хусусиятҳо барои %s хатогие ба вуҷуд "
|
||||
"омадааст:"
|
||||
|
||||
#: ../js/extensionPrefs/main.js:155
|
||||
#: ../js/extensionPrefs/main.js:154
|
||||
msgid "GNOME Shell Extensions"
|
||||
msgstr "Пасвандҳои восити GNOME"
|
||||
|
||||
@ -323,39 +323,39 @@ msgstr "Пасвандҳои восити GNOME"
|
||||
msgid "Cancel"
|
||||
msgstr "Бекор кардан"
|
||||
|
||||
#: ../js/gdm/authPrompt.js:169 ../js/gdm/authPrompt.js:217
|
||||
#: ../js/gdm/authPrompt.js:169 ../js/gdm/authPrompt.js:215
|
||||
msgid "Next"
|
||||
msgstr "Навбатӣ"
|
||||
|
||||
#: ../js/gdm/authPrompt.js:213 ../js/ui/shellMountOperation.js:403
|
||||
#: ../js/gdm/authPrompt.js:211 ../js/ui/shellMountOperation.js:403
|
||||
#: ../js/ui/unlockDialog.js:59
|
||||
msgid "Unlock"
|
||||
msgstr "Кушодан"
|
||||
|
||||
#: ../js/gdm/authPrompt.js:215
|
||||
#: ../js/gdm/authPrompt.js:213
|
||||
msgctxt "button"
|
||||
msgid "Sign In"
|
||||
msgstr "Ворид шудан"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:280
|
||||
#: ../js/gdm/loginDialog.js:281
|
||||
msgid "Choose Session"
|
||||
msgstr "Интихоби ҷаласа"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:421
|
||||
#: ../js/gdm/loginDialog.js:431
|
||||
msgid "Not listed?"
|
||||
msgstr "Вуҷуд надора?"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:830
|
||||
#: ../js/gdm/loginDialog.js:840
|
||||
#, javascript-format
|
||||
msgid "(e.g., user or %s)"
|
||||
msgstr "(масалан, корбар ё %s)"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:835 ../js/ui/components/networkAgent.js:271
|
||||
#: ../js/gdm/loginDialog.js:845 ../js/ui/components/networkAgent.js:271
|
||||
#: ../js/ui/components/networkAgent.js:289
|
||||
msgid "Username: "
|
||||
msgstr "Номи корбар:"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:1170
|
||||
#: ../js/gdm/loginDialog.js:1173
|
||||
msgid "Login Window"
|
||||
msgstr "Равзанаи воридшавӣ"
|
||||
|
||||
@ -448,31 +448,31 @@ msgstr "%B %d %Y, %l∶%M %p"
|
||||
msgid "Web Authentication Redirect"
|
||||
msgstr "Бозфиристодани санҷиши ҳаққонияти веб"
|
||||
|
||||
#: ../js/ui/appDisplay.js:792
|
||||
#: ../js/ui/appDisplay.js:788
|
||||
msgid "Frequently used applications will appear here"
|
||||
msgstr "Барномаҳои бештар истифодашуда ин ҷо намоиш дода мешаванд"
|
||||
|
||||
#: ../js/ui/appDisplay.js:912
|
||||
#: ../js/ui/appDisplay.js:908
|
||||
msgid "Frequent"
|
||||
msgstr "Роиҷ"
|
||||
|
||||
#: ../js/ui/appDisplay.js:919
|
||||
#: ../js/ui/appDisplay.js:915
|
||||
msgid "All"
|
||||
msgstr "Ҳама"
|
||||
|
||||
#: ../js/ui/appDisplay.js:1850
|
||||
#: ../js/ui/appDisplay.js:1844
|
||||
msgid "New Window"
|
||||
msgstr "Равзанаи нав"
|
||||
|
||||
#: ../js/ui/appDisplay.js:1878 ../js/ui/dash.js:291
|
||||
#: ../js/ui/appDisplay.js:1872 ../js/ui/dash.js:289
|
||||
msgid "Remove from Favorites"
|
||||
msgstr "Тоза кардан аз Баргузидаҳо"
|
||||
|
||||
#: ../js/ui/appDisplay.js:1884
|
||||
#: ../js/ui/appDisplay.js:1878
|
||||
msgid "Add to Favorites"
|
||||
msgstr "Илова кардан ба Баргузидаҳо"
|
||||
|
||||
#: ../js/ui/appDisplay.js:1894
|
||||
#: ../js/ui/appDisplay.js:1888
|
||||
msgid "Show Details"
|
||||
msgstr "Намоиш додани тафсилот"
|
||||
|
||||
@ -486,15 +486,19 @@ msgstr "%s ба баргузидаҳои шумо илова шудааст."
|
||||
msgid "%s has been removed from your favorites."
|
||||
msgstr "%s аз баргузидаҳои шумо тоза шудааст."
|
||||
|
||||
#: ../js/ui/backgroundMenu.js:19 ../js/ui/panel.js:650
|
||||
#: ../js/ui/status/system.js:337
|
||||
msgid "Settings"
|
||||
msgstr "Танзимот"
|
||||
|
||||
#: ../js/ui/backgroundMenu.js:21
|
||||
#: ../js/ui/backgroundMenu.js:19
|
||||
msgid "Change Background…"
|
||||
msgstr "Тағйир додани пазсамина..."
|
||||
|
||||
#: ../js/ui/backgroundMenu.js:21
|
||||
msgid "Display Settings"
|
||||
msgstr "Танзимоти дисплей"
|
||||
|
||||
#: ../js/ui/backgroundMenu.js:22 ../js/ui/panel.js:650
|
||||
#: ../js/ui/status/system.js:357
|
||||
msgid "Settings"
|
||||
msgstr "Танзимот"
|
||||
|
||||
#. Translators: Enter 0-6 (Sunday-Saturday) for non-work days. Examples: "0" (Sunday) "6" (Saturday) "06" (Sunday and Saturday). */
|
||||
#: ../js/ui/calendar.js:53
|
||||
msgctxt "calendar-no-work"
|
||||
@ -547,53 +551,53 @@ msgctxt "grid saturday"
|
||||
msgid "S"
|
||||
msgstr "Ш"
|
||||
|
||||
#: ../js/ui/calendar.js:563
|
||||
#: ../js/ui/calendar.js:564
|
||||
msgid "Previous month"
|
||||
msgstr "Моҳи қаблӣ"
|
||||
|
||||
#: ../js/ui/calendar.js:573
|
||||
#: ../js/ui/calendar.js:574
|
||||
msgid "Next month"
|
||||
msgstr "Моҳи навбатӣ"
|
||||
|
||||
#: ../js/ui/calendar.js:780
|
||||
#: ../js/ui/calendar.js:781
|
||||
msgid "Week %V"
|
||||
msgstr "Ҳафтаи %V"
|
||||
|
||||
#. Translators: Shown in calendar event list for all day events
|
||||
#. * Keep it short, best if you can use less then 10 characters
|
||||
#. */
|
||||
#: ../js/ui/calendar.js:1182
|
||||
#: ../js/ui/calendar.js:1187
|
||||
msgctxt "event list time"
|
||||
msgid "All Day"
|
||||
msgstr "Тамоми рӯз"
|
||||
|
||||
#: ../js/ui/calendar.js:1288
|
||||
#: ../js/ui/calendar.js:1289
|
||||
msgid "Clear section"
|
||||
msgstr "Пок кардани қисмат"
|
||||
|
||||
#: ../js/ui/calendar.js:1515
|
||||
#: ../js/ui/calendar.js:1516
|
||||
msgid "Events"
|
||||
msgstr "Рӯйдодҳо"
|
||||
|
||||
#: ../js/ui/calendar.js:1524
|
||||
#: ../js/ui/calendar.js:1525
|
||||
msgctxt "calendar heading"
|
||||
msgid "%A, %B %d"
|
||||
msgstr "%A, %B %d"
|
||||
|
||||
#: ../js/ui/calendar.js:1528
|
||||
#: ../js/ui/calendar.js:1529
|
||||
msgctxt "calendar heading"
|
||||
msgid "%A, %B %d, %Y"
|
||||
msgstr "%A, %B %d, %Y"
|
||||
|
||||
#: ../js/ui/calendar.js:1613
|
||||
#: ../js/ui/calendar.js:1614
|
||||
msgid "Notifications"
|
||||
msgstr "Огоҳиҳо"
|
||||
|
||||
#: ../js/ui/calendar.js:1764
|
||||
#: ../js/ui/calendar.js:1765
|
||||
msgid "No Notifications"
|
||||
msgstr "Ягон огоҳӣ нест"
|
||||
|
||||
#: ../js/ui/calendar.js:1767
|
||||
#: ../js/ui/calendar.js:1768
|
||||
msgid "No Events"
|
||||
msgstr "Ягон рӯйдод нест"
|
||||
|
||||
@ -729,7 +733,7 @@ msgstr "Мутаассифона, ин амал иҷро нашуд. Лутфа
|
||||
|
||||
#. Translators: this is the other person changing their old IM name to their new
|
||||
#. IM name. */
|
||||
#: ../js/ui/components/telepathyClient.js:775
|
||||
#: ../js/ui/components/telepathyClient.js:757
|
||||
#, javascript-format
|
||||
msgid "%s is now known as %s"
|
||||
msgstr "%s аллакой бо номи %s номида мешавад"
|
||||
@ -738,11 +742,11 @@ msgstr "%s аллакой бо номи %s номида мешавад"
|
||||
msgid "Windows"
|
||||
msgstr "Равзанаҳо"
|
||||
|
||||
#: ../js/ui/dash.js:252 ../js/ui/dash.js:293
|
||||
#: ../js/ui/dash.js:250 ../js/ui/dash.js:291
|
||||
msgid "Show Applications"
|
||||
msgstr "Намоиш додани барномаҳо"
|
||||
|
||||
#: ../js/ui/dash.js:453
|
||||
#: ../js/ui/dash.js:449
|
||||
msgid "Dash"
|
||||
msgstr "Рах"
|
||||
|
||||
@ -910,17 +914,16 @@ msgstr "Насб кардан"
|
||||
msgid "Download and install “%s” from extensions.gnome.org?"
|
||||
msgstr "“%s”-ро аз extensions.gnome.org боргирӣ ва насб мекунед?"
|
||||
|
||||
#: ../js/ui/keyboard.js:714 ../js/ui/status/keyboard.js:580
|
||||
#: ../js/ui/keyboard.js:747 ../js/ui/status/keyboard.js:713
|
||||
msgid "Keyboard"
|
||||
msgstr "Клавиатура"
|
||||
|
||||
#. translators: 'Hide' is a verb */
|
||||
#: ../js/ui/legacyTray.js:59
|
||||
#| msgid "Hide Text"
|
||||
#: ../js/ui/legacyTray.js:66
|
||||
msgid "Hide tray"
|
||||
msgstr "Пинҳон кардани лавҳа"
|
||||
|
||||
#: ../js/ui/legacyTray.js:91
|
||||
#: ../js/ui/legacyTray.js:107
|
||||
msgid "Status Icons"
|
||||
msgstr "Нишонаҳои вазъият"
|
||||
|
||||
@ -976,7 +979,7 @@ msgstr "Намоиш додани манбаъ"
|
||||
msgid "Web Page"
|
||||
msgstr "Саҳифаи веб"
|
||||
|
||||
#: ../js/ui/messageTray.js:2133
|
||||
#: ../js/ui/messageTray.js:1486
|
||||
msgid "System Information"
|
||||
msgstr "Маълумоти система"
|
||||
|
||||
@ -1018,7 +1021,7 @@ msgstr "toggle-switch-us"
|
||||
msgid "Enter a Command"
|
||||
msgstr "Фармонеро ворид кунед"
|
||||
|
||||
#: ../js/ui/runDialog.js:110 ../js/ui/windowMenu.js:120
|
||||
#: ../js/ui/runDialog.js:110 ../js/ui/windowMenu.js:162
|
||||
msgid "Close"
|
||||
msgstr "Пӯшидан"
|
||||
|
||||
@ -1046,27 +1049,27 @@ msgid_plural "%d new notifications"
|
||||
msgstr[0] "%d огоҳии нав"
|
||||
msgstr[1] "%d огоҳии нав"
|
||||
|
||||
#: ../js/ui/screenShield.js:432 ../js/ui/status/system.js:345
|
||||
#: ../js/ui/screenShield.js:432 ../js/ui/status/system.js:365
|
||||
msgid "Lock"
|
||||
msgstr "Қулф кардан"
|
||||
|
||||
#: ../js/ui/screenShield.js:668
|
||||
#: ../js/ui/screenShield.js:684
|
||||
msgid "GNOME needs to lock the screen"
|
||||
msgstr "GNOME бояд экранро қулф кунад"
|
||||
|
||||
#: ../js/ui/screenShield.js:795 ../js/ui/screenShield.js:1271
|
||||
#: ../js/ui/screenShield.js:805 ../js/ui/screenShield.js:1271
|
||||
msgid "Unable to lock"
|
||||
msgstr "Қулф карда намешавад"
|
||||
|
||||
#: ../js/ui/screenShield.js:796 ../js/ui/screenShield.js:1272
|
||||
#: ../js/ui/screenShield.js:806 ../js/ui/screenShield.js:1272
|
||||
msgid "Lock was blocked by an application"
|
||||
msgstr "Қулф аз тарави барнома баста шудааст"
|
||||
|
||||
#: ../js/ui/search.js:616
|
||||
#: ../js/ui/search.js:617
|
||||
msgid "Searching…"
|
||||
msgstr "Ҷустуҷӯ рафта истодааст..."
|
||||
|
||||
#: ../js/ui/search.js:618
|
||||
#: ../js/ui/search.js:619
|
||||
msgid "No results."
|
||||
msgstr "Ягон натиҷа нест."
|
||||
|
||||
@ -1130,11 +1133,11 @@ msgstr "Тугмаҳои ҷастухез"
|
||||
msgid "Mouse Keys"
|
||||
msgstr "Тугмаҳои муш"
|
||||
|
||||
#: ../js/ui/status/accessibility.js:144
|
||||
#: ../js/ui/status/accessibility.js:167
|
||||
msgid "High Contrast"
|
||||
msgstr "Контрасти баланд"
|
||||
|
||||
#: ../js/ui/status/accessibility.js:193
|
||||
#: ../js/ui/status/accessibility.js:202
|
||||
msgid "Large Text"
|
||||
msgstr "Матни бузург"
|
||||
|
||||
@ -1168,7 +1171,7 @@ msgstr "Пайваст нашудааст"
|
||||
msgid "Brightness"
|
||||
msgstr "Дурахшонӣ"
|
||||
|
||||
#: ../js/ui/status/keyboard.js:603
|
||||
#: ../js/ui/status/keyboard.js:736
|
||||
msgid "Show Keyboard Layout"
|
||||
msgstr "Намоиш додани тарҳбандии клавиатура"
|
||||
|
||||
@ -1379,23 +1382,23 @@ msgstr "Ҳолати ҳавопаймо"
|
||||
msgid "On"
|
||||
msgstr "Фаъол"
|
||||
|
||||
#: ../js/ui/status/system.js:317
|
||||
#: ../js/ui/status/system.js:337
|
||||
msgid "Switch User"
|
||||
msgstr "Таъвизи корбар"
|
||||
|
||||
#: ../js/ui/status/system.js:322
|
||||
#: ../js/ui/status/system.js:342
|
||||
msgid "Log Out"
|
||||
msgstr "Баромад"
|
||||
|
||||
#: ../js/ui/status/system.js:341
|
||||
#: ../js/ui/status/system.js:361
|
||||
msgid "Orientation Lock"
|
||||
msgstr "Қулфи самт"
|
||||
|
||||
#: ../js/ui/status/system.js:349
|
||||
#: ../js/ui/status/system.js:369
|
||||
msgid "Suspend"
|
||||
msgstr "Таваққуф"
|
||||
|
||||
#: ../js/ui/status/system.js:352
|
||||
#: ../js/ui/status/system.js:372
|
||||
msgid "Power Off"
|
||||
msgstr "Хомӯш кардан"
|
||||
|
||||
@ -1456,7 +1459,7 @@ msgstr[1] "Тағйироти танзимот баъд аз %d сония ба
|
||||
|
||||
#. Translators: This represents the size of a window. The first number is
|
||||
#. * the width of the window and the second is the height. */
|
||||
#: ../js/ui/windowManager.js:599
|
||||
#: ../js/ui/windowManager.js:605
|
||||
#, javascript-format
|
||||
msgid "%d x %d"
|
||||
msgstr "%d x %d"
|
||||
@ -1493,14 +1496,38 @@ msgstr "Ҳамеша дар боло"
|
||||
msgid "Always on Visible Workspace"
|
||||
msgstr "Ҳамеша дар фазои кории намоён"
|
||||
|
||||
#: ../js/ui/windowMenu.js:106
|
||||
#: ../js/ui/windowMenu.js:105
|
||||
msgid "Move to Workspace Left"
|
||||
msgstr "Интиқол додан ба фазои кории чап"
|
||||
|
||||
#: ../js/ui/windowMenu.js:110
|
||||
msgid "Move to Workspace Right"
|
||||
msgstr "Интиқол додан ба фазои кории рост"
|
||||
|
||||
#: ../js/ui/windowMenu.js:115
|
||||
msgid "Move to Workspace Up"
|
||||
msgstr "Интиқол додан ба фазои кории боло"
|
||||
|
||||
#: ../js/ui/windowMenu.js:111
|
||||
#: ../js/ui/windowMenu.js:120
|
||||
msgid "Move to Workspace Down"
|
||||
msgstr "Интиқол додан ба фазои кории поён"
|
||||
|
||||
#: ../js/ui/windowMenu.js:136
|
||||
msgid "Move to Monitor Up"
|
||||
msgstr "Интиқол ба канори болои монитор"
|
||||
|
||||
#: ../js/ui/windowMenu.js:142
|
||||
msgid "Move to Monitor Down"
|
||||
msgstr "Интиқол ба канори поёни монитор"
|
||||
|
||||
#: ../js/ui/windowMenu.js:148
|
||||
msgid "Move to Monitor Left"
|
||||
msgstr "Интиқол ба канори чапи монитор"
|
||||
|
||||
#: ../js/ui/windowMenu.js:154
|
||||
msgid "Move to Monitor Right"
|
||||
msgstr "Интиқол ба канори рости монитор"
|
||||
|
||||
#: ../src/calendar-server/evolution-calendar.desktop.in.in.h:1
|
||||
msgid "Evolution Calendar"
|
||||
msgstr "Ӣақвими Evolution"
|
||||
@ -1544,21 +1571,21 @@ msgstr ""
|
||||
msgid "List possible modes"
|
||||
msgstr "Рӯйхати ҳолатҳои имконпазир"
|
||||
|
||||
#: ../src/shell-app.c:247
|
||||
#: ../src/shell-app.c:239
|
||||
msgctxt "program"
|
||||
msgid "Unknown"
|
||||
msgstr "Номаълум"
|
||||
|
||||
#: ../src/shell-app.c:488
|
||||
#: ../src/shell-app.c:480
|
||||
#, c-format
|
||||
msgid "Failed to launch “%s”"
|
||||
msgstr "Оғози “%s” қатъ шудааст"
|
||||
|
||||
#: ../src/shell-keyring-prompt.c:714
|
||||
#: ../src/shell-keyring-prompt.c:742
|
||||
msgid "Passwords do not match."
|
||||
msgstr "Паролҳо мувофиқат намекунанд."
|
||||
|
||||
#: ../src/shell-keyring-prompt.c:722
|
||||
#: ../src/shell-keyring-prompt.c:750
|
||||
msgid "Password cannot be blank"
|
||||
msgstr "Парол бояд холӣ набошад"
|
||||
|
||||
@ -1787,7 +1814,7 @@ msgstr "Равзанаи гуфтугӯи санҷиши ҳакконият бо
|
||||
#~ "маҳдудиятҳое, ки бо китобхонаи рамзгузорӣ таъин шудаанд, дарозтар мебошад"
|
||||
|
||||
#~ msgid "Internal error"
|
||||
#~ msgstr "Хатогии дохилӣ"
|
||||
#~ msgstr "Хатои дохилӣ"
|
||||
|
||||
#~ msgid "Unable to connect to %s"
|
||||
#~ msgstr "Пайвастшавӣ ба %s имконнопазир аст"
|
||||
|
363
po/zh_CN.po
@ -21,8 +21,8 @@ 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: 2015-03-03 22:33+0000\n"
|
||||
"PO-Revision-Date: 2015-03-04 17:55+0800\n"
|
||||
"POT-Creation-Date: 2015-04-25 08:00+0000\n"
|
||||
"PO-Revision-Date: 2015-04-17 19:36+0800\n"
|
||||
"Last-Translator: Aron Xu <happyaron.xu@gmail.com>\n"
|
||||
"Language-Team: Chinese (simplified) <i18n-zh@googlegroups.com>\n"
|
||||
"Language: zh_CN\n"
|
||||
@ -30,6 +30,7 @@ msgstr ""
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||
"X-Generator: Poedit 1.7.5\n"
|
||||
|
||||
#: ../data/50-gnome-shell-system.xml.in.h:1
|
||||
msgid "System"
|
||||
@ -287,55 +288,55 @@ msgstr "将鼠标模式下焦点的更改推迟到指针停止移动之后"
|
||||
msgid "Network Login"
|
||||
msgstr "网络登录"
|
||||
|
||||
#: ../js/extensionPrefs/main.js:123
|
||||
#: ../js/extensionPrefs/main.js:122
|
||||
#, javascript-format
|
||||
msgid "There was an error loading the preferences dialog for %s:"
|
||||
msgstr "载入 %s 的首选想对话框出错:"
|
||||
|
||||
#: ../js/extensionPrefs/main.js:155
|
||||
#: ../js/extensionPrefs/main.js:154
|
||||
msgid "GNOME Shell Extensions"
|
||||
msgstr "配置 GNOME Shell 扩展"
|
||||
|
||||
#: ../js/gdm/authPrompt.js:147 ../js/ui/components/networkAgent.js:143
|
||||
#: ../js/gdm/authPrompt.js:147 ../js/ui/components/networkAgent.js:145
|
||||
#: ../js/ui/components/polkitAgent.js:166 ../js/ui/endSessionDialog.js:452
|
||||
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:399
|
||||
#: ../js/ui/status/network.js:916
|
||||
msgid "Cancel"
|
||||
msgstr "取消"
|
||||
|
||||
#: ../js/gdm/authPrompt.js:169 ../js/gdm/authPrompt.js:217
|
||||
#: ../js/gdm/authPrompt.js:169 ../js/gdm/authPrompt.js:215
|
||||
msgid "Next"
|
||||
msgstr "下一步"
|
||||
|
||||
#: ../js/gdm/authPrompt.js:213 ../js/ui/shellMountOperation.js:403
|
||||
#: ../js/gdm/authPrompt.js:211 ../js/ui/shellMountOperation.js:403
|
||||
#: ../js/ui/unlockDialog.js:59
|
||||
msgid "Unlock"
|
||||
msgstr "解锁"
|
||||
|
||||
#: ../js/gdm/authPrompt.js:215
|
||||
#: ../js/gdm/authPrompt.js:213
|
||||
msgctxt "button"
|
||||
msgid "Sign In"
|
||||
msgstr "登录"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:276
|
||||
#: ../js/gdm/loginDialog.js:281
|
||||
msgid "Choose Session"
|
||||
msgstr "选择会话"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:417
|
||||
#: ../js/gdm/loginDialog.js:431
|
||||
msgid "Not listed?"
|
||||
msgstr "未列出?"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:826
|
||||
#: ../js/gdm/loginDialog.js:840
|
||||
#, javascript-format
|
||||
msgid "(e.g., user or %s)"
|
||||
msgstr "(如 user 或 %s)"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:831 ../js/ui/components/networkAgent.js:269
|
||||
#: ../js/ui/components/networkAgent.js:287
|
||||
#: ../js/gdm/loginDialog.js:845 ../js/ui/components/networkAgent.js:271
|
||||
#: ../js/ui/components/networkAgent.js:289
|
||||
msgid "Username: "
|
||||
msgstr "用户名:"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:1166
|
||||
#: ../js/gdm/loginDialog.js:1173
|
||||
msgid "Login Window"
|
||||
msgstr "登录窗口"
|
||||
|
||||
@ -347,50 +348,112 @@ msgstr "认证出错"
|
||||
msgid "(or swipe finger)"
|
||||
msgstr "(或滑动手指)"
|
||||
|
||||
#: ../js/misc/util.js:115
|
||||
#: ../js/misc/util.js:119
|
||||
msgid "Command not found"
|
||||
msgstr "命令未找到"
|
||||
|
||||
#: ../js/misc/util.js:148
|
||||
#: ../js/misc/util.js:152
|
||||
msgid "Could not parse command:"
|
||||
msgstr "不能解析命令:"
|
||||
|
||||
#: ../js/misc/util.js:156
|
||||
#: ../js/misc/util.js:160
|
||||
#, javascript-format
|
||||
msgid "Execution of “%s” failed:"
|
||||
msgstr "运行“%s”失败:"
|
||||
|
||||
#. Translators: Time in 24h format */
|
||||
#: ../js/misc/util.js:191
|
||||
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/misc/util.js:197
|
||||
msgid "Yesterday, %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" */
|
||||
#: ../js/misc/util.js:203
|
||||
msgid "%A, %H∶%M"
|
||||
msgstr "%A %H:%M"
|
||||
|
||||
#. Translators: this is the month name and day number
|
||||
#. followed by a time string in 24h format.
|
||||
#. i.e. "May 25, 14:30" */
|
||||
#: ../js/misc/util.js:209
|
||||
msgid "%B %d, %H∶%M"
|
||||
msgstr "%m月%d日, %H:%M"
|
||||
|
||||
#. Translators: this is the month name, day number, year
|
||||
#. number followed by a time string in 24h format.
|
||||
#. i.e. "May 25 2012, 14:30" */
|
||||
#: ../js/misc/util.js:215
|
||||
msgid "%B %d %Y, %H∶%M"
|
||||
msgstr "%Y年%m月%d日, %H:%M"
|
||||
|
||||
#. Translators: Time in 12h format */
|
||||
#: ../js/misc/util.js:220
|
||||
msgid "%l∶%M %p"
|
||||
msgstr "%p %-l:%M"
|
||||
|
||||
#. Translators: this is the word "Yesterday" followed by a
|
||||
#. time string in 12h format. i.e. "Yesterday, 2:30 pm" */
|
||||
#: ../js/misc/util.js:226
|
||||
msgid "Yesterday, %l∶%M %p"
|
||||
msgstr "昨天%p %-l:%M"
|
||||
|
||||
#. Translators: this is the week day name followed by a time
|
||||
#. string in 12h format. i.e. "Monday, 2:30 pm" */
|
||||
#: ../js/misc/util.js:232
|
||||
msgid "%A, %l∶%M %p"
|
||||
msgstr "%A%p %-l:%M"
|
||||
|
||||
#. 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/misc/util.js:238
|
||||
msgid "%B %d, %l∶%M %p"
|
||||
msgstr "%m月%d日%p %-l:%M"
|
||||
|
||||
#. 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/misc/util.js:244
|
||||
msgid "%B %d %Y, %l∶%M %p"
|
||||
msgstr "%Y年%m月%d日,%p %-l:%M"
|
||||
|
||||
#. TRANSLATORS: this is the title of the wifi captive portal login
|
||||
#. * window, until we know the title of the actual login page */
|
||||
#: ../js/portalHelper/main.js:85
|
||||
msgid "Web Authentication Redirect"
|
||||
msgstr "网页认证重定向"
|
||||
|
||||
#: ../js/ui/appDisplay.js:785
|
||||
#: ../js/ui/appDisplay.js:788
|
||||
msgid "Frequently used applications will appear here"
|
||||
msgstr "常用的应用程序会出现在这里"
|
||||
|
||||
#: ../js/ui/appDisplay.js:905
|
||||
#: ../js/ui/appDisplay.js:908
|
||||
msgid "Frequent"
|
||||
msgstr "常用"
|
||||
|
||||
#: ../js/ui/appDisplay.js:912
|
||||
#: ../js/ui/appDisplay.js:915
|
||||
msgid "All"
|
||||
msgstr "全部"
|
||||
|
||||
#: ../js/ui/appDisplay.js:1840
|
||||
#: ../js/ui/appDisplay.js:1844
|
||||
msgid "New Window"
|
||||
msgstr "新窗口"
|
||||
|
||||
#: ../js/ui/appDisplay.js:1868 ../js/ui/dash.js:289
|
||||
#: ../js/ui/appDisplay.js:1872 ../js/ui/dash.js:289
|
||||
msgid "Remove from Favorites"
|
||||
msgstr "从收藏夹中移除"
|
||||
|
||||
#: ../js/ui/appDisplay.js:1874
|
||||
#: ../js/ui/appDisplay.js:1878
|
||||
msgid "Add to Favorites"
|
||||
msgstr "添加到收藏夹"
|
||||
|
||||
#: ../js/ui/appDisplay.js:1884
|
||||
#: ../js/ui/appDisplay.js:1888
|
||||
msgid "Show Details"
|
||||
msgstr "显示细节"
|
||||
|
||||
@ -404,8 +467,8 @@ msgstr "%s 已经添加到了您的收藏夹。"
|
||||
msgid "%s has been removed from your favorites."
|
||||
msgstr "%s 已经从您的收藏夹移除。"
|
||||
|
||||
#: ../js/ui/backgroundMenu.js:19 ../js/ui/panel.js:649
|
||||
#: ../js/ui/status/system.js:337
|
||||
#: ../js/ui/backgroundMenu.js:19 ../js/ui/panel.js:650
|
||||
#: ../js/ui/status/system.js:334
|
||||
msgid "Settings"
|
||||
msgstr "设置"
|
||||
|
||||
@ -414,119 +477,104 @@ msgid "Change Background…"
|
||||
msgstr "更换壁纸..."
|
||||
|
||||
#. Translators: Enter 0-6 (Sunday-Saturday) for non-work days. Examples: "0" (Sunday) "6" (Saturday) "06" (Sunday and Saturday). */
|
||||
#: ../js/ui/calendar.js:52
|
||||
#: ../js/ui/calendar.js:53
|
||||
msgctxt "calendar-no-work"
|
||||
msgid "06"
|
||||
msgstr "周日和周六"
|
||||
|
||||
#. Translators: Shown in calendar event list for all day events
|
||||
#. * Keep it short, best if you can use less then 10 characters
|
||||
#. */
|
||||
#: ../js/ui/calendar.js:81
|
||||
msgctxt "event list time"
|
||||
msgid "All Day"
|
||||
msgstr "全天"
|
||||
|
||||
#. Translators: Shown in calendar event list, if 24h format,
|
||||
#. \u2236 is a ratio character, similar to : */
|
||||
#: ../js/ui/calendar.js:88 ../js/ui/calendar.js:1596
|
||||
msgctxt "event list time"
|
||||
msgid "%H∶%M"
|
||||
msgstr "%H∶%M"
|
||||
|
||||
#. Translators: Shown in calendar event list, if 12h format,
|
||||
#. \u2236 is a ratio character, similar to : and \u2009 is
|
||||
#. a thin space */
|
||||
#: ../js/ui/calendar.js:97
|
||||
msgctxt "event list time"
|
||||
msgid "%l∶%M %p"
|
||||
msgstr "%p %-l:%M"
|
||||
|
||||
#. Translators: Calendar grid abbreviation for Sunday.
|
||||
#. *
|
||||
#. * NOTE: These grid abbreviations are always shown together
|
||||
#. * and in order, e.g. "S M T W T F S".
|
||||
#. */
|
||||
#: ../js/ui/calendar.js:111
|
||||
#: ../js/ui/calendar.js:82
|
||||
msgctxt "grid sunday"
|
||||
msgid "S"
|
||||
msgstr "日"
|
||||
|
||||
#. Translators: Calendar grid abbreviation for Monday */
|
||||
#: ../js/ui/calendar.js:113
|
||||
#: ../js/ui/calendar.js:84
|
||||
msgctxt "grid monday"
|
||||
msgid "M"
|
||||
msgstr "一"
|
||||
|
||||
#. Translators: Calendar grid abbreviation for Tuesday */
|
||||
#: ../js/ui/calendar.js:115
|
||||
#: ../js/ui/calendar.js:86
|
||||
msgctxt "grid tuesday"
|
||||
msgid "T"
|
||||
msgstr "二"
|
||||
|
||||
#. Translators: Calendar grid abbreviation for Wednesday */
|
||||
#: ../js/ui/calendar.js:117
|
||||
#: ../js/ui/calendar.js:88
|
||||
msgctxt "grid wednesday"
|
||||
msgid "W"
|
||||
msgstr "三"
|
||||
|
||||
#. Translators: Calendar grid abbreviation for Thursday */
|
||||
#: ../js/ui/calendar.js:119
|
||||
#: ../js/ui/calendar.js:90
|
||||
msgctxt "grid thursday"
|
||||
msgid "T"
|
||||
msgstr "四"
|
||||
|
||||
#. Translators: Calendar grid abbreviation for Friday */
|
||||
#: ../js/ui/calendar.js:121
|
||||
#: ../js/ui/calendar.js:92
|
||||
msgctxt "grid friday"
|
||||
msgid "F"
|
||||
msgstr "五"
|
||||
|
||||
#. Translators: Calendar grid abbreviation for Saturday */
|
||||
#: ../js/ui/calendar.js:123
|
||||
#: ../js/ui/calendar.js:94
|
||||
msgctxt "grid saturday"
|
||||
msgid "S"
|
||||
msgstr "六"
|
||||
|
||||
#: ../js/ui/calendar.js:590
|
||||
#: ../js/ui/calendar.js:564
|
||||
msgid "Previous month"
|
||||
msgstr "上个月"
|
||||
|
||||
#: ../js/ui/calendar.js:600
|
||||
#: ../js/ui/calendar.js:574
|
||||
msgid "Next month"
|
||||
msgstr "下个月"
|
||||
|
||||
#: ../js/ui/calendar.js:807
|
||||
#: ../js/ui/calendar.js:781
|
||||
msgid "Week %V"
|
||||
msgstr "第 %V 星期"
|
||||
|
||||
#: ../js/ui/calendar.js:1263
|
||||
#. Translators: Shown in calendar event list for all day events
|
||||
#. * Keep it short, best if you can use less then 10 characters
|
||||
#. */
|
||||
#: ../js/ui/calendar.js:1187
|
||||
msgctxt "event list time"
|
||||
msgid "All Day"
|
||||
msgstr "全天"
|
||||
|
||||
#: ../js/ui/calendar.js:1289
|
||||
msgid "Clear section"
|
||||
msgstr "清除选中项目"
|
||||
|
||||
#: ../js/ui/calendar.js:1455
|
||||
#: ../js/ui/calendar.js:1516
|
||||
msgid "Events"
|
||||
msgstr "事件"
|
||||
|
||||
#: ../js/ui/calendar.js:1463
|
||||
#: ../js/ui/calendar.js:1525
|
||||
msgctxt "calendar heading"
|
||||
msgid "%A, %B %d"
|
||||
msgstr "%m月%d日 %A"
|
||||
|
||||
#: ../js/ui/calendar.js:1467
|
||||
#: ../js/ui/calendar.js:1529
|
||||
msgctxt "calendar heading"
|
||||
msgid "%A, %B %d, %Y"
|
||||
msgstr "%Y年%m月%d日 %A"
|
||||
|
||||
#: ../js/ui/calendar.js:1560
|
||||
#: ../js/ui/calendar.js:1614
|
||||
msgid "Notifications"
|
||||
msgstr "提示"
|
||||
|
||||
#: ../js/ui/calendar.js:1700
|
||||
#: ../js/ui/calendar.js:1765
|
||||
msgid "No Notifications"
|
||||
msgstr "无提示"
|
||||
|
||||
#: ../js/ui/calendar.js:1703
|
||||
#: ../js/ui/calendar.js:1768
|
||||
msgid "No Events"
|
||||
msgstr "无事件"
|
||||
|
||||
@ -551,79 +599,93 @@ msgstr "密码:"
|
||||
msgid "Type again:"
|
||||
msgstr "再输一次:"
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:138 ../js/ui/status/network.js:277
|
||||
#: ../js/ui/components/networkAgent.js:140 ../js/ui/status/network.js:277
|
||||
#: ../js/ui/status/network.js:359 ../js/ui/status/network.js:919
|
||||
msgid "Connect"
|
||||
msgstr "连接"
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:231
|
||||
#: ../js/ui/components/networkAgent.js:243
|
||||
#: ../js/ui/components/networkAgent.js:271
|
||||
#: ../js/ui/components/networkAgent.js:291
|
||||
#: ../js/ui/components/networkAgent.js:301
|
||||
#: ../js/ui/components/networkAgent.js:233
|
||||
#: ../js/ui/components/networkAgent.js:245
|
||||
#: ../js/ui/components/networkAgent.js:273
|
||||
#: ../js/ui/components/networkAgent.js:293
|
||||
#: ../js/ui/components/networkAgent.js:303
|
||||
msgid "Password: "
|
||||
msgstr "密码:"
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:236
|
||||
#: ../js/ui/components/networkAgent.js:238
|
||||
msgid "Key: "
|
||||
msgstr "密钥:"
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:275
|
||||
#: ../js/ui/components/networkAgent.js:277
|
||||
msgid "Identity: "
|
||||
msgstr "身份:"
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:277
|
||||
#: ../js/ui/components/networkAgent.js:279
|
||||
msgid "Private key password: "
|
||||
msgstr "私人密钥密码:"
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:289
|
||||
#: ../js/ui/components/networkAgent.js:291
|
||||
msgid "Service: "
|
||||
msgstr "服务:"
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:318
|
||||
#: ../js/ui/components/networkAgent.js:320
|
||||
#: ../js/ui/components/networkAgent.js:658
|
||||
msgid "Authentication required by wireless network"
|
||||
msgstr "无线网络要求身份认证"
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:319
|
||||
#: ../js/ui/components/networkAgent.js:321
|
||||
#: ../js/ui/components/networkAgent.js:659
|
||||
#, javascript-format
|
||||
msgid ""
|
||||
"Passwords or encryption keys are required to access the wireless network "
|
||||
"“%s”."
|
||||
msgstr "访问无线网络“%s”需要密码或密钥。"
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:323
|
||||
#: ../js/ui/components/networkAgent.js:325
|
||||
#: ../js/ui/components/networkAgent.js:662
|
||||
msgid "Wired 802.1X authentication"
|
||||
msgstr "有线 802.1X 认证"
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:325
|
||||
#: ../js/ui/components/networkAgent.js:327
|
||||
msgid "Network name: "
|
||||
msgstr "网络名称:"
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:330
|
||||
#: ../js/ui/components/networkAgent.js:332
|
||||
#: ../js/ui/components/networkAgent.js:666
|
||||
msgid "DSL authentication"
|
||||
msgstr "DSL 认证"
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:337
|
||||
#: ../js/ui/components/networkAgent.js:339
|
||||
#: ../js/ui/components/networkAgent.js:672
|
||||
msgid "PIN code required"
|
||||
msgstr "需要 PIN 码"
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:338
|
||||
#: ../js/ui/components/networkAgent.js:340
|
||||
#: ../js/ui/components/networkAgent.js:673
|
||||
msgid "PIN code is needed for the mobile broadband device"
|
||||
msgstr "移动宽带设备需要 PIN 码"
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:339
|
||||
#: ../js/ui/components/networkAgent.js:341
|
||||
msgid "PIN: "
|
||||
msgstr "PIN:"
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:345
|
||||
#: ../js/ui/components/networkAgent.js:348
|
||||
#: ../js/ui/components/networkAgent.js:679
|
||||
msgid "Mobile broadband network password"
|
||||
msgstr "移动宽带网络密码"
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:346
|
||||
#: ../js/ui/components/networkAgent.js:349
|
||||
#: ../js/ui/components/networkAgent.js:663
|
||||
#: ../js/ui/components/networkAgent.js:667
|
||||
#: ../js/ui/components/networkAgent.js:680
|
||||
#, javascript-format
|
||||
msgid "A password is required to connect to “%s”."
|
||||
msgstr "连接到“%s”需要密码。"
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:647 ../js/ui/status/network.js:1657
|
||||
msgid "Network Manager"
|
||||
msgstr "网络管理器"
|
||||
|
||||
#: ../js/ui/components/polkitAgent.js:54
|
||||
msgid "Authentication Required"
|
||||
msgstr "需要认证"
|
||||
@ -644,71 +706,9 @@ msgstr "认证"
|
||||
msgid "Sorry, that didn't work. Please try again."
|
||||
msgstr "抱歉,您的输入有误。请重试。"
|
||||
|
||||
#. Translators: Time in 24h format */
|
||||
#: ../js/ui/components/telepathyClient.js:764 ../js/ui/dateMenu.js:210
|
||||
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:771
|
||||
msgid "Yesterday, %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" */
|
||||
#: ../js/ui/components/telepathyClient.js:778
|
||||
msgid "%A, %H∶%M"
|
||||
msgstr "%A %H:%M"
|
||||
|
||||
#. Translators: this is the month name and day number
|
||||
#. followed by a time string in 24h format.
|
||||
#. i.e. "May 25, 14:30" */
|
||||
#: ../js/ui/components/telepathyClient.js:785
|
||||
msgid "%B %d, %H∶%M"
|
||||
msgstr "%m月%d日, %H:%M"
|
||||
|
||||
#. Translators: this is the month name, day number, year
|
||||
#. number followed by a time string in 24h format.
|
||||
#. i.e. "May 25 2012, 14:30" */
|
||||
#: ../js/ui/components/telepathyClient.js:791
|
||||
msgid "%B %d %Y, %H∶%M"
|
||||
msgstr "%Y年%m月%d日, %H:%M"
|
||||
|
||||
#. Translators: Time in 12h format */
|
||||
#: ../js/ui/components/telepathyClient.js:797 ../js/ui/dateMenu.js:213
|
||||
msgid "%l∶%M %p"
|
||||
msgstr "%p %-l:%M"
|
||||
|
||||
#. Translators: this is the word "Yesterday" followed by a
|
||||
#. time string in 12h format. i.e. "Yesterday, 2:30 pm" */
|
||||
#: ../js/ui/components/telepathyClient.js:804
|
||||
msgid "Yesterday, %l∶%M %p"
|
||||
msgstr "昨天%p %-l:%M"
|
||||
|
||||
#. 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:811
|
||||
msgid "%A, %l∶%M %p"
|
||||
msgstr "%A%p %-l:%M"
|
||||
|
||||
#. 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:818
|
||||
msgid "%B %d, %l∶%M %p"
|
||||
msgstr "%m月%d日%p %-l:%M"
|
||||
|
||||
#. 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:824
|
||||
msgid "%B %d %Y, %l∶%M %p"
|
||||
msgstr "%Y年%m月%d日,%p %-l:%M"
|
||||
|
||||
#. Translators: this is the other person changing their old IM name to their new
|
||||
#. IM name. */
|
||||
#: ../js/ui/components/telepathyClient.js:856
|
||||
#: ../js/ui/components/telepathyClient.js:757
|
||||
#, javascript-format
|
||||
msgid "%s is now known as %s"
|
||||
msgstr "%s 现在叫做 %s"
|
||||
@ -721,7 +721,7 @@ msgstr "窗口"
|
||||
msgid "Show Applications"
|
||||
msgstr "显示应用程序"
|
||||
|
||||
#: ../js/ui/dash.js:451
|
||||
#: ../js/ui/dash.js:449
|
||||
msgid "Dash"
|
||||
msgstr "Dash"
|
||||
|
||||
@ -878,10 +878,19 @@ msgstr "安装"
|
||||
msgid "Download and install “%s” from extensions.gnome.org?"
|
||||
msgstr "从 extensions.gnome.org 下载并安装“%s”?"
|
||||
|
||||
#: ../js/ui/keyboard.js:706 ../js/ui/status/keyboard.js:576
|
||||
#: ../js/ui/keyboard.js:718 ../js/ui/status/keyboard.js:713
|
||||
msgid "Keyboard"
|
||||
msgstr "键盘"
|
||||
|
||||
#. translators: 'Hide' is a verb */
|
||||
#: ../js/ui/legacyTray.js:66
|
||||
msgid "Hide tray"
|
||||
msgstr "隐藏托盘"
|
||||
|
||||
#: ../js/ui/legacyTray.js:107
|
||||
msgid "Status Icons"
|
||||
msgstr "状态图标"
|
||||
|
||||
#: ../js/ui/lookingGlass.js:643
|
||||
msgid "No extensions installed"
|
||||
msgstr "未安装扩展"
|
||||
@ -934,7 +943,7 @@ msgstr "查看源"
|
||||
msgid "Web Page"
|
||||
msgstr "网页"
|
||||
|
||||
#: ../js/ui/messageTray.js:2131
|
||||
#: ../js/ui/messageTray.js:1504
|
||||
msgid "System Information"
|
||||
msgstr "系统信息"
|
||||
|
||||
@ -954,21 +963,21 @@ msgstr "概览"
|
||||
msgid "Type to search…"
|
||||
msgstr "输入以搜索..."
|
||||
|
||||
#: ../js/ui/panel.js:351
|
||||
#: ../js/ui/panel.js:352
|
||||
msgid "Quit"
|
||||
msgstr "退出"
|
||||
|
||||
#. Translators: If there is no suitable word for "Activities"
|
||||
#. in your language, you can use the word for "Overview". */
|
||||
#: ../js/ui/panel.js:403
|
||||
#: ../js/ui/panel.js:404
|
||||
msgid "Activities"
|
||||
msgstr "活动"
|
||||
|
||||
#: ../js/ui/panel.js:754
|
||||
#: ../js/ui/panel.js:755
|
||||
msgid "Top Bar"
|
||||
msgstr "顶栏"
|
||||
|
||||
#: ../js/ui/popupMenu.js:288
|
||||
#: ../js/ui/popupMenu.js:289
|
||||
msgid "toggle-switch-us"
|
||||
msgstr "toggle-switch-us"
|
||||
|
||||
@ -1002,7 +1011,7 @@ msgid "%d new notification"
|
||||
msgid_plural "%d new notifications"
|
||||
msgstr[0] "%d 条新通知"
|
||||
|
||||
#: ../js/ui/screenShield.js:432 ../js/ui/status/system.js:345
|
||||
#: ../js/ui/screenShield.js:432 ../js/ui/status/system.js:342
|
||||
msgid "Lock"
|
||||
msgstr "锁定"
|
||||
|
||||
@ -1018,11 +1027,11 @@ msgstr "无法锁定"
|
||||
msgid "Lock was blocked by an application"
|
||||
msgstr "一个应用程序阻止了锁定"
|
||||
|
||||
#: ../js/ui/search.js:609
|
||||
#: ../js/ui/search.js:617
|
||||
msgid "Searching…"
|
||||
msgstr "正在搜索..."
|
||||
|
||||
#: ../js/ui/search.js:611
|
||||
#: ../js/ui/search.js:619
|
||||
msgid "No results."
|
||||
msgstr "无结果。"
|
||||
|
||||
@ -1086,11 +1095,11 @@ msgstr "筛选键"
|
||||
msgid "Mouse Keys"
|
||||
msgstr "鼠标按键"
|
||||
|
||||
#: ../js/ui/status/accessibility.js:144
|
||||
#: ../js/ui/status/accessibility.js:167
|
||||
msgid "High Contrast"
|
||||
msgstr "高对比度"
|
||||
|
||||
#: ../js/ui/status/accessibility.js:193
|
||||
#: ../js/ui/status/accessibility.js:202
|
||||
msgid "Large Text"
|
||||
msgstr "大号文本"
|
||||
|
||||
@ -1123,7 +1132,7 @@ msgstr "无连接"
|
||||
msgid "Brightness"
|
||||
msgstr "亮度"
|
||||
|
||||
#: ../js/ui/status/keyboard.js:599
|
||||
#: ../js/ui/status/keyboard.js:736
|
||||
msgid "Show Keyboard Layout"
|
||||
msgstr "显示键盘布局"
|
||||
|
||||
@ -1292,10 +1301,6 @@ msgstr "VPN 设置"
|
||||
msgid "VPN"
|
||||
msgstr "VPN"
|
||||
|
||||
#: ../js/ui/status/network.js:1657
|
||||
msgid "Network Manager"
|
||||
msgstr "网络管理器"
|
||||
|
||||
#: ../js/ui/status/network.js:1697
|
||||
msgid "Activation of network connection failed"
|
||||
msgstr "启用网络连接失败"
|
||||
@ -1338,23 +1343,23 @@ msgstr "乘机模式"
|
||||
msgid "On"
|
||||
msgstr "开"
|
||||
|
||||
#: ../js/ui/status/system.js:317
|
||||
#: ../js/ui/status/system.js:314
|
||||
msgid "Switch User"
|
||||
msgstr "切换用户"
|
||||
|
||||
#: ../js/ui/status/system.js:322
|
||||
#: ../js/ui/status/system.js:319
|
||||
msgid "Log Out"
|
||||
msgstr "注销"
|
||||
|
||||
#: ../js/ui/status/system.js:341
|
||||
#: ../js/ui/status/system.js:338
|
||||
msgid "Orientation Lock"
|
||||
msgstr "方向锁定"
|
||||
|
||||
#: ../js/ui/status/system.js:349
|
||||
#: ../js/ui/status/system.js:346
|
||||
msgid "Suspend"
|
||||
msgstr "挂起"
|
||||
|
||||
#: ../js/ui/status/system.js:352
|
||||
#: ../js/ui/status/system.js:349
|
||||
msgid "Power Off"
|
||||
msgstr "关机"
|
||||
|
||||
@ -1414,7 +1419,7 @@ msgstr[0] "设置更改将在 %d 后还原"
|
||||
|
||||
#. Translators: This represents the size of a window. The first number is
|
||||
#. * the width of the window and the second is the height. */
|
||||
#: ../js/ui/windowManager.js:599
|
||||
#: ../js/ui/windowManager.js:613
|
||||
#, javascript-format
|
||||
msgid "%d x %d"
|
||||
msgstr "%d x %d"
|
||||
@ -1499,12 +1504,12 @@ msgstr "使用指定模式,如 “gdm”用于登录屏幕的模式"
|
||||
msgid "List possible modes"
|
||||
msgstr "列出可用的模式"
|
||||
|
||||
#: ../src/shell-app.c:247
|
||||
#: ../src/shell-app.c:239
|
||||
msgctxt "program"
|
||||
msgid "Unknown"
|
||||
msgstr "未知"
|
||||
|
||||
#: ../src/shell-app.c:488
|
||||
#: ../src/shell-app.c:480
|
||||
#, c-format
|
||||
msgid "Failed to launch “%s”"
|
||||
msgstr "启动“%s”失败"
|
||||
@ -1520,3 +1525,11 @@ msgstr "密码不能为空"
|
||||
#: ../src/shell-polkit-authentication-agent.c:346
|
||||
msgid "Authentication dialog was dismissed by the user"
|
||||
msgstr "认证对话框被用户驳回"
|
||||
|
||||
#~ msgctxt "event list time"
|
||||
#~ msgid "%H∶%M"
|
||||
#~ msgstr "%H∶%M"
|
||||
|
||||
#~ msgctxt "event list time"
|
||||
#~ msgid "%l∶%M %p"
|
||||
#~ msgstr "%p %-l:%M"
|
||||
|