Compare commits
166 Commits
wip/rtcm/m
...
3.21.92
Author | SHA1 | Date | |
---|---|---|---|
f07306897f | |||
44d731fff5 | |||
52f939f64c | |||
f1d12c18d8 | |||
373ebb50eb | |||
b0b5be63b9 | |||
68f439425b | |||
cae4d92191 | |||
f336295475 | |||
06d0e7d74a | |||
5e0e3edc7b | |||
02a51bfa65 | |||
dbd04df311 | |||
e6adcd99c7 | |||
3171819c36 | |||
e4976b535d | |||
06d1602f17 | |||
603d0dfbc3 | |||
0b6c5b4620 | |||
d7894dbc44 | |||
d25d8126ea | |||
2402d3e115 | |||
ac4284d348 | |||
f9ef80749a | |||
22f0d3076e | |||
127b6dca1c | |||
8cfff33291 | |||
21f534c7f0 | |||
9faa1db942 | |||
2fc9bffb23 | |||
f16eae45a2 | |||
622e73c34c | |||
eb1c3d7045 | |||
fc26895f70 | |||
ca224b379f | |||
42b609b852 | |||
a24169e2aa | |||
144d1dca88 | |||
38ab6ba3ec | |||
bc6a0626c1 | |||
497f4f4a3c | |||
8c8c89a5f1 | |||
d658a5148a | |||
2c3e0dab0f | |||
e2400e35bd | |||
fc4562491b | |||
6e3bedb888 | |||
2b8332df5e | |||
795e7d4b59 | |||
522d46a525 | |||
dcecf5e350 | |||
a61c929450 | |||
5992e9f524 | |||
ee4cd05ebd | |||
af5e65fd79 | |||
284cbf3ea7 | |||
c3e68955e3 | |||
ffa28e7ee7 | |||
78d81f909c | |||
34551bf48b | |||
e02cd53ac5 | |||
b7f5154bd3 | |||
d80247918c | |||
bb8c2d3e13 | |||
6e0e37519d | |||
5c19ae5878 | |||
8713473c64 | |||
a4b4f2f6fd | |||
03f22135b5 | |||
5b79f657eb | |||
4fc0c513af | |||
f5c058a036 | |||
0dac0ad516 | |||
5d4d1e26fd | |||
2f0039e7dd | |||
9202309bed | |||
7e0e224e0e | |||
35825cf0c7 | |||
b2d79b6362 | |||
f5e1dc86cd | |||
8c51f0076f | |||
8347152730 | |||
3d77dd8f51 | |||
82e6935281 | |||
61070e6ec0 | |||
128697d6a7 | |||
424fa01eca | |||
775187b2e4 | |||
99b5e10acf | |||
208ed6e90d | |||
de8d4c4cd8 | |||
3ae591434d | |||
61fb62f969 | |||
c4584c20dc | |||
c6eb95ff3a | |||
ab68360d53 | |||
58a733dc93 | |||
db8f6b4848 | |||
e72d388a67 | |||
b5dd4d1456 | |||
a7562b4148 | |||
358f64d66b | |||
2a7f9f70b8 | |||
c91085caf7 | |||
21ddbf0b8f | |||
2ad2853278 | |||
e16f63a8e4 | |||
c39ffa111f | |||
5182129196 | |||
02bad8e92b | |||
500ea13155 | |||
ce8e7481e7 | |||
528f2e3cdc | |||
408211ba73 | |||
e02467eada | |||
3e93a1bdd6 | |||
a69a9ba51a | |||
1c0e0191e0 | |||
f233122d4d | |||
72bfa91259 | |||
ef195f0185 | |||
47da6b139e | |||
2705434955 | |||
a7e030d0f9 | |||
8a44170f83 | |||
2ea6ae05e5 | |||
5c0eba7d3b | |||
f81887772a | |||
9aa3d864dc | |||
2425b11df6 | |||
1cb644529f | |||
6cff0fd994 | |||
437256e0f1 | |||
841e0132e9 | |||
1545596c7e | |||
38406e070c | |||
9b07ce1d0d | |||
bf8d30603e | |||
bd6e7f14d1 | |||
5226d8b086 | |||
bd92331780 | |||
387f5143f0 | |||
b7867fe44c | |||
ddea54a539 | |||
84da49c715 | |||
513dff45c1 | |||
3d697baa26 | |||
9eda10d091 | |||
0f82da8735 | |||
296b61b61c | |||
974a896dbc | |||
093fd54e2b | |||
5ae3e5aeb7 | |||
af28a219be | |||
1883df2927 | |||
3274f270e3 | |||
c97626e516 | |||
9c483dd9a6 | |||
8fd6e93fbe | |||
8416ba25de | |||
63f6ff9151 | |||
59c2ace98c | |||
cf4465027a | |||
a23b293fe2 | |||
c039a3ddda | |||
ebe071bd50 |
4
.gitignore
vendored
4
.gitignore
vendored
@ -16,7 +16,6 @@ config.log
|
|||||||
config.status
|
config.status
|
||||||
config
|
config
|
||||||
configure
|
configure
|
||||||
data/50-gnome-shell-*.xml
|
|
||||||
data/org.gnome.Shell.desktop
|
data/org.gnome.Shell.desktop
|
||||||
data/org.gnome.Shell.desktop.in
|
data/org.gnome.Shell.desktop.in
|
||||||
data/gnome-shell-extension-prefs.desktop
|
data/gnome-shell-extension-prefs.desktop
|
||||||
@ -26,8 +25,6 @@ data/gschemas.compiled
|
|||||||
data/perf-background.xml
|
data/perf-background.xml
|
||||||
data/org.gnome.shell.gschema.xml
|
data/org.gnome.shell.gschema.xml
|
||||||
data/org.gnome.shell.gschema.valid
|
data/org.gnome.shell.gschema.valid
|
||||||
data/org.gnome.shell.evolution.calendar.gschema.xml
|
|
||||||
data/org.gnome.shell.evolution.calendar.gschema.valid
|
|
||||||
data/org.gnome.Shell.PortalHelper.desktop
|
data/org.gnome.Shell.PortalHelper.desktop
|
||||||
data/org.gnome.Shell.PortalHelper.service
|
data/org.gnome.Shell.PortalHelper.service
|
||||||
data/theme/.sass-cache
|
data/theme/.sass-cache
|
||||||
@ -74,7 +71,6 @@ src/*-marshal.[ch]
|
|||||||
src/Makefile
|
src/Makefile
|
||||||
src/Makefile.in
|
src/Makefile.in
|
||||||
src/calendar-server/evolution-calendar.desktop
|
src/calendar-server/evolution-calendar.desktop
|
||||||
src/calendar-server/evolution-calendar.desktop.in
|
|
||||||
src/calendar-server/org.gnome.Shell.CalendarServer.service
|
src/calendar-server/org.gnome.Shell.CalendarServer.service
|
||||||
src/gnome-shell
|
src/gnome-shell
|
||||||
src/gnome-shell-calendar-server
|
src/gnome-shell-calendar-server
|
||||||
|
129
NEWS
129
NEWS
@ -1,3 +1,132 @@
|
|||||||
|
3.21.92
|
||||||
|
=======
|
||||||
|
* Adjust screen capture to work with multiple stage views [Jonas; #770128]
|
||||||
|
* Improve handling of cycle shortcuts [Florian; #771063]
|
||||||
|
* Fix windows not getting undimmed in some cases [Rui; #770163, #752524]
|
||||||
|
* Disable extension version check by default [Florian; #770887]
|
||||||
|
* Misc. bug fixes [Rui, Florian, Michael; #770382, #770888, #770328]
|
||||||
|
|
||||||
|
Contributors:
|
||||||
|
Jonas Ådahl, Michael Catanzaro, Fran Dieguez, Olivier Fourdan, Rui Matos,
|
||||||
|
Florian Müllner
|
||||||
|
|
||||||
|
Translations:
|
||||||
|
Changwoo Ryu [ko], Baurzhan Muftakhidinov [kk], Aurimas Černius [lt],
|
||||||
|
Muhammet Kara [tr], Trần Ngọc Quân [vi], A S Alam [pa], Yosef Or Boczko [he],
|
||||||
|
Anders Jonsson [sv], Tiago Santos [pt], Hannie Dumoleyn [nl],
|
||||||
|
Rūdolfs Mazurs [lv], Claude Paroz [fr], Arash Mousavi [fa],
|
||||||
|
Fran Dieguez [gl], Stas Solovey [ru], Tom Tryfonidis [el]
|
||||||
|
|
||||||
|
3.21.91
|
||||||
|
=======
|
||||||
|
Translations:
|
||||||
|
Mario Blättermann [de], Jiri Grönroos [fi], Dušan Kazik [sk],
|
||||||
|
Andika Triwidada [id], Daniel Mustieles [es], Fabio Tomat [fur],
|
||||||
|
Enrico Nicoletto [pt_BR], Matej Urbančič [sl], Мирослав Николић [sr, sr@latin]
|
||||||
|
|
||||||
|
3.21.90.1
|
||||||
|
=========
|
||||||
|
Contributors:
|
||||||
|
Piotr Drąg
|
||||||
|
|
||||||
|
Translations:
|
||||||
|
Marek Černocký [cs], Balázs Úr [hu]
|
||||||
|
|
||||||
|
3.21.90
|
||||||
|
=======
|
||||||
|
* Improve on-screen keyboard on wayland [Carlos; #765009]
|
||||||
|
* Misc. bug fixes [Florian; #769156, #769216, #769074]
|
||||||
|
|
||||||
|
Contributors:
|
||||||
|
Carlos Garnacho, Florian Müllner
|
||||||
|
|
||||||
|
Translations:
|
||||||
|
Fabio Tomat [fur], Tiago Santos [pt], Daniel Mustieles [es],
|
||||||
|
Bernd Homuth [de], Aurimas Černius [lt], Balázs Úr [hu],
|
||||||
|
Yosef Or Boczko [he], Jiri Grönroos [fi], Marek Cernocky [cs],
|
||||||
|
Muhammet Kara [tr], Enrico Nicoletto [pt_BR], Andika Triwidada [id]
|
||||||
|
|
||||||
|
3.21.4
|
||||||
|
======
|
||||||
|
* overview: Fix switching workspaces when scrolling on non-primary monitors
|
||||||
|
[Florian; #766883, #768316]
|
||||||
|
* Fix crash when using screen recorder under wayland [Rui; #767001]
|
||||||
|
* Update theme on video memory purge errors [Rui; #739178]
|
||||||
|
* Free old backgrounds immediately [Hyungwon; #766353]
|
||||||
|
* Add support for system upgrades to end session dialog [Kalev; #763611]
|
||||||
|
* Fix maximized windows flickering to the wrong size on restart [Owen; #761566]
|
||||||
|
* Hide ignored events in calendar as well [Florian; #768538]
|
||||||
|
* calendar: Only hide dismissed occurrence of recurring event [Florian; #748226]
|
||||||
|
* Provide org.freedesktop.impl.portal.access implementation [Florian; #768669]
|
||||||
|
* Misc. bug fixes and cleanups [Rui, Florian, Marinus, Jonas; #767954, #768317,
|
||||||
|
#746867, #762206, #768956, #768979]
|
||||||
|
|
||||||
|
Contributors:
|
||||||
|
Jonas Ådahl, Piotr Drąg, Hyungwon Hwang, Kalev Lember, Rui Matos,
|
||||||
|
Florian Müllner, Marinus Schraal, Owen W. Taylor
|
||||||
|
|
||||||
|
Translations:
|
||||||
|
Andika Triwidada [id], Daniel Mustieles [es], Bruce Cowan [en_GB],
|
||||||
|
Dušan Kazik [sk], Piotr Drąg [pl], Chao-Hsiung Liao [zh_HK]
|
||||||
|
|
||||||
|
3.21.3
|
||||||
|
======
|
||||||
|
* Do not disable suspend action when locked [Florian; #725960]
|
||||||
|
* Remember input sources MRU list [Cosimo; #766826]
|
||||||
|
* networkAgent: Handle VPN service aliases [David; #658484]
|
||||||
|
* Plug a memory leak [Hans; #710230]
|
||||||
|
|
||||||
|
Contributors:
|
||||||
|
Cosimo Cecchi, Florian Müllner, Hans Petter Jansson, David Woodhouse
|
||||||
|
|
||||||
|
Translations:
|
||||||
|
Tiago Santos [pt], Cédric Valmary [oc], Muhammet Kara [tr],
|
||||||
|
Daniel Mustieles [es], Rafael Fontenelle [pt_BR]
|
||||||
|
|
||||||
|
3.21.2
|
||||||
|
======
|
||||||
|
* Fix sorting of hidden apps in app switcher [Florian; #766238]
|
||||||
|
* Set logind's LockedHint property when locked [Victor; #764773]
|
||||||
|
* Allocate framebuffers early to fix a crash on NVIDIA [Martin; #764898]
|
||||||
|
* Fix cycle-windows/cycle-group keybindings [Florian; #730739]
|
||||||
|
* Switch to shared desktop schema for calendar settings [Iain; #766318]
|
||||||
|
* Misc. bug fixes [Florian, Cosimo, Michele; #766325, #758471, #757556,
|
||||||
|
#757019, #766598]
|
||||||
|
|
||||||
|
Contributors:
|
||||||
|
Cosimo Cecchi, Michele Gaio, Iain Lane, Florian Müllner, Martin Szulecki,
|
||||||
|
Victor Toso
|
||||||
|
|
||||||
|
Translations:
|
||||||
|
Tiago Santos [pt], Kjartan Maraas [nb], Jiro Matsuzawa [ja],
|
||||||
|
Cédric Valmary [oc], Sveinn í Felli [is]
|
||||||
|
|
||||||
|
3.21.1
|
||||||
|
======
|
||||||
|
* Save screencasts in HOME if XDG_VIDEO_DIR doesn't exist [Florian; #765015]
|
||||||
|
* Don't show orientation lock when g-s-d won't rotate [Florian; #765267]
|
||||||
|
* Misc. bug fixes [Heiher, Florian, Marek, Rui; #722752, #765061, #763068,
|
||||||
|
#765607, #757676, #760439]
|
||||||
|
|
||||||
|
Contributors:
|
||||||
|
Heiher, Marek Chalupa, Rui Matos, Florian Müllner
|
||||||
|
|
||||||
|
Translations:
|
||||||
|
Arash Mousavi [fa], Kristjan SCHMIDT [eo], GNOME Translation Robot [gd]
|
||||||
|
|
||||||
|
3.20.1
|
||||||
|
======
|
||||||
|
* Plug a memory leak [Aaron; #735705]
|
||||||
|
|
||||||
|
Contributors:
|
||||||
|
Aaron Plattner
|
||||||
|
|
||||||
|
Translations:
|
||||||
|
Daniel Korostil [uk], Matej Urbančič [sl], Inaki Larranaga Murgoitio [eu],
|
||||||
|
Cheng-Chia Tseng [zh_TW], Fabio Tomat [fur], Trần Ngọc Quân [vi],
|
||||||
|
YunQiang Su [zh_CN], Marek Černocký [cs], Arash Mousavi [fa],
|
||||||
|
Alexander Shopov [bg], Khaled Hosny [ar]
|
||||||
|
|
||||||
3.20.0
|
3.20.0
|
||||||
======
|
======
|
||||||
|
|
||||||
|
24
configure.ac
24
configure.ac
@ -1,5 +1,5 @@
|
|||||||
AC_PREREQ(2.63)
|
AC_PREREQ(2.63)
|
||||||
AC_INIT([gnome-shell],[3.20.0],[https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-shell],[gnome-shell])
|
AC_INIT([gnome-shell],[3.21.92],[https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-shell],[gnome-shell])
|
||||||
AX_IS_RELEASE([git-directory])
|
AX_IS_RELEASE([git-directory])
|
||||||
|
|
||||||
AC_CONFIG_HEADERS([config.h])
|
AC_CONFIG_HEADERS([config.h])
|
||||||
@ -24,13 +24,14 @@ LT_PREREQ([2.2.6])
|
|||||||
LT_INIT([disable-static])
|
LT_INIT([disable-static])
|
||||||
|
|
||||||
# i18n
|
# i18n
|
||||||
IT_PROG_INTLTOOL([0.40])
|
|
||||||
|
|
||||||
GETTEXT_PACKAGE=gnome-shell
|
GETTEXT_PACKAGE=gnome-shell
|
||||||
AC_SUBST(GETTEXT_PACKAGE)
|
AC_SUBST(GETTEXT_PACKAGE)
|
||||||
AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE, "$GETTEXT_PACKAGE",
|
AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE, "$GETTEXT_PACKAGE",
|
||||||
[The prefix for our gettext translation domains.])
|
[The prefix for our gettext translation domains.])
|
||||||
|
|
||||||
|
AM_GNU_GETTEXT_VERSION([0.19.6])
|
||||||
|
AM_GNU_GETTEXT([external])
|
||||||
|
|
||||||
PKG_PROG_PKG_CONFIG([0.22])
|
PKG_PROG_PKG_CONFIG([0.22])
|
||||||
|
|
||||||
AC_PATH_PROG([XSLTPROC], [xsltproc])
|
AC_PATH_PROG([XSLTPROC], [xsltproc])
|
||||||
@ -52,7 +53,7 @@ if $PKG_CONFIG --exists gstreamer-1.0 '>=' $GSTREAMER_MIN_VERSION ; then
|
|||||||
AC_MSG_RESULT(yes)
|
AC_MSG_RESULT(yes)
|
||||||
build_recorder=true
|
build_recorder=true
|
||||||
recorder_modules="gstreamer-1.0 gstreamer-base-1.0 x11 gtk+-3.0"
|
recorder_modules="gstreamer-1.0 gstreamer-base-1.0 x11 gtk+-3.0"
|
||||||
PKG_CHECK_MODULES(TEST_SHELL_RECORDER, $recorder_modules clutter-1.0)
|
PKG_CHECK_MODULES(TEST_SHELL_RECORDER, $recorder_modules mutter-clutter-1.0)
|
||||||
else
|
else
|
||||||
AC_MSG_RESULT(no)
|
AC_MSG_RESULT(no)
|
||||||
fi
|
fi
|
||||||
@ -75,9 +76,9 @@ AS_IF([test x$enable_systemd != xno], [
|
|||||||
AC_MSG_RESULT($enable_systemd)
|
AC_MSG_RESULT($enable_systemd)
|
||||||
|
|
||||||
CLUTTER_MIN_VERSION=1.21.5
|
CLUTTER_MIN_VERSION=1.21.5
|
||||||
GOBJECT_INTROSPECTION_MIN_VERSION=1.45.4
|
GOBJECT_INTROSPECTION_MIN_VERSION=1.49.1
|
||||||
GJS_MIN_VERSION=1.39.0
|
GJS_MIN_VERSION=1.39.0
|
||||||
MUTTER_MIN_VERSION=3.20.0
|
MUTTER_MIN_VERSION=3.21.92
|
||||||
GTK_MIN_VERSION=3.15.0
|
GTK_MIN_VERSION=3.15.0
|
||||||
GIO_MIN_VERSION=2.45.3
|
GIO_MIN_VERSION=2.45.3
|
||||||
LIBECAL_MIN_VERSION=3.5.3
|
LIBECAL_MIN_VERSION=3.5.3
|
||||||
@ -98,8 +99,8 @@ SHARED_PCS="gio-unix-2.0 >= $GIO_MIN_VERSION
|
|||||||
gjs-internals-1.0 >= $GJS_MIN_VERSION
|
gjs-internals-1.0 >= $GJS_MIN_VERSION
|
||||||
$recorder_modules
|
$recorder_modules
|
||||||
gdk-x11-3.0 libsoup-2.4
|
gdk-x11-3.0 libsoup-2.4
|
||||||
clutter-x11-1.0 >= $CLUTTER_MIN_VERSION
|
mutter-clutter-1.0 >= $CLUTTER_MIN_VERSION
|
||||||
clutter-glx-1.0 >= $CLUTTER_MIN_VERSION
|
mutter-cogl-pango-1.0
|
||||||
libstartup-notification-1.0 >= $STARTUP_NOTIFICATION_MIN_VERSION
|
libstartup-notification-1.0 >= $STARTUP_NOTIFICATION_MIN_VERSION
|
||||||
gobject-introspection-1.0 >= $GOBJECT_INTROSPECTION_MIN_VERSION
|
gobject-introspection-1.0 >= $GOBJECT_INTROSPECTION_MIN_VERSION
|
||||||
libcanberra libcanberra-gtk3
|
libcanberra libcanberra-gtk3
|
||||||
@ -114,12 +115,12 @@ PKG_CHECK_MODULES(GNOME_SHELL, $SHARED_PCS)
|
|||||||
PKG_CHECK_MODULES(MUTTER, libmutter >= $MUTTER_MIN_VERSION)
|
PKG_CHECK_MODULES(MUTTER, libmutter >= $MUTTER_MIN_VERSION)
|
||||||
|
|
||||||
PKG_CHECK_MODULES(GNOME_SHELL_JS, gio-2.0 gjs-internals-1.0 >= $GJS_MIN_VERSION)
|
PKG_CHECK_MODULES(GNOME_SHELL_JS, gio-2.0 gjs-internals-1.0 >= $GJS_MIN_VERSION)
|
||||||
PKG_CHECK_MODULES(ST, clutter-1.0 gtk+-3.0 libcroco-0.6 >= 0.6.8 x11)
|
PKG_CHECK_MODULES(ST, mutter-clutter-1.0 gtk+-3.0 libcroco-0.6 >= 0.6.8 x11)
|
||||||
PKG_CHECK_MODULES(SHELL_PERF_HELPER, gtk+-3.0 gio-2.0)
|
PKG_CHECK_MODULES(SHELL_PERF_HELPER, gtk+-3.0 gio-2.0)
|
||||||
PKG_CHECK_MODULES(SHELL_HOTPLUG_SNIFFER, gio-2.0 gdk-pixbuf-2.0)
|
PKG_CHECK_MODULES(SHELL_HOTPLUG_SNIFFER, gio-2.0 gdk-pixbuf-2.0)
|
||||||
PKG_CHECK_MODULES(TRAY, clutter-1.0 gtk+-3.0)
|
PKG_CHECK_MODULES(TRAY, mutter-clutter-1.0 gtk+-3.0)
|
||||||
PKG_CHECK_MODULES(GVC, libpulse >= $PULSE_MIN_VERS libpulse-mainloop-glib gobject-2.0)
|
PKG_CHECK_MODULES(GVC, libpulse >= $PULSE_MIN_VERS libpulse-mainloop-glib gobject-2.0)
|
||||||
PKG_CHECK_MODULES(DESKTOP_SCHEMAS, gsettings-desktop-schemas >= 3.19.2)
|
PKG_CHECK_MODULES(DESKTOP_SCHEMAS, gsettings-desktop-schemas >= 3.21.3)
|
||||||
|
|
||||||
AC_ARG_ENABLE(browser-plugin,
|
AC_ARG_ENABLE(browser-plugin,
|
||||||
[AS_HELP_STRING([--enable-browser-plugin],
|
[AS_HELP_STRING([--enable-browser-plugin],
|
||||||
@ -254,7 +255,6 @@ AC_CONFIG_FILES([
|
|||||||
docs/reference/st/Makefile
|
docs/reference/st/Makefile
|
||||||
docs/reference/st/st-docs.sgml
|
docs/reference/st/st-docs.sgml
|
||||||
js/Makefile
|
js/Makefile
|
||||||
src/calendar-server/evolution-calendar.desktop.in
|
|
||||||
src/Makefile
|
src/Makefile
|
||||||
src/gvc/Makefile
|
src/gvc/Makefile
|
||||||
browser-plugin/Makefile
|
browser-plugin/Makefile
|
||||||
|
@ -1,24 +1,24 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" ?>
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
<KeyListEntries schema="org.gnome.shell.keybindings"
|
<KeyListEntries schema="org.gnome.shell.keybindings"
|
||||||
group="system"
|
group="system"
|
||||||
_name="System"
|
name="System"
|
||||||
wm_name="GNOME Shell"
|
wm_name="GNOME Shell"
|
||||||
package="gnome-shell">
|
package="gnome-shell">
|
||||||
|
|
||||||
<KeyListEntry name="toggle-message-tray"
|
<KeyListEntry name="toggle-message-tray"
|
||||||
_description="Show the notification list"/>
|
description="Show the notification list"/>
|
||||||
|
|
||||||
<KeyListEntry name="focus-active-notification"
|
<KeyListEntry name="focus-active-notification"
|
||||||
_description="Focus the active notification"/>
|
description="Focus the active notification"/>
|
||||||
|
|
||||||
<KeyListEntry name="toggle-overview"
|
<KeyListEntry name="toggle-overview"
|
||||||
_description="Show the overview"/>
|
description="Show the overview"/>
|
||||||
|
|
||||||
<KeyListEntry name="toggle-application-view"
|
<KeyListEntry name="toggle-application-view"
|
||||||
_description="Show all applications"/>
|
description="Show all applications"/>
|
||||||
|
|
||||||
<KeyListEntry name="open-application-menu"
|
<KeyListEntry name="open-application-menu"
|
||||||
_description="Open the application menu"/>
|
description="Open the application menu"/>
|
||||||
|
|
||||||
</KeyListEntries>
|
</KeyListEntries>
|
||||||
|
|
@ -7,12 +7,16 @@ desktop_DATA = org.gnome.Shell.desktop gnome-shell-extension-prefs.desktop
|
|||||||
if HAVE_NETWORKMANAGER
|
if HAVE_NETWORKMANAGER
|
||||||
desktop_DATA += org.gnome.Shell.PortalHelper.desktop
|
desktop_DATA += org.gnome.Shell.PortalHelper.desktop
|
||||||
|
|
||||||
|
portaldir = $(datadir)/xdg-desktop-portal/portals
|
||||||
|
portal_DATA = gnome-shell.portal
|
||||||
|
|
||||||
servicedir = $(datadir)/dbus-1/services
|
servicedir = $(datadir)/dbus-1/services
|
||||||
service_DATA = org.gnome.Shell.PortalHelper.service
|
service_DATA = org.gnome.Shell.PortalHelper.service
|
||||||
|
|
||||||
CLEANFILES += \
|
CLEANFILES += \
|
||||||
org.gnome.Shell.PortalHelper.service \
|
org.gnome.Shell.PortalHelper.service \
|
||||||
org.gnome.Shell.PortalHelper.desktop \
|
org.gnome.Shell.PortalHelper.desktop \
|
||||||
|
org.gnome.Shell.PortalHelper.desktop.in \
|
||||||
$(NULL)
|
$(NULL)
|
||||||
|
|
||||||
endif
|
endif
|
||||||
@ -28,7 +32,9 @@ endif
|
|||||||
-e "s|@VERSION[@]|$(VERSION)|" \
|
-e "s|@VERSION[@]|$(VERSION)|" \
|
||||||
$< > $@ || rm $@
|
$< > $@ || rm $@
|
||||||
|
|
||||||
@INTLTOOL_DESKTOP_RULE@
|
%.desktop:%.desktop.in
|
||||||
|
$(AM_V_GEN) $(MSGFMT) --desktop --template $(builddir)/$< \
|
||||||
|
-d $(top_srcdir)/po -o $@
|
||||||
|
|
||||||
introspectiondir = $(datadir)/dbus-1/interfaces
|
introspectiondir = $(datadir)/dbus-1/interfaces
|
||||||
introspection_DATA = \
|
introspection_DATA = \
|
||||||
@ -80,14 +86,11 @@ perf-background.xml: perf-background.xml.in
|
|||||||
$< > $@ || rm $@
|
$< > $@ || rm $@
|
||||||
|
|
||||||
keysdir = @GNOME_KEYBINDINGS_KEYSDIR@
|
keysdir = @GNOME_KEYBINDINGS_KEYSDIR@
|
||||||
keys_in_files = 50-gnome-shell-system.xml.in
|
keys_DATA = 50-gnome-shell-system.xml
|
||||||
keys_DATA = $(keys_in_files:.xml.in=.xml)
|
|
||||||
|
|
||||||
gsettings_SCHEMAS = org.gnome.shell.gschema.xml
|
gsettings_SCHEMAS = org.gnome.shell.gschema.xml
|
||||||
|
|
||||||
@INTLTOOL_XML_NOMERGE_RULE@
|
%.gschema.xml: %.gschema.xml.in Makefile
|
||||||
|
|
||||||
%.gschema.xml.in: %.gschema.xml.in.in Makefile
|
|
||||||
$(AM_V_GEN) sed -e 's|@GETTEXT_PACKAGE[@]|$(GETTEXT_PACKAGE)|g' \
|
$(AM_V_GEN) sed -e 's|@GETTEXT_PACKAGE[@]|$(GETTEXT_PACKAGE)|g' \
|
||||||
$< > $@ || rm $@
|
$< > $@ || rm $@
|
||||||
|
|
||||||
@ -106,15 +109,16 @@ convert_DATA = gnome-shell-overrides.convert
|
|||||||
EXTRA_DIST = \
|
EXTRA_DIST = \
|
||||||
org.gnome.Shell.desktop.in.in \
|
org.gnome.Shell.desktop.in.in \
|
||||||
gnome-shell-extension-prefs.desktop.in.in \
|
gnome-shell-extension-prefs.desktop.in.in \
|
||||||
|
$(portal_DATA) \
|
||||||
$(introspection_DATA) \
|
$(introspection_DATA) \
|
||||||
$(menu_DATA) \
|
$(menu_DATA) \
|
||||||
$(convert_DATA) \
|
$(convert_DATA) \
|
||||||
$(keys_in_files) \
|
$(keys_DATA) \
|
||||||
$(dist_theme_files) \
|
$(dist_theme_files) \
|
||||||
perf-background.xml.in \
|
perf-background.xml.in \
|
||||||
org.gnome.Shell.PortalHelper.desktop.in \
|
org.gnome.Shell.PortalHelper.desktop.in.in \
|
||||||
org.gnome.Shell.PortalHelper.service.in \
|
org.gnome.Shell.PortalHelper.service.in \
|
||||||
org.gnome.shell.gschema.xml.in.in \
|
org.gnome.shell.gschema.xml.in \
|
||||||
gnome-shell-theme.gresource.xml \
|
gnome-shell-theme.gresource.xml \
|
||||||
$(resource_files) \
|
$(resource_files) \
|
||||||
$(NULL)
|
$(NULL)
|
||||||
@ -123,11 +127,9 @@ CLEANFILES += \
|
|||||||
org.gnome.Shell.desktop.in \
|
org.gnome.Shell.desktop.in \
|
||||||
gnome-shell-extension-prefs.in \
|
gnome-shell-extension-prefs.in \
|
||||||
$(desktop_DATA) \
|
$(desktop_DATA) \
|
||||||
$(keys_DATA) \
|
|
||||||
$(gsettings_SCHEMAS) \
|
$(gsettings_SCHEMAS) \
|
||||||
perf-background.xml \
|
perf-background.xml \
|
||||||
gschemas.compiled \
|
gschemas.compiled \
|
||||||
org.gnome.shell.gschema.valid \
|
org.gnome.shell.gschema.valid \
|
||||||
org.gnome.shell.gschema.xml.in \
|
|
||||||
gnome-shell-theme.gresource \
|
gnome-shell-theme.gresource \
|
||||||
$(NULL)
|
$(NULL)
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
[Desktop Entry]
|
[Desktop Entry]
|
||||||
Type=Application
|
Type=Application
|
||||||
_Name=GNOME Shell Extension Preferences
|
Name=GNOME Shell Extension Preferences
|
||||||
_Comment=Configure GNOME Shell Extensions
|
Comment=Configure GNOME Shell Extensions
|
||||||
Exec=@bindir@/gnome-shell-extension-prefs %u
|
Exec=@bindir@/gnome-shell-extension-prefs %u
|
||||||
X-GNOME-Bugzilla-Bugzilla=GNOME
|
X-GNOME-Bugzilla-Bugzilla=GNOME
|
||||||
X-GNOME-Bugzilla-Product=gnome-shell
|
X-GNOME-Bugzilla-Product=gnome-shell
|
||||||
|
4
data/gnome-shell.portal
Normal file
4
data/gnome-shell.portal
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
[portal]
|
||||||
|
DBusName=org.freedesktop.impl.portal.desktop.gnome
|
||||||
|
Interfaces=org.freedesktop.impl.portal.Access
|
||||||
|
UseIn=gnome
|
@ -1,9 +1,10 @@
|
|||||||
[Desktop Entry]
|
[Desktop Entry]
|
||||||
_Name=Network Login
|
Name=Network Login
|
||||||
Type=Application
|
Type=Application
|
||||||
Exec=gapplication launch org.gnome.Shell.PortalHelper
|
Exec=gapplication launch org.gnome.Shell.PortalHelper
|
||||||
DBusActivatable=true
|
DBusActivatable=true
|
||||||
NoDisplay=true
|
NoDisplay=true
|
||||||
|
# Translators: Do NOT translate or transliterate this text (this is an icon file name)!
|
||||||
Icon=network-workgroup
|
Icon=network-workgroup
|
||||||
StartupNotify=true
|
StartupNotify=true
|
||||||
OnlyShowIn=GNOME;
|
OnlyShowIn=GNOME;
|
@ -1,7 +1,7 @@
|
|||||||
[Desktop Entry]
|
[Desktop Entry]
|
||||||
Type=Application
|
Type=Application
|
||||||
_Name=GNOME Shell
|
Name=GNOME Shell
|
||||||
_Comment=Window management and application launching
|
Comment=Window management and application launching
|
||||||
Exec=@bindir@/gnome-shell
|
Exec=@bindir@/gnome-shell
|
||||||
X-GNOME-Bugzilla-Bugzilla=GNOME
|
X-GNOME-Bugzilla-Bugzilla=GNOME
|
||||||
X-GNOME-Bugzilla-Product=gnome-shell
|
X-GNOME-Bugzilla-Product=gnome-shell
|
||||||
|
@ -3,143 +3,131 @@
|
|||||||
gettext-domain="@GETTEXT_PACKAGE@">
|
gettext-domain="@GETTEXT_PACKAGE@">
|
||||||
<key name="development-tools" type="b">
|
<key name="development-tools" type="b">
|
||||||
<default>true</default>
|
<default>true</default>
|
||||||
<_summary>
|
<summary>
|
||||||
Enable internal tools useful for developers and testers from Alt-F2
|
Enable internal tools useful for developers and testers from Alt-F2
|
||||||
</_summary>
|
</summary>
|
||||||
<_description>
|
<description>
|
||||||
Allows access to internal debugging and monitoring tools
|
Allows access to internal debugging and monitoring tools
|
||||||
using the Alt-F2 dialog.
|
using the Alt-F2 dialog.
|
||||||
</_description>
|
</description>
|
||||||
</key>
|
</key>
|
||||||
<key name="enabled-extensions" type="as">
|
<key name="enabled-extensions" type="as">
|
||||||
<default>[]</default>
|
<default>[]</default>
|
||||||
<_summary>UUIDs of extensions to enable</_summary>
|
<summary>UUIDs of extensions to enable</summary>
|
||||||
<_description>
|
<description>
|
||||||
GNOME Shell extensions have a UUID property; this key lists extensions
|
GNOME Shell extensions have a UUID property; this key lists extensions
|
||||||
which should be loaded. Any extension that wants to be loaded needs
|
which should be loaded. Any extension that wants to be loaded needs
|
||||||
to be in this list. You can also manipulate this list with the
|
to be in this list. You can also manipulate this list with the
|
||||||
EnableExtension and DisableExtension D-Bus methods on org.gnome.Shell.
|
EnableExtension and DisableExtension D-Bus methods on org.gnome.Shell.
|
||||||
</_description>
|
</description>
|
||||||
</key>
|
</key>
|
||||||
<key name="disable-extension-version-validation" type="b">
|
<key name="disable-extension-version-validation" type="b">
|
||||||
<default>false</default>
|
<default>true</default>
|
||||||
<_summary>Disables the validation of extension version compatibility</_summary>
|
<summary>Disables the validation of extension version compatibility</summary>
|
||||||
<_description>
|
<description>
|
||||||
GNOME Shell will only load extensions that claim to support the current
|
GNOME Shell will only load extensions that claim to support the current
|
||||||
running version. Enabling this option will disable this check and try to
|
running version. Enabling this option will disable this check and try to
|
||||||
load all extensions regardless of the versions they claim to support.
|
load all extensions regardless of the versions they claim to support.
|
||||||
</_description>
|
</description>
|
||||||
</key>
|
</key>
|
||||||
<key name="favorite-apps" type="as">
|
<key name="favorite-apps" type="as">
|
||||||
<default>[ 'epiphany.desktop', 'evolution.desktop', 'rhythmbox.desktop', 'shotwell.desktop', 'org.gnome.Nautilus.desktop', 'org.gnome.Software.desktop' ]</default>
|
<default>[ 'epiphany.desktop', 'evolution.desktop', 'rhythmbox.desktop', 'shotwell.desktop', 'org.gnome.Nautilus.desktop', 'org.gnome.Software.desktop' ]</default>
|
||||||
<_summary>List of desktop file IDs for favorite applications</_summary>
|
<summary>List of desktop file IDs for favorite applications</summary>
|
||||||
<_description>
|
<description>
|
||||||
The applications corresponding to these identifiers
|
The applications corresponding to these identifiers
|
||||||
will be displayed in the favorites area.
|
will be displayed in the favorites area.
|
||||||
</_description>
|
</description>
|
||||||
</key>
|
</key>
|
||||||
<key name="app-picker-view" type="u">
|
<key name="app-picker-view" type="u">
|
||||||
<default>0</default>
|
<default>0</default>
|
||||||
<_summary>App Picker View</_summary>
|
<summary>App Picker View</summary>
|
||||||
<_description>
|
<description>
|
||||||
Index of the currently selected view in the application picker.
|
Index of the currently selected view in the application picker.
|
||||||
</_description>
|
</description>
|
||||||
</key>
|
</key>
|
||||||
<key name="command-history" type="as">
|
<key name="command-history" type="as">
|
||||||
<default>[]</default>
|
<default>[]</default>
|
||||||
<_summary>History for command (Alt-F2) dialog</_summary>
|
<summary>History for command (Alt-F2) dialog</summary>
|
||||||
</key>
|
</key>
|
||||||
<key name="looking-glass-history" type="as">
|
<key name="looking-glass-history" type="as">
|
||||||
<default>[]</default>
|
<default>[]</default>
|
||||||
<!-- Translators: looking glass is a debugger and inspector tool, see https://live.gnome.org/GnomeShell/LookingGlass -->
|
<!-- Translators: looking glass is a debugger and inspector tool, see https://wiki.gnome.org/Projects/GnomeShell/LookingGlass -->
|
||||||
<_summary>History for the looking glass dialog</_summary>
|
<summary>History for the looking glass dialog</summary>
|
||||||
</key>
|
</key>
|
||||||
<key name="always-show-log-out" type="b">
|
<key name="always-show-log-out" type="b">
|
||||||
<default>false</default>
|
<default>false</default>
|
||||||
<_summary>Always show the 'Log out' menu item in the user menu.</_summary>
|
<summary>Always show the 'Log out' menu item in the user menu.</summary>
|
||||||
<_description>
|
<description>
|
||||||
This key overrides the automatic hiding of the 'Log out'
|
This key overrides the automatic hiding of the 'Log out'
|
||||||
menu item in single-user, single-session situations.
|
menu item in single-user, single-session situations.
|
||||||
</_description>
|
</description>
|
||||||
</key>
|
</key>
|
||||||
<key name="remember-mount-password" type="b">
|
<key name="remember-mount-password" type="b">
|
||||||
<default>false</default>
|
<default>false</default>
|
||||||
<_summary>Whether to remember password for mounting encrypted or remote filesystems</_summary>
|
<summary>Whether to remember password for mounting encrypted or remote filesystems</summary>
|
||||||
<_description>
|
<description>
|
||||||
The shell will request a password when an encrypted device or a
|
The shell will request a password when an encrypted device or a
|
||||||
remote filesystem is mounted. If the password can be saved for
|
remote filesystem is mounted. If the password can be saved for
|
||||||
future use a 'Remember Password' checkbox will be present.
|
future use a 'Remember Password' checkbox will be present.
|
||||||
This key sets the default state of the checkbox.
|
This key sets the default state of the checkbox.
|
||||||
</_description>
|
</description>
|
||||||
</key>
|
</key>
|
||||||
<key name="had-bluetooth-devices-setup" type="b">
|
<key name="had-bluetooth-devices-setup" type="b">
|
||||||
<default>false</default>
|
<default>false</default>
|
||||||
<_summary>Whether the default Bluetooth adapter had set up devices associated to it</_summary>
|
<summary>Whether the default Bluetooth adapter had set up devices associated to it</summary>
|
||||||
<_description>
|
<description>
|
||||||
The shell will only show a Bluetooth menu item if a Bluetooth
|
The shell will only show a Bluetooth menu item if a Bluetooth
|
||||||
adapter is powered, or if there were devices set up associated
|
adapter is powered, or if there were devices set up associated
|
||||||
with the default adapter. This will be reset if the default
|
with the default adapter. This will be reset if the default
|
||||||
adapter is ever seen not to have devices associated to it.
|
adapter is ever seen not to have devices associated to it.
|
||||||
</_description>
|
</description>
|
||||||
</key>
|
</key>
|
||||||
<child name="calendar" schema="org.gnome.shell.calendar"/>
|
|
||||||
<child name="keybindings" schema="org.gnome.shell.keybindings"/>
|
<child name="keybindings" schema="org.gnome.shell.keybindings"/>
|
||||||
<child name="keyboard" schema="org.gnome.shell.keyboard"/>
|
<child name="keyboard" schema="org.gnome.shell.keyboard"/>
|
||||||
</schema>
|
</schema>
|
||||||
|
|
||||||
<schema id="org.gnome.shell.calendar" path="/org/gnome/shell/calendar/"
|
|
||||||
gettext-domain="@GETTEXT_PACKAGE@">
|
|
||||||
<key name="show-weekdate" type="b">
|
|
||||||
<default>false</default>
|
|
||||||
<_summary>Show the week date in the calendar</_summary>
|
|
||||||
<_description>
|
|
||||||
If true, display the ISO week date in the calendar.
|
|
||||||
</_description>
|
|
||||||
</key>
|
|
||||||
</schema>
|
|
||||||
|
|
||||||
<schema id="org.gnome.shell.keybindings" path="/org/gnome/shell/keybindings/"
|
<schema id="org.gnome.shell.keybindings" path="/org/gnome/shell/keybindings/"
|
||||||
gettext-domain="@GETTEXT_PACKAGE@">
|
gettext-domain="@GETTEXT_PACKAGE@">
|
||||||
<key name="open-application-menu" type="as">
|
<key name="open-application-menu" type="as">
|
||||||
<default>["<Super>F10"]</default>
|
<default>["<Super>F10"]</default>
|
||||||
<_summary>Keybinding to open the application menu</_summary>
|
<summary>Keybinding to open the application menu</summary>
|
||||||
<_description>
|
<description>
|
||||||
Keybinding to open the application menu.
|
Keybinding to open the application menu.
|
||||||
</_description>
|
</description>
|
||||||
</key>
|
</key>
|
||||||
<key name="toggle-application-view" type="as">
|
<key name="toggle-application-view" type="as">
|
||||||
<default>["<Super>a"]</default>
|
<default>["<Super>a"]</default>
|
||||||
<_summary>Keybinding to open the "Show Applications" view</_summary>
|
<summary>Keybinding to open the "Show Applications" view</summary>
|
||||||
<_description>
|
<description>
|
||||||
Keybinding to open the "Show Applications" view of the Activities
|
Keybinding to open the "Show Applications" view of the Activities
|
||||||
Overview.
|
Overview.
|
||||||
</_description>
|
</description>
|
||||||
</key>
|
</key>
|
||||||
<key name="toggle-overview" type="as">
|
<key name="toggle-overview" type="as">
|
||||||
<default>["<Super>s"]</default>
|
<default>["<Super>s"]</default>
|
||||||
<_summary>Keybinding to open the overview</_summary>
|
<summary>Keybinding to open the overview</summary>
|
||||||
<_description>
|
<description>
|
||||||
Keybinding to open the Activities Overview.
|
Keybinding to open the Activities Overview.
|
||||||
</_description>
|
</description>
|
||||||
</key>
|
</key>
|
||||||
<key name="toggle-message-tray" type="as">
|
<key name="toggle-message-tray" type="as">
|
||||||
<default>["<Super>v","<Super>m"]</default>
|
<default>["<Super>v","<Super>m"]</default>
|
||||||
<_summary>Keybinding to toggle the visibility of the notification list</_summary>
|
<summary>Keybinding to toggle the visibility of the notification list</summary>
|
||||||
<_description>
|
<description>
|
||||||
Keybinding to toggle the visibility of the notification list.
|
Keybinding to toggle the visibility of the notification list.
|
||||||
</_description>
|
</description>
|
||||||
</key>
|
</key>
|
||||||
<key name="focus-active-notification" type="as">
|
<key name="focus-active-notification" type="as">
|
||||||
<default>["<Super>n"]</default>
|
<default>["<Super>n"]</default>
|
||||||
<_summary>Keybinding to focus the active notification</_summary>
|
<summary>Keybinding to focus the active notification</summary>
|
||||||
<_description>
|
<description>
|
||||||
Keybinding to focus the active notification.
|
Keybinding to focus the active notification.
|
||||||
</_description>
|
</description>
|
||||||
</key>
|
</key>
|
||||||
<key name="pause-resume-tweens" type="as">
|
<key name="pause-resume-tweens" type="as">
|
||||||
<default>[]</default>
|
<default>[]</default>
|
||||||
<_summary>Keybinding that pauses and resumes all running tweens, for debugging purposes</_summary>
|
<summary>Keybinding that pauses and resumes all running tweens, for debugging purposes</summary>
|
||||||
<_description></_description>
|
<description></description>
|
||||||
</key>
|
</key>
|
||||||
</schema>
|
</schema>
|
||||||
|
|
||||||
@ -147,10 +135,10 @@
|
|||||||
gettext-domain="@GETTEXT_PACKAGE@">
|
gettext-domain="@GETTEXT_PACKAGE@">
|
||||||
<key name="keyboard-type" type="s">
|
<key name="keyboard-type" type="s">
|
||||||
<default>'touch'</default>
|
<default>'touch'</default>
|
||||||
<_summary>Which keyboard to use</_summary>
|
<summary>Which keyboard to use</summary>
|
||||||
<_description>
|
<description>
|
||||||
The type of keyboard to use.
|
The type of keyboard to use.
|
||||||
</_description>
|
</description>
|
||||||
</key>
|
</key>
|
||||||
</schema>
|
</schema>
|
||||||
|
|
||||||
@ -159,11 +147,11 @@
|
|||||||
gettext-domain="@GETTEXT_PACKAGE@">
|
gettext-domain="@GETTEXT_PACKAGE@">
|
||||||
<key type="b" name="current-workspace-only">
|
<key type="b" name="current-workspace-only">
|
||||||
<default>false</default>
|
<default>false</default>
|
||||||
<_summary>Limit switcher to current workspace.</_summary>
|
<summary>Limit switcher to current workspace.</summary>
|
||||||
<_description>
|
<description>
|
||||||
If true, only applications that have windows on the current workspace are shown in the switcher.
|
If true, only applications that have windows on the current workspace are shown in the switcher.
|
||||||
Otherwise, all applications are included.
|
Otherwise, all applications are included.
|
||||||
</_description>
|
</description>
|
||||||
</key>
|
</key>
|
||||||
</schema>
|
</schema>
|
||||||
|
|
||||||
@ -177,20 +165,20 @@
|
|||||||
gettext-domain="@GETTEXT_PACKAGE@">
|
gettext-domain="@GETTEXT_PACKAGE@">
|
||||||
<key name="app-icon-mode" enum="org.gnome.shell.window-switcher.AppIconMode">
|
<key name="app-icon-mode" enum="org.gnome.shell.window-switcher.AppIconMode">
|
||||||
<default>'both'</default>
|
<default>'both'</default>
|
||||||
<_summary>The application icon mode.</_summary>
|
<summary>The application icon mode.</summary>
|
||||||
<_description>
|
<description>
|
||||||
Configures how the windows are shown in the switcher. Valid possibilities
|
Configures how the windows are shown in the switcher. Valid possibilities
|
||||||
are 'thumbnail-only' (shows a thumbnail of the window), 'app-icon-only'
|
are 'thumbnail-only' (shows a thumbnail of the window), 'app-icon-only'
|
||||||
(shows only the application icon) or 'both'.
|
(shows only the application icon) or 'both'.
|
||||||
</_description>
|
</description>
|
||||||
</key>
|
</key>
|
||||||
<key type="b" name="current-workspace-only">
|
<key type="b" name="current-workspace-only">
|
||||||
<default>true</default>
|
<default>true</default>
|
||||||
<_summary>Limit switcher to current workspace.</_summary>
|
<summary>Limit switcher to current workspace.</summary>
|
||||||
<_description>
|
<description>
|
||||||
If true, only windows from the current workspace are shown in the switcher.
|
If true, only windows from the current workspace are shown in the switcher.
|
||||||
Otherwise, all windows are included.
|
Otherwise, all windows are included.
|
||||||
</_description>
|
</description>
|
||||||
</key>
|
</key>
|
||||||
</schema>
|
</schema>
|
||||||
|
|
||||||
@ -198,43 +186,43 @@
|
|||||||
gettext-domain="@GETTEXT_PACKAGE@">
|
gettext-domain="@GETTEXT_PACKAGE@">
|
||||||
<key name="attach-modal-dialogs" type="b">
|
<key name="attach-modal-dialogs" type="b">
|
||||||
<default>true</default>
|
<default>true</default>
|
||||||
<_summary>Attach modal dialog to the parent window</_summary>
|
<summary>Attach modal dialog to the parent window</summary>
|
||||||
<_description>
|
<description>
|
||||||
This key overrides the key in org.gnome.mutter when running
|
This key overrides the key in org.gnome.mutter when running
|
||||||
GNOME Shell.
|
GNOME Shell.
|
||||||
</_description>
|
</description>
|
||||||
</key>
|
</key>
|
||||||
|
|
||||||
<key name="edge-tiling" type="b">
|
<key name="edge-tiling" type="b">
|
||||||
<default>true</default>
|
<default>true</default>
|
||||||
<_summary>Enable edge tiling when dropping windows on screen edges</_summary>
|
<summary>Enable edge tiling when dropping windows on screen edges</summary>
|
||||||
<_description>
|
<description>
|
||||||
This key overrides the key in org.gnome.mutter when running GNOME Shell.
|
This key overrides the key in org.gnome.mutter when running GNOME Shell.
|
||||||
</_description>
|
</description>
|
||||||
</key>
|
</key>
|
||||||
|
|
||||||
<key name="dynamic-workspaces" type="b">
|
<key name="dynamic-workspaces" type="b">
|
||||||
<default>true</default>
|
<default>true</default>
|
||||||
<_summary>Workspaces are managed dynamically</_summary>
|
<summary>Workspaces are managed dynamically</summary>
|
||||||
<_description>
|
<description>
|
||||||
This key overrides the key in org.gnome.mutter when running GNOME Shell.
|
This key overrides the key in org.gnome.mutter when running GNOME Shell.
|
||||||
</_description>
|
</description>
|
||||||
</key>
|
</key>
|
||||||
|
|
||||||
<key name="workspaces-only-on-primary" type="b">
|
<key name="workspaces-only-on-primary" type="b">
|
||||||
<default>true</default>
|
<default>true</default>
|
||||||
<_summary>Workspaces only on primary monitor</_summary>
|
<summary>Workspaces only on primary monitor</summary>
|
||||||
<_description>
|
<description>
|
||||||
This key overrides the key in org.gnome.mutter when running GNOME Shell.
|
This key overrides the key in org.gnome.mutter when running GNOME Shell.
|
||||||
</_description>
|
</description>
|
||||||
</key>
|
</key>
|
||||||
|
|
||||||
<key name="focus-change-on-pointer-rest" type="b">
|
<key name="focus-change-on-pointer-rest" type="b">
|
||||||
<default>true</default>
|
<default>true</default>
|
||||||
<_summary>Delay focus changes in mouse mode until the pointer stops moving</_summary>
|
<summary>Delay focus changes in mouse mode until the pointer stops moving</summary>
|
||||||
<_description>
|
<description>
|
||||||
This key overrides the key in org.gnome.mutter when running GNOME Shell.
|
This key overrides the key in org.gnome.mutter when running GNOME Shell.
|
||||||
</_description>
|
</description>
|
||||||
</key>
|
</key>
|
||||||
</schema>
|
</schema>
|
||||||
</schemalist>
|
</schemalist>
|
@ -427,6 +427,29 @@ StScrollBar {
|
|||||||
.audio-selection-device-icon {
|
.audio-selection-device-icon {
|
||||||
icon-size: 64px; }
|
icon-size: 64px; }
|
||||||
|
|
||||||
|
/* Access Dialog */
|
||||||
|
.access-dialog {
|
||||||
|
spacing: 30px; }
|
||||||
|
|
||||||
|
.access-dialog-main-layout {
|
||||||
|
padding: 12px 20px 0;
|
||||||
|
spacing: 12px; }
|
||||||
|
|
||||||
|
.access-dialog-content {
|
||||||
|
max-width: 28em;
|
||||||
|
spacing: 20px; }
|
||||||
|
|
||||||
|
.access-dialog-icon {
|
||||||
|
min-width: 48px;
|
||||||
|
icon-size: 48px; }
|
||||||
|
|
||||||
|
.access-dialog-title {
|
||||||
|
font-weight: bold; }
|
||||||
|
|
||||||
|
.access-dialog-subtitle {
|
||||||
|
color: #999999;
|
||||||
|
font-weight: bold; }
|
||||||
|
|
||||||
/* Geolocation Dialog */
|
/* Geolocation Dialog */
|
||||||
.geolocation-dialog {
|
.geolocation-dialog {
|
||||||
spacing: 30px; }
|
spacing: 30px; }
|
||||||
@ -535,6 +558,9 @@ StScrollBar {
|
|||||||
border-radius: 0.3em;
|
border-radius: 0.3em;
|
||||||
background-color: rgba(11, 12, 13, 0.5);
|
background-color: rgba(11, 12, 13, 0.5);
|
||||||
color: #eeeeec; }
|
color: #eeeeec; }
|
||||||
|
.osd-window .level-bar {
|
||||||
|
background-color: #eeeeec;
|
||||||
|
border-radius: 0.3em; }
|
||||||
|
|
||||||
/* App Switcher */
|
/* App Switcher */
|
||||||
.switcher-popup {
|
.switcher-popup {
|
||||||
@ -578,6 +604,10 @@ StScrollBar {
|
|||||||
width: 96px;
|
width: 96px;
|
||||||
height: 96px; }
|
height: 96px; }
|
||||||
|
|
||||||
|
/* Window Cycler */
|
||||||
|
.cycler-highlight {
|
||||||
|
border: 5px solid #215d9c; }
|
||||||
|
|
||||||
/* Workspace Switcher */
|
/* Workspace Switcher */
|
||||||
.workspace-switcher-group {
|
.workspace-switcher-group {
|
||||||
padding: 12px; }
|
padding: 12px; }
|
||||||
@ -766,7 +796,7 @@ StScrollBar {
|
|||||||
border-radius: 1.4em; }
|
border-radius: 1.4em; }
|
||||||
.calendar-day-base:hover, .calendar-day-base:focus {
|
.calendar-day-base:hover, .calendar-day-base:focus {
|
||||||
background-color: #0d0d0d; }
|
background-color: #0d0d0d; }
|
||||||
.calendar-day-base:active {
|
.calendar-day-base:active, .calendar-day-base:selected {
|
||||||
color: white;
|
color: white;
|
||||||
background-color: #215d9c;
|
background-color: #215d9c;
|
||||||
border-color: transparent; }
|
border-color: transparent; }
|
||||||
|
Submodule data/theme/gnome-shell-sass updated: 6ccc180811...b2190083c2
@ -427,6 +427,29 @@ StScrollBar {
|
|||||||
.audio-selection-device-icon {
|
.audio-selection-device-icon {
|
||||||
icon-size: 64px; }
|
icon-size: 64px; }
|
||||||
|
|
||||||
|
/* Access Dialog */
|
||||||
|
.access-dialog {
|
||||||
|
spacing: 30px; }
|
||||||
|
|
||||||
|
.access-dialog-main-layout {
|
||||||
|
padding: 12px 20px 0;
|
||||||
|
spacing: 12px; }
|
||||||
|
|
||||||
|
.access-dialog-content {
|
||||||
|
max-width: 28em;
|
||||||
|
spacing: 20px; }
|
||||||
|
|
||||||
|
.access-dialog-icon {
|
||||||
|
min-width: 48px;
|
||||||
|
icon-size: 48px; }
|
||||||
|
|
||||||
|
.access-dialog-title {
|
||||||
|
font-weight: bold; }
|
||||||
|
|
||||||
|
.access-dialog-subtitle {
|
||||||
|
color: #8e8e80;
|
||||||
|
font-weight: bold; }
|
||||||
|
|
||||||
/* Geolocation Dialog */
|
/* Geolocation Dialog */
|
||||||
.geolocation-dialog {
|
.geolocation-dialog {
|
||||||
spacing: 30px; }
|
spacing: 30px; }
|
||||||
@ -535,6 +558,9 @@ StScrollBar {
|
|||||||
border-radius: 0.3em;
|
border-radius: 0.3em;
|
||||||
background-color: rgba(11, 12, 13, 0.5);
|
background-color: rgba(11, 12, 13, 0.5);
|
||||||
color: #eeeeec; }
|
color: #eeeeec; }
|
||||||
|
.osd-window .level-bar {
|
||||||
|
background-color: #eeeeec;
|
||||||
|
border-radius: 0.3em; }
|
||||||
|
|
||||||
/* App Switcher */
|
/* App Switcher */
|
||||||
.switcher-popup {
|
.switcher-popup {
|
||||||
@ -578,6 +604,10 @@ StScrollBar {
|
|||||||
width: 96px;
|
width: 96px;
|
||||||
height: 96px; }
|
height: 96px; }
|
||||||
|
|
||||||
|
/* Window Cycler */
|
||||||
|
.cycler-highlight {
|
||||||
|
border: 5px solid #215d9c; }
|
||||||
|
|
||||||
/* Workspace Switcher */
|
/* Workspace Switcher */
|
||||||
.workspace-switcher-group {
|
.workspace-switcher-group {
|
||||||
padding: 12px; }
|
padding: 12px; }
|
||||||
@ -766,7 +796,7 @@ StScrollBar {
|
|||||||
border-radius: 1.4em; }
|
border-radius: 1.4em; }
|
||||||
.calendar-day-base:hover, .calendar-day-base:focus {
|
.calendar-day-base:hover, .calendar-day-base:focus {
|
||||||
background-color: #454c4c; }
|
background-color: #454c4c; }
|
||||||
.calendar-day-base:active {
|
.calendar-day-base:active, .calendar-day-base:selected {
|
||||||
color: white;
|
color: white;
|
||||||
background-color: #215d9c;
|
background-color: #215d9c;
|
||||||
border-color: transparent; }
|
border-color: transparent; }
|
||||||
|
@ -113,7 +113,7 @@ expand_content_files=
|
|||||||
# e.g. GTKDOC_CFLAGS=-I$(top_srcdir) -I$(top_builddir) $(GTK_DEBUG_FLAGS)
|
# e.g. GTKDOC_CFLAGS=-I$(top_srcdir) -I$(top_builddir) $(GTK_DEBUG_FLAGS)
|
||||||
# e.g. GTKDOC_LIBS=$(top_builddir)/gtk/$(gtktargetlib)
|
# e.g. GTKDOC_LIBS=$(top_builddir)/gtk/$(gtktargetlib)
|
||||||
GTKDOC_CFLAGS=$(GNOME_SHELL_CFLAGS)
|
GTKDOC_CFLAGS=$(GNOME_SHELL_CFLAGS)
|
||||||
GTKDOC_LIBS=$(GNOME_SHELL_LIBS) $(top_builddir)/src/libgnome-shell-menu.la $(top_builddir)/src/libgnome-shell-base.la $(top_builddir)/src/libgnome-shell.la
|
GTKDOC_LIBS=$(GNOME_SHELL_LIBS) $(top_builddir)/src/libgnome-shell-menu.la $(top_builddir)/src/libgnome-shell-base.la $(top_builddir)/src/libgnome-shell.la -rpath $(MUTTER_TYPELIB_DIR)
|
||||||
|
|
||||||
# This includes the standard gtk-doc make rules, copied by gtkdocize.
|
# This includes the standard gtk-doc make rules, copied by gtkdocize.
|
||||||
include $(top_srcdir)/gtk-doc.make
|
include $(top_srcdir)/gtk-doc.make
|
||||||
|
@ -78,7 +78,7 @@ expand_content_files=
|
|||||||
# e.g. GTKDOC_CFLAGS=-I$(top_srcdir) -I$(top_builddir) $(GTK_DEBUG_FLAGS)
|
# e.g. GTKDOC_CFLAGS=-I$(top_srcdir) -I$(top_builddir) $(GTK_DEBUG_FLAGS)
|
||||||
# e.g. GTKDOC_LIBS=$(top_builddir)/gtk/$(gtktargetlib)
|
# e.g. GTKDOC_LIBS=$(top_builddir)/gtk/$(gtktargetlib)
|
||||||
GTKDOC_CFLAGS=
|
GTKDOC_CFLAGS=
|
||||||
GTKDOC_LIBS=$(top_builddir)/src/libst-1.0.la
|
GTKDOC_LIBS=$(top_builddir)/src/libst-1.0.la -rpath $(MUTTER_TYPELIB_DIR)
|
||||||
|
|
||||||
# This includes the standard gtk-doc make rules, copied by gtkdocize.
|
# This includes the standard gtk-doc make rules, copied by gtkdocize.
|
||||||
include $(top_srcdir)/gtk-doc.make
|
include $(top_srcdir)/gtk-doc.make
|
||||||
|
@ -804,6 +804,11 @@ const LoginDialog = new Lang.Class({
|
|||||||
|
|
||||||
this._user = null;
|
this._user = null;
|
||||||
|
|
||||||
|
if (this._nextSignalId) {
|
||||||
|
this._authPrompt.disconnect(this._nextSignalId);
|
||||||
|
this._nextSignalId = 0;
|
||||||
|
}
|
||||||
|
|
||||||
if (beginRequest == AuthPrompt.BeginRequestType.PROVIDE_USERNAME) {
|
if (beginRequest == AuthPrompt.BeginRequestType.PROVIDE_USERNAME) {
|
||||||
if (!this._disableUserList)
|
if (!this._disableUserList)
|
||||||
this._showUserList();
|
this._showUserList();
|
||||||
|
@ -31,6 +31,7 @@
|
|||||||
|
|
||||||
<file>portalHelper/main.js</file>
|
<file>portalHelper/main.js</file>
|
||||||
|
|
||||||
|
<file>ui/accessDialog.js</file>
|
||||||
<file>ui/altTab.js</file>
|
<file>ui/altTab.js</file>
|
||||||
<file>ui/animation.js</file>
|
<file>ui/animation.js</file>
|
||||||
<file>ui/appDisplay.js</file>
|
<file>ui/appDisplay.js</file>
|
||||||
|
@ -40,6 +40,9 @@ const SystemdLoginSessionIface = '<node> \
|
|||||||
<signal name="Lock" /> \
|
<signal name="Lock" /> \
|
||||||
<signal name="Unlock" /> \
|
<signal name="Unlock" /> \
|
||||||
<property name="Active" type="b" access="read" /> \
|
<property name="Active" type="b" access="read" /> \
|
||||||
|
<method name="SetLockedHint"> \
|
||||||
|
<arg type="b" direction="in"/> \
|
||||||
|
</method> \
|
||||||
</interface> \
|
</interface> \
|
||||||
</node>';
|
</node>';
|
||||||
|
|
||||||
@ -131,10 +134,13 @@ const LoginManagerSystemd = new Lang.Class({
|
|||||||
|
|
||||||
canSuspend: function(asyncCallback) {
|
canSuspend: function(asyncCallback) {
|
||||||
this._proxy.CanSuspendRemote(function(result, error) {
|
this._proxy.CanSuspendRemote(function(result, error) {
|
||||||
if (error)
|
if (error) {
|
||||||
asyncCallback(false);
|
asyncCallback(false, false);
|
||||||
else
|
} else {
|
||||||
asyncCallback(result[0] != 'no' && result[0] != 'na');
|
let needsAuth = result[0] == 'challenge';
|
||||||
|
let canSuspend = needsAuth || result[0] == 'yes';
|
||||||
|
asyncCallback(canSuspend, needsAuth);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -187,7 +193,7 @@ const LoginManagerDummy = new Lang.Class({
|
|||||||
},
|
},
|
||||||
|
|
||||||
canSuspend: function(asyncCallback) {
|
canSuspend: function(asyncCallback) {
|
||||||
asyncCallback(false);
|
asyncCallback(false, false);
|
||||||
},
|
},
|
||||||
|
|
||||||
listSessions: function(asyncCallback) {
|
listSessions: function(asyncCallback) {
|
||||||
|
202
js/ui/accessDialog.js
Normal file
202
js/ui/accessDialog.js
Normal file
@ -0,0 +1,202 @@
|
|||||||
|
const Clutter = imports.gi.Clutter;
|
||||||
|
const Gio = imports.gi.Gio;
|
||||||
|
const GLib = imports.gi.GLib;
|
||||||
|
const Lang = imports.lang;
|
||||||
|
const Pango = imports.gi.Pango;
|
||||||
|
const Shell = imports.gi.Shell;
|
||||||
|
const St = imports.gi.St;
|
||||||
|
|
||||||
|
const CheckBox = imports.ui.checkBox;
|
||||||
|
const ModalDialog = imports.ui.modalDialog;
|
||||||
|
|
||||||
|
const RequestIface = '<node> \
|
||||||
|
<interface name="org.freedesktop.impl.portal.Request"> \
|
||||||
|
<method name="Close"/> \
|
||||||
|
</interface> \
|
||||||
|
</node>';
|
||||||
|
|
||||||
|
const AccessIface = '<node> \
|
||||||
|
<interface name="org.freedesktop.impl.portal.Access"> \
|
||||||
|
<method name="AccessDialog"> \
|
||||||
|
<arg type="o" name="handle" direction="in"/> \
|
||||||
|
<arg type="s" name="app_id" direction="in"/> \
|
||||||
|
<arg type="s" name="parent_window" direction="in"/> \
|
||||||
|
<arg type="s" name="title" direction="in"/> \
|
||||||
|
<arg type="s" name="subtitle" direction="in"/> \
|
||||||
|
<arg type="s" name="body" direction="in"/> \
|
||||||
|
<arg type="a{sv}" name="options" direction="in"/> \
|
||||||
|
<arg type="u" name="response" direction="out"/> \
|
||||||
|
<arg type="a{sv}" name="results" direction="out"/> \
|
||||||
|
</method> \
|
||||||
|
</interface> \
|
||||||
|
</node>';
|
||||||
|
|
||||||
|
const DialogResponse = {
|
||||||
|
OK: 0,
|
||||||
|
CANCEL: 1,
|
||||||
|
CLOSED: 2
|
||||||
|
};
|
||||||
|
|
||||||
|
const AccessDialog = new Lang.Class({
|
||||||
|
Name: 'AccessDialog',
|
||||||
|
Extends: ModalDialog.ModalDialog,
|
||||||
|
|
||||||
|
_init: function(invocation, handle, title, subtitle, body, options) {
|
||||||
|
this.parent({ styleClass: 'access-dialog' });
|
||||||
|
|
||||||
|
this._invocation = invocation;
|
||||||
|
this._handle = handle;
|
||||||
|
|
||||||
|
this._requestExported = false;
|
||||||
|
this._request = Gio.DBusExportedObject.wrapJSObject(RequestIface, this);
|
||||||
|
|
||||||
|
for (let option in options)
|
||||||
|
options[option] = options[option].deep_unpack();
|
||||||
|
|
||||||
|
this._buildLayout(title, subtitle, body, options);
|
||||||
|
},
|
||||||
|
|
||||||
|
_buildLayout: function(title, subtitle, body, options) {
|
||||||
|
// No support for non-modal system dialogs, so ignore the option
|
||||||
|
//let modal = options['modal'] || true;
|
||||||
|
let denyLabel = options['deny_label'] || _("Deny Access");
|
||||||
|
let grantLabel = options['grant_label'] || _("Grant Access");
|
||||||
|
let iconName = options['icon'] || null;
|
||||||
|
let choices = options['choices'] || [];
|
||||||
|
|
||||||
|
let mainContentBox = new St.BoxLayout();
|
||||||
|
mainContentBox.style_class = 'access-dialog-main-layout';
|
||||||
|
this.contentLayout.add_actor(mainContentBox);
|
||||||
|
|
||||||
|
let icon = new St.Icon({ style_class: 'access-dialog-icon',
|
||||||
|
icon_name: iconName,
|
||||||
|
y_align: Clutter.ActorAlign.START });
|
||||||
|
mainContentBox.add_actor(icon);
|
||||||
|
|
||||||
|
let messageBox = new St.BoxLayout({ vertical: true });
|
||||||
|
messageBox.style_class = 'access-dialog-content',
|
||||||
|
mainContentBox.add_actor(messageBox);
|
||||||
|
|
||||||
|
let label;
|
||||||
|
label = new St.Label({ style_class: 'access-dialog-title headline',
|
||||||
|
text: title });
|
||||||
|
messageBox.add_actor(label);
|
||||||
|
|
||||||
|
label = new St.Label({ style_class: 'access-dialog-subtitle',
|
||||||
|
text: subtitle });
|
||||||
|
label.clutter_text.ellipsize = Pango.EllipsizeMode.NONE;
|
||||||
|
label.clutter_text.line_wrap = true;
|
||||||
|
messageBox.add_actor(label);
|
||||||
|
|
||||||
|
this._choices = new Map();
|
||||||
|
|
||||||
|
for (let i = 0; i < choices.length; i++) {
|
||||||
|
let [id, name, opts, selected] = choices[i];
|
||||||
|
if (opts.length > 0)
|
||||||
|
continue; // radio buttons, not implemented
|
||||||
|
|
||||||
|
let check = new CheckBox.CheckBox();
|
||||||
|
check.getLabelActor().text = name;
|
||||||
|
check.actor.checked = selected == "true";
|
||||||
|
messageBox.add_actor(check.actor);
|
||||||
|
|
||||||
|
this._choices.set(id, check);
|
||||||
|
}
|
||||||
|
|
||||||
|
label = new St.Label({ text: body });
|
||||||
|
label.clutter_text.ellipsize = Pango.EllipsizeMode.NONE;
|
||||||
|
label.clutter_text.line_wrap = true;
|
||||||
|
messageBox.add_actor(label);
|
||||||
|
|
||||||
|
this.addButton({ label: denyLabel,
|
||||||
|
action: () => {
|
||||||
|
this._sendResponse(DialogResponse.CANCEL);
|
||||||
|
},
|
||||||
|
key: Clutter.KEY_Escape });
|
||||||
|
this.addButton({ label: grantLabel,
|
||||||
|
action: () => {
|
||||||
|
this._sendResponse(DialogResponse.OK);
|
||||||
|
}});
|
||||||
|
},
|
||||||
|
|
||||||
|
open: function() {
|
||||||
|
this.parent();
|
||||||
|
|
||||||
|
let connection = this._invocation.get_connection();
|
||||||
|
this._requestExported = this._request.export(connection, this._handle);
|
||||||
|
},
|
||||||
|
|
||||||
|
CloseAsync: function(invocation, params) {
|
||||||
|
if (this._invocation.get_sender() != invocation.get_sender()) {
|
||||||
|
invocation.return_error_literal(Gio.DBusError,
|
||||||
|
Gio.DBusError.ACCESS_DENIED,
|
||||||
|
'');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
this._sendResponse(DialogResponse.CLOSED);
|
||||||
|
},
|
||||||
|
|
||||||
|
_sendResponse: function(response) {
|
||||||
|
if (this._requestExported)
|
||||||
|
this._request.unexport();
|
||||||
|
this._requestExported = false;
|
||||||
|
|
||||||
|
let results = {};
|
||||||
|
if (response == DialogResponse.OK) {
|
||||||
|
for (let [id, check] of this._choices) {
|
||||||
|
let checked = check.actor.checked ? 'true' : 'false';
|
||||||
|
results[id] = new GLib.Variant('s', checked);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Delay actual response until the end of the close animation (if any)
|
||||||
|
this.connect('closed', () => {
|
||||||
|
this._invocation.return_value(new GLib.Variant('(ua{sv})',
|
||||||
|
[response, results]));
|
||||||
|
});
|
||||||
|
this.close();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
const AccessDialogDBus = new Lang.Class({
|
||||||
|
Name: 'AccessDialogDBus',
|
||||||
|
|
||||||
|
_init: function() {
|
||||||
|
this._accessDialog = null;
|
||||||
|
|
||||||
|
this._windowTracker = Shell.WindowTracker.get_default();
|
||||||
|
|
||||||
|
this._dbusImpl = Gio.DBusExportedObject.wrapJSObject(AccessIface, this);
|
||||||
|
this._dbusImpl.export(Gio.DBus.session, '/org/freedesktop/portal/desktop');
|
||||||
|
|
||||||
|
Gio.DBus.session.own_name('org.freedesktop.impl.portal.desktop.gnome', Gio.BusNameOwnerFlags.REPLACE, null, null);
|
||||||
|
},
|
||||||
|
|
||||||
|
AccessDialogAsync: function(params, invocation) {
|
||||||
|
if (this._accessDialog) {
|
||||||
|
invocation.return_error_literal(Gio.DBusError,
|
||||||
|
Gio.DBusError.LIMITS_EXCEEDED,
|
||||||
|
'Already showing a system access dialog');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
let [handle, appId, parentWindow, title, subtitle, body, options] = params;
|
||||||
|
// We probably want to use parentWindow and global.display.focus_window
|
||||||
|
// for this check in the future
|
||||||
|
if (appId && appId + '.desktop' != this._windowTracker.focus_app.id) {
|
||||||
|
invocation.return_error_literal(Gio.DBusError,
|
||||||
|
Gio.DBusError.ACCESS_DENIED,
|
||||||
|
'Only the focused app is allowed to show a system access dialog');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
let dialog = new AccessDialog(invocation, handle, title,
|
||||||
|
subtitle, body, options);
|
||||||
|
dialog.open();
|
||||||
|
|
||||||
|
dialog.connect('closed', () => { this._accessDialog = null; });
|
||||||
|
|
||||||
|
this._accessDialog = dialog;
|
||||||
|
}
|
||||||
|
});
|
150
js/ui/altTab.js
150
js/ui/altTab.js
@ -354,6 +354,130 @@ const AppSwitcherPopup = new Lang.Class({
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
const CyclerHighlight = new Lang.Class({
|
||||||
|
Name: 'CyclerHighlight',
|
||||||
|
|
||||||
|
_init: function() {
|
||||||
|
this._window = null;
|
||||||
|
|
||||||
|
this.actor = new St.Widget({ layout_manager: new Clutter.BinLayout() });
|
||||||
|
|
||||||
|
this._clone = new Clutter.Clone();
|
||||||
|
this.actor.add_actor(this._clone);
|
||||||
|
|
||||||
|
this._highlight = new St.Widget({ style_class: 'cycler-highlight' });
|
||||||
|
this.actor.add_actor(this._highlight);
|
||||||
|
|
||||||
|
let coordinate = Clutter.BindCoordinate.ALL;
|
||||||
|
let constraint = new Clutter.BindConstraint({ coordinate: coordinate });
|
||||||
|
this._clone.bind_property('source', constraint, 'source', 0);
|
||||||
|
|
||||||
|
this.actor.add_constraint(constraint);
|
||||||
|
|
||||||
|
this.actor.connect('notify::allocation',
|
||||||
|
Lang.bind(this, this._onAllocationChanged));
|
||||||
|
this.actor.connect('destroy', Lang.bind(this, this._onDestroy));
|
||||||
|
},
|
||||||
|
|
||||||
|
set window(w) {
|
||||||
|
if (this._window == w)
|
||||||
|
return;
|
||||||
|
|
||||||
|
this._window = w;
|
||||||
|
|
||||||
|
if (this._clone.source)
|
||||||
|
this._clone.source.show();
|
||||||
|
|
||||||
|
let windowActor = this._window ? this._window.get_compositor_private()
|
||||||
|
: null;
|
||||||
|
|
||||||
|
if (windowActor)
|
||||||
|
windowActor.hide();
|
||||||
|
|
||||||
|
this._clone.source = windowActor;
|
||||||
|
},
|
||||||
|
|
||||||
|
_onAllocationChanged: function() {
|
||||||
|
if (!this._window) {
|
||||||
|
this._highlight.set_size(0, 0);
|
||||||
|
this._highlight.hide();
|
||||||
|
} else {
|
||||||
|
let [x, y] = this.actor.allocation.get_origin();
|
||||||
|
let rect = this._window.get_frame_rect();
|
||||||
|
this._highlight.set_size(rect.width, rect.height);
|
||||||
|
this._highlight.set_position(rect.x - x, rect.y - y);
|
||||||
|
this._highlight.show();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
_onDestroy: function() {
|
||||||
|
this.window = null;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
const CyclerPopup = new Lang.Class({
|
||||||
|
Name: 'CyclerPopup',
|
||||||
|
Extends: SwitcherPopup.SwitcherPopup,
|
||||||
|
Abstract: true,
|
||||||
|
|
||||||
|
_init : function() {
|
||||||
|
this.parent();
|
||||||
|
|
||||||
|
this._items = this._getWindows();
|
||||||
|
|
||||||
|
if (this._items.length == 0)
|
||||||
|
return;
|
||||||
|
|
||||||
|
this._highlight = new CyclerHighlight();
|
||||||
|
global.window_group.add_actor(this._highlight.actor);
|
||||||
|
|
||||||
|
// We don't show an actual popup, so just provide what SwitcherPopup
|
||||||
|
// expects instead of inheriting from SwitcherList
|
||||||
|
this._switcherList = { actor: new St.Widget(),
|
||||||
|
highlight: Lang.bind(this, this._highlightItem),
|
||||||
|
connect: function() {} };
|
||||||
|
},
|
||||||
|
|
||||||
|
_highlightItem: function(index, justOutline) {
|
||||||
|
this._highlight.window = this._items[index];
|
||||||
|
global.window_group.set_child_above_sibling(this._highlight.actor, null);
|
||||||
|
},
|
||||||
|
|
||||||
|
_finish: function() {
|
||||||
|
Main.activateWindow(this._items[this._selectedIndex]);
|
||||||
|
|
||||||
|
this.parent();
|
||||||
|
},
|
||||||
|
|
||||||
|
_onDestroy: function() {
|
||||||
|
this._highlight.actor.destroy();
|
||||||
|
|
||||||
|
this.parent();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
const GroupCyclerPopup = new Lang.Class({
|
||||||
|
Name: 'GroupCyclerPopup',
|
||||||
|
Extends: CyclerPopup,
|
||||||
|
|
||||||
|
_getWindows: function() {
|
||||||
|
let app = Shell.WindowTracker.get_default().focus_app;
|
||||||
|
return app ? app.get_windows() : [];
|
||||||
|
},
|
||||||
|
|
||||||
|
_keyPressHandler: function(keysym, action) {
|
||||||
|
if (action == Meta.KeyBindingAction.CYCLE_GROUP)
|
||||||
|
this._select(this._next());
|
||||||
|
else if (action == Meta.KeyBindingAction.CYCLE_GROUP_BACKWARD)
|
||||||
|
this._select(this._previous());
|
||||||
|
else
|
||||||
|
return Clutter.EVENT_PROPAGATE;
|
||||||
|
|
||||||
|
return Clutter.EVENT_STOP;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
const WindowSwitcherPopup = new Lang.Class({
|
const WindowSwitcherPopup = new Lang.Class({
|
||||||
Name: 'WindowSwitcherPopup',
|
Name: 'WindowSwitcherPopup',
|
||||||
Extends: SwitcherPopup.SwitcherPopup,
|
Extends: SwitcherPopup.SwitcherPopup,
|
||||||
@ -401,6 +525,32 @@ const WindowSwitcherPopup = new Lang.Class({
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
const WindowCyclerPopup = new Lang.Class({
|
||||||
|
Name: 'WindowCyclerPopup',
|
||||||
|
Extends: CyclerPopup,
|
||||||
|
|
||||||
|
_init: function() {
|
||||||
|
this._settings = new Gio.Settings({ schema_id: 'org.gnome.shell.window-switcher' });
|
||||||
|
this.parent();
|
||||||
|
},
|
||||||
|
|
||||||
|
_getWindows: function() {
|
||||||
|
let workspace = this._settings.get_boolean('current-workspace-only') ? global.screen.get_active_workspace() : null;
|
||||||
|
return global.display.get_tab_list(Meta.TabList.NORMAL, workspace);
|
||||||
|
},
|
||||||
|
|
||||||
|
_keyPressHandler: function(keysym, action) {
|
||||||
|
if (action == Meta.KeyBindingAction.CYCLE_WINDOWS)
|
||||||
|
this._select(this._next());
|
||||||
|
else if (action == Meta.KeyBindingAction.CYCLE_WINDOWS_BACKWARD)
|
||||||
|
this._select(this._previous());
|
||||||
|
else
|
||||||
|
return Clutter.EVENT_PROPAGATE;
|
||||||
|
|
||||||
|
return Clutter.EVENT_STOP;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
const AppIcon = new Lang.Class({
|
const AppIcon = new Lang.Class({
|
||||||
Name: 'AppIcon',
|
Name: 'AppIcon',
|
||||||
|
|
||||||
|
@ -1814,7 +1814,7 @@ const AppIconMenu = new Lang.Class({
|
|||||||
if (!source.actor.mapped)
|
if (!source.actor.mapped)
|
||||||
this.close();
|
this.close();
|
||||||
}));
|
}));
|
||||||
source.actor.connect('destroy', Lang.bind(this, function () { this.actor.destroy(); }));
|
source.actor.connect('destroy', Lang.bind(this, this.destroy));
|
||||||
|
|
||||||
Main.uiGroup.add_actor(this.actor);
|
Main.uiGroup.add_actor(this.actor);
|
||||||
},
|
},
|
||||||
|
@ -696,6 +696,7 @@ const BackgroundManager = new Lang.Class({
|
|||||||
time: FADE_ANIMATION_TIME,
|
time: FADE_ANIMATION_TIME,
|
||||||
transition: 'easeOutQuad',
|
transition: 'easeOutQuad',
|
||||||
onComplete: function() {
|
onComplete: function() {
|
||||||
|
oldBackgroundActor.background.run_dispose();
|
||||||
oldBackgroundActor.destroy();
|
oldBackgroundActor.destroy();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -120,6 +120,9 @@ const EmptyEventSource = new Lang.Class({
|
|||||||
destroy: function() {
|
destroy: function() {
|
||||||
},
|
},
|
||||||
|
|
||||||
|
ignoreEvent: function(event) {
|
||||||
|
},
|
||||||
|
|
||||||
requestRange: function(begin, end) {
|
requestRange: function(begin, end) {
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -184,6 +187,15 @@ const DBusEventSource = new Lang.Class({
|
|||||||
this.isLoading = false;
|
this.isLoading = false;
|
||||||
this.isDummy = false;
|
this.isDummy = false;
|
||||||
|
|
||||||
|
this._ignoredEvents = new Map();
|
||||||
|
|
||||||
|
let savedState = global.get_persistent_state('as', 'ignored_events');
|
||||||
|
if (savedState)
|
||||||
|
savedState.deep_unpack().forEach(Lang.bind(this,
|
||||||
|
function(eventId) {
|
||||||
|
this._ignoredEvents.set(eventId, true);
|
||||||
|
}));
|
||||||
|
|
||||||
this._initialized = false;
|
this._initialized = false;
|
||||||
this._dbusProxy = new CalendarServer();
|
this._dbusProxy = new CalendarServer();
|
||||||
this._dbusProxy.init_async(GLib.PRIORITY_DEFAULT, null, Lang.bind(this, function(object, result) {
|
this._dbusProxy.init_async(GLib.PRIORITY_DEFAULT, null, Lang.bind(this, function(object, result) {
|
||||||
@ -298,6 +310,16 @@ const DBusEventSource = new Lang.Class({
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
ignoreEvent: function(event) {
|
||||||
|
if (this._ignoredEvents.get(event.id))
|
||||||
|
return;
|
||||||
|
|
||||||
|
this._ignoredEvents.set(event.id, true);
|
||||||
|
let savedState = new GLib.Variant('as', [...this._ignoredEvents.keys()]);
|
||||||
|
global.set_persistent_state('ignored_events', savedState);
|
||||||
|
this.emit('changed');
|
||||||
|
},
|
||||||
|
|
||||||
requestRange: function(begin, end) {
|
requestRange: function(begin, end) {
|
||||||
if (!(_datesEqual(begin, this._lastRequestBegin) && _datesEqual(end, this._lastRequestEnd))) {
|
if (!(_datesEqual(begin, this._lastRequestBegin) && _datesEqual(end, this._lastRequestEnd))) {
|
||||||
this.isLoading = true;
|
this.isLoading = true;
|
||||||
@ -313,6 +335,10 @@ const DBusEventSource = new Lang.Class({
|
|||||||
let result = [];
|
let result = [];
|
||||||
for(let n = 0; n < this._events.length; n++) {
|
for(let n = 0; n < this._events.length; n++) {
|
||||||
let event = this._events[n];
|
let event = this._events[n];
|
||||||
|
|
||||||
|
if (this._ignoredEvents.has(event.id))
|
||||||
|
continue;
|
||||||
|
|
||||||
if (_dateIntervalsOverlap (event.date, event.end, begin, end)) {
|
if (_dateIntervalsOverlap (event.date, event.end, begin, end)) {
|
||||||
result.push(event);
|
result.push(event);
|
||||||
}
|
}
|
||||||
@ -345,7 +371,7 @@ const Calendar = new Lang.Class({
|
|||||||
|
|
||||||
_init: function() {
|
_init: function() {
|
||||||
this._weekStart = Shell.util_get_week_start();
|
this._weekStart = Shell.util_get_week_start();
|
||||||
this._settings = new Gio.Settings({ schema_id: 'org.gnome.shell.calendar' });
|
this._settings = new Gio.Settings({ schema_id: 'org.gnome.desktop.calendar' });
|
||||||
|
|
||||||
this._settings.connect('changed::' + SHOW_WEEKDATE_KEY, Lang.bind(this, this._onSettingsChange));
|
this._settings.connect('changed::' + SHOW_WEEKDATE_KEY, Lang.bind(this, this._onSettingsChange));
|
||||||
this._useWeekdate = this._settings.get_boolean(SHOW_WEEKDATE_KEY);
|
this._useWeekdate = this._settings.get_boolean(SHOW_WEEKDATE_KEY);
|
||||||
@ -660,12 +686,12 @@ const Calendar = new Lang.Class({
|
|||||||
|
|
||||||
this._buttons.forEach(Lang.bind(this, function(button) {
|
this._buttons.forEach(Lang.bind(this, function(button) {
|
||||||
if (sameDay(button._date, this._selectedDate)) {
|
if (sameDay(button._date, this._selectedDate)) {
|
||||||
button.add_style_pseudo_class('active');
|
button.add_style_pseudo_class('selected');
|
||||||
if (this._shouldDateGrabFocus)
|
if (this._shouldDateGrabFocus)
|
||||||
button.grab_key_focus();
|
button.grab_key_focus();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
button.remove_style_pseudo_class('active');
|
button.remove_style_pseudo_class('selected');
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@ -785,15 +811,6 @@ const EventsSection = new Lang.Class({
|
|||||||
this._desktopSettings.connect('changed', Lang.bind(this, this._reloadEvents));
|
this._desktopSettings.connect('changed', Lang.bind(this, this._reloadEvents));
|
||||||
this._eventSource = new EmptyEventSource();
|
this._eventSource = new EmptyEventSource();
|
||||||
|
|
||||||
this._ignoredEvents = new Map();
|
|
||||||
|
|
||||||
let savedState = global.get_persistent_state('as', 'ignored_events');
|
|
||||||
if (savedState)
|
|
||||||
savedState.deep_unpack().forEach(Lang.bind(this,
|
|
||||||
function(eventId) {
|
|
||||||
this._ignoredEvents.set(eventId, true);
|
|
||||||
}));
|
|
||||||
|
|
||||||
this.parent('');
|
this.parent('');
|
||||||
|
|
||||||
Shell.AppSystem.get_default().connect('installed-changed',
|
Shell.AppSystem.get_default().connect('installed-changed',
|
||||||
@ -802,9 +819,7 @@ const EventsSection = new Lang.Class({
|
|||||||
},
|
},
|
||||||
|
|
||||||
_ignoreEvent: function(event) {
|
_ignoreEvent: function(event) {
|
||||||
this._ignoredEvents.set(event.id, true);
|
this._eventSource.ignoreEvent(event);
|
||||||
let savedState = new GLib.Variant('as', [...this._ignoredEvents.keys()]);
|
|
||||||
global.set_persistent_state('ignored_events', savedState);
|
|
||||||
},
|
},
|
||||||
|
|
||||||
setEventSource: function(eventSource) {
|
setEventSource: function(eventSource) {
|
||||||
@ -850,9 +865,6 @@ const EventsSection = new Lang.Class({
|
|||||||
for (let i = 0; i < events.length; i++) {
|
for (let i = 0; i < events.length; i++) {
|
||||||
let event = events[i];
|
let event = events[i];
|
||||||
|
|
||||||
if (this._ignoredEvents.has(event.id))
|
|
||||||
continue;
|
|
||||||
|
|
||||||
let message = new EventMessage(event, this._date);
|
let message = new EventMessage(event, this._date);
|
||||||
message.connect('close', Lang.bind(this, function() {
|
message.connect('close', Lang.bind(this, function() {
|
||||||
this._ignoreEvent(event);
|
this._ignoreEvent(event);
|
||||||
|
@ -796,10 +796,18 @@ const NetworkAgent = new Lang.Class({
|
|||||||
path = GLib.build_filenamev([Config.LIBEXECDIR, path]);
|
path = GLib.build_filenamev([Config.LIBEXECDIR, path]);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (GLib.file_test(path, GLib.FileTest.IS_EXECUTABLE))
|
if (GLib.file_test(path, GLib.FileTest.IS_EXECUTABLE)) {
|
||||||
this._vpnBinaries[service] = { fileName: path, externalUIMode: externalUIMode, supportsHints: hints };
|
this._vpnBinaries[service] = { fileName: path, externalUIMode: externalUIMode, supportsHints: hints };
|
||||||
else
|
try {
|
||||||
|
let aliases = keyfile.get_string_list('VPN Connection', 'aliases');
|
||||||
|
|
||||||
|
for (let alias of aliases) {
|
||||||
|
this._vpnBinaries[alias] = { fileName: path, externalUIMode: externalUIMode, supportsHints: hints };
|
||||||
|
}
|
||||||
|
} catch(e) { } // ignore errors if key does not exist
|
||||||
|
} else {
|
||||||
throw new Error('VPN plugin at %s is not executable'.format(path));
|
throw new Error('VPN plugin at %s is not executable'.format(path));
|
||||||
|
}
|
||||||
} catch(e) {
|
} catch(e) {
|
||||||
log('Error \'%s\' while processing VPN keyfile \'%s\''.
|
log('Error \'%s\' while processing VPN keyfile \'%s\''.
|
||||||
format(e.message, dir.get_child(name).get_path()));
|
format(e.message, dir.get_child(name).get_path()));
|
||||||
|
@ -475,6 +475,11 @@ const ChatSource = new Lang.Class({
|
|||||||
this._channel.close_async(function(channel, result) {
|
this._channel.close_async(function(channel, result) {
|
||||||
channel.close_finish(result);
|
channel.close_finish(result);
|
||||||
});
|
});
|
||||||
|
} else {
|
||||||
|
// Don't indicate any unread messages when the notification
|
||||||
|
// that represents them has been destroyed.
|
||||||
|
this._pendingMessages = [];
|
||||||
|
this.countUpdated();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Keep source alive while the channel is open
|
// Keep source alive while the channel is open
|
||||||
|
58
js/ui/dnd.js
58
js/ui/dnd.js
@ -571,19 +571,12 @@ const _Draggable = new Lang.Class({
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
this._animationInProgress = true;
|
this._animateDragEnd(eventTime,
|
||||||
// No target, so snap back
|
|
||||||
Tweener.addTween(this._dragActor,
|
|
||||||
{ x: snapBackX,
|
{ x: snapBackX,
|
||||||
y: snapBackY,
|
y: snapBackY,
|
||||||
scale_x: snapBackScale,
|
scale_x: snapBackScale,
|
||||||
scale_y: snapBackScale,
|
scale_y: snapBackScale,
|
||||||
opacity: this._dragOrigOpacity,
|
|
||||||
time: SNAP_BACK_ANIMATION_TIME,
|
time: SNAP_BACK_ANIMATION_TIME,
|
||||||
transition: 'easeOutQuad',
|
|
||||||
onComplete: this._onAnimationComplete,
|
|
||||||
onCompleteScope: this,
|
|
||||||
onCompleteParams: [this._dragActor, eventTime]
|
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -596,18 +589,44 @@ const _Draggable = new Lang.Class({
|
|||||||
this._dragActor.set_scale(restoreScale, restoreScale);
|
this._dragActor.set_scale(restoreScale, restoreScale);
|
||||||
this._dragActor.opacity = 0;
|
this._dragActor.opacity = 0;
|
||||||
|
|
||||||
|
this._animateDragEnd(eventTime,
|
||||||
|
{ time: REVERT_ANIMATION_TIME });
|
||||||
|
},
|
||||||
|
|
||||||
|
_animateDragEnd: function (eventTime, params) {
|
||||||
this._animationInProgress = true;
|
this._animationInProgress = true;
|
||||||
Tweener.addTween(this._dragActor,
|
|
||||||
{ opacity: this._dragOrigOpacity,
|
// finish animation if the actor gets destroyed
|
||||||
time: REVERT_ANIMATION_TIME,
|
// during it
|
||||||
transition: 'easeOutQuad',
|
this._dragActorDestroyId =
|
||||||
onComplete: this._onAnimationComplete,
|
this._dragActor.connect('destroy',
|
||||||
onCompleteScope: this,
|
Lang.bind(this, this._finishAnimation));
|
||||||
onCompleteParams: [this._dragActor, eventTime]
|
|
||||||
});
|
params['opacity'] = this._dragOrigOpacity;
|
||||||
|
params['transition'] = 'easeOutQuad';
|
||||||
|
params['onComplete'] = this._onAnimationComplete;
|
||||||
|
params['onCompleteScope'] = this;
|
||||||
|
params['onCompleteParams'] = [this._dragActor, eventTime];
|
||||||
|
|
||||||
|
// start the animation
|
||||||
|
Tweener.addTween(this._dragActor, params)
|
||||||
|
},
|
||||||
|
|
||||||
|
_finishAnimation : function () {
|
||||||
|
if (!this._animationInProgress)
|
||||||
|
return
|
||||||
|
|
||||||
|
this._animationInProgress = false;
|
||||||
|
if (!this._buttonDown)
|
||||||
|
this._dragComplete();
|
||||||
|
|
||||||
|
global.screen.set_cursor(Meta.Cursor.DEFAULT);
|
||||||
},
|
},
|
||||||
|
|
||||||
_onAnimationComplete : function (dragActor, eventTime) {
|
_onAnimationComplete : function (dragActor, eventTime) {
|
||||||
|
dragActor.disconnect(this._dragActorDestroyId);
|
||||||
|
this._dragActorDestroyId = 0;
|
||||||
|
|
||||||
if (this._dragOrigParent) {
|
if (this._dragOrigParent) {
|
||||||
Main.uiGroup.remove_child(this._dragActor);
|
Main.uiGroup.remove_child(this._dragActor);
|
||||||
this._dragOrigParent.add_actor(this._dragActor);
|
this._dragOrigParent.add_actor(this._dragActor);
|
||||||
@ -616,12 +635,9 @@ const _Draggable = new Lang.Class({
|
|||||||
} else {
|
} else {
|
||||||
dragActor.destroy();
|
dragActor.destroy();
|
||||||
}
|
}
|
||||||
global.screen.set_cursor(Meta.Cursor.DEFAULT);
|
|
||||||
this.emit('drag-end', eventTime, false);
|
|
||||||
|
|
||||||
this._animationInProgress = false;
|
this.emit('drag-end', eventTime, false);
|
||||||
if (!this._buttonDown)
|
this._finishAnimation();
|
||||||
this._dragComplete();
|
|
||||||
},
|
},
|
||||||
|
|
||||||
_dragComplete: function() {
|
_dragComplete: function() {
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
|
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
|
||||||
/*
|
/*
|
||||||
* Copyright 2010 Red Hat, Inc
|
* Copyright 2010-2016 Red Hat, Inc
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
@ -114,7 +114,7 @@ const restartDialogContent = {
|
|||||||
showOtherSessions: true,
|
showOtherSessions: true,
|
||||||
};
|
};
|
||||||
|
|
||||||
const restartInstallDialogContent = {
|
const restartUpdateDialogContent = {
|
||||||
|
|
||||||
subject: C_("title", "Restart & Install Updates"),
|
subject: C_("title", "Restart & Install Updates"),
|
||||||
description: function(seconds) {
|
description: function(seconds) {
|
||||||
@ -132,18 +132,38 @@ const restartInstallDialogContent = {
|
|||||||
showOtherSessions: true,
|
showOtherSessions: true,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const restartUpgradeDialogContent = {
|
||||||
|
|
||||||
|
subject: C_("title", "Restart & Install Upgrade"),
|
||||||
|
upgradeDescription: function(distroName, distroVersion) {
|
||||||
|
/* Translators: This is the text displayed for system upgrades in the
|
||||||
|
shut down dialog. First %s gets replaced with the distro name and
|
||||||
|
second %s with the distro version to upgrade to */
|
||||||
|
return _("%s %s will be installed after restart. Upgrade installation can take a long time: ensure that you have backed up and that the computer is plugged in.").format(distroName, distroVersion);
|
||||||
|
},
|
||||||
|
disableTimer: true,
|
||||||
|
showBatteryWarning: false,
|
||||||
|
confirmButtons: [{ signal: 'ConfirmedReboot',
|
||||||
|
label: C_("button", "Restart & Install") }],
|
||||||
|
iconName: 'view-refresh-symbolic',
|
||||||
|
iconStyleClass: 'end-session-dialog-shutdown-icon',
|
||||||
|
showOtherSessions: true,
|
||||||
|
};
|
||||||
|
|
||||||
const DialogType = {
|
const DialogType = {
|
||||||
LOGOUT: 0 /* GSM_SHELL_END_SESSION_DIALOG_TYPE_LOGOUT */,
|
LOGOUT: 0 /* GSM_SHELL_END_SESSION_DIALOG_TYPE_LOGOUT */,
|
||||||
SHUTDOWN: 1 /* GSM_SHELL_END_SESSION_DIALOG_TYPE_SHUTDOWN */,
|
SHUTDOWN: 1 /* GSM_SHELL_END_SESSION_DIALOG_TYPE_SHUTDOWN */,
|
||||||
RESTART: 2 /* GSM_SHELL_END_SESSION_DIALOG_TYPE_RESTART */,
|
RESTART: 2 /* GSM_SHELL_END_SESSION_DIALOG_TYPE_RESTART */,
|
||||||
UPDATE_RESTART: 3
|
UPDATE_RESTART: 3,
|
||||||
|
UPGRADE_RESTART: 4
|
||||||
};
|
};
|
||||||
|
|
||||||
const DialogContent = {
|
const DialogContent = {
|
||||||
0 /* DialogType.LOGOUT */: logoutDialogContent,
|
0 /* DialogType.LOGOUT */: logoutDialogContent,
|
||||||
1 /* DialogType.SHUTDOWN */: shutdownDialogContent,
|
1 /* DialogType.SHUTDOWN */: shutdownDialogContent,
|
||||||
2 /* DialogType.RESTART */: restartDialogContent,
|
2 /* DialogType.RESTART */: restartDialogContent,
|
||||||
3 /* DialogType.UPDATE_RESTART */: restartInstallDialogContent
|
3 /* DialogType.UPDATE_RESTART */: restartUpdateDialogContent,
|
||||||
|
4 /* DialogType.UPGRADE_RESTART */: restartUpgradeDialogContent
|
||||||
};
|
};
|
||||||
|
|
||||||
const MAX_USERS_IN_SESSION_DIALOG = 5;
|
const MAX_USERS_IN_SESSION_DIALOG = 5;
|
||||||
@ -163,7 +183,10 @@ const LogindSession = Gio.DBusProxy.makeProxyWrapper(LogindSessionIface);
|
|||||||
const PkOfflineIface = '<node> \
|
const PkOfflineIface = '<node> \
|
||||||
<interface name="org.freedesktop.PackageKit.Offline"> \
|
<interface name="org.freedesktop.PackageKit.Offline"> \
|
||||||
<property name="UpdatePrepared" type="b" access="read"/> \
|
<property name="UpdatePrepared" type="b" access="read"/> \
|
||||||
<property name="TriggerAction" type="s" access="read"/> \
|
<property name="UpdateTriggered" type="b" access="read"/> \
|
||||||
|
<property name="UpgradePrepared" type="b" access="read"/> \
|
||||||
|
<property name="UpgradeTriggered" type="b" access="read"/> \
|
||||||
|
<property name="PreparedUpgrade" type="a{sv}" access="read"/> \
|
||||||
<method name="Trigger"> \
|
<method name="Trigger"> \
|
||||||
<arg type="s" name="action" direction="in"/> \
|
<arg type="s" name="action" direction="in"/> \
|
||||||
</method> \
|
</method> \
|
||||||
@ -415,11 +438,19 @@ const EndSessionDialog = new Lang.Class({
|
|||||||
|
|
||||||
if (dialogContent.descriptionWithUser)
|
if (dialogContent.descriptionWithUser)
|
||||||
description = dialogContent.descriptionWithUser(realName, displayTime);
|
description = dialogContent.descriptionWithUser(realName, displayTime);
|
||||||
else
|
|
||||||
description = dialogContent.description(displayTime);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Use a different description when we are installing a system upgrade
|
||||||
|
if (dialogContent.upgradeDescription) {
|
||||||
|
let name = this._pkOfflineProxy.PreparedUpgrade['name'].deep_unpack();
|
||||||
|
let version = this._pkOfflineProxy.PreparedUpgrade['version'].deep_unpack();
|
||||||
|
|
||||||
|
if (name != null && version != null)
|
||||||
|
description = dialogContent.upgradeDescription(name, version);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Fall back to regular description
|
||||||
if (!description)
|
if (!description)
|
||||||
description = dialogContent.description(displayTime);
|
description = dialogContent.description(displayTime);
|
||||||
|
|
||||||
@ -698,9 +729,12 @@ const EndSessionDialog = new Lang.Class({
|
|||||||
this._totalSecondsToStayOpen = totalSecondsToStayOpen;
|
this._totalSecondsToStayOpen = totalSecondsToStayOpen;
|
||||||
this._type = type;
|
this._type = type;
|
||||||
|
|
||||||
if (this._type == DialogType.RESTART &&
|
if (this._type == DialogType.RESTART) {
|
||||||
this._pkOfflineProxy.TriggerAction == 'reboot')
|
if (this._pkOfflineProxy.UpdateTriggered)
|
||||||
this._type = DialogType.UPDATE_RESTART;
|
this._type = DialogType.UPDATE_RESTART;
|
||||||
|
else if (this._pkOfflineProxy.UpgradeTriggered)
|
||||||
|
this._type = DialogType.UPGRADE_RESTART;
|
||||||
|
}
|
||||||
|
|
||||||
this._applications = [];
|
this._applications = [];
|
||||||
this._applicationList.destroy_all_children();
|
this._applicationList.destroy_all_children();
|
||||||
@ -727,19 +761,19 @@ const EndSessionDialog = new Lang.Class({
|
|||||||
if (dialogContent.showOtherSessions)
|
if (dialogContent.showOtherSessions)
|
||||||
this._loadSessions();
|
this._loadSessions();
|
||||||
|
|
||||||
let updateAlreadyTriggered = this._pkOfflineProxy.TriggerAction == 'power-off' || this._pkOfflineProxy.TriggerAction == 'reboot';
|
let updateTriggered = this._pkOfflineProxy.UpdateTriggered;
|
||||||
let updatePrepared = this._pkOfflineProxy.UpdatePrepared;
|
let updatePrepared = this._pkOfflineProxy.UpdatePrepared;
|
||||||
let updatesAllowed = this._updatesPermission && this._updatesPermission.allowed;
|
let updatesAllowed = this._updatesPermission && this._updatesPermission.allowed;
|
||||||
|
|
||||||
_setCheckBoxLabel(this._checkBox, dialogContent.checkBoxText);
|
_setCheckBoxLabel(this._checkBox, dialogContent.checkBoxText);
|
||||||
this._checkBox.actor.visible = (dialogContent.checkBoxText && updatePrepared && updatesAllowed);
|
this._checkBox.actor.visible = (dialogContent.checkBoxText && updatePrepared && updatesAllowed);
|
||||||
this._checkBox.actor.checked = (updatePrepared && updateAlreadyTriggered);
|
this._checkBox.actor.checked = (updatePrepared && updateTriggered);
|
||||||
|
|
||||||
// We show the warning either together with the checkbox, or when
|
// We show the warning either together with the checkbox, or when
|
||||||
// updates have already been triggered, but the user doesn't have
|
// updates have already been triggered, but the user doesn't have
|
||||||
// enough permissions to cancel them.
|
// enough permissions to cancel them.
|
||||||
this._batteryWarning.visible = (dialogContent.showBatteryWarning &&
|
this._batteryWarning.visible = (dialogContent.showBatteryWarning &&
|
||||||
(this._checkBox.actor.visible || updatePrepared && updateAlreadyTriggered && !updatesAllowed));
|
(this._checkBox.actor.visible || updatePrepared && updateTriggered && !updatesAllowed));
|
||||||
|
|
||||||
this._updateButtons();
|
this._updateButtons();
|
||||||
|
|
||||||
@ -749,7 +783,9 @@ const EndSessionDialog = new Lang.Class({
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!dialogContent.disableTimer)
|
||||||
this._startTimer();
|
this._startTimer();
|
||||||
|
|
||||||
this._sync();
|
this._sync();
|
||||||
|
|
||||||
let signalId = this.connect('opened',
|
let signalId = this.connect('opened',
|
||||||
|
@ -10,6 +10,7 @@ const Meta = imports.gi.Meta;
|
|||||||
const Shell = imports.gi.Shell;
|
const Shell = imports.gi.Shell;
|
||||||
const Signals = imports.signals;
|
const Signals = imports.signals;
|
||||||
const St = imports.gi.St;
|
const St = imports.gi.St;
|
||||||
|
const InputSourceManager = imports.ui.status.keyboard;
|
||||||
|
|
||||||
const BoxPointer = imports.ui.boxpointer;
|
const BoxPointer = imports.ui.boxpointer;
|
||||||
const Layout = imports.ui.layout;
|
const Layout = imports.ui.layout;
|
||||||
@ -757,19 +758,48 @@ const ShellWaylandAdapter = new Lang.Class({
|
|||||||
Name: 'ShellWaylandAdapter',
|
Name: 'ShellWaylandAdapter',
|
||||||
Extends: Caribou.XAdapter,
|
Extends: Caribou.XAdapter,
|
||||||
|
|
||||||
|
_init: function () {
|
||||||
|
this.parent();
|
||||||
|
let deviceManager = Clutter.DeviceManager.get_default();
|
||||||
|
this._virtualDevice = deviceManager.create_virtual_device(Clutter.InputDeviceType.KEYBOARD_DEVICE);
|
||||||
|
|
||||||
|
this._inputSourceManager = InputSourceManager.getInputSourceManager();
|
||||||
|
this._sourceChangedId = this._inputSourceManager.connect('current-source-changed',
|
||||||
|
Lang.bind(this, this._onSourceChanged));
|
||||||
|
this._sourcesModifiedId = this._inputSourceManager.connect ('sources-changed',
|
||||||
|
Lang.bind(this, this._onSourcesModified));
|
||||||
|
},
|
||||||
|
|
||||||
|
_onSourcesModified: function () {
|
||||||
|
this.emit('config-changed');
|
||||||
|
},
|
||||||
|
|
||||||
|
_onSourceChanged: function (inputSourceManager, oldSource) {
|
||||||
|
let source = inputSourceManager.currentSource;
|
||||||
|
this.emit('group-changed', source.index, source.id, '');
|
||||||
|
},
|
||||||
|
|
||||||
|
vfunc_get_groups: function () {
|
||||||
|
let inputSources = this._inputSourceManager.inputSources;
|
||||||
|
let groups = []
|
||||||
|
let variants = [];
|
||||||
|
|
||||||
|
for (let i in inputSources) {
|
||||||
|
let is = inputSources[i];
|
||||||
|
groups[is.index] = is.id;
|
||||||
|
variants[is.index] = '';
|
||||||
|
}
|
||||||
|
|
||||||
|
return [groups, groups.length, variants, variants.length];
|
||||||
|
},
|
||||||
|
|
||||||
vfunc_keyval_press: function(keyval) {
|
vfunc_keyval_press: function(keyval) {
|
||||||
let focus = global.stage.get_key_focus();
|
this._virtualDevice.notify_keyval(Clutter.get_current_event_time(),
|
||||||
if (focus instanceof Clutter.Text)
|
keyval, Clutter.KeyState.PRESSED);
|
||||||
Shell.util_text_insert_keyval(focus, keyval);
|
|
||||||
else
|
|
||||||
this.parent(keyval);
|
|
||||||
},
|
},
|
||||||
|
|
||||||
vfunc_keyval_release: function(keyval) {
|
vfunc_keyval_release: function(keyval) {
|
||||||
let focus = global.stage.get_key_focus();
|
this._virtualDevice.notify_keyval(Clutter.get_current_event_time(),
|
||||||
if (focus instanceof Clutter.Text)
|
keyval, Clutter.KeyState.RELEASED);
|
||||||
return; // do nothing
|
|
||||||
else
|
|
||||||
this.parent(keyval);
|
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
@ -220,7 +220,8 @@ const LayoutManager = new Lang.Class({
|
|||||||
global.stage.add_child(this.uiGroup);
|
global.stage.add_child(this.uiGroup);
|
||||||
|
|
||||||
this.overviewGroup = new St.Widget({ name: 'overviewGroup',
|
this.overviewGroup = new St.Widget({ name: 'overviewGroup',
|
||||||
visible: false });
|
visible: false,
|
||||||
|
reactive: true });
|
||||||
this.addChrome(this.overviewGroup);
|
this.addChrome(this.overviewGroup);
|
||||||
|
|
||||||
this.screenShieldGroup = new St.Widget({ name: 'screenShieldGroup',
|
this.screenShieldGroup = new St.Widget({ name: 'screenShieldGroup',
|
||||||
@ -591,7 +592,10 @@ const LayoutManager = new Lang.Class({
|
|||||||
this.addChrome(this._coverPane);
|
this.addChrome(this._coverPane);
|
||||||
|
|
||||||
if (Meta.is_restart()) {
|
if (Meta.is_restart()) {
|
||||||
// On restart, we don't do an animation
|
// On restart, we don't do an animation. Force an update of the
|
||||||
|
// regions immediately so that maximized windows restore to the
|
||||||
|
// right size taking struts into account.
|
||||||
|
this._updateRegions();
|
||||||
} else if (Main.sessionMode.isGreeter) {
|
} else if (Main.sessionMode.isGreeter) {
|
||||||
this.panelBox.translation_y = -this.panelBox.height;
|
this.panelBox.translation_y = -this.panelBox.height;
|
||||||
} else {
|
} else {
|
||||||
@ -938,6 +942,11 @@ const LayoutManager = new Lang.Class({
|
|||||||
if (Main.modalCount > 0)
|
if (Main.modalCount > 0)
|
||||||
return GLib.SOURCE_REMOVE;
|
return GLib.SOURCE_REMOVE;
|
||||||
|
|
||||||
|
// Bug workaround - get_transformed_position()/get_transformed_size() don't work after
|
||||||
|
// a change in stage size until the first pick or paint.
|
||||||
|
// https://bugzilla.gnome.org/show_bug.cgi?id=761565
|
||||||
|
global.stage.get_actor_at_pos(Clutter.PickMode.ALL, 0, 0);
|
||||||
|
|
||||||
let rects = [], struts = [], i;
|
let rects = [], struts = [], i;
|
||||||
let isPopupMenuVisible = global.top_window_group.get_children().some(isPopupMetaWindow);
|
let isPopupMenuVisible = global.top_window_group.get_children().some(isPopupMetaWindow);
|
||||||
let wantsInputRegion = !isPopupMenuVisible;
|
let wantsInputRegion = !isPopupMenuVisible;
|
||||||
|
@ -11,6 +11,7 @@ const Meta = imports.gi.Meta;
|
|||||||
const Shell = imports.gi.Shell;
|
const Shell = imports.gi.Shell;
|
||||||
const St = imports.gi.St;
|
const St = imports.gi.St;
|
||||||
|
|
||||||
|
const AccessDialog = imports.ui.accessDialog;
|
||||||
const AudioDeviceSelection = imports.ui.audioDeviceSelection;
|
const AudioDeviceSelection = imports.ui.audioDeviceSelection;
|
||||||
const Components = imports.ui.components;
|
const Components = imports.ui.components;
|
||||||
const CtrlAltTab = imports.ui.ctrlAltTab;
|
const CtrlAltTab = imports.ui.ctrlAltTab;
|
||||||
@ -63,6 +64,7 @@ let ctrlAltTabManager = null;
|
|||||||
let osdWindowManager = null;
|
let osdWindowManager = null;
|
||||||
let osdMonitorLabeler = null;
|
let osdMonitorLabeler = null;
|
||||||
let sessionMode = null;
|
let sessionMode = null;
|
||||||
|
let shellAccessDialogDBusService = null;
|
||||||
let shellAudioSelectionDBusService = null;
|
let shellAudioSelectionDBusService = null;
|
||||||
let shellDBusService = null;
|
let shellDBusService = null;
|
||||||
let shellMountOpDBusService = null;
|
let shellMountOpDBusService = null;
|
||||||
@ -122,6 +124,7 @@ function start() {
|
|||||||
_loadDefaultStylesheet);
|
_loadDefaultStylesheet);
|
||||||
_initializeUI();
|
_initializeUI();
|
||||||
|
|
||||||
|
shellAccessDialogDBusService = new AccessDialog.AccessDialogDBus();
|
||||||
shellAudioSelectionDBusService = new AudioDeviceSelection.AudioDeviceSelectionDBus();
|
shellAudioSelectionDBusService = new AudioDeviceSelection.AudioDeviceSelectionDBus();
|
||||||
shellDBusService = new ShellDBus.GnomeShell();
|
shellDBusService = new ShellDBus.GnomeShell();
|
||||||
shellMountOpDBusService = new ShellMountOperation.GnomeShellMountOpHandler();
|
shellMountOpDBusService = new ShellMountOperation.GnomeShellMountOpHandler();
|
||||||
@ -191,6 +194,8 @@ function _initializeUI() {
|
|||||||
return true;
|
return true;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
global.display.connect('gl-video-memory-purged', loadTheme);
|
||||||
|
|
||||||
// Provide the bus object for gnome-session to
|
// Provide the bus object for gnome-session to
|
||||||
// initiate logouts.
|
// initiate logouts.
|
||||||
EndSessionDialog.init();
|
EndSessionDialog.init();
|
||||||
|
@ -259,7 +259,7 @@ const ModalDialog = new Lang.Class({
|
|||||||
if (this.state == State.OPENED || this.state == State.OPENING)
|
if (this.state == State.OPENED || this.state == State.OPENING)
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
if (!this.pushModal({ timestamp: timestamp }))
|
if (!this.pushModal(timestamp))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
this._fadeOpen(onPrimary);
|
this._fadeOpen(onPrimary);
|
||||||
@ -318,8 +318,11 @@ const ModalDialog = new Lang.Class({
|
|||||||
pushModal: function (timestamp) {
|
pushModal: function (timestamp) {
|
||||||
if (this._hasModal)
|
if (this._hasModal)
|
||||||
return true;
|
return true;
|
||||||
if (!Main.pushModal(this._group, { timestamp: timestamp,
|
|
||||||
actionMode: this._actionMode }))
|
let params = { actionMode: this._actionMode };
|
||||||
|
if (timestamp)
|
||||||
|
params['timestamp'] = timestamp;
|
||||||
|
if (!Main.pushModal(this._group, params))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
this._hasModal = true;
|
this._hasModal = true;
|
||||||
|
@ -22,11 +22,13 @@ const LevelBar = new Lang.Class({
|
|||||||
this._level = 0;
|
this._level = 0;
|
||||||
|
|
||||||
this.actor = new St.Bin({ style_class: 'level',
|
this.actor = new St.Bin({ style_class: 'level',
|
||||||
x_fill: true, y_fill: true });
|
x_align: St.Align.START,
|
||||||
this._bar = new St.DrawingArea();
|
y_fill: true });
|
||||||
this._bar.connect('repaint', Lang.bind(this, this._repaint));
|
this._bar = new St.Widget({ style_class: 'level-bar' });
|
||||||
|
|
||||||
this.actor.set_child(this._bar);
|
this.actor.set_child(this._bar);
|
||||||
|
|
||||||
|
this.actor.connect('notify::width', () => { this.level = this.level; });
|
||||||
},
|
},
|
||||||
|
|
||||||
get level() {
|
get level() {
|
||||||
@ -34,39 +36,44 @@ const LevelBar = new Lang.Class({
|
|||||||
},
|
},
|
||||||
|
|
||||||
set level(value) {
|
set level(value) {
|
||||||
let newValue = Math.max(0, Math.min(value, 100));
|
this._level = Math.max(0, Math.min(value, 100));
|
||||||
if (newValue == this._level)
|
|
||||||
return;
|
let alloc = this.actor.get_allocation_box();
|
||||||
this._level = newValue;
|
let newWidth = Math.round((alloc.x2 - alloc.x1) * this._level / 100);
|
||||||
this._bar.queue_repaint();
|
if (newWidth != this._bar.width)
|
||||||
|
this._bar.width = newWidth;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
const OsdWindowConstraint = new Lang.Class({
|
||||||
|
Name: 'OsdWindowConstraint',
|
||||||
|
Extends: Clutter.Constraint,
|
||||||
|
|
||||||
|
_init: function(props) {
|
||||||
|
this._minSize = 0;
|
||||||
|
this.parent(props);
|
||||||
},
|
},
|
||||||
|
|
||||||
_repaint: function() {
|
set minSize(v) {
|
||||||
let cr = this._bar.get_context();
|
this._minSize = v;
|
||||||
|
if (this.actor)
|
||||||
|
this.actor.queue_relayout();
|
||||||
|
},
|
||||||
|
|
||||||
let node = this.actor.get_theme_node();
|
vfunc_update_allocation: function(actor, actorBox) {
|
||||||
let radius = node.get_border_radius(0); // assume same radius for all corners
|
// Clutter will adjust the allocation for margins,
|
||||||
Clutter.cairo_set_source_color(cr, node.get_foreground_color());
|
// so add it to our minimum size
|
||||||
|
let minSize = this._minSize + actor.margin_top + actor.margin_bottom;
|
||||||
|
let [width, height] = actorBox.get_size();
|
||||||
|
|
||||||
let [w, h] = this._bar.get_surface_size();
|
// Enforce a ratio of 1
|
||||||
w *= (this._level / 100.);
|
let size = Math.ceil(Math.max(minSize, height));
|
||||||
|
actorBox.set_size(size, size);
|
||||||
|
|
||||||
if (w == 0)
|
// Recenter
|
||||||
return;
|
let [x, y] = actorBox.get_origin();
|
||||||
|
actorBox.set_origin(Math.floor(x + width / 2 - size / 2),
|
||||||
cr.moveTo(radius, 0);
|
Math.floor(y + height / 2 - size / 2));
|
||||||
if (w >= radius)
|
|
||||||
cr.arc(w - radius, radius, radius, 1.5 * Math.PI, 2. * Math.PI);
|
|
||||||
else
|
|
||||||
cr.lineTo(w, 0);
|
|
||||||
if (w >= radius)
|
|
||||||
cr.arc(w - radius, h - radius, radius, 0, 0.5 * Math.PI);
|
|
||||||
else
|
|
||||||
cr.lineTo(w, h);
|
|
||||||
cr.arc(radius, h - radius, radius, 0.5 * Math.PI, Math.PI);
|
|
||||||
cr.arc(radius, radius, radius, Math.PI, 1.5 * Math.PI);
|
|
||||||
cr.fill();
|
|
||||||
cr.$dispose();
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -74,7 +81,6 @@ const OsdWindow = new Lang.Class({
|
|||||||
Name: 'OsdWindow',
|
Name: 'OsdWindow',
|
||||||
|
|
||||||
_init: function(monitorIndex) {
|
_init: function(monitorIndex) {
|
||||||
this._popupSize = 0;
|
|
||||||
this.actor = new St.Widget({ x_expand: true,
|
this.actor = new St.Widget({ x_expand: true,
|
||||||
y_expand: true,
|
y_expand: true,
|
||||||
x_align: Clutter.ActorAlign.CENTER,
|
x_align: Clutter.ActorAlign.CENTER,
|
||||||
@ -84,19 +90,12 @@ const OsdWindow = new Lang.Class({
|
|||||||
let constraint = new Layout.MonitorConstraint({ index: monitorIndex });
|
let constraint = new Layout.MonitorConstraint({ index: monitorIndex });
|
||||||
this.actor.add_constraint(constraint);
|
this.actor.add_constraint(constraint);
|
||||||
|
|
||||||
|
this._boxConstraint = new OsdWindowConstraint();
|
||||||
this._box = new St.BoxLayout({ style_class: 'osd-window',
|
this._box = new St.BoxLayout({ style_class: 'osd-window',
|
||||||
vertical: true });
|
vertical: true });
|
||||||
|
this._box.add_constraint(this._boxConstraint);
|
||||||
this.actor.add_actor(this._box);
|
this.actor.add_actor(this._box);
|
||||||
|
|
||||||
this._box.connect('style-changed', Lang.bind(this, this._onStyleChanged));
|
|
||||||
this._box.connect('notify::height', Lang.bind(this,
|
|
||||||
function() {
|
|
||||||
Meta.later_add(Meta.LaterType.BEFORE_REDRAW, Lang.bind(this,
|
|
||||||
function() {
|
|
||||||
this._box.width = this._box.height;
|
|
||||||
}));
|
|
||||||
}));
|
|
||||||
|
|
||||||
this._icon = new St.Icon();
|
this._icon = new St.Icon();
|
||||||
this._box.add(this._icon, { expand: true });
|
this._box.add(this._icon, { expand: true });
|
||||||
|
|
||||||
@ -198,30 +197,12 @@ const OsdWindow = new Lang.Class({
|
|||||||
let scalew = monitor.width / 640.0;
|
let scalew = monitor.width / 640.0;
|
||||||
let scaleh = monitor.height / 480.0;
|
let scaleh = monitor.height / 480.0;
|
||||||
let scale = Math.min(scalew, scaleh);
|
let scale = Math.min(scalew, scaleh);
|
||||||
this._popupSize = 110 * Math.max(1, scale);
|
let popupSize = 110 * Math.max(1, scale);
|
||||||
|
|
||||||
let scaleFactor = St.ThemeContext.get_for_stage(global.stage).scale_factor;
|
let scaleFactor = St.ThemeContext.get_for_stage(global.stage).scale_factor;
|
||||||
this._icon.icon_size = this._popupSize / (2 * scaleFactor);
|
this._icon.icon_size = popupSize / (2 * scaleFactor);
|
||||||
this._box.translation_y = monitor.height / 4;
|
this._box.translation_y = monitor.height / 4;
|
||||||
this._box.style_changed();
|
this._boxConstraint.minSize = popupSize;
|
||||||
},
|
|
||||||
|
|
||||||
_onStyleChanged: function() {
|
|
||||||
let themeNode = this._box.get_theme_node();
|
|
||||||
let horizontalPadding = themeNode.get_horizontal_padding();
|
|
||||||
let verticalPadding = themeNode.get_vertical_padding();
|
|
||||||
let topBorder = themeNode.get_border_width(St.Side.TOP);
|
|
||||||
let bottomBorder = themeNode.get_border_width(St.Side.BOTTOM);
|
|
||||||
let leftBorder = themeNode.get_border_width(St.Side.LEFT);
|
|
||||||
let rightBorder = themeNode.get_border_width(St.Side.RIGHT);
|
|
||||||
|
|
||||||
let minWidth = this._popupSize - verticalPadding - leftBorder - rightBorder;
|
|
||||||
let minHeight = this._popupSize - horizontalPadding - topBorder - bottomBorder;
|
|
||||||
|
|
||||||
// minWidth/minHeight here are in real pixels,
|
|
||||||
// but the theme takes measures in unscaled dimensions
|
|
||||||
let scaleFactor = St.ThemeContext.get_for_stage(global.stage).scale_factor;
|
|
||||||
this._box.style = 'min-height: %dpx;'.format(Math.max(minWidth, minHeight) / scaleFactor);
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -107,18 +107,12 @@ const Overview = new Lang.Class({
|
|||||||
|
|
||||||
this._overviewCreated = true;
|
this._overviewCreated = true;
|
||||||
|
|
||||||
let layout = new Clutter.BinLayout();
|
|
||||||
this._stack = new Clutter.Actor({ layout_manager: layout });
|
|
||||||
this._stack.add_constraint(new LayoutManager.MonitorConstraint({ primary: true }));
|
|
||||||
|
|
||||||
/* Translators: This is the main view to select
|
/* Translators: This is the main view to select
|
||||||
activities. See also note for "Activities" string. */
|
activities. See also note for "Activities" string. */
|
||||||
this._overview = new St.BoxLayout({ name: 'overview',
|
this._overview = new St.BoxLayout({ name: 'overview',
|
||||||
accessible_name: _("Overview"),
|
accessible_name: _("Overview"),
|
||||||
reactive: true,
|
vertical: true });
|
||||||
vertical: true,
|
this._overview.add_constraint(new LayoutManager.MonitorConstraint({ primary: true }));
|
||||||
x_expand: true,
|
|
||||||
y_expand: true });
|
|
||||||
this._overview._delegate = this;
|
this._overview._delegate = this;
|
||||||
|
|
||||||
// The main Background actors are inside global.window_group which are
|
// The main Background actors are inside global.window_group which are
|
||||||
@ -126,7 +120,7 @@ const Overview = new Lang.Class({
|
|||||||
// one. Instances of this class share a single CoglTexture behind the
|
// one. Instances of this class share a single CoglTexture behind the
|
||||||
// scenes which allows us to show the background with different
|
// scenes which allows us to show the background with different
|
||||||
// rendering options without duplicating the texture data.
|
// rendering options without duplicating the texture data.
|
||||||
this._backgroundGroup = new Meta.BackgroundGroup();
|
this._backgroundGroup = new Meta.BackgroundGroup({ reactive: true });
|
||||||
Main.layoutManager.overviewGroup.add_child(this._backgroundGroup);
|
Main.layoutManager.overviewGroup.add_child(this._backgroundGroup);
|
||||||
this._bgManagers = [];
|
this._bgManagers = [];
|
||||||
|
|
||||||
@ -149,8 +143,7 @@ const Overview = new Lang.Class({
|
|||||||
Main.layoutManager.overviewGroup.add_child(this._coverPane);
|
Main.layoutManager.overviewGroup.add_child(this._coverPane);
|
||||||
this._coverPane.connect('event', Lang.bind(this, function (actor, event) { return Clutter.EVENT_STOP; }));
|
this._coverPane.connect('event', Lang.bind(this, function (actor, event) { return Clutter.EVENT_STOP; }));
|
||||||
|
|
||||||
this._stack.add_actor(this._overview);
|
Main.layoutManager.overviewGroup.add_child(this._overview);
|
||||||
Main.layoutManager.overviewGroup.add_child(this._stack);
|
|
||||||
|
|
||||||
this._coverPane.hide();
|
this._coverPane.hide();
|
||||||
|
|
||||||
@ -159,6 +152,9 @@ const Overview = new Lang.Class({
|
|||||||
dragMotion: Lang.bind(this, this._onDragMotion)
|
dragMotion: Lang.bind(this, this._onDragMotion)
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
Main.layoutManager.overviewGroup.connect('scroll-event',
|
||||||
|
Lang.bind(this, this._onScrollEvent));
|
||||||
Main.xdndHandler.connect('drag-begin', Lang.bind(this, this._onDragBegin));
|
Main.xdndHandler.connect('drag-begin', Lang.bind(this, this._onDragBegin));
|
||||||
Main.xdndHandler.connect('drag-end', Lang.bind(this, this._onDragEnd));
|
Main.xdndHandler.connect('drag-end', Lang.bind(this, this._onDragEnd));
|
||||||
|
|
||||||
@ -255,7 +251,6 @@ const Overview = new Lang.Class({
|
|||||||
|
|
||||||
// Add our same-line elements after the search entry
|
// Add our same-line elements after the search entry
|
||||||
this._overview.add(this._controls.actor, { y_fill: true, expand: true });
|
this._overview.add(this._controls.actor, { y_fill: true, expand: true });
|
||||||
this._controls.actor.connect('scroll-event', Lang.bind(this, this._onScrollEvent));
|
|
||||||
|
|
||||||
// TODO - recalculate everything when desktop size changes
|
// TODO - recalculate everything when desktop size changes
|
||||||
this.dashIconSize = this._dash.iconSize;
|
this.dashIconSize = this._dash.iconSize;
|
||||||
@ -372,7 +367,7 @@ const Overview = new Lang.Class({
|
|||||||
if (this.isDummy)
|
if (this.isDummy)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
this._overview.add_action(action);
|
this._backgroundGroup.add_action(action);
|
||||||
},
|
},
|
||||||
|
|
||||||
_getDesktopClone: function() {
|
_getDesktopClone: function() {
|
||||||
@ -552,8 +547,8 @@ const Overview = new Lang.Class({
|
|||||||
Meta.disable_unredirect_for_screen(global.screen);
|
Meta.disable_unredirect_for_screen(global.screen);
|
||||||
this.viewSelector.show();
|
this.viewSelector.show();
|
||||||
|
|
||||||
this._stack.opacity = 0;
|
this._overview.opacity = 0;
|
||||||
Tweener.addTween(this._stack,
|
Tweener.addTween(this._overview,
|
||||||
{ opacity: 255,
|
{ opacity: 255,
|
||||||
transition: 'easeOutQuad',
|
transition: 'easeOutQuad',
|
||||||
time: ANIMATION_TIME,
|
time: ANIMATION_TIME,
|
||||||
@ -618,7 +613,7 @@ const Overview = new Lang.Class({
|
|||||||
this.viewSelector.animateFromOverview();
|
this.viewSelector.animateFromOverview();
|
||||||
|
|
||||||
// Make other elements fade out.
|
// Make other elements fade out.
|
||||||
Tweener.addTween(this._stack,
|
Tweener.addTween(this._overview,
|
||||||
{ opacity: 0,
|
{ opacity: 0,
|
||||||
transition: 'easeOutQuad',
|
transition: 'easeOutQuad',
|
||||||
time: ANIMATION_TIME,
|
time: ANIMATION_TIME,
|
||||||
|
@ -421,7 +421,6 @@ const ControlsManager = new Lang.Class({
|
|||||||
|
|
||||||
let layout = new ControlsLayout();
|
let layout = new ControlsLayout();
|
||||||
this.actor = new St.Widget({ layout_manager: layout,
|
this.actor = new St.Widget({ layout_manager: layout,
|
||||||
reactive: true,
|
|
||||||
x_expand: true, y_expand: true,
|
x_expand: true, y_expand: true,
|
||||||
clip_to_allocation: true });
|
clip_to_allocation: true });
|
||||||
this._group = new St.BoxLayout({ name: 'overview-group',
|
this._group = new St.BoxLayout({ name: 'overview-group',
|
||||||
|
@ -349,7 +349,6 @@ const Arrow = new Lang.Class({
|
|||||||
_init: function(params) {
|
_init: function(params) {
|
||||||
this.parent(params);
|
this.parent(params);
|
||||||
this.x_fill = this.y_fill = true;
|
this.x_fill = this.y_fill = true;
|
||||||
this.set_offscreen_redirect(Clutter.OffscreenRedirect.ALWAYS);
|
|
||||||
|
|
||||||
this._drawingArea = new St.DrawingArea();
|
this._drawingArea = new St.DrawingArea();
|
||||||
this._drawingArea.connect('repaint', Lang.bind(this, this._drawArrow));
|
this._drawingArea.connect('repaint', Lang.bind(this, this._drawArrow));
|
||||||
@ -377,6 +376,22 @@ const Arrow = new Lang.Class({
|
|||||||
cr.$dispose();
|
cr.$dispose();
|
||||||
},
|
},
|
||||||
|
|
||||||
|
vfunc_get_paint_volume: function(volume) {
|
||||||
|
if (!this.parent(volume))
|
||||||
|
return false;
|
||||||
|
|
||||||
|
if (!this._shadow)
|
||||||
|
return true;
|
||||||
|
|
||||||
|
let shadow_box = new Clutter.ActorBox();
|
||||||
|
this._shadow.get_box(this._drawingArea.get_allocation_box(), shadow_box);
|
||||||
|
|
||||||
|
volume.set_width(Math.max(shadow_box.x2 - shadow_box.x1, volume.get_width()));
|
||||||
|
volume.set_height(Math.max(shadow_box.y2 - shadow_box.y1, volume.get_height()));
|
||||||
|
|
||||||
|
return true;
|
||||||
|
},
|
||||||
|
|
||||||
vfunc_style_changed: function() {
|
vfunc_style_changed: function() {
|
||||||
let node = this.get_theme_node();
|
let node = this.get_theme_node();
|
||||||
this._shadow = node.get_shadow('-arrow-shadow');
|
this._shadow = node.get_shadow('-arrow-shadow');
|
||||||
@ -384,6 +399,8 @@ const Arrow = new Lang.Class({
|
|||||||
this._shadowHelper = St.ShadowHelper.new(this._shadow);
|
this._shadowHelper = St.ShadowHelper.new(this._shadow);
|
||||||
else
|
else
|
||||||
this._shadowHelper = null;
|
this._shadowHelper = null;
|
||||||
|
|
||||||
|
this.parent();
|
||||||
},
|
},
|
||||||
|
|
||||||
vfunc_paint: function() {
|
vfunc_paint: function() {
|
||||||
@ -559,6 +576,9 @@ const ScreenShield = new Lang.Class({
|
|||||||
if (prevIsActive != this._isActive)
|
if (prevIsActive != this._isActive)
|
||||||
this.emit('active-changed');
|
this.emit('active-changed');
|
||||||
|
|
||||||
|
if (this._loginSession)
|
||||||
|
this._loginSession.SetLockedHintRemote(active);
|
||||||
|
|
||||||
this._syncInhibitor();
|
this._syncInhibitor();
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -708,7 +728,7 @@ const ScreenShield = new Lang.Class({
|
|||||||
let unitaryDelay = ARROW_ANIMATION_TIME / (arrows.length + 1);
|
let unitaryDelay = ARROW_ANIMATION_TIME / (arrows.length + 1);
|
||||||
let maxOpacity = 255 * ARROW_ANIMATION_PEAK_OPACITY;
|
let maxOpacity = 255 * ARROW_ANIMATION_PEAK_OPACITY;
|
||||||
for (let i = 0; i < arrows.length; i++) {
|
for (let i = 0; i < arrows.length; i++) {
|
||||||
arrows.opacity = 0;
|
arrows[i].opacity = 0;
|
||||||
Tweener.addTween(arrows[i],
|
Tweener.addTween(arrows[i],
|
||||||
{ opacity: 0,
|
{ opacity: 0,
|
||||||
delay: unitaryDelay * (N_ARROWS - (i + 1)),
|
delay: unitaryDelay * (N_ARROWS - (i + 1)),
|
||||||
|
@ -61,8 +61,8 @@ const InputSource = new Lang.Class({
|
|||||||
this.emit('changed');
|
this.emit('changed');
|
||||||
},
|
},
|
||||||
|
|
||||||
activate: function() {
|
activate: function(interactive) {
|
||||||
this.emit('activate');
|
this.emit('activate', !!interactive);
|
||||||
},
|
},
|
||||||
|
|
||||||
_getXkbId: function() {
|
_getXkbId: function() {
|
||||||
@ -109,7 +109,7 @@ const InputSourcePopup = new Lang.Class({
|
|||||||
_finish : function() {
|
_finish : function() {
|
||||||
this.parent();
|
this.parent();
|
||||||
|
|
||||||
this._items[this._selectedIndex].activate();
|
this._items[this._selectedIndex].activate(true);
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -159,6 +159,14 @@ const InputSourceSettings = new Lang.Class({
|
|||||||
return [];
|
return [];
|
||||||
},
|
},
|
||||||
|
|
||||||
|
get mruSources() {
|
||||||
|
return [];
|
||||||
|
},
|
||||||
|
|
||||||
|
set mruSources(sourcesList) {
|
||||||
|
// do nothing
|
||||||
|
},
|
||||||
|
|
||||||
get keyboardOptions() {
|
get keyboardOptions() {
|
||||||
return [];
|
return [];
|
||||||
},
|
},
|
||||||
@ -251,6 +259,7 @@ const InputSourceSessionSettings = new Lang.Class({
|
|||||||
|
|
||||||
_DESKTOP_INPUT_SOURCES_SCHEMA: 'org.gnome.desktop.input-sources',
|
_DESKTOP_INPUT_SOURCES_SCHEMA: 'org.gnome.desktop.input-sources',
|
||||||
_KEY_INPUT_SOURCES: 'sources',
|
_KEY_INPUT_SOURCES: 'sources',
|
||||||
|
_KEY_MRU_SOURCES: 'mru-sources',
|
||||||
_KEY_KEYBOARD_OPTIONS: 'xkb-options',
|
_KEY_KEYBOARD_OPTIONS: 'xkb-options',
|
||||||
_KEY_PER_WINDOW: 'per-window',
|
_KEY_PER_WINDOW: 'per-window',
|
||||||
|
|
||||||
@ -261,9 +270,9 @@ const InputSourceSessionSettings = new Lang.Class({
|
|||||||
this._settings.connect('changed::' + this._KEY_PER_WINDOW, Lang.bind(this, this._emitPerWindowChanged));
|
this._settings.connect('changed::' + this._KEY_PER_WINDOW, Lang.bind(this, this._emitPerWindowChanged));
|
||||||
},
|
},
|
||||||
|
|
||||||
get inputSources() {
|
_getSourcesList: function(key) {
|
||||||
let sourcesList = [];
|
let sourcesList = [];
|
||||||
let sources = this._settings.get_value(this._KEY_INPUT_SOURCES);
|
let sources = this._settings.get_value(key);
|
||||||
let nSources = sources.n_children();
|
let nSources = sources.n_children();
|
||||||
|
|
||||||
for (let i = 0; i < nSources; i++) {
|
for (let i = 0; i < nSources; i++) {
|
||||||
@ -273,6 +282,19 @@ const InputSourceSessionSettings = new Lang.Class({
|
|||||||
return sourcesList;
|
return sourcesList;
|
||||||
},
|
},
|
||||||
|
|
||||||
|
get inputSources() {
|
||||||
|
return this._getSourcesList(this._KEY_INPUT_SOURCES);
|
||||||
|
},
|
||||||
|
|
||||||
|
get mruSources() {
|
||||||
|
return this._getSourcesList(this._KEY_MRU_SOURCES);
|
||||||
|
},
|
||||||
|
|
||||||
|
set mruSources(sourcesList) {
|
||||||
|
let sources = GLib.Variant.new('a(ss)', sourcesList);
|
||||||
|
this._settings.set_value(this._KEY_MRU_SOURCES, sources);
|
||||||
|
},
|
||||||
|
|
||||||
get keyboardOptions() {
|
get keyboardOptions() {
|
||||||
return this._settings.get_strv(this._KEY_KEYBOARD_OPTIONS);
|
return this._settings.get_strv(this._KEY_KEYBOARD_OPTIONS);
|
||||||
},
|
},
|
||||||
@ -372,7 +394,7 @@ const InputSourceManager = new Lang.Class({
|
|||||||
while (!(is = this._inputSources[nextIndex]))
|
while (!(is = this._inputSources[nextIndex]))
|
||||||
nextIndex += 1;
|
nextIndex += 1;
|
||||||
|
|
||||||
is.activate();
|
is.activate(true);
|
||||||
return true;
|
return true;
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -400,6 +422,25 @@ const InputSourceManager = new Lang.Class({
|
|||||||
this._keyboardManager.reapply();
|
this._keyboardManager.reapply();
|
||||||
},
|
},
|
||||||
|
|
||||||
|
_updateMruSettings: function() {
|
||||||
|
// If IBus is not ready we don't have a full picture of all
|
||||||
|
// the available sources, so don't update the setting
|
||||||
|
if (!this._ibusReady)
|
||||||
|
return;
|
||||||
|
|
||||||
|
// If IBus is temporarily disabled, don't update the setting
|
||||||
|
if (this._disableIBus)
|
||||||
|
return;
|
||||||
|
|
||||||
|
let sourcesList = [];
|
||||||
|
for (let i = 0; i < this._mruSources.length; ++i) {
|
||||||
|
let source = this._mruSources[i];
|
||||||
|
sourcesList.push([source.type, source.id]);
|
||||||
|
}
|
||||||
|
|
||||||
|
this._settings.mruSources = sourcesList;
|
||||||
|
},
|
||||||
|
|
||||||
_currentInputSourceChanged: function(newSource) {
|
_currentInputSourceChanged: function(newSource) {
|
||||||
let oldSource;
|
let oldSource;
|
||||||
[oldSource, this._currentSource] = [this._currentSource, newSource];
|
[oldSource, this._currentSource] = [this._currentSource, newSource];
|
||||||
@ -416,7 +457,7 @@ const InputSourceManager = new Lang.Class({
|
|||||||
this._changePerWindowSource();
|
this._changePerWindowSource();
|
||||||
},
|
},
|
||||||
|
|
||||||
_activateInputSource: function(is) {
|
_activateInputSource: function(is, interactive) {
|
||||||
KeyboardManager.holdKeyboard();
|
KeyboardManager.holdKeyboard();
|
||||||
this._keyboardManager.apply(is.xkbId);
|
this._keyboardManager.apply(is.xkbId);
|
||||||
|
|
||||||
@ -434,6 +475,54 @@ const InputSourceManager = new Lang.Class({
|
|||||||
|
|
||||||
this._ibusManager.setEngine(engine, KeyboardManager.releaseKeyboard);
|
this._ibusManager.setEngine(engine, KeyboardManager.releaseKeyboard);
|
||||||
this._currentInputSourceChanged(is);
|
this._currentInputSourceChanged(is);
|
||||||
|
|
||||||
|
if (interactive)
|
||||||
|
this._updateMruSettings();
|
||||||
|
},
|
||||||
|
|
||||||
|
_updateMruSources: function() {
|
||||||
|
let sourcesList = [];
|
||||||
|
for (let i in this._inputSources)
|
||||||
|
sourcesList.push(this._inputSources[i]);
|
||||||
|
|
||||||
|
this._keyboardManager.setUserLayouts(sourcesList.map(function(x) { return x.xkbId; }));
|
||||||
|
|
||||||
|
if (!this._disableIBus && this._mruSourcesBackup) {
|
||||||
|
this._mruSources = this._mruSourcesBackup;
|
||||||
|
this._mruSourcesBackup = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Initialize from settings when we have no MRU sources list
|
||||||
|
if (this._mruSources.length == 0) {
|
||||||
|
let mruSettings = this._settings.mruSources;
|
||||||
|
for (let i = 0; i < mruSettings.length; i++) {
|
||||||
|
let mruSettingSource = mruSettings[i];
|
||||||
|
let mruSource = null;
|
||||||
|
|
||||||
|
for (let j = 0; j < sourcesList.length; j++) {
|
||||||
|
let source = sourcesList[j];
|
||||||
|
if (source.type == mruSettingSource.type &&
|
||||||
|
source.id == mruSettingSource.id) {
|
||||||
|
mruSource = source;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (mruSource)
|
||||||
|
this._mruSources.push(mruSource);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
let mruSources = [];
|
||||||
|
for (let i = 0; i < this._mruSources.length; i++) {
|
||||||
|
for (let j = 0; j < sourcesList.length; j++)
|
||||||
|
if (this._mruSources[i].type == sourcesList[j].type &&
|
||||||
|
this._mruSources[i].id == sourcesList[j].id) {
|
||||||
|
mruSources = mruSources.concat(sourcesList.splice(j, 1));
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
this._mruSources = mruSources.concat(sourcesList);
|
||||||
},
|
},
|
||||||
|
|
||||||
_inputSourcesChanged: function() {
|
_inputSourcesChanged: function() {
|
||||||
@ -510,30 +599,10 @@ const InputSourceManager = new Lang.Class({
|
|||||||
|
|
||||||
this.emit('sources-changed');
|
this.emit('sources-changed');
|
||||||
|
|
||||||
let sourcesList = [];
|
this._updateMruSources();
|
||||||
for (let i in this._inputSources)
|
|
||||||
sourcesList.push(this._inputSources[i]);
|
|
||||||
|
|
||||||
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++)
|
|
||||||
if (this._mruSources[i].type == sourcesList[j].type &&
|
|
||||||
this._mruSources[i].id == sourcesList[j].id) {
|
|
||||||
mruSources = mruSources.concat(sourcesList.splice(j, 1));
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
this._mruSources = mruSources.concat(sourcesList);
|
|
||||||
|
|
||||||
if (this._mruSources.length > 0)
|
if (this._mruSources.length > 0)
|
||||||
this._mruSources[0].activate();
|
this._mruSources[0].activate(false);
|
||||||
|
|
||||||
// All ibus engines are preloaded here to reduce the launching time
|
// All ibus engines are preloaded here to reduce the launching time
|
||||||
// when users switch the input sources.
|
// when users switch the input sources.
|
||||||
@ -642,7 +711,7 @@ const InputSourceManager = new Lang.Class({
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (window._currentSource)
|
if (window._currentSource)
|
||||||
window._currentSource.activate();
|
window._currentSource.activate(false);
|
||||||
},
|
},
|
||||||
|
|
||||||
_sourcesPerWindowChanged: function() {
|
_sourcesPerWindowChanged: function() {
|
||||||
@ -763,7 +832,10 @@ const InputSourceIndicator = new Lang.Class({
|
|||||||
let is = this._inputSourceManager.inputSources[i];
|
let is = this._inputSourceManager.inputSources[i];
|
||||||
|
|
||||||
let menuItem = new LayoutMenuItem(is.displayName, is.shortName);
|
let menuItem = new LayoutMenuItem(is.displayName, is.shortName);
|
||||||
menuItem.connect('activate', Lang.bind(is, is.activate));
|
menuItem.connect('activate', function() {
|
||||||
|
is.activate(true);
|
||||||
|
});
|
||||||
|
|
||||||
let indicatorLabel = new St.Label({ text: is.shortName,
|
let indicatorLabel = new St.Label({ text: is.shortName,
|
||||||
visible: false });
|
visible: false });
|
||||||
|
|
||||||
|
@ -62,8 +62,8 @@ var AgentIface = '<node> \
|
|||||||
</interface> \
|
</interface> \
|
||||||
</node>';
|
</node>';
|
||||||
|
|
||||||
var XdgAppIface = '<node> \
|
var PermissionStoreIface = '<node> \
|
||||||
<interface name="org.freedesktop.XdgApp.PermissionStore"> \
|
<interface name="org.freedesktop.impl.portal.PermissionStore"> \
|
||||||
<method name="Lookup"> \
|
<method name="Lookup"> \
|
||||||
<arg name="table" type="s" direction="in"/> \
|
<arg name="table" type="s" direction="in"/> \
|
||||||
<arg name="id" type="s" direction="in"/> \
|
<arg name="id" type="s" direction="in"/> \
|
||||||
@ -80,7 +80,7 @@ var XdgAppIface = '<node> \
|
|||||||
</interface> \
|
</interface> \
|
||||||
</node>';
|
</node>';
|
||||||
|
|
||||||
const PermissionStore = Gio.DBusProxy.makeProxyWrapper(XdgAppIface);
|
const PermissionStore = Gio.DBusProxy.makeProxyWrapper(PermissionStoreIface);
|
||||||
|
|
||||||
const Indicator = new Lang.Class({
|
const Indicator = new Lang.Class({
|
||||||
Name: 'LocationIndicator',
|
Name: 'LocationIndicator',
|
||||||
@ -254,8 +254,8 @@ const Indicator = new Lang.Class({
|
|||||||
_connectToPermissionStore: function() {
|
_connectToPermissionStore: function() {
|
||||||
this._permStoreProxy = null;
|
this._permStoreProxy = null;
|
||||||
new PermissionStore(Gio.DBus.session,
|
new PermissionStore(Gio.DBus.session,
|
||||||
'org.freedesktop.XdgApp',
|
'org.freedesktop.impl.portal.PermissionStore',
|
||||||
'/org/freedesktop/XdgApp/PermissionStore',
|
'/org/freedesktop/impl/portal/PermissionStore',
|
||||||
Lang.bind(this, this._onPermStoreProxyReady));
|
Lang.bind(this, this._onPermStoreProxyReady));
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -621,7 +621,7 @@ const NMDeviceBluetooth = new Lang.Class({
|
|||||||
_init: function(client, device, settings) {
|
_init: function(client, device, settings) {
|
||||||
this.parent(client, device, settings);
|
this.parent(client, device, settings);
|
||||||
|
|
||||||
this.item.menu.addMenuItem(createSettingsAction(_("Mobile Broadband Settings"), device));
|
this.item.menu.addMenuItem(createSettingsAction(_("Bluetooth Settings"), device));
|
||||||
},
|
},
|
||||||
|
|
||||||
_getDescription: function() {
|
_getDescription: function() {
|
||||||
@ -629,7 +629,7 @@ const NMDeviceBluetooth = new Lang.Class({
|
|||||||
},
|
},
|
||||||
|
|
||||||
getConnectLabel: function() {
|
getConnectLabel: function() {
|
||||||
return _("Use as Internet connection");
|
return _("Connect to Internet");
|
||||||
},
|
},
|
||||||
|
|
||||||
getIndicatorIcon: function() {
|
getIndicatorIcon: function() {
|
||||||
|
@ -6,6 +6,7 @@ const Gdm = imports.gi.Gdm;
|
|||||||
const Gio = imports.gi.Gio;
|
const Gio = imports.gi.Gio;
|
||||||
const GLib = imports.gi.GLib;
|
const GLib = imports.gi.GLib;
|
||||||
const Lang = imports.lang;
|
const Lang = imports.lang;
|
||||||
|
const Meta = imports.gi.Meta;
|
||||||
const Shell = imports.gi.Shell;
|
const Shell = imports.gi.Shell;
|
||||||
const St = imports.gi.St;
|
const St = imports.gi.St;
|
||||||
|
|
||||||
@ -110,6 +111,7 @@ const Indicator = new Lang.Class({
|
|||||||
|
|
||||||
this._session = new GnomeSession.SessionManager();
|
this._session = new GnomeSession.SessionManager();
|
||||||
this._loginManager = LoginManager.getLoginManager();
|
this._loginManager = LoginManager.getLoginManager();
|
||||||
|
this._monitorManager = Meta.MonitorManager.get();
|
||||||
this._haveShutdown = true;
|
this._haveShutdown = true;
|
||||||
this._haveSuspend = true;
|
this._haveSuspend = true;
|
||||||
|
|
||||||
@ -155,6 +157,8 @@ const Indicator = new Lang.Class({
|
|||||||
|
|
||||||
this._orientationSettings.connect('changed::orientation-lock',
|
this._orientationSettings.connect('changed::orientation-lock',
|
||||||
Lang.bind(this, this._updateOrientationLock));
|
Lang.bind(this, this._updateOrientationLock));
|
||||||
|
Main.layoutManager.connect('monitors-changed',
|
||||||
|
Lang.bind(this, this._updateOrientationLock));
|
||||||
Gio.DBus.system.watch_name(SENSOR_BUS_NAME,
|
Gio.DBus.system.watch_name(SENSOR_BUS_NAME,
|
||||||
Gio.BusNameWatcherFlags.NONE,
|
Gio.BusNameWatcherFlags.NONE,
|
||||||
Lang.bind(this, this._sensorProxyAppeared),
|
Lang.bind(this, this._sensorProxyAppeared),
|
||||||
@ -264,7 +268,8 @@ const Indicator = new Lang.Class({
|
|||||||
|
|
||||||
_updateOrientationLock: function() {
|
_updateOrientationLock: function() {
|
||||||
if (this._sensorProxy)
|
if (this._sensorProxy)
|
||||||
this._orientationLockAction.visible = this._sensorProxy.HasAccelerometer;
|
this._orientationLockAction.visible = this._sensorProxy.HasAccelerometer &&
|
||||||
|
this._monitorManager.get_is_builtin_display_on();
|
||||||
else
|
else
|
||||||
this._orientationLockAction.visible = false;
|
this._orientationLockAction.visible = false;
|
||||||
|
|
||||||
@ -301,14 +306,17 @@ const Indicator = new Lang.Class({
|
|||||||
},
|
},
|
||||||
|
|
||||||
_updateHaveSuspend: function() {
|
_updateHaveSuspend: function() {
|
||||||
this._loginManager.canSuspend(Lang.bind(this, function(result) {
|
this._loginManager.canSuspend(Lang.bind(this,
|
||||||
this._haveSuspend = result;
|
function(canSuspend, needsAuth) {
|
||||||
|
this._haveSuspend = canSuspend;
|
||||||
|
this._suspendNeedsAuth = needsAuth;
|
||||||
this._updateSuspend();
|
this._updateSuspend();
|
||||||
}));
|
}));
|
||||||
},
|
},
|
||||||
|
|
||||||
_updateSuspend: function() {
|
_updateSuspend: function() {
|
||||||
let disabled = Main.sessionMode.isLocked ||
|
let disabled = (Main.sessionMode.isLocked &&
|
||||||
|
this._suspendNeedsAuth) ||
|
||||||
(Main.sessionMode.isGreeter &&
|
(Main.sessionMode.isGreeter &&
|
||||||
this._loginScreenSettings.get_boolean(DISABLE_RESTART_KEY));
|
this._loginScreenSettings.get_boolean(DISABLE_RESTART_KEY));
|
||||||
this._suspendAction.visible = this._haveSuspend && !disabled;
|
this._suspendAction.visible = this._haveSuspend && !disabled;
|
||||||
|
@ -850,22 +850,34 @@ const WindowManager = new Lang.Class({
|
|||||||
Lang.bind(this, this._showWorkspaceSwitcher));
|
Lang.bind(this, this._showWorkspaceSwitcher));
|
||||||
this.setCustomKeybindingHandler('switch-applications',
|
this.setCustomKeybindingHandler('switch-applications',
|
||||||
Shell.ActionMode.NORMAL,
|
Shell.ActionMode.NORMAL,
|
||||||
Lang.bind(this, this._startAppSwitcher));
|
Lang.bind(this, this._startSwitcher));
|
||||||
this.setCustomKeybindingHandler('switch-group',
|
this.setCustomKeybindingHandler('switch-group',
|
||||||
Shell.ActionMode.NORMAL,
|
Shell.ActionMode.NORMAL,
|
||||||
Lang.bind(this, this._startAppSwitcher));
|
Lang.bind(this, this._startSwitcher));
|
||||||
this.setCustomKeybindingHandler('switch-applications-backward',
|
this.setCustomKeybindingHandler('switch-applications-backward',
|
||||||
Shell.ActionMode.NORMAL,
|
Shell.ActionMode.NORMAL,
|
||||||
Lang.bind(this, this._startAppSwitcher));
|
Lang.bind(this, this._startSwitcher));
|
||||||
this.setCustomKeybindingHandler('switch-group-backward',
|
this.setCustomKeybindingHandler('switch-group-backward',
|
||||||
Shell.ActionMode.NORMAL,
|
Shell.ActionMode.NORMAL,
|
||||||
Lang.bind(this, this._startAppSwitcher));
|
Lang.bind(this, this._startSwitcher));
|
||||||
this.setCustomKeybindingHandler('switch-windows',
|
this.setCustomKeybindingHandler('switch-windows',
|
||||||
Shell.ActionMode.NORMAL,
|
Shell.ActionMode.NORMAL,
|
||||||
Lang.bind(this, this._startWindowSwitcher));
|
Lang.bind(this, this._startSwitcher));
|
||||||
this.setCustomKeybindingHandler('switch-windows-backward',
|
this.setCustomKeybindingHandler('switch-windows-backward',
|
||||||
Shell.ActionMode.NORMAL,
|
Shell.ActionMode.NORMAL,
|
||||||
Lang.bind(this, this._startWindowSwitcher));
|
Lang.bind(this, this._startSwitcher));
|
||||||
|
this.setCustomKeybindingHandler('cycle-windows',
|
||||||
|
Shell.ActionMode.NORMAL,
|
||||||
|
Lang.bind(this, this._startSwitcher));
|
||||||
|
this.setCustomKeybindingHandler('cycle-windows-backward',
|
||||||
|
Shell.ActionMode.NORMAL,
|
||||||
|
Lang.bind(this, this._startSwitcher));
|
||||||
|
this.setCustomKeybindingHandler('cycle-group',
|
||||||
|
Shell.ActionMode.NORMAL,
|
||||||
|
Lang.bind(this, this._startSwitcher));
|
||||||
|
this.setCustomKeybindingHandler('cycle-group-backward',
|
||||||
|
Shell.ActionMode.NORMAL,
|
||||||
|
Lang.bind(this, this._startSwitcher));
|
||||||
this.setCustomKeybindingHandler('switch-panels',
|
this.setCustomKeybindingHandler('switch-panels',
|
||||||
Shell.ActionMode.NORMAL |
|
Shell.ActionMode.NORMAL |
|
||||||
Shell.ActionMode.OVERVIEW |
|
Shell.ActionMode.OVERVIEW |
|
||||||
@ -1337,9 +1349,13 @@ const WindowManager = new Lang.Class({
|
|||||||
_hasAttachedDialogs: function(window, ignoreWindow) {
|
_hasAttachedDialogs: function(window, ignoreWindow) {
|
||||||
var count = 0;
|
var count = 0;
|
||||||
window.foreach_transient(function(win) {
|
window.foreach_transient(function(win) {
|
||||||
if (win != ignoreWindow && win.is_attached_dialog())
|
if (win != ignoreWindow &&
|
||||||
|
win.is_attached_dialog() &&
|
||||||
|
win.get_transient_for() == window) {
|
||||||
count++;
|
count++;
|
||||||
return false;
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
});
|
});
|
||||||
return count != 0;
|
return count != 0;
|
||||||
},
|
},
|
||||||
@ -1408,6 +1424,11 @@ const WindowManager = new Lang.Class({
|
|||||||
|
|
||||||
actor._windowType = type;
|
actor._windowType = type;
|
||||||
}));
|
}));
|
||||||
|
actor.meta_window.connect('unmanaged', Lang.bind(this, function(window) {
|
||||||
|
let parent = window.get_transient_for();
|
||||||
|
if (parent)
|
||||||
|
this._checkDimming(parent);
|
||||||
|
}));
|
||||||
|
|
||||||
if (actor.meta_window.is_attached_dialog())
|
if (actor.meta_window.is_attached_dialog())
|
||||||
this._checkDimming(actor.get_meta_window().get_transient_for());
|
this._checkDimming(actor.get_meta_window().get_transient_for());
|
||||||
@ -1744,23 +1765,37 @@ const WindowManager = new Lang.Class({
|
|||||||
this._windowMenuManager.showWindowMenuForWindow(window, menu, rect);
|
this._windowMenuManager.showWindowMenuForWindow(window, menu, rect);
|
||||||
},
|
},
|
||||||
|
|
||||||
_startAppSwitcher : function(display, screen, window, binding) {
|
_startSwitcher: function(display, screen, window, binding) {
|
||||||
|
let constructor = null;
|
||||||
|
switch (binding.get_name()) {
|
||||||
|
case 'switch-applications':
|
||||||
|
case 'switch-applications-backward':
|
||||||
|
case 'switch-group':
|
||||||
|
case 'switch-group-backward':
|
||||||
|
constructor = AltTab.AppSwitcherPopup;
|
||||||
|
break;
|
||||||
|
case 'switch-windows':
|
||||||
|
case 'switch-windows-backward':
|
||||||
|
constructor = AltTab.WindowSwitcherPopup;
|
||||||
|
break;
|
||||||
|
case 'cycle-windows':
|
||||||
|
case 'cycle-windows-backward':
|
||||||
|
constructor = AltTab.WindowCyclerPopup;
|
||||||
|
break;
|
||||||
|
case 'cycle-group':
|
||||||
|
case 'cycle-group-backward':
|
||||||
|
constructor = AltTab.GroupCyclerPopup;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!constructor)
|
||||||
|
return;
|
||||||
|
|
||||||
/* prevent a corner case where both popups show up at once */
|
/* prevent a corner case where both popups show up at once */
|
||||||
if (this._workspaceSwitcherPopup != null)
|
if (this._workspaceSwitcherPopup != null)
|
||||||
this._workspaceSwitcherPopup.destroy();
|
this._workspaceSwitcherPopup.destroy();
|
||||||
|
|
||||||
let tabPopup = new AltTab.AppSwitcherPopup();
|
let tabPopup = new constructor();
|
||||||
|
|
||||||
if (!tabPopup.show(binding.is_reversed(), binding.get_name(), binding.get_mask()))
|
|
||||||
tabPopup.destroy();
|
|
||||||
},
|
|
||||||
|
|
||||||
_startWindowSwitcher : function(display, screen, window, binding) {
|
|
||||||
/* prevent a corner case where both popups show up at once */
|
|
||||||
if (this._workspaceSwitcherPopup != null)
|
|
||||||
this._workspaceSwitcherPopup.destroy();
|
|
||||||
|
|
||||||
let tabPopup = new AltTab.WindowSwitcherPopup();
|
|
||||||
|
|
||||||
if (!tabPopup.show(binding.is_reversed(), binding.get_name(), binding.get_mask()))
|
if (!tabPopup.show(binding.is_reversed(), binding.get_name(), binding.get_mask()))
|
||||||
tabPopup.destroy();
|
tabPopup.destroy();
|
||||||
|
@ -19,8 +19,7 @@ const WorkspaceSwitcherPopup = new Lang.Class({
|
|||||||
Name: 'WorkspaceSwitcherPopup',
|
Name: 'WorkspaceSwitcherPopup',
|
||||||
|
|
||||||
_init : function() {
|
_init : function() {
|
||||||
this.actor = new St.Widget({ reactive: true,
|
this.actor = new St.Widget({ x: 0,
|
||||||
x: 0,
|
|
||||||
y: 0,
|
y: 0,
|
||||||
width: global.screen_width,
|
width: global.screen_width,
|
||||||
height: global.screen_height,
|
height: global.screen_height,
|
||||||
|
@ -45,11 +45,11 @@ const PrimaryActorLayout = new Lang.Class({
|
|||||||
this.primaryActor = primaryActor;
|
this.primaryActor = primaryActor;
|
||||||
},
|
},
|
||||||
|
|
||||||
vfunc_get_preferred_width: function(forHeight) {
|
vfunc_get_preferred_width: function(container, forHeight) {
|
||||||
return this.primaryActor.get_preferred_width(forHeight);
|
return this.primaryActor.get_preferred_width(forHeight);
|
||||||
},
|
},
|
||||||
|
|
||||||
vfunc_get_preferred_height: function(forWidth) {
|
vfunc_get_preferred_height: function(container, forWidth) {
|
||||||
return this.primaryActor.get_preferred_height(forWidth);
|
return this.primaryActor.get_preferred_height(forWidth);
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
@ -103,7 +103,7 @@ const WorkspacesView = new Lang.Class({
|
|||||||
page_increment: 1,
|
page_increment: 1,
|
||||||
page_size: 1,
|
page_size: 1,
|
||||||
step_increment: 0,
|
step_increment: 0,
|
||||||
upper: 0 });
|
upper: global.screen.n_workspaces });
|
||||||
this.scrollAdjustment.connect('notify::value',
|
this.scrollAdjustment.connect('notify::value',
|
||||||
Lang.bind(this, this._onScroll));
|
Lang.bind(this, this._onScroll));
|
||||||
|
|
||||||
@ -374,6 +374,10 @@ const ExtraWorkspaceView = new Lang.Class({
|
|||||||
this._workspace.setActualGeometry(this._actualGeometry);
|
this._workspace.setActualGeometry(this._actualGeometry);
|
||||||
},
|
},
|
||||||
|
|
||||||
|
getActiveWorkspace: function() {
|
||||||
|
return this._workspace;
|
||||||
|
},
|
||||||
|
|
||||||
animateToOverview: function(animationType) {
|
animateToOverview: function(animationType) {
|
||||||
if (animationType == AnimationType.ZOOM)
|
if (animationType == AnimationType.ZOOM)
|
||||||
this._workspace.zoomToOverview();
|
this._workspace.zoomToOverview();
|
||||||
@ -421,8 +425,10 @@ const WorkspacesDisplay = new Lang.Class({
|
|||||||
// Only switch to the workspace when there's no application
|
// Only switch to the workspace when there's no application
|
||||||
// windows open. The problem is that it's too easy to miss
|
// windows open. The problem is that it's too easy to miss
|
||||||
// an app window and get the wrong one focused.
|
// an app window and get the wrong one focused.
|
||||||
|
let event = Clutter.get_current_event();
|
||||||
|
let index = this._getMonitorIndexForEvent(event);
|
||||||
if ((action.get_button() == 1 || action.get_button() == 0) &&
|
if ((action.get_button() == 1 || action.get_button() == 0) &&
|
||||||
this._getPrimaryView().getActiveWorkspace().isEmpty())
|
this._workspacesViews[index].getActiveWorkspace().isEmpty())
|
||||||
Main.overview.hide();
|
Main.overview.hide();
|
||||||
}));
|
}));
|
||||||
Main.overview.addAction(clickAction);
|
Main.overview.addAction(clickAction);
|
||||||
@ -431,11 +437,18 @@ const WorkspacesDisplay = new Lang.Class({
|
|||||||
let panAction = new Clutter.PanAction({ threshold_trigger_edge: Clutter.GestureTriggerEdge.AFTER });
|
let panAction = new Clutter.PanAction({ threshold_trigger_edge: Clutter.GestureTriggerEdge.AFTER });
|
||||||
panAction.connect('pan', Lang.bind(this, this._onPan));
|
panAction.connect('pan', Lang.bind(this, this._onPan));
|
||||||
panAction.connect('gesture-begin', Lang.bind(this, function() {
|
panAction.connect('gesture-begin', Lang.bind(this, function() {
|
||||||
|
if (this._workspacesOnlyOnPrimary) {
|
||||||
|
let event = Clutter.get_current_event();
|
||||||
|
if (this._getMonitorIndexForEvent(event) != this._primaryIndex)
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
for (let i = 0; i < this._workspacesViews.length; i++)
|
for (let i = 0; i < this._workspacesViews.length; i++)
|
||||||
this._workspacesViews[i].startSwipeScroll();
|
this._workspacesViews[i].startSwipeScroll();
|
||||||
return true;
|
return true;
|
||||||
}));
|
}));
|
||||||
panAction.connect('gesture-cancel', Lang.bind(this, function() {
|
panAction.connect('gesture-cancel', Lang.bind(this, function() {
|
||||||
|
clickAction.release();
|
||||||
for (let i = 0; i < this._workspacesViews.length; i++)
|
for (let i = 0; i < this._workspacesViews.length; i++)
|
||||||
this._workspacesViews[i].endSwipeScroll();
|
this._workspacesViews[i].endSwipeScroll();
|
||||||
}));
|
}));
|
||||||
@ -581,6 +594,12 @@ const WorkspacesDisplay = new Lang.Class({
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
_getMonitorIndexForEvent: function(event) {
|
||||||
|
let [x, y] = event.get_coords();
|
||||||
|
let rect = new Meta.Rectangle({ x: x, y: y, width: 1, height: 1 });
|
||||||
|
return global.screen.get_monitor_index_for_rect(rect);
|
||||||
|
},
|
||||||
|
|
||||||
_getPrimaryView: function() {
|
_getPrimaryView: function() {
|
||||||
if (!this._workspacesViews.length)
|
if (!this._workspacesViews.length)
|
||||||
return null;
|
return null;
|
||||||
@ -661,6 +680,11 @@ const WorkspacesDisplay = new Lang.Class({
|
|||||||
_onScrollEvent: function(actor, event) {
|
_onScrollEvent: function(actor, event) {
|
||||||
if (!this.actor.mapped)
|
if (!this.actor.mapped)
|
||||||
return Clutter.EVENT_PROPAGATE;
|
return Clutter.EVENT_PROPAGATE;
|
||||||
|
|
||||||
|
if (this._workspacesOnlyOnPrimary &&
|
||||||
|
this._getMonitorIndexForEvent(event) != this._primaryIndex)
|
||||||
|
return Clutter.EVENT_PROPAGATE;
|
||||||
|
|
||||||
let activeWs = global.screen.get_active_workspace();
|
let activeWs = global.screen.get_active_workspace();
|
||||||
let ws;
|
let ws;
|
||||||
switch (event.get_scroll_direction()) {
|
switch (event.get_scroll_direction()) {
|
||||||
|
68
po/Makevars
Normal file
68
po/Makevars
Normal file
@ -0,0 +1,68 @@
|
|||||||
|
# Makefile variables for PO directory in any package using GNU gettext.
|
||||||
|
|
||||||
|
# Usually the message domain is the same as the package name.
|
||||||
|
DOMAIN = $(PACKAGE)
|
||||||
|
|
||||||
|
# These two variables depend on the location of this directory.
|
||||||
|
subdir = po
|
||||||
|
top_builddir = ..
|
||||||
|
|
||||||
|
# These options get passed to xgettext.
|
||||||
|
XGETTEXT_OPTIONS = --from-code=UTF-8 --keyword=_ --keyword=N_ \
|
||||||
|
--keyword=C_:1c,2 --keyword=NC_:1c,2 \
|
||||||
|
--keyword=g_dngettext:2,3 --add-comments \
|
||||||
|
--flag=g_dngettext:2:pass-c-format \
|
||||||
|
--flag=g_strdup_printf:1:c-format \
|
||||||
|
--flag=g_string_printf:2:c-format \
|
||||||
|
--flag=g_string_append_printf:2:c-format \
|
||||||
|
--flag=g_error_new:3:c-format \
|
||||||
|
--flag=g_set_error:4:c-format \
|
||||||
|
--flag=g_markup_printf_escaped:1:c-format \
|
||||||
|
--flag=g_log:3:c-format \
|
||||||
|
--flag=g_print:1:c-format \
|
||||||
|
--flag=g_printerr:1:c-format \
|
||||||
|
--flag=g_printf:1:c-format \
|
||||||
|
--flag=g_fprintf:2:c-format \
|
||||||
|
--flag=g_sprintf:2:c-format \
|
||||||
|
--flag=g_snprintf:3:c-format
|
||||||
|
|
||||||
|
|
||||||
|
# This is the copyright holder that gets inserted into the header of the
|
||||||
|
# $(DOMAIN).pot file. Set this to the copyright holder of the surrounding
|
||||||
|
# package. (Note that the msgstr strings, extracted from the package's
|
||||||
|
# sources, belong to the copyright holder of the package.) Translators are
|
||||||
|
# expected to transfer the copyright for their translations to this person
|
||||||
|
# or entity, or to disclaim their copyright. The empty string stands for
|
||||||
|
# the public domain; in this case the translators are expected to disclaim
|
||||||
|
# their copyright.
|
||||||
|
COPYRIGHT_HOLDER = Translation copyright holder
|
||||||
|
# This is the email address or URL to which the translators shall report
|
||||||
|
# bugs in the untranslated strings:
|
||||||
|
# - Strings which are not entire sentences, see the maintainer guidelines
|
||||||
|
# in the GNU gettext documentation, section 'Preparing Strings'.
|
||||||
|
# - Strings which use unclear terms or require additional context to be
|
||||||
|
# understood.
|
||||||
|
# - Strings which make invalid assumptions about notation of date, time or
|
||||||
|
# money.
|
||||||
|
# - Pluralisation problems.
|
||||||
|
# - Incorrect English spelling.
|
||||||
|
# - Incorrect formatting.
|
||||||
|
# It can be your email address, or a mailing list address where translators
|
||||||
|
# can write to without being subscribed, or the URL of a web page through
|
||||||
|
# which the translators can contact you.
|
||||||
|
MSGID_BUGS_ADDRESS = http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-shell&keywords=I18N+L10N&component=general
|
||||||
|
|
||||||
|
# This is the list of locale categories, beyond LC_MESSAGES, for which the
|
||||||
|
# message catalogs shall be used. It is usually empty.
|
||||||
|
EXTRA_LOCALE_CATEGORIES =
|
||||||
|
|
||||||
|
# Ignore the timestamp of the .pot file, as git clones do not have
|
||||||
|
# deterministic timestamps, and .po files are updated by translators
|
||||||
|
# (only) in GNOME projects.
|
||||||
|
PO_DEPENDS_ON_POT = no
|
||||||
|
|
||||||
|
# This tells whether or not to forcibly update $(DOMAIN).pot and
|
||||||
|
# regenerate PO files on "make dist". Possible values are "yes" and
|
||||||
|
# "no". Set this to no if the POT file and PO files are maintained
|
||||||
|
# externally.
|
||||||
|
DIST_DEPENDS_ON_UPDATE_PO = no
|
@ -1,17 +1,17 @@
|
|||||||
# List of source files containing translatable strings.
|
# List of source files containing translatable strings.
|
||||||
# Please keep this file sorted alphabetically.
|
# Please keep this file sorted alphabetically.
|
||||||
[encoding: UTF-8]
|
data/50-gnome-shell-system.xml
|
||||||
data/50-gnome-shell-system.xml.in
|
|
||||||
data/gnome-shell-extension-prefs.desktop.in.in
|
data/gnome-shell-extension-prefs.desktop.in.in
|
||||||
data/org.gnome.Shell.desktop.in.in
|
data/org.gnome.Shell.desktop.in.in
|
||||||
data/org.gnome.shell.gschema.xml.in.in
|
data/org.gnome.shell.gschema.xml.in
|
||||||
data/org.gnome.Shell.PortalHelper.desktop.in
|
data/org.gnome.Shell.PortalHelper.desktop.in.in
|
||||||
js/extensionPrefs/main.js
|
js/extensionPrefs/main.js
|
||||||
js/gdm/authPrompt.js
|
js/gdm/authPrompt.js
|
||||||
js/gdm/loginDialog.js
|
js/gdm/loginDialog.js
|
||||||
js/gdm/util.js
|
js/gdm/util.js
|
||||||
js/misc/util.js
|
js/misc/util.js
|
||||||
js/portalHelper/main.js
|
js/portalHelper/main.js
|
||||||
|
js/ui/accessDialog.js
|
||||||
js/ui/appDisplay.js
|
js/ui/appDisplay.js
|
||||||
js/ui/appFavorites.js
|
js/ui/appFavorites.js
|
||||||
js/ui/audioDeviceSelection.js
|
js/ui/audioDeviceSelection.js
|
||||||
@ -61,7 +61,7 @@ js/ui/viewSelector.js
|
|||||||
js/ui/windowAttentionHandler.js
|
js/ui/windowAttentionHandler.js
|
||||||
js/ui/windowManager.js
|
js/ui/windowManager.js
|
||||||
js/ui/windowMenu.js
|
js/ui/windowMenu.js
|
||||||
src/calendar-server/evolution-calendar.desktop.in.in
|
src/calendar-server/evolution-calendar.desktop.in
|
||||||
# Please do not remove this file from POTFILES.in. Run "git submodule init && git submodule update" to get it.
|
# Please do not remove this file from POTFILES.in. Run "git submodule init && git submodule update" to get it.
|
||||||
src/gvc/gvc-mixer-control.c
|
src/gvc/gvc-mixer-control.c
|
||||||
src/main.c
|
src/main.c
|
||||||
|
@ -1,4 +0,0 @@
|
|||||||
data/org.gnome.shell.evolution.calendar.gschema.xml.in
|
|
||||||
src/calendar-server/evolution-calendar.desktop.in
|
|
||||||
# Meh, autofools :-(
|
|
||||||
sub/src/calendar-server/evolution-calendar.desktop.in
|
|
2
po/as.po
2
po/as.po
@ -13,7 +13,7 @@ msgstr ""
|
|||||||
"PO-Revision-Date: 2014-09-15 14:59+0530\n"
|
"PO-Revision-Date: 2014-09-15 14:59+0530\n"
|
||||||
"Last-Translator: Nilamdyuti Goswami <ngoswami@redhat.com>\n"
|
"Last-Translator: Nilamdyuti Goswami <ngoswami@redhat.com>\n"
|
||||||
"Language-Team: Assamese <kde-i18n-doc@kde.org>\n"
|
"Language-Team: Assamese <kde-i18n-doc@kde.org>\n"
|
||||||
"Language: as_IN\n"
|
"Language: as\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
1
po/bn.po
1
po/bn.po
@ -7,6 +7,7 @@ msgstr ""
|
|||||||
"PO-Revision-Date: 2011-04-04 11:04+0600\n"
|
"PO-Revision-Date: 2011-04-04 11:04+0600\n"
|
||||||
"Last-Translator: Israt Jahan <israt@ankur.org.bd>\n"
|
"Last-Translator: Israt Jahan <israt@ankur.org.bd>\n"
|
||||||
"Language-Team: Bengali <ankur-bd-l10n@googlegroups.com>\n"
|
"Language-Team: Bengali <ankur-bd-l10n@googlegroups.com>\n"
|
||||||
|
"Language: bn\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
@ -11,7 +11,7 @@ msgstr ""
|
|||||||
"PO-Revision-Date: 2014-12-30 16:45+0000\n"
|
"PO-Revision-Date: 2014-12-30 16:45+0000\n"
|
||||||
"Last-Translator: \n"
|
"Last-Translator: \n"
|
||||||
"Language-Team: American English <kde-i18n-doc@kde.org>\n"
|
"Language-Team: American English <kde-i18n-doc@kde.org>\n"
|
||||||
"Language: en_US\n"
|
"Language: bn_IN\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
@ -14,7 +14,7 @@ msgstr ""
|
|||||||
"PO-Revision-Date: 2014-09-14 23:32+0200\n"
|
"PO-Revision-Date: 2014-09-14 23:32+0200\n"
|
||||||
"Last-Translator: Gil Forcada <gilforcada@guifi.net>\n"
|
"Last-Translator: Gil Forcada <gilforcada@guifi.net>\n"
|
||||||
"Language-Team: Catalan <tradgnome@softcatala.org>\n"
|
"Language-Team: Catalan <tradgnome@softcatala.org>\n"
|
||||||
"Language: ca-XV\n"
|
"Language: ca@valencia\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bits\n"
|
"Content-Transfer-Encoding: 8bits\n"
|
||||||
|
1821
po/en_GB.po
1821
po/en_GB.po
File diff suppressed because it is too large
Load Diff
458
po/gd.po
458
po/gd.po
@ -1,14 +1,14 @@
|
|||||||
# Scottish Gaelic translation for gnome-shell.
|
# Scottish Gaelic translation for gnome-shell.
|
||||||
# Copyright (C) 2015 gnome-shell's COPYRIGHT HOLDER
|
# Copyright (C) 2015 gnome-shell's COPYRIGHT HOLDER
|
||||||
# This file is distributed under the same license as the gnome-shell package.
|
# This file is distributed under the same license as the gnome-shell package.
|
||||||
# GunChleoc <fios@foramnagaidhlig.net>, 2015.
|
# GunChleoc <fios@foramnagaidhlig.net>, 2015, 2016.
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: gnome-shell master\n"
|
"Project-Id-Version: gnome-shell master\n"
|
||||||
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
|
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
|
||||||
"shell&keywords=I18N+L10N&component=general\n"
|
"shell&keywords=I18N+L10N&component=general\n"
|
||||||
"POT-Creation-Date: 2015-11-17 16:10+0000\n"
|
"POT-Creation-Date: 2016-04-28 21:52+0000\n"
|
||||||
"PO-Revision-Date: 2015-11-17 17:10+0100\n"
|
"PO-Revision-Date: 2016-04-29 10:56+0100\n"
|
||||||
"Last-Translator: GunChleoc <fios@foramnagaidhlig.net>\n"
|
"Last-Translator: GunChleoc <fios@foramnagaidhlig.net>\n"
|
||||||
"Language-Team: Fòram na Gàidhlig\n"
|
"Language-Team: Fòram na Gàidhlig\n"
|
||||||
"Language: gd\n"
|
"Language: gd\n"
|
||||||
@ -61,85 +61,329 @@ msgstr "Slige GNOME"
|
|||||||
msgid "Window management and application launching"
|
msgid "Window management and application launching"
|
||||||
msgstr "Stiùireadh uinneagan is tòiseachadh aplacaidean"
|
msgstr "Stiùireadh uinneagan is tòiseachadh aplacaidean"
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:1
|
||||||
|
msgid "Enable internal tools useful for developers and testers from Alt-F2"
|
||||||
|
msgstr ""
|
||||||
|
"Cuir an comas innealan airson luchd-leasachaidh 's luchd-deuchainn o Alt-F2"
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:2
|
||||||
|
msgid ""
|
||||||
|
"Allows access to internal debugging and monitoring tools using the Alt-F2 "
|
||||||
|
"dialog."
|
||||||
|
msgstr ""
|
||||||
|
"Ceadaich inntrigeadh dha na h-innealan a chum dì-bhugachaidh 's sgrùdaidh le "
|
||||||
|
"còmhradh Alt-F2."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:3
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:3
|
||||||
#| msgid "No extensions installed"
|
|
||||||
msgid "UUIDs of extensions to enable"
|
msgid "UUIDs of extensions to enable"
|
||||||
msgstr "UUIDs nan leudachan ri an cur an comas"
|
msgstr "UUIDs nan leudachan ri an cur an comas"
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:4
|
||||||
|
msgid ""
|
||||||
|
"GNOME Shell extensions have a UUID property; this key lists extensions which "
|
||||||
|
"should be loaded. Any extension that wants to be loaded needs to be in this "
|
||||||
|
"list. You can also manipulate this list with the EnableExtension and "
|
||||||
|
"DisableExtension D-Bus methods on org.gnome.Shell."
|
||||||
|
msgstr ""
|
||||||
|
"Tha buadh UUID aig leudachain na Slige GNOME; seallaidh an iuchair sin na "
|
||||||
|
"leudachain a bu chòir luchdadh. Feumaidh gach leudachan a tha ag iarraidh "
|
||||||
|
"luchdadh a bhith air an liosta seo. 'S urrainn dhut an liosta seo "
|
||||||
|
"atharrachadh cuideachd leis na modhan D-Bus EnableExtension agus "
|
||||||
|
"DisableExtension air org.gnome.Shell."
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:5
|
||||||
|
msgid "Disables the validation of extension version compatibility"
|
||||||
|
msgstr ""
|
||||||
|
"Cuiridh seo à comas dearbhadh na co-chòrdalachd airson tionndadh nan "
|
||||||
|
"leudachan"
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:6
|
||||||
|
msgid ""
|
||||||
|
"GNOME Shell will only load extensions that claim to support the current "
|
||||||
|
"running version. Enabling this option will disable this check and try to "
|
||||||
|
"load all extensions regardless of the versions they claim to support."
|
||||||
|
msgstr ""
|
||||||
|
"Cha luchdaich an t-Slige GNOME ach leudachain a dh'innseas gu bheil iar co-"
|
||||||
|
"chòrdail leis an tionndadh a tha 'ga ruith. Ma chuireas tu an roghainn seo "
|
||||||
|
"an comas, thèid an dearbhadh a chur à comas agus feuchaidh sinn ris a h-uile "
|
||||||
|
"leudachan a luchdadh ge b' e dè na tionndaidhean ris an cuir iad taic dhan "
|
||||||
|
"rèir-san."
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:7
|
||||||
|
msgid "List of desktop file IDs for favorite applications"
|
||||||
|
msgstr ""
|
||||||
|
"Liosta dhe IDan nam faidhlichean desktop airson nan aplacaidean as annsa "
|
||||||
|
"leat"
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:8
|
||||||
|
msgid ""
|
||||||
|
"The applications corresponding to these identifiers will be displayed in the "
|
||||||
|
"favorites area."
|
||||||
|
msgstr ""
|
||||||
|
"Thèid na h-aplacaidean a fhreagras ris na h-aithnichearan seo a shealltainn "
|
||||||
|
"air raon nan annsachdan."
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:9
|
||||||
|
msgid "App Picker View"
|
||||||
|
msgstr "Sealladh roghnaichear nan aplacaid"
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:10
|
||||||
|
msgid "Index of the currently selected view in the application picker."
|
||||||
|
msgstr "Inneacs an t-seallaidh làithrich ann an roghnaichear nan aplacaid."
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:11
|
||||||
|
msgid "History for command (Alt-F2) dialog"
|
||||||
|
msgstr "Eachdraidh a' chòmhraidh-àithne (Alt-F2)"
|
||||||
|
|
||||||
|
#. 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 "Eachdraidh a' chomhraidh aig looking glass"
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:14
|
||||||
|
msgid "Always show the 'Log out' menu item in the user menu."
|
||||||
|
msgstr ""
|
||||||
|
"Seall nì \"Clàraich a-mach\" air clàr-taice a' chleachdaiche an-còmhnaidh."
|
||||||
|
|
||||||
|
#: ../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."
|
||||||
|
msgstr ""
|
||||||
|
"Tar-àithnidh an iuchair seo am falach fèin-obrachail aig \"Clàraich a-mach\" "
|
||||||
|
"air a' chlar-taice ann an suidheachaidhean le aon chleachdaiche 's aon "
|
||||||
|
"seisean a-mhàin."
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:16
|
||||||
|
msgid ""
|
||||||
|
"Whether to remember password for mounting encrypted or remote filesystems"
|
||||||
|
msgstr ""
|
||||||
|
"Co-dhiù an dèid am facal-faire a chuimhneachadh airson munntachadh "
|
||||||
|
"shiostaman-fhaidhlichean crioptaichte no cèine"
|
||||||
|
|
||||||
|
#: ../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 "
|
||||||
|
"'Remember Password' checkbox will be present. This key sets the default "
|
||||||
|
"state of the checkbox."
|
||||||
|
msgstr ""
|
||||||
|
"Iarraidh an t-slige facal-fàire ort nuair a thèid siostam-fhaidhlichean "
|
||||||
|
"crioptaichte no cèin a mhunntachadh. Ma ghabhas am facal-faire sàbhaladh "
|
||||||
|
"airson na h-ama ri teachd, bidh bogsa-còmhraige \"Cuimhnich am facal-fàire\" "
|
||||||
|
"ann. Suidhichidh an iuchair seo staid tùsail na bogsa-còmhraige ud."
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:18
|
||||||
|
msgid ""
|
||||||
|
"Whether the default Bluetooth adapter had set up devices associated to it"
|
||||||
|
msgstr ""
|
||||||
|
"Co-dhiù an robh uidheaman co-cheangailte ris an adaptar Bluetooth gus nach "
|
||||||
|
"robh"
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:19
|
||||||
|
msgid ""
|
||||||
|
"The shell will only show a Bluetooth menu item if a Bluetooth adapter is "
|
||||||
|
"powered, or if there were devices set up associated with the default "
|
||||||
|
"adapter. This will be reset if the default adapter is ever seen not to have "
|
||||||
|
"devices associated to it."
|
||||||
|
msgstr ""
|
||||||
|
"Cha seall an t-slige nì clàir-taice \"Bluetooth\" ach ma tha cumhachd aig "
|
||||||
|
"adaptar Bluetooth na ma chaidh uidheaman co-cheangailte ris an adaptar "
|
||||||
|
"tùsail roimhe. Thèid seo ath-shuidheachadh ma chithear an t-adaptar tùsail "
|
||||||
|
"gun uidheam co-cheangailte ris."
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:20
|
||||||
|
msgid "Show the week date in the calendar"
|
||||||
|
msgstr "Seall latha na seachdaine air a' mhìosachan"
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:21
|
||||||
|
msgid "If true, display the ISO week date in the calendar."
|
||||||
|
msgstr "Mas e true a th' ann, seall latha na seachdaine ISO air a' mhìosachan."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:22
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:22
|
||||||
#| msgid "Open the application menu"
|
|
||||||
msgid "Keybinding to open the application menu"
|
msgid "Keybinding to open the application menu"
|
||||||
msgstr "Nasgadh iuchrach gus clàr-taice na h-aplacaid fhosgladh"
|
msgstr "Nasgadh iuchrach gus clàr-taice na h-aplacaid fhosgladh"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:23
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:23
|
||||||
#| msgid "Open the application menu"
|
|
||||||
msgid "Keybinding to open the application menu."
|
msgid "Keybinding to open the application menu."
|
||||||
msgstr "Nasgadh iuchrach gus clàr-taice na h-aplacaid fhosgladh."
|
msgstr "Nasgadh iuchrach gus clàr-taice na h-aplacaid fhosgladh."
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:24
|
||||||
|
#| msgid "Keybinding to open the application menu"
|
||||||
|
msgid "Keybinding to open the \"Show Applications\" view"
|
||||||
|
msgstr "Nasgadh iuchrach gus an sealladh \"Seall aplacaidean\" fhosgladh"
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:25
|
||||||
|
#| msgid "Keybinding to open the application menu."
|
||||||
|
msgid ""
|
||||||
|
"Keybinding to open the \"Show Applications\" view of the Activities Overview."
|
||||||
|
msgstr ""
|
||||||
|
"Nasgadh iuchrach gus an sealladh \"Seall aplacaidean\" aig foir-shealladh na "
|
||||||
|
"gnìomhachd fhosgladh."
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:26
|
||||||
|
#| msgid "Keybinding to open the application menu"
|
||||||
|
msgid "Keybinding to open the overview"
|
||||||
|
msgstr "Nasgadh iuchrach gus am foir-shealladh fhosgladh"
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:27
|
||||||
|
#| msgid "Keybinding to open the application menu."
|
||||||
|
msgid "Keybinding to open the Activities Overview."
|
||||||
|
msgstr "Nasgadh iuchrach gus foir-shealladh na gnìomhachd fhosgladh."
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:28
|
||||||
|
#| msgid "Keybinding to focus the active notification"
|
||||||
|
msgid "Keybinding to toggle the visibility of the notification list"
|
||||||
|
msgstr ""
|
||||||
|
"Nasgadh iuchrach gus an fhaicsinneachd air liosta nam brathan a thoglachadh"
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:29
|
||||||
|
#| msgid "Keybinding to focus the active notification."
|
||||||
|
msgid "Keybinding to toggle the visibility of the notification list."
|
||||||
|
msgstr ""
|
||||||
|
"Nasgadh iuchrach gus an fhaicsinneachd air liosta nam brathan a thoglachadh."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:30
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:30
|
||||||
#| msgid "Focus the active notification"
|
|
||||||
msgid "Keybinding to focus the active notification"
|
msgid "Keybinding to focus the active notification"
|
||||||
msgstr "Nasgadh iuchrach gus am fòcas a chur air a' bhrath ghnìomhach"
|
msgstr "Nasgadh iuchrach gus am fòcas a chur air a' bhrath ghnìomhach"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:31
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:31
|
||||||
#| msgid "Focus the active notification"
|
|
||||||
msgid "Keybinding to focus the active notification."
|
msgid "Keybinding to focus the active notification."
|
||||||
msgstr "Nasgadh iuchrach gus am fòcas a chur air a' bhrath ghnìomhach."
|
msgstr "Nasgadh iuchrach gus am fòcas a chur air a' bhrath ghnìomhach."
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:32
|
||||||
|
msgid ""
|
||||||
|
"Keybinding that pauses and resumes all running tweens, for debugging purposes"
|
||||||
|
msgstr ""
|
||||||
|
"Nasgadh iuchrach a chuir gach tween a tha 'ga ruith 'na stad 's a "
|
||||||
|
"thòisicheas orra a-rithist a chum dì-bhugachaidh"
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:33
|
||||||
|
msgid "Which keyboard to use"
|
||||||
|
msgstr "Am meur-chlàr ri chleachdadh"
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:34
|
||||||
|
msgid "The type of keyboard to use."
|
||||||
|
msgstr "An seòrsa de mheur-chlàr a thèid a chleachdadh."
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:35
|
||||||
|
msgid "Limit switcher to current workspace."
|
||||||
|
msgstr "Cuingich an t-suidsear air an rum-obrach làithreach."
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:36
|
||||||
|
msgid ""
|
||||||
|
"If true, only applications that have windows on the current workspace are "
|
||||||
|
"shown in the switcher. Otherwise, all applications are included."
|
||||||
|
msgstr ""
|
||||||
|
"Mas e true a th' ann, cha dèid a shealltainn san t-suidsear ach na "
|
||||||
|
"h-aplacaidean aig a bheil uinneag san rum-obrach làithreach. Mur e, thèid a "
|
||||||
|
"h-uile aplacaid a ghabhail a-steach."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:37
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:37
|
||||||
#| msgid "Open the application menu"
|
|
||||||
msgid "The application icon mode."
|
msgid "The application icon mode."
|
||||||
msgstr "Modh ìomhaigheag na h-aplacaid."
|
msgstr "Modh ìomhaigheag na h-aplacaid."
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:38
|
||||||
|
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'."
|
||||||
|
msgstr ""
|
||||||
|
"Rèitichidh seo an dòigh sa thèid na h-uinneagan a shealltainn san "
|
||||||
|
"t-suidsear. 'S e \"thumbnail-only\" (seallaidh seo dealbhag na h-uinneige), "
|
||||||
|
"\"app-icon-only\" (seallaidh seo ìomhaigheag na h-aplacaid) no \"both\" "
|
||||||
|
"(seallaidh seo an dà chuid dhiubh) a tha sna luachan dligheach."
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:39
|
||||||
|
msgid ""
|
||||||
|
"If true, only windows from the current workspace are shown in the switcher. "
|
||||||
|
"Otherwise, all windows are included."
|
||||||
|
msgstr ""
|
||||||
|
"Mas e true a th' ann, cha dèid a shealltainn san t-suidsear ach na "
|
||||||
|
"h-uinneagan a tha san rum-obrach làithreach. Mur e, thèid a h-uile uinneag a "
|
||||||
|
"ghabhail a-steach."
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:40
|
||||||
|
msgid "Attach modal dialog to the parent window"
|
||||||
|
msgstr "Ceangail còmhradh mòdach ris an uinneag-pàraint"
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:41
|
||||||
|
msgid ""
|
||||||
|
"This key overrides the key in org.gnome.mutter when running GNOME Shell."
|
||||||
|
msgstr ""
|
||||||
|
"Tar-àithnidh an iuchair seo an iuchair ann an org.gnome.mutter nuair a thèid "
|
||||||
|
"Slige GNOME a ruith."
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:42
|
||||||
|
msgid "Enable edge tiling when dropping windows on screen edges"
|
||||||
|
msgstr ""
|
||||||
|
"Cuir leacadh nan oirean an comas nuair a thèid uinneagan a leigeil às aig "
|
||||||
|
"oir na sgrìn"
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:43
|
||||||
|
msgid "Workspaces are managed dynamically"
|
||||||
|
msgstr "Thèid na rumannan-obrach a stiùireadh a làimh"
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:44
|
||||||
|
msgid "Workspaces only on primary monitor"
|
||||||
|
msgstr "Rumannan-obrach air a' phrìomh-sgrìn a-mhàin"
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:45
|
||||||
|
msgid "Delay focus changes in mouse mode until the pointer stops moving"
|
||||||
|
msgstr ""
|
||||||
|
"Cuir dàil air atharraichean an fòcais ann am modh luchaige gus an sguir an "
|
||||||
|
"tomhaire air gluasad"
|
||||||
|
|
||||||
#: ../data/org.gnome.Shell.PortalHelper.desktop.in.h:1
|
#: ../data/org.gnome.Shell.PortalHelper.desktop.in.h:1
|
||||||
msgid "Network Login"
|
msgid "Network Login"
|
||||||
msgstr "Clàradh a-steach lìonraidh"
|
msgstr "Clàradh a-steach lìonraidh"
|
||||||
|
|
||||||
#: ../js/extensionPrefs/main.js:122
|
#: ../js/extensionPrefs/main.js:117
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "There was an error loading the preferences dialog for %s:"
|
msgid "There was an error loading the preferences dialog for %s:"
|
||||||
msgstr "Thachair mearachd le luchdadh còmhradh nan roghainnean airson %s:"
|
msgstr "Thachair mearachd le luchdadh còmhradh nan roghainnean airson %s:"
|
||||||
|
|
||||||
#: ../js/extensionPrefs/main.js:154
|
#: ../js/extensionPrefs/main.js:149
|
||||||
msgid "GNOME Shell Extensions"
|
msgid "GNOME Shell Extensions"
|
||||||
msgstr "Leudachain na Slige GNOME"
|
msgstr "Leudachain na Slige GNOME"
|
||||||
|
|
||||||
#: ../js/gdm/authPrompt.js:147 ../js/ui/components/networkAgent.js:145
|
#: ../js/gdm/authPrompt.js:147 ../js/ui/audioDeviceSelection.js:71
|
||||||
|
#: ../js/ui/components/networkAgent.js:145
|
||||||
#: ../js/ui/components/polkitAgent.js:179 ../js/ui/endSessionDialog.js:452
|
#: ../js/ui/components/polkitAgent.js:179 ../js/ui/endSessionDialog.js:452
|
||||||
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:399
|
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:399
|
||||||
#: ../js/ui/status/network.js:916
|
#: ../js/ui/status/network.js:916
|
||||||
msgid "Cancel"
|
msgid "Cancel"
|
||||||
msgstr "Sguir dheth"
|
msgstr "Sguir dheth"
|
||||||
|
|
||||||
#: ../js/gdm/authPrompt.js:169 ../js/gdm/authPrompt.js:215
|
#: ../js/gdm/authPrompt.js:169 ../js/gdm/authPrompt.js:216
|
||||||
#: ../js/gdm/authPrompt.js:447
|
#: ../js/gdm/authPrompt.js:448
|
||||||
msgid "Next"
|
msgid "Next"
|
||||||
msgstr "Air adhart"
|
msgstr "Air adhart"
|
||||||
|
|
||||||
#: ../js/gdm/authPrompt.js:211 ../js/ui/shellMountOperation.js:403
|
#: ../js/gdm/authPrompt.js:212 ../js/ui/shellMountOperation.js:403
|
||||||
#: ../js/ui/unlockDialog.js:59
|
#: ../js/ui/unlockDialog.js:59
|
||||||
msgid "Unlock"
|
msgid "Unlock"
|
||||||
msgstr "Neo-ghlais"
|
msgstr "Neo-ghlais"
|
||||||
|
|
||||||
#: ../js/gdm/authPrompt.js:213
|
#: ../js/gdm/authPrompt.js:214
|
||||||
msgctxt "button"
|
msgctxt "button"
|
||||||
msgid "Sign In"
|
msgid "Sign In"
|
||||||
msgstr "Clàraich a-steach"
|
msgstr "Clàraich a-steach"
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:281
|
#: ../js/gdm/loginDialog.js:285
|
||||||
msgid "Choose Session"
|
msgid "Choose Session"
|
||||||
msgstr "Tagh seisean"
|
msgstr "Tagh seisean"
|
||||||
|
|
||||||
#. translators: this message is shown below the user list on the
|
#. translators: this message is shown below the user list on the
|
||||||
#. login screen. It can be activated to reveal an entry for
|
#. login screen. It can be activated to reveal an entry for
|
||||||
#. manually entering the username.
|
#. manually entering the username.
|
||||||
#: ../js/gdm/loginDialog.js:431
|
#: ../js/gdm/loginDialog.js:435
|
||||||
msgid "Not listed?"
|
msgid "Not listed?"
|
||||||
msgstr "Nach eil e air an liosta?"
|
msgstr "Nach eil e air an liosta?"
|
||||||
|
|
||||||
#. Translators: this message is shown below the username entry field
|
#. Translators: this message is shown below the username entry field
|
||||||
#. to clue the user in on how to login to the local network realm
|
#. to clue the user in on how to login to the local network realm
|
||||||
#: ../js/gdm/loginDialog.js:850
|
#: ../js/gdm/loginDialog.js:854
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "(e.g., user or %s)"
|
msgid "(e.g., user or %s)"
|
||||||
msgstr "(m.e., cleachdaiche no %s)"
|
msgstr "(m.e., cleachdaiche no %s)"
|
||||||
@ -147,12 +391,12 @@ msgstr "(m.e., cleachdaiche no %s)"
|
|||||||
#. TTLS and PEAP are actually much more complicated, but this complication
|
#. TTLS and PEAP are actually much more complicated, but this complication
|
||||||
#. is not visible here since we only care about phase2 authentication
|
#. is not visible here since we only care about phase2 authentication
|
||||||
#. (and don't even care of which one)
|
#. (and don't even care of which one)
|
||||||
#: ../js/gdm/loginDialog.js:855 ../js/ui/components/networkAgent.js:271
|
#: ../js/gdm/loginDialog.js:859 ../js/ui/components/networkAgent.js:271
|
||||||
#: ../js/ui/components/networkAgent.js:289
|
#: ../js/ui/components/networkAgent.js:289
|
||||||
msgid "Username: "
|
msgid "Username: "
|
||||||
msgstr "Ainm-cleachdaiche:"
|
msgstr "Ainm-cleachdaiche:"
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:1180
|
#: ../js/gdm/loginDialog.js:1196
|
||||||
msgid "Login Window"
|
msgid "Login Window"
|
||||||
msgstr "Uinneag a' chlàraidh a-steach"
|
msgstr "Uinneag a' chlàraidh a-steach"
|
||||||
|
|
||||||
@ -288,16 +532,37 @@ msgstr "Cuir ris na h-annsachdan"
|
|||||||
msgid "Show Details"
|
msgid "Show Details"
|
||||||
msgstr "Seall am mion-fhiosrachadh"
|
msgstr "Seall am mion-fhiosrachadh"
|
||||||
|
|
||||||
#: ../js/ui/appFavorites.js:133
|
#: ../js/ui/appFavorites.js:134
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "%s has been added to your favorites."
|
msgid "%s has been added to your favorites."
|
||||||
msgstr "Chaidh %s a chur ris na h-annsachdan agad."
|
msgstr "Chaidh %s a chur ris na h-annsachdan agad."
|
||||||
|
|
||||||
#: ../js/ui/appFavorites.js:167
|
#: ../js/ui/appFavorites.js:168
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "%s has been removed from your favorites."
|
msgid "%s has been removed from your favorites."
|
||||||
msgstr "Chaidh %s a toirt air falbh o na h-annsachdan agad."
|
msgstr "Chaidh %s a toirt air falbh o na h-annsachdan agad."
|
||||||
|
|
||||||
|
#: ../js/ui/audioDeviceSelection.js:59
|
||||||
|
msgid "Select Audio Device"
|
||||||
|
msgstr "Tagh uidheam fuaime"
|
||||||
|
|
||||||
|
#: ../js/ui/audioDeviceSelection.js:69
|
||||||
|
#| msgid "Account Settings"
|
||||||
|
msgid "Sound Settings"
|
||||||
|
msgstr "Roghainnean fuaime"
|
||||||
|
|
||||||
|
#: ../js/ui/audioDeviceSelection.js:78
|
||||||
|
msgid "Headphones"
|
||||||
|
msgstr "Headphones"
|
||||||
|
|
||||||
|
#: ../js/ui/audioDeviceSelection.js:80
|
||||||
|
msgid "Headset"
|
||||||
|
msgstr "Headset"
|
||||||
|
|
||||||
|
#: ../js/ui/audioDeviceSelection.js:82 ../js/ui/status/volume.js:213
|
||||||
|
msgid "Microphone"
|
||||||
|
msgstr "Micreofon"
|
||||||
|
|
||||||
#: ../js/ui/backgroundMenu.js:19
|
#: ../js/ui/backgroundMenu.js:19
|
||||||
msgid "Change Background…"
|
msgid "Change Background…"
|
||||||
msgstr "Atharraich an cùlaibh…"
|
msgstr "Atharraich an cùlaibh…"
|
||||||
@ -306,12 +571,12 @@ msgstr "Atharraich an cùlaibh…"
|
|||||||
msgid "Display Settings"
|
msgid "Display Settings"
|
||||||
msgstr "Roghainnean an t-seallaidh"
|
msgstr "Roghainnean an t-seallaidh"
|
||||||
|
|
||||||
#: ../js/ui/backgroundMenu.js:22 ../js/ui/status/system.js:366
|
#: ../js/ui/backgroundMenu.js:22 ../js/ui/status/system.js:371
|
||||||
msgid "Settings"
|
msgid "Settings"
|
||||||
msgstr "Roghainnean"
|
msgstr "Roghainnean"
|
||||||
|
|
||||||
#. Translators: Enter 0-6 (Sunday-Saturday) for non-work days. Examples: "0" (Sunday) "6" (Saturday) "06" (Sunday and Saturday).
|
#. Translators: Enter 0-6 (Sunday-Saturday) for non-work days. Examples: "0" (Sunday) "6" (Saturday) "06" (Sunday and Saturday).
|
||||||
#: ../js/ui/calendar.js:55
|
#: ../js/ui/calendar.js:47
|
||||||
msgctxt "calendar-no-work"
|
msgctxt "calendar-no-work"
|
||||||
msgid "06"
|
msgid "06"
|
||||||
msgstr "06"
|
msgstr "06"
|
||||||
@ -321,100 +586,96 @@ msgstr "06"
|
|||||||
#. * NOTE: These grid abbreviations are always shown together
|
#. * NOTE: These grid abbreviations are always shown together
|
||||||
#. * and in order, e.g. "S M T W T F S".
|
#. * and in order, e.g. "S M T W T F S".
|
||||||
#.
|
#.
|
||||||
#: ../js/ui/calendar.js:84
|
#: ../js/ui/calendar.js:76
|
||||||
msgctxt "grid sunday"
|
msgctxt "grid sunday"
|
||||||
msgid "S"
|
msgid "S"
|
||||||
msgstr "Dò"
|
msgstr "Dò"
|
||||||
|
|
||||||
#. Translators: Calendar grid abbreviation for Monday
|
#. Translators: Calendar grid abbreviation for Monday
|
||||||
#: ../js/ui/calendar.js:86
|
#: ../js/ui/calendar.js:78
|
||||||
msgctxt "grid monday"
|
msgctxt "grid monday"
|
||||||
msgid "M"
|
msgid "M"
|
||||||
msgstr "Lu"
|
msgstr "Lu"
|
||||||
|
|
||||||
#. Translators: Calendar grid abbreviation for Tuesday
|
#. Translators: Calendar grid abbreviation for Tuesday
|
||||||
#: ../js/ui/calendar.js:88
|
#: ../js/ui/calendar.js:80
|
||||||
msgctxt "grid tuesday"
|
msgctxt "grid tuesday"
|
||||||
msgid "T"
|
msgid "T"
|
||||||
msgstr "Mà"
|
msgstr "Mà"
|
||||||
|
|
||||||
#. Translators: Calendar grid abbreviation for Wednesday
|
#. Translators: Calendar grid abbreviation for Wednesday
|
||||||
#: ../js/ui/calendar.js:90
|
#: ../js/ui/calendar.js:82
|
||||||
msgctxt "grid wednesday"
|
msgctxt "grid wednesday"
|
||||||
msgid "W"
|
msgid "W"
|
||||||
msgstr "Ci"
|
msgstr "Ci"
|
||||||
|
|
||||||
#. Translators: Calendar grid abbreviation for Thursday
|
#. Translators: Calendar grid abbreviation for Thursday
|
||||||
#: ../js/ui/calendar.js:92
|
#: ../js/ui/calendar.js:84
|
||||||
msgctxt "grid thursday"
|
msgctxt "grid thursday"
|
||||||
msgid "T"
|
msgid "T"
|
||||||
msgstr "Da"
|
msgstr "Da"
|
||||||
|
|
||||||
#. Translators: Calendar grid abbreviation for Friday
|
#. Translators: Calendar grid abbreviation for Friday
|
||||||
#: ../js/ui/calendar.js:94
|
#: ../js/ui/calendar.js:86
|
||||||
msgctxt "grid friday"
|
msgctxt "grid friday"
|
||||||
msgid "F"
|
msgid "F"
|
||||||
msgstr "hA"
|
msgstr "hA"
|
||||||
|
|
||||||
#. Translators: Calendar grid abbreviation for Saturday
|
#. Translators: Calendar grid abbreviation for Saturday
|
||||||
#: ../js/ui/calendar.js:96
|
#: ../js/ui/calendar.js:88
|
||||||
msgctxt "grid saturday"
|
msgctxt "grid saturday"
|
||||||
msgid "S"
|
msgid "S"
|
||||||
msgstr "Sa"
|
msgstr "Sa"
|
||||||
|
|
||||||
#: ../js/ui/calendar.js:566
|
#: ../js/ui/calendar.js:416
|
||||||
msgid "Previous month"
|
msgid "Previous month"
|
||||||
msgstr "Am mìos roimhe"
|
msgstr "Am mìos roimhe"
|
||||||
|
|
||||||
#: ../js/ui/calendar.js:576
|
#: ../js/ui/calendar.js:426
|
||||||
msgid "Next month"
|
msgid "Next month"
|
||||||
msgstr "An ath mhìos"
|
msgstr "An ath mhìos"
|
||||||
|
|
||||||
#: ../js/ui/calendar.js:728
|
#: ../js/ui/calendar.js:579
|
||||||
#, javascript-format
|
#, no-javascript-format
|
||||||
msgctxt "date day number format"
|
msgctxt "date day number format"
|
||||||
msgid "%d"
|
msgid "%d"
|
||||||
msgstr "%d"
|
msgstr "%d"
|
||||||
|
|
||||||
#: ../js/ui/calendar.js:783
|
#: ../js/ui/calendar.js:634
|
||||||
msgid "Week %V"
|
msgid "Week %V"
|
||||||
msgstr "Seachdain %V"
|
msgstr "Seachdain %V"
|
||||||
|
|
||||||
#. Translators: Shown in calendar event list for all day events
|
#. Translators: Shown in calendar event list for all day events
|
||||||
#. * Keep it short, best if you can use less then 10 characters
|
#. * Keep it short, best if you can use less then 10 characters
|
||||||
#.
|
#.
|
||||||
#: ../js/ui/calendar.js:1188
|
#: ../js/ui/calendar.js:695
|
||||||
msgctxt "event list time"
|
msgctxt "event list time"
|
||||||
msgid "All Day"
|
msgid "All Day"
|
||||||
msgstr "Fad an latha"
|
msgstr "Fad an latha"
|
||||||
|
|
||||||
#: ../js/ui/calendar.js:1295
|
#: ../js/ui/calendar.js:821
|
||||||
msgid "Clear section"
|
|
||||||
msgstr "Falamhaich an earrann"
|
|
||||||
|
|
||||||
#: ../js/ui/calendar.js:1522
|
|
||||||
msgid "Events"
|
msgid "Events"
|
||||||
msgstr "Tachartasan"
|
msgstr "Tachartasan"
|
||||||
|
|
||||||
#: ../js/ui/calendar.js:1531
|
#: ../js/ui/calendar.js:830
|
||||||
msgctxt "calendar heading"
|
msgctxt "calendar heading"
|
||||||
msgid "%A, %B %d"
|
msgid "%A, %B %d"
|
||||||
msgstr "%A, %d %B"
|
msgstr "%A, %d %B"
|
||||||
|
|
||||||
#: ../js/ui/calendar.js:1535
|
#: ../js/ui/calendar.js:834
|
||||||
msgctxt "calendar heading"
|
msgctxt "calendar heading"
|
||||||
msgid "%A, %B %d, %Y"
|
msgid "%A, %B %d, %Y"
|
||||||
msgstr "%A, %d %B, %Y"
|
msgstr "%A, %d %B, %Y"
|
||||||
|
|
||||||
#: ../js/ui/calendar.js:1620
|
#: ../js/ui/calendar.js:919
|
||||||
msgid "Notifications"
|
msgid "Notifications"
|
||||||
msgstr "Brathan"
|
msgstr "Brathan"
|
||||||
|
|
||||||
#: ../js/ui/calendar.js:1771
|
#: ../js/ui/calendar.js:1070
|
||||||
msgid "No Notifications"
|
msgid "No Notifications"
|
||||||
msgstr "Chan eil brath ann"
|
msgstr "Chan eil brath ann"
|
||||||
|
|
||||||
#: ../js/ui/calendar.js:1774
|
#: ../js/ui/calendar.js:1073
|
||||||
msgid "No Events"
|
msgid "No Events"
|
||||||
msgstr "Chan eil tachartas ann"
|
msgstr "Chan eil tachartas ann"
|
||||||
|
|
||||||
@ -553,7 +814,7 @@ msgstr ""
|
|||||||
|
|
||||||
#. Translators: this is the other person changing their old IM name to their new
|
#. Translators: this is the other person changing their old IM name to their new
|
||||||
#. IM name.
|
#. IM name.
|
||||||
#: ../js/ui/components/telepathyClient.js:759
|
#: ../js/ui/components/telepathyClient.js:760
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "%s is now known as %s"
|
msgid "%s is now known as %s"
|
||||||
msgstr "thug %s %s air"
|
msgstr "thug %s %s air"
|
||||||
@ -762,11 +1023,11 @@ msgid "Keyboard"
|
|||||||
msgstr "Am meur-chlàr"
|
msgstr "Am meur-chlàr"
|
||||||
|
|
||||||
#. translators: 'Hide' is a verb
|
#. translators: 'Hide' is a verb
|
||||||
#: ../js/ui/legacyTray.js:66
|
#: ../js/ui/legacyTray.js:65
|
||||||
msgid "Hide tray"
|
msgid "Hide tray"
|
||||||
msgstr "Falaich an treidhe"
|
msgstr "Falaich an treidhe"
|
||||||
|
|
||||||
#: ../js/ui/legacyTray.js:107
|
#: ../js/ui/legacyTray.js:106
|
||||||
msgid "Status Icons"
|
msgid "Status Icons"
|
||||||
msgstr "Ìomhaigheagan staide"
|
msgstr "Ìomhaigheagan staide"
|
||||||
|
|
||||||
@ -794,7 +1055,7 @@ msgstr "An comas"
|
|||||||
|
|
||||||
#. translators:
|
#. translators:
|
||||||
#. * The device has been disabled
|
#. * The device has been disabled
|
||||||
#: ../js/ui/lookingGlass.js:719 ../src/gvc/gvc-mixer-control.c:1828
|
#: ../js/ui/lookingGlass.js:719 ../src/gvc/gvc-mixer-control.c:1866
|
||||||
msgid "Disabled"
|
msgid "Disabled"
|
||||||
msgstr "À comas"
|
msgstr "À comas"
|
||||||
|
|
||||||
@ -818,10 +1079,30 @@ msgstr "Seall am bun-tùs"
|
|||||||
msgid "Web Page"
|
msgid "Web Page"
|
||||||
msgstr "Duilleag-lìn"
|
msgstr "Duilleag-lìn"
|
||||||
|
|
||||||
|
#: ../js/ui/messageList.js:543
|
||||||
|
msgid "Clear section"
|
||||||
|
msgstr "Falamhaich an earrann"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:1486
|
#: ../js/ui/messageTray.js:1486
|
||||||
msgid "System Information"
|
msgid "System Information"
|
||||||
msgstr "Fiosrachadh an t-siostaim"
|
msgstr "Fiosrachadh an t-siostaim"
|
||||||
|
|
||||||
|
#: ../js/ui/mpris.js:194
|
||||||
|
#| msgctxt "program"
|
||||||
|
#| msgid "Unknown"
|
||||||
|
msgid "Unknown artist"
|
||||||
|
msgstr "Neach-ciùil nach aithne dhuinn"
|
||||||
|
|
||||||
|
#: ../js/ui/mpris.js:195
|
||||||
|
#| msgctxt "program"
|
||||||
|
#| msgid "Unknown"
|
||||||
|
msgid "Unknown title"
|
||||||
|
msgstr "Tiotal nach aithne dhuinn"
|
||||||
|
|
||||||
|
#: ../js/ui/mpris.js:217
|
||||||
|
msgid "Media"
|
||||||
|
msgstr "Meadhanan"
|
||||||
|
|
||||||
#: ../js/ui/overview.js:84
|
#: ../js/ui/overview.js:84
|
||||||
msgid "Undo"
|
msgid "Undo"
|
||||||
msgstr "Neo-dhèan"
|
msgstr "Neo-dhèan"
|
||||||
@ -902,7 +1183,7 @@ msgstr[1] "%d bhrath ùr"
|
|||||||
msgstr[2] "%d brathan ùra"
|
msgstr[2] "%d brathan ùra"
|
||||||
msgstr[3] "%d brath ùr"
|
msgstr[3] "%d brath ùr"
|
||||||
|
|
||||||
#: ../js/ui/screenShield.js:432 ../js/ui/status/system.js:374
|
#: ../js/ui/screenShield.js:432 ../js/ui/status/system.js:379
|
||||||
msgid "Lock"
|
msgid "Lock"
|
||||||
msgstr "Glais"
|
msgstr "Glais"
|
||||||
|
|
||||||
@ -1046,30 +1327,50 @@ msgstr "Soilleireachd"
|
|||||||
msgid "Show Keyboard Layout"
|
msgid "Show Keyboard Layout"
|
||||||
msgstr "Seall co-dhealbhachd a' mheur-chlàir"
|
msgstr "Seall co-dhealbhachd a' mheur-chlàir"
|
||||||
|
|
||||||
#: ../js/ui/status/location.js:71 ../js/ui/status/location.js:177
|
#: ../js/ui/status/location.js:107 ../js/ui/status/location.js:215
|
||||||
msgid "Location Enabled"
|
msgid "Location Enabled"
|
||||||
msgstr "Tha an t-ionad an comas"
|
msgstr "Tha an t-ionad an comas"
|
||||||
|
|
||||||
#: ../js/ui/status/location.js:72 ../js/ui/status/location.js:178
|
#: ../js/ui/status/location.js:108 ../js/ui/status/location.js:216
|
||||||
msgid "Disable"
|
msgid "Disable"
|
||||||
msgstr "Cuir à comas"
|
msgstr "Cuir à comas"
|
||||||
|
|
||||||
#: ../js/ui/status/location.js:73
|
#: ../js/ui/status/location.js:109
|
||||||
msgid "Privacy Settings"
|
msgid "Privacy Settings"
|
||||||
msgstr "Roghainnean na prìobhaideachd"
|
msgstr "Roghainnean na prìobhaideachd"
|
||||||
|
|
||||||
#: ../js/ui/status/location.js:176
|
#: ../js/ui/status/location.js:214
|
||||||
msgid "Location In Use"
|
msgid "Location In Use"
|
||||||
msgstr "Tha an t-ionad 'ga chleachdadh"
|
msgstr "Tha an t-ionad 'ga chleachdadh"
|
||||||
|
|
||||||
#: ../js/ui/status/location.js:180
|
#: ../js/ui/status/location.js:218
|
||||||
msgid "Location Disabled"
|
msgid "Location Disabled"
|
||||||
msgstr "Tha an t-ionad à comas"
|
msgstr "Tha an t-ionad à comas"
|
||||||
|
|
||||||
#: ../js/ui/status/location.js:181
|
#: ../js/ui/status/location.js:219
|
||||||
msgid "Enable"
|
msgid "Enable"
|
||||||
msgstr "Cuir an comas"
|
msgstr "Cuir an comas"
|
||||||
|
|
||||||
|
#: ../js/ui/status/location.js:426
|
||||||
|
msgid "Deny Access"
|
||||||
|
msgstr "Diùlt an t-inntrigeadh"
|
||||||
|
|
||||||
|
#: ../js/ui/status/location.js:429
|
||||||
|
msgid "Grant Access"
|
||||||
|
msgstr "Ceadaich an t-inntrigeadh"
|
||||||
|
|
||||||
|
#. Translators: %s is an application name
|
||||||
|
#: ../js/ui/status/location.js:435
|
||||||
|
#, javascript-format
|
||||||
|
msgid "Give %s access to your location?"
|
||||||
|
msgstr "A bheil thu airson inntrigeadh dhan ionad agad a thoirt dha %s?"
|
||||||
|
|
||||||
|
#: ../js/ui/status/location.js:437
|
||||||
|
msgid "Location access can be changed at any time from the privacy settings."
|
||||||
|
msgstr ""
|
||||||
|
"'S urrainn dhut inntrigeadh an ionaid atharrachadh uair sam bith ann an "
|
||||||
|
"roghainnean na prìobhaideachd."
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:101
|
#: ../js/ui/status/network.js:101
|
||||||
msgid "<unknown>"
|
msgid "<unknown>"
|
||||||
msgstr "<neo-aithnichte>"
|
msgstr "<neo-aithnichte>"
|
||||||
@ -1254,34 +1555,37 @@ msgstr "Dh'fhàillig leis a' cheangal"
|
|||||||
msgid "Activation of network connection failed"
|
msgid "Activation of network connection failed"
|
||||||
msgstr "Dh'fhàillig gnìomhachadh a' cheangail ris an lìonra"
|
msgstr "Dh'fhàillig gnìomhachadh a' cheangail ris an lìonra"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:49
|
#: ../js/ui/status/power.js:61
|
||||||
msgid "Power Settings"
|
msgid "Power Settings"
|
||||||
msgstr "Roghainnean na cumhachd"
|
msgstr "Roghainnean na cumhachd"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:65
|
#: ../js/ui/status/power.js:77
|
||||||
msgid "Fully Charged"
|
msgid "Fully Charged"
|
||||||
msgstr "Air a làn-teairrdseadh"
|
msgstr "Air a làn-teairrdseadh"
|
||||||
|
|
||||||
#. 0 is reported when UPower does not have enough data
|
#. 0 is reported when UPower does not have enough data
|
||||||
#. to estimate battery life
|
#. to estimate battery life
|
||||||
#: ../js/ui/status/power.js:72 ../js/ui/status/power.js:78
|
#: ../js/ui/status/power.js:84 ../js/ui/status/power.js:90
|
||||||
msgid "Estimating…"
|
msgid "Estimating…"
|
||||||
msgstr "'Ga thuairmeas…"
|
msgstr "'Ga thuairmeas…"
|
||||||
|
|
||||||
#. Translators: this is <hours>:<minutes> Remaining (<percentage>)
|
#. Translators: this is <hours>:<minutes> Remaining (<percentage>)
|
||||||
#: ../js/ui/status/power.js:86
|
#: ../js/ui/status/power.js:98
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
#| msgid "%d∶%02d Remaining (%d%%)"
|
|
||||||
msgid "%d∶%02d Remaining (%d %%)"
|
msgid "%d∶%02d Remaining (%d %%)"
|
||||||
msgstr "%d∶%02d air fhàgail (%d %%)"
|
msgstr "%d∶%02d air fhàgail (%d %%)"
|
||||||
|
|
||||||
#. Translators: this is <hours>:<minutes> Until Full (<percentage>)
|
#. Translators: this is <hours>:<minutes> Until Full (<percentage>)
|
||||||
#: ../js/ui/status/power.js:91
|
#: ../js/ui/status/power.js:103
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
#| msgid "%d∶%02d Until Full (%d%%)"
|
|
||||||
msgid "%d∶%02d Until Full (%d %%)"
|
msgid "%d∶%02d Until Full (%d %%)"
|
||||||
msgstr "%d∶%02d gus am bi e làn (%d %%)"
|
msgstr "%d∶%02d gus am bi e làn (%d %%)"
|
||||||
|
|
||||||
|
#: ../js/ui/status/power.js:131 ../js/ui/status/power.js:133
|
||||||
|
#, javascript-format
|
||||||
|
msgid "%d %%"
|
||||||
|
msgstr "%d %%"
|
||||||
|
|
||||||
#. The menu only appears when airplane mode is on, so just
|
#. The menu only appears when airplane mode is on, so just
|
||||||
#. statically build it as if it was on, rather than dynamically
|
#. statically build it as if it was on, rather than dynamically
|
||||||
#. changing the menu contents.
|
#. changing the menu contents.
|
||||||
@ -1289,27 +1593,27 @@ msgstr "%d∶%02d gus am bi e làn (%d %%)"
|
|||||||
msgid "Airplane Mode On"
|
msgid "Airplane Mode On"
|
||||||
msgstr "Modh itealain air"
|
msgstr "Modh itealain air"
|
||||||
|
|
||||||
#: ../js/ui/status/system.js:343
|
#: ../js/ui/status/system.js:348
|
||||||
msgid "Switch User"
|
msgid "Switch User"
|
||||||
msgstr "Leum gu cleachdaiche eile"
|
msgstr "Leum gu cleachdaiche eile"
|
||||||
|
|
||||||
#: ../js/ui/status/system.js:348
|
#: ../js/ui/status/system.js:353
|
||||||
msgid "Log Out"
|
msgid "Log Out"
|
||||||
msgstr "Clàraich a-mach"
|
msgstr "Clàraich a-mach"
|
||||||
|
|
||||||
#: ../js/ui/status/system.js:353
|
#: ../js/ui/status/system.js:358
|
||||||
msgid "Account Settings"
|
msgid "Account Settings"
|
||||||
msgstr "Roghainnean a' chunntais"
|
msgstr "Roghainnean a' chunntais"
|
||||||
|
|
||||||
#: ../js/ui/status/system.js:370
|
#: ../js/ui/status/system.js:375
|
||||||
msgid "Orientation Lock"
|
msgid "Orientation Lock"
|
||||||
msgstr "Glais na comhair"
|
msgstr "Glais na comhair"
|
||||||
|
|
||||||
#: ../js/ui/status/system.js:378
|
#: ../js/ui/status/system.js:383
|
||||||
msgid "Suspend"
|
msgid "Suspend"
|
||||||
msgstr "Cuir 'na dhàil"
|
msgstr "Cuir 'na dhàil"
|
||||||
|
|
||||||
#: ../js/ui/status/system.js:381
|
#: ../js/ui/status/system.js:386
|
||||||
msgid "Power Off"
|
msgid "Power Off"
|
||||||
msgstr "Cuir a' chumhachd dheth"
|
msgstr "Cuir a' chumhachd dheth"
|
||||||
|
|
||||||
@ -1321,10 +1625,6 @@ msgstr "Dh'atharraich àirde na fuaime"
|
|||||||
msgid "Volume"
|
msgid "Volume"
|
||||||
msgstr "Àirde na fuaime"
|
msgstr "Àirde na fuaime"
|
||||||
|
|
||||||
#: ../js/ui/status/volume.js:213
|
|
||||||
msgid "Microphone"
|
|
||||||
msgstr "Micreofon"
|
|
||||||
|
|
||||||
#: ../js/ui/unlockDialog.js:67
|
#: ../js/ui/unlockDialog.js:67
|
||||||
msgid "Log in as another user"
|
msgid "Log in as another user"
|
||||||
msgstr "Clàraich an-steach mar chleachdaiche eile"
|
msgstr "Clàraich an-steach mar chleachdaiche eile"
|
||||||
@ -1451,7 +1751,7 @@ msgstr "Mìosachan Evolution"
|
|||||||
|
|
||||||
#. translators:
|
#. translators:
|
||||||
#. * The number of sound outputs on a particular device
|
#. * The number of sound outputs on a particular device
|
||||||
#: ../src/gvc/gvc-mixer-control.c:1835
|
#: ../src/gvc/gvc-mixer-control.c:1873
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%u Output"
|
msgid "%u Output"
|
||||||
msgid_plural "%u Outputs"
|
msgid_plural "%u Outputs"
|
||||||
@ -1462,7 +1762,7 @@ msgstr[3] "%u às-chur"
|
|||||||
|
|
||||||
#. translators:
|
#. translators:
|
||||||
#. * The number of sound inputs on a particular device
|
#. * The number of sound inputs on a particular device
|
||||||
#: ../src/gvc/gvc-mixer-control.c:1845
|
#: ../src/gvc/gvc-mixer-control.c:1883
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%u Input"
|
msgid "%u Input"
|
||||||
msgid_plural "%u Inputs"
|
msgid_plural "%u Inputs"
|
||||||
@ -1471,7 +1771,7 @@ msgstr[1] "%u ion-chur"
|
|||||||
msgstr[2] "%u ion-chuir"
|
msgstr[2] "%u ion-chuir"
|
||||||
msgstr[3] "%u ion-chur"
|
msgstr[3] "%u ion-chur"
|
||||||
|
|
||||||
#: ../src/gvc/gvc-mixer-control.c:2371
|
#: ../src/gvc/gvc-mixer-control.c:2738
|
||||||
msgid "System Sounds"
|
msgid "System Sounds"
|
||||||
msgstr "Fuaimean an t-siostaim"
|
msgstr "Fuaimean an t-siostaim"
|
||||||
|
|
||||||
|
2
po/gu.po
2
po/gu.po
@ -13,7 +13,7 @@ msgstr ""
|
|||||||
"PO-Revision-Date: 2014-10-01 15:51+0530\n"
|
"PO-Revision-Date: 2014-10-01 15:51+0530\n"
|
||||||
"Last-Translator: \n"
|
"Last-Translator: \n"
|
||||||
"Language-Team: American English <kde-i18n-doc@kde.org>\n"
|
"Language-Team: American English <kde-i18n-doc@kde.org>\n"
|
||||||
"Language: \n"
|
"Language: gu\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
176
po/ja.po
176
po/ja.po
@ -14,9 +14,10 @@
|
|||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: gnome-shell master\n"
|
"Project-Id-Version: gnome-shell master\n"
|
||||||
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-shell&keywords=I18N+L10N&component=general\n"
|
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
|
||||||
"POT-Creation-Date: 2016-03-11 22:17+0000\n"
|
"shell&keywords=I18N+L10N&component=general\n"
|
||||||
"PO-Revision-Date: 2016-03-12 14:12+0900\n"
|
"POT-Creation-Date: 2016-05-02 22:01+0000\n"
|
||||||
|
"PO-Revision-Date: 2016-05-08 15:12+0900\n"
|
||||||
"Last-Translator: Jiro Matsuzawa <jmatsuzawa@gnome.org>\n"
|
"Last-Translator: Jiro Matsuzawa <jmatsuzawa@gnome.org>\n"
|
||||||
"Language-Team: Japanese <gnome-translation@gnome.gr.jp>\n"
|
"Language-Team: Japanese <gnome-translation@gnome.gr.jp>\n"
|
||||||
"Language: ja\n"
|
"Language: ja\n"
|
||||||
@ -70,31 +71,51 @@ msgid "Enable internal tools useful for developers and testers from Alt-F2"
|
|||||||
msgstr "Alt-F2 から開発・テスト用の内部ツールを利用可能にする"
|
msgstr "Alt-F2 から開発・テスト用の内部ツールを利用可能にする"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:2
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:2
|
||||||
msgid "Allows access to internal debugging and monitoring tools using the Alt-F2 dialog."
|
msgid ""
|
||||||
msgstr "Alt-F2 ダイアログを利用した内部のデバッグツールとモニターツールへのアクセスを許可します。"
|
"Allows access to internal debugging and monitoring tools using the Alt-F2 "
|
||||||
|
"dialog."
|
||||||
|
msgstr ""
|
||||||
|
"Alt-F2 ダイアログを利用した内部のデバッグツールとモニターツールへのアクセスを"
|
||||||
|
"許可します。"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:3
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:3
|
||||||
msgid "UUIDs of extensions to enable"
|
msgid "UUIDs of extensions to enable"
|
||||||
msgstr "有効にする拡張機能の UUID"
|
msgstr "有効にする拡張機能の UUID"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:4
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:4
|
||||||
msgid "GNOME Shell extensions have a UUID property; this key lists extensions which should be loaded. Any extension that wants to be loaded needs to be in this list. You can also manipulate this list with the EnableExtension and DisableExtension D-Bus methods on org.gnome.Shell."
|
msgid ""
|
||||||
msgstr "GNOME Shell の拡張機能には UUID プロパティがあり、このキーは、ロードしたい拡張機能の UUID のリストです。ロードしたい拡張機能はこのリストに含めなければなりません。このリストは org.gnome.Shell の EnableExtensions や DisableExtensions といった DBus メソッドでも操作できます。"
|
"GNOME Shell extensions have a UUID property; this key lists extensions which "
|
||||||
|
"should be loaded. Any extension that wants to be loaded needs to be in this "
|
||||||
|
"list. You can also manipulate this list with the EnableExtension and "
|
||||||
|
"DisableExtension D-Bus methods on org.gnome.Shell."
|
||||||
|
msgstr ""
|
||||||
|
"GNOME Shell の拡張機能には UUID プロパティがあり、このキーは、ロードしたい拡"
|
||||||
|
"張機能の UUID のリストです。ロードしたい拡張機能はこのリストに含めなければな"
|
||||||
|
"りません。このリストは org.gnome.Shell の EnableExtensions や "
|
||||||
|
"DisableExtensions といった DBus メソッドでも操作できます。"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:5
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:5
|
||||||
msgid "Disables the validation of extension version compatibility"
|
msgid "Disables the validation of extension version compatibility"
|
||||||
msgstr "拡張機能のバージョン互換の検証を無効にする"
|
msgstr "拡張機能のバージョン互換の検証を無効にする"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:6
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:6
|
||||||
msgid "GNOME Shell will only load extensions that claim to support the current running version. Enabling this option will disable this check and try to load all extensions regardless of the versions they claim to support."
|
msgid ""
|
||||||
msgstr "通常では、現在起動中の GNOME Shell のバージョンをサポートする拡張機能だけがロードされます。この設定を true にした場合、バージョンチェック機能が無効になり、拡張機能のサポートバージョンに関係なくすべての拡張機能をロードします。"
|
"GNOME Shell will only load extensions that claim to support the current "
|
||||||
|
"running version. Enabling this option will disable this check and try to "
|
||||||
|
"load all extensions regardless of the versions they claim to support."
|
||||||
|
msgstr ""
|
||||||
|
"通常では、現在起動中の GNOME Shell のバージョンをサポートする拡張機能だけが"
|
||||||
|
"ロードされます。この設定を true にした場合、バージョンチェック機能が無効にな"
|
||||||
|
"り、拡張機能のサポートバージョンに関係なくすべての拡張機能をロードします。"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:7
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:7
|
||||||
msgid "List of desktop file IDs for favorite applications"
|
msgid "List of desktop file IDs for favorite applications"
|
||||||
msgstr "お気に入りのアプリケーションの .desktop ファイル ID の一覧"
|
msgstr "お気に入りのアプリケーションの .desktop ファイル ID の一覧"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:8
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:8
|
||||||
msgid "The applications corresponding to these identifiers will be displayed in the favorites area."
|
msgid ""
|
||||||
|
"The applications corresponding to these identifiers will be displayed in the "
|
||||||
|
"favorites area."
|
||||||
msgstr "これらの ID で示されるアプリケーションは「お気に入り」に表示されます。"
|
msgstr "これらの ID で示されるアプリケーションは「お気に入り」に表示されます。"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:9
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:9
|
||||||
@ -119,24 +140,49 @@ msgid "Always show the 'Log out' menu item in the user menu."
|
|||||||
msgstr "ユーザーメニューに「ログアウト」を常に表示する"
|
msgstr "ユーザーメニューに「ログアウト」を常に表示する"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:15
|
#: ../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."
|
msgid ""
|
||||||
msgstr "このキーは、単一ユーザー、単一セッション状況で「ログアウト」メニューアイテムを自動的に非表示にする機能よりも優先します。"
|
"This key overrides the automatic hiding of the 'Log out' menu item in single-"
|
||||||
|
"user, single-session situations."
|
||||||
|
msgstr ""
|
||||||
|
"このキーは、単一ユーザー、単一セッション状況で「ログアウト」メニューアイテム"
|
||||||
|
"を自動的に非表示にする機能よりも優先します。"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:16
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:16
|
||||||
msgid "Whether to remember password for mounting encrypted or remote filesystems"
|
msgid ""
|
||||||
msgstr "マウント対象の暗号化されたファイルシステムやリモートファイルシステムのパスワードを記憶する"
|
"Whether to remember password for mounting encrypted or remote filesystems"
|
||||||
|
msgstr ""
|
||||||
|
"マウント対象の暗号化されたファイルシステムやリモートファイルシステムのパス"
|
||||||
|
"ワードを記憶する"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:17
|
#: ../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 'Remember Password' checkbox will be present. This key sets the default state of the checkbox."
|
msgid ""
|
||||||
msgstr "GNOME Shell は、暗号化されたデバイスやリモートファイルシステムのマウント時にパスワードを要求します。パスワードを保存できる場合は、「パスワードを保存」チェックボックスが表示されます。このキーは、チェックボックスのデフォルト値となります。"
|
"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 "
|
||||||
|
"'Remember Password' checkbox will be present. This key sets the default "
|
||||||
|
"state of the checkbox."
|
||||||
|
msgstr ""
|
||||||
|
"GNOME Shell は、暗号化されたデバイスやリモートファイルシステムのマウント時に"
|
||||||
|
"パスワードを要求します。パスワードを保存できる場合は、「パスワードを保存」"
|
||||||
|
"チェックボックスが表示されます。このキーは、チェックボックスのデフォルト値と"
|
||||||
|
"なります。"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:18
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:18
|
||||||
msgid "Whether the default Bluetooth adapter had set up devices associated to it"
|
msgid ""
|
||||||
msgstr "デフォルトの Bluetooth アダプターにデバイスが関連付けられているかどうか"
|
"Whether the default Bluetooth adapter had set up devices associated to it"
|
||||||
|
msgstr ""
|
||||||
|
"デフォルトの Bluetooth アダプターにデバイスが関連付けられているかどうか"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:19
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:19
|
||||||
msgid "The shell will only show a Bluetooth menu item if a Bluetooth adapter is powered, or if there were devices set up associated with the default adapter. This will be reset if the default adapter is ever seen not to have devices associated to it."
|
msgid ""
|
||||||
msgstr "Bluetooth アダプターの電源がオンになっているか、あるいはデフォルトのアダプターに関連付けられたデバイスがある場合にのみ、GNOME Shell は Bluetooth メニューを表示します。デフォルトのアダプターに関連付けられたデバイスがなくなった場合に、この値はリセットされます。"
|
"The shell will only show a Bluetooth menu item if a Bluetooth adapter is "
|
||||||
|
"powered, or if there were devices set up associated with the default "
|
||||||
|
"adapter. This will be reset if the default adapter is ever seen not to have "
|
||||||
|
"devices associated to it."
|
||||||
|
msgstr ""
|
||||||
|
"Bluetooth アダプターの電源がオンになっているか、あるいはデフォルトのアダプ"
|
||||||
|
"ターに関連付けられたデバイスがある場合にのみ、GNOME Shell は Bluetooth メ"
|
||||||
|
"ニューを表示します。デフォルトのアダプターに関連付けられたデバイスがなくなっ"
|
||||||
|
"た場合に、この値はリセットされます。"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:20
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:20
|
||||||
msgid "Show the week date in the calendar"
|
msgid "Show the week date in the calendar"
|
||||||
@ -159,7 +205,8 @@ msgid "Keybinding to open the \"Show Applications\" view"
|
|||||||
msgstr "アプリケーション一覧を開くキーバインド"
|
msgstr "アプリケーション一覧を開くキーバインド"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:25
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:25
|
||||||
msgid "Keybinding to open the \"Show Applications\" view of the Activities Overview."
|
msgid ""
|
||||||
|
"Keybinding to open the \"Show Applications\" view of the Activities Overview."
|
||||||
msgstr "アプリケーション一覧を開くキーバインドです。"
|
msgstr "アプリケーション一覧を開くキーバインドです。"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:26
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:26
|
||||||
@ -187,8 +234,10 @@ msgid "Keybinding to focus the active notification."
|
|||||||
msgstr "アクティブな通知にフォーカスを当てるキーバインドです。"
|
msgstr "アクティブな通知にフォーカスを当てるキーバインドです。"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:32
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:32
|
||||||
msgid "Keybinding that pauses and resumes all running tweens, for debugging purposes"
|
msgid ""
|
||||||
msgstr "Tween の一時停止および再開を行うキーバインドです。デバッグ用途で使用します。"
|
"Keybinding that pauses and resumes all running tweens, for debugging purposes"
|
||||||
|
msgstr ""
|
||||||
|
"Tween の一時停止および再開を行うキーバインドです。デバッグ用途で使用します。"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:33
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:33
|
||||||
msgid "Which keyboard to use"
|
msgid "Which keyboard to use"
|
||||||
@ -203,28 +252,46 @@ msgid "Limit switcher to current workspace."
|
|||||||
msgstr "スイッチャーを現在のワークスペース内に制限する"
|
msgstr "スイッチャーを現在のワークスペース内に制限する"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:36
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:36
|
||||||
msgid "If true, only applications that have windows on the current workspace are shown in the switcher. Otherwise, all applications are included."
|
msgid ""
|
||||||
msgstr "true に設定した場合、現在のワークスペースにウィンドウのあるアプリケーションだけをスイッチャーに表示します。false に設定した場合はすべてのアプリケーションを表示します。"
|
"If true, only applications that have windows on the current workspace are "
|
||||||
|
"shown in the switcher. Otherwise, all applications are included."
|
||||||
|
msgstr ""
|
||||||
|
"true に設定した場合、現在のワークスペースにウィンドウのあるアプリケーションだ"
|
||||||
|
"けをスイッチャーに表示します。false に設定した場合はすべてのアプリケーション"
|
||||||
|
"を表示します。"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:37
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:37
|
||||||
msgid "The application icon mode."
|
msgid "The application icon mode."
|
||||||
msgstr "アプリケーションアイコンモード"
|
msgstr "アプリケーションアイコンモード"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:38
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:38
|
||||||
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'."
|
msgid ""
|
||||||
msgstr "ウィンドウスイッチャーでのウィンドウの表示方法を設定します。指定可能な値は、'thumbnail-only' (ウィンドウのサムネイルを表示します)、'app-icon-only' (アプリケーションアイコンを表示します)、あるいは 'both' です。"
|
"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'."
|
||||||
|
msgstr ""
|
||||||
|
"ウィンドウスイッチャーでのウィンドウの表示方法を設定します。指定可能な値"
|
||||||
|
"は、'thumbnail-only' (ウィンドウのサムネイルを表示します)、'app-icon-"
|
||||||
|
"only' (アプリケーションアイコンを表示します)、あるいは 'both' です。"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:39
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:39
|
||||||
msgid "If true, only windows from the current workspace are shown in the switcher. Otherwise, all windows are included."
|
msgid ""
|
||||||
msgstr "true に設定した場合、現在のワークスペースのウィンドウだけをスイッチャーに表示します。false に設定した場合はすべてのアプリケーションを表示します。"
|
"If true, only windows from the current workspace are shown in the switcher. "
|
||||||
|
"Otherwise, all windows are included."
|
||||||
|
msgstr ""
|
||||||
|
"true に設定した場合、現在のワークスペースのウィンドウだけをスイッチャーに表示"
|
||||||
|
"します。false に設定した場合はすべてのアプリケーションを表示します。"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:40
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:40
|
||||||
msgid "Attach modal dialog to the parent window"
|
msgid "Attach modal dialog to the parent window"
|
||||||
msgstr "モーダルダイアログを親ウィンドウに結び付ける"
|
msgstr "モーダルダイアログを親ウィンドウに結び付ける"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:41
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:41
|
||||||
msgid "This key overrides the key in org.gnome.mutter when running GNOME Shell."
|
msgid ""
|
||||||
msgstr "GNOME Shell 使用時は、 このキーが、org.gnome.mutter の同じキーよりも優先します。"
|
"This key overrides the key in org.gnome.mutter when running GNOME Shell."
|
||||||
|
msgstr ""
|
||||||
|
"GNOME Shell 使用時は、 このキーが、org.gnome.mutter の同じキーよりも優先しま"
|
||||||
|
"す。"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:42
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:42
|
||||||
msgid "Enable edge tiling when dropping windows on screen edges"
|
msgid "Enable edge tiling when dropping windows on screen edges"
|
||||||
@ -478,7 +545,7 @@ msgstr "背景の変更…"
|
|||||||
msgid "Display Settings"
|
msgid "Display Settings"
|
||||||
msgstr "ディスプレイ設定"
|
msgstr "ディスプレイ設定"
|
||||||
|
|
||||||
#: ../js/ui/backgroundMenu.js:22 ../js/ui/status/system.js:366
|
#: ../js/ui/backgroundMenu.js:22 ../js/ui/status/system.js:371
|
||||||
msgid "Settings"
|
msgid "Settings"
|
||||||
msgstr "設定"
|
msgstr "設定"
|
||||||
|
|
||||||
@ -646,8 +713,12 @@ msgstr "無線ネットワークでは認証が要求されます"
|
|||||||
#: ../js/ui/components/networkAgent.js:321
|
#: ../js/ui/components/networkAgent.js:321
|
||||||
#: ../js/ui/components/networkAgent.js:659
|
#: ../js/ui/components/networkAgent.js:659
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "Passwords or encryption keys are required to access the wireless network “%s”."
|
msgid ""
|
||||||
msgstr "無線ネットワーク ”%s” にアクセスするにはパスワードか、または暗号化キーが必要です。"
|
"Passwords or encryption keys are required to access the wireless network "
|
||||||
|
"“%s”."
|
||||||
|
msgstr ""
|
||||||
|
"無線ネットワーク ”%s” にアクセスするにはパスワードか、または暗号化キーが必要"
|
||||||
|
"です。"
|
||||||
|
|
||||||
#: ../js/ui/components/networkAgent.js:325
|
#: ../js/ui/components/networkAgent.js:325
|
||||||
#: ../js/ui/components/networkAgent.js:662
|
#: ../js/ui/components/networkAgent.js:662
|
||||||
@ -716,7 +787,7 @@ msgstr "申し訳ありません、認証できませんでした。再試行し
|
|||||||
|
|
||||||
#. Translators: this is the other person changing their old IM name to their new
|
#. Translators: this is the other person changing their old IM name to their new
|
||||||
#. IM name.
|
#. IM name.
|
||||||
#: ../js/ui/components/telepathyClient.js:759
|
#: ../js/ui/components/telepathyClient.js:760
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "%s is now known as %s"
|
msgid "%s is now known as %s"
|
||||||
msgstr "%s は %s になりました"
|
msgstr "%s は %s になりました"
|
||||||
@ -836,7 +907,8 @@ msgstr "再起動して更新をインストールする"
|
|||||||
#: ../js/ui/endSessionDialog.js:121
|
#: ../js/ui/endSessionDialog.js:121
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "The system will automatically restart and install updates in %d second."
|
msgid "The system will automatically restart and install updates in %d second."
|
||||||
msgid_plural "The system will automatically restart and install updates in %d seconds."
|
msgid_plural ""
|
||||||
|
"The system will automatically restart and install updates in %d seconds."
|
||||||
msgstr[0] "%d 秒後にシステムを再起動して更新をインストールします。"
|
msgstr[0] "%d 秒後にシステムを再起動して更新をインストールします。"
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:127
|
#: ../js/ui/endSessionDialog.js:127
|
||||||
@ -856,7 +928,8 @@ msgstr "更新をインストール後電源をオフにする"
|
|||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:338
|
#: ../js/ui/endSessionDialog.js:338
|
||||||
msgid "Running on battery power: please plug in before installing updates."
|
msgid "Running on battery power: please plug in before installing updates."
|
||||||
msgstr "バッテリーで動作中です: 更新をインストールする前に電源に接続してください。"
|
msgstr ""
|
||||||
|
"バッテリーで動作中です: 更新をインストールする前に電源に接続してください。"
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:355
|
#: ../js/ui/endSessionDialog.js:355
|
||||||
msgid "Some applications are busy or have unsaved work."
|
msgid "Some applications are busy or have unsaved work."
|
||||||
@ -924,7 +997,7 @@ msgstr "有効"
|
|||||||
|
|
||||||
#. translators:
|
#. translators:
|
||||||
#. * The device has been disabled
|
#. * The device has been disabled
|
||||||
#: ../js/ui/lookingGlass.js:719 ../src/gvc/gvc-mixer-control.c:1828
|
#: ../js/ui/lookingGlass.js:719 ../src/gvc/gvc-mixer-control.c:1866
|
||||||
msgid "Disabled"
|
msgid "Disabled"
|
||||||
msgstr "無効"
|
msgstr "無効"
|
||||||
|
|
||||||
@ -1042,7 +1115,7 @@ msgid "%d new notification"
|
|||||||
msgid_plural "%d new notifications"
|
msgid_plural "%d new notifications"
|
||||||
msgstr[0] "%d 件の新しい通知"
|
msgstr[0] "%d 件の新しい通知"
|
||||||
|
|
||||||
#: ../js/ui/screenShield.js:432 ../js/ui/status/system.js:374
|
#: ../js/ui/screenShield.js:432 ../js/ui/status/system.js:379
|
||||||
msgid "Lock"
|
msgid "Lock"
|
||||||
msgstr "ロック"
|
msgstr "ロック"
|
||||||
|
|
||||||
@ -1223,7 +1296,8 @@ msgstr "%s が現在の位置情報を取得することを許可しますか?"
|
|||||||
|
|
||||||
#: ../js/ui/status/location.js:437
|
#: ../js/ui/status/location.js:437
|
||||||
msgid "Location access can be changed at any time from the privacy settings."
|
msgid "Location access can be changed at any time from the privacy settings."
|
||||||
msgstr "位置情報のアクセス許可設定は、プライバシー設定からいつでも変更できます。"
|
msgstr ""
|
||||||
|
"位置情報のアクセス許可設定は、プライバシー設定からいつでも変更できます。"
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:101
|
#: ../js/ui/status/network.js:101
|
||||||
msgid "<unknown>"
|
msgid "<unknown>"
|
||||||
@ -1447,27 +1521,27 @@ msgstr "%d %%"
|
|||||||
msgid "Airplane Mode On"
|
msgid "Airplane Mode On"
|
||||||
msgstr "機内モードオン"
|
msgstr "機内モードオン"
|
||||||
|
|
||||||
#: ../js/ui/status/system.js:343
|
#: ../js/ui/status/system.js:348
|
||||||
msgid "Switch User"
|
msgid "Switch User"
|
||||||
msgstr "ユーザーの切り替え"
|
msgstr "ユーザーの切り替え"
|
||||||
|
|
||||||
#: ../js/ui/status/system.js:348
|
#: ../js/ui/status/system.js:353
|
||||||
msgid "Log Out"
|
msgid "Log Out"
|
||||||
msgstr "ログアウト"
|
msgstr "ログアウト"
|
||||||
|
|
||||||
#: ../js/ui/status/system.js:353
|
#: ../js/ui/status/system.js:358
|
||||||
msgid "Account Settings"
|
msgid "Account Settings"
|
||||||
msgstr "アカウント設定"
|
msgstr "アカウント設定"
|
||||||
|
|
||||||
#: ../js/ui/status/system.js:370
|
#: ../js/ui/status/system.js:375
|
||||||
msgid "Orientation Lock"
|
msgid "Orientation Lock"
|
||||||
msgstr "画面方向ロック"
|
msgstr "画面方向ロック"
|
||||||
|
|
||||||
#: ../js/ui/status/system.js:378
|
#: ../js/ui/status/system.js:383
|
||||||
msgid "Suspend"
|
msgid "Suspend"
|
||||||
msgstr "サスペンド"
|
msgstr "サスペンド"
|
||||||
|
|
||||||
#: ../js/ui/status/system.js:381
|
#: ../js/ui/status/system.js:386
|
||||||
msgid "Power Off"
|
msgid "Power Off"
|
||||||
msgstr "電源オフ"
|
msgstr "電源オフ"
|
||||||
|
|
||||||
@ -1554,11 +1628,11 @@ msgstr "画面上でタイトルバーを移動する"
|
|||||||
|
|
||||||
#: ../js/ui/windowMenu.js:70
|
#: ../js/ui/windowMenu.js:70
|
||||||
msgid "Always on Top"
|
msgid "Always on Top"
|
||||||
msgstr "最前面に配置する"
|
msgstr "最前面に維持する"
|
||||||
|
|
||||||
#: ../js/ui/windowMenu.js:89
|
#: ../js/ui/windowMenu.js:89
|
||||||
msgid "Always on Visible Workspace"
|
msgid "Always on Visible Workspace"
|
||||||
msgstr "すべてのワークスペースに配置する"
|
msgstr "すべてのワークスペースに表示する"
|
||||||
|
|
||||||
#: ../js/ui/windowMenu.js:105
|
#: ../js/ui/windowMenu.js:105
|
||||||
msgid "Move to Workspace Left"
|
msgid "Move to Workspace Left"
|
||||||
@ -1598,7 +1672,7 @@ msgstr "Evolution カレンダー"
|
|||||||
|
|
||||||
#. translators:
|
#. translators:
|
||||||
#. * The number of sound outputs on a particular device
|
#. * The number of sound outputs on a particular device
|
||||||
#: ../src/gvc/gvc-mixer-control.c:1835
|
#: ../src/gvc/gvc-mixer-control.c:1873
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%u Output"
|
msgid "%u Output"
|
||||||
msgid_plural "%u Outputs"
|
msgid_plural "%u Outputs"
|
||||||
@ -1606,13 +1680,13 @@ msgstr[0] "出力数: %u"
|
|||||||
|
|
||||||
#. translators:
|
#. translators:
|
||||||
#. * The number of sound inputs on a particular device
|
#. * The number of sound inputs on a particular device
|
||||||
#: ../src/gvc/gvc-mixer-control.c:1845
|
#: ../src/gvc/gvc-mixer-control.c:1883
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%u Input"
|
msgid "%u Input"
|
||||||
msgid_plural "%u Inputs"
|
msgid_plural "%u Inputs"
|
||||||
msgstr[0] "入力数: %u"
|
msgstr[0] "入力数: %u"
|
||||||
|
|
||||||
#: ../src/gvc/gvc-mixer-control.c:2371
|
#: ../src/gvc/gvc-mixer-control.c:2738
|
||||||
msgid "System Sounds"
|
msgid "System Sounds"
|
||||||
msgstr "システムのサウンド"
|
msgstr "システムのサウンド"
|
||||||
|
|
||||||
|
2
po/ky.po
2
po/ky.po
@ -14,7 +14,7 @@ msgstr ""
|
|||||||
"PO-Revision-Date: 2012-09-24 14:29+0600\n"
|
"PO-Revision-Date: 2012-09-24 14:29+0600\n"
|
||||||
"Last-Translator: Timur Zhamakeev <ztimur@gmail.com>\n"
|
"Last-Translator: Timur Zhamakeev <ztimur@gmail.com>\n"
|
||||||
"Language-Team: Kirghiz <gnome-i18n@gnome.org>\n"
|
"Language-Team: Kirghiz <gnome-i18n@gnome.org>\n"
|
||||||
"Language: ky_KG\n"
|
"Language: ky\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
1
po/mk.po
1
po/mk.po
@ -11,6 +11,7 @@ msgstr ""
|
|||||||
"PO-Revision-Date: 2011-12-08 22:37+0100\n"
|
"PO-Revision-Date: 2011-12-08 22:37+0100\n"
|
||||||
"Last-Translator: Jovan N\n"
|
"Last-Translator: Jovan N\n"
|
||||||
"Language-Team: mk_MK <jovan@lugola.net>\n"
|
"Language-Team: mk_MK <jovan@lugola.net>\n"
|
||||||
|
"Language: mk\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
2
po/ms.po
2
po/ms.po
@ -11,7 +11,7 @@ msgstr ""
|
|||||||
"PO-Revision-Date: 2014-09-15 19:21+0730\n"
|
"PO-Revision-Date: 2014-09-15 19:21+0730\n"
|
||||||
"Last-Translator: Umarzuki Mochlis Moktar <umar@umarzuki.org>\n"
|
"Last-Translator: Umarzuki Mochlis Moktar <umar@umarzuki.org>\n"
|
||||||
"Language-Team: GNOME Malay Team <gnome-ms@googlegroups.com>\n"
|
"Language-Team: GNOME Malay Team <gnome-ms@googlegroups.com>\n"
|
||||||
"Language: \n"
|
"Language: ms\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
159
po/nb.po
159
po/nb.po
@ -9,11 +9,11 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: gnome-shell 3.19.x\n"
|
"Project-Id-Version: gnome-shell 3.19.x\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2016-01-07 22:59+0100\n"
|
"POT-Creation-Date: 2016-05-01 14:12+0200\n"
|
||||||
"PO-Revision-Date: 2016-01-07 22:59+0100\n"
|
"PO-Revision-Date: 2016-05-01 14:21+0200\n"
|
||||||
"Last-Translator: Kjartan Maraas <kmaraas@gnome.org>\n"
|
"Last-Translator: Kjartan Maraas <kmaraas@gnome.org>\n"
|
||||||
"Language-Team: Norwegian bokmål <i18n-nb@lister.ping.uio.no>\n"
|
"Language-Team: Norwegian bokmål <i18n-nb@lister.ping.uio.no>\n"
|
||||||
"Language: Norwegian bokmål\n"
|
"Language: nb\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
@ -305,33 +305,34 @@ msgstr "Utsett fokusendringer i musmodus til peker slutter å bevege seg"
|
|||||||
msgid "Network Login"
|
msgid "Network Login"
|
||||||
msgstr "Nettverkspålogging"
|
msgstr "Nettverkspålogging"
|
||||||
|
|
||||||
#: ../js/extensionPrefs/main.js:122
|
#: ../js/extensionPrefs/main.js:117
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "There was an error loading the preferences dialog for %s:"
|
msgid "There was an error loading the preferences dialog for %s:"
|
||||||
msgstr "Det oppsto en feil ved lasting av brukervalgdialog for %s:"
|
msgstr "Det oppsto en feil ved lasting av brukervalgdialog for %s:"
|
||||||
|
|
||||||
#: ../js/extensionPrefs/main.js:154
|
#: ../js/extensionPrefs/main.js:149
|
||||||
msgid "GNOME Shell Extensions"
|
msgid "GNOME Shell Extensions"
|
||||||
msgstr "Utvidelser for GNOME Shell"
|
msgstr "Utvidelser for GNOME Shell"
|
||||||
|
|
||||||
#: ../js/gdm/authPrompt.js:147 ../js/ui/components/networkAgent.js:145
|
#: ../js/gdm/authPrompt.js:147 ../js/ui/audioDeviceSelection.js:71
|
||||||
|
#: ../js/ui/components/networkAgent.js:145
|
||||||
#: ../js/ui/components/polkitAgent.js:179 ../js/ui/endSessionDialog.js:452
|
#: ../js/ui/components/polkitAgent.js:179 ../js/ui/endSessionDialog.js:452
|
||||||
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:399
|
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:399
|
||||||
#: ../js/ui/status/network.js:916
|
#: ../js/ui/status/network.js:916
|
||||||
msgid "Cancel"
|
msgid "Cancel"
|
||||||
msgstr "Avbryt"
|
msgstr "Avbryt"
|
||||||
|
|
||||||
#: ../js/gdm/authPrompt.js:169 ../js/gdm/authPrompt.js:215
|
#: ../js/gdm/authPrompt.js:169 ../js/gdm/authPrompt.js:216
|
||||||
#: ../js/gdm/authPrompt.js:447
|
#: ../js/gdm/authPrompt.js:448
|
||||||
msgid "Next"
|
msgid "Next"
|
||||||
msgstr "Neste"
|
msgstr "Neste"
|
||||||
|
|
||||||
#: ../js/gdm/authPrompt.js:211 ../js/ui/shellMountOperation.js:403
|
#: ../js/gdm/authPrompt.js:212 ../js/ui/shellMountOperation.js:403
|
||||||
#: ../js/ui/unlockDialog.js:59
|
#: ../js/ui/unlockDialog.js:59
|
||||||
msgid "Unlock"
|
msgid "Unlock"
|
||||||
msgstr "Lås opp"
|
msgstr "Lås opp"
|
||||||
|
|
||||||
#: ../js/gdm/authPrompt.js:213
|
#: ../js/gdm/authPrompt.js:214
|
||||||
msgctxt "button"
|
msgctxt "button"
|
||||||
msgid "Sign In"
|
msgid "Sign In"
|
||||||
msgstr "Logg inn"
|
msgstr "Logg inn"
|
||||||
@ -498,16 +499,36 @@ msgstr "Legg til i favoritter"
|
|||||||
msgid "Show Details"
|
msgid "Show Details"
|
||||||
msgstr "Vis detaljer"
|
msgstr "Vis detaljer"
|
||||||
|
|
||||||
#: ../js/ui/appFavorites.js:133
|
#: ../js/ui/appFavorites.js:134
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "%s has been added to your favorites."
|
msgid "%s has been added to your favorites."
|
||||||
msgstr "%s ble lagt til i favoritter."
|
msgstr "%s ble lagt til i favoritter."
|
||||||
|
|
||||||
#: ../js/ui/appFavorites.js:167
|
#: ../js/ui/appFavorites.js:168
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "%s has been removed from your favorites."
|
msgid "%s has been removed from your favorites."
|
||||||
msgstr "%s ble fjernet fra favoritter."
|
msgstr "%s ble fjernet fra favoritter."
|
||||||
|
|
||||||
|
#: ../js/ui/audioDeviceSelection.js:59
|
||||||
|
msgid "Select Audio Device"
|
||||||
|
msgstr "Velg lydenhet"
|
||||||
|
|
||||||
|
#: ../js/ui/audioDeviceSelection.js:69
|
||||||
|
msgid "Sound Settings"
|
||||||
|
msgstr "Innstillinger for lyd"
|
||||||
|
|
||||||
|
#: ../js/ui/audioDeviceSelection.js:78
|
||||||
|
msgid "Headphones"
|
||||||
|
msgstr "Hodetelefoner"
|
||||||
|
|
||||||
|
#: ../js/ui/audioDeviceSelection.js:80
|
||||||
|
msgid "Headset"
|
||||||
|
msgstr "Headset"
|
||||||
|
|
||||||
|
#: ../js/ui/audioDeviceSelection.js:82 ../js/ui/status/volume.js:213
|
||||||
|
msgid "Microphone"
|
||||||
|
msgstr "Mikrofon"
|
||||||
|
|
||||||
#: ../js/ui/backgroundMenu.js:19
|
#: ../js/ui/backgroundMenu.js:19
|
||||||
msgid "Change Background…"
|
msgid "Change Background…"
|
||||||
msgstr "Bytt bakgrunn …"
|
msgstr "Bytt bakgrunn …"
|
||||||
@ -516,12 +537,12 @@ msgstr "Bytt bakgrunn …"
|
|||||||
msgid "Display Settings"
|
msgid "Display Settings"
|
||||||
msgstr "Innstillinger for skjerm"
|
msgstr "Innstillinger for skjerm"
|
||||||
|
|
||||||
#: ../js/ui/backgroundMenu.js:22 ../js/ui/status/system.js:366
|
#: ../js/ui/backgroundMenu.js:22 ../js/ui/status/system.js:371
|
||||||
msgid "Settings"
|
msgid "Settings"
|
||||||
msgstr "Innstillinger"
|
msgstr "Innstillinger"
|
||||||
|
|
||||||
#. Translators: Enter 0-6 (Sunday-Saturday) for non-work days. Examples: "0" (Sunday) "6" (Saturday) "06" (Sunday and Saturday).
|
#. Translators: Enter 0-6 (Sunday-Saturday) for non-work days. Examples: "0" (Sunday) "6" (Saturday) "06" (Sunday and Saturday).
|
||||||
#: ../js/ui/calendar.js:55
|
#: ../js/ui/calendar.js:47
|
||||||
msgctxt "calendar-no-work"
|
msgctxt "calendar-no-work"
|
||||||
msgid "06"
|
msgid "06"
|
||||||
msgstr "06"
|
msgstr "06"
|
||||||
@ -531,100 +552,96 @@ msgstr "06"
|
|||||||
#. * NOTE: These grid abbreviations are always shown together
|
#. * NOTE: These grid abbreviations are always shown together
|
||||||
#. * and in order, e.g. "S M T W T F S".
|
#. * and in order, e.g. "S M T W T F S".
|
||||||
#.
|
#.
|
||||||
#: ../js/ui/calendar.js:84
|
#: ../js/ui/calendar.js:76
|
||||||
msgctxt "grid sunday"
|
msgctxt "grid sunday"
|
||||||
msgid "S"
|
msgid "S"
|
||||||
msgstr "S"
|
msgstr "S"
|
||||||
|
|
||||||
#. Translators: Calendar grid abbreviation for Monday
|
#. Translators: Calendar grid abbreviation for Monday
|
||||||
#: ../js/ui/calendar.js:86
|
#: ../js/ui/calendar.js:78
|
||||||
msgctxt "grid monday"
|
msgctxt "grid monday"
|
||||||
msgid "M"
|
msgid "M"
|
||||||
msgstr "M"
|
msgstr "M"
|
||||||
|
|
||||||
#. Translators: Calendar grid abbreviation for Tuesday
|
#. Translators: Calendar grid abbreviation for Tuesday
|
||||||
#: ../js/ui/calendar.js:88
|
#: ../js/ui/calendar.js:80
|
||||||
msgctxt "grid tuesday"
|
msgctxt "grid tuesday"
|
||||||
msgid "T"
|
msgid "T"
|
||||||
msgstr "T"
|
msgstr "T"
|
||||||
|
|
||||||
#. Translators: Calendar grid abbreviation for Wednesday
|
#. Translators: Calendar grid abbreviation for Wednesday
|
||||||
#: ../js/ui/calendar.js:90
|
#: ../js/ui/calendar.js:82
|
||||||
msgctxt "grid wednesday"
|
msgctxt "grid wednesday"
|
||||||
msgid "W"
|
msgid "W"
|
||||||
msgstr "O"
|
msgstr "O"
|
||||||
|
|
||||||
#. Translators: Calendar grid abbreviation for Thursday
|
#. Translators: Calendar grid abbreviation for Thursday
|
||||||
#: ../js/ui/calendar.js:92
|
#: ../js/ui/calendar.js:84
|
||||||
msgctxt "grid thursday"
|
msgctxt "grid thursday"
|
||||||
msgid "T"
|
msgid "T"
|
||||||
msgstr "T"
|
msgstr "T"
|
||||||
|
|
||||||
#. Translators: Calendar grid abbreviation for Friday
|
#. Translators: Calendar grid abbreviation for Friday
|
||||||
#: ../js/ui/calendar.js:94
|
#: ../js/ui/calendar.js:86
|
||||||
msgctxt "grid friday"
|
msgctxt "grid friday"
|
||||||
msgid "F"
|
msgid "F"
|
||||||
msgstr "F"
|
msgstr "F"
|
||||||
|
|
||||||
#. Translators: Calendar grid abbreviation for Saturday
|
#. Translators: Calendar grid abbreviation for Saturday
|
||||||
#: ../js/ui/calendar.js:96
|
#: ../js/ui/calendar.js:88
|
||||||
msgctxt "grid saturday"
|
msgctxt "grid saturday"
|
||||||
msgid "S"
|
msgid "S"
|
||||||
msgstr "L"
|
msgstr "L"
|
||||||
|
|
||||||
#: ../js/ui/calendar.js:566
|
#: ../js/ui/calendar.js:416
|
||||||
msgid "Previous month"
|
msgid "Previous month"
|
||||||
msgstr "Forrige måned"
|
msgstr "Forrige måned"
|
||||||
|
|
||||||
#: ../js/ui/calendar.js:576
|
#: ../js/ui/calendar.js:426
|
||||||
msgid "Next month"
|
msgid "Next month"
|
||||||
msgstr "Neste måned"
|
msgstr "Neste måned"
|
||||||
|
|
||||||
#: ../js/ui/calendar.js:729
|
#: ../js/ui/calendar.js:579
|
||||||
#, no-javascript-format
|
#, no-javascript-format
|
||||||
msgctxt "date day number format"
|
msgctxt "date day number format"
|
||||||
msgid "%d"
|
msgid "%d"
|
||||||
msgstr "%d"
|
msgstr "%d"
|
||||||
|
|
||||||
#: ../js/ui/calendar.js:784
|
#: ../js/ui/calendar.js:634
|
||||||
msgid "Week %V"
|
msgid "Week %V"
|
||||||
msgstr "Uke %V"
|
msgstr "Uke %V"
|
||||||
|
|
||||||
#. Translators: Shown in calendar event list for all day events
|
#. Translators: Shown in calendar event list for all day events
|
||||||
#. * Keep it short, best if you can use less then 10 characters
|
#. * Keep it short, best if you can use less then 10 characters
|
||||||
#.
|
#.
|
||||||
#: ../js/ui/calendar.js:1189
|
#: ../js/ui/calendar.js:695
|
||||||
msgctxt "event list time"
|
msgctxt "event list time"
|
||||||
msgid "All Day"
|
msgid "All Day"
|
||||||
msgstr "Hele dagen"
|
msgstr "Hele dagen"
|
||||||
|
|
||||||
#: ../js/ui/calendar.js:1296
|
#: ../js/ui/calendar.js:821
|
||||||
msgid "Clear section"
|
|
||||||
msgstr "Tøm seksjon"
|
|
||||||
|
|
||||||
#: ../js/ui/calendar.js:1523
|
|
||||||
msgid "Events"
|
msgid "Events"
|
||||||
msgstr "Hendelser"
|
msgstr "Hendelser"
|
||||||
|
|
||||||
#: ../js/ui/calendar.js:1532
|
#: ../js/ui/calendar.js:830
|
||||||
msgctxt "calendar heading"
|
msgctxt "calendar heading"
|
||||||
msgid "%A, %B %d"
|
msgid "%A, %B %d"
|
||||||
msgstr "%A %B %d"
|
msgstr "%A %B %d"
|
||||||
|
|
||||||
#: ../js/ui/calendar.js:1536
|
#: ../js/ui/calendar.js:834
|
||||||
msgctxt "calendar heading"
|
msgctxt "calendar heading"
|
||||||
msgid "%A, %B %d, %Y"
|
msgid "%A, %B %d, %Y"
|
||||||
msgstr "%A %B %d, %Y"
|
msgstr "%A %B %d, %Y"
|
||||||
|
|
||||||
#: ../js/ui/calendar.js:1621
|
#: ../js/ui/calendar.js:919
|
||||||
msgid "Notifications"
|
msgid "Notifications"
|
||||||
msgstr "Varslinger"
|
msgstr "Varslinger"
|
||||||
|
|
||||||
#: ../js/ui/calendar.js:1772
|
#: ../js/ui/calendar.js:1070
|
||||||
msgid "No Notifications"
|
msgid "No Notifications"
|
||||||
msgstr "Ingen varslinger"
|
msgstr "Ingen varslinger"
|
||||||
|
|
||||||
#: ../js/ui/calendar.js:1775
|
#: ../js/ui/calendar.js:1073
|
||||||
msgid "No Events"
|
msgid "No Events"
|
||||||
msgstr "Ingen hendelser"
|
msgstr "Ingen hendelser"
|
||||||
|
|
||||||
@ -762,7 +779,7 @@ msgstr "Beklager, det virket ikke. Prøv igjen."
|
|||||||
|
|
||||||
#. Translators: this is the other person changing their old IM name to their new
|
#. Translators: this is the other person changing their old IM name to their new
|
||||||
#. IM name.
|
#. IM name.
|
||||||
#: ../js/ui/components/telepathyClient.js:759
|
#: ../js/ui/components/telepathyClient.js:760
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "%s is now known as %s"
|
msgid "%s is now known as %s"
|
||||||
msgstr "%s er nå kjent som %s"
|
msgstr "%s er nå kjent som %s"
|
||||||
@ -949,11 +966,11 @@ msgid "Keyboard"
|
|||||||
msgstr "Tastatur"
|
msgstr "Tastatur"
|
||||||
|
|
||||||
#. translators: 'Hide' is a verb
|
#. translators: 'Hide' is a verb
|
||||||
#: ../js/ui/legacyTray.js:66
|
#: ../js/ui/legacyTray.js:65
|
||||||
msgid "Hide tray"
|
msgid "Hide tray"
|
||||||
msgstr "Skjul statusområde"
|
msgstr "Skjul statusområde"
|
||||||
|
|
||||||
#: ../js/ui/legacyTray.js:107
|
#: ../js/ui/legacyTray.js:106
|
||||||
msgid "Status Icons"
|
msgid "Status Icons"
|
||||||
msgstr "Statusikoner"
|
msgstr "Statusikoner"
|
||||||
|
|
||||||
@ -1005,10 +1022,26 @@ msgstr "Vis kildekode"
|
|||||||
msgid "Web Page"
|
msgid "Web Page"
|
||||||
msgstr "Nettside"
|
msgstr "Nettside"
|
||||||
|
|
||||||
|
#: ../js/ui/messageList.js:543
|
||||||
|
msgid "Clear section"
|
||||||
|
msgstr "Tøm seksjon"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:1486
|
#: ../js/ui/messageTray.js:1486
|
||||||
msgid "System Information"
|
msgid "System Information"
|
||||||
msgstr "Systeminformasjon"
|
msgstr "Systeminformasjon"
|
||||||
|
|
||||||
|
#: ../js/ui/mpris.js:194
|
||||||
|
msgid "Unknown artist"
|
||||||
|
msgstr "Ukjent artist"
|
||||||
|
|
||||||
|
#: ../js/ui/mpris.js:195
|
||||||
|
msgid "Unknown title"
|
||||||
|
msgstr "Ukjent tittel"
|
||||||
|
|
||||||
|
#: ../js/ui/mpris.js:217
|
||||||
|
msgid "Media"
|
||||||
|
msgstr "Media"
|
||||||
|
|
||||||
#: ../js/ui/overview.js:84
|
#: ../js/ui/overview.js:84
|
||||||
msgid "Undo"
|
msgid "Undo"
|
||||||
msgstr "Angre"
|
msgstr "Angre"
|
||||||
@ -1085,7 +1118,7 @@ msgid_plural "%d new notifications"
|
|||||||
msgstr[0] "%d ny varsling"
|
msgstr[0] "%d ny varsling"
|
||||||
msgstr[1] "%d nye varslinger"
|
msgstr[1] "%d nye varslinger"
|
||||||
|
|
||||||
#: ../js/ui/screenShield.js:432 ../js/ui/status/system.js:374
|
#: ../js/ui/screenShield.js:432 ../js/ui/status/system.js:379
|
||||||
msgid "Lock"
|
msgid "Lock"
|
||||||
msgstr "Lås"
|
msgstr "Lås"
|
||||||
|
|
||||||
@ -1227,30 +1260,48 @@ msgstr "Lysstyrke"
|
|||||||
msgid "Show Keyboard Layout"
|
msgid "Show Keyboard Layout"
|
||||||
msgstr "Vis tastaturutforming"
|
msgstr "Vis tastaturutforming"
|
||||||
|
|
||||||
#: ../js/ui/status/location.js:71 ../js/ui/status/location.js:177
|
#: ../js/ui/status/location.js:107 ../js/ui/status/location.js:215
|
||||||
msgid "Location Enabled"
|
msgid "Location Enabled"
|
||||||
msgstr "Plassering slått på"
|
msgstr "Plassering slått på"
|
||||||
|
|
||||||
#: ../js/ui/status/location.js:72 ../js/ui/status/location.js:178
|
#: ../js/ui/status/location.js:108 ../js/ui/status/location.js:216
|
||||||
msgid "Disable"
|
msgid "Disable"
|
||||||
msgstr "Slå av"
|
msgstr "Slå av"
|
||||||
|
|
||||||
#: ../js/ui/status/location.js:73
|
#: ../js/ui/status/location.js:109
|
||||||
msgid "Privacy Settings"
|
msgid "Privacy Settings"
|
||||||
msgstr "Innstillinger for personvern"
|
msgstr "Innstillinger for personvern"
|
||||||
|
|
||||||
#: ../js/ui/status/location.js:176
|
#: ../js/ui/status/location.js:214
|
||||||
msgid "Location In Use"
|
msgid "Location In Use"
|
||||||
msgstr "Plassering i bruk"
|
msgstr "Plassering i bruk"
|
||||||
|
|
||||||
#: ../js/ui/status/location.js:180
|
#: ../js/ui/status/location.js:218
|
||||||
msgid "Location Disabled"
|
msgid "Location Disabled"
|
||||||
msgstr "Plassering slått av"
|
msgstr "Plassering slått av"
|
||||||
|
|
||||||
#: ../js/ui/status/location.js:181
|
#: ../js/ui/status/location.js:219
|
||||||
msgid "Enable"
|
msgid "Enable"
|
||||||
msgstr "Slå på"
|
msgstr "Slå på"
|
||||||
|
|
||||||
|
#: ../js/ui/status/location.js:426
|
||||||
|
msgid "Deny Access"
|
||||||
|
msgstr "Nekt tilgang"
|
||||||
|
|
||||||
|
#: ../js/ui/status/location.js:429
|
||||||
|
msgid "Grant Access"
|
||||||
|
msgstr "Gi tilgang"
|
||||||
|
|
||||||
|
#. Translators: %s is an application name
|
||||||
|
#: ../js/ui/status/location.js:435
|
||||||
|
#, javascript-format
|
||||||
|
msgid "Give %s access to your location?"
|
||||||
|
msgstr "Gi %s tilgang til din plassering?"
|
||||||
|
|
||||||
|
#: ../js/ui/status/location.js:437
|
||||||
|
msgid "Location access can be changed at any time from the privacy settings."
|
||||||
|
msgstr "Tilgang til plassering kan endres når som helst fra innstillinger for personvern."
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:101
|
#: ../js/ui/status/network.js:101
|
||||||
msgid "<unknown>"
|
msgid "<unknown>"
|
||||||
msgstr "<ukjent>"
|
msgstr "<ukjent>"
|
||||||
@ -1473,27 +1524,27 @@ msgstr "%d %%"
|
|||||||
msgid "Airplane Mode On"
|
msgid "Airplane Mode On"
|
||||||
msgstr "Flymodus er slått på"
|
msgstr "Flymodus er slått på"
|
||||||
|
|
||||||
#: ../js/ui/status/system.js:343
|
#: ../js/ui/status/system.js:348
|
||||||
msgid "Switch User"
|
msgid "Switch User"
|
||||||
msgstr "Bytt bruker"
|
msgstr "Bytt bruker"
|
||||||
|
|
||||||
#: ../js/ui/status/system.js:348
|
#: ../js/ui/status/system.js:353
|
||||||
msgid "Log Out"
|
msgid "Log Out"
|
||||||
msgstr "Logg ut"
|
msgstr "Logg ut"
|
||||||
|
|
||||||
#: ../js/ui/status/system.js:353
|
#: ../js/ui/status/system.js:358
|
||||||
msgid "Account Settings"
|
msgid "Account Settings"
|
||||||
msgstr "Innstillinger for konto"
|
msgstr "Innstillinger for konto"
|
||||||
|
|
||||||
#: ../js/ui/status/system.js:370
|
#: ../js/ui/status/system.js:375
|
||||||
msgid "Orientation Lock"
|
msgid "Orientation Lock"
|
||||||
msgstr "Lås for orientering"
|
msgstr "Lås for orientering"
|
||||||
|
|
||||||
#: ../js/ui/status/system.js:378
|
#: ../js/ui/status/system.js:383
|
||||||
msgid "Suspend"
|
msgid "Suspend"
|
||||||
msgstr "Hvilemodus"
|
msgstr "Hvilemodus"
|
||||||
|
|
||||||
#: ../js/ui/status/system.js:381
|
#: ../js/ui/status/system.js:386
|
||||||
msgid "Power Off"
|
msgid "Power Off"
|
||||||
msgstr "Slå av"
|
msgstr "Slå av"
|
||||||
|
|
||||||
@ -1505,10 +1556,6 @@ msgstr "Volum endret"
|
|||||||
msgid "Volume"
|
msgid "Volume"
|
||||||
msgstr "Volum"
|
msgstr "Volum"
|
||||||
|
|
||||||
#: ../js/ui/status/volume.js:213
|
|
||||||
msgid "Microphone"
|
|
||||||
msgstr "Mikrofon"
|
|
||||||
|
|
||||||
#: ../js/ui/unlockDialog.js:67
|
#: ../js/ui/unlockDialog.js:67
|
||||||
msgid "Log in as another user"
|
msgid "Log in as another user"
|
||||||
msgstr "Logg inn som en annen bruker"
|
msgstr "Logg inn som en annen bruker"
|
||||||
|
1043
po/pt_BR.po
1043
po/pt_BR.po
File diff suppressed because it is too large
Load Diff
834
po/sr@latin.po
834
po/sr@latin.po
File diff suppressed because it is too large
Load Diff
2
po/ug.po
2
po/ug.po
@ -15,7 +15,7 @@ msgstr ""
|
|||||||
"PO-Revision-Date: 2013-03-07 21:01+0900\n"
|
"PO-Revision-Date: 2013-03-07 21:01+0900\n"
|
||||||
"Last-Translator: Gheyret Kenji <gheyret@gmail.com>\n"
|
"Last-Translator: Gheyret Kenji <gheyret@gmail.com>\n"
|
||||||
"Language-Team: Uyghur Computer Science Association <UKIJ@yahoogroups.com>\n"
|
"Language-Team: Uyghur Computer Science Association <UKIJ@yahoogroups.com>\n"
|
||||||
"Language: \n"
|
"Language: ug\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
1635
po/zh_HK.po
1635
po/zh_HK.po
File diff suppressed because it is too large
Load Diff
@ -12,7 +12,9 @@ desktopdir=$(datadir)/applications
|
|||||||
desktop_DATA = $(desktop_in_files:.desktop.in=.desktop)
|
desktop_DATA = $(desktop_in_files:.desktop.in=.desktop)
|
||||||
desktop_in_files = calendar-server/evolution-calendar.desktop.in
|
desktop_in_files = calendar-server/evolution-calendar.desktop.in
|
||||||
|
|
||||||
@INTLTOOL_DESKTOP_RULE@
|
%.desktop:%.desktop.in
|
||||||
|
@$(MKDIR_P) $(builddir)/calendar-server
|
||||||
|
$(AM_V_GEN) $(MSGFMT) --desktop --template $< -d $(top_srcdir)/po -o $@
|
||||||
|
|
||||||
gnome_shell_calendar_server_CFLAGS = \
|
gnome_shell_calendar_server_CFLAGS = \
|
||||||
-I$(top_srcdir)/src \
|
-I$(top_srcdir)/src \
|
||||||
@ -30,6 +32,7 @@ gnome_shell_calendar_server_LDADD = \
|
|||||||
EXTRA_DIST += \
|
EXTRA_DIST += \
|
||||||
calendar-server/README \
|
calendar-server/README \
|
||||||
calendar-server/org.gnome.Shell.CalendarServer.service.in \
|
calendar-server/org.gnome.Shell.CalendarServer.service.in \
|
||||||
|
$(desktop_in_files) \
|
||||||
$(NULL)
|
$(NULL)
|
||||||
|
|
||||||
CLEANFILES += \
|
CLEANFILES += \
|
||||||
|
@ -12,7 +12,7 @@ SUBDIRS = gvc
|
|||||||
|
|
||||||
-include $(INTROSPECTION_MAKEFILE)
|
-include $(INTROSPECTION_MAKEFILE)
|
||||||
INTROSPECTION_GIRS =
|
INTROSPECTION_GIRS =
|
||||||
INTROSPECTION_SCANNER_ARGS = --warn-all --warn-error --add-include-path=$(srcdir)
|
INTROSPECTION_SCANNER_ARGS = --warn-all --warn-error --add-include-path=$(srcdir) --add-include-path=$(MUTTER_GIR_DIR) -L$(MUTTER_TYPELIB_DIR)
|
||||||
INTROSPECTION_COMPILER_ARGS = --includedir=$(srcdir) --includedir=$(MUTTER_TYPELIB_DIR)
|
INTROSPECTION_COMPILER_ARGS = --includedir=$(srcdir) --includedir=$(MUTTER_TYPELIB_DIR)
|
||||||
|
|
||||||
typelibdir = $(pkglibdir)
|
typelibdir = $(pkglibdir)
|
||||||
@ -201,6 +201,7 @@ gnome_shell_CPPFLAGS = \
|
|||||||
# Here, and after, we repeat mutter and bluetooth libraries just for the rpath
|
# Here, and after, we repeat mutter and bluetooth libraries just for the rpath
|
||||||
# The dependency is already pulled in by libtool
|
# The dependency is already pulled in by libtool
|
||||||
gnome_shell_LDADD = libgnome-shell.la libgnome-shell-js.la $(GNOME_SHELL_LIBS) $(MUTTER_LIBS)
|
gnome_shell_LDADD = libgnome-shell.la libgnome-shell-js.la $(GNOME_SHELL_LIBS) $(MUTTER_LIBS)
|
||||||
|
gnome_shell_LDFLAGS = -rpath $(MUTTER_TYPELIB_DIR)
|
||||||
gnome_shell_DEPENDENCIES = libgnome-shell.la
|
gnome_shell_DEPENDENCIES = libgnome-shell.la
|
||||||
|
|
||||||
gnome_shell_extension_prefs_SOURCES = \
|
gnome_shell_extension_prefs_SOURCES = \
|
||||||
@ -212,6 +213,7 @@ nodist_gnome_shell_extension_prefs_SOURCES = \
|
|||||||
$(NULL)
|
$(NULL)
|
||||||
gnome_shell_extension_prefs_CPPFLAGS = $(gnome_shell_cflags)
|
gnome_shell_extension_prefs_CPPFLAGS = $(gnome_shell_cflags)
|
||||||
gnome_shell_extension_prefs_LDADD = libgnome-shell-js.la $(GNOME_SHELL_LIBS)
|
gnome_shell_extension_prefs_LDADD = libgnome-shell-js.la $(GNOME_SHELL_LIBS)
|
||||||
|
gnome_shell_extension_prefs_LDFLAGS = -rpath $(MUTTER_TYPELIB_DIR)
|
||||||
|
|
||||||
if HAVE_NETWORKMANAGER
|
if HAVE_NETWORKMANAGER
|
||||||
|
|
||||||
@ -225,6 +227,7 @@ nodist_gnome_shell_portal_helper_SOURCES = \
|
|||||||
$(NULL)
|
$(NULL)
|
||||||
gnome_shell_portal_helper_CPPFLAGS = $(gnome_shell_cflags)
|
gnome_shell_portal_helper_CPPFLAGS = $(gnome_shell_cflags)
|
||||||
gnome_shell_portal_helper_LDADD = libgnome-shell-js.la $(GNOME_SHELL_LIBS)
|
gnome_shell_portal_helper_LDADD = libgnome-shell-js.la $(GNOME_SHELL_LIBS)
|
||||||
|
gnome_shell_portal_helper_LDFLAGS = -rpath $(MUTTER_TYPELIB_DIR)
|
||||||
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
@ -279,7 +282,7 @@ noinst_PROGRAMS += run-js-test
|
|||||||
|
|
||||||
run_js_test_CPPFLAGS = $(MUTTER_CFLAGS) $(gnome_shell_cflags)
|
run_js_test_CPPFLAGS = $(MUTTER_CFLAGS) $(gnome_shell_cflags)
|
||||||
run_js_test_LDADD = libgnome-shell.la $(GNOME_SHELL_JS_LIBS) $(MUTTER_LIBS)
|
run_js_test_LDADD = libgnome-shell.la $(GNOME_SHELL_JS_LIBS) $(MUTTER_LIBS)
|
||||||
run_js_test_LDFLAGS = -export-dynamic
|
run_js_test_LDFLAGS = -export-dynamic -rpath $(MUTTER_TYPELIB_DIR)
|
||||||
|
|
||||||
run_js_test_SOURCES = \
|
run_js_test_SOURCES = \
|
||||||
run-js-test.c
|
run-js-test.c
|
||||||
|
8
src/calendar-server/evolution-calendar.desktop.in
Normal file
8
src/calendar-server/evolution-calendar.desktop.in
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
[Desktop Entry]
|
||||||
|
Name=Evolution Calendar
|
||||||
|
Exec=evolution -c calendar
|
||||||
|
# Translators: Do NOT translate or transliterate this text (this is an icon file name)!
|
||||||
|
Icon=evolution
|
||||||
|
NoDisplay=true
|
||||||
|
Type=Application
|
||||||
|
StartupNotify=true
|
@ -1,7 +0,0 @@
|
|||||||
[Desktop Entry]
|
|
||||||
_Name=Evolution Calendar
|
|
||||||
Exec=evolution -c calendar
|
|
||||||
Icon=evolution
|
|
||||||
NoDisplay=true
|
|
||||||
Type=Application
|
|
||||||
StartupNotify=true
|
|
@ -74,15 +74,15 @@ static App *_global_app = NULL;
|
|||||||
|
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
|
char *rid;
|
||||||
time_t start_time;
|
time_t start_time;
|
||||||
time_t end_time;
|
time_t end_time;
|
||||||
} CalendarOccurrence;
|
} CalendarOccurrence;
|
||||||
|
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
char *id;
|
|
||||||
char *uid;
|
char *uid;
|
||||||
char *rid;
|
char *source_id;
|
||||||
char *backend_name;
|
char *backend_name;
|
||||||
char *summary;
|
char *summary;
|
||||||
char *description;
|
char *description;
|
||||||
@ -95,6 +95,12 @@ typedef struct
|
|||||||
GSList *occurrences;
|
GSList *occurrences;
|
||||||
} CalendarAppointment;
|
} CalendarAppointment;
|
||||||
|
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
ECalClient *client;
|
||||||
|
GHashTable *appointments;
|
||||||
|
} CollectAppointmentsData;
|
||||||
|
|
||||||
static time_t
|
static time_t
|
||||||
get_time_from_property (icalcomponent *ical,
|
get_time_from_property (icalcomponent *ical,
|
||||||
icalproperty_kind prop_kind,
|
icalproperty_kind prop_kind,
|
||||||
@ -129,22 +135,6 @@ get_ical_uid (icalcomponent *ical)
|
|||||||
return g_strdup (icalcomponent_get_uid (ical));
|
return g_strdup (icalcomponent_get_uid (ical));
|
||||||
}
|
}
|
||||||
|
|
||||||
static char *
|
|
||||||
get_ical_rid (icalcomponent *ical)
|
|
||||||
{
|
|
||||||
icalproperty *prop;
|
|
||||||
struct icaltimetype ical_time;
|
|
||||||
|
|
||||||
prop = icalcomponent_get_first_property (ical, ICAL_RECURRENCEID_PROPERTY);
|
|
||||||
if (!prop)
|
|
||||||
return NULL;
|
|
||||||
|
|
||||||
ical_time = icalproperty_get_recurrenceid (prop);
|
|
||||||
|
|
||||||
return icaltime_is_valid_time (ical_time) && !icaltime_is_null_time (ical_time) ?
|
|
||||||
g_strdup (icaltime_as_ical_string (ical_time)) : NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
static char *
|
static char *
|
||||||
get_ical_summary (icalcomponent *ical)
|
get_ical_summary (icalcomponent *ical)
|
||||||
{
|
{
|
||||||
@ -324,12 +314,14 @@ calendar_appointment_equal (CalendarAppointment *a,
|
|||||||
CalendarOccurrence *ob = lb->data;
|
CalendarOccurrence *ob = lb->data;
|
||||||
|
|
||||||
if (oa->start_time != ob->start_time ||
|
if (oa->start_time != ob->start_time ||
|
||||||
oa->end_time != ob->end_time)
|
oa->end_time != ob->end_time ||
|
||||||
|
null_safe_strcmp (oa->rid, ob->rid) != 0)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
return
|
return
|
||||||
null_safe_strcmp (a->uid, b->uid) == 0 &&
|
null_safe_strcmp (a->uid, b->uid) == 0 &&
|
||||||
|
null_safe_strcmp (a->source_id, b->source_id) == 0 &&
|
||||||
null_safe_strcmp (a->backend_name, b->backend_name) == 0 &&
|
null_safe_strcmp (a->backend_name, b->backend_name) == 0 &&
|
||||||
null_safe_strcmp (a->summary, b->summary) == 0 &&
|
null_safe_strcmp (a->summary, b->summary) == 0 &&
|
||||||
null_safe_strcmp (a->description, b->description) == 0 &&
|
null_safe_strcmp (a->description, b->description) == 0 &&
|
||||||
@ -345,18 +337,15 @@ calendar_appointment_free (CalendarAppointment *appointment)
|
|||||||
GSList *l;
|
GSList *l;
|
||||||
|
|
||||||
for (l = appointment->occurrences; l; l = l->next)
|
for (l = appointment->occurrences; l; l = l->next)
|
||||||
g_free (l->data);
|
g_free (((CalendarOccurrence *)l->data)->rid);
|
||||||
g_slist_free (appointment->occurrences);
|
g_slist_free_full (appointment->occurrences, g_free);
|
||||||
appointment->occurrences = NULL;
|
appointment->occurrences = NULL;
|
||||||
|
|
||||||
g_free (appointment->id);
|
|
||||||
appointment->id = NULL;
|
|
||||||
|
|
||||||
g_free (appointment->uid);
|
g_free (appointment->uid);
|
||||||
appointment->uid = NULL;
|
appointment->uid = NULL;
|
||||||
|
|
||||||
g_free (appointment->rid);
|
g_free (appointment->source_id);
|
||||||
appointment->rid = NULL;
|
appointment->source_id = NULL;
|
||||||
|
|
||||||
g_free (appointment->backend_name);
|
g_free (appointment->backend_name);
|
||||||
appointment->backend_name = NULL;
|
appointment->backend_name = NULL;
|
||||||
@ -377,13 +366,16 @@ calendar_appointment_free (CalendarAppointment *appointment)
|
|||||||
static void
|
static void
|
||||||
calendar_appointment_init (CalendarAppointment *appointment,
|
calendar_appointment_init (CalendarAppointment *appointment,
|
||||||
icalcomponent *ical,
|
icalcomponent *ical,
|
||||||
ECalClient *cal,
|
ECalClient *cal)
|
||||||
icaltimezone *default_zone)
|
|
||||||
{
|
{
|
||||||
const char *source_uid;
|
icaltimezone *default_zone;
|
||||||
|
const char *source_id;
|
||||||
|
|
||||||
|
source_id = e_source_get_uid (e_client_get_source (E_CLIENT (cal)));
|
||||||
|
default_zone = e_cal_client_get_default_timezone (cal);
|
||||||
|
|
||||||
appointment->uid = get_ical_uid (ical);
|
appointment->uid = get_ical_uid (ical);
|
||||||
appointment->rid = get_ical_rid (ical);
|
appointment->source_id = g_strdup (source_id);
|
||||||
appointment->backend_name = get_source_backend_name (cal);
|
appointment->backend_name = get_source_backend_name (cal);
|
||||||
appointment->summary = get_ical_summary (ical);
|
appointment->summary = get_ical_summary (ical);
|
||||||
appointment->description = get_ical_description (ical);
|
appointment->description = get_ical_description (ical);
|
||||||
@ -393,16 +385,6 @@ calendar_appointment_init (CalendarAppointment *appointment,
|
|||||||
appointment->is_all_day = get_ical_is_all_day (ical,
|
appointment->is_all_day = get_ical_is_all_day (ical,
|
||||||
appointment->start_time,
|
appointment->start_time,
|
||||||
default_zone);
|
default_zone);
|
||||||
|
|
||||||
/* While the UID is usually enough to identify an event, only the triple
|
|
||||||
* of (source,UID,RID) is fully unambiguous; neither may contain '\n',
|
|
||||||
* so we can safely use it to create a unique ID from the triple
|
|
||||||
*/
|
|
||||||
source_uid = e_source_get_uid (e_client_get_source (E_CLIENT (cal)));
|
|
||||||
appointment->id = g_strdup_printf ("%s\n%s\n%s",
|
|
||||||
source_uid,
|
|
||||||
appointment->uid,
|
|
||||||
appointment->rid ? appointment->rid : "");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static icaltimezone *
|
static icaltimezone *
|
||||||
@ -420,70 +402,52 @@ resolve_timezone_id (const char *tzid,
|
|||||||
return retval;
|
return retval;
|
||||||
}
|
}
|
||||||
|
|
||||||
static gboolean
|
|
||||||
calendar_appointment_collect_occurrence (ECalComponent *component,
|
|
||||||
time_t occurrence_start,
|
|
||||||
time_t occurrence_end,
|
|
||||||
gpointer data)
|
|
||||||
{
|
|
||||||
CalendarOccurrence *occurrence;
|
|
||||||
GSList **collect_loc = data;
|
|
||||||
|
|
||||||
occurrence = g_new0 (CalendarOccurrence, 1);
|
|
||||||
occurrence->start_time = occurrence_start;
|
|
||||||
occurrence->end_time = occurrence_end;
|
|
||||||
|
|
||||||
*collect_loc = g_slist_prepend (*collect_loc, occurrence);
|
|
||||||
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
calendar_appointment_generate_occurrences (CalendarAppointment *appointment,
|
|
||||||
icalcomponent *ical,
|
|
||||||
ECalClient *cal,
|
|
||||||
time_t start,
|
|
||||||
time_t end,
|
|
||||||
icaltimezone *default_zone)
|
|
||||||
{
|
|
||||||
ECalComponent *ecal;
|
|
||||||
|
|
||||||
g_assert (appointment->occurrences == NULL);
|
|
||||||
|
|
||||||
ecal = e_cal_component_new ();
|
|
||||||
e_cal_component_set_icalcomponent (ecal,
|
|
||||||
icalcomponent_new_clone (ical));
|
|
||||||
|
|
||||||
e_cal_recur_generate_instances (ecal,
|
|
||||||
start,
|
|
||||||
end,
|
|
||||||
calendar_appointment_collect_occurrence,
|
|
||||||
&appointment->occurrences,
|
|
||||||
(ECalRecurResolveTimezoneFn) resolve_timezone_id,
|
|
||||||
cal,
|
|
||||||
default_zone);
|
|
||||||
|
|
||||||
g_object_unref (ecal);
|
|
||||||
|
|
||||||
appointment->occurrences = g_slist_reverse (appointment->occurrences);
|
|
||||||
}
|
|
||||||
|
|
||||||
static CalendarAppointment *
|
static CalendarAppointment *
|
||||||
calendar_appointment_new (icalcomponent *ical,
|
calendar_appointment_new (icalcomponent *ical,
|
||||||
ECalClient *cal,
|
ECalClient *cal)
|
||||||
icaltimezone *default_zone)
|
|
||||||
{
|
{
|
||||||
CalendarAppointment *appointment;
|
CalendarAppointment *appointment;
|
||||||
|
|
||||||
appointment = g_new0 (CalendarAppointment, 1);
|
appointment = g_new0 (CalendarAppointment, 1);
|
||||||
|
|
||||||
calendar_appointment_init (appointment,
|
calendar_appointment_init (appointment, ical, cal);
|
||||||
ical,
|
|
||||||
cal,
|
|
||||||
default_zone);
|
|
||||||
return appointment;
|
return appointment;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static gboolean
|
||||||
|
generate_instances_cb (ECalComponent *comp,
|
||||||
|
time_t start,
|
||||||
|
time_t end,
|
||||||
|
gpointer data)
|
||||||
|
{
|
||||||
|
ECalClient *cal = ((CollectAppointmentsData *)data)->client;
|
||||||
|
GHashTable *appointments = ((CollectAppointmentsData *)data)->appointments;
|
||||||
|
CalendarAppointment *appointment;
|
||||||
|
CalendarOccurrence *occurrence;
|
||||||
|
const char *uid;
|
||||||
|
|
||||||
|
e_cal_component_get_uid (comp, &uid);
|
||||||
|
appointment = g_hash_table_lookup (appointments, uid);
|
||||||
|
|
||||||
|
if (appointment == NULL)
|
||||||
|
{
|
||||||
|
icalcomponent *ical = e_cal_component_get_icalcomponent (comp);
|
||||||
|
|
||||||
|
appointment = calendar_appointment_new (ical, cal);
|
||||||
|
g_hash_table_insert (appointments, g_strdup (uid), appointment);
|
||||||
|
}
|
||||||
|
|
||||||
|
occurrence = g_new0 (CalendarOccurrence, 1);
|
||||||
|
occurrence->start_time = start;
|
||||||
|
occurrence->end_time = end;
|
||||||
|
occurrence->rid = e_cal_component_get_recurid_as_string (comp);
|
||||||
|
|
||||||
|
appointment->occurrences = g_slist_append (appointment->occurrences, occurrence);
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* ---------------------------------------------------------------------------------------------------- */
|
/* ---------------------------------------------------------------------------------------------------- */
|
||||||
|
|
||||||
struct _App
|
struct _App
|
||||||
@ -526,6 +490,10 @@ app_update_timezone (App *app)
|
|||||||
app->timezone_location = location;
|
app->timezone_location = location;
|
||||||
print_debug ("Using timezone %s", app->timezone_location);
|
print_debug ("Using timezone %s", app->timezone_location);
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
g_free (location);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
@ -619,6 +587,7 @@ app_load_events (App *app)
|
|||||||
GList *ll;
|
GList *ll;
|
||||||
gchar *since_iso8601;
|
gchar *since_iso8601;
|
||||||
gchar *until_iso8601;
|
gchar *until_iso8601;
|
||||||
|
gchar *query;
|
||||||
|
|
||||||
/* out with the old */
|
/* out with the old */
|
||||||
g_hash_table_remove_all (app->appointments);
|
g_hash_table_remove_all (app->appointments);
|
||||||
@ -645,14 +614,19 @@ app_load_events (App *app)
|
|||||||
since_iso8601,
|
since_iso8601,
|
||||||
until_iso8601);
|
until_iso8601);
|
||||||
|
|
||||||
|
query = g_strdup_printf ("occur-in-time-range? (make-time \"%s\") "
|
||||||
|
"(make-time \"%s\")",
|
||||||
|
since_iso8601,
|
||||||
|
until_iso8601);
|
||||||
|
|
||||||
clients = calendar_sources_get_appointment_clients (app->sources);
|
clients = calendar_sources_get_appointment_clients (app->sources);
|
||||||
for (l = clients; l != NULL; l = l->next)
|
for (l = clients; l != NULL; l = l->next)
|
||||||
{
|
{
|
||||||
ECalClient *cal = E_CAL_CLIENT (l->data);
|
ECalClient *cal = E_CAL_CLIENT (l->data);
|
||||||
GError *error;
|
GError *error;
|
||||||
gchar *query;
|
|
||||||
GSList *objects, *j;
|
GSList *objects, *j;
|
||||||
ECalClientView *view;
|
ECalClientView *view;
|
||||||
|
CollectAppointmentsData data;
|
||||||
|
|
||||||
e_cal_client_set_default_timezone (cal, app->zone);
|
e_cal_client_set_default_timezone (cal, app->zone);
|
||||||
|
|
||||||
@ -666,45 +640,13 @@ app_load_events (App *app)
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
query = g_strdup_printf ("occur-in-time-range? (make-time \"%s\") "
|
data.client = cal;
|
||||||
"(make-time \"%s\")",
|
data.appointments = app->appointments;
|
||||||
since_iso8601,
|
e_cal_client_generate_instances_sync (cal,
|
||||||
until_iso8601);
|
|
||||||
error = NULL;
|
|
||||||
objects = NULL;
|
|
||||||
if (!e_cal_client_get_object_list_sync (cal,
|
|
||||||
query,
|
|
||||||
&objects,
|
|
||||||
NULL, /* cancellable */
|
|
||||||
&error))
|
|
||||||
{
|
|
||||||
ESource *source = e_client_get_source (E_CLIENT (cal));
|
|
||||||
g_warning ("Error querying calendar %s: %s\n",
|
|
||||||
e_source_get_uid (source), error->message);
|
|
||||||
g_error_free (error);
|
|
||||||
g_free (query);
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
for (j = objects; j != NULL; j = j->next)
|
|
||||||
{
|
|
||||||
icalcomponent *ical = j->data;
|
|
||||||
CalendarAppointment *appointment;
|
|
||||||
|
|
||||||
appointment = calendar_appointment_new (ical, cal, app->zone);
|
|
||||||
if (appointment == NULL)
|
|
||||||
continue;
|
|
||||||
|
|
||||||
calendar_appointment_generate_occurrences (appointment,
|
|
||||||
ical,
|
|
||||||
cal,
|
|
||||||
app->since,
|
app->since,
|
||||||
app->until,
|
app->until,
|
||||||
app->zone);
|
generate_instances_cb,
|
||||||
g_hash_table_insert (app->appointments, g_strdup (appointment->uid), appointment);
|
&data);
|
||||||
}
|
|
||||||
|
|
||||||
e_cal_client_free_icalcomp_slist (objects);
|
|
||||||
|
|
||||||
error = NULL;
|
error = NULL;
|
||||||
if (!e_cal_client_get_view_sync (cal,
|
if (!e_cal_client_get_view_sync (cal,
|
||||||
@ -733,12 +675,11 @@ app_load_events (App *app)
|
|||||||
e_cal_client_view_start (view, NULL);
|
e_cal_client_view_start (view, NULL);
|
||||||
app->live_views = g_list_prepend (app->live_views, view);
|
app->live_views = g_list_prepend (app->live_views, view);
|
||||||
}
|
}
|
||||||
|
|
||||||
g_free (query);
|
|
||||||
}
|
}
|
||||||
g_list_free (clients);
|
g_list_free (clients);
|
||||||
g_free (since_iso8601);
|
g_free (since_iso8601);
|
||||||
g_free (until_iso8601);
|
g_free (until_iso8601);
|
||||||
|
g_free (query);
|
||||||
app->cache_invalid = FALSE;
|
app->cache_invalid = FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -929,16 +870,27 @@ handle_method_call (GDBusConnection *connection,
|
|||||||
(start_time <= app->since &&
|
(start_time <= app->since &&
|
||||||
(end_time - 1) > app->since))
|
(end_time - 1) > app->since))
|
||||||
{
|
{
|
||||||
|
/* While the UID is usually enough to identify an event,
|
||||||
|
* only the triple of (source,UID,RID) is fully unambiguous;
|
||||||
|
* neither may contain '\n', so we can safely use it to
|
||||||
|
* create a unique ID from the triple
|
||||||
|
*/
|
||||||
|
char *id = g_strdup_printf ("%s\n%s\n%s",
|
||||||
|
a->source_id,
|
||||||
|
a->uid,
|
||||||
|
o->rid ? o->rid : "");
|
||||||
|
|
||||||
g_variant_builder_init (&extras_builder, G_VARIANT_TYPE ("a{sv}"));
|
g_variant_builder_init (&extras_builder, G_VARIANT_TYPE ("a{sv}"));
|
||||||
g_variant_builder_add (&builder,
|
g_variant_builder_add (&builder,
|
||||||
"(sssbxxa{sv})",
|
"(sssbxxa{sv})",
|
||||||
a->id,
|
id,
|
||||||
a->summary != NULL ? a->summary : "",
|
a->summary != NULL ? a->summary : "",
|
||||||
a->description != NULL ? a->description : "",
|
a->description != NULL ? a->description : "",
|
||||||
(gboolean) a->is_all_day,
|
(gboolean) a->is_all_day,
|
||||||
(gint64) start_time,
|
(gint64) start_time,
|
||||||
(gint64) end_time,
|
(gint64) end_time,
|
||||||
extras_builder);
|
extras_builder);
|
||||||
|
g_free (id);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
2
src/gvc
2
src/gvc
Submodule src/gvc updated: 0a79019088...25bf3ed75f
@ -59,6 +59,8 @@ main(int argc, char **argv)
|
|||||||
gsize len;
|
gsize len;
|
||||||
int code;
|
int code;
|
||||||
|
|
||||||
|
gdk_set_allowed_backends("x11");
|
||||||
|
|
||||||
gtk_init (&argc, &argv);
|
gtk_init (&argc, &argv);
|
||||||
|
|
||||||
clutter_x11_set_display (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()));
|
clutter_x11_set_display (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()));
|
||||||
@ -66,6 +68,9 @@ main(int argc, char **argv)
|
|||||||
if (clutter_init (&argc, &argv) != CLUTTER_INIT_SUCCESS)
|
if (clutter_init (&argc, &argv) != CLUTTER_INIT_SUCCESS)
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
|
g_object_set (clutter_settings_get_default (), "window-scaling-factor", 1, NULL);
|
||||||
|
gdk_x11_display_set_window_scale (gdk_display_get_default (), 1);
|
||||||
|
|
||||||
context = g_option_context_new (NULL);
|
context = g_option_context_new (NULL);
|
||||||
|
|
||||||
/* pass unknown through to the JS script */
|
/* pass unknown through to the JS script */
|
||||||
|
@ -96,7 +96,8 @@ enum {
|
|||||||
PROP_ID,
|
PROP_ID,
|
||||||
PROP_DBUS_ID,
|
PROP_DBUS_ID,
|
||||||
PROP_ACTION_GROUP,
|
PROP_ACTION_GROUP,
|
||||||
PROP_MENU
|
PROP_MENU,
|
||||||
|
PROP_APP_INFO
|
||||||
};
|
};
|
||||||
|
|
||||||
enum {
|
enum {
|
||||||
@ -138,6 +139,29 @@ shell_app_get_property (GObject *gobject,
|
|||||||
if (app->running_state)
|
if (app->running_state)
|
||||||
g_value_set_object (value, app->running_state->remote_menu);
|
g_value_set_object (value, app->running_state->remote_menu);
|
||||||
break;
|
break;
|
||||||
|
case PROP_APP_INFO:
|
||||||
|
if (app->info)
|
||||||
|
g_value_set_object (value, app->info);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, prop_id, pspec);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
shell_app_set_property (GObject *gobject,
|
||||||
|
guint prop_id,
|
||||||
|
const GValue *value,
|
||||||
|
GParamSpec *pspec)
|
||||||
|
{
|
||||||
|
ShellApp *app = SHELL_APP (gobject);
|
||||||
|
|
||||||
|
switch (prop_id)
|
||||||
|
{
|
||||||
|
case PROP_APP_INFO:
|
||||||
|
_shell_app_set_app_info (app, g_value_get_object (value));
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, prop_id, pspec);
|
G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, prop_id, pspec);
|
||||||
break;
|
break;
|
||||||
@ -722,6 +746,23 @@ shell_app_get_last_user_time (ShellApp *app)
|
|||||||
return (int)last_user_time;
|
return (int)last_user_time;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static gboolean
|
||||||
|
shell_app_is_minimized (ShellApp *app)
|
||||||
|
{
|
||||||
|
GSList *iter;
|
||||||
|
|
||||||
|
if (app->running_state == NULL)
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
for (iter = app->running_state->windows; iter; iter = iter->next)
|
||||||
|
{
|
||||||
|
if (meta_window_showing_on_its_workspace (iter->data))
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* shell_app_compare:
|
* shell_app_compare:
|
||||||
* @app:
|
* @app:
|
||||||
@ -729,13 +770,17 @@ shell_app_get_last_user_time (ShellApp *app)
|
|||||||
*
|
*
|
||||||
* Compare one #ShellApp instance to another, in the following way:
|
* Compare one #ShellApp instance to another, in the following way:
|
||||||
* - Running applications sort before not-running applications.
|
* - Running applications sort before not-running applications.
|
||||||
* - The application which the user interacted with most recently
|
* - If one of them has non-minimized windows and the other does not,
|
||||||
|
* the one with visible windows is first.
|
||||||
|
* - Finally, the application which the user interacted with most recently
|
||||||
* compares earlier.
|
* compares earlier.
|
||||||
*/
|
*/
|
||||||
int
|
int
|
||||||
shell_app_compare (ShellApp *app,
|
shell_app_compare (ShellApp *app,
|
||||||
ShellApp *other)
|
ShellApp *other)
|
||||||
{
|
{
|
||||||
|
gboolean min_app, min_other;
|
||||||
|
|
||||||
if (app->state != other->state)
|
if (app->state != other->state)
|
||||||
{
|
{
|
||||||
if (app->state == SHELL_APP_STATE_RUNNING)
|
if (app->state == SHELL_APP_STATE_RUNNING)
|
||||||
@ -743,6 +788,16 @@ shell_app_compare (ShellApp *app,
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
min_app = shell_app_is_minimized (app);
|
||||||
|
min_other = shell_app_is_minimized (other);
|
||||||
|
|
||||||
|
if (min_app != min_other)
|
||||||
|
{
|
||||||
|
if (min_other)
|
||||||
|
return -1;
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
if (app->state == SHELL_APP_STATE_RUNNING)
|
if (app->state == SHELL_APP_STATE_RUNNING)
|
||||||
{
|
{
|
||||||
if (app->running_state->windows && !other->running_state->windows)
|
if (app->running_state->windows && !other->running_state->windows)
|
||||||
@ -775,9 +830,9 @@ _shell_app_new (GDesktopAppInfo *info)
|
|||||||
{
|
{
|
||||||
ShellApp *app;
|
ShellApp *app;
|
||||||
|
|
||||||
app = g_object_new (SHELL_TYPE_APP, NULL);
|
app = g_object_new (SHELL_TYPE_APP,
|
||||||
|
"app-info", info,
|
||||||
_shell_app_set_app_info (app, info);
|
NULL);
|
||||||
|
|
||||||
return app;
|
return app;
|
||||||
}
|
}
|
||||||
@ -786,11 +841,10 @@ void
|
|||||||
_shell_app_set_app_info (ShellApp *app,
|
_shell_app_set_app_info (ShellApp *app,
|
||||||
GDesktopAppInfo *info)
|
GDesktopAppInfo *info)
|
||||||
{
|
{
|
||||||
g_clear_object (&app->info);
|
g_set_object (&app->info, info);
|
||||||
app->info = g_object_ref (info);
|
|
||||||
|
|
||||||
if (app->name_collation_key != NULL)
|
g_clear_pointer (&app->name_collation_key, g_free);
|
||||||
g_free (app->name_collation_key);
|
if (app->info)
|
||||||
app->name_collation_key = g_utf8_collate_key (shell_app_get_name (app), -1);
|
app->name_collation_key = g_utf8_collate_key (shell_app_get_name (app), -1);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1374,6 +1428,7 @@ shell_app_class_init(ShellAppClass *klass)
|
|||||||
GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
|
GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
|
||||||
|
|
||||||
gobject_class->get_property = shell_app_get_property;
|
gobject_class->get_property = shell_app_get_property;
|
||||||
|
gobject_class->set_property = shell_app_set_property;
|
||||||
gobject_class->dispose = shell_app_dispose;
|
gobject_class->dispose = shell_app_dispose;
|
||||||
gobject_class->finalize = shell_app_finalize;
|
gobject_class->finalize = shell_app_finalize;
|
||||||
|
|
||||||
@ -1452,5 +1507,17 @@ shell_app_class_init(ShellAppClass *klass)
|
|||||||
"The primary menu exported by the remote application",
|
"The primary menu exported by the remote application",
|
||||||
G_TYPE_MENU_MODEL,
|
G_TYPE_MENU_MODEL,
|
||||||
G_PARAM_READABLE | G_PARAM_STATIC_STRINGS));
|
G_PARAM_READABLE | G_PARAM_STATIC_STRINGS));
|
||||||
|
/**
|
||||||
|
* ShellApp:app-info:
|
||||||
|
*
|
||||||
|
* The #GDesktopAppInfo associated with this ShellApp, if any.
|
||||||
|
*/
|
||||||
|
g_object_class_install_property (gobject_class,
|
||||||
|
PROP_APP_INFO,
|
||||||
|
g_param_spec_object ("app-info",
|
||||||
|
"DesktopAppInfo",
|
||||||
|
"The DesktopAppInfo associated with this app",
|
||||||
|
G_TYPE_DESKTOP_APP_INFO,
|
||||||
|
G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user