Compare commits
534 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
6007a09782 | ||
|
|
e445278f52 | ||
|
|
d83b95ec8c | ||
|
|
ad2ece839c | ||
|
|
7c9bd8acaf | ||
|
|
4a5521a9ba | ||
|
|
a42dcee6ec | ||
|
|
a4846847de | ||
|
|
3cde65e85e | ||
|
|
b87ddf1195 | ||
|
|
c2fe2b5505 | ||
|
|
7e3db53dcd | ||
|
|
c9a4d15f05 | ||
|
|
9c6c00f8a3 | ||
|
|
0bcb1571da | ||
|
|
eb568d90f0 | ||
|
|
726a419bc6 | ||
|
|
9c23b52c1e | ||
|
|
ff64bb5432 | ||
|
|
bf789608df | ||
|
|
85c7b9b85b | ||
|
|
4c670d10a2 | ||
|
|
2bf50a76ed | ||
|
|
a519c9fe91 | ||
|
|
66216993e0 | ||
|
|
74fd9ba8e3 | ||
|
|
a39902b287 | ||
|
|
68adf77012 | ||
|
|
d566ffbb8f | ||
|
|
33b472a0ec | ||
|
|
1d38b69691 | ||
|
|
53e9074058 | ||
|
|
e08d527d51 | ||
|
|
07a4c7eb25 | ||
|
|
0b399fba7a | ||
|
|
1aa8561497 | ||
|
|
719ec25cb7 | ||
|
|
4aa27c533e | ||
|
|
75f11da08f | ||
|
|
12e3f39ccd | ||
|
|
d16fb714a3 | ||
|
|
b5cc38c9dd | ||
|
|
6b73c8e488 | ||
|
|
e801c614e1 | ||
|
|
0477282fed | ||
|
|
61308c4efa | ||
|
|
7dac0859f5 | ||
|
|
a7f7db59c7 | ||
|
|
e4a448b097 | ||
|
|
e73752118d | ||
|
|
a21def6e6e | ||
|
|
b62a65e1a8 | ||
|
|
232ea7ba32 | ||
|
|
12cc44c351 | ||
|
|
4e88a2b294 | ||
|
|
dca52fef8b | ||
|
|
5ffe200918 | ||
|
|
431a8f5eed | ||
|
|
7739ef2096 | ||
|
|
bbe7b93cd7 | ||
|
|
396f7f8495 | ||
|
|
4f0400ca25 | ||
|
|
e8292af0eb | ||
|
|
8228a9658c | ||
|
|
a092675cc4 | ||
|
|
3bafc2d32d | ||
|
|
b740dc7dd3 | ||
|
|
ac7e0cf39e | ||
|
|
2138dacf4a | ||
|
|
4ecee76401 | ||
|
|
142ac16b64 | ||
|
|
ff65aaece2 | ||
|
|
43b6e9694f | ||
|
|
b5b9a8e072 | ||
|
|
424de06404 | ||
|
|
2d36a31f33 | ||
|
|
0374a1a320 | ||
|
|
b4385ea7a6 | ||
|
|
e9bc16b34d | ||
|
|
651018abe7 | ||
|
|
dbc3429e05 | ||
|
|
a0507b957f | ||
|
|
7e59afeaca | ||
|
|
06e90b6c76 | ||
|
|
5970e29355 | ||
|
|
77088b0404 | ||
|
|
9214e47f73 | ||
|
|
01f39bdae5 | ||
|
|
cfc0ed6ab6 | ||
|
|
9c22a5f894 | ||
|
|
de315e7897 | ||
|
|
853704c509 | ||
|
|
23c0d0a61f | ||
|
|
bf139e7636 | ||
|
|
13201a5c76 | ||
|
|
261120dc4b | ||
|
|
09f43d4f84 | ||
|
|
0590b9123d | ||
|
|
e271231e77 | ||
|
|
8b97f068c7 | ||
|
|
a5344e3fe0 | ||
|
|
096fff8b3f | ||
|
|
caa9d6e423 | ||
|
|
65bec3cdb1 | ||
|
|
d060657bf4 | ||
|
|
342dd7c64d | ||
|
|
011860b476 | ||
|
|
31c459304e | ||
|
|
604d280c8c | ||
|
|
d9c00ab646 | ||
|
|
756d3c74e8 | ||
|
|
c368d8d968 | ||
|
|
f33087d2ad | ||
|
|
25e5ddf17c | ||
|
|
9811636e3c | ||
|
|
16379e2233 | ||
|
|
6e5cbec7a0 | ||
|
|
5901738896 | ||
|
|
b3829b0359 | ||
|
|
6ed8b84368 | ||
|
|
23981289d5 | ||
|
|
2d0142426a | ||
|
|
b4b989be0b | ||
|
|
e7e62f5c8e | ||
|
|
17663f5f20 | ||
|
|
c1fead9dad | ||
|
|
caba979752 | ||
|
|
addd62bef9 | ||
|
|
06f85e842a | ||
|
|
f625ae110f | ||
|
|
54c4e1ca96 | ||
|
|
a0e9e49914 | ||
|
|
00a133a314 | ||
|
|
cccd46b513 | ||
|
|
8e1db160ca | ||
|
|
9b516aa0d9 | ||
|
|
ec5d03d754 | ||
|
|
987f67f288 | ||
|
|
ea18bd7cdb | ||
|
|
fd030fa52f | ||
|
|
01f168341f | ||
|
|
ec8f269107 | ||
|
|
2b45617d6a | ||
|
|
37f24a88de | ||
|
|
88b1bf8964 | ||
|
|
5f639ec972 | ||
|
|
d8cef9d6f5 | ||
|
|
d4845f3e24 | ||
|
|
5b021256c9 | ||
|
|
806f345e51 | ||
|
|
f47133f897 | ||
|
|
67b84f8cf0 | ||
|
|
32ed396ebf | ||
|
|
85c7fa6483 | ||
|
|
d0c17d038d | ||
|
|
cc91b26ed3 | ||
|
|
7decfe92c9 | ||
|
|
ff0e0205ef | ||
|
|
6a493a3eea | ||
|
|
103ec6d43f | ||
|
|
a47ff4a54e | ||
|
|
f1f16f262b | ||
|
|
db3800500c | ||
|
|
63653406a3 | ||
|
|
e2b2f125b4 | ||
|
|
373bc5e709 | ||
|
|
9d80df7a6d | ||
|
|
c79d0b9d52 | ||
|
|
282cd8564a | ||
|
|
6f184424d9 | ||
|
|
1aed1799a0 | ||
|
|
3a58e0c12f | ||
|
|
19b61be6a6 | ||
|
|
79055cf7a0 | ||
|
|
2e5d8c7384 | ||
|
|
1d6f85c8f4 | ||
|
|
fb8ad70db6 | ||
|
|
f67db2a2af | ||
|
|
13c3512ed0 | ||
|
|
71f19d8391 | ||
|
|
7173fa9e9e | ||
|
|
e71d48853d | ||
|
|
f5c8ddf6cd | ||
|
|
55d80ea091 | ||
|
|
66d4b0adc4 | ||
|
|
1673dc6e9b | ||
|
|
6105afed0d | ||
|
|
ae9df9f001 | ||
|
|
05e42a4b95 | ||
|
|
9e5079bd83 | ||
|
|
b408fc4d17 | ||
|
|
0c6825d2c5 | ||
|
|
6fbc63e9e6 | ||
|
|
a2f14c57c5 | ||
|
|
e03343d4a8 | ||
|
|
9df6831f64 | ||
|
|
b82400cd66 | ||
|
|
858e67d33e | ||
|
|
b66824c500 | ||
|
|
76713a74be | ||
|
|
c92c2fa6b9 | ||
|
|
c436598ba6 | ||
|
|
9dbf937d0f | ||
|
|
daf081619e | ||
|
|
2b332d70f0 | ||
|
|
18f6d63790 | ||
|
|
85038e2f56 | ||
|
|
f01018a063 | ||
|
|
64d76fef6a | ||
|
|
80082fdfcb | ||
|
|
2396490d1e | ||
|
|
0c47e96a3b | ||
|
|
0ffaf62c4c | ||
|
|
6f572119d8 | ||
|
|
505220f163 | ||
|
|
24967c7cbe | ||
|
|
ee1c850f47 | ||
|
|
fb0dcec005 | ||
|
|
f5b2d17a4a | ||
|
|
dca43009b3 | ||
|
|
08b5f5fe82 | ||
|
|
16e0d467f8 | ||
|
|
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 |
5
.gitignore
vendored
5
.gitignore
vendored
@@ -6,13 +6,18 @@ config.log
|
||||
config.status
|
||||
aclocal.m4
|
||||
autom4te.cache/
|
||||
data/*.json
|
||||
po/gnome-shell-extensions.pot
|
||||
po/POTFILES
|
||||
po/stamp-it
|
||||
staging/
|
||||
zip-files/
|
||||
|
||||
*~
|
||||
*.gmo
|
||||
metadata.json
|
||||
*.desktop
|
||||
*.desktop.in
|
||||
*.gschema.xml
|
||||
*.gschema.valid
|
||||
*.session
|
||||
|
||||
29
Makefile.am
29
Makefile.am
@@ -1,7 +1,13 @@
|
||||
ACLOCAL_AMFLAGS = -I m4 ${ACLOCAL_FLAGS}
|
||||
|
||||
DIST_SUBDIRS = data extensions po
|
||||
|
||||
SUBDIRS = extensions po
|
||||
|
||||
if CLASSIC_MODE
|
||||
SUBDIRS += data
|
||||
endif
|
||||
|
||||
EXTRA_DIST = lib/convenience.js
|
||||
|
||||
DISTCHECK_CONFIGURE_FLAGS = --enable-extensions=all
|
||||
@@ -11,15 +17,16 @@ include include.mk
|
||||
zip-file: all
|
||||
-rm -fR $(builddir)/_build
|
||||
-rm -fR $(builddir)/zip-files
|
||||
mkdir $(builddir)/_build; \
|
||||
mkdir $(builddir)/zip-files; \
|
||||
$(MKDIR_P) $(builddir)/_build; \
|
||||
$(MKDIR_P) $(builddir)/zip-files; \
|
||||
$(MAKE) install DESTDIR="$(abs_builddir)/_build"; \
|
||||
for i in $(ENABLED_EXTENSIONS); do \
|
||||
mv "$(builddir)/_build$(topextensiondir)/$${i}$(extensionbase)" "$(builddir)/_build/"; \
|
||||
cp -r "$(builddir)/_build$(datadir)/locale" "$(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 \
|
||||
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"; \
|
||||
glib-compile-schemas "$(builddir)/_build/$${i}$(extensionbase)/schemas"; \
|
||||
fi; \
|
||||
@@ -27,3 +34,19 @@ zip-file: all
|
||||
zip -qr "$(abs_builddir)/zip-files/$${i}$(extensionbase).shell-extension.zip" .; \
|
||||
); \
|
||||
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
|
||||
|
||||
308
NEWS
308
NEWS
@@ -1,3 +1,311 @@
|
||||
3.11.92
|
||||
=======
|
||||
* nothing to see here, move on
|
||||
|
||||
3.11.91
|
||||
=======
|
||||
* updated translations (ko, fur)
|
||||
|
||||
3.11.90
|
||||
=======
|
||||
* several fixes and improvements to the window-list
|
||||
(can be scrolled, works correctly with the OSD
|
||||
keyboard, filters skip-taskbar windows, does not
|
||||
force all notifications to bold)
|
||||
* drive-menu fixed not to show shadowed mounts
|
||||
* updates for gnome-shell changes (launch-new-instance,
|
||||
auto-move-windows, places-menu)
|
||||
* build system fixes for systems without /bin/bash
|
||||
* updated translations (or, tr, uk)
|
||||
|
||||
3.11.5
|
||||
======
|
||||
* updates for gnome-shell changes
|
||||
* updated translations (kn)
|
||||
|
||||
3.11.4
|
||||
======
|
||||
* classic mode now supports session saving
|
||||
* updates for gnome-shell changes
|
||||
* updated translations (ar, kn)
|
||||
|
||||
3.11.3
|
||||
======
|
||||
* workspace-indicator is vertically aligned now
|
||||
* updated translations (ar, eo, ta, te)
|
||||
|
||||
3.11.2
|
||||
======
|
||||
* updated translations (zh_CN)
|
||||
|
||||
3.11.1
|
||||
======
|
||||
* ignore shadowed mounts in drive-menu extension
|
||||
* updates for gnome-shell/gjs changes
|
||||
* updated translations (el, th)
|
||||
|
||||
3.10.1
|
||||
======
|
||||
* updated translations (af, ca, ca@valencia, de, et, eu, fa,
|
||||
hu, lt, lv, nb, nl, pa, pt, sk, sr, sr@latin, tr)
|
||||
|
||||
3.10.0
|
||||
======
|
||||
* updated translations (as, cs, da, es, et, fi, fr, gl,
|
||||
he, id, it, kk, lt, lv, pa, pl, pt, pt_BR, ru, sl, tg,
|
||||
uk, zh_HK, zh_TW)
|
||||
|
||||
3.9.92
|
||||
======
|
||||
* more updates and fixes for gnome-shell master changes
|
||||
and regressions (systemMonitor, window-list, apps-menu)
|
||||
* lots of updated translations (ar, as, cs, da, de, el, es,
|
||||
eu, fi, gl, he, hu, it, ja, kk, ko, lv, nb, nl, pa, pl,
|
||||
pt_BR, ru, sk, sr, sr@latin, ta, tg)
|
||||
|
||||
3.9.91
|
||||
======
|
||||
* update the classic mode session and theme to work with the
|
||||
new system menu
|
||||
* the usual round of updates and fixes for gnome-shell
|
||||
API changes
|
||||
* updated translations (de, it, lt, nl, pl, pt_BR, sk,
|
||||
zh_HK, zh_TW)
|
||||
|
||||
3.9.90
|
||||
======
|
||||
* xrandr-indicator was removed, as the implementation
|
||||
was incompatible with the new DisplayConfig mutter API
|
||||
* various extensions were updated for the 3.9.90 gnome-shell API
|
||||
* updated translations (cs, es, fur, gl, he, hu, id, ja, sl, tg,
|
||||
zh_CN, zh_HK, zh_TW)
|
||||
|
||||
3.9.5
|
||||
=====
|
||||
* alternative-status-menu was removed entirely, as
|
||||
it does not fit in the designs of the new unified
|
||||
status menu
|
||||
* updated translations (as, gu, it, ru)
|
||||
|
||||
3.9.4
|
||||
=====
|
||||
* apps-menu: fixed handling of hot corner in case
|
||||
of screen reconfiguration
|
||||
* alternative-status-menu now correctly honors polkit
|
||||
for hibernation
|
||||
* user-menu now loads themes from $XDG_DATA_HOME too
|
||||
* translation updates (de, id, pt_BR, vi, zh_CN, ml)
|
||||
|
||||
3.9.3
|
||||
=====
|
||||
* classic mode mini extensions were replaced with a
|
||||
GSettings override specified in the .json file
|
||||
* styling of classic mode improved
|
||||
* native-window-placement is back working on 3.9
|
||||
* misc bug fixes
|
||||
* traslation updates (an, cs, el, es, gl, nb, pl, sk, tg)
|
||||
|
||||
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
|
||||
=====
|
||||
* improvements to the build system and convenience module,
|
||||
|
||||
12
README
12
README
@@ -24,12 +24,6 @@ alternate-tab
|
||||
|
||||
Lets you use classic Alt+Tab (window-based instead of app-based) in GNOME Shell.
|
||||
|
||||
alternative-status-menu
|
||||
|
||||
For those who want a power off item visible at all the time, replaces GNOME Shell
|
||||
status menu with one featuring separate Suspend and Power Off. Adds the ability to
|
||||
hibernate as well.
|
||||
|
||||
apps-menu
|
||||
|
||||
Lets you reach an application using gnome 2.x style menu on the panel.
|
||||
@@ -77,12 +71,6 @@ windowsNavigator
|
||||
|
||||
Allow keyboard selection of windows and workspaces in overlay mode.
|
||||
|
||||
xrandr-indicator
|
||||
|
||||
Replace the GTK+ based indicator from gnome-settings-daemon with
|
||||
a native one. Lets the user rotate the laptop monitor and open
|
||||
display preferences quickly.
|
||||
|
||||
License
|
||||
=======
|
||||
GNOME Shell Extensions are distributed under the terms of the GNU General Public License,
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#!/bin/bash
|
||||
#!/bin/sh
|
||||
# Run this to generate all the initial makefiles, etc.
|
||||
|
||||
srcdir=`dirname $0`
|
||||
|
||||
55
configure.ac
55
configure.ac
@@ -1,10 +1,10 @@
|
||||
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.11.92],[https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-shell&component=extensions])
|
||||
|
||||
AC_CONFIG_MACRO_DIR([m4])
|
||||
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])])
|
||||
|
||||
@@ -18,24 +18,45 @@ PKG_PROG_PKG_CONFIG([0.22])
|
||||
|
||||
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 by default, install only extensions that do not change completely the shell experience,
|
||||
dnl that don't require GSettings and that don't require external packages for typelibs
|
||||
dnl (so basically only menus, status icons, search providers, overview tabs, message tray sources, etc.)
|
||||
DEFAULT_EXTENSIONS="alternative-status-menu apps-menu dock drive-menu gajim places-menu windowsNavigator workspace-indicator"
|
||||
ALL_EXTENSIONS="$DEFAULT_EXTENSIONS alternate-tab auto-move-windows example native-window-placement systemMonitor user-theme xrandr-indicator"
|
||||
CLASSIC_EXTENSIONS="apps-menu places-menu alternate-tab launch-new-instance window-list"
|
||||
DEFAULT_EXTENSIONS="$CLASSIC_EXTENSIONS drive-menu windowsNavigator workspace-indicator"
|
||||
ALL_EXTENSIONS="$DEFAULT_EXTENSIONS auto-move-windows example native-window-placement systemMonitor user-theme"
|
||||
AC_SUBST(CLASSIC_EXTENSIONS, [$CLASSIC_EXTENSIONS])
|
||||
AC_SUBST(ALL_EXTENSIONS, [$ALL_EXTENSIONS])
|
||||
AC_ARG_ENABLE([extensions],
|
||||
[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.
|
||||
Use "all" to enable all available extensions.])],
|
||||
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, or "classic-mode" to enable extensions that restore GNOME 2 functionality.])],
|
||||
[],
|
||||
[enable_extensions=$DEFAULT_EXTENSIONS]
|
||||
)
|
||||
if test x$enable_extensions = xall; then
|
||||
|
||||
if test x"$enable_extensions" = xall; then
|
||||
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
|
||||
|
||||
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=
|
||||
for e in $enable_extensions; do
|
||||
case $e in
|
||||
@@ -44,13 +65,8 @@ for e in $enable_extensions; do
|
||||
[ENABLED_EXTENSIONS="$ENABLED_EXTENSIONS $e"],
|
||||
[AC_MSG_WARN([libgtop-2.0 not found, disabling systemMonitor])])
|
||||
;;
|
||||
xrandr-indicator)
|
||||
PKG_CHECK_MODULES(GNOME_DESKTOP, gnome-desktop-3.0 >= 2.91.6,
|
||||
[ENABLED_EXTENSIONS="$ENABLED_EXTENSIONS $e"],
|
||||
[AC_MSG_WARN([gnome-desktop-3.0 not found, disabling xrandr-indicator])])
|
||||
;;
|
||||
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|apps-menu|auto-move-windows|drive-menu|example|launch-new-instance|native-window-placement|places-menu|user-theme|window-list|windowsNavigator|workspace-indicator)
|
||||
ENABLED_EXTENSIONS="$ENABLED_EXTENSIONS $e"
|
||||
;;
|
||||
*)
|
||||
@@ -62,21 +78,20 @@ AC_SUBST(ENABLED_EXTENSIONS, [$ENABLED_EXTENSIONS])
|
||||
|
||||
dnl Please keep this sorted alphabetically
|
||||
AC_CONFIG_FILES([
|
||||
data/Makefile
|
||||
extensions/alternate-tab/Makefile
|
||||
extensions/alternative-status-menu/Makefile
|
||||
extensions/apps-menu/Makefile
|
||||
extensions/auto-move-windows/Makefile
|
||||
extensions/dock/Makefile
|
||||
extensions/drive-menu/Makefile
|
||||
extensions/example/Makefile
|
||||
extensions/gajim/Makefile
|
||||
extensions/launch-new-instance/Makefile
|
||||
extensions/native-window-placement/Makefile
|
||||
extensions/places-menu/Makefile
|
||||
extensions/systemMonitor/Makefile
|
||||
extensions/user-theme/Makefile
|
||||
extensions/window-list/Makefile
|
||||
extensions/windowsNavigator/Makefile
|
||||
extensions/workspace-indicator/Makefile
|
||||
extensions/xrandr-indicator/Makefile
|
||||
extensions/Makefile
|
||||
Makefile
|
||||
po/Makefile.in
|
||||
|
||||
72
data/Makefile.am
Normal file
72
data/Makefile.am
Normal file
@@ -0,0 +1,72 @@
|
||||
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)
|
||||
|
||||
gsettings_in_files = org.gnome.shell.extensions.classic-overrides.gschema.xml.in
|
||||
gsettings_SCHEMAS = $(gsettings_in_files:.xml.in=.xml)
|
||||
|
||||
@INTLTOOL_XML_NOMERGE_RULE@
|
||||
@GSETTINGS_RULES@
|
||||
|
||||
%.desktop.in:%.desktop.in.in
|
||||
$(AM_V_GEN) sed \
|
||||
-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) \
|
||||
$(gsettings_in_files) \
|
||||
$(theme_DATA) \
|
||||
$(NULL)
|
||||
|
||||
CLEANFILES = \
|
||||
$(desktop_DATA) \
|
||||
$(session_DATA) \
|
||||
$(xsession_DATA) \
|
||||
$(mode_DATA) \
|
||||
$(gsettings_SCHEMAS) \
|
||||
$(NULL)
|
||||
695
data/classic-process-working.svg
Normal file
695
data/classic-process-working.svg
Normal file
@@ -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 |
250
data/classic-toggle-off-intl.svg
Normal file
250
data/classic-toggle-off-intl.svg
Normal file
@@ -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 |
255
data/classic-toggle-off-us.svg
Normal file
255
data/classic-toggle-off-us.svg
Normal file
@@ -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 |
199
data/classic-toggle-on-intl.svg
Normal file
199
data/classic-toggle-on-intl.svg
Normal file
@@ -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 |
212
data/classic-toggle-on-us.svg
Normal file
212
data/classic-toggle-on-us.svg
Normal file
@@ -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 |
10
data/classic.json.in
Normal file
10
data/classic.json.in
Normal file
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"parentMode": "user",
|
||||
"stylesheetName": "gnome-classic.css",
|
||||
"overridesSchema": "org.gnome.shell.extensions.classic-overrides",
|
||||
"enabledExtensions": [@CLASSIC_EXTENSIONS@],
|
||||
"panel": { "left": ["activities", "appMenu"],
|
||||
"center": [],
|
||||
"right": ["a11y", "keyboard", "dateMenu", "aggregateMenu"]
|
||||
}
|
||||
}
|
||||
282
data/gnome-classic.css
Normal file
282
data/gnome-classic.css
Normal file
@@ -0,0 +1,282 @@
|
||||
@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-menu-item:hover .popup-status-menu-item {
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.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);
|
||||
}
|
||||
|
||||
/* SCROLLBARS for POPUP MENU */
|
||||
|
||||
.popup-menu StScrollBar StBin#trough {
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
.popup-menu StScrollBar StButton#vhandle, .popup-menu StScrollBar StButton#hhandle {
|
||||
border-color: #e9e9e9;
|
||||
background-color: #888;
|
||||
}
|
||||
.popup-menu StScrollBar StButton#vhandle:hover,
|
||||
.popup-menu StScrollBar StButton#hhandle:hover {
|
||||
background-color: #666;
|
||||
}
|
||||
.popup-menu StScrollBar StButton#vhandle:active,
|
||||
.popup-menu StScrollBar StButton#hhandle:active {
|
||||
background-color: #4a90d9;
|
||||
}
|
||||
|
||||
/* 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;
|
||||
}
|
||||
|
||||
/* SYSTEM MENU */
|
||||
|
||||
.system-menu-action {
|
||||
color: #e6e6e6;
|
||||
border: 1px solid #ddd; /* using rgba() is flaky unfortunately */
|
||||
}
|
||||
|
||||
.system-menu-action:hover,
|
||||
.system-menu-action:focus,
|
||||
.system-menu-action:active {
|
||||
color: white;
|
||||
background-color: #4a90d9;
|
||||
border: none;
|
||||
}
|
||||
|
||||
/* VOLUME SLIDER */
|
||||
|
||||
.slider {
|
||||
-slider-background-color: #e9e9e9;
|
||||
-slider-border-color: #999;
|
||||
-slider-active-background-color: #76b0ec;
|
||||
-slider-active-border-color: #1f6dbc;
|
||||
-slider-handle-border-color: #888;
|
||||
-slider-handle-border-width: 1px;
|
||||
}
|
||||
|
||||
.popup-menu-icon {
|
||||
color: #000 !important;
|
||||
}
|
||||
|
||||
/* 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;
|
||||
}
|
||||
|
||||
.system-menu-action {
|
||||
color: #555 !important;
|
||||
}
|
||||
|
||||
.system-menu-action:hover,
|
||||
.system-menu-action:focus {
|
||||
color: black !important;
|
||||
}
|
||||
7
data/gnome-classic.desktop.in
Normal file
7
data/gnome-classic.desktop.in
Normal file
@@ -0,0 +1,7 @@
|
||||
[Desktop Entry]
|
||||
_Name=GNOME Classic
|
||||
_Comment=This session logs you into GNOME Classic
|
||||
Exec=env GNOME_SHELL_SESSION_MODE=classic gnome-session --session gnome-classic
|
||||
TryExec=gnome-session
|
||||
Icon=
|
||||
Type=Application
|
||||
3
data/gnome-classic.session.desktop.in.in
Normal file
3
data/gnome-classic.session.desktop.in.in
Normal file
@@ -0,0 +1,3 @@
|
||||
[GNOME Session]
|
||||
_Name=GNOME Classic
|
||||
RequiredComponents=gnome-shell-classic;gnome-settings-daemon;nautilus-classic;
|
||||
17
data/gnome-shell-classic.desktop.in.in
Normal file
17
data/gnome-shell-classic.desktop.in.in
Normal file
@@ -0,0 +1,17 @@
|
||||
[Desktop Entry]
|
||||
Type=Application
|
||||
_Name=GNOME Shell Classic
|
||||
_Comment=Window management and application launching
|
||||
Exec=@bindir@/gnome-shell
|
||||
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
|
||||
@@ -0,0 +1,38 @@
|
||||
<schemalist>
|
||||
<schema id="org.gnome.shell.extensions.classic-overrides"
|
||||
path="/org/gnome/shell/extensions/classic-overrides/"
|
||||
gettext-domain="gnome-shell-extensions">
|
||||
<key name="attach-modal-dialogs" type="b">
|
||||
<default>true</default>
|
||||
<_summary>Attach modal dialog to the parent window</_summary>
|
||||
<_description>
|
||||
This key overrides the key in org.gnome.mutter when running
|
||||
GNOME Shell.
|
||||
</_description>
|
||||
</key>
|
||||
|
||||
<key name="edge-tiling" type="b">
|
||||
<default>true</default>
|
||||
<_summary>Enable edge tiling when dropping windows on screen edges</_summary>
|
||||
<_description>
|
||||
This key overrides the key in org.gnome.mutter when running GNOME Shell.
|
||||
</_description>
|
||||
</key>
|
||||
|
||||
<key name="workspaces-only-on-primary" type="b">
|
||||
<default>true</default>
|
||||
<_summary>Workspaces only on primary monitor</_summary>
|
||||
<_description>
|
||||
This key overrides the key in org.gnome.mutter when running GNOME Shell.
|
||||
</_description>
|
||||
</key>
|
||||
|
||||
<key name="focus-change-on-pointer-rest" type="b">
|
||||
<default>true</default>
|
||||
<_summary>Delay focus changes in mouse mode until the pointer stops moving</_summary>
|
||||
<_description>
|
||||
This key overrides the key in org.gnome.mutter when running GNOME Shell.
|
||||
</_description>
|
||||
</key>
|
||||
</schema>
|
||||
</schemalist>
|
||||
@@ -11,7 +11,7 @@ metadata.json: metadata.json.in $(top_builddir)/config.status
|
||||
-e "s|[@]uuid@|$(uuid)|" \
|
||||
-e "s|[@]gschemaname@|$(gschemaname)|" \
|
||||
-e "s|[@]gettext_domain@|$(GETTEXT_PACKAGE)|" \
|
||||
-e "s|[@]shell_current@|$(PACKAGE_VERSION)|" \
|
||||
-e "s|[@]shell_current@|$(SHELL_VERSION)|" \
|
||||
-e "s|[@]url@|$(extensionurl)|" \
|
||||
$< > $@
|
||||
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
EXTENSION_ID = alternate-tab
|
||||
|
||||
EXTRA_MODULES = settings.js
|
||||
EXTRA_MODULES = prefs.js
|
||||
|
||||
include ../../extension.mk
|
||||
include ../../settings.mk
|
||||
|
||||
@@ -1,487 +1,66 @@
|
||||
/* -*- 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
|
||||
*/
|
||||
/* -*- mode: js; js-basic-offset: 4; indent-tabs-mode: nil -*- */
|
||||
|
||||
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 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();
|
||||
}
|
||||
let injections = {};
|
||||
|
||||
function init(metadata) {
|
||||
Convenience.initTranslations();
|
||||
settings = Convenience.getSettings();
|
||||
}
|
||||
|
||||
function setKeybinding(name, func) {
|
||||
Main.wm.setCustomKeybindingHandler(name, Shell.KeyBindingMode.NORMAL, func);
|
||||
}
|
||||
|
||||
function enable() {
|
||||
Meta.keybindings_set_custom_handler('switch-windows', doAltTab);
|
||||
Meta.keybindings_set_custom_handler('switch-group', doAltTab);
|
||||
Meta.keybindings_set_custom_handler('switch-windows-backward', doAltTab);
|
||||
Meta.keybindings_set_custom_handler('switch-group-backward', doAltTab);
|
||||
injections['_initialSelection'] = AltTab.WindowSwitcherPopup.prototype._initialSelection;
|
||||
AltTab.WindowSwitcherPopup.prototype._initialSelection = function(backward, binding) {
|
||||
if (binding == 'switch-windows-backward' ||
|
||||
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() {
|
||||
Meta.keybindings_set_custom_handler('switch-windows', Lang.bind(Main.wm, Main.wm._startAppSwitcher));
|
||||
Meta.keybindings_set_custom_handler('switch-group', Lang.bind(Main.wm, Main.wm._startAppSwitcher));
|
||||
Meta.keybindings_set_custom_handler('switch-windows-backward', Lang.bind(Main.wm, Main.wm._startAppSwitcher));
|
||||
Meta.keybindings_set_custom_handler('switch-group-backward', Lang.bind(Main.wm, Main.wm._startAppSwitcher));
|
||||
var prop;
|
||||
|
||||
setKeybinding('switch-applications', Lang.bind(Main.wm, Main.wm._startAppSwitcher));
|
||||
setKeybinding('switch-group', Lang.bind(Main.wm, Main.wm._startAppSwitcher));
|
||||
setKeybinding('switch-applications-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@",
|
||||
"gettext-domain": "@gettext_domain@",
|
||||
"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" ],
|
||||
"shell-version": [ "@shell_current@" ],
|
||||
"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>
|
||||
78
extensions/alternate-tab/prefs.js
Normal file
78
extensions/alternate-tab/prefs.js
Normal file
@@ -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 +0,0 @@
|
||||
EXTENSION_ID = alternative-status-menu
|
||||
|
||||
include ../../extension.mk
|
||||
@@ -1,122 +0,0 @@
|
||||
/* -*- mode: js2 - indent-tabs-mode: nil - js2-basic-offset: 4 -*- */
|
||||
const Lang = imports.lang;
|
||||
const St = imports.gi.St;
|
||||
const Main = imports.ui.main;
|
||||
const PopupMenu = imports.ui.popupMenu;
|
||||
|
||||
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;
|
||||
|
||||
let suspend_item = null;
|
||||
let hibernate_item = null;
|
||||
let poweroff_item = null;
|
||||
let suspend_signal_id = 0, hibernate_signal_id = 0;
|
||||
|
||||
function updateSuspend(object, pspec, item) {
|
||||
item.actor.visible = object.get_can_suspend();
|
||||
}
|
||||
|
||||
function updateHibernate(object, pspec, item) {
|
||||
item.actor.visible = object.get_can_hibernate();
|
||||
}
|
||||
|
||||
function onSuspendActivate(item) {
|
||||
Main.overview.hide();
|
||||
|
||||
this._screenSaverProxy.LockRemote(Lang.bind(this, function() {
|
||||
this._upClient.suspend_sync(null);
|
||||
}));
|
||||
}
|
||||
|
||||
function onHibernateActivate(item) {
|
||||
Main.overview.hide();
|
||||
|
||||
this._screenSaverProxy.LockRemote(Lang.bind(this, function() {
|
||||
this._upClient.hibernate_sync(null);
|
||||
}));
|
||||
}
|
||||
|
||||
// Put your extension initialization code here
|
||||
function init(metadata) {
|
||||
Convenience.initTranslations();
|
||||
}
|
||||
|
||||
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();
|
||||
}
|
||||
@@ -1,10 +0,0 @@
|
||||
{
|
||||
"extension-id": "@extension_id@",
|
||||
"uuid": "@uuid@",
|
||||
"settings-schema": "@gschemaname@",
|
||||
"gettext-domain": "@gettext_domain@",
|
||||
"name": "Alternative Status Menu",
|
||||
"description": "Replaces GNOME Shell Status Menu with one showing Suspend/Hibernate and Power Off as separate items",
|
||||
"shell-version": [ "@shell_current@" ],
|
||||
"url": "@url@"
|
||||
}
|
||||
@@ -1,3 +0,0 @@
|
||||
.popup-alternating-menu-item:alternate {
|
||||
font-weight: normal !important;
|
||||
}
|
||||
@@ -1,113 +1,619 @@
|
||||
/* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */
|
||||
|
||||
const Atk = imports.gi.Atk;
|
||||
const GMenu = imports.gi.GMenu;
|
||||
const Lang = imports.lang;
|
||||
const Shell = imports.gi.Shell;
|
||||
const St = imports.gi.St;
|
||||
|
||||
const Clutter = imports.gi.Clutter;
|
||||
const Main = imports.ui.main;
|
||||
const PanelMenu = imports.ui.panelMenu;
|
||||
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({
|
||||
Name: 'AppsMenu.AppMenuItem',
|
||||
const ExtensionUtils = imports.misc.extensionUtils;
|
||||
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,
|
||||
|
||||
_init: function (app, params) {
|
||||
this.parent(params);
|
||||
|
||||
this._app = app;
|
||||
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 });
|
||||
_init: function(button) {
|
||||
this.parent();
|
||||
this._button = button;
|
||||
this.actor.add_child(new St.Label({ text: _("Activities Overview") }));
|
||||
},
|
||||
|
||||
activate: function (event) {
|
||||
this._app.activate_full(-1, event.get_time());
|
||||
activate: function(event) {
|
||||
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.actor.add_child(this._iconBin);
|
||||
|
||||
let appLabel = new St.Label({ text: app.get_name() });
|
||||
this.actor.add_child(appLabel, { 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.actor.add_child(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) {
|
||||
this.parent(sourceActor, arrowAlignment, arrowSide);
|
||||
this._button = button;
|
||||
},
|
||||
|
||||
isEmpty: function() {
|
||||
return false;
|
||||
},
|
||||
|
||||
open: function(animate) {
|
||||
this._button.hotCorner.setBarrierSize(0);
|
||||
if (this._button.hotCorner.actor) // fallback corner
|
||||
this._button.hotCorner.actor.hide();
|
||||
this.parent(animate);
|
||||
},
|
||||
|
||||
close: function(animate) {
|
||||
let size = Main.layoutManager.panelBox.height;
|
||||
this._button.hotCorner.setBarrierSize(size);
|
||||
if (this._button.hotCorner.actor) // fallback corner
|
||||
this._button.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({
|
||||
Name: 'AppsMenu.ApplicationsButton',
|
||||
Extends: PanelMenu.SystemStatusButton,
|
||||
Name: 'ApplicationsButton',
|
||||
Extends: PanelMenu.Button,
|
||||
|
||||
_init: function() {
|
||||
this.parent('start-here');
|
||||
this.parent(1.0, null, false);
|
||||
|
||||
this._appSys = Shell.AppSystem.get_default();
|
||||
this._installedChangedId = this._appSys.connect('installed-changed', Lang.bind(this, this._refresh));
|
||||
this.setMenu(new ApplicationsMenu(this.actor, 1.0, St.Side.TOP, this));
|
||||
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;
|
||||
|
||||
let hbox = new St.BoxLayout({ style_class: 'panel-status-menu-box' });
|
||||
|
||||
this._label = new St.Label({ text: _("Applications"),
|
||||
y_expand: true,
|
||||
y_align: Clutter.ActorAlign.CENTER });
|
||||
hbox.add_child(this._label);
|
||||
hbox.add_child(new St.Label({ text: '\u25BE',
|
||||
y_expand: true,
|
||||
y_align: Clutter.ActorAlign.CENTER }));
|
||||
|
||||
this.actor.add_actor(hbox);
|
||||
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();
|
||||
}));
|
||||
},
|
||||
|
||||
get hotCorner() {
|
||||
return Main.layoutManager.hotCorners[Main.layoutManager.primaryIndex];
|
||||
},
|
||||
|
||||
_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();
|
||||
},
|
||||
|
||||
destroy: function() {
|
||||
this._appSys.disconnect(this._installedChangedId);
|
||||
|
||||
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;
|
||||
_loadCategory: function(categoryId, dir) {
|
||||
let iter = dir.iter();
|
||||
let nextType;
|
||||
while ((nextType = iter.next()) != GMenu.TreeItemType.INVALID) {
|
||||
if (nextType == GMenu.TreeItemType.ENTRY) {
|
||||
var entry = iter.get_entry();
|
||||
var app = this._appSys.lookup_app_by_tree_entry(entry);
|
||||
if (!entry.get_app_info().get_nodisplay())
|
||||
menu.addMenuItem(new AppMenuItem(app));
|
||||
let entry = iter.get_entry();
|
||||
let appInfo = entry.get_app_info();
|
||||
let app = appSys.lookup_app(entry.get_desktop_file_id());
|
||||
if (appInfo.should_show()) {
|
||||
let menu_id = dir.get_menu_id();
|
||||
this.applicationsByCategory[categoryId].push(app);
|
||||
}
|
||||
} 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() {
|
||||
let tree = this._appSys.get_tree();
|
||||
let root = tree.get_root_directory();
|
||||
scrollToButton: function(button) {
|
||||
let appsScrollBoxAdj = this.applicationsScrollBox.get_vscroll_bar().get_adjustment();
|
||||
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 = new GMenu.Tree({ menu_basename: 'applications.menu' });
|
||||
tree.load_sync();
|
||||
let root = tree.get_root_directory();
|
||||
let categoryMenuItem = new CategoryMenuItem(this, null);
|
||||
this.categoriesBox.add_actor(categoryMenuItem.actor);
|
||||
let iter = root.iter();
|
||||
let nextType;
|
||||
while ((nextType = iter.next()) != GMenu.TreeItemType.INVALID) {
|
||||
if (nextType == GMenu.TreeItemType.DIRECTORY) {
|
||||
let dir = iter.get_directory();
|
||||
let item = new PopupMenu.PopupSubMenuMenuItem(dir.get_name());
|
||||
this._loadCategory(dir, item.menu);
|
||||
this.menu.addMenuItem(item);
|
||||
if (!dir.get_is_nodisplay()) {
|
||||
let categoryId = dir.get_menu_id();
|
||||
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];
|
||||
applist.sort(function(a,b) {
|
||||
return a.get_name().toLowerCase() > b.get_name().toLowerCase();
|
||||
});
|
||||
} 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);
|
||||
}
|
||||
}
|
||||
|
||||
return applist;
|
||||
},
|
||||
|
||||
destroy: function() {
|
||||
this.menu.actor.get_children().forEach(function(c) { c.destroy() });
|
||||
this.parent();
|
||||
}
|
||||
});
|
||||
|
||||
let appsMenuButton;
|
||||
let activitiesButton;
|
||||
let _hidingId;
|
||||
let _installedChangedId;
|
||||
let _panelBoxChangedId;
|
||||
let _showingId;
|
||||
|
||||
function enable() {
|
||||
activitiesButton = Main.panel.statusArea['activities'];
|
||||
activitiesButton.container.hide();
|
||||
appsMenuButton = new ApplicationsButton();
|
||||
Main.panel._leftBox.insert_actor(appsMenuButton.actor, 1);
|
||||
Main.panel._leftBox.child_set(appsMenuButton.actor, { y_fill : true } );
|
||||
Main.panel._menus.addMenu(appsMenuButton.menu);
|
||||
Main.panel.addToStatusArea('apps-menu', appsMenuButton, 1, 'left');
|
||||
|
||||
Main.wm.setCustomKeybindingHandler('panel-main-menu',
|
||||
Shell.KeyBindingMode.NORMAL |
|
||||
Shell.KeyBindingMode.OVERVIEW,
|
||||
function() {
|
||||
appsMenuButton.menu.toggle();
|
||||
});
|
||||
}
|
||||
|
||||
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();
|
||||
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() {
|
||||
/* do nothing */
|
||||
function init(metadata) {
|
||||
Convenience.initTranslations();
|
||||
}
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
{
|
||||
"extension-id": "@extension_id@",
|
||||
"uuid": "@uuid@",
|
||||
"settings-schema": "@gschemaname@",
|
||||
"gettext-domain": "@gettext_domain@",
|
||||
"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@" ],
|
||||
"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
|
||||
|
||||
EXTRA_MODULES = prefs.js
|
||||
|
||||
include ../../extension.mk
|
||||
include ../../settings.mk
|
||||
|
||||
|
||||
@@ -46,7 +46,7 @@ const WindowMover = new Lang.Class({
|
||||
},
|
||||
|
||||
_findAndMove: function(display, window, noRecurse) {
|
||||
if (!this._windowTracker.is_window_interesting(window))
|
||||
if (window.skip_taskbar)
|
||||
return;
|
||||
|
||||
let spaces = this._settings.get_strv(SETTINGS_KEY);
|
||||
@@ -87,80 +87,81 @@ function init() {
|
||||
settings = Convenience.getSettings();
|
||||
}
|
||||
|
||||
function myCheckWorkspaces() {
|
||||
let i;
|
||||
let emptyWorkspaces = new Array(this._workspaces.length);
|
||||
|
||||
for (i = 0; i < this._workspaces.length; i++) {
|
||||
let lastRemoved = this._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 winActor = windows[i];
|
||||
let win = winActor.meta_window;
|
||||
if (win.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
|
||||
this._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(this._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());
|
||||
|
||||
this._wm.unblockAnimations();
|
||||
|
||||
if (!Main.overview.visible && showOverview)
|
||||
Main.overview.show();
|
||||
}
|
||||
|
||||
this._checkWorkspacesId = 0;
|
||||
return false;
|
||||
}
|
||||
|
||||
function enable() {
|
||||
prevCheckWorkspaces = Main._checkWorkspaces;
|
||||
Main._checkWorkspaces = function() {
|
||||
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;
|
||||
|
||||
};
|
||||
prevCheckWorkspaces = Main.wm._workspaceTracker._checkWorkspaces;
|
||||
if (Meta.prefs_get_dynamic_workspaces())
|
||||
Main.wm._workspaceTracker._checkWorkspaces = myCheckWorkspaces;
|
||||
|
||||
winMover = new WindowMover();
|
||||
}
|
||||
|
||||
function disable() {
|
||||
Main._checkWorkspaces = prevCheckWorkspaces;
|
||||
Main.wm._workspaceTracker._checkWorkspaces = prevCheckWorkspaces;
|
||||
winMover.destroy();
|
||||
}
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
"settings-schema": "@gschemaname@",
|
||||
"gettext-domain": "@gettext_domain@",
|
||||
"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@" ],
|
||||
"original-authors": [ "alessandro.crismani@gmail.com", "thomas.bouffon@gmail.com" ],
|
||||
"url": "@url@"
|
||||
|
||||
260
extensions/auto-move-windows/prefs.js
Normal file
260
extensions/auto-move-windows/prefs.js
Normal file
@@ -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;
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
@@ -1,4 +1,5 @@
|
||||
// Drive menu extension
|
||||
const Clutter = imports.gi.Clutter;
|
||||
const Gio = imports.gi.Gio;
|
||||
const Lang = imports.lang;
|
||||
const St = imports.gi.St;
|
||||
@@ -11,37 +12,104 @@ const Main = imports.ui.main;
|
||||
const Panel = imports.ui.panel;
|
||||
const PanelMenu = imports.ui.panelMenu;
|
||||
const PopupMenu = imports.ui.popupMenu;
|
||||
const ShellMountOperation = imports.ui.shellMountOperation;
|
||||
|
||||
const ExtensionUtils = imports.misc.extensionUtils;
|
||||
const Me = ExtensionUtils.getCurrentExtension();
|
||||
const Convenience = Me.imports.convenience;
|
||||
|
||||
const DriveMenuItem = new Lang.Class({
|
||||
Name: 'DriveMenu.DriveMenuItem',
|
||||
const MountMenuItem = new Lang.Class({
|
||||
Name: 'DriveMenu.MountMenuItem',
|
||||
Extends: PopupMenu.PopupBaseMenuItem,
|
||||
|
||||
_init: function(place) {
|
||||
_init: function(mount) {
|
||||
this.parent();
|
||||
|
||||
this.place = place;
|
||||
this.label = new St.Label({ text: mount.get_name() });
|
||||
this.actor.add(this.label, { expand: true });
|
||||
this.actor.label_actor = this.label;
|
||||
|
||||
this.label = new St.Label({ text: place.name });
|
||||
this.addActor(this.label);
|
||||
this.mount = mount;
|
||||
|
||||
let ejectIcon = new St.Icon({ icon_name: 'media-eject',
|
||||
icon_type: St.IconType.SYMBOLIC,
|
||||
let ejectIcon = new St.Icon({ icon_name: 'media-eject-symbolic',
|
||||
style_class: 'popup-menu-icon ' });
|
||||
let ejectButton = new St.Button({ child: ejectIcon });
|
||||
ejectButton.connect('clicked', Lang.bind(this, this._eject));
|
||||
this.addActor(ejectButton);
|
||||
this.actor.add(ejectButton);
|
||||
|
||||
this._changedId = mount.connect('changed', Lang.bind(this, this._syncVisibility));
|
||||
this._syncVisibility();
|
||||
},
|
||||
|
||||
destroy: function() {
|
||||
if (this._changedId) {
|
||||
this.mount.disconnect(this._changedId);
|
||||
this._changedId = 0;
|
||||
}
|
||||
|
||||
this.parent();
|
||||
},
|
||||
|
||||
_isInteresting: function() {
|
||||
if (!this.mount.can_eject() && !this.mount.can_unmount())
|
||||
return false;
|
||||
if (this.mount.is_shadowed())
|
||||
return false;
|
||||
|
||||
let volume = this.mount.get_volume();
|
||||
|
||||
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';
|
||||
},
|
||||
|
||||
_syncVisibility: function() {
|
||||
this.actor.visible = this._isInteresting();
|
||||
},
|
||||
|
||||
_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) {
|
||||
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);
|
||||
}
|
||||
@@ -49,44 +117,77 @@ const DriveMenuItem = new Lang.Class({
|
||||
|
||||
const DriveMenu = new Lang.Class({
|
||||
Name: 'DriveMenu.DriveMenu',
|
||||
Extends: PanelMenu.SystemStatusButton,
|
||||
Extends: PanelMenu.Button,
|
||||
|
||||
_init: function() {
|
||||
this.parent('media-eject');
|
||||
this.parent(0.0, _("Removable devices"));
|
||||
|
||||
this._manager = Main.placesManager;
|
||||
this._updatedId = this._manager.connect('mounts-updated', Lang.bind(this, this._update));
|
||||
let hbox = new St.BoxLayout({ style_class: 'panel-status-menu-box' });
|
||||
let icon = new St.Icon({ icon_name: 'media-eject-symbolic',
|
||||
style_class: 'system-status-icon' });
|
||||
|
||||
this._contentSection = new PopupMenu.PopupMenuSection();
|
||||
this.menu.addMenuItem(this._contentSection);
|
||||
hbox.add_child(icon);
|
||||
hbox.add_child(new St.Label({ text: '\u25BE',
|
||||
y_expand: true,
|
||||
y_align: Clutter.ActorAlign.CENTER }));
|
||||
this.actor.add_child(hbox);
|
||||
|
||||
this._update();
|
||||
this._monitor = Gio.VolumeMonitor.get();
|
||||
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._mounts = [ ];
|
||||
|
||||
this._monitor.get_mounts().forEach(Lang.bind(this, this._addMount));
|
||||
|
||||
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 app = appSystem.lookup_app('nautilus.desktop');
|
||||
app.activate_full(-1, event.get_time());
|
||||
});
|
||||
|
||||
this._updateMenuVisibility();
|
||||
},
|
||||
|
||||
_update: function() {
|
||||
this._contentSection.removeAll();
|
||||
_updateMenuVisibility: function() {
|
||||
if (this._mounts.filter(function(i) i.actor.visible).length > 0)
|
||||
this.actor.show();
|
||||
else
|
||||
this.actor.hide();
|
||||
},
|
||||
|
||||
let mounts = this._manager.getMounts();
|
||||
let any = false;
|
||||
for (let i = 0; i < mounts.length; i++) {
|
||||
if (mounts[i].isRemovable()) {
|
||||
this._contentSection.addMenuItem(new DriveMenuItem(mounts[i]));
|
||||
any = true;
|
||||
_addMount: function(mount) {
|
||||
let item = new MountMenuItem(mount);
|
||||
this._mounts.unshift(item);
|
||||
this.menu.addMenuItem(item, 0);
|
||||
},
|
||||
|
||||
_removeMount: function(mount) {
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
||||
this.actor.visible = any;
|
||||
log ('Removing a mount that was never added to the menu');
|
||||
},
|
||||
|
||||
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();
|
||||
},
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
"settings-schema": "@gschemaname@",
|
||||
"gettext-domain": "@gettext_domain@",
|
||||
"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@" ],
|
||||
"url": "@url@"
|
||||
}
|
||||
|
||||
@@ -1,3 +1,6 @@
|
||||
EXTENSION_ID = example
|
||||
|
||||
EXTRA_MODULES = prefs.js
|
||||
|
||||
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
|
||||
const St = imports.gi.St;
|
||||
const Mainloop = imports.mainloop;
|
||||
@@ -12,11 +13,14 @@ const Me = ExtensionUtils.getCurrentExtension();
|
||||
const Convenience = Me.imports.convenience;
|
||||
|
||||
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;
|
||||
global.stage.add_actor(text);
|
||||
text.set_position(Math.floor (monitor.width / 2 - text.width / 2), Math.floor(monitor.height / 2 - text.height / 2));
|
||||
Mainloop.timeout_add(3000, function () { text.destroy(); });
|
||||
global.stage.add_actor(label);
|
||||
label.set_position(Math.floor (monitor.width / 2 - label.width / 2), Math.floor(monitor.height / 2 - label.height / 2));
|
||||
Mainloop.timeout_add(3000, function () { label.destroy(); });
|
||||
}
|
||||
|
||||
// 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>
|
||||
52
extensions/example/prefs.js
Normal file
52
extensions/example/prefs.js
Normal file
@@ -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 */
|
||||
3
extensions/launch-new-instance/Makefile.am
Normal file
3
extensions/launch-new-instance/Makefile.am
Normal file
@@ -0,0 +1,3 @@
|
||||
EXTENSION_ID = launch-new-instance
|
||||
|
||||
include ../../extension.mk
|
||||
38
extensions/launch-new-instance/extension.js
Normal file
38
extensions/launch-new-instance/extension.js
Normal file
@@ -0,0 +1,38 @@
|
||||
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(result) {
|
||||
let app = this._appSys.lookup_app(result);
|
||||
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;
|
||||
}
|
||||
10
extensions/launch-new-instance/metadata.json.in
Normal file
10
extensions/launch-new-instance/metadata.json.in
Normal file
@@ -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@"
|
||||
}
|
||||
1
extensions/launch-new-instance/stylesheet.css
Normal file
1
extensions/launch-new-instance/stylesheet.css
Normal file
@@ -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 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_KEY = 'button-layout';
|
||||
|
||||
@@ -46,7 +49,6 @@ function injectToFunction(parent, name, func) {
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
const WORKSPACE_BORDER_GAP = 10; // gap between the workspace area and the workspace selector
|
||||
|
||||
const Rect = new Lang.Class({
|
||||
Name: 'NativeWindowPlacement.Rect',
|
||||
@@ -121,7 +123,8 @@ function enable() {
|
||||
|
||||
let settings = Convenience.getSettings();
|
||||
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');
|
||||
});
|
||||
connectedSignals.push({ obj: settings, id: signalId });
|
||||
@@ -135,19 +138,12 @@ function enable() {
|
||||
* PresentWindowsEffect::calculateWindowTransformationsNatural() from KDE, see:
|
||||
* https://projects.kde.org/projects/kde/kdebase/kde-workspace/repository/revisions/master/entry/kwin/effects/presentwindows/presentwindows.cpp
|
||||
*/
|
||||
Workspace.Workspace.prototype._calculateWindowTransformationsNatural = function(clones) {
|
||||
Workspace.Workspace.prototype._calculateWindowTransformationsNatural = function(clones, area) {
|
||||
// As we are using pseudo-random movement (See "slot") we need to make sure the list
|
||||
// is always sorted the same way no matter which window is currently active.
|
||||
clones = clones.sort(function (win1, win2) {
|
||||
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 x_gap = WORKSPACE_BORDER_GAP;
|
||||
let y_gap = WORKSPACE_BORDER_GAP * this._height / this._width
|
||||
let area = new Rect(this._x, this._y, this._width - x_gap, this._height - y_gap);
|
||||
|
||||
let bounds = area.copy();
|
||||
let area_rect = new Rect(area.x, area.y, area.width, area.height);
|
||||
let bounds = area_rect.copy();
|
||||
|
||||
let direction = 0;
|
||||
let directions = [];
|
||||
@@ -190,7 +186,7 @@ function enable() {
|
||||
if (diff[0] == 0 && diff[1] == 0)
|
||||
diff[0] = 1;
|
||||
// Try to keep screen/workspace aspect ratio
|
||||
if ( bounds.height / bounds.width > area.height / area.width )
|
||||
if ( bounds.height / bounds.width > area_rect.height / area_rect.width )
|
||||
diff[0] *= 2;
|
||||
else
|
||||
diff[1] *= 2;
|
||||
@@ -262,15 +258,15 @@ function enable() {
|
||||
|
||||
// Work out scaling by getting the most top-left and most bottom-right window coords.
|
||||
let scale;
|
||||
scale = Math.min(area.width / bounds.width,
|
||||
area.height / bounds.height,
|
||||
scale = Math.min(area_rect.width / bounds.width,
|
||||
area_rect.height / bounds.height,
|
||||
1.0);
|
||||
|
||||
// Make bounding rect fill the screen size for later steps
|
||||
bounds.x = bounds.x - (area.width - bounds.width * scale) / 2;
|
||||
bounds.y = bounds.y - (area.height - bounds.height * scale) / 2;
|
||||
bounds.width = area.width / scale;
|
||||
bounds.height = area.height / scale;
|
||||
bounds.x = bounds.x - (area_rect.width - bounds.width * scale) / 2;
|
||||
bounds.y = bounds.y - (area_rect.height - bounds.height * scale) / 2;
|
||||
bounds.width = area_rect.width / scale;
|
||||
bounds.height = area_rect.height / scale;
|
||||
|
||||
// Move all windows back onto the screen and set their scale
|
||||
for (let i = 0; i < rects.length; i++) {
|
||||
@@ -285,163 +281,144 @@ function enable() {
|
||||
let buttonOuterHeight, captionHeight;
|
||||
let buttonOuterWidth = 0;
|
||||
|
||||
let targets = [];
|
||||
let slots = [];
|
||||
for (let i = 0; i < rects.length; i++) {
|
||||
rects[i].x = rects[i].x * scale + this._x;
|
||||
rects[i].y = rects[i].y * scale + this._y;
|
||||
rects[i].x = rects[i].x * scale + area_rect.x;
|
||||
rects[i].y = rects[i].y * scale + area_rect.y;
|
||||
|
||||
targets[i] = [rects[i].x, rects[i].y, scale];
|
||||
slots.push([rects[i].x, rects[i].y, scale, clones[i]]);
|
||||
}
|
||||
|
||||
return [clones, targets];
|
||||
return slots;
|
||||
}
|
||||
workspaceInjections['_calculateWindowTransformationsNatural'] = undefined;
|
||||
|
||||
/**
|
||||
* positionWindows:
|
||||
* _updateWindowPositions:
|
||||
* @flags:
|
||||
* INITIAL - this is the initial positioning of the windows.
|
||||
* ANIMATE - Indicates that we need animate changing position.
|
||||
*/
|
||||
workspaceInjections['positionWindows'] = Workspace.Workspace.prototype.positionWindows;
|
||||
Workspace.Workspace.prototype.positionWindows = function(flags) {
|
||||
if (this._repositionWindowsId > 0) {
|
||||
Mainloop.source_remove(this._repositionWindowsId);
|
||||
this._repositionWindowsId = 0;
|
||||
}
|
||||
workspaceInjections['_updateWindowPositions'] = Workspace.Workspace.prototype._updateWindowPositions;
|
||||
Workspace.Workspace.prototype._updateWindowPositions = function(flags) {
|
||||
if (this._currentLayout == null) {
|
||||
this._recalculateWindowPositions(flags);
|
||||
return;
|
||||
}
|
||||
|
||||
let clones = this._windows.slice();
|
||||
if (this._reservedSlot)
|
||||
clones.push(this._reservedSlot);
|
||||
let initialPositioning = flags & WindowPositionFlags.INITIAL;
|
||||
let animate = flags & WindowPositionFlags.ANIMATE;
|
||||
|
||||
let initialPositioning = flags & WindowPositionFlags.INITIAL;
|
||||
let animate = flags & WindowPositionFlags.ANIMATE;
|
||||
let layout = this._currentLayout;
|
||||
let strategy = layout.strategy;
|
||||
|
||||
// Start the animations
|
||||
let targets = [];
|
||||
let scales = [];
|
||||
let [, , padding] = this._getSpacingAndPadding();
|
||||
let area = Workspace.padArea(this._actualGeometry, padding);
|
||||
|
||||
[clones, targets] = this._calculateWindowTransformationsNatural(clones);
|
||||
/// EDIT replace this version by our own:
|
||||
//let slots = strategy.computeWindowSlots(layout, area);
|
||||
|
||||
let currentWorkspace = global.screen.get_active_workspace();
|
||||
let isOnCurrentWorkspace = this.metaWorkspace == null || this.metaWorkspace == currentWorkspace;
|
||||
|
||||
for (let i = 0; i < clones.length; i++) {
|
||||
let clone = clones[i];
|
||||
let [x, y , scale] = targets[i];
|
||||
let metaWindow = clone.metaWindow;
|
||||
let mainIndex = this._lookupIndex(metaWindow);
|
||||
let overlay = this._windowOverlays[mainIndex];
|
||||
/// EDIT copied from _realRecalculateWindowPositions:
|
||||
let clones = this._windows.slice();
|
||||
if (clones.length == 0)
|
||||
return;
|
||||
|
||||
// Positioning a window currently being dragged must be avoided;
|
||||
// we'll just leave a blank spot in the layout for it.
|
||||
if (clone.inDrag)
|
||||
continue;
|
||||
clones.sort(function(a, b) {
|
||||
return a.metaWindow.get_stable_sequence() - b.metaWindow.get_stable_sequence();
|
||||
});
|
||||
|
||||
if (overlay && initialPositioning)
|
||||
overlay.hide();
|
||||
if (animate && isOnCurrentWorkspace) {
|
||||
if (!metaWindow.showing_on_its_workspace()) {
|
||||
/* Hidden windows should fade in and grow
|
||||
* therefore we need to resize them now so they
|
||||
* can be scaled up later */
|
||||
if (initialPositioning) {
|
||||
clone.actor.opacity = 0;
|
||||
clone.actor.scale_x = 0;
|
||||
clone.actor.scale_y = 0;
|
||||
clone.actor.x = x;
|
||||
clone.actor.y = y;
|
||||
}
|
||||
if (this._reservedSlot)
|
||||
clones.push(this._reservedSlot);
|
||||
|
||||
// Make the window slightly transparent to indicate it's hidden
|
||||
Tweener.addTween(clone.actor,
|
||||
{ opacity: 255,
|
||||
time: Overview.ANIMATION_TIME,
|
||||
transition: 'easeInQuad'
|
||||
});
|
||||
/// EDIT our own window placement function:
|
||||
let slots = this._calculateWindowTransformationsNatural(clones, area);
|
||||
|
||||
|
||||
let currentWorkspace = global.screen.get_active_workspace();
|
||||
let isOnCurrentWorkspace = this.metaWorkspace == null || this.metaWorkspace == currentWorkspace;
|
||||
|
||||
for (let i = 0; i < slots.length; i++) {
|
||||
let slot = slots[i];
|
||||
let [x, y, scale, clone] = slot;
|
||||
let metaWindow = clone.metaWindow;
|
||||
let overlay = clone.overlay;
|
||||
clone.slotId = i;
|
||||
|
||||
// Positioning a window currently being dragged must be avoided;
|
||||
// we'll just leave a blank spot in the layout for it.
|
||||
if (clone.inDrag)
|
||||
continue;
|
||||
|
||||
let cloneWidth = clone.actor.width * scale;
|
||||
let cloneHeight = clone.actor.height * scale;
|
||||
clone.slot = [x, y, cloneWidth, cloneHeight];
|
||||
|
||||
if (overlay && (initialPositioning || !clone.positioned))
|
||||
overlay.hide();
|
||||
|
||||
if (!clone.positioned) {
|
||||
// This window appeared after the overview was already up
|
||||
// Grow the clone from the center of the slot
|
||||
clone.actor.x = x + cloneWidth / 2;
|
||||
clone.actor.y = y + cloneHeight / 2;
|
||||
clone.actor.scale_x = 0;
|
||||
clone.actor.scale_y = 0;
|
||||
clone.positioned = true;
|
||||
}
|
||||
|
||||
this._animateClone(clone, overlay, x, y, scale, initialPositioning);
|
||||
} else {
|
||||
clone.actor.set_position(x, y);
|
||||
clone.actor.set_scale(scale, scale);
|
||||
this._updateWindowOverlayPositions(clone, overlay, x, y, scale, false);
|
||||
this._showWindowOverlay(clone, overlay, isOnCurrentWorkspace);
|
||||
if (animate && isOnCurrentWorkspace) {
|
||||
if (!metaWindow.showing_on_its_workspace()) {
|
||||
/* Hidden windows should fade in and grow
|
||||
* therefore we need to resize them now so they
|
||||
* can be scaled up later */
|
||||
if (initialPositioning) {
|
||||
clone.actor.opacity = 0;
|
||||
clone.actor.scale_x = 0;
|
||||
clone.actor.scale_y = 0;
|
||||
clone.actor.x = x;
|
||||
clone.actor.y = y;
|
||||
}
|
||||
|
||||
Tweener.addTween(clone.actor,
|
||||
{ opacity: 255,
|
||||
time: Overview.ANIMATION_TIME,
|
||||
transition: 'easeInQuad'
|
||||
});
|
||||
}
|
||||
|
||||
this._animateClone(clone, overlay, x, y, scale, initialPositioning);
|
||||
} else {
|
||||
// cancel any active tweens (otherwise they might override our changes)
|
||||
Tweener.removeTweens(clone.actor);
|
||||
clone.actor.set_position(x, y);
|
||||
clone.actor.set_scale(scale, scale);
|
||||
clone.overlay.relayout(false);
|
||||
this._showWindowOverlay(clone, overlay, isOnCurrentWorkspace);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/// position window titles on top of windows in overlay ////
|
||||
if (settings.get_boolean('window-captions-on-top')) {
|
||||
winInjections['_init'] = Workspace.WindowOverlay.prototype._init;
|
||||
Workspace.WindowOverlay.prototype._init = function(windowClone, parentActor) {
|
||||
let metaWindow = windowClone.metaWindow;
|
||||
if (windowCaptionsOnTop) {
|
||||
|
||||
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;
|
||||
Workspace.WindowOverlay.prototype.chromeHeights = function () {
|
||||
return [Math.max( this.closeButton.height - this.closeButton._overlap, this.title.height - this.title._overlap),
|
||||
0];
|
||||
},
|
||||
|
||||
winInjections['updatePositions'] = Workspace.WindowOverlay.prototype.updatePositions;
|
||||
Workspace.WindowOverlay.prototype.updatePositions = function(cloneX, cloneY, cloneWidth, cloneHeight, animate) {
|
||||
/// This is almost a direct copy of the original relayout function. Differences are marked.
|
||||
winInjections['relayout'] = Workspace.WindowOverlay.prototype.relayout;
|
||||
Workspace.WindowOverlay.prototype.relayout = function(animate) {
|
||||
let button = this.closeButton;
|
||||
let title = this.title;
|
||||
let border = this.border;
|
||||
|
||||
let settings = new Gio.Settings({ schema: BUTTON_LAYOUT_SCHEMA });
|
||||
let layout = settings.get_string(BUTTON_LAYOUT_KEY);
|
||||
let rtl = St.Widget.get_default_direction() == St.TextDirection.RTL;
|
||||
Tweener.removeTweens(button);
|
||||
Tweener.removeTweens(title);
|
||||
Tweener.removeTweens(border);
|
||||
|
||||
let split = layout.split(":");
|
||||
let side;
|
||||
if (split[0].indexOf("close") > -1)
|
||||
side = rtl ? St.Side.RIGHT : St.Side.LEFT;
|
||||
else
|
||||
side = rtl ? St.Side.LEFT : St.Side.RIGHT;
|
||||
let [cloneX, cloneY, cloneWidth, cloneHeight] = this._windowClone.slot;
|
||||
|
||||
let layout = Meta.prefs_get_button_layout();
|
||||
let side = layout.left_buttons.indexOf(Meta.ButtonFunction.CLOSE) > -1 ? St.Side.LEFT : St.Side.RIGHT;
|
||||
|
||||
let buttonX;
|
||||
let buttonY = cloneY - (button.height - button._overlap);
|
||||
@@ -455,12 +432,22 @@ function enable() {
|
||||
else
|
||||
button.set_position(Math.floor(buttonX), Math.floor(buttonY));
|
||||
|
||||
if (!title.fullWidth)
|
||||
title.fullWidth = title.width;
|
||||
let titleWidth = Math.min(title.fullWidth, cloneWidth);
|
||||
// Clutter.Actor.get_preferred_width() will return the fixed width if one
|
||||
// is set, so we need to reset the width by calling set_width(-1), to forward
|
||||
// the call down to StLabel.
|
||||
// We also need to save and restore the current width, otherwise the animation
|
||||
// starts from the wrong point.
|
||||
let prevTitleWidth = title.width;
|
||||
title.set_width(-1);
|
||||
let [titleMinWidth, titleNatWidth] = title.get_preferred_width(-1);
|
||||
let titleWidth = Math.max(titleMinWidth, Math.min(titleNatWidth, cloneWidth));
|
||||
title.width = prevTitleWidth;
|
||||
|
||||
let titleX = cloneX + (cloneWidth - titleWidth) / 2;
|
||||
let titleY = cloneY - title.height + title._overlap;
|
||||
|
||||
/// this is the actual difference to original gnome-shell:
|
||||
//let titleY = cloneY + cloneHeight + title._spacing;
|
||||
let titleY = cloneY - title.height + title._spacing;
|
||||
|
||||
if (animate)
|
||||
this._animateOverlayActor(title, Math.floor(titleX), Math.floor(titleY), titleWidth);
|
||||
@@ -468,19 +455,20 @@ function enable() {
|
||||
title.width = titleWidth;
|
||||
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 borderX = cloneX - this.borderSize;
|
||||
let borderY = cloneY - this.borderSize;
|
||||
let borderWidth = cloneWidth + 2 * this.borderSize;
|
||||
let borderHeight = cloneHeight + 2 * this.borderSize;
|
||||
|
||||
let closeNode = this.closeButton.get_theme_node();
|
||||
this.closeButton._overlap = closeNode.get_length('-shell-close-overlap');
|
||||
|
||||
this._parentActor.queue_relayout();
|
||||
}
|
||||
if (animate) {
|
||||
this._animateOverlayActor(this.border, borderX, borderY,
|
||||
borderWidth, borderHeight);
|
||||
} else {
|
||||
this.border.set_position(borderX, borderY);
|
||||
this.border.set_size(borderWidth, borderHeight);
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -492,6 +480,8 @@ function removeInjection(object, injection, name) {
|
||||
}
|
||||
|
||||
function disable() {
|
||||
var i;
|
||||
|
||||
for (i in workspaceInjections)
|
||||
removeInjection(Workspace.Workspace.prototype, workspaceInjections, i);
|
||||
for (i in winInjections)
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
"settings-schema": "@gschemaname@",
|
||||
"gettext-domain": "@gettext_domain@",
|
||||
"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@" ],
|
||||
"url": "@url@",
|
||||
"original-authors": [ "wepmaschda@gmx.de" ]
|
||||
|
||||
@@ -1,3 +1,9 @@
|
||||
.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
|
||||
|
||||
EXTRA_MODULES = placeDisplay.js
|
||||
|
||||
include ../../extension.mk
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
/* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */
|
||||
|
||||
const Gdk = imports.gi.Gdk;
|
||||
const Clutter = imports.gi.Clutter;
|
||||
const Gio = imports.gi.Gio;
|
||||
const GLib = imports.gi.GLib;
|
||||
const Lang = imports.lang;
|
||||
const Shell = imports.gi.Shell;
|
||||
@@ -13,112 +14,115 @@ const Panel = imports.ui.panel;
|
||||
|
||||
const Gettext = imports.gettext.domain('gnome-shell-extensions');
|
||||
const _ = Gettext.gettext;
|
||||
const N_ = function(x) { return x; }
|
||||
|
||||
const ExtensionUtils = imports.misc.extensionUtils;
|
||||
const Me = ExtensionUtils.getCurrentExtension();
|
||||
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({
|
||||
Name: 'PlacesMenu.PlacesMenu',
|
||||
Extends: PanelMenu.SystemStatusButton,
|
||||
const PlaceMenuItem = new Lang.Class({
|
||||
Name: 'PlaceMenuItem',
|
||||
Extends: PopupMenu.PopupBaseMenuItem,
|
||||
|
||||
_init: function() {
|
||||
this.parent('folder');
|
||||
_init: function(info) {
|
||||
this.parent();
|
||||
this._info = info;
|
||||
|
||||
this.defaultItems = [];
|
||||
this.bookmarkItems = [];
|
||||
this.deviceItems = [];
|
||||
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._icon = new St.Icon({ gicon: info.icon,
|
||||
icon_size: PLACE_ICON_SIZE });
|
||||
this.actor.add_child(this._icon);
|
||||
|
||||
this._bookmarksId = Main.placesManager.connect('bookmarks-updated',Lang.bind(this,this._redisplayBookmarks));
|
||||
this._mountsId = Main.placesManager.connect('mounts-updated',Lang.bind(this,this._redisplayDevices));
|
||||
this._label = new St.Label({ text: info.name });
|
||||
this.actor.add_child(this._label);
|
||||
|
||||
this._changedId = info.connect('changed',
|
||||
Lang.bind(this, this._propertiesChanged));
|
||||
},
|
||||
|
||||
destroy: function() {
|
||||
Main.placesManager.disconnect(this._bookmarksId);
|
||||
Main.placesManager.disconnect(this._mountsId);
|
||||
if (this._changedId) {
|
||||
this._info.disconnect(this._changedId);
|
||||
this._changedId = 0;
|
||||
}
|
||||
|
||||
this.parent();
|
||||
},
|
||||
|
||||
_redisplayBookmarks: function(){
|
||||
this._clearBookmarks();
|
||||
this._createBookmarks();
|
||||
activate: function(event) {
|
||||
this._info.launch(event.get_time());
|
||||
|
||||
this.parent(event);
|
||||
},
|
||||
|
||||
_redisplayDevices: function(){
|
||||
this._clearDevices();
|
||||
this._createDevices();
|
||||
_propertiesChanged: function(info) {
|
||||
this._icon.gicon = info.icon;
|
||||
this._label.text = info.name;
|
||||
},
|
||||
});
|
||||
|
||||
const SECTIONS = [
|
||||
'special',
|
||||
'devices',
|
||||
'bookmarks',
|
||||
'network'
|
||||
]
|
||||
|
||||
const PlacesMenu = new Lang.Class({
|
||||
Name: 'PlacesMenu.PlacesMenu',
|
||||
Extends: PanelMenu.Button,
|
||||
|
||||
_init: function() {
|
||||
this.parent(0.0, _("Places"));
|
||||
|
||||
let hbox = new St.BoxLayout({ style_class: 'panel-status-menu-box' });
|
||||
let label = new St.Label({ text: _("Places"),
|
||||
y_expand: true,
|
||||
y_align: Clutter.ActorAlign.CENTER });
|
||||
hbox.add_child(label);
|
||||
hbox.add_child(new St.Label({ text: '\u25BE',
|
||||
y_expand: true,
|
||||
y_align: Clutter.ActorAlign.CENTER }));
|
||||
this.actor.add_actor(hbox);
|
||||
|
||||
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() {
|
||||
this.defaultPlaces = Main.placesManager.getDefaultPlaces();
|
||||
destroy: function() {
|
||||
this.placesManager.destroy();
|
||||
|
||||
for (let placeid = 0; placeid < this.defaultPlaces.length; placeid++) {
|
||||
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();
|
||||
});
|
||||
|
||||
}
|
||||
this.parent();
|
||||
},
|
||||
|
||||
_createBookmarks : function() {
|
||||
this.bookmarks = Main.placesManager.getBookmarks();
|
||||
|
||||
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();
|
||||
});
|
||||
}
|
||||
_redisplay: function(id) {
|
||||
this._sections[id].removeAll();
|
||||
this._create(id);
|
||||
},
|
||||
|
||||
_createDevices : function() {
|
||||
this.devices = Main.placesManager.getMounts();
|
||||
_create: function(id) {
|
||||
let places = this.placesManager.get(id);
|
||||
|
||||
for (let devid = 0; devid < this.devices.length; devid++) {
|
||||
this.deviceItems[devid] = new PopupMenu.PopupMenuItem(this.devices[devid].name);
|
||||
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();
|
||||
});
|
||||
}
|
||||
for (let i = 0; i < places.length; i++)
|
||||
this._sections[id].addMenuItem(new PlaceMenuItem(places[i]));
|
||||
|
||||
if (this.devices.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 = [];
|
||||
},
|
||||
this._sections[id].actor.visible = places.length > 0;
|
||||
}
|
||||
});
|
||||
|
||||
function init() {
|
||||
@@ -129,7 +133,11 @@ let _indicator;
|
||||
|
||||
function enable() {
|
||||
_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() {
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
"settings-schema": "@gschemaname@",
|
||||
"gettext-domain": "@gettext_domain@",
|
||||
"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@" ],
|
||||
"url": "@url@"
|
||||
}
|
||||
|
||||
449
extensions/places-menu/placeDisplay.js
Normal file
449
extensions/places-menu/placeDisplay.js
Normal file
@@ -0,0 +1,449 @@
|
||||
// -*- 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 = '<node> \
|
||||
<interface name="org.freedesktop.hostname1"> \
|
||||
<property name="PrettyHostname" type="s" access="read" /> \
|
||||
</interface> \
|
||||
</node>';
|
||||
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(timestamp, -1);
|
||||
|
||||
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++) {
|
||||
let identifier = volumes[j].get_identifier('class');
|
||||
if (identifier && identifier.indexOf('network') >= 0) {
|
||||
networkVolumes.push(volumes[j]);
|
||||
} 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;
|
||||
|
||||
let identifier = volumes[i].get_identifier('class');
|
||||
if (identifier && identifier.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);
|
||||
@@ -8,13 +8,21 @@ const St = imports.gi.St;
|
||||
const Shell = imports.gi.Shell;
|
||||
|
||||
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_NUM_GRID_LINES = 3;
|
||||
|
||||
let _cpuIndicator;
|
||||
let _memIndicator;
|
||||
let _box;
|
||||
const ITEM_LABEL_SHOW_TIME = 0.15;
|
||||
const ITEM_LABEL_HIDE_TIME = 0.1;
|
||||
const ITEM_HOVER_TIMEOUT = 300;
|
||||
|
||||
const Indicator = new Lang.Class({
|
||||
Name: 'SystemMonitor.Indicator',
|
||||
@@ -22,15 +30,16 @@ const Indicator = new Lang.Class({
|
||||
_init: function() {
|
||||
this._initValues();
|
||||
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('button-press-event', function() {
|
||||
let app = Shell.AppSystem.get_default().lookup_app('gnome-system-monitor.desktop');
|
||||
app.open_new_window(-1);
|
||||
return true;
|
||||
});
|
||||
|
||||
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._timeout = Mainloop.timeout_add(INDICATOR_UPDATE_INTERVAL, Lang.bind(this, function () {
|
||||
@@ -40,10 +49,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() {
|
||||
Mainloop.source_remove(this._timeout);
|
||||
|
||||
this.actor.destroy();
|
||||
if (this.label)
|
||||
this.label.destroy();
|
||||
},
|
||||
|
||||
_initValues: function() {
|
||||
@@ -148,6 +210,8 @@ const CpuIndicator = new Lang.Class({
|
||||
this.renderStats = this.renderStats.sort(function(a,b) {
|
||||
return renderStatOrder[a] - renderStatOrder[b];
|
||||
});
|
||||
|
||||
this.setLabelText(_("CPU"));
|
||||
},
|
||||
|
||||
_initValues: function() {
|
||||
@@ -199,6 +263,8 @@ const MemoryIndicator = new Lang.Class({
|
||||
this.renderStats = this.renderStats.sort(function(a,b) {
|
||||
return renderStatOrder[a] - renderStatOrder[b];
|
||||
});
|
||||
|
||||
this.setLabelText(_("Memory"));
|
||||
},
|
||||
|
||||
_initValues: function() {
|
||||
@@ -222,23 +288,89 @@ 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);
|
||||
}
|
||||
|
||||
this._boxHolder = new St.BoxLayout({ x_expand: true,
|
||||
y_expand: true,
|
||||
x_align: Clutter.ActorAlign.START,
|
||||
});
|
||||
let menuButton = Main.messageTray._messageTrayMenuButton.actor;
|
||||
Main.messageTray.actor.remove_child(menuButton);
|
||||
Main.messageTray.actor.add_child(this._boxHolder);
|
||||
|
||||
this._boxHolder.add_child(this._box);
|
||||
this._boxHolder.add_child(menuButton);
|
||||
},
|
||||
|
||||
disable: function() {
|
||||
this._indicators.forEach(function(i) { i.destroy(); });
|
||||
|
||||
let menuButton = Main.messageTray._messageTrayMenuButton.actor;
|
||||
this._boxHolder.remove_child(menuButton);
|
||||
Main.messageTray.actor.add_child(menuButton);
|
||||
|
||||
this._box.destroy();
|
||||
this._boxHolder.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() {
|
||||
// nothing to do here
|
||||
}
|
||||
|
||||
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();
|
||||
return new Extension();
|
||||
}
|
||||
|
||||
@@ -6,6 +6,6 @@
|
||||
"gettext-domain": "@gettext_domain@",
|
||||
"original-author": "zaspire@rambler.ru",
|
||||
"name": "SystemMonitor",
|
||||
"description": "System Monitor",
|
||||
"description": "System monitor showing CPU and memory usage in the message tray.",
|
||||
"url": "@url@"
|
||||
}
|
||||
|
||||
@@ -2,15 +2,17 @@
|
||||
spacing: 5px;
|
||||
padding-left: 5px;
|
||||
padding-right: 5px;
|
||||
padding-bottom: 1px;
|
||||
padding-top: 0px;
|
||||
padding-bottom: 10px;
|
||||
padding-top: 10px;
|
||||
}
|
||||
|
||||
.extension-systemMonitor-indicator-area {
|
||||
border: 1px solid #8d8d8d;
|
||||
border-radius: 3px;
|
||||
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;
|
||||
-cpu-total-color: rgb(0,154,62);
|
||||
-cpu-user-color: rgb(69,154,0);
|
||||
@@ -21,3 +23,13 @@
|
||||
-mem-other-color: rgb(205,203,41);
|
||||
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;
|
||||
}
|
||||
|
||||
@@ -45,6 +45,7 @@ const ThemeManager = new Lang.Class({
|
||||
_stylesheet = _userCssStylesheet;
|
||||
else {
|
||||
let sysdirs = GLib.get_system_data_dirs();
|
||||
sysdirs.unshift(GLib.get_user_data_dir());
|
||||
for (let i = 0; i < sysdirs.length; i++) {
|
||||
_userCssStylesheet = sysdirs[i] + '/themes/' + _themeName + '/gnome-shell/gnome-shell.css';
|
||||
let file = Gio.file_new_for_path(_userCssStylesheet);
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
"settings-schema": "@gschemaname@",
|
||||
"gettext-domain": "@gettext_domain@",
|
||||
"name": "User Themes",
|
||||
"description": "Load shell themes from user directory",
|
||||
"description": "Load shell themes from user directory.",
|
||||
"shell-version": [ "@shell_current@" ],
|
||||
"original-authors": [ "john.stowers@gmail.com" ],
|
||||
"url": "@url@"
|
||||
|
||||
10
extensions/window-list/Makefile.am
Normal file
10
extensions/window-list/Makefile.am
Normal file
@@ -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
|
||||
44
extensions/window-list/classic.css
Normal file
44
extensions/window-list/classic.css
Normal file
@@ -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;
|
||||
}
|
||||
|
||||
1150
extensions/window-list/extension.js
Normal file
1150
extensions/window-list/extension.js
Normal file
File diff suppressed because it is too large
Load Diff
10
extensions/window-list/metadata.json.in
Normal file
10
extensions/window-list/metadata.json.in
Normal file
@@ -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>
|
||||
81
extensions/window-list/prefs.js
Normal file
81
extensions/window-list/prefs.js
Normal file
@@ -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;
|
||||
}
|
||||
81
extensions/window-list/stylesheet.css
Normal file
81
extensions/window-list/stylesheet.css
Normal file
@@ -0,0 +1,81 @@
|
||||
.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;
|
||||
}
|
||||
|
||||
.notification {
|
||||
font-weight: normal;
|
||||
}
|
||||
@@ -33,41 +33,37 @@ function resetState() {
|
||||
function enable() {
|
||||
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() {
|
||||
if (this._id === null)
|
||||
return;
|
||||
this._text.raise_top();
|
||||
this._text.show();
|
||||
this._text.text = this._id.toString();
|
||||
this._text.text = (this._windowClone.slotId + 1).toString();
|
||||
}
|
||||
winInjections['showTooltip'] = undefined;
|
||||
|
||||
Workspace.WindowOverlay.prototype.hideTooltip = function() {
|
||||
if (this._text.visible)
|
||||
if (this._text && this._text.visible)
|
||||
this._text.hide();
|
||||
}
|
||||
winInjections['hideTooltip'] = undefined;
|
||||
|
||||
Workspace.Workspace.prototype.showTooltip = function() {
|
||||
if (this._tip == null)
|
||||
if (this._tip == null || this._actualGeometry == null)
|
||||
return;
|
||||
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.raise_top();
|
||||
}
|
||||
@@ -83,11 +79,9 @@ function enable() {
|
||||
workspaceInjections['hideTooltip'] = undefined;
|
||||
|
||||
Workspace.Workspace.prototype.getWindowWithTooltip = function(id) {
|
||||
for (let i in this._windowOverlays) {
|
||||
if (this._windowOverlays[i] == null)
|
||||
continue;
|
||||
if (this._windowOverlays[i].getId() === id)
|
||||
return this._windowOverlays[i]._windowClone.metaWindow;
|
||||
for (let i = 0; i < this._windows.length; i++) {
|
||||
if ((this._windows[i].slotId + 1) == id)
|
||||
return this._windows[i].metaWindow;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
@@ -127,11 +121,11 @@ function enable() {
|
||||
workViewInjections['_hideWorkspacesTooltips'] = undefined;
|
||||
|
||||
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_R))
|
||||
this._hideTooltips();
|
||||
if (this._pickWorkspace &&
|
||||
if (this._pickWorkspace &&
|
||||
(o.get_key_symbol() == Clutter.KEY_Control_L ||
|
||||
o.get_key_symbol() == Clutter.KEY_Control_R))
|
||||
this._hideWorkspacesTooltips();
|
||||
@@ -139,6 +133,9 @@ function enable() {
|
||||
workViewInjections['_onKeyRelease'] = undefined;
|
||||
|
||||
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 ||
|
||||
o.get_key_symbol() == Clutter.KEY_Alt_R)
|
||||
&& !this._pickWorkspace) {
|
||||
@@ -221,7 +218,9 @@ function enable() {
|
||||
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 textY = cloneY - 2;
|
||||
this._text.set_position(Math.floor(textX) + 5, Math.floor(textY) + 5);
|
||||
@@ -242,23 +241,6 @@ function enable() {
|
||||
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) {
|
||||
this._pickWorkspace = false;
|
||||
this._pickWindow = false;
|
||||
@@ -283,6 +265,8 @@ function removeInjection(object, injection, name) {
|
||||
}
|
||||
|
||||
function disable() {
|
||||
let i;
|
||||
|
||||
for (i in workspaceInjections)
|
||||
removeInjection(Workspace.Workspace.prototype, workspaceInjections, i);
|
||||
for (i in winInjections)
|
||||
|
||||
@@ -6,6 +6,6 @@
|
||||
"gettext-domain": "@gettext_domain@",
|
||||
"original-author": "zaspire@rambler.ru",
|
||||
"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@"
|
||||
}
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
EXTENSION_ID = workspace-indicator
|
||||
|
||||
EXTRA_MODULES = prefs.js
|
||||
|
||||
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 Clutter = imports.gi.Clutter;
|
||||
const St = imports.gi.St;
|
||||
@@ -16,6 +19,9 @@ 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 WorkspaceIndicator = new Lang.Class({
|
||||
Name: 'WorkspaceIndicator.WorkspaceIndicator',
|
||||
Extends: PanelMenu.Button,
|
||||
@@ -24,7 +30,8 @@ const WorkspaceIndicator = new Lang.Class({
|
||||
this.parent(0.0, _("Workspace Indicator"));
|
||||
|
||||
this._currentWorkspace = global.screen.get_active_workspace().index();
|
||||
this.statusLabel = new St.Label({ text: this._labelText() });
|
||||
this.statusLabel = new St.Label({ y_align: Clutter.ActorAlign.CENTER,
|
||||
text: this._labelText() });
|
||||
|
||||
this.actor.add_actor(this.statusLabel);
|
||||
|
||||
@@ -41,21 +48,28 @@ const WorkspaceIndicator = new Lang.Class({
|
||||
this._createWorkspacesSection();
|
||||
|
||||
//styling
|
||||
this.menu.actor.add_style_class_name('workspace-indicator-shorter');
|
||||
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() {
|
||||
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].setShowDot(false);
|
||||
this.workspacesItems[this._currentWorkspace].setOrnament(PopupMenu.Ornament.NONE);
|
||||
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());
|
||||
},
|
||||
@@ -85,7 +99,7 @@ const WorkspaceIndicator = new Lang.Class({
|
||||
}));
|
||||
|
||||
if (i == this._currentWorkspace)
|
||||
this.workspacesItems[i].setShowDot(true);
|
||||
this.workspacesItems[i].setOrnament(PopupMenu.Ornament.DOT);
|
||||
}
|
||||
|
||||
this.statusLabel.set_text(this._labelText());
|
||||
@@ -94,7 +108,7 @@ const WorkspaceIndicator = new Lang.Class({
|
||||
_activate : function (index) {
|
||||
if(index >= 0 && index < global.screen.n_workspaces) {
|
||||
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@",
|
||||
"gettext-domain": "@gettext_domain@",
|
||||
"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@" ],
|
||||
"original-authors": [ "erick.red@gmail.com" ],
|
||||
"url": "@url@"
|
||||
|
||||
207
extensions/workspace-indicator/prefs.js
Normal file
207
extensions/workspace-indicator/prefs.js
Normal file
@@ -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 {
|
||||
padding: 0 8px;
|
||||
background-color: rgba(200, 200, 200, .5);
|
||||
|
||||
@@ -1,3 +0,0 @@
|
||||
EXTENSION_ID = xrandr-indicator
|
||||
|
||||
include ../../extension.mk
|
||||
@@ -1,156 +0,0 @@
|
||||
/* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */
|
||||
|
||||
const DBus = imports.dbus;
|
||||
const Gdk = imports.gi.Gdk;
|
||||
const GLib = imports.gi.GLib;
|
||||
const GnomeDesktop = imports.gi.GnomeDesktop;
|
||||
const Lang = imports.lang;
|
||||
const Shell = imports.gi.Shell;
|
||||
const St = imports.gi.St;
|
||||
|
||||
const Main = imports.ui.main;
|
||||
const PanelMenu = imports.ui.panelMenu;
|
||||
const PopupMenu = imports.ui.popupMenu;
|
||||
const Panel = imports.ui.panel;
|
||||
|
||||
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 possibleRotations = [ GnomeDesktop.RRRotation.ROTATION_0,
|
||||
GnomeDesktop.RRRotation.ROTATION_90,
|
||||
GnomeDesktop.RRRotation.ROTATION_180,
|
||||
GnomeDesktop.RRRotation.ROTATION_270
|
||||
];
|
||||
|
||||
let rotations = [ [ GnomeDesktop.RRRotation.ROTATION_0, N_("Normal") ],
|
||||
[ GnomeDesktop.RRRotation.ROTATION_90, N_("Left") ],
|
||||
[ GnomeDesktop.RRRotation.ROTATION_270, N_("Right") ],
|
||||
[ GnomeDesktop.RRRotation.ROTATION_180, N_("Upside-down") ]
|
||||
];
|
||||
|
||||
const XRandr2Iface = {
|
||||
name: 'org.gnome.SettingsDaemon.XRANDR_2',
|
||||
methods: [
|
||||
{ name: 'ApplyConfiguration', inSignature: 'xx', outSignature: '' },
|
||||
]
|
||||
};
|
||||
let XRandr2 = DBus.makeProxyClass(XRandr2Iface);
|
||||
|
||||
function Indicator() {
|
||||
this._init.apply(this, arguments);
|
||||
}
|
||||
|
||||
Indicator.prototype = {
|
||||
__proto__: PanelMenu.SystemStatusButton.prototype,
|
||||
|
||||
_init: function() {
|
||||
PanelMenu.SystemStatusButton.prototype._init.call(this, 'preferences-desktop-display');
|
||||
|
||||
this._proxy = new XRandr2(DBus.session, 'org.gnome.SettingsDaemon', '/org/gnome/SettingsDaemon/XRANDR');
|
||||
|
||||
try {
|
||||
this._screen = new GnomeDesktop.RRScreen({ gdk_screen: Gdk.Screen.get_default() });
|
||||
this._screen.init(null);
|
||||
} catch(e) {
|
||||
// an error means there is no XRandR extension
|
||||
this.actor.hide();
|
||||
return;
|
||||
}
|
||||
|
||||
this._createMenu();
|
||||
this._screen.connect('changed', Lang.bind(this, this._randrEvent));
|
||||
},
|
||||
|
||||
_randrEvent: function() {
|
||||
this.menu.removeAll();
|
||||
this._createMenu();
|
||||
},
|
||||
|
||||
_createMenu: function() {
|
||||
let config = GnomeDesktop.RRConfig.new_current(this._screen);
|
||||
let outputs = config.get_outputs();
|
||||
for (let i = 0; i < outputs.length; i++) {
|
||||
if (outputs[i].is_connected())
|
||||
this._addOutputItem(config, outputs[i]);
|
||||
}
|
||||
this.menu.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
|
||||
this.menu.addAction(_("Configure display settings..."), function() {
|
||||
GLib.spawn_command_line_async('gnome-control-center display');
|
||||
});
|
||||
},
|
||||
|
||||
_addOutputItem: function(config, output) {
|
||||
let item = new PopupMenu.PopupMenuItem(output.get_display_name());
|
||||
item.label.add_style_class_name('display-subtitle');
|
||||
item.actor.reactive = false;
|
||||
item.actor.can_focus = false;
|
||||
this.menu.addMenuItem(item);
|
||||
|
||||
let allowedRotations = this._getAllowedRotations(config, output);
|
||||
let currentRotation = output.get_rotation();
|
||||
for (let i = 0; i < rotations.length; i++) {
|
||||
let [bitmask, name] = rotations[i];
|
||||
if (bitmask & allowedRotations) {
|
||||
let item = new PopupMenu.PopupMenuItem(Gettext.gettext(name));
|
||||
if (bitmask & currentRotation)
|
||||
item.setShowDot(true);
|
||||
item.connect('activate', Lang.bind(this, function(item, event) {
|
||||
/* ensure config is saved so we get a backup if anything goes wrong */
|
||||
config.save();
|
||||
|
||||
output.set_rotation(bitmask);
|
||||
try {
|
||||
config.save();
|
||||
this._proxy.ApplyConfigurationRemote(0, event.get_time());
|
||||
} catch (e) {
|
||||
log ('Could not save monitor configuration: ' + e);
|
||||
}
|
||||
}));
|
||||
this.menu.addMenuItem(item);
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
_getAllowedRotations: function(config, output) {
|
||||
let retval = 0;
|
||||
|
||||
let current = output.get_rotation();
|
||||
|
||||
for (let i = 0; i < possibleRotations.length; i++) {
|
||||
output.set_rotation(possibleRotations[i]);
|
||||
if (config.applicable(this._screen)) {
|
||||
retval |= possibleRotations[i];
|
||||
}
|
||||
}
|
||||
|
||||
output.set_rotation(current);
|
||||
|
||||
if (retval.lenght == 0) {
|
||||
// what, no rotation?
|
||||
// what's current then?
|
||||
retval = current;
|
||||
}
|
||||
return retval;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
function init(metadata) {
|
||||
Convenience.initTranslations();
|
||||
}
|
||||
|
||||
let _indicator;
|
||||
|
||||
function enable() {
|
||||
_indicator = new Indicator();
|
||||
Main.panel.addToStatusArea('display', _indicator);
|
||||
}
|
||||
|
||||
function disable() {
|
||||
_indicator.destroy();
|
||||
}
|
||||
@@ -1,10 +0,0 @@
|
||||
{
|
||||
"extension-id": "@extension_id@",
|
||||
"uuid": "@uuid@",
|
||||
"settings-schema": "@gschemaname@",
|
||||
"gettext-domain": "@gettext_domain@",
|
||||
"name": "Monitor Status Indicator",
|
||||
"description": "Add a systems status menu for rotating monitors (overrides what is currently provided by gnome-settings-daemon)",
|
||||
"shell-version": [ "@shell_current@" ],
|
||||
"url": "@url@"
|
||||
}
|
||||
@@ -1,3 +0,0 @@
|
||||
.display-subtitle {
|
||||
font-weight: bold;
|
||||
}
|
||||
@@ -4,7 +4,7 @@
|
||||
xmlns:gnome="http://api.gnome.org/doap-extensions#"
|
||||
xmlns="http://usefulinc.com/ns/doap#">
|
||||
|
||||
<name xml:lang="en">GNOME Shell Extensions</name>
|
||||
<name xml:lang="en">gnome-shell-extensions</name>
|
||||
<shortdesc xml:lang="en">Modify and extend GNOME Shell functionality and behavior</shortdesc>
|
||||
<description xml:lang="en">
|
||||
GNOME Shell Extensions is a collection of extensions providing
|
||||
@@ -18,7 +18,7 @@ and will be picked automatically at next login.
|
||||
<maintainer>
|
||||
<foaf:Person>
|
||||
<foaf:name>Giovanni Campagna</foaf:name>
|
||||
<foaf:mbox rdf:resource="mailto:scampa.giovanni@gmail.com" />
|
||||
<foaf:mbox rdf:resource="mailto:gcampagna@src.gnome.org" />
|
||||
<gnome:userid>gcampagna</gnome:userid>
|
||||
</foaf:Person>
|
||||
</maintainer>
|
||||
|
||||
@@ -1,8 +1,34 @@
|
||||
/* -*- 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 Gio = imports.gi.Gio;
|
||||
|
||||
const Config = imports.misc.config;
|
||||
const ExtensionUtils = imports.misc.extensionUtils;
|
||||
|
||||
/**
|
||||
@@ -17,8 +43,15 @@ function initTranslations(domain) {
|
||||
|
||||
domain = domain || extension.metadata['gettext-domain'];
|
||||
|
||||
let localeDir = extension.dir.get_child('locale').get_path();
|
||||
Gettext.bindtextdomain(domain, localeDir);
|
||||
// check if this extension was built with "make zip-file", and thus
|
||||
// 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'];
|
||||
|
||||
let schemaDir = extension.dir.get_child('schemas').get_path();
|
||||
let schemaSource = Gio.SettingsSchemaSource.new_from_directory(schemaDir,
|
||||
Gio.SettingsSchemaSource.get_default(),
|
||||
false);
|
||||
let schemaObj = schemaSource.lookup(schema, false);
|
||||
const GioSSS = Gio.SettingsSchemaSource;
|
||||
|
||||
// check if this extension was built with "make zip-file", and thus
|
||||
// has the schema files in a subfolder
|
||||
// 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 });
|
||||
}
|
||||
|
||||
@@ -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
|
||||
20
po/LINGUAS
20
po/LINGUAS
@@ -1,4 +1,9 @@
|
||||
af
|
||||
an
|
||||
ar
|
||||
as
|
||||
ca
|
||||
ca@valencia
|
||||
cs
|
||||
da
|
||||
de
|
||||
@@ -6,18 +11,27 @@ el
|
||||
en_GB
|
||||
eo
|
||||
es
|
||||
et
|
||||
eu
|
||||
fa
|
||||
fi
|
||||
fr
|
||||
fur
|
||||
gl
|
||||
gu
|
||||
he
|
||||
hu
|
||||
id
|
||||
it
|
||||
ja
|
||||
kk
|
||||
kn
|
||||
ko
|
||||
lv
|
||||
lt
|
||||
ml
|
||||
nb
|
||||
nl
|
||||
pa
|
||||
pt
|
||||
pt_BR
|
||||
@@ -25,8 +39,14 @@ pl
|
||||
ru
|
||||
sk
|
||||
sl
|
||||
sr
|
||||
sr@latin
|
||||
sv
|
||||
ta
|
||||
te
|
||||
tg
|
||||
th
|
||||
tr
|
||||
vi
|
||||
uk
|
||||
zh_CN
|
||||
|
||||
@@ -1,15 +1,26 @@
|
||||
extensions/alternative-status-menu/extension.js
|
||||
extensions/alternate-tab/extension.js
|
||||
extensions/alternate-tab/org.gnome.shell.extensions.alternate-tab.gschema.xml.in
|
||||
data/gnome-classic.desktop.in
|
||||
data/gnome-classic.session.desktop.in.in
|
||||
data/gnome-shell-classic.desktop.in.in
|
||||
data/org.gnome.shell.extensions.classic-overrides.gschema.xml.in
|
||||
extensions/alternate-tab/prefs.js
|
||||
extensions/apps-menu/extension.js
|
||||
extensions/auto-move-windows/extension.js
|
||||
extensions/auto-move-windows/org.gnome.shell.extensions.auto-move-windows.gschema.xml.in
|
||||
extensions/dock/extension.js
|
||||
extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in
|
||||
extensions/auto-move-windows/prefs.js
|
||||
extensions/drive-menu/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/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/window-list/extension.js
|
||||
extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml.in
|
||||
extensions/window-list/prefs.js
|
||||
extensions/windowsNavigator/extension.js
|
||||
extensions/xrandr-indicator/extension.js
|
||||
extensions/workspace-indicator/extension.js
|
||||
extensions/workspace-indicator/prefs.js
|
||||
|
||||
311
po/af.po
Normal file
311
po/af.po
Normal file
@@ -0,0 +1,311 @@
|
||||
# Afrikaans translation for gnome-shell-extensions.
|
||||
# This file is distributed under the same license as the gnome-shell-extensions package.
|
||||
# F Wolff <friedel@translate.org.za>, 2013.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: gnome-shell-extensions master\n"
|
||||
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
|
||||
"shell&keywords=I18N+L10N&component=extensions\n"
|
||||
"POT-Creation-Date: 2013-09-26 20:32+0000\n"
|
||||
"PO-Revision-Date: 2013-09-27 16:17+0200\n"
|
||||
"Last-Translator: F Wolff <friedel@translate.org.za>\n"
|
||||
"Language-Team: translate-discuss-af@lists.sourceforge.net\n"
|
||||
"Language: af\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"X-Generator: Virtaal 0.7.1\n"
|
||||
"X-Project-Style: gnome\n"
|
||||
|
||||
#: ../data/gnome-classic.desktop.in.h:1
|
||||
#: ../data/gnome-classic.session.desktop.in.in.h:1
|
||||
msgid "GNOME Classic"
|
||||
msgstr "GNOME Klassiek"
|
||||
|
||||
#: ../data/gnome-classic.desktop.in.h:2
|
||||
msgid "This session logs you into GNOME Classic"
|
||||
msgstr "Hierdie sessie laat mens aanmeld by GNOME Klassiek"
|
||||
|
||||
#: ../data/gnome-shell-classic.desktop.in.in.h:1
|
||||
msgid "GNOME Shell Classic"
|
||||
msgstr "GNOME Shell Klassiek"
|
||||
|
||||
#: ../data/gnome-shell-classic.desktop.in.in.h:2
|
||||
msgid "Window management and application launching"
|
||||
msgstr "Vensterbestuur en toepassinglansering"
|
||||
|
||||
#: ../data/org.gnome.shell.extensions.classic-overrides.gschema.xml.in.h:1
|
||||
msgid "Attach modal dialog to the parent window"
|
||||
msgstr ""
|
||||
|
||||
#: ../data/org.gnome.shell.extensions.classic-overrides.gschema.xml.in.h:2
|
||||
msgid ""
|
||||
"This key overrides the key in org.gnome.mutter when running GNOME Shell."
|
||||
msgstr ""
|
||||
|
||||
#: ../data/org.gnome.shell.extensions.classic-overrides.gschema.xml.in.h:3
|
||||
msgid "Enable edge tiling when dropping windows on screen edges"
|
||||
msgstr ""
|
||||
|
||||
#: ../data/org.gnome.shell.extensions.classic-overrides.gschema.xml.in.h:4
|
||||
msgid "Workspaces only on primary monitor"
|
||||
msgstr "Werkruimtes slegs op primêre monitor"
|
||||
|
||||
#: ../data/org.gnome.shell.extensions.classic-overrides.gschema.xml.in.h:5
|
||||
msgid "Delay focus changes in mouse mode until the pointer stops moving"
|
||||
msgstr ""
|
||||
|
||||
#: ../extensions/alternate-tab/prefs.js:20
|
||||
msgid "Thumbnail only"
|
||||
msgstr ""
|
||||
|
||||
#: ../extensions/alternate-tab/prefs.js:21
|
||||
msgid "Application icon only"
|
||||
msgstr "Slegs toepassingsikoon"
|
||||
|
||||
#: ../extensions/alternate-tab/prefs.js:22
|
||||
msgid "Thumbnail and application icon"
|
||||
msgstr "Duimnael en toepassingsikoon"
|
||||
|
||||
#: ../extensions/alternate-tab/prefs.js:37
|
||||
msgid "Present windows as"
|
||||
msgstr "Wys vensters as"
|
||||
|
||||
#: ../extensions/alternate-tab/prefs.js:62
|
||||
msgid "Show only windows in the current workspace"
|
||||
msgstr "Wys slegs vensters van die huidige werkruimte"
|
||||
|
||||
#: ../extensions/apps-menu/extension.js:39
|
||||
msgid "Activities Overview"
|
||||
msgstr "Aktiwiteite-oorsig"
|
||||
|
||||
#: ../extensions/apps-menu/extension.js:113
|
||||
msgid "Favorites"
|
||||
msgstr "Gunstelinge"
|
||||
|
||||
#: ../extensions/apps-menu/extension.js:282
|
||||
msgid "Applications"
|
||||
msgstr "Toepassings"
|
||||
|
||||
#: ../extensions/auto-move-windows/org.gnome.shell.extensions.auto-move-windows.gschema.xml.in.h:1
|
||||
msgid "Application and workspace list"
|
||||
msgstr "Toepassing- en werkruimtelys"
|
||||
|
||||
#: ../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 "Toepassing"
|
||||
|
||||
#: ../extensions/auto-move-windows/prefs.js:64
|
||||
#: ../extensions/auto-move-windows/prefs.js:106
|
||||
msgid "Workspace"
|
||||
msgstr "Werkruimte"
|
||||
|
||||
#: ../extensions/auto-move-windows/prefs.js:80
|
||||
msgid "Add rule"
|
||||
msgstr "Voeg reël by"
|
||||
|
||||
#: ../extensions/auto-move-windows/prefs.js:94
|
||||
msgid "Create new matching rule"
|
||||
msgstr ""
|
||||
|
||||
#: ../extensions/auto-move-windows/prefs.js:98
|
||||
msgid "Add"
|
||||
msgstr "Voeg by"
|
||||
|
||||
#: ../extensions/drive-menu/extension.js:73
|
||||
#, c-format
|
||||
msgid "Ejecting drive '%s' failed:"
|
||||
msgstr "Kon nie skyf '%s' uitskiet nie:"
|
||||
|
||||
#: ../extensions/drive-menu/extension.js:90
|
||||
msgid "Removable devices"
|
||||
msgstr "Verwyderbare toestelle"
|
||||
|
||||
#: ../extensions/drive-menu/extension.js:117
|
||||
msgid "Open File"
|
||||
msgstr "Open lêer"
|
||||
|
||||
#: ../extensions/example/extension.js:17
|
||||
msgid "Hello, world!"
|
||||
msgstr "Hallo, wêreld!"
|
||||
|
||||
#: ../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 "Boodskap:"
|
||||
|
||||
#: ../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:78
|
||||
#: ../extensions/places-menu/extension.js:81
|
||||
msgid "Places"
|
||||
msgstr "Plekke"
|
||||
|
||||
#: ../extensions/places-menu/placeDisplay.js:56
|
||||
#, c-format
|
||||
msgid "Failed to launch \"%s\""
|
||||
msgstr "Kon nie \"%s\" lanseer nie"
|
||||
|
||||
#: ../extensions/places-menu/placeDisplay.js:98
|
||||
#: ../extensions/places-menu/placeDisplay.js:121
|
||||
msgid "Computer"
|
||||
msgstr "Rekenaar"
|
||||
|
||||
#: ../extensions/places-menu/placeDisplay.js:199
|
||||
msgid "Home"
|
||||
msgstr "Tuis"
|
||||
|
||||
#: ../extensions/places-menu/placeDisplay.js:286
|
||||
msgid "Browse Network"
|
||||
msgstr "Blaai deur netwerk"
|
||||
|
||||
#: ../extensions/systemMonitor/extension.js:214
|
||||
msgid "CPU"
|
||||
msgstr "SVE"
|
||||
|
||||
#: ../extensions/systemMonitor/extension.js:267
|
||||
msgid "Memory"
|
||||
msgstr "Geheue"
|
||||
|
||||
#: ../extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml.in.h:1
|
||||
msgid "Theme name"
|
||||
msgstr "Temanaam"
|
||||
|
||||
#: ../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/window-list/extension.js:92
|
||||
msgid "Close"
|
||||
msgstr "Sluit"
|
||||
|
||||
#: ../extensions/window-list/extension.js:102
|
||||
msgid "Unminimize"
|
||||
msgstr ""
|
||||
|
||||
#: ../extensions/window-list/extension.js:103
|
||||
msgid "Minimize"
|
||||
msgstr "Minimeer"
|
||||
|
||||
#: ../extensions/window-list/extension.js:109
|
||||
msgid "Unmaximize"
|
||||
msgstr ""
|
||||
|
||||
#: ../extensions/window-list/extension.js:110
|
||||
msgid "Maximize"
|
||||
msgstr "Maksimeer"
|
||||
|
||||
#: ../extensions/window-list/extension.js:270
|
||||
msgid "Minimize all"
|
||||
msgstr "Minimeer almal"
|
||||
|
||||
#: ../extensions/window-list/extension.js:278
|
||||
msgid "Unminimize all"
|
||||
msgstr ""
|
||||
|
||||
#: ../extensions/window-list/extension.js:286
|
||||
msgid "Maximize all"
|
||||
msgstr "Maksimeer almal"
|
||||
|
||||
#: ../extensions/window-list/extension.js:295
|
||||
msgid "Unmaximize all"
|
||||
msgstr ""
|
||||
|
||||
#: ../extensions/window-list/extension.js:304
|
||||
msgid "Close all"
|
||||
msgstr "Sluit almal"
|
||||
|
||||
#: ../extensions/window-list/extension.js:591
|
||||
#: ../extensions/workspace-indicator/extension.js:30
|
||||
msgid "Workspace Indicator"
|
||||
msgstr ""
|
||||
|
||||
#: ../extensions/window-list/extension.js:743
|
||||
msgid "Window List"
|
||||
msgstr "Vensterlys"
|
||||
|
||||
#: ../extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml.in.h:1
|
||||
msgid "When to group windows"
|
||||
msgstr "Wanneer om vensters te groepeer"
|
||||
|
||||
#: ../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 ""
|
||||
"Besluit wanneer om vensters van dieselfde toepassing in die vensterlys te "
|
||||
"groepeer. Moontlike waardes is \"never\", \"auto\" en \"always\"."
|
||||
|
||||
#: ../extensions/window-list/prefs.js:30
|
||||
msgid "Window Grouping"
|
||||
msgstr "Venstergroepering"
|
||||
|
||||
#: ../extensions/window-list/prefs.js:49
|
||||
msgid "Never group windows"
|
||||
msgstr "Moet nooit vensters groepeer nie"
|
||||
|
||||
#: ../extensions/window-list/prefs.js:50
|
||||
msgid "Group windows when space is limited"
|
||||
msgstr "Groepeer vensters wanneer ruimte beperk is"
|
||||
|
||||
#: ../extensions/window-list/prefs.js:51
|
||||
msgid "Always group windows"
|
||||
msgstr "Groepeer vensters altyd"
|
||||
|
||||
#: ../extensions/workspace-indicator/prefs.js:141
|
||||
msgid "Workspace names:"
|
||||
msgstr "Werkruimtename:"
|
||||
|
||||
#: ../extensions/workspace-indicator/prefs.js:152
|
||||
msgid "Name"
|
||||
msgstr "Naam"
|
||||
|
||||
#: ../extensions/workspace-indicator/prefs.js:186
|
||||
#, c-format
|
||||
msgid "Workspace %d"
|
||||
msgstr "Werkruimte %d"
|
||||
370
po/an.po
Normal file
370
po/an.po
Normal file
@@ -0,0 +1,370 @@
|
||||
# Aragonese translation for gnome-shell-extensions.
|
||||
# Copyright (C) 2013 gnome-shell-extensions's COPYRIGHT HOLDER
|
||||
# This file is distributed under the same license as the gnome-shell-extensions package.
|
||||
# Jorge Pérez Pérez <jorgtum@gmail.com>, 2013.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: gnome-shell-extensions master\n"
|
||||
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
|
||||
"shell&keywords=I18N+L10N&component=extensions\n"
|
||||
"POT-Creation-Date: 2013-12-20 18:44+0000\n"
|
||||
"PO-Revision-Date: 2013-12-21 16:24+0100\n"
|
||||
"Last-Translator: Jorge Pérez Pérez <jorgtum@gmail.com>\n"
|
||||
"Language-Team: Aragonese <softaragones@googlegroups.com>\n"
|
||||
"Language: an\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: Poedit 1.6.3\n"
|
||||
|
||||
#: ../data/gnome-classic.desktop.in.h:1
|
||||
#: ../data/gnome-classic.session.desktop.in.in.h:1
|
||||
msgid "GNOME Classic"
|
||||
msgstr "GNOME clasico"
|
||||
|
||||
#: ../data/gnome-classic.desktop.in.h:2
|
||||
msgid "This session logs you into GNOME Classic"
|
||||
msgstr "Ista sesión encieta lo GNOME clasico"
|
||||
|
||||
#: ../data/gnome-shell-classic.desktop.in.in.h:1
|
||||
msgid "GNOME Shell Classic"
|
||||
msgstr "GNOME Shell clasico"
|
||||
|
||||
#: ../data/gnome-shell-classic.desktop.in.in.h:2
|
||||
msgid "Window management and application launching"
|
||||
msgstr "Chestión de finestras y inicio d'aplicacions"
|
||||
|
||||
#: ../data/org.gnome.shell.extensions.classic-overrides.gschema.xml.in.h:1
|
||||
msgid "Attach modal dialog to the parent window"
|
||||
msgstr "Acoplar un dialogo modal a la finestra pai"
|
||||
|
||||
#: ../data/org.gnome.shell.extensions.classic-overrides.gschema.xml.in.h:2
|
||||
msgid ""
|
||||
"This key overrides the key in org.gnome.mutter when running GNOME Shell."
|
||||
msgstr ""
|
||||
"Ista clau sobrescribe a clau en org.gnome.mutter en executar o GNOME Shell."
|
||||
|
||||
#: ../data/org.gnome.shell.extensions.classic-overrides.gschema.xml.in.h:3
|
||||
msgid "Enable edge tiling when dropping windows on screen edges"
|
||||
msgstr ""
|
||||
"Activar o mosaico en os cantos en arrocegar as finestras a los cantos d'a "
|
||||
"finestra"
|
||||
|
||||
#: ../data/org.gnome.shell.extensions.classic-overrides.gschema.xml.in.h:4
|
||||
msgid "Workspaces only on primary monitor"
|
||||
msgstr "Arias de treballo nomás en a pantalla prencipal"
|
||||
|
||||
#: ../data/org.gnome.shell.extensions.classic-overrides.gschema.xml.in.h:5
|
||||
msgid "Delay focus changes in mouse mode until the pointer stops moving"
|
||||
msgstr ""
|
||||
"Retardar o cambeo d'o foco d'o churi dica que o puntero deixe de mover-se"
|
||||
|
||||
#: ../extensions/alternate-tab/prefs.js:20
|
||||
msgid "Thumbnail only"
|
||||
msgstr "Nomás as miniaturas"
|
||||
|
||||
#: ../extensions/alternate-tab/prefs.js:21
|
||||
msgid "Application icon only"
|
||||
msgstr "Nomás l'icono de l'aplicación"
|
||||
|
||||
#: ../extensions/alternate-tab/prefs.js:22
|
||||
msgid "Thumbnail and application icon"
|
||||
msgstr "Miniatura y icono de l'aplicación"
|
||||
|
||||
#: ../extensions/alternate-tab/prefs.js:37
|
||||
msgid "Present windows as"
|
||||
msgstr "Presentar as finestras como"
|
||||
|
||||
#: ../extensions/alternate-tab/prefs.js:62
|
||||
msgid "Show only windows in the current workspace"
|
||||
msgstr "Amostrar as finestras solament en l'aria de treballo actual"
|
||||
|
||||
#: ../extensions/apps-menu/extension.js:39
|
||||
msgid "Activities Overview"
|
||||
msgstr "Anvista d'actividatz"
|
||||
|
||||
#: ../extensions/apps-menu/extension.js:113
|
||||
msgid "Favorites"
|
||||
msgstr "Favoritos"
|
||||
|
||||
#: ../extensions/apps-menu/extension.js:282
|
||||
msgid "Applications"
|
||||
msgstr "Aplicacions"
|
||||
|
||||
#: ../extensions/auto-move-windows/org.gnome.shell.extensions.auto-move-windows.gschema.xml.in.h:1
|
||||
msgid "Application and workspace list"
|
||||
msgstr "Lista d'aplicacions y arias de treballo"
|
||||
|
||||
#: ../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 ""
|
||||
"Una lista de cadenas, que cadaguna contién l'identificador de l'aplicación "
|
||||
"(o nombre d'o fichero d'escritorio), seguiu por dos puntos y o numero de "
|
||||
"l'aria de treballo"
|
||||
|
||||
#: ../extensions/auto-move-windows/prefs.js:55
|
||||
msgid "Application"
|
||||
msgstr "Aplicación"
|
||||
|
||||
#: ../extensions/auto-move-windows/prefs.js:64
|
||||
#: ../extensions/auto-move-windows/prefs.js:106
|
||||
msgid "Workspace"
|
||||
msgstr "Aria de treballo"
|
||||
|
||||
#: ../extensions/auto-move-windows/prefs.js:80
|
||||
msgid "Add rule"
|
||||
msgstr "Adhibir un regle"
|
||||
|
||||
#: ../extensions/auto-move-windows/prefs.js:94
|
||||
msgid "Create new matching rule"
|
||||
msgstr "Creyar un regle nuevo de coincidencia"
|
||||
|
||||
#: ../extensions/auto-move-windows/prefs.js:98
|
||||
msgid "Add"
|
||||
msgstr "Adhibir"
|
||||
|
||||
#: ../extensions/drive-menu/extension.js:73
|
||||
#, c-format
|
||||
msgid "Ejecting drive '%s' failed:"
|
||||
msgstr "Ha fallau en fer fuera o dispositivo «%s»"
|
||||
|
||||
#: ../extensions/drive-menu/extension.js:90
|
||||
msgid "Removable devices"
|
||||
msgstr "Dispositivos extraíbles"
|
||||
|
||||
#: ../extensions/drive-menu/extension.js:117
|
||||
msgid "Open File"
|
||||
msgstr "Ubrir o fichero"
|
||||
|
||||
#: ../extensions/example/extension.js:17
|
||||
msgid "Hello, world!"
|
||||
msgstr "Ola, mundo!"
|
||||
|
||||
#: ../extensions/example/org.gnome.shell.extensions.example.gschema.xml.in.h:1
|
||||
msgid "Alternative greeting text."
|
||||
msgstr "Texto alternativo de bienvenida"
|
||||
|
||||
#: ../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 ye vuedo, contién o texto que s'amostrará quan se faiga clic en o "
|
||||
"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» tien por obchecto amostrar cómo construir as extensions de buen "
|
||||
"comportamiento ta la Shell y por ixo tien poca funcionalidat por ell "
|
||||
"solenco.\n"
|
||||
"Manimenos, ye posible presonalizar o mensache de bienvenida."
|
||||
|
||||
#: ../extensions/example/prefs.js:36
|
||||
msgid "Message:"
|
||||
msgstr "Mensache:"
|
||||
|
||||
#: ../extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml.in.h:1
|
||||
msgid "Use more screen for windows"
|
||||
msgstr "Fer servir mas pantalla ta las finestras"
|
||||
|
||||
#: ../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 ""
|
||||
"Intenta fer servir mas espacio ta situar as miniaturas, adaptando-las a la "
|
||||
"forma d'a pantalla, y consolidar-las encara mas ta reducir l'aria ocupada. "
|
||||
"Ista opción solament s'aplica a la estratechia 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 os titols de finestras alto"
|
||||
|
||||
#: ../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 ""
|
||||
"Si ye cierto, situar os titols d'as finestras dencima d'as miniaturas "
|
||||
"correspondients, cambiando o comportamiento predeterminau de shell, que los "
|
||||
"sitúa por debaixo. Cambiar ista configuración requier reiniciar a shell ta "
|
||||
"que tienga efecto."
|
||||
|
||||
#: ../extensions/places-menu/extension.js:78
|
||||
#: ../extensions/places-menu/extension.js:81
|
||||
msgid "Places"
|
||||
msgstr "Puestos"
|
||||
|
||||
#: ../extensions/places-menu/placeDisplay.js:58
|
||||
#, c-format
|
||||
msgid "Failed to launch \"%s\""
|
||||
msgstr "Ha fallau en lanzar «%s»"
|
||||
|
||||
#: ../extensions/places-menu/placeDisplay.js:100
|
||||
#: ../extensions/places-menu/placeDisplay.js:123
|
||||
msgid "Computer"
|
||||
msgstr "Equipo"
|
||||
|
||||
#: ../extensions/places-menu/placeDisplay.js:201
|
||||
msgid "Home"
|
||||
msgstr "Carpeta presonal"
|
||||
|
||||
#: ../extensions/places-menu/placeDisplay.js:288
|
||||
msgid "Browse Network"
|
||||
msgstr "Examinar o ret"
|
||||
|
||||
#: ../extensions/systemMonitor/extension.js:214
|
||||
msgid "CPU"
|
||||
msgstr "CPU"
|
||||
|
||||
#: ../extensions/systemMonitor/extension.js:267
|
||||
msgid "Memory"
|
||||
msgstr "CPU"
|
||||
|
||||
#: ../extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml.in.h:1
|
||||
msgid "Theme name"
|
||||
msgstr "Nombre d'o tema"
|
||||
|
||||
#: ../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 "O nombre d'o tema, que se carga dende /.themes/nombre/gnome-shell"
|
||||
|
||||
#: ../extensions/window-list/extension.js:92
|
||||
msgid "Close"
|
||||
msgstr "Zarrar"
|
||||
|
||||
#: ../extensions/window-list/extension.js:102
|
||||
msgid "Unminimize"
|
||||
msgstr "Restaurar"
|
||||
|
||||
#: ../extensions/window-list/extension.js:103
|
||||
msgid "Minimize"
|
||||
msgstr "Minimizar"
|
||||
|
||||
#: ../extensions/window-list/extension.js:109
|
||||
msgid "Unmaximize"
|
||||
msgstr "Restaurar"
|
||||
|
||||
#: ../extensions/window-list/extension.js:110
|
||||
msgid "Maximize"
|
||||
msgstr "Maximizar"
|
||||
|
||||
#: ../extensions/window-list/extension.js:270
|
||||
msgid "Minimize all"
|
||||
msgstr "Minimizar-lo tot"
|
||||
|
||||
#: ../extensions/window-list/extension.js:278
|
||||
msgid "Unminimize all"
|
||||
msgstr "Restaurar-lo tot"
|
||||
|
||||
#: ../extensions/window-list/extension.js:286
|
||||
msgid "Maximize all"
|
||||
msgstr "Maximizar-lo tot"
|
||||
|
||||
#: ../extensions/window-list/extension.js:295
|
||||
msgid "Unmaximize all"
|
||||
msgstr "Restaurar-lo tot"
|
||||
|
||||
#: ../extensions/window-list/extension.js:304
|
||||
msgid "Close all"
|
||||
msgstr "Zarrar-lo tot"
|
||||
|
||||
#: ../extensions/window-list/extension.js:591
|
||||
#: ../extensions/workspace-indicator/extension.js:30
|
||||
msgid "Workspace Indicator"
|
||||
msgstr "Indicador d'aria de treballo"
|
||||
|
||||
#: ../extensions/window-list/extension.js:743
|
||||
msgid "Window List"
|
||||
msgstr "Lista de finestras"
|
||||
|
||||
#: ../extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml.in.h:1
|
||||
msgid "When to group windows"
|
||||
msgstr "Quan agrupar as finestras"
|
||||
|
||||
#: ../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 ""
|
||||
"Decide quan agrupar as finestras dende a mesma aplicación en a lista de "
|
||||
"finestras. As valors posibles son «never», «auto» y «always»."
|
||||
|
||||
#: ../extensions/window-list/prefs.js:30
|
||||
msgid "Window Grouping"
|
||||
msgstr "Agrupación de finestras"
|
||||
|
||||
#: ../extensions/window-list/prefs.js:49
|
||||
msgid "Never group windows"
|
||||
msgstr "Nunca no agrupar as finestras"
|
||||
|
||||
#: ../extensions/window-list/prefs.js:50
|
||||
msgid "Group windows when space is limited"
|
||||
msgstr "Agrupar as finestras quan l'espacio siga limitau"
|
||||
|
||||
#: ../extensions/window-list/prefs.js:51
|
||||
msgid "Always group windows"
|
||||
msgstr "Agrupar siempre as finestras"
|
||||
|
||||
#: ../extensions/workspace-indicator/prefs.js:141
|
||||
msgid "Workspace names:"
|
||||
msgstr "Nombres d'as arias de treballo:"
|
||||
|
||||
#: ../extensions/workspace-indicator/prefs.js:152
|
||||
msgid "Name"
|
||||
msgstr "Nombre"
|
||||
|
||||
#: ../extensions/workspace-indicator/prefs.js:186
|
||||
#, c-format
|
||||
msgid "Workspace %d"
|
||||
msgstr "Aria de treballo %d"
|
||||
|
||||
#~ msgid "Suspend"
|
||||
#~ msgstr "Suspender"
|
||||
|
||||
#~ msgid "Hibernate"
|
||||
#~ msgstr "Hibernar"
|
||||
|
||||
#~ msgid "Power Off"
|
||||
#~ msgstr "Amortar"
|
||||
|
||||
#~ msgid "Enable suspending"
|
||||
#~ msgstr "Activar a suspensión"
|
||||
|
||||
#~ msgid "Control the visibility of the Suspend menu item"
|
||||
#~ msgstr "Controla la visibilidat de l'elemento de menú «Suspender»"
|
||||
|
||||
#~ msgid "Enable hibernating"
|
||||
#~ msgstr "Activar a hibernación"
|
||||
|
||||
#~ msgid "Control the visibility of the Hibernate menu item"
|
||||
#~ msgstr "Controla la visibilidat de l'elemento de menú «Hibernar»"
|
||||
|
||||
#~ msgid "Normal"
|
||||
#~ msgstr "Normal"
|
||||
|
||||
#~ msgid "Left"
|
||||
#~ msgstr "Cucha"
|
||||
|
||||
#~ msgid "Right"
|
||||
#~ msgstr "Dreita"
|
||||
|
||||
#~ msgid "Upside-down"
|
||||
#~ msgstr "Enta baixo"
|
||||
|
||||
#~ msgid "Display"
|
||||
#~ msgstr "Pantalla"
|
||||
|
||||
#~ msgid "Display Settings"
|
||||
#~ msgstr "Opcions de pantalla"
|
||||
428
po/ar.po
Normal file
428
po/ar.po
Normal file
@@ -0,0 +1,428 @@
|
||||
# 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, 2013.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2013-12-11 06:42+0200\n"
|
||||
"PO-Revision-Date: 2013-12-11 06:43+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.1-rc1\n"
|
||||
"X-Project-Style: gnome\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 "إدارة النوافذ وإطلاق التطبيقات"
|
||||
|
||||
#: ../data/org.gnome.shell.extensions.classic-overrides.gschema.xml.in.h:1
|
||||
msgid "Attach modal dialog to the parent window"
|
||||
msgstr ""
|
||||
|
||||
#: ../data/org.gnome.shell.extensions.classic-overrides.gschema.xml.in.h:2
|
||||
msgid ""
|
||||
"This key overrides the key in org.gnome.mutter when running GNOME Shell."
|
||||
msgstr ""
|
||||
|
||||
#: ../data/org.gnome.shell.extensions.classic-overrides.gschema.xml.in.h:3
|
||||
msgid "Enable edge tiling when dropping windows on screen edges"
|
||||
msgstr ""
|
||||
|
||||
#: ../data/org.gnome.shell.extensions.classic-overrides.gschema.xml.in.h:4
|
||||
msgid "Workspaces only on primary monitor"
|
||||
msgstr "مساحات عمل على الشاشة الرئيسية فقط"
|
||||
|
||||
#: ../data/org.gnome.shell.extensions.classic-overrides.gschema.xml.in.h:5
|
||||
msgid "Delay focus changes in mouse mode until the pointer stops moving"
|
||||
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 "أظهر نوافذ مساحات العمل الحالية فقط"
|
||||
|
||||
#: ../extensions/apps-menu/extension.js:39
|
||||
msgid "Activities Overview"
|
||||
msgstr "ملخص الأنشطة"
|
||||
|
||||
#: ../extensions/apps-menu/extension.js:113
|
||||
msgid "Favorites"
|
||||
msgstr "المفضّلات"
|
||||
|
||||
#: ../extensions/apps-menu/extension.js:282
|
||||
msgid "Applications"
|
||||
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:73
|
||||
#, javascript-format
|
||||
msgid "Ejecting drive '%s' failed:"
|
||||
msgstr "فشل إخراج '%s':"
|
||||
|
||||
#: ../extensions/drive-menu/extension.js:90
|
||||
msgid "Removable devices"
|
||||
msgstr "الأجهزة المنفصلة"
|
||||
|
||||
#: ../extensions/drive-menu/extension.js:117
|
||||
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 ""
|
||||
|
||||
#: ../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:78
|
||||
#: ../extensions/places-menu/extension.js:81
|
||||
msgid "Places"
|
||||
msgstr "الأماكن"
|
||||
|
||||
#: ../extensions/places-menu/placeDisplay.js:58
|
||||
#, javascript-format
|
||||
msgid "Failed to launch \"%s\""
|
||||
msgstr "فشل تشغيل \"%s\""
|
||||
|
||||
#: ../extensions/places-menu/placeDisplay.js:100
|
||||
#: ../extensions/places-menu/placeDisplay.js:123
|
||||
msgid "Computer"
|
||||
msgstr "الحاسوب"
|
||||
|
||||
#: ../extensions/places-menu/placeDisplay.js:201
|
||||
msgid "Home"
|
||||
msgstr "المنزل"
|
||||
|
||||
#: ../extensions/places-menu/placeDisplay.js:288
|
||||
msgid "Browse Network"
|
||||
msgstr "تصفّح الشبكة"
|
||||
|
||||
#: ../extensions/systemMonitor/extension.js:214
|
||||
msgid "CPU"
|
||||
msgstr "المعالج"
|
||||
|
||||
#: ../extensions/systemMonitor/extension.js:267
|
||||
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/window-list/extension.js:92
|
||||
msgid "Close"
|
||||
msgstr "أغلق"
|
||||
|
||||
#: ../extensions/window-list/extension.js:102
|
||||
msgid "Unminimize"
|
||||
msgstr "ألغِ التصغير"
|
||||
|
||||
#: ../extensions/window-list/extension.js:103
|
||||
msgid "Minimize"
|
||||
msgstr "صغّر"
|
||||
|
||||
#: ../extensions/window-list/extension.js:109
|
||||
msgid "Unmaximize"
|
||||
msgstr "ألغِ التكبير"
|
||||
|
||||
#: ../extensions/window-list/extension.js:110
|
||||
msgid "Maximize"
|
||||
msgstr "كبّر"
|
||||
|
||||
#: ../extensions/window-list/extension.js:270
|
||||
msgid "Minimize all"
|
||||
msgstr "صغّر الكل"
|
||||
|
||||
#: ../extensions/window-list/extension.js:278
|
||||
msgid "Unminimize all"
|
||||
msgstr "ألغِ تصغير الكل"
|
||||
|
||||
#: ../extensions/window-list/extension.js:286
|
||||
msgid "Maximize all"
|
||||
msgstr "كبّر الكل"
|
||||
|
||||
#: ../extensions/window-list/extension.js:295
|
||||
msgid "Unmaximize all"
|
||||
msgstr "ألغِ تكبير الكل"
|
||||
|
||||
#: ../extensions/window-list/extension.js:304
|
||||
msgid "Close all"
|
||||
msgstr "أغلق الكل"
|
||||
|
||||
#: ../extensions/window-list/extension.js:591
|
||||
#: ../extensions/workspace-indicator/extension.js:30
|
||||
msgid "Workspace Indicator"
|
||||
msgstr "مؤشر مساحات العمل"
|
||||
|
||||
#: ../extensions/window-list/extension.js:743
|
||||
msgid "Window List"
|
||||
msgstr "قائمة النوافذ"
|
||||
|
||||
#: ../extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml.in.h:1
|
||||
msgid "When to group windows"
|
||||
msgstr "متى تجمّع النوافذ"
|
||||
|
||||
#: ../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 ""
|
||||
"يقرر متى تجمع نوافذ نفس التطبيق في قائمة النوافذ. القيم الممكنة هي \"never"
|
||||
"\"، \"auto\" و \"always\"."
|
||||
|
||||
#: ../extensions/window-list/prefs.js:30
|
||||
msgid "Window Grouping"
|
||||
msgstr "تجميع النوافذ"
|
||||
|
||||
#: ../extensions/window-list/prefs.js:49
|
||||
msgid "Never group windows"
|
||||
msgstr "لا تجمّع النوافذ أبدا"
|
||||
|
||||
#: ../extensions/window-list/prefs.js:50
|
||||
msgid "Group windows when space is limited"
|
||||
msgstr "جمّع النوافذ عندما تكون المساحة محدودة"
|
||||
|
||||
#: ../extensions/window-list/prefs.js:51
|
||||
msgid "Always group windows"
|
||||
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
|
||||
#, javascript-format
|
||||
msgid "Workspace %d"
|
||||
msgstr "مساحة العمل %Id"
|
||||
|
||||
#~ msgid "Normal"
|
||||
#~ msgstr "عادي"
|
||||
|
||||
#~ msgid "Left"
|
||||
#~ msgstr "يسار"
|
||||
|
||||
#~ msgid "Right"
|
||||
#~ msgstr "يمين"
|
||||
|
||||
#~ msgid "Upside-down"
|
||||
#~ msgstr "رأسا على عقب"
|
||||
|
||||
#~ msgid "Display"
|
||||
#~ msgstr "العرض"
|
||||
|
||||
#~ msgid "Display Settings"
|
||||
#~ msgstr "إعدادات العرض"
|
||||
|
||||
#~ msgid "Suspend"
|
||||
#~ msgstr "علّق"
|
||||
|
||||
#~ msgid "Hibernate"
|
||||
#~ msgstr "أسبِت"
|
||||
|
||||
#~ msgid "Power Off"
|
||||
#~ msgstr "أطفئ"
|
||||
|
||||
#~ msgid "Enable suspending"
|
||||
#~ msgstr "فعّل التعليق"
|
||||
|
||||
#~ msgid "Control the visibility of the Suspend menu item"
|
||||
#~ msgstr "تحكم في ظهور ”علّق“ في القائمة"
|
||||
|
||||
#~ msgid "Enable hibernating"
|
||||
#~ msgstr "فعّل الإسبات"
|
||||
|
||||
#~ msgid "Control the visibility of the Hibernate menu item"
|
||||
#~ msgstr "تحكم في ظهور ”أسبِت“ في القائمة"
|
||||
|
||||
#~ msgid "Devices"
|
||||
#~ msgstr "الأجهزة"
|
||||
|
||||
#~ msgid "Bookmarks"
|
||||
#~ msgstr "العلامات"
|
||||
|
||||
#~ msgid "Network"
|
||||
#~ msgstr "الشبكة"
|
||||
|
||||
#~ msgid "File System"
|
||||
#~ msgstr "نظام الملفات"
|
||||
|
||||
#~ msgid "Drag here to add favorites"
|
||||
#~ msgstr "اسحب إلى هنا ليضاف إلى المفضّلة"
|
||||
|
||||
#~ msgid "New Window"
|
||||
#~ msgstr "نافذة جديدة"
|
||||
|
||||
#~ msgid "Quit Application"
|
||||
#~ msgstr "أغلق التطبيق"
|
||||
|
||||
#~ msgid "Remove from 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 "الأجهزة المنفصلة"
|
||||
367
po/as.po
Normal file
367
po/as.po
Normal file
@@ -0,0 +1,367 @@
|
||||
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
||||
# This file is distributed under the same license as the PACKAGE package.
|
||||
#
|
||||
# Nilamdyuti Goswami <ngoswami@redhat.com>, 2013.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: \n"
|
||||
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
|
||||
"shell&keywords=I18N+L10N&component=extensions\n"
|
||||
"POT-Creation-Date: 2013-09-23 10:19+0000\n"
|
||||
"PO-Revision-Date: 2013-09-24 14:28+0530\n"
|
||||
"Last-Translator: Nilamdyuti Goswami <ngoswami@redhat.com>\n"
|
||||
"Language-Team: American English <kde-i18n-doc@kde.org>\n"
|
||||
"Language: en_US\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"X-Generator: Lokalize 1.5\n"
|
||||
|
||||
#: ../data/gnome-classic.desktop.in.h:1
|
||||
#: ../data/gnome-classic.session.desktop.in.in.h:1
|
||||
msgid "GNOME Classic"
|
||||
msgstr "GNOME ক্লাচিক"
|
||||
|
||||
#: ../data/gnome-classic.desktop.in.h:2
|
||||
msgid "This session logs you into GNOME Classic"
|
||||
msgstr "এই অধিবেশনে আপোনাক GNOME ক্লাচিকলৈ লগ কৰে"
|
||||
|
||||
#: ../data/gnome-shell-classic.desktop.in.in.h:1
|
||||
msgid "GNOME Shell Classic"
|
||||
msgstr "GNOME শ্বেল ক্লাচিক"
|
||||
|
||||
#: ../data/gnome-shell-classic.desktop.in.in.h:2
|
||||
msgid "Window management and application launching"
|
||||
msgstr "উইন্ডো ব্যৱস্থাপনা আৰু এপ্লিকেচনৰ লঞ্চ"
|
||||
|
||||
#: ../data/org.gnome.shell.extensions.classic-overrides.gschema.xml.in.h:1
|
||||
msgid "Attach modal dialog to the parent window"
|
||||
msgstr "মডাল ডাইলগ উপধায়ক উইন্ডোৰ সৈতে সংলগ্ন কৰক"
|
||||
|
||||
#: ../data/org.gnome.shell.extensions.classic-overrides.gschema.xml.in.h:2
|
||||
msgid ""
|
||||
"This key overrides the key in org.gnome.mutter when running GNOME Shell."
|
||||
msgstr "GNOME শ্বেল চলাওতে এই কি'য়ে org.gnome.mutter ত থকা কি' অভাৰৰাইড কৰে।"
|
||||
|
||||
#: ../data/org.gnome.shell.extensions.classic-overrides.gschema.xml.in.h:3
|
||||
msgid "Enable edge tiling when dropping windows on screen edges"
|
||||
msgstr "উইন্ডোসমূহক পৰ্দাৰ প্ৰান্তসমূহত এৰোতে প্ৰান্ত টাইলিং সামৰ্থবান কৰক"
|
||||
|
||||
#: ../data/org.gnome.shell.extensions.classic-overrides.gschema.xml.in.h:4
|
||||
msgid "Workspaces only on primary monitor"
|
||||
msgstr "কাৰ্য্যস্থানসমূহ কেৱল প্ৰাথমিক মনিটৰত"
|
||||
|
||||
#: ../data/org.gnome.shell.extensions.classic-overrides.gschema.xml.in.h:5
|
||||
msgid "Delay focus changes in mouse mode until the pointer stops moving"
|
||||
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 "কেৱল বৰ্তমান কাৰ্য্যস্থানত থকা উইন্ডোসমূহ দেখুৱাওক"
|
||||
|
||||
#: ../extensions/apps-menu/extension.js:39
|
||||
msgid "Activities Overview"
|
||||
msgstr "কাৰ্য্যসমূহৰ অভাৰভিউ"
|
||||
|
||||
#: ../extensions/apps-menu/extension.js:113
|
||||
msgid "Favorites"
|
||||
msgstr "পছন্দৰ"
|
||||
|
||||
#: ../extensions/apps-menu/extension.js:282
|
||||
msgid "Applications"
|
||||
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:73
|
||||
#, c-format
|
||||
msgid "Ejecting drive '%s' failed:"
|
||||
msgstr "ড্ৰাইভ '%s' বাহিৰ কৰাটো ব্যৰ্থ হ'ল:"
|
||||
|
||||
#: ../extensions/drive-menu/extension.js:90
|
||||
msgid "Removable devices"
|
||||
msgstr "আতৰাব পৰা ডিভাইচসমূহ"
|
||||
|
||||
#: ../extensions/drive-menu/extension.js:117
|
||||
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/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:78
|
||||
#: ../extensions/places-menu/extension.js:81
|
||||
msgid "Places"
|
||||
msgstr "স্থানবোৰ"
|
||||
|
||||
#: ../extensions/places-menu/placeDisplay.js:56
|
||||
#, c-format
|
||||
msgid "Failed to launch \"%s\""
|
||||
msgstr "\"%s\" লঞ্চ কৰিবলে ব্যৰ্থ"
|
||||
|
||||
#: ../extensions/places-menu/placeDisplay.js:98
|
||||
#: ../extensions/places-menu/placeDisplay.js:121
|
||||
msgid "Computer"
|
||||
msgstr "কমপিউটাৰ"
|
||||
|
||||
#: ../extensions/places-menu/placeDisplay.js:199
|
||||
msgid "Home"
|
||||
msgstr "ঘৰ"
|
||||
|
||||
#: ../extensions/places-menu/placeDisplay.js:286
|
||||
msgid "Browse Network"
|
||||
msgstr "নেটৱাৰ্ক ব্ৰাউছ কৰক"
|
||||
|
||||
#: ../extensions/systemMonitor/extension.js:214
|
||||
msgid "CPU"
|
||||
msgstr "CPU"
|
||||
|
||||
#: ../extensions/systemMonitor/extension.js:267
|
||||
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 "~/.themes/name/gnome-shell ৰ পৰা ল'ড কৰিব লগিয়া থীমৰ নাম"
|
||||
|
||||
#: ../extensions/window-list/extension.js:92
|
||||
msgid "Close"
|
||||
msgstr "বন্ধ কৰক"
|
||||
|
||||
#: ../extensions/window-list/extension.js:102
|
||||
msgid "Unminimize"
|
||||
msgstr "ডাঙৰ কৰক"
|
||||
|
||||
#: ../extensions/window-list/extension.js:103
|
||||
msgid "Minimize"
|
||||
msgstr "সৰু কৰক"
|
||||
|
||||
#: ../extensions/window-list/extension.js:109
|
||||
msgid "Unmaximize"
|
||||
msgstr "সৰু কৰক"
|
||||
|
||||
#: ../extensions/window-list/extension.js:110
|
||||
msgid "Maximize"
|
||||
msgstr "ডাঙৰ কৰক"
|
||||
|
||||
#: ../extensions/window-list/extension.js:270
|
||||
msgid "Minimize all"
|
||||
msgstr "সকলো সৰু কৰক"
|
||||
|
||||
#: ../extensions/window-list/extension.js:278
|
||||
msgid "Unminimize all"
|
||||
msgstr "সকলো ডাঙৰ কৰক"
|
||||
|
||||
#: ../extensions/window-list/extension.js:286
|
||||
msgid "Maximize all"
|
||||
msgstr "সকলো ডাঙৰ কৰক"
|
||||
|
||||
#: ../extensions/window-list/extension.js:295
|
||||
msgid "Unmaximize all"
|
||||
msgstr "সকলো সৰু কৰক"
|
||||
|
||||
#: ../extensions/window-list/extension.js:304
|
||||
msgid "Close all"
|
||||
msgstr "সকলো বন্ধ কৰক"
|
||||
|
||||
#: ../extensions/window-list/extension.js:591
|
||||
#: ../extensions/workspace-indicator/extension.js:30
|
||||
msgid "Workspace Indicator"
|
||||
msgstr "কাৰ্য্যস্থান সূচক"
|
||||
|
||||
#: ../extensions/window-list/extension.js:743
|
||||
msgid "Window List"
|
||||
msgstr "উইন্ডো তালিকা"
|
||||
|
||||
#: ../extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml.in.h:1
|
||||
msgid "When to group windows"
|
||||
msgstr "উইন্ডোসমূহ কেতিয়া একত্ৰিত কৰা হ'ব"
|
||||
|
||||
#: ../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 ""
|
||||
"উইন্ডো তালিকাত একেটা এপ্লিকেচনৰ পৰা উইন্ডোসমূহ কেতিয়া দলবদ্ধ কৰা হ'ব নিৰ্ধাৰণ "
|
||||
"কৰে। "
|
||||
"সম্ভাব্য মানসমূহ হ'ল \"কেতিয়াও নহয়\", \"স্বচালিত\" আৰু \"সদায়\"।"
|
||||
|
||||
#: ../extensions/window-list/prefs.js:30
|
||||
msgid "Window Grouping"
|
||||
msgstr "উইন্ডো দলবদ্ধকৰণ"
|
||||
|
||||
#: ../extensions/window-list/prefs.js:49
|
||||
msgid "Never group windows"
|
||||
msgstr "উইন্ডোসমূহ কেতিয়াও দলবদ্ধ নকৰিব "
|
||||
|
||||
#: ../extensions/window-list/prefs.js:50
|
||||
msgid "Group windows when space is limited"
|
||||
msgstr "উইন্ডোসমূহ দলবদ্ধ কৰক যেতিয়া স্থান সীমিত থাকে"
|
||||
|
||||
#: ../extensions/window-list/prefs.js:51
|
||||
msgid "Always group windows"
|
||||
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 "কাৰ্য্যস্থান %d"
|
||||
|
||||
#~ msgid "Suspend"
|
||||
#~ msgstr "স্থগিত কৰক"
|
||||
|
||||
#~ msgid "Hibernate"
|
||||
#~ msgstr "হাইবাৰনেইট"
|
||||
|
||||
#~ msgid "Power Off"
|
||||
#~ msgstr "বন্ধ কৰক"
|
||||
|
||||
#~ msgid "Enable suspending"
|
||||
#~ msgstr "স্থগিত কৰা সামৰ্থবান কৰক"
|
||||
|
||||
#~ msgid "Control the visibility of the Suspend menu item"
|
||||
#~ msgstr "স্থগিত মেনু বস্তুৰ দৃশ্যমানতা নিয়ন্ত্ৰণ কৰক"
|
||||
|
||||
#~ msgid "Enable hibernating"
|
||||
#~ msgstr "হাইবেৰনেইট কৰা সামৰ্থবান কৰক"
|
||||
|
||||
#~ msgid "Control the visibility of the Hibernate menu item"
|
||||
#~ msgstr "হাইবেৰনেইট মেনু বস্তুৰ দৃশ্যমানতা নিয়ন্ত্ৰণ কৰক"
|
||||
|
||||
#~ msgid "Normal"
|
||||
#~ msgstr "স্বাভাৱিক"
|
||||
|
||||
#~ msgid "Left"
|
||||
#~ msgstr "বাঁওফাল"
|
||||
|
||||
#~ msgid "Right"
|
||||
#~ msgstr "সোঁফাল"
|
||||
|
||||
#~ msgid "Upside-down"
|
||||
#~ msgstr "উলোটা"
|
||||
|
||||
#~ msgid "Display"
|
||||
#~ msgstr "প্ৰদৰ্শন"
|
||||
|
||||
#~ msgid "Display Settings"
|
||||
#~ msgstr "প্ৰদৰ্শনৰ সংহতিসমূহ"
|
||||
513
po/ca.po
513
po/ca.po
@@ -2,152 +2,103 @@
|
||||
# Copyright (C) 2011 gnome-shell-extensions's COPYRIGHT HOLDER
|
||||
# This file is distributed under the same license as the gnome-shell-extensions package.
|
||||
# Jordi Mas i Hernandez <jmas@softcatala.org>, 2011.
|
||||
# Gil Forcada <gilforcada@guifi.net>, 2012, 2013.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: gnome-shell-extensions\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2011-08-19 23:28+0200\n"
|
||||
"PO-Revision-Date: 2011-08-02 07:30+0200\n"
|
||||
"Last-Translator: jmas@softcatala.org\n"
|
||||
"Language-Team: ca_ES <tradgnome@softcatala.net>\n"
|
||||
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
|
||||
"shell&keywords=I18N+L10N&component=extensions\n"
|
||||
"POT-Creation-Date: 2013-09-27 14:18+0000\n"
|
||||
"PO-Revision-Date: 2013-09-25 00:21+0200\n"
|
||||
"Last-Translator: Gil Forcada <gilforcada@guifi.net>\n"
|
||||
"Language-Team: Catalan <tradgnome@softcatala.org>\n"
|
||||
"Language: \n"
|
||||
"MIME-Version: 1.0\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
|
||||
msgid "Available"
|
||||
msgstr "Disponible"
|
||||
#: ../data/gnome-classic.desktop.in.h:1
|
||||
#: ../data/gnome-classic.session.desktop.in.in.h:1
|
||||
msgid "GNOME Classic"
|
||||
msgstr "GNOME clàssic"
|
||||
|
||||
#: ../extensions/alternative-status-menu/extension.js:44
|
||||
msgid "Busy"
|
||||
msgstr "Ocupat"
|
||||
#: ../data/gnome-classic.desktop.in.h:2
|
||||
msgid "This session logs you into GNOME Classic"
|
||||
msgstr "Aquesta sessió us permet utilitzar el GNOME clàssic"
|
||||
|
||||
#: ../extensions/alternative-status-menu/extension.js:52
|
||||
msgid "My Account"
|
||||
msgstr "El meu compte"
|
||||
#: ../data/gnome-shell-classic.desktop.in.in.h:1
|
||||
msgid "GNOME Shell Classic"
|
||||
msgstr "GNOME Shell clàssic"
|
||||
|
||||
#: ../extensions/alternative-status-menu/extension.js:56
|
||||
msgid "System Settings"
|
||||
msgstr "Paràmetres de l'ordinador"
|
||||
#: ../data/gnome-shell-classic.desktop.in.in.h:2
|
||||
msgid "Window management and application launching"
|
||||
msgstr "Gestió de finestres i iniciació d'aplicacions"
|
||||
|
||||
#: ../extensions/alternative-status-menu/extension.js:63
|
||||
msgid "Lock Screen"
|
||||
msgstr "Bloca la pantalla"
|
||||
#: ../data/org.gnome.shell.extensions.classic-overrides.gschema.xml.in.h:1
|
||||
msgid "Attach modal dialog to the parent window"
|
||||
msgstr "Adjunta el diàleg modal a la finestra pare"
|
||||
|
||||
#: ../extensions/alternative-status-menu/extension.js:67
|
||||
msgid "Switch User"
|
||||
msgstr "Canvia d'usuari"
|
||||
|
||||
#: ../extensions/alternative-status-menu/extension.js:72
|
||||
msgid "Log Out..."
|
||||
msgstr "Surt..."
|
||||
|
||||
#: ../extensions/alternative-status-menu/extension.js:79
|
||||
msgid "Suspend"
|
||||
msgstr "Atura temporalment"
|
||||
|
||||
#: ../extensions/alternative-status-menu/extension.js:85
|
||||
msgid "Hibernate"
|
||||
msgstr "Hiberna"
|
||||
|
||||
#: ../extensions/alternative-status-menu/extension.js:91
|
||||
msgid "Power Off..."
|
||||
msgstr "Apaga..."
|
||||
|
||||
#: ../extensions/alternate-tab/extension.js:44
|
||||
#: ../data/org.gnome.shell.extensions.classic-overrides.gschema.xml.in.h:2
|
||||
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"
|
||||
"This key overrides the key in org.gnome.mutter when running GNOME Shell."
|
||||
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"
|
||||
"Si s'executa el GNOME Shell, aquesta clau sobreescriu la clau «org.gnome."
|
||||
"mutter»."
|
||||
|
||||
#: ../extensions/alternate-tab/extension.js:269
|
||||
msgid "Alt Tab Behaviour"
|
||||
msgstr "Comportament de l'«Alternate Tab»"
|
||||
|
||||
#: ../extensions/alternate-tab/extension.js:285
|
||||
msgid "All & Thumbnails"
|
||||
msgstr "Totes i miniatures"
|
||||
|
||||
#: ../extensions/alternate-tab/extension.js:292
|
||||
msgid "Workspace & Icons"
|
||||
msgstr "Espai de treball i icones"
|
||||
|
||||
#: ../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."
|
||||
#: ../data/org.gnome.shell.extensions.classic-overrides.gschema.xml.in.h:3
|
||||
msgid "Enable edge tiling when dropping windows on screen edges"
|
||||
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)."
|
||||
"Habilita la tesselització a les vores en deixar anar les finestres a les "
|
||||
"vores de la pantalla"
|
||||
|
||||
#: ../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»"
|
||||
#: ../data/org.gnome.shell.extensions.classic-overrides.gschema.xml.in.h:4
|
||||
msgid "Workspaces only on primary monitor"
|
||||
msgstr "Els espais de treball només es mostren en el monitor principal"
|
||||
|
||||
#: ../data/org.gnome.shell.extensions.classic-overrides.gschema.xml.in.h:5
|
||||
msgid "Delay focus changes in mouse mode until the pointer stops moving"
|
||||
msgstr ""
|
||||
"Retarda el canvi de focus, en mode ratolí, fins que el punter estigui quiet"
|
||||
|
||||
#: ../extensions/alternate-tab/prefs.js:20
|
||||
msgid "Thumbnail only"
|
||||
msgstr "Només miniatures"
|
||||
|
||||
#: ../extensions/alternate-tab/prefs.js:21
|
||||
msgid "Application icon only"
|
||||
msgstr "Només la icona de l'aplicació"
|
||||
|
||||
#: ../extensions/alternate-tab/prefs.js:22
|
||||
msgid "Thumbnail and application icon"
|
||||
msgstr "Miniatura i icona de l'aplicació"
|
||||
|
||||
#: ../extensions/alternate-tab/prefs.js:37
|
||||
msgid "Present windows as"
|
||||
msgstr "Mostra les finestres com a"
|
||||
|
||||
#: ../extensions/alternate-tab/prefs.js:62
|
||||
msgid "Show only windows in the current workspace"
|
||||
msgstr "Mostra només les icones de l'espai de treball actual"
|
||||
|
||||
#: ../extensions/apps-menu/extension.js:39
|
||||
msgid "Activities Overview"
|
||||
msgstr "Vista general d'activitats"
|
||||
|
||||
#: ../extensions/apps-menu/extension.js:113
|
||||
msgid "Favorites"
|
||||
msgstr "Preferides"
|
||||
|
||||
#: ../extensions/apps-menu/extension.js:282
|
||||
msgid "Applications"
|
||||
msgstr "Aplicacions"
|
||||
|
||||
#: ../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 ""
|
||||
"A list of strings, each containing an application id (desktop file name), "
|
||||
"followed by a colon and the workspace number"
|
||||
@@ -156,124 +107,75 @@ msgstr ""
|
||||
"d'aplicació (nom del fitxer de l'escriptori), seguit de dos punts i el "
|
||||
"número de l'espai de treball"
|
||||
|
||||
#: ../extensions/auto-move-windows/org.gnome.shell.extensions.auto-move-windows.gschema.xml.in.h:2
|
||||
msgid "Application and workspace list"
|
||||
msgstr "Aplicació i llista d'espais de treball"
|
||||
#: ../extensions/auto-move-windows/prefs.js:55
|
||||
msgid "Application"
|
||||
msgstr "Aplicació"
|
||||
|
||||
#: ../extensions/dock/extension.js:437
|
||||
msgid "Drag here to add favorites"
|
||||
msgstr "Arrossegueu aquí per afegir als preferits"
|
||||
#: ../extensions/auto-move-windows/prefs.js:64
|
||||
#: ../extensions/auto-move-windows/prefs.js:106
|
||||
msgid "Workspace"
|
||||
msgstr "Espai de treball"
|
||||
|
||||
#: ../extensions/dock/extension.js:771
|
||||
msgid "New Window"
|
||||
msgstr "Finestra nova"
|
||||
#: ../extensions/auto-move-windows/prefs.js:80
|
||||
msgid "Add rule"
|
||||
msgstr "Afegeix una regla"
|
||||
|
||||
#: ../extensions/dock/extension.js:773
|
||||
msgid "Quit Application"
|
||||
msgstr "Surt de l'aplicació"
|
||||
#: ../extensions/auto-move-windows/prefs.js:94
|
||||
msgid "Create new matching rule"
|
||||
msgstr "Crea una regla de coincidència nova"
|
||||
|
||||
#: ../extensions/dock/extension.js:778
|
||||
msgid "Remove from Favorites"
|
||||
msgstr "Suprimeix dels preferits"
|
||||
#: ../extensions/auto-move-windows/prefs.js:98
|
||||
msgid "Add"
|
||||
msgstr "Afegeix"
|
||||
|
||||
#: ../extensions/dock/extension.js:779
|
||||
msgid "Add to Favorites"
|
||||
msgstr "Afegeix als preferits"
|
||||
#: ../extensions/drive-menu/extension.js:73
|
||||
#, javascript-format
|
||||
msgid "Ejecting drive '%s' failed:"
|
||||
msgstr "Ha fallat l'expulsió de la unitat «%s»:"
|
||||
|
||||
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:1
|
||||
msgid "Autohide duration"
|
||||
msgstr "Duració de l'ocultació automàtica"
|
||||
#: ../extensions/drive-menu/extension.js:90
|
||||
msgid "Removable devices"
|
||||
msgstr "Dispositius extraïbles"
|
||||
|
||||
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:2
|
||||
msgid "Autohide effect"
|
||||
msgstr "Efecte de l'ocultació automàtica"
|
||||
#: ../extensions/drive-menu/extension.js:117
|
||||
msgid "Open File"
|
||||
msgstr "Obre el fitxer"
|
||||
|
||||
#: ../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"
|
||||
msgstr "Posició de l'acoblador"
|
||||
|
||||
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:6
|
||||
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 ""
|
||||
"Sets the position of the dock in the screen. Allowed values are 'right' or "
|
||||
"'left'"
|
||||
msgstr ""
|
||||
"Defineix la posició de l'acoblador a la pantalla. Els valors permesos són "
|
||||
"«right» (dreta) o «left» (esquerra)"
|
||||
|
||||
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:9
|
||||
msgid "Sets the time duration of the autohide effect."
|
||||
msgstr "Defineix la durada en temps de l'efecte d'ocultació automàtica."
|
||||
|
||||
#: ../extensions/example/extension.js:11
|
||||
#: ../extensions/example/extension.js:17
|
||||
msgid "Hello, world!"
|
||||
msgstr "Hola, món!"
|
||||
|
||||
#: ../extensions/gajim/extension.js:219
|
||||
#, c-format
|
||||
msgid "%s is away."
|
||||
msgstr "%s està absent."
|
||||
#: ../extensions/example/org.gnome.shell.extensions.example.gschema.xml.in.h:1
|
||||
msgid "Alternative greeting text."
|
||||
msgstr "Text de rebuda alternatiu."
|
||||
|
||||
#: ../extensions/gajim/extension.js:222
|
||||
#, c-format
|
||||
msgid "%s is offline."
|
||||
msgstr "%s està fora de línia."
|
||||
#: ../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."
|
||||
|
||||
#: ../extensions/gajim/extension.js:225
|
||||
#, c-format
|
||||
msgid "%s is online."
|
||||
msgstr "%s està en línia."
|
||||
#: ../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/gajim/extension.js:228
|
||||
#, c-format
|
||||
msgid "%s is busy."
|
||||
msgstr "%s està ocupat."
|
||||
#: ../extensions/example/prefs.js:36
|
||||
msgid "Message:"
|
||||
msgstr "Missatge:"
|
||||
|
||||
#: ../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 ""
|
||||
"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."
|
||||
msgid "Use more screen for windows"
|
||||
msgstr "Utilitza més pantalla per les finestres"
|
||||
|
||||
#: ../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 ""
|
||||
"Try to use more screen for placing window thumbnails by adapting to screen "
|
||||
"aspect ratio, and consolidating them further to reduce the bounding box. "
|
||||
@@ -285,38 +187,147 @@ msgstr ""
|
||||
"configuració només s'aplica a l'estratègia de posicionament de finestres "
|
||||
"natural."
|
||||
|
||||
#: ../extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml.in.h:5
|
||||
msgid "Use more screen for windows"
|
||||
msgstr "Utilitza més pantalla per les finestres"
|
||||
#: ../extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml.in.h:3
|
||||
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:6
|
||||
msgid "Window placement strategy"
|
||||
msgstr "Estratègia de posicionament de la finestra"
|
||||
#: ../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 ""
|
||||
"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:78
|
||||
#: ../extensions/places-menu/extension.js:81
|
||||
msgid "Places"
|
||||
msgstr "Llocs"
|
||||
|
||||
#: ../extensions/places-menu/placeDisplay.js:56
|
||||
#, javascript-format
|
||||
msgid "Failed to launch \"%s\""
|
||||
msgstr "No s'ha pogut iniciar «%s»"
|
||||
|
||||
#: ../extensions/places-menu/placeDisplay.js:98
|
||||
#: ../extensions/places-menu/placeDisplay.js:121
|
||||
msgid "Computer"
|
||||
msgstr "Ordinador"
|
||||
|
||||
#: ../extensions/places-menu/placeDisplay.js:199
|
||||
msgid "Home"
|
||||
msgstr "Inici"
|
||||
|
||||
#: ../extensions/places-menu/placeDisplay.js:286
|
||||
msgid "Browse Network"
|
||||
msgstr "Navega per la xarxa"
|
||||
|
||||
#: ../extensions/systemMonitor/extension.js:214
|
||||
msgid "CPU"
|
||||
msgstr "CPU"
|
||||
|
||||
#: ../extensions/systemMonitor/extension.js:267
|
||||
msgid "Memory"
|
||||
msgstr "Memòria"
|
||||
|
||||
#: ../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"
|
||||
msgstr "Nom del tema"
|
||||
|
||||
#: ../extensions/xrandr-indicator/extension.js:26
|
||||
msgid "Normal"
|
||||
msgstr "Normal"
|
||||
#: ../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/xrandr-indicator/extension.js:27
|
||||
msgid "Left"
|
||||
msgstr "Esquerra"
|
||||
#: ../extensions/window-list/extension.js:92
|
||||
msgid "Close"
|
||||
msgstr "Tanca"
|
||||
|
||||
#: ../extensions/xrandr-indicator/extension.js:28
|
||||
msgid "Right"
|
||||
msgstr "Dreta"
|
||||
#: ../extensions/window-list/extension.js:102
|
||||
msgid "Unminimize"
|
||||
msgstr "Desminimitza"
|
||||
|
||||
#: ../extensions/xrandr-indicator/extension.js:29
|
||||
msgid "Upside-down"
|
||||
msgstr "Capgira"
|
||||
#: ../extensions/window-list/extension.js:103
|
||||
msgid "Minimize"
|
||||
msgstr "Minimitza"
|
||||
|
||||
#: ../extensions/xrandr-indicator/extension.js:78
|
||||
msgid "Configure display settings..."
|
||||
msgstr "Configura els paràmetres de visualització..."
|
||||
#: ../extensions/window-list/extension.js:109
|
||||
msgid "Unmaximize"
|
||||
msgstr "Desmaximitza"
|
||||
|
||||
#: ../extensions/window-list/extension.js:110
|
||||
msgid "Maximize"
|
||||
msgstr "Maximitza"
|
||||
|
||||
#: ../extensions/window-list/extension.js:270
|
||||
msgid "Minimize all"
|
||||
msgstr "Minimitza-ho tot"
|
||||
|
||||
#: ../extensions/window-list/extension.js:278
|
||||
msgid "Unminimize all"
|
||||
msgstr "Desminimitza-ho tot"
|
||||
|
||||
#: ../extensions/window-list/extension.js:286
|
||||
msgid "Maximize all"
|
||||
msgstr "Maximitza-ho tot"
|
||||
|
||||
#: ../extensions/window-list/extension.js:295
|
||||
msgid "Unmaximize all"
|
||||
msgstr "Desmaximitza-ho tot"
|
||||
|
||||
#: ../extensions/window-list/extension.js:304
|
||||
msgid "Close all"
|
||||
msgstr "Tanca-ho tot"
|
||||
|
||||
#: ../extensions/window-list/extension.js:591
|
||||
#: ../extensions/workspace-indicator/extension.js:30
|
||||
msgid "Workspace Indicator"
|
||||
msgstr "Indicador de l'espai de treball"
|
||||
|
||||
#: ../extensions/window-list/extension.js:743
|
||||
msgid "Window List"
|
||||
msgstr "Llista de finestres"
|
||||
|
||||
#: ../extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml.in.h:1
|
||||
msgid "When to group windows"
|
||||
msgstr "Quan s'han d'agrupar les finestres"
|
||||
|
||||
#: ../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 ""
|
||||
"Decideix quan s'han d'agrupar les finestres de la mateixa aplicació a la "
|
||||
"llista de finestres. Els valors possibles són: «never» (mai), "
|
||||
"«auto» (automàticament) i «always» (sempre)."
|
||||
|
||||
#: ../extensions/window-list/prefs.js:30
|
||||
msgid "Window Grouping"
|
||||
msgstr "Agrupació de finestres"
|
||||
|
||||
#: ../extensions/window-list/prefs.js:49
|
||||
msgid "Never group windows"
|
||||
msgstr "Mai agrupis les finestres"
|
||||
|
||||
#: ../extensions/window-list/prefs.js:50
|
||||
msgid "Group windows when space is limited"
|
||||
msgstr "Agrupa les finestres quan l'espai estigui limitat"
|
||||
|
||||
#: ../extensions/window-list/prefs.js:51
|
||||
msgid "Always group windows"
|
||||
msgstr "Agrupa les finestres sempre"
|
||||
|
||||
#: ../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
|
||||
#, javascript-format
|
||||
msgid "Workspace %d"
|
||||
msgstr "Espai de treball %d"
|
||||
|
||||
333
po/ca@valencia.po
Normal file
333
po/ca@valencia.po
Normal file
@@ -0,0 +1,333 @@
|
||||
# Catalan translation for gnome-shell-extensions.
|
||||
# Copyright (C) 2011 gnome-shell-extensions's COPYRIGHT HOLDER
|
||||
# This file is distributed under the same license as the gnome-shell-extensions package.
|
||||
# Jordi Mas i Hernandez <jmas@softcatala.org>, 2011.
|
||||
# Gil Forcada <gilforcada@guifi.net>, 2012, 2013.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: gnome-shell-extensions\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2013-10-06 21:59+0200\n"
|
||||
"PO-Revision-Date: 2013-09-25 00:21+0200\n"
|
||||
"Last-Translator: Gil Forcada <gilforcada@guifi.net>\n"
|
||||
"Language-Team: Catalan <tradgnome@softcatala.org>\n"
|
||||
"Language: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bits\n"
|
||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||
|
||||
#: ../data/gnome-classic.desktop.in.h:1
|
||||
#: ../data/gnome-classic.session.desktop.in.in.h:1
|
||||
msgid "GNOME Classic"
|
||||
msgstr "GNOME clàssic"
|
||||
|
||||
#: ../data/gnome-classic.desktop.in.h:2
|
||||
msgid "This session logs you into GNOME Classic"
|
||||
msgstr "Esta sessió vos permet utilitzar el GNOME clàssic"
|
||||
|
||||
#: ../data/gnome-shell-classic.desktop.in.in.h:1
|
||||
msgid "GNOME Shell Classic"
|
||||
msgstr "GNOME Shell clàssic"
|
||||
|
||||
#: ../data/gnome-shell-classic.desktop.in.in.h:2
|
||||
msgid "Window management and application launching"
|
||||
msgstr "Gestió de finestres i iniciació d'aplicacions"
|
||||
|
||||
#: ../data/org.gnome.shell.extensions.classic-overrides.gschema.xml.in.h:1
|
||||
msgid "Attach modal dialog to the parent window"
|
||||
msgstr "Adjunta el diàleg modal a la finestra pare"
|
||||
|
||||
#: ../data/org.gnome.shell.extensions.classic-overrides.gschema.xml.in.h:2
|
||||
msgid ""
|
||||
"This key overrides the key in org.gnome.mutter when running GNOME Shell."
|
||||
msgstr ""
|
||||
"Si s'executa el GNOME Shell, esta clau sobreescriu la clau «org.gnome."
|
||||
"mutter»."
|
||||
|
||||
#: ../data/org.gnome.shell.extensions.classic-overrides.gschema.xml.in.h:3
|
||||
msgid "Enable edge tiling when dropping windows on screen edges"
|
||||
msgstr ""
|
||||
"Habilita la tesselització a les vores en deixar anar les finestres a les "
|
||||
"vores de la pantalla"
|
||||
|
||||
#: ../data/org.gnome.shell.extensions.classic-overrides.gschema.xml.in.h:4
|
||||
msgid "Workspaces only on primary monitor"
|
||||
msgstr "Els espais de treball només es mostren en el monitor principal"
|
||||
|
||||
#: ../data/org.gnome.shell.extensions.classic-overrides.gschema.xml.in.h:5
|
||||
msgid "Delay focus changes in mouse mode until the pointer stops moving"
|
||||
msgstr ""
|
||||
"Retarda el canvi de focus, en mode ratolí, fins que el punter estiga quiet"
|
||||
|
||||
#: ../extensions/alternate-tab/prefs.js:20
|
||||
msgid "Thumbnail only"
|
||||
msgstr "Només miniatures"
|
||||
|
||||
#: ../extensions/alternate-tab/prefs.js:21
|
||||
msgid "Application icon only"
|
||||
msgstr "Només la icona de l'aplicació"
|
||||
|
||||
#: ../extensions/alternate-tab/prefs.js:22
|
||||
msgid "Thumbnail and application icon"
|
||||
msgstr "Miniatura i icona de l'aplicació"
|
||||
|
||||
#: ../extensions/alternate-tab/prefs.js:37
|
||||
msgid "Present windows as"
|
||||
msgstr "Mostra les finestres com a"
|
||||
|
||||
#: ../extensions/alternate-tab/prefs.js:62
|
||||
msgid "Show only windows in the current workspace"
|
||||
msgstr "Mostra només les icones de l'espai de treball actual"
|
||||
|
||||
#: ../extensions/apps-menu/extension.js:39
|
||||
msgid "Activities Overview"
|
||||
msgstr "Vista general d'activitats"
|
||||
|
||||
#: ../extensions/apps-menu/extension.js:113
|
||||
msgid "Favorites"
|
||||
msgstr "Preferides"
|
||||
|
||||
#: ../extensions/apps-menu/extension.js:282
|
||||
msgid "Applications"
|
||||
msgstr "Aplicacions"
|
||||
|
||||
#: ../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 ""
|
||||
"A list of strings, each containing an application id (desktop file name), "
|
||||
"followed by a colon and the workspace number"
|
||||
msgstr ""
|
||||
"Una llista de cadenes, cada una de les quals conté un identificador "
|
||||
"d'aplicació (nom del fitxer de l'escriptori), seguit de dos punts i el "
|
||||
"número de l'espai de treball"
|
||||
|
||||
#: ../extensions/auto-move-windows/prefs.js:55
|
||||
msgid "Application"
|
||||
msgstr "Aplicació"
|
||||
|
||||
#: ../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 "Afig 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 "Afig"
|
||||
|
||||
#: ../extensions/drive-menu/extension.js:73
|
||||
#, c-format
|
||||
msgid "Ejecting drive '%s' failed:"
|
||||
msgstr "Ha fallat l'expulsió de la unitat «%s»:"
|
||||
|
||||
#: ../extensions/drive-menu/extension.js:90
|
||||
msgid "Removable devices"
|
||||
msgstr "Dispositius extraïbles"
|
||||
|
||||
#: ../extensions/drive-menu/extension.js:117
|
||||
msgid "Open File"
|
||||
msgstr "Obri el fitxer"
|
||||
|
||||
#: ../extensions/example/extension.js:17
|
||||
msgid "Hello, world!"
|
||||
msgstr "Hola, món!"
|
||||
|
||||
#: ../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 faça 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/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml.in.h:1
|
||||
msgid "Use more screen for windows"
|
||||
msgstr "Utilitza més pantalla per les finestres"
|
||||
|
||||
#: ../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 ""
|
||||
"Intenta utilitzar més espai de la pantalla per posicionar les miniatures de "
|
||||
"les finestres adaptant-les al ràtio d'aspecte de la pantalla, consolidant-"
|
||||
"les més per reduir la capsa que les envolta. Este paràmetre de configuració "
|
||||
"només s'aplica a l'estratègia de posicionament de finestres natural."
|
||||
|
||||
#: ../extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml.in.h:3
|
||||
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: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 ""
|
||||
"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 este canvi tinga "
|
||||
"efecte."
|
||||
|
||||
#: ../extensions/places-menu/extension.js:78
|
||||
#: ../extensions/places-menu/extension.js:81
|
||||
msgid "Places"
|
||||
msgstr "Llocs"
|
||||
|
||||
#: ../extensions/places-menu/placeDisplay.js:56
|
||||
#, c-format
|
||||
msgid "Failed to launch \"%s\""
|
||||
msgstr "No s'ha pogut iniciar «%s»"
|
||||
|
||||
#: ../extensions/places-menu/placeDisplay.js:98
|
||||
#: ../extensions/places-menu/placeDisplay.js:121
|
||||
msgid "Computer"
|
||||
msgstr "Ordinador"
|
||||
|
||||
#: ../extensions/places-menu/placeDisplay.js:199
|
||||
msgid "Home"
|
||||
msgstr "Inici"
|
||||
|
||||
#: ../extensions/places-menu/placeDisplay.js:286
|
||||
msgid "Browse Network"
|
||||
msgstr "Navega per la xarxa"
|
||||
|
||||
#: ../extensions/systemMonitor/extension.js:214
|
||||
msgid "CPU"
|
||||
msgstr "CPU"
|
||||
|
||||
#: ../extensions/systemMonitor/extension.js:267
|
||||
msgid "Memory"
|
||||
msgstr "Memòria"
|
||||
|
||||
#: ../extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml.in.h:1
|
||||
msgid "Theme name"
|
||||
msgstr "Nom del tema"
|
||||
|
||||
#: ../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/window-list/extension.js:92
|
||||
msgid "Close"
|
||||
msgstr "Tanca"
|
||||
|
||||
#: ../extensions/window-list/extension.js:102
|
||||
msgid "Unminimize"
|
||||
msgstr "Desminimitza"
|
||||
|
||||
#: ../extensions/window-list/extension.js:103
|
||||
msgid "Minimize"
|
||||
msgstr "Minimitza"
|
||||
|
||||
#: ../extensions/window-list/extension.js:109
|
||||
msgid "Unmaximize"
|
||||
msgstr "Desmaximitza"
|
||||
|
||||
#: ../extensions/window-list/extension.js:110
|
||||
msgid "Maximize"
|
||||
msgstr "Maximitza"
|
||||
|
||||
#: ../extensions/window-list/extension.js:270
|
||||
msgid "Minimize all"
|
||||
msgstr "Minimitza-ho tot"
|
||||
|
||||
#: ../extensions/window-list/extension.js:278
|
||||
msgid "Unminimize all"
|
||||
msgstr "Desminimitza-ho tot"
|
||||
|
||||
#: ../extensions/window-list/extension.js:286
|
||||
msgid "Maximize all"
|
||||
msgstr "Maximitza-ho tot"
|
||||
|
||||
#: ../extensions/window-list/extension.js:295
|
||||
msgid "Unmaximize all"
|
||||
msgstr "Desmaximitza-ho tot"
|
||||
|
||||
#: ../extensions/window-list/extension.js:304
|
||||
msgid "Close all"
|
||||
msgstr "Tanca-ho tot"
|
||||
|
||||
#: ../extensions/window-list/extension.js:591
|
||||
#: ../extensions/workspace-indicator/extension.js:30
|
||||
msgid "Workspace Indicator"
|
||||
msgstr "Indicador de l'espai de treball"
|
||||
|
||||
#: ../extensions/window-list/extension.js:743
|
||||
msgid "Window List"
|
||||
msgstr "Llista de finestres"
|
||||
|
||||
#: ../extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml.in.h:1
|
||||
msgid "When to group windows"
|
||||
msgstr "Quan s'han d'agrupar les finestres"
|
||||
|
||||
#: ../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 ""
|
||||
"Decideix quan s'han d'agrupar les finestres de la mateixa aplicació a la "
|
||||
"llista de finestres. Els valors possibles són: «never» (mai), "
|
||||
"«auto» (automàticament) i «always» (sempre)."
|
||||
|
||||
#: ../extensions/window-list/prefs.js:30
|
||||
msgid "Window Grouping"
|
||||
msgstr "Agrupació de finestres"
|
||||
|
||||
#: ../extensions/window-list/prefs.js:49
|
||||
msgid "Never group windows"
|
||||
msgstr "Mai agrupes les finestres"
|
||||
|
||||
#: ../extensions/window-list/prefs.js:50
|
||||
msgid "Group windows when space is limited"
|
||||
msgstr "Agrupa les finestres quan l'espai estiga limitat"
|
||||
|
||||
#: ../extensions/window-list/prefs.js:51
|
||||
msgid "Always group windows"
|
||||
msgstr "Agrupa les finestres sempre"
|
||||
|
||||
#: ../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"
|
||||
461
po/cs.po
461
po/cs.po
@@ -1,123 +1,100 @@
|
||||
# Czech translation for gnome-shell-extensions.
|
||||
# Copyright (C) 2011 gnome-shell-extensions's COPYRIGHT HOLDER
|
||||
# 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.
|
||||
# Petr Kovar <pknbe@volny.cz>, 2013.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: gnome-shell-extensions master\n"
|
||||
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
|
||||
"shell&keywords=I18N+L10N&component=extensions\n"
|
||||
"POT-Creation-Date: 2012-01-07 10:46+0000\n"
|
||||
"PO-Revision-Date: 2012-01-16 10:51+0100\n"
|
||||
"Last-Translator: Marek Černocký <marek@manet.cz>\n"
|
||||
"POT-Creation-Date: 2013-09-23 10:19+0000\n"
|
||||
"PO-Revision-Date: 2013-09-23 15:07+0200\n"
|
||||
"Last-Translator: Petr Kovar <pknbe@volny.cz>\n"
|
||||
"Language-Team: Czech <gnome-cs-list@gnome.org>\n"
|
||||
"Language: cs\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: cs\n"
|
||||
"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
|
||||
"X-Generator: Gtranslator 2.91.6\n"
|
||||
|
||||
#. add the new entries
|
||||
#: ../extensions/alternative-status-menu/extension.js:68
|
||||
msgid "Suspend"
|
||||
msgstr "Uspat do paměti"
|
||||
#: ../data/gnome-classic.desktop.in.h:1
|
||||
#: ../data/gnome-classic.session.desktop.in.in.h:1
|
||||
msgid "GNOME Classic"
|
||||
msgstr "GNOME klasik"
|
||||
|
||||
#: ../extensions/alternative-status-menu/extension.js:73
|
||||
msgid "Hibernate"
|
||||
msgstr "Uspat na disk"
|
||||
#: ../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"
|
||||
|
||||
#: ../extensions/alternative-status-menu/extension.js:78
|
||||
msgid "Power Off..."
|
||||
msgstr "Vypnout…"
|
||||
#: ../data/gnome-shell-classic.desktop.in.in.h:1
|
||||
msgid "GNOME Shell Classic"
|
||||
msgstr "GNOME Shell klasik"
|
||||
|
||||
#: ../extensions/alternate-tab/extension.js:54
|
||||
#: ../data/gnome-shell-classic.desktop.in.in.h:2
|
||||
msgid "Window management and application launching"
|
||||
msgstr "Správa oken a spouštění aplikací"
|
||||
|
||||
#: ../data/org.gnome.shell.extensions.classic-overrides.gschema.xml.in.h:1
|
||||
msgid "Attach modal dialog to the parent window"
|
||||
msgstr "Modální dialogová okna připojovat k rodičovskému oknu"
|
||||
|
||||
#: ../data/org.gnome.shell.extensions.classic-overrides.gschema.xml.in.h:2
|
||||
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 ""
|
||||
"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í."
|
||||
"This key overrides the key in org.gnome.mutter when running GNOME Shell."
|
||||
msgstr "Když běží GNOME Shell, tento klíč přepíše klíč v org.gnome.mutter"
|
||||
|
||||
#: ../extensions/alternate-tab/extension.js:295
|
||||
msgid "Alt Tab Behaviour"
|
||||
msgstr "Chování Alt Tab"
|
||||
#: ../data/org.gnome.shell.extensions.classic-overrides.gschema.xml.in.h:3
|
||||
msgid "Enable edge tiling when dropping windows on screen edges"
|
||||
msgstr "Okna upuštěná u okraje obrazovky nechat řadit jako dlaždice"
|
||||
|
||||
#: ../extensions/alternate-tab/extension.js:311
|
||||
msgid "All & Thumbnails"
|
||||
msgstr "Vše a náhledy"
|
||||
#: ../data/org.gnome.shell.extensions.classic-overrides.gschema.xml.in.h:4
|
||||
msgid "Workspaces only on primary monitor"
|
||||
msgstr "Pracovní plochy jen na hlavním monitoru"
|
||||
|
||||
#: ../extensions/alternate-tab/extension.js:318
|
||||
msgid "Workspace & Icons"
|
||||
msgstr "Pracovní plocha a ikony"
|
||||
#: ../data/org.gnome.shell.extensions.classic-overrides.gschema.xml.in.h:5
|
||||
msgid "Delay focus changes in mouse mode until the pointer stops moving"
|
||||
msgstr "Neměnit zaměření v režimu s myší, dokud se nezastaví ukazatel"
|
||||
|
||||
#: ../extensions/alternate-tab/extension.js:325
|
||||
msgid "Cancel"
|
||||
msgstr "Zrušit"
|
||||
#: ../extensions/alternate-tab/prefs.js:20
|
||||
msgid "Thumbnail only"
|
||||
msgstr "Pouze náhled"
|
||||
|
||||
#: ../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 "Když je zapnuto, dotázat se uživatele na výchozí chování."
|
||||
#: ../extensions/alternate-tab/prefs.js:21
|
||||
msgid "Application icon only"
|
||||
msgstr "Pouze ikona aplikace"
|
||||
|
||||
#: ../extensions/alternate-tab/org.gnome.shell.extensions.alternate-tab.gschema.xml.in.h:2
|
||||
msgid "Indicates if Alternate Tab is newly installed"
|
||||
msgstr "Signalizuje, když je rozšíření Alternate Tab nově nainstalováno"
|
||||
#: ../extensions/alternate-tab/prefs.js:22
|
||||
msgid "Thumbnail and application icon"
|
||||
msgstr "Náhled a ikona 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/prefs.js:37
|
||||
msgid "Present windows as"
|
||||
msgstr "Představovat okna jako"
|
||||
|
||||
#: ../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/alternate-tab/prefs.js:62
|
||||
msgid "Show only windows in the current workspace"
|
||||
msgstr "Zobrazovat pouze okna z aktuální pracovní plochy"
|
||||
|
||||
#: ../extensions/apps-menu/extension.js:39
|
||||
msgid "Activities Overview"
|
||||
msgstr "Přehled činností"
|
||||
|
||||
#: ../extensions/apps-menu/extension.js:113
|
||||
msgid "Favorites"
|
||||
msgstr "Oblíbené"
|
||||
|
||||
#: ../extensions/apps-menu/extension.js:282
|
||||
msgid "Applications"
|
||||
msgstr "Aplikace"
|
||||
|
||||
#: ../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 ""
|
||||
"A list of strings, each containing an application id (desktop file name), "
|
||||
"followed by a colon and the workspace number"
|
||||
@@ -125,117 +102,76 @@ msgstr ""
|
||||
"Seznam řetězců, z nichž každý obsahuje ID aplikace (název souboru pracovní "
|
||||
"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
|
||||
msgid "Application and workspace list"
|
||||
msgstr "Seznam aplikací a pracovních ploch"
|
||||
#: ../extensions/auto-move-windows/prefs.js:55
|
||||
msgid "Application"
|
||||
msgstr "Aplikace"
|
||||
|
||||
#: ../extensions/dock/extension.js:561
|
||||
msgid "Drag here to add favorites"
|
||||
msgstr "Přetažením sem přidáte do oblíbených"
|
||||
#: ../extensions/auto-move-windows/prefs.js:64
|
||||
#: ../extensions/auto-move-windows/prefs.js:106
|
||||
msgid "Workspace"
|
||||
msgstr "Pracovní plocha"
|
||||
|
||||
#: ../extensions/dock/extension.js:896
|
||||
msgid "New Window"
|
||||
msgstr "Nové okno"
|
||||
#: ../extensions/auto-move-windows/prefs.js:80
|
||||
msgid "Add rule"
|
||||
msgstr "Přidat pravidlo"
|
||||
|
||||
#: ../extensions/dock/extension.js:898
|
||||
msgid "Quit Application"
|
||||
msgstr "Ukončit aplikaci"
|
||||
#: ../extensions/auto-move-windows/prefs.js:94
|
||||
msgid "Create new matching rule"
|
||||
msgstr "Vytvoření nového srovnávacího pravidla"
|
||||
|
||||
#: ../extensions/dock/extension.js:903
|
||||
msgid "Remove from Favorites"
|
||||
msgstr "Odebrat z oblíbených"
|
||||
#: ../extensions/auto-move-windows/prefs.js:98
|
||||
msgid "Add"
|
||||
msgstr "Přidat"
|
||||
|
||||
#: ../extensions/dock/extension.js:904
|
||||
msgid "Add to Favorites"
|
||||
msgstr "Přidat do oblíbených"
|
||||
#: ../extensions/drive-menu/extension.js:73
|
||||
#, c-format
|
||||
msgid "Ejecting drive '%s' failed:"
|
||||
msgstr "Vysunutí disku „%s“ selhalo:"
|
||||
|
||||
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:1
|
||||
msgid "Autohide duration"
|
||||
msgstr "Čas automatického skrývání"
|
||||
#: ../extensions/drive-menu/extension.js:90
|
||||
msgid "Removable devices"
|
||||
msgstr "Výměnná zařízení"
|
||||
|
||||
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:2
|
||||
msgid "Autohide effect"
|
||||
msgstr "Efekt automatického skrývání"
|
||||
#: ../extensions/drive-menu/extension.js:117
|
||||
msgid "Open File"
|
||||
msgstr "Otevřít soubor"
|
||||
|
||||
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:3
|
||||
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
|
||||
#: ../extensions/example/extension.js:17
|
||||
msgid "Hello, world!"
|
||||
msgstr "Ahoj světe!"
|
||||
|
||||
#: ../extensions/gajim/extension.js:227
|
||||
#, c-format
|
||||
msgid "%s is away."
|
||||
msgstr "%s je pryč."
|
||||
#: ../extensions/example/org.gnome.shell.extensions.example.gschema.xml.in.h:1
|
||||
msgid "Alternative greeting text."
|
||||
msgstr "Alternativní uvítací text"
|
||||
|
||||
#: ../extensions/gajim/extension.js:230
|
||||
#, c-format
|
||||
msgid "%s is offline."
|
||||
msgstr "%s je odpojen."
|
||||
#: ../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 ""
|
||||
"Pokud není prázdné, obsahuje text, který se objeví po kliknutí na panel."
|
||||
|
||||
#: ../extensions/gajim/extension.js:233
|
||||
#, c-format
|
||||
msgid "%s is online."
|
||||
msgstr "%s je připojen."
|
||||
#. 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 ""
|
||||
"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
|
||||
#, c-format
|
||||
msgid "%s is busy."
|
||||
msgstr "%s je zaneprázdněn."
|
||||
#: ../extensions/example/prefs.js:36
|
||||
msgid "Message:"
|
||||
msgstr "Zpráva:"
|
||||
|
||||
#: ../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 ""
|
||||
"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."
|
||||
msgid "Use more screen for windows"
|
||||
msgstr "Použít větší část obrazovky pro okna"
|
||||
|
||||
#: ../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 ""
|
||||
"Try to use more screen for placing window thumbnails by adapting to screen "
|
||||
"aspect ratio, and consolidating them further to reduce the bounding box. "
|
||||
@@ -245,38 +181,145 @@ msgstr ""
|
||||
"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“."
|
||||
|
||||
#: ../extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml.in.h:4
|
||||
msgid "Use more screen for windows"
|
||||
msgstr "Použít větší část obrazovky pro okna"
|
||||
#: ../extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml.in.h:3
|
||||
msgid "Place window captions on top"
|
||||
msgstr "Umístit název okna nahoru"
|
||||
|
||||
#: ../extensions/places-menu/extension.js:36
|
||||
msgid "Removable Devices"
|
||||
msgstr "Výměnná zařízení"
|
||||
#: ../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 ""
|
||||
"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:78
|
||||
#: ../extensions/places-menu/extension.js:81
|
||||
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:214
|
||||
msgid "CPU"
|
||||
msgstr "Procesor"
|
||||
|
||||
#: ../extensions/systemMonitor/extension.js:267
|
||||
msgid "Memory"
|
||||
msgstr "Paměť"
|
||||
|
||||
#: ../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"
|
||||
msgstr "Název motivu"
|
||||
|
||||
#: ../extensions/xrandr-indicator/extension.js:26
|
||||
msgid "Normal"
|
||||
msgstr "Normální"
|
||||
#: ../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/xrandr-indicator/extension.js:27
|
||||
msgid "Left"
|
||||
msgstr "Doleva"
|
||||
#: ../extensions/window-list/extension.js:92
|
||||
msgid "Close"
|
||||
msgstr "Zavřít"
|
||||
|
||||
#: ../extensions/xrandr-indicator/extension.js:28
|
||||
msgid "Right"
|
||||
msgstr "Doprava"
|
||||
#: ../extensions/window-list/extension.js:102
|
||||
msgid "Unminimize"
|
||||
msgstr "Zrušit minimalizaci"
|
||||
|
||||
#: ../extensions/xrandr-indicator/extension.js:29
|
||||
msgid "Upside-down"
|
||||
msgstr "Vzhůru nohama"
|
||||
#: ../extensions/window-list/extension.js:103
|
||||
msgid "Minimize"
|
||||
msgstr "Minimalizovat"
|
||||
|
||||
#: ../extensions/xrandr-indicator/extension.js:78
|
||||
msgid "Configure display settings..."
|
||||
msgstr "Upravit nastavení zobrazení…"
|
||||
#: ../extensions/window-list/extension.js:109
|
||||
msgid "Unmaximize"
|
||||
msgstr "Zrušit maximalizaci"
|
||||
|
||||
#: ../extensions/window-list/extension.js:110
|
||||
msgid "Maximize"
|
||||
msgstr "Maximalizovat"
|
||||
|
||||
#: ../extensions/window-list/extension.js:270
|
||||
msgid "Minimize all"
|
||||
msgstr "Minimalizovat všechna"
|
||||
|
||||
#: ../extensions/window-list/extension.js:278
|
||||
msgid "Unminimize all"
|
||||
msgstr "Zrušit minimalizaci všech"
|
||||
|
||||
#: ../extensions/window-list/extension.js:286
|
||||
msgid "Maximize all"
|
||||
msgstr "Maximalizovat všechna"
|
||||
|
||||
#: ../extensions/window-list/extension.js:295
|
||||
msgid "Unmaximize all"
|
||||
msgstr "Zrušit maximalizaci všech"
|
||||
|
||||
#: ../extensions/window-list/extension.js:304
|
||||
msgid "Close all"
|
||||
msgstr "Zavřít všechna"
|
||||
|
||||
#: ../extensions/window-list/extension.js:591
|
||||
#: ../extensions/workspace-indicator/extension.js:30
|
||||
msgid "Workspace Indicator"
|
||||
msgstr "Ukazatel pracovní plochy"
|
||||
|
||||
#: ../extensions/window-list/extension.js:743
|
||||
msgid "Window List"
|
||||
msgstr "Seznam oken"
|
||||
|
||||
#: ../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/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"
|
||||
|
||||
562
po/da.po
562
po/da.po
@@ -2,15 +2,15 @@
|
||||
# Copyright (C) 2011 gnome-shell-extensions's COPYRIGHT HOLDER
|
||||
# This file is distributed under the same license as the gnome-shell-extensions package.
|
||||
#
|
||||
# Kris Thomsen <lakristho@gmail.com>, 2011.
|
||||
# Kris Thomsen <mail@kristhomsen.dk>, 2011-2013.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: gnome-shell-extensions master\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2012-01-02 12:35+0100\n"
|
||||
"PO-Revision-Date: 2011-12-27 00:32+0000\n"
|
||||
"Last-Translator: Kris Thomsen <lakristho@gmail.com>\n"
|
||||
"POT-Creation-Date: 2013-09-23 19:34+0200\n"
|
||||
"PO-Revision-Date: 2013-09-23 19:29+0200\n"
|
||||
"Last-Translator: Kris Thomsen <mail@kristhomsen.dk>\n"
|
||||
"Language-Team: Danish <dansk@dansk-gruppen.dk>\n"
|
||||
"Language: da\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
@@ -18,106 +18,84 @@ msgstr ""
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#. add the new entries
|
||||
#: ../extensions/alternative-status-menu/extension.js:68
|
||||
msgid "Suspend"
|
||||
msgstr "Dvale"
|
||||
#: ../data/gnome-classic.desktop.in.h:1
|
||||
#: ../data/gnome-classic.session.desktop.in.in.h:1
|
||||
msgid "GNOME Classic"
|
||||
msgstr "GNOME Classic"
|
||||
|
||||
#: ../extensions/alternative-status-menu/extension.js:73
|
||||
msgid "Hibernate"
|
||||
msgstr "Hviletilstand"
|
||||
#: ../data/gnome-classic.desktop.in.h:2
|
||||
msgid "This session logs you into GNOME Classic"
|
||||
msgstr "Denne session logger dig ind i GNOME Classic"
|
||||
|
||||
#: ../extensions/alternative-status-menu/extension.js:78
|
||||
msgid "Power Off..."
|
||||
msgstr "Sluk..."
|
||||
#: ../data/gnome-shell-classic.desktop.in.in.h:1
|
||||
msgid "GNOME Shell Classic"
|
||||
msgstr "GNOME Shell Classic"
|
||||
|
||||
#: ../extensions/alternate-tab/extension.js:54
|
||||
#: ../data/gnome-shell-classic.desktop.in.in.h:2
|
||||
msgid "Window management and application launching"
|
||||
msgstr "Vindueshåndtering og programopstart"
|
||||
|
||||
#: ../data/org.gnome.shell.extensions.classic-overrides.gschema.xml.in.h:1
|
||||
msgid "Attach modal dialog to the parent window"
|
||||
msgstr "Tillæg modal-dialog til det overordnede vindue"
|
||||
|
||||
#: ../data/org.gnome.shell.extensions.classic-overrides.gschema.xml.in.h:2
|
||||
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."
|
||||
"This key overrides the key in org.gnome.mutter when running GNOME Shell."
|
||||
msgstr ""
|
||||
"Dette er første gang du bruger Alternate Tab-udvidelsen. \n"
|
||||
"Vælg venligst din foretrukne opførsel:\n"
|
||||
"\n"
|
||||
"Alle & miniaturebilleder:\n"
|
||||
" Denne tilstand præsenterer alle programmer fra alle arbejdsområder i en "
|
||||
"markerings- \n"
|
||||
" liste. I stedet for at bruge programikonet for hvert vindue, bruges et "
|
||||
"lille \n"
|
||||
" miniaturebillede af vinduet selv. \n"
|
||||
"\n"
|
||||
"Arbejdsområde & ikoner:\n"
|
||||
" Denne tilstand giver mulighed for at skifte mellem programmerne i dit "
|
||||
"nuværende \n"
|
||||
" arbejdsområde og giver dig derudover muligheden for at skifte til det "
|
||||
"seneste brugte \n"
|
||||
" program i dit tidligere arbejdsområde. Dette er altid det sidste symbol "
|
||||
"i \n"
|
||||
" listen og er visuelt adskilt af en vertikal linje, hvis tilgængelig. \n"
|
||||
" Hvert vindue er repræsenteret af dets programikon. \n"
|
||||
"\n"
|
||||
"Hvis du ønsker at skifte tilbage til standardopførslen for Alt-Tab-"
|
||||
"skifteren, skal du\n"
|
||||
"blot deaktivere udvidelsen fra extensions.gnome.org eller programmet "
|
||||
"Avancerede indstillinger."
|
||||
"Denne nøgle tilsidesætter nøglen i org.gnome.mutter når GNOME Shell kører."
|
||||
|
||||
#: ../extensions/alternate-tab/extension.js:295
|
||||
msgid "Alt Tab Behaviour"
|
||||
msgstr "Alt-Tab-opførsel"
|
||||
#: ../data/org.gnome.shell.extensions.classic-overrides.gschema.xml.in.h:3
|
||||
msgid "Enable edge tiling when dropping windows on screen edges"
|
||||
msgstr "Aktivér kant-fliselægning når vinduer slippes på skærmkanter"
|
||||
|
||||
#: ../extensions/alternate-tab/extension.js:311
|
||||
msgid "All & Thumbnails"
|
||||
msgstr "Alle & miniaturebilleder"
|
||||
#: ../data/org.gnome.shell.extensions.classic-overrides.gschema.xml.in.h:4
|
||||
msgid "Workspaces only on primary monitor"
|
||||
msgstr "Kun arbejdsområder på primær skærm"
|
||||
|
||||
#: ../extensions/alternate-tab/extension.js:318
|
||||
msgid "Workspace & Icons"
|
||||
msgstr "Arbejdsområde & ikoner"
|
||||
|
||||
#: ../extensions/alternate-tab/extension.js:325
|
||||
msgid "Cancel"
|
||||
msgstr "Annullér"
|
||||
|
||||
#: ../extensions/alternate-tab/org.gnome.shell.extensions.alternate-tab.gschema.xml.in.h:1
|
||||
msgid "Ask the user for a default behaviour if true."
|
||||
#: ../data/org.gnome.shell.extensions.classic-overrides.gschema.xml.in.h:5
|
||||
msgid "Delay focus changes in mouse mode until the pointer stops moving"
|
||||
msgstr ""
|
||||
"Forsink fokusændringer i musetilstand indtil pegeren holder op med at bevæge "
|
||||
"sig"
|
||||
|
||||
#: ../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/prefs.js:20
|
||||
msgid "Thumbnail only"
|
||||
msgstr "Kun miniaturebillede"
|
||||
|
||||
#: ../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 ""
|
||||
#: ../extensions/alternate-tab/prefs.js:21
|
||||
msgid "Application icon only"
|
||||
msgstr "Kun programikon"
|
||||
|
||||
#: ../extensions/alternate-tab/org.gnome.shell.extensions.alternate-tab.gschema.xml.in.h:4
|
||||
#, fuzzy
|
||||
msgid "The alt tab behaviour."
|
||||
msgstr "Alt-Tab-opførsel"
|
||||
#: ../extensions/alternate-tab/prefs.js:22
|
||||
msgid "Thumbnail and application icon"
|
||||
msgstr "Miniaturebillede og programikon"
|
||||
|
||||
#: ../extensions/alternate-tab/prefs.js:37
|
||||
msgid "Present windows as"
|
||||
msgstr "Præsentér vindue som"
|
||||
|
||||
#: ../extensions/alternate-tab/prefs.js:62
|
||||
msgid "Show only windows in the current workspace"
|
||||
msgstr "Vis kun vinduer i det nuværende arbejdsområde"
|
||||
|
||||
#: ../extensions/apps-menu/extension.js:39
|
||||
msgid "Activities Overview"
|
||||
msgstr "Aktivitetsoversigt"
|
||||
|
||||
#: ../extensions/apps-menu/extension.js:113
|
||||
msgid "Favorites"
|
||||
msgstr "Favoritter"
|
||||
|
||||
#: ../extensions/apps-menu/extension.js:282
|
||||
msgid "Applications"
|
||||
msgstr "Programmer"
|
||||
|
||||
#: ../extensions/auto-move-windows/org.gnome.shell.extensions.auto-move-windows.gschema.xml.in.h:1
|
||||
msgid "Application and workspace list"
|
||||
msgstr "Liste over programmer og arbejdsområder"
|
||||
|
||||
#: ../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"
|
||||
@@ -125,151 +103,337 @@ msgstr ""
|
||||
"En liste over strenge, som hver indeholder et program-id "
|
||||
"(skrivebordsfilnavn), efterfulgt af et kolon og arbejdsområdets nummer"
|
||||
|
||||
#: ../extensions/auto-move-windows/org.gnome.shell.extensions.auto-move-windows.gschema.xml.in.h:2
|
||||
msgid "Application and workspace list"
|
||||
msgstr "Liste over programmer og arbejdsområder"
|
||||
#: ../extensions/auto-move-windows/prefs.js:55
|
||||
msgid "Application"
|
||||
msgstr "Program"
|
||||
|
||||
#: ../extensions/dock/extension.js:561
|
||||
msgid "Drag here to add favorites"
|
||||
msgstr "Træk hertil for at føje til favoritter"
|
||||
#: ../extensions/auto-move-windows/prefs.js:64
|
||||
#: ../extensions/auto-move-windows/prefs.js:106
|
||||
msgid "Workspace"
|
||||
msgstr "Arbejdsområde"
|
||||
|
||||
#: ../extensions/dock/extension.js:896
|
||||
msgid "New Window"
|
||||
msgstr "Nyt vindue"
|
||||
#: ../extensions/auto-move-windows/prefs.js:80
|
||||
msgid "Add rule"
|
||||
msgstr "Tilføj regel"
|
||||
|
||||
#: ../extensions/dock/extension.js:898
|
||||
msgid "Quit Application"
|
||||
msgstr "Afslut program"
|
||||
#: ../extensions/auto-move-windows/prefs.js:94
|
||||
msgid "Create new matching rule"
|
||||
msgstr "Opret ny regel for match"
|
||||
|
||||
#: ../extensions/dock/extension.js:903
|
||||
msgid "Remove from Favorites"
|
||||
msgstr "Fjern fra favoritter"
|
||||
#: ../extensions/auto-move-windows/prefs.js:98
|
||||
msgid "Add"
|
||||
msgstr "Tilføj"
|
||||
|
||||
#: ../extensions/dock/extension.js:904
|
||||
msgid "Add to Favorites"
|
||||
msgstr "Føj til favoritter"
|
||||
#: ../extensions/drive-menu/extension.js:73
|
||||
#, c-format
|
||||
msgid "Ejecting drive '%s' failed:"
|
||||
msgstr "Udskubning af drevet \"%s\" fejlede:"
|
||||
|
||||
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:1
|
||||
msgid "Autohide duration"
|
||||
msgstr ""
|
||||
#: ../extensions/drive-menu/extension.js:90
|
||||
msgid "Removable devices"
|
||||
msgstr "Flytbare enheder"
|
||||
|
||||
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:2
|
||||
msgid "Autohide effect"
|
||||
msgstr ""
|
||||
#: ../extensions/drive-menu/extension.js:117
|
||||
msgid "Open File"
|
||||
msgstr "Åbn fil"
|
||||
|
||||
#: ../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
|
||||
#: ../extensions/example/extension.js:17
|
||||
msgid "Hello, world!"
|
||||
msgstr "Hej verden!"
|
||||
|
||||
#: ../extensions/gajim/extension.js:227
|
||||
#, c-format
|
||||
msgid "%s is away."
|
||||
msgstr "%s er ikke til stede."
|
||||
#: ../extensions/example/org.gnome.shell.extensions.example.gschema.xml.in.h:1
|
||||
msgid "Alternative greeting text."
|
||||
msgstr "Alternativ velkomsttekst."
|
||||
|
||||
#: ../extensions/gajim/extension.js:230
|
||||
#, c-format
|
||||
msgid "%s is offline."
|
||||
msgstr "%s er frakoblet."
|
||||
#: ../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 ""
|
||||
"Hvis den ikke er tom, så indeholder den teksten, der vil blive vist når der "
|
||||
"klikkes på panelet."
|
||||
|
||||
#: ../extensions/gajim/extension.js:233
|
||||
#, c-format
|
||||
msgid "%s is online."
|
||||
msgstr "%s er tilgængelig."
|
||||
#. 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 sigter efter at vise hvordan man bygger udvidelser til shell'en som "
|
||||
"opfører sig ordentligt, og har som sådan meget lidt selvstændig "
|
||||
"funktionalitet.Alligevel er det muligt at tilpasse velkomstbeskeden."
|
||||
|
||||
#: ../extensions/gajim/extension.js:236
|
||||
#, c-format
|
||||
msgid "%s is busy."
|
||||
msgstr "%s er optaget."
|
||||
#: ../extensions/example/prefs.js:36
|
||||
msgid "Message:"
|
||||
msgstr "Besked:"
|
||||
|
||||
#: ../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 ""
|
||||
msgid "Use more screen for windows"
|
||||
msgstr "Brug mere skærmplads til vinduer"
|
||||
|
||||
#: ../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 ""
|
||||
"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 ""
|
||||
"Prøv at bruge mere skærmplads til at placere vinduesminiaturer ved at "
|
||||
"tilpasse dem til skærmens størrelsesforhold, samt ved at konsolidere dem "
|
||||
"yderligere for at reducere den omkransende boks.Denne indstilling gælder kun "
|
||||
"med den naturlige placeringsstrategi."
|
||||
|
||||
#: ../extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml.in.h:3
|
||||
msgid "Place window captions on top"
|
||||
msgstr "Placér vinduestitler i toppen"
|
||||
|
||||
#: ../extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml.in.h:4
|
||||
msgid "Use more screen for windows"
|
||||
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 ""
|
||||
"Hvis sat, vil vinduestitler bliver placeret i toppen af de respektive "
|
||||
"miniaturer, tilsidesætter shell-standarden, som placerer den i bunden. "
|
||||
"Ændring af denne indstilling kræver at shell'en genstartes for at træde i "
|
||||
"kraft."
|
||||
|
||||
#: ../extensions/places-menu/extension.js:36
|
||||
msgid "Removable Devices"
|
||||
msgstr ""
|
||||
#: ../extensions/places-menu/extension.js:78
|
||||
#: ../extensions/places-menu/extension.js:81
|
||||
msgid "Places"
|
||||
msgstr "Steder"
|
||||
|
||||
#: ../extensions/places-menu/placeDisplay.js:56
|
||||
#, c-format
|
||||
msgid "Failed to launch \"%s\""
|
||||
msgstr "Kunne ikke åbne \"%s\""
|
||||
|
||||
#: ../extensions/places-menu/placeDisplay.js:98
|
||||
#: ../extensions/places-menu/placeDisplay.js:121
|
||||
msgid "Computer"
|
||||
msgstr "Computer"
|
||||
|
||||
#: ../extensions/places-menu/placeDisplay.js:199
|
||||
msgid "Home"
|
||||
msgstr "Hjem"
|
||||
|
||||
#: ../extensions/places-menu/placeDisplay.js:286
|
||||
msgid "Browse Network"
|
||||
msgstr "Gennemse netværk"
|
||||
|
||||
#: ../extensions/systemMonitor/extension.js:214
|
||||
msgid "CPU"
|
||||
msgstr "CPU"
|
||||
|
||||
#: ../extensions/systemMonitor/extension.js:267
|
||||
msgid "Memory"
|
||||
msgstr "Hukommelse"
|
||||
|
||||
#: ../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 "Navnet på temaet, som indlæses fra ~/.themes/name/gnome-shell"
|
||||
|
||||
#: ../extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml.in.h:2
|
||||
msgid "Theme name"
|
||||
msgstr "Temanavn"
|
||||
|
||||
#: ../extensions/xrandr-indicator/extension.js:26
|
||||
msgid "Normal"
|
||||
msgstr "Normal"
|
||||
#: ../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 "Navnet på temaet, som indlæses fra ~/.themes/name/gnome-shell"
|
||||
|
||||
#: ../extensions/xrandr-indicator/extension.js:27
|
||||
msgid "Left"
|
||||
msgstr "Venstre"
|
||||
#: ../extensions/window-list/extension.js:92
|
||||
msgid "Close"
|
||||
msgstr "Luk"
|
||||
|
||||
#: ../extensions/xrandr-indicator/extension.js:28
|
||||
msgid "Right"
|
||||
msgstr "Højre"
|
||||
#: ../extensions/window-list/extension.js:102
|
||||
msgid "Unminimize"
|
||||
msgstr "Afminimér"
|
||||
|
||||
#: ../extensions/xrandr-indicator/extension.js:29
|
||||
msgid "Upside-down"
|
||||
msgstr "På hovedet"
|
||||
#: ../extensions/window-list/extension.js:103
|
||||
msgid "Minimize"
|
||||
msgstr "Minimér"
|
||||
|
||||
#: ../extensions/xrandr-indicator/extension.js:78
|
||||
msgid "Configure display settings..."
|
||||
msgstr "Konfigurér skærmindstillinger..."
|
||||
#: ../extensions/window-list/extension.js:109
|
||||
msgid "Unmaximize"
|
||||
msgstr "Afmaksimér"
|
||||
|
||||
#: ../extensions/window-list/extension.js:110
|
||||
msgid "Maximize"
|
||||
msgstr "Maksimér"
|
||||
|
||||
#: ../extensions/window-list/extension.js:270
|
||||
msgid "Minimize all"
|
||||
msgstr "Minimér"
|
||||
|
||||
#: ../extensions/window-list/extension.js:278
|
||||
msgid "Unminimize all"
|
||||
msgstr "Afminimér alle"
|
||||
|
||||
#: ../extensions/window-list/extension.js:286
|
||||
msgid "Maximize all"
|
||||
msgstr "Maksimér alle"
|
||||
|
||||
#: ../extensions/window-list/extension.js:295
|
||||
msgid "Unmaximize all"
|
||||
msgstr "Afmaksimér alle"
|
||||
|
||||
#: ../extensions/window-list/extension.js:304
|
||||
msgid "Close all"
|
||||
msgstr "Luk alle"
|
||||
|
||||
#: ../extensions/window-list/extension.js:591
|
||||
#: ../extensions/workspace-indicator/extension.js:30
|
||||
msgid "Workspace Indicator"
|
||||
msgstr "Arbejdsområdeindikator"
|
||||
|
||||
#: ../extensions/window-list/extension.js:743
|
||||
msgid "Window List"
|
||||
msgstr "Vinduesliste"
|
||||
|
||||
#: ../extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml.in.h:1
|
||||
msgid "When to group windows"
|
||||
msgstr "Hvornår vinduer skal grupperes"
|
||||
|
||||
#: ../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 ""
|
||||
"Afgør hvornår vinduer fra samme program skal grupperes i vindueslisten. "
|
||||
"Mulige værdier er \"never\" (aldrig), \"auto\" (automatisk) og \"always"
|
||||
"\" (altid)."
|
||||
|
||||
#: ../extensions/window-list/prefs.js:30
|
||||
msgid "Window Grouping"
|
||||
msgstr "Vinduesgruppering"
|
||||
|
||||
#: ../extensions/window-list/prefs.js:49
|
||||
msgid "Never group windows"
|
||||
msgstr "Gruppér aldrig vinduer"
|
||||
|
||||
#: ../extensions/window-list/prefs.js:50
|
||||
msgid "Group windows when space is limited"
|
||||
msgstr "Gruppér vinduer når pladsen er begrænset"
|
||||
|
||||
#: ../extensions/window-list/prefs.js:51
|
||||
msgid "Always group windows"
|
||||
msgstr "Gruppér altid vinduer"
|
||||
|
||||
#: ../extensions/workspace-indicator/prefs.js:141
|
||||
msgid "Workspace names:"
|
||||
msgstr "Arbejdsområdenavne:"
|
||||
|
||||
#: ../extensions/workspace-indicator/prefs.js:152
|
||||
msgid "Name"
|
||||
msgstr "Navn"
|
||||
|
||||
#: ../extensions/workspace-indicator/prefs.js:186
|
||||
#, c-format
|
||||
msgid "Workspace %d"
|
||||
msgstr "Arbejdsområde %d"
|
||||
|
||||
#~ msgid "Suspend"
|
||||
#~ msgstr "Dvale"
|
||||
|
||||
#~ msgid "Hibernate"
|
||||
#~ msgstr "Hviletilstand"
|
||||
|
||||
#~ msgid "Power Off..."
|
||||
#~ msgstr "Sluk..."
|
||||
|
||||
#~ 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 ""
|
||||
#~ "Dette er første gang du bruger Alternate Tab-udvidelsen. \n"
|
||||
#~ "Vælg venligst din foretrukne opførsel:\n"
|
||||
#~ "\n"
|
||||
#~ "Alle & miniaturebilleder:\n"
|
||||
#~ " Denne tilstand præsenterer alle programmer fra alle arbejdsområder i "
|
||||
#~ "en markerings- \n"
|
||||
#~ " liste. I stedet for at bruge programikonet for hvert vindue, bruges "
|
||||
#~ "et lille \n"
|
||||
#~ " miniaturebillede af vinduet selv. \n"
|
||||
#~ "\n"
|
||||
#~ "Arbejdsområde & ikoner:\n"
|
||||
#~ " Denne tilstand giver mulighed for at skifte mellem programmerne i dit "
|
||||
#~ "nuværende \n"
|
||||
#~ " arbejdsområde og giver dig derudover muligheden for at skifte til det "
|
||||
#~ "seneste brugte \n"
|
||||
#~ " program i dit tidligere arbejdsområde. Dette er altid det sidste "
|
||||
#~ "symbol i \n"
|
||||
#~ " listen og er visuelt adskilt af en vertikal linje, hvis "
|
||||
#~ "tilgængelig. \n"
|
||||
#~ " Hvert vindue er repræsenteret af dets programikon. \n"
|
||||
#~ "\n"
|
||||
#~ "Hvis du ønsker at skifte tilbage til standardopførslen for Alt-Tab-"
|
||||
#~ "skifteren, skal du\n"
|
||||
#~ "blot deaktivere udvidelsen fra extensions.gnome.org eller programmet "
|
||||
#~ "Avancerede indstillinger."
|
||||
|
||||
#~ msgid "Alt Tab Behaviour"
|
||||
#~ msgstr "Alt-Tab-opførsel"
|
||||
|
||||
#~ msgid "Cancel"
|
||||
#~ msgstr "Annullér"
|
||||
|
||||
#~ msgid "The alt tab behaviour."
|
||||
#~ msgstr "Alt-Tab-opførsel"
|
||||
|
||||
#~ msgid "Drag here to add favorites"
|
||||
#~ msgstr "Træk hertil for at føje til favoritter"
|
||||
|
||||
#~ msgid "New Window"
|
||||
#~ msgstr "Nyt vindue"
|
||||
|
||||
#~ msgid "Remove from Favorites"
|
||||
#~ msgstr "Fjern fra favoritter"
|
||||
|
||||
#~ msgid "%s is away."
|
||||
#~ msgstr "%s er ikke til stede."
|
||||
|
||||
#~ msgid "%s is offline."
|
||||
#~ msgstr "%s er frakoblet."
|
||||
|
||||
#~ msgid "%s is online."
|
||||
#~ msgstr "%s er tilgængelig."
|
||||
|
||||
#~ msgid "%s is busy."
|
||||
#~ msgstr "%s er optaget."
|
||||
|
||||
#~ msgid "Normal"
|
||||
#~ msgstr "Normal"
|
||||
|
||||
#~ msgid "Left"
|
||||
#~ msgstr "Venstre"
|
||||
|
||||
#~ msgid "Right"
|
||||
#~ msgstr "Højre"
|
||||
|
||||
#~ msgid "Upside-down"
|
||||
#~ msgstr "På hovedet"
|
||||
|
||||
#~ msgid "Configure display settings..."
|
||||
#~ msgstr "Konfigurér skærmindstillinger..."
|
||||
|
||||
#~ msgid "Notifications"
|
||||
#~ msgstr "Beskeder"
|
||||
|
||||
563
po/de.po
563
po/de.po
@@ -1,234 +1,201 @@
|
||||
# German translation for gnome-shell-extensions.
|
||||
# Copyright (C) 2011 gnome-shell-extensions's COPYRIGHT HOLDER
|
||||
# This file is distributed under the same license as the gnome-shell-extensions package.
|
||||
# Mario Blättermann <mario.blaettermann@gmail.com>, 2011.
|
||||
# Christian Kirbach <Christian.Kirbach@googlemail.com>, 2011.
|
||||
# Mario Blättermann <mario.blaettermann@gmail.com>, 2011-2013.
|
||||
# Christian Kirbach <Christian.Kirbach@googlemail.com>, 2011, 2012.
|
||||
# Benjamin Steinwender <b@stbe.at>, 2013.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: gnome-shell-extensions master\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-12-27 14:30+0000\n"
|
||||
"PO-Revision-Date: 2011-12-28 11:14+0100\n"
|
||||
"Last-Translator: Mario Blättermann <mario.blaettermann@gmail.com>\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2013-09-25 15:26+0200\n"
|
||||
"PO-Revision-Date: 2013-09-25 15:27+0100\n"
|
||||
"Last-Translator: Christian Kirbach <christian.kirbach@gmail.com>\n"
|
||||
"Language-Team: Deutsch <gnome-de@gnome.org>\n"
|
||||
"Language: de_DE\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n!=1);\n"
|
||||
"X-Poedit-Language: German\n"
|
||||
"X-Poedit-Country: GERMANY\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"X-Generator: Poedit 1.5.4\n"
|
||||
|
||||
#. add the new entries
|
||||
#: ../extensions/alternative-status-menu/extension.js:68
|
||||
msgid "Suspend"
|
||||
msgstr "Bereitschaft"
|
||||
#: ../data/gnome-classic.desktop.in.h:1
|
||||
#: ../data/gnome-classic.session.desktop.in.in.h:1
|
||||
msgid "GNOME Classic"
|
||||
msgstr "GNOME Classic"
|
||||
|
||||
#: ../extensions/alternative-status-menu/extension.js:73
|
||||
msgid "Hibernate"
|
||||
msgstr "Ruhezustand"
|
||||
#: ../data/gnome-classic.desktop.in.h:2
|
||||
msgid "This session logs you into GNOME Classic"
|
||||
msgstr "Diese Sitzung meldet Sie in GNOME Classic an"
|
||||
|
||||
#: ../extensions/alternative-status-menu/extension.js:78
|
||||
msgid "Power Off..."
|
||||
msgstr "Ausschalten …"
|
||||
#: ../data/gnome-shell-classic.desktop.in.in.h:1
|
||||
msgid "GNOME Shell Classic"
|
||||
msgstr "GNOME Shell Classic"
|
||||
|
||||
#: ../extensions/alternate-tab/extension.js:54
|
||||
#: ../data/gnome-shell-classic.desktop.in.in.h:2
|
||||
msgid "Window management and application launching"
|
||||
msgstr "Fensterverwaltung und Anwendungsstart"
|
||||
|
||||
#: ../data/org.gnome.shell.extensions.classic-overrides.gschema.xml.in.h:1
|
||||
msgid "Attach modal dialog to the parent window"
|
||||
msgstr "Einen modalen Dialog an das übergeordnete Fenster anhängen"
|
||||
|
||||
#: ../data/org.gnome.shell.extensions.classic-overrides.gschema.xml.in.h:2
|
||||
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."
|
||||
"This key overrides the key in org.gnome.mutter when running GNOME Shell."
|
||||
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«."
|
||||
"Dieser Schlüssel überschreibt den Schlüssel in »org.gnome.mutter« wenn die "
|
||||
"GNOME-Shell ausgeführt wird."
|
||||
|
||||
#: ../extensions/alternate-tab/extension.js:295
|
||||
msgid "Alt Tab Behaviour"
|
||||
msgstr "Verhalten bei Alt-Tab"
|
||||
|
||||
#: ../extensions/alternate-tab/extension.js:311
|
||||
msgid "All & Thumbnails"
|
||||
msgstr "Alle und Vorschaubilder"
|
||||
|
||||
#: ../extensions/alternate-tab/extension.js:318
|
||||
msgid "Workspace & Icons"
|
||||
msgstr "Arbeitsbereich und Symbole"
|
||||
|
||||
#: ../extensions/alternate-tab/extension.js:325
|
||||
msgid "Cancel"
|
||||
msgstr "Abbrechen"
|
||||
|
||||
#: ../extensions/alternate-tab/org.gnome.shell.extensions.alternate-tab.gschema.xml.in.h:1
|
||||
msgid "Ask the user for a default behaviour if true."
|
||||
# identisch zum Schüssel in »gnome-shell«
|
||||
#: ../data/org.gnome.shell.extensions.classic-overrides.gschema.xml.in.h:3
|
||||
msgid "Enable edge tiling when dropping windows on screen edges"
|
||||
msgstr ""
|
||||
"Falls wahr, so wird der Benutzer nach dem voreinzustellendem Verhalten "
|
||||
"gefragt."
|
||||
"Größenanpassung aktivieren, wenn ein Fenster an die Bildschirmkante "
|
||||
"verschoben wird"
|
||||
|
||||
#: ../extensions/alternate-tab/org.gnome.shell.extensions.alternate-tab.gschema.xml.in.h:2
|
||||
msgid "Indicates if Alternate Tab is newly installed"
|
||||
msgstr "Gibt an, ob die Erweiterung »Alt-Tab« neu installiert wurde"
|
||||
#: ../data/org.gnome.shell.extensions.classic-overrides.gschema.xml.in.h:4
|
||||
msgid "Workspaces only on primary monitor"
|
||||
msgstr "Arbeitsflächen nur auf dem Primärmonitor"
|
||||
|
||||
# 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."
|
||||
#: ../data/org.gnome.shell.extensions.classic-overrides.gschema.xml.in.h:5
|
||||
msgid "Delay focus changes in mouse mode until the pointer stops moving"
|
||||
msgstr ""
|
||||
"Legt das Verhalten bei Drücken von Alt-Tab fest. Mögliche Werte sind: "
|
||||
"»native«, »all_thumbnails« und »workspace_icons«."
|
||||
"Fokuswechsel im Mausmodus verzögern, bis sich der Zeiger nicht mehr bewegt."
|
||||
|
||||
#: ../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/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"
|
||||
|
||||
#: ../extensions/apps-menu/extension.js:39
|
||||
msgid "Activities Overview"
|
||||
msgstr "Aktivitäten-Übersicht"
|
||||
|
||||
#: ../extensions/apps-menu/extension.js:113
|
||||
msgid "Favorites"
|
||||
msgstr "Favoriten"
|
||||
|
||||
#: ../extensions/apps-menu/extension.js:282
|
||||
msgid "Applications"
|
||||
msgstr "Anwendungen"
|
||||
|
||||
#: ../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 ""
|
||||
"A list of strings, each containing an application id (desktop file name), "
|
||||
"followed by a colon and the workspace number"
|
||||
msgstr ""
|
||||
"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
|
||||
msgid "Application and workspace list"
|
||||
msgstr "Anwendungs- und Arbeitsflächenliste"
|
||||
#: ../extensions/auto-move-windows/prefs.js:55
|
||||
msgid "Application"
|
||||
msgstr "Anwendung"
|
||||
|
||||
#: ../extensions/dock/extension.js:561
|
||||
msgid "Drag here to add favorites"
|
||||
msgstr "Hierher ziehen, um zu Favoriten hinzuzufügen"
|
||||
#: ../extensions/auto-move-windows/prefs.js:64
|
||||
#: ../extensions/auto-move-windows/prefs.js:106
|
||||
msgid "Workspace"
|
||||
msgstr "Arbeitsfläche "
|
||||
|
||||
#: ../extensions/dock/extension.js:896
|
||||
msgid "New Window"
|
||||
msgstr "Neues Fenster"
|
||||
#: ../extensions/auto-move-windows/prefs.js:80
|
||||
msgid "Add rule"
|
||||
msgstr "Regel hinzufügen"
|
||||
|
||||
#: ../extensions/dock/extension.js:898
|
||||
msgid "Quit Application"
|
||||
msgstr "Anwendung beenden"
|
||||
#: ../extensions/auto-move-windows/prefs.js:94
|
||||
msgid "Create new matching rule"
|
||||
msgstr "Neue Übereinstimmungsregel erstellen"
|
||||
|
||||
#: ../extensions/dock/extension.js:903
|
||||
msgid "Remove from Favorites"
|
||||
msgstr "Aus Favoriten entfernen"
|
||||
#: ../extensions/auto-move-windows/prefs.js:98
|
||||
msgid "Add"
|
||||
msgstr "Hinzufügen"
|
||||
|
||||
#: ../extensions/dock/extension.js:904
|
||||
msgid "Add to Favorites"
|
||||
msgstr "Zu Favoriten hinzufügen"
|
||||
#: ../extensions/drive-menu/extension.js:73
|
||||
#, c-format
|
||||
msgid "Ejecting drive '%s' failed:"
|
||||
msgstr "Auswerfen von Laufwerk »%s« schlug fehl:"
|
||||
|
||||
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:1
|
||||
msgid "Autohide duration"
|
||||
msgstr "Dauer automatisch verbergen"
|
||||
#: ../extensions/drive-menu/extension.js:90
|
||||
msgid "Removable devices"
|
||||
msgstr "Wechseldatenträger"
|
||||
|
||||
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:2
|
||||
msgid "Autohide effect"
|
||||
msgstr "Effekt automatisch verbergen"
|
||||
#: ../extensions/drive-menu/extension.js:117
|
||||
msgid "Open File"
|
||||
msgstr "Datei öffnen"
|
||||
|
||||
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:3
|
||||
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
|
||||
#: ../extensions/example/extension.js:17
|
||||
msgid "Hello, world!"
|
||||
msgstr "Hallo, Welt!"
|
||||
|
||||
#: ../extensions/gajim/extension.js:227
|
||||
#, c-format
|
||||
msgid "%s is away."
|
||||
msgstr "%s ist abwesend."
|
||||
#: ../extensions/example/org.gnome.shell.extensions.example.gschema.xml.in.h:1
|
||||
msgid "Alternative greeting text."
|
||||
msgstr "Alternative Begrüßungstext."
|
||||
|
||||
#: ../extensions/gajim/extension.js:230
|
||||
#, c-format
|
||||
msgid "%s is offline."
|
||||
msgstr "%s ist abgemeldet."
|
||||
#: ../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 ""
|
||||
"Falls nicht leer, ist dies der Text, der beim Anklicken des Panels angezeigt "
|
||||
"wird."
|
||||
|
||||
#: ../extensions/gajim/extension.js:233
|
||||
#, c-format
|
||||
msgid "%s is online."
|
||||
msgstr "%s ist angemeldet."
|
||||
#. 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 ""
|
||||
"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
|
||||
#, c-format
|
||||
msgid "%s is busy."
|
||||
msgstr "%s ist beschäftigt."
|
||||
#: ../extensions/example/prefs.js:36
|
||||
msgid "Message:"
|
||||
msgstr "Nachricht:"
|
||||
|
||||
#: ../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 ""
|
||||
"If true, place window captions on top the respective thumbnail, overriding "
|
||||
"shell default of placing it at the bottom. Changing this setting requires "
|
||||
@@ -238,55 +205,209 @@ msgstr ""
|
||||
"Vorschaubild platziert und damit die Voreinstellung der Shell übergangen. "
|
||||
"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
|
||||
msgid "Place window captions on top"
|
||||
msgstr "Fensterbeschriftungen oben platzieren"
|
||||
#: ../extensions/places-menu/extension.js:78
|
||||
#: ../extensions/places-menu/extension.js:81
|
||||
msgid "Places"
|
||||
msgstr "Orte"
|
||||
|
||||
#: ../extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml.in.h:3
|
||||
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/places-menu/placeDisplay.js:56
|
||||
#, c-format
|
||||
msgid "Failed to launch \"%s\""
|
||||
msgstr "Starten von »%s« fehlgeschlagen"
|
||||
|
||||
#: ../extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml.in.h:4
|
||||
msgid "Use more screen for windows"
|
||||
msgstr "Mehr Bildschirmbereich für Fenster verwenden"
|
||||
#: ../extensions/places-menu/placeDisplay.js:98
|
||||
#: ../extensions/places-menu/placeDisplay.js:121
|
||||
msgid "Computer"
|
||||
msgstr "Rechner"
|
||||
|
||||
#: ../extensions/places-menu/extension.js:36
|
||||
msgid "Removable Devices"
|
||||
msgstr "Wechseldatenträger"
|
||||
#: ../extensions/places-menu/placeDisplay.js:199
|
||||
msgid "Home"
|
||||
msgstr "Persönlicher Ordner"
|
||||
|
||||
#: ../extensions/places-menu/placeDisplay.js:286
|
||||
msgid "Browse Network"
|
||||
msgstr "Netzwerk durchsuchen"
|
||||
|
||||
#: ../extensions/systemMonitor/extension.js:214
|
||||
msgid "CPU"
|
||||
msgstr "CPU"
|
||||
|
||||
#: ../extensions/systemMonitor/extension.js:267
|
||||
msgid "Memory"
|
||||
msgstr "Speicher"
|
||||
|
||||
#: ../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"
|
||||
msgstr ""
|
||||
"Der Name des Themas, welches aus ~/.themes/name/gnome-shell geladen werden "
|
||||
"soll"
|
||||
|
||||
#: ../extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml.in.h:2
|
||||
msgid "Theme name"
|
||||
msgstr "Themenname"
|
||||
#: ../extensions/window-list/extension.js:92
|
||||
msgid "Close"
|
||||
msgstr "Schließen"
|
||||
|
||||
#: ../extensions/xrandr-indicator/extension.js:26
|
||||
msgid "Normal"
|
||||
msgstr "Normal"
|
||||
#: ../extensions/window-list/extension.js:102
|
||||
msgid "Unminimize"
|
||||
msgstr "Minimieren rückgängig"
|
||||
|
||||
#: ../extensions/xrandr-indicator/extension.js:27
|
||||
msgid "Left"
|
||||
msgstr "Links"
|
||||
#: ../extensions/window-list/extension.js:103
|
||||
msgid "Minimize"
|
||||
msgstr "Minimieren"
|
||||
|
||||
#: ../extensions/xrandr-indicator/extension.js:28
|
||||
msgid "Right"
|
||||
msgstr "Rechts"
|
||||
#: ../extensions/window-list/extension.js:109
|
||||
msgid "Unmaximize"
|
||||
msgstr "Maximieren rückgängig"
|
||||
|
||||
#: ../extensions/xrandr-indicator/extension.js:29
|
||||
msgid "Upside-down"
|
||||
msgstr "Kopfüber"
|
||||
#: ../extensions/window-list/extension.js:110
|
||||
msgid "Maximize"
|
||||
msgstr "Maximieren"
|
||||
|
||||
#: ../extensions/xrandr-indicator/extension.js:78
|
||||
msgid "Configure display settings..."
|
||||
msgstr "Bildschirmeinstellungen festlegen …"
|
||||
#: ../extensions/window-list/extension.js:270
|
||||
msgid "Minimize all"
|
||||
msgstr "Alle minimieren"
|
||||
|
||||
#: ../extensions/window-list/extension.js:278
|
||||
msgid "Unminimize all"
|
||||
msgstr "Alle minimieren rückgängig"
|
||||
|
||||
#: ../extensions/window-list/extension.js:286
|
||||
msgid "Maximize all"
|
||||
msgstr "Alle maximieren"
|
||||
|
||||
#: ../extensions/window-list/extension.js:295
|
||||
msgid "Unmaximize all"
|
||||
msgstr "Alle maximieren rückgängig"
|
||||
|
||||
#: ../extensions/window-list/extension.js:304
|
||||
msgid "Close all"
|
||||
msgstr "Alle schließen"
|
||||
|
||||
#: ../extensions/window-list/extension.js:591
|
||||
#: ../extensions/workspace-indicator/extension.js:30
|
||||
msgid "Workspace Indicator"
|
||||
msgstr "Arbeitsflächenindikator"
|
||||
|
||||
#: ../extensions/window-list/extension.js:743
|
||||
msgid "Window List"
|
||||
msgstr "Fensterliste"
|
||||
|
||||
#: ../extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml.in.h:1
|
||||
msgid "When to group windows"
|
||||
msgstr "Fenstergruppierung"
|
||||
|
||||
#: ../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 ""
|
||||
"Legt fest, ob Fenster der gleichen Anwendung in der Fensterliste gruppiert "
|
||||
"werden sollen. Mögliche Werte sind »never« (nie), »auto« (automatisch) 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 "Group windows when space is limited"
|
||||
msgstr "Fenster bei Platzmangel gruppieren"
|
||||
|
||||
#: ../extensions/window-list/prefs.js:51
|
||||
msgid "Always group windows"
|
||||
msgstr "Fenster immer gruppieren"
|
||||
|
||||
#: ../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"
|
||||
|
||||
#~ msgid "Suspend"
|
||||
#~ msgstr "Bereitschaft"
|
||||
|
||||
#~ msgid "Hibernate"
|
||||
#~ msgstr "Ruhezustand"
|
||||
|
||||
#~ msgid "Power Off"
|
||||
#~ msgstr "Ausschalten …"
|
||||
|
||||
#~ msgid "Enable suspending"
|
||||
#~ msgstr "Bereitschaft einblenden"
|
||||
|
||||
#~ msgid "Control the visibility of the Suspend menu item"
|
||||
#~ msgstr "Die Sichtbarkeit des Menüeintrags »Bereitschaft« festlegen"
|
||||
|
||||
#~ msgid "Enable hibernating"
|
||||
#~ msgstr "Ruhezustand einblenden"
|
||||
|
||||
#~ msgid "Control the visibility of the Hibernate menu item"
|
||||
#~ msgstr "Die Sichtbarkeit des Menüeintrags »Ruhezustand« festlegen"
|
||||
|
||||
#~ msgid "Normal"
|
||||
#~ msgstr "Normal"
|
||||
|
||||
#~ msgid "Left"
|
||||
#~ msgstr "Links"
|
||||
|
||||
#~ msgid "Right"
|
||||
#~ msgstr "Rechts"
|
||||
|
||||
#~ msgid "Upside-down"
|
||||
#~ msgstr "Kopfüber"
|
||||
|
||||
#~ msgid "Display"
|
||||
#~ msgstr "Anzeige"
|
||||
|
||||
#~ 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"
|
||||
|
||||
812
po/el.po
812
po/el.po
@@ -3,277 +3,185 @@
|
||||
# This file is distributed under the same license as the gnome-shell-extensions package.
|
||||
# ioza1964 <ioza1964@yahoo.gr>, 2011.
|
||||
# Ιωάννης Ζαμπούκας <ioza1964@yahoo.gr>, 2011.
|
||||
#
|
||||
# Dimitris Spingos (Δημήτρης Σπίγγος) <dmtrs32@gmail.com>, 2013.
|
||||
# Vangelis Skarmoutsos <skarmoutsosv@gmail.com>, 2013.
|
||||
# Efstathios Iosifidis <iosifidis@opensuse.org>, 2013.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: gnome-shell-extensions master\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-09-17 15:20+0000\n"
|
||||
"PO-Revision-Date: 2011-09-18 14:34+0300\n"
|
||||
"Last-Translator: Ιωάννης Ζαμπούκας <ioza1964@yahoo.gr>\n"
|
||||
"Language-Team: Greek <team@gnome.gr>\n"
|
||||
"POT-Creation-Date: 2013-10-25 00:37+0000\n"
|
||||
"PO-Revision-Date: 2013-11-05 15:18+0300\n"
|
||||
"Last-Translator: Dimitris Spingos (Δημήτρης Σπίγγος) <dmtrs32@gmail.com>\n"
|
||||
"Language-Team: team@gnome.gr\n"
|
||||
"Language: el\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bits\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"X-Generator: Virtaal 0.7.1\n"
|
||||
"X-Project-Style: gnome\n"
|
||||
|
||||
#: ../extensions/alternative-status-menu/extension.js:44
|
||||
msgid "Notifications"
|
||||
msgstr "Ειδοποιήσεις"
|
||||
#: ../data/gnome-classic.desktop.in.h:1
|
||||
#: ../data/gnome-classic.session.desktop.in.in.h:1
|
||||
msgid "GNOME Classic"
|
||||
msgstr "GNOME Classic"
|
||||
|
||||
#: ../extensions/alternative-status-menu/extension.js:52
|
||||
msgid "Online Accounts"
|
||||
msgstr "Λογαριασμοί διαδικτύου"
|
||||
#: ../data/gnome-classic.desktop.in.h:2
|
||||
msgid "This session logs you into GNOME Classic"
|
||||
msgstr "Αυτή η συνεδρία σας συνδέει στο GNOME Classic"
|
||||
|
||||
#: ../extensions/alternative-status-menu/extension.js:56
|
||||
msgid "System Settings"
|
||||
msgstr "Ρυθμίσεις συστήματος"
|
||||
#: ../data/gnome-shell-classic.desktop.in.in.h:1
|
||||
msgid "GNOME Shell Classic"
|
||||
msgstr "GNOME Shell Classic"
|
||||
|
||||
#: ../extensions/alternative-status-menu/extension.js:63
|
||||
msgid "Lock Screen"
|
||||
msgstr "Κλείδωμα οθόνης"
|
||||
#: ../data/gnome-shell-classic.desktop.in.in.h:2
|
||||
msgid "Window management and application launching"
|
||||
msgstr "Διαχείριση παραθύρου και εκκίνηση εφαρμογής"
|
||||
|
||||
#: ../extensions/alternative-status-menu/extension.js:68
|
||||
msgid "Switch User"
|
||||
msgstr "Αλλαγή χρήστη"
|
||||
#: ../data/org.gnome.shell.extensions.classic-overrides.gschema.xml.in.h:1
|
||||
msgid "Attach modal dialog to the parent window"
|
||||
msgstr "Προσάρτηση αποκλειστικού διαλόγου στο γονικό παράθυρο"
|
||||
|
||||
#: ../extensions/alternative-status-menu/extension.js:73
|
||||
msgid "Log Out..."
|
||||
msgstr "Αποσύνδεση…"
|
||||
|
||||
#: ../extensions/alternative-status-menu/extension.js:81
|
||||
msgid "Suspend"
|
||||
msgstr "Αναστολή"
|
||||
|
||||
#: ../extensions/alternative-status-menu/extension.js:87
|
||||
msgid "Hibernate"
|
||||
msgstr "Αδρανοποίηση"
|
||||
|
||||
#: ../extensions/alternative-status-menu/extension.js:93
|
||||
msgid "Power Off..."
|
||||
msgstr "Σβήσιμο…"
|
||||
|
||||
#: ../extensions/alternate-tab/extension.js:44
|
||||
#: ../data/org.gnome.shell.extensions.classic-overrides.gschema.xml.in.h:2
|
||||
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"
|
||||
"This key overrides the key in org.gnome.mutter when running GNOME Shell."
|
||||
msgstr ""
|
||||
"Αυτή είναι η πρώτη φορά που χρησιμοποιήσατε την εναλλακτική επέκταση "
|
||||
"στηλοθέτη. \n"
|
||||
"Παρακαλούμε επιλέξτε την συμπεριφορά που επιθυμείτε εσείς:\n"
|
||||
"\n"
|
||||
"Όλα & μικρογραφίες:\n"
|
||||
" Αυτή η κατάσταση εμφανίζει όλες τις εφαρμογές από όλους τους χώρους "
|
||||
"εργασίας σε μια επιλογή \n"
|
||||
" λίστα. Αντί να χρησιμοποιεί το εικονίδιο της εφαρμογής από κάθε "
|
||||
"παράθυρο, χρησιμοποιεί μικρές \n"
|
||||
" μικρογραφίες που μοιάζουν με το ίδιο το παράθυρο. \n"
|
||||
"\n"
|
||||
"Χώρος εργασίας & εικονίδια:\n"
|
||||
" Αυτή η λειτουργία σας επιτρέπει να κάνετε εναλλαγή μεταξύ των εφαρμογών "
|
||||
"του τρέχοντος \n"
|
||||
" χώρου εργασίας σας και σας δίνει επιπλέον τη δυνατότητα να μεταβείτε "
|
||||
"στην τελευταία χρησιμοποιημένη \n"
|
||||
" εφαρμογή του προηγούμενου χώρου εργασίας σας. Αυτό είναι πάντα το "
|
||||
"τελευταίο σύμβολο στη \n"
|
||||
" λίστα και είναι απομονωμένο από ένα διαχωριστικό/κάθετη γραμμή, εάν "
|
||||
"υπάρχει. \n"
|
||||
" Κάθε παράθυρο αντιπροσωπεύεται από εικονίδιο της εφαρμογής της. \n"
|
||||
"\n"
|
||||
"Μητρική:\n"
|
||||
" Αυτή η λειτουργία είναι η μητρική συμπεριφορά του GNOME 3 ή με άλλα "
|
||||
"λόγια: Αν κάνετε κλικ \n"
|
||||
" στο μητρική θέτει εκτός λειτουργίας την εναλλακτική επέκταση "
|
||||
"στηλοθέτη. \n"
|
||||
"Αυτό το κλειδί επικαλύπτει το κλειδί στο org.gnome.mutter όταν τρέχει το "
|
||||
"GNOME Shell."
|
||||
|
||||
#: ../extensions/alternate-tab/extension.js:269
|
||||
msgid "Alt Tab Behaviour"
|
||||
msgstr "Συμπεριφορά Alt Tab"
|
||||
|
||||
#: ../extensions/alternate-tab/extension.js:285
|
||||
msgid "All & Thumbnails"
|
||||
msgstr "Όλα & μικρογραφίες"
|
||||
|
||||
#: ../extensions/alternate-tab/extension.js:292
|
||||
msgid "Workspace & Icons"
|
||||
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."
|
||||
#: ../data/org.gnome.shell.extensions.classic-overrides.gschema.xml.in.h:3
|
||||
msgid "Enable edge tiling when dropping windows on screen edges"
|
||||
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."
|
||||
#: ../data/org.gnome.shell.extensions.classic-overrides.gschema.xml.in.h:4
|
||||
msgid "Workspaces only on primary monitor"
|
||||
msgstr "Χώροι εργασίας μόνο στην πρωτεύουσα οθόνη"
|
||||
|
||||
#: ../data/org.gnome.shell.extensions.classic-overrides.gschema.xml.in.h:5
|
||||
msgid "Delay focus changes in mouse mode until the pointer stops moving"
|
||||
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 "Εμφάνιση μόνο των παραθύρων του τρέχοντος χώρου εργασίας"
|
||||
|
||||
#: ../extensions/apps-menu/extension.js:39
|
||||
msgid "Activities Overview"
|
||||
msgstr "Επισκόπηση δραστηριοτήτων"
|
||||
|
||||
#: ../extensions/apps-menu/extension.js:113
|
||||
msgid "Favorites"
|
||||
msgstr "Αγαπημένα"
|
||||
|
||||
#: ../extensions/apps-menu/extension.js:282
|
||||
msgid "Applications"
|
||||
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/org.gnome.shell.extensions.auto-move-windows.gschema.xml.in.h:2
|
||||
msgid "Application and workspace list"
|
||||
msgstr "Λίστα εφαρμογής και χώρου εργασίας"
|
||||
#: ../extensions/auto-move-windows/prefs.js:55
|
||||
msgid "Application"
|
||||
msgstr "Εφαρμογή"
|
||||
|
||||
#: ../extensions/dock/extension.js:486
|
||||
msgid "Drag here to add favorites"
|
||||
msgstr "Σύρετε εδώ για να προσθέσετε αγαπημένα"
|
||||
#: ../extensions/auto-move-windows/prefs.js:64
|
||||
#: ../extensions/auto-move-windows/prefs.js:106
|
||||
msgid "Workspace"
|
||||
msgstr "Χώρος εργασίας"
|
||||
|
||||
#: ../extensions/dock/extension.js:820
|
||||
msgid "New Window"
|
||||
msgstr "Νέο παράθυρο"
|
||||
#: ../extensions/auto-move-windows/prefs.js:80
|
||||
msgid "Add rule"
|
||||
msgstr "Προσθήκη κανόνα"
|
||||
|
||||
#: ../extensions/dock/extension.js:822
|
||||
msgid "Quit Application"
|
||||
msgstr "Εγκατάλειψη εφαρμογής"
|
||||
#: ../extensions/auto-move-windows/prefs.js:94
|
||||
msgid "Create new matching rule"
|
||||
msgstr "Δημιουργία νέου κανόνα αντιστοίχισης"
|
||||
|
||||
#: ../extensions/dock/extension.js:827
|
||||
msgid "Remove from Favorites"
|
||||
msgstr "Απομάκρυνση από τα αγαπημένα"
|
||||
#: ../extensions/auto-move-windows/prefs.js:98
|
||||
msgid "Add"
|
||||
msgstr "Προσθήκη"
|
||||
|
||||
#: ../extensions/dock/extension.js:828
|
||||
msgid "Add to Favorites"
|
||||
msgstr "Προσθήκη στα αγαπημένα"
|
||||
#: ../extensions/drive-menu/extension.js:73
|
||||
#, javascript-format
|
||||
msgid "Ejecting drive '%s' failed:"
|
||||
msgstr "Απέτυχε η εξαγωγή του δίσκου '%s':"
|
||||
|
||||
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:1
|
||||
msgid "Autohide duration"
|
||||
msgstr "Διάρκεια αυτόματης απόκρυψης"
|
||||
#: ../extensions/drive-menu/extension.js:90
|
||||
msgid "Removable devices"
|
||||
msgstr "Αφαιρούμενες συσκευές"
|
||||
|
||||
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:2
|
||||
msgid "Autohide effect"
|
||||
msgstr "Εφέ αυτόματης απόκρυψης"
|
||||
#: ../extensions/drive-menu/extension.js:117
|
||||
msgid "Open File"
|
||||
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' or 'rescale'"
|
||||
msgstr ""
|
||||
"Ρυθμίζειτην επίδραση κρυψίματος του υποδοχέα. Επιτρεπόμενες τιμές είναι "
|
||||
"resize («αλλαγή μεγέθους») ή rescale («αλλαγή κλίμακας»)"
|
||||
|
||||
#: ../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 ""
|
||||
"Ρυθμίζει τη θέση του υποδοχέα στην οθόνη. Επιτρεπόμενες τιμές είναι right («δεξιά») "
|
||||
"ή right («αριστερά»)"
|
||||
|
||||
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:9
|
||||
msgid "Sets the time duration of the autohide effect."
|
||||
msgstr "Ρυθμίζει την χρονική διάρκεια του εφέ αυτόματης απόκρυψης."
|
||||
|
||||
#: ../extensions/example/extension.js:11
|
||||
#: ../extensions/example/extension.js:17
|
||||
msgid "Hello, world!"
|
||||
msgstr "Καλημέρα, Κόσμε!"
|
||||
msgstr "Γεια σου, κόσμε!"
|
||||
|
||||
#: ../extensions/gajim/extension.js:227
|
||||
#, c-format
|
||||
msgid "%s is away."
|
||||
msgstr "%s είναι εκτός."
|
||||
#: ../extensions/example/org.gnome.shell.extensions.example.gschema.xml.in.h:1
|
||||
msgid "Alternative greeting text."
|
||||
msgstr "Εναλλακτικό κείμενο χαιρετισμού."
|
||||
|
||||
#: ../extensions/gajim/extension.js:230
|
||||
#, c-format
|
||||
msgid "%s is offline."
|
||||
msgstr "%s είναι εκτός σύνδεσης."
|
||||
#: ../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 ""
|
||||
"Αν δεν είναι κενό, περιέχει το κείμενο που θα εμφανιστεί όταν γίνεται κλικ "
|
||||
"στον πίνακα εφαρμογών."
|
||||
|
||||
#: ../extensions/gajim/extension.js:233
|
||||
#, c-format
|
||||
msgid "%s is online."
|
||||
msgstr "%s είναι σε σύνδεση."
|
||||
#: ../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 ""
|
||||
"Το παράδειγμα στοχεύει να δείξει πώς δημιουργούμε επεκτάσεις που "
|
||||
"συμπεριφέρονται σωστά για το Shell και ως τέτοιο έχει μικρή λειτουργικότητα "
|
||||
"από μόνο του.\n"
|
||||
"Παρ' όλα αυτά είναι δυνατό να προσαρμόσετε το μήνυμα χαιρετισμού."
|
||||
|
||||
#: ../extensions/gajim/extension.js:236
|
||||
#, c-format
|
||||
msgid "%s is busy."
|
||||
msgstr "%s είναι απασχολημένος/η."
|
||||
#: ../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 ""
|
||||
"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 ""
|
||||
"Αν αυτό αληθεύει, τοποθετήστε τους τίτλους παράθυρου στην κορυφή της "
|
||||
"αντίστοιχης μικρογραφίας, παρακάμπτοντας το προεπιλεγμένο του κελύφους πού "
|
||||
"το τοποθετεί στο κάτω μέρος. Η αλλαγή αυτής της ρύθμισης απαιτεί "
|
||||
"επανεκκίνηση του κέλυφους για να έχει κάποιο αποτέλεσμα."
|
||||
msgid "Use more screen for windows"
|
||||
msgstr "Χρησιμοποιήστε περισσότερη οθόνη για τα παράθυρα"
|
||||
|
||||
#: ../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 ""
|
||||
"Try to use more screen for placing window thumbnails by adapting to screen "
|
||||
"aspect ratio, and consolidating them further to reduce the bounding box. "
|
||||
@@ -284,40 +192,434 @@ msgstr ""
|
||||
"εδραιώνοντας τους περαιτέρω για να μειώσετε το πλαίσιο οριοθέτησης. Αυτή η "
|
||||
"ρύθμιση ισχύει μόνο με την στρατηγική φυσικής τοποθέτησης."
|
||||
|
||||
#: ../extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml.in.h:5
|
||||
msgid "Use more screen for windows"
|
||||
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:6
|
||||
msgid "Window placement strategy"
|
||||
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:78
|
||||
#: ../extensions/places-menu/extension.js:81
|
||||
msgid "Places"
|
||||
msgstr "Τοποθεσίες"
|
||||
|
||||
#: ../extensions/places-menu/placeDisplay.js:58
|
||||
#, javascript-format
|
||||
msgid "Failed to launch \"%s\""
|
||||
msgstr "Αποτυχία εκκίνησης \"%s\""
|
||||
|
||||
#: ../extensions/places-menu/placeDisplay.js:100
|
||||
#: ../extensions/places-menu/placeDisplay.js:123
|
||||
msgid "Computer"
|
||||
msgstr "Υπολογιστής"
|
||||
|
||||
#: ../extensions/places-menu/placeDisplay.js:201
|
||||
msgid "Home"
|
||||
msgstr "Προσωπικός φάκελος"
|
||||
|
||||
#: ../extensions/places-menu/placeDisplay.js:288
|
||||
msgid "Browse Network"
|
||||
msgstr "Περιήγηση δικτύου"
|
||||
|
||||
#: ../extensions/systemMonitor/extension.js:214
|
||||
msgid "CPU"
|
||||
msgstr "CPU"
|
||||
|
||||
#: ../extensions/systemMonitor/extension.js:267
|
||||
msgid "Memory"
|
||||
msgstr "Μνήμη"
|
||||
|
||||
#: ../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 ""
|
||||
"Το όνομα του θέματος, για να φορτωθεί από το αρχείο ~ / .themes / name / "
|
||||
"gnome-shell"
|
||||
|
||||
#: ../extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml.in.h:2
|
||||
msgid "Theme name"
|
||||
msgstr "Όνομα θέματος"
|
||||
|
||||
#: ../extensions/xrandr-indicator/extension.js:26
|
||||
msgid "Normal"
|
||||
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 ""
|
||||
"Το όνομα του θέματος που θα φορτωθεί από το ~ /.themes/name/gnome-shell"
|
||||
|
||||
#: ../extensions/xrandr-indicator/extension.js:27
|
||||
msgid "Left"
|
||||
msgstr "Αριστερά"
|
||||
#: ../extensions/window-list/extension.js:92
|
||||
msgid "Close"
|
||||
msgstr "Κλείσιμο"
|
||||
|
||||
#: ../extensions/xrandr-indicator/extension.js:28
|
||||
msgid "Right"
|
||||
msgstr "Δεξιά"
|
||||
#: ../extensions/window-list/extension.js:102
|
||||
msgid "Unminimize"
|
||||
msgstr "Αποελαχιστοποίηση"
|
||||
|
||||
#: ../extensions/xrandr-indicator/extension.js:29
|
||||
msgid "Upside-down"
|
||||
msgstr "Αναποδογυρισμένο"
|
||||
#: ../extensions/window-list/extension.js:103
|
||||
msgid "Minimize"
|
||||
msgstr "Ελαχιστοποίηση"
|
||||
|
||||
#: ../extensions/xrandr-indicator/extension.js:78
|
||||
msgid "Configure display settings..."
|
||||
msgstr "Διαμορφώστε τις ρυθμίσεις της οθόνης…"
|
||||
#: ../extensions/window-list/extension.js:109
|
||||
msgid "Unmaximize"
|
||||
msgstr "Απομεγιστοποίηση"
|
||||
|
||||
#: ../extensions/window-list/extension.js:110
|
||||
msgid "Maximize"
|
||||
msgstr "Μεγιστοποίηση"
|
||||
|
||||
#: ../extensions/window-list/extension.js:270
|
||||
msgid "Minimize all"
|
||||
msgstr "Ελαχιστοποίηση όλων"
|
||||
|
||||
#: ../extensions/window-list/extension.js:278
|
||||
msgid "Unminimize all"
|
||||
msgstr "Αποελαχιστοποίηση όλων"
|
||||
|
||||
#: ../extensions/window-list/extension.js:286
|
||||
msgid "Maximize all"
|
||||
msgstr "Μεγιστοποίηση όλων"
|
||||
|
||||
#: ../extensions/window-list/extension.js:295
|
||||
msgid "Unmaximize all"
|
||||
msgstr "Απομεγιστοποίηση όλων"
|
||||
|
||||
#: ../extensions/window-list/extension.js:304
|
||||
msgid "Close all"
|
||||
msgstr "Κλείσιμο όλων"
|
||||
|
||||
#: ../extensions/window-list/extension.js:591
|
||||
#: ../extensions/workspace-indicator/extension.js:30
|
||||
msgid "Workspace Indicator"
|
||||
msgstr "Δείκτης χώρου εργασίας"
|
||||
|
||||
#: ../extensions/window-list/extension.js:743
|
||||
msgid "Window List"
|
||||
msgstr "Λίστα παραθύρου"
|
||||
|
||||
#: ../extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml.in.h:1
|
||||
msgid "When to group windows"
|
||||
msgstr "Πότε θα ομαδοποιούνται τα παράθυρα"
|
||||
|
||||
#: ../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 ""
|
||||
"Αποφασίζει πότε θα ομαδοποιούνται παράθυρα από την ίδια εφαρμογή στη λίστα "
|
||||
"παραθύρου. Δυνατές τιμές είναι \"never\" (ποτέ), \"auto\" (αυτόματα) και "
|
||||
"\"always\" (πάντα)."
|
||||
|
||||
#: ../extensions/window-list/prefs.js:30
|
||||
msgid "Window Grouping"
|
||||
msgstr "Ομαδοποίηση παραθύρου"
|
||||
|
||||
#: ../extensions/window-list/prefs.js:49
|
||||
msgid "Never group windows"
|
||||
msgstr "Να μη γίνεται ποτέ ομαδοποίηση παραθύρων"
|
||||
|
||||
#: ../extensions/window-list/prefs.js:50
|
||||
msgid "Group windows when space is limited"
|
||||
msgstr "Ομαδοποίηση παραθύρων όταν ο χώρος είναι περιορισμένος"
|
||||
|
||||
#: ../extensions/window-list/prefs.js:51
|
||||
msgid "Always group windows"
|
||||
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
|
||||
#, javascript-format
|
||||
msgid "Workspace %d"
|
||||
msgstr "Χώρος εργασίας %d"
|
||||
|
||||
#~ msgid "Suspend"
|
||||
#~ msgstr "Αναστολή"
|
||||
|
||||
#~ msgid "Hibernate"
|
||||
#~ msgstr "Αδρανοποίηση"
|
||||
|
||||
#~ msgid "Power Off"
|
||||
#~ msgstr "Τερματισμός"
|
||||
|
||||
#~ msgid "Enable suspending"
|
||||
#~ msgstr "Ενεργοποίηση αναστολής"
|
||||
|
||||
#~ msgid "Control the visibility of the Suspend menu item"
|
||||
#~ msgstr "Ελέγχει την ορατότητα του αντικειμένου Αναστολη"
|
||||
|
||||
#~ msgid "Enable hibernating"
|
||||
#~ msgstr "Ενεργοποίηση αδρανοποίησης"
|
||||
|
||||
#~ msgid "Control the visibility of the Hibernate menu item"
|
||||
#~ msgstr "Ελέγχει την ορατότητα του αντικειμένου Αδρανοποίηση"
|
||||
|
||||
#~ msgid "Normal"
|
||||
#~ msgstr "Κανονικό"
|
||||
|
||||
#~ msgid "Left"
|
||||
#~ msgstr "Αριστερά"
|
||||
|
||||
#~ msgid "Right"
|
||||
#~ msgstr "Δεξιά"
|
||||
|
||||
#~ msgid "Upside-down"
|
||||
#~ msgstr "Αναποδογυρισμένο"
|
||||
|
||||
#~ msgid "Display"
|
||||
#~ msgstr "Οθόνη"
|
||||
|
||||
#~ msgid "Display Settings"
|
||||
#~ msgstr "Ρυθμίσεις οθόνης"
|
||||
|
||||
#~ msgid "The application icon mode."
|
||||
#~ msgstr "Η λειτουργία εικονιδίου της εφαρμογής"
|
||||
|
||||
#~ 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 ""
|
||||
#~ "Διαμορφώνει πως τα παράθυρα θα εμφανίζονται στν εναλλαγή των παραθύρων. "
|
||||
#~ "Έγκυρες ρυθμίσεις είναι 'thumbnail-only' (εμφανίζει μια μικρογραφία του "
|
||||
#~ "παραθύρου), 'app-icon-only' (εμφανίζει μόνο το εικονίδιο της εφαρμογής) ή "
|
||||
#~ "'both'."
|
||||
|
||||
#~ msgid "Drag here to add favorites"
|
||||
#~ msgstr "Σύρετε εδώ για να προσθέσετε αγαπημένα"
|
||||
|
||||
#~ msgid "New Window"
|
||||
#~ msgstr "Νέο παράθυρο"
|
||||
|
||||
#~ msgid "Quit Application"
|
||||
#~ msgstr "Εγκατάλειψη εφαρμογής"
|
||||
|
||||
#~ msgid "Remove from Favorites"
|
||||
#~ msgstr "Απομάκρυνση από τα αγαπημένα"
|
||||
|
||||
#~ msgid "Position of the dock"
|
||||
#~ msgstr "Θέση υποδοχέα"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "Sets the position of the dock in the screen. Allowed values are 'right' "
|
||||
#~ "or 'left'"
|
||||
#~ msgstr ""
|
||||
#~ "Ρυθμίζει τη θέση του υποδοχέα στην οθόνη. Επιτρεπόμενες τιμές είναι right "
|
||||
#~ "(«δεξιά») ή right («αριστερά»)"
|
||||
|
||||
#~ msgid "Icon size"
|
||||
#~ msgstr "Μέγεθος εικονιδίου"
|
||||
|
||||
#~ msgid "Sets icon size of the dock."
|
||||
#~ msgstr "Ρυθμίζει το μέγεθος εικόνας του υποδοχέα."
|
||||
|
||||
#~ msgid "Enable/disable autohide"
|
||||
#~ msgstr "Ενεργοποίηση/απενεργοποίηση αυτόματης απόκρυψης"
|
||||
|
||||
#~ msgid "Autohide effect"
|
||||
#~ msgstr "Εφέ αυτόματης απόκρυψης"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "Sets the effect of the hide dock. Allowed values are 'resize', 'rescale' "
|
||||
#~ "and 'move'"
|
||||
#~ msgstr ""
|
||||
#~ "Ρυθμίζει το εφέ κρυψίματος του υποδοχέα. Επιτρεπόμενες τιμές είναι "
|
||||
#~ "'resize', 'rescale' και 'move'"
|
||||
|
||||
#~ msgid "Autohide duration"
|
||||
#~ msgstr "Διάρκεια αυτόματης απόκρυψης"
|
||||
|
||||
#~ msgid "Sets the time duration of the autohide effect."
|
||||
#~ msgstr "Ρυθμίζει την χρονική διάρκεια του εφέ αυτόματης απόκρυψης."
|
||||
|
||||
#~ msgid "Monitor"
|
||||
#~ msgstr "Οθόνη"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "Sets monitor to display dock in. The default value (-1) is the primary "
|
||||
#~ "monitor."
|
||||
#~ msgstr ""
|
||||
#~ "Ορίζει την οθόνη για την εμφάνιση του ταμπλό. Η προεπιλεγμένη τιμή (-1) "
|
||||
#~ "είναι η κύρια οθόνη."
|
||||
|
||||
#~ 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 "Devices"
|
||||
#~ msgstr "Συσκευές"
|
||||
|
||||
#~ msgid "Bookmarks"
|
||||
#~ msgstr "Σελιδοδείκτες"
|
||||
|
||||
#~ msgid "Network"
|
||||
#~ msgstr "Δίκτυο"
|
||||
|
||||
#~ msgid "File System"
|
||||
#~ 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 "Στρατηγική τοποθέτησης παραθύρου"
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user