Compare commits
312 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 5e10182f94 | |||
| ae244569ef | |||
| 292a48073a | |||
| 274a6f040c | |||
| aaacd3dba4 | |||
| 45767c93d5 | |||
| 6094c21634 | |||
| 5052c6d350 | |||
| f38d61b4c9 | |||
| 8ba3bedd20 | |||
| d903f1f15b | |||
| 8628addfc9 | |||
| 27b5178646 | |||
| 6b2fa94f5a | |||
| 174ffc05f2 | |||
| 8ba1cc7c9d | |||
| 20e164fb39 | |||
| 568f63917a | |||
| e2a2f12c10 | |||
| c1bc688a5c | |||
| 360ba43579 | |||
| 1a41b639ef | |||
| 4ebd46c9f0 | |||
| 702cf52cfc | |||
| 689dda0515 | |||
| db0b1af99a | |||
| cdbb94ccbf | |||
| f86f09955b | |||
| 58c36bd719 | |||
| 46a216853f | |||
| 25be4d60b4 | |||
| 94941843e3 | |||
| 6adeed4e60 | |||
| a97d08a2d2 | |||
| 91aa1cfbc0 | |||
| e6e31c16b7 | |||
| 802c70e14c | |||
| d212a2f26d | |||
| fb77156c88 | |||
| bfd94b7ae1 | |||
| a6016db862 | |||
| 01d6a469a1 | |||
| 4a60bec60c | |||
| 8d4db767d4 | |||
| 916d9d963f | |||
| 39a7434569 | |||
| 7aeba983e1 | |||
| 89830470f1 | |||
| 8688596e80 | |||
| 0bd8966115 | |||
| 9bf13353a8 | |||
| 8305ef3b98 | |||
| 3b6446f33a | |||
| dda3512769 | |||
| 2d1d812474 | |||
| c70b152628 | |||
| 040c106c7b | |||
| f46627b624 | |||
| 0a1f7e725c | |||
| 7b07fd9656 | |||
| 48bfe6dc1e | |||
| f380f527d0 | |||
| 5c9292aae3 | |||
| ab3d3ce41b | |||
| c3796b2b19 | |||
| e5ae9e7110 | |||
| 5c91a2867d | |||
| 2f5c095f7a | |||
| 95b0d72e04 | |||
| 7fb52fa115 | |||
| 5c6c81dd2b | |||
| ab45ec8ee7 | |||
| b9fba54b9f | |||
| f187f47cdd | |||
| c4a694337c | |||
| 4103a228b2 | |||
| da49c0d635 | |||
| c626cc2a1d | |||
| 92ccfc0e0d | |||
| 61ee59f083 | |||
| 7783e99842 | |||
| 2397289568 | |||
| edefa7b674 | |||
| 5392a50e98 | |||
| fc5c7c8fda | |||
| 3c0d84469a | |||
| 01542c3dc7 | |||
| 0aaa37c30f | |||
| a1c938d3d9 | |||
| f23197e09e | |||
| a4fe08d53d | |||
| 7e3b48da9d | |||
| b843058c18 | |||
| 9b05c80f81 | |||
| 3805054b25 | |||
| 348f0faf22 | |||
| b907e44fdf | |||
| 032233cf9d | |||
| 443837e09d | |||
| 7f1904a97c | |||
| caaa544fd6 | |||
| 179b14ea4b | |||
| 9211fa4409 | |||
| edb8a65c78 | |||
| fdd2fa09d7 | |||
| 5d37b39ce5 | |||
| b673e1624a | |||
| 2b81d125cb | |||
| 31128e0dae | |||
| 680e4e075a | |||
| dd3349bf6d | |||
| f53d251a46 | |||
| 80b4f108df | |||
| df2e1e6217 | |||
| 292661d943 | |||
| c978057d3a | |||
| 8034b65f46 | |||
| c1c9f280d8 | |||
| e179ab72fc | |||
| 11e8f2832c | |||
| 61f86a3f29 | |||
| 0fed304f79 | |||
| 02989fd0f7 | |||
| 9900ae19dc | |||
| b9a4d178a8 | |||
| 8815c670ea | |||
| 1e45a69d36 | |||
| 0b7c3e3dbb | |||
| b9563829bb | |||
| 4b26753d83 | |||
| cdb7ff0cec | |||
| c421da905f | |||
| 5a08081cc0 | |||
| ad542d2f77 | |||
| 20e8a0dcc3 | |||
| 87c26eab14 | |||
| 877a53c2fc | |||
| 10e38adf20 | |||
| 2a64ee6993 | |||
| 9d9ef27317 | |||
| 785656d149 | |||
| f8ee696c7c | |||
| aa677b265a | |||
| 9b04e6f44c | |||
| 315aa82d15 | |||
| 0bc41bcb1d | |||
| e59c218c62 | |||
| 880758e470 | |||
| a5ce94c6d3 | |||
| 8a73e58134 | |||
| bfe7a760d1 | |||
| 0d932f4b24 | |||
| 6c1dbe1ee1 | |||
| a125390c5f | |||
| fdb5f3e8ef | |||
| d64feb040d | |||
| 987409b742 | |||
| e14efb3dfc | |||
| 7e3262a58d | |||
| f670aa5cc3 | |||
| da2ed2d695 | |||
| 23e5cd30a4 | |||
| 42a85d81a6 | |||
| 1d65af715f | |||
| 7ae2ddcb95 | |||
| 0abb0f4b57 | |||
| dfcff4b297 | |||
| fa2840aee3 | |||
| e48e1d0a38 | |||
| f9f4684c8d | |||
| 3954649632 | |||
| 74702c00e5 | |||
| 727872833f | |||
| e0518f0bda | |||
| ef5a8a9641 | |||
| 69bfc23b7f | |||
| 9bc1e04654 | |||
| c3872afc30 | |||
| a6e5f8aab7 | |||
| 67a4db07aa | |||
| f834c29530 | |||
| 60f38b3b6c | |||
| 3fddc8e846 | |||
| f0e1229a26 | |||
| 00871cc98f | |||
| 3992182905 | |||
| 2df41753e5 | |||
| 39c221775e | |||
| eda45e6072 | |||
| 333871387a | |||
| eb6b84eb18 | |||
| d8c651f255 | |||
| 7cf25a3bc0 | |||
| fdad0263ec | |||
| c5181cda46 | |||
| 56f6eccc82 | |||
| 6a74326a61 | |||
| 48d4956ee0 | |||
| 0ab46d5c70 | |||
| cd7d9aa2a4 | |||
| ea3d27c311 | |||
| 6c050118f4 | |||
| dfb942f6fe | |||
| 262efe3c9e | |||
| d1d099fbbf | |||
| 45da997dd3 | |||
| d91c949068 | |||
| 5a028aab52 | |||
| c49758f1c5 | |||
| 5ca52e89d5 | |||
| dd26111c04 | |||
| f40e7109e5 | |||
| 5cb3e1877a | |||
| a78a16b4a7 | |||
| a6307d48c0 | |||
| f9d95b9408 | |||
| fb3df46a25 | |||
| d2a7a95628 | |||
| 12e91b86e5 | |||
| 5e89c761ca | |||
| d12307991a | |||
| c711ce83fa | |||
| 96f91eda59 | |||
| e2a76b665a | |||
| c638e6c0f2 | |||
| 9ef1ecd827 | |||
| 60f0954a76 | |||
| 08339cd78e | |||
| a772154471 | |||
| e02cd89c8b | |||
| 706857132a | |||
| c0f6028212 | |||
| ecd9e4ab6c | |||
| d4f3391481 | |||
| dd9b47e51e | |||
| 279dd348e4 | |||
| efe068324b | |||
| 338f742310 | |||
| c1845d73bd | |||
| a3ae190edc | |||
| 6e946fe702 | |||
| dca49d662d | |||
| df73753b08 | |||
| 0676b9c0f9 | |||
| 13b8b3c22c | |||
| 35ee8fc2c6 | |||
| 99924c3952 | |||
| dfd7191aa1 | |||
| c5fd578214 | |||
| e00a73b88a | |||
| 487fd4cd1c | |||
| 2acb53fa2e | |||
| 548ede7eea | |||
| 667f72532e | |||
| 7753a68331 | |||
| 6728411a52 | |||
| 31ff2d4c97 | |||
| d355424f22 | |||
| dde7084711 | |||
| f77bf60bcb | |||
| e3f1091f2d | |||
| ffb3462d54 | |||
| e1c1fc73e2 | |||
| 5ca9f35a95 | |||
| 6128102eac | |||
| cb6d5357d9 | |||
| 9fb703ca6b | |||
| 06d2b906e0 | |||
| 98403dfc3b | |||
| ec88930f80 | |||
| ee5e54f9f4 | |||
| ed9c17dfdd | |||
| 10027b6697 | |||
| 27abc7a42b | |||
| 3bb56a7a59 | |||
| 0e94c81734 | |||
| 7d41bd9fbd | |||
| f12cd9ba39 | |||
| 182a9cff18 | |||
| 9bb5399263 | |||
| 82bd3efc73 | |||
| 0b3f7e37f0 | |||
| 2f034bbee2 | |||
| f14ae5f3c9 | |||
| 1463a6481e | |||
| 0a9be8fc82 | |||
| 75629a468f | |||
| 72a5a3424f | |||
| 4e35410b7a | |||
| 9faa028f1e | |||
| 60f8139482 | |||
| e7f7a488c6 | |||
| f0b3e4de0a | |||
| 25ada42ed9 | |||
| ef95c7e4e7 | |||
| 9e53a37c08 | |||
| b3e783e7a8 | |||
| 9e41c06cd7 | |||
| 7b3650fb68 | |||
| 0bb2184efb | |||
| e55101526c | |||
| 50b89bb8b5 | |||
| 856ebbf7e6 | |||
| 0c5564fe55 | |||
| 53ee4c096e | |||
| 5754e2db58 | |||
| 468ed6cfe6 | |||
| a4fac964dc | |||
| 245ab96a27 | |||
| 6b373686d3 | |||
| c90f90a5c7 | |||
| 1dca3fecaa |
@@ -6,13 +6,18 @@ config.log
|
|||||||
config.status
|
config.status
|
||||||
aclocal.m4
|
aclocal.m4
|
||||||
autom4te.cache/
|
autom4te.cache/
|
||||||
|
data/*.json
|
||||||
po/gnome-shell-extensions.pot
|
po/gnome-shell-extensions.pot
|
||||||
po/POTFILES
|
po/POTFILES
|
||||||
po/stamp-it
|
po/stamp-it
|
||||||
staging/
|
staging/
|
||||||
|
zip-files/
|
||||||
|
|
||||||
*~
|
*~
|
||||||
*.gmo
|
*.gmo
|
||||||
metadata.json
|
metadata.json
|
||||||
|
*.desktop
|
||||||
|
*.desktop.in
|
||||||
*.gschema.xml
|
*.gschema.xml
|
||||||
*.gschema.valid
|
*.gschema.valid
|
||||||
|
*.session
|
||||||
|
|||||||
+26
-3
@@ -1,7 +1,13 @@
|
|||||||
ACLOCAL_AMFLAGS = -I m4 ${ACLOCAL_FLAGS}
|
ACLOCAL_AMFLAGS = -I m4 ${ACLOCAL_FLAGS}
|
||||||
|
|
||||||
|
DIST_SUBDIRS = data extensions po
|
||||||
|
|
||||||
SUBDIRS = extensions po
|
SUBDIRS = extensions po
|
||||||
|
|
||||||
|
if CLASSIC_MODE
|
||||||
|
SUBDIRS += data
|
||||||
|
endif
|
||||||
|
|
||||||
EXTRA_DIST = lib/convenience.js
|
EXTRA_DIST = lib/convenience.js
|
||||||
|
|
||||||
DISTCHECK_CONFIGURE_FLAGS = --enable-extensions=all
|
DISTCHECK_CONFIGURE_FLAGS = --enable-extensions=all
|
||||||
@@ -11,15 +17,16 @@ include include.mk
|
|||||||
zip-file: all
|
zip-file: all
|
||||||
-rm -fR $(builddir)/_build
|
-rm -fR $(builddir)/_build
|
||||||
-rm -fR $(builddir)/zip-files
|
-rm -fR $(builddir)/zip-files
|
||||||
mkdir $(builddir)/_build; \
|
$(MKDIR_P) $(builddir)/_build; \
|
||||||
mkdir $(builddir)/zip-files; \
|
$(MKDIR_P) $(builddir)/zip-files; \
|
||||||
$(MAKE) install DESTDIR="$(abs_builddir)/_build"; \
|
$(MAKE) install DESTDIR="$(abs_builddir)/_build"; \
|
||||||
for i in $(ENABLED_EXTENSIONS); do \
|
for i in $(ENABLED_EXTENSIONS); do \
|
||||||
mv "$(builddir)/_build$(topextensiondir)/$${i}$(extensionbase)" "$(builddir)/_build/"; \
|
mv "$(builddir)/_build$(topextensiondir)/$${i}$(extensionbase)" "$(builddir)/_build/"; \
|
||||||
cp -r "$(builddir)/_build$(datadir)/locale" "$(builddir)/_build/$${i}$(extensionbase)"; \
|
cp -r "$(builddir)/_build$(datadir)/locale" "$(builddir)/_build/$${i}$(extensionbase)"; \
|
||||||
cp "$(srcdir)/COPYING" -t "$(builddir)/_build/$${i}$(extensionbase)"; \
|
cp "$(srcdir)/COPYING" -t "$(builddir)/_build/$${i}$(extensionbase)"; \
|
||||||
|
cp "$(srcdir)/NEWS" -t "$(builddir)/_build/$${i}$(extensionbase)"; \
|
||||||
if [ -f "$(builddir)/_build$(datadir)/glib-2.0/schemas/$(gschemabase).$${i}.gschema.xml" ]; then \
|
if [ -f "$(builddir)/_build$(datadir)/glib-2.0/schemas/$(gschemabase).$${i}.gschema.xml" ]; then \
|
||||||
mkdir "$(builddir)/_build/$${i}$(extensionbase)/schemas"; \
|
$(MKDIR_P) "$(builddir)/_build/$${i}$(extensionbase)/schemas"; \
|
||||||
mv "$(builddir)/_build$(datadir)/glib-2.0/schemas/$(gschemabase).$${i}.gschema.xml" "$(builddir)/_build/$${i}$(extensionbase)/schemas"; \
|
mv "$(builddir)/_build$(datadir)/glib-2.0/schemas/$(gschemabase).$${i}.gschema.xml" "$(builddir)/_build/$${i}$(extensionbase)/schemas"; \
|
||||||
glib-compile-schemas "$(builddir)/_build/$${i}$(extensionbase)/schemas"; \
|
glib-compile-schemas "$(builddir)/_build/$${i}$(extensionbase)/schemas"; \
|
||||||
fi; \
|
fi; \
|
||||||
@@ -27,3 +34,19 @@ zip-file: all
|
|||||||
zip -qr "$(abs_builddir)/zip-files/$${i}$(extensionbase).shell-extension.zip" .; \
|
zip -qr "$(abs_builddir)/zip-files/$${i}$(extensionbase).shell-extension.zip" .; \
|
||||||
); \
|
); \
|
||||||
done
|
done
|
||||||
|
-rm -fR $(builddir)/_build
|
||||||
|
|
||||||
|
localprefix = $(HOME)/.local/share/gnome-shell/extensions
|
||||||
|
|
||||||
|
local-install: zip-file
|
||||||
|
for i in $(ENABLED_EXTENSIONS); do \
|
||||||
|
uuid="$${i}$(extensionbase)"; \
|
||||||
|
zip_file="$(abs_builddir)/zip-files/$${uuid}.shell-extension.zip"; \
|
||||||
|
if [ -d "$(localprefix)/$${uuid}" ]; then \
|
||||||
|
rm -fR "$(localprefix)/$${uuid}"; \
|
||||||
|
fi; \
|
||||||
|
$(MKDIR_P) $(localprefix)/$${uuid}; \
|
||||||
|
(cd $(localprefix)/$${uuid}; \
|
||||||
|
unzip -q $${zip_file}; \
|
||||||
|
); \
|
||||||
|
done
|
||||||
|
|||||||
@@ -1,3 +1,204 @@
|
|||||||
|
3.9.2
|
||||||
|
=====
|
||||||
|
* apps-menu: appearance of the scrollbars was improved
|
||||||
|
* window-list is a little taller in classic mode (to account
|
||||||
|
for the workspace switcher)
|
||||||
|
* alternative-status-menu honors again the dconf configuration
|
||||||
|
* translation updates (sr)
|
||||||
|
|
||||||
|
3.9.1
|
||||||
|
=====
|
||||||
|
* updates to window-list, xrandr-indicator,
|
||||||
|
workspace-indicator, windowsNavigator for gnome-shell
|
||||||
|
changes
|
||||||
|
* translation updates (cs, es, lt, pl, pt_BR, sl)
|
||||||
|
|
||||||
|
3.8.1
|
||||||
|
=====
|
||||||
|
* many improvements to window-list:
|
||||||
|
- windows are activated by DND over them
|
||||||
|
- window buttons now have the right size,
|
||||||
|
even if the text is smaller or larger
|
||||||
|
than the ideal
|
||||||
|
- window buttons can be grouped automatically
|
||||||
|
when the panel becomes crowded
|
||||||
|
- added a workspace switcher menu
|
||||||
|
* added keyboard navigation to apps-menu
|
||||||
|
* small tweaks to classic-mode theme, in particular
|
||||||
|
for menus
|
||||||
|
* translation updates (gl, ko, sr)
|
||||||
|
|
||||||
|
3.8.0
|
||||||
|
=====
|
||||||
|
* translation updates (hu, ja, fi, it)
|
||||||
|
|
||||||
|
3.7.92
|
||||||
|
======
|
||||||
|
* misc bug fixes to app-menu and window-list
|
||||||
|
* translation updates (de, sl, pt_BR, ru)
|
||||||
|
|
||||||
|
3.7.91
|
||||||
|
======
|
||||||
|
* various updates for shell changes
|
||||||
|
* update window-list to always use application icons
|
||||||
|
* update apps-menu to not load subdirectories as
|
||||||
|
separate categories
|
||||||
|
* translation updates (lt, zh_CN)
|
||||||
|
|
||||||
|
3.7.90
|
||||||
|
======
|
||||||
|
* various fixes to make places-menu behave more
|
||||||
|
like Nautilus, including showing the machine
|
||||||
|
name in place of File System
|
||||||
|
* various updates for shell changes
|
||||||
|
* alternative-status-menu no longer supports
|
||||||
|
ConsoleKit systems, you need to install logind
|
||||||
|
to have suspend or hibernate
|
||||||
|
* translation updates (es, cz, pl, sr)
|
||||||
|
|
||||||
|
3.7.5.1
|
||||||
|
=======
|
||||||
|
* new extension forgotten in previous NEWS entry:
|
||||||
|
windows-list
|
||||||
|
* also forgotten previously: classic mode got a new
|
||||||
|
GNOME2 style
|
||||||
|
* build fixes
|
||||||
|
|
||||||
|
3.7.5
|
||||||
|
=====
|
||||||
|
* places-menu is back in the classic extensions, with
|
||||||
|
a new old GNOME-2 look
|
||||||
|
* classic mode moved the date menu to right, where we
|
||||||
|
all know it rightly belongs
|
||||||
|
* apps-menu received a face-lift, with the inclusion
|
||||||
|
of a reduced form of AxeMenu
|
||||||
|
* new extension in the classic set: launch-new-instance,
|
||||||
|
which modifies the behavior of clicking in the dash
|
||||||
|
and app launcher
|
||||||
|
* alternate-tab, native-window-placement and windowsNavigator
|
||||||
|
updated for gnome-shell changes
|
||||||
|
* translation updates (es, cz, pl)
|
||||||
|
|
||||||
|
3.7.4
|
||||||
|
=====
|
||||||
|
* a separate configure switch has been added to enable
|
||||||
|
classic mode session definitions
|
||||||
|
* places-menu is no longer part of the classic-mode
|
||||||
|
extension set
|
||||||
|
* updated translations (ar, gl, hu, lt, pt_BR, sr)
|
||||||
|
|
||||||
|
3.7.3
|
||||||
|
=====
|
||||||
|
* new extensions: default-min-max, static-workspaces
|
||||||
|
* alternate-tab now uses the built-in window switcher and just
|
||||||
|
takes over the switch-application keybinding
|
||||||
|
* workspace-indicator: is no longer part of classic-mode
|
||||||
|
* we now install classic-mode data files for gdm, gnome-session
|
||||||
|
and gnome-shell, so if you enable classic-mode you get a new
|
||||||
|
session option in GDM
|
||||||
|
* updated translations (ar, es, pl, ru, sl, zh_HK, zh_TW)
|
||||||
|
|
||||||
|
3.7.2
|
||||||
|
=====
|
||||||
|
* fixed crashes with places-menu, windowsNavigator, alternate-tab
|
||||||
|
and native-window-placement
|
||||||
|
* alternate-tab now hides attached modal dialogs
|
||||||
|
* places-menu has restored support for Nautilus 3.4
|
||||||
|
* the default for hibernate is now to show in alternative-status-menu
|
||||||
|
* some extensions are now tagged as "classic", and can be chosen with
|
||||||
|
--enable-extensions=classic-mode
|
||||||
|
* dock and gajim were removed at the beginning of the 3.7.1 cycle,
|
||||||
|
as they were buggy and unmaintained
|
||||||
|
* updated translations (ar, cs, de, el, es, gl, id, lt, lv, pa, pl
|
||||||
|
ru, sk, sl, sr, sr@latin)
|
||||||
|
|
||||||
|
3.6.1
|
||||||
|
=====
|
||||||
|
* fixed alternative-status-menu for the new lock screen
|
||||||
|
* squashed some alternate-tab warnings
|
||||||
|
* drive-menu now works with 3.6 again
|
||||||
|
* updated translations (ar, cs, el, es, gl, id, lv, pl, sl)
|
||||||
|
|
||||||
|
3.6.0
|
||||||
|
=====
|
||||||
|
* major rework in places menu, to make it work without
|
||||||
|
removed supporting code in the shell and to make it look like
|
||||||
|
the nautilus sidebar
|
||||||
|
(similar work would be needed for drive-menu, not done yet)
|
||||||
|
* updated translations (ca, cs, de, el, en_GB, es, fi, hu, id, lt,
|
||||||
|
pl, pt_BR, ru, sl, sr)
|
||||||
|
|
||||||
|
3.5.91
|
||||||
|
======
|
||||||
|
* various crashers were fixed in alternative-tab
|
||||||
|
* auto-move-windows now can be made to work with static workspaces
|
||||||
|
* place-menu is now on the left and uses symbolic icons like Files
|
||||||
|
* StIconType usage was removed from all extensions, after it was
|
||||||
|
removed in core
|
||||||
|
* systemMonitor, xrandr-indicator, apps-menu, places-menu,
|
||||||
|
alternative-status-menu were updated for the newer shell
|
||||||
|
* updated translations (es, gl, it, pl, sl)
|
||||||
|
|
||||||
|
3.5.90
|
||||||
|
======
|
||||||
|
* alternate-tab has been reworked again, the old mode switch
|
||||||
|
was removed and the all&thumbnails code extended to handle
|
||||||
|
icons and filtering to the workspace
|
||||||
|
* alternate-tab thumbnails now reflect the aspect ratio of the windows
|
||||||
|
* systemMonitor now shows a tooltip above the indicator
|
||||||
|
* native-window-placement, systemMonitor and windowsNavigator have been updated
|
||||||
|
for the newer shell
|
||||||
|
* updated translations (es, pa)
|
||||||
|
|
||||||
|
3.5.5
|
||||||
|
=====
|
||||||
|
* convenience module has been relicensed to BSD,
|
||||||
|
for compatibility with GPLv3 extensions
|
||||||
|
* alternate-tab has been refactored and seen various
|
||||||
|
improvements to all&thumbnails mode, including a new
|
||||||
|
overlaid application icon
|
||||||
|
* updated translations (lt, id, sr)
|
||||||
|
|
||||||
|
3.5.4
|
||||||
|
=====
|
||||||
|
* updated translations (de, es, ar, sl, lv, zh_CN)
|
||||||
|
|
||||||
|
3.5.2
|
||||||
|
=====
|
||||||
|
* removable-drive-menu is now a11y friendly
|
||||||
|
* the dock can now be placed on any monitor, not just the primary
|
||||||
|
* dock is now clipped to its monitor
|
||||||
|
* alternative-status-menu now exposes GSettings for Suspend
|
||||||
|
and Hibernate visibility - no UI yet
|
||||||
|
* more gnome-shell API changes (places-menu, removable-drive-menu,
|
||||||
|
alternative-status-menu)
|
||||||
|
* miscellaneous bug fixes (native-window-placement, gajim,
|
||||||
|
auto-move-windows)
|
||||||
|
* updated translations
|
||||||
|
|
||||||
|
3.4.0
|
||||||
|
=====
|
||||||
|
* build system improvements
|
||||||
|
* updated translations (ar, cs, fr)
|
||||||
|
|
||||||
|
3.3.92
|
||||||
|
======
|
||||||
|
* various updates for gnome-shell API changes (dock,
|
||||||
|
native-window-placement)
|
||||||
|
* local-install is now a make rule, not a shell script
|
||||||
|
* updated translations (zh, es, sw, ga, hu, it, no, pt_BR, de, sl,
|
||||||
|
pl, la, fi, sr)
|
||||||
|
|
||||||
|
3.3.90
|
||||||
|
======
|
||||||
|
* system wide installation via "make install" is possible
|
||||||
|
again
|
||||||
|
* alternate-tab can now pre-activate the selected window
|
||||||
|
* auto-move-windows, workspace-indicator and example gained
|
||||||
|
new preference dialogs
|
||||||
|
* workspace-indicator: fixed a bug wrt focus stealing prevention
|
||||||
|
* updated translations (es, pt_BR, it, sl, gl, sr)
|
||||||
|
|
||||||
3.3.5
|
3.3.5
|
||||||
=====
|
=====
|
||||||
* improvements to the build system and convenience module,
|
* improvements to the build system and convenience module,
|
||||||
|
|||||||
+37
-13
@@ -1,10 +1,10 @@
|
|||||||
AC_PREREQ(2.63)
|
AC_PREREQ(2.63)
|
||||||
AC_INIT([gnome-shell-extensions],[3.3.5],[https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-shell&component=extensions])
|
AC_INIT([gnome-shell-extensions],[3.9.2],[https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-shell&component=extensions])
|
||||||
|
|
||||||
AC_CONFIG_MACRO_DIR([m4])
|
AC_CONFIG_MACRO_DIR([m4])
|
||||||
AC_CONFIG_AUX_DIR([config])
|
AC_CONFIG_AUX_DIR([config])
|
||||||
|
|
||||||
AM_INIT_AUTOMAKE([1.10 dist-bzip2 no-dist-gzip foreign tar-ustar])
|
AM_INIT_AUTOMAKE([1.10 dist-xz no-dist-gzip foreign tar-ustar])
|
||||||
|
|
||||||
m4_ifdef([AM_SILENT_RULES],[AM_SILENT_RULES([yes])])
|
m4_ifdef([AM_SILENT_RULES],[AM_SILENT_RULES([yes])])
|
||||||
|
|
||||||
@@ -18,24 +18,45 @@ PKG_PROG_PKG_CONFIG([0.22])
|
|||||||
|
|
||||||
GLIB_GSETTINGS
|
GLIB_GSETTINGS
|
||||||
|
|
||||||
|
SHELL_VERSION="$PACKAGE_VERSION"
|
||||||
|
shell_major=`echo "$PACKAGE_VERSION" | cut -d'.' -f1`
|
||||||
|
shell_minor=`echo "$PACKAGE_VERSION" | cut -d'.' -f2`
|
||||||
|
if test "$(($shell_minor % 2))" -eq 0; then
|
||||||
|
SHELL_VERSION="$shell_major.$shell_minor"
|
||||||
|
fi
|
||||||
|
AC_SUBST([SHELL_VERSION])
|
||||||
|
|
||||||
dnl keep this in alphabetic order
|
dnl keep this in alphabetic order
|
||||||
dnl by default, install only extensions that do not change completely the shell experience,
|
CLASSIC_EXTENSIONS="apps-menu places-menu alternate-tab default-min-max launch-new-instance static-workspaces window-list"
|
||||||
dnl that don't require GSettings and that don't require external packages for typelibs
|
DEFAULT_EXTENSIONS="$CLASSIC_EXTENSIONS alternative-status-menu drive-menu windowsNavigator workspace-indicator"
|
||||||
dnl (so basically only menus, status icons, search providers, overview tabs, message tray sources, etc.)
|
ALL_EXTENSIONS="$DEFAULT_EXTENSIONS auto-move-windows example native-window-placement systemMonitor user-theme xrandr-indicator"
|
||||||
DEFAULT_EXTENSIONS="alternative-status-menu apps-menu dock drive-menu gajim places-menu windowsNavigator workspace-indicator"
|
AC_SUBST(CLASSIC_EXTENSIONS, [$CLASSIC_EXTENSIONS])
|
||||||
ALL_EXTENSIONS="$DEFAULT_EXTENSIONS alternate-tab auto-move-windows example native-window-placement systemMonitor user-theme xrandr-indicator"
|
|
||||||
AC_SUBST(ALL_EXTENSIONS, [$ALL_EXTENSIONS])
|
AC_SUBST(ALL_EXTENSIONS, [$ALL_EXTENSIONS])
|
||||||
AC_ARG_ENABLE([extensions],
|
AC_ARG_ENABLE([extensions],
|
||||||
[AS_HELP_STRING([--enable-extensions],[Space separated list of extensions to enable.
|
[AS_HELP_STRING([--enable-extensions],[Space separated list of extensions to enable.
|
||||||
The default is to build all extensions that can be installed in the home directory and have no external depedencies.
|
The default is to build and distribute all extensions that can be installed in the home directory and have no external depedencies.
|
||||||
Use "all" to enable all available extensions.])],
|
Use "all" to enable all available extensions, or "classic-mode" to enable extensions that restore GNOME 2 functionality.])],
|
||||||
[],
|
[],
|
||||||
[enable_extensions=$DEFAULT_EXTENSIONS]
|
[enable_extensions=$DEFAULT_EXTENSIONS]
|
||||||
)
|
)
|
||||||
if test x$enable_extensions = xall; then
|
|
||||||
|
if test x"$enable_extensions" = xall; then
|
||||||
enable_extensions="$ALL_EXTENSIONS"
|
enable_extensions="$ALL_EXTENSIONS"
|
||||||
|
enable_classic_mode_default=yes
|
||||||
|
elif test x"$enable_extensions" = xclassic-mode; then
|
||||||
|
enable_extensions="$CLASSIC_EXTENSIONS"
|
||||||
|
enable_classic_mode_default=yes
|
||||||
|
else
|
||||||
|
enable_classic_mode_default=no
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
AC_ARG_ENABLE([classic-mode],
|
||||||
|
[AS_HELP_STRING([--enable-classic-mode],[Enable installing data files for classic mode.
|
||||||
|
Defaults to yes if enabling all or classic-mode extensions, and no otherwise.])],
|
||||||
|
[],
|
||||||
|
[enable_classic_mode=$enable_classic_mode_default])
|
||||||
|
AM_CONDITIONAL([CLASSIC_MODE], [test x"$enable_classic_mode" != xno])
|
||||||
|
|
||||||
ENABLED_EXTENSIONS=
|
ENABLED_EXTENSIONS=
|
||||||
for e in $enable_extensions; do
|
for e in $enable_extensions; do
|
||||||
case $e in
|
case $e in
|
||||||
@@ -50,7 +71,7 @@ for e in $enable_extensions; do
|
|||||||
[AC_MSG_WARN([gnome-desktop-3.0 not found, disabling xrandr-indicator])])
|
[AC_MSG_WARN([gnome-desktop-3.0 not found, disabling xrandr-indicator])])
|
||||||
;;
|
;;
|
||||||
dnl keep this in alphabetic order
|
dnl keep this in alphabetic order
|
||||||
alternate-tab|alternative-status-menu|apps-menu|auto-move-windows|dock|drive-menu|example|gajim|native-window-placement|places-menu|user-theme|windowsNavigator|workspace-indicator)
|
alternate-tab|alternative-status-menu|apps-menu|auto-move-windows|default-min-max|drive-menu|example|launch-new-instance|native-window-placement|places-menu|static-workspaces|user-theme|window-list|windowsNavigator|workspace-indicator)
|
||||||
ENABLED_EXTENSIONS="$ENABLED_EXTENSIONS $e"
|
ENABLED_EXTENSIONS="$ENABLED_EXTENSIONS $e"
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
@@ -62,18 +83,21 @@ AC_SUBST(ENABLED_EXTENSIONS, [$ENABLED_EXTENSIONS])
|
|||||||
|
|
||||||
dnl Please keep this sorted alphabetically
|
dnl Please keep this sorted alphabetically
|
||||||
AC_CONFIG_FILES([
|
AC_CONFIG_FILES([
|
||||||
|
data/Makefile
|
||||||
extensions/alternate-tab/Makefile
|
extensions/alternate-tab/Makefile
|
||||||
extensions/alternative-status-menu/Makefile
|
extensions/alternative-status-menu/Makefile
|
||||||
extensions/apps-menu/Makefile
|
extensions/apps-menu/Makefile
|
||||||
extensions/auto-move-windows/Makefile
|
extensions/auto-move-windows/Makefile
|
||||||
extensions/dock/Makefile
|
extensions/default-min-max/Makefile
|
||||||
extensions/drive-menu/Makefile
|
extensions/drive-menu/Makefile
|
||||||
extensions/example/Makefile
|
extensions/example/Makefile
|
||||||
extensions/gajim/Makefile
|
extensions/launch-new-instance/Makefile
|
||||||
extensions/native-window-placement/Makefile
|
extensions/native-window-placement/Makefile
|
||||||
extensions/places-menu/Makefile
|
extensions/places-menu/Makefile
|
||||||
|
extensions/static-workspaces/Makefile
|
||||||
extensions/systemMonitor/Makefile
|
extensions/systemMonitor/Makefile
|
||||||
extensions/user-theme/Makefile
|
extensions/user-theme/Makefile
|
||||||
|
extensions/window-list/Makefile
|
||||||
extensions/windowsNavigator/Makefile
|
extensions/windowsNavigator/Makefile
|
||||||
extensions/workspace-indicator/Makefile
|
extensions/workspace-indicator/Makefile
|
||||||
extensions/xrandr-indicator/Makefile
|
extensions/xrandr-indicator/Makefile
|
||||||
|
|||||||
@@ -0,0 +1,65 @@
|
|||||||
|
include $(top_srcdir)/include.mk
|
||||||
|
|
||||||
|
desktopdir = $(datadir)/applications
|
||||||
|
desktop_in_in_files = gnome-shell-classic.desktop.in.in
|
||||||
|
desktop_in_files = $(desktop_in_in_files:.desktop.in.in=.desktop.in)
|
||||||
|
desktop_DATA = $(desktop_in_files:.desktop.in=.desktop)
|
||||||
|
|
||||||
|
sessiondir = $(datadir)/gnome-session/sessions
|
||||||
|
session_in_in_files = gnome-classic.session.desktop.in.in
|
||||||
|
session_in_files = $(session_in_in_files:.session.desktop.in.in=.session.desktop.in)
|
||||||
|
session_DATA = $(session_in_files:.session.desktop.in=.session)
|
||||||
|
|
||||||
|
xsessiondir = $(datadir)/xsessions
|
||||||
|
xsession_in_files = gnome-classic.desktop.in
|
||||||
|
xsession_DATA = $(xsession_in_files:.desktop.in=.desktop)
|
||||||
|
|
||||||
|
modedir = $(datadir)/gnome-shell/modes
|
||||||
|
mode_in_files = classic.json.in
|
||||||
|
mode_DATA = $(mode_in_files:.json.in=.json)
|
||||||
|
|
||||||
|
themedir = $(datadir)/gnome-shell/theme
|
||||||
|
theme_DATA = \
|
||||||
|
$(srcdir)/classic-process-working.svg \
|
||||||
|
$(srcdir)/classic-toggle-off-intl.svg \
|
||||||
|
$(srcdir)/classic-toggle-off-us.svg \
|
||||||
|
$(srcdir)/classic-toggle-on-intl.svg \
|
||||||
|
$(srcdir)/classic-toggle-on-us.svg \
|
||||||
|
$(srcdir)/gnome-classic.css \
|
||||||
|
$(NULL)
|
||||||
|
|
||||||
|
%.desktop.in:%.desktop.in.in
|
||||||
|
$(AM_V_GEN) sed \
|
||||||
|
-e "s|\@libexecdir\@|$(libexecdir)|" \
|
||||||
|
-e "s|\@bindir\@|$(bindir)|" \
|
||||||
|
-e "s|\@VERSION\@|$(VERSION)|" \
|
||||||
|
$< > $@
|
||||||
|
|
||||||
|
comma:=,
|
||||||
|
empty:=
|
||||||
|
space:= $(empty) $(empty)
|
||||||
|
extensions:=$(patsubst %,\"%$(extensionbase)\",$(CLASSIC_EXTENSIONS))
|
||||||
|
extension_list:=$(subst $(space),$(comma),$(extensions))
|
||||||
|
%.json:%.json.in
|
||||||
|
$(AM_V_GEN) sed \
|
||||||
|
-e "s|\@CLASSIC_EXTENSIONS\@|$(extension_list)|g" \
|
||||||
|
$< > $@
|
||||||
|
|
||||||
|
%.session: %.session.desktop.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@
|
||||||
|
|
||||||
|
@INTLTOOL_DESKTOP_RULE@
|
||||||
|
|
||||||
|
EXTRA_DIST = \
|
||||||
|
$(desktop_in_in_files) \
|
||||||
|
$(session_in_in_files) \
|
||||||
|
$(xsession_in_files) \
|
||||||
|
$(mode_in_files) \
|
||||||
|
$(theme_DATA) \
|
||||||
|
$(NULL)
|
||||||
|
|
||||||
|
CLEANFILES = \
|
||||||
|
$(desktop_DATA) \
|
||||||
|
$(session_DATA) \
|
||||||
|
$(xsession_DATA) \
|
||||||
|
$(mode_DATA) \
|
||||||
|
$(NULL)
|
||||||
@@ -0,0 +1,695 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
|
||||||
|
<svg
|
||||||
|
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||||
|
xmlns:cc="http://creativecommons.org/ns#"
|
||||||
|
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
id="svg5369"
|
||||||
|
version="1.1"
|
||||||
|
inkscape:version="0.48.4 r9939"
|
||||||
|
width="96"
|
||||||
|
height="48"
|
||||||
|
sodipodi:docname="process-working-inverse.svg"
|
||||||
|
style="display:inline">
|
||||||
|
<metadata
|
||||||
|
id="metadata5375">
|
||||||
|
<rdf:RDF>
|
||||||
|
<cc:Work
|
||||||
|
rdf:about="">
|
||||||
|
<dc:format>image/svg+xml</dc:format>
|
||||||
|
<dc:type
|
||||||
|
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||||
|
<dc:title />
|
||||||
|
</cc:Work>
|
||||||
|
</rdf:RDF>
|
||||||
|
</metadata>
|
||||||
|
<defs
|
||||||
|
id="defs5373">
|
||||||
|
<filter
|
||||||
|
id="filter3278"
|
||||||
|
inkscape:label="Invert"
|
||||||
|
x="0"
|
||||||
|
y="0"
|
||||||
|
width="1"
|
||||||
|
height="1"
|
||||||
|
inkscape:menu="Color"
|
||||||
|
inkscape:menu-tooltip="Invert colors"
|
||||||
|
color-interpolation-filters="sRGB">
|
||||||
|
<feColorMatrix
|
||||||
|
id="feColorMatrix3280"
|
||||||
|
type="saturate"
|
||||||
|
values="1"
|
||||||
|
result="fbSourceGraphic" />
|
||||||
|
<feColorMatrix
|
||||||
|
id="feColorMatrix3282"
|
||||||
|
in="fbSourceGraphic"
|
||||||
|
values="-1 0 0 0 1 0 -1 0 0 1 0 0 -1 0 1 0 0 0 1 0 " />
|
||||||
|
</filter>
|
||||||
|
<filter
|
||||||
|
id="filter3284"
|
||||||
|
inkscape:label="Invert"
|
||||||
|
x="0"
|
||||||
|
y="0"
|
||||||
|
width="1"
|
||||||
|
height="1"
|
||||||
|
inkscape:menu="Color"
|
||||||
|
inkscape:menu-tooltip="Invert colors"
|
||||||
|
color-interpolation-filters="sRGB">
|
||||||
|
<feColorMatrix
|
||||||
|
id="feColorMatrix3286"
|
||||||
|
type="saturate"
|
||||||
|
values="1"
|
||||||
|
result="fbSourceGraphic" />
|
||||||
|
<feColorMatrix
|
||||||
|
id="feColorMatrix3288"
|
||||||
|
in="fbSourceGraphic"
|
||||||
|
values="-1 0 0 0 1 0 -1 0 0 1 0 0 -1 0 1 0 0 0 1 0 " />
|
||||||
|
</filter>
|
||||||
|
<filter
|
||||||
|
id="filter3290"
|
||||||
|
inkscape:label="Invert"
|
||||||
|
x="0"
|
||||||
|
y="0"
|
||||||
|
width="1"
|
||||||
|
height="1"
|
||||||
|
inkscape:menu="Color"
|
||||||
|
inkscape:menu-tooltip="Invert colors"
|
||||||
|
color-interpolation-filters="sRGB">
|
||||||
|
<feColorMatrix
|
||||||
|
id="feColorMatrix3292"
|
||||||
|
type="saturate"
|
||||||
|
values="1"
|
||||||
|
result="fbSourceGraphic" />
|
||||||
|
<feColorMatrix
|
||||||
|
id="feColorMatrix3294"
|
||||||
|
in="fbSourceGraphic"
|
||||||
|
values="-1 0 0 0 1 0 -1 0 0 1 0 0 -1 0 1 0 0 0 1 0 " />
|
||||||
|
</filter>
|
||||||
|
<filter
|
||||||
|
id="filter3296"
|
||||||
|
inkscape:label="Invert"
|
||||||
|
x="0"
|
||||||
|
y="0"
|
||||||
|
width="1"
|
||||||
|
height="1"
|
||||||
|
inkscape:menu="Color"
|
||||||
|
inkscape:menu-tooltip="Invert colors"
|
||||||
|
color-interpolation-filters="sRGB">
|
||||||
|
<feColorMatrix
|
||||||
|
id="feColorMatrix3298"
|
||||||
|
type="saturate"
|
||||||
|
values="1"
|
||||||
|
result="fbSourceGraphic" />
|
||||||
|
<feColorMatrix
|
||||||
|
id="feColorMatrix3300"
|
||||||
|
in="fbSourceGraphic"
|
||||||
|
values="-1 0 0 0 1 0 -1 0 0 1 0 0 -1 0 1 0 0 0 1 0 " />
|
||||||
|
</filter>
|
||||||
|
<filter
|
||||||
|
id="filter3302"
|
||||||
|
inkscape:label="Invert"
|
||||||
|
x="0"
|
||||||
|
y="0"
|
||||||
|
width="1"
|
||||||
|
height="1"
|
||||||
|
inkscape:menu="Color"
|
||||||
|
inkscape:menu-tooltip="Invert colors"
|
||||||
|
color-interpolation-filters="sRGB">
|
||||||
|
<feColorMatrix
|
||||||
|
id="feColorMatrix3304"
|
||||||
|
type="saturate"
|
||||||
|
values="1"
|
||||||
|
result="fbSourceGraphic" />
|
||||||
|
<feColorMatrix
|
||||||
|
id="feColorMatrix3306"
|
||||||
|
in="fbSourceGraphic"
|
||||||
|
values="-1 0 0 0 1 0 -1 0 0 1 0 0 -1 0 1 0 0 0 1 0 " />
|
||||||
|
</filter>
|
||||||
|
<filter
|
||||||
|
id="filter3308"
|
||||||
|
inkscape:label="Invert"
|
||||||
|
x="0"
|
||||||
|
y="0"
|
||||||
|
width="1"
|
||||||
|
height="1"
|
||||||
|
inkscape:menu="Color"
|
||||||
|
inkscape:menu-tooltip="Invert colors"
|
||||||
|
color-interpolation-filters="sRGB">
|
||||||
|
<feColorMatrix
|
||||||
|
id="feColorMatrix3310"
|
||||||
|
type="saturate"
|
||||||
|
values="1"
|
||||||
|
result="fbSourceGraphic" />
|
||||||
|
<feColorMatrix
|
||||||
|
id="feColorMatrix3312"
|
||||||
|
in="fbSourceGraphic"
|
||||||
|
values="-1 0 0 0 1 0 -1 0 0 1 0 0 -1 0 1 0 0 0 1 0 " />
|
||||||
|
</filter>
|
||||||
|
<filter
|
||||||
|
id="filter3314"
|
||||||
|
inkscape:label="Invert"
|
||||||
|
x="0"
|
||||||
|
y="0"
|
||||||
|
width="1"
|
||||||
|
height="1"
|
||||||
|
inkscape:menu="Color"
|
||||||
|
inkscape:menu-tooltip="Invert colors"
|
||||||
|
color-interpolation-filters="sRGB">
|
||||||
|
<feColorMatrix
|
||||||
|
id="feColorMatrix3316"
|
||||||
|
type="saturate"
|
||||||
|
values="1"
|
||||||
|
result="fbSourceGraphic" />
|
||||||
|
<feColorMatrix
|
||||||
|
id="feColorMatrix3318"
|
||||||
|
in="fbSourceGraphic"
|
||||||
|
values="-1 0 0 0 1 0 -1 0 0 1 0 0 -1 0 1 0 0 0 1 0 " />
|
||||||
|
</filter>
|
||||||
|
<filter
|
||||||
|
id="filter3320"
|
||||||
|
inkscape:label="Invert"
|
||||||
|
x="0"
|
||||||
|
y="0"
|
||||||
|
width="1"
|
||||||
|
height="1"
|
||||||
|
inkscape:menu="Color"
|
||||||
|
inkscape:menu-tooltip="Invert colors"
|
||||||
|
color-interpolation-filters="sRGB">
|
||||||
|
<feColorMatrix
|
||||||
|
id="feColorMatrix3322"
|
||||||
|
type="saturate"
|
||||||
|
values="1"
|
||||||
|
result="fbSourceGraphic" />
|
||||||
|
<feColorMatrix
|
||||||
|
id="feColorMatrix3324"
|
||||||
|
in="fbSourceGraphic"
|
||||||
|
values="-1 0 0 0 1 0 -1 0 0 1 0 0 -1 0 1 0 0 0 1 0 " />
|
||||||
|
</filter>
|
||||||
|
<filter
|
||||||
|
id="filter3326"
|
||||||
|
inkscape:label="Invert"
|
||||||
|
x="0"
|
||||||
|
y="0"
|
||||||
|
width="1"
|
||||||
|
height="1"
|
||||||
|
inkscape:menu="Color"
|
||||||
|
inkscape:menu-tooltip="Invert colors"
|
||||||
|
color-interpolation-filters="sRGB">
|
||||||
|
<feColorMatrix
|
||||||
|
id="feColorMatrix3328"
|
||||||
|
type="saturate"
|
||||||
|
values="1"
|
||||||
|
result="fbSourceGraphic" />
|
||||||
|
<feColorMatrix
|
||||||
|
id="feColorMatrix3330"
|
||||||
|
in="fbSourceGraphic"
|
||||||
|
values="-1 0 0 0 1 0 -1 0 0 1 0 0 -1 0 1 0 0 0 1 0 " />
|
||||||
|
</filter>
|
||||||
|
<filter
|
||||||
|
id="filter3332"
|
||||||
|
inkscape:label="Invert"
|
||||||
|
x="0"
|
||||||
|
y="0"
|
||||||
|
width="1"
|
||||||
|
height="1"
|
||||||
|
inkscape:menu="Color"
|
||||||
|
inkscape:menu-tooltip="Invert colors"
|
||||||
|
color-interpolation-filters="sRGB">
|
||||||
|
<feColorMatrix
|
||||||
|
id="feColorMatrix3334"
|
||||||
|
type="saturate"
|
||||||
|
values="1"
|
||||||
|
result="fbSourceGraphic" />
|
||||||
|
<feColorMatrix
|
||||||
|
id="feColorMatrix3336"
|
||||||
|
in="fbSourceGraphic"
|
||||||
|
values="-1 0 0 0 1 0 -1 0 0 1 0 0 -1 0 1 0 0 0 1 0 "
|
||||||
|
result="fbSourceGraphic" />
|
||||||
|
<feColorMatrix
|
||||||
|
result="fbSourceGraphicAlpha"
|
||||||
|
in="fbSourceGraphic"
|
||||||
|
values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0"
|
||||||
|
id="feColorMatrix3374" />
|
||||||
|
<feColorMatrix
|
||||||
|
id="feColorMatrix3376"
|
||||||
|
type="saturate"
|
||||||
|
values="1"
|
||||||
|
result="fbSourceGraphic"
|
||||||
|
in="fbSourceGraphic" />
|
||||||
|
<feColorMatrix
|
||||||
|
id="feColorMatrix3378"
|
||||||
|
in="fbSourceGraphic"
|
||||||
|
values="-1 0 0 0 1 0 -1 0 0 1 0 0 -1 0 1 0 0 0 1 0 " />
|
||||||
|
</filter>
|
||||||
|
<filter
|
||||||
|
id="filter3338"
|
||||||
|
inkscape:label="Invert"
|
||||||
|
x="0"
|
||||||
|
y="0"
|
||||||
|
width="1"
|
||||||
|
height="1"
|
||||||
|
inkscape:menu="Color"
|
||||||
|
inkscape:menu-tooltip="Invert colors"
|
||||||
|
color-interpolation-filters="sRGB">
|
||||||
|
<feColorMatrix
|
||||||
|
id="feColorMatrix3340"
|
||||||
|
type="saturate"
|
||||||
|
values="1"
|
||||||
|
result="fbSourceGraphic" />
|
||||||
|
<feColorMatrix
|
||||||
|
id="feColorMatrix3342"
|
||||||
|
in="fbSourceGraphic"
|
||||||
|
values="-1 0 0 0 1 0 -1 0 0 1 0 0 -1 0 1 0 0 0 1 0 "
|
||||||
|
result="fbSourceGraphic" />
|
||||||
|
<feColorMatrix
|
||||||
|
result="fbSourceGraphicAlpha"
|
||||||
|
in="fbSourceGraphic"
|
||||||
|
values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0"
|
||||||
|
id="feColorMatrix3380" />
|
||||||
|
<feColorMatrix
|
||||||
|
id="feColorMatrix3382"
|
||||||
|
type="saturate"
|
||||||
|
values="1"
|
||||||
|
result="fbSourceGraphic"
|
||||||
|
in="fbSourceGraphic" />
|
||||||
|
<feColorMatrix
|
||||||
|
id="feColorMatrix3384"
|
||||||
|
in="fbSourceGraphic"
|
||||||
|
values="-1 0 0 0 1 0 -1 0 0 1 0 0 -1 0 1 0 0 0 1 0 " />
|
||||||
|
</filter>
|
||||||
|
<filter
|
||||||
|
id="filter3344"
|
||||||
|
inkscape:label="Invert"
|
||||||
|
x="0"
|
||||||
|
y="0"
|
||||||
|
width="1"
|
||||||
|
height="1"
|
||||||
|
inkscape:menu="Color"
|
||||||
|
inkscape:menu-tooltip="Invert colors"
|
||||||
|
color-interpolation-filters="sRGB">
|
||||||
|
<feColorMatrix
|
||||||
|
id="feColorMatrix3346"
|
||||||
|
type="saturate"
|
||||||
|
values="1"
|
||||||
|
result="fbSourceGraphic" />
|
||||||
|
<feColorMatrix
|
||||||
|
id="feColorMatrix3348"
|
||||||
|
in="fbSourceGraphic"
|
||||||
|
values="-1 0 0 0 1 0 -1 0 0 1 0 0 -1 0 1 0 0 0 1 0 "
|
||||||
|
result="fbSourceGraphic" />
|
||||||
|
<feColorMatrix
|
||||||
|
result="fbSourceGraphicAlpha"
|
||||||
|
in="fbSourceGraphic"
|
||||||
|
values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0"
|
||||||
|
id="feColorMatrix3386" />
|
||||||
|
<feColorMatrix
|
||||||
|
id="feColorMatrix3388"
|
||||||
|
type="saturate"
|
||||||
|
values="1"
|
||||||
|
result="fbSourceGraphic"
|
||||||
|
in="fbSourceGraphic" />
|
||||||
|
<feColorMatrix
|
||||||
|
id="feColorMatrix3390"
|
||||||
|
in="fbSourceGraphic"
|
||||||
|
values="-1 0 0 0 1 0 -1 0 0 1 0 0 -1 0 1 0 0 0 1 0 " />
|
||||||
|
</filter>
|
||||||
|
<filter
|
||||||
|
id="filter3350"
|
||||||
|
inkscape:label="Invert"
|
||||||
|
x="0"
|
||||||
|
y="0"
|
||||||
|
width="1"
|
||||||
|
height="1"
|
||||||
|
inkscape:menu="Color"
|
||||||
|
inkscape:menu-tooltip="Invert colors"
|
||||||
|
color-interpolation-filters="sRGB">
|
||||||
|
<feColorMatrix
|
||||||
|
id="feColorMatrix3352"
|
||||||
|
type="saturate"
|
||||||
|
values="1"
|
||||||
|
result="fbSourceGraphic" />
|
||||||
|
<feColorMatrix
|
||||||
|
id="feColorMatrix3354"
|
||||||
|
in="fbSourceGraphic"
|
||||||
|
values="-1 0 0 0 1 0 -1 0 0 1 0 0 -1 0 1 0 0 0 1 0 "
|
||||||
|
result="fbSourceGraphic" />
|
||||||
|
<feColorMatrix
|
||||||
|
result="fbSourceGraphicAlpha"
|
||||||
|
in="fbSourceGraphic"
|
||||||
|
values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0"
|
||||||
|
id="feColorMatrix3392" />
|
||||||
|
<feColorMatrix
|
||||||
|
id="feColorMatrix3394"
|
||||||
|
type="saturate"
|
||||||
|
values="1"
|
||||||
|
result="fbSourceGraphic"
|
||||||
|
in="fbSourceGraphic" />
|
||||||
|
<feColorMatrix
|
||||||
|
id="feColorMatrix3396"
|
||||||
|
in="fbSourceGraphic"
|
||||||
|
values="-1 0 0 0 1 0 -1 0 0 1 0 0 -1 0 1 0 0 0 1 0 " />
|
||||||
|
</filter>
|
||||||
|
<filter
|
||||||
|
id="filter3356"
|
||||||
|
inkscape:label="Invert"
|
||||||
|
x="0"
|
||||||
|
y="0"
|
||||||
|
width="1"
|
||||||
|
height="1"
|
||||||
|
inkscape:menu="Color"
|
||||||
|
inkscape:menu-tooltip="Invert colors"
|
||||||
|
color-interpolation-filters="sRGB">
|
||||||
|
<feColorMatrix
|
||||||
|
id="feColorMatrix3358"
|
||||||
|
type="saturate"
|
||||||
|
values="1"
|
||||||
|
result="fbSourceGraphic" />
|
||||||
|
<feColorMatrix
|
||||||
|
id="feColorMatrix3360"
|
||||||
|
in="fbSourceGraphic"
|
||||||
|
values="-1 0 0 0 1 0 -1 0 0 1 0 0 -1 0 1 0 0 0 1 0 "
|
||||||
|
result="fbSourceGraphic" />
|
||||||
|
<feColorMatrix
|
||||||
|
result="fbSourceGraphicAlpha"
|
||||||
|
in="fbSourceGraphic"
|
||||||
|
values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0"
|
||||||
|
id="feColorMatrix3398" />
|
||||||
|
<feColorMatrix
|
||||||
|
id="feColorMatrix3400"
|
||||||
|
type="saturate"
|
||||||
|
values="1"
|
||||||
|
result="fbSourceGraphic"
|
||||||
|
in="fbSourceGraphic" />
|
||||||
|
<feColorMatrix
|
||||||
|
id="feColorMatrix3402"
|
||||||
|
in="fbSourceGraphic"
|
||||||
|
values="-1 0 0 0 1 0 -1 0 0 1 0 0 -1 0 1 0 0 0 1 0 " />
|
||||||
|
</filter>
|
||||||
|
<filter
|
||||||
|
id="filter3362"
|
||||||
|
inkscape:label="Invert"
|
||||||
|
x="0"
|
||||||
|
y="0"
|
||||||
|
width="1"
|
||||||
|
height="1"
|
||||||
|
inkscape:menu="Color"
|
||||||
|
inkscape:menu-tooltip="Invert colors"
|
||||||
|
color-interpolation-filters="sRGB">
|
||||||
|
<feColorMatrix
|
||||||
|
id="feColorMatrix3364"
|
||||||
|
type="saturate"
|
||||||
|
values="1"
|
||||||
|
result="fbSourceGraphic" />
|
||||||
|
<feColorMatrix
|
||||||
|
id="feColorMatrix3366"
|
||||||
|
in="fbSourceGraphic"
|
||||||
|
values="-1 0 0 0 1 0 -1 0 0 1 0 0 -1 0 1 0 0 0 1 0 "
|
||||||
|
result="fbSourceGraphic" />
|
||||||
|
<feColorMatrix
|
||||||
|
result="fbSourceGraphicAlpha"
|
||||||
|
in="fbSourceGraphic"
|
||||||
|
values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0"
|
||||||
|
id="feColorMatrix3404" />
|
||||||
|
<feColorMatrix
|
||||||
|
id="feColorMatrix3406"
|
||||||
|
type="saturate"
|
||||||
|
values="1"
|
||||||
|
result="fbSourceGraphic"
|
||||||
|
in="fbSourceGraphic" />
|
||||||
|
<feColorMatrix
|
||||||
|
id="feColorMatrix3408"
|
||||||
|
in="fbSourceGraphic"
|
||||||
|
values="-1 0 0 0 1 0 -1 0 0 1 0 0 -1 0 1 0 0 0 1 0 " />
|
||||||
|
</filter>
|
||||||
|
<filter
|
||||||
|
id="filter3368"
|
||||||
|
inkscape:label="Invert"
|
||||||
|
x="0"
|
||||||
|
y="0"
|
||||||
|
width="1"
|
||||||
|
height="1"
|
||||||
|
inkscape:menu="Color"
|
||||||
|
inkscape:menu-tooltip="Invert colors"
|
||||||
|
color-interpolation-filters="sRGB">
|
||||||
|
<feColorMatrix
|
||||||
|
id="feColorMatrix3370"
|
||||||
|
type="saturate"
|
||||||
|
values="1"
|
||||||
|
result="fbSourceGraphic" />
|
||||||
|
<feColorMatrix
|
||||||
|
id="feColorMatrix3372"
|
||||||
|
in="fbSourceGraphic"
|
||||||
|
values="-1 0 0 0 1 0 -1 0 0 1 0 0 -1 0 1 0 0 0 1 0 "
|
||||||
|
result="fbSourceGraphic" />
|
||||||
|
<feColorMatrix
|
||||||
|
result="fbSourceGraphicAlpha"
|
||||||
|
in="fbSourceGraphic"
|
||||||
|
values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0"
|
||||||
|
id="feColorMatrix3410" />
|
||||||
|
<feColorMatrix
|
||||||
|
id="feColorMatrix3412"
|
||||||
|
type="saturate"
|
||||||
|
values="1"
|
||||||
|
result="fbSourceGraphic"
|
||||||
|
in="fbSourceGraphic" />
|
||||||
|
<feColorMatrix
|
||||||
|
id="feColorMatrix3414"
|
||||||
|
in="fbSourceGraphic"
|
||||||
|
values="-1 0 0 0 1 0 -1 0 0 1 0 0 -1 0 1 0 0 0 1 0 " />
|
||||||
|
</filter>
|
||||||
|
</defs>
|
||||||
|
<sodipodi:namedview
|
||||||
|
pagecolor="#808080"
|
||||||
|
bordercolor="#666666"
|
||||||
|
borderopacity="1"
|
||||||
|
objecttolerance="10"
|
||||||
|
gridtolerance="10"
|
||||||
|
guidetolerance="10"
|
||||||
|
inkscape:pageopacity="0"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:window-width="1364"
|
||||||
|
inkscape:window-height="708"
|
||||||
|
id="namedview5371"
|
||||||
|
showgrid="true"
|
||||||
|
borderlayer="true"
|
||||||
|
inkscape:showpageshadow="false"
|
||||||
|
inkscape:zoom="5.27"
|
||||||
|
inkscape:cx="25.33344"
|
||||||
|
inkscape:cy="36.016983"
|
||||||
|
inkscape:window-x="0"
|
||||||
|
inkscape:window-y="27"
|
||||||
|
inkscape:window-maximized="0"
|
||||||
|
inkscape:current-layer="layer1">
|
||||||
|
<inkscape:grid
|
||||||
|
type="xygrid"
|
||||||
|
id="grid11933"
|
||||||
|
empspacing="5"
|
||||||
|
visible="true"
|
||||||
|
enabled="true"
|
||||||
|
snapvisiblegridlinesonly="true" />
|
||||||
|
</sodipodi:namedview>
|
||||||
|
<g
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer1"
|
||||||
|
inkscape:label="tiles"
|
||||||
|
style="display:inline">
|
||||||
|
<rect
|
||||||
|
style="color:#000000;fill:#000000;fill-opacity:0;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;filter:url(#filter3278)"
|
||||||
|
id="rect12451"
|
||||||
|
width="24"
|
||||||
|
height="24"
|
||||||
|
x="0"
|
||||||
|
y="0" />
|
||||||
|
<rect
|
||||||
|
y="24"
|
||||||
|
x="0"
|
||||||
|
height="24"
|
||||||
|
width="24"
|
||||||
|
id="rect12453"
|
||||||
|
style="color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;filter:url(#filter3284);opacity:0" />
|
||||||
|
<rect
|
||||||
|
y="0"
|
||||||
|
x="24"
|
||||||
|
height="24"
|
||||||
|
width="24"
|
||||||
|
id="rect12455"
|
||||||
|
style="color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;filter:url(#filter3290);opacity:0.00858369" />
|
||||||
|
<rect
|
||||||
|
style="color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;filter:url(#filter3296);opacity:0"
|
||||||
|
id="rect12457"
|
||||||
|
width="24"
|
||||||
|
height="24"
|
||||||
|
x="24"
|
||||||
|
y="24" />
|
||||||
|
<rect
|
||||||
|
style="color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;filter:url(#filter3302);opacity:0"
|
||||||
|
id="rect12459"
|
||||||
|
width="24"
|
||||||
|
height="24"
|
||||||
|
x="48"
|
||||||
|
y="0" />
|
||||||
|
<rect
|
||||||
|
y="24"
|
||||||
|
x="48"
|
||||||
|
height="24"
|
||||||
|
width="24"
|
||||||
|
id="rect12461"
|
||||||
|
style="color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;filter:url(#filter3308);opacity:0" />
|
||||||
|
<rect
|
||||||
|
y="0"
|
||||||
|
x="72"
|
||||||
|
height="24"
|
||||||
|
width="24"
|
||||||
|
id="rect12463"
|
||||||
|
style="color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;filter:url(#filter3314);opacity:0" />
|
||||||
|
<rect
|
||||||
|
style="color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;filter:url(#filter3320);opacity:0"
|
||||||
|
id="rect12465"
|
||||||
|
width="24"
|
||||||
|
height="24"
|
||||||
|
x="72"
|
||||||
|
y="24" />
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer2"
|
||||||
|
inkscape:label="spinner"
|
||||||
|
sodipodi:insensitive="true">
|
||||||
|
<g
|
||||||
|
transform="matrix(0.28240106,0,0,0.28240106,146.92015,-382.52444)"
|
||||||
|
id="g10450-5"
|
||||||
|
style="display:inline;filter:url(#filter3326)">
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
style="opacity:0.6;color:#000000;fill:none;stroke:#ffffff;stroke-width:7.08212566;stroke-linecap:round;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
|
||||||
|
d="m -477.76072,1373.3569 0,9.4717"
|
||||||
|
id="path18768"
|
||||||
|
sodipodi:nodetypes="cc"
|
||||||
|
inkscape:transform-center-y="-4.6808838" />
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
inkscape:transform-center-y="-3.3099227"
|
||||||
|
sodipodi:nodetypes="cc"
|
||||||
|
id="path18770"
|
||||||
|
d="m -461.0171,1380.2922 -7.23427,7.3824"
|
||||||
|
style="opacity:0.7;color:#000000;fill:none;stroke:#ffffff;stroke-width:7.08212566;stroke-linecap:round;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
|
||||||
|
inkscape:transform-center-x="-3.3098966" />
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
inkscape:transform-center-x="-4.6808962"
|
||||||
|
style="opacity:0.8;color:#000000;fill:none;stroke:#ffffff;stroke-width:7.08212566;stroke-linecap:round;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
|
||||||
|
d="m -454.08163,1397.0359 -9.47165,0"
|
||||||
|
id="path18772"
|
||||||
|
sodipodi:nodetypes="cc"
|
||||||
|
inkscape:transform-center-y="-2.6596956e-05" />
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
sodipodi:nodetypes="cc"
|
||||||
|
id="path18774"
|
||||||
|
d="m -461.01709,1413.7796 -6.93831,-7.0864"
|
||||||
|
style="opacity:0.9;color:#000000;fill:none;stroke:#ffffff;stroke-width:7.08212566;stroke-linecap:round;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
|
||||||
|
inkscape:transform-center-x="-3.3098966"
|
||||||
|
inkscape:transform-center-y="3.3098652" />
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
inkscape:transform-center-y="4.6808757"
|
||||||
|
style="color:#000000;fill:none;stroke:#ffffff;stroke-width:7.08212566;stroke-linecap:round;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
|
||||||
|
d="m -477.76074,1420.715 9e-5,-9.4716"
|
||||||
|
id="path18776"
|
||||||
|
sodipodi:nodetypes="cc" />
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
sodipodi:nodetypes="cc"
|
||||||
|
id="path18778"
|
||||||
|
d="m -494.50442,1413.7796 6.79048,-6.9384"
|
||||||
|
style="opacity:0.3;color:#000000;fill:none;stroke:#ffffff;stroke-width:7.08212566;stroke-linecap:round;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
|
||||||
|
inkscape:transform-center-y="3.3098769"
|
||||||
|
inkscape:transform-center-x="3.3098883" />
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
inkscape:transform-center-x="4.6808941"
|
||||||
|
style="opacity:0.4;color:#000000;fill:none;stroke:#ffffff;stroke-width:7.08212566;stroke-linecap:round;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
|
||||||
|
d="m -501.43987,1397.0359 9.47174,0"
|
||||||
|
id="path18780"
|
||||||
|
sodipodi:nodetypes="cc"
|
||||||
|
inkscape:transform-center-y="-2.6596956e-05" />
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
sodipodi:nodetypes="cc"
|
||||||
|
id="path18782"
|
||||||
|
d="m -494.5044,1380.2922 6.64243,6.9384"
|
||||||
|
style="opacity:0.5;color:#000000;fill:none;stroke:#ffffff;stroke-width:7.08212566;stroke-linecap:round;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
|
||||||
|
inkscape:transform-center-x="3.3098902"
|
||||||
|
inkscape:transform-center-y="-3.3099302" />
|
||||||
|
</g>
|
||||||
|
<use
|
||||||
|
style="display:inline;filter:url(#filter3332)"
|
||||||
|
x="0"
|
||||||
|
y="0"
|
||||||
|
xlink:href="#g10450-5"
|
||||||
|
id="use4981"
|
||||||
|
transform="matrix(0.70710678,0.70710678,-0.70710678,0.70710678,36,-4.9705636)"
|
||||||
|
width="400"
|
||||||
|
height="400" />
|
||||||
|
<use
|
||||||
|
style="display:inline;filter:url(#filter3338)"
|
||||||
|
x="0"
|
||||||
|
y="0"
|
||||||
|
xlink:href="#use4981"
|
||||||
|
id="use4983"
|
||||||
|
transform="matrix(0.70710678,0.70710678,-0.70710678,0.70710678,43.032478,-21.909695)"
|
||||||
|
width="400"
|
||||||
|
height="400" />
|
||||||
|
<use
|
||||||
|
style="display:inline;filter:url(#filter3344)"
|
||||||
|
x="0"
|
||||||
|
y="0"
|
||||||
|
xlink:href="#use4983"
|
||||||
|
id="use4985"
|
||||||
|
transform="matrix(0.70710678,0.70710678,-0.70710678,0.70710678,50.081986,-38.904617)"
|
||||||
|
width="400"
|
||||||
|
height="400" />
|
||||||
|
<use
|
||||||
|
style="display:inline;filter:url(#filter3350)"
|
||||||
|
x="0"
|
||||||
|
y="0"
|
||||||
|
xlink:href="#use4985"
|
||||||
|
id="use4987"
|
||||||
|
transform="matrix(0.70710678,0.70710678,-0.70710678,0.70710678,-38.919996,-31.872139)"
|
||||||
|
width="400"
|
||||||
|
height="400" />
|
||||||
|
<use
|
||||||
|
style="display:inline;filter:url(#filter3356)"
|
||||||
|
x="0"
|
||||||
|
y="0"
|
||||||
|
xlink:href="#use4987"
|
||||||
|
id="use4989"
|
||||||
|
transform="matrix(0.70710678,0.70710678,-0.70710678,0.70710678,52.986628,2.0890543)"
|
||||||
|
width="400"
|
||||||
|
height="400" />
|
||||||
|
<use
|
||||||
|
style="display:inline;filter:url(#filter3362)"
|
||||||
|
x="0"
|
||||||
|
y="0"
|
||||||
|
xlink:href="#use4989"
|
||||||
|
id="use4991"
|
||||||
|
transform="matrix(0.70710678,0.70710678,-0.70710678,0.70710678,60.013026,-14.912936)"
|
||||||
|
width="400"
|
||||||
|
height="400" />
|
||||||
|
<use
|
||||||
|
style="display:inline;filter:url(#filter3368)"
|
||||||
|
x="0"
|
||||||
|
y="0"
|
||||||
|
xlink:href="#use4991"
|
||||||
|
id="use4993"
|
||||||
|
transform="matrix(0.70710678,0.70710678,-0.70710678,0.70710678,67.022396,-31.859127)"
|
||||||
|
width="400"
|
||||||
|
height="400" />
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 22 KiB |
@@ -0,0 +1,250 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
|
||||||
|
<svg
|
||||||
|
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||||
|
xmlns:cc="http://creativecommons.org/ns#"
|
||||||
|
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
width="65"
|
||||||
|
height="22"
|
||||||
|
id="svg10865"
|
||||||
|
version="1.1"
|
||||||
|
inkscape:version="0.48.4 r9939"
|
||||||
|
sodipodi:docname="toggle-off-us.svg">
|
||||||
|
<defs
|
||||||
|
id="defs10867">
|
||||||
|
<linearGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient62852-6-5"
|
||||||
|
id="linearGradient62981-1-1"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
gradientTransform="matrix(0.85639946,0,0,0.81059641,27.810405,92.069729)"
|
||||||
|
x1="740"
|
||||||
|
y1="486.10501"
|
||||||
|
x2="740"
|
||||||
|
y2="505.3204" />
|
||||||
|
<linearGradient
|
||||||
|
id="linearGradient62852-6-5">
|
||||||
|
<stop
|
||||||
|
id="stop62854-6-7"
|
||||||
|
offset="0"
|
||||||
|
style="stop-color:#ffffff;stop-opacity:1" />
|
||||||
|
<stop
|
||||||
|
style="stop-color:#eeeeec;stop-opacity:1"
|
||||||
|
offset="0.97726452"
|
||||||
|
id="stop62858-8-0" />
|
||||||
|
<stop
|
||||||
|
id="stop62860-5-3"
|
||||||
|
offset="1"
|
||||||
|
style="stop-color:#f5f5f4;stop-opacity:1" />
|
||||||
|
</linearGradient>
|
||||||
|
<inkscape:path-effect
|
||||||
|
is_visible="true"
|
||||||
|
id="path-effect62989-8-0"
|
||||||
|
effect="spiro" />
|
||||||
|
<linearGradient
|
||||||
|
id="linearGradient62821-5-8">
|
||||||
|
<stop
|
||||||
|
id="stop62823-2-4"
|
||||||
|
offset="0"
|
||||||
|
style="stop-color:#d1d3d1;stop-opacity:1;" />
|
||||||
|
<stop
|
||||||
|
id="stop62825-3-8"
|
||||||
|
offset="1"
|
||||||
|
style="stop-color:#ebebeb;stop-opacity:1;" />
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient
|
||||||
|
id="linearGradient62852-6-5-3">
|
||||||
|
<stop
|
||||||
|
id="stop62854-6-7-6"
|
||||||
|
offset="0"
|
||||||
|
style="stop-color:#ffffff;stop-opacity:1" />
|
||||||
|
<stop
|
||||||
|
style="stop-color:#eeeeec;stop-opacity:1"
|
||||||
|
offset="0.97726452"
|
||||||
|
id="stop62858-8-0-3" />
|
||||||
|
<stop
|
||||||
|
id="stop62860-5-3-9"
|
||||||
|
offset="1"
|
||||||
|
style="stop-color:#f5f5f4;stop-opacity:1" />
|
||||||
|
</linearGradient>
|
||||||
|
<inkscape:path-effect
|
||||||
|
effect="spiro"
|
||||||
|
id="path-effect62829-6-8-0"
|
||||||
|
is_visible="true" />
|
||||||
|
<linearGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient62821-5-8-1"
|
||||||
|
id="linearGradient62864-0-3-1"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
gradientTransform="matrix(1.3066667,0,0,1,-197.64667,0)"
|
||||||
|
x1="702.58966"
|
||||||
|
y1="484.49405"
|
||||||
|
x2="702.58966"
|
||||||
|
y2="507.42715" />
|
||||||
|
<linearGradient
|
||||||
|
id="linearGradient62821-5-8-1">
|
||||||
|
<stop
|
||||||
|
id="stop62823-2-4-2"
|
||||||
|
offset="0"
|
||||||
|
style="stop-color:#d1d3d1;stop-opacity:1;" />
|
||||||
|
<stop
|
||||||
|
id="stop62825-3-8-9"
|
||||||
|
offset="1"
|
||||||
|
style="stop-color:#ebebeb;stop-opacity:1;" />
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient
|
||||||
|
y2="507.42715"
|
||||||
|
x2="702.58966"
|
||||||
|
y1="484.49405"
|
||||||
|
x1="702.58966"
|
||||||
|
gradientTransform="matrix(1.3066667,0,0,1,-841.64667,-483)"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
id="linearGradient11647"
|
||||||
|
xlink:href="#linearGradient62821-5-8-1"
|
||||||
|
inkscape:collect="always" />
|
||||||
|
</defs>
|
||||||
|
<sodipodi:namedview
|
||||||
|
id="base"
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#666666"
|
||||||
|
borderopacity="1.0"
|
||||||
|
inkscape:pageopacity="0.0"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:zoom="1"
|
||||||
|
inkscape:cx="-133.20351"
|
||||||
|
inkscape:cy="20.84411"
|
||||||
|
inkscape:document-units="px"
|
||||||
|
inkscape:current-layer="g62929"
|
||||||
|
showgrid="false"
|
||||||
|
borderlayer="true"
|
||||||
|
inkscape:showpageshadow="false"
|
||||||
|
inkscape:snap-nodes="false"
|
||||||
|
inkscape:snap-bbox="true"
|
||||||
|
inkscape:bbox-paths="true"
|
||||||
|
inkscape:snap-others="false"
|
||||||
|
inkscape:window-width="2560"
|
||||||
|
inkscape:window-height="1380"
|
||||||
|
inkscape:window-x="1600"
|
||||||
|
inkscape:window-y="28"
|
||||||
|
inkscape:window-maximized="1"
|
||||||
|
showborder="false">
|
||||||
|
<inkscape:grid
|
||||||
|
type="xygrid"
|
||||||
|
id="grid11512" />
|
||||||
|
</sodipodi:namedview>
|
||||||
|
<metadata
|
||||||
|
id="metadata10870">
|
||||||
|
<rdf:RDF>
|
||||||
|
<cc:Work
|
||||||
|
rdf:about="">
|
||||||
|
<dc:format>image/svg+xml</dc:format>
|
||||||
|
<dc:type
|
||||||
|
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||||
|
<dc:title></dc:title>
|
||||||
|
</cc:Work>
|
||||||
|
</rdf:RDF>
|
||||||
|
</metadata>
|
||||||
|
<g
|
||||||
|
inkscape:label="Layer 1"
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer1"
|
||||||
|
transform="translate(0,-1030.3622)">
|
||||||
|
<g
|
||||||
|
inkscape:export-ydpi="90"
|
||||||
|
inkscape:export-xdpi="90"
|
||||||
|
inkscape:export-filename="/home/lapo.fedora/SparkleShare/gnome-mockups/system-settings/network/network-panel-summary.png"
|
||||||
|
style="display:inline"
|
||||||
|
id="g62929"
|
||||||
|
transform="translate(-643.91421,517.29894)">
|
||||||
|
<g
|
||||||
|
transform="translate(0,30)"
|
||||||
|
id="g62931">
|
||||||
|
<rect
|
||||||
|
style="fill:url(#linearGradient62864-0-3-1);fill-opacity:1;stroke:#a6a8a6;stroke-width:1;stroke-linecap:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;color:#000000;color-interpolation:sRGB;color-interpolation-filters:linearRGB;fill-rule:nonzero;stroke-linejoin:miter;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;clip-rule:nonzero"
|
||||||
|
id="rect62935"
|
||||||
|
width="63.856125"
|
||||||
|
height="21.093594"
|
||||||
|
x="644.5"
|
||||||
|
y="483.5"
|
||||||
|
rx="2"
|
||||||
|
ry="2" />
|
||||||
|
<rect
|
||||||
|
style="fill:url(#linearGradient62981-1-1);fill-opacity:1;stroke:#777b7a;stroke-width:1;stroke-linecap:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline"
|
||||||
|
id="rect62937"
|
||||||
|
width="29.97398"
|
||||||
|
height="17.022524"
|
||||||
|
x="646.55896"
|
||||||
|
y="485.61429"
|
||||||
|
rx="1"
|
||||||
|
ry="1" />
|
||||||
|
<g
|
||||||
|
transform="translate(-38.048674,-1.9445437)"
|
||||||
|
id="g62939">
|
||||||
|
<rect
|
||||||
|
ry="1"
|
||||||
|
rx="1"
|
||||||
|
y="492"
|
||||||
|
x="695"
|
||||||
|
height="8"
|
||||||
|
width="2"
|
||||||
|
id="rect62941"
|
||||||
|
style="fill:#e8e8e5;fill-opacity:1;stroke:none;display:inline" />
|
||||||
|
<rect
|
||||||
|
ry="1"
|
||||||
|
rx="1"
|
||||||
|
y="492"
|
||||||
|
x="699"
|
||||||
|
height="8"
|
||||||
|
width="2"
|
||||||
|
id="rect62943"
|
||||||
|
style="fill:#e8e8e5;fill-opacity:1;stroke:none;display:inline" />
|
||||||
|
<rect
|
||||||
|
ry="1"
|
||||||
|
rx="1"
|
||||||
|
y="492"
|
||||||
|
x="703"
|
||||||
|
height="8"
|
||||||
|
width="2"
|
||||||
|
id="rect62945"
|
||||||
|
style="fill:#e8e8e5;fill-opacity:1;stroke:none;display:inline" />
|
||||||
|
</g>
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
inkscape:original-d="m 647.78624,486.57192 27.94632,0"
|
||||||
|
inkscape:path-effect="#path-effect62989-8-0"
|
||||||
|
id="path62947"
|
||||||
|
d="m 647.78624,486.57192 27.94632,0"
|
||||||
|
style="fill:none;stroke:#ffffff;stroke-width:1px;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1" />
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
id="g11665"
|
||||||
|
transform="matrix(0.78906097,0,0,0.78906097,178.78814,111.57844)" />
|
||||||
|
<path
|
||||||
|
style="fill:none;stroke:#ffffff;stroke-width:2;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||||
|
transform="translate(642.41421,514.02037)"
|
||||||
|
d="m 55,11.875 a 4.625,4.625 0 1 1 -9.25,0 4.625,4.625 0 1 1 9.25,0 z"
|
||||||
|
sodipodi:ry="4.625"
|
||||||
|
sodipodi:rx="4.625"
|
||||||
|
sodipodi:cy="11.875"
|
||||||
|
sodipodi:cx="50.375"
|
||||||
|
id="path3786"
|
||||||
|
sodipodi:type="arc" />
|
||||||
|
<path
|
||||||
|
sodipodi:type="arc"
|
||||||
|
id="path3016"
|
||||||
|
sodipodi:cx="50.375"
|
||||||
|
sodipodi:cy="11.875"
|
||||||
|
sodipodi:rx="4.625"
|
||||||
|
sodipodi:ry="4.625"
|
||||||
|
d="m 55,11.875 a 4.625,4.625 0 1 1 -9.25,0 4.625,4.625 0 1 1 9.25,0 z"
|
||||||
|
transform="translate(642.41421,512.02037)"
|
||||||
|
style="fill:none;stroke:#555753;stroke-width:2;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 8.1 KiB |
@@ -0,0 +1,255 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
|
||||||
|
<svg
|
||||||
|
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||||
|
xmlns:cc="http://creativecommons.org/ns#"
|
||||||
|
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
width="65"
|
||||||
|
height="22"
|
||||||
|
id="svg10865"
|
||||||
|
version="1.1"
|
||||||
|
inkscape:version="0.48+devel r12050"
|
||||||
|
sodipodi:docname="toggle-off-us.svg">
|
||||||
|
<defs
|
||||||
|
id="defs10867">
|
||||||
|
<linearGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient62852-6-5"
|
||||||
|
id="linearGradient62981-1-1"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
gradientTransform="matrix(0.85639946,0,0,0.81059641,27.810405,92.069729)"
|
||||||
|
x1="740"
|
||||||
|
y1="486.10501"
|
||||||
|
x2="740"
|
||||||
|
y2="505.3204" />
|
||||||
|
<linearGradient
|
||||||
|
id="linearGradient62852-6-5">
|
||||||
|
<stop
|
||||||
|
id="stop62854-6-7"
|
||||||
|
offset="0"
|
||||||
|
style="stop-color:#ffffff;stop-opacity:1" />
|
||||||
|
<stop
|
||||||
|
style="stop-color:#eeeeec;stop-opacity:1"
|
||||||
|
offset="0.97726452"
|
||||||
|
id="stop62858-8-0" />
|
||||||
|
<stop
|
||||||
|
id="stop62860-5-3"
|
||||||
|
offset="1"
|
||||||
|
style="stop-color:#f5f5f4;stop-opacity:1" />
|
||||||
|
</linearGradient>
|
||||||
|
<inkscape:path-effect
|
||||||
|
is_visible="true"
|
||||||
|
id="path-effect62989-8-0"
|
||||||
|
effect="spiro" />
|
||||||
|
<linearGradient
|
||||||
|
id="linearGradient62821-5-8">
|
||||||
|
<stop
|
||||||
|
id="stop62823-2-4"
|
||||||
|
offset="0"
|
||||||
|
style="stop-color:#d1d3d1;stop-opacity:1;" />
|
||||||
|
<stop
|
||||||
|
id="stop62825-3-8"
|
||||||
|
offset="1"
|
||||||
|
style="stop-color:#ebebeb;stop-opacity:1;" />
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient
|
||||||
|
id="linearGradient62852-6-5-3">
|
||||||
|
<stop
|
||||||
|
id="stop62854-6-7-6"
|
||||||
|
offset="0"
|
||||||
|
style="stop-color:#ffffff;stop-opacity:1" />
|
||||||
|
<stop
|
||||||
|
style="stop-color:#eeeeec;stop-opacity:1"
|
||||||
|
offset="0.97726452"
|
||||||
|
id="stop62858-8-0-3" />
|
||||||
|
<stop
|
||||||
|
id="stop62860-5-3-9"
|
||||||
|
offset="1"
|
||||||
|
style="stop-color:#f5f5f4;stop-opacity:1" />
|
||||||
|
</linearGradient>
|
||||||
|
<inkscape:path-effect
|
||||||
|
effect="spiro"
|
||||||
|
id="path-effect62829-6-8-0"
|
||||||
|
is_visible="true" />
|
||||||
|
<linearGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient62821-5-8-1"
|
||||||
|
id="linearGradient62864-0-3-1"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
gradientTransform="matrix(1.3066667,0,0,1,-197.64667,0)"
|
||||||
|
x1="702.58966"
|
||||||
|
y1="484.49405"
|
||||||
|
x2="702.58966"
|
||||||
|
y2="507.42715" />
|
||||||
|
<linearGradient
|
||||||
|
id="linearGradient62821-5-8-1">
|
||||||
|
<stop
|
||||||
|
id="stop62823-2-4-2"
|
||||||
|
offset="0"
|
||||||
|
style="stop-color:#d1d3d1;stop-opacity:1;" />
|
||||||
|
<stop
|
||||||
|
id="stop62825-3-8-9"
|
||||||
|
offset="1"
|
||||||
|
style="stop-color:#ebebeb;stop-opacity:1;" />
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient
|
||||||
|
y2="507.42715"
|
||||||
|
x2="702.58966"
|
||||||
|
y1="484.49405"
|
||||||
|
x1="702.58966"
|
||||||
|
gradientTransform="matrix(1.3066667,0,0,1,-841.64667,-483)"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
id="linearGradient11647"
|
||||||
|
xlink:href="#linearGradient62821-5-8-1"
|
||||||
|
inkscape:collect="always" />
|
||||||
|
</defs>
|
||||||
|
<sodipodi:namedview
|
||||||
|
id="base"
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#666666"
|
||||||
|
borderopacity="1.0"
|
||||||
|
inkscape:pageopacity="0.0"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:zoom="1"
|
||||||
|
inkscape:cx="50.925774"
|
||||||
|
inkscape:cy="11.296867"
|
||||||
|
inkscape:document-units="px"
|
||||||
|
inkscape:current-layer="g62929"
|
||||||
|
showgrid="false"
|
||||||
|
borderlayer="true"
|
||||||
|
inkscape:showpageshadow="false"
|
||||||
|
inkscape:snap-nodes="false"
|
||||||
|
inkscape:snap-bbox="true"
|
||||||
|
inkscape:bbox-paths="true"
|
||||||
|
inkscape:snap-others="false"
|
||||||
|
inkscape:window-width="2560"
|
||||||
|
inkscape:window-height="1375"
|
||||||
|
inkscape:window-x="1600"
|
||||||
|
inkscape:window-y="28"
|
||||||
|
inkscape:window-maximized="1"
|
||||||
|
showborder="false">
|
||||||
|
<inkscape:grid
|
||||||
|
type="xygrid"
|
||||||
|
id="grid11512" />
|
||||||
|
</sodipodi:namedview>
|
||||||
|
<metadata
|
||||||
|
id="metadata10870">
|
||||||
|
<rdf:RDF>
|
||||||
|
<cc:Work
|
||||||
|
rdf:about="">
|
||||||
|
<dc:format>image/svg+xml</dc:format>
|
||||||
|
<dc:type
|
||||||
|
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||||
|
<dc:title></dc:title>
|
||||||
|
</cc:Work>
|
||||||
|
</rdf:RDF>
|
||||||
|
</metadata>
|
||||||
|
<g
|
||||||
|
inkscape:label="Layer 1"
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer1"
|
||||||
|
transform="translate(0,-1030.3622)">
|
||||||
|
<g
|
||||||
|
inkscape:export-ydpi="90"
|
||||||
|
inkscape:export-xdpi="90"
|
||||||
|
inkscape:export-filename="/home/lapo.fedora/SparkleShare/gnome-mockups/system-settings/network/network-panel-summary.png"
|
||||||
|
style="display:inline"
|
||||||
|
id="g62929"
|
||||||
|
transform="translate(-643.91421,517.29894)">
|
||||||
|
<g
|
||||||
|
transform="translate(0,30)"
|
||||||
|
id="g62931">
|
||||||
|
<rect
|
||||||
|
style="fill:url(#linearGradient62864-0-3-1);fill-opacity:1;stroke:#a6a8a6;stroke-width:1;stroke-linecap:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;color:#000000;color-interpolation:sRGB;color-interpolation-filters:linearRGB;fill-rule:nonzero;stroke-linejoin:miter;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;clip-rule:nonzero"
|
||||||
|
id="rect62935"
|
||||||
|
width="63.856125"
|
||||||
|
height="21.093594"
|
||||||
|
x="644.5"
|
||||||
|
y="483.5"
|
||||||
|
rx="2"
|
||||||
|
ry="2" />
|
||||||
|
<rect
|
||||||
|
style="fill:url(#linearGradient62981-1-1);fill-opacity:1;stroke:#777b7a;stroke-width:1;stroke-linecap:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline"
|
||||||
|
id="rect62937"
|
||||||
|
width="29.97398"
|
||||||
|
height="17.022524"
|
||||||
|
x="646.55896"
|
||||||
|
y="485.61429"
|
||||||
|
rx="1"
|
||||||
|
ry="1" />
|
||||||
|
<g
|
||||||
|
transform="translate(-38.048674,-1.9445437)"
|
||||||
|
id="g62939">
|
||||||
|
<rect
|
||||||
|
ry="1"
|
||||||
|
rx="1"
|
||||||
|
y="492"
|
||||||
|
x="695"
|
||||||
|
height="8"
|
||||||
|
width="2"
|
||||||
|
id="rect62941"
|
||||||
|
style="fill:#e8e8e5;fill-opacity:1;stroke:none;display:inline" />
|
||||||
|
<rect
|
||||||
|
ry="1"
|
||||||
|
rx="1"
|
||||||
|
y="492"
|
||||||
|
x="699"
|
||||||
|
height="8"
|
||||||
|
width="2"
|
||||||
|
id="rect62943"
|
||||||
|
style="fill:#e8e8e5;fill-opacity:1;stroke:none;display:inline" />
|
||||||
|
<rect
|
||||||
|
ry="1"
|
||||||
|
rx="1"
|
||||||
|
y="492"
|
||||||
|
x="703"
|
||||||
|
height="8"
|
||||||
|
width="2"
|
||||||
|
id="rect62945"
|
||||||
|
style="fill:#e8e8e5;fill-opacity:1;stroke:none;display:inline" />
|
||||||
|
</g>
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
inkscape:original-d="m 647.78624,486.57192 27.94632,0"
|
||||||
|
inkscape:path-effect="#path-effect62989-8-0"
|
||||||
|
id="path62947"
|
||||||
|
d="m 647.78624,486.57192 27.94632,0"
|
||||||
|
style="fill:none;stroke:#ffffff;stroke-width:1px;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1" />
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
id="g11665"
|
||||||
|
transform="matrix(0.78906097,0,0,0.78906097,167.78814,111.57844)">
|
||||||
|
<text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-size:13.14816952px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;display:inline;font-family:Cantarell;-inkscape-font-specification:Cantarell Bold"
|
||||||
|
x="644.02277"
|
||||||
|
y="534.94739"
|
||||||
|
id="text62949-7"
|
||||||
|
sodipodi:linespacing="125%"
|
||||||
|
transform="scale(1.0113976,0.98873084)"><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan62951-7"
|
||||||
|
x="644.02277"
|
||||||
|
y="534.94739">OFF</tspan></text>
|
||||||
|
<text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-size:12.69556618px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#2e3436;fill-opacity:1;stroke:none;font-family:Cantarell;-inkscape-font-specification:Cantarell Bold"
|
||||||
|
x="644.46393"
|
||||||
|
y="533.87158"
|
||||||
|
id="text62949"
|
||||||
|
sodipodi:linespacing="125%"
|
||||||
|
transform="scale(1.0113976,0.98873084)"><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan62951"
|
||||||
|
x="644.46393"
|
||||||
|
y="533.87158">OFF</tspan></text>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 8.5 KiB |
@@ -0,0 +1,199 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
|
||||||
|
<svg
|
||||||
|
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||||
|
xmlns:cc="http://creativecommons.org/ns#"
|
||||||
|
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
width="65"
|
||||||
|
height="22"
|
||||||
|
id="svg10865"
|
||||||
|
version="1.1"
|
||||||
|
inkscape:version="0.48.4 r9939"
|
||||||
|
sodipodi:docname="toggle-on-us.svg">
|
||||||
|
<defs
|
||||||
|
id="defs10867">
|
||||||
|
<linearGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient62991-9-6"
|
||||||
|
id="linearGradient62979-8-1"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
gradientTransform="matrix(1.3066667,0,0,1,-197.64667,0)"
|
||||||
|
x1="702.58966"
|
||||||
|
y1="484.49405"
|
||||||
|
x2="702.58966"
|
||||||
|
y2="507.42715" />
|
||||||
|
<linearGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
id="linearGradient62991-9-6">
|
||||||
|
<stop
|
||||||
|
style="stop-color:#589fe9;stop-opacity:1"
|
||||||
|
offset="0"
|
||||||
|
id="stop62993-6-9" />
|
||||||
|
<stop
|
||||||
|
style="stop-color:#a3cefe;stop-opacity:1"
|
||||||
|
offset="1"
|
||||||
|
id="stop62995-1-6" />
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient62852-6-5"
|
||||||
|
id="linearGradient62981-1-1"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
gradientTransform="matrix(0.85639946,0,0,0.81059641,57.747905,92.132229)"
|
||||||
|
x1="740"
|
||||||
|
y1="486.10501"
|
||||||
|
x2="740"
|
||||||
|
y2="505.3204" />
|
||||||
|
<linearGradient
|
||||||
|
id="linearGradient62852-6-5">
|
||||||
|
<stop
|
||||||
|
id="stop62854-6-7"
|
||||||
|
offset="0"
|
||||||
|
style="stop-color:#ffffff;stop-opacity:1" />
|
||||||
|
<stop
|
||||||
|
style="stop-color:#eeeeec;stop-opacity:1"
|
||||||
|
offset="0.97726452"
|
||||||
|
id="stop62858-8-0" />
|
||||||
|
<stop
|
||||||
|
id="stop62860-5-3"
|
||||||
|
offset="1"
|
||||||
|
style="stop-color:#f5f5f4;stop-opacity:1" />
|
||||||
|
</linearGradient>
|
||||||
|
<inkscape:path-effect
|
||||||
|
is_visible="true"
|
||||||
|
id="path-effect62989-8-0"
|
||||||
|
effect="spiro" />
|
||||||
|
</defs>
|
||||||
|
<sodipodi:namedview
|
||||||
|
id="base"
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#666666"
|
||||||
|
borderopacity="1.0"
|
||||||
|
inkscape:pageopacity="0.0"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:zoom="1"
|
||||||
|
inkscape:cx="14.199007"
|
||||||
|
inkscape:cy="11.127758"
|
||||||
|
inkscape:document-units="px"
|
||||||
|
inkscape:current-layer="g62929"
|
||||||
|
showgrid="false"
|
||||||
|
borderlayer="true"
|
||||||
|
inkscape:showpageshadow="false"
|
||||||
|
inkscape:snap-nodes="false"
|
||||||
|
inkscape:snap-bbox="true"
|
||||||
|
inkscape:bbox-paths="true"
|
||||||
|
inkscape:snap-others="false"
|
||||||
|
inkscape:window-width="2560"
|
||||||
|
inkscape:window-height="1380"
|
||||||
|
inkscape:window-x="1600"
|
||||||
|
inkscape:window-y="28"
|
||||||
|
inkscape:window-maximized="1"
|
||||||
|
showborder="false">
|
||||||
|
<inkscape:grid
|
||||||
|
type="xygrid"
|
||||||
|
id="grid11512" />
|
||||||
|
</sodipodi:namedview>
|
||||||
|
<metadata
|
||||||
|
id="metadata10870">
|
||||||
|
<rdf:RDF>
|
||||||
|
<cc:Work
|
||||||
|
rdf:about="">
|
||||||
|
<dc:format>image/svg+xml</dc:format>
|
||||||
|
<dc:type
|
||||||
|
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||||
|
<dc:title></dc:title>
|
||||||
|
</cc:Work>
|
||||||
|
</rdf:RDF>
|
||||||
|
</metadata>
|
||||||
|
<g
|
||||||
|
inkscape:label="Layer 1"
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer1"
|
||||||
|
transform="translate(0,-1030.3622)">
|
||||||
|
<g
|
||||||
|
inkscape:export-ydpi="90"
|
||||||
|
inkscape:export-xdpi="90"
|
||||||
|
inkscape:export-filename="/home/lapo.fedora/SparkleShare/gnome-mockups/system-settings/network/network-panel-summary.png"
|
||||||
|
style="display:inline"
|
||||||
|
id="g62929"
|
||||||
|
transform="translate(-643.91421,517.29894)">
|
||||||
|
<g
|
||||||
|
transform="translate(0,30)"
|
||||||
|
id="g62931">
|
||||||
|
<rect
|
||||||
|
style="fill:url(#linearGradient62979-8-1);fill-opacity:1;stroke:#1a71cc;stroke-width:1;stroke-linecap:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||||
|
id="rect62935"
|
||||||
|
width="63.856125"
|
||||||
|
height="21.093594"
|
||||||
|
x="644.5"
|
||||||
|
y="483.5"
|
||||||
|
rx="2"
|
||||||
|
ry="2" />
|
||||||
|
<rect
|
||||||
|
style="fill:url(#linearGradient62981-1-1);fill-opacity:1;stroke:#777b7a;stroke-width:1;stroke-linecap:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline"
|
||||||
|
id="rect62937"
|
||||||
|
width="29.97398"
|
||||||
|
height="17.022524"
|
||||||
|
x="676.49646"
|
||||||
|
y="485.67679"
|
||||||
|
rx="1"
|
||||||
|
ry="1" />
|
||||||
|
<g
|
||||||
|
transform="translate(-7.9861743,-1.9445437)"
|
||||||
|
id="g62939">
|
||||||
|
<rect
|
||||||
|
ry="1"
|
||||||
|
rx="1"
|
||||||
|
y="492"
|
||||||
|
x="695"
|
||||||
|
height="8"
|
||||||
|
width="2"
|
||||||
|
id="rect62941"
|
||||||
|
style="fill:#e8e8e5;fill-opacity:1;stroke:none;display:inline" />
|
||||||
|
<rect
|
||||||
|
ry="1"
|
||||||
|
rx="1"
|
||||||
|
y="492"
|
||||||
|
x="699"
|
||||||
|
height="8"
|
||||||
|
width="2"
|
||||||
|
id="rect62943"
|
||||||
|
style="fill:#e8e8e5;fill-opacity:1;stroke:none;display:inline" />
|
||||||
|
<rect
|
||||||
|
ry="1"
|
||||||
|
rx="1"
|
||||||
|
y="492"
|
||||||
|
x="703"
|
||||||
|
height="8"
|
||||||
|
width="2"
|
||||||
|
id="rect62945"
|
||||||
|
style="fill:#e8e8e5;fill-opacity:1;stroke:none;display:inline" />
|
||||||
|
</g>
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
inkscape:original-d="m 677.59874,486.57192 27.94632,0"
|
||||||
|
inkscape:path-effect="#path-effect62989-8-0"
|
||||||
|
id="path62947"
|
||||||
|
d="m 677.59874,486.57192 27.94632,0"
|
||||||
|
style="fill:none;stroke:#ffffff;stroke-width:1px;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1" />
|
||||||
|
</g>
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path4444"
|
||||||
|
d="m 661.91421,522.09451 0,7"
|
||||||
|
style="fill:none;stroke:#1a71cc;stroke-width:2;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;color:#000000;fill-opacity:1;fill-rule:nonzero;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
|
||||||
|
<path
|
||||||
|
style="fill:none;stroke:#ffffff;stroke-width:2;stroke-linecap:square;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
|
||||||
|
d="m 18,7.96875 0,7"
|
||||||
|
id="path3922"
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
transform="translate(643.91421,513.06326)" />
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 6.5 KiB |
@@ -0,0 +1,212 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
|
||||||
|
<svg
|
||||||
|
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||||
|
xmlns:cc="http://creativecommons.org/ns#"
|
||||||
|
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
width="65"
|
||||||
|
height="22"
|
||||||
|
id="svg10865"
|
||||||
|
version="1.1"
|
||||||
|
inkscape:version="0.48+devel r12050"
|
||||||
|
sodipodi:docname="toggle-on-us.svg">
|
||||||
|
<defs
|
||||||
|
id="defs10867">
|
||||||
|
<linearGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient62991-9-6"
|
||||||
|
id="linearGradient62979-8-1"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
gradientTransform="matrix(1.3066667,0,0,1,-197.64667,0)"
|
||||||
|
x1="702.58966"
|
||||||
|
y1="484.49405"
|
||||||
|
x2="702.58966"
|
||||||
|
y2="507.42715" />
|
||||||
|
<linearGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
id="linearGradient62991-9-6">
|
||||||
|
<stop
|
||||||
|
style="stop-color:#589fe9;stop-opacity:1"
|
||||||
|
offset="0"
|
||||||
|
id="stop62993-6-9" />
|
||||||
|
<stop
|
||||||
|
style="stop-color:#a3cefe;stop-opacity:1"
|
||||||
|
offset="1"
|
||||||
|
id="stop62995-1-6" />
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient62852-6-5"
|
||||||
|
id="linearGradient62981-1-1"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
gradientTransform="matrix(0.85639946,0,0,0.81059641,57.747905,92.132229)"
|
||||||
|
x1="740"
|
||||||
|
y1="486.10501"
|
||||||
|
x2="740"
|
||||||
|
y2="505.3204" />
|
||||||
|
<linearGradient
|
||||||
|
id="linearGradient62852-6-5">
|
||||||
|
<stop
|
||||||
|
id="stop62854-6-7"
|
||||||
|
offset="0"
|
||||||
|
style="stop-color:#ffffff;stop-opacity:1" />
|
||||||
|
<stop
|
||||||
|
style="stop-color:#eeeeec;stop-opacity:1"
|
||||||
|
offset="0.97726452"
|
||||||
|
id="stop62858-8-0" />
|
||||||
|
<stop
|
||||||
|
id="stop62860-5-3"
|
||||||
|
offset="1"
|
||||||
|
style="stop-color:#f5f5f4;stop-opacity:1" />
|
||||||
|
</linearGradient>
|
||||||
|
<inkscape:path-effect
|
||||||
|
is_visible="true"
|
||||||
|
id="path-effect62989-8-0"
|
||||||
|
effect="spiro" />
|
||||||
|
</defs>
|
||||||
|
<sodipodi:namedview
|
||||||
|
id="base"
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#666666"
|
||||||
|
borderopacity="1.0"
|
||||||
|
inkscape:pageopacity="0.0"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:zoom="1"
|
||||||
|
inkscape:cx="8.2018252"
|
||||||
|
inkscape:cy="8.0650495"
|
||||||
|
inkscape:document-units="px"
|
||||||
|
inkscape:current-layer="g62929"
|
||||||
|
showgrid="false"
|
||||||
|
borderlayer="true"
|
||||||
|
inkscape:showpageshadow="false"
|
||||||
|
inkscape:snap-nodes="false"
|
||||||
|
inkscape:snap-bbox="true"
|
||||||
|
inkscape:bbox-paths="true"
|
||||||
|
inkscape:snap-others="false"
|
||||||
|
inkscape:window-width="2560"
|
||||||
|
inkscape:window-height="1375"
|
||||||
|
inkscape:window-x="1600"
|
||||||
|
inkscape:window-y="28"
|
||||||
|
inkscape:window-maximized="1"
|
||||||
|
showborder="false">
|
||||||
|
<inkscape:grid
|
||||||
|
type="xygrid"
|
||||||
|
id="grid11512" />
|
||||||
|
</sodipodi:namedview>
|
||||||
|
<metadata
|
||||||
|
id="metadata10870">
|
||||||
|
<rdf:RDF>
|
||||||
|
<cc:Work
|
||||||
|
rdf:about="">
|
||||||
|
<dc:format>image/svg+xml</dc:format>
|
||||||
|
<dc:type
|
||||||
|
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||||
|
<dc:title />
|
||||||
|
</cc:Work>
|
||||||
|
</rdf:RDF>
|
||||||
|
</metadata>
|
||||||
|
<g
|
||||||
|
inkscape:label="Layer 1"
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer1"
|
||||||
|
transform="translate(0,-1030.3622)">
|
||||||
|
<g
|
||||||
|
inkscape:export-ydpi="90"
|
||||||
|
inkscape:export-xdpi="90"
|
||||||
|
inkscape:export-filename="/home/lapo.fedora/SparkleShare/gnome-mockups/system-settings/network/network-panel-summary.png"
|
||||||
|
style="display:inline"
|
||||||
|
id="g62929"
|
||||||
|
transform="translate(-643.91421,517.29894)">
|
||||||
|
<g
|
||||||
|
transform="translate(0,30)"
|
||||||
|
id="g62931">
|
||||||
|
<rect
|
||||||
|
style="fill:url(#linearGradient62979-8-1);fill-opacity:1;stroke:#1a71cc;stroke-width:1;stroke-linecap:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||||
|
id="rect62935"
|
||||||
|
width="63.856125"
|
||||||
|
height="21.093594"
|
||||||
|
x="644.5"
|
||||||
|
y="483.5"
|
||||||
|
rx="2"
|
||||||
|
ry="2" />
|
||||||
|
<rect
|
||||||
|
style="fill:url(#linearGradient62981-1-1);fill-opacity:1;stroke:#777b7a;stroke-width:1;stroke-linecap:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline"
|
||||||
|
id="rect62937"
|
||||||
|
width="29.97398"
|
||||||
|
height="17.022524"
|
||||||
|
x="676.49646"
|
||||||
|
y="485.67679"
|
||||||
|
rx="1"
|
||||||
|
ry="1" />
|
||||||
|
<g
|
||||||
|
transform="translate(-7.9861743,-1.9445437)"
|
||||||
|
id="g62939">
|
||||||
|
<rect
|
||||||
|
ry="1"
|
||||||
|
rx="1"
|
||||||
|
y="492"
|
||||||
|
x="695"
|
||||||
|
height="8"
|
||||||
|
width="2"
|
||||||
|
id="rect62941"
|
||||||
|
style="fill:#e8e8e5;fill-opacity:1;stroke:none;display:inline" />
|
||||||
|
<rect
|
||||||
|
ry="1"
|
||||||
|
rx="1"
|
||||||
|
y="492"
|
||||||
|
x="699"
|
||||||
|
height="8"
|
||||||
|
width="2"
|
||||||
|
id="rect62943"
|
||||||
|
style="fill:#e8e8e5;fill-opacity:1;stroke:none;display:inline" />
|
||||||
|
<rect
|
||||||
|
ry="1"
|
||||||
|
rx="1"
|
||||||
|
y="492"
|
||||||
|
x="703"
|
||||||
|
height="8"
|
||||||
|
width="2"
|
||||||
|
id="rect62945"
|
||||||
|
style="fill:#e8e8e5;fill-opacity:1;stroke:none;display:inline" />
|
||||||
|
</g>
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
inkscape:original-d="m 677.59874,486.57192 27.94632,0"
|
||||||
|
inkscape:path-effect="#path-effect62989-8-0"
|
||||||
|
id="path62947"
|
||||||
|
d="m 677.59874,486.57192 27.94632,0"
|
||||||
|
style="fill:none;stroke:#ffffff;stroke-width:1px;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1" />
|
||||||
|
</g>
|
||||||
|
<text
|
||||||
|
transform="scale(1.0113976,0.98873084)"
|
||||||
|
sodipodi:linespacing="125%"
|
||||||
|
id="text62949-7"
|
||||||
|
y="534.96918"
|
||||||
|
x="646.71399"
|
||||||
|
style="font-size:10.01104736px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#1a71cc;fill-opacity:1;stroke:none;display:inline;font-family:Cantarell;-inkscape-font-specification:Cantarell Bold"
|
||||||
|
xml:space="preserve"><tspan
|
||||||
|
y="534.96918"
|
||||||
|
x="646.71399"
|
||||||
|
id="tspan62951-7"
|
||||||
|
sodipodi:role="line">ON</tspan></text>
|
||||||
|
<text
|
||||||
|
transform="scale(1.0113976,0.98873084)"
|
||||||
|
sodipodi:linespacing="125%"
|
||||||
|
id="text62949"
|
||||||
|
y="533.94482"
|
||||||
|
x="646.71399"
|
||||||
|
style="font-size:10.01104736px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Cantarell;-inkscape-font-specification:Cantarell Bold"
|
||||||
|
xml:space="preserve"><tspan
|
||||||
|
y="533.94482"
|
||||||
|
x="646.71399"
|
||||||
|
id="tspan62951"
|
||||||
|
sodipodi:role="line">ON</tspan></text>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 6.9 KiB |
@@ -0,0 +1,10 @@
|
|||||||
|
{
|
||||||
|
"parentMode": "user",
|
||||||
|
"stylesheetName": "gnome-classic.css",
|
||||||
|
"enabledExtensions": [@CLASSIC_EXTENSIONS@],
|
||||||
|
"panel": { "left": ["activities", "appMenu"],
|
||||||
|
"center": [],
|
||||||
|
"right": ["a11y", "keyboard", "volume", "bluetooth",
|
||||||
|
"network", "battery", "dateMenu", "userMenu"]
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,229 @@
|
|||||||
|
@import url("gnome-shell.css");
|
||||||
|
|
||||||
|
/* FIXME:
|
||||||
|
- white edge highlight with text-shadow and icon-shadow for panel-button
|
||||||
|
- better shading of the panel (dark 5%) - impossible without multipoint gradients, image-bg is a hack
|
||||||
|
*/
|
||||||
|
|
||||||
|
#panel {
|
||||||
|
background-color: #e9e9e9 !important;
|
||||||
|
background-gradient-direction: vertical;
|
||||||
|
background-gradient-end: #d0d0d0;
|
||||||
|
border-top-color: #666; /* we don't support non-uniform border-colors and
|
||||||
|
use the top border color for any border, so we
|
||||||
|
need to set it even if all we want is a bottom
|
||||||
|
border */
|
||||||
|
border-bottom: 1px solid #666;
|
||||||
|
app-icon-bottom-clip: 0px;
|
||||||
|
|
||||||
|
/* hrm, still no multipoint gradients
|
||||||
|
background-image: linear-gradient(left, rgba(255, 255, 255, 0), rgba(255, 255, 255, 1) 50%, rgba(255, 255, 255, 0)) !important;*/
|
||||||
|
}
|
||||||
|
|
||||||
|
#panel:overview {
|
||||||
|
background-color: #000 !important;
|
||||||
|
background-gradient-end: #000 !important;
|
||||||
|
border-top-color: #000;
|
||||||
|
border-bottom: 1px solid #000 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
#panel.lock-screen {
|
||||||
|
background-color: rgba(0,0,0,0.3) !important;
|
||||||
|
background-gradient-end: rgba(0,0,0,0.3) !important;
|
||||||
|
border-top-color: transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
#panel.unlock-screen {
|
||||||
|
background-color: transparent !important;
|
||||||
|
background-gradient-end: transparent !important;
|
||||||
|
border-top-color: transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* TOP BAR */
|
||||||
|
|
||||||
|
.panel-corner,
|
||||||
|
.panel-corner:active,
|
||||||
|
.panel-corner:overview,
|
||||||
|
.panel-corner:focus {
|
||||||
|
-panel-corner-radius: 0 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.panel-button {
|
||||||
|
color: #555 !important;
|
||||||
|
-natural-hpadding: 6px !important;
|
||||||
|
-minimum-hpadding: 3px !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
#panel:overview .panel-button,
|
||||||
|
#panel.lock-screen .panel-button,
|
||||||
|
#panel.unlock-screen .panel-button {
|
||||||
|
color: #ccc !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.panel-button:hover {
|
||||||
|
color: #000 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
#panel:overview .panel-button:hover,
|
||||||
|
#panel:overview .panel-button:active {
|
||||||
|
color: white !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.panel-button > .system-status-icon {
|
||||||
|
icon-shadow: #fff 0 1px 0 !important; /* FIXME */
|
||||||
|
}
|
||||||
|
|
||||||
|
.panel-button:hover,
|
||||||
|
.panel-button:active,
|
||||||
|
.panel-button:overview,
|
||||||
|
.panel-button:focus {
|
||||||
|
text-shadow: 0 0 0 transparent !important; /* FIXME: why can't I do none ? */
|
||||||
|
}
|
||||||
|
|
||||||
|
.panel-button:active,
|
||||||
|
.panel-button:overview,
|
||||||
|
.panel-button:focus {
|
||||||
|
background-color: #4a90d9 !important; /* FIXME */
|
||||||
|
color: #fff !important;
|
||||||
|
border: none !important;
|
||||||
|
border-image: none !important;
|
||||||
|
background-image: none !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
#panelUserMenu {
|
||||||
|
padding: 0 10px 0 10px !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
#appMenu {
|
||||||
|
text-shadow: 0 0 0 transparent !important;
|
||||||
|
spinner-image: url("classic-process-working.svg");
|
||||||
|
}
|
||||||
|
|
||||||
|
/* used for the app menu header only */
|
||||||
|
.label-shadow {
|
||||||
|
color: rgba(0,0,0,0.5);
|
||||||
|
}
|
||||||
|
|
||||||
|
.label-shadow {
|
||||||
|
color: rgba(255,255,255,.5) !important;
|
||||||
|
}
|
||||||
|
.panel-button:active .label-shadow,
|
||||||
|
.panel-button:focus .label-shadow {
|
||||||
|
color: rgba(0,0,0,.5) !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.popup-menu-boxpointer {
|
||||||
|
-arrow-background-color: #e9e9e9 !important;
|
||||||
|
-arrow-border-width: 1px !important;
|
||||||
|
-arrow-border-color: #aaa !important;
|
||||||
|
-arrow-border-radius: 3px !important;
|
||||||
|
color: #000 !important;
|
||||||
|
-arrow-base: 11px !important;
|
||||||
|
-arrow-rise: 5px !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.popup-combo-menu {
|
||||||
|
background-color: #e9e9e9 !important;
|
||||||
|
border: 1px solid #aaa !important;
|
||||||
|
color: #000 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.popup-menu-item:active {
|
||||||
|
background-color: #4a90d9 !important;
|
||||||
|
color: #fff !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.popup-menu-item:insensitive {
|
||||||
|
color: #888;
|
||||||
|
}
|
||||||
|
|
||||||
|
.popup-separator-menu-item {
|
||||||
|
-gradient-height: 1px;
|
||||||
|
-gradient-start: rgba(0,0,0,0.0);
|
||||||
|
-gradient-end: rgba(0,0,0,0.15);
|
||||||
|
-margin-horizontal: 24px;
|
||||||
|
height: 1px;
|
||||||
|
padding: 8px 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.popup-subtitle-menu-item, .popup-subtitle-menu-item:insensitive {
|
||||||
|
color: #000;
|
||||||
|
}
|
||||||
|
|
||||||
|
.popup-submenu-menu-item:open {
|
||||||
|
background-color: #888;
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
|
||||||
|
.popup-sub-menu {
|
||||||
|
background-gradient-start: #ddd;
|
||||||
|
background-gradient-end: #dfdfdf;
|
||||||
|
background-gradient-direction: vertical;
|
||||||
|
box-shadow: inset 0px 1px 3px rgba(0,0,0,0.4);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* CALENDAR */
|
||||||
|
|
||||||
|
.calendar {}
|
||||||
|
.calendar-month-label {
|
||||||
|
color: #333 !important;
|
||||||
|
}
|
||||||
|
.datemenu-date-label,
|
||||||
|
.events-day-header {
|
||||||
|
color: #666 !important;
|
||||||
|
}
|
||||||
|
.calendar-day-base:active {
|
||||||
|
color: #fff !important;
|
||||||
|
background-color: #4a90d9 !important;
|
||||||
|
background-image: none !important;
|
||||||
|
border-image: none !important;
|
||||||
|
}
|
||||||
|
.calendar-today {
|
||||||
|
background-color: #4a90d9 !important;
|
||||||
|
background-image: none !important;
|
||||||
|
border-image: none !important;
|
||||||
|
}
|
||||||
|
.calendar-day-base {
|
||||||
|
color: #666 !important;
|
||||||
|
}
|
||||||
|
.calendar-day-base:hover {
|
||||||
|
background-color: #666 !important;
|
||||||
|
color: #fff !important;
|
||||||
|
}
|
||||||
|
.calendar-nonwork-day {
|
||||||
|
color: #999 !important;
|
||||||
|
}
|
||||||
|
.events-day-dayname,
|
||||||
|
.events-day-time {
|
||||||
|
color: #666 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* VOLUME SLIDER */
|
||||||
|
|
||||||
|
.popup-slider-menu-item {
|
||||||
|
-slider-background-color: #e9e9e9;
|
||||||
|
-slider-border-color: #999;
|
||||||
|
-slider-active-background-color: #76b0ec;
|
||||||
|
-slider-active-border-color: #1f6dbc;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ON OFF switch */
|
||||||
|
|
||||||
|
.toggle-switch-us {
|
||||||
|
background-image: url("classic-toggle-off-us.svg");
|
||||||
|
background-size: contain;
|
||||||
|
}
|
||||||
|
.toggle-switch-us:checked {
|
||||||
|
background-image: url("classic-toggle-on-us.svg");
|
||||||
|
background-size: contain;
|
||||||
|
}
|
||||||
|
|
||||||
|
.toggle-switch-intl {
|
||||||
|
background-image: url("classic-toggle-off-intl.svg");
|
||||||
|
background-size: contain;
|
||||||
|
}
|
||||||
|
.toggle-switch-intl:checked {
|
||||||
|
background-image: url("classic-toggle-on-intl.svg");
|
||||||
|
background-size: contain;
|
||||||
|
}
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
[Desktop Entry]
|
||||||
|
_Name=GNOME Classic
|
||||||
|
_Comment=This session logs you into GNOME Classic
|
||||||
|
Exec=gnome-session --session gnome-classic
|
||||||
|
TryExec=gnome-session
|
||||||
|
Icon=
|
||||||
|
Type=Application
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
[GNOME Session]
|
||||||
|
_Name=GNOME Classic
|
||||||
|
RequiredComponents=gnome-shell-classic;gnome-settings-daemon;nautilus-classic;
|
||||||
|
IsRunnableHelper=@libexecdir@/gnome-session-check-accelerated
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
[Desktop Entry]
|
||||||
|
Type=Application
|
||||||
|
_Name=GNOME Shell Classic
|
||||||
|
_Comment=Window management and application launching
|
||||||
|
Exec=@bindir@/gnome-shell --mode=classic
|
||||||
|
TryExec=@bindir@/gnome-shell
|
||||||
|
X-GNOME-Bugzilla-Bugzilla=GNOME
|
||||||
|
X-GNOME-Bugzilla-Product=gnome-shell
|
||||||
|
X-GNOME-Bugzilla-Component=general
|
||||||
|
X-GNOME-Bugzilla-Version=@VERSION@
|
||||||
|
Categories=GNOME;GTK;Core;
|
||||||
|
OnlyShowIn=GNOME;
|
||||||
|
NoDisplay=true
|
||||||
|
X-GNOME-Autostart-Phase=WindowManager
|
||||||
|
X-GNOME-Provides=panel;windowmanager;
|
||||||
|
X-GNOME-Autostart-Notify=true
|
||||||
|
X-GNOME-AutoRestart=false
|
||||||
+1
-1
@@ -11,7 +11,7 @@ metadata.json: metadata.json.in $(top_builddir)/config.status
|
|||||||
-e "s|[@]uuid@|$(uuid)|" \
|
-e "s|[@]uuid@|$(uuid)|" \
|
||||||
-e "s|[@]gschemaname@|$(gschemaname)|" \
|
-e "s|[@]gschemaname@|$(gschemaname)|" \
|
||||||
-e "s|[@]gettext_domain@|$(GETTEXT_PACKAGE)|" \
|
-e "s|[@]gettext_domain@|$(GETTEXT_PACKAGE)|" \
|
||||||
-e "s|[@]shell_current@|$(PACKAGE_VERSION)|" \
|
-e "s|[@]shell_current@|$(SHELL_VERSION)|" \
|
||||||
-e "s|[@]url@|$(extensionurl)|" \
|
-e "s|[@]url@|$(extensionurl)|" \
|
||||||
$< > $@
|
$< > $@
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
EXTENSION_ID = alternate-tab
|
EXTENSION_ID = alternate-tab
|
||||||
|
|
||||||
EXTRA_MODULES = settings.js
|
EXTRA_MODULES = prefs.js
|
||||||
|
|
||||||
include ../../extension.mk
|
include ../../extension.mk
|
||||||
include ../../settings.mk
|
|
||||||
|
|||||||
@@ -1,487 +1,64 @@
|
|||||||
/* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */
|
/* -*- mode: js; js-basic-offset: 4; indent-tabs-mode: nil -*- */
|
||||||
|
|
||||||
/* most of the code is borrowed from
|
|
||||||
* > js/ui/altTab.js <
|
|
||||||
* of the gnome-shell source code
|
|
||||||
*/
|
|
||||||
|
|
||||||
const Clutter = imports.gi.Clutter;
|
const Clutter = imports.gi.Clutter;
|
||||||
const Gdk = imports.gi.Gdk;
|
|
||||||
const Gio = imports.gi.Gio;
|
|
||||||
const Gtk = imports.gi.Gtk;
|
|
||||||
const Lang = imports.lang;
|
const Lang = imports.lang;
|
||||||
const Mainloop = imports.mainloop;
|
|
||||||
const Meta = imports.gi.Meta;
|
const Meta = imports.gi.Meta;
|
||||||
const Shell = imports.gi.Shell;
|
const Shell = imports.gi.Shell;
|
||||||
const St = imports.gi.St;
|
|
||||||
|
|
||||||
const AltTab = imports.ui.altTab;
|
const AltTab = imports.ui.altTab;
|
||||||
const Main = imports.ui.main;
|
const Main = imports.ui.main;
|
||||||
const ModalDialog = imports.ui.modalDialog;
|
|
||||||
const Tweener = imports.ui.tweener;
|
|
||||||
const WindowManager = imports.ui.windowManager;
|
|
||||||
|
|
||||||
const Gettext = imports.gettext.domain('gnome-shell-extensions');
|
let injections = {};
|
||||||
const _ = Gettext.gettext;
|
|
||||||
const N_ = function(e) { return e };
|
|
||||||
|
|
||||||
const ExtensionUtils = imports.misc.extensionUtils;
|
|
||||||
const Me = ExtensionUtils.getCurrentExtension();
|
|
||||||
const Convenience = Me.imports.convenience;
|
|
||||||
const Settings = Me.imports.settings;
|
|
||||||
|
|
||||||
let settings;
|
|
||||||
|
|
||||||
const POPUP_DELAY_TIMEOUT = 150; // milliseconds
|
|
||||||
|
|
||||||
const SETTINGS_BEHAVIOUR_KEY = 'behaviour';
|
|
||||||
const SETTINGS_FIRST_TIME_KEY = 'first-time';
|
|
||||||
|
|
||||||
const AltTabPopupWorkspaceIcons = new Lang.Class({
|
|
||||||
Name: 'AlternateTab.AltTabPopupWorkspaceIcons',
|
|
||||||
Extends: AltTab.AltTabPopup,
|
|
||||||
|
|
||||||
_windowActivated : function(thumbnailList, n) { },
|
|
||||||
|
|
||||||
show : function(backward, binding, mask) {
|
|
||||||
let appSys = Shell.AppSystem.get_default();
|
|
||||||
let apps = appSys.get_running ();
|
|
||||||
|
|
||||||
if (!apps.length)
|
|
||||||
return false;
|
|
||||||
|
|
||||||
if (!Main.pushModal(this.actor)) {
|
|
||||||
// Probably someone else has a pointer grab, try again with keyboard only
|
|
||||||
if (!Main.pushModal(this.actor, global.get_current_time(), Meta.ModalOptions.POINTER_ALREADY_GRABBED)) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
this._haveModal = true;
|
|
||||||
this._modifierMask = AltTab.primaryModifier(mask);
|
|
||||||
|
|
||||||
this.actor.connect('key-press-event', Lang.bind(this, this._keyPressEvent));
|
|
||||||
this.actor.connect('key-release-event', Lang.bind(this, this._keyReleaseEvent));
|
|
||||||
|
|
||||||
this.actor.connect('button-press-event', Lang.bind(this, this._clickedOutside));
|
|
||||||
this.actor.connect('scroll-event', Lang.bind(this, this._onScroll));
|
|
||||||
|
|
||||||
this._appSwitcher = new WindowSwitcher(apps, this);
|
|
||||||
this.actor.add_actor(this._appSwitcher.actor);
|
|
||||||
this._appSwitcher.connect('item-activated', Lang.bind(this, this._appActivated));
|
|
||||||
this._appSwitcher.connect('item-entered', Lang.bind(this, this._appEntered));
|
|
||||||
|
|
||||||
this._appIcons = this._appSwitcher.icons;
|
|
||||||
|
|
||||||
// Need to force an allocation so we can figure out whether we
|
|
||||||
// need to scroll when selecting
|
|
||||||
this.actor.opacity = 0;
|
|
||||||
this.actor.show();
|
|
||||||
this.actor.get_allocation_box();
|
|
||||||
|
|
||||||
// Make the initial selection
|
|
||||||
if (binding == 'switch_group') {
|
|
||||||
//see AltTab.AltTabPopup.show function
|
|
||||||
//cached windows are always of length one, so select first app and the window
|
|
||||||
//the direction doesn't matter, so ignore backward
|
|
||||||
this._select(0, 0);
|
|
||||||
} else if (binding == 'switch_group_backward') {
|
|
||||||
this._select(0, 0);
|
|
||||||
} else if (binding == 'switch_windows_backward') {
|
|
||||||
this._select(this._appIcons.length - 1);
|
|
||||||
} else if (this._appIcons.length == 1) {
|
|
||||||
this._select(0);
|
|
||||||
} else if (backward) {
|
|
||||||
this._select(this._appIcons.length - 1);
|
|
||||||
} else {
|
|
||||||
this._select(1);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// There's a race condition; if the user released Alt before
|
|
||||||
// we got the grab, then we won't be notified. (See
|
|
||||||
// https://bugzilla.gnome.org/show_bug.cgi?id=596695 for
|
|
||||||
// details.) So we check now. (Have to do this after updating
|
|
||||||
// selection.)
|
|
||||||
let [x, y, mods] = global.get_pointer();
|
|
||||||
if (!(mods & this._modifierMask)) {
|
|
||||||
this._finish();
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
// We delay showing the popup so that fast Alt+Tab users aren't
|
|
||||||
// disturbed by the popup briefly flashing.
|
|
||||||
this._initialDelayTimeoutId = Mainloop.timeout_add(POPUP_DELAY_TIMEOUT,
|
|
||||||
Lang.bind(this, function () {
|
|
||||||
this.actor.opacity = 255;
|
|
||||||
this._initialDelayTimeoutId = 0;
|
|
||||||
}));
|
|
||||||
|
|
||||||
return true;
|
|
||||||
},
|
|
||||||
|
|
||||||
|
|
||||||
_finish : function() {
|
|
||||||
let app = this._appIcons[this._currentApp];
|
|
||||||
if (!app)
|
|
||||||
return;
|
|
||||||
|
|
||||||
Main.activateWindow(app.cachedWindows[0]);
|
|
||||||
this.destroy();
|
|
||||||
}
|
|
||||||
|
|
||||||
});
|
|
||||||
|
|
||||||
const AppIcon = new Lang.Class({
|
|
||||||
Name: 'AlternateTab.AppIcon',
|
|
||||||
Extends: AltTab.AppIcon,
|
|
||||||
|
|
||||||
_init: function(app, window) {
|
|
||||||
this.app = app;
|
|
||||||
|
|
||||||
this.cachedWindows = [];
|
|
||||||
this.cachedWindows.push(window);
|
|
||||||
|
|
||||||
this.actor = new St.BoxLayout({ style_class: 'alt-tab-app',
|
|
||||||
vertical: true });
|
|
||||||
this.icon = null;
|
|
||||||
this._iconBin = new St.Bin({ x_fill: true, y_fill: true });
|
|
||||||
|
|
||||||
this.actor.add(this._iconBin, { x_fill: false, y_fill: false } );
|
|
||||||
|
|
||||||
let title = window.get_title();
|
|
||||||
if (title) {
|
|
||||||
this.label = new St.Label({ text: title });
|
|
||||||
let bin = new St.Bin({ x_align: St.Align.MIDDLE });
|
|
||||||
bin.add_actor(this.label);
|
|
||||||
this.actor.add(bin);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
this.label = new St.Label({ text: this.app.get_name() });
|
|
||||||
this.actor.add(this.label, { x_fill: false });
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
const WindowSwitcher = new Lang.Class({
|
|
||||||
Name: 'AlternateTab.WindowSwitcher',
|
|
||||||
Extends: AltTab.AppSwitcher,
|
|
||||||
|
|
||||||
_init : function(apps, altTabPopup) {
|
|
||||||
// Horrible HACK!
|
|
||||||
// We inherit from AltTab.AppSwitcher, but only chain up to
|
|
||||||
// AltTab.SwitcherList._init, to bypass AltTab.AppSwitcher._init
|
|
||||||
AltTab.SwitcherList.prototype._init.call(this, true);
|
|
||||||
|
|
||||||
// Construct the AppIcons, sort by time, add to the popup
|
|
||||||
let activeWorkspace = global.screen.get_active_workspace();
|
|
||||||
let workspaceIcons = [];
|
|
||||||
let otherIcons = [];
|
|
||||||
for (let i = 0; i < apps.length; i++) {
|
|
||||||
// Cache the window list now; we don't handle dynamic changes here,
|
|
||||||
// and we don't want to be continually retrieving it
|
|
||||||
let windows = apps[i].get_windows();
|
|
||||||
|
|
||||||
for(let j = 0; j < windows.length; j++) {
|
|
||||||
let appIcon = new AppIcon(apps[i], windows[j]);
|
|
||||||
if (this._isWindowOnWorkspace(windows[j], activeWorkspace)) {
|
|
||||||
workspaceIcons.push(appIcon);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
otherIcons.push(appIcon);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
workspaceIcons.sort(Lang.bind(this, this._sortAppIcon));
|
|
||||||
otherIcons.sort(Lang.bind(this, this._sortAppIcon));
|
|
||||||
|
|
||||||
if(otherIcons.length > 0) {
|
|
||||||
let mostRecentOtherIcon = otherIcons[0];
|
|
||||||
otherIcons = [];
|
|
||||||
otherIcons.push(mostRecentOtherIcon);
|
|
||||||
}
|
|
||||||
|
|
||||||
this.icons = [];
|
|
||||||
this._arrows = [];
|
|
||||||
for (let i = 0; i < workspaceIcons.length; i++)
|
|
||||||
this._addIcon(workspaceIcons[i]);
|
|
||||||
if (workspaceIcons.length > 0 && otherIcons.length > 0)
|
|
||||||
this.addSeparator();
|
|
||||||
for (let i = 0; i < otherIcons.length; i++)
|
|
||||||
this._addIcon(otherIcons[i]);
|
|
||||||
|
|
||||||
this._curApp = -1;
|
|
||||||
this._iconSize = 0;
|
|
||||||
this._altTabPopup = altTabPopup;
|
|
||||||
this._mouseTimeOutId = 0;
|
|
||||||
},
|
|
||||||
|
|
||||||
|
|
||||||
_isWindowOnWorkspace: function(w, workspace) {
|
|
||||||
if (w.get_workspace() == workspace)
|
|
||||||
return true;
|
|
||||||
return false;
|
|
||||||
},
|
|
||||||
|
|
||||||
_sortAppIcon : function(appIcon1, appIcon2) {
|
|
||||||
let t1 = appIcon1.cachedWindows[0].get_user_time();
|
|
||||||
let t2 = appIcon2.cachedWindows[0].get_user_time();
|
|
||||||
if (t2 > t1) return 1;
|
|
||||||
else return -1;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
const AltTabPopupAllThumbnails = new Lang.Class({
|
|
||||||
Name: 'AlternateTab.AltTabPopup.AllThumbnails',
|
|
||||||
Extends: AltTab.AltTabPopup,
|
|
||||||
|
|
||||||
_init : function() {
|
|
||||||
this.actor = new Shell.GenericContainer({ name: 'altTabPopup',
|
|
||||||
reactive: true });
|
|
||||||
|
|
||||||
this.actor.connect('get-preferred-width', Lang.bind(this, this._getPreferredWidth));
|
|
||||||
this.actor.connect('get-preferred-height', Lang.bind(this, this._getPreferredHeight));
|
|
||||||
this.actor.connect('allocate', Lang.bind(this, this._allocate));
|
|
||||||
|
|
||||||
this.actor.connect('destroy', Lang.bind(this, this._onDestroy));
|
|
||||||
|
|
||||||
this._haveModal = false;
|
|
||||||
|
|
||||||
this._currentApp = 0;
|
|
||||||
this._currentWindow = -1;
|
|
||||||
this._thumbnailTimeoutId = 0;
|
|
||||||
this._motionTimeoutId = 0;
|
|
||||||
|
|
||||||
|
|
||||||
// Initially disable hover so we ignore the enter-event if
|
|
||||||
// the switcher appears underneath the current pointer location
|
|
||||||
this._disableHover();
|
|
||||||
|
|
||||||
//this.show();
|
|
||||||
Main.uiGroup.add_actor(this.actor);
|
|
||||||
//this._select(0);
|
|
||||||
},
|
|
||||||
|
|
||||||
show : function(backward, binding, mask) {
|
|
||||||
let windows = global.get_window_actors();
|
|
||||||
|
|
||||||
let list = '';
|
|
||||||
let normal_windows= [];
|
|
||||||
let appIcons = [];
|
|
||||||
let appSys = Shell.AppSystem.get_default();
|
|
||||||
let apps = appSys.get_running();
|
|
||||||
|
|
||||||
for (let w = windows.length-1; w >= 0; w--) {
|
|
||||||
let win = windows[w].get_meta_window();
|
|
||||||
normal_windows.push(win);
|
|
||||||
}
|
|
||||||
normal_windows.sort(Lang.bind(this, this._sortWindows));
|
|
||||||
|
|
||||||
let win_on_top = normal_windows.shift();
|
|
||||||
normal_windows.push(win_on_top);
|
|
||||||
windows = normal_windows;
|
|
||||||
for (let w = 0; w < windows.length; w++) {
|
|
||||||
let win = windows[w];
|
|
||||||
|
|
||||||
let ap1 = null;
|
|
||||||
for (let i = 0;i < apps.length; i++) {
|
|
||||||
let app_wins = apps[i].get_windows();
|
|
||||||
for (let j = 0;j < app_wins.length; j++) {
|
|
||||||
if (app_wins[j] == win)
|
|
||||||
ap1 = new AltTab.AppIcon(apps[i]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (ap1 != null) {
|
|
||||||
ap1.cachedWindows = [win];
|
|
||||||
appIcons.push(ap1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!windows.length) {
|
|
||||||
this.destroy();
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!Main.pushModal(this.actor)) {
|
|
||||||
// Probably someone else has a pointer grab, try again with keyboard only
|
|
||||||
if (!Main.pushModal(this.actor, global.get_current_time(), Meta.ModalOptions.POINTER_ALREADY_GRABBED)) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
this._haveModal = true;
|
|
||||||
this._modifierMask = AltTab.primaryModifier(mask);
|
|
||||||
|
|
||||||
this.actor.connect('key-press-event', Lang.bind(this, this._keyPressEvent));
|
|
||||||
this.actor.connect('key-release-event', Lang.bind(this, this._keyReleaseEvent));
|
|
||||||
|
|
||||||
this.actor.connect('button-press-event', Lang.bind(this, this._clickedOutside));
|
|
||||||
this.actor.connect('scroll-event', Lang.bind(this, this._onScroll));
|
|
||||||
|
|
||||||
this._appSwitcher = new WindowList(windows);
|
|
||||||
this._appSwitcher._altTabPopup=this;
|
|
||||||
this.actor.add_actor(this._appSwitcher.actor);
|
|
||||||
this._appSwitcher.connect('item-activated', Lang.bind(this, this._appActivated));
|
|
||||||
this._appSwitcher.connect('item-entered', Lang.bind(this, this._appEntered));
|
|
||||||
|
|
||||||
this._appIcons = appIcons;
|
|
||||||
|
|
||||||
// make the initial selection
|
|
||||||
if (backward)
|
|
||||||
this._select(windows.length - 2);
|
|
||||||
else
|
|
||||||
this._select(0);
|
|
||||||
|
|
||||||
this.actor.opacity = 0;
|
|
||||||
this.actor.show();
|
|
||||||
|
|
||||||
// There's a race condition; if the user released Alt before
|
|
||||||
// we got the grab, then we won't be notified. (See
|
|
||||||
// https://bugzilla.gnome.org/show_bug.cgi?id=596695 for
|
|
||||||
// details.) So we check now. (Have to do this after updating
|
|
||||||
// selection.)
|
|
||||||
let [x, y, mods] = global.get_pointer();
|
|
||||||
if (!(mods & this._modifierMask)) {
|
|
||||||
this._finish();
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
// We delay showing the popup so that fast Alt+Tab users aren't
|
|
||||||
// disturbed by the popup briefly flashing.
|
|
||||||
this._initialDelayTimeoutId = Mainloop.timeout_add(AltTab.POPUP_DELAY_TIMEOUT,
|
|
||||||
Lang.bind(this, function () {
|
|
||||||
this.actor.opacity = 255;
|
|
||||||
this._initialDelayTimeoutId = 0;
|
|
||||||
}));
|
|
||||||
|
|
||||||
return true
|
|
||||||
},
|
|
||||||
|
|
||||||
_sortWindows : function(win1,win2) {
|
|
||||||
let t1 = win1.get_user_time();
|
|
||||||
let t2 = win2.get_user_time();
|
|
||||||
if (t2 > t1) return 1;
|
|
||||||
else return -1;
|
|
||||||
},
|
|
||||||
|
|
||||||
_appActivated : function(thumbnailList, n) {
|
|
||||||
let appIcon = this._appIcons[this._currentApp];
|
|
||||||
Main.activateWindow(appIcon.cachedWindows[0]);
|
|
||||||
this.destroy();
|
|
||||||
},
|
|
||||||
|
|
||||||
_finish : function() {
|
|
||||||
let app = this._appIcons[this._currentApp];
|
|
||||||
Main.activateWindow(app.cachedWindows[0]);
|
|
||||||
this.destroy();
|
|
||||||
},
|
|
||||||
});
|
|
||||||
|
|
||||||
const WindowList = new Lang.Class({
|
|
||||||
Name: 'AlternateTab.WindowList',
|
|
||||||
Extends: AltTab.SwitcherList,
|
|
||||||
|
|
||||||
_init : function(windows) {
|
|
||||||
this.parent(true);
|
|
||||||
|
|
||||||
let activeWorkspace = global.screen.get_active_workspace();
|
|
||||||
this._labels = new Array();
|
|
||||||
this._thumbnailBins = new Array();
|
|
||||||
this._clones = new Array();
|
|
||||||
this._windows = windows;
|
|
||||||
this._arrows = new Array();
|
|
||||||
this.icons = new Array();
|
|
||||||
for (let w = 0; w < windows.length; w++) {
|
|
||||||
let arrow = new St.DrawingArea({ style_class: 'switcher-arrow' });
|
|
||||||
arrow.connect('repaint', Lang.bind(this, function (area) {
|
|
||||||
Shell.draw_box_pointer(area, Shell.PointerDirection.DOWN);
|
|
||||||
}));
|
|
||||||
this._list.add_actor(arrow);
|
|
||||||
this._arrows.push(arrow);
|
|
||||||
|
|
||||||
arrow.hide();
|
|
||||||
|
|
||||||
let win=windows[w];
|
|
||||||
|
|
||||||
let appSys = Shell.AppSystem.get_default();
|
|
||||||
let apps = appSys.get_running();
|
|
||||||
let ap1 = null;
|
|
||||||
for (let i = 0; i < apps.length; i++) {
|
|
||||||
let app_wins = apps[i].get_windows();
|
|
||||||
for (let j = 0; j < app_wins.length; j++) {
|
|
||||||
if (app_wins[j] == win) {
|
|
||||||
ap1 = new AltTab.AppIcon(apps[i]);
|
|
||||||
let mutterWindow = win.get_compositor_private();
|
|
||||||
let windowTexture = mutterWindow.get_texture ();
|
|
||||||
let [width, height] = windowTexture.get_size();
|
|
||||||
let scale = Math.min(1.0, 128 / width, 128 / height);
|
|
||||||
|
|
||||||
let clone = new Clutter.Clone ({ source: windowTexture, reactive: true, width: width * scale, height: height * scale });
|
|
||||||
ap1.icon = ap1.app.create_icon_texture(128);
|
|
||||||
ap1._iconBin.set_size(128,128);
|
|
||||||
ap1._iconBin.child = clone;
|
|
||||||
|
|
||||||
ap1.label.text = win.get_title();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (ap1 != null) {
|
|
||||||
ap1.cachedWindows = [win];
|
|
||||||
this.addItem(ap1.actor, ap1.label);
|
|
||||||
this.icons.push(ap1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
addSeparator: function () {
|
|
||||||
this._separator=null;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
const MODES = {
|
|
||||||
all_thumbnails: AltTabPopupAllThumbnails,
|
|
||||||
workspace_icons: AltTabPopupWorkspaceIcons,
|
|
||||||
};
|
|
||||||
|
|
||||||
function doAltTab(display, screen, window, binding) {
|
|
||||||
if(settings.get_boolean(SETTINGS_FIRST_TIME_KEY)) {
|
|
||||||
let dialog = new Settings.AltTabSettingsDialog(settings);
|
|
||||||
dialog.open();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
let behaviour = settings.get_string(SETTINGS_BEHAVIOUR_KEY);
|
|
||||||
|
|
||||||
// alt-tab having no effect is unexpected, even with wrong settings
|
|
||||||
if (!(behaviour in MODES))
|
|
||||||
behaviour = 'all_thumbnails';
|
|
||||||
|
|
||||||
if (Main.wm._workspaceSwitcherPopup)
|
|
||||||
Main.wm._workspaceSwitcherPopup.actor.hide();
|
|
||||||
|
|
||||||
let modifiers = binding.get_modifiers()
|
|
||||||
let backwards = modifiers & Meta.VirtualModifier.SHIFT_MASK;
|
|
||||||
|
|
||||||
let constructor = MODES[behaviour];
|
|
||||||
let popup = new constructor();
|
|
||||||
if (!popup.show(backwards, binding.get_name(), binding.get_mask()))
|
|
||||||
popup.destroy();
|
|
||||||
}
|
|
||||||
|
|
||||||
function init(metadata) {
|
function init(metadata) {
|
||||||
Convenience.initTranslations();
|
}
|
||||||
settings = Convenience.getSettings();
|
|
||||||
|
function setKeybinding(name, func) {
|
||||||
|
Main.wm.setCustomKeybindingHandler(name, Shell.KeyBindingMode.NORMAL, func);
|
||||||
}
|
}
|
||||||
|
|
||||||
function enable() {
|
function enable() {
|
||||||
Meta.keybindings_set_custom_handler('switch-windows', doAltTab);
|
injections['_initialSelection'] = AltTab.WindowSwitcherPopup.prototype._initialSelection;
|
||||||
Meta.keybindings_set_custom_handler('switch-group', doAltTab);
|
AltTab.WindowSwitcherPopup.prototype._initialSelection = function(backward, binding) {
|
||||||
Meta.keybindings_set_custom_handler('switch-windows-backward', doAltTab);
|
if (binding == 'switch-windows-backward' ||
|
||||||
Meta.keybindings_set_custom_handler('switch-group-backward', doAltTab);
|
binding == 'switch-applications-backward' ||
|
||||||
|
binding == 'switch-group-backward' || backward)
|
||||||
|
this._select(this._items.length - 1);
|
||||||
|
else if (this._items.length == 1)
|
||||||
|
this._select(0);
|
||||||
|
else
|
||||||
|
this._select(1);
|
||||||
|
};
|
||||||
|
injections['_keyPressHandler'] = AltTab.WindowSwitcherPopup.prototype._keyPressHandler;
|
||||||
|
AltTab.WindowSwitcherPopup.prototype._keyPressHandler = function(keysym, backwards, action) {
|
||||||
|
if (action == Meta.KeyBindingAction.SWITCH_WINDOWS ||
|
||||||
|
action == Meta.KeyBindingAction.SWITCH_APPLICATIONS ||
|
||||||
|
action == Meta.KeyBindingAction.SWITCH_GROUP) {
|
||||||
|
this._select(backwards ? this._previous() : this._next());
|
||||||
|
} else if (action == Meta.KeyBindingAction.SWITCH_WINDOWS_BACKWARD ||
|
||||||
|
action == Meta.KeyBindingAction.SWITCH_APPLICATIONS_BACKWARD ||
|
||||||
|
action == Meta.KeyBindingAction.SWITCH_GROUP_BACKWARD) {
|
||||||
|
this._select(this._previous());
|
||||||
|
} else {
|
||||||
|
if (keysym == Clutter.Left)
|
||||||
|
this._select(this._previous());
|
||||||
|
else if (keysym == Clutter.Right)
|
||||||
|
this._select(this._next());
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
setKeybinding('switch-applications', Lang.bind(Main.wm, Main.wm._startWindowSwitcher));
|
||||||
|
setKeybinding('switch-group', Lang.bind(Main.wm, Main.wm._startWindowSwitcher));
|
||||||
|
setKeybinding('switch-applications-backward', Lang.bind(Main.wm, Main.wm._startWindowSwitcher));
|
||||||
|
setKeybinding('switch-group-backward', Lang.bind(Main.wm, Main.wm._startWindowSwitcher));
|
||||||
}
|
}
|
||||||
|
|
||||||
function disable() {
|
function disable() {
|
||||||
Meta.keybindings_set_custom_handler('switch-windows', Lang.bind(Main.wm, Main.wm._startAppSwitcher));
|
setKeybinding('switch-applications', Lang.bind(Main.wm, Main.wm._startAppSwitcher));
|
||||||
Meta.keybindings_set_custom_handler('switch-group', Lang.bind(Main.wm, Main.wm._startAppSwitcher));
|
setKeybinding('switch-group', Lang.bind(Main.wm, Main.wm._startAppSwitcher));
|
||||||
Meta.keybindings_set_custom_handler('switch-windows-backward', Lang.bind(Main.wm, Main.wm._startAppSwitcher));
|
setKeybinding('switch-applications-backward', Lang.bind(Main.wm, Main.wm._startAppSwitcher));
|
||||||
Meta.keybindings_set_custom_handler('switch-group-backward', Lang.bind(Main.wm, Main.wm._startAppSwitcher));
|
setKeybinding('switch-group-backward', Lang.bind(Main.wm, Main.wm._startAppSwitcher));
|
||||||
|
|
||||||
|
for (prop in injections)
|
||||||
|
AltTab.WindowSwitcherPopup.prototype[prop] = injections[prop];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
"settings-schema": "@gschemaname@",
|
"settings-schema": "@gschemaname@",
|
||||||
"gettext-domain": "@gettext_domain@",
|
"gettext-domain": "@gettext_domain@",
|
||||||
"name": "AlternateTab",
|
"name": "AlternateTab",
|
||||||
"description": "A replacement for Alt-Tab, allows to cycle between windows and does not group by application",
|
"description": "Substitute Alt-Tab with a window based switcher that does not group by application.\nThis extension is part of Classic Mode and is officially supported by GNOME. Please do not report bugs using the form below, use GNOME Bugzilla instead.",
|
||||||
"original-authors": [ "jw@bargsten.org", "thomas.bouffon@gmail.com" ],
|
"original-authors": [ "jw@bargsten.org", "thomas.bouffon@gmail.com" ],
|
||||||
"shell-version": [ "@shell_current@" ],
|
"shell-version": [ "@shell_current@" ],
|
||||||
"url": "@url@"
|
"url": "@url@"
|
||||||
|
|||||||
@@ -1,18 +0,0 @@
|
|||||||
<schemalist gettext-domain="gnome-shell-extensions">
|
|
||||||
<enum id="org.gnome.shell.extensions.alternate-tab.BehaviourMode">
|
|
||||||
<value value="1" nick="all_thumbnails"/>
|
|
||||||
<value value="2" nick="workspace_icons"/>
|
|
||||||
</enum>
|
|
||||||
<schema id="org.gnome.shell.extensions.alternate-tab" path="/org/gnome/shell/extensions/alternate-tab/">
|
|
||||||
<key name="behaviour" enum="org.gnome.shell.extensions.alternate-tab.BehaviourMode">
|
|
||||||
<default>'all_thumbnails'</default>
|
|
||||||
<_summary>The alt tab behaviour.</_summary>
|
|
||||||
<_description>Sets the Alt-Tab behaviour. Possible values are: native, all_thumbnails and workspace_icons.</_description>
|
|
||||||
</key>
|
|
||||||
<key type="b" name="first-time">
|
|
||||||
<default>true</default>
|
|
||||||
<_summary>Indicates if Alternate Tab is newly installed</_summary>
|
|
||||||
<_description>Ask the user for a default behaviour if true.</_description>
|
|
||||||
</key>
|
|
||||||
</schema>
|
|
||||||
</schemalist>
|
|
||||||
@@ -0,0 +1,78 @@
|
|||||||
|
/* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */
|
||||||
|
|
||||||
|
const Gio = imports.gi.Gio;
|
||||||
|
const Gtk = imports.gi.Gtk;
|
||||||
|
const GObject = imports.gi.GObject;
|
||||||
|
const Lang = imports.lang;
|
||||||
|
|
||||||
|
const Gettext = imports.gettext.domain('gnome-shell-extensions');
|
||||||
|
const _ = Gettext.gettext;
|
||||||
|
const N_ = function(e) { return e };
|
||||||
|
|
||||||
|
const ExtensionUtils = imports.misc.extensionUtils;
|
||||||
|
const Me = ExtensionUtils.getCurrentExtension();
|
||||||
|
const Convenience = Me.imports.convenience;
|
||||||
|
|
||||||
|
const SETTINGS_APP_ICON_MODE = 'app-icon-mode';
|
||||||
|
const SETTINGS_CURRENT_WORKSPACE_ONLY = 'current-workspace-only';
|
||||||
|
|
||||||
|
const MODES = {
|
||||||
|
'thumbnail-only': N_("Thumbnail only"),
|
||||||
|
'app-icon-only': N_("Application icon only"),
|
||||||
|
'both': N_("Thumbnail and application icon"),
|
||||||
|
};
|
||||||
|
|
||||||
|
const AltTabSettingsWidget = new GObject.Class({
|
||||||
|
Name: 'AlternateTab.Prefs.AltTabSettingsWidget',
|
||||||
|
GTypeName: 'AltTabSettingsWidget',
|
||||||
|
Extends: Gtk.Grid,
|
||||||
|
|
||||||
|
_init : function(params) {
|
||||||
|
this.parent(params);
|
||||||
|
this.margin = 10;
|
||||||
|
this.orientation = Gtk.Orientation.VERTICAL;
|
||||||
|
|
||||||
|
this._settings = new Gio.Settings({ schema: 'org.gnome.shell.window-switcher' });
|
||||||
|
|
||||||
|
let presentLabel = _("Present windows as");
|
||||||
|
this.add(new Gtk.Label({ label: presentLabel, sensitive: true,
|
||||||
|
margin_bottom: 10, margin_top: 5 }));
|
||||||
|
|
||||||
|
let top = 1;
|
||||||
|
let radio = null;
|
||||||
|
let currentMode = this._settings.get_string(SETTINGS_APP_ICON_MODE);
|
||||||
|
for (let mode in MODES) {
|
||||||
|
// copy the mode variable because it has function scope, not block scope
|
||||||
|
// so cannot be used in a closure
|
||||||
|
let modeCapture = mode;
|
||||||
|
let name = Gettext.gettext(MODES[mode]);
|
||||||
|
|
||||||
|
radio = new Gtk.RadioButton({ group: radio, label: name, valign: Gtk.Align.START });
|
||||||
|
radio.connect('toggled', Lang.bind(this, function(widget) {
|
||||||
|
if (widget.active)
|
||||||
|
this._settings.set_string(SETTINGS_APP_ICON_MODE, modeCapture);
|
||||||
|
}));
|
||||||
|
this.add(radio);
|
||||||
|
|
||||||
|
if (mode == currentMode)
|
||||||
|
radio.active = true;
|
||||||
|
top += 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
let check = new Gtk.CheckButton({ label: _("Show only windows in the current workspace"),
|
||||||
|
margin_top: 12 });
|
||||||
|
this._settings.bind(SETTINGS_CURRENT_WORKSPACE_ONLY, check, 'active', Gio.SettingsBindFlags.DEFAULT);
|
||||||
|
this.add(check);
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
function init() {
|
||||||
|
Convenience.initTranslations();
|
||||||
|
}
|
||||||
|
|
||||||
|
function buildPrefsWidget() {
|
||||||
|
let widget = new AltTabSettingsWidget();
|
||||||
|
widget.show_all();
|
||||||
|
|
||||||
|
return widget;
|
||||||
|
}
|
||||||
@@ -1,113 +0,0 @@
|
|||||||
/* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */
|
|
||||||
|
|
||||||
/* most of the code is borrowed from
|
|
||||||
* > js/ui/altTab.js <
|
|
||||||
* of the gnome-shell source code
|
|
||||||
*/
|
|
||||||
|
|
||||||
const Clutter = imports.gi.Clutter;
|
|
||||||
const Gdk = imports.gi.Gdk;
|
|
||||||
const Gio = imports.gi.Gio;
|
|
||||||
const Gtk = imports.gi.Gtk;
|
|
||||||
const Lang = imports.lang;
|
|
||||||
const Mainloop = imports.mainloop;
|
|
||||||
const Meta = imports.gi.Meta;
|
|
||||||
const Shell = imports.gi.Shell;
|
|
||||||
const St = imports.gi.St;
|
|
||||||
|
|
||||||
const AltTab = imports.ui.altTab;
|
|
||||||
const Main = imports.ui.main;
|
|
||||||
const ModalDialog = imports.ui.modalDialog;
|
|
||||||
const Tweener = imports.ui.tweener;
|
|
||||||
const WindowManager = imports.ui.windowManager;
|
|
||||||
|
|
||||||
const Gettext = imports.gettext.domain('gnome-shell-extensions');
|
|
||||||
const _ = Gettext.gettext;
|
|
||||||
const N_ = function(e) { return e };
|
|
||||||
|
|
||||||
const SETTINGS_BEHAVIOUR_KEY = 'behaviour';
|
|
||||||
const SETTINGS_FIRST_TIME_KEY = 'first-time';
|
|
||||||
|
|
||||||
const MESSAGE = N_("This is the first time you use the Alternate Tab extension. \n\
|
|
||||||
Please choose your preferred behaviour:\n\
|
|
||||||
\n\
|
|
||||||
All & Thumbnails:\n\
|
|
||||||
This mode presents all applications from all workspaces in one selection \n\
|
|
||||||
list. Instead of using the application icon of every window, it uses small \n\
|
|
||||||
thumbnails resembling the window itself. \n\
|
|
||||||
\n\
|
|
||||||
Workspace & Icons:\n\
|
|
||||||
This mode let's you switch between the applications of your current \n\
|
|
||||||
workspace and gives you additionally the option to switch to the last used \n\
|
|
||||||
application of your previous workspace. This is always the last symbol in \n\
|
|
||||||
the list and is segregated by a separator/vertical line if available. \n\
|
|
||||||
Every window is represented by its application icon. \n\
|
|
||||||
\n\
|
|
||||||
If you whish to revert to the default behavior for the Alt-Tab switcher, just\n\
|
|
||||||
disable the extension from extensions.gnome.org or the Advanced Settings application.\
|
|
||||||
");
|
|
||||||
|
|
||||||
const AltTabSettingsDialog = new Lang.Class({
|
|
||||||
Name: 'AlternateTab.Settings.AltTabSettingsDialog',
|
|
||||||
Extends: ModalDialog.ModalDialog,
|
|
||||||
|
|
||||||
_init : function(settings) {
|
|
||||||
this.settings = settings;
|
|
||||||
this.parent({ styleClass: null });
|
|
||||||
|
|
||||||
let mainContentBox = new St.BoxLayout({ style_class: 'polkit-dialog-main-layout',
|
|
||||||
vertical: false });
|
|
||||||
this.contentLayout.add(mainContentBox,
|
|
||||||
{ x_fill: true,
|
|
||||||
y_fill: true });
|
|
||||||
|
|
||||||
let messageBox = new St.BoxLayout({ style_class: 'polkit-dialog-message-layout',
|
|
||||||
vertical: true });
|
|
||||||
mainContentBox.add(messageBox,
|
|
||||||
{ y_align: St.Align.START });
|
|
||||||
|
|
||||||
this._subjectLabel = new St.Label({ style_class: 'polkit-dialog-headline',
|
|
||||||
text: _("Alt Tab Behaviour") });
|
|
||||||
|
|
||||||
messageBox.add(this._subjectLabel,
|
|
||||||
{ y_fill: false,
|
|
||||||
y_align: St.Align.START });
|
|
||||||
|
|
||||||
this._descriptionLabel = new St.Label({ style_class: 'polkit-dialog-description',
|
|
||||||
text: Gettext.gettext(MESSAGE) });
|
|
||||||
|
|
||||||
messageBox.add(this._descriptionLabel,
|
|
||||||
{ y_fill: true,
|
|
||||||
y_align: St.Align.START });
|
|
||||||
|
|
||||||
|
|
||||||
this.setButtons([
|
|
||||||
{
|
|
||||||
label: _("All & Thumbnails"),
|
|
||||||
action: Lang.bind(this, function() {
|
|
||||||
this.setBehaviour('all_thumbnails');
|
|
||||||
this.close();
|
|
||||||
})
|
|
||||||
},
|
|
||||||
{
|
|
||||||
label: _("Workspace & Icons"),
|
|
||||||
action: Lang.bind(this, function() {
|
|
||||||
this.setBehaviour('workspace_icons');
|
|
||||||
this.close();
|
|
||||||
})
|
|
||||||
},
|
|
||||||
{
|
|
||||||
label: _("Cancel"),
|
|
||||||
action: Lang.bind(this, function() {
|
|
||||||
this.close();
|
|
||||||
}),
|
|
||||||
key: Clutter.Escape
|
|
||||||
}
|
|
||||||
]);
|
|
||||||
},
|
|
||||||
|
|
||||||
setBehaviour: function(behaviour) {
|
|
||||||
this.settings.set_string(SETTINGS_BEHAVIOUR_KEY, behaviour);
|
|
||||||
this.settings.set_boolean(SETTINGS_FIRST_TIME_KEY, false);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
@@ -1,3 +1,4 @@
|
|||||||
EXTENSION_ID = alternative-status-menu
|
EXTENSION_ID = alternative-status-menu
|
||||||
|
|
||||||
include ../../extension.mk
|
include ../../extension.mk
|
||||||
|
include ../../settings.mk
|
||||||
|
|||||||
@@ -1,6 +1,12 @@
|
|||||||
/* -*- mode: js2 - indent-tabs-mode: nil - js2-basic-offset: 4 -*- */
|
/* -*- mode: js2 - indent-tabs-mode: nil - js2-basic-offset: 4 -*- */
|
||||||
|
|
||||||
|
const Gio = imports.gi.Gio;
|
||||||
|
const GLib = imports.gi.GLib;
|
||||||
const Lang = imports.lang;
|
const Lang = imports.lang;
|
||||||
|
const Mainloop = imports.mainloop;
|
||||||
const St = imports.gi.St;
|
const St = imports.gi.St;
|
||||||
|
|
||||||
|
const BoxPointer = imports.ui.boxpointer;
|
||||||
const Main = imports.ui.main;
|
const Main = imports.ui.main;
|
||||||
const PopupMenu = imports.ui.popupMenu;
|
const PopupMenu = imports.ui.popupMenu;
|
||||||
|
|
||||||
@@ -11,112 +17,156 @@ const ExtensionUtils = imports.misc.extensionUtils;
|
|||||||
const Me = ExtensionUtils.getCurrentExtension();
|
const Me = ExtensionUtils.getCurrentExtension();
|
||||||
const Convenience = Me.imports.convenience;
|
const Convenience = Me.imports.convenience;
|
||||||
|
|
||||||
let suspend_item = null;
|
const LOCK_ENABLED_KEY = 'lock-enabled';
|
||||||
let hibernate_item = null;
|
|
||||||
let poweroff_item = null;
|
|
||||||
let suspend_signal_id = 0, hibernate_signal_id = 0;
|
|
||||||
|
|
||||||
function updateSuspend(object, pspec, item) {
|
let extension;
|
||||||
item.actor.visible = object.get_can_suspend();
|
|
||||||
|
// Need to reimplement here the missing bits from LoginManager
|
||||||
|
|
||||||
|
function loginManager_hibernate() {
|
||||||
|
if (this._proxy) {
|
||||||
|
// systemd path
|
||||||
|
this._proxy.call("Hibernate",
|
||||||
|
GLib.Variant.new('(b)', [true]),
|
||||||
|
Gio.DBusCallFlags.NONE,
|
||||||
|
-1, null, null);
|
||||||
|
} else {
|
||||||
|
// Can't do in ConsoleKit
|
||||||
|
this.emit('prepare-for-sleep', true);
|
||||||
|
this.emit('prepare-for-sleep', false);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function updateHibernate(object, pspec, item) {
|
function loginManager_canHibernate(asyncCallback) {
|
||||||
item.actor.visible = object.get_can_hibernate();
|
if (this._proxy) {
|
||||||
|
// systemd path
|
||||||
|
this._proxy.call("CanHibernate",
|
||||||
|
null,
|
||||||
|
Gio.DBusCallFlags.NONE,
|
||||||
|
-1, null, function(proxy, asyncResult) {
|
||||||
|
let result, error;
|
||||||
|
|
||||||
|
try {
|
||||||
|
result = proxy.call_finish(asyncResult);
|
||||||
|
} catch(e) {
|
||||||
|
error = e;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (error)
|
||||||
|
asyncCallback(false);
|
||||||
|
else
|
||||||
|
asyncCallback(result[0] != 'no');
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
Mainloop.idle_add(Lang.bind(this, function() {
|
||||||
|
asyncCallback(false);
|
||||||
|
return false;
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function statusMenu_updateHaveHibernate() {
|
||||||
|
loginManager_canHibernate.call(this._loginManager, Lang.bind(this,
|
||||||
|
function(result) {
|
||||||
|
this._haveHibernate = result;
|
||||||
|
this._updateSuspendOrPowerOff();
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
|
||||||
|
function statusMenu_updateSuspendOrPowerOff() {
|
||||||
|
this._suspendOrPowerOffItem.actor.hide();
|
||||||
|
|
||||||
|
extension.suspendItem.actor.visible = this._haveSuspend && extension.settings.get_boolean('allow-suspend');
|
||||||
|
extension.hibernateItem.actor.visible = this._haveHibernate && extension.settings.get_boolean('allow-hibernate');
|
||||||
|
extension.powerOffItem.actor.visible = this._haveShutdown;
|
||||||
}
|
}
|
||||||
|
|
||||||
function onSuspendActivate(item) {
|
function onSuspendActivate(item) {
|
||||||
Main.overview.hide();
|
Main.overview.hide();
|
||||||
|
|
||||||
this._screenSaverProxy.LockRemote(Lang.bind(this, function() {
|
this.menu.close(BoxPointer.PopupAnimation.NONE);
|
||||||
this._upClient.suspend_sync(null);
|
this._loginManager.suspend();
|
||||||
}));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function onHibernateActivate(item) {
|
function onHibernateActivate(item) {
|
||||||
Main.overview.hide();
|
Main.overview.hide();
|
||||||
|
|
||||||
this._screenSaverProxy.LockRemote(Lang.bind(this, function() {
|
this.menu.close(BoxPointer.PopupAnimation.NONE);
|
||||||
this._upClient.hibernate_sync(null);
|
loginManager_hibernate.call(this._loginManager);
|
||||||
}));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const Extension = new Lang.Class({
|
||||||
|
Name: 'AlternativeStatusMenu.Extension',
|
||||||
|
|
||||||
|
_init: function() {
|
||||||
|
this.suspendItem = null;
|
||||||
|
this.hibernateItem = null;
|
||||||
|
this.powerOffItem = null;
|
||||||
|
|
||||||
|
Convenience.initTranslations();
|
||||||
|
this.settings = Convenience.getSettings();
|
||||||
|
},
|
||||||
|
|
||||||
|
enable: function() {
|
||||||
|
let statusMenu = Main.panel.statusArea.userMenu;
|
||||||
|
|
||||||
|
let children = statusMenu.menu._getMenuItems();
|
||||||
|
let index = children.length;
|
||||||
|
|
||||||
|
/* find the old entry */
|
||||||
|
for (let i = children.length - 1; i >= 0; i--) {
|
||||||
|
if (children[i] == statusMenu._suspendOrPowerOffItem) {
|
||||||
|
index = i;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* add the new entries */
|
||||||
|
this.suspendItem = new PopupMenu.PopupMenuItem(_("Suspend"));
|
||||||
|
this.suspendItem.connect('activate', Lang.bind(statusMenu, onSuspendActivate));
|
||||||
|
|
||||||
|
this.hibernateItem = new PopupMenu.PopupMenuItem(_("Hibernate"));
|
||||||
|
this.hibernateItem.connect('activate', Lang.bind(statusMenu, onHibernateActivate));
|
||||||
|
|
||||||
|
this.powerOffItem = new PopupMenu.PopupMenuItem(_("Power Off"));
|
||||||
|
this.powerOffItem.connect('activate', Lang.bind(statusMenu, function() {
|
||||||
|
this._session.ShutdownRemote();
|
||||||
|
}));
|
||||||
|
|
||||||
|
/* insert the entries at the found position */
|
||||||
|
statusMenu.menu.addMenuItem(this.suspendItem, index);
|
||||||
|
statusMenu.menu.addMenuItem(this.hibernateItem, index + 1);
|
||||||
|
statusMenu.menu.addMenuItem(this.powerOffItem, index + 2);
|
||||||
|
|
||||||
|
this._openStateChangedId = statusMenu.menu.connect('open-state-changed', function() {
|
||||||
|
statusMenu_updateHaveHibernate.call(statusMenu);
|
||||||
|
});
|
||||||
|
|
||||||
|
this._previousUpdateSuspendOrPowerOff = statusMenu._updateSuspendOrPowerOff;
|
||||||
|
statusMenu._updateSuspendOrPowerOff = statusMenu_updateSuspendOrPowerOff;
|
||||||
|
|
||||||
|
this._settingsChangedId = this.settings.connect('changed', function() {
|
||||||
|
statusMenu._updateSuspendOrPowerOff();
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
disable: function() {
|
||||||
|
let statusMenu = Main.panel.statusArea.userMenu;
|
||||||
|
|
||||||
|
this.suspendItem.destroy();
|
||||||
|
this.hibernateItem.destroy();
|
||||||
|
this.powerOffItem.destroy();
|
||||||
|
|
||||||
|
statusMenu.menu.disconnect(this._openStateChangedId);
|
||||||
|
this.settings.disconnect(this._settingsChangedId);
|
||||||
|
|
||||||
|
statusMenu._updateSuspendOrPowerOff = this._previousUpdateSuspendOrPowerOff;
|
||||||
|
statusMenu._updateSuspendOrPowerOff();
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
// Put your extension initialization code here
|
// Put your extension initialization code here
|
||||||
function init(metadata) {
|
function init(metadata) {
|
||||||
Convenience.initTranslations();
|
return (extension = new Extension());
|
||||||
}
|
}
|
||||||
|
|
||||||
function enable() {
|
|
||||||
let statusMenu = Main.panel._statusArea.userMenu;
|
|
||||||
|
|
||||||
let children = statusMenu.menu._getMenuItems();
|
|
||||||
let index = children.length;
|
|
||||||
|
|
||||||
/* find and destroy the old entry */
|
|
||||||
for (let i = children.length - 1; i >= 0; i--) {
|
|
||||||
if (children[i] == statusMenu._suspendOrPowerOffItem) {
|
|
||||||
children[i].destroy();
|
|
||||||
index = i;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* add the new entries */
|
|
||||||
suspend_item = new PopupMenu.PopupMenuItem(_("Suspend"));
|
|
||||||
suspend_item.connect('activate', Lang.bind(statusMenu, onSuspendActivate));
|
|
||||||
suspend_signal_id = statusMenu._upClient.connect('notify::can-suspend', Lang.bind(statusMenu, updateSuspend, suspend_item));
|
|
||||||
updateSuspend(statusMenu._upClient, null, suspend_item);
|
|
||||||
|
|
||||||
hibernate_item = new PopupMenu.PopupMenuItem(_("Hibernate"));
|
|
||||||
hibernate_item.connect('activate', Lang.bind(statusMenu, onHibernateActivate));
|
|
||||||
hibernate_signal_id = statusMenu._upClient.connect('notify::can-hibernate', Lang.bind(statusMenu, updateHibernate, hibernate_item));
|
|
||||||
updateHibernate(statusMenu._upClient, null, hibernate_item);
|
|
||||||
|
|
||||||
poweroff_item = new PopupMenu.PopupMenuItem(_("Power Off..."), { style_class: 'popup-alternating-menu-item' });
|
|
||||||
poweroff_item.actor.add_style_pseudo_class('alternate');
|
|
||||||
poweroff_item.connect('activate', Lang.bind(statusMenu, function() {
|
|
||||||
this._session.ShutdownRemote();
|
|
||||||
}));
|
|
||||||
|
|
||||||
/* insert the entries at the found position */
|
|
||||||
statusMenu.menu.addMenuItem(suspend_item, index);
|
|
||||||
statusMenu.menu.addMenuItem(hibernate_item, index + 1);
|
|
||||||
statusMenu.menu.addMenuItem(poweroff_item, index + 2);
|
|
||||||
|
|
||||||
// clear out this to avoid criticals (we don't mess with
|
|
||||||
// updateSuspendOrPowerOff)
|
|
||||||
statusMenu._suspendOrPowerOffItem = null;
|
|
||||||
}
|
|
||||||
|
|
||||||
function disable() {
|
|
||||||
let statusMenu = Main.panel._statusArea.userMenu;
|
|
||||||
|
|
||||||
let children = statusMenu.menu._getMenuItems();
|
|
||||||
let index = children.length;
|
|
||||||
|
|
||||||
/* find the index for the previously created suspend entry */
|
|
||||||
for (let i = children.length - 1; i >= 0; i--) {
|
|
||||||
if (children[i] == suspend_item) {
|
|
||||||
index = i;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* disconnect signals */
|
|
||||||
statusMenu._upClient.disconnect(suspend_signal_id);
|
|
||||||
statusMenu._upClient.disconnect(hibernate_signal_id);
|
|
||||||
suspend_signal_id = hibernate_signal_id = 0;
|
|
||||||
|
|
||||||
/* destroy the entries we had created */
|
|
||||||
suspend_item.destroy();
|
|
||||||
hibernate_item.destroy();
|
|
||||||
poweroff_item.destroy();
|
|
||||||
|
|
||||||
/* create a new suspend/poweroff entry */
|
|
||||||
/* empty strings are fine for the labels, since we immediately call updateSuspendOrPowerOff */
|
|
||||||
let item = new PopupMenu.PopupAlternatingMenuItem("", "");
|
|
||||||
/* restore the userMenu field */
|
|
||||||
statusMenu._suspendOrPowerOffItem = item;
|
|
||||||
statusMenu.menu.addMenuItem(item, index);
|
|
||||||
item.connect('activate', Lang.bind(statusMenu, statusMenu._onSuspendOrPowerOffActivate));
|
|
||||||
statusMenu._updateSuspendOrPowerOff();
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
"settings-schema": "@gschemaname@",
|
"settings-schema": "@gschemaname@",
|
||||||
"gettext-domain": "@gettext_domain@",
|
"gettext-domain": "@gettext_domain@",
|
||||||
"name": "Alternative Status Menu",
|
"name": "Alternative Status Menu",
|
||||||
"description": "Replaces GNOME Shell Status Menu with one showing Suspend/Hibernate and Power Off as separate items",
|
"description": "Replaces GNOME Shell Status Menu with one showing Suspend/Hibernate and Power Off as separate items.",
|
||||||
"shell-version": [ "@shell_current@" ],
|
"shell-version": [ "@shell_current@" ],
|
||||||
"url": "@url@"
|
"url": "@url@"
|
||||||
}
|
}
|
||||||
|
|||||||
+14
@@ -0,0 +1,14 @@
|
|||||||
|
<schemalist gettext-domain="gnome-shell-extensions">
|
||||||
|
<schema id="org.gnome.shell.extensions.alternative-status-menu" path="/org/gnome/shell/extensions/alternative-status-menu/">
|
||||||
|
<key name="allow-suspend" type="b">
|
||||||
|
<default>true</default>
|
||||||
|
<_summary>Enable suspending</_summary>
|
||||||
|
<_description>Control the visibility of the Suspend menu item</_description>
|
||||||
|
</key>
|
||||||
|
<key name="allow-hibernate" type="b">
|
||||||
|
<default>true</default>
|
||||||
|
<_summary>Enable hibernating</_summary>
|
||||||
|
<_description>Control the visibility of the Hibernate menu item</_description>
|
||||||
|
</key>
|
||||||
|
</schema>
|
||||||
|
</schemalist>
|
||||||
@@ -1,113 +1,603 @@
|
|||||||
/* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */
|
/* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */
|
||||||
|
|
||||||
|
const Atk = imports.gi.Atk;
|
||||||
const GMenu = imports.gi.GMenu;
|
const GMenu = imports.gi.GMenu;
|
||||||
const Lang = imports.lang;
|
const Lang = imports.lang;
|
||||||
const Shell = imports.gi.Shell;
|
const Shell = imports.gi.Shell;
|
||||||
const St = imports.gi.St;
|
const St = imports.gi.St;
|
||||||
|
const Clutter = imports.gi.Clutter;
|
||||||
const Main = imports.ui.main;
|
const Main = imports.ui.main;
|
||||||
const PanelMenu = imports.ui.panelMenu;
|
const PanelMenu = imports.ui.panelMenu;
|
||||||
const PopupMenu = imports.ui.popupMenu;
|
const PopupMenu = imports.ui.popupMenu;
|
||||||
|
const Gtk = imports.gi.Gtk;
|
||||||
|
const GLib = imports.gi.GLib;
|
||||||
|
const Signals = imports.signals;
|
||||||
|
const Layout = imports.ui.layout;
|
||||||
|
const Pango = imports.gi.Pango;
|
||||||
|
|
||||||
const ICON_SIZE = 28;
|
const Gettext = imports.gettext.domain('gnome-shell-extensions');
|
||||||
|
const _ = Gettext.gettext;
|
||||||
|
|
||||||
const AppMenuItem = new Lang.Class({
|
const ExtensionUtils = imports.misc.extensionUtils;
|
||||||
Name: 'AppsMenu.AppMenuItem',
|
const Me = ExtensionUtils.getCurrentExtension();
|
||||||
|
const Convenience = Me.imports.convenience;
|
||||||
|
|
||||||
|
const appSys = Shell.AppSystem.get_default();
|
||||||
|
|
||||||
|
const APPLICATION_ICON_SIZE = 32;
|
||||||
|
const HORIZ_FACTOR = 5;
|
||||||
|
const MENU_HEIGHT_OFFSET = 132;
|
||||||
|
const NAVIGATION_REGION_OVERSHOOT = 50;
|
||||||
|
|
||||||
|
const ActivitiesMenuItem = new Lang.Class({
|
||||||
|
Name: 'ActivitiesMenuItem',
|
||||||
Extends: PopupMenu.PopupBaseMenuItem,
|
Extends: PopupMenu.PopupBaseMenuItem,
|
||||||
|
|
||||||
_init: function (app, params) {
|
_init: function(button) {
|
||||||
this.parent(params);
|
this.parent();
|
||||||
|
this._button = button;
|
||||||
this._app = app;
|
this.addActor(new St.Label({ text: _("Activities Overview") }));
|
||||||
this.label = new St.Label({ text: app.get_name() });
|
|
||||||
this.addActor(this.label);
|
|
||||||
this._icon = app.create_icon_texture(ICON_SIZE);
|
|
||||||
this.addActor(this._icon, { expand: false });
|
|
||||||
},
|
},
|
||||||
|
|
||||||
activate: function (event) {
|
activate: function(event) {
|
||||||
this._app.activate_full(-1, event.get_time());
|
this._button.menu.toggle();
|
||||||
|
Main.overview.toggle();
|
||||||
|
this.parent(event);
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
this.parent(event);
|
const ApplicationMenuItem = new Lang.Class({
|
||||||
|
Name: 'ApplicationMenuItem',
|
||||||
|
Extends: PopupMenu.PopupBaseMenuItem,
|
||||||
|
|
||||||
|
_init: function(button, app) {
|
||||||
|
this.parent();
|
||||||
|
this._app = app;
|
||||||
|
this._button = button;
|
||||||
|
|
||||||
|
this._iconBin = new St.Bin();
|
||||||
|
this.addActor(this._iconBin);
|
||||||
|
|
||||||
|
let appLabel = new St.Label({ text: app.get_name() });
|
||||||
|
this.addActor(appLabel, { span: -1, expand: true });
|
||||||
|
this.actor.label_actor = appLabel;
|
||||||
|
|
||||||
|
let textureCache = St.TextureCache.get_default();
|
||||||
|
let iconThemeChangedId = textureCache.connect('icon-theme-changed',
|
||||||
|
Lang.bind(this, this._updateIcon));
|
||||||
|
this.actor.connect('destroy', Lang.bind(this,
|
||||||
|
function() {
|
||||||
|
textureCache.disconnect(iconThemeChangedId);
|
||||||
|
}));
|
||||||
|
this._updateIcon();
|
||||||
|
},
|
||||||
|
|
||||||
|
activate: function(event) {
|
||||||
|
this._app.open_new_window(event.get_time());
|
||||||
|
this._button.selectCategory(null, null);
|
||||||
|
this._button.menu.toggle();
|
||||||
|
this.parent(event);
|
||||||
|
},
|
||||||
|
|
||||||
|
setActive: function(active, params) {
|
||||||
|
if (active)
|
||||||
|
this._button.scrollToButton(this);
|
||||||
|
this.parent(active, params);
|
||||||
|
},
|
||||||
|
|
||||||
|
_getPreferredWidth: function(actor, forHeight, alloc) {
|
||||||
|
alloc.min_size = alloc.natural_size = -1;
|
||||||
|
},
|
||||||
|
|
||||||
|
_updateIcon: function() {
|
||||||
|
this._iconBin.set_child(this._app.create_icon_texture(APPLICATION_ICON_SIZE));
|
||||||
}
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
const CategoryMenuItem = new Lang.Class({
|
||||||
|
Name: 'CategoryMenuItem',
|
||||||
|
Extends: PopupMenu.PopupBaseMenuItem,
|
||||||
|
|
||||||
|
_init: function(button, category) {
|
||||||
|
this.parent();
|
||||||
|
this._category = category;
|
||||||
|
this._button = button;
|
||||||
|
|
||||||
|
this._oldX = -1;
|
||||||
|
this._oldY = -1;
|
||||||
|
|
||||||
|
let name;
|
||||||
|
if (this._category)
|
||||||
|
name = this._category.get_name();
|
||||||
|
else
|
||||||
|
name = _("Favorites");
|
||||||
|
|
||||||
|
this.addActor(new St.Label({ text: name }));
|
||||||
|
this.actor.connect('motion-event', Lang.bind(this, this._onMotionEvent));
|
||||||
|
},
|
||||||
|
|
||||||
|
activate: function(event) {
|
||||||
|
this._button.selectCategory(this._category, this);
|
||||||
|
this._button.scrollToCatButton(this);
|
||||||
|
this.parent(event);
|
||||||
|
},
|
||||||
|
|
||||||
|
_isNavigatingSubmenu: function([x, y]) {
|
||||||
|
let [posX, posY] = this.actor.get_transformed_position();
|
||||||
|
|
||||||
|
if (this._oldX == -1) {
|
||||||
|
this._oldX = x;
|
||||||
|
this._oldY = y;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
let deltaX = Math.abs(x - this._oldX);
|
||||||
|
let deltaY = Math.abs(y - this._oldY);
|
||||||
|
|
||||||
|
this._oldX = x;
|
||||||
|
this._oldY = y;
|
||||||
|
|
||||||
|
// If it lies outside the x-coordinates then it is definitely outside.
|
||||||
|
if (posX > x || posX + this.actor.width < x)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
// If it lies inside the menu item then it is definitely inside.
|
||||||
|
if (posY <= y && posY + this.actor.height >= y)
|
||||||
|
return true;
|
||||||
|
|
||||||
|
// We want the keep-up triangle only if the movement is more
|
||||||
|
// horizontal than vertical.
|
||||||
|
if (deltaX * HORIZ_FACTOR < deltaY)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
// Check whether the point lies inside triangle ABC, and a similar
|
||||||
|
// triangle on the other side of the menu item.
|
||||||
|
//
|
||||||
|
// +---------------------+
|
||||||
|
// | menu item |
|
||||||
|
// A +---------------------+ C
|
||||||
|
// P |
|
||||||
|
// B
|
||||||
|
|
||||||
|
// Ensure that the point P always lies below line AC so that we can
|
||||||
|
// only check for triangle ABC.
|
||||||
|
if (posY > y) {
|
||||||
|
let offset = posY - y;
|
||||||
|
y = posY + this.actor.height + offset;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Ensure that A is (0, 0).
|
||||||
|
x -= posX;
|
||||||
|
y -= posY + this.actor.height;
|
||||||
|
|
||||||
|
// Check which side of line AB the point P lies on by taking the
|
||||||
|
// cross-product of AB and AP. See:
|
||||||
|
// http://stackoverflow.com/questions/3461453/determine-which-side-of-a-line-a-point-lies
|
||||||
|
if (((this.actor.width * y) - (NAVIGATION_REGION_OVERSHOOT * x)) <= 0)
|
||||||
|
return true;
|
||||||
|
|
||||||
|
return false;
|
||||||
|
},
|
||||||
|
|
||||||
|
_onMotionEvent: function(actor, event) {
|
||||||
|
if (!Clutter.get_pointer_grab()) {
|
||||||
|
this._oldX = -1;
|
||||||
|
this._oldY = -1;
|
||||||
|
Clutter.grab_pointer(this.actor);
|
||||||
|
}
|
||||||
|
this.actor.hover = true;
|
||||||
|
|
||||||
|
if (this._isNavigatingSubmenu(event.get_coords()))
|
||||||
|
return true;
|
||||||
|
|
||||||
|
this._oldX = -1;
|
||||||
|
this._oldY = -1;
|
||||||
|
this.actor.hover = false;
|
||||||
|
Clutter.ungrab_pointer();
|
||||||
|
return false;
|
||||||
|
},
|
||||||
|
|
||||||
|
setActive: function(active, params) {
|
||||||
|
if (active) {
|
||||||
|
this._button.selectCategory(this._category, this);
|
||||||
|
this._button.scrollToCatButton(this);
|
||||||
|
}
|
||||||
|
this.parent(active, params);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
const HotCorner = new Lang.Class({
|
||||||
|
Name: 'HotCorner',
|
||||||
|
Extends: Layout.HotCorner,
|
||||||
|
|
||||||
|
_onCornerEntered : function() {
|
||||||
|
if (!this._entered) {
|
||||||
|
this._entered = true;
|
||||||
|
if (!Main.overview.animationInProgress) {
|
||||||
|
this._activationTime = Date.now() / 1000;
|
||||||
|
this.rippleAnimation();
|
||||||
|
Main.overview.toggle();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
const ApplicationsMenu = new Lang.Class({
|
||||||
|
Name: 'ApplicationsMenu',
|
||||||
|
Extends: PopupMenu.PopupMenu,
|
||||||
|
|
||||||
|
_init: function(sourceActor, arrowAlignment, arrowSide, button, hotCorner) {
|
||||||
|
this.parent(sourceActor, arrowAlignment, arrowSide);
|
||||||
|
this._button = button;
|
||||||
|
this._hotCorner = hotCorner;
|
||||||
|
},
|
||||||
|
|
||||||
|
open: function(animate) {
|
||||||
|
this._hotCorner.setBarrierSize(0);
|
||||||
|
if (this._hotCorner.actor) // fallback corner
|
||||||
|
this._hotCorner.actor.hide();
|
||||||
|
this.parent(animate);
|
||||||
|
},
|
||||||
|
|
||||||
|
close: function(animate) {
|
||||||
|
let size = Main.layoutManager.panelBox.height;
|
||||||
|
this._hotCorner.setBarrierSize(size);
|
||||||
|
if (this._hotCorner.actor) // fallback corner
|
||||||
|
this._hotCorner.actor.show();
|
||||||
|
this.parent(animate);
|
||||||
|
},
|
||||||
|
|
||||||
|
toggle: function() {
|
||||||
|
if (this.isOpen) {
|
||||||
|
this._button.selectCategory(null, null);
|
||||||
|
} else {
|
||||||
|
if (Main.overview.visible)
|
||||||
|
Main.overview.hide();
|
||||||
|
}
|
||||||
|
this.parent();
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
const ApplicationsButton = new Lang.Class({
|
const ApplicationsButton = new Lang.Class({
|
||||||
Name: 'AppsMenu.ApplicationsButton',
|
Name: 'ApplicationsButton',
|
||||||
Extends: PanelMenu.SystemStatusButton,
|
Extends: PanelMenu.Button,
|
||||||
|
|
||||||
_init: function() {
|
_init: function() {
|
||||||
this.parent('start-here');
|
this.parent(1.0, null, false);
|
||||||
|
this._hotCorner = Main.layoutManager.hotCorners[Main.layoutManager.primaryIndex];
|
||||||
|
|
||||||
this._appSys = Shell.AppSystem.get_default();
|
this.setMenu(new ApplicationsMenu(this.actor, 1.0, St.Side.TOP, this, this._hotCorner));
|
||||||
this._installedChangedId = this._appSys.connect('installed-changed', Lang.bind(this, this._refresh));
|
Main.panel.menuManager.addMenu(this.menu);
|
||||||
|
|
||||||
|
// At this moment applications menu is not keyboard navigable at
|
||||||
|
// all (so not accessible), so it doesn't make sense to set as
|
||||||
|
// role ATK_ROLE_MENU like other elements of the panel.
|
||||||
|
this.actor.accessible_role = Atk.Role.LABEL;
|
||||||
|
|
||||||
|
this._label = new St.Label({ text: _("Applications") });
|
||||||
|
|
||||||
|
this.actor.add_actor(this._label);
|
||||||
|
this.actor.name = 'panelApplications';
|
||||||
|
this.actor.label_actor = this._label;
|
||||||
|
|
||||||
|
this.actor.connect('captured-event', Lang.bind(this, this._onCapturedEvent));
|
||||||
|
|
||||||
|
_showingId = Main.overview.connect('showing', Lang.bind(this, function() {
|
||||||
|
this.actor.add_accessible_state (Atk.StateType.CHECKED);
|
||||||
|
}));
|
||||||
|
_hidingId = Main.overview.connect('hiding', Lang.bind(this, function() {
|
||||||
|
this.actor.remove_accessible_state (Atk.StateType.CHECKED);
|
||||||
|
}));
|
||||||
|
|
||||||
|
this.reloadFlag = false;
|
||||||
|
this._createLayout();
|
||||||
|
this._display();
|
||||||
|
_installedChangedId = appSys.connect('installed-changed', Lang.bind(this, function() {
|
||||||
|
if (this.menu.isOpen) {
|
||||||
|
this._redisplay();
|
||||||
|
this.mainBox.show();
|
||||||
|
} else {
|
||||||
|
this.reloadFlag = true;
|
||||||
|
}
|
||||||
|
}));
|
||||||
|
|
||||||
|
// Since the hot corner uses stage coordinates, Clutter won't
|
||||||
|
// queue relayouts for us when the panel moves. Queue a relayout
|
||||||
|
// when that happens.
|
||||||
|
_panelBoxChangedId = Main.layoutManager.connect('panel-box-changed', Lang.bind(this, function() {
|
||||||
|
container.queue_relayout();
|
||||||
|
}));
|
||||||
|
},
|
||||||
|
|
||||||
|
_createVertSeparator: function() {
|
||||||
|
let separator = new St.DrawingArea({ style_class: 'calendar-vertical-separator',
|
||||||
|
pseudo_class: 'highlighted' });
|
||||||
|
separator.connect('repaint', Lang.bind(this, this._onVertSepRepaint));
|
||||||
|
return separator;
|
||||||
|
},
|
||||||
|
|
||||||
|
_onCapturedEvent: function(actor, event) {
|
||||||
|
if (event.type() == Clutter.EventType.BUTTON_PRESS) {
|
||||||
|
if (!Main.overview.shouldToggleByCornerOrButton())
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
},
|
||||||
|
|
||||||
|
_onMenuKeyPress: function(actor, event) {
|
||||||
|
let symbol = event.get_key_symbol();
|
||||||
|
if (symbol == Clutter.KEY_Left || symbol == Clutter.KEY_Right) {
|
||||||
|
let direction = symbol == Clutter.KEY_Left ? Gtk.DirectionType.LEFT
|
||||||
|
: Gtk.DirectionType.RIGHT;
|
||||||
|
if (this.menu.actor.navigate_focus(global.stage.key_focus, direction, false))
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return this.parent(actor, event);
|
||||||
|
},
|
||||||
|
|
||||||
|
_onVertSepRepaint: function(area) {
|
||||||
|
let cr = area.get_context();
|
||||||
|
let themeNode = area.get_theme_node();
|
||||||
|
let [width, height] = area.get_surface_size();
|
||||||
|
let stippleColor = themeNode.get_color('-stipple-color');
|
||||||
|
let stippleWidth = themeNode.get_length('-stipple-width');
|
||||||
|
let x = Math.floor(width/2) + 0.5;
|
||||||
|
cr.moveTo(x, 0);
|
||||||
|
cr.lineTo(x, height);
|
||||||
|
Clutter.cairo_set_source_color(cr, stippleColor);
|
||||||
|
cr.setDash([1, 3], 1); // Hard-code for now
|
||||||
|
cr.setLineWidth(stippleWidth);
|
||||||
|
cr.stroke();
|
||||||
|
},
|
||||||
|
|
||||||
|
_onOpenStateChanged: function(menu, open) {
|
||||||
|
if (open) {
|
||||||
|
if (this.reloadFlag) {
|
||||||
|
this._redisplay();
|
||||||
|
this.reloadFlag = false;
|
||||||
|
}
|
||||||
|
this.mainBox.show();
|
||||||
|
}
|
||||||
|
this.parent(menu, open);
|
||||||
|
},
|
||||||
|
|
||||||
|
_redisplay: function() {
|
||||||
|
this.applicationsBox.destroy_all_children();
|
||||||
|
this.categoriesBox.destroy_all_children();
|
||||||
this._display();
|
this._display();
|
||||||
},
|
},
|
||||||
|
|
||||||
destroy: function() {
|
_loadCategory: function(categoryId, dir) {
|
||||||
this._appSys.disconnect(this._installedChangedId);
|
let iter = dir.iter();
|
||||||
|
let nextType;
|
||||||
this.parent();
|
|
||||||
},
|
|
||||||
|
|
||||||
_refresh: function() {
|
|
||||||
this._clearAll();
|
|
||||||
this._display();
|
|
||||||
},
|
|
||||||
|
|
||||||
_clearAll: function() {
|
|
||||||
this.menu.removeAll();
|
|
||||||
},
|
|
||||||
|
|
||||||
// Recursively load a GMenuTreeDirectory; we could put this in ShellAppSystem too
|
|
||||||
// (taken from js/ui/appDisplay.js in core shell)
|
|
||||||
_loadCategory: function(dir, menu) {
|
|
||||||
var iter = dir.iter();
|
|
||||||
var nextType;
|
|
||||||
while ((nextType = iter.next()) != GMenu.TreeItemType.INVALID) {
|
while ((nextType = iter.next()) != GMenu.TreeItemType.INVALID) {
|
||||||
if (nextType == GMenu.TreeItemType.ENTRY) {
|
if (nextType == GMenu.TreeItemType.ENTRY) {
|
||||||
var entry = iter.get_entry();
|
let entry = iter.get_entry();
|
||||||
var app = this._appSys.lookup_app_by_tree_entry(entry);
|
if (!entry.get_app_info().get_nodisplay()) {
|
||||||
if (!entry.get_app_info().get_nodisplay())
|
let app = appSys.lookup_app_by_tree_entry(entry);
|
||||||
menu.addMenuItem(new AppMenuItem(app));
|
let menu_id = dir.get_menu_id();
|
||||||
|
this.applicationsByCategory[categoryId].push(app);
|
||||||
|
}
|
||||||
} else if (nextType == GMenu.TreeItemType.DIRECTORY) {
|
} else if (nextType == GMenu.TreeItemType.DIRECTORY) {
|
||||||
this._loadCategory(iter.get_directory(), menu);
|
let subdir = iter.get_directory();
|
||||||
|
if (!subdir.get_is_nodisplay())
|
||||||
|
this._loadCategory(categoryId, subdir);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
_display : function() {
|
scrollToButton: function(button) {
|
||||||
let tree = this._appSys.get_tree();
|
let appsScrollBoxAdj = this.applicationsScrollBox.get_vscroll_bar().get_adjustment();
|
||||||
let root = tree.get_root_directory();
|
let appsScrollBoxAlloc = this.applicationsScrollBox.get_allocation_box();
|
||||||
|
let currentScrollValue = appsScrollBoxAdj.get_value();
|
||||||
|
let boxHeight = appsScrollBoxAlloc.y2 - appsScrollBoxAlloc.y1;
|
||||||
|
let buttonAlloc = button.actor.get_allocation_box();
|
||||||
|
let newScrollValue = currentScrollValue;
|
||||||
|
if (currentScrollValue > buttonAlloc.y1 - 10)
|
||||||
|
newScrollValue = buttonAlloc.y1 - 10;
|
||||||
|
if (boxHeight + currentScrollValue < buttonAlloc.y2 + 10)
|
||||||
|
newScrollValue = buttonAlloc.y2 - boxHeight + 10;
|
||||||
|
if (newScrollValue != currentScrollValue)
|
||||||
|
appsScrollBoxAdj.set_value(newScrollValue);
|
||||||
|
},
|
||||||
|
|
||||||
|
scrollToCatButton: function(button) {
|
||||||
|
let catsScrollBoxAdj = this.categoriesScrollBox.get_vscroll_bar().get_adjustment();
|
||||||
|
let catsScrollBoxAlloc = this.categoriesScrollBox.get_allocation_box();
|
||||||
|
let currentScrollValue = catsScrollBoxAdj.get_value();
|
||||||
|
let boxHeight = catsScrollBoxAlloc.y2 - catsScrollBoxAlloc.y1;
|
||||||
|
let buttonAlloc = button.actor.get_allocation_box();
|
||||||
|
let newScrollValue = currentScrollValue;
|
||||||
|
if (currentScrollValue > buttonAlloc.y1 - 10)
|
||||||
|
newScrollValue = buttonAlloc.y1 - 10;
|
||||||
|
if (boxHeight + currentScrollValue < buttonAlloc.y2 + 10)
|
||||||
|
newScrollValue = buttonAlloc.y2 - boxHeight + 10;
|
||||||
|
if (newScrollValue != currentScrollValue)
|
||||||
|
catsScrollBoxAdj.set_value(newScrollValue);
|
||||||
|
},
|
||||||
|
|
||||||
|
_createLayout: function() {
|
||||||
|
let section = new PopupMenu.PopupMenuSection();
|
||||||
|
this.menu.addMenuItem(section);
|
||||||
|
this.mainBox = new St.BoxLayout({ vertical: false });
|
||||||
|
this.leftBox = new St.BoxLayout({ vertical: true });
|
||||||
|
this.applicationsScrollBox = new St.ScrollView({ x_fill: true, y_fill: false,
|
||||||
|
y_align: St.Align.START,
|
||||||
|
style_class: 'apps-menu vfade' });
|
||||||
|
this.applicationsScrollBox.set_policy(Gtk.PolicyType.NEVER, Gtk.PolicyType.AUTOMATIC);
|
||||||
|
let vscroll = this.applicationsScrollBox.get_vscroll_bar();
|
||||||
|
vscroll.connect('scroll-start', Lang.bind(this, function() {
|
||||||
|
this.menu.passEvents = true;
|
||||||
|
}));
|
||||||
|
vscroll.connect('scroll-stop', Lang.bind(this, function() {
|
||||||
|
this.menu.passEvents = false;
|
||||||
|
}));
|
||||||
|
this.categoriesScrollBox = new St.ScrollView({ x_fill: true, y_fill: false,
|
||||||
|
y_align: St.Align.START,
|
||||||
|
style_class: 'vfade' });
|
||||||
|
this.categoriesScrollBox.set_policy(Gtk.PolicyType.NEVER, Gtk.PolicyType.AUTOMATIC);
|
||||||
|
vscroll = this.categoriesScrollBox.get_vscroll_bar();
|
||||||
|
vscroll.connect('scroll-start', Lang.bind(this, function() {
|
||||||
|
this.menu.passEvents = true;
|
||||||
|
}));
|
||||||
|
vscroll.connect('scroll-stop', Lang.bind(this, function() {
|
||||||
|
this.menu.passEvents = false;
|
||||||
|
}));
|
||||||
|
this.leftBox.add(this.categoriesScrollBox, { expand: true,
|
||||||
|
x_fill: true, y_fill: true,
|
||||||
|
y_align: St.Align.START });
|
||||||
|
|
||||||
|
let activities = new ActivitiesMenuItem(this);
|
||||||
|
this.leftBox.add(activities.actor, { expand: false,
|
||||||
|
x_fill: true, y_fill: false,
|
||||||
|
y_align: St.Align.START });
|
||||||
|
|
||||||
|
this.applicationsBox = new St.BoxLayout({ vertical: true });
|
||||||
|
this.applicationsScrollBox.add_actor(this.applicationsBox);
|
||||||
|
this.categoriesBox = new St.BoxLayout({ vertical: true });
|
||||||
|
this.categoriesScrollBox.add_actor(this.categoriesBox, { expand: true, x_fill: false });
|
||||||
|
|
||||||
|
this.mainBox.add(this.leftBox);
|
||||||
|
this.mainBox.add(this._createVertSeparator(), { expand: false, x_fill: false, y_fill: true});
|
||||||
|
this.mainBox.add(this.applicationsScrollBox, { expand: true, x_fill: true, y_fill: true });
|
||||||
|
section.actor.add_actor(this.mainBox);
|
||||||
|
},
|
||||||
|
|
||||||
|
_display: function() {
|
||||||
|
this._applicationsButtons = new Array();
|
||||||
|
this.mainBox.style=('width: 640px;');
|
||||||
|
this.mainBox.hide();
|
||||||
|
|
||||||
|
//Load categories
|
||||||
|
this.applicationsByCategory = {};
|
||||||
|
let tree = appSys.get_tree();
|
||||||
|
let root = tree.get_root_directory();
|
||||||
|
let categoryMenuItem = new CategoryMenuItem(this, null);
|
||||||
|
this.categoriesBox.add_actor(categoryMenuItem.actor);
|
||||||
let iter = root.iter();
|
let iter = root.iter();
|
||||||
let nextType;
|
let nextType;
|
||||||
while ((nextType = iter.next()) != GMenu.TreeItemType.INVALID) {
|
while ((nextType = iter.next()) != GMenu.TreeItemType.INVALID) {
|
||||||
if (nextType == GMenu.TreeItemType.DIRECTORY) {
|
if (nextType == GMenu.TreeItemType.DIRECTORY) {
|
||||||
let dir = iter.get_directory();
|
let dir = iter.get_directory();
|
||||||
let item = new PopupMenu.PopupSubMenuMenuItem(dir.get_name());
|
if (!dir.get_is_nodisplay()) {
|
||||||
this._loadCategory(dir, item.menu);
|
let categoryId = dir.get_menu_id();
|
||||||
this.menu.addMenuItem(item);
|
this.applicationsByCategory[categoryId] = [];
|
||||||
|
this._loadCategory(categoryId, dir);
|
||||||
|
if (this.applicationsByCategory[categoryId].length > 0) {
|
||||||
|
let categoryMenuItem = new CategoryMenuItem(this, dir);
|
||||||
|
this.categoriesBox.add_actor(categoryMenuItem.actor);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//Load applications
|
||||||
|
this._displayButtons(this._listApplications(null));
|
||||||
|
|
||||||
|
let height = this.categoriesBox.height + MENU_HEIGHT_OFFSET + 'px';
|
||||||
|
this.mainBox.style+=('height: ' + height);
|
||||||
|
},
|
||||||
|
|
||||||
|
_clearApplicationsBox: function(selectedActor) {
|
||||||
|
let actors = this.applicationsBox.get_children();
|
||||||
|
for (let i = 0; i < actors.length; i++) {
|
||||||
|
let actor = actors[i];
|
||||||
|
this.applicationsBox.remove_actor(actor);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
selectCategory: function(dir, categoryMenuItem) {
|
||||||
|
if (categoryMenuItem)
|
||||||
|
this._clearApplicationsBox(categoryMenuItem.actor);
|
||||||
|
else
|
||||||
|
this._clearApplicationsBox(null);
|
||||||
|
|
||||||
|
if (dir)
|
||||||
|
this._displayButtons(this._listApplications(dir.get_menu_id()));
|
||||||
|
else
|
||||||
|
this._displayButtons(this._listApplications(null));
|
||||||
|
},
|
||||||
|
|
||||||
|
_displayButtons: function(apps) {
|
||||||
|
if (apps) {
|
||||||
|
for (let i = 0; i < apps.length; i++) {
|
||||||
|
let app = apps[i];
|
||||||
|
if (!this._applicationsButtons[app]) {
|
||||||
|
let applicationMenuItem = new ApplicationMenuItem(this, app);
|
||||||
|
this._applicationsButtons[app] = applicationMenuItem;
|
||||||
|
}
|
||||||
|
if (!this._applicationsButtons[app].actor.get_parent())
|
||||||
|
this.applicationsBox.add_actor(this._applicationsButtons[app].actor);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
_listApplications: function(category_menu_id) {
|
||||||
|
let applist;
|
||||||
|
|
||||||
|
if (category_menu_id) {
|
||||||
|
applist = this.applicationsByCategory[category_menu_id];
|
||||||
|
} else {
|
||||||
|
applist = new Array();
|
||||||
|
let favorites = global.settings.get_strv('favorite-apps');
|
||||||
|
for (let i = 0; i < favorites.length; i++) {
|
||||||
|
let app = appSys.lookup_app(favorites[i]);
|
||||||
|
if (app)
|
||||||
|
applist.push(app);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
applist.sort(function(a,b) {
|
||||||
|
return a.get_name().toLowerCase() > b.get_name().toLowerCase();
|
||||||
|
});
|
||||||
|
return applist;
|
||||||
|
},
|
||||||
|
|
||||||
|
destroy: function() {
|
||||||
|
this.menu.actor.get_children().forEach(function(c) { c.destroy() });
|
||||||
|
this.parent();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
let appsMenuButton;
|
let appsMenuButton;
|
||||||
|
let activitiesButton;
|
||||||
|
let _hidingId;
|
||||||
|
let _installedChangedId;
|
||||||
|
let _panelBoxChangedId;
|
||||||
|
let _showingId;
|
||||||
|
|
||||||
function enable() {
|
function enable() {
|
||||||
|
activitiesButton = Main.panel.statusArea['activities'];
|
||||||
|
activitiesButton.container.hide();
|
||||||
appsMenuButton = new ApplicationsButton();
|
appsMenuButton = new ApplicationsButton();
|
||||||
Main.panel._leftBox.insert_actor(appsMenuButton.actor, 1);
|
Main.panel.addToStatusArea('apps-menu', appsMenuButton, 1, 'left');
|
||||||
Main.panel._leftBox.child_set(appsMenuButton.actor, { y_fill : true } );
|
|
||||||
Main.panel._menus.addMenu(appsMenuButton.menu);
|
Main.wm.setCustomKeybindingHandler('panel-main-menu',
|
||||||
|
Shell.KeyBindingMode.NORMAL |
|
||||||
|
Shell.KeyBindingMode.OVERVIEW,
|
||||||
|
function() {
|
||||||
|
appsMenuButton.menu.toggle();
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function disable() {
|
function disable() {
|
||||||
|
Main.panel.menuManager.removeMenu(appsMenuButton.menu);
|
||||||
|
appSys.disconnect(_installedChangedId);
|
||||||
|
Main.layoutManager.disconnect(_panelBoxChangedId);
|
||||||
|
Main.overview.disconnect(_hidingId);
|
||||||
|
Main.overview.disconnect(_showingId);
|
||||||
appsMenuButton.destroy();
|
appsMenuButton.destroy();
|
||||||
|
activitiesButton.container.show();
|
||||||
|
|
||||||
|
Main.wm.setCustomKeybindingHandler('panel-main-menu',
|
||||||
|
Shell.KeyBindingMode.NORMAL |
|
||||||
|
Shell.KeyBindingMode.OVERVIEW,
|
||||||
|
Main.sessionMode.hasOverview ?
|
||||||
|
Lang.bind(Main.overview, Main.overview.toggle) :
|
||||||
|
null);
|
||||||
}
|
}
|
||||||
|
|
||||||
function init() {
|
function init(metadata) {
|
||||||
/* do nothing */
|
Convenience.initTranslations();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
{
|
{
|
||||||
"extension-id": "@extension_id@",
|
"extension-id": "@extension_id@",
|
||||||
"uuid": "@uuid@",
|
"uuid": "@uuid@",
|
||||||
"settings-schema": "@gschemaname@",
|
|
||||||
"gettext-domain": "@gettext_domain@",
|
"gettext-domain": "@gettext_domain@",
|
||||||
"name": "Applications Menu",
|
"name": "Applications Menu",
|
||||||
"description": "Add a gnome 2.x style menu for applications",
|
"description": "Add a category-based menu for applications.\nThis extension is part of Classic Mode and is officially supported by GNOME. Please do not report bugs using the form below, use GNOME Bugzilla instead.",
|
||||||
|
"original-authors": [ "e2002@bk.ru", "debarshir@gnome.org" ],
|
||||||
"shell-version": [ "@shell_current@" ],
|
"shell-version": [ "@shell_current@" ],
|
||||||
"url": "@url@"
|
"url": "@url@"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1 +1,7 @@
|
|||||||
/* none used*/
|
.apps-menu:ltr {
|
||||||
|
padding-right: 3px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.apps-menu:rtl {
|
||||||
|
padding-left: 3px;
|
||||||
|
}
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
EXTENSION_ID = auto-move-windows
|
EXTENSION_ID = auto-move-windows
|
||||||
|
|
||||||
|
EXTRA_MODULES = prefs.js
|
||||||
|
|
||||||
include ../../extension.mk
|
include ../../extension.mk
|
||||||
include ../../settings.mk
|
include ../../settings.mk
|
||||||
|
|
||||||
|
|||||||
@@ -87,75 +87,76 @@ function init() {
|
|||||||
settings = Convenience.getSettings();
|
settings = Convenience.getSettings();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function myCheckWorkspaces() {
|
||||||
|
let i;
|
||||||
|
let emptyWorkspaces = new Array(Main._workspaces.length);
|
||||||
|
|
||||||
|
for (i = 0; i < Main._workspaces.length; i++) {
|
||||||
|
let lastRemoved = Main._workspaces[i]._lastRemovedWindow;
|
||||||
|
if (lastRemoved &&
|
||||||
|
(lastRemoved.get_window_type() == Meta.WindowType.SPLASHSCREEN ||
|
||||||
|
lastRemoved.get_window_type() == Meta.WindowType.DIALOG ||
|
||||||
|
lastRemoved.get_window_type() == Meta.WindowType.MODAL_DIALOG))
|
||||||
|
emptyWorkspaces[i] = false;
|
||||||
|
else
|
||||||
|
emptyWorkspaces[i] = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
let windows = global.get_window_actors();
|
||||||
|
for (i = 0; i < windows.length; i++) {
|
||||||
|
let win = windows[i];
|
||||||
|
|
||||||
|
if (win.get_meta_window().is_on_all_workspaces())
|
||||||
|
continue;
|
||||||
|
|
||||||
|
let workspaceIndex = win.get_workspace();
|
||||||
|
emptyWorkspaces[workspaceIndex] = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// If we don't have an empty workspace at the end, add one
|
||||||
|
if (!emptyWorkspaces[emptyWorkspaces.length -1]) {
|
||||||
|
global.screen.append_new_workspace(false, global.get_current_time());
|
||||||
|
emptyWorkspaces.push(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
let activeWorkspaceIndex = global.screen.get_active_workspace_index();
|
||||||
|
let activeIsLast = activeWorkspaceIndex == global.screen.n_workspaces - 2;
|
||||||
|
let removingTrailWorkspaces = (emptyWorkspaces[activeWorkspaceIndex] &&
|
||||||
|
activeIsLast);
|
||||||
|
// Don't enter the overview when removing multiple empty workspaces at startup
|
||||||
|
let showOverview = (removingTrailWorkspaces &&
|
||||||
|
!emptyWorkspaces.every(function(x) { return x; }));
|
||||||
|
|
||||||
|
if (removingTrailWorkspaces) {
|
||||||
|
// "Merge" the empty workspace we are removing with the one at the end
|
||||||
|
Main.wm.blockAnimations();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Delete other empty workspaces; do it from the end to avoid index changes
|
||||||
|
for (i = emptyWorkspaces.length - 2; i >= 0; i--) {
|
||||||
|
if (emptyWorkspaces[i])
|
||||||
|
global.screen.remove_workspace(Main._workspaces[i], global.get_current_time());
|
||||||
|
else
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (removingTrailWorkspaces) {
|
||||||
|
global.screen.get_workspace_by_index(global.screen.n_workspaces - 1).activate(global.get_current_time());
|
||||||
|
|
||||||
|
Main.wm.unblockAnimations();
|
||||||
|
|
||||||
|
if (!Main.overview.visible && showOverview)
|
||||||
|
Main.overview.show();
|
||||||
|
}
|
||||||
|
|
||||||
|
Main._checkWorkspacesId = 0;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
function enable() {
|
function enable() {
|
||||||
prevCheckWorkspaces = Main._checkWorkspaces;
|
prevCheckWorkspaces = Main._checkWorkspaces;
|
||||||
Main._checkWorkspaces = function() {
|
if (Meta.prefs_get_dynamic_workspaces())
|
||||||
let i;
|
Main._checkWorkspaces = myCheckWorkspaces;
|
||||||
let emptyWorkspaces = new Array(Main._workspaces.length);
|
|
||||||
|
|
||||||
for (i = 0; i < Main._workspaces.length; i++) {
|
|
||||||
let lastRemoved = Main._workspaces[i]._lastRemovedWindow;
|
|
||||||
if (lastRemoved &&
|
|
||||||
(lastRemoved.get_window_type() == Meta.WindowType.SPLASHSCREEN ||
|
|
||||||
lastRemoved.get_window_type() == Meta.WindowType.DIALOG ||
|
|
||||||
lastRemoved.get_window_type() == Meta.WindowType.MODAL_DIALOG))
|
|
||||||
emptyWorkspaces[i] = false;
|
|
||||||
else
|
|
||||||
emptyWorkspaces[i] = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
let windows = global.get_window_actors();
|
|
||||||
for (i = 0; i < windows.length; i++) {
|
|
||||||
let win = windows[i];
|
|
||||||
|
|
||||||
if (win.get_meta_window().is_on_all_workspaces())
|
|
||||||
continue;
|
|
||||||
|
|
||||||
let workspaceIndex = win.get_workspace();
|
|
||||||
emptyWorkspaces[workspaceIndex] = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
// If we don't have an empty workspace at the end, add one
|
|
||||||
if (!emptyWorkspaces[emptyWorkspaces.length -1]) {
|
|
||||||
global.screen.append_new_workspace(false, global.get_current_time());
|
|
||||||
emptyWorkspaces.push(false);
|
|
||||||
}
|
|
||||||
|
|
||||||
let activeWorkspaceIndex = global.screen.get_active_workspace_index();
|
|
||||||
let activeIsLast = activeWorkspaceIndex == global.screen.n_workspaces - 2;
|
|
||||||
let removingTrailWorkspaces = (emptyWorkspaces[activeWorkspaceIndex] &&
|
|
||||||
activeIsLast);
|
|
||||||
// Don't enter the overview when removing multiple empty workspaces at startup
|
|
||||||
let showOverview = (removingTrailWorkspaces &&
|
|
||||||
!emptyWorkspaces.every(function(x) { return x; }));
|
|
||||||
|
|
||||||
if (removingTrailWorkspaces) {
|
|
||||||
// "Merge" the empty workspace we are removing with the one at the end
|
|
||||||
Main.wm.blockAnimations();
|
|
||||||
}
|
|
||||||
|
|
||||||
// Delete other empty workspaces; do it from the end to avoid index changes
|
|
||||||
for (i = emptyWorkspaces.length - 2; i >= 0; i--) {
|
|
||||||
if (emptyWorkspaces[i])
|
|
||||||
global.screen.remove_workspace(Main._workspaces[i], global.get_current_time());
|
|
||||||
else
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (removingTrailWorkspaces) {
|
|
||||||
global.screen.get_workspace_by_index(global.screen.n_workspaces - 1).activate(global.get_current_time());
|
|
||||||
|
|
||||||
Main.wm.unblockAnimations();
|
|
||||||
|
|
||||||
if (!Main.overview.visible && showOverview)
|
|
||||||
Main.overview.show();
|
|
||||||
}
|
|
||||||
|
|
||||||
Main._checkWorkspacesId = 0;
|
|
||||||
return false;
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
winMover = new WindowMover();
|
winMover = new WindowMover();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
"settings-schema": "@gschemaname@",
|
"settings-schema": "@gschemaname@",
|
||||||
"gettext-domain": "@gettext_domain@",
|
"gettext-domain": "@gettext_domain@",
|
||||||
"name": "Auto Move Windows",
|
"name": "Auto Move Windows",
|
||||||
"description": "Move applications to specific workspaces when they create windows",
|
"description": "Move applications to specific workspaces when they create windows.",
|
||||||
"shell-version": [ "@shell_current@" ],
|
"shell-version": [ "@shell_current@" ],
|
||||||
"original-authors": [ "alessandro.crismani@gmail.com", "thomas.bouffon@gmail.com" ],
|
"original-authors": [ "alessandro.crismani@gmail.com", "thomas.bouffon@gmail.com" ],
|
||||||
"url": "@url@"
|
"url": "@url@"
|
||||||
|
|||||||
@@ -0,0 +1,260 @@
|
|||||||
|
// -*- mode: js2; indent-tabs-mode: nil; js2-basic-offset: 4 -*-
|
||||||
|
// Start apps on custom workspaces
|
||||||
|
|
||||||
|
const GdkPixbuf = imports.gi.GdkPixbuf;
|
||||||
|
const Gio = imports.gi.Gio;
|
||||||
|
const GLib = imports.gi.GLib;
|
||||||
|
const GObject = imports.gi.GObject;
|
||||||
|
const GMenu = imports.gi.GMenu;
|
||||||
|
const Gtk = imports.gi.Gtk;
|
||||||
|
const Lang = imports.lang;
|
||||||
|
const Mainloop = imports.mainloop;
|
||||||
|
|
||||||
|
const Gettext = imports.gettext.domain('gnome-shell-extensions');
|
||||||
|
const _ = Gettext.gettext;
|
||||||
|
const N_ = function(e) { return e };
|
||||||
|
|
||||||
|
const ExtensionUtils = imports.misc.extensionUtils;
|
||||||
|
const Me = ExtensionUtils.getCurrentExtension();
|
||||||
|
const Convenience = Me.imports.convenience;
|
||||||
|
|
||||||
|
const SETTINGS_KEY = 'application-list';
|
||||||
|
|
||||||
|
const WORKSPACE_MAX = 36; // compiled in limit of mutter
|
||||||
|
|
||||||
|
const Columns = {
|
||||||
|
APPINFO: 0,
|
||||||
|
DISPLAY_NAME: 1,
|
||||||
|
ICON: 2,
|
||||||
|
WORKSPACE: 3,
|
||||||
|
ADJUSTMENT: 4
|
||||||
|
};
|
||||||
|
|
||||||
|
const Widget = new GObject.Class({
|
||||||
|
Name: 'AutoMoveWindows.Prefs.Widget',
|
||||||
|
GTypeName: 'AutoMoveWindowsPrefsWidget',
|
||||||
|
Extends: Gtk.Grid,
|
||||||
|
|
||||||
|
_init: function(params) {
|
||||||
|
this.parent(params);
|
||||||
|
this.set_orientation(Gtk.Orientation.VERTICAL);
|
||||||
|
|
||||||
|
this._settings = Convenience.getSettings();
|
||||||
|
this._settings.connect('changed', Lang.bind(this, this._refresh));
|
||||||
|
this._changedPermitted = false;
|
||||||
|
|
||||||
|
this._store = new Gtk.ListStore();
|
||||||
|
this._store.set_column_types([Gio.AppInfo, GObject.TYPE_STRING, Gio.Icon, GObject.TYPE_INT,
|
||||||
|
Gtk.Adjustment]);
|
||||||
|
|
||||||
|
this._treeView = new Gtk.TreeView({ model: this._store,
|
||||||
|
hexpand: true, vexpand: true });
|
||||||
|
this._treeView.get_selection().set_mode(Gtk.SelectionMode.SINGLE);
|
||||||
|
|
||||||
|
let appColumn = new Gtk.TreeViewColumn({ expand: true, sort_column_id: Columns.DISPLAY_NAME,
|
||||||
|
title: _("Application") });
|
||||||
|
let iconRenderer = new Gtk.CellRendererPixbuf;
|
||||||
|
appColumn.pack_start(iconRenderer, false);
|
||||||
|
appColumn.add_attribute(iconRenderer, "gicon", Columns.ICON);
|
||||||
|
let nameRenderer = new Gtk.CellRendererText;
|
||||||
|
appColumn.pack_start(nameRenderer, true);
|
||||||
|
appColumn.add_attribute(nameRenderer, "text", Columns.DISPLAY_NAME);
|
||||||
|
this._treeView.append_column(appColumn);
|
||||||
|
|
||||||
|
let workspaceColumn = new Gtk.TreeViewColumn({ title: _("Workspace"),
|
||||||
|
sort_column_id: Columns.WORKSPACE });
|
||||||
|
let workspaceRenderer = new Gtk.CellRendererSpin({ editable: true });
|
||||||
|
workspaceRenderer.connect('edited', Lang.bind(this, this._workspaceEdited));
|
||||||
|
workspaceColumn.pack_start(workspaceRenderer, true);
|
||||||
|
workspaceColumn.add_attribute(workspaceRenderer, "adjustment", Columns.ADJUSTMENT);
|
||||||
|
workspaceColumn.add_attribute(workspaceRenderer, "text", Columns.WORKSPACE);
|
||||||
|
this._treeView.append_column(workspaceColumn);
|
||||||
|
|
||||||
|
this.add(this._treeView);
|
||||||
|
|
||||||
|
let toolbar = new Gtk.Toolbar();
|
||||||
|
toolbar.get_style_context().add_class(Gtk.STYLE_CLASS_INLINE_TOOLBAR);
|
||||||
|
this.add(toolbar);
|
||||||
|
|
||||||
|
let newButton = new Gtk.ToolButton({ stock_id: Gtk.STOCK_NEW,
|
||||||
|
label: _("Add rule"),
|
||||||
|
is_important: true });
|
||||||
|
newButton.connect('clicked', Lang.bind(this, this._createNew));
|
||||||
|
toolbar.add(newButton);
|
||||||
|
|
||||||
|
let delButton = new Gtk.ToolButton({ stock_id: Gtk.STOCK_DELETE });
|
||||||
|
delButton.connect('clicked', Lang.bind(this, this._deleteSelected));
|
||||||
|
toolbar.add(delButton);
|
||||||
|
|
||||||
|
this._changedPermitted = true;
|
||||||
|
this._refresh();
|
||||||
|
},
|
||||||
|
|
||||||
|
_createNew: function() {
|
||||||
|
let dialog = new Gtk.Dialog({ title: _("Create new matching rule"),
|
||||||
|
transient_for: this.get_toplevel(),
|
||||||
|
modal: true });
|
||||||
|
dialog.add_button(Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL);
|
||||||
|
dialog.add_button(_("Add"), Gtk.ResponseType.OK);
|
||||||
|
dialog.set_default_response(Gtk.ResponseType.OK);
|
||||||
|
|
||||||
|
let grid = new Gtk.Grid({ column_spacing: 10,
|
||||||
|
row_spacing: 15,
|
||||||
|
margin: 10 });
|
||||||
|
dialog._appChooser = new Gtk.AppChooserWidget({ show_all: true });
|
||||||
|
grid.attach(dialog._appChooser, 0, 0, 2, 1);
|
||||||
|
grid.attach(new Gtk.Label({ label: _("Workspace") }),
|
||||||
|
0, 1, 1, 1);
|
||||||
|
let adjustment = new Gtk.Adjustment({ lower: 1,
|
||||||
|
upper: WORKSPACE_MAX,
|
||||||
|
step_increment: 1
|
||||||
|
});
|
||||||
|
dialog._spin = new Gtk.SpinButton({ adjustment: adjustment,
|
||||||
|
snap_to_ticks: true });
|
||||||
|
dialog._spin.set_value(1);
|
||||||
|
grid.attach(dialog._spin, 1, 1, 1, 1);
|
||||||
|
dialog.get_content_area().add(grid);
|
||||||
|
|
||||||
|
dialog.connect('response', Lang.bind(this, function(dialog, id) {
|
||||||
|
if (id != Gtk.ResponseType.OK) {
|
||||||
|
dialog.destroy();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
let appInfo = dialog._appChooser.get_app_info();
|
||||||
|
if (!appInfo)
|
||||||
|
return;
|
||||||
|
let index = Math.floor(dialog._spin.value);
|
||||||
|
if (isNaN(index) || index < 0)
|
||||||
|
index = 1;
|
||||||
|
|
||||||
|
this._changedPermitted = false;
|
||||||
|
if (!this._appendItem(appInfo.get_id(), index)) {
|
||||||
|
this._changedPermitted = true;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
let iter = this._store.append();
|
||||||
|
let adj = new Gtk.Adjustment({ lower: 1,
|
||||||
|
upper: WORKSPACE_MAX,
|
||||||
|
step_increment: 1,
|
||||||
|
value: index });
|
||||||
|
this._store.set(iter,
|
||||||
|
[Columns.APPINFO, Columns.ICON, Columns.DISPLAY_NAME, Columns.WORKSPACE, Columns.ADJUSTMENT],
|
||||||
|
[appInfo, appInfo.get_icon(), appInfo.get_display_name(), index, adj]);
|
||||||
|
this._changedPermitted = true;
|
||||||
|
|
||||||
|
dialog.destroy();
|
||||||
|
}));
|
||||||
|
dialog.show_all();
|
||||||
|
},
|
||||||
|
|
||||||
|
_deleteSelected: function() {
|
||||||
|
let [any, model, iter] = this._treeView.get_selection().get_selected();
|
||||||
|
|
||||||
|
if (any) {
|
||||||
|
let appInfo = this._store.get_value(iter, Columns.APPINFO);
|
||||||
|
|
||||||
|
this._changedPermitted = false;
|
||||||
|
this._removeItem(appInfo.get_id());
|
||||||
|
this._store.remove(iter);
|
||||||
|
this._changedPermitted = true;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
_workspaceEdited: function(renderer, pathString, text) {
|
||||||
|
let index = parseInt(text);
|
||||||
|
if (isNaN(index) || index < 0)
|
||||||
|
index = 1;
|
||||||
|
let path = Gtk.TreePath.new_from_string(pathString);
|
||||||
|
let [model, iter] = this._store.get_iter(path);
|
||||||
|
let appInfo = this._store.get_value(iter, Columns.APPINFO);
|
||||||
|
|
||||||
|
this._changedPermitted = false;
|
||||||
|
this._changeItem(appInfo.get_id(), index);
|
||||||
|
this._store.set_value(iter, Columns.WORKSPACE, index);
|
||||||
|
this._changedPermitted = true;
|
||||||
|
},
|
||||||
|
|
||||||
|
_refresh: function() {
|
||||||
|
if (!this._changedPermitted)
|
||||||
|
// Ignore this notification, model is being modified outside
|
||||||
|
return;
|
||||||
|
|
||||||
|
this._store.clear();
|
||||||
|
|
||||||
|
let currentItems = this._settings.get_strv(SETTINGS_KEY);
|
||||||
|
let validItems = [ ];
|
||||||
|
for (let i = 0; i < currentItems.length; i++) {
|
||||||
|
let [id, index] = currentItems[i].split(':');
|
||||||
|
let appInfo = Gio.DesktopAppInfo.new(id);
|
||||||
|
if (!appInfo)
|
||||||
|
continue;
|
||||||
|
validItems.push(currentItems[i]);
|
||||||
|
|
||||||
|
let iter = this._store.append();
|
||||||
|
let adj = new Gtk.Adjustment({ lower: 1,
|
||||||
|
upper: WORKSPACE_MAX,
|
||||||
|
step_increment: 1,
|
||||||
|
value: index });
|
||||||
|
this._store.set(iter,
|
||||||
|
[Columns.APPINFO, Columns.ICON, Columns.DISPLAY_NAME, Columns.WORKSPACE, Columns.ADJUSTMENT],
|
||||||
|
[appInfo, appInfo.get_icon(), appInfo.get_display_name(), parseInt(index), adj]);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (validItems.length != currentItems.length) // some items were filtered out
|
||||||
|
this._settings.set_strv(SETTINGS_KEY, validItems);
|
||||||
|
},
|
||||||
|
|
||||||
|
_appendItem: function(id, workspace) {
|
||||||
|
let currentItems = this._settings.get_strv(SETTINGS_KEY);
|
||||||
|
let alreadyHave = currentItems.map(function(el) {
|
||||||
|
return el.split(':')[0];
|
||||||
|
}).indexOf(id) != -1;
|
||||||
|
|
||||||
|
if (alreadyHave) {
|
||||||
|
printerr("Already have an item for this id");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
currentItems.push(id + ':' + workspace);
|
||||||
|
this._settings.set_strv(SETTINGS_KEY, currentItems);
|
||||||
|
return true;
|
||||||
|
},
|
||||||
|
|
||||||
|
_removeItem: function(id) {
|
||||||
|
let currentItems = this._settings.get_strv(SETTINGS_KEY);
|
||||||
|
let index = currentItems.map(function(el) {
|
||||||
|
return el.split(':')[0];
|
||||||
|
}).indexOf(id);
|
||||||
|
|
||||||
|
if (index < 0)
|
||||||
|
return;
|
||||||
|
currentItems.splice(index, 1);
|
||||||
|
this._settings.set_strv(SETTINGS_KEY, currentItems);
|
||||||
|
},
|
||||||
|
|
||||||
|
_changeItem: function(id, workspace) {
|
||||||
|
let currentItems = this._settings.get_strv(SETTINGS_KEY);
|
||||||
|
let index = currentItems.map(function(el) {
|
||||||
|
return el.split(':')[0];
|
||||||
|
}).indexOf(id);
|
||||||
|
|
||||||
|
if (index < 0)
|
||||||
|
currentItems.push(id + ':' + workspace);
|
||||||
|
else
|
||||||
|
currentItems[index] = id + ':' + workspace;
|
||||||
|
this._settings.set_strv(SETTINGS_KEY, currentItems);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
function init() {
|
||||||
|
Convenience.initTranslations();
|
||||||
|
}
|
||||||
|
|
||||||
|
function buildPrefsWidget() {
|
||||||
|
let widget = new Widget();
|
||||||
|
widget.show_all();
|
||||||
|
|
||||||
|
return widget;
|
||||||
|
}
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
EXTENSION_ID = default-min-max
|
||||||
|
|
||||||
|
include ../../extension.mk
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
// -*- mode: js2; indent-tabs-mode: nil; js2-basic-offset: 4 -*-
|
||||||
|
|
||||||
|
const Meta = imports.gi.Meta;
|
||||||
|
|
||||||
|
const BUTTON_LAYOUT_KEY = 'button-layout';
|
||||||
|
const EXTENSION_SCHEMA = 'org.gnome.desktop.wm.preferences';
|
||||||
|
const SHELL_OVERRIDES_SCHEMA = 'org.gnome.shell.overrides';
|
||||||
|
|
||||||
|
function init(metadata) {
|
||||||
|
}
|
||||||
|
|
||||||
|
function enable() {
|
||||||
|
// Override gnome-shell's overrides
|
||||||
|
Meta.prefs_override_preference_schema(BUTTON_LAYOUT_KEY, EXTENSION_SCHEMA);
|
||||||
|
}
|
||||||
|
|
||||||
|
function disable() {
|
||||||
|
// Restore gnome-shell's overrides
|
||||||
|
Meta.prefs_override_preference_schema(BUTTON_LAYOUT_KEY, SHELL_OVERRIDES_SCHEMA);
|
||||||
|
}
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
{
|
||||||
|
"extension-id": "@extension_id@",
|
||||||
|
"uuid": "@uuid@",
|
||||||
|
"settings-schema": "@gschemaname@",
|
||||||
|
"gettext-domain": "@gettext_domain@",
|
||||||
|
"name": "Default Minimize and Maximize",
|
||||||
|
"description": "Adds minimize and maximize buttons to the titlebar by default.\nThis extension is part of Classic Mode and is officially supported by GNOME. Please do not report bugs using the form below, use GNOME Bugzilla instead.",
|
||||||
|
"original-authors": [ "debarshir@gnome.org" ],
|
||||||
|
"shell-version": [ "@shell_current@" ],
|
||||||
|
"url": "@url@"
|
||||||
|
}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
/* This extensions requires no special styling */
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
EXTENSION_ID = dock
|
|
||||||
|
|
||||||
include ../../extension.mk
|
|
||||||
include ../../settings.mk
|
|
||||||
|
|
||||||
@@ -1,880 +0,0 @@
|
|||||||
/* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */
|
|
||||||
|
|
||||||
const Clutter = imports.gi.Clutter;
|
|
||||||
const Pango = imports.gi.Pango;
|
|
||||||
const GLib = imports.gi.GLib;
|
|
||||||
const Gio = imports.gi.Gio;
|
|
||||||
const Gtk = imports.gi.Gtk;
|
|
||||||
const Shell = imports.gi.Shell;
|
|
||||||
const Lang = imports.lang;
|
|
||||||
const Signals = imports.signals;
|
|
||||||
const St = imports.gi.St;
|
|
||||||
const Mainloop = imports.mainloop;
|
|
||||||
|
|
||||||
const AppFavorites = imports.ui.appFavorites;
|
|
||||||
const DND = imports.ui.dnd;
|
|
||||||
const Main = imports.ui.main;
|
|
||||||
const Overview = imports.ui.overview;
|
|
||||||
const PopupMenu = imports.ui.popupMenu;
|
|
||||||
const Search = imports.ui.search;
|
|
||||||
const Tweener = imports.ui.tweener;
|
|
||||||
const Workspace = imports.ui.workspace;
|
|
||||||
const AppDisplay = imports.ui.appDisplay;
|
|
||||||
const AltTab = imports.ui.altTab;
|
|
||||||
|
|
||||||
const Gettext = imports.gettext.domain('gnome-shell-extensions');
|
|
||||||
const _ = Gettext.gettext;
|
|
||||||
|
|
||||||
const ExtensionUtils = imports.misc.extensionUtils;
|
|
||||||
const Me = ExtensionUtils.getCurrentExtension();
|
|
||||||
const Convenience = Me.imports.convenience;
|
|
||||||
|
|
||||||
// Settings
|
|
||||||
const DOCK_POSITION_KEY = 'position';
|
|
||||||
const DOCK_SIZE_KEY = 'size';
|
|
||||||
const DOCK_HIDE_KEY = 'autohide';
|
|
||||||
const DOCK_EFFECTHIDE_KEY = 'hide-effect';
|
|
||||||
const DOCK_AUTOHIDE_ANIMATION_TIME_KEY = 'hide-effect-duration';
|
|
||||||
|
|
||||||
// Keep enums in sync with GSettings schemas
|
|
||||||
const PositionMode = {
|
|
||||||
LEFT: 0,
|
|
||||||
RIGHT: 1
|
|
||||||
};
|
|
||||||
|
|
||||||
const AutoHideEffect = {
|
|
||||||
RESIZE: 0,
|
|
||||||
RESCALE: 1,
|
|
||||||
MOVE: 2
|
|
||||||
};
|
|
||||||
|
|
||||||
const DND_RAISE_APP_TIMEOUT = 500;
|
|
||||||
|
|
||||||
/*************************************************************************************/
|
|
||||||
/**** start resize's Dock functions *****************/
|
|
||||||
/*************************************************************************************/
|
|
||||||
function hideDock_size () {
|
|
||||||
if (!this._hideable)
|
|
||||||
return;
|
|
||||||
|
|
||||||
let monitor = Main.layoutManager.primaryMonitor
|
|
||||||
let position_x = monitor.x;
|
|
||||||
let height = (this._nicons)*(this._item_size + this._spacing) + 2*this._spacing;
|
|
||||||
let width = this._item_size + 4*this._spacing;
|
|
||||||
|
|
||||||
Tweener.addTween(this, {
|
|
||||||
_item_size: 1,
|
|
||||||
time: this._settings.get_double(DOCK_AUTOHIDE_ANIMATION_TIME_KEY),
|
|
||||||
transition: 'easeOutQuad',
|
|
||||||
onUpdate: function () {
|
|
||||||
height = (this._nicons)*(this._item_size + this._spacing) + 2*this._spacing;
|
|
||||||
width = this._item_size + 4*this._spacing;
|
|
||||||
switch (this._settings.get_enum(DOCK_POSITION_KEY)) {
|
|
||||||
case PositionMode.LEFT:
|
|
||||||
position_x=monitor.x-2*this._spacing;
|
|
||||||
break;
|
|
||||||
case PositionMode.RIGHT:
|
|
||||||
default:
|
|
||||||
position_x = monitor.x + (monitor.width-1-this._item_size-2*this._spacing);
|
|
||||||
}
|
|
||||||
this.actor.set_position (position_x,monitor.y+(monitor.height-height)/2);
|
|
||||||
this.actor.set_size(width,height);
|
|
||||||
},
|
|
||||||
});
|
|
||||||
|
|
||||||
this._hidden = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
function showDock_size () {
|
|
||||||
let monitor = Main.layoutManager.primaryMonitor;
|
|
||||||
let height = (this._nicons)*(this._item_size + this._spacing) + 2*this._spacing;
|
|
||||||
let width = this._item_size + 4*this._spacing;
|
|
||||||
let position_x = monitor.x;
|
|
||||||
|
|
||||||
Tweener.addTween(this, {
|
|
||||||
_item_size: this._settings.get_int(DOCK_SIZE_KEY),
|
|
||||||
time: this._settings.get_double(DOCK_AUTOHIDE_ANIMATION_TIME_KEY),
|
|
||||||
transition: 'easeOutQuad',
|
|
||||||
onUpdate: function () {
|
|
||||||
height = (this._nicons)*(this._item_size + this._spacing) + 2*this._spacing;
|
|
||||||
width = this._item_size + 4*this._spacing;
|
|
||||||
switch (this._settings.get_enum(DOCK_POSITION_KEY)) {
|
|
||||||
case PositionMode.LEFT:
|
|
||||||
position_x=monitor.x-2*this._spacing;
|
|
||||||
break;
|
|
||||||
case PositionMode.RIGHT:
|
|
||||||
default:
|
|
||||||
position_x=monitor.x + (monitor.width-this._item_size-2*this._spacing);
|
|
||||||
}
|
|
||||||
this.actor.set_position (position_x, monitor.y+(monitor.height-height)/2);
|
|
||||||
this.actor.set_size(width,height);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
this._hidden = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
function showEffectAddItem_size () {
|
|
||||||
let primary = Main.layoutManager.primaryMonitor;
|
|
||||||
let height = (this._nicons)*(this._item_size + this._spacing) + 2*this._spacing;
|
|
||||||
let width = this._item_size + 4*this._spacing;
|
|
||||||
|
|
||||||
Tweener.addTween(this.actor, {
|
|
||||||
y: primary.y + (primary.height-height)/2,
|
|
||||||
height: height,
|
|
||||||
width: width,
|
|
||||||
time: this._settings.get_double(DOCK_AUTOHIDE_ANIMATION_TIME_KEY),
|
|
||||||
transition: 'easeOutQuad'
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**************************************************************************************/
|
|
||||||
/**** start rescale's Dock functions *****************/
|
|
||||||
/**************************************************************************************/
|
|
||||||
function hideDock_scale () {
|
|
||||||
if (!this._hideable)
|
|
||||||
return;
|
|
||||||
|
|
||||||
this._item_size = this._settings.get_int(DOCK_SIZE_KEY);
|
|
||||||
let monitor = Main.layoutManager.primaryMonitor;
|
|
||||||
let cornerX = 0;
|
|
||||||
let height = this._nicons*(this._item_size + this._spacing) + 2*this._spacing;
|
|
||||||
let width = this._item_size + 4*this._spacing;
|
|
||||||
|
|
||||||
switch (this._settings.get_enum(DOCK_POSITION_KEY)) {
|
|
||||||
case PositionMode.LEFT:
|
|
||||||
cornerX=monitor.x;
|
|
||||||
break;
|
|
||||||
case PositionMode.RIGHT:
|
|
||||||
default:
|
|
||||||
cornerX = monitor.x + monitor.width-1;
|
|
||||||
}
|
|
||||||
|
|
||||||
Tweener.addTween(this.actor,{
|
|
||||||
y: monitor.y + (monitor.height-height)/2,
|
|
||||||
x: cornerX,
|
|
||||||
height:height,
|
|
||||||
width: width,
|
|
||||||
scale_x: 0.025,
|
|
||||||
time: this._settings.get_double(DOCK_AUTOHIDE_ANIMATION_TIME_KEY),
|
|
||||||
transition: 'easeOutQuad'
|
|
||||||
});
|
|
||||||
|
|
||||||
this._hidden = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
function showDock_scale () {
|
|
||||||
this._item_size = this._settings.get_int(DOCK_SIZE_KEY);
|
|
||||||
let monitor = Main.layoutManager.primaryMonitor;
|
|
||||||
let position_x = monitor.x;
|
|
||||||
let height = this._nicons*(this._item_size + this._spacing) + 2*this._spacing;
|
|
||||||
let width = this._item_size + 4*this._spacing;
|
|
||||||
|
|
||||||
switch (this._settings.get_enum(DOCK_POSITION_KEY)) {
|
|
||||||
case PositionMode.LEFT:
|
|
||||||
position_x=monitor.x-2*this._spacing;
|
|
||||||
break;
|
|
||||||
case PositionMode.RIGHT:
|
|
||||||
default:
|
|
||||||
position_x=monitor.x + (monitor.width-this._item_size-2*this._spacing);
|
|
||||||
}
|
|
||||||
Tweener.addTween(this.actor, {
|
|
||||||
y: monitor.y + (monitor.height-height)/2,
|
|
||||||
x: monitor.x + position_x,
|
|
||||||
height: height,
|
|
||||||
width: width,
|
|
||||||
scale_x: 1,
|
|
||||||
time: this._settings.get_double(DOCK_AUTOHIDE_ANIMATION_TIME_KEY),
|
|
||||||
transition: 'easeOutQuad'
|
|
||||||
});
|
|
||||||
|
|
||||||
this._hidden = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
function showEffectAddItem_scale () {
|
|
||||||
let monitor = Main.layoutManager.primaryMonitor;
|
|
||||||
let height = this._nicons*(this._item_size + this._spacing) + 2*this._spacing;
|
|
||||||
let width = this._item_size + 4*this._spacing;
|
|
||||||
|
|
||||||
Tweener.addTween(this.actor, {
|
|
||||||
y: monitor.y + (monitor.height-height)/2,
|
|
||||||
height: height,
|
|
||||||
width: width,
|
|
||||||
time: this._settings.get_double(DOCK_AUTOHIDE_ANIMATION_TIME_KEY),
|
|
||||||
transition: 'easeOutQuad'
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**************************************************************************************/
|
|
||||||
/**** start move Dock functions *****************/
|
|
||||||
/**************************************************************************************/
|
|
||||||
function hideDock_move () {
|
|
||||||
if (!this._hideable)
|
|
||||||
return;
|
|
||||||
|
|
||||||
this._item_size = this._settings.get_int(DOCK_SIZE_KEY);
|
|
||||||
let monitor = Main.layoutManager.primaryMonitor;
|
|
||||||
let cornerX = 0;
|
|
||||||
let height = this._nicons*(this._item_size + this._spacing) + 2*this._spacing;
|
|
||||||
let width = this._item_size + 4*this._spacing;
|
|
||||||
|
|
||||||
switch (this._settings.get_enum(DOCK_POSITION_KEY)) {
|
|
||||||
case PositionMode.LEFT:
|
|
||||||
cornerX= monitor.x - width + this._spacing;
|
|
||||||
break;
|
|
||||||
case PositionMode.RIGHT:
|
|
||||||
default:
|
|
||||||
cornerX = monitor.x + monitor.width - this._spacing;
|
|
||||||
}
|
|
||||||
|
|
||||||
Tweener.addTween(this.actor,{
|
|
||||||
x: cornerX,
|
|
||||||
y: monitor.y + (monitor.height - height)/2,
|
|
||||||
width: width,
|
|
||||||
height: height,
|
|
||||||
time: this._settings.get_double(DOCK_AUTOHIDE_ANIMATION_TIME_KEY),
|
|
||||||
transition: 'easeOutQuad'
|
|
||||||
});
|
|
||||||
|
|
||||||
this._hidden = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
function showDock_move () {
|
|
||||||
this._item_size = this._settings.get_int(DOCK_SIZE_KEY);
|
|
||||||
let monitor = Main.layoutManager.primaryMonitor;
|
|
||||||
let position_x = monitor.x;
|
|
||||||
let height = this._nicons*(this._item_size + this._spacing) + 2*this._spacing;
|
|
||||||
let width = this._item_size + 4*this._spacing;
|
|
||||||
|
|
||||||
switch (this._settings.get_enum(DOCK_POSITION_KEY)) {
|
|
||||||
case PositionMode.LEFT:
|
|
||||||
position_x=monitor.x - 2*this._spacing;
|
|
||||||
break;
|
|
||||||
case PositionMode.RIGHT:
|
|
||||||
default:
|
|
||||||
position_x=monitor.x + (monitor.width-this._item_size-2*this._spacing);
|
|
||||||
}
|
|
||||||
Tweener.addTween(this.actor, {
|
|
||||||
x: position_x,
|
|
||||||
y: monitor.y + (monitor.height - height)/2,
|
|
||||||
width: width,
|
|
||||||
height: height,
|
|
||||||
time: this._settings.get_double(DOCK_AUTOHIDE_ANIMATION_TIME_KEY),
|
|
||||||
transition: 'easeOutQuad'
|
|
||||||
});
|
|
||||||
|
|
||||||
this._hidden = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
function showEffectAddItem_move () {
|
|
||||||
let monitor = Main.layoutManager.primaryMonitor;
|
|
||||||
let height = this._nicons*(this._item_size + this._spacing) + 2*this._spacing;
|
|
||||||
let width = this._item_size + 4*this._spacing;
|
|
||||||
|
|
||||||
Tweener.addTween(this.actor, {
|
|
||||||
y: monitor.y + (monitor.height-height)/2,
|
|
||||||
height: height,
|
|
||||||
width: width,
|
|
||||||
time: this._settings.get_double(DOCK_AUTOHIDE_ANIMATION_TIME_KEY),
|
|
||||||
transition: 'easeOutQuad'
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
const Dock = new Lang.Class({
|
|
||||||
Name: 'Dock.Dock',
|
|
||||||
|
|
||||||
_init : function() {
|
|
||||||
this._placeholderText = null;
|
|
||||||
this._menus = [];
|
|
||||||
this._menuDisplays = [];
|
|
||||||
|
|
||||||
this._favorites = [];
|
|
||||||
|
|
||||||
// Load Settings
|
|
||||||
this._settings = Convenience.getSettings();
|
|
||||||
this._hidden = false;
|
|
||||||
this._hideable = this._settings.get_boolean(DOCK_HIDE_KEY);
|
|
||||||
|
|
||||||
this._spacing = 4;
|
|
||||||
this._item_size = this._settings.get_int(DOCK_SIZE_KEY);
|
|
||||||
this._nicons = 0;
|
|
||||||
this._selectEffectFunctions(this._settings.get_enum(DOCK_EFFECTHIDE_KEY));
|
|
||||||
|
|
||||||
this.actor = new St.BoxLayout({ name: 'dock', vertical: true, reactive: true });
|
|
||||||
|
|
||||||
this._grid = new Shell.GenericContainer();
|
|
||||||
this.actor.add(this._grid, { expand: true, y_align: St.Align.START });
|
|
||||||
this.actor.connect('style-changed', Lang.bind(this, this._onStyleChanged));
|
|
||||||
|
|
||||||
this._grid.connect('get-preferred-width', Lang.bind(this, this._getPreferredWidth));
|
|
||||||
this._grid.connect('get-preferred-height', Lang.bind(this, this._getPreferredHeight));
|
|
||||||
this._grid.connect('allocate', Lang.bind(this, this._allocate));
|
|
||||||
|
|
||||||
this._workId = Main.initializeDeferredWork(this.actor, Lang.bind(this, this._redisplay));
|
|
||||||
|
|
||||||
this._tracker = Shell.WindowTracker.get_default();
|
|
||||||
this._appSystem = Shell.AppSystem.get_default();
|
|
||||||
|
|
||||||
this._installedChangedId = this._appSystem.connect('installed-changed', Lang.bind(this, this._queueRedisplay));
|
|
||||||
this._appFavoritesChangedId = AppFavorites.getAppFavorites().connect('changed', Lang.bind(this, this._queueRedisplay));
|
|
||||||
this._appStateChangedId = this._appSystem.connect('app-state-changed', Lang.bind(this, this._queueRedisplay));
|
|
||||||
|
|
||||||
this._overviewShowingId = Main.overview.connect('showing', Lang.bind(this, function() {
|
|
||||||
this.actor.hide();
|
|
||||||
}));
|
|
||||||
this._overviewHiddenId = Main.overview.connect('hidden', Lang.bind(this, function() {
|
|
||||||
this.actor.show();
|
|
||||||
}));
|
|
||||||
Main.layoutManager.addChrome(this.actor,
|
|
||||||
{ affectsStruts: !this._settings.get_boolean(DOCK_HIDE_KEY) });
|
|
||||||
|
|
||||||
//hidden
|
|
||||||
this._settings.connect('changed::'+DOCK_POSITION_KEY, Lang.bind(this, this._redisplay));
|
|
||||||
this._settings.connect('changed::'+DOCK_SIZE_KEY, Lang.bind(this, this._redisplay));
|
|
||||||
|
|
||||||
this._settings.connect('changed::'+DOCK_HIDE_KEY, Lang.bind(this, function (){
|
|
||||||
Main.layoutManager.removeChrome(this.actor);
|
|
||||||
Main.layoutManager.addChrome(this.actor,
|
|
||||||
{ affectsStruts: !this._settings.get_boolean(DOCK_HIDE_KEY) });
|
|
||||||
|
|
||||||
this._hideable = this._settings.get_boolean(DOCK_HIDE_KEY);
|
|
||||||
if (this._hideable)
|
|
||||||
this._hideDock();
|
|
||||||
else
|
|
||||||
this._showDock();
|
|
||||||
}));
|
|
||||||
|
|
||||||
this._settings.connect('changed::' + DOCK_EFFECTHIDE_KEY, Lang.bind(this, function () {
|
|
||||||
let hideEffect = this._settings.get_enum(DOCK_EFFECTHIDE_KEY);
|
|
||||||
|
|
||||||
// restore the effects of the other functions
|
|
||||||
switch (hideEffect) {
|
|
||||||
case AutoHideEffect.RESCALE:
|
|
||||||
this._item_size = this._settings.get_int(DOCK_SIZE_KEY);
|
|
||||||
break;
|
|
||||||
case AutoHideEffect.RESIZE:
|
|
||||||
this.actor.set_scale(1, 1);
|
|
||||||
break;
|
|
||||||
case AutoHideEffect.MOVE:
|
|
||||||
this.actor.set_scale(1, 1);
|
|
||||||
this._item_size = this._settings.get_int(DOCK_SIZE_KEY);
|
|
||||||
}
|
|
||||||
|
|
||||||
this.actor.disconnect(this._leave_event);
|
|
||||||
this.actor.disconnect(this._enter_event);
|
|
||||||
|
|
||||||
this._selectEffectFunctions(hideEffect);
|
|
||||||
|
|
||||||
this._leave_event = this.actor.connect('leave-event', Lang.bind(this, this._hideDock));
|
|
||||||
this._enter_event = this.actor.connect('enter-event', Lang.bind(this, this._showDock));
|
|
||||||
this._redisplay();
|
|
||||||
}));
|
|
||||||
|
|
||||||
this._leave_event = this.actor.connect('leave-event', Lang.bind(this, this._hideDock));
|
|
||||||
this._enter_event = this.actor.connect('enter-event', Lang.bind(this, this._showDock));
|
|
||||||
|
|
||||||
this._hideDock();
|
|
||||||
},
|
|
||||||
|
|
||||||
destroy: function() {
|
|
||||||
if (this._installedChangedId) {
|
|
||||||
this._appSystem.disconnect(this._installedChangedId);
|
|
||||||
this._installedChangedId = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (this._appFavoritesChangedId) {
|
|
||||||
AppFavorites.getAppFavorites().disconnect(this._appFavoritesChangedId);
|
|
||||||
this._appFavoritesChangedId = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (this._appStateChangedId) {
|
|
||||||
this._appSystem.disconnect(this._appStateChangedId);
|
|
||||||
this._appStateChangedId = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (this._overviewShowingId) {
|
|
||||||
Main.overview.disconnect(this._overviewShowingId);
|
|
||||||
this._overviewShowingId = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (this._overviewHiddenId) {
|
|
||||||
Main.overview.disconnect(this._overviewHiddenId);
|
|
||||||
this._overviewHiddenId = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
this.actor.destroy();
|
|
||||||
|
|
||||||
// Break reference cycles
|
|
||||||
this._settings.run_dispose();
|
|
||||||
this._settings = null;
|
|
||||||
this._appSystem = null;
|
|
||||||
this._tracker = null;
|
|
||||||
},
|
|
||||||
|
|
||||||
// fuctions hide
|
|
||||||
_restoreHideDock: function() {
|
|
||||||
this._hideable = this._settings.get_boolean(DOCK_HIDE_KEY);
|
|
||||||
},
|
|
||||||
|
|
||||||
_disableHideDock: function() {
|
|
||||||
this._hideable = false;
|
|
||||||
},
|
|
||||||
|
|
||||||
_selectEffectFunctions: function(hideEffect) {
|
|
||||||
switch (hideEffect) {
|
|
||||||
case AutoHideEffect.RESCALE:
|
|
||||||
this._hideDock = hideDock_scale;
|
|
||||||
this._showDock = showDock_scale;
|
|
||||||
this._showEffectAddItem = showEffectAddItem_scale;
|
|
||||||
break;
|
|
||||||
case AutoHideEffect.MOVE:
|
|
||||||
this._hideDock = hideDock_move;
|
|
||||||
this._showDock = showDock_move;
|
|
||||||
this._showEffectAddItem = showEffectAddItem_move;
|
|
||||||
break;
|
|
||||||
case AutoHideEffect.RESIZE:
|
|
||||||
default:
|
|
||||||
this._hideDock = hideDock_size;
|
|
||||||
this._showDock = showDock_size;
|
|
||||||
this._showEffectAddItem = showEffectAddItem_size;
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
_appIdListToHash: function(apps) {
|
|
||||||
let ids = {};
|
|
||||||
for (let i = 0; i < apps.length; i++)
|
|
||||||
ids[apps[i].get_id()] = apps[i];
|
|
||||||
return ids;
|
|
||||||
},
|
|
||||||
|
|
||||||
_queueRedisplay: function () {
|
|
||||||
Main.queueDeferredWork(this._workId);
|
|
||||||
},
|
|
||||||
|
|
||||||
_redisplay: function () {
|
|
||||||
this.removeAll();
|
|
||||||
|
|
||||||
let favorites = AppFavorites.getAppFavorites().getFavoriteMap();
|
|
||||||
|
|
||||||
let running = this._appSystem.get_running();
|
|
||||||
let runningIds = this._appIdListToHash(running);
|
|
||||||
|
|
||||||
let icons = 0;
|
|
||||||
|
|
||||||
let nFavorites = 0;
|
|
||||||
for (let id in favorites) {
|
|
||||||
let app = favorites[id];
|
|
||||||
let display = new DockIcon(app,this);
|
|
||||||
this.addItem(display.actor);
|
|
||||||
nFavorites++;
|
|
||||||
icons++;
|
|
||||||
}
|
|
||||||
|
|
||||||
for (let i = 0; i < running.length; i++) {
|
|
||||||
let app = running[i];
|
|
||||||
if (app.get_id() in favorites)
|
|
||||||
continue;
|
|
||||||
let display = new DockIcon(app,this);
|
|
||||||
icons++;
|
|
||||||
this.addItem(display.actor);
|
|
||||||
}
|
|
||||||
this._nicons=icons;
|
|
||||||
|
|
||||||
if (this._placeholderText) {
|
|
||||||
this._placeholderText.destroy();
|
|
||||||
this._placeholderText = null;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (running.length == 0 && nFavorites == 0) {
|
|
||||||
this._placeholderText = new St.Label({ text: _("Drag here to add favorites") });
|
|
||||||
this.actor.add_actor(this._placeholderText);
|
|
||||||
}
|
|
||||||
|
|
||||||
let primary = Main.layoutManager.primaryMonitor;
|
|
||||||
let height = (icons)*(this._item_size + this._spacing) + 2*this._spacing;
|
|
||||||
let width = this._item_size + 4*this._spacing;
|
|
||||||
|
|
||||||
if (this._hideable && this._hidden) {
|
|
||||||
this._hideDock();
|
|
||||||
} else {
|
|
||||||
if (this._settings.get_int(DOCK_SIZE_KEY) == this._item_size) {
|
|
||||||
// only add/delete icon
|
|
||||||
this._showEffectAddItem ();
|
|
||||||
} else {
|
|
||||||
// change size icon
|
|
||||||
this._showDock ();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
_getPreferredWidth: function (grid, forHeight, alloc) {
|
|
||||||
alloc.min_size = this._item_size;
|
|
||||||
alloc.natural_size = this._item_size + this._spacing;
|
|
||||||
},
|
|
||||||
|
|
||||||
_getPreferredHeight: function (grid, forWidth, alloc) {
|
|
||||||
let children = this._grid.get_children();
|
|
||||||
let nRows = children.length;
|
|
||||||
let totalSpacing = Math.max(0, nRows - 1) * this._spacing;
|
|
||||||
let height = nRows * this._item_size + totalSpacing;
|
|
||||||
alloc.min_size = height;
|
|
||||||
alloc.natural_size = height;
|
|
||||||
},
|
|
||||||
|
|
||||||
_allocate: function (grid, box, flags) {
|
|
||||||
let children = this._grid.get_children();
|
|
||||||
|
|
||||||
let x = box.x1 + this._spacing;
|
|
||||||
if (this._settings.get_enum(DOCK_POSITION_KEY) == PositionMode.LEFT)
|
|
||||||
x = box.x1 + 2*this._spacing;
|
|
||||||
let y = box.y1 + this._spacing;
|
|
||||||
|
|
||||||
for (let i = 0; i < children.length; i++) {
|
|
||||||
let childBox = new Clutter.ActorBox();
|
|
||||||
childBox.x1 = x;
|
|
||||||
childBox.y1 = y;
|
|
||||||
childBox.x2 = childBox.x1 + this._item_size;
|
|
||||||
childBox.y2 = childBox.y1 + this._item_size;
|
|
||||||
children[i].allocate(childBox, flags);
|
|
||||||
y += this._item_size + this._spacing;
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
|
|
||||||
_onStyleChanged: function() {
|
|
||||||
let themeNode = this.actor.get_theme_node();
|
|
||||||
let [success, len] = themeNode.get_length('spacing', false);
|
|
||||||
if (success)
|
|
||||||
this._spacing = len;
|
|
||||||
[success, len] = themeNode.get_length('-shell-grid-item-size', false);
|
|
||||||
if (success)
|
|
||||||
this._item_size = len;
|
|
||||||
this._grid.queue_relayout();
|
|
||||||
},
|
|
||||||
|
|
||||||
removeAll: function () {
|
|
||||||
this._grid.get_children().forEach(Lang.bind(this, function (child) {
|
|
||||||
child.destroy();
|
|
||||||
}));
|
|
||||||
},
|
|
||||||
|
|
||||||
addItem: function(actor) {
|
|
||||||
this._grid.add_actor(actor);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
Signals.addSignalMethods(Dock.prototype);
|
|
||||||
|
|
||||||
const DockIcon = new Lang.Class({
|
|
||||||
Name: 'Dock.DockIcon',
|
|
||||||
|
|
||||||
_init : function(app, dock) {
|
|
||||||
this._dock = dock;
|
|
||||||
this._settings = dock._settings;
|
|
||||||
|
|
||||||
|
|
||||||
this.app = app;
|
|
||||||
this.actor = new St.Button({ style_class: 'app-well-app',
|
|
||||||
button_mask: St.ButtonMask.ONE | St.ButtonMask.TWO,
|
|
||||||
reactive: true,
|
|
||||||
x_fill: true,
|
|
||||||
y_fill: true });
|
|
||||||
this.actor._delegate = this;
|
|
||||||
|
|
||||||
this._icon = new AppDisplay.AppIcon(app, { setSizeManually: true,
|
|
||||||
showLabel: false });
|
|
||||||
this.actor.set_child(this._icon.actor);
|
|
||||||
this._icon.setIconSize(this._settings.get_int(DOCK_SIZE_KEY));
|
|
||||||
|
|
||||||
this.actor.connect('clicked', Lang.bind(this, this._onClicked));
|
|
||||||
|
|
||||||
this._menu = null;
|
|
||||||
this._menuManager = new PopupMenu.PopupMenuManager(this);
|
|
||||||
|
|
||||||
this._has_focus = false;
|
|
||||||
|
|
||||||
let tracker = Shell.WindowTracker.get_default();
|
|
||||||
tracker.connect('notify::focus-app', Lang.bind(this, this._onStateChanged));
|
|
||||||
|
|
||||||
this.actor.connect('button-press-event', Lang.bind(this, this._onButtonPress));
|
|
||||||
this.actor.connect('destroy', Lang.bind(this, this._onDestroy));
|
|
||||||
this.actor.connect('notify::hover', Lang.bind(this, this._hoverChanged));
|
|
||||||
|
|
||||||
this._menuTimeoutId = 0;
|
|
||||||
this._stateChangedId = this.app.connect('notify::state',
|
|
||||||
Lang.bind(this, this._onStateChanged));
|
|
||||||
this._onStateChanged();
|
|
||||||
},
|
|
||||||
|
|
||||||
_onDestroy: function() {
|
|
||||||
if (this._stateChangedId > 0)
|
|
||||||
this.app.disconnect(this._stateChangedId);
|
|
||||||
this._stateChangedId = 0;
|
|
||||||
this._removeMenuTimeout();
|
|
||||||
},
|
|
||||||
|
|
||||||
_removeMenuTimeout: function() {
|
|
||||||
if (this._menuTimeoutId > 0) {
|
|
||||||
Mainloop.source_remove(this._menuTimeoutId);
|
|
||||||
this._menuTimeoutId = 0;
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
_hoverChanged: function(actor) {
|
|
||||||
if (actor != this.actor)
|
|
||||||
this._has_focus = false;
|
|
||||||
else
|
|
||||||
this._has_focus = true;
|
|
||||||
return false;
|
|
||||||
},
|
|
||||||
|
|
||||||
_onStateChanged: function() {
|
|
||||||
let tracker = Shell.WindowTracker.get_default();
|
|
||||||
let focusedApp = tracker.focus_app;
|
|
||||||
if (this.app.state != Shell.AppState.STOPPED) {
|
|
||||||
this.actor.add_style_class_name('running');
|
|
||||||
if (this.app == focusedApp) {
|
|
||||||
this.actor.add_style_class_name('focused');
|
|
||||||
} else {
|
|
||||||
this.actor.remove_style_class_name('focused');
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
this.actor.remove_style_class_name('focused');
|
|
||||||
this.actor.remove_style_class_name('running');
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
_onButtonPress: function(actor, event) {
|
|
||||||
let button = event.get_button();
|
|
||||||
if (button == 1) {
|
|
||||||
this._removeMenuTimeout();
|
|
||||||
this._menuTimeoutId = Mainloop.timeout_add(AppDisplay.MENU_POPUP_TIMEOUT, Lang.bind(this, function() {
|
|
||||||
this.popupMenu();
|
|
||||||
}));
|
|
||||||
} else if (button == 3) {
|
|
||||||
this.popupMenu();
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
_onClicked: function(actor, button) {
|
|
||||||
this._removeMenuTimeout();
|
|
||||||
|
|
||||||
if (button == 1) {
|
|
||||||
this._onActivate(Clutter.get_current_event());
|
|
||||||
} else if (button == 2) {
|
|
||||||
// Last workspace is always empty
|
|
||||||
let launchWorkspace = global.screen.get_workspace_by_index(global.screen.n_workspaces - 1);
|
|
||||||
launchWorkspace.activate(global.get_current_time());
|
|
||||||
this.emit('launching');
|
|
||||||
this.app.open_new_window(-1);
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
},
|
|
||||||
|
|
||||||
getId: function() {
|
|
||||||
return this.app.get_id();
|
|
||||||
},
|
|
||||||
|
|
||||||
popupMenu: function() {
|
|
||||||
this._removeMenuTimeout();
|
|
||||||
this.actor.fake_release();
|
|
||||||
|
|
||||||
this._dock._disableHideDock();
|
|
||||||
|
|
||||||
if (!this._menu) {
|
|
||||||
this._menu = new DockIconMenu(this);
|
|
||||||
this._menu.connect('activate-window', Lang.bind(this, function (menu, window) {
|
|
||||||
this.activateWindow(window);
|
|
||||||
}));
|
|
||||||
this._menu.connect('open-state-changed', Lang.bind(this, function (menu, isPoppedUp) {
|
|
||||||
if (!isPoppedUp){
|
|
||||||
//Restore value of autohidedock
|
|
||||||
this._dock._restoreHideDock();
|
|
||||||
this._dock._hideDock();
|
|
||||||
|
|
||||||
this._onMenuPoppedDown();
|
|
||||||
}
|
|
||||||
}));
|
|
||||||
|
|
||||||
this._menuManager.addMenu(this._menu, true);
|
|
||||||
}
|
|
||||||
|
|
||||||
this._menu.redisplay();
|
|
||||||
this._menu.open();
|
|
||||||
|
|
||||||
return false;
|
|
||||||
},
|
|
||||||
|
|
||||||
activateWindow: function(metaWindow) {
|
|
||||||
if (metaWindow) {
|
|
||||||
this._didActivateWindow = true;
|
|
||||||
Main.activateWindow(metaWindow);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
setSelected: function (isSelected) {
|
|
||||||
this._selected = isSelected;
|
|
||||||
if (this._selected)
|
|
||||||
this.actor.add_style_class_name('selected');
|
|
||||||
else
|
|
||||||
this.actor.remove_style_class_name('selected');
|
|
||||||
},
|
|
||||||
|
|
||||||
_onMenuPoppedDown: function() {
|
|
||||||
this.actor.sync_hover();
|
|
||||||
},
|
|
||||||
|
|
||||||
_getRunning: function() {
|
|
||||||
return this.app.state != Shell.AppState.STOPPED;
|
|
||||||
},
|
|
||||||
|
|
||||||
_onActivate: function (event) {
|
|
||||||
this.emit('launching');
|
|
||||||
let modifiers = Shell.get_event_state(event);
|
|
||||||
|
|
||||||
if (modifiers & Clutter.ModifierType.CONTROL_MASK
|
|
||||||
&& this.app.state == Shell.AppState.RUNNING) {
|
|
||||||
let current_workspace = global.screen.get_active_workspace().index();
|
|
||||||
this.app.open_new_window(current_workspace);
|
|
||||||
} else {
|
|
||||||
let tracker = Shell.WindowTracker.get_default();
|
|
||||||
let focusedApp = tracker.focus_app;
|
|
||||||
|
|
||||||
if (this.app == focusedApp) {
|
|
||||||
let windows = this.app.get_windows();
|
|
||||||
let current_workspace = global.screen.get_active_workspace();
|
|
||||||
for (let i = 0; i < windows.length; i++) {
|
|
||||||
let w = windows[i];
|
|
||||||
if (w.get_workspace() == current_workspace)
|
|
||||||
w.minimize();
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
this.app.activate(-1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Main.overview.hide();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
Signals.addSignalMethods(DockIcon.prototype);
|
|
||||||
|
|
||||||
const DockIconMenu = new Lang.Class({
|
|
||||||
Name: 'Dock.DockIconMenu',
|
|
||||||
Extends: PopupMenu.PopupMenu,
|
|
||||||
|
|
||||||
_init: function(source) {
|
|
||||||
let side;
|
|
||||||
switch (source._settings.get_enum(DOCK_POSITION_KEY)) {
|
|
||||||
case PositionMode.LEFT:
|
|
||||||
side = St.Side.LEFT;
|
|
||||||
break;
|
|
||||||
case PositionMode.RIGHT:
|
|
||||||
default:
|
|
||||||
side = St.Side.RIGHT;
|
|
||||||
}
|
|
||||||
this.parent(source.actor, 0.5, side);
|
|
||||||
|
|
||||||
this._source = source;
|
|
||||||
|
|
||||||
this.connect('activate', Lang.bind(this, this._onActivate));
|
|
||||||
|
|
||||||
this.actor.add_style_class_name('dock-menu');
|
|
||||||
|
|
||||||
// Chain our visibility and lifecycle to that of the source
|
|
||||||
source.actor.connect('notify::mapped', Lang.bind(this, function () {
|
|
||||||
if (!source.actor.mapped)
|
|
||||||
this.close();
|
|
||||||
}));
|
|
||||||
source.actor.connect('destroy', Lang.bind(this, function () { this.destroy(); }));
|
|
||||||
|
|
||||||
Main.layoutManager.addChrome(this.actor);
|
|
||||||
},
|
|
||||||
|
|
||||||
redisplay: function() {
|
|
||||||
this.removeAll();
|
|
||||||
|
|
||||||
let windows = this._source.app.get_windows();
|
|
||||||
|
|
||||||
// Display the app windows menu items and the separator between windows
|
|
||||||
// of the current desktop and other windows.
|
|
||||||
let activeWorkspace = global.screen.get_active_workspace();
|
|
||||||
let separatorShown = windows.length > 0 && windows[0].get_workspace() != activeWorkspace;
|
|
||||||
|
|
||||||
for (let i = 0; i < windows.length; i++) {
|
|
||||||
if (!separatorShown && windows[i].get_workspace() != activeWorkspace) {
|
|
||||||
this._appendSeparator();
|
|
||||||
separatorShown = true;
|
|
||||||
}
|
|
||||||
let item = this._appendMenuItem(windows[i].title);
|
|
||||||
item._window = windows[i];
|
|
||||||
}
|
|
||||||
|
|
||||||
if (windows.length > 0)
|
|
||||||
this._appendSeparator();
|
|
||||||
|
|
||||||
let isFavorite = AppFavorites.getAppFavorites().isFavorite(this._source.app.get_id());
|
|
||||||
|
|
||||||
this._newWindowMenuItem = windows.length > 0 ? this._appendMenuItem(_("New Window")) : null;
|
|
||||||
|
|
||||||
this._quitAppMenuItem = windows.length >0 ? this._appendMenuItem(_("Quit Application")) : null;
|
|
||||||
|
|
||||||
if (windows.length > 0)
|
|
||||||
this._appendSeparator();
|
|
||||||
this._toggleFavoriteMenuItem = this._appendMenuItem(isFavorite ?
|
|
||||||
_("Remove from Favorites")
|
|
||||||
: _("Add to Favorites"));
|
|
||||||
|
|
||||||
this._highlightedItem = null;
|
|
||||||
},
|
|
||||||
|
|
||||||
_appendSeparator: function () {
|
|
||||||
let separator = new PopupMenu.PopupSeparatorMenuItem();
|
|
||||||
this.addMenuItem(separator);
|
|
||||||
},
|
|
||||||
|
|
||||||
_appendMenuItem: function(labelText) {
|
|
||||||
// FIXME: app-well-menu-item style
|
|
||||||
let item = new PopupMenu.PopupMenuItem(labelText);
|
|
||||||
this.addMenuItem(item);
|
|
||||||
return item;
|
|
||||||
},
|
|
||||||
|
|
||||||
popup: function(activatingButton) {
|
|
||||||
this._redisplay();
|
|
||||||
this.open();
|
|
||||||
},
|
|
||||||
|
|
||||||
_onActivate: function (actor, child) {
|
|
||||||
if (child._window) {
|
|
||||||
let metaWindow = child._window;
|
|
||||||
this.emit('activate-window', metaWindow);
|
|
||||||
} else if (child == this._newWindowMenuItem) {
|
|
||||||
let current_workspace = global.screen.get_active_workspace().index();
|
|
||||||
this._source.app.open_new_window(current_workspace);
|
|
||||||
this.emit('activate-window', null);
|
|
||||||
} else if (child == this._quitAppMenuItem) {
|
|
||||||
this._source.app.request_quit();
|
|
||||||
} else if (child == this._toggleFavoriteMenuItem) {
|
|
||||||
let favs = AppFavorites.getAppFavorites();
|
|
||||||
let isFavorite = favs.isFavorite(this._source.app.get_id());
|
|
||||||
if (isFavorite)
|
|
||||||
favs.removeFavorite(this._source.app.get_id());
|
|
||||||
else
|
|
||||||
favs.addFavorite(this._source.app.get_id());
|
|
||||||
}
|
|
||||||
this.close();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
function init() {
|
|
||||||
Convenience.initTranslations();
|
|
||||||
}
|
|
||||||
|
|
||||||
let dock;
|
|
||||||
|
|
||||||
function enable() {
|
|
||||||
dock = new Dock();
|
|
||||||
}
|
|
||||||
|
|
||||||
function disable() {
|
|
||||||
dock.destroy();
|
|
||||||
dock = null;
|
|
||||||
}
|
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
{
|
|
||||||
"extension-id": "@extension_id@",
|
|
||||||
"uuid": "@uuid@",
|
|
||||||
"settings-schema": "@gschemaname@",
|
|
||||||
"gettext-domain": "@gettext_domain@",
|
|
||||||
"name": "Dock",
|
|
||||||
"description": "A dock for the GNOME Shell -- displays favorite and running applications",
|
|
||||||
"original-author": "tclaesson@gmail.com",
|
|
||||||
"shell-version": [ "@shell_current@" ],
|
|
||||||
"url": "@url@"
|
|
||||||
}
|
|
||||||
@@ -1,38 +0,0 @@
|
|||||||
<schemalist gettext-domain="gnome-shell-extensions">
|
|
||||||
<enum id='org.gnome.shell.extensions.dock.PositionMode'>
|
|
||||||
<value nick='left' value='0'/>
|
|
||||||
<value nick='right' value='1'/>
|
|
||||||
</enum>
|
|
||||||
<enum id='org.gnome.shell.extensions.dock.AutoHideEffect'>
|
|
||||||
<value nick='resize' value='0'/>
|
|
||||||
<value nick='rescale' value='1'/>
|
|
||||||
<value nick='move' value='2'/>
|
|
||||||
</enum>
|
|
||||||
|
|
||||||
<schema id="org.gnome.shell.extensions.dock" path="/org/gnome/shell/extensions/dock/">
|
|
||||||
<key name="position" enum="org.gnome.shell.extensions.dock.PositionMode">
|
|
||||||
<default>'right'</default>
|
|
||||||
<_summary>Position of the dock</_summary>
|
|
||||||
<_description>Sets the position of the dock in the screen. Allowed values are 'right' or 'left'</_description>
|
|
||||||
</key>
|
|
||||||
<key name="size" type="i">
|
|
||||||
<default>48</default>
|
|
||||||
<_summary>Icon size</_summary>
|
|
||||||
<_description>Sets icon size of the dock.</_description>
|
|
||||||
</key>
|
|
||||||
<key name="autohide" type="b">
|
|
||||||
<default>true</default>
|
|
||||||
<_summary>Enable/disable autohide</_summary>
|
|
||||||
</key>
|
|
||||||
<key name="hide-effect" enum="org.gnome.shell.extensions.dock.AutoHideEffect">
|
|
||||||
<default>'move'</default>
|
|
||||||
<_summary>Autohide effect</_summary>
|
|
||||||
<_description>Sets the effect of the hide dock. Allowed values are 'resize', 'rescale' and 'move'</_description>
|
|
||||||
</key>
|
|
||||||
<key name="hide-effect-duration" type="d">
|
|
||||||
<default>0.3</default>
|
|
||||||
<_summary>Autohide duration</_summary>
|
|
||||||
<_description>Sets the time duration of the autohide effect.</_description>
|
|
||||||
</key>
|
|
||||||
</schema>
|
|
||||||
</schemalist>
|
|
||||||
@@ -1,10 +0,0 @@
|
|||||||
#dock {
|
|
||||||
border-radius: 9px;
|
|
||||||
background-color: rgba(0,0,0,0.9);
|
|
||||||
border-width: 2px;
|
|
||||||
border-color: #5f5f5f;
|
|
||||||
}
|
|
||||||
|
|
||||||
.dock-menu {
|
|
||||||
font-size: 12px
|
|
||||||
}
|
|
||||||
@@ -11,25 +11,26 @@ const Main = imports.ui.main;
|
|||||||
const Panel = imports.ui.panel;
|
const Panel = imports.ui.panel;
|
||||||
const PanelMenu = imports.ui.panelMenu;
|
const PanelMenu = imports.ui.panelMenu;
|
||||||
const PopupMenu = imports.ui.popupMenu;
|
const PopupMenu = imports.ui.popupMenu;
|
||||||
|
const ShellMountOperation = imports.ui.shellMountOperation;
|
||||||
|
|
||||||
const ExtensionUtils = imports.misc.extensionUtils;
|
const ExtensionUtils = imports.misc.extensionUtils;
|
||||||
const Me = ExtensionUtils.getCurrentExtension();
|
const Me = ExtensionUtils.getCurrentExtension();
|
||||||
const Convenience = Me.imports.convenience;
|
const Convenience = Me.imports.convenience;
|
||||||
|
|
||||||
const DriveMenuItem = new Lang.Class({
|
const MountMenuItem = new Lang.Class({
|
||||||
Name: 'DriveMenu.DriveMenuItem',
|
Name: 'DriveMenu.MountMenuItem',
|
||||||
Extends: PopupMenu.PopupBaseMenuItem,
|
Extends: PopupMenu.PopupBaseMenuItem,
|
||||||
|
|
||||||
_init: function(place) {
|
_init: function(mount) {
|
||||||
this.parent();
|
this.parent();
|
||||||
|
|
||||||
this.place = place;
|
this.label = new St.Label({ text: mount.get_name() });
|
||||||
|
|
||||||
this.label = new St.Label({ text: place.name });
|
|
||||||
this.addActor(this.label);
|
this.addActor(this.label);
|
||||||
|
this.actor.label_actor = this.label;
|
||||||
|
|
||||||
let ejectIcon = new St.Icon({ icon_name: 'media-eject',
|
this.mount = mount;
|
||||||
icon_type: St.IconType.SYMBOLIC,
|
|
||||||
|
let ejectIcon = new St.Icon({ icon_name: 'media-eject-symbolic',
|
||||||
style_class: 'popup-menu-icon ' });
|
style_class: 'popup-menu-icon ' });
|
||||||
let ejectButton = new St.Button({ child: ejectIcon });
|
let ejectButton = new St.Button({ child: ejectIcon });
|
||||||
ejectButton.connect('clicked', Lang.bind(this, this._eject));
|
ejectButton.connect('clicked', Lang.bind(this, this._eject));
|
||||||
@@ -37,11 +38,44 @@ const DriveMenuItem = new Lang.Class({
|
|||||||
},
|
},
|
||||||
|
|
||||||
_eject: function() {
|
_eject: function() {
|
||||||
this.place.remove();
|
let mountOp = new ShellMountOperation.ShellMountOperation(this.mount);
|
||||||
|
|
||||||
|
if (this.mount.can_eject())
|
||||||
|
this.mount.eject_with_operation(Gio.MountUnmountFlags.NONE,
|
||||||
|
mountOp.mountOp,
|
||||||
|
null, // Gio.Cancellable
|
||||||
|
Lang.bind(this, this._ejectFinish));
|
||||||
|
else
|
||||||
|
this.mount.unmount_with_operation(Gio.MountUnmountFlags.NONE,
|
||||||
|
mountOp.mountOp,
|
||||||
|
null, // Gio.Cancellable
|
||||||
|
Lang.bind(this, this._unmountFinish));
|
||||||
|
},
|
||||||
|
|
||||||
|
_unmountFinish: function(mount, result) {
|
||||||
|
try {
|
||||||
|
mount.unmount_with_operation_finish(result);
|
||||||
|
} catch(e) {
|
||||||
|
this._reportFailure(e);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
_ejectFinish: function(mount, result) {
|
||||||
|
try {
|
||||||
|
mount.eject_with_operation_finish(result);
|
||||||
|
} catch(e) {
|
||||||
|
this._reportFailure(e);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
_reportFailure: function(exception) {
|
||||||
|
let msg = _("Ejecting drive '%s' failed:").format(this.mount.get_name());
|
||||||
|
Main.notifyError(msg, exception.message);
|
||||||
},
|
},
|
||||||
|
|
||||||
activate: function(event) {
|
activate: function(event) {
|
||||||
this.place.launch({ timestamp: event.get_time() });
|
Gio.AppInfo.launch_default_for_uri(this.mount.get_root().get_uri(),
|
||||||
|
global.create_app_launch_context());
|
||||||
|
|
||||||
this.parent(event);
|
this.parent(event);
|
||||||
}
|
}
|
||||||
@@ -52,41 +86,85 @@ const DriveMenu = new Lang.Class({
|
|||||||
Extends: PanelMenu.SystemStatusButton,
|
Extends: PanelMenu.SystemStatusButton,
|
||||||
|
|
||||||
_init: function() {
|
_init: function() {
|
||||||
this.parent('media-eject');
|
this.parent('media-eject-symbolic', _("Removable devices"));
|
||||||
|
|
||||||
this._manager = Main.placesManager;
|
this._monitor = Gio.VolumeMonitor.get();
|
||||||
this._updatedId = this._manager.connect('mounts-updated', Lang.bind(this, this._update));
|
this._addedId = this._monitor.connect('mount-added', Lang.bind(this, function(monitor, mount) {
|
||||||
|
this._addMount(mount);
|
||||||
|
this._updateMenuVisibility();
|
||||||
|
}));
|
||||||
|
this._removedId = this._monitor.connect('mount-removed', Lang.bind(this, function(monitor, mount) {
|
||||||
|
this._removeMount(mount);
|
||||||
|
this._updateMenuVisibility();
|
||||||
|
}));
|
||||||
|
|
||||||
this._contentSection = new PopupMenu.PopupMenuSection();
|
this._mounts = [ ];
|
||||||
this.menu.addMenuItem(this._contentSection);
|
|
||||||
|
|
||||||
this._update();
|
this._monitor.get_mounts().forEach(Lang.bind(this, this._addMount));
|
||||||
|
|
||||||
this.menu.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
|
this.menu.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
|
||||||
this.menu.addAction(_("Open file manager"), function(event) {
|
this.menu.addAction(_("Open File"), function(event) {
|
||||||
let appSystem = Shell.AppSystem.get_default();
|
let appSystem = Shell.AppSystem.get_default();
|
||||||
let app = appSystem.lookup_app('nautilus.desktop');
|
let app = appSystem.lookup_app('nautilus.desktop');
|
||||||
app.activate_full(-1, event.get_time());
|
app.activate_full(-1, event.get_time());
|
||||||
});
|
});
|
||||||
|
|
||||||
|
this._updateMenuVisibility();
|
||||||
},
|
},
|
||||||
|
|
||||||
_update: function() {
|
_updateMenuVisibility: function() {
|
||||||
this._contentSection.removeAll();
|
if (this._mounts.length > 0)
|
||||||
|
this.actor.show();
|
||||||
|
else
|
||||||
|
this.actor.hide();
|
||||||
|
},
|
||||||
|
|
||||||
let mounts = this._manager.getMounts();
|
_isMountInteresting: function(mount) {
|
||||||
let any = false;
|
if (!mount.can_eject() && !mount.can_unmount())
|
||||||
for (let i = 0; i < mounts.length; i++) {
|
return false;
|
||||||
if (mounts[i].isRemovable()) {
|
|
||||||
this._contentSection.addMenuItem(new DriveMenuItem(mounts[i]));
|
let volume = mount.get_volume();
|
||||||
any = true;
|
|
||||||
|
if (volume == null) {
|
||||||
|
// probably a GDaemonMount, could be network or
|
||||||
|
// local, but we can't tell; assume it's local for now
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return volume.get_identifier('class') != 'network';
|
||||||
|
},
|
||||||
|
|
||||||
|
_addMount: function(mount) {
|
||||||
|
if (!this._isMountInteresting(mount))
|
||||||
|
return;
|
||||||
|
|
||||||
|
let item = new MountMenuItem(mount);
|
||||||
|
this._mounts.unshift(item);
|
||||||
|
this.menu.addMenuItem(item, 0);
|
||||||
|
},
|
||||||
|
|
||||||
|
_removeMount: function(mount) {
|
||||||
|
if (!this._isMountInteresting(mount))
|
||||||
|
return;
|
||||||
|
|
||||||
|
for (let i = 0; i < this._mounts.length; i++) {
|
||||||
|
let item = this._mounts[i];
|
||||||
|
if (item.mount == mount) {
|
||||||
|
item.destroy();
|
||||||
|
this._mounts.splice(i, 1);
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
log ('Removing a mount that was never added to the menu');
|
||||||
this.actor.visible = any;
|
|
||||||
},
|
},
|
||||||
|
|
||||||
destroy: function() {
|
destroy: function() {
|
||||||
this._manager.disconnect(this._updatedId);
|
if (this._connectedId) {
|
||||||
|
this._monitor.disconnect(this._connectedId);
|
||||||
|
this._monitor.disconnect(this._disconnectedId);
|
||||||
|
this._connectedId = 0;
|
||||||
|
this._disconnectedId = 0;
|
||||||
|
}
|
||||||
|
|
||||||
this.parent();
|
this.parent();
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
"settings-schema": "@gschemaname@",
|
"settings-schema": "@gschemaname@",
|
||||||
"gettext-domain": "@gettext_domain@",
|
"gettext-domain": "@gettext_domain@",
|
||||||
"name": "Removable Drive Menu",
|
"name": "Removable Drive Menu",
|
||||||
"description": "A status menu for accessing and unmounting removable devices",
|
"description": "A status menu for accessing and unmounting removable devices.",
|
||||||
"shell-version": [ "@shell_current@" ],
|
"shell-version": [ "@shell_current@" ],
|
||||||
"url": "@url@"
|
"url": "@url@"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,3 +1,6 @@
|
|||||||
EXTENSION_ID = example
|
EXTENSION_ID = example
|
||||||
|
|
||||||
|
EXTRA_MODULES = prefs.js
|
||||||
|
|
||||||
include ../../extension.mk
|
include ../../extension.mk
|
||||||
|
include ../../settings.mk
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
// -*- mode: js2; indent-tabs-mode: nil; js2-basic-offset: 4 -*-
|
||||||
// Sample extension code, makes clicking on the panel show a message
|
// Sample extension code, makes clicking on the panel show a message
|
||||||
const St = imports.gi.St;
|
const St = imports.gi.St;
|
||||||
const Mainloop = imports.mainloop;
|
const Mainloop = imports.mainloop;
|
||||||
@@ -12,11 +13,14 @@ const Me = ExtensionUtils.getCurrentExtension();
|
|||||||
const Convenience = Me.imports.convenience;
|
const Convenience = Me.imports.convenience;
|
||||||
|
|
||||||
function _showHello() {
|
function _showHello() {
|
||||||
let text = new St.Label({ style_class: 'helloworld-label', text: _("Hello, world!") });
|
let settings = Convenience.getSettings();
|
||||||
|
let text = settings.get_string('hello-text') || _("Hello, world!");
|
||||||
|
|
||||||
|
let label = new St.Label({ style_class: 'helloworld-label', text: text });
|
||||||
let monitor = Main.layoutManager.primaryMonitor;
|
let monitor = Main.layoutManager.primaryMonitor;
|
||||||
global.stage.add_actor(text);
|
global.stage.add_actor(label);
|
||||||
text.set_position(Math.floor (monitor.width / 2 - text.width / 2), Math.floor(monitor.height / 2 - text.height / 2));
|
label.set_position(Math.floor (monitor.width / 2 - label.width / 2), Math.floor(monitor.height / 2 - label.height / 2));
|
||||||
Mainloop.timeout_add(3000, function () { text.destroy(); });
|
Mainloop.timeout_add(3000, function () { label.destroy(); });
|
||||||
}
|
}
|
||||||
|
|
||||||
// Put your extension initialization code here
|
// Put your extension initialization code here
|
||||||
|
|||||||
@@ -0,0 +1,9 @@
|
|||||||
|
<schemalist gettext-domain="gnome-shell-extensions">
|
||||||
|
<schema id="org.gnome.shell.extensions.example" path="/org/gnome/shell/extensions/example/">
|
||||||
|
<key name="hello-text" type="s">
|
||||||
|
<default>''</default>
|
||||||
|
<_summary>Alternative greeting text.</_summary>
|
||||||
|
<_description>If not empty, it contains the text that will be shown when clicking on the panel.</_description>
|
||||||
|
</key>
|
||||||
|
</schema>
|
||||||
|
</schemalist>
|
||||||
@@ -0,0 +1,52 @@
|
|||||||
|
// -*- mode: js2; indent-tabs-mode: nil; js2-basic-offset: 4 -*-
|
||||||
|
|
||||||
|
const GLib = imports.gi.GLib;
|
||||||
|
const GObject = imports.gi.GObject;
|
||||||
|
const Gio = imports.gi.Gio;
|
||||||
|
const Gtk = imports.gi.Gtk;
|
||||||
|
|
||||||
|
const Gettext = imports.gettext.domain('gnome-shell-extensions');
|
||||||
|
const _ = Gettext.gettext;
|
||||||
|
|
||||||
|
const ExtensionUtils = imports.misc.extensionUtils;
|
||||||
|
const Me = ExtensionUtils.getCurrentExtension();
|
||||||
|
const Convenience = Me.imports.convenience;
|
||||||
|
|
||||||
|
function init() {
|
||||||
|
Convenience.initTranslations();
|
||||||
|
}
|
||||||
|
|
||||||
|
const ExamplePrefsWidget = new GObject.Class({
|
||||||
|
Name: 'Example.Prefs.Widget',
|
||||||
|
GTypeName: 'ExamplePrefsWidget',
|
||||||
|
Extends: Gtk.Grid,
|
||||||
|
|
||||||
|
_init: function(params) {
|
||||||
|
this.parent(params);
|
||||||
|
this.margin = this.row_spacing = this.column_spacing = 10;
|
||||||
|
|
||||||
|
// TRANSLATORS: Example is the name of the extension, should not be
|
||||||
|
// translated
|
||||||
|
let primaryText = _("Example aims to show how to build well behaved \
|
||||||
|
extensions for the Shell and as such it has little functionality on its own.\n\
|
||||||
|
Nevertheless it's possible to customize the greeting message.");
|
||||||
|
|
||||||
|
this.attach(new Gtk.Label({ label: primaryText, wrap: true }), 0, 0, 2, 1);
|
||||||
|
|
||||||
|
this.attach(new Gtk.Label({ label: '<b>' + _("Message:") + '</b>', use_markup: true }),
|
||||||
|
0, 1, 1, 1);
|
||||||
|
|
||||||
|
let entry = new Gtk.Entry({ hexpand: true });
|
||||||
|
this.attach(entry, 1, 1, 1, 1);
|
||||||
|
|
||||||
|
this._settings = Convenience.getSettings();
|
||||||
|
this._settings.bind('hello-text', entry, 'text', Gio.SettingsBindFlags.DEFAULT);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
function buildPrefsWidget() {
|
||||||
|
let widget = new ExamplePrefsWidget();
|
||||||
|
widget.show_all();
|
||||||
|
|
||||||
|
return widget;
|
||||||
|
}
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
EXTENSION_ID = gajim
|
|
||||||
|
|
||||||
include ../../extension.mk
|
|
||||||
@@ -1,340 +0,0 @@
|
|||||||
/* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */
|
|
||||||
|
|
||||||
const DBus = imports.dbus;
|
|
||||||
const Gettext = imports.gettext.domain('gnome-shell');
|
|
||||||
const Gio = imports.gi.Gio;
|
|
||||||
const GLib = imports.gi.GLib;
|
|
||||||
const Lang = imports.lang;
|
|
||||||
const Signals = imports.signals;
|
|
||||||
const St = imports.gi.St;
|
|
||||||
const Tp = imports.gi.TelepathyGLib;
|
|
||||||
|
|
||||||
const Main = imports.ui.main;
|
|
||||||
const Mainloop = imports.mainloop;
|
|
||||||
const MessageTray = imports.ui.messageTray;
|
|
||||||
const Shell = imports.gi.Shell;
|
|
||||||
const TelepathyClient = imports.ui.telepathyClient;
|
|
||||||
|
|
||||||
const _ = Gettext.gettext;
|
|
||||||
|
|
||||||
// http://ntt.cc/ext/base64-Encoding-Decoding.html
|
|
||||||
const keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
|
|
||||||
|
|
||||||
function decode64(input) {
|
|
||||||
let output = "";
|
|
||||||
let chr1, chr2, chr3;
|
|
||||||
let enc1, enc2, enc3, enc4;
|
|
||||||
let i = 0;
|
|
||||||
|
|
||||||
input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");
|
|
||||||
|
|
||||||
do {
|
|
||||||
enc1 = keyStr.indexOf(input.charAt(i++));
|
|
||||||
enc2 = keyStr.indexOf(input.charAt(i++));
|
|
||||||
enc3 = keyStr.indexOf(input.charAt(i++));
|
|
||||||
enc4 = keyStr.indexOf(input.charAt(i++));
|
|
||||||
|
|
||||||
chr1 = (enc1 << 2) | (enc2 >> 4);
|
|
||||||
chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
|
|
||||||
chr3 = ((enc3 & 3) << 6) | enc4;
|
|
||||||
|
|
||||||
output = output + String.fromCharCode(chr1);
|
|
||||||
|
|
||||||
if (enc3 != 64) {
|
|
||||||
output = output + String.fromCharCode(chr2);
|
|
||||||
}
|
|
||||||
if (enc4 != 64) {
|
|
||||||
output = output + String.fromCharCode(chr3);
|
|
||||||
}
|
|
||||||
|
|
||||||
chr1 = chr2 = chr3 = "";
|
|
||||||
enc1 = enc2 = enc3 = enc4 = "";
|
|
||||||
|
|
||||||
} while (i < input.length);
|
|
||||||
|
|
||||||
return unescape(output);
|
|
||||||
}
|
|
||||||
|
|
||||||
function wrappedText(text, sender, timestamp, direction) {
|
|
||||||
if (!timestamp)
|
|
||||||
timestamp = (Date.now() / 1000);
|
|
||||||
return {
|
|
||||||
messageType: Tp.ChannelTextMessageType.NORMAL,
|
|
||||||
text: text,
|
|
||||||
sender: sender,
|
|
||||||
timestamp: timestamp,
|
|
||||||
direction: direction
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
function Source(gajimClient, accountName, author, initialMessage) {
|
|
||||||
this._init(gajimClient, accountName, author, initialMessage);
|
|
||||||
}
|
|
||||||
|
|
||||||
Source.prototype = {
|
|
||||||
__proto__: MessageTray.Source.prototype,
|
|
||||||
|
|
||||||
_init: function(gajimClient, accountName, author, initialMessage) {
|
|
||||||
MessageTray.Source.prototype._init.call(this, author);
|
|
||||||
this.isChat = true;
|
|
||||||
this._author = author;
|
|
||||||
this._gajimClient = gajimClient;
|
|
||||||
this._accountName = accountName;
|
|
||||||
this._initialMessage = initialMessage;
|
|
||||||
this._iconUri = null;
|
|
||||||
this._presence = "online";
|
|
||||||
|
|
||||||
this._notification = new TelepathyClient.ChatNotification(this);
|
|
||||||
this._notification.setUrgency(MessageTray.Urgency.HIGH);
|
|
||||||
|
|
||||||
let jid = author.split('/')[0];
|
|
||||||
let proxy = this._gajimClient.proxy();
|
|
||||||
proxy.contact_infoRemote(jid, Lang.bind(this, this._gotContactInfos));
|
|
||||||
this._statusChangeId = proxy.connect('ContactStatus',
|
|
||||||
Lang.bind(this, this._onStatusChange));
|
|
||||||
this._contactAbsenceId = proxy.connect('ContactAbsence',
|
|
||||||
Lang.bind(this, this._onStatusChange));
|
|
||||||
this._chatStateId = proxy.connect('ChatState',
|
|
||||||
Lang.bind(this, this._onChatState));
|
|
||||||
this._messageSentId = proxy.connect('MessageSent',
|
|
||||||
Lang.bind(this, this._messageSent));
|
|
||||||
this._newMessageId = proxy.connect('NewMessage',
|
|
||||||
Lang.bind(this, this._messageReceived));
|
|
||||||
},
|
|
||||||
|
|
||||||
destroy: function() {
|
|
||||||
let proxy = this._gajimClient.proxy();
|
|
||||||
proxy.disconnect(this._statusChangeId);
|
|
||||||
proxy.disconnect(this._contactAbsenceId);
|
|
||||||
proxy.disconnect(this._chatStateId);
|
|
||||||
proxy.disconnect(this._messageSentId);
|
|
||||||
proxy.disconnect(this._newMessageId);
|
|
||||||
MessageTray.Source.prototype.destroy.call(this);
|
|
||||||
},
|
|
||||||
|
|
||||||
_gotContactInfos: function(result, excp) {
|
|
||||||
this.title = result['FN'];
|
|
||||||
|
|
||||||
let avatarUri = null;
|
|
||||||
if (result['PHOTO']) {
|
|
||||||
let mimeType = result['PHOTO']['TYPE'];
|
|
||||||
let avatarData = decode64(result['PHOTO']['BINVAL']);
|
|
||||||
let sha = result['PHOTO']['SHA'];
|
|
||||||
avatarUri = this._gajimClient.cacheAvatar(mimeType, sha, avatarData);
|
|
||||||
}
|
|
||||||
|
|
||||||
this._iconUri = avatarUri;
|
|
||||||
this._setSummaryIcon(this.createNotificationIcon());
|
|
||||||
|
|
||||||
let message = wrappedText(this._initialMessage, this._author, null, TelepathyClient.NotificationDirection.RECEIVED);
|
|
||||||
this._notification.appendMessage(message, false);
|
|
||||||
|
|
||||||
if (!Main.messageTray.contains(this))
|
|
||||||
Main.messageTray.add(this);
|
|
||||||
|
|
||||||
this.notify(this._notification);
|
|
||||||
},
|
|
||||||
|
|
||||||
createNotificationIcon: function() {
|
|
||||||
let iconBox = new St.Bin({ style_class: 'avatar-box' });
|
|
||||||
iconBox._size = this.ICON_SIZE;
|
|
||||||
|
|
||||||
if (!this._iconUri) {
|
|
||||||
iconBox.child = new St.Icon({ icon_name: 'avatar-default',
|
|
||||||
icon_type: St.IconType.FULLCOLOR,
|
|
||||||
icon_size: iconBox._size });
|
|
||||||
} else {
|
|
||||||
let textureCache = St.TextureCache.get_default();
|
|
||||||
iconBox.child = textureCache.load_uri_async(this._iconUri, iconBox._size, iconBox._size);
|
|
||||||
}
|
|
||||||
return iconBox;
|
|
||||||
},
|
|
||||||
|
|
||||||
open: function(notification) {
|
|
||||||
// Lookup for the messages window and display it. In the case where it's not o
|
|
||||||
// opened yet fallback to the roster window.
|
|
||||||
let windows = global.get_window_actors();
|
|
||||||
for (let i = 0; i < windows.length; i++) {
|
|
||||||
let metaWindow = windows[i].metaWindow;
|
|
||||||
if (metaWindow.get_wm_class_instance() == "gajim" &&
|
|
||||||
metaWindow.get_role() == "messages") {
|
|
||||||
Main.activateWindow(metaWindow);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
let app = Shell.AppSystem.get_default().lookup_app('gajim.desktop');
|
|
||||||
app.activate(-1);
|
|
||||||
},
|
|
||||||
|
|
||||||
_onChatState: function(emitter, data) {
|
|
||||||
let chatstate = data[1][5];
|
|
||||||
if (chatstate == 'gone')
|
|
||||||
this.destroy();
|
|
||||||
},
|
|
||||||
|
|
||||||
setChatState: function(state) {
|
|
||||||
// Gajim DBUS API doesn't support sending chatstate yet.
|
|
||||||
},
|
|
||||||
|
|
||||||
_messageReceived: function(emitter, data) {
|
|
||||||
let author = data[1][0];
|
|
||||||
let text = data[1][1];
|
|
||||||
if (text && (author == this._author)) {
|
|
||||||
let message = wrappedText(text, this._author, null, TelepathyClient.NotificationDirection.RECEIVED);
|
|
||||||
this._notification.appendMessage(message, false);
|
|
||||||
this.notify(this._notification);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
_messageSent: function(emitter, data) {
|
|
||||||
let recipient = data[1][0];
|
|
||||||
let text = data[1][1];
|
|
||||||
let chatstate = data[1][3];
|
|
||||||
|
|
||||||
if (text && (recipient == this._author)) {
|
|
||||||
let message = wrappedText(text, this._author, null, TelepathyClient.NotificationDirection.SENT);
|
|
||||||
this._notification.appendMessage(message, false);
|
|
||||||
} else if (chatstate == 'gone')
|
|
||||||
this.destroy();
|
|
||||||
},
|
|
||||||
|
|
||||||
notify: function() {
|
|
||||||
|
|
||||||
MessageTray.Source.prototype.notify.call(this, this._notification);
|
|
||||||
},
|
|
||||||
|
|
||||||
respond: function(text) {
|
|
||||||
let jid = this._author;
|
|
||||||
let keyID = ""; // unencrypted.
|
|
||||||
this._gajimClient.proxy().send_chat_messageRemote(jid, text, keyID, this._accountName);
|
|
||||||
},
|
|
||||||
|
|
||||||
_onStatusChange: function(emitter, data) {
|
|
||||||
if (!this.title)
|
|
||||||
return;
|
|
||||||
|
|
||||||
let jid = data[1][0];
|
|
||||||
let presence = data[1][1];
|
|
||||||
let message = data[1][2];
|
|
||||||
|
|
||||||
if (jid != this._author.split('/')[0])
|
|
||||||
return;
|
|
||||||
|
|
||||||
let presenceMessage, shouldNotify, title;
|
|
||||||
title = GLib.markup_escape_text(this.title, -1);
|
|
||||||
if (presence == "away") {
|
|
||||||
presenceMessage = _("%s is away.").format(title);
|
|
||||||
shouldNotify = false;
|
|
||||||
} else if (presence == "offline") {
|
|
||||||
presenceMessage = _("%s is offline.").format(title);
|
|
||||||
shouldNotify = (this._presence != "offline");
|
|
||||||
} else if (presence == "online") {
|
|
||||||
presenceMessage = _("%s is online.").format(title);
|
|
||||||
shouldNotify = (this._presence == "offline");
|
|
||||||
} else if (presence == "dnd") {
|
|
||||||
presenceMessage = _("%s is busy.").format(title);
|
|
||||||
shouldNotify = false;
|
|
||||||
} else
|
|
||||||
return;
|
|
||||||
|
|
||||||
this._presence = presence;
|
|
||||||
|
|
||||||
if (message)
|
|
||||||
presenceMessage += ' <i>(' + GLib.markup_escape_text(message, -1) + ')</i>';
|
|
||||||
|
|
||||||
this._notification.appendPresence(presenceMessage, shouldNotify);
|
|
||||||
if (shouldNotify)
|
|
||||||
this.notify(this._notification);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
const GajimIface = {
|
|
||||||
name: 'org.gajim.dbus.RemoteInterface',
|
|
||||||
properties: [],
|
|
||||||
methods: [{ name: 'send_chat_message', inSignature: 'ssss', outSignature: 'b'},
|
|
||||||
{ name: 'contact_info', inSignature: 's', outSignature: 'a{sv}'}],
|
|
||||||
signals: [{ name: 'NewMessage', inSignature: 'av' },
|
|
||||||
{ name: 'ChatState', inSignature: 'av' },
|
|
||||||
{ name: 'ContactStatus', inSignature: 'av' },
|
|
||||||
{ name: 'ContactAbsence', inSignature: 'av' },
|
|
||||||
{ name: 'MessageSent', inSignature: 'av' }]
|
|
||||||
};
|
|
||||||
|
|
||||||
let Gajim = DBus.makeProxyClass(GajimIface);
|
|
||||||
|
|
||||||
function GajimClient() {
|
|
||||||
this._init();
|
|
||||||
}
|
|
||||||
|
|
||||||
GajimClient.prototype = {
|
|
||||||
_init: function() {
|
|
||||||
this._sources = {};
|
|
||||||
},
|
|
||||||
|
|
||||||
proxy : function() {
|
|
||||||
return this._proxy;
|
|
||||||
},
|
|
||||||
|
|
||||||
enable: function() {
|
|
||||||
this._cacheDir = GLib.get_user_cache_dir() + '/gnome-shell/gajim-avatars';
|
|
||||||
let dir = Gio.file_new_for_path(this._cacheDir);
|
|
||||||
if (!dir.query_exists(null)) {
|
|
||||||
GLib.mkdir_with_parents(this._cacheDir, 0x1c0); // 0x1c0 = octal 0700
|
|
||||||
}
|
|
||||||
|
|
||||||
this._proxy = new Gajim(DBus.session, 'org.gajim.dbus', '/org/gajim/dbus/RemoteObject');
|
|
||||||
this._newMessageId = this._proxy.connect('NewMessage', Lang.bind(this, this._messageReceived));
|
|
||||||
},
|
|
||||||
|
|
||||||
disable: function() {
|
|
||||||
if (this._newMessageId) {
|
|
||||||
this._proxy.disconnect(this._newMessageId);
|
|
||||||
this._newMessageId = 0;
|
|
||||||
}
|
|
||||||
this._proxy = null;
|
|
||||||
|
|
||||||
for (let id in this._sources)
|
|
||||||
this._sources[id].destroy();
|
|
||||||
|
|
||||||
this._sources = { };
|
|
||||||
},
|
|
||||||
|
|
||||||
_messageReceived : function(emitter, data) {
|
|
||||||
let author = data[1][0];
|
|
||||||
let message = data[1][1];
|
|
||||||
let account = data[0];
|
|
||||||
let source = this._sources[author];
|
|
||||||
if (!source) {
|
|
||||||
source = new Source(this, account, author, message);
|
|
||||||
source.connect('destroy', Lang.bind(this,
|
|
||||||
function() {
|
|
||||||
delete this._sources[author];
|
|
||||||
}));
|
|
||||||
this._sources[author] = source;
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
cacheAvatar : function(mimeType, sha, avatarData) {
|
|
||||||
let ext = mimeType.split('/')[1];
|
|
||||||
let file = this._cacheDir + '/' + sha + '.' + ext;
|
|
||||||
let uri = GLib.filename_to_uri(file, null);
|
|
||||||
|
|
||||||
if (GLib.file_test(file, GLib.FileTest.EXISTS))
|
|
||||||
return uri;
|
|
||||||
|
|
||||||
let success = false;
|
|
||||||
try {
|
|
||||||
success = GLib.file_set_contents(file, avatarData, avatarData.length);
|
|
||||||
} catch (e) {
|
|
||||||
logError(e, 'Error caching avatar data');
|
|
||||||
}
|
|
||||||
return uri;
|
|
||||||
}
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
function init() {
|
|
||||||
return new GajimClient();
|
|
||||||
}
|
|
||||||
@@ -1,10 +0,0 @@
|
|||||||
{
|
|
||||||
"extension-id": "@extension_id@",
|
|
||||||
"uuid": "@uuid@",
|
|
||||||
"settings-schema": "@gschemaname@",
|
|
||||||
"gettext-domain": "@gettext_domain@",
|
|
||||||
"name": "Gajim IM integration",
|
|
||||||
"description": "Display Gajim incoming chats as notifications in the Shell message tray.",
|
|
||||||
"shell-version": [ "@shell_current@" ],
|
|
||||||
"url": "http://base-art.net"
|
|
||||||
}
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
/* none used */
|
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
EXTENSION_ID = launch-new-instance
|
||||||
|
|
||||||
|
include ../../extension.mk
|
||||||
@@ -0,0 +1,37 @@
|
|||||||
|
const Main = imports.ui.main;
|
||||||
|
const AppDisplay = imports.ui.appDisplay;
|
||||||
|
|
||||||
|
var _onActivateOriginal = null;
|
||||||
|
var _activateResultOriginal = null;
|
||||||
|
|
||||||
|
function _onActivate(event) {
|
||||||
|
|
||||||
|
this.emit('launching');
|
||||||
|
|
||||||
|
if (this._onActivateOverride) {
|
||||||
|
this._onActivateOverride(event);
|
||||||
|
} else {
|
||||||
|
this.app.open_new_window(-1);
|
||||||
|
}
|
||||||
|
Main.overview.hide();
|
||||||
|
}
|
||||||
|
|
||||||
|
function _activateResult(app) {
|
||||||
|
app.open_new_window(-1);
|
||||||
|
}
|
||||||
|
|
||||||
|
function init() {
|
||||||
|
}
|
||||||
|
|
||||||
|
function enable() {
|
||||||
|
_onActivateOriginal = AppDisplay.AppIcon.prototype._onActivate;
|
||||||
|
AppDisplay.AppIcon.prototype._onActivate = _onActivate;
|
||||||
|
|
||||||
|
_activateResultOriginal = AppDisplay.AppSearchProvider.prototype.activateResult;
|
||||||
|
AppDisplay.AppSearchProvider.prototype.activateResult = _activateResult;
|
||||||
|
}
|
||||||
|
|
||||||
|
function disable() {
|
||||||
|
AppDisplay.AppIcon.prototype._onActivate = _onActivateOriginal;
|
||||||
|
AppDisplay.AppSearchProvider.prototype.activateResult = _activateResultOriginal;
|
||||||
|
}
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
{
|
||||||
|
"extension-id": "@extension_id@",
|
||||||
|
"uuid": "@uuid@",
|
||||||
|
"settings-schema": "@gschemaname@",
|
||||||
|
"gettext-domain": "@gettext_domain@",
|
||||||
|
"name": "Launch new instance",
|
||||||
|
"description": "Always launch a new instance when clicking in the dash or the application view.\nThis extension is part of Classic Mode and is officially supported by GNOME. Please do not report bugs using the form below, use GNOME Bugzilla instead.",
|
||||||
|
"shell-version": [ "@shell_current@" ],
|
||||||
|
"url": "@url@"
|
||||||
|
}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
/* This extensions requires no special styling */
|
||||||
@@ -33,6 +33,9 @@ const WINDOW_PLACEMENT_NATURAL_MAX_TRANSLATIONS = 5000; // safety li
|
|||||||
|
|
||||||
const PLACE_WINDOW_CAPTIONS_ON_TOP = true; // place window titles in overview on top of windows with overlap parameter
|
const PLACE_WINDOW_CAPTIONS_ON_TOP = true; // place window titles in overview on top of windows with overlap parameter
|
||||||
|
|
||||||
|
const WORKSPACE_BORDER_GAP = 10; // minimum gap between the workspace area and the workspace selector
|
||||||
|
const WINDOW_AREA_TOP_GAP = 20; // minimum gap between the workspace area and the top border. This keeps window captions and close buttons visible. 13px (26/2) should currently be enough.
|
||||||
|
|
||||||
const BUTTON_LAYOUT_SCHEMA = 'org.gnome.shell.overrides';
|
const BUTTON_LAYOUT_SCHEMA = 'org.gnome.shell.overrides';
|
||||||
const BUTTON_LAYOUT_KEY = 'button-layout';
|
const BUTTON_LAYOUT_KEY = 'button-layout';
|
||||||
|
|
||||||
@@ -46,7 +49,6 @@ function injectToFunction(parent, name, func) {
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
const WORKSPACE_BORDER_GAP = 10; // gap between the workspace area and the workspace selector
|
|
||||||
|
|
||||||
const Rect = new Lang.Class({
|
const Rect = new Lang.Class({
|
||||||
Name: 'NativeWindowPlacement.Rect',
|
Name: 'NativeWindowPlacement.Rect',
|
||||||
@@ -121,7 +123,8 @@ function enable() {
|
|||||||
|
|
||||||
let settings = Convenience.getSettings();
|
let settings = Convenience.getSettings();
|
||||||
let useMoreScreen = settings.get_boolean('use-more-screen');
|
let useMoreScreen = settings.get_boolean('use-more-screen');
|
||||||
signalId = settings.connect('changed::use-more-screen', function() {
|
let windowCaptionsOnTop = settings.get_boolean('window-captions-on-top');
|
||||||
|
let signalId = settings.connect('changed::use-more-screen', function() {
|
||||||
useMoreScreen = settings.get_boolean('use-more-screen');
|
useMoreScreen = settings.get_boolean('use-more-screen');
|
||||||
});
|
});
|
||||||
connectedSignals.push({ obj: settings, id: signalId });
|
connectedSignals.push({ obj: settings, id: signalId });
|
||||||
@@ -142,10 +145,41 @@ function enable() {
|
|||||||
return win2.metaWindow.get_stable_sequence() - win1.metaWindow.get_stable_sequence();
|
return win2.metaWindow.get_stable_sequence() - win1.metaWindow.get_stable_sequence();
|
||||||
});
|
});
|
||||||
|
|
||||||
// Put a gap on the right edge of the workspace to separe it from the workspace selector
|
let node = this.actor.get_theme_node();
|
||||||
let x_gap = WORKSPACE_BORDER_GAP;
|
let columnSpacing = node.get_length('-horizontal-spacing');
|
||||||
let y_gap = WORKSPACE_BORDER_GAP * this._height / this._width
|
let rowSpacing = node.get_length('-vertical-spacing');
|
||||||
let area = new Rect(this._x, this._y, this._width - x_gap, this._height - y_gap);
|
let padding = {
|
||||||
|
left: node.get_padding(St.Side.LEFT),
|
||||||
|
top: node.get_padding(St.Side.TOP),
|
||||||
|
bottom: node.get_padding(St.Side.BOTTOM),
|
||||||
|
right: node.get_padding(St.Side.RIGHT),
|
||||||
|
};
|
||||||
|
|
||||||
|
let closeButtonHeight, captionHeight;
|
||||||
|
let leftBorder, rightBorder;
|
||||||
|
// If the window captions are below the window, put an additional gap to account for them
|
||||||
|
if (!windowCaptionsOnTop && this._windowOverlays.length) {
|
||||||
|
// All of the overlays have the same chrome sizes,
|
||||||
|
// so just pick the first one.
|
||||||
|
let overlay = this._windowOverlays[0];
|
||||||
|
[closeButtonHeight, captionHeight] = overlay.chromeHeights();
|
||||||
|
[leftBorder, rightBorder] = overlay.chromeWidths();
|
||||||
|
} else {
|
||||||
|
[closeButtonHeight, captionHeight] = [0, 0];
|
||||||
|
[leftBorder, rightBorder] = [0, 0];
|
||||||
|
}
|
||||||
|
|
||||||
|
rowSpacing += captionHeight;
|
||||||
|
columnSpacing += (rightBorder + leftBorder) / 2;
|
||||||
|
padding.top += closeButtonHeight;
|
||||||
|
padding.bottom += captionHeight;
|
||||||
|
padding.left += leftBorder;
|
||||||
|
padding.right += rightBorder;
|
||||||
|
|
||||||
|
let area = new Rect(this._x + padding.left,
|
||||||
|
this._y + padding.top,
|
||||||
|
this._width - padding.left - padding.right,
|
||||||
|
this._height - padding.top - padding.bottom);
|
||||||
|
|
||||||
let bounds = area.copy();
|
let bounds = area.copy();
|
||||||
|
|
||||||
@@ -287,8 +321,8 @@ function enable() {
|
|||||||
|
|
||||||
let targets = [];
|
let targets = [];
|
||||||
for (let i = 0; i < rects.length; i++) {
|
for (let i = 0; i < rects.length; i++) {
|
||||||
rects[i].x = rects[i].x * scale + this._x;
|
rects[i].x = rects[i].x * scale + area.x;
|
||||||
rects[i].y = rects[i].y * scale + this._y;
|
rects[i].y = rects[i].y * scale + area.y;
|
||||||
|
|
||||||
targets[i] = [rects[i].x, rects[i].y, scale];
|
targets[i] = [rects[i].x, rects[i].y, scale];
|
||||||
}
|
}
|
||||||
@@ -298,13 +332,13 @@ function enable() {
|
|||||||
workspaceInjections['_calculateWindowTransformationsNatural'] = undefined;
|
workspaceInjections['_calculateWindowTransformationsNatural'] = undefined;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* positionWindows:
|
* _realPositionWindows:
|
||||||
* @flags:
|
* @flags:
|
||||||
* INITIAL - this is the initial positioning of the windows.
|
* INITIAL - this is the initial positioning of the windows.
|
||||||
* ANIMATE - Indicates that we need animate changing position.
|
* ANIMATE - Indicates that we need animate changing position.
|
||||||
*/
|
*/
|
||||||
workspaceInjections['positionWindows'] = Workspace.Workspace.prototype.positionWindows;
|
workspaceInjections['_realPositionWindows'] = Workspace.Workspace.prototype._realPositionWindows;
|
||||||
Workspace.Workspace.prototype.positionWindows = function(flags) {
|
Workspace.Workspace.prototype._realPositionWindows = function(flags) {
|
||||||
if (this._repositionWindowsId > 0) {
|
if (this._repositionWindowsId > 0) {
|
||||||
Mainloop.source_remove(this._repositionWindowsId);
|
Mainloop.source_remove(this._repositionWindowsId);
|
||||||
this._repositionWindowsId = 0;
|
this._repositionWindowsId = 0;
|
||||||
@@ -318,28 +352,32 @@ function enable() {
|
|||||||
let animate = flags & WindowPositionFlags.ANIMATE;
|
let animate = flags & WindowPositionFlags.ANIMATE;
|
||||||
|
|
||||||
// Start the animations
|
// Start the animations
|
||||||
let targets = [];
|
let targets = [];
|
||||||
let scales = [];
|
let scales = [];
|
||||||
|
|
||||||
[clones, targets] = this._calculateWindowTransformationsNatural(clones);
|
[clones, targets] = this._calculateWindowTransformationsNatural(clones);
|
||||||
|
|
||||||
let currentWorkspace = global.screen.get_active_workspace();
|
let currentWorkspace = global.screen.get_active_workspace();
|
||||||
let isOnCurrentWorkspace = this.metaWorkspace == null || this.metaWorkspace == currentWorkspace;
|
let isOnCurrentWorkspace = this.metaWorkspace == null || this.metaWorkspace == currentWorkspace;
|
||||||
|
|
||||||
for (let i = 0; i < clones.length; i++) {
|
for (let i = 0; i < clones.length; i++) {
|
||||||
let clone = clones[i];
|
let clone = clones[i];
|
||||||
let [x, y , scale] = targets[i];
|
let [x, y , scale] = targets[i];
|
||||||
let metaWindow = clone.metaWindow;
|
let metaWindow = clone.metaWindow;
|
||||||
let mainIndex = this._lookupIndex(metaWindow);
|
let mainIndex = this._lookupIndex(metaWindow);
|
||||||
let overlay = this._windowOverlays[mainIndex];
|
let overlay = this._windowOverlays[mainIndex];
|
||||||
|
clone.slotId = i;
|
||||||
|
|
||||||
// Positioning a window currently being dragged must be avoided;
|
// Positioning a window currently being dragged must be avoided;
|
||||||
// we'll just leave a blank spot in the layout for it.
|
// we'll just leave a blank spot in the layout for it.
|
||||||
if (clone.inDrag)
|
if (clone.inDrag)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
clone.slot = [x, y, clone.actor.width * scale, clone.actor.height * scale];
|
||||||
|
|
||||||
if (overlay && initialPositioning)
|
if (overlay && initialPositioning)
|
||||||
overlay.hide();
|
overlay.hide(initialPositioning);
|
||||||
|
|
||||||
if (animate && isOnCurrentWorkspace) {
|
if (animate && isOnCurrentWorkspace) {
|
||||||
if (!metaWindow.showing_on_its_workspace()) {
|
if (!metaWindow.showing_on_its_workspace()) {
|
||||||
/* Hidden windows should fade in and grow
|
/* Hidden windows should fade in and grow
|
||||||
@@ -365,76 +403,28 @@ function enable() {
|
|||||||
} else {
|
} else {
|
||||||
clone.actor.set_position(x, y);
|
clone.actor.set_position(x, y);
|
||||||
clone.actor.set_scale(scale, scale);
|
clone.actor.set_scale(scale, scale);
|
||||||
this._updateWindowOverlayPositions(clone, overlay, x, y, scale, false);
|
clone.overlay.relayout(false);
|
||||||
this._showWindowOverlay(clone, overlay, isOnCurrentWorkspace);
|
this._showWindowOverlay(clone, overlay, isOnCurrentWorkspace);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// position window titles on top of windows in overlay ////
|
/// position window titles on top of windows in overlay ////
|
||||||
if (settings.get_boolean('window-captions-on-top')) {
|
if (windowCaptionsOnTop) {
|
||||||
winInjections['_init'] = Workspace.WindowOverlay.prototype._init;
|
|
||||||
Workspace.WindowOverlay.prototype._init = function(windowClone, parentActor) {
|
|
||||||
let metaWindow = windowClone.metaWindow;
|
|
||||||
|
|
||||||
this._windowClone = windowClone;
|
|
||||||
this._parentActor = parentActor;
|
|
||||||
this._hidden = false;
|
|
||||||
|
|
||||||
let title = new St.Label({ style_class: 'window-caption',
|
|
||||||
text: metaWindow.title });
|
|
||||||
title.clutter_text.ellipsize = Pango.EllipsizeMode.END;
|
|
||||||
title._spacing = 0;
|
|
||||||
title._overlap = 0;
|
|
||||||
|
|
||||||
this._updateCaptionId = metaWindow.connect('notify::title', Lang.bind(this, function(w) {
|
|
||||||
this.title.text = w.title;
|
|
||||||
}));
|
|
||||||
|
|
||||||
let button = new St.Button({ style_class: 'window-close' });
|
|
||||||
button._overlap = 0;
|
|
||||||
|
|
||||||
this._idleToggleCloseId = 0;
|
|
||||||
button.connect('clicked', Lang.bind(this, this._closeWindow));
|
|
||||||
|
|
||||||
windowClone.actor.connect('destroy', Lang.bind(this, this._onDestroy));
|
|
||||||
windowClone.actor.connect('enter-event', Lang.bind(this, this._onEnter));
|
|
||||||
windowClone.actor.connect('leave-event', Lang.bind(this, this._onLeave));
|
|
||||||
|
|
||||||
this._windowAddedId = 0;
|
|
||||||
windowClone.connect('zoom-start', Lang.bind(this, this.hide));
|
|
||||||
windowClone.connect('zoom-end', Lang.bind(this, this.show));
|
|
||||||
|
|
||||||
button.hide();
|
|
||||||
|
|
||||||
this.title = title;
|
|
||||||
this.closeButton = button;
|
|
||||||
|
|
||||||
parentActor.add_actor(this.title);
|
|
||||||
parentActor.add_actor(this.closeButton);
|
|
||||||
title.connect('style-changed', Lang.bind(this, this._onStyleChanged));
|
|
||||||
button.connect('style-changed', Lang.bind(this, this._onStyleChanged));
|
|
||||||
|
|
||||||
// force a style change if we are already on a stage - otherwise
|
|
||||||
// the signal will be emitted normally when we are added
|
|
||||||
if (parentActor.get_stage())
|
|
||||||
this._onStyleChanged();
|
|
||||||
},
|
|
||||||
|
|
||||||
winInjections['chromeHeights'] = Workspace.WindowOverlay.prototype.chromeHeights;
|
winInjections['chromeHeights'] = Workspace.WindowOverlay.prototype.chromeHeights;
|
||||||
Workspace.WindowOverlay.prototype.chromeHeights = function () {
|
Workspace.WindowOverlay.prototype.chromeHeights = function () {
|
||||||
return [Math.max( this.closeButton.height - this.closeButton._overlap, this.title.height - this.title._overlap),
|
return [Math.max( this.closeButton.height - this.closeButton._overlap, this.title.height - this.title._overlap),
|
||||||
0];
|
0];
|
||||||
},
|
};
|
||||||
|
|
||||||
winInjections['updatePositions'] = Workspace.WindowOverlay.prototype.updatePositions;
|
winInjections['updatePositions'] = Workspace.WindowOverlay.prototype.updatePositions;
|
||||||
Workspace.WindowOverlay.prototype.updatePositions = function(cloneX, cloneY, cloneWidth, cloneHeight, animate) {
|
Workspace.WindowOverlay.prototype.updatePositions = function(cloneX, cloneY, cloneWidth, cloneHeight, animate) {
|
||||||
let button = this.closeButton;
|
let button = this.closeButton;
|
||||||
let title = this.title;
|
let title = this.title;
|
||||||
|
|
||||||
let settings = new Gio.Settings({ schema: BUTTON_LAYOUT_SCHEMA });
|
let settings = new Gio.Settings({ schema: BUTTON_LAYOUT_SCHEMA });
|
||||||
let layout = settings.get_string(BUTTON_LAYOUT_KEY);
|
let layout = settings.get_string(BUTTON_LAYOUT_KEY);
|
||||||
let rtl = St.Widget.get_default_direction() == St.TextDirection.RTL;
|
let rtl = Clutter.get_default_text_direction() == Clutter.TextDirection.RTL;
|
||||||
|
|
||||||
let split = layout.split(":");
|
let split = layout.split(":");
|
||||||
let side;
|
let side;
|
||||||
@@ -460,7 +450,7 @@ function enable() {
|
|||||||
let titleWidth = Math.min(title.fullWidth, cloneWidth);
|
let titleWidth = Math.min(title.fullWidth, cloneWidth);
|
||||||
|
|
||||||
let titleX = cloneX + (cloneWidth - titleWidth) / 2;
|
let titleX = cloneX + (cloneWidth - titleWidth) / 2;
|
||||||
let titleY = cloneY - title.height + title._overlap;
|
let titleY = cloneY - title.height + title._spacing;
|
||||||
|
|
||||||
if (animate)
|
if (animate)
|
||||||
this._animateOverlayActor(title, Math.floor(titleX), Math.floor(titleY), titleWidth);
|
this._animateOverlayActor(title, Math.floor(titleX), Math.floor(titleY), titleWidth);
|
||||||
@@ -468,19 +458,7 @@ function enable() {
|
|||||||
title.width = titleWidth;
|
title.width = titleWidth;
|
||||||
title.set_position(Math.floor(titleX), Math.floor(titleY));
|
title.set_position(Math.floor(titleX), Math.floor(titleY));
|
||||||
}
|
}
|
||||||
},
|
};
|
||||||
|
|
||||||
winInjections['_onStyleChanged'] = Workspace.WindowOverlay.prototype._onStyleChanged;
|
|
||||||
Workspace.WindowOverlay.prototype._onStyleChanged = function() {
|
|
||||||
let titleNode = this.title.get_theme_node();
|
|
||||||
this.title._spacing = titleNode.get_length('-shell-caption-spacing');
|
|
||||||
this.title._overlap = titleNode.get_length('-shell-caption-overlap');
|
|
||||||
|
|
||||||
let closeNode = this.closeButton.get_theme_node();
|
|
||||||
this.closeButton._overlap = closeNode.get_length('-shell-close-overlap');
|
|
||||||
|
|
||||||
this._parentActor.queue_relayout();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
"settings-schema": "@gschemaname@",
|
"settings-schema": "@gschemaname@",
|
||||||
"gettext-domain": "@gettext_domain@",
|
"gettext-domain": "@gettext_domain@",
|
||||||
"name": "Native Window Placement",
|
"name": "Native Window Placement",
|
||||||
"description": "Arrange windows in overview in a more native way",
|
"description": "Arrange windows in overview in a more compact way.",
|
||||||
"shell-version": [ "@shell_current@" ],
|
"shell-version": [ "@shell_current@" ],
|
||||||
"url": "@url@",
|
"url": "@url@",
|
||||||
"original-authors": [ "wepmaschda@gmx.de" ]
|
"original-authors": [ "wepmaschda@gmx.de" ]
|
||||||
|
|||||||
@@ -1,3 +1,9 @@
|
|||||||
.window-caption {
|
.window-caption {
|
||||||
-shell-caption-overlap: 10px;
|
-shell-caption-spacing: 13px; /* current caption height is 26px => set it to half of it. TODO: better solution needed */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.window-picker {
|
||||||
|
-horizontal-spacing: 32px;
|
||||||
|
-vertical-spacing: 32px;
|
||||||
|
padding: 64px 32px;
|
||||||
|
}
|
||||||
@@ -1,3 +1,5 @@
|
|||||||
EXTENSION_ID = places-menu
|
EXTENSION_ID = places-menu
|
||||||
|
|
||||||
|
EXTRA_MODULES = placeDisplay.js
|
||||||
|
|
||||||
include ../../extension.mk
|
include ../../extension.mk
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
/* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */
|
/* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */
|
||||||
|
|
||||||
const Gdk = imports.gi.Gdk;
|
const Gio = imports.gi.Gio;
|
||||||
const GLib = imports.gi.GLib;
|
const GLib = imports.gi.GLib;
|
||||||
const Lang = imports.lang;
|
const Lang = imports.lang;
|
||||||
const Shell = imports.gi.Shell;
|
const Shell = imports.gi.Shell;
|
||||||
@@ -13,112 +13,107 @@ const Panel = imports.ui.panel;
|
|||||||
|
|
||||||
const Gettext = imports.gettext.domain('gnome-shell-extensions');
|
const Gettext = imports.gettext.domain('gnome-shell-extensions');
|
||||||
const _ = Gettext.gettext;
|
const _ = Gettext.gettext;
|
||||||
|
const N_ = function(x) { return x; }
|
||||||
|
|
||||||
const ExtensionUtils = imports.misc.extensionUtils;
|
const ExtensionUtils = imports.misc.extensionUtils;
|
||||||
const Me = ExtensionUtils.getCurrentExtension();
|
const Me = ExtensionUtils.getCurrentExtension();
|
||||||
const Convenience = Me.imports.convenience;
|
const Convenience = Me.imports.convenience;
|
||||||
|
const PlaceDisplay = Me.imports.placeDisplay;
|
||||||
|
|
||||||
const PLACE_ICON_SIZE = 22;
|
const PLACE_ICON_SIZE = 16;
|
||||||
|
|
||||||
const PlacesMenu = new Lang.Class({
|
const PlaceMenuItem = new Lang.Class({
|
||||||
Name: 'PlacesMenu.PlacesMenu',
|
Name: 'PlaceMenuItem',
|
||||||
Extends: PanelMenu.SystemStatusButton,
|
Extends: PopupMenu.PopupBaseMenuItem,
|
||||||
|
|
||||||
_init: function() {
|
_init: function(info) {
|
||||||
this.parent('folder');
|
this.parent();
|
||||||
|
this._info = info;
|
||||||
|
|
||||||
this.defaultItems = [];
|
this._icon = new St.Icon({ gicon: info.icon,
|
||||||
this.bookmarkItems = [];
|
icon_size: PLACE_ICON_SIZE });
|
||||||
this.deviceItems = [];
|
this.addActor(this._icon);
|
||||||
this._createDefaultPlaces();
|
|
||||||
this._bookmarksSection = new PopupMenu.PopupMenuSection();
|
|
||||||
this.menu.addMenuItem(this._bookmarksSection);
|
|
||||||
this._createBookmarks();
|
|
||||||
this._devicesMenuItem = new PopupMenu.PopupSubMenuMenuItem(_("Removable Devices"));
|
|
||||||
this.menu.addMenuItem(this._devicesMenuItem);
|
|
||||||
this._createDevices();
|
|
||||||
|
|
||||||
this._bookmarksId = Main.placesManager.connect('bookmarks-updated',Lang.bind(this,this._redisplayBookmarks));
|
this._label = new St.Label({ text: info.name });
|
||||||
this._mountsId = Main.placesManager.connect('mounts-updated',Lang.bind(this,this._redisplayDevices));
|
this.addActor(this._label);
|
||||||
|
|
||||||
|
this._changedId = info.connect('changed',
|
||||||
|
Lang.bind(this, this._propertiesChanged));
|
||||||
},
|
},
|
||||||
|
|
||||||
destroy: function() {
|
destroy: function() {
|
||||||
Main.placesManager.disconnect(this._bookmarksId);
|
if (this._changedId) {
|
||||||
Main.placesManager.disconnect(this._mountsId);
|
this._info.disconnect(this._changedId);
|
||||||
|
this._changedId = 0;
|
||||||
|
}
|
||||||
|
|
||||||
this.parent();
|
this.parent();
|
||||||
},
|
},
|
||||||
|
|
||||||
_redisplayBookmarks: function(){
|
activate: function(event) {
|
||||||
this._clearBookmarks();
|
this._info.launch(event.get_time());
|
||||||
this._createBookmarks();
|
|
||||||
|
this.parent(event);
|
||||||
},
|
},
|
||||||
|
|
||||||
_redisplayDevices: function(){
|
_propertiesChanged: function(info) {
|
||||||
this._clearDevices();
|
this._icon.gicon = info.icon;
|
||||||
this._createDevices();
|
this._label.text = info.name;
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
const SECTIONS = [
|
||||||
|
'special',
|
||||||
|
'devices',
|
||||||
|
'bookmarks',
|
||||||
|
'network'
|
||||||
|
]
|
||||||
|
|
||||||
|
const PlacesMenu = new Lang.Class({
|
||||||
|
Name: 'PlacesMenu.PlacesMenu',
|
||||||
|
Extends: PanelMenu.Button,
|
||||||
|
|
||||||
|
_init: function() {
|
||||||
|
let label = new St.Label({ text: _("Places") });
|
||||||
|
this.parent(0.0, label.text);
|
||||||
|
this.actor.add_actor(label);
|
||||||
|
|
||||||
|
this.placesManager = new PlaceDisplay.PlacesManager();
|
||||||
|
|
||||||
|
this._sections = { };
|
||||||
|
|
||||||
|
for (let i=0; i < SECTIONS.length; i++) {
|
||||||
|
let id = SECTIONS[i];
|
||||||
|
this._sections[id] = new PopupMenu.PopupMenuSection();
|
||||||
|
this.placesManager.connect(id + '-updated', Lang.bind(this, function() {
|
||||||
|
this._redisplay(id);
|
||||||
|
}));
|
||||||
|
|
||||||
|
this._create(id);
|
||||||
|
this.menu.addMenuItem(this._sections[id]);
|
||||||
|
this.menu.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
|
||||||
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
_createDefaultPlaces : function() {
|
destroy: function() {
|
||||||
this.defaultPlaces = Main.placesManager.getDefaultPlaces();
|
this.placesManager.destroy();
|
||||||
|
|
||||||
for (let placeid = 0; placeid < this.defaultPlaces.length; placeid++) {
|
this.parent();
|
||||||
this.defaultItems[placeid] = new PopupMenu.PopupMenuItem(this.defaultPlaces[placeid].name);
|
|
||||||
let icon = this.defaultPlaces[placeid].iconFactory(PLACE_ICON_SIZE);
|
|
||||||
this.defaultItems[placeid].addActor(icon, { align: St.Align.END });
|
|
||||||
this.defaultItems[placeid].place = this.defaultPlaces[placeid];
|
|
||||||
this.menu.addMenuItem(this.defaultItems[placeid]);
|
|
||||||
this.defaultItems[placeid].connect('activate', function(actor,event) {
|
|
||||||
actor.place.launch();
|
|
||||||
});
|
|
||||||
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
|
|
||||||
_createBookmarks : function() {
|
_redisplay: function(id) {
|
||||||
this.bookmarks = Main.placesManager.getBookmarks();
|
this._sections[id].removeAll();
|
||||||
|
this._create(id);
|
||||||
for (let bookmarkid = 0; bookmarkid < this.bookmarks.length; bookmarkid++) {
|
|
||||||
this.bookmarkItems[bookmarkid] = new PopupMenu.PopupMenuItem(this.bookmarks[bookmarkid].name);
|
|
||||||
let icon = this.bookmarks[bookmarkid].iconFactory(PLACE_ICON_SIZE);
|
|
||||||
this.bookmarkItems[bookmarkid].addActor(icon, { align: St.Align.END });
|
|
||||||
this.bookmarkItems[bookmarkid].place = this.bookmarks[bookmarkid];
|
|
||||||
this._bookmarksSection.addMenuItem(this.bookmarkItems[bookmarkid]);
|
|
||||||
this.bookmarkItems[bookmarkid].connect('activate', function(actor,event) {
|
|
||||||
actor.place.launch();
|
|
||||||
});
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
|
|
||||||
_createDevices : function() {
|
_create: function(id) {
|
||||||
this.devices = Main.placesManager.getMounts();
|
let places = this.placesManager.get(id);
|
||||||
|
|
||||||
for (let devid = 0; devid < this.devices.length; devid++) {
|
for (let i = 0; i < places.length; i++)
|
||||||
this.deviceItems[devid] = new PopupMenu.PopupMenuItem(this.devices[devid].name);
|
this._sections[id].addMenuItem(new PlaceMenuItem(places[i]));
|
||||||
let icon = this.devices[devid].iconFactory(PLACE_ICON_SIZE);
|
|
||||||
this.deviceItems[devid].addActor(icon, { align: St.Align.END });
|
|
||||||
this.deviceItems[devid].place = this.devices[devid];
|
|
||||||
this._devicesMenuItem.menu.addMenuItem(this.deviceItems[devid]);
|
|
||||||
this.deviceItems[devid].connect('activate', function(actor,event) {
|
|
||||||
actor.place.launch();
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
if (this.devices.length == 0)
|
this._sections[id].actor.visible = places.length > 0;
|
||||||
this._devicesMenuItem.actor.hide();
|
}
|
||||||
else
|
|
||||||
this._devicesMenuItem.actor.show();
|
|
||||||
},
|
|
||||||
|
|
||||||
_clearBookmarks : function(){
|
|
||||||
this._bookmarksSection.removeAll();
|
|
||||||
this.bookmarkItems = [];
|
|
||||||
},
|
|
||||||
|
|
||||||
_clearDevices : function(){
|
|
||||||
this._devicesMenuItem.menu.removeAll();
|
|
||||||
this.deviceItems = [];
|
|
||||||
},
|
|
||||||
});
|
});
|
||||||
|
|
||||||
function init() {
|
function init() {
|
||||||
@@ -129,7 +124,11 @@ let _indicator;
|
|||||||
|
|
||||||
function enable() {
|
function enable() {
|
||||||
_indicator = new PlacesMenu;
|
_indicator = new PlacesMenu;
|
||||||
Main.panel.addToStatusArea('places-menu', _indicator);
|
|
||||||
|
let pos = 1;
|
||||||
|
if ('apps-menu' in Main.panel.statusArea)
|
||||||
|
pos = 2;
|
||||||
|
Main.panel.addToStatusArea('places-menu', _indicator, pos, 'left');
|
||||||
}
|
}
|
||||||
|
|
||||||
function disable() {
|
function disable() {
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
"settings-schema": "@gschemaname@",
|
"settings-schema": "@gschemaname@",
|
||||||
"gettext-domain": "@gettext_domain@",
|
"gettext-domain": "@gettext_domain@",
|
||||||
"name": "Places Status Indicator",
|
"name": "Places Status Indicator",
|
||||||
"description": "Add a systems status menu for quickly navigating places in the system",
|
"description": "Add a menu for quickly navigating places in the system.\nThis extension is part of Classic Mode and is officially supported by GNOME. Please do not report bugs using the form below, use GNOME Bugzilla instead.",
|
||||||
"shell-version": [ "@shell_current@" ],
|
"shell-version": [ "@shell_current@" ],
|
||||||
"url": "@url@"
|
"url": "@url@"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,446 @@
|
|||||||
|
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
|
||||||
|
|
||||||
|
const GLib = imports.gi.GLib;
|
||||||
|
const Gio = imports.gi.Gio;
|
||||||
|
const Shell = imports.gi.Shell;
|
||||||
|
const Lang = imports.lang;
|
||||||
|
const Mainloop = imports.mainloop;
|
||||||
|
const Signals = imports.signals;
|
||||||
|
const St = imports.gi.St;
|
||||||
|
|
||||||
|
const DND = imports.ui.dnd;
|
||||||
|
const Main = imports.ui.main;
|
||||||
|
const Params = imports.misc.params;
|
||||||
|
const Search = imports.ui.search;
|
||||||
|
const Util = imports.misc.util;
|
||||||
|
|
||||||
|
const Gettext = imports.gettext.domain('gnome-shell-extensions');
|
||||||
|
const _ = Gettext.gettext;
|
||||||
|
const N_ = function(x) { return x; }
|
||||||
|
|
||||||
|
const Hostname1Iface = <interface name="org.freedesktop.hostname1">
|
||||||
|
<property name="PrettyHostname" type="s" access="read" />
|
||||||
|
</interface>;
|
||||||
|
const Hostname1 = Gio.DBusProxy.makeProxyWrapper(Hostname1Iface);
|
||||||
|
|
||||||
|
const PlaceInfo = new Lang.Class({
|
||||||
|
Name: 'PlaceInfo',
|
||||||
|
|
||||||
|
_init: function(kind, file, name, icon) {
|
||||||
|
this.kind = kind;
|
||||||
|
this.file = file;
|
||||||
|
this.name = name || this._getFileName();
|
||||||
|
this.icon = icon ? new Gio.ThemedIcon({ name: icon }) : this.getIcon();
|
||||||
|
},
|
||||||
|
|
||||||
|
destroy: function() {
|
||||||
|
},
|
||||||
|
|
||||||
|
isRemovable: function() {
|
||||||
|
return false;
|
||||||
|
},
|
||||||
|
|
||||||
|
launch: function(timestamp) {
|
||||||
|
let launchContext = global.create_app_launch_context();
|
||||||
|
launchContext.set_timestamp(timestamp);
|
||||||
|
|
||||||
|
try {
|
||||||
|
Gio.AppInfo.launch_default_for_uri(this.file.get_uri(),
|
||||||
|
launchContext);
|
||||||
|
} catch(e if e.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.NOT_MOUNTED)) {
|
||||||
|
this.file.mount_enclosing_volume(0, null, null, function(file, result) {
|
||||||
|
file.mount_enclosing_volume_finish(result);
|
||||||
|
Gio.AppInfo.launch_default_for_uri(file.get_uri(), launchContext);
|
||||||
|
});
|
||||||
|
} catch(e) {
|
||||||
|
Main.notifyError(_("Failed to launch \"%s\"").format(this.name), e.message);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
getIcon: function() {
|
||||||
|
try {
|
||||||
|
let info = this.file.query_info('standard::symbolic-icon', 0, null);
|
||||||
|
return info.get_symbolic_icon();
|
||||||
|
} catch(e if e instanceof Gio.IOErrorEnum) {
|
||||||
|
// return a generic icon for this kind
|
||||||
|
switch (this.kind) {
|
||||||
|
case 'network':
|
||||||
|
return new Gio.ThemedIcon({ name: 'folder-remote-symbolic' });
|
||||||
|
case 'devices':
|
||||||
|
return new Gio.ThemedIcon({ name: 'drive-harddisk-symbolic' });
|
||||||
|
case 'special':
|
||||||
|
case 'bookmarks':
|
||||||
|
default:
|
||||||
|
if (!this.file.is_native())
|
||||||
|
return new Gio.ThemedIcon({ name: 'folder-remote-symbolic' });
|
||||||
|
else
|
||||||
|
return new Gio.ThemedIcon({ name: 'folder-symbolic' });
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
_getFileName: function() {
|
||||||
|
try {
|
||||||
|
let info = this.file.query_info('standard::display-name', 0, null);
|
||||||
|
return info.get_display_name();
|
||||||
|
} catch(e if e instanceof Gio.IOErrorEnum) {
|
||||||
|
return this.file.get_basename();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
});
|
||||||
|
Signals.addSignalMethods(PlaceInfo.prototype);
|
||||||
|
|
||||||
|
const RootInfo = new Lang.Class({
|
||||||
|
Name: 'RootInfo',
|
||||||
|
Extends: PlaceInfo,
|
||||||
|
|
||||||
|
_init: function() {
|
||||||
|
this.parent('devices', Gio.File.new_for_path('/'), _("Computer"));
|
||||||
|
|
||||||
|
this._proxy = new Hostname1(Gio.DBus.system,
|
||||||
|
'org.freedesktop.hostname1',
|
||||||
|
'/org/freedesktop/hostname1',
|
||||||
|
Lang.bind(this, function(obj, error) {
|
||||||
|
if (error)
|
||||||
|
return;
|
||||||
|
|
||||||
|
this._proxy.connect('g-properties-changed',
|
||||||
|
Lang.bind(this, this._propertiesChanged));
|
||||||
|
this._propertiesChanged(obj);
|
||||||
|
}));
|
||||||
|
},
|
||||||
|
|
||||||
|
getIcon: function() {
|
||||||
|
return new Gio.ThemedIcon({ name: 'drive-harddisk-symbolic' });
|
||||||
|
},
|
||||||
|
|
||||||
|
_propertiesChanged: function(proxy) {
|
||||||
|
// GDBusProxy will emit a g-properties-changed when hostname1 goes down
|
||||||
|
// ignore it
|
||||||
|
if (proxy.g_name_owner) {
|
||||||
|
this.name = proxy.PrettyHostname || _("Computer");
|
||||||
|
this.emit('changed');
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
destroy: function() {
|
||||||
|
this._proxy.run_dispose();
|
||||||
|
this.parent();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
const PlaceDeviceInfo = new Lang.Class({
|
||||||
|
Name: 'PlaceDeviceInfo',
|
||||||
|
Extends: PlaceInfo,
|
||||||
|
|
||||||
|
_init: function(kind, mount) {
|
||||||
|
this._mount = mount;
|
||||||
|
this.parent(kind, mount.get_root(), mount.get_name());
|
||||||
|
},
|
||||||
|
|
||||||
|
getIcon: function() {
|
||||||
|
return this._mount.get_symbolic_icon();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
const PlaceVolumeInfo = new Lang.Class({
|
||||||
|
Name: 'PlaceVolumeInfo',
|
||||||
|
Extends: PlaceInfo,
|
||||||
|
|
||||||
|
_init: function(kind, volume) {
|
||||||
|
this._volume = volume;
|
||||||
|
this.parent(kind, volume.get_activation_root(), volume.get_name());
|
||||||
|
},
|
||||||
|
|
||||||
|
launch: function(timestamp) {
|
||||||
|
if (this.file) {
|
||||||
|
this.parent(timestamp);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
this._volume.mount(0, null, null, Lang.bind(this, function(volume, result) {
|
||||||
|
volume.mount_finish(result);
|
||||||
|
|
||||||
|
let mount = volume.get_mount();
|
||||||
|
this.file = mount.get_root();
|
||||||
|
this.parent(timestamp);
|
||||||
|
}));
|
||||||
|
},
|
||||||
|
|
||||||
|
getIcon: function() {
|
||||||
|
return this._volume.get_symbolic_icon();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
const DEFAULT_DIRECTORIES = [
|
||||||
|
GLib.UserDirectory.DIRECTORY_DOCUMENTS,
|
||||||
|
GLib.UserDirectory.DIRECTORY_PICTURES,
|
||||||
|
GLib.UserDirectory.DIRECTORY_MUSIC,
|
||||||
|
GLib.UserDirectory.DIRECTORY_DOWNLOAD,
|
||||||
|
GLib.UserDirectory.DIRECTORY_VIDEOS,
|
||||||
|
];
|
||||||
|
|
||||||
|
const PlacesManager = new Lang.Class({
|
||||||
|
Name: 'PlacesManager',
|
||||||
|
|
||||||
|
_init: function() {
|
||||||
|
this._places = {
|
||||||
|
special: [],
|
||||||
|
devices: [],
|
||||||
|
bookmarks: [],
|
||||||
|
network: [],
|
||||||
|
};
|
||||||
|
|
||||||
|
let homePath = GLib.get_home_dir();
|
||||||
|
|
||||||
|
this._places.special.push(new PlaceInfo('special',
|
||||||
|
Gio.File.new_for_path(homePath),
|
||||||
|
_("Home")));
|
||||||
|
|
||||||
|
let specials = [];
|
||||||
|
for (let i = 0; i < DEFAULT_DIRECTORIES.length; i++) {
|
||||||
|
let specialPath = GLib.get_user_special_dir(DEFAULT_DIRECTORIES[i]);
|
||||||
|
if (specialPath == homePath)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
let file = Gio.File.new_for_path(specialPath), info;
|
||||||
|
try {
|
||||||
|
info = new PlaceInfo('special', file);
|
||||||
|
} catch(e if e.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.NOT_FOUND)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
specials.push(info);
|
||||||
|
}
|
||||||
|
|
||||||
|
specials.sort(function(a, b) {
|
||||||
|
return GLib.utf8_collate(a.name, b.name);
|
||||||
|
});
|
||||||
|
this._places.special = this._places.special.concat(specials);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Show devices, code more or less ported from nautilus-places-sidebar.c
|
||||||
|
*/
|
||||||
|
this._volumeMonitor = Gio.VolumeMonitor.get();
|
||||||
|
this._connectVolumeMonitorSignals();
|
||||||
|
this._updateMounts();
|
||||||
|
|
||||||
|
this._bookmarksFile = this._findBookmarksFile()
|
||||||
|
this._bookmarkTimeoutId = 0;
|
||||||
|
this._monitor = null;
|
||||||
|
|
||||||
|
if (this._bookmarksFile) {
|
||||||
|
this._monitor = this._bookmarksFile.monitor_file(Gio.FileMonitorFlags.NONE, null);
|
||||||
|
this._monitor.connect('changed', Lang.bind(this, function () {
|
||||||
|
if (this._bookmarkTimeoutId > 0)
|
||||||
|
return;
|
||||||
|
/* Defensive event compression */
|
||||||
|
this._bookmarkTimeoutId = Mainloop.timeout_add(100, Lang.bind(this, function () {
|
||||||
|
this._bookmarkTimeoutId = 0;
|
||||||
|
this._reloadBookmarks();
|
||||||
|
return false;
|
||||||
|
}));
|
||||||
|
}));
|
||||||
|
|
||||||
|
this._reloadBookmarks();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
_connectVolumeMonitorSignals: function() {
|
||||||
|
const signals = ['volume-added', 'volume-removed', 'volume-changed',
|
||||||
|
'mount-added', 'mount-removed', 'mount-changed',
|
||||||
|
'drive-connected', 'drive-disconnected', 'drive-changed'];
|
||||||
|
|
||||||
|
this._volumeMonitorSignals = [];
|
||||||
|
let func = Lang.bind(this, this._updateMounts);
|
||||||
|
for (let i = 0; i < signals.length; i++) {
|
||||||
|
let id = this._volumeMonitor.connect(signals[i], func);
|
||||||
|
this._volumeMonitorSignals.push(id);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
destroy: function() {
|
||||||
|
for (let i = 0; i < this._volumeMonitorSignals.length; i++)
|
||||||
|
this._volumeMonitor.disconnect(this._volumeMonitorSignals[i]);
|
||||||
|
|
||||||
|
if (this._monitor)
|
||||||
|
this._monitor.cancel();
|
||||||
|
if (this._bookmarkTimeoutId)
|
||||||
|
Mainloop.source_remove(this._bookmarkTimeoutId);
|
||||||
|
},
|
||||||
|
|
||||||
|
_updateMounts: function() {
|
||||||
|
let networkMounts = [];
|
||||||
|
let networkVolumes = [];
|
||||||
|
|
||||||
|
this._places.devices.forEach(function (p) { p.destroy(); });
|
||||||
|
this._places.devices = [];
|
||||||
|
this._places.network.forEach(function (p) { p.destroy(); });
|
||||||
|
this._places.network = [];
|
||||||
|
|
||||||
|
/* Add standard places */
|
||||||
|
this._places.devices.push(new RootInfo());
|
||||||
|
this._places.network.push(new PlaceInfo('network',
|
||||||
|
Gio.File.new_for_uri('network:///'),
|
||||||
|
_("Browse Network"),
|
||||||
|
'network-workgroup-symbolic'));
|
||||||
|
|
||||||
|
/* first go through all connected drives */
|
||||||
|
let drives = this._volumeMonitor.get_connected_drives();
|
||||||
|
for (let i = 0; i < drives.length; i++) {
|
||||||
|
let volumes = drives[i].get_volumes();
|
||||||
|
|
||||||
|
for(let j = 0; j < volumes.length; j++) {
|
||||||
|
if (volumes[j].get_identifier('class').indexOf('network') >= 0) {
|
||||||
|
networkVolumes.push(volumes[i]);
|
||||||
|
} else {
|
||||||
|
let mount = volumes[j].get_mount();
|
||||||
|
if(mount != null)
|
||||||
|
this._addMount('devices', mount);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* add all volumes that is not associated with a drive */
|
||||||
|
let volumes = this._volumeMonitor.get_volumes();
|
||||||
|
for(let i = 0; i < volumes.length; i++) {
|
||||||
|
if(volumes[i].get_drive() != null)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if (volumes[i].get_identifier('class').indexOf('network') >= 0) {
|
||||||
|
networkVolumes.push(volumes[i]);
|
||||||
|
} else {
|
||||||
|
let mount = volumes[i].get_mount();
|
||||||
|
if(mount != null)
|
||||||
|
this._addMount('devices', mount);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* add mounts that have no volume (/etc/mtab mounts, ftp, sftp,...) */
|
||||||
|
let mounts = this._volumeMonitor.get_mounts();
|
||||||
|
for(let i = 0; i < mounts.length; i++) {
|
||||||
|
if(mounts[i].is_shadowed())
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if(mounts[i].get_volume())
|
||||||
|
continue;
|
||||||
|
|
||||||
|
let root = mounts[i].get_default_location();
|
||||||
|
if (!root.is_native()) {
|
||||||
|
networkMounts.push(mounts[i]);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
this._addMount('devices', mounts[i]);
|
||||||
|
}
|
||||||
|
|
||||||
|
for (let i = 0; i < networkVolumes.length; i++) {
|
||||||
|
let mount = networkVolumes[i].get_mount();
|
||||||
|
if (mount) {
|
||||||
|
networkMounts.push(mount);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
this._addVolume('network', networkVolumes[i]);
|
||||||
|
}
|
||||||
|
|
||||||
|
for (let i = 0; i < networkMounts.length; i++) {
|
||||||
|
this._addMount('network', networkMounts[i]);
|
||||||
|
}
|
||||||
|
|
||||||
|
this.emit('devices-updated');
|
||||||
|
this.emit('network-updated');
|
||||||
|
},
|
||||||
|
|
||||||
|
_findBookmarksFile: function() {
|
||||||
|
let paths = [
|
||||||
|
GLib.build_filenamev([GLib.get_user_config_dir(), 'gtk-3.0', 'bookmarks']),
|
||||||
|
GLib.build_filenamev([GLib.get_home_dir(), '.gtk-bookmarks']),
|
||||||
|
];
|
||||||
|
|
||||||
|
for (let i = 0; i < paths.length; i++) {
|
||||||
|
if (GLib.file_test(paths[i], GLib.FileTest.EXISTS))
|
||||||
|
return Gio.File.new_for_path(paths[i]);
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
},
|
||||||
|
|
||||||
|
_reloadBookmarks: function() {
|
||||||
|
|
||||||
|
this._bookmarks = [];
|
||||||
|
|
||||||
|
let content = Shell.get_file_contents_utf8_sync(this._bookmarksFile.get_path());
|
||||||
|
let lines = content.split('\n');
|
||||||
|
|
||||||
|
let bookmarks = [];
|
||||||
|
for (let i = 0; i < lines.length; i++) {
|
||||||
|
let line = lines[i];
|
||||||
|
let components = line.split(' ');
|
||||||
|
let bookmark = components[0];
|
||||||
|
|
||||||
|
if (!bookmark)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
let file = Gio.File.new_for_uri(bookmark);
|
||||||
|
if (file.is_native() && !file.query_exists(null))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
let duplicate = false;
|
||||||
|
for (let i = 0; i < this._places.special.length; i++) {
|
||||||
|
if (file.equal(this._places.special[i].file)) {
|
||||||
|
duplicate = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (duplicate)
|
||||||
|
continue;
|
||||||
|
for (let i = 0; i < bookmarks.length; i++) {
|
||||||
|
if (file.equal(bookmarks[i].file)) {
|
||||||
|
duplicate = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (duplicate)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
let label = null;
|
||||||
|
if (components.length > 1)
|
||||||
|
label = components.slice(1).join(' ');
|
||||||
|
|
||||||
|
bookmarks.push(new PlaceInfo('bookmarks', file, label));
|
||||||
|
}
|
||||||
|
|
||||||
|
this._places.bookmarks = bookmarks;
|
||||||
|
|
||||||
|
this.emit('bookmarks-updated');
|
||||||
|
},
|
||||||
|
|
||||||
|
_addMount: function(kind, mount) {
|
||||||
|
let devItem;
|
||||||
|
|
||||||
|
try {
|
||||||
|
devItem = new PlaceDeviceInfo(kind, mount);
|
||||||
|
} catch(e if e.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.NOT_FOUND)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
this._places[kind].push(devItem);
|
||||||
|
},
|
||||||
|
|
||||||
|
_addVolume: function(kind, volume) {
|
||||||
|
let volItem;
|
||||||
|
|
||||||
|
try {
|
||||||
|
volItem = new PlaceVolumeInfo(kind, volume);
|
||||||
|
} catch(e if e.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.NOT_FOUND)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
this._places[kind].push(volItem);
|
||||||
|
},
|
||||||
|
|
||||||
|
get: function (kind) {
|
||||||
|
return this._places[kind];
|
||||||
|
}
|
||||||
|
});
|
||||||
|
Signals.addSignalMethods(PlacesManager.prototype);
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
EXTENSION_ID = static-workspaces
|
||||||
|
|
||||||
|
include ../../extension.mk
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
// -*- mode: js2; indent-tabs-mode: nil; js2-basic-offset: 4 -*-
|
||||||
|
|
||||||
|
const Meta = imports.gi.Meta;
|
||||||
|
|
||||||
|
function init(metadata) {
|
||||||
|
}
|
||||||
|
|
||||||
|
function enable() {
|
||||||
|
// Override gnome-shell's overrides
|
||||||
|
Meta.prefs_override_preference_schema('dynamic-workspaces',
|
||||||
|
'org.gnome.mutter');
|
||||||
|
}
|
||||||
|
|
||||||
|
function disable() {
|
||||||
|
// Restore gnome-shell's overrides
|
||||||
|
Meta.prefs_override_preference_schema('dynamic-workspaces',
|
||||||
|
'org.gnome.shell.overrides');
|
||||||
|
}
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
{
|
||||||
|
"extension-id": "@extension_id@",
|
||||||
|
"uuid": "@uuid@",
|
||||||
|
"settings-schema": "@gschemaname@",
|
||||||
|
"gettext-domain": "@gettext_domain@",
|
||||||
|
"name": "Static workspaces",
|
||||||
|
"description": "Disable dynamic workspace management.\nThis extension is part of Classic Mode and is officially supported by GNOME. Please do not report bugs using the form below, use GNOME Bugzilla instead.",
|
||||||
|
"original-authors": [ "fmuellner@gnome.org" ],
|
||||||
|
"shell-version": [ "@shell_current@" ],
|
||||||
|
"url": "@url@"
|
||||||
|
}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
/* This extensions requires no special styling */
|
||||||
@@ -8,13 +8,21 @@ const St = imports.gi.St;
|
|||||||
const Shell = imports.gi.Shell;
|
const Shell = imports.gi.Shell;
|
||||||
|
|
||||||
const Main = imports.ui.main;
|
const Main = imports.ui.main;
|
||||||
|
const Tweener = imports.ui.tweener;
|
||||||
|
|
||||||
|
const Gettext = imports.gettext.domain('gnome-shell-extensions');
|
||||||
|
const _ = Gettext.gettext;
|
||||||
|
|
||||||
|
const ExtensionUtils = imports.misc.extensionUtils;
|
||||||
|
const Me = ExtensionUtils.getCurrentExtension();
|
||||||
|
const Convenience = Me.imports.convenience;
|
||||||
|
|
||||||
const INDICATOR_UPDATE_INTERVAL = 500;
|
const INDICATOR_UPDATE_INTERVAL = 500;
|
||||||
const INDICATOR_NUM_GRID_LINES = 3;
|
const INDICATOR_NUM_GRID_LINES = 3;
|
||||||
|
|
||||||
let _cpuIndicator;
|
const ITEM_LABEL_SHOW_TIME = 0.15;
|
||||||
let _memIndicator;
|
const ITEM_LABEL_HIDE_TIME = 0.1;
|
||||||
let _box;
|
const ITEM_HOVER_TIMEOUT = 300;
|
||||||
|
|
||||||
const Indicator = new Lang.Class({
|
const Indicator = new Lang.Class({
|
||||||
Name: 'SystemMonitor.Indicator',
|
Name: 'SystemMonitor.Indicator',
|
||||||
@@ -22,7 +30,6 @@ const Indicator = new Lang.Class({
|
|||||||
_init: function() {
|
_init: function() {
|
||||||
this._initValues();
|
this._initValues();
|
||||||
this.drawing_area = new St.DrawingArea({ reactive: true });
|
this.drawing_area = new St.DrawingArea({ reactive: true });
|
||||||
this.drawing_area.width = 100; this.drawing_area.height = 100;
|
|
||||||
this.drawing_area.connect('repaint', Lang.bind(this, this._draw));
|
this.drawing_area.connect('repaint', Lang.bind(this, this._draw));
|
||||||
this.drawing_area.connect('button-press-event', function() {
|
this.drawing_area.connect('button-press-event', function() {
|
||||||
let app = Shell.AppSystem.get_default().lookup_app('gnome-system-monitor.desktop');
|
let app = Shell.AppSystem.get_default().lookup_app('gnome-system-monitor.desktop');
|
||||||
@@ -30,7 +37,8 @@ const Indicator = new Lang.Class({
|
|||||||
});
|
});
|
||||||
|
|
||||||
this.actor = new St.Bin({ style_class: "extension-systemMonitor-indicator-area",
|
this.actor = new St.Bin({ style_class: "extension-systemMonitor-indicator-area",
|
||||||
reactive: true});
|
reactive: true, track_hover: true,
|
||||||
|
x_fill: true, y_fill: true });
|
||||||
this.actor.add_actor(this.drawing_area);
|
this.actor.add_actor(this.drawing_area);
|
||||||
|
|
||||||
this._timeout = Mainloop.timeout_add(INDICATOR_UPDATE_INTERVAL, Lang.bind(this, function () {
|
this._timeout = Mainloop.timeout_add(INDICATOR_UPDATE_INTERVAL, Lang.bind(this, function () {
|
||||||
@@ -40,10 +48,63 @@ const Indicator = new Lang.Class({
|
|||||||
}));
|
}));
|
||||||
},
|
},
|
||||||
|
|
||||||
|
showLabel: function() {
|
||||||
|
if (this.label == null)
|
||||||
|
return;
|
||||||
|
|
||||||
|
this.label.opacity = 0;
|
||||||
|
this.label.show();
|
||||||
|
|
||||||
|
let [stageX, stageY] = this.actor.get_transformed_position();
|
||||||
|
|
||||||
|
let itemWidth = this.actor.allocation.x2 - this.actor.allocation.x1;
|
||||||
|
let itemHeight = this.actor.allocation.y2 - this.actor.allocation.y1;
|
||||||
|
|
||||||
|
let labelWidth = this.label.width;
|
||||||
|
let labelHeight = this.label.height;
|
||||||
|
let xOffset = Math.floor((itemWidth - labelWidth) / 2)
|
||||||
|
|
||||||
|
let x = stageX + xOffset;
|
||||||
|
|
||||||
|
let node = this.label.get_theme_node();
|
||||||
|
let yOffset = node.get_length('-y-offset');
|
||||||
|
|
||||||
|
let y = stageY - this.label.get_height() - yOffset;
|
||||||
|
|
||||||
|
this.label.set_position(x, y);
|
||||||
|
Tweener.addTween(this.label,
|
||||||
|
{ opacity: 255,
|
||||||
|
time: ITEM_LABEL_SHOW_TIME,
|
||||||
|
transition: 'easeOutQuad',
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
setLabelText: function(text) {
|
||||||
|
if (this.label == null)
|
||||||
|
this.label = new St.Label({ style_class: 'extension-systemMonitor-indicator-label'});
|
||||||
|
|
||||||
|
this.label.set_text(text);
|
||||||
|
Main.layoutManager.addChrome(this.label);
|
||||||
|
this.label.hide();
|
||||||
|
},
|
||||||
|
|
||||||
|
hideLabel: function () {
|
||||||
|
Tweener.addTween(this.label,
|
||||||
|
{ opacity: 0,
|
||||||
|
time: ITEM_LABEL_HIDE_TIME,
|
||||||
|
transition: 'easeOutQuad',
|
||||||
|
onComplete: Lang.bind(this, function() {
|
||||||
|
this.label.hide();
|
||||||
|
})
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
destroy: function() {
|
destroy: function() {
|
||||||
Mainloop.source_remove(this._timeout);
|
Mainloop.source_remove(this._timeout);
|
||||||
|
|
||||||
this.actor.destroy();
|
this.actor.destroy();
|
||||||
|
if (this.label)
|
||||||
|
this.label.destroy();
|
||||||
},
|
},
|
||||||
|
|
||||||
_initValues: function() {
|
_initValues: function() {
|
||||||
@@ -148,6 +209,8 @@ const CpuIndicator = new Lang.Class({
|
|||||||
this.renderStats = this.renderStats.sort(function(a,b) {
|
this.renderStats = this.renderStats.sort(function(a,b) {
|
||||||
return renderStatOrder[a] - renderStatOrder[b];
|
return renderStatOrder[a] - renderStatOrder[b];
|
||||||
});
|
});
|
||||||
|
|
||||||
|
this.setLabelText(_("CPU"));
|
||||||
},
|
},
|
||||||
|
|
||||||
_initValues: function() {
|
_initValues: function() {
|
||||||
@@ -199,6 +262,8 @@ const MemoryIndicator = new Lang.Class({
|
|||||||
this.renderStats = this.renderStats.sort(function(a,b) {
|
this.renderStats = this.renderStats.sort(function(a,b) {
|
||||||
return renderStatOrder[a] - renderStatOrder[b];
|
return renderStatOrder[a] - renderStatOrder[b];
|
||||||
});
|
});
|
||||||
|
|
||||||
|
this.setLabelText(_("Memory"));
|
||||||
},
|
},
|
||||||
|
|
||||||
_initValues: function() {
|
_initValues: function() {
|
||||||
@@ -222,23 +287,74 @@ const MemoryIndicator = new Lang.Class({
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
const INDICATORS = [CpuIndicator, MemoryIndicator];
|
||||||
|
|
||||||
|
const Extension = new Lang.Class({
|
||||||
|
Name: 'SystemMonitor.Extension',
|
||||||
|
|
||||||
|
_init: function() {
|
||||||
|
Convenience.initTranslations();
|
||||||
|
|
||||||
|
this._showLabelTimeoutId = 0;
|
||||||
|
this._resetHoverTimeoutId = 0;
|
||||||
|
this._labelShowing = false;
|
||||||
|
},
|
||||||
|
|
||||||
|
enable: function() {
|
||||||
|
this._box = new St.BoxLayout({ style_class: 'extension-systemMonitor-container',
|
||||||
|
x_align: Clutter.ActorAlign.START,
|
||||||
|
x_expand: true });
|
||||||
|
this._indicators = [ ];
|
||||||
|
|
||||||
|
for (let i = 0; i < INDICATORS.length; i++) {
|
||||||
|
let indicator = new (INDICATORS[i])();
|
||||||
|
|
||||||
|
indicator.actor.connect('notify::hover', Lang.bind(this, function() {
|
||||||
|
this._onHover(indicator);
|
||||||
|
}));
|
||||||
|
this._box.add_actor(indicator.actor);
|
||||||
|
this._indicators.push(indicator);
|
||||||
|
}
|
||||||
|
|
||||||
|
Main.messageTray.actor.add_actor(this._box);
|
||||||
|
},
|
||||||
|
|
||||||
|
disable: function() {
|
||||||
|
this._indicators.forEach(function(i) { i.destroy(); });
|
||||||
|
this._box.destroy();
|
||||||
|
},
|
||||||
|
|
||||||
|
_onHover: function (item) {
|
||||||
|
if (item.actor.get_hover()) {
|
||||||
|
if (this._showLabelTimeoutId == 0) {
|
||||||
|
let timeout = this._labelShowing ? 0 : ITEM_HOVER_TIMEOUT;
|
||||||
|
this._showLabelTimeoutId = Mainloop.timeout_add(timeout,
|
||||||
|
Lang.bind(this, function() {
|
||||||
|
this._labelShowing = true;
|
||||||
|
item.showLabel();
|
||||||
|
return false;
|
||||||
|
}));
|
||||||
|
if (this._resetHoverTimeoutId > 0) {
|
||||||
|
Mainloop.source_remove(this._resetHoverTimeoutId);
|
||||||
|
this._resetHoverTimeoutId = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (this._showLabelTimeoutId > 0)
|
||||||
|
Mainloop.source_remove(this._showLabelTimeoutId);
|
||||||
|
this._showLabelTimeoutId = 0;
|
||||||
|
item.hideLabel();
|
||||||
|
if (this._labelShowing) {
|
||||||
|
this._resetHoverTimeoutId = Mainloop.timeout_add(ITEM_HOVER_TIMEOUT,
|
||||||
|
Lang.bind(this, function() {
|
||||||
|
this._labelShowing = false;
|
||||||
|
return false;
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
function init() {
|
function init() {
|
||||||
// nothing to do here
|
return new Extension();
|
||||||
}
|
|
||||||
|
|
||||||
function enable() {
|
|
||||||
_cpuIndicator = new CpuIndicator();
|
|
||||||
_memIndicator = new MemoryIndicator();
|
|
||||||
_box = new St.BoxLayout({ style_class: 'extension-systemMonitor-container' });
|
|
||||||
_box.add(_cpuIndicator.actor);
|
|
||||||
_box.add(_memIndicator.actor);
|
|
||||||
Main.messageTray.actor.add_actor(_box);
|
|
||||||
}
|
|
||||||
|
|
||||||
function disable() {
|
|
||||||
_cpuIndicator.destroy();
|
|
||||||
_cpuIndicator = null;
|
|
||||||
_memIndicator.destroy();
|
|
||||||
_memIndicator = null;
|
|
||||||
_box.destroy();
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,6 +6,6 @@
|
|||||||
"gettext-domain": "@gettext_domain@",
|
"gettext-domain": "@gettext_domain@",
|
||||||
"original-author": "zaspire@rambler.ru",
|
"original-author": "zaspire@rambler.ru",
|
||||||
"name": "SystemMonitor",
|
"name": "SystemMonitor",
|
||||||
"description": "System Monitor",
|
"description": "System monitor showing CPU and memory usage in the message tray.",
|
||||||
"url": "@url@"
|
"url": "@url@"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,15 +2,17 @@
|
|||||||
spacing: 5px;
|
spacing: 5px;
|
||||||
padding-left: 5px;
|
padding-left: 5px;
|
||||||
padding-right: 5px;
|
padding-right: 5px;
|
||||||
padding-bottom: 1px;
|
padding-bottom: 10px;
|
||||||
padding-top: 0px;
|
padding-top: 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.extension-systemMonitor-indicator-area {
|
.extension-systemMonitor-indicator-area {
|
||||||
border: 1px solid #8d8d8d;
|
border: 1px solid #8d8d8d;
|
||||||
border-radius: 3px;
|
border-radius: 3px;
|
||||||
width: 100px;
|
width: 100px;
|
||||||
height: 30px;
|
/* message tray is 72px, so 20px padding of the container,
|
||||||
|
2px of border, makes it 50px */
|
||||||
|
height: 50px;
|
||||||
-grid-color: #575757;
|
-grid-color: #575757;
|
||||||
-cpu-total-color: rgb(0,154,62);
|
-cpu-total-color: rgb(0,154,62);
|
||||||
-cpu-user-color: rgb(69,154,0);
|
-cpu-user-color: rgb(69,154,0);
|
||||||
@@ -21,3 +23,13 @@
|
|||||||
-mem-other-color: rgb(205,203,41);
|
-mem-other-color: rgb(205,203,41);
|
||||||
background-color: #1e1e1e;
|
background-color: #1e1e1e;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.extension-systemMonitor-indicator-label {
|
||||||
|
border-radius: 7px;
|
||||||
|
padding: 4px 12px;
|
||||||
|
background-color: rgba(0,0,0,0.9);
|
||||||
|
text-align: center;
|
||||||
|
-y-offset: 8px;
|
||||||
|
font-size: 9pt;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
"settings-schema": "@gschemaname@",
|
"settings-schema": "@gschemaname@",
|
||||||
"gettext-domain": "@gettext_domain@",
|
"gettext-domain": "@gettext_domain@",
|
||||||
"name": "User Themes",
|
"name": "User Themes",
|
||||||
"description": "Load shell themes from user directory",
|
"description": "Load shell themes from user directory.",
|
||||||
"shell-version": [ "@shell_current@" ],
|
"shell-version": [ "@shell_current@" ],
|
||||||
"original-authors": [ "john.stowers@gmail.com" ],
|
"original-authors": [ "john.stowers@gmail.com" ],
|
||||||
"url": "@url@"
|
"url": "@url@"
|
||||||
|
|||||||
@@ -0,0 +1,10 @@
|
|||||||
|
EXTENSION_ID = window-list
|
||||||
|
|
||||||
|
EXTRA_MODULES = prefs.js
|
||||||
|
|
||||||
|
if CLASSIC_MODE
|
||||||
|
EXTRA_MODULES += classic.css
|
||||||
|
endif
|
||||||
|
|
||||||
|
include ../../extension.mk
|
||||||
|
include ../../settings.mk
|
||||||
@@ -0,0 +1,44 @@
|
|||||||
|
@import url("stylesheet.css");
|
||||||
|
|
||||||
|
#panel.bottom-panel {
|
||||||
|
border-top-width: 1px;
|
||||||
|
border-bottom-width: 0px;
|
||||||
|
height: 32px !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.bottom-panel .window-button > StWidget {
|
||||||
|
background-color: #e9e9e9 !important;
|
||||||
|
background-gradient-direction: vertical;
|
||||||
|
background-gradient-end: #d0d0d0;
|
||||||
|
color: #555 !important;
|
||||||
|
border-radius: 2px !important;
|
||||||
|
padding: 4px 6px 2px !important;
|
||||||
|
text-shadow: 0 0 transparent;
|
||||||
|
box-shadow: inset -1px -1px 1px rgba(0,0,0,0.5) !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.bottom-panel .window-button:hover > StWidget {
|
||||||
|
background-color: #f9f9f9 !important;
|
||||||
|
background-gradient-end: #e0e0e0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.bottom-panel .window-button:active > StWidget {
|
||||||
|
box-shadow: inset 1px 1px 2px rgba(0,0,0,0.5) !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.bottom-panel .window-button.focused > StWidget {
|
||||||
|
background-color: #a9a9a9 !important;
|
||||||
|
background-gradient-end: #b0b0b0;
|
||||||
|
box-shadow: inset 1px 1px 2px rgba(0,0,0,0.5) !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.bottom-panel .window-button.focused:hover > StWidget {
|
||||||
|
background-color: #b9b9b9 !important;
|
||||||
|
background-gradient-end: #c0c0c0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.bottom-panel .window-button.minimized > StWidget {
|
||||||
|
color: #888 !important;
|
||||||
|
box-shadow: inset -1px -1px 1px rgba(0,0,0,0.4) !important;
|
||||||
|
}
|
||||||
|
|
||||||
@@ -0,0 +1,860 @@
|
|||||||
|
const Clutter = imports.gi.Clutter;
|
||||||
|
const GLib = imports.gi.GLib;
|
||||||
|
const Gio = imports.gi.Gio;
|
||||||
|
const Gtk = imports.gi.Gtk;
|
||||||
|
const Meta = imports.gi.Meta;
|
||||||
|
const Shell = imports.gi.Shell;
|
||||||
|
const St = imports.gi.St;
|
||||||
|
|
||||||
|
const DND = imports.ui.dnd;
|
||||||
|
const Hash = imports.misc.hash;
|
||||||
|
const Lang = imports.lang;
|
||||||
|
const Main = imports.ui.main;
|
||||||
|
const MessageTray = imports.ui.messageTray;
|
||||||
|
const PanelMenu = imports.ui.panelMenu;
|
||||||
|
const PopupMenu = imports.ui.popupMenu;
|
||||||
|
|
||||||
|
const ExtensionUtils = imports.misc.extensionUtils;
|
||||||
|
const Me = ExtensionUtils.getCurrentExtension();
|
||||||
|
const Convenience = Me.imports.convenience;
|
||||||
|
|
||||||
|
const ICON_TEXTURE_SIZE = 24;
|
||||||
|
const DND_ACTIVATE_TIMEOUT = 500;
|
||||||
|
|
||||||
|
const GroupingMode = {
|
||||||
|
NEVER: 0,
|
||||||
|
AUTO: 1,
|
||||||
|
ALWAYS: 2
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
function _minimizeOrActivateWindow(window) {
|
||||||
|
let focusWindow = global.display.focus_window;
|
||||||
|
if (focusWindow == window ||
|
||||||
|
focusWindow && focusWindow.get_transient_for() == window)
|
||||||
|
window.minimize();
|
||||||
|
else
|
||||||
|
window.activate(global.get_current_time());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
const WindowTitle = new Lang.Class({
|
||||||
|
Name: 'WindowTitle',
|
||||||
|
|
||||||
|
_init: function(metaWindow) {
|
||||||
|
this._metaWindow = metaWindow;
|
||||||
|
this.actor = new St.BoxLayout();
|
||||||
|
|
||||||
|
let app = Shell.WindowTracker.get_default().get_window_app(metaWindow);
|
||||||
|
this._icon = new St.Bin({ style_class: 'window-button-icon',
|
||||||
|
child: app.create_icon_texture(ICON_TEXTURE_SIZE) });
|
||||||
|
this.actor.add(this._icon);
|
||||||
|
this._label = new St.Label();
|
||||||
|
this.actor.add(this._label);
|
||||||
|
|
||||||
|
this._textureCache = St.TextureCache.get_default();
|
||||||
|
this._iconThemeChangedId =
|
||||||
|
this._textureCache.connect('icon-theme-changed', Lang.bind(this,
|
||||||
|
function() {
|
||||||
|
this._icon.child = app.create_icon_texture(ICON_TEXTURE_SIZE);
|
||||||
|
}));
|
||||||
|
this.actor.connect('destroy', Lang.bind(this, this._onDestroy));
|
||||||
|
|
||||||
|
this._notifyTitleId =
|
||||||
|
this._metaWindow.connect('notify::title',
|
||||||
|
Lang.bind(this, this._updateTitle));
|
||||||
|
this._notifyMinimizedId =
|
||||||
|
this._metaWindow.connect('notify::minimized',
|
||||||
|
Lang.bind(this, this._minimizedChanged));
|
||||||
|
this._minimizedChanged();
|
||||||
|
},
|
||||||
|
|
||||||
|
_minimizedChanged: function() {
|
||||||
|
this._icon.opacity = this._metaWindow.minimized ? 128 : 255;
|
||||||
|
this._updateTitle();
|
||||||
|
},
|
||||||
|
|
||||||
|
_updateTitle: function() {
|
||||||
|
if (this._metaWindow.minimized)
|
||||||
|
this._label.text = '[%s]'.format(this._metaWindow.title);
|
||||||
|
else
|
||||||
|
this._label.text = this._metaWindow.title;
|
||||||
|
},
|
||||||
|
|
||||||
|
_onDestroy: function() {
|
||||||
|
this._textureCache.disconnect(this._iconThemeChangedId);
|
||||||
|
this._metaWindow.disconnect(this._notifyTitleId);
|
||||||
|
this._metaWindow.disconnect(this._notifyMinimizedId);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
const WindowButton = new Lang.Class({
|
||||||
|
Name: 'WindowButton',
|
||||||
|
|
||||||
|
_init: function(metaWindow) {
|
||||||
|
this.metaWindow = metaWindow;
|
||||||
|
|
||||||
|
this._windowTitle = new WindowTitle(this.metaWindow);
|
||||||
|
this.actor = new St.Button({ style_class: 'window-button',
|
||||||
|
x_fill: true,
|
||||||
|
can_focus: true,
|
||||||
|
child: this._windowTitle.actor });
|
||||||
|
this.actor._delegate = this;
|
||||||
|
|
||||||
|
this.actor.connect('allocation-changed',
|
||||||
|
Lang.bind(this, this._updateIconGeometry));
|
||||||
|
this.actor.connect('clicked', Lang.bind(this, this._onClicked));
|
||||||
|
this.actor.connect('destroy', Lang.bind(this, this._onDestroy));
|
||||||
|
|
||||||
|
this._switchWorkspaceId =
|
||||||
|
global.window_manager.connect('switch-workspace',
|
||||||
|
Lang.bind(this, this._updateVisibility));
|
||||||
|
this._updateVisibility();
|
||||||
|
|
||||||
|
this._notifyFocusId =
|
||||||
|
global.display.connect('notify::focus-window',
|
||||||
|
Lang.bind(this, this._updateStyle));
|
||||||
|
this._updateStyle();
|
||||||
|
},
|
||||||
|
|
||||||
|
_onClicked: function() {
|
||||||
|
_minimizeOrActivateWindow(this.metaWindow);
|
||||||
|
},
|
||||||
|
|
||||||
|
_updateStyle: function() {
|
||||||
|
if (this.metaWindow.minimized)
|
||||||
|
this.actor.add_style_class_name('minimized');
|
||||||
|
else
|
||||||
|
this.actor.remove_style_class_name('minimized');
|
||||||
|
|
||||||
|
if (global.display.focus_window == this.metaWindow)
|
||||||
|
this.actor.add_style_class_name('focused');
|
||||||
|
else
|
||||||
|
this.actor.remove_style_class_name('focused');
|
||||||
|
},
|
||||||
|
|
||||||
|
_updateVisibility: function() {
|
||||||
|
let workspace = global.screen.get_active_workspace();
|
||||||
|
this.actor.visible = this.metaWindow.located_on_workspace(workspace);
|
||||||
|
},
|
||||||
|
|
||||||
|
_updateIconGeometry: function() {
|
||||||
|
let rect = new Meta.Rectangle();
|
||||||
|
|
||||||
|
[rect.x, rect.y] = this.actor.get_transformed_position();
|
||||||
|
[rect.width, rect.height] = this.actor.get_transformed_size();
|
||||||
|
|
||||||
|
this.metaWindow.set_icon_geometry(rect);
|
||||||
|
},
|
||||||
|
|
||||||
|
_onDestroy: function() {
|
||||||
|
global.window_manager.disconnect(this._switchWorkspaceId);
|
||||||
|
global.display.disconnect(this._notifyFocusId);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
const AppButton = new Lang.Class({
|
||||||
|
Name: 'AppButton',
|
||||||
|
|
||||||
|
_init: function(app) {
|
||||||
|
this.app = app;
|
||||||
|
|
||||||
|
let stack = new St.Widget({ layout_manager: new Clutter.BinLayout() });
|
||||||
|
this.actor = new St.Button({ style_class: 'window-button',
|
||||||
|
x_fill: true,
|
||||||
|
can_focus: true,
|
||||||
|
child: stack });
|
||||||
|
this.actor._delegate = this;
|
||||||
|
|
||||||
|
this.actor.connect('allocation-changed',
|
||||||
|
Lang.bind(this, this._updateIconGeometry));
|
||||||
|
|
||||||
|
this._singleWindowTitle = new St.Bin({ x_expand: true,
|
||||||
|
x_align: St.Align.START });
|
||||||
|
stack.add_actor(this._singleWindowTitle);
|
||||||
|
|
||||||
|
this._multiWindowTitle = new St.BoxLayout({ x_expand: true });
|
||||||
|
stack.add_actor(this._multiWindowTitle);
|
||||||
|
|
||||||
|
this._icon = new St.Bin({ style_class: 'window-button-icon',
|
||||||
|
child: app.create_icon_texture(ICON_TEXTURE_SIZE) });
|
||||||
|
this._multiWindowTitle.add(this._icon);
|
||||||
|
this._multiWindowTitle.add(new St.Label({ text: app.get_name() }));
|
||||||
|
|
||||||
|
this._menuManager = new PopupMenu.PopupMenuManager(this);
|
||||||
|
this._menu = new PopupMenu.PopupMenu(this.actor, 0.5, St.Side.BOTTOM);
|
||||||
|
this._menu.actor.hide();
|
||||||
|
this._menu.connect('activate', Lang.bind(this, this._onMenuActivate));
|
||||||
|
this._menuManager.addMenu(this._menu);
|
||||||
|
Main.uiGroup.add_actor(this._menu.actor);
|
||||||
|
|
||||||
|
this._textureCache = St.TextureCache.get_default();
|
||||||
|
this._iconThemeChangedId =
|
||||||
|
this._textureCache.connect('icon-theme-changed', Lang.bind(this,
|
||||||
|
function() {
|
||||||
|
this._icon.child = app.create_icon_texture(ICON_TEXTURE_SIZE);
|
||||||
|
}));
|
||||||
|
this.actor.connect('clicked', Lang.bind(this, this._onClicked));
|
||||||
|
this.actor.connect('destroy', Lang.bind(this, this._onDestroy));
|
||||||
|
|
||||||
|
this._switchWorkspaceId =
|
||||||
|
global.window_manager.connect('switch-workspace',
|
||||||
|
Lang.bind(this, this._updateVisibility));
|
||||||
|
this._updateVisibility();
|
||||||
|
|
||||||
|
this._windowsChangedId =
|
||||||
|
this.app.connect('windows-changed',
|
||||||
|
Lang.bind(this, this._windowsChanged));
|
||||||
|
this._windowsChanged();
|
||||||
|
|
||||||
|
this._windowTracker = Shell.WindowTracker.get_default();
|
||||||
|
this._notifyFocusId =
|
||||||
|
this._windowTracker.connect('notify::focus-app',
|
||||||
|
Lang.bind(this, this._updateStyle));
|
||||||
|
this._updateStyle();
|
||||||
|
},
|
||||||
|
|
||||||
|
_updateVisibility: function() {
|
||||||
|
let workspace = global.screen.get_active_workspace();
|
||||||
|
this.actor.visible = this.app.is_on_workspace(workspace);
|
||||||
|
},
|
||||||
|
|
||||||
|
_updateStyle: function() {
|
||||||
|
if (this._windowTracker.focus_app == this.app)
|
||||||
|
this.actor.add_style_class_name('focused');
|
||||||
|
else
|
||||||
|
this.actor.remove_style_class_name('focused');
|
||||||
|
},
|
||||||
|
|
||||||
|
_updateIconGeometry: function() {
|
||||||
|
let rect = new Meta.Rectangle();
|
||||||
|
|
||||||
|
[rect.x, rect.y] = this.actor.get_transformed_position();
|
||||||
|
[rect.width, rect.height] = this.actor.get_transformed_size();
|
||||||
|
|
||||||
|
let windows = this.app.get_windows();
|
||||||
|
windows.forEach(function(w) {
|
||||||
|
w.set_icon_geometry(rect);
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
|
||||||
|
_getWindowList: function() {
|
||||||
|
let workspace = global.screen.get_active_workspace();
|
||||||
|
return this.app.get_windows().filter(function(win) {
|
||||||
|
return win.located_on_workspace(workspace);
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
_windowsChanged: function() {
|
||||||
|
let windows = this._getWindowList();
|
||||||
|
this._singleWindowTitle.visible = windows.length == 1;
|
||||||
|
this._multiWindowTitle.visible = !this._singleWindowTitle.visible;
|
||||||
|
|
||||||
|
if (this._singleWindowTitle.visible) {
|
||||||
|
if (!this._windowTitle) {
|
||||||
|
this.metaWindow = windows[0];
|
||||||
|
this._windowTitle = new WindowTitle(this.metaWindow);
|
||||||
|
this._singleWindowTitle.child = this._windowTitle.actor;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (this._windowTitle) {
|
||||||
|
this.metaWindow = null;
|
||||||
|
this._singleWindowTitle.child = null;
|
||||||
|
this._windowTitle = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
_onClicked: function() {
|
||||||
|
if (this._menu.isOpen) {
|
||||||
|
this._menu.close();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
let windows = this._getWindowList();
|
||||||
|
if (windows.length == 1) {
|
||||||
|
_minimizeOrActivateWindow(windows[0]);
|
||||||
|
} else {
|
||||||
|
this._menu.removeAll();
|
||||||
|
|
||||||
|
for (let i = 0; i < windows.length; i++) {
|
||||||
|
let windowTitle = new WindowTitle(windows[i]);
|
||||||
|
let item = new PopupMenu.PopupBaseMenuItem();
|
||||||
|
item.addActor(windowTitle.actor);
|
||||||
|
item._window = windows[i];
|
||||||
|
this._menu.addMenuItem(item);
|
||||||
|
}
|
||||||
|
this._menu.open();
|
||||||
|
|
||||||
|
let event = Clutter.get_current_event();
|
||||||
|
if (event && event.type() == Clutter.EventType.KEY_RELEASE)
|
||||||
|
this._menu.actor.navigate_focus(null, Gtk.DirectionType.TAB_FORWARD, false);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
_onMenuActivate: function(menu, child) {
|
||||||
|
child._window.activate(global.get_current_time());
|
||||||
|
},
|
||||||
|
|
||||||
|
_onDestroy: function() {
|
||||||
|
this._textureCache.disconnect(this._iconThemeChangedId);
|
||||||
|
global.window_manager.disconnect(this._switchWorkspaceId);
|
||||||
|
this._windowTracker.disconnect(this._notifyFocusId);
|
||||||
|
this.app.disconnect(this._windowsChangedId);
|
||||||
|
this._menu.actor.destroy();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
const TrayButton = new Lang.Class({
|
||||||
|
Name: 'TrayButton',
|
||||||
|
|
||||||
|
_init: function() {
|
||||||
|
this._counterLabel = new St.Label({ x_align: Clutter.ActorAlign.CENTER,
|
||||||
|
x_expand: true,
|
||||||
|
y_align: Clutter.ActorAlign.CENTER,
|
||||||
|
y_expand: true });
|
||||||
|
this.actor = new St.Button({ style_class: 'summary-source-counter',
|
||||||
|
child: this._counterLabel,
|
||||||
|
layoutManager: new Clutter.BinLayout() });
|
||||||
|
this.actor.set_x_align(Clutter.ActorAlign.END);
|
||||||
|
this.actor.set_x_expand(true);
|
||||||
|
this.actor.set_y_expand(true);
|
||||||
|
|
||||||
|
this.actor.connect('clicked', Lang.bind(this,
|
||||||
|
function() {
|
||||||
|
if (Main.messageTray._trayState == MessageTray.State.HIDDEN)
|
||||||
|
Main.messageTray.toggle();
|
||||||
|
}));
|
||||||
|
this.actor.connect('destroy', Lang.bind(this, this._onDestroy));
|
||||||
|
|
||||||
|
this._trayItemCount = 0;
|
||||||
|
Main.messageTray.getSources().forEach(Lang.bind(this,
|
||||||
|
function(source) {
|
||||||
|
this._sourceAdded(Main.messageTray, source);
|
||||||
|
}));
|
||||||
|
this._sourceAddedId =
|
||||||
|
Main.messageTray.connect('source-added',
|
||||||
|
Lang.bind(this, this._sourceAdded));
|
||||||
|
this._sourceRemovedId =
|
||||||
|
Main.messageTray.connect('source-removed',
|
||||||
|
Lang.bind(this, this._sourceRemoved));
|
||||||
|
this._updateVisibility();
|
||||||
|
},
|
||||||
|
|
||||||
|
_sourceAdded: function(tray, source) {
|
||||||
|
this._trayItemCount++;
|
||||||
|
this._updateVisibility();
|
||||||
|
},
|
||||||
|
|
||||||
|
_sourceRemoved: function(source) {
|
||||||
|
this._trayItemCount--;
|
||||||
|
this.actor.checked = false;
|
||||||
|
this._updateVisibility();
|
||||||
|
},
|
||||||
|
|
||||||
|
_updateVisibility: function() {
|
||||||
|
this._counterLabel.text = this._trayItemCount.toString();
|
||||||
|
this.actor.visible = this._trayItemCount > 0;
|
||||||
|
},
|
||||||
|
|
||||||
|
_onDestroy: function() {
|
||||||
|
Main.messageTray.getSources().forEach(Lang.bind(this,
|
||||||
|
function(source) {
|
||||||
|
if (!source._windowListDestroyId)
|
||||||
|
return;
|
||||||
|
source.disconnect(source._windowListDestroyId)
|
||||||
|
delete source._windowListDestroyId;
|
||||||
|
}));
|
||||||
|
Main.messageTray.disconnect(this._sourceAddedId);
|
||||||
|
Main.messageTray.disconnect(this._sourceRemovedId);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
const WorkspaceIndicator = new Lang.Class({
|
||||||
|
Name: 'WindowList.WorkspaceIndicator',
|
||||||
|
Extends: PanelMenu.Button,
|
||||||
|
|
||||||
|
_init: function(){
|
||||||
|
this.parent(0.0, _("Workspace Indicator"));
|
||||||
|
this.actor.add_style_class_name('window-list-workspace-indicator');
|
||||||
|
|
||||||
|
this._currentWorkspace = global.screen.get_active_workspace().index();
|
||||||
|
this.statusLabel = new St.Label({ text: this._getStatusText() });
|
||||||
|
|
||||||
|
this.actor.add_actor(this.statusLabel);
|
||||||
|
|
||||||
|
this.workspacesItems = [];
|
||||||
|
|
||||||
|
this._screenSignals = [];
|
||||||
|
this._screenSignals.push(global.screen.connect('notify::n-workspaces', Lang.bind(this,this._updateMenu)));
|
||||||
|
this._screenSignals.push(global.screen.connect_after('workspace-switched', Lang.bind(this,this._updateIndicator)));
|
||||||
|
|
||||||
|
this.actor.connect('scroll-event', Lang.bind(this, this._onScrollEvent));
|
||||||
|
this._updateMenu();
|
||||||
|
|
||||||
|
this._settings = new Gio.Settings({ schema: 'org.gnome.desktop.wm.preferences' });
|
||||||
|
this._settingsChangedId = this._settings.connect('changed::workspace-names', Lang.bind(this, this._updateMenu));
|
||||||
|
},
|
||||||
|
|
||||||
|
destroy: function() {
|
||||||
|
for (let i = 0; i < this._screenSignals.length; i++)
|
||||||
|
global.screen.disconnect(this._screenSignals[i]);
|
||||||
|
|
||||||
|
if (this._settingsChangedId) {
|
||||||
|
this._settings.disconnect(this._settingsChangedId);
|
||||||
|
this._settingsChangedId = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
this.parent();
|
||||||
|
},
|
||||||
|
|
||||||
|
_updateIndicator: function() {
|
||||||
|
this.workspacesItems[this._currentWorkspace].setOrnament(PopupMenu.Ornament.NONE);
|
||||||
|
this._currentWorkspace = global.screen.get_active_workspace().index();
|
||||||
|
this.workspacesItems[this._currentWorkspace].setOrnament(PopupMenu.Ornament.DOT);
|
||||||
|
|
||||||
|
this.statusLabel.set_text(this._getStatusText());
|
||||||
|
},
|
||||||
|
|
||||||
|
_getStatusText: function() {
|
||||||
|
let current = global.screen.get_active_workspace().index();
|
||||||
|
let total = global.screen.n_workspaces;
|
||||||
|
|
||||||
|
return '%d / %d'.format(current + 1, total);
|
||||||
|
},
|
||||||
|
|
||||||
|
_updateMenu: function() {
|
||||||
|
this.menu.removeAll();
|
||||||
|
this.workspacesItems = [];
|
||||||
|
this._currentWorkspace = global.screen.get_active_workspace().index();
|
||||||
|
|
||||||
|
for(let i = 0; i < global.screen.n_workspaces; i++) {
|
||||||
|
let name = Meta.prefs_get_workspace_name(i);
|
||||||
|
let item = new PopupMenu.PopupMenuItem(name);
|
||||||
|
item.workspaceId = i;
|
||||||
|
|
||||||
|
item.connect('activate', Lang.bind(this, function(item, event) {
|
||||||
|
this._activate(item.workspaceId);
|
||||||
|
}));
|
||||||
|
|
||||||
|
if (i == this._currentWorkspace)
|
||||||
|
item.setOrnament(PopupMenu.Ornament.DOT);
|
||||||
|
|
||||||
|
this.menu.addMenuItem(item);
|
||||||
|
this.workspacesItems[i] = item;
|
||||||
|
}
|
||||||
|
|
||||||
|
this.statusLabel.set_text(this._getStatusText());
|
||||||
|
},
|
||||||
|
|
||||||
|
_activate: function(index) {
|
||||||
|
if(index >= 0 && index < global.screen.n_workspaces) {
|
||||||
|
let metaWorkspace = global.screen.get_workspace_by_index(index);
|
||||||
|
metaWorkspace.activate(global.get_current_time());
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
_onScrollEvent: function(actor, event) {
|
||||||
|
let direction = event.get_scroll_direction();
|
||||||
|
let diff = 0;
|
||||||
|
if (direction == Clutter.ScrollDirection.DOWN) {
|
||||||
|
diff = 1;
|
||||||
|
} else if (direction == Clutter.ScrollDirection.UP) {
|
||||||
|
diff = -1;
|
||||||
|
} else {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
let newIndex = this._currentWorkspace + diff;
|
||||||
|
this._activate(newIndex);
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
const WindowList = new Lang.Class({
|
||||||
|
Name: 'WindowList',
|
||||||
|
|
||||||
|
_init: function() {
|
||||||
|
this.actor = new St.Widget({ name: 'panel',
|
||||||
|
style_class: 'bottom-panel',
|
||||||
|
reactive: true,
|
||||||
|
track_hover: true,
|
||||||
|
layout_manager: new Clutter.BinLayout()});
|
||||||
|
this.actor.connect('destroy', Lang.bind(this, this._onDestroy));
|
||||||
|
|
||||||
|
let box = new St.BoxLayout({ x_expand: true, y_expand: true });
|
||||||
|
this.actor.add_actor(box);
|
||||||
|
|
||||||
|
let layout = new Clutter.BoxLayout({ homogeneous: true });
|
||||||
|
this._windowList = new St.Widget({ style_class: 'window-list',
|
||||||
|
layout_manager: layout,
|
||||||
|
x_align: Clutter.ActorAlign.START,
|
||||||
|
x_expand: true,
|
||||||
|
y_expand: true });
|
||||||
|
box.add(this._windowList, { expand: true });
|
||||||
|
|
||||||
|
this._windowList.connect('style-changed', Lang.bind(this,
|
||||||
|
function() {
|
||||||
|
let node = this._windowList.get_theme_node();
|
||||||
|
let spacing = node.get_length('spacing');
|
||||||
|
this._windowList.layout_manager.spacing = spacing;
|
||||||
|
}));
|
||||||
|
this._windowList.connect('notify::allocation', Lang.bind(this,
|
||||||
|
function() {
|
||||||
|
if (this._groupingMode != GroupingMode.AUTO || this._grouped)
|
||||||
|
return;
|
||||||
|
|
||||||
|
let allocation = this._windowList.allocation;
|
||||||
|
let width = allocation.x2 - allocation.x1;
|
||||||
|
let [, natWidth] = this._windowList.get_preferred_width(-1);
|
||||||
|
if (width < natWidth) {
|
||||||
|
this._grouped = true;
|
||||||
|
Meta.later_add(Meta.LaterType.BEFORE_REDRAW,
|
||||||
|
Lang.bind(this, this._populateWindowList));
|
||||||
|
}
|
||||||
|
}));
|
||||||
|
|
||||||
|
this._workspaceIndicator = new WorkspaceIndicator();
|
||||||
|
box.add(this._workspaceIndicator.container);
|
||||||
|
|
||||||
|
this._menuManager = new PopupMenu.PopupMenuManager(this);
|
||||||
|
this._menuManager.addMenu(this._workspaceIndicator.menu);
|
||||||
|
|
||||||
|
this._trayButton = new TrayButton();
|
||||||
|
box.add(this._trayButton.actor);
|
||||||
|
|
||||||
|
Main.layoutManager.addChrome(this.actor, { affectsStruts: true,
|
||||||
|
trackFullscreen: true });
|
||||||
|
Main.ctrlAltTabManager.addGroup(this.actor, _('Window List'), 'start-here-symbolic');
|
||||||
|
|
||||||
|
this._appSystem = Shell.AppSystem.get_default();
|
||||||
|
this._appStateChangedId =
|
||||||
|
this._appSystem.connect('app-state-changed',
|
||||||
|
Lang.bind(this, this._onAppStateChanged));
|
||||||
|
|
||||||
|
this._monitorsChangedId =
|
||||||
|
Main.layoutManager.connect('monitors-changed',
|
||||||
|
Lang.bind(this, this._updatePosition));
|
||||||
|
this._updatePosition();
|
||||||
|
|
||||||
|
this._keyboardVisiblechangedId =
|
||||||
|
Main.layoutManager.connect('keyboard-visible-changed',
|
||||||
|
Lang.bind(this, function(o, state) {
|
||||||
|
Main.layoutManager.keyboardBox.visible = state;
|
||||||
|
Main.uiGroup.set_child_above_sibling(windowList.actor,
|
||||||
|
Main.layoutManager.keyboardBox);
|
||||||
|
this._updateKeyboardAnchor();
|
||||||
|
}));
|
||||||
|
|
||||||
|
this._workspaceSignals = new Hash.Map();
|
||||||
|
this._nWorkspacesChangedId =
|
||||||
|
global.screen.connect('notify::n-workspaces',
|
||||||
|
Lang.bind(this, this._onWorkspacesChanged));
|
||||||
|
this._onWorkspacesChanged();
|
||||||
|
|
||||||
|
this._overviewShowingId =
|
||||||
|
Main.overview.connect('showing', Lang.bind(this, function() {
|
||||||
|
this.actor.hide();
|
||||||
|
this._updateKeyboardAnchor();
|
||||||
|
this._updateMessageTrayAnchor();
|
||||||
|
}));
|
||||||
|
|
||||||
|
this._overviewHidingId =
|
||||||
|
Main.overview.connect('hiding', Lang.bind(this, function() {
|
||||||
|
this.actor.visible = !Main.layoutManager.primaryMonitor.inFullscreen;
|
||||||
|
this._updateKeyboardAnchor();
|
||||||
|
this._updateMessageTrayAnchor();
|
||||||
|
}));
|
||||||
|
this._updateMessageTrayAnchor();
|
||||||
|
|
||||||
|
this._fullscreenChangedId =
|
||||||
|
global.screen.connect('in-fullscreen-changed', Lang.bind(this, function() {
|
||||||
|
this._updateMessageTrayAnchor();
|
||||||
|
}));
|
||||||
|
|
||||||
|
this._dragBeginId =
|
||||||
|
Main.xdndHandler.connect('drag-begin',
|
||||||
|
Lang.bind(this, this._onDragBegin));
|
||||||
|
this._dragEndId =
|
||||||
|
Main.xdndHandler.connect('drag-end',
|
||||||
|
Lang.bind(this, this._onDragEnd));
|
||||||
|
this._dragMonitor = {
|
||||||
|
dragMotion: Lang.bind(this, this._onDragMotion)
|
||||||
|
};
|
||||||
|
|
||||||
|
this._dndTimeoutId = 0;
|
||||||
|
this._dndWindow = null;
|
||||||
|
|
||||||
|
this._settings = Convenience.getSettings();
|
||||||
|
this._groupingModeChangedId =
|
||||||
|
this._settings.connect('changed::grouping-mode',
|
||||||
|
Lang.bind(this, this._groupingModeChanged));
|
||||||
|
this._groupingModeChanged();
|
||||||
|
},
|
||||||
|
|
||||||
|
_groupingModeChanged: function() {
|
||||||
|
this._groupingMode = this._settings.get_enum('grouping-mode');
|
||||||
|
this._grouped = this._groupingMode == GroupingMode.ALWAYS;
|
||||||
|
this._populateWindowList();
|
||||||
|
},
|
||||||
|
|
||||||
|
_populateWindowList: function() {
|
||||||
|
this._windowList.destroy_all_children();
|
||||||
|
|
||||||
|
if (!this._grouped) {
|
||||||
|
let windows = Meta.get_window_actors(global.screen);
|
||||||
|
for (let i = 0; i < windows.length; i++)
|
||||||
|
this._onWindowAdded(null, windows[i].metaWindow);
|
||||||
|
} else {
|
||||||
|
let apps = this._appSystem.get_running();
|
||||||
|
for (let i = 0; i < apps.length; i++)
|
||||||
|
this._addApp(apps[i]);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
_updatePosition: function() {
|
||||||
|
let monitor = Main.layoutManager.primaryMonitor;
|
||||||
|
this.actor.width = monitor.width;
|
||||||
|
this.actor.set_position(monitor.x, monitor.y + monitor.height - this.actor.height);
|
||||||
|
},
|
||||||
|
|
||||||
|
_updateKeyboardAnchor: function() {
|
||||||
|
if (!Main.keyboard.actor)
|
||||||
|
return;
|
||||||
|
|
||||||
|
let anchorY = Main.overview.visible ? 0 : this.actor.height;
|
||||||
|
Main.keyboard.actor.anchor_y = anchorY;
|
||||||
|
},
|
||||||
|
|
||||||
|
_updateMessageTrayAnchor: function() {
|
||||||
|
let anchorY = this.actor.visible ? this.actor.height : 0;
|
||||||
|
|
||||||
|
Main.messageTray.actor.anchor_y = anchorY;
|
||||||
|
Main.messageTray._notificationWidget.anchor_y = -anchorY;
|
||||||
|
},
|
||||||
|
|
||||||
|
_onAppStateChanged: function(appSys, app) {
|
||||||
|
if (!this._grouped)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (app.state == Shell.AppState.RUNNING)
|
||||||
|
this._addApp(app);
|
||||||
|
else if (app.state == Shell.AppState.STOPPED)
|
||||||
|
this._removeApp(app);
|
||||||
|
},
|
||||||
|
|
||||||
|
_addApp: function(app) {
|
||||||
|
let button = new AppButton(app);
|
||||||
|
this._windowList.layout_manager.pack(button.actor,
|
||||||
|
true, true, true,
|
||||||
|
Clutter.BoxAlignment.START,
|
||||||
|
Clutter.BoxAlignment.START);
|
||||||
|
},
|
||||||
|
|
||||||
|
_removeApp: function(app) {
|
||||||
|
let children = this._windowList.get_children();
|
||||||
|
for (let i = 0; i < children.length; i++) {
|
||||||
|
if (children[i]._delegate.app == app) {
|
||||||
|
children[i].destroy();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
_onWindowAdded: function(ws, win) {
|
||||||
|
if (!Shell.WindowTracker.get_default().is_window_interesting(win))
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (this._grouped)
|
||||||
|
return;
|
||||||
|
|
||||||
|
let button = new WindowButton(win);
|
||||||
|
this._windowList.layout_manager.pack(button.actor,
|
||||||
|
true, true, true,
|
||||||
|
Clutter.BoxAlignment.START,
|
||||||
|
Clutter.BoxAlignment.START);
|
||||||
|
},
|
||||||
|
|
||||||
|
_onWindowRemoved: function(ws, win) {
|
||||||
|
if (this._grouped) {
|
||||||
|
if (this._groupingMode == GroupingMode.AUTO) {
|
||||||
|
this._grouped = false;
|
||||||
|
this._populateWindowList();
|
||||||
|
}
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
let children = this._windowList.get_children();
|
||||||
|
for (let i = 0; i < children.length; i++) {
|
||||||
|
if (children[i]._delegate.metaWindow == win) {
|
||||||
|
children[i].destroy();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
_onWorkspacesChanged: function() {
|
||||||
|
let numWorkspaces = global.screen.n_workspaces;
|
||||||
|
for (let i = 0; i < numWorkspaces; i++) {
|
||||||
|
let workspace = global.screen.get_workspace_by_index(i);
|
||||||
|
if (this._workspaceSignals.has(workspace))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
let signals = { windowAddedId: 0, windowRemovedId: 0 };
|
||||||
|
signals._windowAddedId =
|
||||||
|
workspace.connect_after('window-added',
|
||||||
|
Lang.bind(this, this._onWindowAdded));
|
||||||
|
signals._windowRemovedId =
|
||||||
|
workspace.connect('window-removed',
|
||||||
|
Lang.bind(this, this._onWindowRemoved));
|
||||||
|
this._workspaceSignals.set(workspace, signals);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
_disconnectWorkspaceSignals: function() {
|
||||||
|
let numWorkspaces = global.screen.n_workspaces;
|
||||||
|
for (let i = 0; i < numWorkspaces; i++) {
|
||||||
|
let workspace = global.screen.get_workspace_by_index(i);
|
||||||
|
let signals = this._workspaceSignals.delete(workspace)[1];
|
||||||
|
workspace.disconnect(signals._windowAddedId);
|
||||||
|
workspace.disconnect(signals._windowRemovedId);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
_onDragBegin: function() {
|
||||||
|
DND.addDragMonitor(this._dragMonitor);
|
||||||
|
},
|
||||||
|
|
||||||
|
_onDragEnd: function() {
|
||||||
|
DND.removeDragMonitor(this._dragMonitor);
|
||||||
|
this._removeActivateTimeout();
|
||||||
|
},
|
||||||
|
|
||||||
|
_onDragMotion: function(dragEvent) {
|
||||||
|
if (Main.overview.visible ||
|
||||||
|
!this.actor.contains(dragEvent.targetActor)) {
|
||||||
|
this._removeActivateTimeout();
|
||||||
|
return DND.DragMotionResult.CONTINUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
let hoveredWindow = null;
|
||||||
|
if (dragEvent.targetActor._delegate)
|
||||||
|
hoveredWindow = dragEvent.targetActor._delegate.metaWindow;
|
||||||
|
|
||||||
|
if (!hoveredWindow ||
|
||||||
|
this._dndWindow == hoveredWindow)
|
||||||
|
return DND.DragMotionResult.CONTINUE;
|
||||||
|
|
||||||
|
this._removeActivateTimeout();
|
||||||
|
|
||||||
|
this._dndWindow = hoveredWindow;
|
||||||
|
this._dndTimeoutId = GLib.timeout_add(GLib.PRIORITY_DEFAULT,
|
||||||
|
DND_ACTIVATE_TIMEOUT,
|
||||||
|
Lang.bind(this, this._activateWindow));
|
||||||
|
|
||||||
|
return DND.DragMotionResult.CONTINUE;
|
||||||
|
},
|
||||||
|
|
||||||
|
_removeActivateTimeout: function() {
|
||||||
|
if (this._dndTimeoutId)
|
||||||
|
GLib.source_remove (this._dndTimeoutId);
|
||||||
|
this._dndTimeoutId = 0;
|
||||||
|
this._dndWindow = null;
|
||||||
|
},
|
||||||
|
|
||||||
|
_activateWindow: function() {
|
||||||
|
let [x, y] = global.get_pointer();
|
||||||
|
let pickedActor = global.stage.get_actor_at_pos(Clutter.PickMode.ALL, x, y);
|
||||||
|
|
||||||
|
if (this._dndWindow && this.actor.contains(pickedActor))
|
||||||
|
this._dndWindow.activate(global.get_current_time());
|
||||||
|
this._dndWindow = null;
|
||||||
|
this._dndTimeoutId = 0;
|
||||||
|
|
||||||
|
return false;
|
||||||
|
},
|
||||||
|
|
||||||
|
_onDestroy: function() {
|
||||||
|
this._workspaceIndicator.destroy();
|
||||||
|
|
||||||
|
Main.ctrlAltTabManager.removeGroup(this.actor);
|
||||||
|
|
||||||
|
this._appSystem.disconnect(this._appStateChangedId);
|
||||||
|
this._appStateChangedId = 0;
|
||||||
|
|
||||||
|
Main.layoutManager.disconnect(this._monitorsChangedId);
|
||||||
|
this._monitorsChangedId = 0;
|
||||||
|
|
||||||
|
Main.layoutManager.disconnect(this._keyboardVisiblechangedId);
|
||||||
|
this._keyboardVisiblechangedId = 0;
|
||||||
|
|
||||||
|
Main.layoutManager.hideKeyboard();
|
||||||
|
|
||||||
|
this._disconnectWorkspaceSignals();
|
||||||
|
global.screen.disconnect(this._nWorkspacesChangedId);
|
||||||
|
this._nWorkspacesChangedId = 0;
|
||||||
|
|
||||||
|
Main.messageTray.actor.anchor_y = 0;
|
||||||
|
Main.messageTray._notificationWidget.anchor_y = 0;
|
||||||
|
|
||||||
|
Main.overview.disconnect(this._overviewShowingId);
|
||||||
|
Main.overview.disconnect(this._overviewHidingId);
|
||||||
|
|
||||||
|
global.screen.disconnect(this._fullscreenChangedId);
|
||||||
|
|
||||||
|
this._settings.disconnect(this._groupingModeChangedId);
|
||||||
|
|
||||||
|
let windows = Meta.get_window_actors(global.screen);
|
||||||
|
for (let i = 0; i < windows.length; i++)
|
||||||
|
windows[i].metaWindow.set_icon_geometry(null);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
let windowList;
|
||||||
|
let injections = {};
|
||||||
|
let notificationParent;
|
||||||
|
|
||||||
|
function init() {
|
||||||
|
}
|
||||||
|
|
||||||
|
function enable() {
|
||||||
|
windowList = new WindowList();
|
||||||
|
|
||||||
|
windowList.actor.connect('notify::hover', Lang.bind(Main.messageTray,
|
||||||
|
function() {
|
||||||
|
this._pointerInTray = windowList.actor.hover;
|
||||||
|
this._updateState();
|
||||||
|
}));
|
||||||
|
|
||||||
|
injections['_trayDwellTimeout'] = MessageTray.MessageTray.prototype._trayDwellTimeout;
|
||||||
|
MessageTray.MessageTray.prototype._trayDwellTimeout = function() {
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
notificationParent = Main.messageTray._notificationWidget.get_parent();
|
||||||
|
Main.messageTray._notificationWidget.hide();
|
||||||
|
Main.messageTray._notificationWidget.reparent(windowList.actor);
|
||||||
|
Main.messageTray._notificationWidget.show();
|
||||||
|
}
|
||||||
|
|
||||||
|
function disable() {
|
||||||
|
if (!windowList)
|
||||||
|
return;
|
||||||
|
|
||||||
|
windowList.actor.hide();
|
||||||
|
|
||||||
|
if (notificationParent) {
|
||||||
|
Main.messageTray._notificationWidget.reparent(notificationParent);
|
||||||
|
notificationParent = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
windowList.actor.destroy();
|
||||||
|
windowList = null;
|
||||||
|
|
||||||
|
for (prop in injections)
|
||||||
|
MessageTray.MessageTray.prototype[prop] = injections[prop];
|
||||||
|
}
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
{
|
||||||
|
"extension-id": "@extension_id@",
|
||||||
|
"uuid": "@uuid@",
|
||||||
|
"settings-schema": "@gschemaname@",
|
||||||
|
"gettext-domain": "@gettext_domain@",
|
||||||
|
"name": "Window List",
|
||||||
|
"description": "Display a window list at the bottom of the screen.\nThis extension is part of Classic Mode and is officially supported by GNOME. Please do not report bugs using the form below, use GNOME Bugzilla instead.",
|
||||||
|
"shell-version": [ "@shell_current@" ],
|
||||||
|
"url": "@url@"
|
||||||
|
}
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
<schemalist gettext-domain="gnome-shell-extensions">
|
||||||
|
<enum id="org.gnome.shell.extensions.window-list.GroupingMode">
|
||||||
|
<value value="0" nick="never"/>
|
||||||
|
<value value="1" nick="auto"/>
|
||||||
|
<value value="2" nick="always"/>
|
||||||
|
</enum>
|
||||||
|
<schema id="org.gnome.shell.extensions.window-list"
|
||||||
|
path="/org/gnome/shell/extensions/window-list/">
|
||||||
|
<key name="grouping-mode"
|
||||||
|
enum="org.gnome.shell.extensions.window-list.GroupingMode">
|
||||||
|
<default>'never'</default>
|
||||||
|
<_summary>When to group windows</_summary>
|
||||||
|
<_description>
|
||||||
|
Decides when to group windows from the same application on the
|
||||||
|
window list. Possible values are "never", "auto" and "always".
|
||||||
|
</_description>
|
||||||
|
</key>
|
||||||
|
</schema>
|
||||||
|
</schemalist>
|
||||||
@@ -0,0 +1,81 @@
|
|||||||
|
// -*- mode: js2; indent-tabs-mode: nil; js2-basic-offset: 4 -*-
|
||||||
|
|
||||||
|
const GObject = imports.gi.GObject;
|
||||||
|
const Gtk = imports.gi.Gtk;
|
||||||
|
const Lang = imports.lang;
|
||||||
|
|
||||||
|
const Gettext = imports.gettext.domain('gnome-shell-extensions');
|
||||||
|
const _ = Gettext.gettext;
|
||||||
|
|
||||||
|
const ExtensionUtils = imports.misc.extensionUtils;
|
||||||
|
const Me = ExtensionUtils.getCurrentExtension();
|
||||||
|
const Convenience = Me.imports.convenience;
|
||||||
|
|
||||||
|
|
||||||
|
function init() {
|
||||||
|
Convenience.initTranslations();
|
||||||
|
}
|
||||||
|
|
||||||
|
const WindowListPrefsWidget = new GObject.Class({
|
||||||
|
Name: 'WindowList.Prefs.Widget',
|
||||||
|
GTypeName: 'WindowListPrefsWidget',
|
||||||
|
Extends: Gtk.Frame,
|
||||||
|
|
||||||
|
_init: function(params) {
|
||||||
|
this.parent(params);
|
||||||
|
|
||||||
|
this.shadow_type = Gtk.ShadowType.NONE;
|
||||||
|
this.margin = 24;
|
||||||
|
|
||||||
|
let title = '<b>' + _("Window Grouping") + '</b>';
|
||||||
|
let titleLabel = new Gtk.Label({ use_markup: true, label: title });
|
||||||
|
this.set_label_widget(titleLabel);
|
||||||
|
|
||||||
|
let align = new Gtk.Alignment({ left_padding: 12 });
|
||||||
|
this.add(align);
|
||||||
|
|
||||||
|
let grid = new Gtk.Grid({ orientation: Gtk.Orientation.VERTICAL,
|
||||||
|
row_spacing: 6,
|
||||||
|
column_spacing: 6,
|
||||||
|
margin_top: 6 });
|
||||||
|
align.add(grid);
|
||||||
|
|
||||||
|
this._settings = Convenience.getSettings();
|
||||||
|
let currentMode = this._settings.get_string('grouping-mode');
|
||||||
|
let range = this._settings.get_range('grouping-mode');
|
||||||
|
let modes = range.deep_unpack()[1].deep_unpack();
|
||||||
|
|
||||||
|
let modeLabels = {
|
||||||
|
'never': _("Never group windows"),
|
||||||
|
'auto': _("Group windows when space is limited"),
|
||||||
|
'always': _("Always group windows")
|
||||||
|
};
|
||||||
|
|
||||||
|
let radio = null;
|
||||||
|
for (let i = 0; i < modes.length; i++) {
|
||||||
|
let mode = modes[i];
|
||||||
|
let label = modeLabels[mode];
|
||||||
|
if (!label) {
|
||||||
|
log('Unhandled option "%s" for grouping-mode'.format(mode));
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
radio = new Gtk.RadioButton({ active: currentMode == mode,
|
||||||
|
label: label,
|
||||||
|
group: radio });
|
||||||
|
grid.add(radio);
|
||||||
|
|
||||||
|
radio.connect('toggled', Lang.bind(this, function(button) {
|
||||||
|
if (button.active)
|
||||||
|
this._settings.set_string('grouping-mode', mode);
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
function buildPrefsWidget() {
|
||||||
|
let widget = new WindowListPrefsWidget();
|
||||||
|
widget.show_all();
|
||||||
|
|
||||||
|
return widget;
|
||||||
|
}
|
||||||
@@ -0,0 +1,77 @@
|
|||||||
|
.bottom-panel {
|
||||||
|
/* .window-button-icon height +
|
||||||
|
.window-button vertical padding +
|
||||||
|
.window-button > StWidget vertical padding) */
|
||||||
|
height: 30px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.window-list {
|
||||||
|
spacing: 2px;
|
||||||
|
font-size: 10pt;
|
||||||
|
}
|
||||||
|
|
||||||
|
.window-button {
|
||||||
|
padding: 1px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.window-button:first-child:ltr {
|
||||||
|
padding-left: 2px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.window-button:last-child:rtl {
|
||||||
|
padding-right: 2px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.window-button > StWidget {
|
||||||
|
-st-natural-width: 250px;
|
||||||
|
max-width: 250px;
|
||||||
|
color: #bbb;
|
||||||
|
background-color: black;
|
||||||
|
border-radius: 4px;
|
||||||
|
padding: 3px 6px 1px;
|
||||||
|
box-shadow: inset 1px 1px 4px rgba(255,255,255,0.5);
|
||||||
|
text-shadow: 1px 1px 4px rgba(0,0,0,0.8);
|
||||||
|
spacing: 4px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.window-button:hover > StWidget {
|
||||||
|
color: white;
|
||||||
|
background-color: #1f1f1f;
|
||||||
|
}
|
||||||
|
|
||||||
|
.window-button:active > StWidget,
|
||||||
|
.window-button:focus > StWidget {
|
||||||
|
box-shadow: inset 2px 2px 4px rgba(255,255,255,0.5);
|
||||||
|
}
|
||||||
|
|
||||||
|
.window-button.focused > StWidget {
|
||||||
|
color: white;
|
||||||
|
box-shadow: inset 1px 1px 4px rgba(255,255,255,0.7);
|
||||||
|
}
|
||||||
|
|
||||||
|
.window-button.focused:active > StWidget {
|
||||||
|
box-shadow: inset 2px 2px 4px rgba(255,255,255,0.7);
|
||||||
|
}
|
||||||
|
|
||||||
|
.window-button.minimized > StWidget {
|
||||||
|
color: #666;
|
||||||
|
box-shadow: inset -1px -1px 4px rgba(255,255,255,0.5);
|
||||||
|
}
|
||||||
|
|
||||||
|
.window-button.minimized:active > StWidget {
|
||||||
|
box-shadow: inset -2px -2px 4px rgba(255,255,255,0.5);
|
||||||
|
}
|
||||||
|
|
||||||
|
.window-button-icon {
|
||||||
|
width: 24px;
|
||||||
|
height: 24px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.window-list-workspace-indicator {
|
||||||
|
background-color: rgba(200, 200, 200, .3);
|
||||||
|
border: 1px solid #cccccc;
|
||||||
|
}
|
||||||
|
|
||||||
|
.window-list-workspace-indicator > StLabel {
|
||||||
|
padding: 0 2px;
|
||||||
|
}
|
||||||
@@ -33,41 +33,37 @@ function resetState() {
|
|||||||
function enable() {
|
function enable() {
|
||||||
resetState();
|
resetState();
|
||||||
|
|
||||||
Workspace.WindowOverlay.prototype.setId = function(id) {
|
|
||||||
if (this._text.visible && id == null)
|
|
||||||
this._text.hide();
|
|
||||||
this._id = id;
|
|
||||||
if (id != null)
|
|
||||||
this._text.text = this._id.toString();
|
|
||||||
}
|
|
||||||
winInjections['setId'] = undefined;
|
|
||||||
|
|
||||||
Workspace.WindowOverlay.prototype.getId = function() {
|
|
||||||
return this._id;
|
|
||||||
}
|
|
||||||
winInjections['getId'] = undefined;
|
|
||||||
|
|
||||||
Workspace.WindowOverlay.prototype.showTooltip = function() {
|
Workspace.WindowOverlay.prototype.showTooltip = function() {
|
||||||
if (this._id === null)
|
|
||||||
return;
|
|
||||||
this._text.raise_top();
|
this._text.raise_top();
|
||||||
this._text.show();
|
this._text.show();
|
||||||
this._text.text = this._id.toString();
|
this._text.text = (this._windowClone.slotId + 1).toString();
|
||||||
}
|
}
|
||||||
winInjections['showTooltip'] = undefined;
|
winInjections['showTooltip'] = undefined;
|
||||||
|
|
||||||
Workspace.WindowOverlay.prototype.hideTooltip = function() {
|
Workspace.WindowOverlay.prototype.hideTooltip = function() {
|
||||||
if (this._text.visible)
|
if (this._text && this._text.visible)
|
||||||
this._text.hide();
|
this._text.hide();
|
||||||
}
|
}
|
||||||
winInjections['hideTooltip'] = undefined;
|
winInjections['hideTooltip'] = undefined;
|
||||||
|
|
||||||
Workspace.Workspace.prototype.showTooltip = function() {
|
Workspace.Workspace.prototype.showTooltip = function() {
|
||||||
if (this._tip == null)
|
if (this._tip == null || this._actualGeometry == null)
|
||||||
return;
|
return;
|
||||||
this._tip.text = (this.metaWorkspace.index() + 1).toString();
|
this._tip.text = (this.metaWorkspace.index() + 1).toString();
|
||||||
this._tip.x = this._x;
|
|
||||||
this._tip.y = this._y;
|
// Hand code this instead of using _getSpacingAndPadding
|
||||||
|
// because that fails on empty workspaces
|
||||||
|
let node = this.actor.get_theme_node();
|
||||||
|
let padding = {
|
||||||
|
left: node.get_padding(St.Side.LEFT),
|
||||||
|
top: node.get_padding(St.Side.TOP),
|
||||||
|
bottom: node.get_padding(St.Side.BOTTOM),
|
||||||
|
right: node.get_padding(St.Side.RIGHT),
|
||||||
|
};
|
||||||
|
|
||||||
|
let area = Workspace.padArea(this._actualGeometry, padding);
|
||||||
|
this._tip.x = area.x;
|
||||||
|
this._tip.y = area.y;
|
||||||
this._tip.show();
|
this._tip.show();
|
||||||
this._tip.raise_top();
|
this._tip.raise_top();
|
||||||
}
|
}
|
||||||
@@ -83,11 +79,9 @@ function enable() {
|
|||||||
workspaceInjections['hideTooltip'] = undefined;
|
workspaceInjections['hideTooltip'] = undefined;
|
||||||
|
|
||||||
Workspace.Workspace.prototype.getWindowWithTooltip = function(id) {
|
Workspace.Workspace.prototype.getWindowWithTooltip = function(id) {
|
||||||
for (let i in this._windowOverlays) {
|
for (let i = 0; i < this._windows.length; i++) {
|
||||||
if (this._windowOverlays[i] == null)
|
if ((this._windows[i].slotId + 1) == id)
|
||||||
continue;
|
return this._windows[i].metaWindow;
|
||||||
if (this._windowOverlays[i].getId() === id)
|
|
||||||
return this._windowOverlays[i]._windowClone.metaWindow;
|
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
@@ -127,11 +121,11 @@ function enable() {
|
|||||||
workViewInjections['_hideWorkspacesTooltips'] = undefined;
|
workViewInjections['_hideWorkspacesTooltips'] = undefined;
|
||||||
|
|
||||||
WorkspacesView.WorkspacesView.prototype._onKeyRelease = function(s, o) {
|
WorkspacesView.WorkspacesView.prototype._onKeyRelease = function(s, o) {
|
||||||
if (this._pickWindow &&
|
if (this._pickWindow &&
|
||||||
(o.get_key_symbol() == Clutter.KEY_Alt_L ||
|
(o.get_key_symbol() == Clutter.KEY_Alt_L ||
|
||||||
o.get_key_symbol() == Clutter.KEY_Alt_R))
|
o.get_key_symbol() == Clutter.KEY_Alt_R))
|
||||||
this._hideTooltips();
|
this._hideTooltips();
|
||||||
if (this._pickWorkspace &&
|
if (this._pickWorkspace &&
|
||||||
(o.get_key_symbol() == Clutter.KEY_Control_L ||
|
(o.get_key_symbol() == Clutter.KEY_Control_L ||
|
||||||
o.get_key_symbol() == Clutter.KEY_Control_R))
|
o.get_key_symbol() == Clutter.KEY_Control_R))
|
||||||
this._hideWorkspacesTooltips();
|
this._hideWorkspacesTooltips();
|
||||||
@@ -139,6 +133,9 @@ function enable() {
|
|||||||
workViewInjections['_onKeyRelease'] = undefined;
|
workViewInjections['_onKeyRelease'] = undefined;
|
||||||
|
|
||||||
WorkspacesView.WorkspacesView.prototype._onKeyPress = function(s, o) {
|
WorkspacesView.WorkspacesView.prototype._onKeyPress = function(s, o) {
|
||||||
|
if(Main.overview._viewSelector._activePage != Main.overview._viewSelector._workspacesPage)
|
||||||
|
return false;
|
||||||
|
|
||||||
if ((o.get_key_symbol() == Clutter.KEY_Alt_L ||
|
if ((o.get_key_symbol() == Clutter.KEY_Alt_L ||
|
||||||
o.get_key_symbol() == Clutter.KEY_Alt_R)
|
o.get_key_symbol() == Clutter.KEY_Alt_R)
|
||||||
&& !this._pickWorkspace) {
|
&& !this._pickWorkspace) {
|
||||||
@@ -221,7 +218,9 @@ function enable() {
|
|||||||
parentActor.add_actor(this._text);
|
parentActor.add_actor(this._text);
|
||||||
});
|
});
|
||||||
|
|
||||||
winInjections['updatePositions'] = injectToFunction(Workspace.WindowOverlay.prototype, 'updatePositions', function(cloneX, cloneY, cloneWidth, cloneHeight) {
|
winInjections['relayout'] = injectToFunction(Workspace.WindowOverlay.prototype, 'relayout', function(animate) {
|
||||||
|
let [cloneX, cloneY, cloneWidth, cloneHeight] = this._windowClone.slot;
|
||||||
|
|
||||||
let textX = cloneX - 2;
|
let textX = cloneX - 2;
|
||||||
let textY = cloneY - 2;
|
let textY = cloneY - 2;
|
||||||
this._text.set_position(Math.floor(textX) + 5, Math.floor(textY) + 5);
|
this._text.set_position(Math.floor(textX) + 5, Math.floor(textY) + 5);
|
||||||
@@ -242,23 +241,6 @@ function enable() {
|
|||||||
this._tip = null;
|
this._tip = null;
|
||||||
});
|
});
|
||||||
|
|
||||||
workspaceInjections['positionWindows'] = injectToFunction(Workspace.Workspace.prototype, 'positionWindows', function(flags) {
|
|
||||||
let visibleClones = this._windows.slice();
|
|
||||||
if (this._reservedSlot)
|
|
||||||
visibleClones.push(this._reservedSlot);
|
|
||||||
|
|
||||||
let slots = this._computeAllWindowSlots(visibleClones.length);
|
|
||||||
visibleClones = this._orderWindowsByMotionAndStartup(visibleClones, slots);
|
|
||||||
for (let i = 0; i < visibleClones.length; i++) {
|
|
||||||
let clone = visibleClones[i];
|
|
||||||
let metaWindow = clone.metaWindow;
|
|
||||||
let mainIndex = this._lookupIndex(metaWindow);
|
|
||||||
let overlay = this._windowOverlays[mainIndex];
|
|
||||||
if (overlay)
|
|
||||||
overlay.setId(i < 9 ? i + 1 : null);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
workViewInjections['_init'] = injectToFunction(WorkspacesView.WorkspacesView.prototype, '_init', function(width, height, x, y, workspaces) {
|
workViewInjections['_init'] = injectToFunction(WorkspacesView.WorkspacesView.prototype, '_init', function(width, height, x, y, workspaces) {
|
||||||
this._pickWorkspace = false;
|
this._pickWorkspace = false;
|
||||||
this._pickWindow = false;
|
this._pickWindow = false;
|
||||||
@@ -283,6 +265,8 @@ function removeInjection(object, injection, name) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function disable() {
|
function disable() {
|
||||||
|
let i;
|
||||||
|
|
||||||
for (i in workspaceInjections)
|
for (i in workspaceInjections)
|
||||||
removeInjection(Workspace.Workspace.prototype, workspaceInjections, i);
|
removeInjection(Workspace.Workspace.prototype, workspaceInjections, i);
|
||||||
for (i in winInjections)
|
for (i in winInjections)
|
||||||
|
|||||||
@@ -6,6 +6,6 @@
|
|||||||
"gettext-domain": "@gettext_domain@",
|
"gettext-domain": "@gettext_domain@",
|
||||||
"original-author": "zaspire@rambler.ru",
|
"original-author": "zaspire@rambler.ru",
|
||||||
"name": "windowNavigator",
|
"name": "windowNavigator",
|
||||||
"description": "Allow keyboard selection of windows and workspaces in overlay mode",
|
"description": "Allow keyboard selection of windows and workspaces in overlay mode. <Ctrl>number selects a workspace, and <Alt>number selects a window.",
|
||||||
"url": "@url@"
|
"url": "@url@"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
EXTENSION_ID = workspace-indicator
|
EXTENSION_ID = workspace-indicator
|
||||||
|
|
||||||
|
EXTRA_MODULES = prefs.js
|
||||||
|
|
||||||
include ../../extension.mk
|
include ../../extension.mk
|
||||||
|
|||||||
@@ -1,3 +1,6 @@
|
|||||||
|
// -*- mode: js2; indent-tabs-mode: nil; js2-basic-offset: 4 -*-
|
||||||
|
|
||||||
|
const Gio = imports.gi.Gio;
|
||||||
const Meta = imports.gi.Meta;
|
const Meta = imports.gi.Meta;
|
||||||
const Clutter = imports.gi.Clutter;
|
const Clutter = imports.gi.Clutter;
|
||||||
const St = imports.gi.St;
|
const St = imports.gi.St;
|
||||||
@@ -16,6 +19,9 @@ const ExtensionUtils = imports.misc.extensionUtils;
|
|||||||
const Me = ExtensionUtils.getCurrentExtension();
|
const Me = ExtensionUtils.getCurrentExtension();
|
||||||
const Convenience = Me.imports.convenience;
|
const Convenience = Me.imports.convenience;
|
||||||
|
|
||||||
|
const WORKSPACE_SCHEMA = 'org.gnome.desktop.wm.preferences';
|
||||||
|
const WORKSPACE_KEY = 'workspace-names';
|
||||||
|
|
||||||
const WorkspaceIndicator = new Lang.Class({
|
const WorkspaceIndicator = new Lang.Class({
|
||||||
Name: 'WorkspaceIndicator.WorkspaceIndicator',
|
Name: 'WorkspaceIndicator.WorkspaceIndicator',
|
||||||
Extends: PanelMenu.Button,
|
Extends: PanelMenu.Button,
|
||||||
@@ -41,21 +47,28 @@ const WorkspaceIndicator = new Lang.Class({
|
|||||||
this._createWorkspacesSection();
|
this._createWorkspacesSection();
|
||||||
|
|
||||||
//styling
|
//styling
|
||||||
this.menu.actor.add_style_class_name('workspace-indicator-shorter');
|
|
||||||
this.statusLabel.add_style_class_name('panel-workspace-indicator');
|
this.statusLabel.add_style_class_name('panel-workspace-indicator');
|
||||||
|
|
||||||
|
this._settings = new Gio.Settings({ schema: WORKSPACE_SCHEMA });
|
||||||
|
this._settingsChangedId = this._settings.connect('changed::' + WORKSPACE_KEY, Lang.bind(this, this._createWorkspacesSection));
|
||||||
},
|
},
|
||||||
|
|
||||||
destroy: function() {
|
destroy: function() {
|
||||||
for (let i = 0; i < this._screenSignals.length; i++)
|
for (let i = 0; i < this._screenSignals.length; i++)
|
||||||
global.screen.disconnect(this._screenSignals[i]);
|
global.screen.disconnect(this._screenSignals[i]);
|
||||||
|
|
||||||
|
if (this._settingsChangedId) {
|
||||||
|
this._settings.disconnect(this._settingsChangedId);
|
||||||
|
this._settingsChangedId = 0;
|
||||||
|
}
|
||||||
|
|
||||||
this.parent();
|
this.parent();
|
||||||
},
|
},
|
||||||
|
|
||||||
_updateIndicator: function() {
|
_updateIndicator: function() {
|
||||||
this.workspacesItems[this._currentWorkspace].setShowDot(false);
|
this.workspacesItems[this._currentWorkspace].setOrnament(PopupMenu.Ornament.NONE);
|
||||||
this._currentWorkspace = global.screen.get_active_workspace().index();
|
this._currentWorkspace = global.screen.get_active_workspace().index();
|
||||||
this.workspacesItems[this._currentWorkspace].setShowDot(true);
|
this.workspacesItems[this._currentWorkspace].setOrnament(PopupMenu.Ornament.DOT);
|
||||||
|
|
||||||
this.statusLabel.set_text(this._labelText());
|
this.statusLabel.set_text(this._labelText());
|
||||||
},
|
},
|
||||||
@@ -85,7 +98,7 @@ const WorkspaceIndicator = new Lang.Class({
|
|||||||
}));
|
}));
|
||||||
|
|
||||||
if (i == this._currentWorkspace)
|
if (i == this._currentWorkspace)
|
||||||
this.workspacesItems[i].setShowDot(true);
|
this.workspacesItems[i].setOrnament(PopupMenu.Ornament.DOT);
|
||||||
}
|
}
|
||||||
|
|
||||||
this.statusLabel.set_text(this._labelText());
|
this.statusLabel.set_text(this._labelText());
|
||||||
@@ -94,7 +107,7 @@ const WorkspaceIndicator = new Lang.Class({
|
|||||||
_activate : function (index) {
|
_activate : function (index) {
|
||||||
if(index >= 0 && index < global.screen.n_workspaces) {
|
if(index >= 0 && index < global.screen.n_workspaces) {
|
||||||
let metaWorkspace = global.screen.get_workspace_by_index(index);
|
let metaWorkspace = global.screen.get_workspace_by_index(index);
|
||||||
metaWorkspace.activate(true);
|
metaWorkspace.activate(global.get_current_time());
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
"settings-schema": "@gschemaname@",
|
"settings-schema": "@gschemaname@",
|
||||||
"gettext-domain": "@gettext_domain@",
|
"gettext-domain": "@gettext_domain@",
|
||||||
"name": "Workspace Indicator",
|
"name": "Workspace Indicator",
|
||||||
"description": "Put an indicator on the panel signaling in which workspace you are, and give you the possibility of switching to another one",
|
"description": "Put an indicator on the panel signaling in which workspace you are, and give you the possibility of switching to another one.",
|
||||||
"shell-version": [ "@shell_current@" ],
|
"shell-version": [ "@shell_current@" ],
|
||||||
"original-authors": [ "erick.red@gmail.com" ],
|
"original-authors": [ "erick.red@gmail.com" ],
|
||||||
"url": "@url@"
|
"url": "@url@"
|
||||||
|
|||||||
@@ -0,0 +1,207 @@
|
|||||||
|
// -*- mode: js2; indent-tabs-mode: nil; js2-basic-offset: 4 -*-
|
||||||
|
|
||||||
|
const Gio = imports.gi.Gio;
|
||||||
|
const GLib = imports.gi.GLib;
|
||||||
|
const GObject = imports.gi.GObject;
|
||||||
|
const Gtk = imports.gi.Gtk;
|
||||||
|
const Lang = imports.lang;
|
||||||
|
|
||||||
|
const Gettext = imports.gettext.domain('gnome-shell-extensions');
|
||||||
|
const _ = Gettext.gettext;
|
||||||
|
const N_ = function(e) { return e };
|
||||||
|
|
||||||
|
const ExtensionUtils = imports.misc.extensionUtils;
|
||||||
|
const Me = ExtensionUtils.getCurrentExtension();
|
||||||
|
const Convenience = Me.imports.convenience;
|
||||||
|
|
||||||
|
const WORKSPACE_SCHEMA = 'org.gnome.desktop.wm.preferences';
|
||||||
|
const WORKSPACE_KEY = 'workspace-names';
|
||||||
|
|
||||||
|
const WorkspaceNameModel = new GObject.Class({
|
||||||
|
Name: 'WorkspaceIndicator.WorkspaceNameModel',
|
||||||
|
GTypeName: 'WorkspaceNameModel',
|
||||||
|
Extends: Gtk.ListStore,
|
||||||
|
|
||||||
|
Columns: {
|
||||||
|
LABEL: 0,
|
||||||
|
},
|
||||||
|
|
||||||
|
_init: function(params) {
|
||||||
|
this.parent(params);
|
||||||
|
this.set_column_types([GObject.TYPE_STRING]);
|
||||||
|
|
||||||
|
this._settings = new Gio.Settings({ schema: WORKSPACE_SCHEMA });
|
||||||
|
//this._settings.connect('changed::workspace-names', Lang.bind(this, this._reloadFromSettings));
|
||||||
|
|
||||||
|
this._reloadFromSettings();
|
||||||
|
|
||||||
|
// overriding class closure doesn't work, because GtkTreeModel
|
||||||
|
// plays tricks with marshallers and class closures
|
||||||
|
this.connect('row-changed', Lang.bind(this, this._onRowChanged));
|
||||||
|
this.connect('row-inserted', Lang.bind(this, this._onRowInserted));
|
||||||
|
this.connect('row-deleted', Lang.bind(this, this._onRowDeleted));
|
||||||
|
},
|
||||||
|
|
||||||
|
_reloadFromSettings: function() {
|
||||||
|
if (this._preventChanges)
|
||||||
|
return;
|
||||||
|
this._preventChanges = true;
|
||||||
|
|
||||||
|
let newNames = this._settings.get_strv(WORKSPACE_KEY);
|
||||||
|
|
||||||
|
let i = 0;
|
||||||
|
let [ok, iter] = this.get_iter_first();
|
||||||
|
while (ok && i < newNames.length) {
|
||||||
|
this.set(iter, [this.Columns.LABEL], [newNames[i]]);
|
||||||
|
|
||||||
|
ok = this.iter_next(iter);
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
|
||||||
|
while (ok)
|
||||||
|
ok = this.remove(iter);
|
||||||
|
|
||||||
|
for ( ; i < newNames.length; i++) {
|
||||||
|
iter = this.append();
|
||||||
|
this.set(iter, [this.Columns.LABEL], [newNames[i]]);
|
||||||
|
}
|
||||||
|
|
||||||
|
this._preventChanges = false;
|
||||||
|
},
|
||||||
|
|
||||||
|
_onRowChanged: function(self, path, iter) {
|
||||||
|
if (this._preventChanges)
|
||||||
|
return;
|
||||||
|
this._preventChanges = true;
|
||||||
|
|
||||||
|
let index = path.get_indices()[0];
|
||||||
|
let names = this._settings.get_strv(WORKSPACE_KEY);
|
||||||
|
|
||||||
|
if (index >= names.length) {
|
||||||
|
// fill with blanks
|
||||||
|
for (let i = names.length; i <= index; i++)
|
||||||
|
names[i] = '';
|
||||||
|
}
|
||||||
|
|
||||||
|
names[index] = this.get_value(iter, this.Columns.LABEL);
|
||||||
|
|
||||||
|
this._settings.set_strv(WORKSPACE_KEY, names);
|
||||||
|
|
||||||
|
this._preventChanges = false;
|
||||||
|
},
|
||||||
|
|
||||||
|
_onRowInserted: function(self, path, iter) {
|
||||||
|
if (this._preventChanges)
|
||||||
|
return;
|
||||||
|
this._preventChanges = true;
|
||||||
|
|
||||||
|
let index = path.get_indices()[0];
|
||||||
|
let names = this._settings.get_strv(WORKSPACE_KEY);
|
||||||
|
let label = this.get_value(iter, this.Columns.LABEL) || '';
|
||||||
|
names.splice(index, 0, label);
|
||||||
|
|
||||||
|
this._settings.set_strv(WORKSPACE_KEY, names);
|
||||||
|
|
||||||
|
this._preventChanges = false;
|
||||||
|
},
|
||||||
|
|
||||||
|
_onRowDeleted: function(self, path) {
|
||||||
|
if (this._preventChanges)
|
||||||
|
return;
|
||||||
|
this._preventChanges = true;
|
||||||
|
|
||||||
|
let index = path.get_indices()[0];
|
||||||
|
let names = this._settings.get_strv(WORKSPACE_KEY);
|
||||||
|
|
||||||
|
if (index >= names.length)
|
||||||
|
return;
|
||||||
|
|
||||||
|
names.splice(index, 1);
|
||||||
|
|
||||||
|
// compact the array
|
||||||
|
for (let i = names.length -1; i >= 0 && !names[i]; i++)
|
||||||
|
names.pop();
|
||||||
|
|
||||||
|
this._settings.set_strv(WORKSPACE_KEY, names);
|
||||||
|
|
||||||
|
this._preventChanges = false;
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
const WorkspaceSettingsWidget = new GObject.Class({
|
||||||
|
Name: 'WorkspaceIndicator.WorkspaceSettingsWidget',
|
||||||
|
GTypeName: 'WorkspaceSettingsWidget',
|
||||||
|
Extends: Gtk.Grid,
|
||||||
|
|
||||||
|
_init: function(params) {
|
||||||
|
this.parent(params);
|
||||||
|
this.margin = 10;
|
||||||
|
this.orientation = Gtk.Orientation.VERTICAL;
|
||||||
|
|
||||||
|
this.add(new Gtk.Label({ label: _("Workspace names:"),
|
||||||
|
margin_bottom: 5 }));
|
||||||
|
|
||||||
|
this._store = new WorkspaceNameModel();
|
||||||
|
this._treeView = new Gtk.TreeView({ model: this._store,
|
||||||
|
headers_visible: false,
|
||||||
|
reorderable: true,
|
||||||
|
hexpand: true,
|
||||||
|
vexpand: true
|
||||||
|
});
|
||||||
|
|
||||||
|
let column = new Gtk.TreeViewColumn({ title: _("Name") });
|
||||||
|
let renderer = new Gtk.CellRendererText({ editable: true });
|
||||||
|
renderer.connect('edited', Lang.bind(this, this._cellEdited));
|
||||||
|
column.pack_start(renderer, true);
|
||||||
|
column.add_attribute(renderer, 'text', this._store.Columns.LABEL);
|
||||||
|
this._treeView.append_column(column);
|
||||||
|
|
||||||
|
this.add(this._treeView);
|
||||||
|
|
||||||
|
let toolbar = new Gtk.Toolbar();
|
||||||
|
toolbar.get_style_context().add_class(Gtk.STYLE_CLASS_INLINE_TOOLBAR);
|
||||||
|
|
||||||
|
let newButton = new Gtk.ToolButton({ stock_id: Gtk.STOCK_NEW });
|
||||||
|
newButton.connect('clicked', Lang.bind(this, this._newClicked));
|
||||||
|
toolbar.add(newButton);
|
||||||
|
|
||||||
|
let delButton = new Gtk.ToolButton({ stock_id: Gtk.STOCK_DELETE });
|
||||||
|
delButton.connect('clicked', Lang.bind(this, this._delClicked));
|
||||||
|
toolbar.add(delButton);
|
||||||
|
|
||||||
|
this.add(toolbar);
|
||||||
|
},
|
||||||
|
|
||||||
|
_cellEdited: function(renderer, path, new_text) {
|
||||||
|
let [ok, iter] = this._store.get_iter_from_string(path);
|
||||||
|
|
||||||
|
if (ok)
|
||||||
|
this._store.set(iter, [this._store.Columns.LABEL], [new_text]);
|
||||||
|
},
|
||||||
|
|
||||||
|
_newClicked: function() {
|
||||||
|
let iter = this._store.append();
|
||||||
|
let index = this._store.get_path(iter).get_indices()[0];
|
||||||
|
|
||||||
|
let label = _("Workspace %d").format(index);
|
||||||
|
this._store.set(iter, [this._store.Columns.LABEL], [label]);
|
||||||
|
},
|
||||||
|
|
||||||
|
_delClicked: function() {
|
||||||
|
let [any, model, iter] = this._treeView.get_selection().get_selected();
|
||||||
|
|
||||||
|
if (any)
|
||||||
|
this._store.remove(iter);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
function init() {
|
||||||
|
Convenience.initTranslations();
|
||||||
|
}
|
||||||
|
|
||||||
|
function buildPrefsWidget() {
|
||||||
|
let widget = new WorkspaceSettingsWidget();
|
||||||
|
widget.show_all();
|
||||||
|
|
||||||
|
return widget;
|
||||||
|
}
|
||||||
@@ -1,7 +1,3 @@
|
|||||||
.workspace-indicator-shorter {
|
|
||||||
min-width: 25px;
|
|
||||||
font-size: 10pt;
|
|
||||||
}
|
|
||||||
.panel-workspace-indicator {
|
.panel-workspace-indicator {
|
||||||
padding: 0 8px;
|
padding: 0 8px;
|
||||||
background-color: rgba(200, 200, 200, .5);
|
background-color: rgba(200, 200, 200, .5);
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
/* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */
|
/* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */
|
||||||
|
|
||||||
const DBus = imports.dbus;
|
|
||||||
const Gdk = imports.gi.Gdk;
|
const Gdk = imports.gi.Gdk;
|
||||||
|
const Gio = imports.gi.Gio;
|
||||||
const GLib = imports.gi.GLib;
|
const GLib = imports.gi.GLib;
|
||||||
const GnomeDesktop = imports.gi.GnomeDesktop;
|
const GnomeDesktop = imports.gi.GnomeDesktop;
|
||||||
const Lang = imports.lang;
|
const Lang = imports.lang;
|
||||||
@@ -33,25 +33,23 @@ let rotations = [ [ GnomeDesktop.RRRotation.ROTATION_0, N_("Normal") ],
|
|||||||
[ GnomeDesktop.RRRotation.ROTATION_180, N_("Upside-down") ]
|
[ GnomeDesktop.RRRotation.ROTATION_180, N_("Upside-down") ]
|
||||||
];
|
];
|
||||||
|
|
||||||
const XRandr2Iface = {
|
const XRandr2Iface = <interface name='org.gnome.SettingsDaemon.XRANDR_2'>
|
||||||
name: 'org.gnome.SettingsDaemon.XRANDR_2',
|
<method name='ApplyConfiguration'>
|
||||||
methods: [
|
<arg type='x' direction='in'/>
|
||||||
{ name: 'ApplyConfiguration', inSignature: 'xx', outSignature: '' },
|
<arg type='x' direction='in'/>
|
||||||
]
|
</method>
|
||||||
};
|
</interface>;
|
||||||
let XRandr2 = DBus.makeProxyClass(XRandr2Iface);
|
|
||||||
|
|
||||||
function Indicator() {
|
const XRandr2 = Gio.DBusProxy.makeProxyWrapper(XRandr2Iface);
|
||||||
this._init.apply(this, arguments);
|
|
||||||
}
|
|
||||||
|
|
||||||
Indicator.prototype = {
|
const Indicator = new Lang.Class({
|
||||||
__proto__: PanelMenu.SystemStatusButton.prototype,
|
Name: 'XRandRIndicator',
|
||||||
|
Extends: PanelMenu.SystemStatusButton,
|
||||||
|
|
||||||
_init: function() {
|
_init: function() {
|
||||||
PanelMenu.SystemStatusButton.prototype._init.call(this, 'preferences-desktop-display');
|
this.parent('preferences-desktop-display-symbolic', _("Display"));
|
||||||
|
|
||||||
this._proxy = new XRandr2(DBus.session, 'org.gnome.SettingsDaemon', '/org/gnome/SettingsDaemon/XRANDR');
|
this._proxy = new XRandr2(Gio.DBus.session, 'org.gnome.SettingsDaemon', '/org/gnome/SettingsDaemon/XRANDR');
|
||||||
|
|
||||||
try {
|
try {
|
||||||
this._screen = new GnomeDesktop.RRScreen({ gdk_screen: Gdk.Screen.get_default() });
|
this._screen = new GnomeDesktop.RRScreen({ gdk_screen: Gdk.Screen.get_default() });
|
||||||
@@ -79,9 +77,7 @@ Indicator.prototype = {
|
|||||||
this._addOutputItem(config, outputs[i]);
|
this._addOutputItem(config, outputs[i]);
|
||||||
}
|
}
|
||||||
this.menu.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
|
this.menu.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
|
||||||
this.menu.addAction(_("Configure display settings..."), function() {
|
this.menu.addSettingsAction(_("Display Settings"), 'gnome-display-panel.desktop');
|
||||||
GLib.spawn_command_line_async('gnome-control-center display');
|
|
||||||
});
|
|
||||||
},
|
},
|
||||||
|
|
||||||
_addOutputItem: function(config, output) {
|
_addOutputItem: function(config, output) {
|
||||||
@@ -98,7 +94,7 @@ Indicator.prototype = {
|
|||||||
if (bitmask & allowedRotations) {
|
if (bitmask & allowedRotations) {
|
||||||
let item = new PopupMenu.PopupMenuItem(Gettext.gettext(name));
|
let item = new PopupMenu.PopupMenuItem(Gettext.gettext(name));
|
||||||
if (bitmask & currentRotation)
|
if (bitmask & currentRotation)
|
||||||
item.setShowDot(true);
|
item.setOrnament(PopupMenu.Ornament.DOT);
|
||||||
item.connect('activate', Lang.bind(this, function(item, event) {
|
item.connect('activate', Lang.bind(this, function(item, event) {
|
||||||
/* ensure config is saved so we get a backup if anything goes wrong */
|
/* ensure config is saved so we get a backup if anything goes wrong */
|
||||||
config.save();
|
config.save();
|
||||||
@@ -137,8 +133,7 @@ Indicator.prototype = {
|
|||||||
}
|
}
|
||||||
return retval;
|
return retval;
|
||||||
}
|
}
|
||||||
}
|
});
|
||||||
|
|
||||||
|
|
||||||
function init(metadata) {
|
function init(metadata) {
|
||||||
Convenience.initTranslations();
|
Convenience.initTranslations();
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
"settings-schema": "@gschemaname@",
|
"settings-schema": "@gschemaname@",
|
||||||
"gettext-domain": "@gettext_domain@",
|
"gettext-domain": "@gettext_domain@",
|
||||||
"name": "Monitor Status Indicator",
|
"name": "Monitor Status Indicator",
|
||||||
"description": "Add a systems status menu for rotating monitors (overrides what is currently provided by gnome-settings-daemon)",
|
"description": "Add a system status menu for rotating monitors.",
|
||||||
"shell-version": [ "@shell_current@" ],
|
"shell-version": [ "@shell_current@" ],
|
||||||
"url": "@url@"
|
"url": "@url@"
|
||||||
}
|
}
|
||||||
|
|||||||
+55
-7
@@ -1,8 +1,34 @@
|
|||||||
/* -*- mode: js; js-basic-offset: 4; indent-tabs-mode: nil -*- */
|
/* -*- mode: js; js-basic-offset: 4; indent-tabs-mode: nil -*- */
|
||||||
|
/*
|
||||||
|
Copyright (c) 2011-2012, Giovanni Campagna <scampa.giovanni@gmail.com>
|
||||||
|
|
||||||
|
Redistribution and use in source and binary forms, with or without
|
||||||
|
modification, are permitted provided that the following conditions are met:
|
||||||
|
* Redistributions of source code must retain the above copyright
|
||||||
|
notice, this list of conditions and the following disclaimer.
|
||||||
|
* Redistributions in binary form must reproduce the above copyright
|
||||||
|
notice, this list of conditions and the following disclaimer in the
|
||||||
|
documentation and/or other materials provided with the distribution.
|
||||||
|
* Neither the name of the GNOME nor the
|
||||||
|
names of its contributors may be used to endorse or promote products
|
||||||
|
derived from this software without specific prior written permission.
|
||||||
|
|
||||||
|
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||||
|
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
|
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
|
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY
|
||||||
|
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
|
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
|
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
|
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
|
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
|
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*/
|
||||||
|
|
||||||
const Gettext = imports.gettext;
|
const Gettext = imports.gettext;
|
||||||
const Gio = imports.gi.Gio;
|
const Gio = imports.gi.Gio;
|
||||||
|
|
||||||
|
const Config = imports.misc.config;
|
||||||
const ExtensionUtils = imports.misc.extensionUtils;
|
const ExtensionUtils = imports.misc.extensionUtils;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -17,8 +43,15 @@ function initTranslations(domain) {
|
|||||||
|
|
||||||
domain = domain || extension.metadata['gettext-domain'];
|
domain = domain || extension.metadata['gettext-domain'];
|
||||||
|
|
||||||
let localeDir = extension.dir.get_child('locale').get_path();
|
// check if this extension was built with "make zip-file", and thus
|
||||||
Gettext.bindtextdomain(domain, localeDir);
|
// has the locale files in a subfolder
|
||||||
|
// otherwise assume that extension has been installed in the
|
||||||
|
// same prefix as gnome-shell
|
||||||
|
let localeDir = extension.dir.get_child('locale');
|
||||||
|
if (localeDir.query_exists(null))
|
||||||
|
Gettext.bindtextdomain(domain, localeDir.get_path());
|
||||||
|
else
|
||||||
|
Gettext.bindtextdomain(domain, Config.LOCALEDIR);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -34,11 +67,26 @@ function getSettings(schema) {
|
|||||||
|
|
||||||
schema = schema || extension.metadata['settings-schema'];
|
schema = schema || extension.metadata['settings-schema'];
|
||||||
|
|
||||||
let schemaDir = extension.dir.get_child('schemas').get_path();
|
const GioSSS = Gio.SettingsSchemaSource;
|
||||||
let schemaSource = Gio.SettingsSchemaSource.new_from_directory(schemaDir,
|
|
||||||
Gio.SettingsSchemaSource.get_default(),
|
// check if this extension was built with "make zip-file", and thus
|
||||||
false);
|
// has the schema files in a subfolder
|
||||||
let schemaObj = schemaSource.lookup(schema, false);
|
// otherwise assume that extension has been installed in the
|
||||||
|
// same prefix as gnome-shell (and therefore schemas are available
|
||||||
|
// in the standard folders)
|
||||||
|
let schemaDir = extension.dir.get_child('schemas');
|
||||||
|
let schemaSource;
|
||||||
|
if (schemaDir.query_exists(null))
|
||||||
|
schemaSource = GioSSS.new_from_directory(schemaDir.get_path(),
|
||||||
|
GioSSS.get_default(),
|
||||||
|
false);
|
||||||
|
else
|
||||||
|
schemaSource = GioSSS.get_default();
|
||||||
|
|
||||||
|
let schemaObj = schemaSource.lookup(schema, true);
|
||||||
|
if (!schemaObj)
|
||||||
|
throw new Error('Schema ' + schema + ' could not be found for extension '
|
||||||
|
+ extension.metadata.uuid + '. Please check your installation.');
|
||||||
|
|
||||||
return new Gio.Settings({ settings_schema: schemaObj });
|
return new Gio.Settings({ settings_schema: schemaObj });
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,15 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
extensionbase=~/.local/share/gnome-shell/extensions
|
|
||||||
|
|
||||||
for i in zip-files/*; do
|
|
||||||
zip_file=`pwd`/$i;
|
|
||||||
uuid=`basename $i | sed -e "s/.shell-extension.zip//"`;
|
|
||||||
if [ -d $extensionbase/$uuid ]; then
|
|
||||||
rm -fR $extensionbase/$uuid;
|
|
||||||
fi
|
|
||||||
mkdir $extensionbase/$uuid;
|
|
||||||
(cd $extensionbase/$uuid;
|
|
||||||
unzip -q $zip_file;
|
|
||||||
);
|
|
||||||
done
|
|
||||||
@@ -1,3 +1,4 @@
|
|||||||
|
ar
|
||||||
ca
|
ca
|
||||||
cs
|
cs
|
||||||
da
|
da
|
||||||
@@ -13,8 +14,10 @@ fr
|
|||||||
gl
|
gl
|
||||||
he
|
he
|
||||||
hu
|
hu
|
||||||
|
id
|
||||||
it
|
it
|
||||||
ja
|
ja
|
||||||
|
ko
|
||||||
lv
|
lv
|
||||||
lt
|
lt
|
||||||
nb
|
nb
|
||||||
@@ -25,6 +28,8 @@ pl
|
|||||||
ru
|
ru
|
||||||
sk
|
sk
|
||||||
sl
|
sl
|
||||||
|
sr
|
||||||
|
sr@latin
|
||||||
sv
|
sv
|
||||||
te
|
te
|
||||||
vi
|
vi
|
||||||
|
|||||||
+17
-5
@@ -1,15 +1,27 @@
|
|||||||
|
data/gnome-classic.desktop.in
|
||||||
|
data/gnome-classic.session.desktop.in.in
|
||||||
|
data/gnome-shell-classic.desktop.in.in
|
||||||
|
extensions/alternate-tab/prefs.js
|
||||||
extensions/alternative-status-menu/extension.js
|
extensions/alternative-status-menu/extension.js
|
||||||
extensions/alternate-tab/extension.js
|
extensions/alternative-status-menu/org.gnome.shell.extensions.alternative-status-menu.gschema.xml.in
|
||||||
extensions/alternate-tab/org.gnome.shell.extensions.alternate-tab.gschema.xml.in
|
extensions/apps-menu/extension.js
|
||||||
extensions/auto-move-windows/extension.js
|
extensions/auto-move-windows/extension.js
|
||||||
extensions/auto-move-windows/org.gnome.shell.extensions.auto-move-windows.gschema.xml.in
|
extensions/auto-move-windows/org.gnome.shell.extensions.auto-move-windows.gschema.xml.in
|
||||||
extensions/dock/extension.js
|
extensions/auto-move-windows/prefs.js
|
||||||
extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in
|
|
||||||
extensions/drive-menu/extension.js
|
extensions/drive-menu/extension.js
|
||||||
extensions/example/extension.js
|
extensions/example/extension.js
|
||||||
extensions/gajim/extension.js
|
extensions/example/org.gnome.shell.extensions.example.gschema.xml.in
|
||||||
|
extensions/example/prefs.js
|
||||||
|
extensions/native-window-placement/extension.js
|
||||||
extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml.in
|
extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml.in
|
||||||
extensions/places-menu/extension.js
|
extensions/places-menu/extension.js
|
||||||
|
extensions/places-menu/placeDisplay.js
|
||||||
|
extensions/systemMonitor/extension.js
|
||||||
|
extensions/user-theme/extension.js
|
||||||
extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml.in
|
extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml.in
|
||||||
|
extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml.in
|
||||||
|
extensions/window-list/prefs.js
|
||||||
extensions/windowsNavigator/extension.js
|
extensions/windowsNavigator/extension.js
|
||||||
|
extensions/workspace-indicator/extension.js
|
||||||
|
extensions/workspace-indicator/prefs.js
|
||||||
extensions/xrandr-indicator/extension.js
|
extensions/xrandr-indicator/extension.js
|
||||||
|
|||||||
@@ -0,0 +1,338 @@
|
|||||||
|
# SOME DESCRIPTIVE TITLE.
|
||||||
|
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
||||||
|
# This file is distributed under the same license as the PACKAGE package.
|
||||||
|
# Khaled Hosny <khaledhosny@eglug.org>, 2012.
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
|
"Report-Msgid-Bugs-To: \n"
|
||||||
|
"POT-Creation-Date: 2012-12-24 12:44+0200\n"
|
||||||
|
"PO-Revision-Date: 2012-12-24 12:46+0200\n"
|
||||||
|
"Last-Translator: Khaled Hosny <khaledhosny@eglug.org>\n"
|
||||||
|
"Language-Team: Arabic <doc@arabeyes.org>\n"
|
||||||
|
"Language: ar\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 "
|
||||||
|
"&& n%100<=10 ? 3 : n%100>=11 ? 4 : 5;\n"
|
||||||
|
"X-Generator: Virtaal 0.7.0\n"
|
||||||
|
|
||||||
|
#: ../data/gnome-classic.desktop.in.h:1
|
||||||
|
#: ../data/gnome-classic.session.desktop.in.in.h:1
|
||||||
|
msgid "GNOME Classic"
|
||||||
|
msgstr "جنوم تقليدية"
|
||||||
|
|
||||||
|
#: ../data/gnome-classic.desktop.in.h:2
|
||||||
|
msgid "This session logs you into GNOME Classic"
|
||||||
|
msgstr "تولجك هذه الجلسة في جنوم التقليدية"
|
||||||
|
|
||||||
|
#: ../data/gnome-shell-classic.desktop.in.in.h:1
|
||||||
|
msgid "GNOME Shell Classic"
|
||||||
|
msgstr "صدفة جنوم تقليدية"
|
||||||
|
|
||||||
|
#: ../data/gnome-shell-classic.desktop.in.in.h:2
|
||||||
|
msgid "Window management and application launching"
|
||||||
|
msgstr "إدارة النوافذ وإطلاق التطبيقات"
|
||||||
|
|
||||||
|
#: ../extensions/alternate-tab/prefs.js:20
|
||||||
|
msgid "Thumbnail only"
|
||||||
|
msgstr "مصغّرة فقط"
|
||||||
|
|
||||||
|
#: ../extensions/alternate-tab/prefs.js:21
|
||||||
|
msgid "Application icon only"
|
||||||
|
msgstr "أيقونة التطبيق فقط"
|
||||||
|
|
||||||
|
#: ../extensions/alternate-tab/prefs.js:22
|
||||||
|
msgid "Thumbnail and application icon"
|
||||||
|
msgstr "مصغّرة وأيقونة التطبيق"
|
||||||
|
|
||||||
|
#: ../extensions/alternate-tab/prefs.js:37
|
||||||
|
msgid "Present windows as"
|
||||||
|
msgstr "كيفية عرض التطبيقات"
|
||||||
|
|
||||||
|
#: ../extensions/alternate-tab/prefs.js:62
|
||||||
|
msgid "Show only windows in the current workspace"
|
||||||
|
msgstr "أظهر نوافذ مساحات العمل الحالية فقط"
|
||||||
|
|
||||||
|
#. add the new entries
|
||||||
|
#: ../extensions/alternative-status-menu/extension.js:144
|
||||||
|
msgid "Suspend"
|
||||||
|
msgstr "علّق"
|
||||||
|
|
||||||
|
#: ../extensions/alternative-status-menu/extension.js:147
|
||||||
|
msgid "Hibernate"
|
||||||
|
msgstr "أسبِت"
|
||||||
|
|
||||||
|
#: ../extensions/alternative-status-menu/extension.js:150
|
||||||
|
msgid "Power Off"
|
||||||
|
msgstr "أطفئ"
|
||||||
|
|
||||||
|
#: ../extensions/alternative-status-menu/org.gnome.shell.extensions.alternative-status-menu.gschema.xml.in.h:1
|
||||||
|
msgid "Enable suspending"
|
||||||
|
msgstr "فعّل التعليق"
|
||||||
|
|
||||||
|
#: ../extensions/alternative-status-menu/org.gnome.shell.extensions.alternative-status-menu.gschema.xml.in.h:2
|
||||||
|
msgid "Control the visibility of the Suspend menu item"
|
||||||
|
msgstr "تحكم في ظهور ”علّق“ في القائمة"
|
||||||
|
|
||||||
|
#: ../extensions/alternative-status-menu/org.gnome.shell.extensions.alternative-status-menu.gschema.xml.in.h:3
|
||||||
|
msgid "Enable hibernating"
|
||||||
|
msgstr "فعّل الإسبات"
|
||||||
|
|
||||||
|
#: ../extensions/alternative-status-menu/org.gnome.shell.extensions.alternative-status-menu.gschema.xml.in.h:4
|
||||||
|
msgid "Control the visibility of the Hibernate menu item"
|
||||||
|
msgstr "تحكم في ظهور ”أسبِت“ في القائمة"
|
||||||
|
|
||||||
|
#: ../extensions/auto-move-windows/org.gnome.shell.extensions.auto-move-windows.gschema.xml.in.h:1
|
||||||
|
msgid "Application and workspace list"
|
||||||
|
msgstr "قائمة التطبيقات ومساحات العمل"
|
||||||
|
|
||||||
|
#: ../extensions/auto-move-windows/org.gnome.shell.extensions.auto-move-windows.gschema.xml.in.h:2
|
||||||
|
msgid ""
|
||||||
|
"A list of strings, each containing an application id (desktop file name), "
|
||||||
|
"followed by a colon and the workspace number"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: ../extensions/auto-move-windows/prefs.js:55
|
||||||
|
msgid "Application"
|
||||||
|
msgstr "التطبيق"
|
||||||
|
|
||||||
|
#: ../extensions/auto-move-windows/prefs.js:64
|
||||||
|
#: ../extensions/auto-move-windows/prefs.js:106
|
||||||
|
msgid "Workspace"
|
||||||
|
msgstr "مساحة العمل"
|
||||||
|
|
||||||
|
#: ../extensions/auto-move-windows/prefs.js:80
|
||||||
|
msgid "Add rule"
|
||||||
|
msgstr "أضِف قاعدة"
|
||||||
|
|
||||||
|
#: ../extensions/auto-move-windows/prefs.js:94
|
||||||
|
msgid "Create new matching rule"
|
||||||
|
msgstr "أنشئ قاعدة تطابق"
|
||||||
|
|
||||||
|
#: ../extensions/auto-move-windows/prefs.js:98
|
||||||
|
msgid "Add"
|
||||||
|
msgstr "أضِف"
|
||||||
|
|
||||||
|
#: ../extensions/drive-menu/extension.js:72
|
||||||
|
#, c-format
|
||||||
|
msgid "Ejecting drive '%s' failed:"
|
||||||
|
msgstr "فشل إخراج '%s':"
|
||||||
|
|
||||||
|
#: ../extensions/drive-menu/extension.js:89
|
||||||
|
msgid "Removable devices"
|
||||||
|
msgstr "الأجهزة المنفصلة"
|
||||||
|
|
||||||
|
#: ../extensions/drive-menu/extension.js:106
|
||||||
|
msgid "Open File"
|
||||||
|
msgstr "افتح الملف"
|
||||||
|
|
||||||
|
#: ../extensions/example/extension.js:17
|
||||||
|
msgid "Hello, world!"
|
||||||
|
msgstr "أهلا، يا عالم!"
|
||||||
|
|
||||||
|
#: ../extensions/example/org.gnome.shell.extensions.example.gschema.xml.in.h:1
|
||||||
|
msgid "Alternative greeting text."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: ../extensions/example/org.gnome.shell.extensions.example.gschema.xml.in.h:2
|
||||||
|
msgid ""
|
||||||
|
"If not empty, it contains the text that will be shown when clicking on the "
|
||||||
|
"panel."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. TRANSLATORS: Example is the name of the extension, should not be
|
||||||
|
#. translated
|
||||||
|
#: ../extensions/example/prefs.js:30
|
||||||
|
msgid ""
|
||||||
|
"Example aims to show how to build well behaved extensions for the Shell and "
|
||||||
|
"as such it has little functionality on its own.\n"
|
||||||
|
"Nevertheless it's possible to customize the greeting message."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: ../extensions/example/prefs.js:36
|
||||||
|
msgid "Message:"
|
||||||
|
msgstr "الرسالة:"
|
||||||
|
|
||||||
|
#: ../extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml.in.h:1
|
||||||
|
msgid "Use more screen for windows"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: ../extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml.in.h:2
|
||||||
|
msgid ""
|
||||||
|
"Try to use more screen for placing window thumbnails by adapting to screen "
|
||||||
|
"aspect ratio, and consolidating them further to reduce the bounding box. "
|
||||||
|
"This setting applies only with the natural placement strategy."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: ../extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml.in.h:3
|
||||||
|
msgid "Place window captions on top"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: ../extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml.in.h:4
|
||||||
|
msgid ""
|
||||||
|
"If true, place window captions on top the respective thumbnail, overriding "
|
||||||
|
"shell default of placing it at the bottom. Changing this setting requires "
|
||||||
|
"restarting the shell to have any effect."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: ../extensions/places-menu/extension.js:46
|
||||||
|
msgid "Places"
|
||||||
|
msgstr "الأماكن"
|
||||||
|
|
||||||
|
#: ../extensions/places-menu/extension.js:47
|
||||||
|
msgid "Devices"
|
||||||
|
msgstr "الأجهزة"
|
||||||
|
|
||||||
|
#: ../extensions/places-menu/extension.js:48
|
||||||
|
msgid "Bookmarks"
|
||||||
|
msgstr "العلامات"
|
||||||
|
|
||||||
|
#: ../extensions/places-menu/extension.js:49
|
||||||
|
msgid "Network"
|
||||||
|
msgstr "الشبكة"
|
||||||
|
|
||||||
|
#: ../extensions/places-menu/placeDisplay.js:48
|
||||||
|
#, c-format
|
||||||
|
msgid "Failed to launch \"%s\""
|
||||||
|
msgstr "فشل تشغيل \"%s\""
|
||||||
|
|
||||||
|
#: ../extensions/places-menu/placeDisplay.js:121
|
||||||
|
msgid "Home"
|
||||||
|
msgstr "المنزل"
|
||||||
|
|
||||||
|
#: ../extensions/places-menu/placeDisplay.js:195
|
||||||
|
msgid "File System"
|
||||||
|
msgstr "نظام الملفات"
|
||||||
|
|
||||||
|
#: ../extensions/places-menu/placeDisplay.js:199
|
||||||
|
msgid "Browse network"
|
||||||
|
msgstr "تصفّح الشبكة"
|
||||||
|
|
||||||
|
#: ../extensions/systemMonitor/extension.js:213
|
||||||
|
msgid "CPU"
|
||||||
|
msgstr "المعالج"
|
||||||
|
|
||||||
|
#: ../extensions/systemMonitor/extension.js:266
|
||||||
|
msgid "Memory"
|
||||||
|
msgstr "الذاكرة"
|
||||||
|
|
||||||
|
#: ../extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml.in.h:1
|
||||||
|
msgid "Theme name"
|
||||||
|
msgstr "اسم السمة"
|
||||||
|
|
||||||
|
#: ../extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml.in.h:2
|
||||||
|
msgid "The name of the theme, to be loaded from ~/.themes/name/gnome-shell"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: ../extensions/workspace-indicator/extension.js:30
|
||||||
|
msgid "Workspace Indicator"
|
||||||
|
msgstr "مؤشر مساحات العمل"
|
||||||
|
|
||||||
|
#: ../extensions/workspace-indicator/prefs.js:141
|
||||||
|
msgid "Workspace names:"
|
||||||
|
msgstr "أسماء مساحات العمل"
|
||||||
|
|
||||||
|
#: ../extensions/workspace-indicator/prefs.js:152
|
||||||
|
msgid "Name"
|
||||||
|
msgstr "الاسم"
|
||||||
|
|
||||||
|
#: ../extensions/workspace-indicator/prefs.js:186
|
||||||
|
#, c-format
|
||||||
|
msgid "Workspace %d"
|
||||||
|
msgstr "مساحة العمل %Id"
|
||||||
|
|
||||||
|
#: ../extensions/xrandr-indicator/extension.js:30
|
||||||
|
msgid "Normal"
|
||||||
|
msgstr "عادي"
|
||||||
|
|
||||||
|
#: ../extensions/xrandr-indicator/extension.js:31
|
||||||
|
msgid "Left"
|
||||||
|
msgstr "يسار"
|
||||||
|
|
||||||
|
#: ../extensions/xrandr-indicator/extension.js:32
|
||||||
|
msgid "Right"
|
||||||
|
msgstr "يمين"
|
||||||
|
|
||||||
|
#: ../extensions/xrandr-indicator/extension.js:33
|
||||||
|
msgid "Upside-down"
|
||||||
|
msgstr "رأسا على عقب"
|
||||||
|
|
||||||
|
#: ../extensions/xrandr-indicator/extension.js:50
|
||||||
|
msgid "Display"
|
||||||
|
msgstr "العرض"
|
||||||
|
|
||||||
|
#: ../extensions/xrandr-indicator/extension.js:80
|
||||||
|
msgid "Display Settings"
|
||||||
|
msgstr "إعدادات العرض"
|
||||||
|
|
||||||
|
#~ msgid "Drag here to add favorites"
|
||||||
|
#~ msgstr "اسحب إلى هنا ليضاف إلى المفضّلة"
|
||||||
|
|
||||||
|
#~ msgid "New Window"
|
||||||
|
#~ msgstr "نافذة جديدة"
|
||||||
|
|
||||||
|
#~ msgid "Quit Application"
|
||||||
|
#~ msgstr "أغلق التطبيق"
|
||||||
|
|
||||||
|
#~ msgid "Remove from Favorites"
|
||||||
|
#~ msgstr "أزِل من المفضّلة"
|
||||||
|
|
||||||
|
#~ msgid "Add to Favorites"
|
||||||
|
#~ msgstr "أضِف إلى المفضّلة"
|
||||||
|
|
||||||
|
#~ msgid "Icon size"
|
||||||
|
#~ msgstr "حجم الأيقونة"
|
||||||
|
|
||||||
|
#~ msgid "Monitor"
|
||||||
|
#~ msgstr "الشاشة"
|
||||||
|
|
||||||
|
#~ msgid "%s is away."
|
||||||
|
#~ msgstr "%s غائب."
|
||||||
|
|
||||||
|
#~ msgid "%s is offline."
|
||||||
|
#~ msgstr "%s غير متّصل."
|
||||||
|
|
||||||
|
#~ msgid "%s is online."
|
||||||
|
#~ msgstr "%s متّصل."
|
||||||
|
|
||||||
|
#~ msgid "%s is busy."
|
||||||
|
#~ msgstr "%s مشغول."
|
||||||
|
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "This mode presents all applications from all workspaces in one selection "
|
||||||
|
#~ "list. Instead of using the application icon of every window, it uses "
|
||||||
|
#~ "small thumbnails resembling the window itself."
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "يعرض هذا النمط كل التطبيقات من كل مساحات العمل في قائمة واحدة، وبدلا من "
|
||||||
|
#~ "استخدام أيقونة التطبيق لكل النوافذ يستخدم صورة مصغّرة للنافذة نفسها."
|
||||||
|
|
||||||
|
#~ msgid "Workspace & Icons"
|
||||||
|
#~ msgstr "مساحة العمل مع أيقونات"
|
||||||
|
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "This mode let's you switch between the applications of your current "
|
||||||
|
#~ "workspace and gives you additionally the option to switch to the last "
|
||||||
|
#~ "used application of your previous workspace. This is always the last "
|
||||||
|
#~ "symbol in the list and is segregated by a separator/vertical line if "
|
||||||
|
#~ "available. \n"
|
||||||
|
#~ "Every window is represented by its application icon."
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "يتيح هذا النمط التنقل بين التطبيقات في مساحة العمل الحالية بالإضافة إلى "
|
||||||
|
#~ "إمكانية الانتقال إلى آخر تطبيق استُخدم في مساحة العمل السابقة، والذي سيكون "
|
||||||
|
#~ "دائما آخر عنصر في القائمة مفصولا بخط رأسي.\n"
|
||||||
|
#~ "تُمثل كل نافذة بأيقونة التطبيق الذي تنتمي إليه."
|
||||||
|
|
||||||
|
#~ msgid "Move current selection to front before closing the popup"
|
||||||
|
#~ msgstr "انقل الاختيار الحالي إلى المقدمة قبل غلق النافذة المنبثقة."
|
||||||
|
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "The Alternate Tab can be used in different modes, that affect the way "
|
||||||
|
#~ "windows are chosen and presented."
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "يمكن استخدام هذا الامتداد في أنماط مختلفة تؤثر على كيفية اختيار وعرض "
|
||||||
|
#~ "النوافذ."
|
||||||
|
|
||||||
|
#~ msgid "Removable Devices"
|
||||||
|
#~ msgstr "الأجهزة المنفصلة"
|
||||||
@@ -2,152 +2,93 @@
|
|||||||
# Copyright (C) 2011 gnome-shell-extensions's COPYRIGHT HOLDER
|
# Copyright (C) 2011 gnome-shell-extensions's COPYRIGHT HOLDER
|
||||||
# This file is distributed under the same license as the gnome-shell-extensions package.
|
# This file is distributed under the same license as the gnome-shell-extensions package.
|
||||||
# Jordi Mas i Hernandez <jmas@softcatala.org>, 2011.
|
# Jordi Mas i Hernandez <jmas@softcatala.org>, 2011.
|
||||||
|
# Gil Forcada <gilforcada@guifi.net>, 2012.
|
||||||
#
|
#
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: gnome-shell-extensions\n"
|
"Project-Id-Version: gnome-shell-extensions\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
|
||||||
"POT-Creation-Date: 2011-08-19 23:28+0200\n"
|
"shell&keywords=I18N+L10N&component=extensions\n"
|
||||||
"PO-Revision-Date: 2011-08-02 07:30+0200\n"
|
"POT-Creation-Date: 2012-09-06 17:51+0000\n"
|
||||||
"Last-Translator: jmas@softcatala.org\n"
|
"PO-Revision-Date: 2012-09-29 00:02+0200\n"
|
||||||
"Language-Team: ca_ES <tradgnome@softcatala.net>\n"
|
"Last-Translator: Gil Forcada <gilforcada@guifi.net>\n"
|
||||||
|
"Language-Team: Catalan <tradgnome@softcatala.org>\n"
|
||||||
"Language: \n"
|
"Language: \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: 8bits\n"
|
||||||
|
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||||
|
|
||||||
#: ../extensions/alternative-status-menu/extension.js:39
|
#: ../extensions/alternate-tab/org.gnome.shell.extensions.alternate-tab.gschema.xml.in.h:1
|
||||||
msgid "Available"
|
msgid "The application icon mode."
|
||||||
msgstr "Disponible"
|
msgstr "El mode d'icona d'aplicació."
|
||||||
|
|
||||||
#: ../extensions/alternative-status-menu/extension.js:44
|
#: ../extensions/alternate-tab/org.gnome.shell.extensions.alternate-tab.gschema.xml.in.h:2
|
||||||
msgid "Busy"
|
msgid ""
|
||||||
msgstr "Ocupat"
|
"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 ""
|
||||||
|
"Configura com es mostren les icones en l'intercanviador. Les possibilitats "
|
||||||
|
"vàlides són «thumbnail-only» (només miniatures, mostra les miniatures de les "
|
||||||
|
"finestres), «app-icon-only» (només icona de l'aplicació, mostra només la "
|
||||||
|
"icona de l'aplicació) o «both» (ambdós, mostra tan la icona de l'aplicació "
|
||||||
|
"com la miniatura). "
|
||||||
|
|
||||||
#: ../extensions/alternative-status-menu/extension.js:52
|
#: ../extensions/alternate-tab/prefs.js:26
|
||||||
msgid "My Account"
|
msgid "Thumbnail only"
|
||||||
msgstr "El meu compte"
|
msgstr "Només miniatures"
|
||||||
|
|
||||||
#: ../extensions/alternative-status-menu/extension.js:56
|
#: ../extensions/alternate-tab/prefs.js:27
|
||||||
msgid "System Settings"
|
msgid "Application icon only"
|
||||||
msgstr "Paràmetres de l'ordinador"
|
msgstr "Només la icona de l'aplicació"
|
||||||
|
|
||||||
#: ../extensions/alternative-status-menu/extension.js:63
|
#: ../extensions/alternate-tab/prefs.js:28
|
||||||
msgid "Lock Screen"
|
msgid "Thumbnail and application icon"
|
||||||
msgstr "Bloca la pantalla"
|
msgstr "Miniatura i icona de l'aplicació"
|
||||||
|
|
||||||
#: ../extensions/alternative-status-menu/extension.js:67
|
#: ../extensions/alternate-tab/prefs.js:43
|
||||||
msgid "Switch User"
|
msgid "Present windows as"
|
||||||
msgstr "Canvia d'usuari"
|
msgstr "Mostra les finestres com a"
|
||||||
|
|
||||||
#: ../extensions/alternative-status-menu/extension.js:72
|
#: ../extensions/alternate-tab/prefs.js:68
|
||||||
msgid "Log Out..."
|
msgid "Show only windows in the current workspace"
|
||||||
msgstr "Surt..."
|
msgstr "Mostra només les icones de l'espai de treball actual"
|
||||||
|
|
||||||
#: ../extensions/alternative-status-menu/extension.js:79
|
#. add the new entries
|
||||||
|
#: ../extensions/alternative-status-menu/extension.js:68
|
||||||
msgid "Suspend"
|
msgid "Suspend"
|
||||||
msgstr "Atura temporalment"
|
msgstr "Atura temporalment"
|
||||||
|
|
||||||
#: ../extensions/alternative-status-menu/extension.js:85
|
#: ../extensions/alternative-status-menu/extension.js:73
|
||||||
msgid "Hibernate"
|
msgid "Hibernate"
|
||||||
msgstr "Hiberna"
|
msgstr "Hiberna"
|
||||||
|
|
||||||
#: ../extensions/alternative-status-menu/extension.js:91
|
#: ../extensions/alternative-status-menu/extension.js:78
|
||||||
msgid "Power Off..."
|
msgid "Power Off"
|
||||||
msgstr "Apaga..."
|
msgstr "Apaga"
|
||||||
|
|
||||||
#: ../extensions/alternate-tab/extension.js:44
|
#: ../extensions/alternative-status-menu/org.gnome.shell.extensions.alternative-status-menu.gschema.xml.in.h:1
|
||||||
msgid ""
|
msgid "Enable suspending"
|
||||||
"This is the first time you use the Alternate Tab extension. \n"
|
msgstr "Habilita l'aturada temporal"
|
||||||
"Please choose your preferred behaviour:\n"
|
|
||||||
"\n"
|
|
||||||
"All & Thumbnails:\n"
|
|
||||||
" This mode presents all applications from all workspaces in one "
|
|
||||||
"selection \n"
|
|
||||||
" list. Instead of using the application icon of every window, it uses "
|
|
||||||
"small \n"
|
|
||||||
" thumbnails resembling the window itself. \n"
|
|
||||||
"\n"
|
|
||||||
"Workspace & Icons:\n"
|
|
||||||
" This mode let's you switch between the applications of your current \n"
|
|
||||||
" workspace and gives you additionally the option to switch to the last "
|
|
||||||
"used \n"
|
|
||||||
" application of your previous workspace. This is always the last symbol "
|
|
||||||
"in \n"
|
|
||||||
" the list and is segregated by a separator/vertical line if available. \n"
|
|
||||||
" Every window is represented by its application icon. \n"
|
|
||||||
"\n"
|
|
||||||
"Native:\n"
|
|
||||||
" This mode is the native GNOME 3 behaviour or in other words: Clicking \n"
|
|
||||||
" native switches the Alternate Tab extension off. \n"
|
|
||||||
msgstr ""
|
|
||||||
"Aquest és el primer cop que utilitzeu l'extensió «Alternate Tab». \n"
|
|
||||||
"Trieu el comportament que preferiu:\n"
|
|
||||||
"\n"
|
|
||||||
"Totes i miniatures:\n"
|
|
||||||
" Aquest mode presenta totes les aplicacions de tots els espais de treball "
|
|
||||||
"com a\n"
|
|
||||||
" una llista de selecció. En comptes de mostrar la icona d'aplicació de "
|
|
||||||
"cada finestra, mostra les \n"
|
|
||||||
" miniatures que representen el contingut de la finestra. \n"
|
|
||||||
"\n"
|
|
||||||
"Espai de treball i icones:\n"
|
|
||||||
" Aquest mode us permet canviar entre aplicacions de l'espai de treball "
|
|
||||||
"actual \n"
|
|
||||||
" i us dóna la possibilitat de canviar a l'última aplicació usada de "
|
|
||||||
"l'espai de \n"
|
|
||||||
" treball anterior. Aquest és sempre el darrer símbol a la llista i està "
|
|
||||||
"separat \n"
|
|
||||||
" per una línia vertical/separador quan està disponible. \n"
|
|
||||||
" Cada finestra es representa per la seva icona d'aplicació. \n"
|
|
||||||
"\n"
|
|
||||||
"Nadiu:\n"
|
|
||||||
" Aquest és el mode de comportament nadiu al GNOME 3 o amb altres "
|
|
||||||
"paraules: fent \n"
|
|
||||||
" clic inhabilita l'extensió «Alternate Tab». \n"
|
|
||||||
|
|
||||||
#: ../extensions/alternate-tab/extension.js:269
|
#: ../extensions/alternative-status-menu/org.gnome.shell.extensions.alternative-status-menu.gschema.xml.in.h:2
|
||||||
msgid "Alt Tab Behaviour"
|
msgid "Control the visibility of the Suspend menu item"
|
||||||
msgstr "Comportament de l'«Alternate Tab»"
|
msgstr "Permet controlar si es mostra l'element de menú «Atura temporalment»"
|
||||||
|
|
||||||
#: ../extensions/alternate-tab/extension.js:285
|
#: ../extensions/alternative-status-menu/org.gnome.shell.extensions.alternative-status-menu.gschema.xml.in.h:3
|
||||||
msgid "All & Thumbnails"
|
msgid "Enable hibernating"
|
||||||
msgstr "Totes i miniatures"
|
msgstr "Habilita la hibernació"
|
||||||
|
|
||||||
#: ../extensions/alternate-tab/extension.js:292
|
#: ../extensions/alternative-status-menu/org.gnome.shell.extensions.alternative-status-menu.gschema.xml.in.h:4
|
||||||
msgid "Workspace & Icons"
|
msgid "Control the visibility of the Hibernate menu item"
|
||||||
msgstr "Espai de treball i icones"
|
msgstr "Permet controlar si es mostra l'element de menú «Hiberna»"
|
||||||
|
|
||||||
#: ../extensions/alternate-tab/extension.js:299
|
|
||||||
msgid "Native"
|
|
||||||
msgstr "Nadiu"
|
|
||||||
|
|
||||||
#: ../extensions/alternate-tab/extension.js:306
|
|
||||||
msgid "Cancel"
|
|
||||||
msgstr "Cancel·la"
|
|
||||||
|
|
||||||
#: ../extensions/alternate-tab/org.gnome.shell.extensions.alternate-tab.gschema.xml.in.h:1
|
|
||||||
msgid "Ask the user for a default behaviour if true."
|
|
||||||
msgstr "Si és «true» (cert) pregunta a l'usuari pel comportament per defecte."
|
|
||||||
|
|
||||||
#: ../extensions/alternate-tab/org.gnome.shell.extensions.alternate-tab.gschema.xml.in.h:2
|
|
||||||
msgid "Indicates if Alternate Tab is newly installed"
|
|
||||||
msgstr "Indica si s'acaba d'instal·lar l'«Alternate Tab»"
|
|
||||||
|
|
||||||
#: ../extensions/alternate-tab/org.gnome.shell.extensions.alternate-tab.gschema.xml.in.h:3
|
|
||||||
msgid ""
|
|
||||||
"Sets the Alt-Tab behaviour. Possible values are: native, all_thumbnails and "
|
|
||||||
"workspace_icons."
|
|
||||||
msgstr ""
|
|
||||||
"Defineix el comportament de l'«Alternate Tab». Els valors possibles són: "
|
|
||||||
"«native» (nadiu), «all_thumbnails» (totes i miniatures) i "
|
|
||||||
"«workspace_icons» (espai de treball i icones)."
|
|
||||||
|
|
||||||
#: ../extensions/alternate-tab/org.gnome.shell.extensions.alternate-tab.gschema.xml.in.h:4
|
|
||||||
msgid "The alt tab behaviour."
|
|
||||||
msgstr "Comportament de l'«Alternate Tab»"
|
|
||||||
|
|
||||||
#: ../extensions/auto-move-windows/org.gnome.shell.extensions.auto-move-windows.gschema.xml.in.h:1
|
#: ../extensions/auto-move-windows/org.gnome.shell.extensions.auto-move-windows.gschema.xml.in.h:1
|
||||||
|
msgid "Application and workspace list"
|
||||||
|
msgstr "Aplicació i llista d'espais de treball"
|
||||||
|
|
||||||
|
#: ../extensions/auto-move-windows/org.gnome.shell.extensions.auto-move-windows.gschema.xml.in.h:2
|
||||||
msgid ""
|
msgid ""
|
||||||
"A list of strings, each containing an application id (desktop file name), "
|
"A list of strings, each containing an application id (desktop file name), "
|
||||||
"followed by a colon and the workspace number"
|
"followed by a colon and the workspace number"
|
||||||
@@ -156,62 +97,52 @@ msgstr ""
|
|||||||
"d'aplicació (nom del fitxer de l'escriptori), seguit de dos punts i el "
|
"d'aplicació (nom del fitxer de l'escriptori), seguit de dos punts i el "
|
||||||
"número de l'espai de treball"
|
"número de l'espai de treball"
|
||||||
|
|
||||||
#: ../extensions/auto-move-windows/org.gnome.shell.extensions.auto-move-windows.gschema.xml.in.h:2
|
#: ../extensions/auto-move-windows/prefs.js:55
|
||||||
msgid "Application and workspace list"
|
msgid "Application"
|
||||||
msgstr "Aplicació i llista d'espais de treball"
|
msgstr "Aplicació"
|
||||||
|
|
||||||
#: ../extensions/dock/extension.js:437
|
#: ../extensions/auto-move-windows/prefs.js:64
|
||||||
|
#: ../extensions/auto-move-windows/prefs.js:106
|
||||||
|
msgid "Workspace"
|
||||||
|
msgstr "Espai de treball"
|
||||||
|
|
||||||
|
#: ../extensions/auto-move-windows/prefs.js:80
|
||||||
|
msgid "Add rule"
|
||||||
|
msgstr "Afegeix una regla"
|
||||||
|
|
||||||
|
#: ../extensions/auto-move-windows/prefs.js:94
|
||||||
|
msgid "Create new matching rule"
|
||||||
|
msgstr "Crea una regla de coincidència nova"
|
||||||
|
|
||||||
|
#: ../extensions/auto-move-windows/prefs.js:98
|
||||||
|
msgid "Add"
|
||||||
|
msgstr "Afegeix"
|
||||||
|
|
||||||
|
#: ../extensions/dock/extension.js:600
|
||||||
msgid "Drag here to add favorites"
|
msgid "Drag here to add favorites"
|
||||||
msgstr "Arrossegueu aquí per afegir als preferits"
|
msgstr "Arrossegueu aquí per afegir als preferits"
|
||||||
|
|
||||||
#: ../extensions/dock/extension.js:771
|
#: ../extensions/dock/extension.js:926
|
||||||
msgid "New Window"
|
msgid "New Window"
|
||||||
msgstr "Finestra nova"
|
msgstr "Finestra nova"
|
||||||
|
|
||||||
#: ../extensions/dock/extension.js:773
|
#: ../extensions/dock/extension.js:928
|
||||||
msgid "Quit Application"
|
msgid "Quit Application"
|
||||||
msgstr "Surt de l'aplicació"
|
msgstr "Surt de l'aplicació"
|
||||||
|
|
||||||
#: ../extensions/dock/extension.js:778
|
#: ../extensions/dock/extension.js:933
|
||||||
msgid "Remove from Favorites"
|
msgid "Remove from Favorites"
|
||||||
msgstr "Suprimeix dels preferits"
|
msgstr "Suprimeix dels preferits"
|
||||||
|
|
||||||
#: ../extensions/dock/extension.js:779
|
#: ../extensions/dock/extension.js:934
|
||||||
msgid "Add to Favorites"
|
msgid "Add to Favorites"
|
||||||
msgstr "Afegeix als preferits"
|
msgstr "Afegeix als preferits"
|
||||||
|
|
||||||
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:1
|
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:1
|
||||||
msgid "Autohide duration"
|
|
||||||
msgstr "Duració de l'ocultació automàtica"
|
|
||||||
|
|
||||||
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:2
|
|
||||||
msgid "Autohide effect"
|
|
||||||
msgstr "Efecte de l'ocultació automàtica"
|
|
||||||
|
|
||||||
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:3
|
|
||||||
msgid "Enable/disable autohide"
|
|
||||||
msgstr "Habilita/Inhabilita l'ocultació automàtica"
|
|
||||||
|
|
||||||
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:4
|
|
||||||
msgid "Icon size"
|
|
||||||
msgstr "Mida de la icona"
|
|
||||||
|
|
||||||
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:5
|
|
||||||
msgid "Position of the dock"
|
msgid "Position of the dock"
|
||||||
msgstr "Posició de l'acoblador"
|
msgstr "Posició de l'acoblador"
|
||||||
|
|
||||||
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:6
|
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:2
|
||||||
msgid "Sets icon size of the dock."
|
|
||||||
msgstr "Defineix la mida de la icona per l'acoblador."
|
|
||||||
|
|
||||||
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:7
|
|
||||||
msgid ""
|
|
||||||
"Sets the effect of the hide dock. Allowed values are 'resize' or 'rescale'"
|
|
||||||
msgstr ""
|
|
||||||
"Defineix l'efecte de l'acoblador amagat. Els valors permesos són "
|
|
||||||
"«resize» (amplia) o «rescale» (escala)"
|
|
||||||
|
|
||||||
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:8
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"Sets the position of the dock in the screen. Allowed values are 'right' or "
|
"Sets the position of the dock in the screen. Allowed values are 'right' or "
|
||||||
"'left'"
|
"'left'"
|
||||||
@@ -219,61 +150,115 @@ msgstr ""
|
|||||||
"Defineix la posició de l'acoblador a la pantalla. Els valors permesos són "
|
"Defineix la posició de l'acoblador a la pantalla. Els valors permesos són "
|
||||||
"«right» (dreta) o «left» (esquerra)"
|
"«right» (dreta) o «left» (esquerra)"
|
||||||
|
|
||||||
|
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:3
|
||||||
|
msgid "Icon size"
|
||||||
|
msgstr "Mida de la icona"
|
||||||
|
|
||||||
|
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:4
|
||||||
|
msgid "Sets icon size of the dock."
|
||||||
|
msgstr "Defineix la mida de la icona per l'acoblador."
|
||||||
|
|
||||||
|
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:5
|
||||||
|
msgid "Enable/disable autohide"
|
||||||
|
msgstr "Habilita/inhabilita l'ocultació automàtica"
|
||||||
|
|
||||||
|
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:6
|
||||||
|
msgid "Autohide effect"
|
||||||
|
msgstr "Efecte de l'ocultació automàtica"
|
||||||
|
|
||||||
|
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:7
|
||||||
|
msgid ""
|
||||||
|
"Sets the effect of the hide dock. Allowed values are 'resize', 'rescale' and "
|
||||||
|
"'move'"
|
||||||
|
msgstr ""
|
||||||
|
"Defineix l'efecte de l'acoblador ocult. Els valors permesos són "
|
||||||
|
"«resize» (amplia), «rescale» (escala) i «move» (mou)"
|
||||||
|
|
||||||
|
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:8
|
||||||
|
msgid "Autohide duration"
|
||||||
|
msgstr "Duració de l'ocultació automàtica"
|
||||||
|
|
||||||
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:9
|
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:9
|
||||||
msgid "Sets the time duration of the autohide effect."
|
msgid "Sets the time duration of the autohide effect."
|
||||||
msgstr "Defineix la durada en temps de l'efecte d'ocultació automàtica."
|
msgstr "Defineix la durada en temps de l'efecte d'ocultació automàtica."
|
||||||
|
|
||||||
#: ../extensions/example/extension.js:11
|
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:10
|
||||||
|
msgid "Monitor"
|
||||||
|
msgstr "Pantalla"
|
||||||
|
|
||||||
|
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:11
|
||||||
|
msgid ""
|
||||||
|
"Sets monitor to display dock in. The default value (-1) is the primary "
|
||||||
|
"monitor."
|
||||||
|
msgstr ""
|
||||||
|
"Estableix la pantalla a on es mostra l'acoblador. El valor per defecte és "
|
||||||
|
"«-1», la pantalla principal."
|
||||||
|
|
||||||
|
#: ../extensions/drive-menu/extension.js:56
|
||||||
|
msgid "Removable devices"
|
||||||
|
msgstr "Dispositius extraïbles"
|
||||||
|
|
||||||
|
#: ../extensions/drive-menu/extension.js:67
|
||||||
|
msgid "Open file manager"
|
||||||
|
msgstr "Obre del gestor de fitxers"
|
||||||
|
|
||||||
|
#: ../extensions/example/extension.js:17
|
||||||
msgid "Hello, world!"
|
msgid "Hello, world!"
|
||||||
msgstr "Hola, món!"
|
msgstr "Hola, món!"
|
||||||
|
|
||||||
#: ../extensions/gajim/extension.js:219
|
#: ../extensions/example/org.gnome.shell.extensions.example.gschema.xml.in.h:1
|
||||||
|
msgid "Alternative greeting text."
|
||||||
|
msgstr "Text de rebuda alternatiu."
|
||||||
|
|
||||||
|
#: ../extensions/example/org.gnome.shell.extensions.example.gschema.xml.in.h:2
|
||||||
|
msgid ""
|
||||||
|
"If not empty, it contains the text that will be shown when clicking on the "
|
||||||
|
"panel."
|
||||||
|
msgstr ""
|
||||||
|
"Si no és buit, conté el text que es mostrarà quan es faci clic en el quadre."
|
||||||
|
|
||||||
|
#. TRANSLATORS: Example is the name of the extension, should not be
|
||||||
|
#. translated
|
||||||
|
#: ../extensions/example/prefs.js:30
|
||||||
|
msgid ""
|
||||||
|
"Example aims to show how to build well behaved extensions for the Shell and "
|
||||||
|
"as such it has little functionality on its own.\n"
|
||||||
|
"Nevertheless it's possible to customize the greeting message."
|
||||||
|
msgstr ""
|
||||||
|
"L'«Example» està pensat com una extensió del GNOME Shell que demostri la "
|
||||||
|
"manera correcta de crear extensions. Com a extensió pròpiament dita no fa "
|
||||||
|
"gairebé res.\n"
|
||||||
|
"Tot i així permet personalitzar el missatge del rebedor."
|
||||||
|
|
||||||
|
#: ../extensions/example/prefs.js:36
|
||||||
|
msgid "Message:"
|
||||||
|
msgstr "Missatge:"
|
||||||
|
|
||||||
|
#: ../extensions/gajim/extension.js:226
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is away."
|
msgid "%s is away."
|
||||||
msgstr "%s està absent."
|
msgstr "%s està absent."
|
||||||
|
|
||||||
#: ../extensions/gajim/extension.js:222
|
#: ../extensions/gajim/extension.js:229
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is offline."
|
msgid "%s is offline."
|
||||||
msgstr "%s està fora de línia."
|
msgstr "%s està fora de línia."
|
||||||
|
|
||||||
#: ../extensions/gajim/extension.js:225
|
#: ../extensions/gajim/extension.js:232
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is online."
|
msgid "%s is online."
|
||||||
msgstr "%s està en línia."
|
msgstr "%s està en línia."
|
||||||
|
|
||||||
#: ../extensions/gajim/extension.js:228
|
#: ../extensions/gajim/extension.js:235
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is busy."
|
msgid "%s is busy."
|
||||||
msgstr "%s està ocupat."
|
msgstr "%s està ocupat."
|
||||||
|
|
||||||
#: ../extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml.in.h:1
|
#: ../extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml.in.h:1
|
||||||
msgid ""
|
msgid "Use more screen for windows"
|
||||||
"If true, place window captions on top the respective thumbnail, overriding "
|
msgstr "Utilitza més pantalla per les finestres"
|
||||||
"shell default of placing it at the bottom. Changing this setting requires "
|
|
||||||
"restarting the shell to have any effect."
|
|
||||||
msgstr ""
|
|
||||||
"Si és «true» (cert), posiciona el títol de la finestra damunt de la "
|
|
||||||
"miniatura corresponent, substituint el comportament per defecte del Shell de "
|
|
||||||
"posicionar-lo a baix. Cal reiniciar el Shell per tal de que aquest canvi "
|
|
||||||
"tingui efecte."
|
|
||||||
|
|
||||||
#: ../extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml.in.h:2
|
#: ../extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml.in.h:2
|
||||||
msgid "Place window captions on top"
|
|
||||||
msgstr "Posiciona els títols de les finestres al damunt"
|
|
||||||
|
|
||||||
#: ../extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml.in.h:3
|
|
||||||
msgid ""
|
|
||||||
"The algorithm used to layout thumbnails in the overview. 'grid' to use the "
|
|
||||||
"default grid based algorithm, 'natural' to use another one that reflects "
|
|
||||||
"more the position and size of the actual window"
|
|
||||||
msgstr ""
|
|
||||||
"L'algoritme per posicionar les miniatures en la perspectiva general. Useu "
|
|
||||||
"«grid» (graella) per a utilitzar l'algoritme per defecte basat en disposició "
|
|
||||||
"en graella, o «natural» (natural) per a usar un algoritme que reflexa millor "
|
|
||||||
"la posició i mida de la finestra actual."
|
|
||||||
|
|
||||||
#: ../extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml.in.h:4
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"Try to use more screen for placing window thumbnails by adapting to screen "
|
"Try to use more screen for placing window thumbnails by adapting to screen "
|
||||||
"aspect ratio, and consolidating them further to reduce the bounding box. "
|
"aspect ratio, and consolidating them further to reduce the bounding box. "
|
||||||
@@ -285,38 +270,258 @@ msgstr ""
|
|||||||
"configuració només s'aplica a l'estratègia de posicionament de finestres "
|
"configuració només s'aplica a l'estratègia de posicionament de finestres "
|
||||||
"natural."
|
"natural."
|
||||||
|
|
||||||
#: ../extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml.in.h:5
|
#: ../extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml.in.h:3
|
||||||
msgid "Use more screen for windows"
|
msgid "Place window captions on top"
|
||||||
msgstr "Utilitza més pantalla per les finestres"
|
msgstr "Posiciona els títols de les finestres al damunt"
|
||||||
|
|
||||||
#: ../extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml.in.h:6
|
#: ../extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml.in.h:4
|
||||||
msgid "Window placement strategy"
|
msgid ""
|
||||||
msgstr "Estratègia de posicionament de la finestra"
|
"If true, place window captions on top the respective thumbnail, overriding "
|
||||||
|
"shell default of placing it at the bottom. Changing this setting requires "
|
||||||
|
"restarting the shell to have any effect."
|
||||||
|
msgstr ""
|
||||||
|
"Si és «true» (cert), posiciona el títol de la finestra damunt de la "
|
||||||
|
"miniatura corresponent, substituint el comportament per defecte del Shell de "
|
||||||
|
"posicionar-lo a baix. Cal reiniciar el Shell per tal de que aquest canvi "
|
||||||
|
"tingui efecte."
|
||||||
|
|
||||||
|
#: ../extensions/places-menu/extension.js:46
|
||||||
|
msgid "Places"
|
||||||
|
msgstr "Llocs"
|
||||||
|
|
||||||
|
#: ../extensions/places-menu/extension.js:47
|
||||||
|
msgid "Devices"
|
||||||
|
msgstr "Dispositius"
|
||||||
|
|
||||||
|
#: ../extensions/places-menu/extension.js:48
|
||||||
|
msgid "Bookmarks"
|
||||||
|
msgstr "Adreces d'interès"
|
||||||
|
|
||||||
|
#: ../extensions/places-menu/extension.js:49
|
||||||
|
msgid "Network"
|
||||||
|
msgstr "Xarxa"
|
||||||
|
|
||||||
|
#: ../extensions/places-menu/placeDisplay.js:48
|
||||||
|
#, c-format
|
||||||
|
msgid "Failed to launch \"%s\""
|
||||||
|
msgstr "No s'ha pogut iniciar «%s»"
|
||||||
|
|
||||||
|
#: ../extensions/places-menu/placeDisplay.js:121
|
||||||
|
msgid "Home"
|
||||||
|
msgstr "Inici"
|
||||||
|
|
||||||
|
#: ../extensions/places-menu/placeDisplay.js:184
|
||||||
|
msgid "File System"
|
||||||
|
msgstr "Sistema de fitxers"
|
||||||
|
|
||||||
|
#: ../extensions/places-menu/placeDisplay.js:188
|
||||||
|
msgid "Browse network"
|
||||||
|
msgstr "Navega per la xarxa"
|
||||||
|
|
||||||
|
#: ../extensions/systemMonitor/extension.js:213
|
||||||
|
msgid "CPU"
|
||||||
|
msgstr "CPU"
|
||||||
|
|
||||||
|
#: ../extensions/systemMonitor/extension.js:266
|
||||||
|
msgid "Memory"
|
||||||
|
msgstr "Memòria"
|
||||||
|
|
||||||
#: ../extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml.in.h:1
|
#: ../extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml.in.h:1
|
||||||
msgid "The name of the theme, to be loaded from ~/.themes/name/gnome-shell"
|
|
||||||
msgstr "El nom del tema que es carregarà des de ~/.themes/name/gnome-shell"
|
|
||||||
|
|
||||||
#: ../extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml.in.h:2
|
|
||||||
msgid "Theme name"
|
msgid "Theme name"
|
||||||
msgstr "Nom del tema"
|
msgstr "Nom del tema"
|
||||||
|
|
||||||
#: ../extensions/xrandr-indicator/extension.js:26
|
#: ../extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml.in.h:2
|
||||||
|
msgid "The name of the theme, to be loaded from ~/.themes/name/gnome-shell"
|
||||||
|
msgstr "El nom del tema que es carregarà des de ~/.themes/name/gnome-shell"
|
||||||
|
|
||||||
|
#: ../extensions/workspace-indicator/extension.js:30
|
||||||
|
msgid "Workspace Indicator"
|
||||||
|
msgstr "Indicador de l'espai de treball"
|
||||||
|
|
||||||
|
#: ../extensions/workspace-indicator/prefs.js:141
|
||||||
|
msgid "Workspace names:"
|
||||||
|
msgstr "Noms dels espais de treball:"
|
||||||
|
|
||||||
|
#: ../extensions/workspace-indicator/prefs.js:152
|
||||||
|
msgid "Name"
|
||||||
|
msgstr "Nom"
|
||||||
|
|
||||||
|
#: ../extensions/workspace-indicator/prefs.js:186
|
||||||
|
#, c-format
|
||||||
|
msgid "Workspace %d"
|
||||||
|
msgstr "Espai de treball %d"
|
||||||
|
|
||||||
|
#: ../extensions/xrandr-indicator/extension.js:30
|
||||||
msgid "Normal"
|
msgid "Normal"
|
||||||
msgstr "Normal"
|
msgstr "Normal"
|
||||||
|
|
||||||
#: ../extensions/xrandr-indicator/extension.js:27
|
#: ../extensions/xrandr-indicator/extension.js:31
|
||||||
msgid "Left"
|
msgid "Left"
|
||||||
msgstr "Esquerra"
|
msgstr "Esquerra"
|
||||||
|
|
||||||
#: ../extensions/xrandr-indicator/extension.js:28
|
#: ../extensions/xrandr-indicator/extension.js:32
|
||||||
msgid "Right"
|
msgid "Right"
|
||||||
msgstr "Dreta"
|
msgstr "Dreta"
|
||||||
|
|
||||||
#: ../extensions/xrandr-indicator/extension.js:29
|
#: ../extensions/xrandr-indicator/extension.js:33
|
||||||
msgid "Upside-down"
|
msgid "Upside-down"
|
||||||
msgstr "Capgira"
|
msgstr "Capgira"
|
||||||
|
|
||||||
#: ../extensions/xrandr-indicator/extension.js:78
|
#: ../extensions/xrandr-indicator/extension.js:50
|
||||||
msgid "Configure display settings..."
|
msgid "Display"
|
||||||
msgstr "Configura els paràmetres de visualització..."
|
msgstr "Pantalla"
|
||||||
|
|
||||||
|
#: ../extensions/xrandr-indicator/extension.js:80
|
||||||
|
msgid "Display Settings"
|
||||||
|
msgstr "Paràmetres de la pantalla"
|
||||||
|
|
||||||
|
#~ msgid "The alt tab behaviour."
|
||||||
|
#~ msgstr "Comportament de l'«Alternate Tab»."
|
||||||
|
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "Sets the Alt-Tab behaviour. Possible values are: all_thumbnails and "
|
||||||
|
#~ "workspace_icons. See the configuration dialogs for details."
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "Defineix el comportament de l'«Alternate Tab». Els valors possibles són: "
|
||||||
|
#~ "«all_thumbnails» (totes i les miniatures) i «workspace_icons» (espais de "
|
||||||
|
#~ "treball i icones). Vegeu els diàlegs de configuració per saber-ne més."
|
||||||
|
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "This mode presents all applications from all workspaces in one selection "
|
||||||
|
#~ "list. Instead of using the application icon of every window, it uses "
|
||||||
|
#~ "small thumbnails resembling the window itself."
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "Aquest mode mostra totes les aplicacions de tots els espais de treball en "
|
||||||
|
#~ "una sola llista de selecció. En comptes de fer servir la icona de "
|
||||||
|
#~ "l'aplicació per cada finestra, fa servir miniatures de les mateixes "
|
||||||
|
#~ "finestres de les aplicacions."
|
||||||
|
|
||||||
|
#~ msgid "Workspace & Icons"
|
||||||
|
#~ msgstr "Espai de treball i icones"
|
||||||
|
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "This mode let's you switch between the applications of your current "
|
||||||
|
#~ "workspace and gives you additionally the option to switch to the last "
|
||||||
|
#~ "used application of your previous workspace. This is always the last "
|
||||||
|
#~ "symbol in the list and is segregated by a separator/vertical line if "
|
||||||
|
#~ "available. \n"
|
||||||
|
#~ "Every window is represented by its application icon."
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "Aquest mode us permet canviar entre les aplicacions de l'espai de treball "
|
||||||
|
#~ "actual i us dóna la possibilitat de canviar a l'última aplicació "
|
||||||
|
#~ "utilitzada de l'espai de treball anterior. Es mostra, en cas d'estar "
|
||||||
|
#~ "disponible, sempre com a l'última icona de la llista, separada de la "
|
||||||
|
#~ "resta amb un separador vertical.\n"
|
||||||
|
#~ "Cada finestra està representada per la seva icona d'aplicació."
|
||||||
|
|
||||||
|
#~ msgid "Move current selection to front before closing the popup"
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "Mou la selecció actual al primer pla abans de tancar el diàleg emergent"
|
||||||
|
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "The Alternate Tab can be used in different modes, that affect the way "
|
||||||
|
#~ "windows are chosen and presented."
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "L'«Alternate Tab» es pot utilitzar de diferents maneres que canvien la "
|
||||||
|
#~ "forma en que es seleccionen i es mostren les finestres."
|
||||||
|
|
||||||
|
#~ msgid "Removable Devices"
|
||||||
|
#~ msgstr "Dispositius extraïbles"
|
||||||
|
|
||||||
|
#~ msgid "Configure display settings..."
|
||||||
|
#~ msgstr "Configura els paràmetres de visualització..."
|
||||||
|
|
||||||
|
#~ msgid "Available"
|
||||||
|
#~ msgstr "Disponible"
|
||||||
|
|
||||||
|
#~ msgid "Busy"
|
||||||
|
#~ msgstr "Ocupat"
|
||||||
|
|
||||||
|
#~ msgid "My Account"
|
||||||
|
#~ msgstr "El meu compte"
|
||||||
|
|
||||||
|
#~ msgid "Lock Screen"
|
||||||
|
#~ msgstr "Bloca la pantalla"
|
||||||
|
|
||||||
|
#~ msgid "Switch User"
|
||||||
|
#~ msgstr "Canvia d'usuari"
|
||||||
|
|
||||||
|
#~ msgid "Log Out..."
|
||||||
|
#~ msgstr "Surt..."
|
||||||
|
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "This is the first time you use the Alternate Tab extension. \n"
|
||||||
|
#~ "Please choose your preferred behaviour:\n"
|
||||||
|
#~ "\n"
|
||||||
|
#~ "All & Thumbnails:\n"
|
||||||
|
#~ " This mode presents all applications from all workspaces in one "
|
||||||
|
#~ "selection \n"
|
||||||
|
#~ " list. Instead of using the application icon of every window, it uses "
|
||||||
|
#~ "small \n"
|
||||||
|
#~ " thumbnails resembling the window itself. \n"
|
||||||
|
#~ "\n"
|
||||||
|
#~ "Workspace & Icons:\n"
|
||||||
|
#~ " This mode let's you switch between the applications of your current \n"
|
||||||
|
#~ " workspace and gives you additionally the option to switch to the last "
|
||||||
|
#~ "used \n"
|
||||||
|
#~ " application of your previous workspace. This is always the last "
|
||||||
|
#~ "symbol in \n"
|
||||||
|
#~ " the list and is segregated by a separator/vertical line if "
|
||||||
|
#~ "available. \n"
|
||||||
|
#~ " Every window is represented by its application icon. \n"
|
||||||
|
#~ "\n"
|
||||||
|
#~ "Native:\n"
|
||||||
|
#~ " This mode is the native GNOME 3 behaviour or in other words: "
|
||||||
|
#~ "Clicking \n"
|
||||||
|
#~ " native switches the Alternate Tab extension off. \n"
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "Aquest és el primer cop que utilitzeu l'extensió «Alternate Tab». \n"
|
||||||
|
#~ "Trieu el comportament que preferiu:\n"
|
||||||
|
#~ "\n"
|
||||||
|
#~ "Totes i miniatures:\n"
|
||||||
|
#~ " Aquest mode presenta totes les aplicacions de tots els espais de "
|
||||||
|
#~ "treball com a\n"
|
||||||
|
#~ " una llista de selecció. En comptes de mostrar la icona d'aplicació de "
|
||||||
|
#~ "cada finestra, mostra les \n"
|
||||||
|
#~ " miniatures que representen el contingut de la finestra. \n"
|
||||||
|
#~ "\n"
|
||||||
|
#~ "Espai de treball i icones:\n"
|
||||||
|
#~ " Aquest mode us permet canviar entre aplicacions de l'espai de treball "
|
||||||
|
#~ "actual \n"
|
||||||
|
#~ " i us dóna la possibilitat de canviar a l'última aplicació usada de "
|
||||||
|
#~ "l'espai de \n"
|
||||||
|
#~ " treball anterior. Aquest és sempre el darrer símbol a la llista i "
|
||||||
|
#~ "està separat \n"
|
||||||
|
#~ " per una línia vertical/separador quan està disponible. \n"
|
||||||
|
#~ " Cada finestra es representa per la seva icona d'aplicació. \n"
|
||||||
|
#~ "\n"
|
||||||
|
#~ "Nadiu:\n"
|
||||||
|
#~ " Aquest és el mode de comportament nadiu al GNOME 3 o amb altres "
|
||||||
|
#~ "paraules: fent \n"
|
||||||
|
#~ " clic inhabilita l'extensió «Alternate Tab». \n"
|
||||||
|
|
||||||
|
#~ msgid "Alt Tab Behaviour"
|
||||||
|
#~ msgstr "Comportament de l'«Alternate Tab»"
|
||||||
|
|
||||||
|
#~ msgid "Cancel"
|
||||||
|
#~ msgstr "Cancel·la"
|
||||||
|
|
||||||
|
#~ msgid "Ask the user for a default behaviour if true."
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "Si és «true» (cert) pregunta a l'usuari pel comportament per defecte."
|
||||||
|
|
||||||
|
#~ msgid "Indicates if Alternate Tab is newly installed"
|
||||||
|
#~ msgstr "Indica si s'acaba d'instal·lar l'«Alternate Tab»"
|
||||||
|
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "The algorithm used to layout thumbnails in the overview. 'grid' to use "
|
||||||
|
#~ "the default grid based algorithm, 'natural' to use another one that "
|
||||||
|
#~ "reflects more the position and size of the actual window"
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "L'algoritme per posicionar les miniatures en la perspectiva general. Useu "
|
||||||
|
#~ "«grid» (graella) per a utilitzar l'algoritme per defecte basat en "
|
||||||
|
#~ "disposició en graella, o «natural» (natural) per a usar un algoritme que "
|
||||||
|
#~ "reflexa millor la posició i mida de la finestra actual."
|
||||||
|
|
||||||
|
#~ msgid "Window placement strategy"
|
||||||
|
#~ msgstr "Estratègia de posicionament de la finestra"
|
||||||
|
|||||||
@@ -2,122 +2,107 @@
|
|||||||
# Copyright (C) 2011 gnome-shell-extensions's COPYRIGHT HOLDER
|
# Copyright (C) 2011 gnome-shell-extensions's COPYRIGHT HOLDER
|
||||||
# This file is distributed under the same license as the gnome-shell-extensions package.
|
# This file is distributed under the same license as the gnome-shell-extensions package.
|
||||||
#
|
#
|
||||||
# Marek Černocký <marek@manet.cz>, 2011, 2012.
|
# Marek Černocký <marek@manet.cz>, 2011, 2012, 2013.
|
||||||
#
|
#
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: gnome-shell-extensions master\n"
|
"Project-Id-Version: gnome-shell-extensions 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=extensions\n"
|
"shell&keywords=I18N+L10N&component=extensions\n"
|
||||||
"POT-Creation-Date: 2012-01-07 10:46+0000\n"
|
"POT-Creation-Date: 2013-04-19 19:12+0000\n"
|
||||||
"PO-Revision-Date: 2012-01-16 10:51+0100\n"
|
"PO-Revision-Date: 2013-04-20 15:34+0200\n"
|
||||||
"Last-Translator: Marek Černocký <marek@manet.cz>\n"
|
"Last-Translator: Marek Černocký <marek@manet.cz>\n"
|
||||||
"Language-Team: Czech <gnome-cs-list@gnome.org>\n"
|
"Language-Team: Czech <gnome-cs-list@gnome.org>\n"
|
||||||
|
"Language: cs\n"
|
||||||
"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"
|
||||||
"Language: cs\n"
|
|
||||||
"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
|
"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
|
||||||
|
"X-Generator: Gtranslator 2.91.6\n"
|
||||||
|
|
||||||
|
#: ../data/gnome-classic.desktop.in.h:1
|
||||||
|
#: ../data/gnome-classic.session.desktop.in.in.h:1
|
||||||
|
msgid "GNOME Classic"
|
||||||
|
msgstr "GNOME klasik"
|
||||||
|
|
||||||
|
#: ../data/gnome-classic.desktop.in.h:2
|
||||||
|
msgid "This session logs you into GNOME Classic"
|
||||||
|
msgstr "Toto sezení vás přihlásí do GNOME klasik"
|
||||||
|
|
||||||
|
#: ../data/gnome-shell-classic.desktop.in.in.h:1
|
||||||
|
msgid "GNOME Shell Classic"
|
||||||
|
msgstr "GNOME Shell klasik"
|
||||||
|
|
||||||
|
#: ../data/gnome-shell-classic.desktop.in.in.h:2
|
||||||
|
msgid "Window management and application launching"
|
||||||
|
msgstr "Správa oken a spouštění aplikací"
|
||||||
|
|
||||||
|
#: ../extensions/alternate-tab/prefs.js:20
|
||||||
|
msgid "Thumbnail only"
|
||||||
|
msgstr "Pouze náhled"
|
||||||
|
|
||||||
|
#: ../extensions/alternate-tab/prefs.js:21
|
||||||
|
msgid "Application icon only"
|
||||||
|
msgstr "Pouze ikona aplikace"
|
||||||
|
|
||||||
|
#: ../extensions/alternate-tab/prefs.js:22
|
||||||
|
msgid "Thumbnail and application icon"
|
||||||
|
msgstr "Náhled a ikona aplikace"
|
||||||
|
|
||||||
|
#: ../extensions/alternate-tab/prefs.js:37
|
||||||
|
msgid "Present windows as"
|
||||||
|
msgstr "Představovat okna jako"
|
||||||
|
|
||||||
|
#: ../extensions/alternate-tab/prefs.js:62
|
||||||
|
msgid "Show only windows in the current workspace"
|
||||||
|
msgstr "Zobrazovat pouze okna z aktuální pracovní plochy"
|
||||||
|
|
||||||
#. add the new entries
|
#. add the new entries
|
||||||
#: ../extensions/alternative-status-menu/extension.js:68
|
#: ../extensions/alternative-status-menu/extension.js:125
|
||||||
msgid "Suspend"
|
msgid "Suspend"
|
||||||
msgstr "Uspat do paměti"
|
msgstr "Uspat do paměti"
|
||||||
|
|
||||||
#: ../extensions/alternative-status-menu/extension.js:73
|
#: ../extensions/alternative-status-menu/extension.js:128
|
||||||
msgid "Hibernate"
|
msgid "Hibernate"
|
||||||
msgstr "Uspat na disk"
|
msgstr "Uspat na disk"
|
||||||
|
|
||||||
#: ../extensions/alternative-status-menu/extension.js:78
|
#: ../extensions/alternative-status-menu/extension.js:131
|
||||||
msgid "Power Off..."
|
msgid "Power Off"
|
||||||
msgstr "Vypnout…"
|
msgstr "Vypnout"
|
||||||
|
|
||||||
#: ../extensions/alternate-tab/extension.js:54
|
#: ../extensions/alternative-status-menu/org.gnome.shell.extensions.alternative-status-menu.gschema.xml.in.h:1
|
||||||
msgid ""
|
msgid "Enable suspending"
|
||||||
"This is the first time you use the Alternate Tab extension. \n"
|
msgstr "Povolit uspávání do paměti"
|
||||||
"Please choose your preferred behaviour:\n"
|
|
||||||
"\n"
|
|
||||||
"All & Thumbnails:\n"
|
|
||||||
" This mode presents all applications from all workspaces in one "
|
|
||||||
"selection \n"
|
|
||||||
" list. Instead of using the application icon of every window, it uses "
|
|
||||||
"small \n"
|
|
||||||
" thumbnails resembling the window itself. \n"
|
|
||||||
"\n"
|
|
||||||
"Workspace & Icons:\n"
|
|
||||||
" This mode let's you switch between the applications of your current \n"
|
|
||||||
" workspace and gives you additionally the option to switch to the last "
|
|
||||||
"used \n"
|
|
||||||
" application of your previous workspace. This is always the last symbol "
|
|
||||||
"in \n"
|
|
||||||
" the list and is segregated by a separator/vertical line if available. \n"
|
|
||||||
" Every window is represented by its application icon. \n"
|
|
||||||
"\n"
|
|
||||||
"If you whish to revert to the default behavior for the Alt-Tab switcher, "
|
|
||||||
"just\n"
|
|
||||||
"disable the extension from extensions.gnome.org or the Advanced Settings "
|
|
||||||
"application."
|
|
||||||
msgstr ""
|
|
||||||
"Právě jste poprvé použili rozšíření Alternate Tab.\n"
|
|
||||||
"Vyberte si vámi upřednostňované chování:\n"
|
|
||||||
"\n"
|
|
||||||
"Vše a náhledy:\n"
|
|
||||||
" Tento režim předkládá všechny aplikace ze všech pracovních ploch\n"
|
|
||||||
" v jediném výběrovém seznamu. Místo ikon aplikací pro každé z oken\n"
|
|
||||||
" používá malé náhledy vytvořené přímo podle oken.\n"
|
|
||||||
"\n"
|
|
||||||
"Pracovní plocha a ikony:\n"
|
|
||||||
" Tento režim vám umožňuje přepínat mezi aplikacemi vaší aktuální "
|
|
||||||
"pracovní\n"
|
|
||||||
" plochy a poskytuje vám navíc možnost přepnout se na naposledy použitou\n"
|
|
||||||
" aplikaci vaší předchozí pracovní plochy. Jde vždy o poslední symbol v "
|
|
||||||
"seznamu\n"
|
|
||||||
" a pokud je k dispozici, je oddělen oddělovačem/svislou čárou. Každé z "
|
|
||||||
"oken\n"
|
|
||||||
" je prezentováno ikonou příslušné aplikace.\n"
|
|
||||||
"\n"
|
|
||||||
"Jestliže si přejete vrátit výchozí chování přepínače Alt-Tab, jednoduše "
|
|
||||||
"rozšíření\n"
|
|
||||||
"zakažte v extensions.gnome.org nebo v aplikaci Pokročilá nastavení."
|
|
||||||
|
|
||||||
#: ../extensions/alternate-tab/extension.js:295
|
#: ../extensions/alternative-status-menu/org.gnome.shell.extensions.alternative-status-menu.gschema.xml.in.h:2
|
||||||
msgid "Alt Tab Behaviour"
|
msgid "Control the visibility of the Suspend menu item"
|
||||||
msgstr "Chování Alt Tab"
|
msgstr "Řídí viditelnost položky „Uspat do paměti“ v nabídce"
|
||||||
|
|
||||||
#: ../extensions/alternate-tab/extension.js:311
|
#: ../extensions/alternative-status-menu/org.gnome.shell.extensions.alternative-status-menu.gschema.xml.in.h:3
|
||||||
msgid "All & Thumbnails"
|
msgid "Enable hibernating"
|
||||||
msgstr "Vše a náhledy"
|
msgstr "Povolit uspávání na disk"
|
||||||
|
|
||||||
#: ../extensions/alternate-tab/extension.js:318
|
#: ../extensions/alternative-status-menu/org.gnome.shell.extensions.alternative-status-menu.gschema.xml.in.h:4
|
||||||
msgid "Workspace & Icons"
|
msgid "Control the visibility of the Hibernate menu item"
|
||||||
msgstr "Pracovní plocha a ikony"
|
msgstr "Řídí viditelnost položky „Uspat na disk“ v nabídce"
|
||||||
|
|
||||||
#: ../extensions/alternate-tab/extension.js:325
|
#: ../extensions/apps-menu/extension.js:39
|
||||||
msgid "Cancel"
|
msgid "Activities Overview"
|
||||||
msgstr "Zrušit"
|
msgstr "Přehled činností"
|
||||||
|
|
||||||
#: ../extensions/alternate-tab/org.gnome.shell.extensions.alternate-tab.gschema.xml.in.h:1
|
#: ../extensions/apps-menu/extension.js:113
|
||||||
msgid "Ask the user for a default behaviour if true."
|
msgid "Favorites"
|
||||||
msgstr "Když je zapnuto, dotázat se uživatele na výchozí chování."
|
msgstr "Oblíbené"
|
||||||
|
|
||||||
#: ../extensions/alternate-tab/org.gnome.shell.extensions.alternate-tab.gschema.xml.in.h:2
|
#: ../extensions/apps-menu/extension.js:278
|
||||||
msgid "Indicates if Alternate Tab is newly installed"
|
msgid "Applications"
|
||||||
msgstr "Signalizuje, když je rozšíření Alternate Tab nově nainstalováno"
|
msgstr "Aplikace"
|
||||||
|
|
||||||
#: ../extensions/alternate-tab/org.gnome.shell.extensions.alternate-tab.gschema.xml.in.h:3
|
|
||||||
msgid ""
|
|
||||||
"Sets the Alt-Tab behaviour. Possible values are: native, all_thumbnails and "
|
|
||||||
"workspace_icons."
|
|
||||||
msgstr ""
|
|
||||||
"Nastavuje chování klávesové zkratky Alt-Tab. Možné hodnoty jsou: native "
|
|
||||||
"(přirozené), all_thumbnails (vše a náhledy) a workspace_icons (pracovní "
|
|
||||||
"plocha a ikony)."
|
|
||||||
|
|
||||||
#: ../extensions/alternate-tab/org.gnome.shell.extensions.alternate-tab.gschema.xml.in.h:4
|
|
||||||
msgid "The alt tab behaviour."
|
|
||||||
msgstr "Chování klávesové zkratky alt tab."
|
|
||||||
|
|
||||||
#: ../extensions/auto-move-windows/org.gnome.shell.extensions.auto-move-windows.gschema.xml.in.h:1
|
#: ../extensions/auto-move-windows/org.gnome.shell.extensions.auto-move-windows.gschema.xml.in.h:1
|
||||||
|
msgid "Application and workspace list"
|
||||||
|
msgstr "Seznam aplikací a pracovních ploch"
|
||||||
|
|
||||||
|
#: ../extensions/auto-move-windows/org.gnome.shell.extensions.auto-move-windows.gschema.xml.in.h:2
|
||||||
msgid ""
|
msgid ""
|
||||||
"A list of strings, each containing an application id (desktop file name), "
|
"A list of strings, each containing an application id (desktop file name), "
|
||||||
"followed by a colon and the workspace number"
|
"followed by a colon and the workspace number"
|
||||||
@@ -125,117 +110,76 @@ msgstr ""
|
|||||||
"Seznam řetězců, z nichž každý obsahuje ID aplikace (název souboru pracovní "
|
"Seznam řetězců, z nichž každý obsahuje ID aplikace (název souboru pracovní "
|
||||||
"plochy), následovaný dvojtečkou a číslem pracovní plochy"
|
"plochy), následovaný dvojtečkou a číslem pracovní plochy"
|
||||||
|
|
||||||
#: ../extensions/auto-move-windows/org.gnome.shell.extensions.auto-move-windows.gschema.xml.in.h:2
|
#: ../extensions/auto-move-windows/prefs.js:55
|
||||||
msgid "Application and workspace list"
|
msgid "Application"
|
||||||
msgstr "Seznam aplikací a pracovních ploch"
|
msgstr "Aplikace"
|
||||||
|
|
||||||
#: ../extensions/dock/extension.js:561
|
#: ../extensions/auto-move-windows/prefs.js:64
|
||||||
msgid "Drag here to add favorites"
|
#: ../extensions/auto-move-windows/prefs.js:106
|
||||||
msgstr "Přetažením sem přidáte do oblíbených"
|
msgid "Workspace"
|
||||||
|
msgstr "Pracovní plocha"
|
||||||
|
|
||||||
#: ../extensions/dock/extension.js:896
|
#: ../extensions/auto-move-windows/prefs.js:80
|
||||||
msgid "New Window"
|
msgid "Add rule"
|
||||||
msgstr "Nové okno"
|
msgstr "Přidat pravidlo"
|
||||||
|
|
||||||
#: ../extensions/dock/extension.js:898
|
#: ../extensions/auto-move-windows/prefs.js:94
|
||||||
msgid "Quit Application"
|
msgid "Create new matching rule"
|
||||||
msgstr "Ukončit aplikaci"
|
msgstr "Vytvoření nového srovnávacího pravidla"
|
||||||
|
|
||||||
#: ../extensions/dock/extension.js:903
|
#: ../extensions/auto-move-windows/prefs.js:98
|
||||||
msgid "Remove from Favorites"
|
msgid "Add"
|
||||||
msgstr "Odebrat z oblíbených"
|
msgstr "Přidat"
|
||||||
|
|
||||||
#: ../extensions/dock/extension.js:904
|
#: ../extensions/drive-menu/extension.js:72
|
||||||
msgid "Add to Favorites"
|
#, c-format
|
||||||
msgstr "Přidat do oblíbených"
|
msgid "Ejecting drive '%s' failed:"
|
||||||
|
msgstr "Vysunutí disku „%s“ selhalo:"
|
||||||
|
|
||||||
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:1
|
#: ../extensions/drive-menu/extension.js:89
|
||||||
msgid "Autohide duration"
|
msgid "Removable devices"
|
||||||
msgstr "Čas automatického skrývání"
|
msgstr "Výměnná zařízení"
|
||||||
|
|
||||||
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:2
|
#: ../extensions/drive-menu/extension.js:106
|
||||||
msgid "Autohide effect"
|
msgid "Open File"
|
||||||
msgstr "Efekt automatického skrývání"
|
msgstr "Otevřít soubor"
|
||||||
|
|
||||||
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:3
|
#: ../extensions/example/extension.js:17
|
||||||
msgid "Enable/disable autohide"
|
|
||||||
msgstr "Zapnout/vypnout automatické skrývání"
|
|
||||||
|
|
||||||
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:4
|
|
||||||
msgid "Icon size"
|
|
||||||
msgstr "Velikost ikony"
|
|
||||||
|
|
||||||
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:5
|
|
||||||
msgid "Position of the dock"
|
|
||||||
msgstr "Poloha doku"
|
|
||||||
|
|
||||||
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:6
|
|
||||||
msgid "Sets icon size of the dock."
|
|
||||||
msgstr "Nastavuje velikost ikon v doku."
|
|
||||||
|
|
||||||
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:7
|
|
||||||
msgid ""
|
|
||||||
"Sets the effect of the hide dock. Allowed values are 'resize', 'rescale' and "
|
|
||||||
"'move'"
|
|
||||||
msgstr ""
|
|
||||||
"Nastavuje efekt skrývání doku. Povolené hodnoty jsou „resize“ (změna "
|
|
||||||
"velikosti), „rescale“ (změna měřítka) a „move“ (přesun)."
|
|
||||||
|
|
||||||
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:8
|
|
||||||
msgid ""
|
|
||||||
"Sets the position of the dock in the screen. Allowed values are 'right' or "
|
|
||||||
"'left'"
|
|
||||||
msgstr ""
|
|
||||||
"Nastavuje polohu doku na obrazovce. Povolené hodnoty jsou „right“ (vpravo) "
|
|
||||||
"nebo „left“ (vlevo)."
|
|
||||||
|
|
||||||
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:9
|
|
||||||
msgid "Sets the time duration of the autohide effect."
|
|
||||||
msgstr "Nastavuje čas trvání efektu automatického skrývání."
|
|
||||||
|
|
||||||
#: ../extensions/drive-menu/extension.js:69
|
|
||||||
msgid "Open file manager"
|
|
||||||
msgstr "Otevřít správce souborů"
|
|
||||||
|
|
||||||
#: ../extensions/example/extension.js:11
|
|
||||||
msgid "Hello, world!"
|
msgid "Hello, world!"
|
||||||
msgstr "Ahoj světe!"
|
msgstr "Ahoj světe!"
|
||||||
|
|
||||||
#: ../extensions/gajim/extension.js:227
|
#: ../extensions/example/org.gnome.shell.extensions.example.gschema.xml.in.h:1
|
||||||
#, c-format
|
msgid "Alternative greeting text."
|
||||||
msgid "%s is away."
|
msgstr "Alternativní uvítací text"
|
||||||
msgstr "%s je pryč."
|
|
||||||
|
|
||||||
#: ../extensions/gajim/extension.js:230
|
#: ../extensions/example/org.gnome.shell.extensions.example.gschema.xml.in.h:2
|
||||||
#, c-format
|
msgid ""
|
||||||
msgid "%s is offline."
|
"If not empty, it contains the text that will be shown when clicking on the "
|
||||||
msgstr "%s je odpojen."
|
"panel."
|
||||||
|
msgstr ""
|
||||||
|
"Pokud není prázdné, obsahuje text, který se objeví po kliknutí na panel."
|
||||||
|
|
||||||
#: ../extensions/gajim/extension.js:233
|
#. TRANSLATORS: Example is the name of the extension, should not be
|
||||||
#, c-format
|
#. translated
|
||||||
msgid "%s is online."
|
#: ../extensions/example/prefs.js:30
|
||||||
msgstr "%s je připojen."
|
msgid ""
|
||||||
|
"Example aims to show how to build well behaved extensions for the Shell and "
|
||||||
|
"as such it has little functionality on its own.\n"
|
||||||
|
"Nevertheless it's possible to customize the greeting message."
|
||||||
|
msgstr ""
|
||||||
|
"Rozšíření Example vám má jen ukázat, jak sestavit dobře fungující rozšíření "
|
||||||
|
"pro Shell, a tak je jeho praktické využití pramalé.\n"
|
||||||
|
"Přesto si můžete alespoň upravit uvítací zprávu."
|
||||||
|
|
||||||
#: ../extensions/gajim/extension.js:236
|
#: ../extensions/example/prefs.js:36
|
||||||
#, c-format
|
msgid "Message:"
|
||||||
msgid "%s is busy."
|
msgstr "Zpráva:"
|
||||||
msgstr "%s je zaneprázdněn."
|
|
||||||
|
|
||||||
#: ../extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml.in.h:1
|
#: ../extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml.in.h:1
|
||||||
msgid ""
|
msgid "Use more screen for windows"
|
||||||
"If true, place window captions on top the respective thumbnail, overriding "
|
msgstr "Použít větší část obrazovky pro okna"
|
||||||
"shell default of placing it at the bottom. Changing this setting requires "
|
|
||||||
"restarting the shell to have any effect."
|
|
||||||
msgstr ""
|
|
||||||
"Pokud je zapnuto, umisťuje se název okna nad případný náhled, čímž se "
|
|
||||||
"přepíše výchozí chování shellu, který jej umisťuje dolů. Změna tohoto "
|
|
||||||
"nastavení vyžaduje restart shellu, aby se projevila."
|
|
||||||
|
|
||||||
#: ../extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml.in.h:2
|
#: ../extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml.in.h:2
|
||||||
msgid "Place window captions on top"
|
|
||||||
msgstr "Umístit název okna nahoru"
|
|
||||||
|
|
||||||
#: ../extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml.in.h:3
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"Try to use more screen for placing window thumbnails by adapting to screen "
|
"Try to use more screen for placing window thumbnails by adapting to screen "
|
||||||
"aspect ratio, and consolidating them further to reduce the bounding box. "
|
"aspect ratio, and consolidating them further to reduce the bounding box. "
|
||||||
@@ -245,38 +189,123 @@ msgstr ""
|
|||||||
"využít větší část obrazovky pro umístění náhledů oken. Toto nastavení se "
|
"využít větší část obrazovky pro umístění náhledů oken. Toto nastavení se "
|
||||||
"použije pouze dohromady se strategií umisťování „natural“."
|
"použije pouze dohromady se strategií umisťování „natural“."
|
||||||
|
|
||||||
#: ../extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml.in.h:4
|
#: ../extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml.in.h:3
|
||||||
msgid "Use more screen for windows"
|
msgid "Place window captions on top"
|
||||||
msgstr "Použít větší část obrazovky pro okna"
|
msgstr "Umístit název okna nahoru"
|
||||||
|
|
||||||
#: ../extensions/places-menu/extension.js:36
|
#: ../extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml.in.h:4
|
||||||
msgid "Removable Devices"
|
msgid ""
|
||||||
msgstr "Výměnná zařízení"
|
"If true, place window captions on top the respective thumbnail, overriding "
|
||||||
|
"shell default of placing it at the bottom. Changing this setting requires "
|
||||||
|
"restarting the shell to have any effect."
|
||||||
|
msgstr ""
|
||||||
|
"Pokud je zapnuto, umisťuje se název okna nad případný náhled, čímž se "
|
||||||
|
"přepíše výchozí chování shellu, který jej umisťuje dolů. Změna tohoto "
|
||||||
|
"nastavení vyžaduje restart shellu, aby se projevila."
|
||||||
|
|
||||||
|
#: ../extensions/places-menu/extension.js:77
|
||||||
|
msgid "Places"
|
||||||
|
msgstr "Místa"
|
||||||
|
|
||||||
|
#: ../extensions/places-menu/placeDisplay.js:56
|
||||||
|
#, c-format
|
||||||
|
msgid "Failed to launch \"%s\""
|
||||||
|
msgstr "Selhalo spuštění „%s“"
|
||||||
|
|
||||||
|
#: ../extensions/places-menu/placeDisplay.js:98
|
||||||
|
#: ../extensions/places-menu/placeDisplay.js:121
|
||||||
|
msgid "Computer"
|
||||||
|
msgstr "Počítač"
|
||||||
|
|
||||||
|
#: ../extensions/places-menu/placeDisplay.js:199
|
||||||
|
msgid "Home"
|
||||||
|
msgstr "Domů"
|
||||||
|
|
||||||
|
#: ../extensions/places-menu/placeDisplay.js:286
|
||||||
|
msgid "Browse Network"
|
||||||
|
msgstr "Procházet síť"
|
||||||
|
|
||||||
|
#: ../extensions/systemMonitor/extension.js:213
|
||||||
|
msgid "CPU"
|
||||||
|
msgstr "Procesor"
|
||||||
|
|
||||||
|
#: ../extensions/systemMonitor/extension.js:266
|
||||||
|
msgid "Memory"
|
||||||
|
msgstr "Paměť"
|
||||||
|
|
||||||
#: ../extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml.in.h:1
|
#: ../extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml.in.h:1
|
||||||
msgid "The name of the theme, to be loaded from ~/.themes/name/gnome-shell"
|
|
||||||
msgstr "Název motivu, který se má načíst z ~/.themes/name/gnome-shell"
|
|
||||||
|
|
||||||
#: ../extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml.in.h:2
|
|
||||||
msgid "Theme name"
|
msgid "Theme name"
|
||||||
msgstr "Název motivu"
|
msgstr "Název motivu"
|
||||||
|
|
||||||
#: ../extensions/xrandr-indicator/extension.js:26
|
#: ../extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml.in.h:2
|
||||||
|
msgid "The name of the theme, to be loaded from ~/.themes/name/gnome-shell"
|
||||||
|
msgstr "Název motivu, který se má načíst z ~/.themes/name/gnome-shell"
|
||||||
|
|
||||||
|
#: ../extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml.in.h:1
|
||||||
|
msgid "When to group windows"
|
||||||
|
msgstr "Kdy seskupovat okna"
|
||||||
|
|
||||||
|
#: ../extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml.in.h:2
|
||||||
|
msgid ""
|
||||||
|
"Decides when to group windows from the same application on the window list. "
|
||||||
|
"Possible values are \"never\", \"auto\" and \"always\"."
|
||||||
|
msgstr ""
|
||||||
|
"Rozhoduje, kdy se mají v seznamu oken seskupovat okna stejné aplikace. Možné "
|
||||||
|
"hodnoty jsou „never“ (nikdy), „auto“ (automaticky) a „always“ (vždy)."
|
||||||
|
|
||||||
|
#: ../extensions/window-list/prefs.js:30
|
||||||
|
msgid "Window Grouping"
|
||||||
|
msgstr "Seskupování oken"
|
||||||
|
|
||||||
|
#: ../extensions/window-list/prefs.js:49
|
||||||
|
msgid "Never group windows"
|
||||||
|
msgstr "Nikdy neseskupovat okna"
|
||||||
|
|
||||||
|
#: ../extensions/window-list/prefs.js:50
|
||||||
|
msgid "Group windows when space is limited"
|
||||||
|
msgstr "Seskupovat okna při nedostatku místa"
|
||||||
|
|
||||||
|
#: ../extensions/window-list/prefs.js:51
|
||||||
|
msgid "Always group windows"
|
||||||
|
msgstr "Vždy seskupovat okna"
|
||||||
|
|
||||||
|
#: ../extensions/workspace-indicator/extension.js:30
|
||||||
|
msgid "Workspace Indicator"
|
||||||
|
msgstr "Ukazatel pracovní plochy"
|
||||||
|
|
||||||
|
#: ../extensions/workspace-indicator/prefs.js:141
|
||||||
|
msgid "Workspace names:"
|
||||||
|
msgstr "Názvy pracovních ploch"
|
||||||
|
|
||||||
|
#: ../extensions/workspace-indicator/prefs.js:152
|
||||||
|
msgid "Name"
|
||||||
|
msgstr "Název"
|
||||||
|
|
||||||
|
#: ../extensions/workspace-indicator/prefs.js:186
|
||||||
|
#, c-format
|
||||||
|
msgid "Workspace %d"
|
||||||
|
msgstr "Pracovní plocha %d"
|
||||||
|
|
||||||
|
#: ../extensions/xrandr-indicator/extension.js:30
|
||||||
msgid "Normal"
|
msgid "Normal"
|
||||||
msgstr "Normální"
|
msgstr "Normální"
|
||||||
|
|
||||||
#: ../extensions/xrandr-indicator/extension.js:27
|
#: ../extensions/xrandr-indicator/extension.js:31
|
||||||
msgid "Left"
|
msgid "Left"
|
||||||
msgstr "Doleva"
|
msgstr "Doleva"
|
||||||
|
|
||||||
#: ../extensions/xrandr-indicator/extension.js:28
|
#: ../extensions/xrandr-indicator/extension.js:32
|
||||||
msgid "Right"
|
msgid "Right"
|
||||||
msgstr "Doprava"
|
msgstr "Doprava"
|
||||||
|
|
||||||
#: ../extensions/xrandr-indicator/extension.js:29
|
#: ../extensions/xrandr-indicator/extension.js:33
|
||||||
msgid "Upside-down"
|
msgid "Upside-down"
|
||||||
msgstr "Vzhůru nohama"
|
msgstr "Vzhůru nohama"
|
||||||
|
|
||||||
#: ../extensions/xrandr-indicator/extension.js:78
|
#: ../extensions/xrandr-indicator/extension.js:50
|
||||||
msgid "Configure display settings..."
|
msgid "Display"
|
||||||
msgstr "Upravit nastavení zobrazení…"
|
msgstr "Obrazovka"
|
||||||
|
|
||||||
|
#: ../extensions/xrandr-indicator/extension.js:80
|
||||||
|
msgid "Display Settings"
|
||||||
|
msgstr "Nastavení obrazovky"
|
||||||
|
|||||||
@@ -1,234 +1,205 @@
|
|||||||
# German translation for gnome-shell-extensions.
|
# German translation for gnome-shell-extensions.
|
||||||
# Copyright (C) 2011 gnome-shell-extensions's COPYRIGHT HOLDER
|
# Copyright (C) 2011 gnome-shell-extensions's COPYRIGHT HOLDER
|
||||||
# This file is distributed under the same license as the gnome-shell-extensions package.
|
# This file is distributed under the same license as the gnome-shell-extensions package.
|
||||||
# Mario Blättermann <mario.blaettermann@gmail.com>, 2011.
|
# Mario Blättermann <mario.blaettermann@gmail.com>, 2011-2013.
|
||||||
# Christian Kirbach <Christian.Kirbach@googlemail.com>, 2011.
|
# Christian Kirbach <Christian.Kirbach@googlemail.com>, 2011, 2012.
|
||||||
#
|
#
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: gnome-shell-extensions master\n"
|
"Project-Id-Version: gnome-shell-extensions 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=extensions\n"
|
"shell&keywords=I18N+L10N&component=extensions\n"
|
||||||
"POT-Creation-Date: 2011-12-27 14:30+0000\n"
|
"POT-Creation-Date: 2013-03-11 01:25+0000\n"
|
||||||
"PO-Revision-Date: 2011-12-28 11:14+0100\n"
|
"PO-Revision-Date: 2013-03-13 20:30+0100\n"
|
||||||
"Last-Translator: Mario Blättermann <mario.blaettermann@gmail.com>\n"
|
"Last-Translator: Mario Blättermann <mario.blaettermann@gmail.com>\n"
|
||||||
"Language-Team: Deutsch <gnome-de@gnome.org>\n"
|
"Language-Team: Deutsch <gnome-de@gnome.org>\n"
|
||||||
|
"Language: \n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=2; plural=(n!=1);\n"
|
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||||
"X-Poedit-Language: German\n"
|
"X-Poedit-Language: German\n"
|
||||||
"X-Poedit-Country: GERMANY\n"
|
"X-Poedit-Country: GERMANY\n"
|
||||||
|
"X-Generator: Gtranslator 2.91.5\n"
|
||||||
|
|
||||||
|
#: ../data/gnome-classic.desktop.in.h:1
|
||||||
|
#: ../data/gnome-classic.session.desktop.in.in.h:1
|
||||||
|
msgid "GNOME Classic"
|
||||||
|
msgstr "GNOME Classic"
|
||||||
|
|
||||||
|
#: ../data/gnome-classic.desktop.in.h:2
|
||||||
|
msgid "This session logs you into GNOME Classic"
|
||||||
|
msgstr "Diese Sitzung meldet Sie in GNOME Classic an"
|
||||||
|
|
||||||
|
#: ../data/gnome-shell-classic.desktop.in.in.h:1
|
||||||
|
msgid "GNOME Shell Classic"
|
||||||
|
msgstr "GNOME Shell Classic"
|
||||||
|
|
||||||
|
#: ../data/gnome-shell-classic.desktop.in.in.h:2
|
||||||
|
msgid "Window management and application launching"
|
||||||
|
msgstr "Fensterverwaltung und Anwendungsstart"
|
||||||
|
|
||||||
|
#: ../extensions/alternate-tab/prefs.js:20
|
||||||
|
msgid "Thumbnail only"
|
||||||
|
msgstr "Nur Vorschaubild"
|
||||||
|
|
||||||
|
#: ../extensions/alternate-tab/prefs.js:21
|
||||||
|
msgid "Application icon only"
|
||||||
|
msgstr "Nur Anwendungssymbol"
|
||||||
|
|
||||||
|
#: ../extensions/alternate-tab/prefs.js:22
|
||||||
|
msgid "Thumbnail and application icon"
|
||||||
|
msgstr "Vorschaubild und Anwendungssymbol"
|
||||||
|
|
||||||
|
#: ../extensions/alternate-tab/prefs.js:37
|
||||||
|
msgid "Present windows as"
|
||||||
|
msgstr "Fenster darstellen als"
|
||||||
|
|
||||||
|
#: ../extensions/alternate-tab/prefs.js:62
|
||||||
|
msgid "Show only windows in the current workspace"
|
||||||
|
msgstr "Nur Fenster der aktuellen Arbeitsfläche anzeigen"
|
||||||
|
|
||||||
#. add the new entries
|
#. add the new entries
|
||||||
#: ../extensions/alternative-status-menu/extension.js:68
|
#: ../extensions/alternative-status-menu/extension.js:125
|
||||||
msgid "Suspend"
|
msgid "Suspend"
|
||||||
msgstr "Bereitschaft"
|
msgstr "Bereitschaft"
|
||||||
|
|
||||||
#: ../extensions/alternative-status-menu/extension.js:73
|
#: ../extensions/alternative-status-menu/extension.js:128
|
||||||
msgid "Hibernate"
|
msgid "Hibernate"
|
||||||
msgstr "Ruhezustand"
|
msgstr "Ruhezustand"
|
||||||
|
|
||||||
#: ../extensions/alternative-status-menu/extension.js:78
|
#: ../extensions/alternative-status-menu/extension.js:131
|
||||||
msgid "Power Off..."
|
msgid "Power Off"
|
||||||
msgstr "Ausschalten …"
|
msgstr "Ausschalten …"
|
||||||
|
|
||||||
#: ../extensions/alternate-tab/extension.js:54
|
#: ../extensions/alternative-status-menu/org.gnome.shell.extensions.alternative-status-menu.gschema.xml.in.h:1
|
||||||
msgid ""
|
msgid "Enable suspending"
|
||||||
"This is the first time you use the Alternate Tab extension. \n"
|
msgstr "Bereitschaft einblenden"
|
||||||
"Please choose your preferred behaviour:\n"
|
|
||||||
"\n"
|
|
||||||
"All & Thumbnails:\n"
|
|
||||||
" This mode presents all applications from all workspaces in one "
|
|
||||||
"selection \n"
|
|
||||||
" list. Instead of using the application icon of every window, it uses "
|
|
||||||
"small \n"
|
|
||||||
" thumbnails resembling the window itself. \n"
|
|
||||||
"\n"
|
|
||||||
"Workspace & Icons:\n"
|
|
||||||
" This mode let's you switch between the applications of your current \n"
|
|
||||||
" workspace and gives you additionally the option to switch to the last "
|
|
||||||
"used \n"
|
|
||||||
" application of your previous workspace. This is always the last symbol "
|
|
||||||
"in \n"
|
|
||||||
" the list and is segregated by a separator/vertical line if available. \n"
|
|
||||||
" Every window is represented by its application icon. \n"
|
|
||||||
"\n"
|
|
||||||
"If you whish to revert to the default behavior for the Alt-Tab switcher, "
|
|
||||||
"just\n"
|
|
||||||
"disable the extension from extensions.gnome.org or the Advanced Settings "
|
|
||||||
"application."
|
|
||||||
msgstr ""
|
|
||||||
"Sie verwenden die Erweiterung »Alt-Tab« das erste Mal. \n"
|
|
||||||
"Bitte wählen Sie das gewünschte Verhalten:\n"
|
|
||||||
"\n"
|
|
||||||
"Alle und Vorschaubilder:\n"
|
|
||||||
" Dieser Modus stellt alle Anwendungen aus allen Arbeitsflächen in einer\n"
|
|
||||||
" Auswahlliste dar. Anstelle des Anwendungssymbols jedes Fensters werden\n"
|
|
||||||
" kleine Vorschaubilder dargestellt, die dem Fenster ähnlich sind. \n"
|
|
||||||
"\n"
|
|
||||||
"Arbeitsfläche und Symbole:\n"
|
|
||||||
" Dieser Modus ermöglicht den Wechsel zwischen Anwendungen auf Ihrer \n"
|
|
||||||
" aktuellen Arbeitsfläche und ermöglicht weiterhin, auf die zuletzt "
|
|
||||||
"verwendete\n"
|
|
||||||
" Anwendung der letzten Arbeitsfläche zu wechseln. Sie ist immer das letzte "
|
|
||||||
"Symbol\n"
|
|
||||||
" der Liste und ist durch einen Trenner (vertikale Linie) getrennt. \n"
|
|
||||||
" Jedes Fenster wird durch das entsprechende Anwendungssymbol "
|
|
||||||
"repräsentiert.\n"
|
|
||||||
"\n"
|
|
||||||
"Falls Sie zum Standardverhalten der Alt-Tab-Umschaltung zurückkehren wollen,\n"
|
|
||||||
"deaktivieren Sie diese Erweiterung in extensions.gnome.org oder verwenden "
|
|
||||||
"Sie\n"
|
|
||||||
"die »Erweiterten Einstellungen«."
|
|
||||||
|
|
||||||
#: ../extensions/alternate-tab/extension.js:295
|
#: ../extensions/alternative-status-menu/org.gnome.shell.extensions.alternative-status-menu.gschema.xml.in.h:2
|
||||||
msgid "Alt Tab Behaviour"
|
msgid "Control the visibility of the Suspend menu item"
|
||||||
msgstr "Verhalten bei Alt-Tab"
|
msgstr "Die Sichtbarkeit des Menüeintrags »Bereitschaft« festlegen"
|
||||||
|
|
||||||
#: ../extensions/alternate-tab/extension.js:311
|
#: ../extensions/alternative-status-menu/org.gnome.shell.extensions.alternative-status-menu.gschema.xml.in.h:3
|
||||||
msgid "All & Thumbnails"
|
msgid "Enable hibernating"
|
||||||
msgstr "Alle und Vorschaubilder"
|
msgstr "Ruhezustand einblenden"
|
||||||
|
|
||||||
#: ../extensions/alternate-tab/extension.js:318
|
#: ../extensions/alternative-status-menu/org.gnome.shell.extensions.alternative-status-menu.gschema.xml.in.h:4
|
||||||
msgid "Workspace & Icons"
|
msgid "Control the visibility of the Hibernate menu item"
|
||||||
msgstr "Arbeitsbereich und Symbole"
|
msgstr "Die Sichtbarkeit des Menüeintrags »Ruhezustand« festlegen"
|
||||||
|
|
||||||
#: ../extensions/alternate-tab/extension.js:325
|
#: ../extensions/apps-menu/extension.js:37
|
||||||
msgid "Cancel"
|
msgid "Activities Overview"
|
||||||
msgstr "Abbrechen"
|
msgstr "Aktivitäten-Übersicht"
|
||||||
|
|
||||||
#: ../extensions/alternate-tab/org.gnome.shell.extensions.alternate-tab.gschema.xml.in.h:1
|
#: ../extensions/apps-menu/extension.js:95
|
||||||
msgid "Ask the user for a default behaviour if true."
|
msgid "Favorites"
|
||||||
msgstr ""
|
msgstr "Favoriten"
|
||||||
"Falls wahr, so wird der Benutzer nach dem voreinzustellendem Verhalten "
|
|
||||||
"gefragt."
|
|
||||||
|
|
||||||
#: ../extensions/alternate-tab/org.gnome.shell.extensions.alternate-tab.gschema.xml.in.h:2
|
#: ../extensions/apps-menu/extension.js:184
|
||||||
msgid "Indicates if Alternate Tab is newly installed"
|
msgid "Applications"
|
||||||
msgstr "Gibt an, ob die Erweiterung »Alt-Tab« neu installiert wurde"
|
msgstr "Anwendungen"
|
||||||
|
|
||||||
# Oder müssen die Werte doch übersetzt werden? -ck
|
|
||||||
# Nein, dconf verhält sich hier nicht anders als gconf. Keinesfalls übersetzen! -mb
|
|
||||||
#: ../extensions/alternate-tab/org.gnome.shell.extensions.alternate-tab.gschema.xml.in.h:3
|
|
||||||
msgid ""
|
|
||||||
"Sets the Alt-Tab behaviour. Possible values are: native, all_thumbnails and "
|
|
||||||
"workspace_icons."
|
|
||||||
msgstr ""
|
|
||||||
"Legt das Verhalten bei Drücken von Alt-Tab fest. Mögliche Werte sind: "
|
|
||||||
"»native«, »all_thumbnails« und »workspace_icons«."
|
|
||||||
|
|
||||||
#: ../extensions/alternate-tab/org.gnome.shell.extensions.alternate-tab.gschema.xml.in.h:4
|
|
||||||
msgid "The alt tab behaviour."
|
|
||||||
msgstr "Das Verhalten bei Eingabe von Alt-Tab."
|
|
||||||
|
|
||||||
#: ../extensions/auto-move-windows/org.gnome.shell.extensions.auto-move-windows.gschema.xml.in.h:1
|
#: ../extensions/auto-move-windows/org.gnome.shell.extensions.auto-move-windows.gschema.xml.in.h:1
|
||||||
|
msgid "Application and workspace list"
|
||||||
|
msgstr "Anwendungs- und Arbeitsflächenliste"
|
||||||
|
|
||||||
|
#: ../extensions/auto-move-windows/org.gnome.shell.extensions.auto-move-windows.gschema.xml.in.h:2
|
||||||
msgid ""
|
msgid ""
|
||||||
"A list of strings, each containing an application id (desktop file name), "
|
"A list of strings, each containing an application id (desktop file name), "
|
||||||
"followed by a colon and the workspace number"
|
"followed by a colon and the workspace number"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Eine Liste aus Zeichenketten, wovon jede eine Anwendungskennung (*.desktop-"
|
"Eine Liste aus Zeichenketten, wovon jede eine Anwendungskennung (*.desktop-"
|
||||||
"Datei) enthält, gefolgt von einem Doppelpunkt und der Nummer der Arbeitsfläche"
|
"Datei) enthält, gefolgt von einem Doppelpunkt und der Nummer der "
|
||||||
|
"Arbeitsfläche"
|
||||||
|
|
||||||
#: ../extensions/auto-move-windows/org.gnome.shell.extensions.auto-move-windows.gschema.xml.in.h:2
|
#: ../extensions/auto-move-windows/prefs.js:55
|
||||||
msgid "Application and workspace list"
|
msgid "Application"
|
||||||
msgstr "Anwendungs- und Arbeitsflächenliste"
|
msgstr "Anwendung"
|
||||||
|
|
||||||
#: ../extensions/dock/extension.js:561
|
#: ../extensions/auto-move-windows/prefs.js:64
|
||||||
msgid "Drag here to add favorites"
|
#: ../extensions/auto-move-windows/prefs.js:106
|
||||||
msgstr "Hierher ziehen, um zu Favoriten hinzuzufügen"
|
msgid "Workspace"
|
||||||
|
msgstr "Arbeitsfläche "
|
||||||
|
|
||||||
#: ../extensions/dock/extension.js:896
|
#: ../extensions/auto-move-windows/prefs.js:80
|
||||||
msgid "New Window"
|
msgid "Add rule"
|
||||||
msgstr "Neues Fenster"
|
msgstr "Regel hinzufügen"
|
||||||
|
|
||||||
#: ../extensions/dock/extension.js:898
|
#: ../extensions/auto-move-windows/prefs.js:94
|
||||||
msgid "Quit Application"
|
msgid "Create new matching rule"
|
||||||
msgstr "Anwendung beenden"
|
msgstr "Neue Übereinstimmungsregel erstellen"
|
||||||
|
|
||||||
#: ../extensions/dock/extension.js:903
|
#: ../extensions/auto-move-windows/prefs.js:98
|
||||||
msgid "Remove from Favorites"
|
msgid "Add"
|
||||||
msgstr "Aus Favoriten entfernen"
|
msgstr "Hinzufügen"
|
||||||
|
|
||||||
#: ../extensions/dock/extension.js:904
|
#: ../extensions/drive-menu/extension.js:72
|
||||||
msgid "Add to Favorites"
|
#, c-format
|
||||||
msgstr "Zu Favoriten hinzufügen"
|
msgid "Ejecting drive '%s' failed:"
|
||||||
|
msgstr "Auswerfen von Laufwerk »%s« schlug fehl:"
|
||||||
|
|
||||||
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:1
|
#: ../extensions/drive-menu/extension.js:89
|
||||||
msgid "Autohide duration"
|
msgid "Removable devices"
|
||||||
msgstr "Dauer automatisch verbergen"
|
msgstr "Wechseldatenträger"
|
||||||
|
|
||||||
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:2
|
#: ../extensions/drive-menu/extension.js:106
|
||||||
msgid "Autohide effect"
|
msgid "Open File"
|
||||||
msgstr "Effekt automatisch verbergen"
|
msgstr "Datei öffnen"
|
||||||
|
|
||||||
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:3
|
#: ../extensions/example/extension.js:17
|
||||||
msgid "Enable/disable autohide"
|
|
||||||
msgstr "Automatisches Verbergen aktivieren/deaktivieren"
|
|
||||||
|
|
||||||
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:4
|
|
||||||
msgid "Icon size"
|
|
||||||
msgstr "Symbolgröße"
|
|
||||||
|
|
||||||
# Dock = das Dock ? -ck
|
|
||||||
# Sofern es sich nicht um das Original-Dash handelt, ja. -mb
|
|
||||||
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:5
|
|
||||||
msgid "Position of the dock"
|
|
||||||
msgstr "Position des Docks"
|
|
||||||
|
|
||||||
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:6
|
|
||||||
msgid "Sets icon size of the dock."
|
|
||||||
msgstr "Legt die Symbolgröße für das Dock fest"
|
|
||||||
|
|
||||||
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:7
|
|
||||||
msgid ""
|
|
||||||
"Sets the effect of the hide dock. Allowed values are 'resize', 'rescale' and "
|
|
||||||
"'move'"
|
|
||||||
msgstr ""
|
|
||||||
"Legt den Effekt für das versteckte Dock fest. Mögliche Werte sind »resize«, "
|
|
||||||
"»rescale« und »move«"
|
|
||||||
|
|
||||||
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:8
|
|
||||||
msgid ""
|
|
||||||
"Sets the position of the dock in the screen. Allowed values are 'right' or "
|
|
||||||
"'left'"
|
|
||||||
msgstr ""
|
|
||||||
"Legt die Position des Docks auf dem Bildschirm fest. Mögliche Werte sind "
|
|
||||||
"»right« und »left«"
|
|
||||||
|
|
||||||
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:9
|
|
||||||
msgid "Sets the time duration of the autohide effect."
|
|
||||||
msgstr "Legt die Effektdauer für automatisches Verbergen fest."
|
|
||||||
|
|
||||||
#: ../extensions/drive-menu/extension.js:69
|
|
||||||
msgid "Open file manager"
|
|
||||||
msgstr "Dateiverwaltung öffnen"
|
|
||||||
|
|
||||||
#: ../extensions/example/extension.js:11
|
|
||||||
msgid "Hello, world!"
|
msgid "Hello, world!"
|
||||||
msgstr "Hallo, Welt!"
|
msgstr "Hallo, Welt!"
|
||||||
|
|
||||||
#: ../extensions/gajim/extension.js:227
|
#: ../extensions/example/org.gnome.shell.extensions.example.gschema.xml.in.h:1
|
||||||
#, c-format
|
msgid "Alternative greeting text."
|
||||||
msgid "%s is away."
|
msgstr "Alternative Begrüßungstext."
|
||||||
msgstr "%s ist abwesend."
|
|
||||||
|
|
||||||
#: ../extensions/gajim/extension.js:230
|
#: ../extensions/example/org.gnome.shell.extensions.example.gschema.xml.in.h:2
|
||||||
#, c-format
|
msgid ""
|
||||||
msgid "%s is offline."
|
"If not empty, it contains the text that will be shown when clicking on the "
|
||||||
msgstr "%s ist abgemeldet."
|
"panel."
|
||||||
|
msgstr ""
|
||||||
|
"Falls nicht leer, ist dies der Text, der beim Anklicken des Panels angezeigt "
|
||||||
|
"wird."
|
||||||
|
|
||||||
#: ../extensions/gajim/extension.js:233
|
#. TRANSLATORS: Example is the name of the extension, should not be
|
||||||
#, c-format
|
#. translated
|
||||||
msgid "%s is online."
|
#: ../extensions/example/prefs.js:30
|
||||||
msgstr "%s ist angemeldet."
|
msgid ""
|
||||||
|
"Example aims to show how to build well behaved extensions for the Shell and "
|
||||||
|
"as such it has little functionality on its own.\n"
|
||||||
|
"Nevertheless it's possible to customize the greeting message."
|
||||||
|
msgstr ""
|
||||||
|
"Das Beispiel soll zeigen, wie sich korrekt verhaltende Erweiterungen für die "
|
||||||
|
"Shell erstellt werden. Es enthält grundlegende Funktionalität.\n"
|
||||||
|
"Es ist möglich, die Begrüßungsnachricht zu ändern."
|
||||||
|
|
||||||
#: ../extensions/gajim/extension.js:236
|
#: ../extensions/example/prefs.js:36
|
||||||
#, c-format
|
msgid "Message:"
|
||||||
msgid "%s is busy."
|
msgstr "Nachricht:"
|
||||||
msgstr "%s ist beschäftigt."
|
|
||||||
|
|
||||||
#: ../extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml.in.h:1
|
#: ../extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml.in.h:1
|
||||||
|
msgid "Use more screen for windows"
|
||||||
|
msgstr "Mehr Bildschirmbereich für Fenster verwenden"
|
||||||
|
|
||||||
|
#: ../extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml.in.h:2
|
||||||
|
msgid ""
|
||||||
|
"Try to use more screen for placing window thumbnails by adapting to screen "
|
||||||
|
"aspect ratio, and consolidating them further to reduce the bounding box. "
|
||||||
|
"This setting applies only with the natural placement strategy."
|
||||||
|
msgstr ""
|
||||||
|
"Versuchen, mehr Bildschirmfläche zum Platzieren der Fenstervorschaubilder zu "
|
||||||
|
"verwenden, indem das Bildschirmseitenverhältnis berücksichtigt wird und "
|
||||||
|
"diese stärker zusammengelegt werden, um den umgebenden Rahmen zu "
|
||||||
|
"verkleinern. Diese Einstellung betrifft nur den natürlichen "
|
||||||
|
"Platzierungsalgorithmus."
|
||||||
|
|
||||||
|
#: ../extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml.in.h:3
|
||||||
|
msgid "Place window captions on top"
|
||||||
|
msgstr "Fensterbeschriftungen oben platzieren"
|
||||||
|
|
||||||
|
#: ../extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml.in.h:4
|
||||||
msgid ""
|
msgid ""
|
||||||
"If true, place window captions on top the respective thumbnail, overriding "
|
"If true, place window captions on top the respective thumbnail, overriding "
|
||||||
"shell default of placing it at the bottom. Changing this setting requires "
|
"shell default of placing it at the bottom. Changing this setting requires "
|
||||||
@@ -238,55 +209,143 @@ msgstr ""
|
|||||||
"Vorschaubild platziert und damit die Voreinstellung der Shell übergangen. "
|
"Vorschaubild platziert und damit die Voreinstellung der Shell übergangen. "
|
||||||
"Eine Änderungseinstellung tritt erst mit einem Neustart der Shell in Kraft."
|
"Eine Änderungseinstellung tritt erst mit einem Neustart der Shell in Kraft."
|
||||||
|
|
||||||
#: ../extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml.in.h:2
|
#: ../extensions/places-menu/extension.js:77
|
||||||
msgid "Place window captions on top"
|
msgid "Places"
|
||||||
msgstr "Fensterbeschriftungen oben platzieren"
|
msgstr "Orte"
|
||||||
|
|
||||||
#: ../extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml.in.h:3
|
#: ../extensions/places-menu/placeDisplay.js:56
|
||||||
msgid ""
|
#, c-format
|
||||||
"Try to use more screen for placing window thumbnails by adapting to screen "
|
msgid "Failed to launch \"%s\""
|
||||||
"aspect ratio, and consolidating them further to reduce the bounding box. This "
|
msgstr "Starten von »%s« fehlgeschlagen"
|
||||||
"setting applies only with the natural placement strategy."
|
|
||||||
msgstr ""
|
|
||||||
"Versuchen, mehr Bildschirmfläche zum Platzieren der Fenstervorschaubilder zu "
|
|
||||||
"verwenden, indem das Bildschirmseitenverhältnis berücksichtigt wird und diese "
|
|
||||||
"stärker zusammengelegt werden, um den umgebenden Rahmen zu verkleinern. Diese "
|
|
||||||
"Einstellung betrifft nur den natürlichen Platzierungsalgorithmus."
|
|
||||||
|
|
||||||
#: ../extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml.in.h:4
|
#: ../extensions/places-menu/placeDisplay.js:98
|
||||||
msgid "Use more screen for windows"
|
#: ../extensions/places-menu/placeDisplay.js:121
|
||||||
msgstr "Mehr Bildschirmbereich für Fenster verwenden"
|
msgid "Computer"
|
||||||
|
msgstr "Rechner"
|
||||||
|
|
||||||
#: ../extensions/places-menu/extension.js:36
|
#: ../extensions/places-menu/placeDisplay.js:199
|
||||||
msgid "Removable Devices"
|
msgid "Home"
|
||||||
msgstr "Wechseldatenträger"
|
msgstr "Persönlicher Ordner"
|
||||||
|
|
||||||
|
#: ../extensions/places-menu/placeDisplay.js:286
|
||||||
|
msgid "Browse Network"
|
||||||
|
msgstr "Netzwerk durchsuchen"
|
||||||
|
|
||||||
|
#: ../extensions/systemMonitor/extension.js:213
|
||||||
|
msgid "CPU"
|
||||||
|
msgstr "CPU"
|
||||||
|
|
||||||
|
#: ../extensions/systemMonitor/extension.js:266
|
||||||
|
msgid "Memory"
|
||||||
|
msgstr "Speicher"
|
||||||
|
|
||||||
#: ../extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml.in.h:1
|
#: ../extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml.in.h:1
|
||||||
|
msgid "Theme name"
|
||||||
|
msgstr "Themenname"
|
||||||
|
|
||||||
|
#: ../extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml.in.h:2
|
||||||
msgid "The name of the theme, to be loaded from ~/.themes/name/gnome-shell"
|
msgid "The name of the theme, to be loaded from ~/.themes/name/gnome-shell"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Der Name des Themas, welches aus ~/.themes/name/gnome-shell geladen werden "
|
"Der Name des Themas, welches aus ~/.themes/name/gnome-shell geladen werden "
|
||||||
"soll"
|
"soll"
|
||||||
|
|
||||||
#: ../extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml.in.h:2
|
#: ../extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml.in.h:1
|
||||||
msgid "Theme name"
|
msgid "When to group windows"
|
||||||
msgstr "Themenname"
|
msgstr "Fenstergruppierung"
|
||||||
|
|
||||||
#: ../extensions/xrandr-indicator/extension.js:26
|
#: ../extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml.in.h:2
|
||||||
|
msgid ""
|
||||||
|
"Decides when to group windows from the same application on the window list. "
|
||||||
|
"Possible values are \"never\" and \"always\"."
|
||||||
|
msgstr ""
|
||||||
|
"Legt fest, ob Fenster der gleichen Anwendung in der Fensterliste gruppiert "
|
||||||
|
"werden sollen. Mögliche Werte sind »never« (nie) und »always« (immer)."
|
||||||
|
|
||||||
|
#: ../extensions/window-list/prefs.js:30
|
||||||
|
msgid "Window Grouping"
|
||||||
|
msgstr "Fenstergruppierung"
|
||||||
|
|
||||||
|
#: ../extensions/window-list/prefs.js:49
|
||||||
|
msgid "Never group windows"
|
||||||
|
msgstr "Fenster niemals gruppieren"
|
||||||
|
|
||||||
|
#: ../extensions/window-list/prefs.js:50
|
||||||
|
msgid "Always group windows"
|
||||||
|
msgstr "Fenster immer gruppieren"
|
||||||
|
|
||||||
|
#: ../extensions/workspace-indicator/extension.js:30
|
||||||
|
msgid "Workspace Indicator"
|
||||||
|
msgstr "Arbeitsflächenindikator"
|
||||||
|
|
||||||
|
#: ../extensions/workspace-indicator/prefs.js:141
|
||||||
|
msgid "Workspace names:"
|
||||||
|
msgstr "Namen der Arbeitsflächen:"
|
||||||
|
|
||||||
|
#: ../extensions/workspace-indicator/prefs.js:152
|
||||||
|
msgid "Name"
|
||||||
|
msgstr "Name"
|
||||||
|
|
||||||
|
#: ../extensions/workspace-indicator/prefs.js:186
|
||||||
|
#, c-format
|
||||||
|
msgid "Workspace %d"
|
||||||
|
msgstr "Arbeitsfläche %d"
|
||||||
|
|
||||||
|
#: ../extensions/xrandr-indicator/extension.js:30
|
||||||
msgid "Normal"
|
msgid "Normal"
|
||||||
msgstr "Normal"
|
msgstr "Normal"
|
||||||
|
|
||||||
#: ../extensions/xrandr-indicator/extension.js:27
|
#: ../extensions/xrandr-indicator/extension.js:31
|
||||||
msgid "Left"
|
msgid "Left"
|
||||||
msgstr "Links"
|
msgstr "Links"
|
||||||
|
|
||||||
#: ../extensions/xrandr-indicator/extension.js:28
|
#: ../extensions/xrandr-indicator/extension.js:32
|
||||||
msgid "Right"
|
msgid "Right"
|
||||||
msgstr "Rechts"
|
msgstr "Rechts"
|
||||||
|
|
||||||
#: ../extensions/xrandr-indicator/extension.js:29
|
#: ../extensions/xrandr-indicator/extension.js:33
|
||||||
msgid "Upside-down"
|
msgid "Upside-down"
|
||||||
msgstr "Kopfüber"
|
msgstr "Kopfüber"
|
||||||
|
|
||||||
#: ../extensions/xrandr-indicator/extension.js:78
|
#: ../extensions/xrandr-indicator/extension.js:50
|
||||||
msgid "Configure display settings..."
|
msgid "Display"
|
||||||
msgstr "Bildschirmeinstellungen festlegen …"
|
msgstr "Anzeige"
|
||||||
|
|
||||||
|
#: ../extensions/xrandr-indicator/extension.js:80
|
||||||
|
msgid "Display Settings"
|
||||||
|
msgstr "Bildschirmeinstellungen"
|
||||||
|
|
||||||
|
#~ msgid "The application icon mode."
|
||||||
|
#~ msgstr "Der Modus des Anwendungssymbols."
|
||||||
|
|
||||||
|
#~ 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 ""
|
||||||
|
#~ "Legt fest, wie die Fenster im Fensterumschalter angezeigt werden. Gültige "
|
||||||
|
#~ "Werte sind »thumbnail-only« (zeigt ein Vorschaubild des Fensters), »app-"
|
||||||
|
#~ "icon-only« (zeigt das Anwendungssymbol) oder »both« (beides)."
|
||||||
|
|
||||||
|
#~ msgid "Devices"
|
||||||
|
#~ msgstr "Geräte"
|
||||||
|
|
||||||
|
#~ msgid "Bookmarks"
|
||||||
|
#~ msgstr "Lesezeichen"
|
||||||
|
|
||||||
|
#~ msgid "Network"
|
||||||
|
#~ msgstr "Netzwerk"
|
||||||
|
|
||||||
|
#~ msgid "File System"
|
||||||
|
#~ msgstr "Dateisystem"
|
||||||
|
|
||||||
|
#~ msgid "Drag here to add favorites"
|
||||||
|
#~ msgstr "Hierher ziehen, um zu Favoriten hinzuzufügen"
|
||||||
|
|
||||||
|
#~ msgid "New Window"
|
||||||
|
#~ msgstr "Neues Fenster"
|
||||||
|
|
||||||
|
#~ msgid "Quit Application"
|
||||||
|
#~ msgstr "Anwendung beenden"
|
||||||
|
|
||||||
|
#~ msgid "Remove from Favorites"
|
||||||
|
#~ msgstr "Aus Favoriten entfernen"
|
||||||
|
|||||||
@@ -9,145 +9,85 @@ msgstr ""
|
|||||||
"Project-Id-Version: gnome-shell-extensions master\n"
|
"Project-Id-Version: gnome-shell-extensions 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=extensions\n"
|
"shell&keywords=I18N+L10N&component=extensions\n"
|
||||||
"POT-Creation-Date: 2011-09-17 15:20+0000\n"
|
"POT-Creation-Date: 2012-10-08 17:42+0000\n"
|
||||||
"PO-Revision-Date: 2011-09-18 14:34+0300\n"
|
"PO-Revision-Date: 2012-10-11 17:16+0200\n"
|
||||||
"Last-Translator: Ιωάννης Ζαμπούκας <ioza1964@yahoo.gr>\n"
|
"Last-Translator: Tom Tryfonidis <tomtryf@gmail.com>\n"
|
||||||
"Language-Team: Greek <team@gnome.gr>\n"
|
"Language-Team: Greek <team@gnome.gr>\n"
|
||||||
|
"Language: el\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: 8bit\n"
|
||||||
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
|
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
|
||||||
|
|
||||||
#: ../extensions/alternative-status-menu/extension.js:44
|
#: ../extensions/alternate-tab/org.gnome.shell.extensions.alternate-tab.gschema.xml.in.h:1
|
||||||
msgid "Notifications"
|
msgid "The application icon mode."
|
||||||
msgstr "Ειδοποιήσεις"
|
msgstr "Η λειτουργία εικονιδίου της εφαρμογής"
|
||||||
|
|
||||||
#: ../extensions/alternative-status-menu/extension.js:52
|
#: ../extensions/alternate-tab/org.gnome.shell.extensions.alternate-tab.gschema.xml.in.h:2
|
||||||
msgid "Online Accounts"
|
msgid ""
|
||||||
msgstr "Λογαριασμοί διαδικτύου"
|
"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'."
|
||||||
|
|
||||||
#: ../extensions/alternative-status-menu/extension.js:56
|
#: ../extensions/alternate-tab/prefs.js:26
|
||||||
msgid "System Settings"
|
msgid "Thumbnail only"
|
||||||
msgstr "Ρυθμίσεις συστήματος"
|
msgstr "Μόνο μικρογραφίες"
|
||||||
|
|
||||||
#: ../extensions/alternative-status-menu/extension.js:63
|
#: ../extensions/alternate-tab/prefs.js:27
|
||||||
msgid "Lock Screen"
|
msgid "Application icon only"
|
||||||
msgstr "Κλείδωμα οθόνης"
|
msgstr "Μόνο εικονίδια εφαρμογών"
|
||||||
|
|
||||||
#: ../extensions/alternative-status-menu/extension.js:68
|
#: ../extensions/alternate-tab/prefs.js:28
|
||||||
msgid "Switch User"
|
msgid "Thumbnail and application icon"
|
||||||
msgstr "Αλλαγή χρήστη"
|
msgstr "Εικονίδια μικρογραφιών και εφαρμογών"
|
||||||
|
|
||||||
#: ../extensions/alternative-status-menu/extension.js:73
|
#: ../extensions/alternate-tab/prefs.js:43
|
||||||
msgid "Log Out..."
|
msgid "Present windows as"
|
||||||
msgstr "Αποσύνδεση…"
|
msgstr "Παρουσίαση παραθύρων ως"
|
||||||
|
|
||||||
#: ../extensions/alternative-status-menu/extension.js:81
|
#: ../extensions/alternate-tab/prefs.js:68
|
||||||
|
msgid "Show only windows in the current workspace"
|
||||||
|
msgstr "Προβολή των παραθύρων μόνο στον τρέχων χώρο εργασίας"
|
||||||
|
|
||||||
|
#. add the new entries
|
||||||
|
#: ../extensions/alternative-status-menu/extension.js:86
|
||||||
msgid "Suspend"
|
msgid "Suspend"
|
||||||
msgstr "Αναστολή"
|
msgstr "Αναστολή"
|
||||||
|
|
||||||
#: ../extensions/alternative-status-menu/extension.js:87
|
#: ../extensions/alternative-status-menu/extension.js:91
|
||||||
msgid "Hibernate"
|
msgid "Hibernate"
|
||||||
msgstr "Αδρανοποίηση"
|
msgstr "Αδρανοποίηση"
|
||||||
|
|
||||||
#: ../extensions/alternative-status-menu/extension.js:93
|
#: ../extensions/alternative-status-menu/extension.js:96
|
||||||
msgid "Power Off..."
|
msgid "Power Off"
|
||||||
msgstr "Σβήσιμο…"
|
msgstr "Τερματισμός"
|
||||||
|
|
||||||
#: ../extensions/alternate-tab/extension.js:44
|
#: ../extensions/alternative-status-menu/org.gnome.shell.extensions.alternative-status-menu.gschema.xml.in.h:1
|
||||||
msgid ""
|
msgid "Enable suspending"
|
||||||
"This is the first time you use the Alternate Tab extension. \n"
|
msgstr "Ενεργοποίηση αναστολής"
|
||||||
"Please choose your preferred behaviour:\n"
|
|
||||||
"\n"
|
|
||||||
"All & Thumbnails:\n"
|
|
||||||
" This mode presents all applications from all workspaces in one "
|
|
||||||
"selection \n"
|
|
||||||
" list. Instead of using the application icon of every window, it uses "
|
|
||||||
"small \n"
|
|
||||||
" thumbnails resembling the window itself. \n"
|
|
||||||
"\n"
|
|
||||||
"Workspace & Icons:\n"
|
|
||||||
" This mode let's you switch between the applications of your current \n"
|
|
||||||
" workspace and gives you additionally the option to switch to the last "
|
|
||||||
"used \n"
|
|
||||||
" application of your previous workspace. This is always the last symbol "
|
|
||||||
"in \n"
|
|
||||||
" the list and is segregated by a separator/vertical line if available. \n"
|
|
||||||
" Every window is represented by its application icon. \n"
|
|
||||||
"\n"
|
|
||||||
"Native:\n"
|
|
||||||
" This mode is the native GNOME 3 behaviour or in other words: Clicking \n"
|
|
||||||
" native switches the Alternate Tab extension off. \n"
|
|
||||||
msgstr ""
|
|
||||||
"Αυτή είναι η πρώτη φορά που χρησιμοποιήσατε την εναλλακτική επέκταση "
|
|
||||||
"στηλοθέτη. \n"
|
|
||||||
"Παρακαλούμε επιλέξτε την συμπεριφορά που επιθυμείτε εσείς:\n"
|
|
||||||
"\n"
|
|
||||||
"Όλα & μικρογραφίες:\n"
|
|
||||||
" Αυτή η κατάσταση εμφανίζει όλες τις εφαρμογές από όλους τους χώρους "
|
|
||||||
"εργασίας σε μια επιλογή \n"
|
|
||||||
" λίστα. Αντί να χρησιμοποιεί το εικονίδιο της εφαρμογής από κάθε "
|
|
||||||
"παράθυρο, χρησιμοποιεί μικρές \n"
|
|
||||||
" μικρογραφίες που μοιάζουν με το ίδιο το παράθυρο. \n"
|
|
||||||
"\n"
|
|
||||||
"Χώρος εργασίας & εικονίδια:\n"
|
|
||||||
" Αυτή η λειτουργία σας επιτρέπει να κάνετε εναλλαγή μεταξύ των εφαρμογών "
|
|
||||||
"του τρέχοντος \n"
|
|
||||||
" χώρου εργασίας σας και σας δίνει επιπλέον τη δυνατότητα να μεταβείτε "
|
|
||||||
"στην τελευταία χρησιμοποιημένη \n"
|
|
||||||
" εφαρμογή του προηγούμενου χώρου εργασίας σας. Αυτό είναι πάντα το "
|
|
||||||
"τελευταίο σύμβολο στη \n"
|
|
||||||
" λίστα και είναι απομονωμένο από ένα διαχωριστικό/κάθετη γραμμή, εάν "
|
|
||||||
"υπάρχει. \n"
|
|
||||||
" Κάθε παράθυρο αντιπροσωπεύεται από εικονίδιο της εφαρμογής της. \n"
|
|
||||||
"\n"
|
|
||||||
"Μητρική:\n"
|
|
||||||
" Αυτή η λειτουργία είναι η μητρική συμπεριφορά του GNOME 3 ή με άλλα "
|
|
||||||
"λόγια: Αν κάνετε κλικ \n"
|
|
||||||
" στο μητρική θέτει εκτός λειτουργίας την εναλλακτική επέκταση "
|
|
||||||
"στηλοθέτη. \n"
|
|
||||||
|
|
||||||
#: ../extensions/alternate-tab/extension.js:269
|
#: ../extensions/alternative-status-menu/org.gnome.shell.extensions.alternative-status-menu.gschema.xml.in.h:2
|
||||||
msgid "Alt Tab Behaviour"
|
msgid "Control the visibility of the Suspend menu item"
|
||||||
msgstr "Συμπεριφορά Alt Tab"
|
msgstr "Ελέγχει την ορατότητα του αντικειμένου Αναστολη"
|
||||||
|
|
||||||
#: ../extensions/alternate-tab/extension.js:285
|
#: ../extensions/alternative-status-menu/org.gnome.shell.extensions.alternative-status-menu.gschema.xml.in.h:3
|
||||||
msgid "All & Thumbnails"
|
msgid "Enable hibernating"
|
||||||
msgstr "Όλα & μικρογραφίες"
|
msgstr "Ενεργοποίηση αδρανοποίησης"
|
||||||
|
|
||||||
#: ../extensions/alternate-tab/extension.js:292
|
#: ../extensions/alternative-status-menu/org.gnome.shell.extensions.alternative-status-menu.gschema.xml.in.h:4
|
||||||
msgid "Workspace & Icons"
|
msgid "Control the visibility of the Hibernate menu item"
|
||||||
msgstr "Χώρος εργασίας & εικονίδια"
|
msgstr "Ελέγχει την ορατότητα του αντικειμένου Αδρανοποίηση"
|
||||||
|
|
||||||
#: ../extensions/alternate-tab/extension.js:299
|
|
||||||
msgid "Native"
|
|
||||||
msgstr "Εγγενή"
|
|
||||||
|
|
||||||
#: ../extensions/alternate-tab/extension.js:306
|
|
||||||
msgid "Cancel"
|
|
||||||
msgstr "Ακύρωση"
|
|
||||||
|
|
||||||
#: ../extensions/alternate-tab/org.gnome.shell.extensions.alternate-tab.gschema.xml.in.h:1
|
|
||||||
msgid "Ask the user for a default behaviour if true."
|
|
||||||
msgstr "Ρωτήστε τον χρήστη για μια προεπιλεγμένη συμπεριφορα εαν αληθεύει."
|
|
||||||
|
|
||||||
#: ../extensions/alternate-tab/org.gnome.shell.extensions.alternate-tab.gschema.xml.in.h:2
|
|
||||||
msgid "Indicates if Alternate Tab is newly installed"
|
|
||||||
msgstr "Υποδεικνύει αν ο εναλλακτικός στηλοθέτης είναι νεοεισαχθείς"
|
|
||||||
|
|
||||||
#: ../extensions/alternate-tab/org.gnome.shell.extensions.alternate-tab.gschema.xml.in.h:3
|
|
||||||
msgid ""
|
|
||||||
"Sets the Alt-Tab behaviour. Possible values are: native, all_thumbnails and "
|
|
||||||
"workspace_icons."
|
|
||||||
msgstr ""
|
|
||||||
"Ρυθμίζει την συμπεριφορά του Alt Tab. Πιθανές τιμές είναι οι εξής: μητρική, "
|
|
||||||
"όλες_μικρογραφίες και εικονίδια_χώρου εργασίας."
|
|
||||||
|
|
||||||
#: ../extensions/alternate-tab/org.gnome.shell.extensions.alternate-tab.gschema.xml.in.h:4
|
|
||||||
msgid "The alt tab behaviour."
|
|
||||||
msgstr "Η συμπεριφορά alt tab."
|
|
||||||
|
|
||||||
#: ../extensions/auto-move-windows/org.gnome.shell.extensions.auto-move-windows.gschema.xml.in.h:1
|
#: ../extensions/auto-move-windows/org.gnome.shell.extensions.auto-move-windows.gschema.xml.in.h:1
|
||||||
|
msgid "Application and workspace list"
|
||||||
|
msgstr "Λίστα εφαρμογών και χώρου εργασίας"
|
||||||
|
|
||||||
|
#: ../extensions/auto-move-windows/org.gnome.shell.extensions.auto-move-windows.gschema.xml.in.h:2
|
||||||
msgid ""
|
msgid ""
|
||||||
"A list of strings, each containing an application id (desktop file name), "
|
"A list of strings, each containing an application id (desktop file name), "
|
||||||
"followed by a colon and the workspace number"
|
"followed by a colon and the workspace number"
|
||||||
@@ -156,124 +96,175 @@ msgstr ""
|
|||||||
"(όνομα αρχείου επιφάνειας εργασίας), ακολουθούμενη από άνω και κάτω τελεία "
|
"(όνομα αρχείου επιφάνειας εργασίας), ακολουθούμενη από άνω και κάτω τελεία "
|
||||||
"και τον αριθμό του χώρου εργασίας"
|
"και τον αριθμό του χώρου εργασίας"
|
||||||
|
|
||||||
#: ../extensions/auto-move-windows/org.gnome.shell.extensions.auto-move-windows.gschema.xml.in.h:2
|
#: ../extensions/auto-move-windows/prefs.js:55
|
||||||
msgid "Application and workspace list"
|
msgid "Application"
|
||||||
msgstr "Λίστα εφαρμογής και χώρου εργασίας"
|
msgstr "Εφαρμογή"
|
||||||
|
|
||||||
#: ../extensions/dock/extension.js:486
|
#: ../extensions/auto-move-windows/prefs.js:64
|
||||||
|
#: ../extensions/auto-move-windows/prefs.js:106
|
||||||
|
msgid "Workspace"
|
||||||
|
msgstr "Χώρος εργασίας"
|
||||||
|
|
||||||
|
#: ../extensions/auto-move-windows/prefs.js:80
|
||||||
|
msgid "Add rule"
|
||||||
|
msgstr "Προσθήκη κανόνα"
|
||||||
|
|
||||||
|
#: ../extensions/auto-move-windows/prefs.js:94
|
||||||
|
msgid "Create new matching rule"
|
||||||
|
msgstr "Δημιουργία νέου κανόνα που ταιριάζει"
|
||||||
|
|
||||||
|
#: ../extensions/auto-move-windows/prefs.js:98
|
||||||
|
msgid "Add"
|
||||||
|
msgstr "Προσθήκη"
|
||||||
|
|
||||||
|
#: ../extensions/dock/extension.js:600
|
||||||
msgid "Drag here to add favorites"
|
msgid "Drag here to add favorites"
|
||||||
msgstr "Σύρετε εδώ για να προσθέσετε αγαπημένα"
|
msgstr "Σύρετε εδώ για να προσθέσετε αγαπημένα"
|
||||||
|
|
||||||
#: ../extensions/dock/extension.js:820
|
#: ../extensions/dock/extension.js:926
|
||||||
msgid "New Window"
|
msgid "New Window"
|
||||||
msgstr "Νέο παράθυρο"
|
msgstr "Νέο παράθυρο"
|
||||||
|
|
||||||
#: ../extensions/dock/extension.js:822
|
#: ../extensions/dock/extension.js:928
|
||||||
msgid "Quit Application"
|
msgid "Quit Application"
|
||||||
msgstr "Εγκατάλειψη εφαρμογής"
|
msgstr "Εγκατάλειψη εφαρμογής"
|
||||||
|
|
||||||
#: ../extensions/dock/extension.js:827
|
#: ../extensions/dock/extension.js:933
|
||||||
msgid "Remove from Favorites"
|
msgid "Remove from Favorites"
|
||||||
msgstr "Απομάκρυνση από τα αγαπημένα"
|
msgstr "Απομάκρυνση από τα αγαπημένα"
|
||||||
|
|
||||||
#: ../extensions/dock/extension.js:828
|
#: ../extensions/dock/extension.js:934
|
||||||
msgid "Add to Favorites"
|
msgid "Add to Favorites"
|
||||||
msgstr "Προσθήκη στα αγαπημένα"
|
msgstr "Προσθήκη στα αγαπημένα"
|
||||||
|
|
||||||
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:1
|
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:1
|
||||||
msgid "Autohide duration"
|
|
||||||
msgstr "Διάρκεια αυτόματης απόκρυψης"
|
|
||||||
|
|
||||||
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:2
|
|
||||||
msgid "Autohide effect"
|
|
||||||
msgstr "Εφέ αυτόματης απόκρυψης"
|
|
||||||
|
|
||||||
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:3
|
|
||||||
msgid "Enable/disable autohide"
|
|
||||||
msgstr "Ενεργοποίηση/απενεργοποίηση αυτόματης απόκρυψης"
|
|
||||||
|
|
||||||
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:4
|
|
||||||
msgid "Icon size"
|
|
||||||
msgstr "Μέγεθος εικονιδίου"
|
|
||||||
|
|
||||||
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:5
|
|
||||||
msgid "Position of the dock"
|
msgid "Position of the dock"
|
||||||
msgstr "Θέση υποδοχέα"
|
msgstr "Θέση υποδοχέα"
|
||||||
|
|
||||||
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:6
|
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:2
|
||||||
msgid "Sets icon size of the dock."
|
|
||||||
msgstr "Ρυθμίζει το μέγεθος εικόνας του υποδοχέα."
|
|
||||||
|
|
||||||
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:7
|
|
||||||
msgid ""
|
|
||||||
"Sets the effect of the hide dock. Allowed values are 'resize' or 'rescale'"
|
|
||||||
msgstr ""
|
|
||||||
"Ρυθμίζειτην επίδραση κρυψίματος του υποδοχέα. Επιτρεπόμενες τιμές είναι "
|
|
||||||
"resize («αλλαγή μεγέθους») ή rescale («αλλαγή κλίμακας»)"
|
|
||||||
|
|
||||||
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:8
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"Sets the position of the dock in the screen. Allowed values are 'right' or "
|
"Sets the position of the dock in the screen. Allowed values are 'right' or "
|
||||||
"'left'"
|
"'left'"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Ρυθμίζει τη θέση του υποδοχέα στην οθόνη. Επιτρεπόμενες τιμές είναι right («δεξιά») "
|
"Ρυθμίζει τη θέση του υποδοχέα στην οθόνη. Επιτρεπόμενες τιμές είναι right "
|
||||||
"ή right («αριστερά»)"
|
"(«δεξιά») ή right («αριστερά»)"
|
||||||
|
|
||||||
|
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:3
|
||||||
|
msgid "Icon size"
|
||||||
|
msgstr "Μέγεθος εικονιδίου"
|
||||||
|
|
||||||
|
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:4
|
||||||
|
msgid "Sets icon size of the dock."
|
||||||
|
msgstr "Ρυθμίζει το μέγεθος εικόνας του υποδοχέα."
|
||||||
|
|
||||||
|
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:5
|
||||||
|
msgid "Enable/disable autohide"
|
||||||
|
msgstr "Ενεργοποίηση/απενεργοποίηση αυτόματης απόκρυψης"
|
||||||
|
|
||||||
|
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:6
|
||||||
|
msgid "Autohide effect"
|
||||||
|
msgstr "Εφέ αυτόματης απόκρυψης"
|
||||||
|
|
||||||
|
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:7
|
||||||
|
msgid ""
|
||||||
|
"Sets the effect of the hide dock. Allowed values are 'resize', 'rescale' and "
|
||||||
|
"'move'"
|
||||||
|
msgstr ""
|
||||||
|
"Ρυθμίζει το εφέ κρυψίματος του υποδοχέα. Επιτρεπόμενες τιμές είναι 'resize', "
|
||||||
|
"'rescale' και 'move'"
|
||||||
|
|
||||||
|
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:8
|
||||||
|
msgid "Autohide duration"
|
||||||
|
msgstr "Διάρκεια αυτόματης απόκρυψης"
|
||||||
|
|
||||||
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:9
|
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:9
|
||||||
msgid "Sets the time duration of the autohide effect."
|
msgid "Sets the time duration of the autohide effect."
|
||||||
msgstr "Ρυθμίζει την χρονική διάρκεια του εφέ αυτόματης απόκρυψης."
|
msgstr "Ρυθμίζει την χρονική διάρκεια του εφέ αυτόματης απόκρυψης."
|
||||||
|
|
||||||
#: ../extensions/example/extension.js:11
|
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:10
|
||||||
msgid "Hello, world!"
|
msgid "Monitor"
|
||||||
msgstr "Καλημέρα, Κόσμε!"
|
msgstr "Οθόνη"
|
||||||
|
|
||||||
#: ../extensions/gajim/extension.js:227
|
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:11
|
||||||
|
msgid ""
|
||||||
|
"Sets monitor to display dock in. The default value (-1) is the primary "
|
||||||
|
"monitor."
|
||||||
|
msgstr ""
|
||||||
|
"Ορίζει την οθόνη για την εμφάνιση του ταμπλό. Η προεπιλεγμένη τιμή (-1) "
|
||||||
|
"είναι η κύρια οθόνη."
|
||||||
|
|
||||||
|
#: ../extensions/drive-menu/extension.js:72
|
||||||
|
#, c-format
|
||||||
|
msgid "Ejecting drive '%s' failed:"
|
||||||
|
msgstr "Απέτυχε η εξαγωγή του δίσκου '%s':"
|
||||||
|
|
||||||
|
#: ../extensions/drive-menu/extension.js:89
|
||||||
|
msgid "Removable devices"
|
||||||
|
msgstr "Αφαιρούμενες συσκευές"
|
||||||
|
|
||||||
|
#: ../extensions/drive-menu/extension.js:106
|
||||||
|
#| msgid "Open file manager"
|
||||||
|
msgid "Open File"
|
||||||
|
msgstr "Άνοιγμα αρχείου"
|
||||||
|
|
||||||
|
#: ../extensions/example/extension.js:17
|
||||||
|
msgid "Hello, world!"
|
||||||
|
msgstr "Γεια σου, κόσμε!"
|
||||||
|
|
||||||
|
#: ../extensions/example/org.gnome.shell.extensions.example.gschema.xml.in.h:1
|
||||||
|
msgid "Alternative greeting text."
|
||||||
|
msgstr "Εναλλακτικό κείμενο χαιρετισμού"
|
||||||
|
|
||||||
|
#: ../extensions/example/org.gnome.shell.extensions.example.gschema.xml.in.h:2
|
||||||
|
msgid ""
|
||||||
|
"If not empty, it contains the text that will be shown when clicking on the "
|
||||||
|
"panel."
|
||||||
|
msgstr ""
|
||||||
|
"Αν δεν είναι κενό, περιέχει το κείμενο που θα εμφανιστεί όταν θα κάνετε κλικ "
|
||||||
|
"στον πίνακα εφαρμογών."
|
||||||
|
|
||||||
|
#. TRANSLATORS: Example is the name of the extension, should not be
|
||||||
|
#. translated
|
||||||
|
#: ../extensions/example/prefs.js:30
|
||||||
|
msgid ""
|
||||||
|
"Example aims to show how to build well behaved extensions for the Shell and "
|
||||||
|
"as such it has little functionality on its own.\n"
|
||||||
|
"Nevertheless it's possible to customize the greeting message."
|
||||||
|
msgstr ""
|
||||||
|
"Το παράδειγμα στοχεύει να δείξει πώς να δημιουργήσουμε επεκτάσεις για το "
|
||||||
|
"κέλυφος που συμπεριφέρονται σωστά και ως αυτού έχει μικρή λειτουργικότητα "
|
||||||
|
"από μόνο του.\n"
|
||||||
|
"Παρ' όλα αυτά είναι δυνατό να προσαρμόσετε το μήνυμα χαιρετισμού."
|
||||||
|
|
||||||
|
#: ../extensions/example/prefs.js:36
|
||||||
|
msgid "Message:"
|
||||||
|
msgstr "Μήνυμα:"
|
||||||
|
|
||||||
|
#: ../extensions/gajim/extension.js:226
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is away."
|
msgid "%s is away."
|
||||||
msgstr "%s είναι εκτός."
|
msgstr "%s είναι εκτός."
|
||||||
|
|
||||||
#: ../extensions/gajim/extension.js:230
|
#: ../extensions/gajim/extension.js:229
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is offline."
|
msgid "%s is offline."
|
||||||
msgstr "%s είναι εκτός σύνδεσης."
|
msgstr "%s είναι εκτός σύνδεσης."
|
||||||
|
|
||||||
#: ../extensions/gajim/extension.js:233
|
#: ../extensions/gajim/extension.js:232
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is online."
|
msgid "%s is online."
|
||||||
msgstr "%s είναι σε σύνδεση."
|
msgstr "%s είναι σε σύνδεση."
|
||||||
|
|
||||||
#: ../extensions/gajim/extension.js:236
|
#: ../extensions/gajim/extension.js:235
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is busy."
|
msgid "%s is busy."
|
||||||
msgstr "%s είναι απασχολημένος/η."
|
msgstr "%s είναι απασχολημένος/η."
|
||||||
|
|
||||||
#: ../extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml.in.h:1
|
#: ../extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml.in.h:1
|
||||||
msgid ""
|
msgid "Use more screen for windows"
|
||||||
"If true, place window captions on top the respective thumbnail, overriding "
|
msgstr "Χρησιμοποιήστε περισσότερη οθόνη για τα παράθυρα"
|
||||||
"shell default of placing it at the bottom. Changing this setting requires "
|
|
||||||
"restarting the shell to have any effect."
|
|
||||||
msgstr ""
|
|
||||||
"Αν αυτό αληθεύει, τοποθετήστε τους τίτλους παράθυρου στην κορυφή της "
|
|
||||||
"αντίστοιχης μικρογραφίας, παρακάμπτοντας το προεπιλεγμένο του κελύφους πού "
|
|
||||||
"το τοποθετεί στο κάτω μέρος. Η αλλαγή αυτής της ρύθμισης απαιτεί "
|
|
||||||
"επανεκκίνηση του κέλυφους για να έχει κάποιο αποτέλεσμα."
|
|
||||||
|
|
||||||
#: ../extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml.in.h:2
|
#: ../extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml.in.h:2
|
||||||
msgid "Place window captions on top"
|
|
||||||
msgstr "Τοποθετήστε τίτλους παράθυρου στην κορυφή"
|
|
||||||
|
|
||||||
#: ../extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml.in.h:3
|
|
||||||
msgid ""
|
|
||||||
"The algorithm used to layout thumbnails in the overview. 'grid' to use the "
|
|
||||||
"default grid based algorithm, 'natural' to use another one that reflects "
|
|
||||||
"more the position and size of the actual window"
|
|
||||||
msgstr ""
|
|
||||||
"Ο αλγόριθμος που χρησιμοποιείται για την διάταξη μικρογραφιών στην "
|
|
||||||
"επισκόπηση. grid («πλέγμα») να χρησιμοποιήσει τον αλγόριθμο που βασίζετε στο "
|
|
||||||
"προεπιλεγμένο πλέγμα, natural («φυσικό») να χρησιμοποιήσει ένα άλλο που αντανακλά "
|
|
||||||
"περισσότερο τη θέση και το μέγεθος της πραγματικού παράθυρου"
|
|
||||||
|
|
||||||
#: ../extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml.in.h:4
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"Try to use more screen for placing window thumbnails by adapting to screen "
|
"Try to use more screen for placing window thumbnails by adapting to screen "
|
||||||
"aspect ratio, and consolidating them further to reduce the bounding box. "
|
"aspect ratio, and consolidating them further to reduce the bounding box. "
|
||||||
@@ -284,40 +275,262 @@ msgstr ""
|
|||||||
"εδραιώνοντας τους περαιτέρω για να μειώσετε το πλαίσιο οριοθέτησης. Αυτή η "
|
"εδραιώνοντας τους περαιτέρω για να μειώσετε το πλαίσιο οριοθέτησης. Αυτή η "
|
||||||
"ρύθμιση ισχύει μόνο με την στρατηγική φυσικής τοποθέτησης."
|
"ρύθμιση ισχύει μόνο με την στρατηγική φυσικής τοποθέτησης."
|
||||||
|
|
||||||
#: ../extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml.in.h:5
|
#: ../extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml.in.h:3
|
||||||
msgid "Use more screen for windows"
|
msgid "Place window captions on top"
|
||||||
msgstr "Χρησιμοποιήστε περισσότερη οθόνη για τα παράθυρα"
|
msgstr "Τοποθετήστε τίτλους παράθυρου στην κορυφή"
|
||||||
|
|
||||||
#: ../extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml.in.h:6
|
#: ../extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml.in.h:4
|
||||||
msgid "Window placement strategy"
|
msgid ""
|
||||||
msgstr "Στρατηγική τοποθέτησης παραθύρου"
|
"If true, place window captions on top the respective thumbnail, overriding "
|
||||||
|
"shell default of placing it at the bottom. Changing this setting requires "
|
||||||
|
"restarting the shell to have any effect."
|
||||||
|
msgstr ""
|
||||||
|
"Αν αυτό αληθεύει, τοποθετήστε τους τίτλους παράθυρου στην κορυφή της "
|
||||||
|
"αντίστοιχης μικρογραφίας, παρακάμπτοντας το προεπιλεγμένο του κελύφους πού "
|
||||||
|
"το τοποθετεί στο κάτω μέρος. Η αλλαγή αυτής της ρύθμισης απαιτεί "
|
||||||
|
"επανεκκίνηση του κέλυφους για να έχει κάποιο αποτέλεσμα."
|
||||||
|
|
||||||
|
#: ../extensions/places-menu/extension.js:46
|
||||||
|
msgid "Places"
|
||||||
|
msgstr "Τοποθεσίες"
|
||||||
|
|
||||||
|
#: ../extensions/places-menu/extension.js:47
|
||||||
|
msgid "Devices"
|
||||||
|
msgstr "Συσκευές"
|
||||||
|
|
||||||
|
#: ../extensions/places-menu/extension.js:48
|
||||||
|
msgid "Bookmarks"
|
||||||
|
msgstr "Σελιδοδείκτες"
|
||||||
|
|
||||||
|
#: ../extensions/places-menu/extension.js:49
|
||||||
|
msgid "Network"
|
||||||
|
msgstr "Δίκτυο"
|
||||||
|
|
||||||
|
#: ../extensions/places-menu/placeDisplay.js:48
|
||||||
|
#, c-format
|
||||||
|
msgid "Failed to launch \"%s\""
|
||||||
|
msgstr "Αποτυχία εκκίνησης \"%s\""
|
||||||
|
|
||||||
|
#: ../extensions/places-menu/placeDisplay.js:121
|
||||||
|
msgid "Home"
|
||||||
|
msgstr "Προσωπικός φάκελος"
|
||||||
|
|
||||||
|
#: ../extensions/places-menu/placeDisplay.js:184
|
||||||
|
msgid "File System"
|
||||||
|
msgstr "Σύστημα αρχείων"
|
||||||
|
|
||||||
|
#: ../extensions/places-menu/placeDisplay.js:188
|
||||||
|
msgid "Browse network"
|
||||||
|
msgstr "Περιήγηση δικτύου"
|
||||||
|
|
||||||
|
#: ../extensions/systemMonitor/extension.js:213
|
||||||
|
msgid "CPU"
|
||||||
|
msgstr "CPU"
|
||||||
|
|
||||||
|
#: ../extensions/systemMonitor/extension.js:266
|
||||||
|
msgid "Memory"
|
||||||
|
msgstr "Μνήμη"
|
||||||
|
|
||||||
#: ../extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml.in.h:1
|
#: ../extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml.in.h:1
|
||||||
|
msgid "Theme name"
|
||||||
|
msgstr "Όνομα θέματος"
|
||||||
|
|
||||||
|
#: ../extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml.in.h:2
|
||||||
msgid "The name of the theme, to be loaded from ~/.themes/name/gnome-shell"
|
msgid "The name of the theme, to be loaded from ~/.themes/name/gnome-shell"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Το όνομα του θέματος, για να φορτωθεί από το αρχείο ~ / .themes / name / "
|
"Το όνομα του θέματος, για να φορτωθεί από το αρχείο ~ / .themes / name / "
|
||||||
"gnome-shell"
|
"gnome-shell"
|
||||||
|
|
||||||
#: ../extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml.in.h:2
|
#: ../extensions/workspace-indicator/extension.js:30
|
||||||
msgid "Theme name"
|
msgid "Workspace Indicator"
|
||||||
msgstr "Όνομα θέματος"
|
msgstr "Δείκτης χώρου εργασίας"
|
||||||
|
|
||||||
#: ../extensions/xrandr-indicator/extension.js:26
|
#: ../extensions/workspace-indicator/prefs.js:141
|
||||||
|
msgid "Workspace names:"
|
||||||
|
msgstr "Ονόματα χώρων εργασίας:"
|
||||||
|
|
||||||
|
#: ../extensions/workspace-indicator/prefs.js:152
|
||||||
|
msgid "Name"
|
||||||
|
msgstr "Όνομα"
|
||||||
|
|
||||||
|
#: ../extensions/workspace-indicator/prefs.js:186
|
||||||
|
#, c-format
|
||||||
|
msgid "Workspace %d"
|
||||||
|
msgstr "Χώρος εργασίας %d"
|
||||||
|
|
||||||
|
#: ../extensions/xrandr-indicator/extension.js:30
|
||||||
msgid "Normal"
|
msgid "Normal"
|
||||||
msgstr "Κανονικό"
|
msgstr "Κανονικό"
|
||||||
|
|
||||||
#: ../extensions/xrandr-indicator/extension.js:27
|
#: ../extensions/xrandr-indicator/extension.js:31
|
||||||
msgid "Left"
|
msgid "Left"
|
||||||
msgstr "Αριστερά"
|
msgstr "Αριστερά"
|
||||||
|
|
||||||
#: ../extensions/xrandr-indicator/extension.js:28
|
#: ../extensions/xrandr-indicator/extension.js:32
|
||||||
msgid "Right"
|
msgid "Right"
|
||||||
msgstr "Δεξιά"
|
msgstr "Δεξιά"
|
||||||
|
|
||||||
#: ../extensions/xrandr-indicator/extension.js:29
|
#: ../extensions/xrandr-indicator/extension.js:33
|
||||||
msgid "Upside-down"
|
msgid "Upside-down"
|
||||||
msgstr "Αναποδογυρισμένο"
|
msgstr "Αναποδογυρισμένο"
|
||||||
|
|
||||||
#: ../extensions/xrandr-indicator/extension.js:78
|
#: ../extensions/xrandr-indicator/extension.js:50
|
||||||
msgid "Configure display settings..."
|
msgid "Display"
|
||||||
msgstr "Διαμορφώστε τις ρυθμίσεις της οθόνης…"
|
msgstr "Οθόνη"
|
||||||
|
|
||||||
|
#: ../extensions/xrandr-indicator/extension.js:80
|
||||||
|
msgid "Display Settings"
|
||||||
|
msgstr "Ρυθμίσεις οθόνης"
|
||||||
|
|
||||||
|
#~ msgid "The alt tab behaviour."
|
||||||
|
#~ msgstr "Η συμπεριφορά alt tab."
|
||||||
|
|
||||||
|
#~| msgid ""
|
||||||
|
#~| "Sets the Alt-Tab behaviour. Possible values are: native, all_thumbnails "
|
||||||
|
#~| "and workspace_icons."
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "Sets the Alt-Tab behaviour. Possible values are: all_thumbnails and "
|
||||||
|
#~ "workspace_icons. See the configuration dialogs for details."
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "Ρυθμίζει την συμπεριφορά του Alt Tab. Πιθανές τιμές είναι οι εξής: "
|
||||||
|
#~ "όλες_μικρογραφίες (all_thumbnails) και εικονίδια_χώρου εργασίας "
|
||||||
|
#~ "(workspace_icons). Δείτε τις ρυθμίσεις διαλόγου για λεπτομέρειες."
|
||||||
|
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "This mode presents all applications from all workspaces in one selection "
|
||||||
|
#~ "list. Instead of using the application icon of every window, it uses "
|
||||||
|
#~ "small thumbnails resembling the window itself."
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "Αυτή η κατάσταση εμφανίζει όλες τις εφαρμογές απ' όλους τους χώρους "
|
||||||
|
#~ "εργασίας σε μια λίστα επιλογής. Αντί να χρησιμοποιήσει το εικονίδιο της "
|
||||||
|
#~ "εφαρμογής για κάθε παράθυρο, χρησιμοποιεί μικρογραφίες που μοιάζουν με το "
|
||||||
|
#~ "ίδιο το παράθυρο."
|
||||||
|
|
||||||
|
#~ msgid "Workspace & Icons"
|
||||||
|
#~ msgstr "Χώρος εργασίας & εικονίδια"
|
||||||
|
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "This mode let's you switch between the applications of your current "
|
||||||
|
#~ "workspace and gives you additionally the option to switch to the last "
|
||||||
|
#~ "used application of your previous workspace. This is always the last "
|
||||||
|
#~ "symbol in the list and is segregated by a separator/vertical line if "
|
||||||
|
#~ "available. \n"
|
||||||
|
#~ "Every window is represented by its application icon."
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "Αυτή η κατάσταση σας επιτρέπει την εναλλαγή μεταξύ των εφαρμογών του "
|
||||||
|
#~ "τωρινού χώρου εργασίας και σας δίνει επιπλέον την επιλογή να μεταβείτε "
|
||||||
|
#~ "στην τελευταία χρησιμοποιημένη εφαρμογή του προηγούμενου χώρου εργασίας "
|
||||||
|
#~ "σας. Αυτό είναι πάντα το τελευταίο σύμβολο στη λιστα και διαχωρίζεται από "
|
||||||
|
#~ "μια κάθετη γραμμή αν είναι διαθέσιμη. \n"
|
||||||
|
#~ "Κάθε παράθυρο αντιπροσωπεύεται από το εικονίδιο της εφαρμογής του."
|
||||||
|
|
||||||
|
#~ msgid "Move current selection to front before closing the popup"
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "Μετακινήστε τη τωρινή επιλογή προς τα εμπρός πριν το κλείσιμο του "
|
||||||
|
#~ "αναδυόμενου"
|
||||||
|
|
||||||
|
#, fuzzy
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "The Alternate Tab can be used in different modes, that affect the way "
|
||||||
|
#~ "windows are chosen and presented."
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "Το Alternate Tab μπορεί να χρησιμοποιηθεί σε διαφορετικές καταστάσεις, οι "
|
||||||
|
#~ "οποίες επηρεάζουν τον τρόπο που τα παράθυρα επιλέγονται και "
|
||||||
|
#~ "παρουσιάζονται."
|
||||||
|
|
||||||
|
#~ msgid "Configure display settings..."
|
||||||
|
#~ msgstr "Διαμορφώστε τις ρυθμίσεις της οθόνης…"
|
||||||
|
|
||||||
|
#~ msgid "Notifications"
|
||||||
|
#~ msgstr "Ειδοποιήσεις"
|
||||||
|
|
||||||
|
#~ msgid "Online Accounts"
|
||||||
|
#~ msgstr "Λογαριασμοί διαδικτύου"
|
||||||
|
|
||||||
|
#~ msgid "Lock Screen"
|
||||||
|
#~ msgstr "Κλείδωμα οθόνης"
|
||||||
|
|
||||||
|
#~ msgid "Switch User"
|
||||||
|
#~ msgstr "Αλλαγή χρήστη"
|
||||||
|
|
||||||
|
#~ msgid "Log Out..."
|
||||||
|
#~ msgstr "Αποσύνδεση…"
|
||||||
|
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "This is the first time you use the Alternate Tab extension. \n"
|
||||||
|
#~ "Please choose your preferred behaviour:\n"
|
||||||
|
#~ "\n"
|
||||||
|
#~ "All & Thumbnails:\n"
|
||||||
|
#~ " This mode presents all applications from all workspaces in one "
|
||||||
|
#~ "selection \n"
|
||||||
|
#~ " list. Instead of using the application icon of every window, it uses "
|
||||||
|
#~ "small \n"
|
||||||
|
#~ " thumbnails resembling the window itself. \n"
|
||||||
|
#~ "\n"
|
||||||
|
#~ "Workspace & Icons:\n"
|
||||||
|
#~ " This mode let's you switch between the applications of your current \n"
|
||||||
|
#~ " workspace and gives you additionally the option to switch to the last "
|
||||||
|
#~ "used \n"
|
||||||
|
#~ " application of your previous workspace. This is always the last "
|
||||||
|
#~ "symbol in \n"
|
||||||
|
#~ " the list and is segregated by a separator/vertical line if "
|
||||||
|
#~ "available. \n"
|
||||||
|
#~ " Every window is represented by its application icon. \n"
|
||||||
|
#~ "\n"
|
||||||
|
#~ "Native:\n"
|
||||||
|
#~ " This mode is the native GNOME 3 behaviour or in other words: "
|
||||||
|
#~ "Clicking \n"
|
||||||
|
#~ " native switches the Alternate Tab extension off. \n"
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "Αυτή είναι η πρώτη φορά που χρησιμοποιήσατε την εναλλακτική επέκταση "
|
||||||
|
#~ "στηλοθέτη. \n"
|
||||||
|
#~ "Παρακαλούμε επιλέξτε την συμπεριφορά που επιθυμείτε εσείς:\n"
|
||||||
|
#~ "\n"
|
||||||
|
#~ "Όλα & μικρογραφίες:\n"
|
||||||
|
#~ " Αυτή η κατάσταση εμφανίζει όλες τις εφαρμογές από όλους τους χώρους "
|
||||||
|
#~ "εργασίας σε μια επιλογή \n"
|
||||||
|
#~ " λίστα. Αντί να χρησιμοποιεί το εικονίδιο της εφαρμογής από κάθε "
|
||||||
|
#~ "παράθυρο, χρησιμοποιεί μικρές \n"
|
||||||
|
#~ " μικρογραφίες που μοιάζουν με το ίδιο το παράθυρο. \n"
|
||||||
|
#~ "\n"
|
||||||
|
#~ "Χώρος εργασίας & εικονίδια:\n"
|
||||||
|
#~ " Αυτή η λειτουργία σας επιτρέπει να κάνετε εναλλαγή μεταξύ των "
|
||||||
|
#~ "εφαρμογών του τρέχοντος \n"
|
||||||
|
#~ " χώρου εργασίας σας και σας δίνει επιπλέον τη δυνατότητα να μεταβείτε "
|
||||||
|
#~ "στην τελευταία χρησιμοποιημένη \n"
|
||||||
|
#~ " εφαρμογή του προηγούμενου χώρου εργασίας σας. Αυτό είναι πάντα το "
|
||||||
|
#~ "τελευταίο σύμβολο στη \n"
|
||||||
|
#~ " λίστα και είναι απομονωμένο από ένα διαχωριστικό/κάθετη γραμμή, εάν "
|
||||||
|
#~ "υπάρχει. \n"
|
||||||
|
#~ " Κάθε παράθυρο αντιπροσωπεύεται από εικονίδιο της εφαρμογής της. \n"
|
||||||
|
#~ "\n"
|
||||||
|
#~ "Μητρική:\n"
|
||||||
|
#~ " Αυτή η λειτουργία είναι η μητρική συμπεριφορά του GNOME 3 ή με άλλα "
|
||||||
|
#~ "λόγια: Αν κάνετε κλικ \n"
|
||||||
|
#~ " στο μητρική θέτει εκτός λειτουργίας την εναλλακτική επέκταση "
|
||||||
|
#~ "στηλοθέτη. \n"
|
||||||
|
|
||||||
|
#~ msgid "Alt Tab Behaviour"
|
||||||
|
#~ msgstr "Συμπεριφορά Alt Tab"
|
||||||
|
|
||||||
|
#~ msgid "Cancel"
|
||||||
|
#~ msgstr "Ακύρωση"
|
||||||
|
|
||||||
|
#~ msgid "Ask the user for a default behaviour if true."
|
||||||
|
#~ msgstr "Ρωτήστε τον χρήστη για μια προεπιλεγμένη συμπεριφορα εαν αληθεύει."
|
||||||
|
|
||||||
|
#~ msgid "Indicates if Alternate Tab is newly installed"
|
||||||
|
#~ msgstr "Υποδεικνύει αν ο εναλλακτικός στηλοθέτης είναι νεοεισαχθείς"
|
||||||
|
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "The algorithm used to layout thumbnails in the overview. 'grid' to use "
|
||||||
|
#~ "the default grid based algorithm, 'natural' to use another one that "
|
||||||
|
#~ "reflects more the position and size of the actual window"
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "Ο αλγόριθμος που χρησιμοποιείται για την διάταξη μικρογραφιών στην "
|
||||||
|
#~ "επισκόπηση. grid («πλέγμα») να χρησιμοποιήσει τον αλγόριθμο που βασίζετε "
|
||||||
|
#~ "στο προεπιλεγμένο πλέγμα, natural («φυσικό») να χρησιμοποιήσει ένα άλλο "
|
||||||
|
#~ "που αντανακλά περισσότερο τη θέση και το μέγεθος της πραγματικού παράθυρου"
|
||||||
|
|
||||||
|
#~ msgid "Window placement strategy"
|
||||||
|
#~ msgstr "Στρατηγική τοποθέτησης παραθύρου"
|
||||||
|
|||||||
+371
-204
@@ -2,308 +2,475 @@
|
|||||||
# Copyright (C) 2011 gnome-shell-extensions'S COPYRIGHT HOLDER.
|
# Copyright (C) 2011 gnome-shell-extensions'S COPYRIGHT HOLDER.
|
||||||
# This file is distributed under the same license as the gnome-shell-extensions package.
|
# This file is distributed under the same license as the gnome-shell-extensions package.
|
||||||
# Bruce Cowan <bruce@bcowan.me.uk>, 2011.
|
# Bruce Cowan <bruce@bcowan.me.uk>, 2011.
|
||||||
|
# Chris Leonard <cjlhomeaddress@gmail.com>, 2012.
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: gnome-shell-extensions\n"
|
"Project-Id-Version: gnome-shell-extensions\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
|
||||||
"POT-Creation-Date: 2011-09-08 16:00+0100\n"
|
"shell&keywords=I18N+L10N&component=extensions\n"
|
||||||
"PO-Revision-Date: 2011-09-08 16:04+0100\n"
|
"POT-Creation-Date: 2012-09-20 13:47+0000\n"
|
||||||
"Last-Translator: Bruce Cowan <bruce@bcowan.me.uk>\n"
|
"PO-Revision-Date: 2012-09-21 21:00-0400\n"
|
||||||
"Language-Team: British English <en@li.org>\n"
|
"Last-Translator: Chris Leonard <cjlhomeaddress@gmail.com>\n"
|
||||||
|
"Language-Team: Sugar Labs\n"
|
||||||
"Language: en_GB\n"
|
"Language: en_GB\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||||
"X-Generator: Virtaal 0.7.1-beta1\n"
|
"X-Generator: Virtaal 0.7.1\n"
|
||||||
|
"X-Project-Style: gnome\n"
|
||||||
|
|
||||||
#: ../extensions/alternative-status-menu/extension.js:44
|
#: ../extensions/alternate-tab/org.gnome.shell.extensions.alternate-tab.gschema.xml.in.h:1
|
||||||
msgid "Do Not Disturb"
|
msgid "The application icon mode."
|
||||||
msgstr "Do Not Disturb"
|
msgstr "The application icon mode."
|
||||||
|
|
||||||
#: ../extensions/alternative-status-menu/extension.js:52
|
#: ../extensions/alternate-tab/org.gnome.shell.extensions.alternate-tab.gschema.xml.in.h:2
|
||||||
msgid "Online Accounts"
|
msgid ""
|
||||||
msgstr "Online Accounts"
|
"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 ""
|
||||||
|
"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'."
|
||||||
|
|
||||||
#: ../extensions/alternative-status-menu/extension.js:56
|
#: ../extensions/alternate-tab/prefs.js:26
|
||||||
msgid "System Settings"
|
msgid "Thumbnail only"
|
||||||
msgstr "System Settings"
|
msgstr "Thumbnail only"
|
||||||
|
|
||||||
#: ../extensions/alternative-status-menu/extension.js:63
|
#: ../extensions/alternate-tab/prefs.js:27
|
||||||
msgid "Lock Screen"
|
msgid "Application icon only"
|
||||||
msgstr "Lock Screen"
|
msgstr "Application icon only"
|
||||||
|
|
||||||
|
#: ../extensions/alternate-tab/prefs.js:28
|
||||||
|
msgid "Thumbnail and application icon"
|
||||||
|
msgstr "Thumbnail and application icon"
|
||||||
|
|
||||||
|
#: ../extensions/alternate-tab/prefs.js:43
|
||||||
|
msgid "Present windows as"
|
||||||
|
msgstr "Present windows as"
|
||||||
|
|
||||||
|
#: ../extensions/alternate-tab/prefs.js:68
|
||||||
|
msgid "Show only windows in the current workspace"
|
||||||
|
msgstr "Show only windows in the current workspace"
|
||||||
|
|
||||||
|
#. add the new entries
|
||||||
#: ../extensions/alternative-status-menu/extension.js:68
|
#: ../extensions/alternative-status-menu/extension.js:68
|
||||||
msgid "Switch User"
|
|
||||||
msgstr "Switch User"
|
|
||||||
|
|
||||||
#: ../extensions/alternative-status-menu/extension.js:73
|
|
||||||
msgid "Log Out..."
|
|
||||||
msgstr "Log Out…"
|
|
||||||
|
|
||||||
#: ../extensions/alternative-status-menu/extension.js:81
|
|
||||||
msgid "Suspend"
|
msgid "Suspend"
|
||||||
msgstr "Suspend"
|
msgstr "Suspend"
|
||||||
|
|
||||||
#: ../extensions/alternative-status-menu/extension.js:87
|
#: ../extensions/alternative-status-menu/extension.js:73
|
||||||
msgid "Hibernate"
|
msgid "Hibernate"
|
||||||
msgstr "Hibernate"
|
msgstr "Hibernate"
|
||||||
|
|
||||||
#: ../extensions/alternative-status-menu/extension.js:93
|
#: ../extensions/alternative-status-menu/extension.js:78
|
||||||
msgid "Power Off..."
|
msgid "Power Off"
|
||||||
msgstr "Power Off…"
|
msgstr "Power Off"
|
||||||
|
|
||||||
#: ../extensions/alternate-tab/extension.js:44
|
#: ../extensions/alternative-status-menu/org.gnome.shell.extensions.alternative-status-menu.gschema.xml.in.h:1
|
||||||
msgid ""
|
msgid "Enable suspending"
|
||||||
"This is the first time you use the Alternate Tab extension. \n"
|
msgstr "Enable suspending"
|
||||||
"Please choose your preferred behaviour:\n"
|
|
||||||
"\n"
|
|
||||||
"All & Thumbnails:\n"
|
|
||||||
" This mode presents all applications from all workspaces in one "
|
|
||||||
"selection \n"
|
|
||||||
" list. Instead of using the application icon of every window, it uses "
|
|
||||||
"small \n"
|
|
||||||
" thumbnails resembling the window itself. \n"
|
|
||||||
"\n"
|
|
||||||
"Workspace & Icons:\n"
|
|
||||||
" This mode let's you switch between the applications of your current \n"
|
|
||||||
" workspace and gives you additionally the option to switch to the last "
|
|
||||||
"used \n"
|
|
||||||
" application of your previous workspace. This is always the last symbol "
|
|
||||||
"in \n"
|
|
||||||
" the list and is segregated by a separator/vertical line if available. \n"
|
|
||||||
" Every window is represented by its application icon. \n"
|
|
||||||
"\n"
|
|
||||||
"Native:\n"
|
|
||||||
" This mode is the native GNOME 3 behaviour or in other words: Clicking \n"
|
|
||||||
" native switches the Alternate Tab extension off. \n"
|
|
||||||
msgstr ""
|
|
||||||
"This is the first time you use the Alternate Tab extension. \n"
|
|
||||||
"Please choose your preferred behaviour:\n"
|
|
||||||
"\n"
|
|
||||||
"All & Thumbnails:\n"
|
|
||||||
" This mode presents all applications from all workspaces in one selection "
|
|
||||||
" list. Instead of using the application icon of every window, it uses "
|
|
||||||
"small \n"
|
|
||||||
" thumbnails resembling the window itself. \n"
|
|
||||||
"\n"
|
|
||||||
"Workspace & Icons:\n"
|
|
||||||
" This mode lets you switch between the applications of your current \n"
|
|
||||||
" workspace and additionally gives you the option to switch to the last "
|
|
||||||
"used \n"
|
|
||||||
" application of your previous workspace. This is always the last symbol "
|
|
||||||
"in \n"
|
|
||||||
" the list and is segregated by a separator/vertical line if available. \n"
|
|
||||||
" Every window is represented by its application icon. \n"
|
|
||||||
"\n"
|
|
||||||
"Native:\n"
|
|
||||||
" This mode is the native GNOME 3 behaviour or in other words: Clicking \n"
|
|
||||||
" native switches the Alternate Tab extension off. \n"
|
|
||||||
|
|
||||||
#: ../extensions/alternate-tab/extension.js:269
|
#: ../extensions/alternative-status-menu/org.gnome.shell.extensions.alternative-status-menu.gschema.xml.in.h:2
|
||||||
msgid "Alt Tab Behaviour"
|
msgid "Control the visibility of the Suspend menu item"
|
||||||
msgstr "Alt Tab Behaviour"
|
msgstr "Control the visibility of the Suspend menu item"
|
||||||
|
|
||||||
#: ../extensions/alternate-tab/extension.js:285
|
#: ../extensions/alternative-status-menu/org.gnome.shell.extensions.alternative-status-menu.gschema.xml.in.h:3
|
||||||
msgid "All & Thumbnails"
|
msgid "Enable hibernating"
|
||||||
msgstr "All & Thumbnails"
|
msgstr "Enable hibernating"
|
||||||
|
|
||||||
#: ../extensions/alternate-tab/extension.js:292
|
#: ../extensions/alternative-status-menu/org.gnome.shell.extensions.alternative-status-menu.gschema.xml.in.h:4
|
||||||
msgid "Workspace & Icons"
|
msgid "Control the visibility of the Hibernate menu item"
|
||||||
msgstr "Workspace & Icons"
|
msgstr "Control the visibility of the Hibernate menu item"
|
||||||
|
|
||||||
#: ../extensions/alternate-tab/extension.js:299
|
|
||||||
msgid "Native"
|
|
||||||
msgstr "Native"
|
|
||||||
|
|
||||||
#: ../extensions/alternate-tab/extension.js:306
|
|
||||||
msgid "Cancel"
|
|
||||||
msgstr "Cancel"
|
|
||||||
|
|
||||||
#: ../extensions/alternate-tab/org.gnome.shell.extensions.alternate-tab.gschema.xml.in.h:1
|
|
||||||
msgid "Ask the user for a default behaviour if true."
|
|
||||||
msgstr "Ask the user for a default behaviour if true."
|
|
||||||
|
|
||||||
#: ../extensions/alternate-tab/org.gnome.shell.extensions.alternate-tab.gschema.xml.in.h:2
|
|
||||||
msgid "Indicates if Alternate Tab is newly installed"
|
|
||||||
msgstr "Indicates if Alternate Tab is newly installed"
|
|
||||||
|
|
||||||
#: ../extensions/alternate-tab/org.gnome.shell.extensions.alternate-tab.gschema.xml.in.h:3
|
|
||||||
msgid ""
|
|
||||||
"Sets the Alt-Tab behaviour. Possible values are: native, all_thumbnails and "
|
|
||||||
"workspace_icons."
|
|
||||||
msgstr ""
|
|
||||||
"Sets the Alt-Tab behaviour. Possible values are: native, all_thumbnails and "
|
|
||||||
"workspace_icons."
|
|
||||||
|
|
||||||
#: ../extensions/alternate-tab/org.gnome.shell.extensions.alternate-tab.gschema.xml.in.h:4
|
|
||||||
msgid "The alt tab behaviour."
|
|
||||||
msgstr "The alt tab behaviour."
|
|
||||||
|
|
||||||
#: ../extensions/auto-move-windows/org.gnome.shell.extensions.auto-move-windows.gschema.xml.in.h:1
|
#: ../extensions/auto-move-windows/org.gnome.shell.extensions.auto-move-windows.gschema.xml.in.h:1
|
||||||
msgid ""
|
|
||||||
"A list of strings, each containing an application id (desktop file name), "
|
|
||||||
"followed by a colon and the workspace number"
|
|
||||||
msgstr ""
|
|
||||||
"A list of strings, each containing an application id (desktop file name), "
|
|
||||||
"followed by a colon and the workspace number"
|
|
||||||
|
|
||||||
#: ../extensions/auto-move-windows/org.gnome.shell.extensions.auto-move-windows.gschema.xml.in.h:2
|
|
||||||
msgid "Application and workspace list"
|
msgid "Application and workspace list"
|
||||||
msgstr "Application and workspace list"
|
msgstr "Application and workspace list"
|
||||||
|
|
||||||
#: ../extensions/dock/extension.js:486
|
#: ../extensions/auto-move-windows/org.gnome.shell.extensions.auto-move-windows.gschema.xml.in.h:2
|
||||||
|
msgid ""
|
||||||
|
"A list of strings, each containing an application id (desktop file name), "
|
||||||
|
"followed by a colon and the workspace number"
|
||||||
|
msgstr ""
|
||||||
|
"A list of strings, each containing an application id (desktop file name), "
|
||||||
|
"followed by a colon and the workspace number"
|
||||||
|
|
||||||
|
#: ../extensions/auto-move-windows/prefs.js:55
|
||||||
|
msgid "Application"
|
||||||
|
msgstr "Application"
|
||||||
|
|
||||||
|
#: ../extensions/auto-move-windows/prefs.js:64
|
||||||
|
#: ../extensions/auto-move-windows/prefs.js:106
|
||||||
|
msgid "Workspace"
|
||||||
|
msgstr "Workspace"
|
||||||
|
|
||||||
|
#: ../extensions/auto-move-windows/prefs.js:80
|
||||||
|
msgid "Add rule"
|
||||||
|
msgstr "Add rule"
|
||||||
|
|
||||||
|
#: ../extensions/auto-move-windows/prefs.js:94
|
||||||
|
msgid "Create new matching rule"
|
||||||
|
msgstr "Create new matching rule"
|
||||||
|
|
||||||
|
#: ../extensions/auto-move-windows/prefs.js:98
|
||||||
|
msgid "Add"
|
||||||
|
msgstr "Add"
|
||||||
|
|
||||||
|
#: ../extensions/dock/extension.js:600
|
||||||
msgid "Drag here to add favorites"
|
msgid "Drag here to add favorites"
|
||||||
msgstr "Drag here to add favourites"
|
msgstr "Drag here to add favourites"
|
||||||
|
|
||||||
#: ../extensions/dock/extension.js:820
|
#: ../extensions/dock/extension.js:926
|
||||||
msgid "New Window"
|
msgid "New Window"
|
||||||
msgstr "New Window"
|
msgstr "New Window"
|
||||||
|
|
||||||
#: ../extensions/dock/extension.js:822
|
#: ../extensions/dock/extension.js:928
|
||||||
msgid "Quit Application"
|
msgid "Quit Application"
|
||||||
msgstr "Quit Application"
|
msgstr "Quit Application"
|
||||||
|
|
||||||
#: ../extensions/dock/extension.js:827
|
#: ../extensions/dock/extension.js:933
|
||||||
msgid "Remove from Favorites"
|
msgid "Remove from Favorites"
|
||||||
msgstr "Remove from Favourites"
|
msgstr "Remove from Favourites"
|
||||||
|
|
||||||
#: ../extensions/dock/extension.js:828
|
#: ../extensions/dock/extension.js:934
|
||||||
msgid "Add to Favorites"
|
msgid "Add to Favorites"
|
||||||
msgstr "Add to Favourites"
|
msgstr "Add to Favourites"
|
||||||
|
|
||||||
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:1
|
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:1
|
||||||
msgid "Autohide duration"
|
|
||||||
msgstr "Autohide duration"
|
|
||||||
|
|
||||||
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:2
|
|
||||||
msgid "Autohide effect"
|
|
||||||
msgstr "Autohide effect"
|
|
||||||
|
|
||||||
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:3
|
|
||||||
msgid "Enable/disable autohide"
|
|
||||||
msgstr "Enable/disable autohide"
|
|
||||||
|
|
||||||
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:4
|
|
||||||
msgid "Icon size"
|
|
||||||
msgstr "Icon size"
|
|
||||||
|
|
||||||
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:5
|
|
||||||
msgid "Position of the dock"
|
msgid "Position of the dock"
|
||||||
msgstr "Position of the dock"
|
msgstr "Position of the dock"
|
||||||
|
|
||||||
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:6
|
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:2
|
||||||
|
msgid ""
|
||||||
|
"Sets the position of the dock in the screen. Allowed values are 'right' or "
|
||||||
|
"'left'"
|
||||||
|
msgstr ""
|
||||||
|
"Sets the position of the dock in the screen. Allowed values are 'right' or "
|
||||||
|
"'left'"
|
||||||
|
|
||||||
|
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:3
|
||||||
|
msgid "Icon size"
|
||||||
|
msgstr "Icon size"
|
||||||
|
|
||||||
|
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:4
|
||||||
msgid "Sets icon size of the dock."
|
msgid "Sets icon size of the dock."
|
||||||
msgstr "Sets icon size of the dock."
|
msgstr "Sets icon size of the dock."
|
||||||
|
|
||||||
|
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:5
|
||||||
|
msgid "Enable/disable autohide"
|
||||||
|
msgstr "Enable/disable autohide"
|
||||||
|
|
||||||
|
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:6
|
||||||
|
msgid "Autohide effect"
|
||||||
|
msgstr "Autohide effect"
|
||||||
|
|
||||||
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:7
|
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:7
|
||||||
msgid ""
|
msgid ""
|
||||||
"Sets the effect of the hide dock. Allowed values are 'resize' or 'rescale'"
|
"Sets the effect of the hide dock. Allowed values are 'resize', 'rescale' and "
|
||||||
|
"'move'"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Sets the effect of the hide dock. Allowed values are 'resize' or 'rescale'"
|
"Sets the effect of the hide dock. Allowed values are 'resize', 'rescale' and "
|
||||||
|
"'move'"
|
||||||
|
|
||||||
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:8
|
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:8
|
||||||
msgid ""
|
msgid "Autohide duration"
|
||||||
"Sets the position of the dock in the screen. Allowed values are 'right' or "
|
msgstr "Autohide duration"
|
||||||
"'left'"
|
|
||||||
msgstr ""
|
|
||||||
"Sets the position of the dock in the screen. Allowed values are 'right' or "
|
|
||||||
"'left'"
|
|
||||||
|
|
||||||
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:9
|
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:9
|
||||||
msgid "Sets the time duration of the autohide effect."
|
msgid "Sets the time duration of the autohide effect."
|
||||||
msgstr "Sets the time duration of the autohide effect."
|
msgstr "Sets the time duration of the autohide effect."
|
||||||
|
|
||||||
#: ../extensions/example/extension.js:11
|
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:10
|
||||||
|
msgid "Monitor"
|
||||||
|
msgstr "Monitor"
|
||||||
|
|
||||||
|
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:11
|
||||||
|
msgid ""
|
||||||
|
"Sets monitor to display dock in. The default value (-1) is the primary "
|
||||||
|
"monitor."
|
||||||
|
msgstr ""
|
||||||
|
"Sets monitor to display dock in. The default value (-1) is the primary "
|
||||||
|
"monitor."
|
||||||
|
|
||||||
|
#: ../extensions/drive-menu/extension.js:56
|
||||||
|
msgid "Removable devices"
|
||||||
|
msgstr "Removable devices"
|
||||||
|
|
||||||
|
#: ../extensions/drive-menu/extension.js:67
|
||||||
|
msgid "Open file manager"
|
||||||
|
msgstr "Open file manager"
|
||||||
|
|
||||||
|
#: ../extensions/example/extension.js:17
|
||||||
msgid "Hello, world!"
|
msgid "Hello, world!"
|
||||||
msgstr "Hello, world!"
|
msgstr "Hello, world!"
|
||||||
|
|
||||||
#: ../extensions/gajim/extension.js:227
|
#: ../extensions/example/org.gnome.shell.extensions.example.gschema.xml.in.h:1
|
||||||
|
msgid "Alternative greeting text."
|
||||||
|
msgstr "Alternative greeting text."
|
||||||
|
|
||||||
|
#: ../extensions/example/org.gnome.shell.extensions.example.gschema.xml.in.h:2
|
||||||
|
msgid ""
|
||||||
|
"If not empty, it contains the text that will be shown when clicking on the "
|
||||||
|
"panel."
|
||||||
|
msgstr ""
|
||||||
|
"If not empty, it contains the text that will be shown when clicking on the "
|
||||||
|
"panel."
|
||||||
|
|
||||||
|
#. TRANSLATORS: Example is the name of the extension, should not be
|
||||||
|
#. translated
|
||||||
|
#: ../extensions/example/prefs.js:30
|
||||||
|
msgid ""
|
||||||
|
"Example aims to show how to build well behaved extensions for the Shell and "
|
||||||
|
"as such it has little functionality on its own.\n"
|
||||||
|
"Nevertheless it's possible to customize the greeting message."
|
||||||
|
msgstr ""
|
||||||
|
"Example aims to show how to build well behaved extensions for the Shell and "
|
||||||
|
"as such it has little functionality on its own.\n"
|
||||||
|
"Nevertheless it's possible to customize the greeting message."
|
||||||
|
|
||||||
|
#: ../extensions/example/prefs.js:36
|
||||||
|
msgid "Message:"
|
||||||
|
msgstr "Message:"
|
||||||
|
|
||||||
|
#: ../extensions/gajim/extension.js:226
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is away."
|
msgid "%s is away."
|
||||||
msgstr "%s is away."
|
msgstr "%s is away."
|
||||||
|
|
||||||
#: ../extensions/gajim/extension.js:230
|
#: ../extensions/gajim/extension.js:229
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is offline."
|
msgid "%s is offline."
|
||||||
msgstr "%s is offline."
|
msgstr "%s is offline."
|
||||||
|
|
||||||
#: ../extensions/gajim/extension.js:233
|
#: ../extensions/gajim/extension.js:232
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is online."
|
msgid "%s is online."
|
||||||
msgstr "%s is online."
|
msgstr "%s is online."
|
||||||
|
|
||||||
#: ../extensions/gajim/extension.js:236
|
#: ../extensions/gajim/extension.js:235
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is busy."
|
msgid "%s is busy."
|
||||||
msgstr "%s is busy."
|
msgstr "%s is busy."
|
||||||
|
|
||||||
#: ../extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml.in.h:1
|
#: ../extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml.in.h:1
|
||||||
msgid ""
|
|
||||||
"If true, place window captions on top the respective thumbnail, overriding "
|
|
||||||
"shell default of placing it at the bottom. Changing this setting requires "
|
|
||||||
"restarting the shell to have any effect."
|
|
||||||
msgstr ""
|
|
||||||
"If true, place window captions on top the respective thumbnail, overriding "
|
|
||||||
"shell default of placing it at the bottom. Changing this setting requires "
|
|
||||||
"restarting the shell to have any effect."
|
|
||||||
|
|
||||||
#: ../extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml.in.h:2
|
|
||||||
msgid "Place window captions on top"
|
|
||||||
msgstr "Place window captions on top"
|
|
||||||
|
|
||||||
#: ../extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml.in.h:3
|
|
||||||
msgid ""
|
|
||||||
"The algorithm used to layout thumbnails in the overview. 'grid' to use the "
|
|
||||||
"default grid based algorithm, 'natural' to use another one that reflects "
|
|
||||||
"more the position and size of the actual window"
|
|
||||||
msgstr ""
|
|
||||||
"The algorithm used to layout thumbnails in the overview. 'grid' to use the "
|
|
||||||
"default grid based algorithm, 'natural' to use another one that reflects "
|
|
||||||
"more the position and size of the actual window"
|
|
||||||
|
|
||||||
#: ../extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml.in.h:4
|
|
||||||
msgid ""
|
|
||||||
"Try to use more screen for placing window thumbnails by adapting to screen "
|
|
||||||
"aspect ratio, and consolidating them further to reduce the bounding box. "
|
|
||||||
"This setting applies only with the natural placement strategy."
|
|
||||||
msgstr ""
|
|
||||||
"Try to use more screen for placing window thumbnails by adapting to screen "
|
|
||||||
"aspect ratio, and consolidating them further to reduce the bounding box. "
|
|
||||||
"This setting applies only with the natural placement strategy."
|
|
||||||
|
|
||||||
#: ../extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml.in.h:5
|
|
||||||
msgid "Use more screen for windows"
|
msgid "Use more screen for windows"
|
||||||
msgstr "Use more screen for windows"
|
msgstr "Use more screen for windows"
|
||||||
|
|
||||||
#: ../extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml.in.h:6
|
#: ../extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml.in.h:2
|
||||||
msgid "Window placement strategy"
|
msgid ""
|
||||||
msgstr "Window placement strategy"
|
"Try to use more screen for placing window thumbnails by adapting to screen "
|
||||||
|
"aspect ratio, and consolidating them further to reduce the bounding box. "
|
||||||
|
"This setting applies only with the natural placement strategy."
|
||||||
|
msgstr ""
|
||||||
|
"Try to use more screen for placing window thumbnails by adapting to screen "
|
||||||
|
"aspect ratio, and consolidating them further to reduce the bounding box. "
|
||||||
|
"This setting applies only with the natural placement strategy."
|
||||||
|
|
||||||
|
#: ../extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml.in.h:3
|
||||||
|
msgid "Place window captions on top"
|
||||||
|
msgstr "Place window captions on top"
|
||||||
|
|
||||||
|
#: ../extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml.in.h:4
|
||||||
|
msgid ""
|
||||||
|
"If true, place window captions on top the respective thumbnail, overriding "
|
||||||
|
"shell default of placing it at the bottom. Changing this setting requires "
|
||||||
|
"restarting the shell to have any effect."
|
||||||
|
msgstr ""
|
||||||
|
"If true, place window captions on top the respective thumbnail, overriding "
|
||||||
|
"shell default of placing it at the bottom. Changing this setting requires "
|
||||||
|
"restarting the shell to have any effect."
|
||||||
|
|
||||||
|
#: ../extensions/places-menu/extension.js:46
|
||||||
|
msgid "Places"
|
||||||
|
msgstr "Places"
|
||||||
|
|
||||||
|
#: ../extensions/places-menu/extension.js:47
|
||||||
|
msgid "Devices"
|
||||||
|
msgstr "Devices"
|
||||||
|
|
||||||
|
#: ../extensions/places-menu/extension.js:48
|
||||||
|
msgid "Bookmarks"
|
||||||
|
msgstr "Bookmarks"
|
||||||
|
|
||||||
|
#: ../extensions/places-menu/extension.js:49
|
||||||
|
msgid "Network"
|
||||||
|
msgstr "Network"
|
||||||
|
|
||||||
|
#: ../extensions/places-menu/placeDisplay.js:48
|
||||||
|
#, c-format
|
||||||
|
msgid "Failed to launch \"%s\""
|
||||||
|
msgstr "Failed to launch \"%s\""
|
||||||
|
|
||||||
|
#: ../extensions/places-menu/placeDisplay.js:121
|
||||||
|
msgid "Home"
|
||||||
|
msgstr "Home"
|
||||||
|
|
||||||
|
#: ../extensions/places-menu/placeDisplay.js:184
|
||||||
|
msgid "File System"
|
||||||
|
msgstr "File System"
|
||||||
|
|
||||||
|
#: ../extensions/places-menu/placeDisplay.js:188
|
||||||
|
msgid "Browse network"
|
||||||
|
msgstr "Browse network"
|
||||||
|
|
||||||
|
#: ../extensions/systemMonitor/extension.js:213
|
||||||
|
msgid "CPU"
|
||||||
|
msgstr "CPU"
|
||||||
|
|
||||||
|
#: ../extensions/systemMonitor/extension.js:266
|
||||||
|
msgid "Memory"
|
||||||
|
msgstr "Memory"
|
||||||
|
|
||||||
#: ../extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml.in.h:1
|
#: ../extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml.in.h:1
|
||||||
msgid "The name of the theme, to be loaded from ~/.themes/name/gnome-shell"
|
|
||||||
msgstr "The name of the theme, to be loaded from ~/.themes/name/gnome-shell"
|
|
||||||
|
|
||||||
#: ../extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml.in.h:2
|
|
||||||
msgid "Theme name"
|
msgid "Theme name"
|
||||||
msgstr "Theme name"
|
msgstr "Theme name"
|
||||||
|
|
||||||
#: ../extensions/xrandr-indicator/extension.js:26
|
#: ../extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml.in.h:2
|
||||||
|
msgid "The name of the theme, to be loaded from ~/.themes/name/gnome-shell"
|
||||||
|
msgstr "The name of the theme, to be loaded from ~/.themes/name/gnome-shell"
|
||||||
|
|
||||||
|
#: ../extensions/workspace-indicator/extension.js:30
|
||||||
|
msgid "Workspace Indicator"
|
||||||
|
msgstr "Workspace Indicator"
|
||||||
|
|
||||||
|
#: ../extensions/workspace-indicator/prefs.js:141
|
||||||
|
msgid "Workspace names:"
|
||||||
|
msgstr "Workspace names:"
|
||||||
|
|
||||||
|
#: ../extensions/workspace-indicator/prefs.js:152
|
||||||
|
msgid "Name"
|
||||||
|
msgstr "Name"
|
||||||
|
|
||||||
|
#: ../extensions/workspace-indicator/prefs.js:186
|
||||||
|
#, c-format
|
||||||
|
msgid "Workspace %d"
|
||||||
|
msgstr "Workspace %d"
|
||||||
|
|
||||||
|
#: ../extensions/xrandr-indicator/extension.js:30
|
||||||
msgid "Normal"
|
msgid "Normal"
|
||||||
msgstr "Normal"
|
msgstr "Normal"
|
||||||
|
|
||||||
#: ../extensions/xrandr-indicator/extension.js:27
|
#: ../extensions/xrandr-indicator/extension.js:31
|
||||||
msgid "Left"
|
msgid "Left"
|
||||||
msgstr "Left"
|
msgstr "Left"
|
||||||
|
|
||||||
#: ../extensions/xrandr-indicator/extension.js:28
|
#: ../extensions/xrandr-indicator/extension.js:32
|
||||||
msgid "Right"
|
msgid "Right"
|
||||||
msgstr "Right"
|
msgstr "Right"
|
||||||
|
|
||||||
#: ../extensions/xrandr-indicator/extension.js:29
|
#: ../extensions/xrandr-indicator/extension.js:33
|
||||||
msgid "Upside-down"
|
msgid "Upside-down"
|
||||||
msgstr "Upside-down"
|
msgstr "Upside-down"
|
||||||
|
|
||||||
#: ../extensions/xrandr-indicator/extension.js:78
|
#: ../extensions/xrandr-indicator/extension.js:50
|
||||||
msgid "Configure display settings..."
|
msgid "Display"
|
||||||
msgstr "Configure display settings…"
|
msgstr "Display"
|
||||||
|
|
||||||
|
#: ../extensions/xrandr-indicator/extension.js:80
|
||||||
|
msgid "Display Settings"
|
||||||
|
msgstr "Display Settings"
|
||||||
|
|
||||||
|
#~ msgid "Do Not Disturb"
|
||||||
|
#~ msgstr "Do Not Disturb"
|
||||||
|
|
||||||
|
#~ msgid "Online Accounts"
|
||||||
|
#~ msgstr "Online Accounts"
|
||||||
|
|
||||||
|
#~ msgid "Lock Screen"
|
||||||
|
#~ msgstr "Lock Screen"
|
||||||
|
|
||||||
|
#~ msgid "Switch User"
|
||||||
|
#~ msgstr "Switch User"
|
||||||
|
|
||||||
|
#~ msgid "Log Out..."
|
||||||
|
#~ msgstr "Log Out…"
|
||||||
|
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "This is the first time you use the Alternate Tab extension. \n"
|
||||||
|
#~ "Please choose your preferred behaviour:\n"
|
||||||
|
#~ "\n"
|
||||||
|
#~ "All & Thumbnails:\n"
|
||||||
|
#~ " This mode presents all applications from all workspaces in one "
|
||||||
|
#~ "selection \n"
|
||||||
|
#~ " list. Instead of using the application icon of every window, it uses "
|
||||||
|
#~ "small \n"
|
||||||
|
#~ " thumbnails resembling the window itself. \n"
|
||||||
|
#~ "\n"
|
||||||
|
#~ "Workspace & Icons:\n"
|
||||||
|
#~ " This mode let's you switch between the applications of your current \n"
|
||||||
|
#~ " workspace and gives you additionally the option to switch to the last "
|
||||||
|
#~ "used \n"
|
||||||
|
#~ " application of your previous workspace. This is always the last "
|
||||||
|
#~ "symbol in \n"
|
||||||
|
#~ " the list and is segregated by a separator/vertical line if "
|
||||||
|
#~ "available. \n"
|
||||||
|
#~ " Every window is represented by its application icon. \n"
|
||||||
|
#~ "\n"
|
||||||
|
#~ "Native:\n"
|
||||||
|
#~ " This mode is the native GNOME 3 behaviour or in other words: "
|
||||||
|
#~ "Clicking \n"
|
||||||
|
#~ " native switches the Alternate Tab extension off. \n"
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "This is the first time you use the Alternate Tab extension. \n"
|
||||||
|
#~ "Please choose your preferred behaviour:\n"
|
||||||
|
#~ "\n"
|
||||||
|
#~ "All & Thumbnails:\n"
|
||||||
|
#~ " This mode presents all applications from all workspaces in one "
|
||||||
|
#~ "selection list. Instead of using the application icon of every "
|
||||||
|
#~ "window, it uses small \n"
|
||||||
|
#~ " thumbnails resembling the window itself. \n"
|
||||||
|
#~ "\n"
|
||||||
|
#~ "Workspace & Icons:\n"
|
||||||
|
#~ " This mode lets you switch between the applications of your current \n"
|
||||||
|
#~ " workspace and additionally gives you the option to switch to the last "
|
||||||
|
#~ "used \n"
|
||||||
|
#~ " application of your previous workspace. This is always the last "
|
||||||
|
#~ "symbol in \n"
|
||||||
|
#~ " the list and is segregated by a separator/vertical line if "
|
||||||
|
#~ "available. \n"
|
||||||
|
#~ " Every window is represented by its application icon. \n"
|
||||||
|
#~ "\n"
|
||||||
|
#~ "Native:\n"
|
||||||
|
#~ " This mode is the native GNOME 3 behaviour or in other words: "
|
||||||
|
#~ "Clicking \n"
|
||||||
|
#~ " native switches the Alternate Tab extension off. \n"
|
||||||
|
|
||||||
|
#~ msgid "Alt Tab Behaviour"
|
||||||
|
#~ msgstr "Alt Tab Behaviour"
|
||||||
|
|
||||||
|
#~ msgid "Native"
|
||||||
|
#~ msgstr "Native"
|
||||||
|
|
||||||
|
#~ msgid "Cancel"
|
||||||
|
#~ msgstr "Cancel"
|
||||||
|
|
||||||
|
#~ msgid "Ask the user for a default behaviour if true."
|
||||||
|
#~ msgstr "Ask the user for a default behaviour if true."
|
||||||
|
|
||||||
|
#~ msgid "Indicates if Alternate Tab is newly installed"
|
||||||
|
#~ msgstr "Indicates if Alternate Tab is newly installed"
|
||||||
|
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "Sets the Alt-Tab behaviour. Possible values are: native, all_thumbnails "
|
||||||
|
#~ "and workspace_icons."
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "Sets the Alt-Tab behaviour. Possible values are: native, all_thumbnails "
|
||||||
|
#~ "and workspace_icons."
|
||||||
|
|
||||||
|
#~ msgid "The alt tab behaviour."
|
||||||
|
#~ msgstr "The alt tab behaviour."
|
||||||
|
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "The algorithm used to layout thumbnails in the overview. 'grid' to use "
|
||||||
|
#~ "the default grid based algorithm, 'natural' to use another one that "
|
||||||
|
#~ "reflects more the position and size of the actual window"
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "The algorithm used to layout thumbnails in the overview. 'grid' to use "
|
||||||
|
#~ "the default grid based algorithm, 'natural' to use another one that "
|
||||||
|
#~ "reflects more the position and size of the actual window"
|
||||||
|
|
||||||
|
#~ msgid "Window placement strategy"
|
||||||
|
#~ msgstr "Window placement strategy"
|
||||||
|
|
||||||
|
#~ msgid "Configure display settings..."
|
||||||
|
#~ msgstr "Configure display settings…"
|
||||||
|
|||||||
@@ -1,230 +1,203 @@
|
|||||||
# Spanish translation for gnome-shell-extensions.
|
# Spanish translation for gnome-shell-extensions.
|
||||||
# Copyright (C) 2011 gnome-shell-extensions's COPYRIGHT HOLDER
|
# Copyright (C) 2011 gnome-shell-extensions's COPYRIGHT HOLDER
|
||||||
# This file is distributed under the same license as the gnome-shell-extensions package.
|
# This file is distributed under the same license as the gnome-shell-extensions package.
|
||||||
# Jorge González <jorgegonz@svn.gnome.org>, 2011.
|
# Jorge González <jorgegonz@svn.gnome.org>, 2011.
|
||||||
# Daniel Mustieles <daniel.mustieles@gmail.com>, 2011.
|
# Nicolás Satragno <nsatragno@gmail.com>, 2011.
|
||||||
# Nicolás Satragno <nsatragno@gmail.com>, 2011.
|
#
|
||||||
|
# Daniel Mustieles <daniel.mustieles@gmail.com>, 2011, 2012.
|
||||||
, 2013.
|
, 2013.
|
||||||
#
|
#
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: gnome-shell-extensions master\n"
|
"Project-Id-Version: gnome-shell-extensions 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-"
|
||||||
"POT-Creation-Date: 2011-12-27 14:30+0000\n"
|
"shell&keywords=I18N+L10N&component=extensions\n"
|
||||||
"PO-Revision-Date: 2011-12-27 16:58-0300\n"
|
"POT-Creation-Date: 2013-04-16 19:31+0000\n"
|
||||||
"Last-Translator: Nicolás Satragno <nsatragno@gmail.com>\n"
|
"PO-Revision-Date: 2013-04-18 13:07+0200\n"
|
||||||
"Language-Team: Español; Castellano <gnome-es-list@gnome.org>\n"
|
"Last-Translator: Daniel Mustieles <daniel.mustieles@gmail.com>\n"
|
||||||
|
"Language-Team: Español <gnome-es-list@gnome.org>\n"
|
||||||
"Language: \n"
|
"Language: \n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
"Plural-Forms: nplurals=2; plural=(n!=1);\n"
|
||||||
|
"X-Generator: Gtranslator 2.91.5\n"
|
||||||
|
|
||||||
|
#: ../data/gnome-classic.desktop.in.h:1
|
||||||
|
#: ../data/gnome-classic.session.desktop.in.in.h:1
|
||||||
|
msgid "GNOME Classic"
|
||||||
|
msgstr "GNOME clásico"
|
||||||
|
|
||||||
|
#: ../data/gnome-classic.desktop.in.h:2
|
||||||
|
msgid "This session logs you into GNOME Classic"
|
||||||
|
msgstr "Esta sesión inicia GNOME clásico"
|
||||||
|
|
||||||
|
#: ../data/gnome-shell-classic.desktop.in.in.h:1
|
||||||
|
msgid "GNOME Shell Classic"
|
||||||
|
msgstr "GNOME Shell clásico"
|
||||||
|
|
||||||
|
#: ../data/gnome-shell-classic.desktop.in.in.h:2
|
||||||
|
msgid "Window management and application launching"
|
||||||
|
msgstr "Gestión de ventanas e inicio de aplicaciones"
|
||||||
|
|
||||||
|
#: ../extensions/alternate-tab/prefs.js:20
|
||||||
|
msgid "Thumbnail only"
|
||||||
|
msgstr "Sólo miniaturas"
|
||||||
|
|
||||||
|
#: ../extensions/alternate-tab/prefs.js:21
|
||||||
|
msgid "Application icon only"
|
||||||
|
msgstr "Sólo icono de la aplicación"
|
||||||
|
|
||||||
|
#: ../extensions/alternate-tab/prefs.js:22
|
||||||
|
msgid "Thumbnail and application icon"
|
||||||
|
msgstr "Miniatura e icono de la aplicación"
|
||||||
|
|
||||||
|
#: ../extensions/alternate-tab/prefs.js:37
|
||||||
|
msgid "Present windows as"
|
||||||
|
msgstr "Presentar ventanas como"
|
||||||
|
|
||||||
|
#: ../extensions/alternate-tab/prefs.js:62
|
||||||
|
msgid "Show only windows in the current workspace"
|
||||||
msgstr "Mostrar ventanas solamente en el área de trabajo actual"
|
msgstr "Mostrar ventanas solamente en el área de trabajo actual"
|
||||||
|
|
||||||
#: ../extensions/alternative-status-menu/extension.js:68
|
#. add the new entries
|
||||||
#: ../extensions/alternative-status-menu/extension.js:125
|
#: ../extensions/alternative-status-menu/extension.js:125
|
||||||
msgid "Suspend"
|
msgid "Suspend"
|
||||||
msgstr "Suspender"
|
msgstr "Suspender"
|
||||||
#: ../extensions/alternative-status-menu/extension.js:73
|
|
||||||
#: ../extensions/alternative-status-menu/extension.js:128
|
#: ../extensions/alternative-status-menu/extension.js:128
|
||||||
msgid "Hibernate"
|
msgid "Hibernate"
|
||||||
msgstr "Hibernar"
|
msgstr "Hibernar"
|
||||||
#: ../extensions/alternative-status-menu/extension.js:78
|
|
||||||
msgid "Power Off..."
|
#: ../extensions/alternative-status-menu/extension.js:131
|
||||||
msgstr "Apagar…"
|
msgid "Power Off"
|
||||||
msgstr "Apagar"
|
msgstr "Apagar"
|
||||||
#: ../extensions/alternate-tab/extension.js:54
|
|
||||||
msgid ""
|
#: ../extensions/alternative-status-menu/org.gnome.shell.extensions.alternative-status-menu.gschema.xml.in.h:1
|
||||||
"This is the first time you use the Alternate Tab extension. \n"
|
msgid "Enable suspending"
|
||||||
"Please choose your preferred behaviour:\n"
|
|
||||||
"\n"
|
|
||||||
"All & Thumbnails:\n"
|
|
||||||
" This mode presents all applications from all workspaces in one "
|
|
||||||
"selection \n"
|
|
||||||
" list. Instead of using the application icon of every window, it uses "
|
|
||||||
"small \n"
|
|
||||||
" thumbnails resembling the window itself. \n"
|
|
||||||
"\n"
|
|
||||||
"Workspace & Icons:\n"
|
|
||||||
" This mode let's you switch between the applications of your current \n"
|
|
||||||
" workspace and gives you additionally the option to switch to the last "
|
|
||||||
"used \n"
|
|
||||||
" application of your previous workspace. This is always the last symbol "
|
|
||||||
"in \n"
|
|
||||||
" the list and is segregated by a separator/vertical line if available. \n"
|
|
||||||
" Every window is represented by its application icon. \n"
|
|
||||||
"\n"
|
|
||||||
"If you whish to revert to the default behavior for the Alt-Tab switcher, "
|
|
||||||
"just\n"
|
|
||||||
"disable the extension from extensions.gnome.org or the Advanced Settings "
|
|
||||||
"application."
|
|
||||||
msgstr ""
|
|
||||||
"Esta es la primera vez que usa la extensión Alt+Tab. \n"
|
|
||||||
"Seleccione el comportamiento preferido:\n"
|
|
||||||
"\n"
|
|
||||||
"Todo y miniaturas:\n"
|
|
||||||
" Este modo muestra todas la aplicaciones de todas las áreas de trabajo \n"
|
|
||||||
" en una única lista. En lugar de usar el icono de la aplicación de cada "
|
|
||||||
"ventana, usa \n"
|
|
||||||
" miniaturas similares a la ventana.\n"
|
|
||||||
"\n"
|
|
||||||
"Área de trabajo e iconos:\n"
|
|
||||||
" Este modo permite le alternar entre aplicaciones del área de trabajo "
|
|
||||||
"actual, \n"
|
|
||||||
" y ofrece la posibilidad de cambiar a la última aplicación usada en el \n"
|
|
||||||
" área de trabajo anterior. Éste último es siempre el último símbolo en "
|
|
||||||
"la \n"
|
|
||||||
" lista, y está diferenciado mediante un separador/línea vertical, si "
|
|
||||||
"está \n"
|
|
||||||
" disponible. \n"
|
|
||||||
" Cada ventana se representa con el icono de la aplicación. \n"
|
|
||||||
"\n"
|
|
||||||
"Si quiere volver al comportamiento predeterminado de Alt+Tab, simplemente\n"
|
|
||||||
"desactive la extensión desde extensions.gnome.org o en la aplicación "
|
|
||||||
"Configuración avanzada."
|
|
||||||
msgstr "Activar la suspensión"
|
msgstr "Activar la suspensión"
|
||||||
#: ../extensions/alternate-tab/extension.js:295
|
|
||||||
msgid "Alt Tab Behaviour"
|
#: ../extensions/alternative-status-menu/org.gnome.shell.extensions.alternative-status-menu.gschema.xml.in.h:2
|
||||||
msgstr "Comportamiento de Alt+Tab"
|
msgid "Control the visibility of the Suspend menu item"
|
||||||
msgstr "Controla la visibilidad del elemento de menú «Suspender»"
|
msgstr "Controla la visibilidad del elemento de menú «Suspender»"
|
||||||
#: ../extensions/alternate-tab/extension.js:311
|
|
||||||
msgid "All & Thumbnails"
|
#: ../extensions/alternative-status-menu/org.gnome.shell.extensions.alternative-status-menu.gschema.xml.in.h:3
|
||||||
msgstr "Todo y miniaturas"
|
msgid "Enable hibernating"
|
||||||
msgstr "Activar la hibernación"
|
msgstr "Activar la hibernación"
|
||||||
#: ../extensions/alternate-tab/extension.js:318
|
|
||||||
msgid "Workspace & Icons"
|
#: ../extensions/alternative-status-menu/org.gnome.shell.extensions.alternative-status-menu.gschema.xml.in.h:4
|
||||||
msgstr "Espacio de trabajo e iconos"
|
msgid "Control the visibility of the Hibernate menu item"
|
||||||
msgstr "Controla la visibilidad del elemento de menú «Hibernar»"
|
msgstr "Controla la visibilidad del elemento de menú «Hibernar»"
|
||||||
#: ../extensions/alternate-tab/extension.js:325
|
|
||||||
msgid "Cancel"
|
#: ../extensions/apps-menu/extension.js:39
|
||||||
msgstr "Cancelar"
|
msgid "Activities Overview"
|
||||||
msgstr "Vista de actividades"
|
msgstr "Vista de actividades"
|
||||||
#: ../extensions/alternate-tab/org.gnome.shell.extensions.alternate-tab.gschema.xml.in.h:1
|
|
||||||
msgid "Ask the user for a default behaviour if true."
|
#: ../extensions/apps-menu/extension.js:113
|
||||||
msgstr "Si es cierto, preguntar al usuario el comportamiento predeterminado."
|
msgid "Favorites"
|
||||||
msgstr "Favoritos"
|
msgstr "Favoritos"
|
||||||
#: ../extensions/alternate-tab/org.gnome.shell.extensions.alternate-tab.gschema.xml.in.h:2
|
|
||||||
msgid "Indicates if Alternate Tab is newly installed"
|
#: ../extensions/apps-menu/extension.js:278
|
||||||
msgstr "Indica si se ha instalado Alt+Tab recientemente"
|
msgid "Applications"
|
||||||
|
|
||||||
#: ../extensions/alternate-tab/org.gnome.shell.extensions.alternate-tab.gschema.xml.in.h:3
|
|
||||||
msgid ""
|
|
||||||
"Sets the Alt-Tab behaviour. Possible values are: native, all_thumbnails and "
|
|
||||||
"workspace_icons."
|
|
||||||
msgstr ""
|
|
||||||
"Establece el comportamiento de Alt+Tab. Los valores posibles son: "
|
|
||||||
"«native» (nativo), «all_thumbnails» (todo y miniaturas) y "
|
|
||||||
"«workspace_icons» (iconos de áreas de trabajo)."
|
|
||||||
|
|
||||||
#: ../extensions/alternate-tab/org.gnome.shell.extensions.alternate-tab.gschema.xml.in.h:4
|
|
||||||
msgid "The alt tab behaviour."
|
|
||||||
msgstr "El comportamiento de Alt+Tab."
|
|
||||||
msgstr "Aplicaciones"
|
msgstr "Aplicaciones"
|
||||||
|
|
||||||
|
#: ../extensions/auto-move-windows/org.gnome.shell.extensions.auto-move-windows.gschema.xml.in.h:1
|
||||||
|
msgid "Application and workspace list"
|
||||||
|
msgstr "Lista de aplicaciones y áreas de trabajo"
|
||||||
|
|
||||||
#: ../extensions/auto-move-windows/org.gnome.shell.extensions.auto-move-windows.gschema.xml.in.h:2
|
#: ../extensions/auto-move-windows/org.gnome.shell.extensions.auto-move-windows.gschema.xml.in.h:2
|
||||||
msgid ""
|
msgid ""
|
||||||
"A list of strings, each containing an application id (desktop file name), "
|
"A list of strings, each containing an application id (desktop file name), "
|
||||||
"followed by a colon and the workspace number"
|
"followed by a colon and the workspace number"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"archivo de escritorio), seguido de dos puntos y el número del espacio de "
|
"Una lista de cadenas, conteniendo cada una un ID de aplicación (nombre de "
|
||||||
"trabajo"
|
|
||||||
"archivo de escritorio), seguido de dos puntos y el número del área de trabajo"
|
"archivo de escritorio), seguido de dos puntos y el número del área de trabajo"
|
||||||
#: ../extensions/auto-move-windows/org.gnome.shell.extensions.auto-move-windows.gschema.xml.in.h:2
|
|
||||||
msgid "Application and workspace list"
|
#: ../extensions/auto-move-windows/prefs.js:55
|
||||||
msgstr "Lista de aplicaciones y espacios de trabajo"
|
msgid "Application"
|
||||||
msgstr "Aplicación"
|
msgstr "Aplicación"
|
||||||
#: ../extensions/dock/extension.js:561
|
|
||||||
msgid "Drag here to add favorites"
|
#: ../extensions/auto-move-windows/prefs.js:64
|
||||||
msgstr "Arrastrar aquí para añadir a favoritos"
|
#: ../extensions/auto-move-windows/prefs.js:106
|
||||||
|
msgid "Workspace"
|
||||||
msgstr "Área de trabajo"
|
msgstr "Área de trabajo"
|
||||||
#: ../extensions/dock/extension.js:896
|
|
||||||
msgid "New Window"
|
#: ../extensions/auto-move-windows/prefs.js:80
|
||||||
msgstr "Ventana nueva"
|
msgid "Add rule"
|
||||||
msgstr "Añadir regla"
|
msgstr "Añadir regla"
|
||||||
#: ../extensions/dock/extension.js:898
|
|
||||||
msgid "Quit Application"
|
#: ../extensions/auto-move-windows/prefs.js:94
|
||||||
msgstr "Salir de la aplicación"
|
msgid "Create new matching rule"
|
||||||
msgstr "Crear regla de coincidencia nueva"
|
msgstr "Crear regla de coincidencia nueva"
|
||||||
#: ../extensions/dock/extension.js:903
|
|
||||||
msgid "Remove from Favorites"
|
#: ../extensions/auto-move-windows/prefs.js:98
|
||||||
msgstr "Quitar de favoritos"
|
msgid "Add"
|
||||||
msgstr "Añadir"
|
msgstr "Añadir"
|
||||||
#: ../extensions/dock/extension.js:904
|
|
||||||
msgid "Add to Favorites"
|
#: ../extensions/drive-menu/extension.js:72
|
||||||
msgstr "Añadir a favoritos"
|
#, c-format
|
||||||
|
msgid "Ejecting drive '%s' failed:"
|
||||||
msgstr "Falló al expulsar el dispositivo «%s»"
|
msgstr "Falló al expulsar el dispositivo «%s»"
|
||||||
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:1
|
|
||||||
msgid "Autohide duration"
|
#: ../extensions/drive-menu/extension.js:89
|
||||||
msgstr "Duración de la ocultación automática"
|
msgid "Removable devices"
|
||||||
msgstr "Dispositivos extraíbles"
|
msgstr "Dispositivos extraíbles"
|
||||||
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:2
|
|
||||||
msgid "Autohide effect"
|
#: ../extensions/drive-menu/extension.js:106
|
||||||
msgstr "Efecto de ocultación automática"
|
msgid "Open File"
|
||||||
msgstr "Abrir archivo"
|
msgstr "Abrir archivo"
|
||||||
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:3
|
|
||||||
msgid "Enable/disable autohide"
|
|
||||||
msgstr "Activar/desactivar ocultación automática"
|
|
||||||
|
|
||||||
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:4
|
|
||||||
msgid "Icon size"
|
|
||||||
msgstr "Tamaño del icono"
|
|
||||||
|
|
||||||
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:5
|
|
||||||
msgid "Position of the dock"
|
|
||||||
msgstr "Posición del tablero"
|
|
||||||
|
|
||||||
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:6
|
|
||||||
msgid "Sets icon size of the dock."
|
|
||||||
msgstr "Configura el tamaño de los íconos del tablero."
|
|
||||||
|
|
||||||
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:7
|
|
||||||
msgid ""
|
|
||||||
"Sets the effect of the hide dock. Allowed values are 'resize', 'rescale' and "
|
|
||||||
"'move'"
|
|
||||||
msgstr ""
|
|
||||||
"Establece el efecto de ocultación del tablero. Los valores permitidos son "
|
|
||||||
"«resize» (redimensionar) y «rescale» (re-escalar) y «move» (mover)"
|
|
||||||
|
|
||||||
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:8
|
|
||||||
msgid ""
|
|
||||||
"Sets the position of the dock in the screen. Allowed values are 'right' or "
|
|
||||||
"'left'"
|
|
||||||
msgstr ""
|
|
||||||
"Configura la posición del tablero en la pantalla. Los valores permitidos son "
|
|
||||||
"«right» (derecha) o «left» (izquierda)"
|
|
||||||
|
|
||||||
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:9
|
|
||||||
msgid "Sets the time duration of the autohide effect."
|
|
||||||
msgstr "Configura la duración del efecto de ocultación automática."
|
|
||||||
|
|
||||||
#: ../extensions/drive-menu/extension.js:69
|
|
||||||
msgid "Open file manager"
|
|
||||||
msgstr "Abrir el gestor de archivos"
|
|
||||||
|
|
||||||
#: ../extensions/example/extension.js:11
|
|
||||||
#: ../extensions/example/extension.js:17
|
#: ../extensions/example/extension.js:17
|
||||||
msgid "Hello, world!"
|
msgid "Hello, world!"
|
||||||
msgstr "¡Hola, mundo!"
|
msgstr "¡Hola, mundo!"
|
||||||
#: ../extensions/gajim/extension.js:227
|
|
||||||
#, c-format
|
#: ../extensions/example/org.gnome.shell.extensions.example.gschema.xml.in.h:1
|
||||||
msgid "%s is away."
|
msgid "Alternative greeting text."
|
||||||
msgstr "%s no está disponible."
|
|
||||||
msgstr "Texto de bienvenida alternativo"
|
msgstr "Texto de bienvenida alternativo"
|
||||||
#: ../extensions/gajim/extension.js:230
|
|
||||||
#, c-format
|
#: ../extensions/example/org.gnome.shell.extensions.example.gschema.xml.in.h:2
|
||||||
msgid "%s is offline."
|
msgid ""
|
||||||
msgstr "%s está desconectado."
|
"If not empty, it contains the text that will be shown when clicking on the "
|
||||||
|
"panel."
|
||||||
|
msgstr ""
|
||||||
|
"Si no está vacío, contiene el texto que se desplegará al pulsar sobre el "
|
||||||
"panel."
|
"panel."
|
||||||
#: ../extensions/gajim/extension.js:233
|
|
||||||
#, c-format
|
#. TRANSLATORS: Example is the name of the extension, should not be
|
||||||
msgid "%s is online."
|
#. translated
|
||||||
msgstr "%s está conectado."
|
#: ../extensions/example/prefs.js:30
|
||||||
|
msgid ""
|
||||||
|
"Example aims to show how to build well behaved extensions for the Shell and "
|
||||||
|
"as such it has little functionality on its own.\n"
|
||||||
|
"Nevertheless it's possible to customize the greeting message."
|
||||||
|
msgstr ""
|
||||||
|
"«Example» tiene por objeto mostrar cómo construir extensiones de buen "
|
||||||
|
"comportamiento para la Shell y por eso tiene poca funcionalidad por sí "
|
||||||
|
"solo.\n"
|
||||||
"Sin embargo, es posible personalizar el mensaje de bienvenida."
|
"Sin embargo, es posible personalizar el mensaje de bienvenida."
|
||||||
#: ../extensions/gajim/extension.js:236
|
|
||||||
#, c-format
|
#: ../extensions/example/prefs.js:36
|
||||||
msgid "%s is busy."
|
msgid "Message:"
|
||||||
msgstr "%s está ocupado."
|
|
||||||
msgstr "Mensaje:"
|
msgstr "Mensaje:"
|
||||||
|
|
||||||
|
#: ../extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml.in.h:1
|
||||||
|
msgid "Use more screen for windows"
|
||||||
|
msgstr "Usar más pantalla para las ventanas"
|
||||||
|
|
||||||
|
#: ../extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml.in.h:2
|
||||||
|
msgid ""
|
||||||
|
"Try to use more screen for placing window thumbnails by adapting to screen "
|
||||||
|
"aspect ratio, and consolidating them further to reduce the bounding box. "
|
||||||
|
"This setting applies only with the natural placement strategy."
|
||||||
|
msgstr ""
|
||||||
|
"Intente utilizar más espacio para situar las miniaturas, adaptándolas a la "
|
||||||
|
"forma de la pantalla, y consolidarlas aún más para reducir el área ocupada. "
|
||||||
|
"Esta opción sólo se aplica a la estrategia de posicionamiento «natural»."
|
||||||
|
|
||||||
|
#: ../extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml.in.h:3
|
||||||
|
msgid "Place window captions on top"
|
||||||
|
msgstr "Situar los títulos de ventanas arriba"
|
||||||
|
|
||||||
#: ../extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml.in.h:4
|
#: ../extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml.in.h:4
|
||||||
msgid ""
|
msgid ""
|
||||||
"If true, place window captions on top the respective thumbnail, overriding "
|
"If true, place window captions on top the respective thumbnail, overriding "
|
||||||
@@ -235,55 +208,338 @@ msgstr ""
|
|||||||
"correspondientes, cambiando el comportamiento predeterminado de shell, que "
|
"correspondientes, cambiando el comportamiento predeterminado de shell, que "
|
||||||
"los sitúa por debajo. Cambiar esta configuración requiere reiniciar la shell "
|
"los sitúa por debajo. Cambiar esta configuración requiere reiniciar la shell "
|
||||||
"para que tenga efecto."
|
"para que tenga efecto."
|
||||||
#: ../extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml.in.h:2
|
|
||||||
msgid "Place window captions on top"
|
#: ../extensions/places-menu/extension.js:77
|
||||||
msgstr "Situar los títulos de ventanas arriba"
|
msgid "Places"
|
||||||
msgstr "Lugares"
|
msgstr "Lugares"
|
||||||
#: ../extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml.in.h:3
|
|
||||||
msgid ""
|
#: ../extensions/places-menu/placeDisplay.js:56
|
||||||
"Try to use more screen for placing window thumbnails by adapting to screen "
|
#, c-format
|
||||||
"aspect ratio, and consolidating them further to reduce the bounding box. "
|
msgid "Failed to launch \"%s\""
|
||||||
"This setting applies only with the natural placement strategy."
|
|
||||||
msgstr ""
|
|
||||||
"Intente utilizar más espacio para situar las miniaturas, adaptándolas a la "
|
|
||||||
"forma de la pantalla, y consolidarlas aún más para reducir el área ocupada. "
|
|
||||||
"Esta opción sólo se aplica a la estrategia de posicionamiento «natural»."
|
|
||||||
msgstr "Falló al lanzar «%s»"
|
msgstr "Falló al lanzar «%s»"
|
||||||
#: ../extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml.in.h:4
|
|
||||||
msgid "Use more screen for windows"
|
#: ../extensions/places-menu/placeDisplay.js:98
|
||||||
msgstr "Usar más pantalla para las ventanas"
|
#: ../extensions/places-menu/placeDisplay.js:121
|
||||||
|
msgid "Computer"
|
||||||
msgstr "Equipo"
|
msgstr "Equipo"
|
||||||
#: ../extensions/places-menu/extension.js:36
|
|
||||||
msgid "Removable Devices"
|
#: ../extensions/places-menu/placeDisplay.js:199
|
||||||
msgstr "Dispositivos extraíbles"
|
msgid "Home"
|
||||||
|
msgstr "Carpeta personal"
|
||||||
|
|
||||||
|
#: ../extensions/places-menu/placeDisplay.js:286
|
||||||
|
msgid "Browse Network"
|
||||||
|
msgstr "Examinar la red"
|
||||||
|
|
||||||
|
#: ../extensions/systemMonitor/extension.js:213
|
||||||
|
msgid "CPU"
|
||||||
|
msgstr "CPU"
|
||||||
|
|
||||||
|
#: ../extensions/systemMonitor/extension.js:266
|
||||||
|
msgid "Memory"
|
||||||
msgstr "Memoria"
|
msgstr "Memoria"
|
||||||
|
|
||||||
msgid "The name of the theme, to be loaded from ~/.themes/name/gnome-shell"
|
|
||||||
msgstr "El nombre del tema, que se carga desde ~/.themes/nombre/gnome-shell"
|
|
||||||
|
|
||||||
#: ../extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml.in.h:2
|
|
||||||
#: ../extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml.in.h:1
|
#: ../extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml.in.h:1
|
||||||
msgid "Theme name"
|
msgid "Theme name"
|
||||||
msgstr "Nombre del tema"
|
msgstr "Nombre del tema"
|
||||||
#: ../extensions/xrandr-indicator/extension.js:26
|
|
||||||
|
#: ../extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml.in.h:2
|
||||||
|
msgid "The name of the theme, to be loaded from ~/.themes/name/gnome-shell"
|
||||||
|
msgstr "El nombre del tema, que se carga desde ~/.themes/nombre/gnome-shell"
|
||||||
|
|
||||||
|
#: ../extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml.in.h:1
|
||||||
|
msgid "When to group windows"
|
||||||
|
msgstr "Cuándo agrupar las ventanas"
|
||||||
|
|
||||||
|
#: ../extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml.in.h:2
|
||||||
|
#| msgid ""
|
||||||
|
#| "Decides when to group windows from the same application on the window "
|
||||||
|
#| "list. Possible values are \"never\" and \"always\"."
|
||||||
|
msgid ""
|
||||||
|
"Decides when to group windows from the same application on the window list. "
|
||||||
|
"Possible values are \"never\", \"auto\" and \"always\"."
|
||||||
|
msgstr ""
|
||||||
|
"Decide cuándo agrupar ventanas para la misma aplicación en la lista de "
|
||||||
|
"ventanas. Los valores posibles son «never», «auto» y «always»."
|
||||||
|
|
||||||
|
#: ../extensions/window-list/prefs.js:30
|
||||||
|
msgid "Window Grouping"
|
||||||
|
msgstr "Agrupación de ventanas"
|
||||||
|
|
||||||
|
#: ../extensions/window-list/prefs.js:49
|
||||||
|
msgid "Never group windows"
|
||||||
|
msgstr "Nunca agrupar las ventanas"
|
||||||
|
|
||||||
|
#: ../extensions/window-list/prefs.js:50
|
||||||
|
msgid "Group windows when space is limited"
|
||||||
|
msgstr "Agrupar las ventanas cuando el espacio esté limitado"
|
||||||
|
|
||||||
|
#: ../extensions/window-list/prefs.js:51
|
||||||
|
msgid "Always group windows"
|
||||||
|
msgstr "Siempre agrupar las ventanas"
|
||||||
|
|
||||||
|
#: ../extensions/workspace-indicator/extension.js:30
|
||||||
|
msgid "Workspace Indicator"
|
||||||
|
msgstr "Indicador de área de trabajo"
|
||||||
|
|
||||||
|
#: ../extensions/workspace-indicator/prefs.js:141
|
||||||
|
msgid "Workspace names:"
|
||||||
|
msgstr "Nombres de los áreas de trabajo:"
|
||||||
|
|
||||||
|
#: ../extensions/workspace-indicator/prefs.js:152
|
||||||
|
msgid "Name"
|
||||||
|
msgstr "Nombre"
|
||||||
|
|
||||||
|
#: ../extensions/workspace-indicator/prefs.js:186
|
||||||
|
#, c-format
|
||||||
|
msgid "Workspace %d"
|
||||||
|
msgstr "Área de trabajo %d"
|
||||||
|
|
||||||
#: ../extensions/xrandr-indicator/extension.js:30
|
#: ../extensions/xrandr-indicator/extension.js:30
|
||||||
msgid "Normal"
|
msgid "Normal"
|
||||||
msgstr "Normal"
|
msgstr "Normal"
|
||||||
#: ../extensions/xrandr-indicator/extension.js:27
|
|
||||||
#: ../extensions/xrandr-indicator/extension.js:31
|
#: ../extensions/xrandr-indicator/extension.js:31
|
||||||
msgid "Left"
|
msgid "Left"
|
||||||
msgstr "Izquierda"
|
msgstr "Izquierda"
|
||||||
#: ../extensions/xrandr-indicator/extension.js:28
|
|
||||||
#: ../extensions/xrandr-indicator/extension.js:32
|
#: ../extensions/xrandr-indicator/extension.js:32
|
||||||
msgid "Right"
|
msgid "Right"
|
||||||
msgstr "Derecha"
|
msgstr "Derecha"
|
||||||
#: ../extensions/xrandr-indicator/extension.js:29
|
|
||||||
#: ../extensions/xrandr-indicator/extension.js:33
|
#: ../extensions/xrandr-indicator/extension.js:33
|
||||||
msgid "Upside-down"
|
msgid "Upside-down"
|
||||||
msgstr "Hacia abajo"
|
msgstr "Hacia abajo"
|
||||||
#: ../extensions/xrandr-indicator/extension.js:78
|
|
||||||
msgid "Configure display settings..."
|
#: ../extensions/xrandr-indicator/extension.js:50
|
||||||
msgstr "Configurar las opciones de pantalla…"
|
msgid "Display"
|
||||||
|
msgstr "Pantalla"
|
||||||
|
|
||||||
|
#: ../extensions/xrandr-indicator/extension.js:80
|
||||||
|
msgid "Display Settings"
|
||||||
|
msgstr "Configuración de pantalla"
|
||||||
|
|
||||||
|
#~ msgid "File System"
|
||||||
|
#~ msgstr "Sistema de archivos"
|
||||||
|
|
||||||
|
#~ msgid "The application icon mode."
|
||||||
|
#~ msgstr "El modo de icono de la aplicación."
|
||||||
|
|
||||||
|
#~ 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 ""
|
||||||
|
#~ "Configura cómo se muestran las ventanas en el intercambiador. Las "
|
||||||
|
#~ "opciones posibles son «thumbnail-only» (muestra una miniatura de la "
|
||||||
|
#~ "ventana, «app-icon-only» (sólo muestra el icono de la aplicación) o "
|
||||||
|
#~ "«both» (se muestran ambas cosas)."
|
||||||
|
|
||||||
|
#~ msgid "Devices"
|
||||||
|
#~ msgstr "Dispositivos"
|
||||||
|
|
||||||
|
#~ msgid "Bookmarks"
|
||||||
|
#~ msgstr "Marcadores"
|
||||||
|
|
||||||
|
#~ msgid "Network"
|
||||||
|
#~ msgstr "Red"
|
||||||
|
|
||||||
|
#~ msgid "Drag here to add favorites"
|
||||||
|
#~ msgstr "Arrastrar aquí para añadir a favoritos"
|
||||||
|
|
||||||
|
#~ msgid "New Window"
|
||||||
|
#~ msgstr "Ventana nueva"
|
||||||
|
|
||||||
|
#~ msgid "Quit Application"
|
||||||
|
#~ msgstr "Salir de la aplicación"
|
||||||
|
|
||||||
|
#~ msgid "Remove from Favorites"
|
||||||
|
#~ msgstr "Quitar de favoritos"
|
||||||
|
|
||||||
|
#~ msgid "Position of the dock"
|
||||||
|
#~ msgstr "Posición del tablero"
|
||||||
|
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "Sets the position of the dock in the screen. Allowed values are 'right' "
|
||||||
|
#~ "or 'left'"
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "Configura la posición del tablero en la pantalla. Los valores permitidos "
|
||||||
|
#~ "son «right» (derecha) o «left» (izquierda)"
|
||||||
|
|
||||||
|
#~ msgid "Icon size"
|
||||||
|
#~ msgstr "Tamaño del icono"
|
||||||
|
|
||||||
|
#~ msgid "Sets icon size of the dock."
|
||||||
|
#~ msgstr "Configura el tamaño de los íconos del tablero."
|
||||||
|
|
||||||
|
#~ msgid "Enable/disable autohide"
|
||||||
|
#~ msgstr "Activar/desactivar ocultación automática"
|
||||||
|
|
||||||
|
#~ msgid "Autohide effect"
|
||||||
|
#~ msgstr "Efecto de ocultación automática"
|
||||||
|
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "Sets the effect of the hide dock. Allowed values are 'resize', 'rescale' "
|
||||||
|
#~ "and 'move'"
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "Establece el efecto de ocultación del tablero. Los valores permitidos son "
|
||||||
|
#~ "«resize» (redimensionar) y «rescale» (re-escalar) y «move» (mover)"
|
||||||
|
|
||||||
|
#~ msgid "Autohide duration"
|
||||||
|
#~ msgstr "Duración de la ocultación automática"
|
||||||
|
|
||||||
|
#~ msgid "Sets the time duration of the autohide effect."
|
||||||
|
#~ msgstr "Configura la duración del efecto de ocultación automática."
|
||||||
|
|
||||||
|
#~ msgid "Monitor"
|
||||||
|
#~ msgstr "Pantalla"
|
||||||
|
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "Sets monitor to display dock in. The default value (-1) is the primary "
|
||||||
|
#~ "monitor."
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "Establece la pantalla en la que mostrar el tablero. El valor "
|
||||||
|
#~ "predeterminado es (-1), que es la pantalla principal."
|
||||||
|
|
||||||
|
#~ msgid "%s is away."
|
||||||
|
#~ msgstr "%s no está disponible."
|
||||||
|
|
||||||
|
#~ msgid "%s is offline."
|
||||||
|
#~ msgstr "%s está desconectado."
|
||||||
|
|
||||||
|
#~ msgid "%s is online."
|
||||||
|
#~ msgstr "%s está conectado."
|
||||||
|
|
||||||
|
#~ msgid "%s is busy."
|
||||||
|
#~ msgstr "%s está ocupado."
|
||||||
|
|
||||||
|
#~ msgid "Removable Devices"
|
||||||
|
#~ msgstr "Dispositivos extraíbles"
|
||||||
|
|
||||||
|
#~ msgid "Configure display settings..."
|
||||||
|
#~ msgstr "Configurar las opciones de pantalla…"
|
||||||
|
|
||||||
|
#~ msgid "The alt tab behaviour."
|
||||||
|
#~ msgstr "El comportamiento de Alt+Tab."
|
||||||
|
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "Sets the Alt-Tab behaviour. Possible values are: all_thumbnails and "
|
||||||
|
#~ "workspace_icons. See the configuration dialogs for details."
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "Establece el comportamiento de Alt+Tab. Los valores posibles son: "
|
||||||
|
#~ "«native» (nativo), «all_thumbnails» (todo y miniaturas) y "
|
||||||
|
#~ "«workspace_icons» (iconos de áreas de trabajo). Para obtener información "
|
||||||
|
#~ "más detallada, consulte la configuración de los diálogos "
|
||||||
|
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "This mode presents all applications from all workspaces in one selection "
|
||||||
|
#~ "list. Instead of using the application icon of every window, it uses "
|
||||||
|
#~ "small thumbnails resembling the window itself."
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "Este modo presenta todas las aplicaciones de todas las áreas de trabajo "
|
||||||
|
#~ "en una lista de selección. En lugar de usar el icono de aplicación de "
|
||||||
|
#~ "cada ventana, usa pequeñas miniaturas que se asemejan a la propia ventana."
|
||||||
|
|
||||||
|
#~ msgid "Workspace & Icons"
|
||||||
|
#~ msgstr "Área de trabajo e iconos"
|
||||||
|
|
||||||
|
#~| msgid ""
|
||||||
|
#~| "This mode let's you switch between the applications of your current "
|
||||||
|
#~| "workspace and gives you additionally the option to switch to the last "
|
||||||
|
#~| "used application of your previous workspace. This is always the last "
|
||||||
|
#~| "symbol in the list and is segregated by a separator/vertical line if "
|
||||||
|
#~| "available. \n"
|
||||||
|
#~| "Every window is represented by its application icon."
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "This mode lets you switch between the applications of your current "
|
||||||
|
#~ "workspace and gives you additionally the option to switch to the last "
|
||||||
|
#~ "used application of your previous workspace. This is always the last "
|
||||||
|
#~ "symbol in the list and is separated by a separator/vertical line if "
|
||||||
|
#~ "available. \n"
|
||||||
|
#~ "Every window is represented by its application icon."
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "Este modo le permite alternar entre las aplicaciones de su área de "
|
||||||
|
#~ "trabajo actual y le da la opción de cambiar a la última aplicación "
|
||||||
|
#~ "utilizada de su área de trabajo anterior. Este siempre es el último "
|
||||||
|
#~ "símbolo de la lista y está separado por un separador/línea vertical si "
|
||||||
|
#~ "está disponible.\n"
|
||||||
|
#~ "Cada ventana está representada por su icono de aplicación."
|
||||||
|
|
||||||
|
#~ msgid "Move current selection to front before closing the popup"
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "Mover la selección actual al frente antes de cerrar la ventana emergente"
|
||||||
|
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "The Alternate Tab can be used in different modes, that affect the way "
|
||||||
|
#~ "windows are chosen and presented."
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "La combinación de teclas Alt+Tab se puede usar en diferentes modos, que "
|
||||||
|
#~ "afectan la manera en que se eligen y presentan las ventanas."
|
||||||
|
|
||||||
|
#~ msgid "Indicates if Alternate Tab is newly installed"
|
||||||
|
#~ msgstr "Indica si se ha instalado Alt+Tab recientemente"
|
||||||
|
|
||||||
|
#~ msgid "Ask the user for a default behaviour if true."
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "Si es cierto, preguntar al usuario el comportamiento predeterminado."
|
||||||
|
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "This is the first time you use the Alternate Tab extension. \n"
|
||||||
|
#~ "Please choose your preferred behaviour:\n"
|
||||||
|
#~ "\n"
|
||||||
|
#~ "All & Thumbnails:\n"
|
||||||
|
#~ " This mode presents all applications from all workspaces in one "
|
||||||
|
#~ "selection \n"
|
||||||
|
#~ " list. Instead of using the application icon of every window, it uses "
|
||||||
|
#~ "small \n"
|
||||||
|
#~ " thumbnails resembling the window itself. \n"
|
||||||
|
#~ "\n"
|
||||||
|
#~ "Workspace & Icons:\n"
|
||||||
|
#~ " This mode let's you switch between the applications of your current \n"
|
||||||
|
#~ " workspace and gives you additionally the option to switch to the last "
|
||||||
|
#~ "used \n"
|
||||||
|
#~ " application of your previous workspace. This is always the last "
|
||||||
|
#~ "symbol in \n"
|
||||||
|
#~ " the list and is segregated by a separator/vertical line if "
|
||||||
|
#~ "available. \n"
|
||||||
|
#~ " Every window is represented by its application icon. \n"
|
||||||
|
#~ "\n"
|
||||||
|
#~ "If you whish to revert to the default behavior for the Alt-Tab switcher, "
|
||||||
|
#~ "just\n"
|
||||||
|
#~ "disable the extension from extensions.gnome.org or the Advanced Settings "
|
||||||
|
#~ "application."
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "Esta es la primera vez que usa la extensión Alt+Tab. \n"
|
||||||
|
#~ "Seleccione el comportamiento preferido:\n"
|
||||||
|
#~ "\n"
|
||||||
|
#~ "Todo y miniaturas:\n"
|
||||||
|
#~ " Este modo muestra todas la aplicaciones de todas las áreas de "
|
||||||
|
#~ "trabajo \n"
|
||||||
|
#~ " en una única lista. En lugar de usar el icono de la aplicación de "
|
||||||
|
#~ "cada ventana, usa \n"
|
||||||
|
#~ " miniaturas similares a la ventana.\n"
|
||||||
|
#~ "\n"
|
||||||
|
#~ "Área de trabajo e iconos:\n"
|
||||||
|
#~ " Este modo permite le alternar entre aplicaciones del área de trabajo "
|
||||||
|
#~ "actual, \n"
|
||||||
|
#~ " y ofrece la posibilidad de cambiar a la última aplicación usada en "
|
||||||
|
#~ "el \n"
|
||||||
|
#~ " área de trabajo anterior. Éste último es siempre el último símbolo en "
|
||||||
|
#~ "la \n"
|
||||||
|
#~ " lista, y está diferenciado mediante un separador/línea vertical, si "
|
||||||
|
#~ "está \n"
|
||||||
|
#~ " disponible. \n"
|
||||||
|
#~ " Cada ventana se representa con el icono de la aplicación. \n"
|
||||||
|
#~ "\n"
|
||||||
|
#~ "Si quiere volver al comportamiento predeterminado de Alt+Tab, "
|
||||||
|
#~ "simplemente\n"
|
||||||
|
#~ "desactive la extensión desde extensions.gnome.org o en la aplicación "
|
||||||
|
#~ "Configuración avanzada."
|
||||||
|
|
||||||
|
#~ msgid "Alt Tab Behaviour"
|
||||||
|
#~ msgstr "Comportamiento de Alt+Tab"
|
||||||
|
|
||||||
|
#~ msgid "Cancel"
|
||||||
#~ msgstr "Cancelar"
|
#~ msgstr "Cancelar"
|
||||||
|
|
||||||
#~ msgid "Notifications"
|
#~ msgid "Notifications"
|
||||||
@@ -291,9 +547,6 @@ msgstr "Configurar las opciones de pantalla…"
|
|||||||
|
|
||||||
#~ msgid "Online Accounts"
|
#~ msgid "Online Accounts"
|
||||||
#~ msgstr "Cuentas en línea"
|
#~ msgstr "Cuentas en línea"
|
||||||
#~ msgid "System Settings"
|
|
||||||
#~ msgstr "Configuración del sistema"
|
|
||||||
|
|
||||||
|
|
||||||
#~ msgid "Lock Screen"
|
#~ msgid "Lock Screen"
|
||||||
#~ msgstr "Bloquear la pantalla"
|
#~ msgstr "Bloquear la pantalla"
|
||||||
@@ -316,9 +569,6 @@ msgstr "Configurar las opciones de pantalla…"
|
|||||||
|
|
||||||
#~ msgid "Window placement strategy"
|
#~ msgid "Window placement strategy"
|
||||||
#~ msgstr "Estrategia de ubicación de ventanas"
|
#~ msgstr "Estrategia de ubicación de ventanas"
|
||||||
#~ msgid "Native"
|
|
||||||
#~ msgstr "Nativo"
|
|
||||||
|
|
||||||
|
|
||||||
#~ msgid "Available"
|
#~ msgid "Available"
|
||||||
#~ msgstr "Disponible"
|
#~ msgstr "Disponible"
|
||||||
|
|||||||
@@ -7,10 +7,10 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: gnome-shell-extensions gnome-3-0\n"
|
"Project-Id-Version: gnome-shell-extensions gnome-3-0\n"
|
||||||
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-shell&keywords=I18N+L10N&component=extensions\n"
|
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-shell&keywords=I18N+L10N&component=extensions\n"
|
||||||
"POT-Creation-Date: 2011-05-21 14:17+0000\n"
|
"POT-Creation-Date: 2012-04-29 21:33+0000\n"
|
||||||
"PO-Revision-Date: 2011-05-23 22:28+0330\n"
|
"PO-Revision-Date: 2012-05-14 20:38+0330\n"
|
||||||
"Last-Translator: Arash Mousavi <mousavi.arash@gmail.com>\n"
|
"Last-Translator: Arash Mousavi <mousavi.arash@gmail.com>\n"
|
||||||
"Language-Team: Persian <translate@ifsug.org>\n"
|
"Language-Team: Persian\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"
|
||||||
@@ -18,126 +18,277 @@ msgstr ""
|
|||||||
"X-Poedit-Country: IRAN, ISLAMIC REPUBLIC OF\n"
|
"X-Poedit-Country: IRAN, ISLAMIC REPUBLIC OF\n"
|
||||||
"X-Poedit-SourceCharset: utf-8\n"
|
"X-Poedit-SourceCharset: utf-8\n"
|
||||||
|
|
||||||
#: ../extensions/alternative-status-menu/extension.js:23
|
#: ../extensions/alternate-tab/org.gnome.shell.extensions.alternate-tab.gschema.xml.in.h:1
|
||||||
#: ../extensions/alternative-status-menu/extension.js:27
|
msgid "The alt tab behaviour."
|
||||||
#: ../extensions/alternative-status-menu/extension.js:93
|
msgstr "رفتار alt tab."
|
||||||
msgid "Hibernate"
|
|
||||||
msgstr "خوابزمستانی"
|
|
||||||
|
|
||||||
#: ../extensions/alternative-status-menu/extension.js:26
|
#: ../extensions/alternate-tab/org.gnome.shell.extensions.alternate-tab.gschema.xml.in.h:2
|
||||||
#: ../extensions/alternative-status-menu/extension.js:92
|
msgid "Sets the Alt-Tab behaviour. Possible values are: all_thumbnails and workspace_icons. See the configuration dialogs for details."
|
||||||
|
msgstr "رفتار Alt-Tab را تنظیم میکند. مقادیر ممکن عبارتند از: all_thumbnails و workspace_icons. برای جزئیات، محاورهی پیکربندی را مشاهده کنید."
|
||||||
|
|
||||||
|
#: ../extensions/alternate-tab/prefs.js:27
|
||||||
|
msgid "All & Thumbnails"
|
||||||
|
msgstr "همه و تصاویر بندانگشتی"
|
||||||
|
|
||||||
|
#: ../extensions/alternate-tab/prefs.js:28
|
||||||
|
msgid "This mode presents all applications from all workspaces in one selection list. Instead of using the application icon of every window, it uses small thumbnails resembling the window itself."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: ../extensions/alternate-tab/prefs.js:34
|
||||||
|
msgid "Workspace & Icons"
|
||||||
|
msgstr "فضایکاری و شمایلها"
|
||||||
|
|
||||||
|
#: ../extensions/alternate-tab/prefs.js:35
|
||||||
|
msgid ""
|
||||||
|
"This mode let's you switch between the applications of your current workspace and gives you additionally the option to switch to the last used application of your previous workspace. This is always the last symbol in the list and is segregated by a separator/vertical line if available. \n"
|
||||||
|
"Every window is represented by its application icon."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: ../extensions/alternate-tab/prefs.js:41
|
||||||
|
msgid "Move current selection to front before closing the popup"
|
||||||
|
msgstr "انتقالِ انتخاب فعلی به بالا قبل از بستن پنجره واشو"
|
||||||
|
|
||||||
|
#: ../extensions/alternate-tab/prefs.js:58
|
||||||
|
msgid "The Alternate Tab can be used in different modes, that affect the way windows are chosen and presented."
|
||||||
|
msgstr "«جایگزین Tab» میتواند در حالتهای مختلفی استفاده شود، که در نحوه باز شدن و انتخاب پنجرهها تاثیر میگذارد."
|
||||||
|
|
||||||
|
#. add the new entries
|
||||||
|
#: ../extensions/alternative-status-menu/extension.js:64
|
||||||
msgid "Suspend"
|
msgid "Suspend"
|
||||||
msgstr "تعلیق"
|
msgstr "تعلیق"
|
||||||
|
|
||||||
#: ../extensions/alternative-status-menu/extension.js:52
|
|
||||||
msgid "Available"
|
|
||||||
msgstr "موجود"
|
|
||||||
|
|
||||||
#: ../extensions/alternative-status-menu/extension.js:57
|
|
||||||
msgid "Busy"
|
|
||||||
msgstr "مشغول"
|
|
||||||
|
|
||||||
#: ../extensions/alternative-status-menu/extension.js:65
|
|
||||||
msgid "My Account"
|
|
||||||
msgstr "حساب من"
|
|
||||||
|
|
||||||
#: ../extensions/alternative-status-menu/extension.js:69
|
#: ../extensions/alternative-status-menu/extension.js:69
|
||||||
msgid "System Settings"
|
msgid "Hibernate"
|
||||||
msgstr "تنظیمات سیستم"
|
msgstr "خوابزمستانی"
|
||||||
|
|
||||||
#: ../extensions/alternative-status-menu/extension.js:76
|
#: ../extensions/alternative-status-menu/extension.js:74
|
||||||
msgid "Lock Screen"
|
|
||||||
msgstr "قفلکردن صفحهنمایش"
|
|
||||||
|
|
||||||
#: ../extensions/alternative-status-menu/extension.js:80
|
|
||||||
msgid "Switch User"
|
|
||||||
msgstr "تعویض کاربر"
|
|
||||||
|
|
||||||
#: ../extensions/alternative-status-menu/extension.js:85
|
|
||||||
msgid "Log Out..."
|
|
||||||
msgstr "خروج از سیستم..."
|
|
||||||
|
|
||||||
#: ../extensions/alternative-status-menu/extension.js:100
|
|
||||||
msgid "Power Off..."
|
msgid "Power Off..."
|
||||||
msgstr "خاموش کردن..."
|
msgstr "خاموش کردن..."
|
||||||
|
|
||||||
#: ../extensions/auto-move-windows/org.gnome.shell.extensions.auto-move-windows.gschema.xml.in.h:1
|
#: ../extensions/auto-move-windows/org.gnome.shell.extensions.auto-move-windows.gschema.xml.in.h:1
|
||||||
msgid "A list of strings, each containing an application id (desktop file name), followed by a colon and the workspace number"
|
|
||||||
msgstr "فهرستی از رشتهها، هرکدام حاوی شناسهی یک برنامه (نام پرونده رومیزی)، در ادامهی یک ویرگول و شمارهی فضای کاری"
|
|
||||||
|
|
||||||
#: ../extensions/auto-move-windows/org.gnome.shell.extensions.auto-move-windows.gschema.xml.in.h:2
|
|
||||||
msgid "Application and workspace list"
|
msgid "Application and workspace list"
|
||||||
msgstr "فهرست برنامهها و فضایکاری"
|
msgstr "فهرست برنامهها و فضایکاری"
|
||||||
|
|
||||||
#: ../extensions/dock/extension.js:116
|
#: ../extensions/auto-move-windows/org.gnome.shell.extensions.auto-move-windows.gschema.xml.in.h:2
|
||||||
|
msgid "A list of strings, each containing an application id (desktop file name), followed by a colon and the workspace number"
|
||||||
|
msgstr "فهرستی از رشتهها، هرکدام حاوی شناسهی یک برنامه (نام پرونده رومیزی)، در ادامهی یک ویرگول و شمارهی فضای کاری"
|
||||||
|
|
||||||
|
#: ../extensions/auto-move-windows/prefs.js:55
|
||||||
|
#| msgid "Quit Application"
|
||||||
|
msgid "Application"
|
||||||
|
msgstr "برنامه"
|
||||||
|
|
||||||
|
#: ../extensions/auto-move-windows/prefs.js:64
|
||||||
|
#: ../extensions/auto-move-windows/prefs.js:106
|
||||||
|
msgid "Workspace"
|
||||||
|
msgstr "فضایکاری"
|
||||||
|
|
||||||
|
#: ../extensions/auto-move-windows/prefs.js:80
|
||||||
|
msgid "Add rule"
|
||||||
|
msgstr "اضافه کردن قاعده"
|
||||||
|
|
||||||
|
#: ../extensions/auto-move-windows/prefs.js:94
|
||||||
|
msgid "Create new matching rule"
|
||||||
|
msgstr "اضافه کردن یک قاعدهی منطبق جدید"
|
||||||
|
|
||||||
|
#: ../extensions/auto-move-windows/prefs.js:98
|
||||||
|
msgid "Add"
|
||||||
|
msgstr "اضافه"
|
||||||
|
|
||||||
|
#: ../extensions/dock/extension.js:577
|
||||||
msgid "Drag here to add favorites"
|
msgid "Drag here to add favorites"
|
||||||
msgstr "به اینجا بکشید تا به علاقهمندیها اضافه شود"
|
msgstr "به اینجا بکشید تا به علاقهمندیها اضافه شود"
|
||||||
|
|
||||||
#: ../extensions/dock/extension.js:417
|
#: ../extensions/dock/extension.js:903
|
||||||
msgid "New Window"
|
msgid "New Window"
|
||||||
msgstr "پنجره جدید"
|
msgstr "پنجره جدید"
|
||||||
|
|
||||||
#: ../extensions/dock/extension.js:419
|
#: ../extensions/dock/extension.js:905
|
||||||
msgid "Quit Application"
|
msgid "Quit Application"
|
||||||
msgstr "خروج از برنامه"
|
msgstr "خروج از برنامه"
|
||||||
|
|
||||||
#: ../extensions/dock/extension.js:424
|
#: ../extensions/dock/extension.js:910
|
||||||
msgid "Remove from Favorites"
|
msgid "Remove from Favorites"
|
||||||
msgstr "حذف از علاقهمندیها"
|
msgstr "حذف از علاقهمندیها"
|
||||||
|
|
||||||
#: ../extensions/dock/extension.js:425
|
#: ../extensions/dock/extension.js:911
|
||||||
msgid "Add to Favorites"
|
msgid "Add to Favorites"
|
||||||
msgstr "اضافه کردن به علاقهمندیها"
|
msgstr "اضافه کردن به علاقهمندیها"
|
||||||
|
|
||||||
#: ../extensions/example/extension.js:11
|
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:1
|
||||||
|
msgid "Position of the dock"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:2
|
||||||
|
msgid "Sets the position of the dock in the screen. Allowed values are 'right' or 'left'"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:3
|
||||||
|
msgid "Icon size"
|
||||||
|
msgstr "اندازه شمایل"
|
||||||
|
|
||||||
|
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:4
|
||||||
|
msgid "Sets icon size of the dock."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:5
|
||||||
|
msgid "Enable/disable autohide"
|
||||||
|
msgstr "فعال/غیرفعال کردن مخفیسازی خودکار"
|
||||||
|
|
||||||
|
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:6
|
||||||
|
msgid "Autohide effect"
|
||||||
|
msgstr "جلوهی مخفیسازی خودکار"
|
||||||
|
|
||||||
|
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:7
|
||||||
|
msgid "Sets the effect of the hide dock. Allowed values are 'resize', 'rescale' and 'move'"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:8
|
||||||
|
msgid "Autohide duration"
|
||||||
|
msgstr "طول مدت مخفیسازی خودکار"
|
||||||
|
|
||||||
|
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:9
|
||||||
|
msgid "Sets the time duration of the autohide effect."
|
||||||
|
msgstr "تنظیم مدت زمان جلوهی مخفیسازی خودکار"
|
||||||
|
|
||||||
|
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:10
|
||||||
|
msgid "Monitor"
|
||||||
|
msgstr "نمایشگر"
|
||||||
|
|
||||||
|
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:11
|
||||||
|
msgid "Sets monitor to display dock in. The default value (-1) is the primary monitor."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: ../extensions/drive-menu/extension.js:66
|
||||||
|
msgid "Open file manager"
|
||||||
|
msgstr "باز کردن مدیر پرونده"
|
||||||
|
|
||||||
|
#: ../extensions/example/extension.js:17
|
||||||
msgid "Hello, world!"
|
msgid "Hello, world!"
|
||||||
msgstr "سلام دنیا!"
|
msgstr "سلام دنیا!"
|
||||||
|
|
||||||
#: ../extensions/gajim/extension.js:219
|
#: ../extensions/example/org.gnome.shell.extensions.example.gschema.xml.in.h:1
|
||||||
|
msgid "Alternative greeting text."
|
||||||
|
msgstr "متن خوشآمد جایگزین"
|
||||||
|
|
||||||
|
#: ../extensions/example/org.gnome.shell.extensions.example.gschema.xml.in.h:2
|
||||||
|
msgid "If not empty, it contains the text that will be shown when clicking on the panel."
|
||||||
|
msgstr "اگر خالی نباشد، حاوی متنی خواهد بود که که هنگام کلیک بر روی پنل نمایش داده میشود است."
|
||||||
|
|
||||||
|
#. TRANSLATORS: Example is the name of the extension, should not be
|
||||||
|
#. translated
|
||||||
|
#: ../extensions/example/prefs.js:30
|
||||||
|
msgid ""
|
||||||
|
"Example aims to show how to build well behaved extensions for the Shell and as such it has little functionality on its own.\n"
|
||||||
|
"Nevertheless it's possible to customize the greeting message."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: ../extensions/example/prefs.js:36
|
||||||
|
msgid "Message:"
|
||||||
|
msgstr "پیام:"
|
||||||
|
|
||||||
|
#: ../extensions/gajim/extension.js:227
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is away."
|
msgid "%s is away."
|
||||||
msgstr "%s غائب است."
|
msgstr "%s غائب است."
|
||||||
|
|
||||||
#: ../extensions/gajim/extension.js:222
|
#: ../extensions/gajim/extension.js:230
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is offline."
|
msgid "%s is offline."
|
||||||
msgstr "%s برونخط است."
|
msgstr "%s برونخط است."
|
||||||
|
|
||||||
#: ../extensions/gajim/extension.js:225
|
#: ../extensions/gajim/extension.js:233
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is online."
|
msgid "%s is online."
|
||||||
msgstr "%s برخط است."
|
msgstr "%s برخط است."
|
||||||
|
|
||||||
#: ../extensions/gajim/extension.js:228
|
#: ../extensions/gajim/extension.js:236
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is busy."
|
msgid "%s is busy."
|
||||||
msgstr "%s مشغول است."
|
msgstr "%s مشغول است."
|
||||||
|
|
||||||
#: ../extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml.in.h:1
|
#: ../extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml.in.h:1
|
||||||
msgid "The name of the theme, to be loaded from ~/.themes/name/gnome-shell"
|
msgid "Use more screen for windows"
|
||||||
msgstr "نام تم، جهت بارگیری از شاخه themes/name/gnome-shell./~"
|
msgstr "استفاده از صفحه بیشتر برای پنجره"
|
||||||
|
|
||||||
#: ../extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml.in.h:2
|
#: ../extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml.in.h:2
|
||||||
|
msgid "Try to use more screen for placing window thumbnails by adapting to screen aspect ratio, and consolidating them further to reduce the bounding box. This setting applies only with the natural placement strategy."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: ../extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml.in.h:3
|
||||||
|
msgid "Place window captions on top"
|
||||||
|
msgstr "قراردادن عنوان پنجره در بالا"
|
||||||
|
|
||||||
|
#: ../extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml.in.h:4
|
||||||
|
msgid "If true, place window captions on top the respective thumbnail, overriding shell default of placing it at the bottom. Changing this setting requires restarting the shell to have any effect."
|
||||||
|
msgstr "اگر بر روی درست باشد، عنوان پنجره را بالای تصویر آن قرار میدهد، که حالت پیشفرض شل در پایین را تغییر میدهد. تغییر این گزینه، نیاز به راهاندازی مجدد شل دارد تا تاثیر بگذارد."
|
||||||
|
|
||||||
|
#: ../extensions/places-menu/extension.js:37
|
||||||
|
msgid "Removable Devices"
|
||||||
|
msgstr "دستگاههای جدا شدنی"
|
||||||
|
|
||||||
|
#: ../extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml.in.h:1
|
||||||
msgid "Theme name"
|
msgid "Theme name"
|
||||||
msgstr "نام تم"
|
msgstr "نام تم"
|
||||||
|
|
||||||
#: ../extensions/xrandr-indicator/extension.js:26
|
#: ../extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml.in.h:2
|
||||||
|
msgid "The name of the theme, to be loaded from ~/.themes/name/gnome-shell"
|
||||||
|
msgstr "نام تم، جهت بارگیری از شاخه themes/name/gnome-shell./~"
|
||||||
|
|
||||||
|
#: ../extensions/workspace-indicator/extension.js:30
|
||||||
|
msgid "Workspace Indicator"
|
||||||
|
msgstr "نشانگر فضایکاری"
|
||||||
|
|
||||||
|
#: ../extensions/workspace-indicator/prefs.js:141
|
||||||
|
msgid "Workspace names:"
|
||||||
|
msgstr "نام فضاهای کاری:"
|
||||||
|
|
||||||
|
#: ../extensions/workspace-indicator/prefs.js:152
|
||||||
|
msgid "Name"
|
||||||
|
msgstr "نام"
|
||||||
|
|
||||||
|
#: ../extensions/workspace-indicator/prefs.js:186
|
||||||
|
#, c-format
|
||||||
|
msgid "Workspace %d"
|
||||||
|
msgstr "فضایکاری %Id"
|
||||||
|
|
||||||
|
#: ../extensions/xrandr-indicator/extension.js:30
|
||||||
msgid "Normal"
|
msgid "Normal"
|
||||||
msgstr "عادی"
|
msgstr "عادی"
|
||||||
|
|
||||||
#: ../extensions/xrandr-indicator/extension.js:27
|
#: ../extensions/xrandr-indicator/extension.js:31
|
||||||
msgid "Left"
|
msgid "Left"
|
||||||
msgstr "چپ"
|
msgstr "چپ"
|
||||||
|
|
||||||
#: ../extensions/xrandr-indicator/extension.js:28
|
#: ../extensions/xrandr-indicator/extension.js:32
|
||||||
msgid "Right"
|
msgid "Right"
|
||||||
msgstr "راست"
|
msgstr "راست"
|
||||||
|
|
||||||
#: ../extensions/xrandr-indicator/extension.js:29
|
#: ../extensions/xrandr-indicator/extension.js:33
|
||||||
msgid "Upside-down"
|
msgid "Upside-down"
|
||||||
msgstr "برعکس"
|
msgstr "برعکس"
|
||||||
|
|
||||||
#: ../extensions/xrandr-indicator/extension.js:78
|
#: ../extensions/xrandr-indicator/extension.js:82
|
||||||
msgid "Configure display settings..."
|
msgid "Configure display settings..."
|
||||||
msgstr "پیکربندی تنظیمات نمایش..."
|
msgstr "پیکربندی تنظیمات نمایش..."
|
||||||
|
|
||||||
|
#~ msgid "Available"
|
||||||
|
#~ msgstr "موجود"
|
||||||
|
|
||||||
|
#~ msgid "Busy"
|
||||||
|
#~ msgstr "مشغول"
|
||||||
|
|
||||||
|
#~ msgid "My Account"
|
||||||
|
#~ msgstr "حساب من"
|
||||||
|
|
||||||
|
#~ msgid "System Settings"
|
||||||
|
#~ msgstr "تنظیمات سیستم"
|
||||||
|
|
||||||
|
#~ msgid "Lock Screen"
|
||||||
|
#~ msgstr "قفلکردن صفحهنمایش"
|
||||||
|
|
||||||
|
#~ msgid "Switch User"
|
||||||
|
#~ msgstr "تعویض کاربر"
|
||||||
|
|
||||||
|
#~ msgid "Log Out..."
|
||||||
|
#~ msgstr "خروج از سیستم..."
|
||||||
|
|||||||
@@ -1,264 +1,370 @@
|
|||||||
# Finnish translation of gnome-shell-extensions.
|
# Finnish translation of gnome-shell-extensions.
|
||||||
# Copyright (C) 2011 Ville-Pekka Vainio
|
# Copyright (C) 2011 Ville-Pekka Vainio
|
||||||
# This file is distributed under the same license as the gnome-shell-extensions package.
|
# This file is distributed under the same license as the gnome-shell-extensions package.
|
||||||
|
# Gnome 2012-03 Finnish translation sprint participants:
|
||||||
|
# Jiri Grönroos
|
||||||
|
# Niklas Laxström
|
||||||
|
# Ville-Pekka Vainio
|
||||||
# Ville-Pekka Vainio <vpvainio@iki.fi>, 2011.
|
# Ville-Pekka Vainio <vpvainio@iki.fi>, 2011.
|
||||||
# Jiri Grönroos <jiri.gronroos@iki.fi>, 2012.
|
# Jiri Grönroos <jiri.gronroos@iki.fi>, 2012, 2013.
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: gnome-shell-extensions\n"
|
"Project-Id-Version: gnome-shell-extensions\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
|
||||||
"POT-Creation-Date: 2012-01-07 12:45+0200\n"
|
"shell&keywords=I18N+L10N&component=extensions\n"
|
||||||
"PO-Revision-Date: 2012-01-05 20:37+0200\n"
|
"POT-Creation-Date: 2013-02-08 12:25+0000\n"
|
||||||
"Last-Translator: Jiri Grönroos <jiri.gronroos@iki.fi>\n"
|
"PO-Revision-Date: 2013-03-20 23:54+0200\n"
|
||||||
"Language-Team: Finnish <>\n"
|
"Last-Translator: Jiri Grönroos <jiri.gronroos+l10n@iki.fi>\n"
|
||||||
|
"Language-Team: Finnish <gnome-fi-laatu@lists.sourceforge.net>\n"
|
||||||
"Language: fi\n"
|
"Language: fi\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||||
"X-Generator: Lokalize 1.4\n"
|
"X-Generator: Lokalize 1.5\n"
|
||||||
"X-Project-Style: gnome\n"
|
"X-Project-Style: gnome\n"
|
||||||
|
"X-POT-Import-Date: 2012-03-05 15:06:12+0000\n"
|
||||||
|
|
||||||
|
#: ../data/gnome-classic.desktop.in.h:1
|
||||||
|
#: ../data/gnome-classic.session.desktop.in.in.h:1
|
||||||
|
msgid "GNOME Classic"
|
||||||
|
msgstr "Perinteinen Gnome"
|
||||||
|
|
||||||
|
#: ../data/gnome-classic.desktop.in.h:2
|
||||||
|
msgid "This session logs you into GNOME Classic"
|
||||||
|
msgstr "Tämä istunto kirjaa sinut perinteiseen Gnomeen"
|
||||||
|
|
||||||
|
#: ../data/gnome-shell-classic.desktop.in.in.h:1
|
||||||
|
msgid "GNOME Shell Classic"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: ../data/gnome-shell-classic.desktop.in.in.h:2
|
||||||
|
msgid "Window management and application launching"
|
||||||
|
msgstr "Ikkunoiden hallintaa ja sovellusten käynnistämistä"
|
||||||
|
|
||||||
|
#: ../extensions/alternate-tab/prefs.js:20
|
||||||
|
msgid "Thumbnail only"
|
||||||
|
msgstr "Pelkkä pienoiskuva"
|
||||||
|
|
||||||
|
#: ../extensions/alternate-tab/prefs.js:21
|
||||||
|
msgid "Application icon only"
|
||||||
|
msgstr "Pelkkä sovelluksen kuvake"
|
||||||
|
|
||||||
|
#: ../extensions/alternate-tab/prefs.js:22
|
||||||
|
msgid "Thumbnail and application icon"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: ../extensions/alternate-tab/prefs.js:37
|
||||||
|
msgid "Present windows as"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: ../extensions/alternate-tab/prefs.js:62
|
||||||
|
msgid "Show only windows in the current workspace"
|
||||||
|
msgstr "Näytä vain nykyisessä työtilassa olevat ikkunat"
|
||||||
|
|
||||||
#. add the new entries
|
#. add the new entries
|
||||||
#: ../extensions/alternative-status-menu/extension.js:68
|
#: ../extensions/alternative-status-menu/extension.js:144
|
||||||
msgid "Suspend"
|
msgid "Suspend"
|
||||||
msgstr "Valmiustila"
|
msgstr "Valmiustila"
|
||||||
|
|
||||||
#: ../extensions/alternative-status-menu/extension.js:73
|
#: ../extensions/alternative-status-menu/extension.js:147
|
||||||
msgid "Hibernate"
|
msgid "Hibernate"
|
||||||
msgstr "Lepotila"
|
msgstr "Lepotila"
|
||||||
|
|
||||||
#: ../extensions/alternative-status-menu/extension.js:78
|
#: ../extensions/alternative-status-menu/extension.js:150
|
||||||
msgid "Power Off..."
|
msgid "Power Off"
|
||||||
msgstr "Sammuta…"
|
msgstr "Sammuta"
|
||||||
|
|
||||||
#: ../extensions/alternate-tab/extension.js:54
|
#: ../extensions/alternative-status-menu/org.gnome.shell.extensions.alternative-status-menu.gschema.xml.in.h:1
|
||||||
msgid ""
|
msgid "Enable suspending"
|
||||||
"This is the first time you use the Alternate Tab extension. \n"
|
|
||||||
"Please choose your preferred behaviour:\n"
|
|
||||||
"\n"
|
|
||||||
"All & Thumbnails:\n"
|
|
||||||
" This mode presents all applications from all workspaces in one "
|
|
||||||
"selection \n"
|
|
||||||
" list. Instead of using the application icon of every window, it uses "
|
|
||||||
"small \n"
|
|
||||||
" thumbnails resembling the window itself. \n"
|
|
||||||
"\n"
|
|
||||||
"Workspace & Icons:\n"
|
|
||||||
" This mode let's you switch between the applications of your current \n"
|
|
||||||
" workspace and gives you additionally the option to switch to the last "
|
|
||||||
"used \n"
|
|
||||||
" application of your previous workspace. This is always the last symbol "
|
|
||||||
"in \n"
|
|
||||||
" the list and is segregated by a separator/vertical line if available. \n"
|
|
||||||
" Every window is represented by its application icon. \n"
|
|
||||||
"\n"
|
|
||||||
"If you whish to revert to the default behavior for the Alt-Tab switcher, "
|
|
||||||
"just\n"
|
|
||||||
"disable the extension from extensions.gnome.org or the Advanced Settings "
|
|
||||||
"application."
|
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../extensions/alternate-tab/extension.js:295
|
#: ../extensions/alternative-status-menu/org.gnome.shell.extensions.alternative-status-menu.gschema.xml.in.h:2
|
||||||
msgid "Alt Tab Behaviour"
|
msgid "Control the visibility of the Suspend menu item"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../extensions/alternate-tab/extension.js:311
|
#: ../extensions/alternative-status-menu/org.gnome.shell.extensions.alternative-status-menu.gschema.xml.in.h:3
|
||||||
msgid "All & Thumbnails"
|
msgid "Enable hibernating"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../extensions/alternate-tab/extension.js:318
|
#: ../extensions/alternative-status-menu/org.gnome.shell.extensions.alternative-status-menu.gschema.xml.in.h:4
|
||||||
msgid "Workspace & Icons"
|
msgid "Control the visibility of the Hibernate menu item"
|
||||||
msgstr "Työtila ja kuvakkeet"
|
|
||||||
|
|
||||||
#: ../extensions/alternate-tab/extension.js:325
|
|
||||||
msgid "Cancel"
|
|
||||||
msgstr "Peru"
|
|
||||||
|
|
||||||
#: ../extensions/alternate-tab/org.gnome.shell.extensions.alternate-tab.gschema.xml.in.h:1
|
|
||||||
msgid "Ask the user for a default behaviour if true."
|
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../extensions/alternate-tab/org.gnome.shell.extensions.alternate-tab.gschema.xml.in.h:2
|
#: ../extensions/apps-menu/extension.js:50
|
||||||
msgid "Indicates if Alternate Tab is newly installed"
|
msgid "Activities Overview"
|
||||||
msgstr ""
|
msgstr "Yleisnäkymä"
|
||||||
|
|
||||||
#: ../extensions/alternate-tab/org.gnome.shell.extensions.alternate-tab.gschema.xml.in.h:3
|
#: ../extensions/apps-menu/extension.js:103
|
||||||
msgid ""
|
#| msgid "Add to Favorites"
|
||||||
"Sets the Alt-Tab behaviour. Possible values are: native, all_thumbnails and "
|
msgid "Favorites"
|
||||||
"workspace_icons."
|
msgstr "Suosikit"
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../extensions/alternate-tab/org.gnome.shell.extensions.alternate-tab.gschema.xml.in.h:4
|
#: ../extensions/apps-menu/extension.js:197
|
||||||
msgid "The alt tab behaviour."
|
#| msgid "Application"
|
||||||
msgstr ""
|
msgid "Applications"
|
||||||
|
msgstr "Sovellukset"
|
||||||
|
|
||||||
#: ../extensions/auto-move-windows/org.gnome.shell.extensions.auto-move-windows.gschema.xml.in.h:1
|
#: ../extensions/auto-move-windows/org.gnome.shell.extensions.auto-move-windows.gschema.xml.in.h:1
|
||||||
|
msgid "Application and workspace list"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: ../extensions/auto-move-windows/org.gnome.shell.extensions.auto-move-windows.gschema.xml.in.h:2
|
||||||
msgid ""
|
msgid ""
|
||||||
"A list of strings, each containing an application id (desktop file name), "
|
"A list of strings, each containing an application id (desktop file name), "
|
||||||
"followed by a colon and the workspace number"
|
"followed by a colon and the workspace number"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../extensions/auto-move-windows/org.gnome.shell.extensions.auto-move-windows.gschema.xml.in.h:2
|
#: ../extensions/auto-move-windows/prefs.js:55
|
||||||
msgid "Application and workspace list"
|
msgid "Application"
|
||||||
|
msgstr "Sovellus"
|
||||||
|
|
||||||
|
#: ../extensions/auto-move-windows/prefs.js:64
|
||||||
|
#: ../extensions/auto-move-windows/prefs.js:106
|
||||||
|
msgid "Workspace"
|
||||||
|
msgstr "Työtila"
|
||||||
|
|
||||||
|
#: ../extensions/auto-move-windows/prefs.js:80
|
||||||
|
msgid "Add rule"
|
||||||
|
msgstr "Lisää sääntö"
|
||||||
|
|
||||||
|
#: ../extensions/auto-move-windows/prefs.js:94
|
||||||
|
msgid "Create new matching rule"
|
||||||
|
msgstr "Luo uusi vastaava sääntö"
|
||||||
|
|
||||||
|
#: ../extensions/auto-move-windows/prefs.js:98
|
||||||
|
msgid "Add"
|
||||||
|
msgstr "Lisää"
|
||||||
|
|
||||||
|
#: ../extensions/drive-menu/extension.js:72
|
||||||
|
#, c-format
|
||||||
|
msgid "Ejecting drive '%s' failed:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../extensions/dock/extension.js:561
|
#: ../extensions/drive-menu/extension.js:89
|
||||||
msgid "Drag here to add favorites"
|
msgid "Removable devices"
|
||||||
msgstr "Raahaa tähän lisätäksesi suosikkeihin"
|
msgstr "Erilliset tallennusvälineet"
|
||||||
|
|
||||||
#: ../extensions/dock/extension.js:896
|
#: ../extensions/drive-menu/extension.js:106
|
||||||
msgid "New Window"
|
#| msgid "Open file manager"
|
||||||
msgstr "Uusi ikkuna"
|
msgid "Open File"
|
||||||
|
msgstr "Avaa tiedosto"
|
||||||
|
|
||||||
#: ../extensions/dock/extension.js:898
|
#: ../extensions/example/extension.js:17
|
||||||
msgid "Quit Application"
|
|
||||||
msgstr "Lopeta ohjelma"
|
|
||||||
|
|
||||||
#: ../extensions/dock/extension.js:903
|
|
||||||
msgid "Remove from Favorites"
|
|
||||||
msgstr "Poista suosikeista"
|
|
||||||
|
|
||||||
#: ../extensions/dock/extension.js:904
|
|
||||||
msgid "Add to Favorites"
|
|
||||||
msgstr "Lisää suosikkeihin"
|
|
||||||
|
|
||||||
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:1
|
|
||||||
msgid "Autohide duration"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:2
|
|
||||||
msgid "Autohide effect"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:3
|
|
||||||
msgid "Enable/disable autohide"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:4
|
|
||||||
msgid "Icon size"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:5
|
|
||||||
msgid "Position of the dock"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:6
|
|
||||||
msgid "Sets icon size of the dock."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:7
|
|
||||||
msgid ""
|
|
||||||
"Sets the effect of the hide dock. Allowed values are 'resize', 'rescale' and "
|
|
||||||
"'move'"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:8
|
|
||||||
msgid ""
|
|
||||||
"Sets the position of the dock in the screen. Allowed values are 'right' or "
|
|
||||||
"'left'"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:9
|
|
||||||
msgid "Sets the time duration of the autohide effect."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../extensions/drive-menu/extension.js:69
|
|
||||||
msgid "Open file manager"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../extensions/example/extension.js:11
|
|
||||||
msgid "Hello, world!"
|
msgid "Hello, world!"
|
||||||
msgstr "Hei, maailma!"
|
msgstr "Hei, maailma!"
|
||||||
|
|
||||||
#: ../extensions/gajim/extension.js:227
|
#: ../extensions/example/org.gnome.shell.extensions.example.gschema.xml.in.h:1
|
||||||
#, c-format
|
msgid "Alternative greeting text."
|
||||||
msgid "%s is away."
|
msgstr "Vaihtoehtoinen tervehdysteksti."
|
||||||
msgstr "%s on poissa."
|
|
||||||
|
|
||||||
#: ../extensions/gajim/extension.js:230
|
#: ../extensions/example/org.gnome.shell.extensions.example.gschema.xml.in.h:2
|
||||||
#, c-format
|
msgid ""
|
||||||
msgid "%s is offline."
|
"If not empty, it contains the text that will be shown when clicking on the "
|
||||||
msgstr "%s on poissa linjoilta."
|
"panel."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: ../extensions/gajim/extension.js:233
|
#. TRANSLATORS: Example is the name of the extension, should not be
|
||||||
#, c-format
|
#. translated
|
||||||
msgid "%s is online."
|
#: ../extensions/example/prefs.js:30
|
||||||
msgstr "%s on linjoilla."
|
msgid ""
|
||||||
|
"Example aims to show how to build well behaved extensions for the Shell and "
|
||||||
|
"as such it has little functionality on its own.\n"
|
||||||
|
"Nevertheless it's possible to customize the greeting message."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: ../extensions/gajim/extension.js:236
|
#: ../extensions/example/prefs.js:36
|
||||||
#, c-format
|
msgid "Message:"
|
||||||
msgid "%s is busy."
|
msgstr "Viesti:"
|
||||||
msgstr "%s on kiireinen."
|
|
||||||
|
|
||||||
#: ../extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml.in.h:1
|
#: ../extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml.in.h:1
|
||||||
msgid ""
|
msgid "Use more screen for windows"
|
||||||
"If true, place window captions on top the respective thumbnail, overriding "
|
|
||||||
"shell default of placing it at the bottom. Changing this setting requires "
|
|
||||||
"restarting the shell to have any effect."
|
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml.in.h:2
|
#: ../extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml.in.h:2
|
||||||
msgid "Place window captions on top"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml.in.h:3
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"Try to use more screen for placing window thumbnails by adapting to screen "
|
"Try to use more screen for placing window thumbnails by adapting to screen "
|
||||||
"aspect ratio, and consolidating them further to reduce the bounding box. "
|
"aspect ratio, and consolidating them further to reduce the bounding box. "
|
||||||
"This setting applies only with the natural placement strategy."
|
"This setting applies only with the natural placement strategy."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml.in.h:4
|
#: ../extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml.in.h:3
|
||||||
msgid "Use more screen for windows"
|
msgid "Place window captions on top"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../extensions/places-menu/extension.js:36
|
#: ../extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml.in.h:4
|
||||||
msgid "Removable Devices"
|
msgid ""
|
||||||
|
"If true, place window captions on top the respective thumbnail, overriding "
|
||||||
|
"shell default of placing it at the bottom. Changing this setting requires "
|
||||||
|
"restarting the shell to have any effect."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: ../extensions/places-menu/extension.js:57
|
||||||
|
msgid "Places"
|
||||||
|
msgstr "Sijainnit"
|
||||||
|
|
||||||
|
#: ../extensions/places-menu/placeDisplay.js:48
|
||||||
|
#, c-format
|
||||||
|
msgid "Failed to launch \"%s\""
|
||||||
|
msgstr "Kohteen \"%s\" käynnistys epäonnistui"
|
||||||
|
|
||||||
|
#: ../extensions/places-menu/placeDisplay.js:121
|
||||||
|
msgid "Home"
|
||||||
|
msgstr "Koti"
|
||||||
|
|
||||||
|
#: ../extensions/places-menu/placeDisplay.js:195
|
||||||
|
msgid "Computer"
|
||||||
|
msgstr "Tietokone"
|
||||||
|
|
||||||
|
#: ../extensions/places-menu/placeDisplay.js:199
|
||||||
|
#| msgid "Browse network"
|
||||||
|
msgid "Browse Network"
|
||||||
|
msgstr "Selaa verkkoa"
|
||||||
|
|
||||||
|
#: ../extensions/systemMonitor/extension.js:213
|
||||||
|
msgid "CPU"
|
||||||
|
msgstr "Suoritin"
|
||||||
|
|
||||||
|
#: ../extensions/systemMonitor/extension.js:266
|
||||||
|
msgid "Memory"
|
||||||
|
msgstr "Muisti"
|
||||||
|
|
||||||
#: ../extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml.in.h:1
|
#: ../extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml.in.h:1
|
||||||
msgid "The name of the theme, to be loaded from ~/.themes/name/gnome-shell"
|
|
||||||
msgstr "Teeman nimi, ladataan sijainnista ~/.themes/name/gnome-shell"
|
|
||||||
|
|
||||||
#: ../extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml.in.h:2
|
|
||||||
msgid "Theme name"
|
msgid "Theme name"
|
||||||
msgstr "Teeman nimi"
|
msgstr "Teeman nimi"
|
||||||
|
|
||||||
#: ../extensions/xrandr-indicator/extension.js:26
|
#: ../extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml.in.h:2
|
||||||
|
msgid "The name of the theme, to be loaded from ~/.themes/name/gnome-shell"
|
||||||
|
msgstr "Teeman nimi, ladataan sijainnista ~/.themes/name/gnome-shell"
|
||||||
|
|
||||||
|
#: ../extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml.in.h:1
|
||||||
|
msgid "When to group windows"
|
||||||
|
msgstr "Milloin ikkunat ryhmitetään"
|
||||||
|
|
||||||
|
#: ../extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml.in.h:2
|
||||||
|
msgid ""
|
||||||
|
"Decides when to group windows from the same application on the window list. "
|
||||||
|
"Possible values are \"never\" and \"always\"."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: ../extensions/window-list/prefs.js:30
|
||||||
|
msgid "Window Grouping"
|
||||||
|
msgstr "Ikkunoiden ryhmitys"
|
||||||
|
|
||||||
|
#: ../extensions/window-list/prefs.js:49
|
||||||
|
msgid "Never group windows"
|
||||||
|
msgstr "Älä ryhmitä ikkunoita koskaan"
|
||||||
|
|
||||||
|
#: ../extensions/window-list/prefs.js:50
|
||||||
|
msgid "Always group windows"
|
||||||
|
msgstr "Ryhmitä ikkunat aina"
|
||||||
|
|
||||||
|
#: ../extensions/workspace-indicator/extension.js:30
|
||||||
|
msgid "Workspace Indicator"
|
||||||
|
msgstr "Työtilan ilmaisin"
|
||||||
|
|
||||||
|
#: ../extensions/workspace-indicator/prefs.js:141
|
||||||
|
msgid "Workspace names:"
|
||||||
|
msgstr "Työtilojen nimet:"
|
||||||
|
|
||||||
|
#: ../extensions/workspace-indicator/prefs.js:152
|
||||||
|
msgid "Name"
|
||||||
|
msgstr "Nimi"
|
||||||
|
|
||||||
|
#: ../extensions/workspace-indicator/prefs.js:186
|
||||||
|
#, c-format
|
||||||
|
msgid "Workspace %d"
|
||||||
|
msgstr "Työtila %d"
|
||||||
|
|
||||||
|
#: ../extensions/xrandr-indicator/extension.js:30
|
||||||
msgid "Normal"
|
msgid "Normal"
|
||||||
msgstr "Tavallinen"
|
msgstr "Tavallinen"
|
||||||
|
|
||||||
#: ../extensions/xrandr-indicator/extension.js:27
|
#: ../extensions/xrandr-indicator/extension.js:31
|
||||||
msgid "Left"
|
msgid "Left"
|
||||||
msgstr "Vasen"
|
msgstr "Vasen"
|
||||||
|
|
||||||
#: ../extensions/xrandr-indicator/extension.js:28
|
#: ../extensions/xrandr-indicator/extension.js:32
|
||||||
msgid "Right"
|
msgid "Right"
|
||||||
msgstr "Oikea"
|
msgstr "Oikea"
|
||||||
|
|
||||||
#: ../extensions/xrandr-indicator/extension.js:29
|
#: ../extensions/xrandr-indicator/extension.js:33
|
||||||
msgid "Upside-down"
|
msgid "Upside-down"
|
||||||
msgstr "Ylösalaisin"
|
msgstr "Ylösalaisin"
|
||||||
|
|
||||||
#: ../extensions/xrandr-indicator/extension.js:78
|
#: ../extensions/xrandr-indicator/extension.js:50
|
||||||
msgid "Configure display settings..."
|
msgid "Display"
|
||||||
msgstr "Määritä näytön asetukset…"
|
msgstr "Näyttö"
|
||||||
|
|
||||||
#~ msgid "Notifications"
|
#: ../extensions/xrandr-indicator/extension.js:80
|
||||||
#~ msgstr "Ilmoitukset"
|
msgid "Display Settings"
|
||||||
|
msgstr "Näytön asetukset"
|
||||||
|
|
||||||
#~ msgid "Online Accounts"
|
#~ msgid "Drag here to add favorites"
|
||||||
#~ msgstr "Verkkotilit"
|
#~ msgstr "Raahaa tähän lisätäksesi suosikkeihin"
|
||||||
|
|
||||||
#~ msgid "System Settings"
|
#~ msgid "New Window"
|
||||||
#~ msgstr "Järjestelmän asetukset"
|
#~ msgstr "Uusi ikkuna"
|
||||||
|
|
||||||
#~ msgid "Lock Screen"
|
#~ msgid "Quit Application"
|
||||||
#~ msgstr "Lukitse näyttö"
|
#~ msgstr "Lopeta ohjelma"
|
||||||
|
|
||||||
#~ msgid "Switch User"
|
#~ msgid "Remove from Favorites"
|
||||||
#~ msgstr "Vaihda käyttäjää"
|
#~ msgstr "Poista suosikeista"
|
||||||
|
|
||||||
#~ msgid "Log Out..."
|
#~ msgid "Position of the dock"
|
||||||
#~ msgstr "Kirjaudu ulos…"
|
#~ msgstr "Telakan sijainti"
|
||||||
|
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "Sets the position of the dock in the screen. Allowed values are 'right' "
|
||||||
|
#~ "or 'left'"
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "Asettaa telakan sijainnin näytöllä. Sallitut arvot ovat 'right' tai 'left'"
|
||||||
|
|
||||||
|
#~ msgid "Icon size"
|
||||||
|
#~ msgstr "Kuvakkeiden koko"
|
||||||
|
|
||||||
|
#~ msgid "Sets icon size of the dock."
|
||||||
|
#~ msgstr "Asettaa telakan kuvakkeiden koon."
|
||||||
|
|
||||||
|
#~ msgid "Enable/disable autohide"
|
||||||
|
#~ msgstr "Automaattinen piilotus päälle/pois"
|
||||||
|
|
||||||
|
#~ msgid "Autohide effect"
|
||||||
|
#~ msgstr "Automaattisen piilotuksen tehoste"
|
||||||
|
|
||||||
|
#~ msgid "Autohide duration"
|
||||||
|
#~ msgstr "Automaattisen piilotuksen kesto"
|
||||||
|
|
||||||
|
#~ msgid "Monitor"
|
||||||
|
#~ msgstr "Näyttö"
|
||||||
|
|
||||||
|
#~ msgid "%s is away."
|
||||||
|
#~ msgstr "%s on poissa."
|
||||||
|
|
||||||
|
#~ msgid "%s is offline."
|
||||||
|
#~ msgstr "%s on poissa linjoilta."
|
||||||
|
|
||||||
|
#~ msgid "%s is online."
|
||||||
|
#~ msgstr "%s on linjoilla."
|
||||||
|
|
||||||
|
#~ msgid "%s is busy."
|
||||||
|
#~ msgstr "%s on kiireinen."
|
||||||
|
|
||||||
|
#~ msgid "Devices"
|
||||||
|
#~ msgstr "Laitteet"
|
||||||
|
|
||||||
|
#~ msgid "Bookmarks"
|
||||||
|
#~ msgstr "Kirjanmerkit"
|
||||||
|
|
||||||
|
#~ msgid "Network"
|
||||||
|
#~ msgstr "Verkko"
|
||||||
|
|
||||||
|
#~ msgid "File System"
|
||||||
|
#~ msgstr "Tiedostojärjestelmä"
|
||||||
|
|
||||||
|
#~ msgid "The alt tab behaviour."
|
||||||
|
#~ msgstr "Alt+tab-näppäinyhdistelmän toiminta."
|
||||||
|
|
||||||
|
#~ msgid "Workspace & Icons"
|
||||||
|
#~ msgstr "Työtila ja kuvakkeet"
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user