Compare commits
311
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d3b687df8b | ||
|
|
df463177e7 | ||
|
|
62af36ebfa | ||
|
|
c5246b7415 | ||
|
|
d39c1fd685 | ||
|
|
665a7fbbcb | ||
|
|
a4987d03b8 | ||
|
|
c477f10bfb | ||
|
|
2ae0f368b9 | ||
|
|
3428bebb67 | ||
|
|
ac33058086 | ||
|
|
73822dc5f5 | ||
|
|
961757f717 | ||
|
|
7d5c985004 | ||
|
|
cd16995503 | ||
|
|
3a3b5bac85 | ||
|
|
9f6b83eece | ||
|
|
c7a08aaf74 | ||
|
|
4456b440d8 | ||
|
|
f61e2f5f5c | ||
|
|
a8eecac0ff | ||
|
|
9a6b4da33c | ||
|
|
cb53d0b85c | ||
|
|
318b9b18af | ||
|
|
cdf970d4b6 | ||
|
|
1ee3803265 | ||
|
|
b25c4d07a7 | ||
|
|
330e7b312d | ||
|
|
01f921541f | ||
|
|
cc52f4a260 | ||
|
|
eb71474c95 | ||
|
|
69681cdc9a | ||
|
|
c958e2d0fd | ||
|
|
9c964eaf1b | ||
|
|
0500480d75 | ||
|
|
37a09b7be1 | ||
|
|
d8c734124d | ||
|
|
25b6b562d9 | ||
|
|
f2315d28f9 | ||
|
|
9b93931de6 | ||
|
|
47a2fd36e1 | ||
|
|
8c1d6d88cf | ||
|
|
be19802f78 | ||
|
|
33b16681c6 | ||
|
|
35746251fd | ||
|
|
3c51716268 | ||
|
|
e5421b6cc6 | ||
|
|
a2b014ccbf | ||
|
|
f1e7ae1010 | ||
|
|
10fe907c83 | ||
|
|
95131dc252 | ||
|
|
f3acb27d61 | ||
|
|
a904d51cf7 | ||
|
|
30ad3d670f | ||
|
|
63615cb657 | ||
|
|
ae9809caba | ||
|
|
c95d197c5c | ||
|
|
a894897770 | ||
|
|
1b2c0a4b6c | ||
|
|
8e8b0392a2 | ||
|
|
aea57f0305 | ||
|
|
6462af30ee | ||
|
|
8d658f7e0d | ||
|
|
05bcd981cd | ||
|
|
ecf608ead8 | ||
|
|
ae8749b7e1 | ||
|
|
4ad50ab035 | ||
|
|
934d17db4b | ||
|
|
b25e9541ce | ||
|
|
84a548c0b9 | ||
|
|
3204fd7842 | ||
|
|
808f75e998 | ||
|
|
56ecc684cc | ||
|
|
67ceca8f70 | ||
|
|
953445d6cf | ||
|
|
cb834f9fa1 | ||
|
|
ca2cd844b2 | ||
|
|
98b3da41e8 | ||
|
|
c00c749c0b | ||
|
|
e11c90365b | ||
|
|
c812fdc134 | ||
|
|
9299db49fb | ||
|
|
3a15dffe76 | ||
|
|
3df4e5fdbb | ||
|
|
c0a5d0d091 | ||
|
|
d36a196540 | ||
|
|
9077687c0a | ||
|
|
fcbfaec53e | ||
|
|
7c170e7e90 | ||
|
|
ed7a292805 | ||
|
|
eb79f5b512 | ||
|
|
eceff51ba1 | ||
|
|
63c07bdc73 | ||
|
|
fdc3dda484 | ||
|
|
fca516e58a | ||
|
|
c14f7f6fb8 | ||
|
|
2497dc6d31 | ||
|
|
a1f38d818d | ||
|
|
9646149f9a | ||
|
|
b6d02f8e1f | ||
|
|
5f96b3c11c | ||
|
|
e217f23767 | ||
|
|
579a290bae | ||
|
|
2dc4325a90 | ||
|
|
376502e952 | ||
|
|
91c9982d7f | ||
|
|
c721121a2d | ||
|
|
4007b61cf2 | ||
|
|
2655419880 | ||
|
|
9f1b52c852 | ||
|
|
d375cac32e | ||
|
|
66e2b32c8f | ||
|
|
95dd651b29 | ||
|
|
1534e50a15 | ||
|
|
23781abead | ||
|
|
8065d38fdd | ||
|
|
05faa0763b | ||
|
|
e88cd44b3c | ||
|
|
85fa282153 | ||
|
|
119da3291b | ||
|
|
f047cb0baf | ||
|
|
6675d1c55d | ||
|
|
be1a22069a | ||
|
|
2b9162b79d | ||
|
|
6aab09bd06 | ||
|
|
c336e7d70e | ||
|
|
f486dfa112 | ||
|
|
80de26dc16 | ||
|
|
af6f5fea54 | ||
|
|
9743054174 | ||
|
|
827af154b8 | ||
|
|
f9b87f9b44 | ||
|
|
a41bcd4f10 | ||
|
|
1a13f29b0c | ||
|
|
b6a6de9bb5 | ||
|
|
5b7631898c | ||
|
|
f8bae05036 | ||
|
|
60c75e5fcf | ||
|
|
c6d2063f4d | ||
|
|
52f373fb70 | ||
|
|
283a1ec5c2 | ||
|
|
c516f05927 | ||
|
|
e836a9e5e0 | ||
|
|
d1674c5f75 | ||
|
|
9fa283877c | ||
|
|
f1a154207f | ||
|
|
5b07dfded9 | ||
|
|
9f9dbd579b | ||
|
|
c9477dd94d | ||
|
|
5a30ebe403 | ||
|
|
a5f347ba10 | ||
|
|
dab326c17e | ||
|
|
bdf6af3ee3 | ||
|
|
1532c15325 | ||
|
|
cbd1b7d983 | ||
|
|
4b9c53ff2e | ||
|
|
6eb3a62e2b | ||
|
|
0469fc6aa9 | ||
|
|
1f6f22010e | ||
|
|
ae1b17d29c | ||
|
|
3fa750ce17 | ||
|
|
56e2a570e3 | ||
|
|
167f0be6b4 | ||
|
|
80eb29bd51 | ||
|
|
f2b261c573 | ||
|
|
6c49ca825c | ||
|
|
6a25971366 | ||
|
|
dc3523a344 | ||
|
|
2ef6dba0a5 | ||
|
|
92db87f7cb | ||
|
|
82d2011061 | ||
|
|
545b811562 | ||
|
|
d99d0a06bd | ||
|
|
6105eecff2 | ||
|
|
d1254d9b57 | ||
|
|
2db4589dea | ||
|
|
dfeb99fc0a | ||
|
|
48ea80d391 | ||
|
|
b138e218bb | ||
|
|
829440f546 | ||
|
|
14859b4009 | ||
|
|
3a596054ad | ||
|
|
65191d83b4 | ||
|
|
8499b0e254 | ||
|
|
f166ca501f | ||
|
|
a36331522f | ||
|
|
25e43a5d08 | ||
|
|
ad914441a2 | ||
|
|
200d337769 | ||
|
|
e56f1a976e | ||
|
|
6a66cd4fa6 | ||
|
|
55c493389a | ||
|
|
06f1303834 | ||
|
|
3d5687ae3c | ||
|
|
cdd3fba593 | ||
|
|
f11c101878 | ||
|
|
7c412ca7d9 | ||
|
|
e3a6e8f82c | ||
|
|
ce10ad64c4 | ||
|
|
5b43d4733c | ||
|
|
3671d5a299 | ||
|
|
a024d9f005 | ||
|
|
d94a3500f6 | ||
|
|
28494941e1 | ||
|
|
78141e6433 | ||
|
|
dd53fb8eb7 | ||
|
|
6cd2be452b | ||
|
|
36abd576b5 | ||
|
|
730547b3e1 | ||
|
|
b70059ac4d | ||
|
|
e7e6b882a3 | ||
|
|
53f92f2910 | ||
|
|
a26380d56e | ||
|
|
ab334d95e0 | ||
|
|
7e5726e632 | ||
|
|
95b40069bf | ||
|
|
bd9f1cfd91 | ||
|
|
81548ced69 | ||
|
|
a378e5fc34 | ||
|
|
56d19ad480 | ||
|
|
a071685c13 | ||
|
|
599428d292 | ||
|
|
1f1f9664a6 | ||
|
|
fb039c0fb5 | ||
|
|
6e63edd737 | ||
|
|
55ecd3939e | ||
|
|
d83d6e857a | ||
|
|
db35d7ae7c | ||
|
|
d34b5030b9 | ||
|
|
7f8f1234ae | ||
|
|
9b25a227c6 | ||
|
|
78580bc3a8 | ||
|
|
b50074fd37 | ||
|
|
d5a1044244 | ||
|
|
11cad1f3b3 | ||
|
|
eb567c1120 | ||
|
|
2582ab4fd0 | ||
|
|
5a06de606d | ||
|
|
4671c24b78 | ||
|
|
0d41643866 | ||
|
|
d8f7d70c10 | ||
|
|
cbd981351e | ||
|
|
434185ba03 | ||
|
|
abc8877d11 | ||
|
|
a7ff9f401e | ||
|
|
bab4be1a59 | ||
|
|
47beeb1a8e | ||
|
|
945eddbc26 | ||
|
|
c37ba0878a | ||
|
|
3861ffae31 | ||
|
|
2081309679 | ||
|
|
08a04b2f02 | ||
|
|
7b363fd659 | ||
|
|
85112394b3 | ||
|
|
190243ee89 | ||
|
|
1141d996d9 | ||
|
|
f7cbd0d600 | ||
|
|
c704f0de55 | ||
|
|
c8a1cd9c99 | ||
|
|
ff79588d3b | ||
|
|
8ae84703a4 | ||
|
|
f18b281020 | ||
|
|
75503b5f3c | ||
|
|
1d96f83362 | ||
|
|
b3f009017c | ||
|
|
05d961dfe1 | ||
|
|
8a2b9abc09 | ||
|
|
3effc9cfc2 | ||
|
|
1be7061da0 | ||
|
|
f75d1d75af | ||
|
|
67f9e4c419 | ||
|
|
aaeff6d12b | ||
|
|
912ba1e651 | ||
|
|
b741b1bbe2 | ||
|
|
d7414025a5 | ||
|
|
a317d75f70 | ||
|
|
194e294d2c | ||
|
|
a092da2527 | ||
|
|
4655cde002 | ||
|
|
0a979f5bfa | ||
|
|
d2046bb2c6 | ||
|
|
a2f40952b3 | ||
|
|
29917bcb1b | ||
|
|
1b881e1eaa | ||
|
|
40a8ab60f4 | ||
|
|
b684e756e2 | ||
|
|
7eae32eb76 | ||
|
|
34c20e6176 | ||
|
|
62818e71e9 | ||
|
|
ee85839d60 | ||
|
|
d9932b8f55 | ||
|
|
efa882080f | ||
|
|
132b3b0509 | ||
|
|
e5a0616a0a | ||
|
|
fbeb3cf1e9 | ||
|
|
072fbee7cb | ||
|
|
e9928b3c08 | ||
|
|
2af737a8c2 | ||
|
|
321702fd15 | ||
|
|
60493faf96 | ||
|
|
821cbf9328 | ||
|
|
cc0f167c0e | ||
|
|
d731534d04 | ||
|
|
b1eb9b9080 | ||
|
|
94eba47358 | ||
|
|
d34933de0b | ||
|
|
9410bdfad6 | ||
|
|
d424b0f645 | ||
|
|
c0454db0c6 | ||
|
|
a0b6535210 | ||
|
|
913b2ba691 |
@@ -0,0 +1,3 @@
|
|||||||
|
extends:
|
||||||
|
- ./lint/eslintrc-gjs.yml
|
||||||
|
- ./lint/eslintrc-shell.yml
|
||||||
@@ -1,3 +1,218 @@
|
|||||||
|
3.36.2
|
||||||
|
======
|
||||||
|
* Misc. bug fixes and cleanups [Florian, Xiaoguang; !113, !106]
|
||||||
|
|
||||||
|
Contributors:
|
||||||
|
Florian Müllner, Xiaoguang Wang
|
||||||
|
|
||||||
|
Translators:
|
||||||
|
Yosef Or Boczko [he], Kristjan SCHMIDT [eo]
|
||||||
|
3.36.1
|
||||||
|
======
|
||||||
|
|
||||||
|
Translators:
|
||||||
|
Daniel Korostil [uk]
|
||||||
|
|
||||||
|
3.36.0
|
||||||
|
======
|
||||||
|
|
||||||
|
Contributors:
|
||||||
|
Florian Müllner
|
||||||
|
|
||||||
|
3.35.91
|
||||||
|
=======
|
||||||
|
|
||||||
|
Contributors:
|
||||||
|
Florian Müllner
|
||||||
|
|
||||||
|
Translators:
|
||||||
|
Zander Brown [en_GB]
|
||||||
|
|
||||||
|
3.35.90
|
||||||
|
=======
|
||||||
|
* Adjust to gnome-shell changes [Florian; !100, !101, !102]
|
||||||
|
* Force single-line window titles in window list [Florian; #202]
|
||||||
|
* Misc. bug fixes and cleanup [Florian; !104, !105]
|
||||||
|
|
||||||
|
Contributors:
|
||||||
|
Florian Müllner
|
||||||
|
|
||||||
|
Translators:
|
||||||
|
sicklylife [ja], Umarzuki Bin Mochlis Moktar [ms]
|
||||||
|
|
||||||
|
3.35.3
|
||||||
|
======
|
||||||
|
|
||||||
|
Translators:
|
||||||
|
Fran Dieguez [gl]
|
||||||
|
|
||||||
|
3.35.2
|
||||||
|
======
|
||||||
|
* Adjust to gnome-shell changes [Marco, Florian; !89, !95, !96]
|
||||||
|
* window-list, workspace-indicator: Exclude DESKTOP windows from previews
|
||||||
|
[Florian; !93]
|
||||||
|
* screenshot-window-sizer: Fix cycling through all valid sizes [Willy; !97]
|
||||||
|
|
||||||
|
Contributors:
|
||||||
|
Marco Trevisan (Treviño), Florian Müllner, Willy Stadnick
|
||||||
|
|
||||||
|
3.34.1
|
||||||
|
======
|
||||||
|
* Adjust to gnome-settings-daemon plugin removals [Xiaoguang; !94]
|
||||||
|
|
||||||
|
Contributors:
|
||||||
|
Florian Müllner, Xiaoguang Wang
|
||||||
|
|
||||||
|
Translators:
|
||||||
|
Nathan Follens [nl], Dušan Kazik [sk], Ask Hjorth Larsen [da],
|
||||||
|
Yi-Jyun Pan [zh_TW]
|
||||||
|
|
||||||
|
3.34.0
|
||||||
|
======
|
||||||
|
|
||||||
|
Translators:
|
||||||
|
Rafael Fontenelle [pt_BR], Efstathios Iosifidis [el], Milo Casagrande [it],
|
||||||
|
Sabri Ünal [tr]
|
||||||
|
|
||||||
|
3.33.92
|
||||||
|
=======
|
||||||
|
|
||||||
|
Translators:
|
||||||
|
Марко Костић [sr], Tim Sabsch [de], Rūdolfs Mazurs [lv], Matej Urbančič [sl],
|
||||||
|
Balázs Úr [hu], Claude Paroz [fr], Fran Dieguez [gl], Changwoo Ryu [ko],
|
||||||
|
Ryuta Fujii [ja], Fabio Tomat [fur], Goran Vidović [hr]
|
||||||
|
|
||||||
|
3.33.91
|
||||||
|
=======
|
||||||
|
* Misc. bug fixes and cleanups [Florian; !88, !90, !91, !92]
|
||||||
|
|
||||||
|
Contributors:
|
||||||
|
Florian Müllner
|
||||||
|
|
||||||
|
Translators:
|
||||||
|
Asier Sarasua Garmendia [eu], Anders Jonsson [sv], Marek Černocký [cs],
|
||||||
|
Kukuh Syafaat [id], Jiri Grönroos [fi], Florentina Mușat [ro],
|
||||||
|
Aurimas Černius [lt], Daniel Mustieles [es], Piotr Drąg [pl], Jordi Mas [ca],
|
||||||
|
Danial Behzadi [fa]
|
||||||
|
3.33.90
|
||||||
|
=======
|
||||||
|
* window-list: Support showing windows from all workspaces [Florian; #154]
|
||||||
|
* Misc. bug fixes and cleanups [Florian; !86, !87]
|
||||||
|
|
||||||
|
Contributors:
|
||||||
|
Florian Müllner
|
||||||
|
|
||||||
|
Translators:
|
||||||
|
Jor Teron [mjw]
|
||||||
|
|
||||||
|
3.33.4
|
||||||
|
======
|
||||||
|
* Make GNOME Classic more classic:
|
||||||
|
- Disable GNOME 3 overview [Florian; !69]
|
||||||
|
- Add window picker button to window list [Florian; !73, !80]
|
||||||
|
- Style improvements and fixes [Jakub; #169, !82]
|
||||||
|
- Support horizontal workspace layout in window list [Florian; !70]
|
||||||
|
- Add draggable previews to window list workspace switcher [Florian; !74]
|
||||||
|
- Arrange workspaces horizontally [Florian; !72]
|
||||||
|
* workspace-indicator: Support horizontal workspace layout [Florian; !71]
|
||||||
|
* workspace-indicator: Add draggable previews [Florian; !77]
|
||||||
|
* Misc. bug fixes and cleanups [Florian; !75, !76, !79, !78, #168, !84]
|
||||||
|
|
||||||
|
Contributors:
|
||||||
|
Florian Müllner, Jakub Steiner, Jor Teron
|
||||||
|
|
||||||
|
Translators:
|
||||||
|
Jor Teron [mjw]
|
||||||
|
|
||||||
|
3.33.3
|
||||||
|
======
|
||||||
|
* Misc. bug fixes [Florian, Marco; !67, !68]
|
||||||
|
|
||||||
|
Contributors:
|
||||||
|
Florian Müllner, Marco Trevisan (Treviño)
|
||||||
|
|
||||||
|
3.33.2
|
||||||
|
======
|
||||||
|
* Misc. bug fixes and cleanups [Florian; !66]
|
||||||
|
|
||||||
|
Contributors:
|
||||||
|
Florian Müllner
|
||||||
|
|
||||||
|
3.33.1
|
||||||
|
======
|
||||||
|
* Misc. bug fixes [Florian; !64]
|
||||||
|
|
||||||
|
Contributors:
|
||||||
|
Florian Müllner
|
||||||
|
|
||||||
|
3.32.1
|
||||||
|
======
|
||||||
|
* Fix windowsNavigator extension after ES6 port [Florian; #143]
|
||||||
|
* screenshot-window-sizer: Add phone screenshot sizes [Adrien; !65]
|
||||||
|
* Misc. bug fixes and cleanups [Fabian; !62]
|
||||||
|
|
||||||
|
Contributors:
|
||||||
|
Florian Müllner, Adrien Plazas, Fabian P. Schmidt
|
||||||
|
|
||||||
|
3.32.0
|
||||||
|
======
|
||||||
|
|
||||||
|
Contributors:
|
||||||
|
Florian Müllner
|
||||||
|
|
||||||
|
Translations:
|
||||||
|
Victor Ibragimov [tg], Kristjan SCHMIDT [eo], Mart Raudsepp [et]
|
||||||
|
|
||||||
|
3.31.92
|
||||||
|
=======
|
||||||
|
* Misc. bug fixes and cleanups [Florian; !57, !58, !59, !60]
|
||||||
|
|
||||||
|
Contributors:
|
||||||
|
Florian Müllner
|
||||||
|
|
||||||
|
3.31.91
|
||||||
|
=======
|
||||||
|
* apps-menu: Remove outdated legacy-tray handling [Florian; !53]
|
||||||
|
* user-theme: Allow using XDG user data dir [Tomasz; !55]
|
||||||
|
* Misc. bug fixes and cleanups [Florian; !52, !54, !56]
|
||||||
|
|
||||||
|
Contributors:
|
||||||
|
Tomasz Gąsior, Florian Müllner
|
||||||
|
|
||||||
|
Translators:
|
||||||
|
Matej Urbančič [sl], Gun Chleoc [gd]
|
||||||
|
|
||||||
|
3.31.90
|
||||||
|
=======
|
||||||
|
* Misc. bug fixes and cleanups [Florian; !49, !50, !51]
|
||||||
|
|
||||||
|
Contributors:
|
||||||
|
Florian Müllner
|
||||||
|
|
||||||
|
Translators:
|
||||||
|
Ryuta Fujii [ja], Charles Monzat [fr], Pieter Schalk Schoeman [af]
|
||||||
|
|
||||||
|
3.31.2
|
||||||
|
======
|
||||||
|
* Remove obsolete alternate-tab extension [Florian; #786496]
|
||||||
|
* Adjust to gnome-shell changes [Florian; #113]
|
||||||
|
|
||||||
|
Contributors:
|
||||||
|
Florian Müllner
|
||||||
|
|
||||||
|
3.30.1
|
||||||
|
======
|
||||||
|
* apps-menu: Fix height on HiDPI systems [Florian; #102]
|
||||||
|
* window-list: Only switch between windows on active workspace when scrolling
|
||||||
|
[Florian; #78]
|
||||||
|
|
||||||
|
Contributors:
|
||||||
|
Florian Müllner
|
||||||
|
|
||||||
|
3.30.0
|
||||||
|
======
|
||||||
|
* Bump version
|
||||||
|
|
||||||
3.29.91
|
3.29.91
|
||||||
=======
|
=======
|
||||||
* Misc. bug fixes [Florian; #90]
|
* Misc. bug fixes [Florian; #90]
|
||||||
|
|||||||
@@ -15,9 +15,11 @@ Bugs should be reported to the GNOME [bug tracking system][bug-tracker].
|
|||||||
|
|
||||||
## Extensions
|
## Extensions
|
||||||
|
|
||||||
* alternate-tab
|
* alternate-tab (**OBSOLETE**)
|
||||||
|
|
||||||
Lets you use classic Alt+Tab (window-based instead of app-based) in GNOME Shell.
|
Lets you use classic Alt+Tab (window-based instead of app-based) in GNOME Shell.
|
||||||
|
This extension is obsolete since GNOME 3.30, see [this blogpost][alternatetab-post]
|
||||||
|
for further details.
|
||||||
|
|
||||||
* apps-menu
|
* apps-menu
|
||||||
|
|
||||||
@@ -34,10 +36,6 @@ GSettings key.
|
|||||||
Shows a status menu for rapid unmount and power off of external storage devices
|
Shows a status menu for rapid unmount and power off of external storage devices
|
||||||
(i.e. pendrives)
|
(i.e. pendrives)
|
||||||
|
|
||||||
* example
|
|
||||||
|
|
||||||
A minimal example illustrating how to write extensions.
|
|
||||||
|
|
||||||
* launch-new-instance
|
* launch-new-instance
|
||||||
|
|
||||||
Changes application icons to always launch a new instance when activated.
|
Changes application icons to always launch a new instance when activated.
|
||||||
@@ -82,3 +80,4 @@ file for details.
|
|||||||
[shell-page]: https://wiki.gnome.org/Projects/GnomeShell
|
[shell-page]: https://wiki.gnome.org/Projects/GnomeShell
|
||||||
[bug-tracker]: https://gitlab.gnome.org/GNOME/gnome-shell-extensions/issues
|
[bug-tracker]: https://gitlab.gnome.org/GNOME/gnome-shell-extensions/issues
|
||||||
[license]: COPYING
|
[license]: COPYING
|
||||||
|
[alternatetab-post]: https://blogs.gnome.org/fmuellner/2018/10/11/the-future-of-alternatetab-and-why-you-need-not-worry/
|
||||||
|
|||||||
@@ -1,8 +1,9 @@
|
|||||||
{
|
{
|
||||||
"parentMode": "user",
|
"parentMode": "user",
|
||||||
"stylesheetName": "gnome-classic.css",
|
"stylesheetName": "gnome-classic.css",
|
||||||
|
"hasOverview": false,
|
||||||
"enabledExtensions": [@CLASSIC_EXTENSIONS@],
|
"enabledExtensions": [@CLASSIC_EXTENSIONS@],
|
||||||
"panel": { "left": ["activities", "appMenu"],
|
"panel": { "left": ["appMenu"],
|
||||||
"center": [],
|
"center": [],
|
||||||
"right": ["a11y", "keyboard", "dateMenu", "aggregateMenu"]
|
"right": ["a11y", "keyboard", "dateMenu", "aggregateMenu"]
|
||||||
}
|
}
|
||||||
|
|||||||
+14
-23
@@ -4,6 +4,7 @@ $variant: 'light';
|
|||||||
@import "gnome-shell-sass/_colors"; //use gtk colors
|
@import "gnome-shell-sass/_colors"; //use gtk colors
|
||||||
@import "gnome-shell-sass/_drawing";
|
@import "gnome-shell-sass/_drawing";
|
||||||
@import "gnome-shell-sass/_common";
|
@import "gnome-shell-sass/_common";
|
||||||
|
@import "gnome-shell-sass/_widgets";
|
||||||
|
|
||||||
/* Overrides */
|
/* Overrides */
|
||||||
|
|
||||||
@@ -32,18 +33,20 @@ $variant: 'light';
|
|||||||
font-weight: normal;
|
font-weight: normal;
|
||||||
color: $fg_color;
|
color: $fg_color;
|
||||||
text-shadow: none;
|
text-shadow: none;
|
||||||
&:active, &:overview, &:focus, &:checked {
|
|
||||||
// Trick due to St limitations. It needs a background to draw
|
|
||||||
// a box-shadow
|
|
||||||
background-color: $selected_bg_color !important;
|
|
||||||
color: $selected_fg_color !important;
|
|
||||||
box-shadow: none;
|
|
||||||
& > .system-status-icon { icon-shadow: none; }
|
|
||||||
}
|
|
||||||
&:hover {
|
&:hover {
|
||||||
|
color: lighten($fg_color,10%);
|
||||||
text-shadow: none;
|
text-shadow: none;
|
||||||
& .system-status-icon { icon-shadow: none; }
|
& .system-status-icon { icon-shadow: none; }
|
||||||
}
|
}
|
||||||
|
&:active, &:overview, &:focus, &:checked {
|
||||||
|
// Trick due to St limitations. It needs a background to draw
|
||||||
|
// a box-shadow
|
||||||
|
background-color: $selected_bg_color;
|
||||||
|
color: $selected_fg_color;
|
||||||
|
box-shadow: none;
|
||||||
|
& > .system-status-icon { icon-shadow: none; }
|
||||||
|
}
|
||||||
|
|
||||||
.app-menu-icon { width: 0; height: 0; margin: 0; } // shell's display:none; :D
|
.app-menu-icon { width: 0; height: 0; margin: 0; } // shell's display:none; :D
|
||||||
|
|
||||||
.system-status-icon {
|
.system-status-icon {
|
||||||
@@ -60,9 +63,9 @@ $variant: 'light';
|
|||||||
&.lock-screen,
|
&.lock-screen,
|
||||||
&.unlock-screen,
|
&.unlock-screen,
|
||||||
&.login-screen {
|
&.login-screen {
|
||||||
background-color: transparentize($_bubble_bg_color, 0.5);
|
background-color: transparentize($bg_color, 0.5);
|
||||||
background-gradient-start: transparentize($_bubble_bg_color, 0.5);
|
background-gradient-start: transparentize($bg_color, 0.5);
|
||||||
background-gradient-end: transparentize($_bubble_bg_color, 0.5);
|
background-gradient-end: transparentize($bg_color, 0.5);
|
||||||
border-bottom: none;
|
border-bottom: none;
|
||||||
.panel-button { color: $osd_fg_color; }
|
.panel-button { color: $osd_fg_color; }
|
||||||
}
|
}
|
||||||
@@ -91,15 +94,3 @@ $variant: 'light';
|
|||||||
background-image: url("calendar-today.svg");
|
background-image: url("calendar-today.svg");
|
||||||
}
|
}
|
||||||
|
|
||||||
.message-list-clear-button.button {
|
|
||||||
color: $fg_color
|
|
||||||
}
|
|
||||||
|
|
||||||
.notification-banner {
|
|
||||||
background-color: $bg_color !important;
|
|
||||||
color: $fg_color;
|
|
||||||
.notification-button {
|
|
||||||
background-color: darken($bg_color,5%);
|
|
||||||
&:hover, &focus { background-color: darken($bg_color,2%); }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -1,3 +1,3 @@
|
|||||||
[GNOME Session]
|
[GNOME Session]
|
||||||
Name=GNOME Classic
|
Name=GNOME Classic
|
||||||
RequiredComponents=org.gnome.Shell;org.gnome.SettingsDaemon.A11ySettings;org.gnome.SettingsDaemon.Clipboard;org.gnome.SettingsDaemon.Color;org.gnome.SettingsDaemon.Datetime;org.gnome.SettingsDaemon.Housekeeping;org.gnome.SettingsDaemon.Keyboard;org.gnome.SettingsDaemon.MediaKeys;org.gnome.SettingsDaemon.Mouse;org.gnome.SettingsDaemon.Power;org.gnome.SettingsDaemon.PrintNotifications;org.gnome.SettingsDaemon.Rfkill;org.gnome.SettingsDaemon.ScreensaverProxy;org.gnome.SettingsDaemon.Sharing;org.gnome.SettingsDaemon.Smartcard;org.gnome.SettingsDaemon.Sound;org.gnome.SettingsDaemon.Wacom;org.gnome.SettingsDaemon.XSettings;
|
RequiredComponents=org.gnome.Shell;org.gnome.SettingsDaemon.A11ySettings;org.gnome.SettingsDaemon.Color;org.gnome.SettingsDaemon.Datetime;org.gnome.SettingsDaemon.Housekeeping;org.gnome.SettingsDaemon.Keyboard;org.gnome.SettingsDaemon.MediaKeys;org.gnome.SettingsDaemon.Power;org.gnome.SettingsDaemon.PrintNotifications;org.gnome.SettingsDaemon.Rfkill;org.gnome.SettingsDaemon.ScreensaverProxy;org.gnome.SettingsDaemon.Sharing;org.gnome.SettingsDaemon.Smartcard;org.gnome.SettingsDaemon.Sound;org.gnome.SettingsDaemon.Wacom;org.gnome.SettingsDaemon.XSettings;
|
||||||
|
|||||||
@@ -1,39 +1,38 @@
|
|||||||
// When color definition differs for dark and light variant,
|
// When color definition differs for dark and light variant,
|
||||||
// it gets @if ed depending on $variant
|
// it gets @if ed depending on $variant
|
||||||
|
|
||||||
|
$base_color: if($variant == 'light', #fff, lighten(desaturate(#241f31, 20%), 2%));
|
||||||
|
$bg_color: if($variant == 'light', #f6f5f4, darken(desaturate(#3d3846, 100%), 4%));
|
||||||
|
$fg_color: if($variant == 'light', #2e3436, #eeeeec);
|
||||||
|
|
||||||
$base_color: if($variant =='light', #ffffff, #292929);
|
$selected_fg_color: #fff;
|
||||||
$bg_color: if($variant =='light', #ededed, #393f3f);
|
$selected_bg_color: if($variant == 'light', #3584e4, darken(#3584e4, 10%));
|
||||||
$fg_color: if($variant =='light', #2e3436, #eeeeec);
|
$selected_borders_color: if($variant== 'light', darken($selected_bg_color, 15%), darken($selected_bg_color, 30%));
|
||||||
|
$borders_color: if($variant == 'light', darken($bg_color, 18%), darken($bg_color, 8%));
|
||||||
$selected_fg_color: #ffffff;
|
$borders_edge: if($variant == 'light', rgba(255,255,255,0.8), transparentize($fg_color, 0.93));
|
||||||
$selected_bg_color: if($variant == 'light', #4a90d9, darken(#4a90d9,20%));
|
$link_color: if($variant == 'light', darken($selected_bg_color, 10%), lighten($selected_bg_color, 20%));
|
||||||
$selected_borders_color: if($variant=='light', darken($selected_bg_color, 30%),
|
$link_visited_color: if($variant == 'light', darken($selected_bg_color, 20%), lighten($selected_bg_color, 10%));
|
||||||
darken($selected_bg_color, 20%));
|
|
||||||
$borders_color: if($variant =='light', darken($bg_color,30%), darken($bg_color,12%));
|
|
||||||
$borders_edge: if($variant =='light', white, transparentize($fg_color, 0.9));
|
|
||||||
$link_color: if($variant == 'light', darken($selected_bg_color,10%),
|
|
||||||
lighten($selected_bg_color,20%));
|
|
||||||
$link_visited_color: if($variant == 'light', darken($selected_bg_color,20%),
|
|
||||||
lighten($selected_bg_color,10%));
|
|
||||||
$top_hilight: $borders_edge;
|
$top_hilight: $borders_edge;
|
||||||
|
|
||||||
$warning_color: #f57900;
|
$warning_color: #f57900;
|
||||||
$error_color: #cc0000;
|
$error_color: #ff8080;
|
||||||
$success_color: if($variant =='light', #73d216, darken(#73d216,10%));
|
$success_color: if($variant == 'light', #33d17a, darken(#33d17a, 10%));
|
||||||
$destructive_color: if($variant =='light', #ef2929, darken(#ef2929,10%));
|
$destructive_color: if($variant == 'light', #e01b24, darken(#e01b24, 10%));
|
||||||
|
|
||||||
$osd_fg_color: #eeeeec;
|
$osd_fg_color: #eeeeec;
|
||||||
$osd_bg_color: #2e3436;
|
$osd_text_color: white;
|
||||||
|
$osd_bg_color: transparentize(darken(desaturate(#3d3846, 100%), 12%),0.04);
|
||||||
|
$osd_insensitive_bg_color: transparentize(mix($osd_fg_color, opacify($osd_bg_color, 1), 10%), 0.5);
|
||||||
|
$osd_insensitive_fg_color: mix($osd_fg_color, opacify($osd_bg_color, 1), 50%);
|
||||||
$osd_borders_color: transparentize(black, 0.3);
|
$osd_borders_color: transparentize(black, 0.3);
|
||||||
$osd_outer_borders_color: transparentize(white, 0.9);
|
$osd_outer_borders_color: transparentize(white, 0.84);
|
||||||
|
|
||||||
$tooltip_borders_color: $osd_outer_borders_color;
|
$shadow_color: if($variant == 'light', rgba(0,0,0,0.1), rgba(0,0,0,0.2));
|
||||||
|
|
||||||
//insensitive state derived colors
|
//insensitive state derived colors
|
||||||
$insensitive_fg_color: mix($fg_color, $bg_color, 50%);
|
$insensitive_fg_color: mix($fg_color, $bg_color, 50%);
|
||||||
$insensitive_bg_color: mix($bg_color, $base_color, 60%);
|
$insensitive_bg_color: mix($bg_color, $base_color, 60%);
|
||||||
$insensitive_borders_color: $borders_color;
|
$insensitive_borders_color: mix($borders_color, $base_color, 60%);
|
||||||
|
|
||||||
//colors for the backdrop state, derived from the main colors.
|
//colors for the backdrop state, derived from the main colors.
|
||||||
$backdrop_base_color: if($variant =='light', darken($base_color,1%), lighten($base_color,1%));
|
$backdrop_base_color: if($variant =='light', darken($base_color,1%), lighten($base_color,1%));
|
||||||
|
|||||||
+118
-1963
File diff suppressed because it is too large
Load Diff
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
// generic drawing of more complex things
|
// generic drawing of more complex things
|
||||||
|
|
||||||
@function _widget_edge($c:$borders_edge) {
|
@function draw_widget_edge($c:$borders_edge) {
|
||||||
// outer highlight "used" on most widgets
|
// outer highlight "used" on most widgets
|
||||||
@return 0 1px $c;
|
@return 0 1px $c;
|
||||||
}
|
}
|
||||||
@@ -13,7 +13,7 @@
|
|||||||
//font-size: ($size / $base) * 1rem;
|
//font-size: ($size / $base) * 1rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
@mixin _shadows($shadow1, $shadow2:none, $shadow3:none, $shadow4:none) {
|
@mixin draw_shadows($shadow1, $shadow2:none, $shadow3:none, $shadow4:none) {
|
||||||
//
|
//
|
||||||
// Helper function to stack up to 4 box-shadows;
|
// Helper function to stack up to 4 box-shadows;
|
||||||
//
|
//
|
||||||
@@ -31,25 +31,22 @@
|
|||||||
//
|
//
|
||||||
// $t: entry type
|
// $t: entry type
|
||||||
// $fc: focus color
|
// $fc: focus color
|
||||||
// $edge: set to none to not draw the bottom edge or specify a color to not
|
// $edge: set to none to not draw the bottom edge or specify a color to not use the default one
|
||||||
// use the default one
|
|
||||||
//
|
//
|
||||||
// possible $t values:
|
// possible $t values:
|
||||||
// normal, focus, insensitive
|
// normal, focus, insensitive
|
||||||
//
|
//
|
||||||
$_inner_shadows: inset 0 2px 4px transparentize(black, 0.6);
|
|
||||||
|
|
||||||
@if $t==normal {
|
@if $t==normal {
|
||||||
background-color: $base_color;
|
background-color: $base_color;
|
||||||
border-color: $borders_color;
|
border-color: $borders_color;
|
||||||
@include _shadows($_inner_shadows);
|
|
||||||
|
|
||||||
}
|
}
|
||||||
@if $t==focus {
|
@if $t==focus {
|
||||||
@include _shadows($_inner_shadows);
|
|
||||||
border-color: if($fc==$selected_bg_color,
|
border-color: if($fc==$selected_bg_color,
|
||||||
$selected_borders_color,
|
$selected_borders_color,
|
||||||
darken($fc,35%));
|
darken($fc,35%));
|
||||||
|
box-shadow: inset 0 0 0 1px $fc;
|
||||||
}
|
}
|
||||||
@if $t==hover { }
|
@if $t==hover { }
|
||||||
@if $t==insensitive {
|
@if $t==insensitive {
|
||||||
@@ -61,36 +58,39 @@
|
|||||||
|
|
||||||
// buttons
|
// buttons
|
||||||
|
|
||||||
@function _border_color ($c) { @return darken($c,25%); } // colored buttons want
|
@function draw_border_color ($c) {
|
||||||
// the border form the
|
//
|
||||||
// base color
|
// colored buttons want the border form the base color
|
||||||
|
//
|
||||||
|
@return if($variant == 'light', darken($c, 18%), darken($c, 4%));
|
||||||
|
}
|
||||||
|
|
||||||
@function _text_shadow_color ($tc:$fg_color, $bg:$bg_color) {
|
@function draw_text_shadow_color ($tc:$fg_color, $bg:$bg_color) {
|
||||||
//
|
//
|
||||||
// calculate the color of text shadows
|
// calculate the color of text shadows
|
||||||
//
|
//
|
||||||
// $tc is the text color
|
// $tc is the text color
|
||||||
// $bg is the background color
|
// $bg is the background color
|
||||||
//
|
//
|
||||||
$_lbg: lightness($bg)/100%;
|
$lbg: lightness($bg)/100%;
|
||||||
@if lightness($tc)<50% { @return transparentize(white,1-$_lbg/($_lbg*1.3)); }
|
@if lightness($tc)<50% { @return rgba(255,255,255,$lbg/($lbg*1.3)); }
|
||||||
@else { @return transparentize(black,$_lbg*0.8); }
|
@else { @return rgba(0,0,0,1-$lbg*0.8); }
|
||||||
}
|
}
|
||||||
|
|
||||||
@function _button_hilight_color($c) {
|
@function draw_button_hilight_color($c) {
|
||||||
//
|
//
|
||||||
// calculate the right top hilight color for buttons
|
// calculate the right top hilight color for buttons
|
||||||
//
|
//
|
||||||
// $c: base color;
|
// $c: base color;
|
||||||
//
|
//
|
||||||
@if lightness($c)>90% { @return white; }
|
@if lightness($c)>90% { @return white; }
|
||||||
@else if lightness($c)>80% { @return transparentize(white, 0.3); }
|
@else if lightness($c)>80% { @return rgba(255,255,255, 0.7); }
|
||||||
@else if lightness($c)>50% { @return transparentize(white, 0.5); }
|
@else if lightness($c)>50% { @return rgba(255,255,255, 0.5); }
|
||||||
@else if lightness($c)>40% { @return transparentize(white, 0.7); }
|
@else if lightness($c)>40% { @return rgba(255,255,255, 0.3); }
|
||||||
@else { @return transparentize(white, 0.9); }
|
@else { @return rgba(255,255,255, 0.1); }
|
||||||
}
|
}
|
||||||
|
|
||||||
@mixin _button_text_shadow ($tc:$fg_color, $bg:$bg_color) {
|
@mixin draw_button_text_shadow ($tc:$fg_color, $bg:$bg_color) {
|
||||||
//
|
//
|
||||||
// helper function for the text emboss effect
|
// helper function for the text emboss effect
|
||||||
//
|
//
|
||||||
@@ -99,19 +99,19 @@
|
|||||||
// TODO: this functions needs a way to deal with special cases
|
// TODO: this functions needs a way to deal with special cases
|
||||||
//
|
//
|
||||||
|
|
||||||
$_shadow: _text_shadow_color($tc, $bg);
|
$shadow: draw_text_shadow_color($tc, $bg);
|
||||||
|
|
||||||
@if lightness($tc)<50% {
|
@if lightness($tc)<50% {
|
||||||
text-shadow: 0 1px $_shadow;
|
text-shadow: 0 1px $shadow;
|
||||||
icon-shadow: 0 1px $_shadow;
|
icon-shadow: 0 1px $shadow;
|
||||||
}
|
}
|
||||||
@else {
|
@else {
|
||||||
text-shadow: 0 -1px $_shadow;
|
text-shadow: 0 -1px $shadow;
|
||||||
icon-shadow: 0 -1px $_shadow;
|
icon-shadow: 0 -1px $shadow;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@mixin button($t, $c:$osd_bg_color, $tc:$fg_color, $edge: $borders_edge) {
|
@mixin button($t, $c:$bg_color, $tc:$fg_color, $edge: $borders_edge, $shadow: $shadow_color) {
|
||||||
//
|
//
|
||||||
// Button drawing function
|
// Button drawing function
|
||||||
//
|
//
|
||||||
@@ -120,6 +120,8 @@
|
|||||||
// $tc: optional text color for colored* types
|
// $tc: optional text color for colored* types
|
||||||
// $edge: set to none to not draw the bottom edge or specify a color to not
|
// $edge: set to none to not draw the bottom edge or specify a color to not
|
||||||
// use the default one
|
// use the default one
|
||||||
|
// $shadow: set to none to not draw the drop shadow or specify a color to not
|
||||||
|
// use the default one
|
||||||
//
|
//
|
||||||
// possible $t values:
|
// possible $t values:
|
||||||
// normal, hover, active, insensitive, insensitive-active,
|
// normal, hover, active, insensitive, insensitive-active,
|
||||||
@@ -127,95 +129,103 @@
|
|||||||
// osd, osd-hover, osd-active, osd-insensitive, osd-backdrop, undecorated
|
// osd, osd-hover, osd-active, osd-insensitive, osd-backdrop, undecorated
|
||||||
//
|
//
|
||||||
|
|
||||||
$_hilight_color: _button_hilight_color($c);
|
$hilight_color: draw_button_hilight_color($c);
|
||||||
$_button_edge: if($edge == none, none, _widget_edge($edge));
|
$button_edge: if($edge == none, none, draw_widget_edge($edge));
|
||||||
$_blank_edge: if($edge == none, none, _widget_edge(transparentize($edge,1)));
|
$blank_edge: if($edge == none, none, draw_widget_edge(transparentize($edge,1)));
|
||||||
|
$button_shadow: if($shadow == none, none, 0 1px 1px 0 $shadow);
|
||||||
|
|
||||||
|
|
||||||
@if $t==normal {
|
|
||||||
//
|
|
||||||
// normal button
|
// normal button
|
||||||
//
|
@if $t==normal {
|
||||||
$_bg: if($c!=$osd_bg_color, transparentize($c, 0.5),
|
color: $tc;
|
||||||
$osd_bg_color);
|
background-color: lighten($c, 3%);
|
||||||
|
border-color: draw_border_color($c);
|
||||||
color: $osd_fg_color;
|
@include draw_shadows($button_shadow);
|
||||||
background-color: $_bg;
|
// box-shadow: 0 1px 1px 0 rgba(0,0,0,0.1);
|
||||||
border-color: $osd_borders_color;
|
text-shadow: 0 1px $text_shadow_color;
|
||||||
box-shadow: inset 0 1px lighten($osd_bg_color,10%);
|
icon-shadow: 0 1px $text_shadow_color;
|
||||||
text-shadow: 0 1px black;
|
|
||||||
icon-shadow: 0 1px black;
|
|
||||||
}
|
}
|
||||||
@if $t==focus {
|
|
||||||
//
|
|
||||||
// focused button
|
// focused button
|
||||||
//
|
@if $t==focus {
|
||||||
$_bg: if($c!=$osd_bg_color, transparentize($c, 0.5),
|
color: $tc;
|
||||||
$osd_bg_color);
|
text-shadow: 0 1px $text_shadow_color;
|
||||||
|
icon-shadow: 0 1px $text_shadow_color;
|
||||||
color: $osd_fg_color;
|
box-shadow: inset 0 0 0 2px transparentize($selected_bg_color, 0.4);
|
||||||
text-shadow: 0 1px black;
|
//border-color: $selected_bg_color;
|
||||||
icon-shadow: 0 1px black;
|
|
||||||
box-shadow: inset 0px 0px 0px 1px $selected_bg_color;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// hover button
|
||||||
@else if $t==hover {
|
@else if $t==hover {
|
||||||
//
|
color: $tc;
|
||||||
// active osd button
|
background-color: lighten($c, if($variant == 'light', 8%, 5%));
|
||||||
//
|
border-color: if($variant == 'light', draw_border_color(lighten($c, 7%)), draw_border_color($c));
|
||||||
$_bg: if($c!=$osd_bg_color, transparentize($c, 0.3),
|
@include draw_shadows($button_shadow);
|
||||||
lighten($osd_bg_color,10%));
|
text-shadow: 0 1px $text_shadow_color;
|
||||||
|
icon-shadow: 0 1px $text_shadow_color;
|
||||||
color: white;
|
|
||||||
border-color: $osd_borders_color;
|
|
||||||
background-color: $_bg;
|
|
||||||
box-shadow: inset 0 1px lighten($osd_bg_color,20%);
|
|
||||||
text-shadow: 0 1px black;
|
|
||||||
icon-shadow: 0 1px black;
|
|
||||||
|
|
||||||
}
|
}
|
||||||
@else if $t==active {
|
|
||||||
//
|
|
||||||
// active osd button
|
|
||||||
//
|
|
||||||
$_bg: if($c!=$bg_color, $c, $osd_borders_color);
|
|
||||||
|
|
||||||
color: white;
|
// active button
|
||||||
border-color: $osd_borders_color;
|
@else if $t==active {
|
||||||
background-color: darken($_bg,5%);
|
color: $tc;
|
||||||
// This should be none, but it's creating some issues with borders, so to
|
background-color: darken($c,3%);
|
||||||
// workaround it for now, use inset wich goes through a different code path.
|
border-color: draw_border_color(if($variant == 'light', $c, darken($c,7%)));
|
||||||
// see https://bugzilla.gnome.org/show_bug.cgi?id=752934
|
|
||||||
box-shadow: inset 0 0 black;
|
|
||||||
text-shadow: none;
|
text-shadow: none;
|
||||||
icon-shadow: none;
|
icon-shadow: none;
|
||||||
|
box-shadow: none;
|
||||||
}
|
}
|
||||||
@else if $t==insensitive {
|
|
||||||
//
|
|
||||||
// insensitive osd button
|
|
||||||
//
|
|
||||||
$_bg: transparentize(mix($insensitive_fg_color,$osd_bg_color,20%),0.3);
|
|
||||||
|
|
||||||
|
// insensitive button
|
||||||
|
@else if $t==insensitive {
|
||||||
color: $insensitive_fg_color;
|
color: $insensitive_fg_color;
|
||||||
border-color: $osd_borders_color;
|
border-color: $insensitive_borders_color;
|
||||||
background-color: $_bg;
|
background-color: $insensitive_bg_color;
|
||||||
box-shadow: none;
|
box-shadow: none;
|
||||||
text-shadow: none;
|
text-shadow: none;
|
||||||
icon-shadow: none;
|
icon-shadow: none;
|
||||||
}
|
}
|
||||||
@else if $t==undecorated {
|
|
||||||
//
|
|
||||||
// reset
|
// reset
|
||||||
//
|
@else if $t==undecorated {
|
||||||
border-color: transparent;
|
border-color: transparent;
|
||||||
background-color: transparent;
|
background-color: transparent;
|
||||||
background-image: none;
|
background-image: none;
|
||||||
|
@include draw_shadows(inset 0 1px rgba(255,255,255,0),$blank_edge);
|
||||||
@include _shadows(inset 0 1px transparentize(white,1),
|
|
||||||
$_blank_edge);
|
|
||||||
|
|
||||||
text-shadow: none;
|
text-shadow: none;
|
||||||
icon-shadow: none;
|
icon-shadow: none;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// overview icons
|
||||||
|
@mixin overview-icon($color) {
|
||||||
|
.overview-icon {
|
||||||
|
@extend %icon_tile;
|
||||||
|
color: $color;
|
||||||
|
}
|
||||||
|
|
||||||
|
&:hover,
|
||||||
|
&:selected {
|
||||||
|
.overview-icon {
|
||||||
|
background-color: transparentize($color, .9);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&:focus {
|
||||||
|
.overview-icon {
|
||||||
|
background-color: transparentize($color, .7);
|
||||||
|
// border-color: $selected_bg_color;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&:drop {
|
||||||
|
.overview-icon {
|
||||||
|
background-color: transparentize($selected_bg_color, .15);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&:active,
|
||||||
|
&:checked {
|
||||||
|
.overview-icon {
|
||||||
|
background-color: transparentize(darken($osd_bg_color, 10%), .5);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -22,10 +22,10 @@ $destructive_color: darken(#ef2929,10%);
|
|||||||
|
|
||||||
$osd_fg_color: #eeeeec;
|
$osd_fg_color: #eeeeec;
|
||||||
$osd_bg_color: #2e3436;
|
$osd_bg_color: #2e3436;
|
||||||
$osd_borders_color: transparentize(black, 0.3);
|
$osd_borders_color: rgba(0,0,0, 0.7);
|
||||||
$osd_outer_borders_color: transparentize(white, 0.9);
|
$osd_outer_borders_color: rgba(255,255,255, 0.1);
|
||||||
|
|
||||||
$tooltip_borders_color: $osd_outer_borders_color;
|
$shadow_color: rgba(0,0,0, 0.1);
|
||||||
|
|
||||||
//insensitive state derived colors
|
//insensitive state derived colors
|
||||||
$insensitive_fg_color: mix($fg_color, $bg_color, 50%);
|
$insensitive_fg_color: mix($fg_color, $bg_color, 50%);
|
||||||
|
|||||||
@@ -0,0 +1,51 @@
|
|||||||
|
//
|
||||||
|
// Shell widgets stylesheets are placed in separate .scss files
|
||||||
|
// in 'widgets' and imported into the main stylesheet in this file.
|
||||||
|
// To create or update a widget for the shell modify the list below.
|
||||||
|
//
|
||||||
|
|
||||||
|
/* WIDGETS */
|
||||||
|
|
||||||
|
// Primary widgets
|
||||||
|
@import 'widgets/base';
|
||||||
|
@import 'widgets/entries';
|
||||||
|
@import 'widgets/buttons';
|
||||||
|
@import 'widgets/check-box';
|
||||||
|
@import 'widgets/switches';
|
||||||
|
@import 'widgets/slider';
|
||||||
|
@import 'widgets/scrollbars';
|
||||||
|
// Popovers
|
||||||
|
@import 'widgets/popovers';
|
||||||
|
@import 'widgets/calendar';
|
||||||
|
@import 'widgets/message-list';
|
||||||
|
@import 'widgets/ibus-popup';
|
||||||
|
// Notifications
|
||||||
|
@import 'widgets/notifications';
|
||||||
|
@import 'widgets/hotplug';
|
||||||
|
// Dialogs
|
||||||
|
@import 'widgets/dialogs';
|
||||||
|
@import 'widgets/network-dialog';
|
||||||
|
// OSDs
|
||||||
|
@import 'widgets/osd';
|
||||||
|
@import 'widgets/switcher-popup';
|
||||||
|
@import 'widgets/workspace-switcher';
|
||||||
|
// Panel
|
||||||
|
@import 'widgets/panel';
|
||||||
|
@import 'widgets/corner-ripple';
|
||||||
|
// Overview
|
||||||
|
@import 'widgets/overview';
|
||||||
|
@import 'widgets/window-picker';
|
||||||
|
@import 'widgets/search-entry';
|
||||||
|
@import 'widgets/search-results';
|
||||||
|
@import 'widgets/app-grid';
|
||||||
|
@import 'widgets/dash';
|
||||||
|
@import 'widgets/workspace-thumbnails';
|
||||||
|
// A11y / misc
|
||||||
|
@import 'widgets/a11y';
|
||||||
|
@import 'widgets/misc';
|
||||||
|
@import 'widgets/tiled-previews';
|
||||||
|
@import 'widgets/keyboard';
|
||||||
|
@import 'widgets/looking-glass';
|
||||||
|
// Lock / login screens
|
||||||
|
@import 'widgets/login-dialog';
|
||||||
|
@import 'widgets/screen-shield';
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
// Pointer location
|
||||||
|
.ripple-pointer-location {
|
||||||
|
width: $ripple_size;
|
||||||
|
height: $ripple_size;
|
||||||
|
border-radius: $ripple_size * 0.5; // radius equals the size of the box to give us the curve
|
||||||
|
background-color: lighten(transparentize($selected_bg_color, 0.7), 30%);
|
||||||
|
box-shadow: 0 0 2px 2px lighten($selected_bg_color, 20%);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Pointer accessibility notifications
|
||||||
|
.pie-timer {
|
||||||
|
width: 60px;
|
||||||
|
height: 60px;
|
||||||
|
-pie-border-width: 3px;
|
||||||
|
-pie-border-color: $selected_bg_color;
|
||||||
|
-pie-background-color: lighten(transparentize($selected_bg_color, 0.7), 40%);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Screen zoom/Magnifier
|
||||||
|
.magnifier-zoom-region {
|
||||||
|
border: 2px solid $selected_bg_color;
|
||||||
|
|
||||||
|
&.full-screen { border-width: 0; }
|
||||||
|
}
|
||||||
@@ -0,0 +1,182 @@
|
|||||||
|
/* App Grid */
|
||||||
|
|
||||||
|
$app_icon_size: 96px;
|
||||||
|
$app_icon_padding: 24px;
|
||||||
|
|
||||||
|
// app icons
|
||||||
|
.icon-grid {
|
||||||
|
-shell-grid-horizontal-item-size: $app_icon_size + $app_icon_padding * 2;
|
||||||
|
-shell-grid-vertical-item-size: $app_icon_size + $app_icon_padding * 2;
|
||||||
|
spacing: $base_spacing * 6;
|
||||||
|
|
||||||
|
.overview-icon {
|
||||||
|
icon-size: $app_icon_size;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//.app-display { spacing: 20px; }
|
||||||
|
|
||||||
|
/* App Icons */
|
||||||
|
|
||||||
|
$app_grid_fg_color: #fff;
|
||||||
|
|
||||||
|
// Icon tiles in the app grid
|
||||||
|
.app-well-app,
|
||||||
|
%app-well-app {
|
||||||
|
@include overview-icon($app_grid_fg_color);
|
||||||
|
|
||||||
|
.overview-icon.overview-icon-with-label {
|
||||||
|
padding: 10px 8px 5px 8px;
|
||||||
|
|
||||||
|
> StBoxLayout {
|
||||||
|
spacing: $base_spacing;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* App Folders */
|
||||||
|
.app-well-app.app-folder {
|
||||||
|
background-color: transparentize($osd_bg_color, 0.8);
|
||||||
|
border-radius: $base_border_radius + 4px; // same as %icon_tile
|
||||||
|
}
|
||||||
|
|
||||||
|
// expanded folder
|
||||||
|
.app-folder-dialog {
|
||||||
|
border-radius: $modal_radius * 1.5;
|
||||||
|
border: 1px solid $osd_outer_borders_color;
|
||||||
|
spacing: 12px;
|
||||||
|
background-color: transparentize(darken($osd_bg_color,10%), 0.05);
|
||||||
|
|
||||||
|
& .folder-name-container {
|
||||||
|
padding: 24px 36px 0;
|
||||||
|
spacing: 12px;
|
||||||
|
|
||||||
|
& .folder-name-label,
|
||||||
|
& .folder-name-entry {
|
||||||
|
font-size: 18pt;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
& .folder-name-entry { width: 300px }
|
||||||
|
|
||||||
|
/* FIXME: this is to keep the label in sync with the entry */
|
||||||
|
& .folder-name-label { padding: 5px 7px; color: $osd_fg_color; }
|
||||||
|
|
||||||
|
& .edit-folder-button {
|
||||||
|
@extend %button;
|
||||||
|
|
||||||
|
padding: 0;
|
||||||
|
width: 36px;
|
||||||
|
height: 36px;
|
||||||
|
border-radius: 18px;
|
||||||
|
|
||||||
|
& > StIcon { icon-size: 16px }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.app-folder-dialog-container {
|
||||||
|
padding: 12px;
|
||||||
|
width: 800px;
|
||||||
|
height: 600px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.app-folder-icon {
|
||||||
|
padding: $base_padding;
|
||||||
|
spacing-rows: $base_spacing;
|
||||||
|
spacing-columns: $base_spacing;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Running app indicator (also shown in dash)
|
||||||
|
.app-well-app-running-dot {
|
||||||
|
height: 5px;
|
||||||
|
width: 5px;
|
||||||
|
border-radius:5px;
|
||||||
|
background-color: $osd_fg_color;
|
||||||
|
margin-bottom: 1px;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Rename popup for app folders
|
||||||
|
.rename-folder-popup {
|
||||||
|
.rename-folder-popup-item {
|
||||||
|
spacing: $base_spacing;
|
||||||
|
&:ltr, &:rtl { padding: 0 $base_padding * 2; }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// right-click app menu
|
||||||
|
.app-menu,
|
||||||
|
.app-well-menu {
|
||||||
|
max-width: 27.25em;
|
||||||
|
}
|
||||||
|
|
||||||
|
// App Grid pagination indicators
|
||||||
|
.page-indicator {
|
||||||
|
padding: 15px 20px;
|
||||||
|
|
||||||
|
.page-indicator-icon {
|
||||||
|
width: 10px;
|
||||||
|
height: 10px;
|
||||||
|
border-radius: 10px; // the same as height&width
|
||||||
|
background-color: white;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Some hacks I don't even know
|
||||||
|
.all-apps,
|
||||||
|
.frequent-apps > StBoxLayout {
|
||||||
|
// horizontal padding to make sure scrollbars or dash don't overlap content
|
||||||
|
padding: 0px 88px 10px 88px;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Label when no frequent apps
|
||||||
|
.no-frequent-applications-label { @extend %status_text; }
|
||||||
|
|
||||||
|
// shutdown and other actions in the grid
|
||||||
|
.system-action-icon {
|
||||||
|
background-color: rgba(0,0,0,0.8);
|
||||||
|
color: #fff;
|
||||||
|
border-radius: 99px;
|
||||||
|
icon-size: $app_icon_size * 0.5;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Frequent | All toggle */
|
||||||
|
|
||||||
|
// container
|
||||||
|
.app-view-controls {
|
||||||
|
padding-bottom: 32px;
|
||||||
|
}
|
||||||
|
|
||||||
|
// buttons
|
||||||
|
.app-view-control {
|
||||||
|
padding: 4px 32px;
|
||||||
|
margin: 0 4px;
|
||||||
|
|
||||||
|
&, &:hover, &:checked {
|
||||||
|
@include button(undecorated);
|
||||||
|
color: darken($osd_fg_color, 25%);
|
||||||
|
}
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
color: $osd_fg_color;
|
||||||
|
box-shadow: inset 0 -2px darken($osd_fg_color, 25%);
|
||||||
|
}
|
||||||
|
|
||||||
|
&:active {
|
||||||
|
box-shadow: inset 0 -2px $osd_fg_color;
|
||||||
|
}
|
||||||
|
|
||||||
|
&:checked {
|
||||||
|
color: $osd_fg_color;
|
||||||
|
box-shadow: inset 0 -2px $selected_bg_color;
|
||||||
|
}
|
||||||
|
|
||||||
|
&:first-child {
|
||||||
|
border-right-width: 0;
|
||||||
|
border-radius: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
&:last-child {
|
||||||
|
border-radius: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
// Links
|
||||||
|
.shell-link {
|
||||||
|
color: $link_color;
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
color: lighten($link_color, 10%);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Outline for low res icons
|
||||||
|
.lowres-icon {
|
||||||
|
icon-shadow: 0 1px 2px rgba(black, 0.3);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Dropshadow for large icons
|
||||||
|
.icon-dropshadow {
|
||||||
|
icon-shadow: 0 1px 2px rgba(black, 0.4);
|
||||||
|
}
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
/* Buttons */
|
||||||
|
|
||||||
|
.button {
|
||||||
|
@extend %button; // that's it
|
||||||
|
}
|
||||||
@@ -0,0 +1,264 @@
|
|||||||
|
/* Date/Time Menu */
|
||||||
|
|
||||||
|
.clock-display-box {
|
||||||
|
spacing: $base_spacing / 2;
|
||||||
|
|
||||||
|
.clock {
|
||||||
|
padding-left: $base_padding;
|
||||||
|
padding-right: $base_padding;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// overall menu
|
||||||
|
#calendarArea {
|
||||||
|
padding:0;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Calendar menu side column
|
||||||
|
.datemenu-calendar-column {
|
||||||
|
spacing: $base_spacing;
|
||||||
|
border: 0 solid $bubble_borders_color;
|
||||||
|
padding: 0 $base_padding * 2;
|
||||||
|
|
||||||
|
&:ltr {margin-right: $base_margin * 2; border-left-width: 1px; }
|
||||||
|
&:rtl {margin-left: $base_margin * 2; border-right-width: 1px; }
|
||||||
|
|
||||||
|
.datemenu-displays-section {
|
||||||
|
}
|
||||||
|
|
||||||
|
.datemenu-displays-box {
|
||||||
|
spacing: $base_spacing;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.events-section-title {
|
||||||
|
@include notification_bubble($flat: true);
|
||||||
|
color: desaturate(darken($fg_color,40%), 10%);
|
||||||
|
font-weight: bold;
|
||||||
|
padding: .4em;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* today button (the date) */
|
||||||
|
.datemenu-today-button {
|
||||||
|
@include notification_bubble($flat: true);
|
||||||
|
padding: $base_padding * 1.5;
|
||||||
|
|
||||||
|
// weekday label
|
||||||
|
.day-label {
|
||||||
|
@include fontsize($base_font_size+1);
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
// date label
|
||||||
|
.date-label {
|
||||||
|
@include fontsize($base_font_size+7);
|
||||||
|
font-weight: 1000;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Calendar */
|
||||||
|
.calendar {
|
||||||
|
@include notification_bubble;
|
||||||
|
padding: $base_padding;
|
||||||
|
|
||||||
|
// month
|
||||||
|
.calendar-month-label {
|
||||||
|
color: lighten($fg_color,5%);
|
||||||
|
font-weight: bold;
|
||||||
|
padding: 8px 0;
|
||||||
|
&:focus {}
|
||||||
|
}
|
||||||
|
|
||||||
|
// prev/next month icons
|
||||||
|
.calendar-change-month-back StIcon,
|
||||||
|
.calendar-change-month-forward StIcon {
|
||||||
|
icon-size: $base_icon_size;
|
||||||
|
}
|
||||||
|
|
||||||
|
.pager-button {
|
||||||
|
background-color: transparent;
|
||||||
|
height: 32px;
|
||||||
|
width: 32px;
|
||||||
|
border-radius: $base_border_radius;
|
||||||
|
&:hover, &:focus { background-color: lighten($hover_bg_color, 5%); }
|
||||||
|
&:active { background-color: $active_bg_color; }
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
$calendar_day_size: 32px;
|
||||||
|
|
||||||
|
.calendar-day-base {
|
||||||
|
@include fontsize($base_font_size - 3);
|
||||||
|
text-align: center;
|
||||||
|
width: $calendar_day_size;
|
||||||
|
height: $calendar_day_size;
|
||||||
|
padding: 0;
|
||||||
|
margin: 2px;
|
||||||
|
border-radius: $calendar_day_size * 0.5 + 2px;
|
||||||
|
border: 1px solid transparent; //avoid jumparound due to today
|
||||||
|
font-feature-settings: "tnum";
|
||||||
|
&:hover, &:focus { background-color: $hover_bg_color; }
|
||||||
|
&:active,&:selected {
|
||||||
|
color: lighten($fg_color,10%);
|
||||||
|
background-color: darken($bg_color,5%);
|
||||||
|
}
|
||||||
|
|
||||||
|
// day of week heading
|
||||||
|
&.calendar-day-heading {
|
||||||
|
color: lighten($fg_color,10%);
|
||||||
|
margin-top: 1em;
|
||||||
|
@include fontsize($base_font_size - 4);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.calendar-day { //border collapse hack - see calendar.js
|
||||||
|
border-width: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.calendar-day-top {
|
||||||
|
border-top-width: 1px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.calendar-day-left {
|
||||||
|
border-left-width: 1px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.calendar-work-day {}
|
||||||
|
|
||||||
|
.calendar-nonwork-day {
|
||||||
|
color: $insensitive_fg_color;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Today
|
||||||
|
.calendar-today {
|
||||||
|
font-weight: bold;
|
||||||
|
border: 1px solid transparent;
|
||||||
|
background-color: $selected_bg_color;
|
||||||
|
color: $selected_fg_color;
|
||||||
|
|
||||||
|
&:hover,&:focus {
|
||||||
|
background-color:lighten($selected_bg_color, 3%);
|
||||||
|
color: $selected_fg_color;
|
||||||
|
}
|
||||||
|
|
||||||
|
&:active,&:selected {
|
||||||
|
background-color: $selected_bg_color;
|
||||||
|
color: $selected_fg_color;
|
||||||
|
|
||||||
|
&:hover,&:focus {
|
||||||
|
background-color:lighten($selected_bg_color, 3%);
|
||||||
|
color: $selected_fg_color;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.calendar-day-with-events {
|
||||||
|
background-image: url("resource:///org/gnome/shell/theme/calendar-today.svg");
|
||||||
|
&.calendar-work-day {
|
||||||
|
color: lighten($fg_color,10%);
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.calendar-other-month-day {
|
||||||
|
color: transparentize($fg_color ,0.5);
|
||||||
|
}
|
||||||
|
|
||||||
|
.calendar-week-number {
|
||||||
|
@include fontsize($base_font_size - 4);
|
||||||
|
font-weight: bold;
|
||||||
|
height: 1.8em;
|
||||||
|
width: 2.3em;
|
||||||
|
border-radius: 2px;
|
||||||
|
padding: 0.5em 0 0;
|
||||||
|
margin: 6px;
|
||||||
|
background-color: darken($bg_color, 2%);
|
||||||
|
color: lighten($fg_color, 5%);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* World clocks */
|
||||||
|
.world-clocks-button {
|
||||||
|
@include notification_bubble;
|
||||||
|
padding: $base_padding * 2;
|
||||||
|
|
||||||
|
.world-clocks-grid {
|
||||||
|
spacing-rows: $base_spacing;
|
||||||
|
spacing-columns: $base_spacing * 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
// title
|
||||||
|
.world-clocks-header {
|
||||||
|
color: desaturate(darken($fg_color,40%), 10%);
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
// city label
|
||||||
|
.world-clocks-city {
|
||||||
|
color: $fg_color;
|
||||||
|
@include fontsize($base_font_size);
|
||||||
|
font-weight: normal;
|
||||||
|
}
|
||||||
|
|
||||||
|
// timezone time
|
||||||
|
.world-clocks-time {
|
||||||
|
font-weight: bold;
|
||||||
|
color: $fg_color;
|
||||||
|
font-feature-settings: "lnum";
|
||||||
|
@include fontsize($base_font_size);
|
||||||
|
text-align: right;
|
||||||
|
}
|
||||||
|
|
||||||
|
// timezone offset label
|
||||||
|
.world-clocks-timezone {
|
||||||
|
color: darken($fg_color,20%);
|
||||||
|
font-feature-settings: "tnum";
|
||||||
|
@include fontsize($base_font_size - 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Weather */
|
||||||
|
.weather-button {
|
||||||
|
@include notification_bubble;
|
||||||
|
padding: $base_padding * 2;
|
||||||
|
|
||||||
|
.weather-box {
|
||||||
|
spacing: $base_spacing + $base_margin;
|
||||||
|
}
|
||||||
|
|
||||||
|
.weather-header-box {
|
||||||
|
spacing: $base_spacing;
|
||||||
|
}
|
||||||
|
|
||||||
|
.weather-header {
|
||||||
|
color: desaturate(darken($fg_color,40%), 10%);
|
||||||
|
font-weight: bold;
|
||||||
|
|
||||||
|
&.location {
|
||||||
|
font-weight: normal;
|
||||||
|
@include fontsize($base_font_size - 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.weather-grid {
|
||||||
|
spacing-rows: $base_spacing;
|
||||||
|
spacing-columns: $base_spacing * 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
.weather-forecast-time {
|
||||||
|
color: darken($fg_color,30%);
|
||||||
|
font-feature-settings: "tnum";
|
||||||
|
@include fontsize($base_font_size - 2);
|
||||||
|
font-weight: normal;
|
||||||
|
padding-top: 0.2em;
|
||||||
|
padding-bottom: 0.4em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.weather-forecast-icon {
|
||||||
|
icon-size: $base_icon_size * 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
.weather-forecast-temp {
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
/* Check Boxes */
|
||||||
|
|
||||||
|
// these are equal to the size of the SVG assets
|
||||||
|
$check_height: 22px;
|
||||||
|
$check_width: 24px;
|
||||||
|
|
||||||
|
|
||||||
|
.check-box {
|
||||||
|
StBoxLayout { spacing: .8em; }
|
||||||
|
StBin {
|
||||||
|
width: $check_width;
|
||||||
|
height: $check_height;
|
||||||
|
background-image: url("resource:///org/gnome/shell/theme/checkbox-off.svg");
|
||||||
|
}
|
||||||
|
&:focus StBin { background-image: url("resource:///org/gnome/shell/theme/checkbox-off-focused.svg"); }
|
||||||
|
&:checked StBin { background-image: url("resource:///org/gnome/shell/theme/checkbox.svg"); }
|
||||||
|
&:focus:checked StBin { background-image: url("resource:///org/gnome/shell/theme/checkbox-focused.svg"); }
|
||||||
|
}
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
/* Activities Ripple */
|
||||||
|
|
||||||
|
$ripple_size: 50px;
|
||||||
|
|
||||||
|
.ripple-box {
|
||||||
|
background-color: lighten(transparentize($selected_bg_color, 0.7), 40%);
|
||||||
|
box-shadow: 0 0 2px 2px lighten($selected_bg_color, 20%);
|
||||||
|
// plus + 2px for the border (box-shadow)
|
||||||
|
width: $ripple_size + 2px;
|
||||||
|
height: $ripple_size + 2px;
|
||||||
|
border-radius: 0 0 $ripple_size + 2px 0; // radius equals the size of the box to give us the curve
|
||||||
|
|
||||||
|
// just a simple change to the border radius position
|
||||||
|
&:rtl { border-radius: 0 0 0 $ripple_size + 2px; }
|
||||||
|
}
|
||||||
@@ -0,0 +1,61 @@
|
|||||||
|
/* Dash */
|
||||||
|
|
||||||
|
$dash_placeholder_size: 32px;
|
||||||
|
$dash_spacing: $base_padding + 4px;
|
||||||
|
$dash_border_radius: $modal_radius * 1.5;
|
||||||
|
|
||||||
|
#dash {
|
||||||
|
@extend %overview_panel;
|
||||||
|
@include fontsize($base_font_size - 2);
|
||||||
|
padding: ($dash_spacing / 2) 0;
|
||||||
|
|
||||||
|
border-radius: 0 $dash_border_radius $dash_border_radius 0;
|
||||||
|
border-left-width: 0;
|
||||||
|
&:rtl {
|
||||||
|
border-radius: $dash_border_radius 0 0 $dash_border_radius;
|
||||||
|
border-right-width: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.placeholder {
|
||||||
|
// background-image: url("resource:///org/gnome/shell/theme/dash-placeholder.svg");
|
||||||
|
background-image:none;
|
||||||
|
background-size: contain;
|
||||||
|
height: $dash_placeholder_size;
|
||||||
|
}
|
||||||
|
|
||||||
|
.empty-dash-drop-target {
|
||||||
|
width: $dash_placeholder_size;
|
||||||
|
height: $dash_placeholder_size;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Dash Items
|
||||||
|
.dash-item-container > StWidget {
|
||||||
|
padding: ($dash_spacing / 2) $dash_spacing;
|
||||||
|
}
|
||||||
|
|
||||||
|
// OSD Tooltip
|
||||||
|
.dash-label {
|
||||||
|
background-color: transparentize($osd_bg_color,0.05);
|
||||||
|
border-radius: $base_border_radius + 2px;
|
||||||
|
border:none;
|
||||||
|
box-shadow:0 0 0 1px $osd_outer_borders_color;
|
||||||
|
color: $osd_fg_color;
|
||||||
|
padding: $base_padding $base_padding + 2px;
|
||||||
|
text-align: center;
|
||||||
|
-x-offset: $base_margin * 2; // distance from the dash edge
|
||||||
|
}
|
||||||
|
|
||||||
|
// Show apps button
|
||||||
|
.show-apps {
|
||||||
|
@include overview-icon($osd_fg_color);
|
||||||
|
|
||||||
|
&:focus,
|
||||||
|
&:checked {
|
||||||
|
.overview-icon {
|
||||||
|
background-color: darken($osd_bg_color,10%);
|
||||||
|
color: $fg_color;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@@ -0,0 +1,168 @@
|
|||||||
|
/* Modal Dialogs */
|
||||||
|
|
||||||
|
.headline {
|
||||||
|
@include fontsize($base_font_size + 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
.modal-dialog {
|
||||||
|
border-radius: $modal_radius;
|
||||||
|
@extend %bubble_panel;
|
||||||
|
|
||||||
|
.modal-dialog-content-box {
|
||||||
|
margin: 32px 40px;
|
||||||
|
spacing: 32px;
|
||||||
|
max-width: 28em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.modal-dialog-linked-button {
|
||||||
|
@extend %bubble_button;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* End Session Dialog */
|
||||||
|
.end-session-dialog {
|
||||||
|
width: 30em;
|
||||||
|
|
||||||
|
.end-session-dialog-battery-warning,
|
||||||
|
.dialog-list-title {
|
||||||
|
color: $warning_color;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Message Dialog */
|
||||||
|
.message-dialog-content {
|
||||||
|
spacing: 18px;
|
||||||
|
|
||||||
|
.message-dialog-title {
|
||||||
|
text-align: center;
|
||||||
|
font-size: 18pt;
|
||||||
|
font-weight: 800;
|
||||||
|
|
||||||
|
&.leightweight {
|
||||||
|
font-size: 13pt;
|
||||||
|
font-weight: 800;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.message-dialog-description { text-align: center; }
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Dialog List */
|
||||||
|
.dialog-list {
|
||||||
|
spacing: 18px;
|
||||||
|
|
||||||
|
.dialog-list-title {
|
||||||
|
text-align: center;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dialog-list-scrollview { max-height: 200px; }
|
||||||
|
.dialog-list-box {
|
||||||
|
spacing: 1em;
|
||||||
|
|
||||||
|
.dialog-list-item {
|
||||||
|
spacing: 1em;
|
||||||
|
|
||||||
|
.dialog-list-item-title { font-weight: bold; }
|
||||||
|
.dialog-list-item-description {
|
||||||
|
color: darken($fg_color,5%);
|
||||||
|
@include fontsize($base_font_size - 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Run Dialog */
|
||||||
|
.run-dialog {
|
||||||
|
.modal-dialog-content-box {
|
||||||
|
margin-top: 24px;
|
||||||
|
margin-bottom: 14px;
|
||||||
|
}
|
||||||
|
.run-dialog-entry { width: 20em; }
|
||||||
|
.run-dialog-description {
|
||||||
|
@include fontsize($base_font_size - 1);
|
||||||
|
text-align: center;
|
||||||
|
color: darken($fg_color, 20%);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Password or Authentication Dialog */
|
||||||
|
|
||||||
|
.prompt-dialog {
|
||||||
|
width: 28em;
|
||||||
|
|
||||||
|
.modal-dialog-content-box {
|
||||||
|
margin-bottom: 24px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.prompt-dialog-password-grid {
|
||||||
|
spacing-rows: 8px;
|
||||||
|
spacing-columns: 4px;
|
||||||
|
|
||||||
|
.prompt-dialog-password-entry {
|
||||||
|
width: auto;
|
||||||
|
|
||||||
|
// 4px (spacing) + 16px (spinner-width)
|
||||||
|
&:ltr { margin-left: 20px; }
|
||||||
|
&:rtl { margin-right: 20px; }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.prompt-dialog-password-layout {
|
||||||
|
spacing: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.prompt-dialog-password-entry {
|
||||||
|
width: 20em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.prompt-dialog-error-label,
|
||||||
|
.prompt-dialog-info-label,
|
||||||
|
.prompt-dialog-null-label {
|
||||||
|
text-align: center;
|
||||||
|
@include fontsize($base_font_size - 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
.prompt-dialog-error-label {
|
||||||
|
color: $warning_color;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* Polkit Dialog */
|
||||||
|
|
||||||
|
.polkit-dialog-user-layout {
|
||||||
|
text-align: center;
|
||||||
|
spacing: 8px;
|
||||||
|
margin-bottom: 6px;
|
||||||
|
|
||||||
|
.polkit-dialog-user-icon {
|
||||||
|
border-radius: 99px;
|
||||||
|
background-size: contain;
|
||||||
|
}
|
||||||
|
.polkit-dialog-user-root-label { color: $warning_color; }
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Audio selection dialog */
|
||||||
|
.audio-device-selection-dialog {
|
||||||
|
.modal-dialog-content-box { margin-bottom: 28px; }
|
||||||
|
.audio-selection-box { spacing: 20px; }
|
||||||
|
}
|
||||||
|
|
||||||
|
.audio-selection-device {
|
||||||
|
border: 1px solid $bubble_borders_color;
|
||||||
|
border-radius: 12px;
|
||||||
|
&:hover,&:focus { background-color: $hover_bg_color; }
|
||||||
|
&:active {
|
||||||
|
background-color: $selected_bg_color;
|
||||||
|
color: $selected_fg_color;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.audio-selection-device-box {
|
||||||
|
padding: 20px;
|
||||||
|
spacing: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.audio-selection-device-icon {
|
||||||
|
icon-size: $base_icon_size * 4;
|
||||||
|
}
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
/* Entries */
|
||||||
|
|
||||||
|
StEntry {
|
||||||
|
border-radius: $base_border_radius;
|
||||||
|
padding: 8px;
|
||||||
|
border-width: 1px;
|
||||||
|
color: $fg_color;
|
||||||
|
@include entry(normal);
|
||||||
|
//&:hover { @include entry(hover);}
|
||||||
|
&:focus { @include entry(focus);}
|
||||||
|
&:insensitive { @include entry(insensitive);}
|
||||||
|
selection-background-color: $selected_bg_color;
|
||||||
|
selected-color: $selected_fg_color;
|
||||||
|
StIcon.capslock-warning {
|
||||||
|
icon-size: 16px;
|
||||||
|
warning-color: $warning_color;
|
||||||
|
padding: 0 4px;
|
||||||
|
}
|
||||||
|
StIcon.peek-password {
|
||||||
|
icon-size: $base_icon_size;
|
||||||
|
padding: 0 4px;
|
||||||
|
}
|
||||||
|
StLabel.hint-text {
|
||||||
|
margin-left: 2px;
|
||||||
|
color: transparentize($fg_color, 0.3);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
// hotplug
|
||||||
|
|
||||||
|
.hotplug-notification-item {
|
||||||
|
@extend %bubble_button;
|
||||||
|
}
|
||||||
|
|
||||||
|
.hotplug-notification-item-icon {
|
||||||
|
icon-size: 24px;
|
||||||
|
padding: 0 4px;
|
||||||
|
}
|
||||||
@@ -0,0 +1,35 @@
|
|||||||
|
// IBus Candidate Popup
|
||||||
|
|
||||||
|
.candidate-popup-boxpointer {
|
||||||
|
@extend .popup-menu-boxpointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
.candidate-popup-content {
|
||||||
|
padding: 0.5em;
|
||||||
|
spacing: 0.3em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.candidate-index {
|
||||||
|
padding: 0 0.5em 0 0;
|
||||||
|
color: darken($fg_color,10%);
|
||||||
|
}
|
||||||
|
|
||||||
|
.candidate-box {
|
||||||
|
padding: 0.3em 0.5em 0.3em 0.5em;
|
||||||
|
border-radius: $base_border_radius;
|
||||||
|
&:selected,&:hover { background-color: $selected_bg_color; color: $selected_fg_color; }
|
||||||
|
}
|
||||||
|
|
||||||
|
.candidate-page-button-box {
|
||||||
|
height: 2em;
|
||||||
|
.vertical & { padding-top: 0.5em; }
|
||||||
|
.horizontal & { padding-left: 0.5em; }
|
||||||
|
}
|
||||||
|
|
||||||
|
.candidate-page-button {
|
||||||
|
padding: 4px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.candidate-page-button-previous { border-radius: $base_border_radius 0px 0px $base_border_radius; border-right-width: 0; }
|
||||||
|
.candidate-page-button-next { border-radius: 0px $base_border_radius $base_border_radius 0px; }
|
||||||
|
.candidate-page-button-icon { icon-size: 1em; }
|
||||||
@@ -0,0 +1,115 @@
|
|||||||
|
/* On-screen Keyboard */
|
||||||
|
|
||||||
|
$key_size: 1.2em;
|
||||||
|
$key_border_radius: $base_border_radius + 3px;
|
||||||
|
$key_bg_color: $bg_color;
|
||||||
|
// $default_key_bg_color: darken($key_bg_color, 4%);
|
||||||
|
$default_key_bg_color: if($variant=='light', darken($osd_bg_color, 11%), lighten($osd_bg_color, 2%));
|
||||||
|
|
||||||
|
|
||||||
|
// draw keys using button function
|
||||||
|
#keyboard {
|
||||||
|
background-color: transparentize(if($variant=='light', darken($bg_color, 5%), darken($bg_color, 8%)), 0.1);
|
||||||
|
box-shadow: inset 0 1px 0 0 $osd_outer_borders_color;
|
||||||
|
|
||||||
|
.page-indicator {
|
||||||
|
padding: $base_padding;
|
||||||
|
|
||||||
|
.page-indicator-icon {
|
||||||
|
width: 8px;
|
||||||
|
height: 8px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// the container for individual keys
|
||||||
|
.key-container {
|
||||||
|
padding: $base_margin;
|
||||||
|
spacing: $base_margin;
|
||||||
|
}
|
||||||
|
|
||||||
|
// the keys
|
||||||
|
.keyboard-key {
|
||||||
|
|
||||||
|
@include button(normal, $c:$key_bg_color);
|
||||||
|
|
||||||
|
&:focus { @include button(focus);}
|
||||||
|
&:hover, &:checked { @include button(hover, $c: $key_bg_color);}
|
||||||
|
&:active { @include button(active, $c: $key_bg_color); }
|
||||||
|
|
||||||
|
@include fontsize($base_font_size + 5);
|
||||||
|
min-height: $key_size;
|
||||||
|
min-width: $key_size;
|
||||||
|
border-width: 1px;
|
||||||
|
border-style: solid;
|
||||||
|
border-radius: $key_border_radius;
|
||||||
|
|
||||||
|
&:grayed { //FIXMEy
|
||||||
|
background-color: darken($bg_color, 3%);
|
||||||
|
color: $osd_fg_color;
|
||||||
|
border-color: $osd_borders_color;
|
||||||
|
}
|
||||||
|
|
||||||
|
// non-character keys
|
||||||
|
&.default-key {
|
||||||
|
@include button(normal, $c:$default_key_bg_color);
|
||||||
|
&:hover, &:checked {@include button(hover, $c: $default_key_bg_color);}
|
||||||
|
&:active { @include button(active, $c: $default_key_bg_color);}
|
||||||
|
}
|
||||||
|
|
||||||
|
// enter key is suggested-action
|
||||||
|
&.enter-key {
|
||||||
|
@include button(normal, $c:$selected_bg_color, $tc:$selected_fg_color);
|
||||||
|
&:hover, &:checked { @include button(hover, $c: lighten($selected_bg_color, 3%));}
|
||||||
|
&:active {@include button(active, $c: darken($selected_bg_color, 2%));}
|
||||||
|
}
|
||||||
|
|
||||||
|
&.shift-key-uppercase { color: $selected_bg_color }
|
||||||
|
|
||||||
|
StIcon { icon-size: 1.125em; }
|
||||||
|
}
|
||||||
|
|
||||||
|
// long press on a key popup
|
||||||
|
.keyboard-subkeys {
|
||||||
|
color: $osd_fg_color;
|
||||||
|
-arrow-border-radius: $modal_radius;
|
||||||
|
-arrow-background-color: $osd_bg_color;
|
||||||
|
-arrow-border-width: 1px;
|
||||||
|
-arrow-border-color: lighten($osd_bg_color, 9%);
|
||||||
|
-arrow-base: 20px;
|
||||||
|
-arrow-rise: 10px;
|
||||||
|
-boxpointer-gap: $base_spacing;
|
||||||
|
|
||||||
|
.keyboard-key {
|
||||||
|
@include button(normal, $c:$key_bg_color);
|
||||||
|
|
||||||
|
&:focus { @include button(focus);}
|
||||||
|
&:hover, &:checked { @include button(hover, $c: $key_bg_color);}
|
||||||
|
&:active { @include button(active, $c: $key_bg_color); }
|
||||||
|
|
||||||
|
border-radius:$base_border_radius;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// emoji
|
||||||
|
.emoji-page {
|
||||||
|
.keyboard-key {
|
||||||
|
background-color: transparent;
|
||||||
|
border: none;
|
||||||
|
color: initial;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.emoji-panel {
|
||||||
|
.keyboard-key:latched {
|
||||||
|
border-color: lighten($selected_bg_color, 5%);
|
||||||
|
background-color: $selected_bg_color;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// suggestions
|
||||||
|
.word-suggestions {
|
||||||
|
@include fontsize($base_font_size + 3);
|
||||||
|
spacing: 12px;
|
||||||
|
min-height: 20pt;
|
||||||
|
}
|
||||||
@@ -0,0 +1,170 @@
|
|||||||
|
/* Login Dialog */
|
||||||
|
|
||||||
|
.login-dialog-banner-view {
|
||||||
|
padding-top: 24px;
|
||||||
|
max-width: 23em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.login-dialog {
|
||||||
|
//reset
|
||||||
|
border: none;
|
||||||
|
background-color: transparent;
|
||||||
|
|
||||||
|
$_gdm_bg: lighten(#2e3436, 19%);
|
||||||
|
|
||||||
|
StEntry {
|
||||||
|
@if $variant=='dark' {
|
||||||
|
$_gdm_entry_bg: transparentize(lighten(desaturate(#241f31, 20%), 2%), 0.5);
|
||||||
|
background-color: $_gdm_entry_bg;
|
||||||
|
color: $osd_fg_color;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.modal-dialog-button-box { spacing: 3px; }
|
||||||
|
.modal-dialog-button {
|
||||||
|
padding: 4px 18px;
|
||||||
|
box-shadow: 0 1px 3px rgba(0,0,0,0.2);
|
||||||
|
background-color: $_gdm_bg;
|
||||||
|
border-color: $_gdm_bg;
|
||||||
|
color: $fg_color;
|
||||||
|
|
||||||
|
$_hover_c: lighten($_gdm_bg, 5%);
|
||||||
|
&:hover, &:focus {
|
||||||
|
background-color: $_hover_c;
|
||||||
|
border-color: $_hover_c;
|
||||||
|
}
|
||||||
|
&:active {
|
||||||
|
$_active_c: darken($_gdm_bg, 5%);
|
||||||
|
box-shadow: none;
|
||||||
|
background-color: $_active_c;
|
||||||
|
border-color: $_active_c;
|
||||||
|
}
|
||||||
|
&:insensitive {
|
||||||
|
@include button(insensitive);
|
||||||
|
border-color: darken($_gdm_bg, 5%);
|
||||||
|
background-color: darken($_gdm_bg, 5%);
|
||||||
|
color: transparentize($fg_color, 0.3);
|
||||||
|
}
|
||||||
|
&:default {
|
||||||
|
@include button(normal, $c:$selected_bg_color, $tc:$selected_fg_color);
|
||||||
|
border-color: $selected_bg_color;
|
||||||
|
&:hover, &:focus {
|
||||||
|
@include button(hover,$c:$selected_bg_color, $tc:$selected_fg_color);
|
||||||
|
$_def_hover_c: lighten($selected_bg_color, 5%);
|
||||||
|
background-color: $_def_hover_c;
|
||||||
|
border-color: $_def_hover_c;
|
||||||
|
}
|
||||||
|
&:active {
|
||||||
|
@include button(active,$c:$selected_bg_color, $tc:$selected_fg_color);
|
||||||
|
$_def_active_c: darken($selected_bg_color, 5%);
|
||||||
|
background-color: $_def_active_c;
|
||||||
|
border-color: $_def_active_c;
|
||||||
|
}
|
||||||
|
&:insensitive {
|
||||||
|
@include button(insensitive);
|
||||||
|
border-color: darken($selected_bg_color, 10%);
|
||||||
|
background-color: darken($selected_bg_color, 10%);
|
||||||
|
color: transparentize($selected_fg_color, 0.3);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.cancel-button,
|
||||||
|
.switch-user-button,
|
||||||
|
.login-dialog-session-list-button {
|
||||||
|
padding: 0;
|
||||||
|
border-radius: 99px;
|
||||||
|
width: $base_icon_size * 2;
|
||||||
|
height: $base_icon_size * 2;
|
||||||
|
border-color: transparentize($bg_color,0.7);
|
||||||
|
background-color: transparentize($bg_color,0.7);
|
||||||
|
|
||||||
|
StIcon { icon-size: $base_icon_size; }
|
||||||
|
}
|
||||||
|
|
||||||
|
.caps-lock-warning-label,
|
||||||
|
.login-dialog-message-warning {
|
||||||
|
color: $osd_fg_color;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.login-dialog-logo-bin { padding: 24px 0px; }
|
||||||
|
.login-dialog-banner { color: darken($osd_fg_color,10%); }
|
||||||
|
.login-dialog-button-box { width: 23em; spacing: 5px; }
|
||||||
|
.login-dialog-message { text-align: center; }
|
||||||
|
.login-dialog-message-hint { padding-top: 0; padding-bottom: 20px; }
|
||||||
|
.login-dialog-user-selection-box { padding: 100px 0px; }
|
||||||
|
.login-dialog-not-listed-label {
|
||||||
|
padding-left: 2px;
|
||||||
|
.login-dialog-not-listed-button:focus &,
|
||||||
|
.login-dialog-not-listed-button:hover & {
|
||||||
|
color: $osd_fg_color;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.login-dialog-not-listed-label {
|
||||||
|
@include fontsize($base_font_size - 1);
|
||||||
|
font-weight: bold;
|
||||||
|
color: darken($osd_fg_color,30%);
|
||||||
|
padding-top: 1em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.login-dialog-user-list-view { -st-vfade-offset: 1em; }
|
||||||
|
.login-dialog-user-list {
|
||||||
|
spacing: 12px;
|
||||||
|
width: 23em;
|
||||||
|
&:expanded .login-dialog-user-list-item:selected { background-color: $selected_bg_color; color: $selected_fg_color; }
|
||||||
|
&:expanded .login-dialog-user-list-item:logged-in { border-right: 2px solid $selected_bg_color; }
|
||||||
|
}
|
||||||
|
|
||||||
|
.login-dialog-user-list-item {
|
||||||
|
border-radius: $base_border_radius + 4px;
|
||||||
|
padding: 6px;
|
||||||
|
color: darken($osd_fg_color,30%);
|
||||||
|
&:ltr .user-widget { padding-right: 1em; }
|
||||||
|
&:rtl .user-widget { padding-left: 1em; }
|
||||||
|
.login-dialog-timed-login-indicator {
|
||||||
|
height: 2px;
|
||||||
|
margin-top: 6px;
|
||||||
|
background-color: $osd_fg_color;
|
||||||
|
}
|
||||||
|
&:focus .login-dialog-timed-login-indicator { background-color: $selected_fg_color; }
|
||||||
|
}
|
||||||
|
|
||||||
|
.user-widget-label {
|
||||||
|
color: $osd_fg_color;
|
||||||
|
}
|
||||||
|
|
||||||
|
.user-widget.horizontal .user-widget-label {
|
||||||
|
@include fontsize($base_font_size + 2);
|
||||||
|
font-weight: bold;
|
||||||
|
text-align: left;
|
||||||
|
padding-left: 15px;
|
||||||
|
|
||||||
|
&:ltr { padding-left: 14px; }
|
||||||
|
&:rtl { padding-right: 14px; }
|
||||||
|
}
|
||||||
|
|
||||||
|
.user-widget.vertical .user-widget-label {
|
||||||
|
@include fontsize($base_font_size + 5);
|
||||||
|
text-align: center;
|
||||||
|
font-weight: normal;
|
||||||
|
padding-top: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.login-dialog-prompt-layout {
|
||||||
|
padding-top: 24px;
|
||||||
|
padding-bottom: 12px;
|
||||||
|
spacing: $base_spacing * 2;
|
||||||
|
width: 23em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.login-dialog-prompt-entry {
|
||||||
|
height: 1.5em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.login-dialog-prompt-label {
|
||||||
|
color: darken($osd_fg_color, 20%);
|
||||||
|
@include fontsize($base_font_size + 1);
|
||||||
|
padding-top: 1em;
|
||||||
|
}
|
||||||
@@ -0,0 +1,102 @@
|
|||||||
|
/* Looking Glass */
|
||||||
|
|
||||||
|
// Dialog
|
||||||
|
#LookingGlassDialog {
|
||||||
|
background-color: $osd_bg_color;
|
||||||
|
spacing: $base_spacing;
|
||||||
|
padding: 4px;
|
||||||
|
border: 1px solid transparentize($osd_fg_color, 0.8);
|
||||||
|
border-radius: $base_border_radius;
|
||||||
|
color: $osd_fg_color;
|
||||||
|
|
||||||
|
& > #Toolbar {
|
||||||
|
border: none;
|
||||||
|
border-radius: $base_border_radius;
|
||||||
|
background-color: $osd_bg_color;
|
||||||
|
}
|
||||||
|
|
||||||
|
.labels { spacing: $base_spacing; }
|
||||||
|
.notebook-tab {
|
||||||
|
-natural-hpadding: $base_padding * 2;
|
||||||
|
-minimum-hpadding: 6px;
|
||||||
|
font-weight: bold;
|
||||||
|
color: darken($osd_fg_color, 15%);
|
||||||
|
transition-duration: 100ms;
|
||||||
|
padding-left: .3em;
|
||||||
|
padding-right: .3em;
|
||||||
|
border-bottom-width: 2px;
|
||||||
|
&:hover {
|
||||||
|
color: $osd_fg_color;
|
||||||
|
}
|
||||||
|
&:selected {
|
||||||
|
border-bottom-width: 2px;
|
||||||
|
box-shadow: inset 0 -2px 0 0 lighten($selected_bg_color, 5%);
|
||||||
|
color: $osd_fg_color;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
StBoxLayout#EvalBox { padding: 4px; spacing: $base_spacing; }
|
||||||
|
StBoxLayout#ResultsArea { spacing: $base_spacing; }
|
||||||
|
}
|
||||||
|
|
||||||
|
.lg-dialog {
|
||||||
|
StEntry {
|
||||||
|
background-color: transparentize(lighten($osd_bg_color, 5%), 0.4);
|
||||||
|
color: $osd_fg_color;
|
||||||
|
border-color: transparentize($osd_fg_color, 0.8);
|
||||||
|
min-height: 22px;
|
||||||
|
selection-background-color: $selected_bg_color;
|
||||||
|
selected-color: $selected_fg_color;
|
||||||
|
}
|
||||||
|
.shell-link {
|
||||||
|
color: $link_color;
|
||||||
|
&:hover { color: lighten($link_color, 10%); }
|
||||||
|
&:active { color: darken($link_color, 10%); }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.lg-completions-text {
|
||||||
|
font-size: .9em;
|
||||||
|
font-style: italic;
|
||||||
|
}
|
||||||
|
|
||||||
|
.lg-obj-inspector-title {
|
||||||
|
spacing: $base_spacing;
|
||||||
|
}
|
||||||
|
|
||||||
|
.lg-obj-inspector-button {
|
||||||
|
border: 1px solid $osd_borders_color;
|
||||||
|
padding: 4px;
|
||||||
|
border-radius: $base_border_radius;
|
||||||
|
&:hover { border: 1px solid #ffffff; }
|
||||||
|
}
|
||||||
|
|
||||||
|
// Extensions
|
||||||
|
#lookingGlassExtensions { padding: 4px; }
|
||||||
|
|
||||||
|
.lg-extensions-list {
|
||||||
|
padding: 4px;
|
||||||
|
spacing: 6px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.lg-extension {
|
||||||
|
border: 1px solid lighten($osd_borders_color, 5%);
|
||||||
|
background-color: lighten($osd_bg_color, 5%);
|
||||||
|
border-radius: $base_border_radius;
|
||||||
|
padding: 4px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.lg-extension-name {
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
.lg-extension-meta {
|
||||||
|
spacing: 6px;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Inspector
|
||||||
|
#LookingGlassPropertyInspector {
|
||||||
|
background: $osd_bg_color;
|
||||||
|
border: 1px solid $osd_borders_color;
|
||||||
|
border-radius: $base_border_radius;
|
||||||
|
padding: 6px;
|
||||||
|
}
|
||||||
@@ -0,0 +1,134 @@
|
|||||||
|
/* Message List */
|
||||||
|
// a.k.a. notifications in the menu
|
||||||
|
|
||||||
|
// main list
|
||||||
|
.message-list {
|
||||||
|
width: 31.5em;
|
||||||
|
padding: 0 $base_padding * 2;
|
||||||
|
|
||||||
|
.message-list-placeholder { spacing: 12px; }
|
||||||
|
}
|
||||||
|
|
||||||
|
.message-list-sections {
|
||||||
|
spacing: $base_spacing;
|
||||||
|
margin: 0 $base_margin * 4; // to account for scrollbar
|
||||||
|
}
|
||||||
|
|
||||||
|
.message-list-section,
|
||||||
|
.message-list-section-list {
|
||||||
|
spacing: $base_spacing;
|
||||||
|
}
|
||||||
|
|
||||||
|
// do-not-disturb + clear button
|
||||||
|
.message-list-controls {
|
||||||
|
margin: ($base_margin * 2) ($base_margin * 4) 0;
|
||||||
|
// NOTE: remove the padding if notification_bubble could remove margin for drop shadow
|
||||||
|
padding: $base_margin;
|
||||||
|
spacing: $base_spacing * 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
// message bubbles
|
||||||
|
.message {
|
||||||
|
@include notification_bubble;
|
||||||
|
|
||||||
|
// icon container
|
||||||
|
.message-icon-bin {
|
||||||
|
padding: ($base_padding * 3) 0 ($base_padding * 3) ($base_padding * 2);
|
||||||
|
|
||||||
|
&:rtl {
|
||||||
|
padding: ($base_padding * 3) ($base_padding * 2) ($base_padding * 3) 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
// icon size and color
|
||||||
|
> StIcon {
|
||||||
|
icon-size: $base_icon_size*2; // 32px
|
||||||
|
-st-icon-style: symbolic;
|
||||||
|
}
|
||||||
|
|
||||||
|
// fallback
|
||||||
|
> .fallback-app-icon {
|
||||||
|
width: $base_icon_size;
|
||||||
|
height: $base_icon_size;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// content
|
||||||
|
.message-content {
|
||||||
|
padding: $base_padding + $base_margin * 2;
|
||||||
|
spacing: 4px;
|
||||||
|
}
|
||||||
|
|
||||||
|
// title
|
||||||
|
.message-title {
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
// secondary container in title box
|
||||||
|
.message-secondary-bin {
|
||||||
|
padding: 0 $base_margin * 2;
|
||||||
|
|
||||||
|
// notification time stamp
|
||||||
|
> .event-time {
|
||||||
|
color: transparentize($fg_color, 0.5);
|
||||||
|
@include fontsize($base_font_size - 2);
|
||||||
|
text-align: right;
|
||||||
|
/* HACK: the label should be baseline-aligned with a 1em label, fake this with some bottom padding */
|
||||||
|
padding-bottom: 0.13em;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// close button
|
||||||
|
.message-close-button {
|
||||||
|
color: lighten($fg_color, 15%);
|
||||||
|
&:hover { color: if($variant=='light', lighten($fg_color, 30%), darken($fg_color, 10%)); }
|
||||||
|
&:active { color: if($variant=='light', lighten($fg_color, 40%), darken($fg_color, 20%)); }
|
||||||
|
}
|
||||||
|
|
||||||
|
// body
|
||||||
|
.message-body {
|
||||||
|
color: darken($fg_color, 10%);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// URLs in messages
|
||||||
|
.url-highlighter {
|
||||||
|
link-color: $link_color;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Media Controls */
|
||||||
|
.message-media-control {
|
||||||
|
padding: $base_padding * 2 $base_padding * 4;
|
||||||
|
color: darken($fg_color, 15%);
|
||||||
|
|
||||||
|
// uses $hover_bg_color since the media controls are in a notification_bubble
|
||||||
|
&:hover {
|
||||||
|
background-color: lighten($hover_bg_color, 5%);
|
||||||
|
color: $fg_color;
|
||||||
|
}
|
||||||
|
|
||||||
|
&:active {
|
||||||
|
background-color: darken($hover_bg_color, 2%);
|
||||||
|
color: $fg_color;
|
||||||
|
}
|
||||||
|
|
||||||
|
&:insensitive { color: darken($fg_color,40%); }
|
||||||
|
|
||||||
|
// fix border-radius for last button
|
||||||
|
&:last-child:ltr { border-radius: 0 $base_border_radius+2 $base_border_radius+2 0; }
|
||||||
|
&:last-child:rtl { border-radius: $base_border_radius+2 0 0 $base_border_radius+2; }
|
||||||
|
}
|
||||||
|
|
||||||
|
// album-art
|
||||||
|
.media-message-cover-icon {
|
||||||
|
icon-size: $base_icon_size*2 !important; // 48px
|
||||||
|
border-radius: $base_border_radius;
|
||||||
|
|
||||||
|
// when there is no artwork
|
||||||
|
&.fallback {
|
||||||
|
color: darken($fg_color, 17%);
|
||||||
|
background-color: $bg_color;
|
||||||
|
border: 1px solid transparent;
|
||||||
|
border-radius: $base_border_radius;
|
||||||
|
icon-size: $base_icon_size * 2 !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,55 @@
|
|||||||
|
// Rubberband for select-area screenshots
|
||||||
|
.select-area-rubberband {
|
||||||
|
background-color: transparentize($selected_bg_color,0.7);
|
||||||
|
border: 1px solid $selected_bg_color;
|
||||||
|
}
|
||||||
|
|
||||||
|
// User icon
|
||||||
|
.user-icon {
|
||||||
|
background-size: contain;
|
||||||
|
color: $osd_fg_color;
|
||||||
|
border-radius: 99px;
|
||||||
|
&:hover {
|
||||||
|
color: lighten($osd_fg_color,30%);
|
||||||
|
}
|
||||||
|
|
||||||
|
& StIcon {
|
||||||
|
background-color: transparentize($osd_fg_color,0.95);
|
||||||
|
border-radius: 99px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.user-widget.vertical .user-icon {
|
||||||
|
icon-size: $base_icon_size * 6; // 128px
|
||||||
|
|
||||||
|
& StIcon {
|
||||||
|
padding: $base_padding * 3 + 2px; // 20px
|
||||||
|
padding-top: $base_padding * 3; // 18 px
|
||||||
|
padding-bottom: $base_padding * 3 + 4px; // 22px
|
||||||
|
width: $base_icon_size * 5.5; height: $base_icon_size * 5.5; // 88px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.user-widget.horizontal .user-icon {
|
||||||
|
icon-size: $base_icon_size * 4; // 64px
|
||||||
|
|
||||||
|
& StIcon {
|
||||||
|
padding: $base_padding * 2 ; // 12px
|
||||||
|
width: $base_icon_size * 2.5; height: $base_icon_size * 2.5; // 40px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.lightbox { background-color: black; }
|
||||||
|
.flashspot { background-color: white; }
|
||||||
|
|
||||||
|
|
||||||
|
// Hidden
|
||||||
|
.hidden { color: rgba(0,0,0,0);}
|
||||||
|
|
||||||
|
// Caps-lock warning
|
||||||
|
.caps-lock-warning-label {
|
||||||
|
text-align: center;
|
||||||
|
padding-bottom: 8px;
|
||||||
|
@include fontsize($base_font_size - 1);
|
||||||
|
color: $warning_color;
|
||||||
|
}
|
||||||
@@ -0,0 +1,56 @@
|
|||||||
|
/* Network Dialogs */
|
||||||
|
.nm-dialog {
|
||||||
|
max-height: 34em;
|
||||||
|
min-height: 31em;
|
||||||
|
min-width: 32em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.nm-dialog-content {
|
||||||
|
spacing: 20px;
|
||||||
|
padding: 24px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.nm-dialog-airplane-box { spacing: 12px; }
|
||||||
|
|
||||||
|
.nm-dialog-airplane-headline {
|
||||||
|
font-weight: bold;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.nm-dialog-airplane-text { color: $fg_color; }
|
||||||
|
|
||||||
|
// header
|
||||||
|
.nm-dialog-header {
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
.nm-dialog-header-icon {
|
||||||
|
icon-size: $base_icon_size * 2;
|
||||||
|
}
|
||||||
|
.nm-dialog-header-hbox { spacing: 10px; }
|
||||||
|
|
||||||
|
// list of networks
|
||||||
|
.nm-dialog-scroll-view {
|
||||||
|
border: 1px solid $borders_color;
|
||||||
|
padding:0;
|
||||||
|
background-color: darken($bg_color, 3%);
|
||||||
|
}
|
||||||
|
|
||||||
|
// list item
|
||||||
|
.nm-dialog-item {
|
||||||
|
@include fontsize($base_font_size);
|
||||||
|
border-bottom: 1px solid $borders_color;
|
||||||
|
padding: $base_padding * 2;
|
||||||
|
spacing: 0px;
|
||||||
|
&:selected {
|
||||||
|
background-color: $selected_bg_color;
|
||||||
|
color: $selected_fg_color;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// icons in list
|
||||||
|
.nm-dialog-icon { icon-size: $base_icon_size; }
|
||||||
|
.nm-dialog-icons { spacing: $base_spacing * 2; }
|
||||||
|
|
||||||
|
// no networks
|
||||||
|
.no-networks-label { color: $insensitive_fg_color; }
|
||||||
|
.no-networks-box { spacing: $base_padding; }
|
||||||
@@ -0,0 +1,57 @@
|
|||||||
|
/* Notifications & Mesage Tray */
|
||||||
|
|
||||||
|
$notification_banner_height: 64px;
|
||||||
|
$notification_banner_width: 34em;
|
||||||
|
|
||||||
|
// Banner notifications
|
||||||
|
.notification-banner {
|
||||||
|
min-height: $notification_banner_height;
|
||||||
|
width: $notification_banner_width;
|
||||||
|
|
||||||
|
.notification-actions {
|
||||||
|
spacing: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.notification-button {
|
||||||
|
@extend %bubble_button;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// counter
|
||||||
|
.summary-source-counter {
|
||||||
|
font-size: $base_font_size - 1pt;
|
||||||
|
font-weight: bold;
|
||||||
|
height: 1.6em;
|
||||||
|
width: 1.6em;
|
||||||
|
-shell-counter-overlap-x: 3px;
|
||||||
|
-shell-counter-overlap-y: 3px;
|
||||||
|
background-color: $selected_bg_color;
|
||||||
|
color: $selected_fg_color;
|
||||||
|
border: 2px solid $fg_color;
|
||||||
|
box-shadow: 0 2px 2px rgba(0,0,0,0.5);
|
||||||
|
border-radius: 0.9em; // should be 0.8 but whatever; wish I could do 50%;
|
||||||
|
}
|
||||||
|
|
||||||
|
// chat bubbles
|
||||||
|
.chat-body { spacing: 5px; }
|
||||||
|
.chat-response { margin: 5px; }
|
||||||
|
.chat-log-message { color: darken($fg_color,10%); }
|
||||||
|
.chat-new-group { padding-top: 1em; }
|
||||||
|
.chat-received {
|
||||||
|
padding-left: 4px;
|
||||||
|
&:rtl { padding-left: 0px; padding-right: 4px; }
|
||||||
|
}
|
||||||
|
|
||||||
|
.chat-sent {
|
||||||
|
padding-left: 18pt;
|
||||||
|
color: lighten($fg_color, 15%);
|
||||||
|
&:rtl { padding-left: 0; padding-right: 18pt; }
|
||||||
|
}
|
||||||
|
|
||||||
|
.chat-meta-message {
|
||||||
|
padding-left: 4px;
|
||||||
|
@include fontsize($base_font_size - 2);
|
||||||
|
font-weight: bold;
|
||||||
|
color: lighten($fg_color,18%);
|
||||||
|
&:rtl { padding-left: 0; padding-right: 4px; }
|
||||||
|
}
|
||||||
@@ -0,0 +1,45 @@
|
|||||||
|
/* OSD */
|
||||||
|
|
||||||
|
$osd_levelbar_height:8px;
|
||||||
|
|
||||||
|
.osd-window {
|
||||||
|
@extend %osd_panel;
|
||||||
|
text-align: center;
|
||||||
|
font-weight: bold;
|
||||||
|
spacing: $base_spacing * 2; // 12px
|
||||||
|
margin: $base_margin * 8; // 32px
|
||||||
|
min-width: 64px;
|
||||||
|
min-height: 64px;
|
||||||
|
|
||||||
|
StIcon {
|
||||||
|
icon-size:$base_icon_size * 6;
|
||||||
|
}
|
||||||
|
|
||||||
|
.osd-monitor-label { font-size: 3em; }
|
||||||
|
|
||||||
|
.level {
|
||||||
|
height: $osd_levelbar_height;
|
||||||
|
-barlevel-height: $osd_levelbar_height;
|
||||||
|
-barlevel-background-color: transparentize($osd_fg_color, if($variant=='light', 0.7, 0.9));
|
||||||
|
-barlevel-active-background-color: $osd_fg_color;
|
||||||
|
-barlevel-overdrive-color: $destructive_color;
|
||||||
|
-barlevel-overdrive-separator-width: 3px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Pad OSD */
|
||||||
|
.pad-osd-window {
|
||||||
|
padding: 32px;
|
||||||
|
background-color: transparentize(#000, 0.2);
|
||||||
|
|
||||||
|
.pad-osd-title-box { spacing: 12px; }
|
||||||
|
.pad-osd-title-menu-box { spacing: 6px; }
|
||||||
|
}
|
||||||
|
|
||||||
|
.combo-box-label {
|
||||||
|
width: 15em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.resize-popup {
|
||||||
|
@extend %osd_panel;
|
||||||
|
}
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
/* OVERVIEW */
|
||||||
|
|
||||||
|
#overview {
|
||||||
|
spacing: 24px;
|
||||||
|
background-color: transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
.overview-controls {
|
||||||
|
padding-bottom: 32px;
|
||||||
|
}
|
||||||
@@ -0,0 +1,121 @@
|
|||||||
|
/* Top Bar */
|
||||||
|
// a.k.a. the panel
|
||||||
|
|
||||||
|
$panel_corner_radius: $base_border_radius+1;
|
||||||
|
$panel_bg_color: #000;
|
||||||
|
$panel_fg_color: #ccc;
|
||||||
|
$panel_height: 1.86em;
|
||||||
|
|
||||||
|
|
||||||
|
#panel {
|
||||||
|
background-color: $panel_bg_color;
|
||||||
|
font-weight: bold;
|
||||||
|
height: $panel_height;
|
||||||
|
font-feature-settings: "tnum";
|
||||||
|
|
||||||
|
// transparent panel on lock & login screens
|
||||||
|
&.unlock-screen,
|
||||||
|
&.login-screen {
|
||||||
|
background-color: transparent;
|
||||||
|
|
||||||
|
.panel-corner {
|
||||||
|
-panel-corner-radius: 0;
|
||||||
|
-panel-corner-background-color: transparent;
|
||||||
|
-panel-corner-border-color: transparent;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// spacing between activities, app menu and such
|
||||||
|
#panelLeft, #panelCenter {
|
||||||
|
spacing: $base_spacing;
|
||||||
|
}
|
||||||
|
|
||||||
|
// the rounded outset corners
|
||||||
|
.panel-corner {
|
||||||
|
-panel-corner-radius: $panel_corner_radius;
|
||||||
|
-panel-corner-background-color: $panel_bg_color;
|
||||||
|
-panel-corner-border-width: 2px;
|
||||||
|
-panel-corner-border-color: transparent;
|
||||||
|
|
||||||
|
&:active, &:overview, &:focus {
|
||||||
|
-panel-corner-border-color: lighten($selected_bg_color,5%);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// panel menus
|
||||||
|
.panel-button {
|
||||||
|
font-weight: bold;
|
||||||
|
color: $panel_fg_color;
|
||||||
|
-natural-hpadding: $base_padding * 2;
|
||||||
|
-minimum-hpadding: $base_padding;
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
color: lighten($panel_fg_color, 20%);
|
||||||
|
}
|
||||||
|
|
||||||
|
&:active, &:overview, &:focus, &:checked {
|
||||||
|
color: lighten($panel_fg_color, 20%);
|
||||||
|
}
|
||||||
|
|
||||||
|
// status area icons
|
||||||
|
.system-status-icon {
|
||||||
|
icon-size: $base_icon_size;
|
||||||
|
padding: $base_padding - 1px;
|
||||||
|
}
|
||||||
|
|
||||||
|
// app menu icon
|
||||||
|
.app-menu-icon {
|
||||||
|
margin-left: $base_margin;
|
||||||
|
margin-right: $base_margin;
|
||||||
|
-st-icon-style: symbolic;
|
||||||
|
// dimensions of the icon are hardcoded
|
||||||
|
}
|
||||||
|
|
||||||
|
// lock & login screen styles
|
||||||
|
.unlock-screen &,
|
||||||
|
.login-screen & {
|
||||||
|
color: lighten($fg_color, 10%);
|
||||||
|
&:focus, &:hover, &:active { color: lighten($fg_color, 10%); }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.panel-button {
|
||||||
|
&:active, &:overview, &:focus, &:checked {
|
||||||
|
// Trick due to St limitations. It needs a background to draw a box-shadow
|
||||||
|
background-color: rgba(0, 0, 0, 0.01);
|
||||||
|
box-shadow: inset 0 -2px 0 0 lighten($selected_bg_color,5%);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.panel-button.clock-display {
|
||||||
|
// Move highlight from .panel-button to .clock
|
||||||
|
&:active, &:overview, &:focus, &:checked {
|
||||||
|
box-shadow: none;
|
||||||
|
|
||||||
|
.clock {
|
||||||
|
background-color: rgba(0, 0, 0, 0.01);
|
||||||
|
box-shadow: inset 0 -2px 0 0 lighten($selected_bg_color,5%);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.panel-status-indicators-box,
|
||||||
|
.panel-status-menu-box {
|
||||||
|
spacing: 2px;
|
||||||
|
}
|
||||||
|
|
||||||
|
// spacing between power icon and (optional) percentage label
|
||||||
|
.power-status.panel-status-indicators-box {
|
||||||
|
spacing: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
// indicator for active
|
||||||
|
.screencast-indicator,
|
||||||
|
.remote-access-indicator { color: $warning_color; }
|
||||||
|
}
|
||||||
|
|
||||||
|
// App Menu
|
||||||
|
#appMenu {
|
||||||
|
spacing: $base_spacing;
|
||||||
|
.label-shadow { color: transparent; }
|
||||||
|
}
|
||||||
@@ -0,0 +1,129 @@
|
|||||||
|
/* Popovers/Menus */
|
||||||
|
|
||||||
|
$popover_arrow_height: 12px;
|
||||||
|
|
||||||
|
//.the popover itself
|
||||||
|
.popup-menu-boxpointer {
|
||||||
|
-arrow-border-radius: $base_border_radius+4;
|
||||||
|
-arrow-background-color: $bg_color;
|
||||||
|
-arrow-border-width: 1px;
|
||||||
|
-arrow-border-color: $borders_color;
|
||||||
|
-arrow-base: $popover_arrow_height * 2;
|
||||||
|
-arrow-rise: $popover_arrow_height;
|
||||||
|
-arrow-box-shadow: 0 1px 3px rgba(0,0,0,0.5); // dreaming bugzilla #689995
|
||||||
|
}
|
||||||
|
|
||||||
|
// container of the popover menu
|
||||||
|
.popup-menu {
|
||||||
|
min-width: 15em;
|
||||||
|
color: $fg_color;
|
||||||
|
|
||||||
|
//.popup-status-menu-item { font-weight: normal; color: pink; } //dunno what that is
|
||||||
|
&.panel-menu {
|
||||||
|
-boxpointer-gap: $base_margin; // distance from the panel
|
||||||
|
margin-bottom: 1.75em;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.popup-menu-content {
|
||||||
|
padding: $base_padding * 2 + $base_margin 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
// menu items
|
||||||
|
.popup-menu-item {
|
||||||
|
spacing: $base_padding;
|
||||||
|
padding: $base_padding;
|
||||||
|
|
||||||
|
&:ltr { padding-right:1.75em; padding-left: 0; }
|
||||||
|
&:rtl { padding-right: 0; padding-left:1.75em; }
|
||||||
|
|
||||||
|
&:checked {
|
||||||
|
background-color: lighten($bg_color, 2%);
|
||||||
|
box-shadow: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.selected {
|
||||||
|
background-color: transparentize(white, if($variant=='light', 0.2, 0.9));
|
||||||
|
color: $fg_color;
|
||||||
|
}
|
||||||
|
|
||||||
|
&:active {
|
||||||
|
background-color: $selected_bg_color;
|
||||||
|
color: $selected_fg_color;
|
||||||
|
}
|
||||||
|
|
||||||
|
&:insensitive { color: transparentize($fg_color,0.5);}
|
||||||
|
}
|
||||||
|
|
||||||
|
// all icons and other graphical elements
|
||||||
|
.popup-inactive-menu-item {
|
||||||
|
color: $fg_color;
|
||||||
|
|
||||||
|
&:insensitive { color: transparentize($fg_color,0.5); }
|
||||||
|
}
|
||||||
|
|
||||||
|
// symbolic icons in popover
|
||||||
|
.popup-menu-arrow,
|
||||||
|
.popup-menu-icon { icon-size: $base_icon_size; }
|
||||||
|
|
||||||
|
// popover submenus
|
||||||
|
.popup-sub-menu {
|
||||||
|
background-color: darken($bg_color, 3%);
|
||||||
|
box-shadow: none;
|
||||||
|
border-top: 1px solid transparentize($borders_color, 0.2);
|
||||||
|
border-bottom: 1px solid transparentize($borders_color, 0.2);
|
||||||
|
}
|
||||||
|
|
||||||
|
// container for radio and check boxes
|
||||||
|
.popup-menu-ornament {
|
||||||
|
text-align: right;
|
||||||
|
width: 1.2em;
|
||||||
|
}
|
||||||
|
|
||||||
|
// separator
|
||||||
|
.popup-separator-menu-item {
|
||||||
|
padding: 0;
|
||||||
|
|
||||||
|
.popup-separator-menu-item-separator {
|
||||||
|
//-margin-horizontal: 24px;
|
||||||
|
height: 1px; //not really the whole box
|
||||||
|
margin: 6px 64px;
|
||||||
|
background-color: lighten($borders_color, 2%);
|
||||||
|
.popup-sub-menu & { //submenu separators
|
||||||
|
margin: 0 64px 0 32px;
|
||||||
|
@if $variant == 'dark' {
|
||||||
|
background-color: lighten($bg_color,10%);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// desktop background menu
|
||||||
|
.background-menu {
|
||||||
|
-boxpointer-gap: $base_margin;
|
||||||
|
-arrow-rise: 0px; // hide the beak on the menu
|
||||||
|
}
|
||||||
|
|
||||||
|
// system status menu
|
||||||
|
.aggregate-menu {
|
||||||
|
min-width: 21em;
|
||||||
|
|
||||||
|
// lock screen, shutdown, etc. buttons
|
||||||
|
.popup-menu-icon {
|
||||||
|
padding:0;
|
||||||
|
margin: 0 $base_margin;
|
||||||
|
-st-icon-style: symbolic;
|
||||||
|
}
|
||||||
|
|
||||||
|
.popup-sub-menu .popup-menu-item > :first-child {
|
||||||
|
// account for icons in submenus with padding
|
||||||
|
&:ltr {
|
||||||
|
padding-left: $base_padding + $base_margin * 2;
|
||||||
|
margin-left: $base_icon_size;
|
||||||
|
}
|
||||||
|
&:rtl {
|
||||||
|
padding-right: $base_padding + $base_margin * 2; ;
|
||||||
|
margin-right: $base_icon_size;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,78 @@
|
|||||||
|
/* Screen Shield */
|
||||||
|
|
||||||
|
.unlock-dialog-clock {
|
||||||
|
color: white;
|
||||||
|
font-weight: 300;
|
||||||
|
text-align: center;
|
||||||
|
spacing: 24px;
|
||||||
|
padding-bottom: 2.5em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.unlock-dialog-clock-time {
|
||||||
|
font-size: 64pt;
|
||||||
|
padding-top: 42px;
|
||||||
|
font-feature-settings: "tnum";
|
||||||
|
}
|
||||||
|
|
||||||
|
.unlock-dialog-clock-date {
|
||||||
|
font-size: 16pt;
|
||||||
|
font-weight: normal;
|
||||||
|
}
|
||||||
|
|
||||||
|
.unlock-dialog-clock-hint {
|
||||||
|
font-weight: normal;
|
||||||
|
padding-top: 48px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.unlock-dialog-notifications-container {
|
||||||
|
margin: 12px 0;
|
||||||
|
spacing: 6px;
|
||||||
|
width: 23em;
|
||||||
|
background-color: transparent;
|
||||||
|
.summary-notification-stack-scrollview {
|
||||||
|
padding-top: 0;
|
||||||
|
padding-bottom: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.notification,
|
||||||
|
.unlock-dialog-notification-source {
|
||||||
|
padding: 12px 6px;
|
||||||
|
border: none;
|
||||||
|
background-color: transparentize($osd_bg_color,0.7);
|
||||||
|
color: $osd_fg_color;
|
||||||
|
border-radius: $modal_radius;
|
||||||
|
|
||||||
|
&.critical { background-color: transparentize($osd_bg_color,0.1) }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.unlock-dialog-notification-label {
|
||||||
|
padding: 0px 0px 0px 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.unlock-dialog-notification-count-text {
|
||||||
|
weight: bold;
|
||||||
|
padding: 0 6px;
|
||||||
|
color: $osd_bg_color;
|
||||||
|
background-color: transparentize($osd_fg_color, 0.7);
|
||||||
|
border-radius: 99px;
|
||||||
|
margin-right: 12px;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
.screen-shield-background { //just the shadow, really
|
||||||
|
background: black;
|
||||||
|
box-shadow: 0px 2px 4px rgba(0,0,0,0.6);
|
||||||
|
}
|
||||||
|
|
||||||
|
#lockDialogGroup {
|
||||||
|
background-color: lighten(#2e3436, 8%);
|
||||||
|
}
|
||||||
|
|
||||||
|
#unlockDialogNotifications {
|
||||||
|
StButton#vhandle, StButton#hhandle {
|
||||||
|
background-color: transparentize($bg_color,0.7);
|
||||||
|
&:hover, &:focus { background-color: transparentize($bg_color,0.5); }
|
||||||
|
&:active { background-color: transparentize($selected_bg_color,0.5); }
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,29 @@
|
|||||||
|
/* Scrollbars */
|
||||||
|
|
||||||
|
StScrollView {
|
||||||
|
&.vfade { -st-vfade-offset: 68px; }
|
||||||
|
&.hfade { -st-hfade-offset: 68px; }
|
||||||
|
}
|
||||||
|
|
||||||
|
StScrollBar {
|
||||||
|
padding: 0;
|
||||||
|
|
||||||
|
StScrollView & {
|
||||||
|
min-width: 14px;
|
||||||
|
min-height: 14px;
|
||||||
|
}
|
||||||
|
|
||||||
|
StBin#trough {
|
||||||
|
border-radius: 0;
|
||||||
|
background-color: transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
StButton#vhandle, StButton#hhandle {
|
||||||
|
border-radius: 8px;
|
||||||
|
background-color: mix($fg_color, $bg_color, 60%);
|
||||||
|
//border: 3px solid transparent; //would be nice to margin or at least to transparent
|
||||||
|
margin: 3px;
|
||||||
|
&:hover { background-color: mix($fg_color, $bg_color, 80%); }
|
||||||
|
&:active { background-color: $selected_bg_color; }
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,35 @@
|
|||||||
|
// Search entry
|
||||||
|
|
||||||
|
$search_entry_width: 320px;
|
||||||
|
$search_entry_height: 36px;
|
||||||
|
|
||||||
|
%search_entry,
|
||||||
|
.search-entry {
|
||||||
|
width: $search_entry_width;
|
||||||
|
padding: $base_padding+1 $base_padding+3;
|
||||||
|
border-radius: $search_entry_height * 0.5; // half the height
|
||||||
|
color: transparentize($fg_color,0.3);
|
||||||
|
background-color: $bg_color;
|
||||||
|
border-color: $borders_color;
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
background-color: $hover_bg_color;
|
||||||
|
border-color: $hover_borders_color;
|
||||||
|
color: $hover_fg_color;
|
||||||
|
}
|
||||||
|
|
||||||
|
&:focus {
|
||||||
|
padding: $base_padding $base_padding+2; // 1px less to account for wider border
|
||||||
|
border-width: 2px;
|
||||||
|
border-style: solid;
|
||||||
|
border-color: $selected_bg_color;
|
||||||
|
color: $fg_color;
|
||||||
|
box-shadow: inset 0 1px 2px 1px rgba(0,0,0,0.2);
|
||||||
|
}
|
||||||
|
|
||||||
|
.search-entry-icon {
|
||||||
|
icon-size: $base_icon_size;
|
||||||
|
padding: 0 4px;
|
||||||
|
color: inherit;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,104 @@
|
|||||||
|
/* Search */
|
||||||
|
|
||||||
|
// search overview container
|
||||||
|
#searchResultsContent {
|
||||||
|
max-width: 1024px;
|
||||||
|
spacing: $base_margin * 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
// search results sections "the boxes"
|
||||||
|
.search-section {
|
||||||
|
// This should be equal to #searchResultsContent spacing
|
||||||
|
spacing: $base_margin * 2;
|
||||||
|
|
||||||
|
// separator
|
||||||
|
.search-section-separator {
|
||||||
|
// height: 1px;
|
||||||
|
// background-color: $osd_outer_borders_color;
|
||||||
|
height: 0;
|
||||||
|
background-color: transparent;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// content
|
||||||
|
.search-section-content {
|
||||||
|
background-color: transparentize(lighten($osd_bg_color, 5%), 0.2);
|
||||||
|
border-radius: $modal_radius+3;
|
||||||
|
border: 1px solid $osd_outer_borders_color;
|
||||||
|
box-shadow: 0 2px 4px 0 $shadow_color;
|
||||||
|
text-shadow: 0 1px if($variant == 'light', rgba(255,255,255,0.2), rgba(0,0,0,0.2));
|
||||||
|
color: $osd_fg_color;
|
||||||
|
padding: $base_padding * 3;
|
||||||
|
// This is the space between the provider icon and the results container
|
||||||
|
spacing: $base_margin * 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
%search-section-content-item {
|
||||||
|
@extend %icon_tile;
|
||||||
|
|
||||||
|
&:focus,
|
||||||
|
&:hover,
|
||||||
|
&:selected {
|
||||||
|
background-color: transparentize($osd_fg_color, .9);
|
||||||
|
transition-duration: 200ms;
|
||||||
|
}
|
||||||
|
|
||||||
|
&:active,
|
||||||
|
&:checked {
|
||||||
|
background-color: transparentize(darken($osd_bg_color, 10%), .1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// "no results" text
|
||||||
|
.search-statustext {
|
||||||
|
@extend %status_text;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Search results with icons
|
||||||
|
.grid-search-result {
|
||||||
|
@extend %app-well-app;
|
||||||
|
}
|
||||||
|
|
||||||
|
// search result provider
|
||||||
|
.search-provider-icon {
|
||||||
|
@extend %search-section-content-item;
|
||||||
|
|
||||||
|
// content
|
||||||
|
.list-search-provider-content {
|
||||||
|
spacing: $base_spacing * 2;
|
||||||
|
|
||||||
|
// provider labels
|
||||||
|
.list-search-provider-details {
|
||||||
|
width: 120px;
|
||||||
|
margin-top: 0;
|
||||||
|
color: darken($osd_fg_color, 8%);
|
||||||
|
// font-weight: bold;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// search results list
|
||||||
|
.list-search-results {
|
||||||
|
spacing: $base_spacing;
|
||||||
|
}
|
||||||
|
|
||||||
|
// search result listitem
|
||||||
|
.list-search-result {
|
||||||
|
@extend %search-section-content-item;
|
||||||
|
|
||||||
|
// content
|
||||||
|
.list-search-result-content {
|
||||||
|
spacing: $base_padding;
|
||||||
|
}
|
||||||
|
|
||||||
|
// list item title (with leading icon)
|
||||||
|
.list-search-result-title {
|
||||||
|
spacing: $base_spacing * 2;
|
||||||
|
// font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
// list item description
|
||||||
|
.list-search-result-description {
|
||||||
|
color: darken($osd_fg_color, 30%);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
/* Slider */
|
||||||
|
|
||||||
|
$slider_size: 15px;
|
||||||
|
|
||||||
|
.slider {
|
||||||
|
height: $slider_size;
|
||||||
|
// slider trough
|
||||||
|
-barlevel-height: 3px; // has to be an odd number
|
||||||
|
-barlevel-background-color: $borders_color; //background of the trough
|
||||||
|
-barlevel-border-width: 1px;
|
||||||
|
-barlevel-border-color: $borders_color; // trough border color
|
||||||
|
// fill style
|
||||||
|
-barlevel-active-background-color: $selected_bg_color; //active trough fill
|
||||||
|
-barlevel-active-border-color: if($variant == 'light', darken($selected_bg_color, 4%), lighten($selected_bg_color, 2%)); //active trough border
|
||||||
|
// overfill style (red in this case)
|
||||||
|
-barlevel-overdrive-color: $destructive_color;
|
||||||
|
-barlevel-overdrive-border-color: if($variant == 'light', darken($destructive_color, 4%), lighten($destructive_color, 2%)); //trough border when red;
|
||||||
|
-barlevel-overdrive-separator-width:1px;
|
||||||
|
// slider hander
|
||||||
|
-slider-handle-radius: $slider_size * 0.5; // half the size of the size
|
||||||
|
-slider-handle-border-width: 1px;
|
||||||
|
-slider-handle-border-color: if($variant == 'light', $borders_color, $fg_color);
|
||||||
|
|
||||||
|
color: if($variant == 'light', lighten($bg_color, 10%), $fg_color);
|
||||||
|
&:hover { color: $hover_bg_color; }
|
||||||
|
&:active { color: $active_bg_color; }
|
||||||
|
}
|
||||||
@@ -0,0 +1,65 @@
|
|||||||
|
/* App Switcher */
|
||||||
|
|
||||||
|
.switcher-popup {
|
||||||
|
padding: 8px;
|
||||||
|
spacing: $base_spacing * 4;
|
||||||
|
}
|
||||||
|
|
||||||
|
// switcher onscreen panel
|
||||||
|
.switcher-list {
|
||||||
|
@extend %osd_panel;
|
||||||
|
|
||||||
|
.item-box {
|
||||||
|
padding: 8px;
|
||||||
|
border-radius: $base_border_radius + 1px;
|
||||||
|
border: 1px solid transparent;
|
||||||
|
|
||||||
|
&:outlined {
|
||||||
|
background-color: transparentize($osd_fg_color, 0.7);
|
||||||
|
}
|
||||||
|
|
||||||
|
&:selected {
|
||||||
|
background-color: transparentize($osd_fg_color, 0.7);
|
||||||
|
color: $osd_fg_color;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// window thumbnails
|
||||||
|
.thumbnail-box {
|
||||||
|
padding: 2px;
|
||||||
|
spacing: $base_spacing;
|
||||||
|
}
|
||||||
|
|
||||||
|
.thumbnail {
|
||||||
|
width: 256px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.separator {
|
||||||
|
width: 1px;
|
||||||
|
background: $borders_color;
|
||||||
|
}
|
||||||
|
|
||||||
|
.switcher-list-item-container {
|
||||||
|
spacing: $base_spacing * 2;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.switcher-arrow {
|
||||||
|
border-color: rgba(0,0,0,0);
|
||||||
|
color: transparentize($fg_color,0.2);
|
||||||
|
&:highlighted {
|
||||||
|
color: $fg_color;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Input Source Switcher
|
||||||
|
.input-source-switcher-symbol {
|
||||||
|
font-size: 34pt;
|
||||||
|
width: 96px;
|
||||||
|
height: 96px;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Window cycler highlight
|
||||||
|
.cycler-highlight {
|
||||||
|
border: 5px solid $selected_bg_color;
|
||||||
|
}
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
/* Switches */
|
||||||
|
|
||||||
|
// these are equal to the size of the SVG assets
|
||||||
|
$switch_height: 22px;
|
||||||
|
$switch_width: 46px;
|
||||||
|
|
||||||
|
.toggle-switch {
|
||||||
|
color: $fg_color;
|
||||||
|
height: $switch_height;
|
||||||
|
width: $switch_width;
|
||||||
|
background-size: contain;
|
||||||
|
background-image: if($variant == 'light', url("resource:///org/gnome/shell/theme/toggle-off.svg"),url("resource:///org/gnome/shell/theme/toggle-off-dark.svg"));
|
||||||
|
&:checked {
|
||||||
|
background-image: if($variant == 'light', url("resource:///org/gnome/shell/theme/toggle-on.svg"),url("resource:///org/gnome/shell/theme/toggle-on-dark.svg"));
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
|
||||||
|
/* Tiled window previews */
|
||||||
|
$tile_corner_radius: $base_border_radius + 1px;
|
||||||
|
.tile-preview {
|
||||||
|
background-color: transparentize($selected_bg_color,0.5);
|
||||||
|
border: 1px solid $selected_bg_color;
|
||||||
|
}
|
||||||
|
|
||||||
|
.tile-preview-left.on-primary {
|
||||||
|
border-radius: $tile_corner_radius 0 0 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.tile-preview-right.on-primary {
|
||||||
|
border-radius: 0 $tile_corner_radius 0 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.tile-preview-left.tile-preview-right.on-primary {
|
||||||
|
border-radius: $tile_corner_radius $tile_corner_radius 0 0;
|
||||||
|
}
|
||||||
@@ -0,0 +1,66 @@
|
|||||||
|
/* Window Picker */
|
||||||
|
|
||||||
|
$window_picker_spacing: $base_spacing * 2; // 16px
|
||||||
|
$window_picker_padding: $base_padding * 2; // 16px
|
||||||
|
|
||||||
|
$window_thumbnail_border_color:transparentize($selected_fg_color, 0.65);
|
||||||
|
|
||||||
|
$window_close_button_size: 24px;
|
||||||
|
$window_close_button_padding: 3px;
|
||||||
|
|
||||||
|
|
||||||
|
// Window picker
|
||||||
|
.window-picker {
|
||||||
|
// Space between window thumbnails
|
||||||
|
-horizontal-spacing: $window_picker_spacing;
|
||||||
|
-vertical-spacing: $window_picker_spacing;
|
||||||
|
// Padding for container around window thumbnails
|
||||||
|
padding: $window_picker_padding;
|
||||||
|
|
||||||
|
&.external-monitor { padding: $window_picker_padding; }
|
||||||
|
}
|
||||||
|
|
||||||
|
// Borders on window thumbnails
|
||||||
|
.window-clone-border {
|
||||||
|
border-width: 6px;
|
||||||
|
border-style: solid;
|
||||||
|
border-color: $window_thumbnail_border_color;
|
||||||
|
border-radius: $base_border_radius + 2;
|
||||||
|
// For window decorations with round corners we can't match
|
||||||
|
// the exact shape when the window is scaled. So apply a shadow
|
||||||
|
// to fix that case
|
||||||
|
box-shadow: inset 0 0 0 1px transparentize($borders_color, 0.8);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Window titles
|
||||||
|
.window-caption {
|
||||||
|
color: $osd_fg_color;
|
||||||
|
background-color: $osd_bg_color;
|
||||||
|
border:1px solid $osd_outer_borders_color;
|
||||||
|
border-radius: $base_border_radius + 1;
|
||||||
|
padding: $base_padding $base_padding * 2;
|
||||||
|
font-weight: bold;
|
||||||
|
@include fontsize($base_font_size + 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Close button
|
||||||
|
.window-close {
|
||||||
|
background-color: $selected_bg_color;
|
||||||
|
color: $selected_fg_color;
|
||||||
|
border: none;
|
||||||
|
border-radius: $window_close_button_size * 0.5 + $window_close_button_padding * 2;
|
||||||
|
padding: $window_close_button_padding;
|
||||||
|
height: $window_close_button_size;
|
||||||
|
width: $window_close_button_size;
|
||||||
|
box-shadow: -1px 1px 5px 0px rgba(0,0,0,0.5);
|
||||||
|
|
||||||
|
-shell-close-overlap: $window_close_button_size * 0.5;
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
background-color: lighten($selected_bg_color, 5%);
|
||||||
|
}
|
||||||
|
|
||||||
|
&:active {
|
||||||
|
background-color: darken($selected_bg_color, 5%);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,36 @@
|
|||||||
|
/* Workspace Switcher */
|
||||||
|
.workspace-switcher-group {
|
||||||
|
padding: $base_padding * 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
.workspace-switcher-container {
|
||||||
|
@extend %osd_panel;
|
||||||
|
}
|
||||||
|
|
||||||
|
.workspace-switcher {
|
||||||
|
background: transparent;
|
||||||
|
border: none;
|
||||||
|
border-radius: 0;
|
||||||
|
padding: 0;
|
||||||
|
spacing: $base_spacing * 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ws-switcher-box {
|
||||||
|
background: transparent;
|
||||||
|
height: 50px;
|
||||||
|
background-size: 32px;
|
||||||
|
border: 1px solid transparentize($osd_fg_color,0.9);
|
||||||
|
border-radius: $base_border_radius + 3px;
|
||||||
|
}
|
||||||
|
|
||||||
|
// active workspace in the switcher
|
||||||
|
.ws-switcher-active-up,
|
||||||
|
.ws-switcher-active-down,
|
||||||
|
.ws-switcher-active-left,
|
||||||
|
.ws-switcher-active-right {
|
||||||
|
height: 52px;
|
||||||
|
background-color: $selected_bg_color;
|
||||||
|
border: 1px solid if($variant=='light', darken($selected_bg_color, 8%), lighten($selected_bg_color, 5%));
|
||||||
|
border-radius: $base_border_radius + 3px;
|
||||||
|
color: $selected_fg_color;
|
||||||
|
}
|
||||||
@@ -0,0 +1,32 @@
|
|||||||
|
/* Workspace pager */
|
||||||
|
|
||||||
|
// thumbnails in overview
|
||||||
|
.workspace-thumbnails {
|
||||||
|
@extend %overview_panel;
|
||||||
|
visible-width: 32px; //amount visible before hover
|
||||||
|
spacing: $base_spacing;
|
||||||
|
padding: $base_padding;
|
||||||
|
|
||||||
|
border-radius: $modal_radius 0 0 $modal_radius;
|
||||||
|
border-right-width: 0;
|
||||||
|
|
||||||
|
&:rtl {
|
||||||
|
border-radius: 0 $modal_radius $modal_radius 0;
|
||||||
|
border-left-width: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
// drag and drop indicator
|
||||||
|
.placeholder {
|
||||||
|
background-image: url("resource:///org/gnome/shell/theme/dash-placeholder.svg");
|
||||||
|
background-size: contain;
|
||||||
|
height: 24px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// selected indicator
|
||||||
|
.workspace-thumbnail-indicator {
|
||||||
|
border: 3px solid $selected_bg_color;
|
||||||
|
border-radius: 3px;
|
||||||
|
padding: 0px;
|
||||||
|
// background-color: transparentize($selected_bg_color, 0.9);
|
||||||
|
}
|
||||||
@@ -1,62 +0,0 @@
|
|||||||
/* -*- mode: js; js-basic-offset: 4; indent-tabs-mode: nil -*- */
|
|
||||||
|
|
||||||
const Clutter = imports.gi.Clutter;
|
|
||||||
const Meta = imports.gi.Meta;
|
|
||||||
const Shell = imports.gi.Shell;
|
|
||||||
|
|
||||||
const AltTab = imports.ui.altTab;
|
|
||||||
const Main = imports.ui.main;
|
|
||||||
const WindowManager = imports.ui.windowManager;
|
|
||||||
|
|
||||||
let injections = {};
|
|
||||||
|
|
||||||
function init(metadata) {
|
|
||||||
}
|
|
||||||
|
|
||||||
function setKeybinding(name, func) {
|
|
||||||
Main.wm.setCustomKeybindingHandler(name, Shell.ActionMode.NORMAL, func);
|
|
||||||
}
|
|
||||||
|
|
||||||
function enable() {
|
|
||||||
injections['_keyPressHandler'] = AltTab.WindowSwitcherPopup.prototype._keyPressHandler;
|
|
||||||
AltTab.WindowSwitcherPopup.prototype._keyPressHandler = function(keysym, action) {
|
|
||||||
switch(action) {
|
|
||||||
case Meta.KeyBindingAction.SWITCH_APPLICATIONS:
|
|
||||||
action = Meta.KeyBindingAction.SWITCH_WINDOWS;
|
|
||||||
break;
|
|
||||||
case Meta.KeyBindingAction.SWITCH_APPLICATIONS_BACKWARD:
|
|
||||||
action = Meta.KeyBindingAction.SWITCH_WINDOWS_BACKWARD;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
return injections['_keyPressHandler'].call(this, keysym, action);
|
|
||||||
};
|
|
||||||
|
|
||||||
Main.wm._forcedWindowSwitcher = function(display, window, binding) {
|
|
||||||
/* prevent a corner case where both popups show up at once */
|
|
||||||
if (this._workspaceSwitcherPopup != null)
|
|
||||||
this._workspaceSwitcherPopup.destroy();
|
|
||||||
|
|
||||||
let tabPopup = new AltTab.WindowSwitcherPopup();
|
|
||||||
|
|
||||||
if (!tabPopup.show(binding.is_reversed(), binding.get_name(), binding.get_mask()))
|
|
||||||
tabPopup.destroy();
|
|
||||||
};
|
|
||||||
|
|
||||||
setKeybinding('switch-applications',
|
|
||||||
Main.wm._forcedWindowSwitcher.bind(Main.wm));
|
|
||||||
setKeybinding('switch-applications-backward',
|
|
||||||
Main.wm._forcedWindowSwitcher.bind(Main.wm));
|
|
||||||
}
|
|
||||||
|
|
||||||
function disable() {
|
|
||||||
var prop;
|
|
||||||
|
|
||||||
setKeybinding('switch-applications',
|
|
||||||
Main.wm._startSwitcher.bind(Main.wm));
|
|
||||||
setKeybinding('switch-applications-backward',
|
|
||||||
Main.wm._startSwitcher.bind(Main.wm));
|
|
||||||
|
|
||||||
for (prop in injections)
|
|
||||||
AltTab.WindowSwitcherPopup.prototype[prop] = injections[prop];
|
|
||||||
delete Main.wm._forcedWindowSwitcher;
|
|
||||||
}
|
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
{
|
|
||||||
"extension-id": "@extension_id@",
|
|
||||||
"uuid": "@uuid@",
|
|
||||||
"settings-schema": "@gschemaname@",
|
|
||||||
"gettext-domain": "@gettext_domain@",
|
|
||||||
"name": "AlternateTab",
|
|
||||||
"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's GitLab instance instead.",
|
|
||||||
"original-authors": [ "jw@bargsten.org", "thomas.bouffon@gmail.com" ],
|
|
||||||
"shell-version": [ "@shell_current@" ],
|
|
||||||
"url": "@url@"
|
|
||||||
}
|
|
||||||
@@ -1,81 +0,0 @@
|
|||||||
/* -*- 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 Gettext = imports.gettext.domain('gnome-shell-extensions');
|
|
||||||
const _ = Gettext.gettext;
|
|
||||||
const N_ = e => 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 = GObject.registerClass(
|
|
||||||
class AltTabSettingsWidget extends Gtk.Grid {
|
|
||||||
_init(params) {
|
|
||||||
super._init(params);
|
|
||||||
this.margin = 24;
|
|
||||||
this.row_spacing = 6;
|
|
||||||
this.orientation = Gtk.Orientation.VERTICAL;
|
|
||||||
|
|
||||||
this._settings = new Gio.Settings({ schema_id: 'org.gnome.shell.window-switcher' });
|
|
||||||
|
|
||||||
let presentLabel = '<b>' + _("Present windows as") + '</b>';
|
|
||||||
this.add(new Gtk.Label({ label: presentLabel, use_markup: true,
|
|
||||||
halign: Gtk.Align.START }));
|
|
||||||
|
|
||||||
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 });
|
|
||||||
align.add(grid);
|
|
||||||
|
|
||||||
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', widget => {
|
|
||||||
if (widget.active)
|
|
||||||
this._settings.set_string(SETTINGS_APP_ICON_MODE, modeCapture);
|
|
||||||
});
|
|
||||||
grid.add(radio);
|
|
||||||
|
|
||||||
if (mode == currentMode)
|
|
||||||
radio.active = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
let check = new Gtk.CheckButton({ label: _("Show only windows in the current workspace"),
|
|
||||||
margin_top: 6 });
|
|
||||||
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;
|
|
||||||
}
|
|
||||||
+205
-279
@@ -1,28 +1,20 @@
|
|||||||
/* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */
|
/* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */
|
||||||
|
/* exported init enable disable */
|
||||||
|
|
||||||
|
const {
|
||||||
|
Atk, Clutter, Gio, GLib, GMenu, GObject, Gtk, Meta, Shell, St,
|
||||||
|
} = imports.gi;
|
||||||
|
const Signals = imports.signals;
|
||||||
|
|
||||||
const Atk = imports.gi.Atk;
|
|
||||||
const DND = imports.ui.dnd;
|
const DND = imports.ui.dnd;
|
||||||
const GMenu = imports.gi.GMenu;
|
const ExtensionUtils = imports.misc.extensionUtils;
|
||||||
const Shell = imports.gi.Shell;
|
|
||||||
const St = imports.gi.St;
|
|
||||||
const Clutter = imports.gi.Clutter;
|
|
||||||
const Main = imports.ui.main;
|
const Main = imports.ui.main;
|
||||||
const Meta = imports.gi.Meta;
|
|
||||||
const PanelMenu = imports.ui.panelMenu;
|
const PanelMenu = imports.ui.panelMenu;
|
||||||
const PopupMenu = imports.ui.popupMenu;
|
const PopupMenu = imports.ui.popupMenu;
|
||||||
const Gtk = imports.gi.Gtk;
|
|
||||||
const GLib = imports.gi.GLib;
|
|
||||||
const Gio = imports.gi.Gio;
|
|
||||||
const Signals = imports.signals;
|
|
||||||
const Pango = imports.gi.Pango;
|
|
||||||
|
|
||||||
const Gettext = imports.gettext.domain('gnome-shell-extensions');
|
const Gettext = imports.gettext.domain('gnome-shell-extensions');
|
||||||
const _ = Gettext.gettext;
|
const _ = Gettext.gettext;
|
||||||
|
|
||||||
const ExtensionUtils = imports.misc.extensionUtils;
|
|
||||||
const Me = ExtensionUtils.getCurrentExtension();
|
|
||||||
const Convenience = Me.imports.convenience;
|
|
||||||
|
|
||||||
const appSys = Shell.AppSystem.get_default();
|
const appSys = Shell.AppSystem.get_default();
|
||||||
|
|
||||||
const APPLICATION_ICON_SIZE = 32;
|
const APPLICATION_ICON_SIZE = 32;
|
||||||
@@ -30,65 +22,53 @@ const HORIZ_FACTOR = 5;
|
|||||||
const MENU_HEIGHT_OFFSET = 132;
|
const MENU_HEIGHT_OFFSET = 132;
|
||||||
const NAVIGATION_REGION_OVERSHOOT = 50;
|
const NAVIGATION_REGION_OVERSHOOT = 50;
|
||||||
|
|
||||||
class ActivitiesMenuItem extends PopupMenu.PopupBaseMenuItem {
|
Gio._promisify(Gio._LocalFilePrototype, 'query_info_async', 'query_info_finish');
|
||||||
constructor(button) {
|
Gio._promisify(Gio._LocalFilePrototype, 'set_attributes_async', 'set_attributes_finish');
|
||||||
super();
|
|
||||||
this._button = button;
|
|
||||||
this.actor.add_child(new St.Label({ text: _("Activities Overview") }));
|
|
||||||
}
|
|
||||||
|
|
||||||
activate(event) {
|
|
||||||
this._button.menu.toggle();
|
|
||||||
Main.overview.toggle();
|
|
||||||
super.activate(event);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
|
var ApplicationMenuItem = GObject.registerClass(
|
||||||
class ApplicationMenuItem extends PopupMenu.PopupBaseMenuItem {
|
class ApplicationMenuItem extends PopupMenu.PopupBaseMenuItem {
|
||||||
constructor(button, app) {
|
_init(button, app) {
|
||||||
super();
|
super._init();
|
||||||
this._app = app;
|
this._app = app;
|
||||||
this._button = button;
|
this._button = button;
|
||||||
|
|
||||||
this._iconBin = new St.Bin();
|
this._iconBin = new St.Bin();
|
||||||
this.actor.add_child(this._iconBin);
|
this.add_child(this._iconBin);
|
||||||
|
|
||||||
let appLabel = new St.Label({ text: app.get_name(), y_expand: true,
|
let appLabel = new St.Label({
|
||||||
y_align: Clutter.ActorAlign.CENTER });
|
text: app.get_name(),
|
||||||
this.actor.add_child(appLabel);
|
y_expand: true,
|
||||||
this.actor.label_actor = appLabel;
|
y_align: Clutter.ActorAlign.CENTER,
|
||||||
|
});
|
||||||
|
this.add_child(appLabel);
|
||||||
|
this.label_actor = appLabel;
|
||||||
|
|
||||||
let textureCache = St.TextureCache.get_default();
|
let textureCache = St.TextureCache.get_default();
|
||||||
let iconThemeChangedId = textureCache.connect('icon-theme-changed',
|
let iconThemeChangedId = textureCache.connect('icon-theme-changed',
|
||||||
this._updateIcon.bind(this));
|
this._updateIcon.bind(this));
|
||||||
this.actor.connect('destroy', () => {
|
this.connect('destroy', () => {
|
||||||
textureCache.disconnect(iconThemeChangedId);
|
textureCache.disconnect(iconThemeChangedId);
|
||||||
});
|
});
|
||||||
this._updateIcon();
|
this._updateIcon();
|
||||||
|
|
||||||
this.actor._delegate = this;
|
this._delegate = this;
|
||||||
let draggable = DND.makeDraggable(this.actor);
|
let draggable = DND.makeDraggable(this);
|
||||||
|
|
||||||
let maybeStartDrag = draggable._maybeStartDrag;
|
let maybeStartDrag = draggable._maybeStartDrag;
|
||||||
draggable._maybeStartDrag = (event) => {
|
draggable._maybeStartDrag = event => {
|
||||||
if (this._dragEnabled)
|
if (this._dragEnabled)
|
||||||
return maybeStartDrag.call(draggable, event);
|
return maybeStartDrag.call(draggable, event);
|
||||||
return false;
|
return false;
|
||||||
};
|
};
|
||||||
|
|
||||||
draggable.connect('drag-begin', () => {
|
|
||||||
Shell.util_set_hidden_from_pick(Main.legacyTray.actor, true);
|
|
||||||
});
|
|
||||||
draggable.connect('drag-end', () => {
|
|
||||||
Shell.util_set_hidden_from_pick(Main.legacyTray.actor, false);
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
activate(event) {
|
activate(event) {
|
||||||
this._app.open_new_window(-1);
|
this._app.open_new_window(-1);
|
||||||
this._button.selectCategory(null, null);
|
this._button.selectCategory(null);
|
||||||
this._button.menu.toggle();
|
this._button.menu.toggle();
|
||||||
super.activate(event);
|
super.activate(event);
|
||||||
|
|
||||||
|
Main.overview.hide();
|
||||||
}
|
}
|
||||||
|
|
||||||
setActive(active, params) {
|
setActive(active, params) {
|
||||||
@@ -97,8 +77,8 @@ class ApplicationMenuItem extends PopupMenu.PopupBaseMenuItem {
|
|||||||
super.setActive(active, params);
|
super.setActive(active, params);
|
||||||
}
|
}
|
||||||
|
|
||||||
setDragEnabled(enable) {
|
setDragEnabled(enabled) {
|
||||||
this._dragEnabled = enable;
|
this._dragEnabled = enabled;
|
||||||
}
|
}
|
||||||
|
|
||||||
getDragActor() {
|
getDragActor() {
|
||||||
@@ -110,13 +90,16 @@ class ApplicationMenuItem extends PopupMenu.PopupBaseMenuItem {
|
|||||||
}
|
}
|
||||||
|
|
||||||
_updateIcon() {
|
_updateIcon() {
|
||||||
this._iconBin.set_child(this.getDragActor());
|
let icon = this.getDragActor();
|
||||||
|
icon.style_class = 'icon-dropshadow';
|
||||||
|
this._iconBin.set_child(icon);
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
|
|
||||||
|
var CategoryMenuItem = GObject.registerClass(
|
||||||
class CategoryMenuItem extends PopupMenu.PopupBaseMenuItem {
|
class CategoryMenuItem extends PopupMenu.PopupBaseMenuItem {
|
||||||
constructor(button, category) {
|
_init(button, category) {
|
||||||
super();
|
super._init();
|
||||||
this._category = category;
|
this._category = category;
|
||||||
this._button = button;
|
this._button = button;
|
||||||
|
|
||||||
@@ -127,22 +110,23 @@ class CategoryMenuItem extends PopupMenu.PopupBaseMenuItem {
|
|||||||
if (this._category)
|
if (this._category)
|
||||||
name = this._category.get_name();
|
name = this._category.get_name();
|
||||||
else
|
else
|
||||||
name = _("Favorites");
|
name = _('Favorites');
|
||||||
|
|
||||||
this.actor.add_child(new St.Label({ text: name }));
|
this.add_child(new St.Label({ text: name }));
|
||||||
this.actor.connect('motion-event', this._onMotionEvent.bind(this));
|
this.connect('motion-event', this._onMotionEvent.bind(this));
|
||||||
|
this.connect('notify::active', this._onActiveChanged.bind(this));
|
||||||
}
|
}
|
||||||
|
|
||||||
activate(event) {
|
activate(event) {
|
||||||
this._button.selectCategory(this._category, this);
|
this._button.selectCategory(this._category);
|
||||||
this._button.scrollToCatButton(this);
|
this._button.scrollToCatButton(this);
|
||||||
super.activate(event);
|
super.activate(event);
|
||||||
}
|
}
|
||||||
|
|
||||||
_isNavigatingSubmenu([x, y]) {
|
_isNavigatingSubmenu([x, y]) {
|
||||||
let [posX, posY] = this.actor.get_transformed_position();
|
let [posX, posY] = this.get_transformed_position();
|
||||||
|
|
||||||
if (this._oldX == -1) {
|
if (this._oldX === -1) {
|
||||||
this._oldX = x;
|
this._oldX = x;
|
||||||
this._oldY = y;
|
this._oldY = y;
|
||||||
return true;
|
return true;
|
||||||
@@ -155,11 +139,11 @@ class CategoryMenuItem extends PopupMenu.PopupBaseMenuItem {
|
|||||||
this._oldY = y;
|
this._oldY = y;
|
||||||
|
|
||||||
// If it lies outside the x-coordinates then it is definitely outside.
|
// If it lies outside the x-coordinates then it is definitely outside.
|
||||||
if (posX > x || posX + this.actor.width < x)
|
if (posX > x || posX + this.width < x)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
// If it lies inside the menu item then it is definitely inside.
|
// If it lies inside the menu item then it is definitely inside.
|
||||||
if (posY <= y && posY + this.actor.height >= y)
|
if (posY <= y && posY + this.height >= y)
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
// We want the keep-up triangle only if the movement is more
|
// We want the keep-up triangle only if the movement is more
|
||||||
@@ -180,37 +164,38 @@ class CategoryMenuItem extends PopupMenu.PopupBaseMenuItem {
|
|||||||
// only check for triangle ABC.
|
// only check for triangle ABC.
|
||||||
if (posY > y) {
|
if (posY > y) {
|
||||||
let offset = posY - y;
|
let offset = posY - y;
|
||||||
y = posY + this.actor.height + offset;
|
y = posY + this.height + offset;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Ensure that A is (0, 0).
|
// Ensure that A is (0, 0).
|
||||||
x -= posX;
|
x -= posX;
|
||||||
y -= posY + this.actor.height;
|
y -= posY + this.height;
|
||||||
|
|
||||||
// Check which side of line AB the point P lies on by taking the
|
// Check which side of line AB the point P lies on by taking the
|
||||||
// cross-product of AB and AP. See:
|
// cross-product of AB and AP. See:
|
||||||
// http://stackoverflow.com/questions/3461453/determine-which-side-of-a-line-a-point-lies
|
// http://stackoverflow.com/questions/3461453/determine-which-side-of-a-line-a-point-lies
|
||||||
if (((this.actor.width * y) - (NAVIGATION_REGION_OVERSHOOT * x)) <= 0)
|
if (this.width * y - NAVIGATION_REGION_OVERSHOOT * x <= 0)
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
_onMotionEvent(actor, event) {
|
_onMotionEvent(actor, event) {
|
||||||
if (!Clutter.get_pointer_grab()) {
|
let device = event.get_device();
|
||||||
|
if (!device.get_grabbed_actor()) {
|
||||||
this._oldX = -1;
|
this._oldX = -1;
|
||||||
this._oldY = -1;
|
this._oldY = -1;
|
||||||
Clutter.grab_pointer(this.actor);
|
device.grab(this);
|
||||||
}
|
}
|
||||||
this.actor.hover = true;
|
this.hover = true;
|
||||||
|
|
||||||
if (this._isNavigatingSubmenu(event.get_coords()))
|
if (this._isNavigatingSubmenu(event.get_coords()))
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
this._oldX = -1;
|
this._oldX = -1;
|
||||||
this._oldY = -1;
|
this._oldY = -1;
|
||||||
this.actor.hover = false;
|
this.hover = false;
|
||||||
Clutter.ungrab_pointer();
|
device.ungrab();
|
||||||
|
|
||||||
let source = event.get_source();
|
let source = event.get_source();
|
||||||
if (source instanceof St.Widget)
|
if (source instanceof St.Widget)
|
||||||
@@ -219,14 +204,14 @@ class CategoryMenuItem extends PopupMenu.PopupBaseMenuItem {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
setActive(active, params) {
|
_onActiveChanged() {
|
||||||
if (active) {
|
if (!this.active)
|
||||||
this._button.selectCategory(this._category, this);
|
return;
|
||||||
this._button.scrollToCatButton(this);
|
|
||||||
}
|
this._button.selectCategory(this._category);
|
||||||
super.setActive(active, params);
|
this._button.scrollToCatButton(this);
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
|
|
||||||
class ApplicationsMenu extends PopupMenu.PopupMenu {
|
class ApplicationsMenu extends PopupMenu.PopupMenu {
|
||||||
constructor(sourceActor, arrowAlignment, arrowSide, button) {
|
constructor(sourceActor, arrowAlignment, arrowSide, button) {
|
||||||
@@ -238,31 +223,12 @@ class ApplicationsMenu extends PopupMenu.PopupMenu {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
open(animate) {
|
|
||||||
this._button.hotCorner.setBarrierSize(0);
|
|
||||||
if (this._button.hotCorner.actor) // fallback corner
|
|
||||||
this._button.hotCorner.actor.hide();
|
|
||||||
super.open(animate);
|
|
||||||
}
|
|
||||||
|
|
||||||
close(animate) {
|
|
||||||
let size = Main.layoutManager.panelBox.height;
|
|
||||||
this._button.hotCorner.setBarrierSize(size);
|
|
||||||
if (this._button.hotCorner.actor) // fallback corner
|
|
||||||
this._button.hotCorner.actor.show();
|
|
||||||
super.close(animate);
|
|
||||||
}
|
|
||||||
|
|
||||||
toggle() {
|
toggle() {
|
||||||
if (this.isOpen) {
|
if (this.isOpen)
|
||||||
this._button.selectCategory(null, null);
|
this._button.selectCategory(null);
|
||||||
} else {
|
|
||||||
if (Main.overview.visible)
|
|
||||||
Main.overview.hide();
|
|
||||||
}
|
|
||||||
super.toggle();
|
super.toggle();
|
||||||
}
|
}
|
||||||
};
|
}
|
||||||
|
|
||||||
class DesktopTarget {
|
class DesktopTarget {
|
||||||
constructor() {
|
constructor() {
|
||||||
@@ -271,7 +237,7 @@ class DesktopTarget {
|
|||||||
|
|
||||||
this._windowAddedId =
|
this._windowAddedId =
|
||||||
global.window_group.connect('actor-added',
|
global.window_group.connect('actor-added',
|
||||||
this._onWindowAdded.bind(this));
|
this._onWindowAdded.bind(this));
|
||||||
|
|
||||||
global.get_window_actors().forEach(a => {
|
global.get_window_actors().forEach(a => {
|
||||||
this._onWindowAdded(a.get_parent(), a);
|
this._onWindowAdded(a.get_parent(), a);
|
||||||
@@ -279,14 +245,14 @@ class DesktopTarget {
|
|||||||
}
|
}
|
||||||
|
|
||||||
get hasDesktop() {
|
get hasDesktop() {
|
||||||
return this._desktop != null;
|
return this._desktop !== null;
|
||||||
}
|
}
|
||||||
|
|
||||||
_onWindowAdded(group, actor) {
|
_onWindowAdded(group, actor) {
|
||||||
if (!(actor instanceof Meta.WindowActor))
|
if (!(actor instanceof Meta.WindowActor))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (actor.meta_window.get_window_type() == Meta.WindowType.DESKTOP)
|
if (actor.meta_window.get_window_type() === Meta.WindowType.DESKTOP)
|
||||||
this._setDesktop(actor);
|
this._setDesktop(actor);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -315,48 +281,32 @@ class DesktopTarget {
|
|||||||
return source._app.app_info;
|
return source._app.app_info;
|
||||||
}
|
}
|
||||||
|
|
||||||
_touchFile(file) {
|
async _markTrusted(file) {
|
||||||
let queryFlags = Gio.FileQueryInfoFlags.NONE;
|
|
||||||
let ioPriority = GLib.PRIORITY_DEFAULT;
|
|
||||||
|
|
||||||
let info = new Gio.FileInfo();
|
|
||||||
info.set_attribute_uint64(Gio.FILE_ATTRIBUTE_TIME_ACCESS,
|
|
||||||
GLib.get_real_time());
|
|
||||||
file.set_attributes_async (info, queryFlags, ioPriority, null,
|
|
||||||
(o, res) => {
|
|
||||||
try {
|
|
||||||
o.set_attributes_finish(res);
|
|
||||||
} catch(e) {
|
|
||||||
log('Failed to update access time: ' + e.message);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
_markTrusted(file) {
|
|
||||||
let modeAttr = Gio.FILE_ATTRIBUTE_UNIX_MODE;
|
let modeAttr = Gio.FILE_ATTRIBUTE_UNIX_MODE;
|
||||||
let trustedAttr = 'metadata::trusted';
|
let trustedAttr = 'metadata::trusted';
|
||||||
let queryFlags = Gio.FileQueryInfoFlags.NONE;
|
let queryFlags = Gio.FileQueryInfoFlags.NONE;
|
||||||
let ioPriority = GLib.PRIORITY_DEFAULT;
|
let ioPriority = GLib.PRIORITY_DEFAULT;
|
||||||
|
|
||||||
file.query_info_async(modeAttr, queryFlags, ioPriority, null,
|
try {
|
||||||
(o, res) => {
|
let info = await file.query_info_async(modeAttr, queryFlags, ioPriority, null);
|
||||||
try {
|
|
||||||
let info = o.query_info_finish(res);
|
|
||||||
let mode = info.get_attribute_uint32(modeAttr) | 0o100;
|
|
||||||
|
|
||||||
info.set_attribute_uint32(modeAttr, mode);
|
let mode = info.get_attribute_uint32(modeAttr) | 0o100;
|
||||||
info.set_attribute_string(trustedAttr, 'yes');
|
info.set_attribute_uint32(modeAttr, mode);
|
||||||
file.set_attributes_async (info, queryFlags, ioPriority, null,
|
info.set_attribute_string(trustedAttr, 'yes');
|
||||||
(o, res) => {
|
await file.set_attributes_async(info, queryFlags, ioPriority, null);
|
||||||
o.set_attributes_finish(res);
|
|
||||||
|
|
||||||
// Hack: force nautilus to reload file info
|
// Hack: force nautilus to reload file info
|
||||||
this._touchFile(file);
|
info = new Gio.FileInfo();
|
||||||
});
|
info.set_attribute_uint64(
|
||||||
} catch(e) {
|
Gio.FILE_ATTRIBUTE_TIME_ACCESS, GLib.get_real_time());
|
||||||
log('Failed to mark file as trusted: ' + e.message);
|
try {
|
||||||
}
|
await file.set_attributes_async(info, queryFlags, ioPriority, null);
|
||||||
});
|
} catch (e) {
|
||||||
|
log(`Failed to update access time: ${e.message}`);
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
log(`Failed to mark file as trusted: ${e.message}`);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
destroy() {
|
destroy() {
|
||||||
@@ -367,7 +317,7 @@ class DesktopTarget {
|
|||||||
this._setDesktop(null);
|
this._setDesktop(null);
|
||||||
}
|
}
|
||||||
|
|
||||||
handleDragOver(source, actor, x, y, time) {
|
handleDragOver(source, _actor, _x, _y, _time) {
|
||||||
let appInfo = this._getSourceAppInfo(source);
|
let appInfo = this._getSourceAppInfo(source);
|
||||||
if (!appInfo)
|
if (!appInfo)
|
||||||
return DND.DragMotionResult.CONTINUE;
|
return DND.DragMotionResult.CONTINUE;
|
||||||
@@ -375,7 +325,7 @@ class DesktopTarget {
|
|||||||
return DND.DragMotionResult.COPY_DROP;
|
return DND.DragMotionResult.COPY_DROP;
|
||||||
}
|
}
|
||||||
|
|
||||||
acceptDrop(source, actor, x, y, time) {
|
acceptDrop(source, _actor, _x, _y, _time) {
|
||||||
let appInfo = this._getSourceAppInfo(source);
|
let appInfo = this._getSourceAppInfo(source);
|
||||||
if (!appInfo)
|
if (!appInfo)
|
||||||
return false;
|
return false;
|
||||||
@@ -391,50 +341,50 @@ class DesktopTarget {
|
|||||||
// copy_async() isn't introspectable :-(
|
// copy_async() isn't introspectable :-(
|
||||||
src.copy(dst, Gio.FileCopyFlags.OVERWRITE, null, null);
|
src.copy(dst, Gio.FileCopyFlags.OVERWRITE, null, null);
|
||||||
this._markTrusted(dst);
|
this._markTrusted(dst);
|
||||||
} catch(e) {
|
} catch (e) {
|
||||||
log('Failed to copy to desktop: ' + e.message);
|
log(`Failed to copy to desktop: ${e.message}`);
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
};
|
}
|
||||||
Signals.addSignalMethods(DesktopTarget.prototype);
|
Signals.addSignalMethods(DesktopTarget.prototype);
|
||||||
|
|
||||||
|
let ApplicationsButton = GObject.registerClass(
|
||||||
class ApplicationsButton extends PanelMenu.Button {
|
class ApplicationsButton extends PanelMenu.Button {
|
||||||
constructor() {
|
_init() {
|
||||||
super(1.0, null, false);
|
super._init(1.0, null, false);
|
||||||
|
|
||||||
this.setMenu(new ApplicationsMenu(this.actor, 1.0, St.Side.TOP, this));
|
this.setMenu(new ApplicationsMenu(this, 1.0, St.Side.TOP, this));
|
||||||
Main.panel.menuManager.addMenu(this.menu);
|
Main.panel.menuManager.addMenu(this.menu);
|
||||||
|
|
||||||
// At this moment applications menu is not keyboard navigable at
|
// At this moment applications menu is not keyboard navigable at
|
||||||
// all (so not accessible), so it doesn't make sense to set as
|
// all (so not accessible), so it doesn't make sense to set as
|
||||||
// role ATK_ROLE_MENU like other elements of the panel.
|
// role ATK_ROLE_MENU like other elements of the panel.
|
||||||
this.actor.accessible_role = Atk.Role.LABEL;
|
this.accessible_role = Atk.Role.LABEL;
|
||||||
|
|
||||||
let hbox = new St.BoxLayout({ style_class: 'panel-status-menu-box' });
|
let hbox = new St.BoxLayout({ style_class: 'panel-status-menu-box' });
|
||||||
|
|
||||||
this._label = new St.Label({ text: _("Applications"),
|
this._label = new St.Label({
|
||||||
y_expand: true,
|
text: _('Applications'),
|
||||||
y_align: Clutter.ActorAlign.CENTER });
|
y_expand: true,
|
||||||
|
y_align: Clutter.ActorAlign.CENTER,
|
||||||
|
});
|
||||||
hbox.add_child(this._label);
|
hbox.add_child(this._label);
|
||||||
hbox.add_child(PopupMenu.arrowIcon(St.Side.BOTTOM));
|
hbox.add_child(PopupMenu.arrowIcon(St.Side.BOTTOM));
|
||||||
|
|
||||||
this.actor.add_actor(hbox);
|
this.add_actor(hbox);
|
||||||
this.actor.name = 'panelApplications';
|
this.name = 'panelApplications';
|
||||||
this.actor.label_actor = this._label;
|
this.label_actor = this._label;
|
||||||
|
|
||||||
this.actor.connect('captured-event', this._onCapturedEvent.bind(this));
|
|
||||||
this.actor.connect('destroy', this._onDestroy.bind(this));
|
|
||||||
|
|
||||||
this._showingId = Main.overview.connect('showing', () => {
|
this._showingId = Main.overview.connect('showing', () => {
|
||||||
this.actor.add_accessible_state (Atk.StateType.CHECKED);
|
this.add_accessible_state(Atk.StateType.CHECKED);
|
||||||
});
|
});
|
||||||
this._hidingId = Main.overview.connect('hiding', () => {
|
this._hidingId = Main.overview.connect('hiding', () => {
|
||||||
this.actor.remove_accessible_state (Atk.StateType.CHECKED);
|
this.remove_accessible_state(Atk.StateType.CHECKED);
|
||||||
});
|
});
|
||||||
Main.layoutManager.connect('startup-complete',
|
Main.layoutManager.connect('startup-complete',
|
||||||
this._setKeybinding.bind(this));
|
this._setKeybinding.bind(this));
|
||||||
this._setKeybinding();
|
this._setKeybinding();
|
||||||
|
|
||||||
this._desktopTarget = new DesktopTarget();
|
this._desktopTarget = new DesktopTarget();
|
||||||
@@ -449,14 +399,14 @@ class ApplicationsButton extends PanelMenu.Button {
|
|||||||
|
|
||||||
this._tree = new GMenu.Tree({ menu_basename: 'applications.menu' });
|
this._tree = new GMenu.Tree({ menu_basename: 'applications.menu' });
|
||||||
this._treeChangedId = this._tree.connect('changed',
|
this._treeChangedId = this._tree.connect('changed',
|
||||||
this._onTreeChanged.bind(this));
|
this._onTreeChanged.bind(this));
|
||||||
|
|
||||||
this._applicationsButtons = new Map();
|
this._applicationsButtons = new Map();
|
||||||
this.reloadFlag = false;
|
this.reloadFlag = false;
|
||||||
this._createLayout();
|
this._createLayout();
|
||||||
this._display();
|
this._display();
|
||||||
this._installedChangedId = appSys.connect('installed-changed',
|
this._installedChangedId = appSys.connect('installed-changed',
|
||||||
this._onTreeChanged.bind(this));
|
this._onTreeChanged.bind(this));
|
||||||
}
|
}
|
||||||
|
|
||||||
_onTreeChanged() {
|
_onTreeChanged() {
|
||||||
@@ -468,18 +418,18 @@ class ApplicationsButton extends PanelMenu.Button {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
get hotCorner() {
|
|
||||||
return Main.layoutManager.hotCorners[Main.layoutManager.primaryIndex];
|
|
||||||
}
|
|
||||||
|
|
||||||
_createVertSeparator() {
|
_createVertSeparator() {
|
||||||
let separator = new St.DrawingArea({ style_class: 'calendar-vertical-separator',
|
let separator = new St.DrawingArea({
|
||||||
pseudo_class: 'highlighted' });
|
style_class: 'calendar-vertical-separator',
|
||||||
|
pseudo_class: 'highlighted',
|
||||||
|
});
|
||||||
separator.connect('repaint', this._onVertSepRepaint.bind(this));
|
separator.connect('repaint', this._onVertSepRepaint.bind(this));
|
||||||
return separator;
|
return separator;
|
||||||
}
|
}
|
||||||
|
|
||||||
_onDestroy() {
|
_onDestroy() {
|
||||||
|
super._onDestroy();
|
||||||
|
|
||||||
Main.overview.disconnect(this._showingId);
|
Main.overview.disconnect(this._showingId);
|
||||||
Main.overview.disconnect(this._hidingId);
|
Main.overview.disconnect(this._hidingId);
|
||||||
appSys.disconnect(this._installedChangedId);
|
appSys.disconnect(this._installedChangedId);
|
||||||
@@ -487,28 +437,19 @@ class ApplicationsButton extends PanelMenu.Button {
|
|||||||
this._tree = null;
|
this._tree = null;
|
||||||
|
|
||||||
Main.wm.setCustomKeybindingHandler('panel-main-menu',
|
Main.wm.setCustomKeybindingHandler('panel-main-menu',
|
||||||
Shell.ActionMode.NORMAL |
|
Shell.ActionMode.NORMAL | Shell.ActionMode.OVERVIEW,
|
||||||
Shell.ActionMode.OVERVIEW,
|
Main.sessionMode.hasOverview
|
||||||
Main.sessionMode.hasOverview ?
|
? Main.overview.toggle.bind(Main.overview)
|
||||||
Main.overview.toggle.bind(Main.overview) :
|
: null);
|
||||||
null);
|
|
||||||
|
|
||||||
this._desktopTarget.destroy();
|
this._desktopTarget.destroy();
|
||||||
}
|
}
|
||||||
|
|
||||||
_onCapturedEvent(actor, event) {
|
|
||||||
if (event.type() == Clutter.EventType.BUTTON_PRESS) {
|
|
||||||
if (!Main.overview.shouldToggleByCornerOrButton())
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
_onMenuKeyPress(actor, event) {
|
_onMenuKeyPress(actor, event) {
|
||||||
let symbol = event.get_key_symbol();
|
let symbol = event.get_key_symbol();
|
||||||
if (symbol == Clutter.KEY_Left || symbol == Clutter.KEY_Right) {
|
if (symbol === Clutter.KEY_Left || symbol === Clutter.KEY_Right) {
|
||||||
let direction = symbol == Clutter.KEY_Left ? Gtk.DirectionType.LEFT
|
let direction = symbol === Clutter.KEY_Left
|
||||||
: Gtk.DirectionType.RIGHT;
|
? Gtk.DirectionType.LEFT : Gtk.DirectionType.RIGHT;
|
||||||
if (this.menu.actor.navigate_focus(global.stage.key_focus, direction, false))
|
if (this.menu.actor.navigate_focus(global.stage.key_focus, direction, false))
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -521,7 +462,7 @@ class ApplicationsButton extends PanelMenu.Button {
|
|||||||
let [width, height] = area.get_surface_size();
|
let [width, height] = area.get_surface_size();
|
||||||
let stippleColor = themeNode.get_color('-stipple-color');
|
let stippleColor = themeNode.get_color('-stipple-color');
|
||||||
let stippleWidth = themeNode.get_length('-stipple-width');
|
let stippleWidth = themeNode.get_length('-stipple-width');
|
||||||
let x = Math.floor(width/2) + 0.5;
|
let x = Math.floor(width / 2) + 0.5;
|
||||||
cr.moveTo(x, 0);
|
cr.moveTo(x, 0);
|
||||||
cr.lineTo(x, height);
|
cr.lineTo(x, height);
|
||||||
Clutter.cairo_set_source_color(cr, stippleColor);
|
Clutter.cairo_set_source_color(cr, stippleColor);
|
||||||
@@ -531,21 +472,20 @@ class ApplicationsButton extends PanelMenu.Button {
|
|||||||
}
|
}
|
||||||
|
|
||||||
_onOpenStateChanged(menu, open) {
|
_onOpenStateChanged(menu, open) {
|
||||||
if (open) {
|
if (open) {
|
||||||
if (this.reloadFlag) {
|
if (this.reloadFlag) {
|
||||||
this._redisplay();
|
this._redisplay();
|
||||||
this.reloadFlag = false;
|
this.reloadFlag = false;
|
||||||
}
|
}
|
||||||
this.mainBox.show();
|
this.mainBox.show();
|
||||||
}
|
}
|
||||||
super._onOpenStateChanged(menu, open);
|
super._onOpenStateChanged(menu, open);
|
||||||
}
|
}
|
||||||
|
|
||||||
_setKeybinding() {
|
_setKeybinding() {
|
||||||
Main.wm.setCustomKeybindingHandler('panel-main-menu',
|
Main.wm.setCustomKeybindingHandler('panel-main-menu',
|
||||||
Shell.ActionMode.NORMAL |
|
Shell.ActionMode.NORMAL | Shell.ActionMode.OVERVIEW,
|
||||||
Shell.ActionMode.OVERVIEW,
|
() => this.menu.toggle());
|
||||||
() => { this.menu.toggle(); });
|
|
||||||
}
|
}
|
||||||
|
|
||||||
_redisplay() {
|
_redisplay() {
|
||||||
@@ -557,13 +497,13 @@ class ApplicationsButton extends PanelMenu.Button {
|
|||||||
_loadCategory(categoryId, dir) {
|
_loadCategory(categoryId, dir) {
|
||||||
let iter = dir.iter();
|
let iter = dir.iter();
|
||||||
let nextType;
|
let nextType;
|
||||||
while ((nextType = iter.next()) != GMenu.TreeItemType.INVALID) {
|
while ((nextType = iter.next()) !== GMenu.TreeItemType.INVALID) {
|
||||||
if (nextType == GMenu.TreeItemType.ENTRY) {
|
if (nextType === GMenu.TreeItemType.ENTRY) {
|
||||||
let entry = iter.get_entry();
|
let entry = iter.get_entry();
|
||||||
let id;
|
let id;
|
||||||
try {
|
try {
|
||||||
id = entry.get_desktop_file_id(); // catch non-UTF8 filenames
|
id = entry.get_desktop_file_id(); // catch non-UTF8 filenames
|
||||||
} catch(e) {
|
} catch (e) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
let app = appSys.lookup_app(id);
|
let app = appSys.lookup_app(id);
|
||||||
@@ -571,9 +511,9 @@ class ApplicationsButton extends PanelMenu.Button {
|
|||||||
app = new Shell.App({ app_info: entry.get_app_info() });
|
app = new Shell.App({ app_info: entry.get_app_info() });
|
||||||
if (app.get_app_info().should_show())
|
if (app.get_app_info().should_show())
|
||||||
this.applicationsByCategory[categoryId].push(app);
|
this.applicationsByCategory[categoryId].push(app);
|
||||||
} else if (nextType == GMenu.TreeItemType.SEPARATOR) {
|
} else if (nextType === GMenu.TreeItemType.SEPARATOR) {
|
||||||
this.applicationsByCategory[categoryId].push('separator');
|
this.applicationsByCategory[categoryId].push('separator');
|
||||||
} else if (nextType == GMenu.TreeItemType.DIRECTORY) {
|
} else if (nextType === GMenu.TreeItemType.DIRECTORY) {
|
||||||
let subdir = iter.get_directory();
|
let subdir = iter.get_directory();
|
||||||
if (!subdir.get_is_nodisplay())
|
if (!subdir.get_is_nodisplay())
|
||||||
this._loadCategory(categoryId, subdir);
|
this._loadCategory(categoryId, subdir);
|
||||||
@@ -586,13 +526,13 @@ class ApplicationsButton extends PanelMenu.Button {
|
|||||||
let appsScrollBoxAlloc = this.applicationsScrollBox.get_allocation_box();
|
let appsScrollBoxAlloc = this.applicationsScrollBox.get_allocation_box();
|
||||||
let currentScrollValue = appsScrollBoxAdj.get_value();
|
let currentScrollValue = appsScrollBoxAdj.get_value();
|
||||||
let boxHeight = appsScrollBoxAlloc.y2 - appsScrollBoxAlloc.y1;
|
let boxHeight = appsScrollBoxAlloc.y2 - appsScrollBoxAlloc.y1;
|
||||||
let buttonAlloc = button.actor.get_allocation_box();
|
let buttonAlloc = button.get_allocation_box();
|
||||||
let newScrollValue = currentScrollValue;
|
let newScrollValue = currentScrollValue;
|
||||||
if (currentScrollValue > buttonAlloc.y1 - 10)
|
if (currentScrollValue > buttonAlloc.y1 - 10)
|
||||||
newScrollValue = buttonAlloc.y1 - 10;
|
newScrollValue = buttonAlloc.y1 - 10;
|
||||||
if (boxHeight + currentScrollValue < buttonAlloc.y2 + 10)
|
if (boxHeight + currentScrollValue < buttonAlloc.y2 + 10)
|
||||||
newScrollValue = buttonAlloc.y2 - boxHeight + 10;
|
newScrollValue = buttonAlloc.y2 - boxHeight + 10;
|
||||||
if (newScrollValue != currentScrollValue)
|
if (newScrollValue !== currentScrollValue)
|
||||||
appsScrollBoxAdj.set_value(newScrollValue);
|
appsScrollBoxAdj.set_value(newScrollValue);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -601,13 +541,13 @@ class ApplicationsButton extends PanelMenu.Button {
|
|||||||
let catsScrollBoxAlloc = this.categoriesScrollBox.get_allocation_box();
|
let catsScrollBoxAlloc = this.categoriesScrollBox.get_allocation_box();
|
||||||
let currentScrollValue = catsScrollBoxAdj.get_value();
|
let currentScrollValue = catsScrollBoxAdj.get_value();
|
||||||
let boxHeight = catsScrollBoxAlloc.y2 - catsScrollBoxAlloc.y1;
|
let boxHeight = catsScrollBoxAlloc.y2 - catsScrollBoxAlloc.y1;
|
||||||
let buttonAlloc = button.actor.get_allocation_box();
|
let buttonAlloc = button.get_allocation_box();
|
||||||
let newScrollValue = currentScrollValue;
|
let newScrollValue = currentScrollValue;
|
||||||
if (currentScrollValue > buttonAlloc.y1 - 10)
|
if (currentScrollValue > buttonAlloc.y1 - 10)
|
||||||
newScrollValue = buttonAlloc.y1 - 10;
|
newScrollValue = buttonAlloc.y1 - 10;
|
||||||
if (boxHeight + currentScrollValue < buttonAlloc.y2 + 10)
|
if (boxHeight + currentScrollValue < buttonAlloc.y2 + 10)
|
||||||
newScrollValue = buttonAlloc.y2 - boxHeight + 10;
|
newScrollValue = buttonAlloc.y2 - boxHeight + 10;
|
||||||
if (newScrollValue != currentScrollValue)
|
if (newScrollValue !== currentScrollValue)
|
||||||
catsScrollBoxAdj.set_value(newScrollValue);
|
catsScrollBoxAdj.set_value(newScrollValue);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -616,9 +556,10 @@ class ApplicationsButton extends PanelMenu.Button {
|
|||||||
this.menu.addMenuItem(section);
|
this.menu.addMenuItem(section);
|
||||||
this.mainBox = new St.BoxLayout({ vertical: false });
|
this.mainBox = new St.BoxLayout({ vertical: false });
|
||||||
this.leftBox = new St.BoxLayout({ vertical: true });
|
this.leftBox = new St.BoxLayout({ vertical: true });
|
||||||
this.applicationsScrollBox = new St.ScrollView({ x_fill: true, y_fill: false,
|
this.applicationsScrollBox = new St.ScrollView({
|
||||||
y_align: St.Align.START,
|
style_class: 'apps-menu vfade',
|
||||||
style_class: 'apps-menu vfade' });
|
x_expand: true,
|
||||||
|
});
|
||||||
this.applicationsScrollBox.set_policy(Gtk.PolicyType.NEVER, Gtk.PolicyType.AUTOMATIC);
|
this.applicationsScrollBox.set_policy(Gtk.PolicyType.NEVER, Gtk.PolicyType.AUTOMATIC);
|
||||||
let vscroll = this.applicationsScrollBox.get_vscroll_bar();
|
let vscroll = this.applicationsScrollBox.get_vscroll_bar();
|
||||||
vscroll.connect('scroll-start', () => {
|
vscroll.connect('scroll-start', () => {
|
||||||
@@ -627,21 +568,14 @@ class ApplicationsButton extends PanelMenu.Button {
|
|||||||
vscroll.connect('scroll-stop', () => {
|
vscroll.connect('scroll-stop', () => {
|
||||||
this.menu.passEvents = false;
|
this.menu.passEvents = false;
|
||||||
});
|
});
|
||||||
this.categoriesScrollBox = new St.ScrollView({ x_fill: true, y_fill: false,
|
this.categoriesScrollBox = new St.ScrollView({
|
||||||
y_align: St.Align.START,
|
style_class: 'vfade',
|
||||||
style_class: 'vfade' });
|
});
|
||||||
this.categoriesScrollBox.set_policy(Gtk.PolicyType.NEVER, Gtk.PolicyType.AUTOMATIC);
|
this.categoriesScrollBox.set_policy(Gtk.PolicyType.NEVER, Gtk.PolicyType.AUTOMATIC);
|
||||||
vscroll = this.categoriesScrollBox.get_vscroll_bar();
|
vscroll = this.categoriesScrollBox.get_vscroll_bar();
|
||||||
vscroll.connect('scroll-start', () => { this.menu.passEvents = true; });
|
vscroll.connect('scroll-start', () => (this.menu.passEvents = true));
|
||||||
vscroll.connect('scroll-stop', () => { this.menu.passEvents = false; });
|
vscroll.connect('scroll-stop', () => (this.menu.passEvents = false));
|
||||||
this.leftBox.add(this.categoriesScrollBox, { expand: true,
|
this.leftBox.add_child(this.categoriesScrollBox);
|
||||||
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.applicationsBox = new St.BoxLayout({ vertical: true });
|
||||||
this.applicationsScrollBox.add_actor(this.applicationsBox);
|
this.applicationsScrollBox.add_actor(this.applicationsBox);
|
||||||
@@ -649,47 +583,52 @@ class ApplicationsButton extends PanelMenu.Button {
|
|||||||
this.categoriesScrollBox.add_actor(this.categoriesBox);
|
this.categoriesScrollBox.add_actor(this.categoriesBox);
|
||||||
|
|
||||||
this.mainBox.add(this.leftBox);
|
this.mainBox.add(this.leftBox);
|
||||||
this.mainBox.add(this._createVertSeparator(), { expand: false, x_fill: false, y_fill: true});
|
this.mainBox.add_child(this._createVertSeparator());
|
||||||
this.mainBox.add(this.applicationsScrollBox, { expand: true, x_fill: true, y_fill: true });
|
this.mainBox.add_child(this.applicationsScrollBox);
|
||||||
section.actor.add_actor(this.mainBox);
|
section.actor.add_actor(this.mainBox);
|
||||||
}
|
}
|
||||||
|
|
||||||
_display() {
|
_display() {
|
||||||
this._applicationsButtons.clear();
|
this._applicationsButtons.clear();
|
||||||
this.mainBox.style=('width: 35em;');
|
this.mainBox.style = 'width: 35em;';
|
||||||
this.mainBox.hide();
|
this.mainBox.hide();
|
||||||
|
|
||||||
//Load categories
|
// Load categories
|
||||||
this.applicationsByCategory = {};
|
this.applicationsByCategory = {};
|
||||||
this._tree.load_sync();
|
this._tree.load_sync();
|
||||||
let root = this._tree.get_root_directory();
|
let root = this._tree.get_root_directory();
|
||||||
let categoryMenuItem = new CategoryMenuItem(this, null);
|
let categoryMenuItem = new CategoryMenuItem(this, null);
|
||||||
this.categoriesBox.add_actor(categoryMenuItem.actor);
|
this.categoriesBox.add_actor(categoryMenuItem);
|
||||||
let iter = root.iter();
|
let iter = root.iter();
|
||||||
let nextType;
|
let nextType;
|
||||||
while ((nextType = iter.next()) != GMenu.TreeItemType.INVALID) {
|
while ((nextType = iter.next()) !== GMenu.TreeItemType.INVALID) {
|
||||||
if (nextType == GMenu.TreeItemType.DIRECTORY) {
|
if (nextType !== GMenu.TreeItemType.DIRECTORY)
|
||||||
let dir = iter.get_directory();
|
continue;
|
||||||
if (!dir.get_is_nodisplay()) {
|
|
||||||
let categoryId = dir.get_menu_id();
|
let dir = iter.get_directory();
|
||||||
this.applicationsByCategory[categoryId] = [];
|
if (dir.get_is_nodisplay())
|
||||||
this._loadCategory(categoryId, dir);
|
continue;
|
||||||
if (this.applicationsByCategory[categoryId].length > 0) {
|
|
||||||
let categoryMenuItem = new CategoryMenuItem(this, dir);
|
let categoryId = dir.get_menu_id();
|
||||||
this.categoriesBox.add_actor(categoryMenuItem.actor);
|
this.applicationsByCategory[categoryId] = [];
|
||||||
}
|
this._loadCategory(categoryId, dir);
|
||||||
}
|
if (this.applicationsByCategory[categoryId].length > 0) {
|
||||||
|
categoryMenuItem = new CategoryMenuItem(this, dir);
|
||||||
|
this.categoriesBox.add_actor(categoryMenuItem);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//Load applications
|
// Load applications
|
||||||
this._displayButtons(this._listApplications(null));
|
this._displayButtons(this._listApplications(null));
|
||||||
|
|
||||||
let height = this.categoriesBox.height + MENU_HEIGHT_OFFSET + 'px';
|
let themeContext = St.ThemeContext.get_for_stage(global.stage);
|
||||||
this.mainBox.style+=('height: ' + height);
|
let scaleFactor = themeContext.scale_factor;
|
||||||
|
let categoriesHeight = this.categoriesBox.height / scaleFactor;
|
||||||
|
let height = Math.round(categoriesHeight) + MENU_HEIGHT_OFFSET;
|
||||||
|
this.mainBox.style += `height: ${height}px`;
|
||||||
}
|
}
|
||||||
|
|
||||||
selectCategory(dir, categoryMenuItem) {
|
selectCategory(dir) {
|
||||||
this.applicationsBox.get_children().forEach(c => {
|
this.applicationsBox.get_children().forEach(c => {
|
||||||
if (c._delegate instanceof PopupMenu.PopupSeparatorMenuItem)
|
if (c._delegate instanceof PopupMenu.PopupSeparatorMenuItem)
|
||||||
c._delegate.destroy();
|
c._delegate.destroy();
|
||||||
@@ -704,64 +643,51 @@ class ApplicationsButton extends PanelMenu.Button {
|
|||||||
}
|
}
|
||||||
|
|
||||||
_displayButtons(apps) {
|
_displayButtons(apps) {
|
||||||
if (apps) {
|
for (let i = 0; i < apps.length; i++) {
|
||||||
for (let i = 0; i < apps.length; i++) {
|
let app = apps[i];
|
||||||
let app = apps[i];
|
let item;
|
||||||
let item;
|
if (app instanceof Shell.App)
|
||||||
if (app instanceof Shell.App)
|
item = this._applicationsButtons.get(app);
|
||||||
item = this._applicationsButtons.get(app);
|
else
|
||||||
else
|
item = new PopupMenu.PopupSeparatorMenuItem();
|
||||||
item = new PopupMenu.PopupSeparatorMenuItem();
|
if (!item) {
|
||||||
if (!item) {
|
item = new ApplicationMenuItem(this, app);
|
||||||
item = new ApplicationMenuItem(this, app);
|
item.setDragEnabled(this._desktopTarget.hasDesktop);
|
||||||
item.setDragEnabled(this._desktopTarget.hasDesktop);
|
this._applicationsButtons.set(app, item);
|
||||||
this._applicationsButtons.set(app, item);
|
|
||||||
}
|
|
||||||
if (!item.actor.get_parent())
|
|
||||||
this.applicationsBox.add_actor(item.actor);
|
|
||||||
}
|
}
|
||||||
}
|
if (!item.get_parent())
|
||||||
|
this.applicationsBox.add_actor(item);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
_listApplications(category_menu_id) {
|
_listApplications(categoryMenuId) {
|
||||||
let applist;
|
let applist;
|
||||||
|
|
||||||
if (category_menu_id) {
|
if (categoryMenuId) {
|
||||||
applist = this.applicationsByCategory[category_menu_id];
|
applist = this.applicationsByCategory[categoryMenuId];
|
||||||
} else {
|
} else {
|
||||||
applist = new Array();
|
applist = global.settings.get_strv('favorite-apps')
|
||||||
let favorites = global.settings.get_strv('favorite-apps');
|
.map(id => appSys.lookup_app(id))
|
||||||
for (let i = 0; i < favorites.length; i++) {
|
.filter(app => app);
|
||||||
let app = appSys.lookup_app(favorites[i]);
|
|
||||||
if (app)
|
|
||||||
applist.push(app);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return applist;
|
return applist;
|
||||||
}
|
}
|
||||||
|
});
|
||||||
destroy() {
|
|
||||||
super.destroy();
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
let appsMenuButton;
|
let appsMenuButton;
|
||||||
let activitiesButton;
|
|
||||||
|
|
||||||
function enable() {
|
function enable() {
|
||||||
activitiesButton = Main.panel.statusArea['activities'];
|
|
||||||
activitiesButton.container.hide();
|
|
||||||
appsMenuButton = new ApplicationsButton();
|
appsMenuButton = new ApplicationsButton();
|
||||||
Main.panel.addToStatusArea('apps-menu', appsMenuButton, 1, 'left');
|
let index = Main.sessionMode.panel.left.indexOf('activities') + 1;
|
||||||
|
Main.panel.addToStatusArea('apps-menu', appsMenuButton, index, 'left');
|
||||||
}
|
}
|
||||||
|
|
||||||
function disable() {
|
function disable() {
|
||||||
Main.panel.menuManager.removeMenu(appsMenuButton.menu);
|
Main.panel.menuManager.removeMenu(appsMenuButton.menu);
|
||||||
appsMenuButton.destroy();
|
appsMenuButton.destroy();
|
||||||
activitiesButton.container.show();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function init(metadata) {
|
function init() {
|
||||||
Convenience.initTranslations();
|
ExtensionUtils.initTranslations();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,24 +1,22 @@
|
|||||||
// -*- mode: js2; indent-tabs-mode: nil; js2-basic-offset: 4 -*-
|
// -*- mode: js2; indent-tabs-mode: nil; js2-basic-offset: 4 -*-
|
||||||
// Start apps on custom workspaces
|
// Start apps on custom workspaces
|
||||||
|
/* exported init enable disable */
|
||||||
|
|
||||||
const Shell = imports.gi.Shell;
|
const { Shell } = imports.gi;
|
||||||
|
|
||||||
const Main = imports.ui.main;
|
|
||||||
|
|
||||||
const ExtensionUtils = imports.misc.extensionUtils;
|
const ExtensionUtils = imports.misc.extensionUtils;
|
||||||
const Me = ExtensionUtils.getCurrentExtension();
|
const Main = imports.ui.main;
|
||||||
const Convenience = Me.imports.convenience;
|
|
||||||
|
|
||||||
class WindowMover {
|
class WindowMover {
|
||||||
constructor() {
|
constructor() {
|
||||||
this._settings = Convenience.getSettings();
|
this._settings = ExtensionUtils.getSettings();
|
||||||
this._appSystem = Shell.AppSystem.get_default();
|
this._appSystem = Shell.AppSystem.get_default();
|
||||||
this._appConfigs = new Map();
|
this._appConfigs = new Map();
|
||||||
this._appData = new Map();
|
this._appData = new Map();
|
||||||
|
|
||||||
this._appsChangedId =
|
this._appsChangedId =
|
||||||
this._appSystem.connect('installed-changed',
|
this._appSystem.connect('installed-changed',
|
||||||
this._updateAppData.bind(this));
|
this._updateAppData.bind(this));
|
||||||
|
|
||||||
this._settings.connect('changed', this._updateAppConfigs.bind(this));
|
this._settings.connect('changed', this._updateAppConfigs.bind(this));
|
||||||
this._updateAppConfigs();
|
this._updateAppConfigs();
|
||||||
@@ -46,15 +44,15 @@ class WindowMover {
|
|||||||
});
|
});
|
||||||
|
|
||||||
let addedApps = ids.map(id => this._appSystem.lookup_app(id)).filter(
|
let addedApps = ids.map(id => this._appSystem.lookup_app(id)).filter(
|
||||||
app => app != null && !this._appData.has(app)
|
app => app && !this._appData.has(app)
|
||||||
);
|
);
|
||||||
addedApps.forEach(app => {
|
addedApps.forEach(app => {
|
||||||
let data = {
|
let data = {
|
||||||
windowsChangedId: app.connect('windows-changed',
|
windowsChangedId: app.connect('windows-changed',
|
||||||
this._appWindowsChanged.bind(this)),
|
this._appWindowsChanged.bind(this)),
|
||||||
moveWindowsId: 0,
|
moveWindowsId: 0,
|
||||||
windows: app.get_windows()
|
windows: app.get_windows(),
|
||||||
}
|
};
|
||||||
this._appData.set(app, data);
|
this._appData.set(app, data);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -97,7 +95,7 @@ class WindowMover {
|
|||||||
// or something; assume it'll be added back immediately, so keep it
|
// or something; assume it'll be added back immediately, so keep it
|
||||||
// to avoid moving it again
|
// to avoid moving it again
|
||||||
windows.push(...data.windows.filter(
|
windows.push(...data.windows.filter(
|
||||||
w => !windows.includes(w) && w.get_compositor_private() != null
|
w => !windows.includes(w) && w.get_compositor_private() !== null
|
||||||
));
|
));
|
||||||
|
|
||||||
let workspaceNum = this._appConfigs.get(app.id);
|
let workspaceNum = this._appConfigs.get(app.id);
|
||||||
@@ -106,13 +104,13 @@ class WindowMover {
|
|||||||
});
|
});
|
||||||
data.windows = windows;
|
data.windows = windows;
|
||||||
}
|
}
|
||||||
};
|
}
|
||||||
|
|
||||||
let prevCheckWorkspaces;
|
let prevCheckWorkspaces;
|
||||||
let winMover;
|
let winMover;
|
||||||
|
|
||||||
function init() {
|
function init() {
|
||||||
Convenience.initTranslations();
|
ExtensionUtils.initTranslations();
|
||||||
}
|
}
|
||||||
|
|
||||||
function myCheckWorkspaces() {
|
function myCheckWorkspaces() {
|
||||||
@@ -126,9 +124,9 @@ function myCheckWorkspaces() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// make sure the original method only removes empty workspaces at the end
|
// make sure the original method only removes empty workspaces at the end
|
||||||
keepAliveWorkspaces.forEach(ws => { ws._keepAliveId = 1; });
|
keepAliveWorkspaces.forEach(ws => (ws._keepAliveId = 1));
|
||||||
prevCheckWorkspaces.call(this);
|
prevCheckWorkspaces.call(this);
|
||||||
keepAliveWorkspaces.forEach(ws => { delete ws._keepAliveId; });
|
keepAliveWorkspaces.forEach(ws => delete ws._keepAliveId);
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,17 +1,14 @@
|
|||||||
// -*- mode: js2; indent-tabs-mode: nil; js2-basic-offset: 4 -*-
|
// -*- mode: js2; indent-tabs-mode: nil; js2-basic-offset: 4 -*-
|
||||||
// Start apps on custom workspaces
|
// Start apps on custom workspaces
|
||||||
|
/* exported init buildPrefsWidget */
|
||||||
|
|
||||||
const Gio = imports.gi.Gio;
|
const { Gio, GObject, Gtk } = imports.gi;
|
||||||
const GObject = imports.gi.GObject;
|
|
||||||
const Gtk = imports.gi.Gtk;
|
|
||||||
|
|
||||||
const Gettext = imports.gettext.domain('gnome-shell-extensions');
|
const Gettext = imports.gettext.domain('gnome-shell-extensions');
|
||||||
const _ = Gettext.gettext;
|
const _ = Gettext.gettext;
|
||||||
const N_ = e => e;
|
const N_ = e => e;
|
||||||
|
|
||||||
const ExtensionUtils = imports.misc.extensionUtils;
|
const ExtensionUtils = imports.misc.extensionUtils;
|
||||||
const Me = ExtensionUtils.getCurrentExtension();
|
|
||||||
const Convenience = Me.imports.convenience;
|
|
||||||
|
|
||||||
const SETTINGS_KEY = 'application-list';
|
const SETTINGS_KEY = 'application-list';
|
||||||
|
|
||||||
@@ -22,50 +19,62 @@ const Columns = {
|
|||||||
DISPLAY_NAME: 1,
|
DISPLAY_NAME: 1,
|
||||||
ICON: 2,
|
ICON: 2,
|
||||||
WORKSPACE: 3,
|
WORKSPACE: 3,
|
||||||
ADJUSTMENT: 4
|
ADJUSTMENT: 4,
|
||||||
};
|
};
|
||||||
|
|
||||||
const Widget = GObject.registerClass({
|
const Widget = GObject.registerClass(
|
||||||
GTypeName: 'AutoMoveWindowsPrefsWidget',
|
class Widget extends Gtk.Grid {
|
||||||
}, class Widget extends Gtk.Grid {
|
|
||||||
_init(params) {
|
_init(params) {
|
||||||
super._init(params);
|
super._init(params);
|
||||||
this.set_orientation(Gtk.Orientation.VERTICAL);
|
this.set_orientation(Gtk.Orientation.VERTICAL);
|
||||||
|
|
||||||
this._settings = Convenience.getSettings();
|
this._settings = ExtensionUtils.getSettings();
|
||||||
this._settings.connect('changed', this._refresh.bind(this));
|
this._settings.connect('changed', this._refresh.bind(this));
|
||||||
this._changedPermitted = false;
|
this._changedPermitted = false;
|
||||||
|
|
||||||
this._store = new Gtk.ListStore();
|
this._store = new Gtk.ListStore();
|
||||||
this._store.set_column_types([Gio.AppInfo, GObject.TYPE_STRING, Gio.Icon, GObject.TYPE_INT,
|
this._store.set_column_types([
|
||||||
Gtk.Adjustment]);
|
Gio.AppInfo,
|
||||||
|
GObject.TYPE_STRING,
|
||||||
|
Gio.Icon,
|
||||||
|
GObject.TYPE_INT,
|
||||||
|
Gtk.Adjustment,
|
||||||
|
]);
|
||||||
|
|
||||||
let scrolled = new Gtk.ScrolledWindow({ shadow_type: Gtk.ShadowType.IN});
|
let scrolled = new Gtk.ScrolledWindow({ shadow_type: Gtk.ShadowType.IN });
|
||||||
scrolled.set_policy(Gtk.PolicyType.NEVER, Gtk.PolicyType.AUTOMATIC);
|
scrolled.set_policy(Gtk.PolicyType.NEVER, Gtk.PolicyType.AUTOMATIC);
|
||||||
this.add(scrolled);
|
this.add(scrolled);
|
||||||
|
|
||||||
|
|
||||||
this._treeView = new Gtk.TreeView({ model: this._store,
|
this._treeView = new Gtk.TreeView({
|
||||||
hexpand: true, vexpand: true });
|
model: this._store,
|
||||||
|
hexpand: true,
|
||||||
|
vexpand: true,
|
||||||
|
});
|
||||||
this._treeView.get_selection().set_mode(Gtk.SelectionMode.SINGLE);
|
this._treeView.get_selection().set_mode(Gtk.SelectionMode.SINGLE);
|
||||||
|
|
||||||
let appColumn = new Gtk.TreeViewColumn({ expand: true, sort_column_id: Columns.DISPLAY_NAME,
|
let appColumn = new Gtk.TreeViewColumn({
|
||||||
title: _("Application") });
|
expand: true,
|
||||||
let iconRenderer = new Gtk.CellRendererPixbuf;
|
sort_column_id: Columns.DISPLAY_NAME,
|
||||||
|
title: _('Application'),
|
||||||
|
});
|
||||||
|
let iconRenderer = new Gtk.CellRendererPixbuf();
|
||||||
appColumn.pack_start(iconRenderer, false);
|
appColumn.pack_start(iconRenderer, false);
|
||||||
appColumn.add_attribute(iconRenderer, "gicon", Columns.ICON);
|
appColumn.add_attribute(iconRenderer, 'gicon', Columns.ICON);
|
||||||
let nameRenderer = new Gtk.CellRendererText;
|
let nameRenderer = new Gtk.CellRendererText();
|
||||||
appColumn.pack_start(nameRenderer, true);
|
appColumn.pack_start(nameRenderer, true);
|
||||||
appColumn.add_attribute(nameRenderer, "text", Columns.DISPLAY_NAME);
|
appColumn.add_attribute(nameRenderer, 'text', Columns.DISPLAY_NAME);
|
||||||
this._treeView.append_column(appColumn);
|
this._treeView.append_column(appColumn);
|
||||||
|
|
||||||
let workspaceColumn = new Gtk.TreeViewColumn({ title: _("Workspace"),
|
let workspaceColumn = new Gtk.TreeViewColumn({
|
||||||
sort_column_id: Columns.WORKSPACE });
|
title: _('Workspace'),
|
||||||
|
sort_column_id: Columns.WORKSPACE,
|
||||||
|
});
|
||||||
let workspaceRenderer = new Gtk.CellRendererSpin({ editable: true });
|
let workspaceRenderer = new Gtk.CellRendererSpin({ editable: true });
|
||||||
workspaceRenderer.connect('edited', this._workspaceEdited.bind(this));
|
workspaceRenderer.connect('edited', this._workspaceEdited.bind(this));
|
||||||
workspaceColumn.pack_start(workspaceRenderer, true);
|
workspaceColumn.pack_start(workspaceRenderer, true);
|
||||||
workspaceColumn.add_attribute(workspaceRenderer, "adjustment", Columns.ADJUSTMENT);
|
workspaceColumn.add_attribute(workspaceRenderer, 'adjustment', Columns.ADJUSTMENT);
|
||||||
workspaceColumn.add_attribute(workspaceRenderer, "text", Columns.WORKSPACE);
|
workspaceColumn.add_attribute(workspaceRenderer, 'text', Columns.WORKSPACE);
|
||||||
this._treeView.append_column(workspaceColumn);
|
this._treeView.append_column(workspaceColumn);
|
||||||
|
|
||||||
scrolled.add(this._treeView);
|
scrolled.add(this._treeView);
|
||||||
@@ -74,13 +83,15 @@ const Widget = GObject.registerClass({
|
|||||||
toolbar.get_style_context().add_class(Gtk.STYLE_CLASS_INLINE_TOOLBAR);
|
toolbar.get_style_context().add_class(Gtk.STYLE_CLASS_INLINE_TOOLBAR);
|
||||||
this.add(toolbar);
|
this.add(toolbar);
|
||||||
|
|
||||||
let newButton = new Gtk.ToolButton({ icon_name: 'bookmark-new-symbolic',
|
let newButton = new Gtk.ToolButton({
|
||||||
label: _("Add Rule"),
|
icon_name: 'bookmark-new-symbolic',
|
||||||
is_important: true });
|
label: _('Add Rule'),
|
||||||
|
is_important: true,
|
||||||
|
});
|
||||||
newButton.connect('clicked', this._createNew.bind(this));
|
newButton.connect('clicked', this._createNew.bind(this));
|
||||||
toolbar.add(newButton);
|
toolbar.add(newButton);
|
||||||
|
|
||||||
let delButton = new Gtk.ToolButton({ icon_name: 'edit-delete-symbolic' });
|
let delButton = new Gtk.ToolButton({ icon_name: 'edit-delete-symbolic' });
|
||||||
delButton.connect('clicked', this._deleteSelected.bind(this));
|
delButton.connect('clicked', this._deleteSelected.bind(this));
|
||||||
toolbar.add(delButton);
|
toolbar.add(delButton);
|
||||||
|
|
||||||
@@ -95,17 +106,21 @@ const Widget = GObject.registerClass({
|
|||||||
}
|
}
|
||||||
|
|
||||||
_createNew() {
|
_createNew() {
|
||||||
let dialog = new Gtk.Dialog({ title: _("Create new matching rule"),
|
let dialog = new Gtk.Dialog({
|
||||||
transient_for: this.get_toplevel(),
|
title: _('Create new matching rule'),
|
||||||
use_header_bar: true,
|
transient_for: this.get_toplevel(),
|
||||||
modal: true });
|
use_header_bar: true,
|
||||||
|
modal: true,
|
||||||
|
});
|
||||||
dialog.add_button(Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL);
|
dialog.add_button(Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL);
|
||||||
let addButton = dialog.add_button(_("Add"), Gtk.ResponseType.OK);
|
let addButton = dialog.add_button(_('Add'), Gtk.ResponseType.OK);
|
||||||
dialog.set_default_response(Gtk.ResponseType.OK);
|
dialog.set_default_response(Gtk.ResponseType.OK);
|
||||||
|
|
||||||
let grid = new Gtk.Grid({ column_spacing: 10,
|
let grid = new Gtk.Grid({
|
||||||
row_spacing: 15,
|
column_spacing: 10,
|
||||||
margin: 10 });
|
row_spacing: 15,
|
||||||
|
margin: 10,
|
||||||
|
});
|
||||||
dialog._appChooser = new Gtk.AppChooserWidget({ show_all: true });
|
dialog._appChooser = new Gtk.AppChooserWidget({ show_all: true });
|
||||||
dialog._appChooser.connect('application-selected', (w, appInfo) => {
|
dialog._appChooser.connect('application-selected', (w, appInfo) => {
|
||||||
addButton.sensitive = appInfo && this._checkId(appInfo.get_id());
|
addButton.sensitive = appInfo && this._checkId(appInfo.get_id());
|
||||||
@@ -114,25 +129,30 @@ const Widget = GObject.registerClass({
|
|||||||
addButton.sensitive = appInfo && this._checkId(appInfo.get_id());
|
addButton.sensitive = appInfo && this._checkId(appInfo.get_id());
|
||||||
|
|
||||||
grid.attach(dialog._appChooser, 0, 0, 2, 1);
|
grid.attach(dialog._appChooser, 0, 0, 2, 1);
|
||||||
grid.attach(new Gtk.Label({ label: _("Workspace"),
|
grid.attach(new Gtk.Label({
|
||||||
halign: Gtk.Align.END }), 0, 1, 1, 1);
|
label: _('Workspace'),
|
||||||
let adjustment = new Gtk.Adjustment({ lower: 1,
|
halign: Gtk.Align.END,
|
||||||
upper: WORKSPACE_MAX,
|
}), 0, 1, 1, 1);
|
||||||
step_increment: 1
|
let adjustment = new Gtk.Adjustment({
|
||||||
});
|
lower: 1,
|
||||||
dialog._spin = new Gtk.SpinButton({ adjustment: adjustment,
|
upper: WORKSPACE_MAX,
|
||||||
snap_to_ticks: true });
|
step_increment: 1,
|
||||||
|
});
|
||||||
|
dialog._spin = new Gtk.SpinButton({
|
||||||
|
adjustment,
|
||||||
|
snap_to_ticks: true,
|
||||||
|
});
|
||||||
dialog._spin.set_value(1);
|
dialog._spin.set_value(1);
|
||||||
grid.attach(dialog._spin, 1, 1, 1, 1);
|
grid.attach(dialog._spin, 1, 1, 1, 1);
|
||||||
dialog.get_content_area().add(grid);
|
dialog.get_content_area().add(grid);
|
||||||
|
|
||||||
dialog.connect('response', (dialog, id) => {
|
dialog.connect('response', (dlg, id) => {
|
||||||
if (id != Gtk.ResponseType.OK) {
|
if (id !== Gtk.ResponseType.OK) {
|
||||||
dialog.destroy();
|
dialog.destroy();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
let appInfo = dialog._appChooser.get_app_info();
|
appInfo = dialog._appChooser.get_app_info();
|
||||||
if (!appInfo)
|
if (!appInfo)
|
||||||
return;
|
return;
|
||||||
let index = Math.floor(dialog._spin.value);
|
let index = Math.floor(dialog._spin.value);
|
||||||
@@ -143,14 +163,7 @@ const Widget = GObject.registerClass({
|
|||||||
this._appendItem(appInfo.get_id(), index);
|
this._appendItem(appInfo.get_id(), index);
|
||||||
this._changedPermitted = true;
|
this._changedPermitted = true;
|
||||||
|
|
||||||
let iter = this._store.append();
|
this._appendRow(appInfo, index);
|
||||||
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]);
|
|
||||||
|
|
||||||
dialog.destroy();
|
dialog.destroy();
|
||||||
});
|
});
|
||||||
@@ -158,7 +171,7 @@ const Widget = GObject.registerClass({
|
|||||||
}
|
}
|
||||||
|
|
||||||
_deleteSelected() {
|
_deleteSelected() {
|
||||||
let [any, model, iter] = this._treeView.get_selection().get_selected();
|
let [any, model_, iter] = this._treeView.get_selection().get_selected();
|
||||||
|
|
||||||
if (any) {
|
if (any) {
|
||||||
let appInfo = this._store.get_value(iter, Columns.APPINFO);
|
let appInfo = this._store.get_value(iter, Columns.APPINFO);
|
||||||
@@ -175,7 +188,7 @@ const Widget = GObject.registerClass({
|
|||||||
if (isNaN(index) || index < 0)
|
if (isNaN(index) || index < 0)
|
||||||
index = 1;
|
index = 1;
|
||||||
let path = Gtk.TreePath.new_from_string(pathString);
|
let path = Gtk.TreePath.new_from_string(pathString);
|
||||||
let [model, iter] = this._store.get_iter(path);
|
let [model_, iter] = this._store.get_iter(path);
|
||||||
let appInfo = this._store.get_value(iter, Columns.APPINFO);
|
let appInfo = this._store.get_value(iter, Columns.APPINFO);
|
||||||
|
|
||||||
this._changedPermitted = false;
|
this._changedPermitted = false;
|
||||||
@@ -192,7 +205,7 @@ const Widget = GObject.registerClass({
|
|||||||
this._store.clear();
|
this._store.clear();
|
||||||
|
|
||||||
let currentItems = this._settings.get_strv(SETTINGS_KEY);
|
let currentItems = this._settings.get_strv(SETTINGS_KEY);
|
||||||
let validItems = [ ];
|
let validItems = [];
|
||||||
for (let i = 0; i < currentItems.length; i++) {
|
for (let i = 0; i < currentItems.length; i++) {
|
||||||
let [id, index] = currentItems[i].split(':');
|
let [id, index] = currentItems[i].split(':');
|
||||||
let appInfo = Gio.DesktopAppInfo.new(id);
|
let appInfo = Gio.DesktopAppInfo.new(id);
|
||||||
@@ -200,28 +213,37 @@ const Widget = GObject.registerClass({
|
|||||||
continue;
|
continue;
|
||||||
validItems.push(currentItems[i]);
|
validItems.push(currentItems[i]);
|
||||||
|
|
||||||
let iter = this._store.append();
|
this._appendRow(appInfo, parseInt(index));
|
||||||
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
|
if (validItems.length !== currentItems.length) // some items were filtered out
|
||||||
this._settings.set_strv(SETTINGS_KEY, validItems);
|
this._settings.set_strv(SETTINGS_KEY, validItems);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_appendRow(appInfo, workspace) {
|
||||||
|
let iter = this._store.append();
|
||||||
|
let icon = appInfo.get_icon();
|
||||||
|
let displayName = appInfo.get_display_name();
|
||||||
|
let adj = new Gtk.Adjustment({
|
||||||
|
lower: 1,
|
||||||
|
upper: WORKSPACE_MAX,
|
||||||
|
step_increment: 1,
|
||||||
|
value: workspace,
|
||||||
|
});
|
||||||
|
let { APPINFO, ICON, DISPLAY_NAME, WORKSPACE, ADJUSTMENT } = Columns;
|
||||||
|
this._store.set(iter,
|
||||||
|
[APPINFO, ICON, DISPLAY_NAME, WORKSPACE, ADJUSTMENT],
|
||||||
|
[appInfo, icon, displayName, workspace, adj]);
|
||||||
|
}
|
||||||
|
|
||||||
_checkId(id) {
|
_checkId(id) {
|
||||||
let items = this._settings.get_strv(SETTINGS_KEY);
|
let items = this._settings.get_strv(SETTINGS_KEY);
|
||||||
return !items.some(i => i.startsWith(id + ':'));
|
return !items.some(i => i.startsWith(`${id}:`));
|
||||||
}
|
}
|
||||||
|
|
||||||
_appendItem(id, workspace) {
|
_appendItem(id, workspace) {
|
||||||
let currentItems = this._settings.get_strv(SETTINGS_KEY);
|
let currentItems = this._settings.get_strv(SETTINGS_KEY);
|
||||||
currentItems.push(id + ':' + workspace);
|
currentItems.push(`${id}:${workspace}`);
|
||||||
this._settings.set_strv(SETTINGS_KEY, currentItems);
|
this._settings.set_strv(SETTINGS_KEY, currentItems);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -240,16 +262,16 @@ const Widget = GObject.registerClass({
|
|||||||
let index = currentItems.map(el => el.split(':')[0]).indexOf(id);
|
let index = currentItems.map(el => el.split(':')[0]).indexOf(id);
|
||||||
|
|
||||||
if (index < 0)
|
if (index < 0)
|
||||||
currentItems.push(id + ':' + workspace);
|
currentItems.push(`${id}:${workspace}`);
|
||||||
else
|
else
|
||||||
currentItems[index] = id + ':' + workspace;
|
currentItems[index] = `${id}:${workspace}`;
|
||||||
this._settings.set_strv(SETTINGS_KEY, currentItems);
|
this._settings.set_strv(SETTINGS_KEY, currentItems);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
function init() {
|
function init() {
|
||||||
Convenience.initTranslations();
|
ExtensionUtils.initTranslations();
|
||||||
}
|
}
|
||||||
|
|
||||||
function buildPrefsWidget() {
|
function buildPrefsWidget() {
|
||||||
|
|||||||
@@ -1,43 +1,42 @@
|
|||||||
|
/* exported init enable disable */
|
||||||
// Drive menu extension
|
// Drive menu extension
|
||||||
const Clutter = imports.gi.Clutter;
|
const { Gio, GObject, Shell, St } = imports.gi;
|
||||||
const Gio = imports.gi.Gio;
|
|
||||||
const St = imports.gi.St;
|
|
||||||
const Shell = imports.gi.Shell;
|
|
||||||
|
|
||||||
const Gettext = imports.gettext.domain('gnome-shell-extensions');
|
const Gettext = imports.gettext.domain('gnome-shell-extensions');
|
||||||
const _ = Gettext.gettext;
|
const _ = Gettext.gettext;
|
||||||
|
|
||||||
|
const ExtensionUtils = imports.misc.extensionUtils;
|
||||||
const Main = imports.ui.main;
|
const Main = imports.ui.main;
|
||||||
const Panel = imports.ui.panel;
|
|
||||||
const PanelMenu = imports.ui.panelMenu;
|
const PanelMenu = imports.ui.panelMenu;
|
||||||
const PopupMenu = imports.ui.popupMenu;
|
const PopupMenu = imports.ui.popupMenu;
|
||||||
const ShellMountOperation = imports.ui.shellMountOperation;
|
const ShellMountOperation = imports.ui.shellMountOperation;
|
||||||
|
|
||||||
const ExtensionUtils = imports.misc.extensionUtils;
|
var MountMenuItem = GObject.registerClass(
|
||||||
const Me = ExtensionUtils.getCurrentExtension();
|
|
||||||
const Convenience = Me.imports.convenience;
|
|
||||||
|
|
||||||
class MountMenuItem extends PopupMenu.PopupBaseMenuItem {
|
class MountMenuItem extends PopupMenu.PopupBaseMenuItem {
|
||||||
constructor(mount) {
|
_init(mount) {
|
||||||
super();
|
super._init();
|
||||||
|
|
||||||
this.label = new St.Label({ text: mount.get_name() });
|
this.label = new St.Label({ text: mount.get_name() });
|
||||||
this.actor.add(this.label, { expand: true });
|
this.add_child(this.label);
|
||||||
this.actor.label_actor = this.label;
|
this.label_actor = this.label;
|
||||||
|
|
||||||
this.mount = mount;
|
this.mount = mount;
|
||||||
|
|
||||||
let ejectIcon = new St.Icon({ icon_name: 'media-eject-symbolic',
|
this.connect('destroy', this._onDestroy.bind(this));
|
||||||
style_class: 'popup-menu-icon ' });
|
|
||||||
|
let ejectIcon = new St.Icon({
|
||||||
|
icon_name: 'media-eject-symbolic',
|
||||||
|
style_class: 'popup-menu-icon',
|
||||||
|
});
|
||||||
let ejectButton = new St.Button({ child: ejectIcon });
|
let ejectButton = new St.Button({ child: ejectIcon });
|
||||||
ejectButton.connect('clicked', this._eject.bind(this));
|
ejectButton.connect('clicked', this._eject.bind(this));
|
||||||
this.actor.add(ejectButton);
|
this.add(ejectButton);
|
||||||
|
|
||||||
this._changedId = mount.connect('changed', this._syncVisibility.bind(this));
|
this._changedId = mount.connect('changed', this._syncVisibility.bind(this));
|
||||||
this._syncVisibility();
|
this._syncVisibility();
|
||||||
}
|
}
|
||||||
|
|
||||||
destroy() {
|
_onDestroy() {
|
||||||
if (this._changedId) {
|
if (this._changedId) {
|
||||||
this.mount.disconnect(this._changedId);
|
this.mount.disconnect(this._changedId);
|
||||||
this._changedId = 0;
|
this._changedId = 0;
|
||||||
@@ -54,38 +53,39 @@ class MountMenuItem extends PopupMenu.PopupBaseMenuItem {
|
|||||||
|
|
||||||
let volume = this.mount.get_volume();
|
let volume = this.mount.get_volume();
|
||||||
|
|
||||||
if (volume == null) {
|
if (!volume) {
|
||||||
// probably a GDaemonMount, could be network or
|
// probably a GDaemonMount, could be network or
|
||||||
// local, but we can't tell; assume it's local for now
|
// local, but we can't tell; assume it's local for now
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
return volume.get_identifier('class') != 'network';
|
return volume.get_identifier('class') !== 'network';
|
||||||
}
|
}
|
||||||
|
|
||||||
_syncVisibility() {
|
_syncVisibility() {
|
||||||
this.actor.visible = this._isInteresting();
|
this.visible = this._isInteresting();
|
||||||
}
|
}
|
||||||
|
|
||||||
_eject() {
|
_eject() {
|
||||||
let mountOp = new ShellMountOperation.ShellMountOperation(this.mount);
|
let unmountArgs = [
|
||||||
|
Gio.MountUnmountFlags.NONE,
|
||||||
|
new ShellMountOperation.ShellMountOperation(this.mount).mountOp,
|
||||||
|
null, // Gio.Cancellable
|
||||||
|
];
|
||||||
|
|
||||||
if (this.mount.can_eject())
|
if (this.mount.can_eject()) {
|
||||||
this.mount.eject_with_operation(Gio.MountUnmountFlags.NONE,
|
this.mount.eject_with_operation(...unmountArgs,
|
||||||
mountOp.mountOp,
|
this._ejectFinish.bind(this));
|
||||||
null, // Gio.Cancellable
|
} else {
|
||||||
this._ejectFinish.bind(this));
|
this.mount.unmount_with_operation(...unmountArgs,
|
||||||
else
|
this._unmountFinish.bind(this));
|
||||||
this.mount.unmount_with_operation(Gio.MountUnmountFlags.NONE,
|
}
|
||||||
mountOp.mountOp,
|
|
||||||
null, // Gio.Cancellable
|
|
||||||
this._unmountFinish.bind(this));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
_unmountFinish(mount, result) {
|
_unmountFinish(mount, result) {
|
||||||
try {
|
try {
|
||||||
mount.unmount_with_operation_finish(result);
|
mount.unmount_with_operation_finish(result);
|
||||||
} catch(e) {
|
} catch (e) {
|
||||||
this._reportFailure(e);
|
this._reportFailure(e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -93,37 +93,40 @@ class MountMenuItem extends PopupMenu.PopupBaseMenuItem {
|
|||||||
_ejectFinish(mount, result) {
|
_ejectFinish(mount, result) {
|
||||||
try {
|
try {
|
||||||
mount.eject_with_operation_finish(result);
|
mount.eject_with_operation_finish(result);
|
||||||
} catch(e) {
|
} catch (e) {
|
||||||
this._reportFailure(e);
|
this._reportFailure(e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
_reportFailure(exception) {
|
_reportFailure(exception) {
|
||||||
// TRANSLATORS: %s is the filesystem name
|
// TRANSLATORS: %s is the filesystem name
|
||||||
let msg = _("Ejecting drive “%s” failed:").format(this.mount.get_name());
|
let msg = _('Ejecting drive “%s” failed:').format(this.mount.get_name());
|
||||||
Main.notifyError(msg, exception.message);
|
Main.notifyError(msg, exception.message);
|
||||||
}
|
}
|
||||||
|
|
||||||
activate(event) {
|
activate(event) {
|
||||||
|
let uri = this.mount.get_root().get_uri();
|
||||||
let context = global.create_app_launch_context(event.get_time(), -1);
|
let context = global.create_app_launch_context(event.get_time(), -1);
|
||||||
Gio.AppInfo.launch_default_for_uri(this.mount.get_root().get_uri(),
|
Gio.AppInfo.launch_default_for_uri(uri, context);
|
||||||
context);
|
|
||||||
|
|
||||||
super.activate(event);
|
super.activate(event);
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
|
|
||||||
|
let DriveMenu = GObject.registerClass(
|
||||||
class DriveMenu extends PanelMenu.Button {
|
class DriveMenu extends PanelMenu.Button {
|
||||||
constructor() {
|
_init() {
|
||||||
super(0.0, _("Removable devices"));
|
super._init(0.0, _('Removable devices'));
|
||||||
|
|
||||||
let hbox = new St.BoxLayout({ style_class: 'panel-status-menu-box' });
|
let hbox = new St.BoxLayout({ style_class: 'panel-status-menu-box' });
|
||||||
let icon = new St.Icon({ icon_name: 'media-eject-symbolic',
|
let icon = new St.Icon({
|
||||||
style_class: 'system-status-icon' });
|
icon_name: 'media-eject-symbolic',
|
||||||
|
style_class: 'system-status-icon',
|
||||||
|
});
|
||||||
|
|
||||||
hbox.add_child(icon);
|
hbox.add_child(icon);
|
||||||
hbox.add_child(PopupMenu.arrowIcon(St.Side.BOTTOM));
|
hbox.add_child(PopupMenu.arrowIcon(St.Side.BOTTOM));
|
||||||
this.actor.add_child(hbox);
|
this.add_child(hbox);
|
||||||
|
|
||||||
this._monitor = Gio.VolumeMonitor.get();
|
this._monitor = Gio.VolumeMonitor.get();
|
||||||
this._addedId = this._monitor.connect('mount-added', (monitor, mount) => {
|
this._addedId = this._monitor.connect('mount-added', (monitor, mount) => {
|
||||||
@@ -135,12 +138,12 @@ class DriveMenu extends PanelMenu.Button {
|
|||||||
this._updateMenuVisibility();
|
this._updateMenuVisibility();
|
||||||
});
|
});
|
||||||
|
|
||||||
this._mounts = [ ];
|
this._mounts = [];
|
||||||
|
|
||||||
this._monitor.get_mounts().forEach(this._addMount.bind(this));
|
this._monitor.get_mounts().forEach(this._addMount.bind(this));
|
||||||
|
|
||||||
this.menu.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
|
this.menu.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
|
||||||
this.menu.addAction(_("Open Files"), event => {
|
this.menu.addAction(_('Open Files'), event => {
|
||||||
let appSystem = Shell.AppSystem.get_default();
|
let appSystem = Shell.AppSystem.get_default();
|
||||||
let app = appSystem.lookup_app('org.gnome.Nautilus.desktop');
|
let app = appSystem.lookup_app('org.gnome.Nautilus.desktop');
|
||||||
app.activate_full(-1, event.get_time());
|
app.activate_full(-1, event.get_time());
|
||||||
@@ -150,10 +153,10 @@ class DriveMenu extends PanelMenu.Button {
|
|||||||
}
|
}
|
||||||
|
|
||||||
_updateMenuVisibility() {
|
_updateMenuVisibility() {
|
||||||
if (this._mounts.filter(i => i.actor.visible).length > 0)
|
if (this._mounts.filter(i => i.visible).length > 0)
|
||||||
this.actor.show();
|
this.show();
|
||||||
else
|
else
|
||||||
this.actor.hide();
|
this.hide();
|
||||||
}
|
}
|
||||||
|
|
||||||
_addMount(mount) {
|
_addMount(mount) {
|
||||||
@@ -165,16 +168,16 @@ class DriveMenu extends PanelMenu.Button {
|
|||||||
_removeMount(mount) {
|
_removeMount(mount) {
|
||||||
for (let i = 0; i < this._mounts.length; i++) {
|
for (let i = 0; i < this._mounts.length; i++) {
|
||||||
let item = this._mounts[i];
|
let item = this._mounts[i];
|
||||||
if (item.mount == mount) {
|
if (item.mount === mount) {
|
||||||
item.destroy();
|
item.destroy();
|
||||||
this._mounts.splice(i, 1);
|
this._mounts.splice(i, 1);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
log ('Removing a mount that was never added to the menu');
|
log('Removing a mount that was never added to the menu');
|
||||||
}
|
}
|
||||||
|
|
||||||
destroy() {
|
_onDestroy() {
|
||||||
if (this._addedId) {
|
if (this._addedId) {
|
||||||
this._monitor.disconnect(this._addedId);
|
this._monitor.disconnect(this._addedId);
|
||||||
this._monitor.disconnect(this._removedId);
|
this._monitor.disconnect(this._removedId);
|
||||||
@@ -182,18 +185,18 @@ class DriveMenu extends PanelMenu.Button {
|
|||||||
this._removedId = 0;
|
this._removedId = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
super.destroy();
|
super._onDestroy();
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
|
|
||||||
function init() {
|
function init() {
|
||||||
Convenience.initTranslations();
|
ExtensionUtils.initTranslations();
|
||||||
}
|
}
|
||||||
|
|
||||||
let _indicator;
|
let _indicator;
|
||||||
|
|
||||||
function enable() {
|
function enable() {
|
||||||
_indicator = new DriveMenu;
|
_indicator = new DriveMenu();
|
||||||
Main.panel.addToStatusArea('drive-menu', _indicator);
|
Main.panel.addToStatusArea('drive-menu', _indicator);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,49 +0,0 @@
|
|||||||
// -*- 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;
|
|
||||||
|
|
||||||
const Gettext = imports.gettext.domain('gnome-shell-extensions');
|
|
||||||
const _ = Gettext.gettext;
|
|
||||||
|
|
||||||
const Main = imports.ui.main;
|
|
||||||
|
|
||||||
const ExtensionUtils = imports.misc.extensionUtils;
|
|
||||||
const Me = ExtensionUtils.getCurrentExtension();
|
|
||||||
const Convenience = Me.imports.convenience;
|
|
||||||
|
|
||||||
function _showHello() {
|
|
||||||
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(label);
|
|
||||||
label.set_position(Math.floor (monitor.width / 2 - label.width / 2), Math.floor(monitor.height / 2 - label.height / 2));
|
|
||||||
Mainloop.timeout_add(3000, () => { label.destroy(); });
|
|
||||||
}
|
|
||||||
|
|
||||||
// Put your extension initialization code here
|
|
||||||
function init(metadata) {
|
|
||||||
log ('Example extension initalized');
|
|
||||||
|
|
||||||
Convenience.initTranslations();
|
|
||||||
}
|
|
||||||
|
|
||||||
let signalId;
|
|
||||||
|
|
||||||
function enable() {
|
|
||||||
log ('Example extension enabled');
|
|
||||||
|
|
||||||
Main.panel.actor.reactive = true;
|
|
||||||
signalId = Main.panel.actor.connect('button-release-event', _showHello);
|
|
||||||
}
|
|
||||||
|
|
||||||
function disable() {
|
|
||||||
log ('Example extension disabled');
|
|
||||||
|
|
||||||
if (signalId) {
|
|
||||||
Main.panel.actor.disconnect(signalId);
|
|
||||||
signalId = 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
extension_data += configure_file(
|
|
||||||
input: metadata_name + '.in',
|
|
||||||
output: metadata_name,
|
|
||||||
configuration: metadata_conf
|
|
||||||
)
|
|
||||||
|
|
||||||
extension_sources += files('prefs.js')
|
|
||||||
extension_schemas += files(metadata_conf.get('gschemaname') + '.gschema.xml')
|
|
||||||
@@ -1,10 +0,0 @@
|
|||||||
{
|
|
||||||
"extension-id": "@extension_id@",
|
|
||||||
"uuid": "@uuid@",
|
|
||||||
"settings-schema": "@gschemaname@",
|
|
||||||
"gettext-domain": "@gettext_domain@",
|
|
||||||
"name": "Hello, World!",
|
|
||||||
"description": "An example extension to show how it works. Shows Hello, world when clicking on the top panel.",
|
|
||||||
"shell-version": [ "@shell_current@" ],
|
|
||||||
"url": "@url@"
|
|
||||||
}
|
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
<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>
|
|
||||||
@@ -1,54 +0,0 @@
|
|||||||
// -*- 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 = GObject.registerClass(
|
|
||||||
class ExamplePrefsWidget extends Gtk.Grid {
|
|
||||||
_init(params) {
|
|
||||||
super._init(params);
|
|
||||||
this.margin = 12;
|
|
||||||
this.row_spacing = this.column_spacing = 6;
|
|
||||||
this.set_orientation(Gtk.Orientation.VERTICAL);
|
|
||||||
|
|
||||||
this.add(new Gtk.Label({ label: '<b>' + _("Message") + '</b>',
|
|
||||||
use_markup: true,
|
|
||||||
halign: Gtk.Align.START }));
|
|
||||||
|
|
||||||
let entry = new Gtk.Entry({ hexpand: true,
|
|
||||||
margin_bottom: 12 });
|
|
||||||
this.add(entry);
|
|
||||||
|
|
||||||
this._settings = Convenience.getSettings();
|
|
||||||
this._settings.bind('hello-text', entry, 'text', Gio.SettingsBindFlags.DEFAULT);
|
|
||||||
|
|
||||||
// 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.add(new Gtk.Label({ label: primaryText,
|
|
||||||
wrap: true, xalign: 0 }));
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
function buildPrefsWidget() {
|
|
||||||
let widget = new ExamplePrefsWidget();
|
|
||||||
widget.show_all();
|
|
||||||
|
|
||||||
return widget;
|
|
||||||
}
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
/* Example stylesheet */
|
|
||||||
.helloworld-label {
|
|
||||||
font-size: 36px;
|
|
||||||
font-weight: bold;
|
|
||||||
color: #ffffff;
|
|
||||||
background-color: rgba(10,10,10,0.7);
|
|
||||||
border-radius: 5px;
|
|
||||||
}
|
|
||||||
@@ -0,0 +1,38 @@
|
|||||||
|
/* exported init */
|
||||||
|
const { Meta } = imports.gi;
|
||||||
|
|
||||||
|
const { ThumbnailsBox } = imports.ui.workspaceThumbnail;
|
||||||
|
|
||||||
|
class Extension {
|
||||||
|
constructor() {
|
||||||
|
this._origUpdateSwitcherVisibility =
|
||||||
|
ThumbnailsBox.prototype._updateSwitcherVisibility;
|
||||||
|
}
|
||||||
|
|
||||||
|
enable() {
|
||||||
|
global.workspace_manager.override_workspace_layout(
|
||||||
|
Meta.DisplayCorner.TOPLEFT,
|
||||||
|
false,
|
||||||
|
1,
|
||||||
|
-1);
|
||||||
|
|
||||||
|
ThumbnailsBox.prototype._updateSwitcherVisibility = function () {
|
||||||
|
this.hide();
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
disable() {
|
||||||
|
global.workspace_manager.override_workspace_layout(
|
||||||
|
Meta.DisplayCorner.TOPLEFT,
|
||||||
|
false,
|
||||||
|
-1,
|
||||||
|
1);
|
||||||
|
|
||||||
|
ThumbnailsBox.prototype._updateSwitcherVisibility =
|
||||||
|
this._origUpdateSwitcherVisibility;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function init() {
|
||||||
|
return new Extension();
|
||||||
|
}
|
||||||
@@ -3,5 +3,3 @@ extension_data += configure_file(
|
|||||||
output: metadata_name,
|
output: metadata_name,
|
||||||
configuration: metadata_conf
|
configuration: metadata_conf
|
||||||
)
|
)
|
||||||
|
|
||||||
extension_sources += files('prefs.js')
|
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
{
|
||||||
|
"extension-id": "@extension_id@",
|
||||||
|
"uuid": "@uuid@",
|
||||||
|
"settings-schema": "@gschemaname@",
|
||||||
|
"gettext-domain": "@gettext_domain@",
|
||||||
|
"name": "Horizontal workspaces",
|
||||||
|
"description": "Use a horizontal workspace layout",
|
||||||
|
"shell-version": [ "@shell_current@" ],
|
||||||
|
"url": "@url@"
|
||||||
|
}
|
||||||
@@ -1,17 +1,15 @@
|
|||||||
|
/* exported enable disable */
|
||||||
const AppDisplay = imports.ui.appDisplay;
|
const AppDisplay = imports.ui.appDisplay;
|
||||||
|
|
||||||
let _activateOriginal = null;
|
let _activateOriginal = null;
|
||||||
|
|
||||||
function init() {
|
|
||||||
}
|
|
||||||
|
|
||||||
function enable() {
|
function enable() {
|
||||||
_activateOriginal = AppDisplay.AppIcon.prototype.activate;
|
_activateOriginal = AppDisplay.AppIcon.prototype.activate;
|
||||||
AppDisplay.AppIcon.prototype.activate = function() {
|
AppDisplay.AppIcon.prototype.activate = function () {
|
||||||
_activateOriginal.call(this, 2);
|
_activateOriginal.call(this, 2);
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
function disable() {
|
function disable() {
|
||||||
AppDisplay.AppIcon.prototype.activate = _activateOriginal;
|
AppDisplay.AppIcon.prototype.activate = _activateOriginal;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
extension_schemas = []
|
extension_schemas = []
|
||||||
js_sources = extensionlib
|
js_sources = []
|
||||||
|
|
||||||
metadata_name = 'metadata.json'
|
metadata_name = 'metadata.json'
|
||||||
|
|
||||||
@@ -22,7 +22,7 @@ foreach e : all_extensions
|
|||||||
js_sources += extension_sources
|
js_sources += extension_sources
|
||||||
|
|
||||||
if (enabled_extensions.contains(e))
|
if (enabled_extensions.contains(e))
|
||||||
install_data (extension_sources + extension_data + extensionlib,
|
install_data (extension_sources + extension_data,
|
||||||
install_dir: join_paths(extensiondir, uuid)
|
install_dir: join_paths(extensiondir, uuid)
|
||||||
)
|
)
|
||||||
endif
|
endif
|
||||||
@@ -33,11 +33,11 @@ install_data (extension_schemas,
|
|||||||
)
|
)
|
||||||
|
|
||||||
foreach js_source : js_sources
|
foreach js_source : js_sources
|
||||||
if (js52.found())
|
if (js68.found())
|
||||||
path_array = '@0@'.format(js_source).split('/')
|
path_array = '@0@'.format(js_source).split('/')
|
||||||
name = join_paths(path_array[-2], path_array[-1])
|
name = join_paths(path_array[-2], path_array[-1])
|
||||||
|
|
||||||
test('Checking syntax of ' + name, js52,
|
test('Checking syntax of ' + name, js68,
|
||||||
args: ['-s', '-c', js_source],
|
args: ['-s', '-c', js_source],
|
||||||
workdir: meson.current_source_dir()
|
workdir: meson.current_source_dir()
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -1,13 +1,9 @@
|
|||||||
// -*- mode: js2; indent-tabs-mode: nil; js2-basic-offset: 4 -*-
|
// -*- mode: js2; indent-tabs-mode: nil; js2-basic-offset: 4 -*-
|
||||||
|
/* exported enable disable */
|
||||||
|
const ExtensionUtils = imports.misc.extensionUtils;
|
||||||
const Workspace = imports.ui.workspace;
|
const Workspace = imports.ui.workspace;
|
||||||
|
|
||||||
const ExtensionUtils = imports.misc.extensionUtils;
|
|
||||||
const Me = ExtensionUtils.getCurrentExtension();
|
|
||||||
const Convenience = Me.imports.convenience;
|
|
||||||
|
|
||||||
// testing settings for natural window placement strategy:
|
// testing settings for natural window placement strategy:
|
||||||
const WINDOW_PLACEMENT_NATURAL_FILLGAPS = true; // enlarge windows at the end to fill gaps // not implemented yet
|
|
||||||
const WINDOW_PLACEMENT_NATURAL_GRID_FALLBACK = true; // fallback to grid mode if all windows have the same size and positions. // not implemented yet
|
|
||||||
const WINDOW_PLACEMENT_NATURAL_ACCURACY = 20; // accuracy of window translate moves (KDE-default: 20)
|
const WINDOW_PLACEMENT_NATURAL_ACCURACY = 20; // accuracy of window translate moves (KDE-default: 20)
|
||||||
const WINDOW_PLACEMENT_NATURAL_GAPS = 5; // half of the minimum gap between windows
|
const WINDOW_PLACEMENT_NATURAL_GAPS = 5; // half of the minimum gap between windows
|
||||||
const WINDOW_PLACEMENT_NATURAL_MAX_TRANSLATIONS = 5000; // safety limit for preventing endless loop if something is wrong in the algorithm
|
const WINDOW_PLACEMENT_NATURAL_MAX_TRANSLATIONS = 5000; // safety limit for preventing endless loop if something is wrong in the algorithm
|
||||||
@@ -17,29 +13,25 @@ class Rect {
|
|||||||
[this.x, this.y, this.width, this.height] = [x, y, width, height];
|
[this.x, this.y, this.width, this.height] = [x, y, width, height];
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
// used in _calculateWindowTransformationsNatural to replace Meta.Rectangle that is too slow.
|
||||||
* used in _calculateWindowTransformationsNatural to replace Meta.Rectangle that is too slow.
|
|
||||||
*/
|
|
||||||
copy() {
|
copy() {
|
||||||
return new Rect(this.x, this.y, this.width, this.height);
|
return new Rect(this.x, this.y, this.width, this.height);
|
||||||
}
|
}
|
||||||
|
|
||||||
union(rect2) {
|
union(rect2) {
|
||||||
let dest = this.copy();
|
let dest = this.copy();
|
||||||
if (rect2.x < dest.x)
|
if (rect2.x < dest.x) {
|
||||||
{
|
|
||||||
dest.width += dest.x - rect2.x;
|
dest.width += dest.x - rect2.x;
|
||||||
dest.x = rect2.x;
|
dest.x = rect2.x;
|
||||||
}
|
}
|
||||||
if (rect2.y < dest.y)
|
if (rect2.y < dest.y) {
|
||||||
{
|
|
||||||
dest.height += dest.y - rect2.y;
|
dest.height += dest.y - rect2.y;
|
||||||
dest.y = rect2.y;
|
dest.y = rect2.y;
|
||||||
}
|
}
|
||||||
if (rect2.x + rect2.width > dest.x + dest.width)
|
if (rect2.x + rect2.width > dest.x + dest.width)
|
||||||
dest.width = rect2.x + rect2.width - dest.x;
|
dest.width = rect2.x + rect2.width - dest.x;
|
||||||
if (rect2.y + rect2.height > dest.y + dest.height)
|
if (rect2.y + rect2.height > dest.y + dest.height)
|
||||||
dest.height = rect2.y + rect2.height - dest.y;
|
dest.height = rect2.y + rect2.height - dest.y;
|
||||||
|
|
||||||
return dest;
|
return dest;
|
||||||
}
|
}
|
||||||
@@ -54,10 +46,10 @@ class Rect {
|
|||||||
}
|
}
|
||||||
|
|
||||||
overlap(rect2) {
|
overlap(rect2) {
|
||||||
return !((this.x + this.width <= rect2.x) ||
|
return !(this.x + this.width <= rect2.x ||
|
||||||
(rect2.x + rect2.width <= this.x) ||
|
rect2.x + rect2.width <= this.x ||
|
||||||
(this.y + this.height <= rect2.y) ||
|
this.y + this.height <= rect2.y ||
|
||||||
(rect2.y + rect2.height <= this.y));
|
rect2.y + rect2.height <= this.y);
|
||||||
}
|
}
|
||||||
|
|
||||||
center() {
|
center() {
|
||||||
@@ -68,7 +60,7 @@ class Rect {
|
|||||||
this.x += dx;
|
this.x += dx;
|
||||||
this.y += dy;
|
this.y += dy;
|
||||||
}
|
}
|
||||||
};
|
}
|
||||||
|
|
||||||
class NaturalLayoutStrategy extends Workspace.LayoutStrategy {
|
class NaturalLayoutStrategy extends Workspace.LayoutStrategy {
|
||||||
constructor(settings) {
|
constructor(settings) {
|
||||||
@@ -80,7 +72,7 @@ class NaturalLayoutStrategy extends Workspace.LayoutStrategy {
|
|||||||
layout.windows = windows;
|
layout.windows = windows;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/*
|
||||||
* Returns clones with matching target coordinates and scales to arrange windows in a natural way that no overlap exists and relative window size is preserved.
|
* Returns clones with matching target coordinates and scales to arrange windows in a natural way that no overlap exists and relative window size is preserved.
|
||||||
* This function is almost a 1:1 copy of the function
|
* This function is almost a 1:1 copy of the function
|
||||||
* PresentWindowsEffect::calculateWindowTransformationsNatural() from KDE, see:
|
* PresentWindowsEffect::calculateWindowTransformationsNatural() from KDE, see:
|
||||||
@@ -90,8 +82,8 @@ class NaturalLayoutStrategy extends Workspace.LayoutStrategy {
|
|||||||
// As we are using pseudo-random movement (See "slot") we need to make sure the list
|
// 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.
|
// is always sorted the same way no matter which window is currently active.
|
||||||
|
|
||||||
let area_rect = new Rect(area.x, area.y, area.width, area.height);
|
let areaRect = new Rect(area.x, area.y, area.width, area.height);
|
||||||
let bounds = area_rect.copy();
|
let bounds = areaRect.copy();
|
||||||
let clones = layout.windows;
|
let clones = layout.windows;
|
||||||
|
|
||||||
let direction = 0;
|
let direction = 0;
|
||||||
@@ -106,36 +98,37 @@ class NaturalLayoutStrategy extends Workspace.LayoutStrategy {
|
|||||||
// This is used when the window is on the edge of the screen to try to use as much screen real estate as possible.
|
// This is used when the window is on the edge of the screen to try to use as much screen real estate as possible.
|
||||||
directions[i] = direction;
|
directions[i] = direction;
|
||||||
direction++;
|
direction++;
|
||||||
if (direction == 4) {
|
if (direction === 4)
|
||||||
direction = 0;
|
direction = 0;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
let loop_counter = 0;
|
let loopCounter = 0;
|
||||||
let overlap;
|
let overlap;
|
||||||
do {
|
do {
|
||||||
overlap = false;
|
overlap = false;
|
||||||
for (let i = 0; i < rects.length; i++) {
|
for (let i = 0; i < rects.length; i++) {
|
||||||
for (let j = 0; j < rects.length; j++) {
|
for (let j = 0; j < rects.length; j++) {
|
||||||
if (i != j && rects[i].adjusted(-WINDOW_PLACEMENT_NATURAL_GAPS, -WINDOW_PLACEMENT_NATURAL_GAPS,
|
let adjustments = [-1, -1, 1, 1]
|
||||||
WINDOW_PLACEMENT_NATURAL_GAPS, WINDOW_PLACEMENT_NATURAL_GAPS).overlap(
|
.map(v => (v *= WINDOW_PLACEMENT_NATURAL_GAPS));
|
||||||
rects[j].adjusted(-WINDOW_PLACEMENT_NATURAL_GAPS, -WINDOW_PLACEMENT_NATURAL_GAPS,
|
let iAdjusted = rects[i].adjusted(...adjustments);
|
||||||
WINDOW_PLACEMENT_NATURAL_GAPS, WINDOW_PLACEMENT_NATURAL_GAPS))) {
|
let jAdjusted = rects[j].adjusted(...adjustments);
|
||||||
loop_counter++;
|
if (i !== j && iAdjusted.overlap(jAdjusted)) {
|
||||||
|
loopCounter++;
|
||||||
overlap = true;
|
overlap = true;
|
||||||
|
|
||||||
// TODO: something like a Point2D would be nicer here:
|
// TODO: something like a Point2D would be nicer here:
|
||||||
|
|
||||||
// Determine pushing direction
|
// Determine pushing direction
|
||||||
let i_center = rects[i].center();
|
let iCenter = rects[i].center();
|
||||||
let j_center = rects[j].center();
|
let jCenter = rects[j].center();
|
||||||
let diff = [j_center[0] - i_center[0], j_center[1] - i_center[1]];
|
let diff = [jCenter[0] - iCenter[0], jCenter[1] - iCenter[1]];
|
||||||
|
|
||||||
// Prevent dividing by zero and non-movement
|
// Prevent dividing by zero and non-movement
|
||||||
if (diff[0] == 0 && diff[1] == 0)
|
if (diff[0] === 0 && diff[1] === 0)
|
||||||
diff[0] = 1;
|
diff[0] = 1;
|
||||||
// Try to keep screen/workspace aspect ratio
|
// Try to keep screen/workspace aspect ratio
|
||||||
if ( bounds.height / bounds.width > area_rect.height / area_rect.width )
|
if (bounds.height / bounds.width > areaRect.height / areaRect.width)
|
||||||
diff[0] *= 2;
|
diff[0] *= 2;
|
||||||
else
|
else
|
||||||
diff[1] *= 2;
|
diff[1] *= 2;
|
||||||
@@ -164,33 +157,33 @@ class NaturalLayoutStrategy extends Workspace.LayoutStrategy {
|
|||||||
let xSection = Math.round((rects[i].x - bounds.x) / (bounds.width / 3));
|
let xSection = Math.round((rects[i].x - bounds.x) / (bounds.width / 3));
|
||||||
let ySection = Math.round((rects[i].y - bounds.y) / (bounds.height / 3));
|
let ySection = Math.round((rects[i].y - bounds.y) / (bounds.height / 3));
|
||||||
|
|
||||||
let i_center = rects[i].center();
|
iCenter = rects[i].center();
|
||||||
diff[0] = 0;
|
diff[0] = 0;
|
||||||
diff[1] = 0;
|
diff[1] = 0;
|
||||||
if (xSection != 1 || ySection != 1) { // Remove this if you want the center to pull as well
|
if (xSection !== 1 || ySection !== 1) { // Remove this if you want the center to pull as well
|
||||||
if (xSection == 1)
|
if (xSection === 1)
|
||||||
xSection = (directions[i] / 2 ? 2 : 0);
|
xSection = directions[i] / 2 ? 2 : 0;
|
||||||
if (ySection == 1)
|
if (ySection === 1)
|
||||||
ySection = (directions[i] % 2 ? 2 : 0);
|
ySection = directions[i] % 2 ? 2 : 0;
|
||||||
}
|
}
|
||||||
if (xSection == 0 && ySection == 0) {
|
if (xSection === 0 && ySection === 0) {
|
||||||
diff[0] = bounds.x - i_center[0];
|
diff[0] = bounds.x - iCenter[0];
|
||||||
diff[1] = bounds.y - i_center[1];
|
diff[1] = bounds.y - iCenter[1];
|
||||||
}
|
}
|
||||||
if (xSection == 2 && ySection == 0) {
|
if (xSection === 2 && ySection === 0) {
|
||||||
diff[0] = bounds.x + bounds.width - i_center[0];
|
diff[0] = bounds.x + bounds.width - iCenter[0];
|
||||||
diff[1] = bounds.y - i_center[1];
|
diff[1] = bounds.y - iCenter[1];
|
||||||
}
|
}
|
||||||
if (xSection == 2 && ySection == 2) {
|
if (xSection === 2 && ySection === 2) {
|
||||||
diff[0] = bounds.x + bounds.width - i_center[0];
|
diff[0] = bounds.x + bounds.width - iCenter[0];
|
||||||
diff[1] = bounds.y + bounds.height - i_center[1];
|
diff[1] = bounds.y + bounds.height - iCenter[1];
|
||||||
}
|
}
|
||||||
if (xSection == 0 && ySection == 2) {
|
if (xSection === 0 && ySection === 2) {
|
||||||
diff[0] = bounds.x - i_center[0];
|
diff[0] = bounds.x - iCenter[0];
|
||||||
diff[1] = bounds.y + bounds.height - i_center[1];
|
diff[1] = bounds.y + bounds.height - iCenter[1];
|
||||||
}
|
}
|
||||||
if (diff[0] != 0 || diff[1] != 0) {
|
if (diff[0] !== 0 || diff[1] !== 0) {
|
||||||
let length = Math.sqrt(diff[0]*diff[0] + diff[1]*diff[1]);
|
length = Math.sqrt(diff[0] * diff[0] + diff[1] * diff[1]);
|
||||||
diff[0] *= WINDOW_PLACEMENT_NATURAL_ACCURACY / length / 2; // /2 to make it less influencing than the normal center-move above
|
diff[0] *= WINDOW_PLACEMENT_NATURAL_ACCURACY / length / 2; // /2 to make it less influencing than the normal center-move above
|
||||||
diff[1] *= WINDOW_PLACEMENT_NATURAL_ACCURACY / length / 2;
|
diff[1] *= WINDOW_PLACEMENT_NATURAL_ACCURACY / length / 2;
|
||||||
rects[i].translate(diff[0], diff[1]);
|
rects[i].translate(diff[0], diff[1]);
|
||||||
@@ -203,44 +196,38 @@ class NaturalLayoutStrategy extends Workspace.LayoutStrategy {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} while (overlap && loop_counter < WINDOW_PLACEMENT_NATURAL_MAX_TRANSLATIONS);
|
} while (overlap && loopCounter < WINDOW_PLACEMENT_NATURAL_MAX_TRANSLATIONS);
|
||||||
|
|
||||||
// Work out scaling by getting the most top-left and most bottom-right window coords.
|
// Work out scaling by getting the most top-left and most bottom-right window coords.
|
||||||
let scale;
|
let scale;
|
||||||
scale = Math.min(area_rect.width / bounds.width,
|
scale = Math.min(
|
||||||
area_rect.height / bounds.height,
|
areaRect.width / bounds.width,
|
||||||
1.0);
|
areaRect.height / bounds.height,
|
||||||
|
1.0);
|
||||||
|
|
||||||
// Make bounding rect fill the screen size for later steps
|
// Make bounding rect fill the screen size for later steps
|
||||||
bounds.x = bounds.x - (area_rect.width - bounds.width * scale) / 2;
|
bounds.x -= (areaRect.width - bounds.width * scale) / 2;
|
||||||
bounds.y = bounds.y - (area_rect.height - bounds.height * scale) / 2;
|
bounds.y -= (areaRect.height - bounds.height * scale) / 2;
|
||||||
bounds.width = area_rect.width / scale;
|
bounds.width = areaRect.width / scale;
|
||||||
bounds.height = area_rect.height / scale;
|
bounds.height = areaRect.height / scale;
|
||||||
|
|
||||||
// Move all windows back onto the screen and set their scale
|
// Move all windows back onto the screen and set their scale
|
||||||
for (let i = 0; i < rects.length; i++) {
|
for (let i = 0; i < rects.length; i++)
|
||||||
rects[i].translate(-bounds.x, -bounds.y);
|
rects[i].translate(-bounds.x, -bounds.y);
|
||||||
}
|
|
||||||
|
|
||||||
// TODO: Implement the KDE part "Try to fill the gaps by enlarging windows if they have the space" here. (If this is wanted)
|
|
||||||
|
|
||||||
// rescale to workspace
|
// rescale to workspace
|
||||||
let scales = [];
|
|
||||||
|
|
||||||
let buttonOuterHeight, captionHeight;
|
|
||||||
let buttonOuterWidth = 0;
|
|
||||||
|
|
||||||
let slots = [];
|
let slots = [];
|
||||||
for (let i = 0; i < rects.length; i++) {
|
for (let i = 0; i < rects.length; i++) {
|
||||||
rects[i].x = rects[i].x * scale + area_rect.x;
|
rects[i].x = rects[i].x * scale + areaRect.x;
|
||||||
rects[i].y = rects[i].y * scale + area_rect.y;
|
rects[i].y = rects[i].y * scale + areaRect.y;
|
||||||
|
|
||||||
slots.push([rects[i].x, rects[i].y, scale, clones[i]]);
|
slots.push([rects[i].x, rects[i].y, scale, clones[i]]);
|
||||||
}
|
}
|
||||||
|
|
||||||
return slots;
|
return slots;
|
||||||
}
|
}
|
||||||
};
|
}
|
||||||
|
|
||||||
let winInjections, workspaceInjections;
|
let winInjections, workspaceInjections;
|
||||||
|
|
||||||
@@ -252,20 +239,20 @@ function resetState() {
|
|||||||
function enable() {
|
function enable() {
|
||||||
resetState();
|
resetState();
|
||||||
|
|
||||||
let settings = Convenience.getSettings();
|
let settings = ExtensionUtils.getSettings();
|
||||||
|
|
||||||
workspaceInjections['_getBestLayout'] = Workspace.Workspace.prototype._getBestLayout;
|
workspaceInjections['_getBestLayout'] = Workspace.Workspace.prototype._getBestLayout;
|
||||||
Workspace.Workspace.prototype._getBestLayout = function(windows) {
|
Workspace.Workspace.prototype._getBestLayout = function (windows) {
|
||||||
let strategy = new NaturalLayoutStrategy(settings);
|
let strategy = new NaturalLayoutStrategy(settings);
|
||||||
let layout = { strategy };
|
let layout = { strategy };
|
||||||
strategy.computeLayout(windows, layout);
|
strategy.computeLayout(windows, layout);
|
||||||
|
|
||||||
return layout;
|
return layout;
|
||||||
}
|
};
|
||||||
|
|
||||||
/// position window titles on top of windows in overlay ////
|
// position window titles on top of windows in overlay
|
||||||
winInjections['relayout'] = Workspace.WindowOverlay.prototype.relayout;
|
winInjections['relayout'] = Workspace.WindowOverlay.prototype.relayout;
|
||||||
Workspace.WindowOverlay.prototype.relayout = function(animate) {
|
Workspace.WindowOverlay.prototype.relayout = function (animate) {
|
||||||
if (settings.get_boolean('window-captions-on-top')) {
|
if (settings.get_boolean('window-captions-on-top')) {
|
||||||
let [, , , cloneHeight] = this._windowClone.slot;
|
let [, , , cloneHeight] = this._windowClone.slot;
|
||||||
this.title.translation_y = -cloneHeight;
|
this.title.translation_y = -cloneHeight;
|
||||||
@@ -293,7 +280,3 @@ function disable() {
|
|||||||
global.stage.queue_relayout();
|
global.stage.queue_relayout();
|
||||||
resetState();
|
resetState();
|
||||||
}
|
}
|
||||||
|
|
||||||
function init() {
|
|
||||||
/* do nothing */
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -1,49 +1,49 @@
|
|||||||
/* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */
|
/* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */
|
||||||
|
/* exported init enable disable */
|
||||||
|
|
||||||
const Clutter = imports.gi.Clutter;
|
const { Clutter, GObject, St } = imports.gi;
|
||||||
const Gio = imports.gi.Gio;
|
|
||||||
const GLib = imports.gi.GLib;
|
|
||||||
const Shell = imports.gi.Shell;
|
|
||||||
const St = imports.gi.St;
|
|
||||||
|
|
||||||
|
const ExtensionUtils = imports.misc.extensionUtils;
|
||||||
const Main = imports.ui.main;
|
const Main = imports.ui.main;
|
||||||
const PanelMenu = imports.ui.panelMenu;
|
const PanelMenu = imports.ui.panelMenu;
|
||||||
const PopupMenu = imports.ui.popupMenu;
|
const PopupMenu = imports.ui.popupMenu;
|
||||||
const Panel = imports.ui.panel;
|
|
||||||
|
|
||||||
const Gettext = imports.gettext.domain('gnome-shell-extensions');
|
const Gettext = imports.gettext.domain('gnome-shell-extensions');
|
||||||
const _ = Gettext.gettext;
|
const _ = Gettext.gettext;
|
||||||
const N_ = x => x;
|
const N_ = x => x;
|
||||||
|
|
||||||
const ExtensionUtils = imports.misc.extensionUtils;
|
|
||||||
const Me = ExtensionUtils.getCurrentExtension();
|
const Me = ExtensionUtils.getCurrentExtension();
|
||||||
const Convenience = Me.imports.convenience;
|
|
||||||
const PlaceDisplay = Me.imports.placeDisplay;
|
const PlaceDisplay = Me.imports.placeDisplay;
|
||||||
|
|
||||||
const PLACE_ICON_SIZE = 16;
|
const PLACE_ICON_SIZE = 16;
|
||||||
|
|
||||||
|
var PlaceMenuItem = GObject.registerClass(
|
||||||
class PlaceMenuItem extends PopupMenu.PopupBaseMenuItem {
|
class PlaceMenuItem extends PopupMenu.PopupBaseMenuItem {
|
||||||
constructor(info) {
|
_init(info) {
|
||||||
super();
|
super._init();
|
||||||
this._info = info;
|
this._info = info;
|
||||||
|
|
||||||
this._icon = new St.Icon({ gicon: info.icon,
|
this._icon = new St.Icon({
|
||||||
icon_size: PLACE_ICON_SIZE });
|
gicon: info.icon,
|
||||||
this.actor.add_child(this._icon);
|
icon_size: PLACE_ICON_SIZE,
|
||||||
|
});
|
||||||
|
this.add_child(this._icon);
|
||||||
|
|
||||||
this._label = new St.Label({ text: info.name, x_expand: true });
|
this._label = new St.Label({ text: info.name, x_expand: true });
|
||||||
this.actor.add_child(this._label);
|
this.add_child(this._label);
|
||||||
|
|
||||||
if (info.isRemovable()) {
|
if (info.isRemovable()) {
|
||||||
this._ejectIcon = new St.Icon({ icon_name: 'media-eject-symbolic',
|
this._ejectIcon = new St.Icon({
|
||||||
style_class: 'popup-menu-icon ' });
|
icon_name: 'media-eject-symbolic',
|
||||||
|
style_class: 'popup-menu-icon',
|
||||||
|
});
|
||||||
this._ejectButton = new St.Button({ child: this._ejectIcon });
|
this._ejectButton = new St.Button({ child: this._ejectIcon });
|
||||||
this._ejectButton.connect('clicked', info.eject.bind(info));
|
this._ejectButton.connect('clicked', info.eject.bind(info));
|
||||||
this.actor.add_child(this._ejectButton);
|
this.add_child(this._ejectButton);
|
||||||
}
|
}
|
||||||
|
|
||||||
this._changedId = info.connect('changed',
|
this._changedId = info.connect('changed',
|
||||||
this._propertiesChanged.bind(this));
|
this._propertiesChanged.bind(this));
|
||||||
}
|
}
|
||||||
|
|
||||||
destroy() {
|
destroy() {
|
||||||
@@ -65,35 +65,38 @@ class PlaceMenuItem extends PopupMenu.PopupBaseMenuItem {
|
|||||||
this._icon.gicon = info.icon;
|
this._icon.gicon = info.icon;
|
||||||
this._label.text = info.name;
|
this._label.text = info.name;
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
|
|
||||||
const SECTIONS = [
|
const SECTIONS = [
|
||||||
'special',
|
'special',
|
||||||
'devices',
|
'devices',
|
||||||
'bookmarks',
|
'bookmarks',
|
||||||
'network'
|
'network',
|
||||||
]
|
];
|
||||||
|
|
||||||
|
let PlacesMenu = GObject.registerClass(
|
||||||
class PlacesMenu extends PanelMenu.Button {
|
class PlacesMenu extends PanelMenu.Button {
|
||||||
constructor() {
|
_init() {
|
||||||
super(0.0, _("Places"));
|
super._init(0.0, _('Places'));
|
||||||
|
|
||||||
let hbox = new St.BoxLayout({ style_class: 'panel-status-menu-box' });
|
let hbox = new St.BoxLayout({ style_class: 'panel-status-menu-box' });
|
||||||
let label = new St.Label({ text: _("Places"),
|
let label = new St.Label({
|
||||||
y_expand: true,
|
text: _('Places'),
|
||||||
y_align: Clutter.ActorAlign.CENTER });
|
y_expand: true,
|
||||||
|
y_align: Clutter.ActorAlign.CENTER,
|
||||||
|
});
|
||||||
hbox.add_child(label);
|
hbox.add_child(label);
|
||||||
hbox.add_child(PopupMenu.arrowIcon(St.Side.BOTTOM));
|
hbox.add_child(PopupMenu.arrowIcon(St.Side.BOTTOM));
|
||||||
this.actor.add_actor(hbox);
|
this.add_actor(hbox);
|
||||||
|
|
||||||
this.placesManager = new PlaceDisplay.PlacesManager();
|
this.placesManager = new PlaceDisplay.PlacesManager();
|
||||||
|
|
||||||
this._sections = { };
|
this._sections = { };
|
||||||
|
|
||||||
for (let i=0; i < SECTIONS.length; i++) {
|
for (let i = 0; i < SECTIONS.length; i++) {
|
||||||
let id = SECTIONS[i];
|
let id = SECTIONS[i];
|
||||||
this._sections[id] = new PopupMenu.PopupMenuSection();
|
this._sections[id] = new PopupMenu.PopupMenuSection();
|
||||||
this.placesManager.connect(id + '-updated', () => {
|
this.placesManager.connect(`${id}-updated`, () => {
|
||||||
this._redisplay(id);
|
this._redisplay(id);
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -103,10 +106,10 @@ class PlacesMenu extends PanelMenu.Button {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
destroy() {
|
_onDestroy() {
|
||||||
this.placesManager.destroy();
|
this.placesManager.destroy();
|
||||||
|
|
||||||
super.destroy();
|
super._onDestroy();
|
||||||
}
|
}
|
||||||
|
|
||||||
_redisplay(id) {
|
_redisplay(id) {
|
||||||
@@ -122,20 +125,20 @@ class PlacesMenu extends PanelMenu.Button {
|
|||||||
|
|
||||||
this._sections[id].actor.visible = places.length > 0;
|
this._sections[id].actor.visible = places.length > 0;
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
|
|
||||||
function init() {
|
function init() {
|
||||||
Convenience.initTranslations();
|
ExtensionUtils.initTranslations();
|
||||||
}
|
}
|
||||||
|
|
||||||
let _indicator;
|
let _indicator;
|
||||||
|
|
||||||
function enable() {
|
function enable() {
|
||||||
_indicator = new PlacesMenu;
|
_indicator = new PlacesMenu();
|
||||||
|
|
||||||
let pos = 1;
|
let pos = Main.sessionMode.panel.left.indexOf('appMenu');
|
||||||
if ('apps-menu' in Main.panel.statusArea)
|
if ('apps-menu' in Main.panel.statusArea)
|
||||||
pos = 2;
|
pos++;
|
||||||
Main.panel.addToStatusArea('places-menu', _indicator, pos, 'left');
|
Main.panel.addToStatusArea('places-menu', _indicator, pos, 'left');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,18 +1,10 @@
|
|||||||
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
|
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
|
||||||
|
|
||||||
const GLib = imports.gi.GLib;
|
const { Gio, GLib, Shell } = imports.gi;
|
||||||
const Gio = imports.gi.Gio;
|
|
||||||
const Shell = imports.gi.Shell;
|
|
||||||
const Mainloop = imports.mainloop;
|
|
||||||
const Signals = imports.signals;
|
const Signals = imports.signals;
|
||||||
const St = imports.gi.St;
|
|
||||||
|
|
||||||
const DND = imports.ui.dnd;
|
|
||||||
const Main = imports.ui.main;
|
const Main = imports.ui.main;
|
||||||
const Params = imports.misc.params;
|
|
||||||
const Search = imports.ui.search;
|
|
||||||
const ShellMountOperation = imports.ui.shellMountOperation;
|
const ShellMountOperation = imports.ui.shellMountOperation;
|
||||||
const Util = imports.misc.util;
|
|
||||||
|
|
||||||
const Gettext = imports.gettext.domain('gnome-shell-extensions');
|
const Gettext = imports.gettext.domain('gnome-shell-extensions');
|
||||||
const _ = Gettext.gettext;
|
const _ = Gettext.gettext;
|
||||||
@@ -28,8 +20,8 @@ const Hostname1Iface = '<node> \
|
|||||||
const Hostname1 = Gio.DBusProxy.makeProxyWrapper(Hostname1Iface);
|
const Hostname1 = Gio.DBusProxy.makeProxyWrapper(Hostname1Iface);
|
||||||
|
|
||||||
class PlaceInfo {
|
class PlaceInfo {
|
||||||
constructor() {
|
constructor(...params) {
|
||||||
this._init.apply(this, arguments);
|
this._init(...params);
|
||||||
}
|
}
|
||||||
|
|
||||||
_init(kind, file, name, icon) {
|
_init(kind, file, name, icon) {
|
||||||
@@ -46,65 +38,54 @@ class PlaceInfo {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
_createLaunchCallback(launchContext, tryMount) {
|
async _ensureMountAndLaunch(context, tryMount) {
|
||||||
return (_ignored, result) => {
|
try {
|
||||||
try {
|
await this._launchDefaultForUri(this.file.get_uri(), context, null);
|
||||||
Gio.AppInfo.launch_default_for_uri_finish(result);
|
} catch (err) {
|
||||||
} catch(e) {
|
if (!err.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.NOT_MOUNTED)) {
|
||||||
if (e.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.NOT_MOUNTED)) {
|
Main.notifyError(_('Failed to launch “%s”').format(this.name), err.message);
|
||||||
let source = {
|
return;
|
||||||
get_icon: () => { return this.icon; }
|
}
|
||||||
};
|
|
||||||
let op = new ShellMountOperation.ShellMountOperation(source);
|
|
||||||
this.file.mount_enclosing_volume(0, op.mountOp, null, (file, result) => {
|
|
||||||
try {
|
|
||||||
op.close();
|
|
||||||
file.mount_enclosing_volume_finish(result);
|
|
||||||
} catch(e) {
|
|
||||||
if (e.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.FAILED_HANDLED))
|
|
||||||
// e.g. user canceled the password dialog
|
|
||||||
return;
|
|
||||||
Main.notifyError(_("Failed to mount volume for “%s”").format(this.name), e.message);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (tryMount) {
|
let source = {
|
||||||
let callback = this._createLaunchCallback(launchContext, false);
|
get_icon: () => this.icon,
|
||||||
Gio.AppInfo.launch_default_for_uri_async(file.get_uri(),
|
};
|
||||||
launchContext,
|
let op = new ShellMountOperation.ShellMountOperation(source);
|
||||||
null,
|
try {
|
||||||
callback);
|
await this._mountEnclosingVolume(0, op.mountOp, null);
|
||||||
}
|
|
||||||
});
|
if (tryMount)
|
||||||
} else {
|
this._ensureMountAndLaunch(context, false);
|
||||||
Main.notifyError(_("Failed to launch “%s”").format(this.name), e.message);
|
} catch (e) {
|
||||||
}
|
if (!e.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.FAILED_HANDLED))
|
||||||
|
Main.notifyError(_('Failed to mount volume for “%s”').format(this.name), e.message);
|
||||||
|
} finally {
|
||||||
|
op.close();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
launch(timestamp) {
|
launch(timestamp) {
|
||||||
let launchContext = global.create_app_launch_context(timestamp, -1);
|
let launchContext = global.create_app_launch_context(timestamp, -1);
|
||||||
let callback = this._createLaunchCallback(launchContext, true);
|
this._ensureMountAndLaunch(launchContext, true);
|
||||||
Gio.AppInfo.launch_default_for_uri_async(this.file.get_uri(),
|
|
||||||
launchContext,
|
|
||||||
null,
|
|
||||||
callback);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
getIcon() {
|
getIcon() {
|
||||||
this.file.query_info_async('standard::symbolic-icon', 0, 0, null,
|
this.file.query_info_async('standard::symbolic-icon',
|
||||||
(file, result) => {
|
Gio.FileQueryInfoFlags.NONE,
|
||||||
try {
|
0,
|
||||||
let info = file.query_info_finish(result);
|
null,
|
||||||
this.icon = info.get_symbolic_icon();
|
(file, result) => {
|
||||||
this.emit('changed');
|
try {
|
||||||
} catch(e) {
|
let info = file.query_info_finish(result);
|
||||||
if (e instanceof Gio.IOErrorEnum)
|
this.icon = info.get_symbolic_icon();
|
||||||
return;
|
this.emit('changed');
|
||||||
throw e;
|
} catch (e) {
|
||||||
}
|
if (e instanceof Gio.IOErrorEnum)
|
||||||
});
|
return;
|
||||||
|
throw e;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
// return a generic icon for this kind for now, until we have the
|
// return a generic icon for this kind for now, until we have the
|
||||||
// icon from the query info above
|
// icon from the query info above
|
||||||
@@ -127,18 +108,44 @@ class PlaceInfo {
|
|||||||
try {
|
try {
|
||||||
let info = this.file.query_info('standard::display-name', 0, null);
|
let info = this.file.query_info('standard::display-name', 0, null);
|
||||||
return info.get_display_name();
|
return info.get_display_name();
|
||||||
} catch(e) {
|
} catch (e) {
|
||||||
if (e instanceof Gio.IOErrorEnum)
|
if (e instanceof Gio.IOErrorEnum)
|
||||||
return this.file.get_basename();
|
return this.file.get_basename();
|
||||||
throw e;
|
throw e;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
|
||||||
|
_launchDefaultForUri(uri, context, cancel) {
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
|
Gio.AppInfo.launch_default_for_uri_async(uri, context, cancel, (o, res) => {
|
||||||
|
try {
|
||||||
|
Gio.AppInfo.launch_default_for_uri_finish(res);
|
||||||
|
resolve();
|
||||||
|
} catch (e) {
|
||||||
|
reject(e);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
_mountEnclosingVolume(flags, mountOp, cancel) {
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
|
this.file.mount_enclosing_volume(flags, mountOp, cancel, (o, res) => {
|
||||||
|
try {
|
||||||
|
this.file.mount_enclosing_volume_finish(res);
|
||||||
|
resolve();
|
||||||
|
} catch (e) {
|
||||||
|
reject(e);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
Signals.addSignalMethods(PlaceInfo.prototype);
|
Signals.addSignalMethods(PlaceInfo.prototype);
|
||||||
|
|
||||||
class RootInfo extends PlaceInfo {
|
class RootInfo extends PlaceInfo {
|
||||||
_init() {
|
_init() {
|
||||||
super._init('devices', Gio.File.new_for_path('/'), _("Computer"));
|
super._init('devices', Gio.File.new_for_path('/'), _('Computer'));
|
||||||
|
|
||||||
let busName = 'org.freedesktop.hostname1';
|
let busName = 'org.freedesktop.hostname1';
|
||||||
let objPath = '/org/freedesktop/hostname1';
|
let objPath = '/org/freedesktop/hostname1';
|
||||||
@@ -148,7 +155,7 @@ class RootInfo extends PlaceInfo {
|
|||||||
|
|
||||||
this._proxy = obj;
|
this._proxy = obj;
|
||||||
this._proxy.connect('g-properties-changed',
|
this._proxy.connect('g-properties-changed',
|
||||||
this._propertiesChanged.bind(this));
|
this._propertiesChanged.bind(this));
|
||||||
this._propertiesChanged(obj);
|
this._propertiesChanged(obj);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -161,7 +168,7 @@ class RootInfo extends PlaceInfo {
|
|||||||
// GDBusProxy will emit a g-properties-changed when hostname1 goes down
|
// GDBusProxy will emit a g-properties-changed when hostname1 goes down
|
||||||
// ignore it
|
// ignore it
|
||||||
if (proxy.g_name_owner) {
|
if (proxy.g_name_owner) {
|
||||||
this.name = proxy.PrettyHostname || _("Computer");
|
this.name = proxy.PrettyHostname || _('Computer');
|
||||||
this.emit('changed');
|
this.emit('changed');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -173,7 +180,7 @@ class RootInfo extends PlaceInfo {
|
|||||||
}
|
}
|
||||||
super.destroy();
|
super.destroy();
|
||||||
}
|
}
|
||||||
};
|
}
|
||||||
|
|
||||||
|
|
||||||
class PlaceDeviceInfo extends PlaceInfo {
|
class PlaceDeviceInfo extends PlaceInfo {
|
||||||
@@ -191,24 +198,25 @@ class PlaceDeviceInfo extends PlaceInfo {
|
|||||||
}
|
}
|
||||||
|
|
||||||
eject() {
|
eject() {
|
||||||
let mountOp = new ShellMountOperation.ShellMountOperation(this._mount);
|
let unmountArgs = [
|
||||||
|
Gio.MountUnmountFlags.NONE,
|
||||||
|
new ShellMountOperation.ShellMountOperation(this._mount).mountOp,
|
||||||
|
null, // Gio.Cancellable
|
||||||
|
];
|
||||||
|
|
||||||
if (this._mount.can_eject())
|
if (this._mount.can_eject()) {
|
||||||
this._mount.eject_with_operation(Gio.MountUnmountFlags.NONE,
|
this._mount.eject_with_operation(...unmountArgs,
|
||||||
mountOp.mountOp,
|
this._ejectFinish.bind(this));
|
||||||
null, // Gio.Cancellable
|
} else {
|
||||||
this._ejectFinish.bind(this));
|
this._mount.unmount_with_operation(...unmountArgs,
|
||||||
else
|
this._unmountFinish.bind(this));
|
||||||
this._mount.unmount_with_operation(Gio.MountUnmountFlags.NONE,
|
}
|
||||||
mountOp.mountOp,
|
|
||||||
null, // Gio.Cancellable
|
|
||||||
this._unmountFinish.bind(this));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
_ejectFinish(mount, result) {
|
_ejectFinish(mount, result) {
|
||||||
try {
|
try {
|
||||||
mount.eject_with_operation_finish(result);
|
mount.eject_with_operation_finish(result);
|
||||||
} catch(e) {
|
} catch (e) {
|
||||||
this._reportFailure(e);
|
this._reportFailure(e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -216,16 +224,16 @@ class PlaceDeviceInfo extends PlaceInfo {
|
|||||||
_unmountFinish(mount, result) {
|
_unmountFinish(mount, result) {
|
||||||
try {
|
try {
|
||||||
mount.unmount_with_operation_finish(result);
|
mount.unmount_with_operation_finish(result);
|
||||||
} catch(e) {
|
} catch (e) {
|
||||||
this._reportFailure(e);
|
this._reportFailure(e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
_reportFailure(exception) {
|
_reportFailure(exception) {
|
||||||
let msg = _("Ejecting drive “%s” failed:").format(this._mount.get_name());
|
let msg = _('Ejecting drive “%s” failed:').format(this._mount.get_name());
|
||||||
Main.notifyError(msg, exception.message);
|
Main.notifyError(msg, exception.message);
|
||||||
}
|
}
|
||||||
};
|
}
|
||||||
|
|
||||||
class PlaceVolumeInfo extends PlaceInfo {
|
class PlaceVolumeInfo extends PlaceInfo {
|
||||||
_init(kind, volume) {
|
_init(kind, volume) {
|
||||||
@@ -251,7 +259,7 @@ class PlaceVolumeInfo extends PlaceInfo {
|
|||||||
getIcon() {
|
getIcon() {
|
||||||
return this._volume.get_symbolic_icon();
|
return this._volume.get_symbolic_icon();
|
||||||
}
|
}
|
||||||
};
|
}
|
||||||
|
|
||||||
const DEFAULT_DIRECTORIES = [
|
const DEFAULT_DIRECTORIES = [
|
||||||
GLib.UserDirectory.DIRECTORY_DOCUMENTS,
|
GLib.UserDirectory.DIRECTORY_DOCUMENTS,
|
||||||
@@ -271,9 +279,8 @@ var PlacesManager = class {
|
|||||||
};
|
};
|
||||||
|
|
||||||
this._settings = new Gio.Settings({ schema_id: BACKGROUND_SCHEMA });
|
this._settings = new Gio.Settings({ schema_id: BACKGROUND_SCHEMA });
|
||||||
this._showDesktopIconsChangedId =
|
this._showDesktopIconsChangedId = this._settings.connect(
|
||||||
this._settings.connect('changed::show-desktop-icons',
|
'changed::show-desktop-icons', this._updateSpecials.bind(this));
|
||||||
this._updateSpecials.bind(this));
|
|
||||||
this._updateSpecials();
|
this._updateSpecials();
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -283,7 +290,7 @@ var PlacesManager = class {
|
|||||||
this._connectVolumeMonitorSignals();
|
this._connectVolumeMonitorSignals();
|
||||||
this._updateMounts();
|
this._updateMounts();
|
||||||
|
|
||||||
this._bookmarksFile = this._findBookmarksFile()
|
this._bookmarksFile = this._findBookmarksFile();
|
||||||
this._bookmarkTimeoutId = 0;
|
this._bookmarkTimeoutId = 0;
|
||||||
this._monitor = null;
|
this._monitor = null;
|
||||||
|
|
||||||
@@ -293,11 +300,12 @@ var PlacesManager = class {
|
|||||||
if (this._bookmarkTimeoutId > 0)
|
if (this._bookmarkTimeoutId > 0)
|
||||||
return;
|
return;
|
||||||
/* Defensive event compression */
|
/* Defensive event compression */
|
||||||
this._bookmarkTimeoutId = Mainloop.timeout_add(100, () => {
|
this._bookmarkTimeoutId = GLib.timeout_add(
|
||||||
this._bookmarkTimeoutId = 0;
|
GLib.PRIORITY_DEFAULT, 100, () => {
|
||||||
this._reloadBookmarks();
|
this._bookmarkTimeoutId = 0;
|
||||||
return false;
|
this._reloadBookmarks();
|
||||||
});
|
return false;
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
this._reloadBookmarks();
|
this._reloadBookmarks();
|
||||||
@@ -305,9 +313,17 @@ var PlacesManager = class {
|
|||||||
}
|
}
|
||||||
|
|
||||||
_connectVolumeMonitorSignals() {
|
_connectVolumeMonitorSignals() {
|
||||||
const signals = ['volume-added', 'volume-removed', 'volume-changed',
|
const signals = [
|
||||||
'mount-added', 'mount-removed', 'mount-changed',
|
'volume-added',
|
||||||
'drive-connected', 'drive-disconnected', 'drive-changed'];
|
'volume-removed',
|
||||||
|
'volume-changed',
|
||||||
|
'mount-added',
|
||||||
|
'mount-removed',
|
||||||
|
'mount-changed',
|
||||||
|
'drive-connected',
|
||||||
|
'drive-disconnected',
|
||||||
|
'drive-changed',
|
||||||
|
];
|
||||||
|
|
||||||
this._volumeMonitorSignals = [];
|
this._volumeMonitorSignals = [];
|
||||||
let func = this._updateMounts.bind(this);
|
let func = this._updateMounts.bind(this);
|
||||||
@@ -328,18 +344,19 @@ var PlacesManager = class {
|
|||||||
if (this._monitor)
|
if (this._monitor)
|
||||||
this._monitor.cancel();
|
this._monitor.cancel();
|
||||||
if (this._bookmarkTimeoutId)
|
if (this._bookmarkTimeoutId)
|
||||||
Mainloop.source_remove(this._bookmarkTimeoutId);
|
GLib.source_remove(this._bookmarkTimeoutId);
|
||||||
}
|
}
|
||||||
|
|
||||||
_updateSpecials() {
|
_updateSpecials() {
|
||||||
this._places.special.forEach(p => { p.destroy(); });
|
this._places.special.forEach(p => p.destroy());
|
||||||
this._places.special = [];
|
this._places.special = [];
|
||||||
|
|
||||||
let homePath = GLib.get_home_dir();
|
let homePath = GLib.get_home_dir();
|
||||||
|
|
||||||
this._places.special.push(new PlaceInfo('special',
|
this._places.special.push(new PlaceInfo(
|
||||||
Gio.File.new_for_path(homePath),
|
'special',
|
||||||
_("Home")));
|
Gio.File.new_for_path(homePath),
|
||||||
|
_('Home')));
|
||||||
|
|
||||||
let specials = [];
|
let specials = [];
|
||||||
let dirs = DEFAULT_DIRECTORIES.slice();
|
let dirs = DEFAULT_DIRECTORIES.slice();
|
||||||
@@ -349,13 +366,13 @@ var PlacesManager = class {
|
|||||||
|
|
||||||
for (let i = 0; i < dirs.length; i++) {
|
for (let i = 0; i < dirs.length; i++) {
|
||||||
let specialPath = GLib.get_user_special_dir(dirs[i]);
|
let specialPath = GLib.get_user_special_dir(dirs[i]);
|
||||||
if (specialPath == null || specialPath == homePath)
|
if (!specialPath || specialPath === homePath)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
let file = Gio.File.new_for_path(specialPath), info;
|
let file = Gio.File.new_for_path(specialPath), info;
|
||||||
try {
|
try {
|
||||||
info = new PlaceInfo('special', file);
|
info = new PlaceInfo('special', file);
|
||||||
} catch(e) {
|
} catch (e) {
|
||||||
if (e.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.NOT_FOUND))
|
if (e.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.NOT_FOUND))
|
||||||
continue;
|
continue;
|
||||||
throw e;
|
throw e;
|
||||||
@@ -374,30 +391,31 @@ var PlacesManager = class {
|
|||||||
let networkMounts = [];
|
let networkMounts = [];
|
||||||
let networkVolumes = [];
|
let networkVolumes = [];
|
||||||
|
|
||||||
this._places.devices.forEach(p => { p.destroy(); });
|
this._places.devices.forEach(p => p.destroy());
|
||||||
this._places.devices = [];
|
this._places.devices = [];
|
||||||
this._places.network.forEach(p => { p.destroy(); });
|
this._places.network.forEach(p => p.destroy());
|
||||||
this._places.network = [];
|
this._places.network = [];
|
||||||
|
|
||||||
/* Add standard places */
|
/* Add standard places */
|
||||||
this._places.devices.push(new RootInfo());
|
this._places.devices.push(new RootInfo());
|
||||||
this._places.network.push(new PlaceInfo('network',
|
this._places.network.push(new PlaceInfo(
|
||||||
Gio.File.new_for_uri('network:///'),
|
'network',
|
||||||
_("Browse Network"),
|
Gio.File.new_for_uri('network:///'),
|
||||||
'network-workgroup-symbolic'));
|
_('Browse Network'),
|
||||||
|
'network-workgroup-symbolic'));
|
||||||
|
|
||||||
/* first go through all connected drives */
|
/* first go through all connected drives */
|
||||||
let drives = this._volumeMonitor.get_connected_drives();
|
let drives = this._volumeMonitor.get_connected_drives();
|
||||||
for (let i = 0; i < drives.length; i++) {
|
for (let i = 0; i < drives.length; i++) {
|
||||||
let volumes = drives[i].get_volumes();
|
let volumes = drives[i].get_volumes();
|
||||||
|
|
||||||
for(let j = 0; j < volumes.length; j++) {
|
for (let j = 0; j < volumes.length; j++) {
|
||||||
let identifier = volumes[j].get_identifier('class');
|
let identifier = volumes[j].get_identifier('class');
|
||||||
if (identifier && identifier.includes('network')) {
|
if (identifier && identifier.includes('network')) {
|
||||||
networkVolumes.push(volumes[j]);
|
networkVolumes.push(volumes[j]);
|
||||||
} else {
|
} else {
|
||||||
let mount = volumes[j].get_mount();
|
let mount = volumes[j].get_mount();
|
||||||
if(mount != null)
|
if (mount)
|
||||||
this._addMount('devices', mount);
|
this._addMount('devices', mount);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -405,8 +423,8 @@ var PlacesManager = class {
|
|||||||
|
|
||||||
/* add all volumes that is not associated with a drive */
|
/* add all volumes that is not associated with a drive */
|
||||||
let volumes = this._volumeMonitor.get_volumes();
|
let volumes = this._volumeMonitor.get_volumes();
|
||||||
for(let i = 0; i < volumes.length; i++) {
|
for (let i = 0; i < volumes.length; i++) {
|
||||||
if(volumes[i].get_drive() != null)
|
if (volumes[i].get_drive())
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
let identifier = volumes[i].get_identifier('class');
|
let identifier = volumes[i].get_identifier('class');
|
||||||
@@ -414,18 +432,18 @@ var PlacesManager = class {
|
|||||||
networkVolumes.push(volumes[i]);
|
networkVolumes.push(volumes[i]);
|
||||||
} else {
|
} else {
|
||||||
let mount = volumes[i].get_mount();
|
let mount = volumes[i].get_mount();
|
||||||
if(mount != null)
|
if (mount)
|
||||||
this._addMount('devices', mount);
|
this._addMount('devices', mount);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* add mounts that have no volume (/etc/mtab mounts, ftp, sftp,...) */
|
/* add mounts that have no volume (/etc/mtab mounts, ftp, sftp,...) */
|
||||||
let mounts = this._volumeMonitor.get_mounts();
|
let mounts = this._volumeMonitor.get_mounts();
|
||||||
for(let i = 0; i < mounts.length; i++) {
|
for (let i = 0; i < mounts.length; i++) {
|
||||||
if(mounts[i].is_shadowed())
|
if (mounts[i].is_shadowed())
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if(mounts[i].get_volume())
|
if (mounts[i].get_volume())
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
let root = mounts[i].get_default_location();
|
let root = mounts[i].get_default_location();
|
||||||
@@ -445,9 +463,9 @@ var PlacesManager = class {
|
|||||||
this._addVolume('network', networkVolumes[i]);
|
this._addVolume('network', networkVolumes[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (let i = 0; i < networkMounts.length; i++) {
|
for (let i = 0; i < networkMounts.length; i++)
|
||||||
this._addMount('network', networkMounts[i]);
|
this._addMount('network', networkMounts[i]);
|
||||||
}
|
|
||||||
|
|
||||||
this.emit('devices-updated');
|
this.emit('devices-updated');
|
||||||
this.emit('network-updated');
|
this.emit('network-updated');
|
||||||
@@ -478,7 +496,7 @@ var PlacesManager = class {
|
|||||||
for (let i = 0; i < lines.length; i++) {
|
for (let i = 0; i < lines.length; i++) {
|
||||||
let line = lines[i];
|
let line = lines[i];
|
||||||
let components = line.split(' ');
|
let components = line.split(' ');
|
||||||
let bookmark = components[0];
|
let [bookmark] = components;
|
||||||
|
|
||||||
if (!bookmark)
|
if (!bookmark)
|
||||||
continue;
|
continue;
|
||||||
@@ -488,16 +506,16 @@ var PlacesManager = class {
|
|||||||
continue;
|
continue;
|
||||||
|
|
||||||
let duplicate = false;
|
let duplicate = false;
|
||||||
for (let i = 0; i < this._places.special.length; i++) {
|
for (let j = 0; j < this._places.special.length; j++) {
|
||||||
if (file.equal(this._places.special[i].file)) {
|
if (file.equal(this._places.special[j].file)) {
|
||||||
duplicate = true;
|
duplicate = true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (duplicate)
|
if (duplicate)
|
||||||
continue;
|
continue;
|
||||||
for (let i = 0; i < bookmarks.length; i++) {
|
for (let j = 0; j < bookmarks.length; j++) {
|
||||||
if (file.equal(bookmarks[i].file)) {
|
if (file.equal(bookmarks[j].file)) {
|
||||||
duplicate = true;
|
duplicate = true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -522,7 +540,7 @@ var PlacesManager = class {
|
|||||||
|
|
||||||
try {
|
try {
|
||||||
devItem = new PlaceDeviceInfo(kind, mount);
|
devItem = new PlaceDeviceInfo(kind, mount);
|
||||||
} catch(e) {
|
} catch (e) {
|
||||||
if (e.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.NOT_FOUND))
|
if (e.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.NOT_FOUND))
|
||||||
return;
|
return;
|
||||||
throw e;
|
throw e;
|
||||||
@@ -536,7 +554,7 @@ var PlacesManager = class {
|
|||||||
|
|
||||||
try {
|
try {
|
||||||
volItem = new PlaceVolumeInfo(kind, volume);
|
volItem = new PlaceVolumeInfo(kind, volume);
|
||||||
} catch(e) {
|
} catch (e) {
|
||||||
if (e.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.NOT_FOUND))
|
if (e.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.NOT_FOUND))
|
||||||
return;
|
return;
|
||||||
throw e;
|
throw e;
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
/* exported enable disable */
|
||||||
/* Screenshot Window Sizer for Gnome Shell
|
/* Screenshot Window Sizer for Gnome Shell
|
||||||
*
|
*
|
||||||
* Copyright (c) 2013 Owen Taylor <otaylor@redhat.com>
|
* Copyright (c) 2013 Owen Taylor <otaylor@redhat.com>
|
||||||
@@ -18,21 +19,14 @@
|
|||||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
const Gio = imports.gi.Gio;
|
const { Clutter, Meta, Shell, St } = imports.gi;
|
||||||
const Meta = imports.gi.Meta;
|
|
||||||
const Shell = imports.gi.Shell;
|
|
||||||
const St = imports.gi.St;
|
|
||||||
|
|
||||||
const Main = imports.ui.main;
|
|
||||||
const Tweener = imports.ui.tweener;
|
|
||||||
|
|
||||||
const ExtensionUtils = imports.misc.extensionUtils;
|
const ExtensionUtils = imports.misc.extensionUtils;
|
||||||
const Me = ExtensionUtils.getCurrentExtension();
|
const Main = imports.ui.main;
|
||||||
const Convenience = Me.imports.convenience;
|
|
||||||
|
|
||||||
const MESSAGE_FADE_TIME = 2;
|
const MESSAGE_FADE_TIME = 2000;
|
||||||
|
|
||||||
let text, button;
|
let text;
|
||||||
|
|
||||||
function hideMessage() {
|
function hideMessage() {
|
||||||
text.destroy();
|
text.destroy();
|
||||||
@@ -45,20 +39,22 @@ function flashMessage(message) {
|
|||||||
Main.uiGroup.add_actor(text);
|
Main.uiGroup.add_actor(text);
|
||||||
}
|
}
|
||||||
|
|
||||||
Tweener.removeTweens(text);
|
text.remove_all_transitions();
|
||||||
text.text = message;
|
text.text = message;
|
||||||
|
|
||||||
text.opacity = 255;
|
text.opacity = 255;
|
||||||
|
|
||||||
let monitor = Main.layoutManager.primaryMonitor;
|
let monitor = Main.layoutManager.primaryMonitor;
|
||||||
text.set_position(monitor.x + Math.floor(monitor.width / 2 - text.width / 2),
|
text.set_position(
|
||||||
monitor.y + Math.floor(monitor.height / 2 - text.height / 2));
|
monitor.x + Math.floor(monitor.width / 2 - text.width / 2),
|
||||||
|
monitor.y + Math.floor(monitor.height / 2 - text.height / 2));
|
||||||
|
|
||||||
Tweener.addTween(text,
|
text.ease({
|
||||||
{ opacity: 0,
|
opacity: 0,
|
||||||
time: MESSAGE_FADE_TIME,
|
duration: MESSAGE_FADE_TIME,
|
||||||
transition: 'easeOutQuad',
|
mode: Clutter.AnimationMode.EASE_OUT_QUAD,
|
||||||
onComplete: hideMessage });
|
onComplete: hideMessage,
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
let SIZES = [
|
let SIZES = [
|
||||||
@@ -66,25 +62,28 @@ let SIZES = [
|
|||||||
[800, 450],
|
[800, 450],
|
||||||
[1024, 576],
|
[1024, 576],
|
||||||
[1200, 675],
|
[1200, 675],
|
||||||
[1600, 900]
|
[1600, 900],
|
||||||
|
[360, 654], // Phone portrait maximized
|
||||||
|
[720, 360], // Phone landscape fullscreen
|
||||||
];
|
];
|
||||||
|
|
||||||
function cycleScreenshotSizes(display, window, binding) {
|
function cycleScreenshotSizes(display, window, binding) {
|
||||||
// Probably this isn't useful with 5 sizes, but you can decrease instead
|
// Probably this isn't useful with 5 sizes, but you can decrease instead
|
||||||
// of increase by holding down shift.
|
// of increase by holding down shift.
|
||||||
let modifiers = binding.get_modifiers();
|
let modifiers = binding.get_modifiers();
|
||||||
let backwards = (modifiers & Meta.VirtualModifier.SHIFT_MASK) != 0;
|
let backwards = (modifiers & Meta.VirtualModifier.SHIFT_MASK) !== 0;
|
||||||
|
|
||||||
// Unmaximize first
|
// Unmaximize first
|
||||||
if (window.maximized_horizontally || window.maximizedVertically)
|
if (window.get_maximized() !== 0)
|
||||||
window.unmaximize(Meta.MaximizeFlags.HORIZONTAL | Meta.MaximizeFlags.VERTICAL);
|
window.unmaximize(Meta.MaximizeFlags.BOTH);
|
||||||
|
|
||||||
let workArea = window.get_work_area_current_monitor();
|
let workArea = window.get_work_area_current_monitor();
|
||||||
let outerRect = window.get_frame_rect();
|
let outerRect = window.get_frame_rect();
|
||||||
|
|
||||||
// Double both axes if on a hidpi display
|
// Double both axes if on a hidpi display
|
||||||
let scaleFactor = St.ThemeContext.get_for_stage(global.stage).scale_factor;
|
let scaleFactor = St.ThemeContext.get_for_stage(global.stage).scale_factor;
|
||||||
let scaledSizes = SIZES.map(size => size.map(wh => wh * scaleFactor));
|
let scaledSizes = SIZES.map(size => size.map(wh => wh * scaleFactor))
|
||||||
|
.filter(([w, h]) => w <= workArea.width && h <= workArea.height);
|
||||||
|
|
||||||
// Find the nearest 16:9 size for the current window size
|
// Find the nearest 16:9 size for the current window size
|
||||||
let nearestIndex;
|
let nearestIndex;
|
||||||
@@ -99,7 +98,7 @@ function cycleScreenshotSizes(display, window, binding) {
|
|||||||
|
|
||||||
// get the best initial window size
|
// get the best initial window size
|
||||||
let error = Math.abs(width - outerRect.width) + Math.abs(height - outerRect.height);
|
let error = Math.abs(width - outerRect.width) + Math.abs(height - outerRect.height);
|
||||||
if (nearestIndex == null || error < nearestError) {
|
if (nearestIndex === undefined || error < nearestError) {
|
||||||
nearestIndex = i;
|
nearestIndex = i;
|
||||||
nearestError = error;
|
nearestError = error;
|
||||||
}
|
}
|
||||||
@@ -107,10 +106,7 @@ function cycleScreenshotSizes(display, window, binding) {
|
|||||||
|
|
||||||
// get the next size up or down from ideal
|
// get the next size up or down from ideal
|
||||||
let newIndex = (nearestIndex + (backwards ? -1 : 1)) % scaledSizes.length;
|
let newIndex = (nearestIndex + (backwards ? -1 : 1)) % scaledSizes.length;
|
||||||
let newWidth, newHeight;
|
let [newWidth, newHeight] = scaledSizes[newIndex];
|
||||||
[newWidth, newHeight] = scaledSizes[newIndex];
|
|
||||||
if (newWidth > workArea.width || newHeight > workArea.height)
|
|
||||||
[newWidth, newHeight] = scaledSizes[0];
|
|
||||||
|
|
||||||
// Push the window onscreen if it would be resized offscreen
|
// Push the window onscreen if it would be resized offscreen
|
||||||
let newX = outerRect.x;
|
let newX = outerRect.x;
|
||||||
@@ -124,34 +120,32 @@ function cycleScreenshotSizes(display, window, binding) {
|
|||||||
|
|
||||||
let newOuterRect = window.get_frame_rect();
|
let newOuterRect = window.get_frame_rect();
|
||||||
let message = '%d×%d'.format(
|
let message = '%d×%d'.format(
|
||||||
(newOuterRect.width / scaleFactor),
|
newOuterRect.width / scaleFactor,
|
||||||
(newOuterRect.height / scaleFactor));
|
newOuterRect.height / scaleFactor);
|
||||||
|
|
||||||
// The new size might have been constrained by geometry hints (e.g. for
|
// The new size might have been constrained by geometry hints (e.g. for
|
||||||
// a terminal) - in that case, include the actual ratio to the message
|
// a terminal) - in that case, include the actual ratio to the message
|
||||||
// we flash
|
// we flash
|
||||||
let actualNumerator = (newOuterRect.width / newOuterRect.height) * 9;
|
let actualNumerator = 9 * newOuterRect.width / newOuterRect.height;
|
||||||
if (Math.abs(actualNumerator - 16) > 0.01)
|
if (Math.abs(actualNumerator - 16) > 0.01)
|
||||||
message += ' (%.2f:9)'.format(actualNumerator);
|
message += ' (%.2f:9)'.format(actualNumerator);
|
||||||
|
|
||||||
flashMessage(message);
|
flashMessage(message);
|
||||||
}
|
}
|
||||||
|
|
||||||
function init() {
|
|
||||||
}
|
|
||||||
|
|
||||||
function enable() {
|
function enable() {
|
||||||
Main.wm.addKeybinding('cycle-screenshot-sizes',
|
Main.wm.addKeybinding(
|
||||||
Convenience.getSettings(),
|
'cycle-screenshot-sizes',
|
||||||
Meta.KeyBindingFlags.PER_WINDOW,
|
ExtensionUtils.getSettings(),
|
||||||
Shell.ActionMode.NORMAL,
|
Meta.KeyBindingFlags.PER_WINDOW,
|
||||||
cycleScreenshotSizes);
|
Shell.ActionMode.NORMAL,
|
||||||
Main.wm.addKeybinding('cycle-screenshot-sizes-backward',
|
cycleScreenshotSizes);
|
||||||
Convenience.getSettings(),
|
Main.wm.addKeybinding(
|
||||||
Meta.KeyBindingFlags.PER_WINDOW |
|
'cycle-screenshot-sizes-backward',
|
||||||
Meta.KeyBindingFlags.IS_REVERSED,
|
ExtensionUtils.getSettings(),
|
||||||
Shell.ActionMode.NORMAL,
|
Meta.KeyBindingFlags.PER_WINDOW | Meta.KeyBindingFlags.IS_REVERSED,
|
||||||
cycleScreenshotSizes);
|
Shell.ActionMode.NORMAL,
|
||||||
|
cycleScreenshotSizes);
|
||||||
}
|
}
|
||||||
|
|
||||||
function disable() {
|
function disable() {
|
||||||
|
|||||||
@@ -1,23 +1,21 @@
|
|||||||
// -*- mode: js2; indent-tabs-mode: nil; js2-basic-offset: 4 -*-
|
// -*- mode: js2; indent-tabs-mode: nil; js2-basic-offset: 4 -*-
|
||||||
// Load shell theme from ~/.themes/name/gnome-shell
|
// Load shell theme from ~/.local/share/themes/name/gnome-shell
|
||||||
|
/* exported init */
|
||||||
|
|
||||||
const GLib = imports.gi.GLib;
|
const { Gio, GLib } = imports.gi;
|
||||||
const Gio = imports.gi.Gio;
|
|
||||||
|
const ExtensionUtils = imports.misc.extensionUtils;
|
||||||
const Main = imports.ui.main;
|
const Main = imports.ui.main;
|
||||||
|
|
||||||
const SETTINGS_KEY = 'name';
|
const SETTINGS_KEY = 'name';
|
||||||
|
|
||||||
const ExtensionUtils = imports.misc.extensionUtils;
|
|
||||||
const Me = ExtensionUtils.getCurrentExtension();
|
|
||||||
const Convenience = Me.imports.convenience;
|
|
||||||
|
|
||||||
class ThemeManager {
|
class ThemeManager {
|
||||||
constructor() {
|
constructor() {
|
||||||
this._settings = Convenience.getSettings();
|
this._settings = ExtensionUtils.getSettings();
|
||||||
}
|
}
|
||||||
|
|
||||||
enable() {
|
enable() {
|
||||||
this._changedId = this._settings.connect('changed::'+SETTINGS_KEY, this._changeTheme.bind(this));
|
this._changedId = this._settings.connect(`changed::${SETTINGS_KEY}`, this._changeTheme.bind(this));
|
||||||
this._changeTheme();
|
this._changeTheme();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -32,36 +30,32 @@ class ThemeManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
_changeTheme() {
|
_changeTheme() {
|
||||||
let _stylesheet = null;
|
let stylesheet = null;
|
||||||
let _themeName = this._settings.get_string(SETTINGS_KEY);
|
let themeName = this._settings.get_string(SETTINGS_KEY);
|
||||||
|
|
||||||
if (_themeName) {
|
if (themeName) {
|
||||||
let _userCssStylesheet = GLib.get_home_dir() + '/.themes/' + _themeName + '/gnome-shell/gnome-shell.css';
|
let stylesheetPaths = [
|
||||||
let file = Gio.file_new_for_path(_userCssStylesheet);
|
[GLib.get_home_dir(), '.themes'],
|
||||||
if (file.query_exists(null))
|
[GLib.get_user_data_dir(), 'themes'],
|
||||||
_stylesheet = _userCssStylesheet;
|
...GLib.get_system_data_dirs().map(dir => [dir, 'themes']),
|
||||||
else {
|
].map(themeDir => GLib.build_filenamev([
|
||||||
let sysdirs = GLib.get_system_data_dirs();
|
...themeDir, themeName, 'gnome-shell', 'gnome-shell.css',
|
||||||
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';
|
stylesheet = stylesheetPaths.find(path => {
|
||||||
let file = Gio.file_new_for_path(_userCssStylesheet);
|
let file = Gio.file_new_for_path(path);
|
||||||
if (file.query_exists(null)) {
|
return file.query_exists(null);
|
||||||
_stylesheet = _userCssStylesheet;
|
});
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (_stylesheet)
|
if (stylesheet)
|
||||||
global.log('loading user theme: ' + _stylesheet);
|
global.log(`loading user theme: ${stylesheet}`);
|
||||||
else
|
else
|
||||||
global.log('loading default theme (Adwaita)');
|
global.log('loading default theme (Adwaita)');
|
||||||
Main.setThemeStylesheet(_stylesheet);
|
Main.setThemeStylesheet(stylesheet);
|
||||||
Main.loadTheme();
|
Main.loadTheme();
|
||||||
}
|
}
|
||||||
};
|
}
|
||||||
|
|
||||||
function init() {
|
function init() {
|
||||||
return new ThemeManager();
|
return new ThemeManager();
|
||||||
|
|||||||
@@ -4,36 +4,39 @@
|
|||||||
border-top-width: 1px;
|
border-top-width: 1px;
|
||||||
border-bottom-width: 0px;
|
border-bottom-width: 0px;
|
||||||
height: 2.25em ;
|
height: 2.25em ;
|
||||||
|
padding: 2px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.bottom-panel .window-button > StWidget,
|
||||||
|
.bottom-panel .window-picker-toggle > StWidget {
|
||||||
|
color: #2e3436;
|
||||||
|
background-color: #eee;
|
||||||
|
border-radius: 3px;
|
||||||
|
padding: 3px 6px 1px;
|
||||||
|
box-shadow: none;
|
||||||
|
text-shadow: none;
|
||||||
|
border: 1px solid rgba(0,0,0,0.2);
|
||||||
}
|
}
|
||||||
|
|
||||||
.bottom-panel .window-button > StWidget {
|
.bottom-panel .window-button > StWidget {
|
||||||
background-gradient-drection: vertical;
|
|
||||||
background-color: #fff;
|
|
||||||
background-gradient-start: #fff;
|
|
||||||
background-gradient-end: #eee;
|
|
||||||
color: #000;
|
|
||||||
-st-natural-width: 18.7em;
|
-st-natural-width: 18.7em;
|
||||||
max-width: 18.75em;
|
max-width: 18.75em;
|
||||||
color: #2e3436;
|
|
||||||
background-color: #eee;
|
|
||||||
border-radius: 2px;
|
|
||||||
padding: 3px 6px 1px;
|
|
||||||
box-shadow: inset -1px -1px 1px rgba(0,0,0,0.5);
|
|
||||||
text-shadow: 0 0 transparent;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.bottom-panel .window-button:hover > StWidget {
|
.bottom-panel .window-button:hover > StWidget,
|
||||||
|
.bottom-panel .window-picker-toggle:hover > StWidget {
|
||||||
background-color: #f9f9f9;
|
background-color: #f9f9f9;
|
||||||
}
|
}
|
||||||
|
|
||||||
.bottom-panel .window-button:active > StWidget,
|
.bottom-panel .window-button:active > StWidget,
|
||||||
.bottom-panel .window-button:focus > StWidget {
|
.bottom-panel .window-button:focus > StWidget {
|
||||||
box-shadow: inset 1px 1px 2px rgba(0,0,0,0.5);
|
box-shadow: inset 0 1px 3px rgba(0,0,0,0.1);
|
||||||
}
|
}
|
||||||
|
|
||||||
.bottom-panel .window-button.focused > StWidget {
|
.bottom-panel .window-button.focused > StWidget,
|
||||||
background-color: #ddd;
|
.bottom-panel .window-picker-toggle:checked > StWidget {
|
||||||
box-shadow: inset 1px 1px 1px rgba(0,0,0,0.5);
|
background-color: #ccc;
|
||||||
|
box-shadow: inset 0 1px 3px rgba(0,0,0,0.1);
|
||||||
}
|
}
|
||||||
|
|
||||||
.bottom-panel .window-button.focused:hover > StWidget {
|
.bottom-panel .window-button.focused:hover > StWidget {
|
||||||
@@ -42,5 +45,24 @@
|
|||||||
|
|
||||||
.bottom-panel .window-button.minimized > StWidget {
|
.bottom-panel .window-button.minimized > StWidget {
|
||||||
color: #888;
|
color: #888;
|
||||||
box-shadow: inset -1px -1px 1px rgba(0,0,0,0.5);
|
box-shadow: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* workspace switcher */
|
||||||
|
.window-list-workspace-indicator .workspace {
|
||||||
|
background-color: #ddd;
|
||||||
|
}
|
||||||
|
|
||||||
|
.window-list-workspace-indicator .workspace.active {
|
||||||
|
background-color: #ccc;
|
||||||
|
}
|
||||||
|
|
||||||
|
.window-list-window-preview {
|
||||||
|
background-color: #ededed;
|
||||||
|
border: 1px solid #ccc;
|
||||||
|
}
|
||||||
|
|
||||||
|
.window-list-window-preview.active {
|
||||||
|
background-color: #f6f5f4;
|
||||||
|
border: 2px solid #888;
|
||||||
|
}
|
||||||
|
|||||||
+389
-466
File diff suppressed because it is too large
Load Diff
@@ -4,7 +4,7 @@ extension_data += configure_file(
|
|||||||
configuration: metadata_conf
|
configuration: metadata_conf
|
||||||
)
|
)
|
||||||
|
|
||||||
extension_sources += files('prefs.js')
|
extension_sources += files('prefs.js', 'windowPicker.js', 'workspaceIndicator.js')
|
||||||
extension_schemas += files(metadata_conf.get('gschemaname') + '.gschema.xml')
|
extension_schemas += files(metadata_conf.get('gschemaname') + '.gschema.xml')
|
||||||
|
|
||||||
if classic_mode_enabled
|
if classic_mode_enabled
|
||||||
|
|||||||
@@ -15,6 +15,13 @@
|
|||||||
window list. Possible values are “never”, “auto” and “always”.
|
window list. Possible values are “never”, “auto” and “always”.
|
||||||
</description>
|
</description>
|
||||||
</key>
|
</key>
|
||||||
|
<key name="display-all-workspaces" type="b">
|
||||||
|
<default>false</default>
|
||||||
|
<summary>Show windows from all workspaces</summary>
|
||||||
|
<description>
|
||||||
|
Whether to show windows from all workspaces or only the current one.
|
||||||
|
</description>
|
||||||
|
</key>
|
||||||
<key name="show-on-all-monitors" type="b">
|
<key name="show-on-all-monitors" type="b">
|
||||||
<default>false</default>
|
<default>false</default>
|
||||||
<summary>Show the window list on all monitors</summary>
|
<summary>Show the window list on all monitors</summary>
|
||||||
|
|||||||
@@ -1,19 +1,16 @@
|
|||||||
// -*- mode: js2; indent-tabs-mode: nil; js2-basic-offset: 4 -*-
|
// -*- mode: js2; indent-tabs-mode: nil; js2-basic-offset: 4 -*-
|
||||||
|
/* exported init buildPrefsWidget */
|
||||||
|
|
||||||
const Gio = imports.gi.Gio;
|
const { Gio, GObject, Gtk } = imports.gi;
|
||||||
const GObject = imports.gi.GObject;
|
|
||||||
const Gtk = imports.gi.Gtk;
|
|
||||||
|
|
||||||
const Gettext = imports.gettext.domain('gnome-shell-extensions');
|
const Gettext = imports.gettext.domain('gnome-shell-extensions');
|
||||||
const _ = Gettext.gettext;
|
const _ = Gettext.gettext;
|
||||||
|
|
||||||
const ExtensionUtils = imports.misc.extensionUtils;
|
const ExtensionUtils = imports.misc.extensionUtils;
|
||||||
const Me = ExtensionUtils.getCurrentExtension();
|
|
||||||
const Convenience = Me.imports.convenience;
|
|
||||||
|
|
||||||
|
|
||||||
function init() {
|
function init() {
|
||||||
Convenience.initTranslations();
|
ExtensionUtils.initTranslations();
|
||||||
}
|
}
|
||||||
|
|
||||||
const WindowListPrefsWidget = GObject.registerClass(
|
const WindowListPrefsWidget = GObject.registerClass(
|
||||||
@@ -25,27 +22,31 @@ class WindowListPrefsWidget extends Gtk.Grid {
|
|||||||
this.row_spacing = 6;
|
this.row_spacing = 6;
|
||||||
this.orientation = Gtk.Orientation.VERTICAL;
|
this.orientation = Gtk.Orientation.VERTICAL;
|
||||||
|
|
||||||
let groupingLabel = '<b>' + _("Window Grouping") + '</b>';
|
let groupingLabel = '<b>%s</b>'.format(_('Window Grouping'));
|
||||||
this.add(new Gtk.Label({ label: groupingLabel, use_markup: true,
|
this.add(new Gtk.Label({
|
||||||
halign: Gtk.Align.START }));
|
label: groupingLabel, use_markup: true,
|
||||||
|
halign: Gtk.Align.START,
|
||||||
|
}));
|
||||||
|
|
||||||
let align = new Gtk.Alignment({ left_padding: 12 });
|
let align = new Gtk.Alignment({ left_padding: 12 });
|
||||||
this.add(align);
|
this.add(align);
|
||||||
|
|
||||||
let grid = new Gtk.Grid({ orientation: Gtk.Orientation.VERTICAL,
|
let grid = new Gtk.Grid({
|
||||||
row_spacing: 6,
|
orientation: Gtk.Orientation.VERTICAL,
|
||||||
column_spacing: 6 });
|
row_spacing: 6,
|
||||||
|
column_spacing: 6,
|
||||||
|
});
|
||||||
align.add(grid);
|
align.add(grid);
|
||||||
|
|
||||||
this._settings = Convenience.getSettings();
|
this._settings = ExtensionUtils.getSettings();
|
||||||
let currentMode = this._settings.get_string('grouping-mode');
|
let currentMode = this._settings.get_string('grouping-mode');
|
||||||
let range = this._settings.get_range('grouping-mode');
|
let range = this._settings.get_range('grouping-mode');
|
||||||
let modes = range.deep_unpack()[1].deep_unpack();
|
let modes = range.deep_unpack()[1].deep_unpack();
|
||||||
|
|
||||||
let modeLabels = {
|
let modeLabels = {
|
||||||
'never': _("Never group windows"),
|
'never': _('Never group windows'),
|
||||||
'auto': _("Group windows when space is limited"),
|
'auto': _('Group windows when space is limited'),
|
||||||
'always': _("Always group windows")
|
'always': _('Always group windows'),
|
||||||
};
|
};
|
||||||
|
|
||||||
let radio = null;
|
let radio = null;
|
||||||
@@ -53,13 +54,15 @@ class WindowListPrefsWidget extends Gtk.Grid {
|
|||||||
let mode = modes[i];
|
let mode = modes[i];
|
||||||
let label = modeLabels[mode];
|
let label = modeLabels[mode];
|
||||||
if (!label) {
|
if (!label) {
|
||||||
log('Unhandled option "%s" for grouping-mode'.format(mode));
|
log('Unhandled option "%s" for grouping-mode'.format(mode));
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
radio = new Gtk.RadioButton({ active: currentMode == mode,
|
radio = new Gtk.RadioButton({
|
||||||
label: label,
|
active: currentMode === mode,
|
||||||
group: radio });
|
label,
|
||||||
|
group: radio,
|
||||||
|
});
|
||||||
grid.add(radio);
|
grid.add(radio);
|
||||||
|
|
||||||
radio.connect('toggled', button => {
|
radio.connect('toggled', button => {
|
||||||
@@ -68,10 +71,19 @@ class WindowListPrefsWidget extends Gtk.Grid {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
let check = new Gtk.CheckButton({ label: _("Show on all monitors"),
|
let check = new Gtk.CheckButton({
|
||||||
margin_top: 6 });
|
label: _('Show on all monitors'),
|
||||||
|
margin_top: 6,
|
||||||
|
});
|
||||||
this._settings.bind('show-on-all-monitors', check, 'active', Gio.SettingsBindFlags.DEFAULT);
|
this._settings.bind('show-on-all-monitors', check, 'active', Gio.SettingsBindFlags.DEFAULT);
|
||||||
this.add(check);
|
this.add(check);
|
||||||
|
|
||||||
|
check = new Gtk.CheckButton({
|
||||||
|
label: _('Show windows from all workspaces'),
|
||||||
|
margin_top: 6,
|
||||||
|
});
|
||||||
|
this._settings.bind('display-all-workspaces', check, 'active', Gio.SettingsBindFlags.DEFAULT);
|
||||||
|
this.add(check);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -26,9 +26,8 @@
|
|||||||
spacing: 4px;
|
spacing: 4px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.window-button > StWidget {
|
.window-button > StWidget,
|
||||||
-st-natural-width: 18.75em;
|
.window-picker-toggle > StWidget {
|
||||||
max-width: 18.75em;
|
|
||||||
color: #bbb;
|
color: #bbb;
|
||||||
background-color: black;
|
background-color: black;
|
||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
@@ -37,7 +36,21 @@
|
|||||||
text-shadow: 1px 1px 4px rgba(0,0,0,0.8);
|
text-shadow: 1px 1px 4px rgba(0,0,0,0.8);
|
||||||
}
|
}
|
||||||
|
|
||||||
.window-button:hover > StWidget {
|
.window-picker-toggle {
|
||||||
|
padding: 3px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.window-picker-toggle > StWidet {
|
||||||
|
border: 1px solid rgba(255,255,255,0.3);
|
||||||
|
}
|
||||||
|
|
||||||
|
.window-button > StWidget {
|
||||||
|
-st-natural-width: 18.75em;
|
||||||
|
max-width: 18.75em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.window-button:hover > StWidget,
|
||||||
|
.window-picker-toggle:hover > StWidget {
|
||||||
color: white;
|
color: white;
|
||||||
background-color: #1f1f1f;
|
background-color: #1f1f1f;
|
||||||
}
|
}
|
||||||
@@ -47,12 +60,14 @@
|
|||||||
box-shadow: inset 2px 2px 4px rgba(255,255,255,0.5);
|
box-shadow: inset 2px 2px 4px rgba(255,255,255,0.5);
|
||||||
}
|
}
|
||||||
|
|
||||||
.window-button.focused > StWidget {
|
.window-button.focused > StWidget,
|
||||||
|
.window-picker-toggle:checked > StWidget {
|
||||||
color: white;
|
color: white;
|
||||||
box-shadow: inset 1px 1px 4px rgba(255,255,255,0.7);
|
box-shadow: inset 1px 1px 4px rgba(255,255,255,0.7);
|
||||||
}
|
}
|
||||||
|
|
||||||
.window-button.focused:active > StWidget {
|
.window-button.focused:active > StWidget,
|
||||||
|
.window-picker-toggle:checked:active > StWidget {
|
||||||
box-shadow: inset 2px 2px 4px rgba(255,255,255,0.7);
|
box-shadow: inset 2px 2px 4px rgba(255,255,255,0.7);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -70,13 +85,50 @@
|
|||||||
height: 24px;
|
height: 24px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.window-list-workspace-indicator {
|
.window-list-workspace-indicator .status-label-bin {
|
||||||
|
background-color: rgba(200, 200, 200, .3);
|
||||||
|
border: 1px solid #cccccc;
|
||||||
|
padding: 0 3px;
|
||||||
|
margin: 3px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.window-list-workspace-indicator .workspaces-box {
|
||||||
|
spacing: 3px;
|
||||||
padding: 3px;
|
padding: 3px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.window-list-workspace-indicator > StWidget {
|
.window-list-workspace-indicator .workspace {
|
||||||
background-color: rgba(200, 200, 200, .3);
|
|
||||||
border: 1px solid #cccccc;
|
border: 1px solid #cccccc;
|
||||||
|
width: 52px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.window-list-workspace-indicator .workspace:first-child:last-child:ltr,
|
||||||
|
.window-list-workspace-indicator .workspace:first-child:last-child:rtl {
|
||||||
|
border-radius: 4px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.window-list-workspace-indicator .workspace:first-child:ltr,
|
||||||
|
.window-list-workspace-indicator .workspace:last-child:rtl {
|
||||||
|
border-radius: 4px 0 0 4px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.window-list-workspace-indicator .workspace:first-child:rtl,
|
||||||
|
.window-list-workspace-indicator .workspace:last-child:ltr {
|
||||||
|
border-radius: 0 4px 4px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.window-list-workspace-indicator .workspace.active {
|
||||||
|
background-color: rgba(200, 200, 200, .3);
|
||||||
|
}
|
||||||
|
|
||||||
|
.window-list-window-preview {
|
||||||
|
background-color: #252525;
|
||||||
|
border: 1px solid #ccc;
|
||||||
|
}
|
||||||
|
|
||||||
|
.window-list-window-preview.active {
|
||||||
|
background-color: #353535;
|
||||||
|
border: 2px solid #ccc;
|
||||||
}
|
}
|
||||||
|
|
||||||
.notification {
|
.notification {
|
||||||
|
|||||||
@@ -0,0 +1,305 @@
|
|||||||
|
/* exported WindowPicker, WindowPickerToggle */
|
||||||
|
const { Clutter, GLib, GObject, Meta, Shell, St } = imports.gi;
|
||||||
|
|
||||||
|
const Layout = imports.ui.layout;
|
||||||
|
const Main = imports.ui.main;
|
||||||
|
const Overview = imports.ui.overview;
|
||||||
|
const { WorkspacesDisplay } = imports.ui.workspacesView;
|
||||||
|
|
||||||
|
let MyWorkspacesDisplay = GObject.registerClass(
|
||||||
|
class MyWorkspacesDisplay extends WorkspacesDisplay {
|
||||||
|
_init() {
|
||||||
|
let workspaceManager = global.workspace_manager;
|
||||||
|
|
||||||
|
this._workspaceAdjustment = new St.Adjustment({
|
||||||
|
value: workspaceManager.get_active_workspace_index(),
|
||||||
|
lower: 0,
|
||||||
|
page_increment: 1,
|
||||||
|
page_size: 1,
|
||||||
|
step_increment: 0,
|
||||||
|
upper: workspaceManager.n_workspaces,
|
||||||
|
});
|
||||||
|
|
||||||
|
this._nWorkspacesChangedId =
|
||||||
|
workspaceManager.connect('notify::n-workspaces',
|
||||||
|
this._updateAdjustment.bind(this));
|
||||||
|
|
||||||
|
super._init(this._workspaceAdjustment);
|
||||||
|
|
||||||
|
this.add_constraint(
|
||||||
|
new Layout.MonitorConstraint({
|
||||||
|
primary: true,
|
||||||
|
work_area: true,
|
||||||
|
}));
|
||||||
|
|
||||||
|
this._workareasChangedId = global.display.connect('workareas-changed',
|
||||||
|
this._onWorkAreasChanged.bind(this));
|
||||||
|
this._onWorkAreasChanged();
|
||||||
|
}
|
||||||
|
|
||||||
|
show(...args) {
|
||||||
|
if (!this._scrollEventId) {
|
||||||
|
this._scrollEventId = Main.windowPicker.connect('scroll-event',
|
||||||
|
this._onScrollEvent.bind(this));
|
||||||
|
}
|
||||||
|
|
||||||
|
super.show(...args);
|
||||||
|
}
|
||||||
|
|
||||||
|
hide(...args) {
|
||||||
|
if (this._scrollEventId > 0)
|
||||||
|
Main.windowPicker.disconnect(this._scrollEventId);
|
||||||
|
this._scrollEventId = 0;
|
||||||
|
|
||||||
|
super.hide(...args);
|
||||||
|
}
|
||||||
|
|
||||||
|
_onWorkAreasChanged() {
|
||||||
|
let { primaryIndex } = Main.layoutManager;
|
||||||
|
let workarea = Main.layoutManager.getWorkAreaForMonitor(primaryIndex);
|
||||||
|
this.setWorkspacesFullGeometry(workarea);
|
||||||
|
}
|
||||||
|
|
||||||
|
_updateAdjustment() {
|
||||||
|
let workspaceManager = global.workspace_manager;
|
||||||
|
this._workspaceAdjustment.set({
|
||||||
|
upper: workspaceManager.n_workspaces,
|
||||||
|
value: workspaceManager.get_active_workspace_index(),
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
_updateWorkspacesViews() {
|
||||||
|
super._updateWorkspacesViews();
|
||||||
|
|
||||||
|
this._workspacesViews.forEach(v => {
|
||||||
|
Main.layoutManager.overviewGroup.remove_actor(v);
|
||||||
|
Main.windowPicker.add_actor(v);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
_onDestroy() {
|
||||||
|
if (this._workareasChangedId)
|
||||||
|
global.display.disconnect(this._workareasChangedId);
|
||||||
|
this._workareasChangedId = 0;
|
||||||
|
|
||||||
|
if (this._nWorkspacesChangedId)
|
||||||
|
global.workspace_manager.disconnect(this._nWorkspacesChangedId);
|
||||||
|
this._nWorkspacesChangedId = 0;
|
||||||
|
|
||||||
|
super._onDestroy();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
var WindowPicker = GObject.registerClass({
|
||||||
|
Signals: {
|
||||||
|
'open-state-changed': { param_types: [GObject.TYPE_BOOLEAN] },
|
||||||
|
},
|
||||||
|
}, class extends Clutter.Actor {
|
||||||
|
_init() {
|
||||||
|
this._visible = false;
|
||||||
|
this._modal = false;
|
||||||
|
|
||||||
|
this._overlayKeyId = 0;
|
||||||
|
this._stageKeyPressId = 0;
|
||||||
|
|
||||||
|
super._init();
|
||||||
|
|
||||||
|
this.connect('destroy', this._onDestroy.bind(this));
|
||||||
|
|
||||||
|
global.bind_property('screen-width',
|
||||||
|
this, 'width',
|
||||||
|
GObject.BindingFlags.SYNC_CREATE);
|
||||||
|
global.bind_property('screen-height',
|
||||||
|
this, 'height',
|
||||||
|
GObject.BindingFlags.SYNC_CREATE);
|
||||||
|
|
||||||
|
this._backgroundGroup = new Meta.BackgroundGroup({ reactive: true });
|
||||||
|
this.add_child(this._backgroundGroup);
|
||||||
|
|
||||||
|
this._backgroundGroup.connect('scroll-event', (a, ev) => {
|
||||||
|
this.emit('scroll-event', ev);
|
||||||
|
});
|
||||||
|
|
||||||
|
// Trick WorkspacesDisplay constructor into adding actions here
|
||||||
|
let addActionOrig = Main.overview.addAction;
|
||||||
|
Main.overview.addAction = a => this._backgroundGroup.add_action(a);
|
||||||
|
|
||||||
|
this._workspacesDisplay = new MyWorkspacesDisplay();
|
||||||
|
this.add_child(this._workspacesDisplay);
|
||||||
|
|
||||||
|
Main.overview.addAction = addActionOrig;
|
||||||
|
|
||||||
|
this._bgManagers = [];
|
||||||
|
|
||||||
|
this._monitorsChangedId = Main.layoutManager.connect('monitors-changed',
|
||||||
|
this._updateBackgrounds.bind(this));
|
||||||
|
this._updateBackgrounds();
|
||||||
|
|
||||||
|
Main.uiGroup.insert_child_below(this, global.window_group);
|
||||||
|
|
||||||
|
if (!Main.sessionMode.hasOverview) {
|
||||||
|
this._overlayKeyId = global.display.connect('overlay-key', () => {
|
||||||
|
if (!this._visible)
|
||||||
|
this.open();
|
||||||
|
else
|
||||||
|
this.close();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
get visible() {
|
||||||
|
return this._visible;
|
||||||
|
}
|
||||||
|
|
||||||
|
open() {
|
||||||
|
if (this._visible)
|
||||||
|
return;
|
||||||
|
|
||||||
|
this._visible = true;
|
||||||
|
|
||||||
|
if (!this._syncGrab())
|
||||||
|
return;
|
||||||
|
|
||||||
|
this._fakeOverviewVisible(true);
|
||||||
|
this._shadeBackgrounds();
|
||||||
|
this._fakeOverviewAnimation();
|
||||||
|
this._workspacesDisplay.show(false);
|
||||||
|
|
||||||
|
this._stageKeyPressId = global.stage.connect('key-press-event',
|
||||||
|
(a, event) => {
|
||||||
|
let sym = event.get_key_symbol();
|
||||||
|
if (sym === Clutter.KEY_Escape) {
|
||||||
|
this.close();
|
||||||
|
return Clutter.EVENT_STOP;
|
||||||
|
}
|
||||||
|
return Clutter.EVENT_PROPAGATE;
|
||||||
|
});
|
||||||
|
|
||||||
|
this.emit('open-state-changed', this._visible);
|
||||||
|
}
|
||||||
|
|
||||||
|
close() {
|
||||||
|
if (!this._visible)
|
||||||
|
return;
|
||||||
|
|
||||||
|
this._visible = false;
|
||||||
|
|
||||||
|
if (!this._syncGrab())
|
||||||
|
return;
|
||||||
|
|
||||||
|
this._workspacesDisplay.animateFromOverview(false);
|
||||||
|
this._unshadeBackgrounds();
|
||||||
|
this._fakeOverviewAnimation(() => {
|
||||||
|
this._workspacesDisplay.hide();
|
||||||
|
this._fakeOverviewVisible(false);
|
||||||
|
});
|
||||||
|
|
||||||
|
global.stage.disconnect(this._stageKeyPressId);
|
||||||
|
this._stageKeyPressId = 0;
|
||||||
|
|
||||||
|
this.emit('open-state-changed', this._visible);
|
||||||
|
}
|
||||||
|
|
||||||
|
_fakeOverviewAnimation(onComplete) {
|
||||||
|
Main.overview._animationInProgress = true;
|
||||||
|
GLib.timeout_add(
|
||||||
|
GLib.PRIORITY_DEFAULT,
|
||||||
|
Overview.ANIMATION_TIME,
|
||||||
|
() => {
|
||||||
|
Main.overview._animationInProgress = false;
|
||||||
|
if (onComplete)
|
||||||
|
onComplete();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
_fakeOverviewVisible(visible) {
|
||||||
|
// Fake overview state for WorkspacesDisplay
|
||||||
|
Main.overview._visible = visible;
|
||||||
|
|
||||||
|
// Hide real windows
|
||||||
|
Main.layoutManager._inOverview = visible;
|
||||||
|
Main.layoutManager._updateVisibility();
|
||||||
|
}
|
||||||
|
|
||||||
|
_syncGrab() {
|
||||||
|
if (this._visible) {
|
||||||
|
if (this._modal)
|
||||||
|
return true;
|
||||||
|
|
||||||
|
this._modal = Main.pushModal(this, {
|
||||||
|
actionMode: Shell.ActionMode.OVERVIEW,
|
||||||
|
});
|
||||||
|
|
||||||
|
if (!this._modal) {
|
||||||
|
this.hide();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
} else if (this._modal) {
|
||||||
|
Main.popModal(this);
|
||||||
|
this._modal = false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
_onDestroy() {
|
||||||
|
if (this._monitorsChangedId)
|
||||||
|
Main.layoutManager.disconnect(this._monitorsChangedId);
|
||||||
|
this._monitorsChangedId = 0;
|
||||||
|
|
||||||
|
if (this._overlayKeyId)
|
||||||
|
global.display.disconnect(this._overlayKeyId);
|
||||||
|
this._overlayKeyId = 0;
|
||||||
|
|
||||||
|
if (this._stageKeyPressId)
|
||||||
|
global.stage.disconnect(this._stageKeyPressId);
|
||||||
|
this._stageKeyPressId = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
_updateBackgrounds() {
|
||||||
|
Main.overview._updateBackgrounds.call(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
_shadeBackgrounds() {
|
||||||
|
Main.overview._shadeBackgrounds.call(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
_unshadeBackgrounds() {
|
||||||
|
Main.overview._unshadeBackgrounds.call(this);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
var WindowPickerToggle = GObject.registerClass(
|
||||||
|
class WindowPickerToggle extends St.Button {
|
||||||
|
_init() {
|
||||||
|
let iconBin = new St.Widget({
|
||||||
|
layout_manager: new Clutter.BinLayout(),
|
||||||
|
});
|
||||||
|
iconBin.add_child(new St.Icon({
|
||||||
|
icon_name: 'focus-windows-symbolic',
|
||||||
|
icon_size: 16,
|
||||||
|
x_expand: true,
|
||||||
|
y_expand: true,
|
||||||
|
x_align: Clutter.ActorAlign.CENTER,
|
||||||
|
y_align: Clutter.ActorAlign.CENTER,
|
||||||
|
}));
|
||||||
|
super._init({
|
||||||
|
style_class: 'window-picker-toggle',
|
||||||
|
child: iconBin,
|
||||||
|
visible: !Main.sessionMode.hasOverview,
|
||||||
|
x_fill: true,
|
||||||
|
y_fill: true,
|
||||||
|
toggle_mode: true,
|
||||||
|
});
|
||||||
|
|
||||||
|
this.connect('notify::checked', () => {
|
||||||
|
if (this.checked)
|
||||||
|
Main.windowPicker.open();
|
||||||
|
else
|
||||||
|
Main.windowPicker.close();
|
||||||
|
});
|
||||||
|
|
||||||
|
Main.windowPicker.connect('open-state-changed', () => {
|
||||||
|
this.checked = Main.windowPicker.visible;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
@@ -0,0 +1,399 @@
|
|||||||
|
/* exported WorkspaceIndicator */
|
||||||
|
const { Clutter, Gio, GObject, Meta, St } = imports.gi;
|
||||||
|
|
||||||
|
const DND = imports.ui.dnd;
|
||||||
|
const Main = imports.ui.main;
|
||||||
|
const PanelMenu = imports.ui.panelMenu;
|
||||||
|
const PopupMenu = imports.ui.popupMenu;
|
||||||
|
|
||||||
|
const Gettext = imports.gettext.domain('gnome-shell-extensions');
|
||||||
|
const _ = Gettext.gettext;
|
||||||
|
|
||||||
|
let WindowPreview = GObject.registerClass(
|
||||||
|
class WindowPreview extends St.Button {
|
||||||
|
_init(window) {
|
||||||
|
super._init({
|
||||||
|
style_class: 'window-list-window-preview',
|
||||||
|
});
|
||||||
|
|
||||||
|
this._delegate = this;
|
||||||
|
DND.makeDraggable(this, { restoreOnSuccess: true });
|
||||||
|
|
||||||
|
this._window = window;
|
||||||
|
|
||||||
|
this.connect('destroy', this._onDestroy.bind(this));
|
||||||
|
|
||||||
|
this._sizeChangedId = this._window.connect('size-changed',
|
||||||
|
this._relayout.bind(this));
|
||||||
|
this._positionChangedId = this._window.connect('position-changed',
|
||||||
|
this._relayout.bind(this));
|
||||||
|
this._minimizedChangedId = this._window.connect('notify::minimized',
|
||||||
|
this._relayout.bind(this));
|
||||||
|
this._monitorEnteredId = global.display.connect('window-entered-monitor',
|
||||||
|
this._relayout.bind(this));
|
||||||
|
this._monitorLeftId = global.display.connect('window-left-monitor',
|
||||||
|
this._relayout.bind(this));
|
||||||
|
|
||||||
|
// Do initial layout when we get a parent
|
||||||
|
let id = this.connect('parent-set', () => {
|
||||||
|
this.disconnect(id);
|
||||||
|
if (!this.get_parent())
|
||||||
|
return;
|
||||||
|
this._laterId = Meta.later_add(Meta.LaterType.BEFORE_REDRAW, () => {
|
||||||
|
this._laterId = 0;
|
||||||
|
this._relayout();
|
||||||
|
return false;
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
this._focusChangedId = global.display.connect('notify::focus-window',
|
||||||
|
this._onFocusChanged.bind(this));
|
||||||
|
this._onFocusChanged();
|
||||||
|
}
|
||||||
|
|
||||||
|
// needed for DND
|
||||||
|
get realWindow() {
|
||||||
|
return this._window.get_compositor_private();
|
||||||
|
}
|
||||||
|
|
||||||
|
_onDestroy() {
|
||||||
|
this._window.disconnect(this._sizeChangedId);
|
||||||
|
this._window.disconnect(this._positionChangedId);
|
||||||
|
this._window.disconnect(this._minimizedChangedId);
|
||||||
|
global.display.disconnect(this._monitorEnteredId);
|
||||||
|
global.display.disconnect(this._monitorLeftId);
|
||||||
|
global.display.disconnect(this._focusChangedId);
|
||||||
|
if (this._laterId)
|
||||||
|
Meta.later_remove(this._laterId);
|
||||||
|
}
|
||||||
|
|
||||||
|
_onFocusChanged() {
|
||||||
|
if (global.display.focus_window === this._window)
|
||||||
|
this.add_style_class_name('active');
|
||||||
|
else
|
||||||
|
this.remove_style_class_name('active');
|
||||||
|
}
|
||||||
|
|
||||||
|
_relayout() {
|
||||||
|
let monitor = Main.layoutManager.findIndexForActor(this);
|
||||||
|
this.visible = monitor === this._window.get_monitor() &&
|
||||||
|
this._window.window_type !== Meta.WindowType.DESKTOP &&
|
||||||
|
this._window.showing_on_its_workspace();
|
||||||
|
|
||||||
|
if (!this.visible)
|
||||||
|
return;
|
||||||
|
|
||||||
|
let workArea = Main.layoutManager.getWorkAreaForMonitor(monitor);
|
||||||
|
let hscale = this.get_parent().allocation.get_width() / workArea.width;
|
||||||
|
let vscale = this.get_parent().allocation.get_height() / workArea.height;
|
||||||
|
|
||||||
|
let frameRect = this._window.get_frame_rect();
|
||||||
|
this.set_size(
|
||||||
|
Math.round(Math.min(frameRect.width, workArea.width) * hscale),
|
||||||
|
Math.round(Math.min(frameRect.height, workArea.height) * vscale));
|
||||||
|
this.set_position(
|
||||||
|
Math.round(frameRect.x * hscale),
|
||||||
|
Math.round(frameRect.y * vscale));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
let WorkspaceThumbnail = GObject.registerClass(
|
||||||
|
class WorkspaceThumbnail extends St.Button {
|
||||||
|
_init(index) {
|
||||||
|
super._init({
|
||||||
|
style_class: 'workspace',
|
||||||
|
child: new Clutter.Actor({
|
||||||
|
layout_manager: new Clutter.BinLayout(),
|
||||||
|
clip_to_allocation: true,
|
||||||
|
}),
|
||||||
|
x_fill: true,
|
||||||
|
y_fill: true,
|
||||||
|
});
|
||||||
|
|
||||||
|
this.connect('destroy', this._onDestroy.bind(this));
|
||||||
|
|
||||||
|
this._index = index;
|
||||||
|
this._delegate = this; // needed for DND
|
||||||
|
|
||||||
|
this._windowPreviews = new Map();
|
||||||
|
|
||||||
|
let workspaceManager = global.workspace_manager;
|
||||||
|
this._workspace = workspaceManager.get_workspace_by_index(index);
|
||||||
|
|
||||||
|
this._windowAddedId = this._workspace.connect('window-added',
|
||||||
|
(ws, window) => {
|
||||||
|
this._addWindow(window);
|
||||||
|
});
|
||||||
|
this._windowRemovedId = this._workspace.connect('window-removed',
|
||||||
|
(ws, window) => {
|
||||||
|
this._removeWindow(window);
|
||||||
|
});
|
||||||
|
this._restackedId = global.display.connect('restacked',
|
||||||
|
this._onRestacked.bind(this));
|
||||||
|
|
||||||
|
this._workspace.list_windows().forEach(w => this._addWindow(w));
|
||||||
|
this._onRestacked();
|
||||||
|
}
|
||||||
|
|
||||||
|
acceptDrop(source) {
|
||||||
|
if (!source.realWindow)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
let window = source.realWindow.get_meta_window();
|
||||||
|
this._moveWindow(window);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
handleDragOver(source) {
|
||||||
|
if (source.realWindow)
|
||||||
|
return DND.DragMotionResult.MOVE_DROP;
|
||||||
|
else
|
||||||
|
return DND.DragMotionResult.CONTINUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
_addWindow(window) {
|
||||||
|
if (this._windowPreviews.has(window))
|
||||||
|
return;
|
||||||
|
|
||||||
|
let preview = new WindowPreview(window);
|
||||||
|
preview.connect('clicked', (a, btn) => this.emit('clicked', btn));
|
||||||
|
this._windowPreviews.set(window, preview);
|
||||||
|
this.child.add_child(preview);
|
||||||
|
}
|
||||||
|
|
||||||
|
_removeWindow(window) {
|
||||||
|
let preview = this._windowPreviews.get(window);
|
||||||
|
if (!preview)
|
||||||
|
return;
|
||||||
|
|
||||||
|
this._windowPreviews.delete(window);
|
||||||
|
preview.destroy();
|
||||||
|
}
|
||||||
|
|
||||||
|
_onRestacked() {
|
||||||
|
let lastPreview = null;
|
||||||
|
let windows = global.get_window_actors().map(a => a.meta_window);
|
||||||
|
for (let i = 0; i < windows.length; i++) {
|
||||||
|
let preview = this._windowPreviews.get(windows[i]);
|
||||||
|
if (!preview)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
this.child.set_child_above_sibling(preview, lastPreview);
|
||||||
|
lastPreview = preview;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
_moveWindow(window) {
|
||||||
|
let monitorIndex = Main.layoutManager.findIndexForActor(this);
|
||||||
|
if (monitorIndex !== window.get_monitor())
|
||||||
|
window.move_to_monitor(monitorIndex);
|
||||||
|
window.change_workspace_by_index(this._index, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
on_clicked() {
|
||||||
|
let ws = global.workspace_manager.get_workspace_by_index(this._index);
|
||||||
|
if (ws)
|
||||||
|
ws.activate(global.get_current_time());
|
||||||
|
}
|
||||||
|
|
||||||
|
_onDestroy() {
|
||||||
|
this._workspace.disconnect(this._windowAddedId);
|
||||||
|
this._workspace.disconnect(this._windowRemovedId);
|
||||||
|
global.display.disconnect(this._restackedId);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
var WorkspaceIndicator = GObject.registerClass(
|
||||||
|
class WorkspaceIndicator extends PanelMenu.Button {
|
||||||
|
_init() {
|
||||||
|
super._init(0.0, _('Workspace Indicator'), true);
|
||||||
|
this.setMenu(new PopupMenu.PopupMenu(this, 0.0, St.Side.BOTTOM));
|
||||||
|
this.add_style_class_name('window-list-workspace-indicator');
|
||||||
|
this.menu.actor.remove_style_class_name('panel-menu');
|
||||||
|
|
||||||
|
let container = new St.Widget({
|
||||||
|
layout_manager: new Clutter.BinLayout(),
|
||||||
|
x_expand: true,
|
||||||
|
y_expand: true,
|
||||||
|
});
|
||||||
|
this.add_actor(container);
|
||||||
|
|
||||||
|
let workspaceManager = global.workspace_manager;
|
||||||
|
|
||||||
|
this._currentWorkspace = workspaceManager.get_active_workspace_index();
|
||||||
|
this._statusLabel = new St.Label({ text: this._getStatusText() });
|
||||||
|
|
||||||
|
this._statusBin = new St.Bin({
|
||||||
|
style_class: 'status-label-bin',
|
||||||
|
x_expand: true,
|
||||||
|
y_expand: true,
|
||||||
|
child: this._statusLabel,
|
||||||
|
});
|
||||||
|
container.add_actor(this._statusBin);
|
||||||
|
|
||||||
|
this._thumbnailsBox = new St.BoxLayout({
|
||||||
|
style_class: 'workspaces-box',
|
||||||
|
y_expand: true,
|
||||||
|
reactive: true,
|
||||||
|
});
|
||||||
|
this._thumbnailsBox.connect('scroll-event',
|
||||||
|
this._onScrollEvent.bind(this));
|
||||||
|
container.add_actor(this._thumbnailsBox);
|
||||||
|
|
||||||
|
this._workspacesItems = [];
|
||||||
|
|
||||||
|
this._workspaceManagerSignals = [
|
||||||
|
workspaceManager.connect('notify::n-workspaces',
|
||||||
|
this._nWorkspacesChanged.bind(this)),
|
||||||
|
workspaceManager.connect_after('workspace-switched',
|
||||||
|
this._onWorkspaceSwitched.bind(this)),
|
||||||
|
workspaceManager.connect('notify::layout-rows',
|
||||||
|
this._onWorkspaceOrientationChanged.bind(this)),
|
||||||
|
];
|
||||||
|
|
||||||
|
this.connect('scroll-event', this._onScrollEvent.bind(this));
|
||||||
|
this._updateMenu();
|
||||||
|
this._updateThumbnails();
|
||||||
|
this._onWorkspaceOrientationChanged();
|
||||||
|
|
||||||
|
this._settings = new Gio.Settings({ schema_id: 'org.gnome.desktop.wm.preferences' });
|
||||||
|
this._settingsChangedId = this._settings.connect(
|
||||||
|
'changed::workspace-names', this._updateMenuLabels.bind(this));
|
||||||
|
}
|
||||||
|
|
||||||
|
_onDestroy() {
|
||||||
|
for (let i = 0; i < this._workspaceManagerSignals.length; i++)
|
||||||
|
global.workspace_manager.disconnect(this._workspaceManagerSignals[i]);
|
||||||
|
|
||||||
|
if (this._settingsChangedId) {
|
||||||
|
this._settings.disconnect(this._settingsChangedId);
|
||||||
|
this._settingsChangedId = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
super._onDestroy();
|
||||||
|
}
|
||||||
|
|
||||||
|
_onWorkspaceOrientationChanged() {
|
||||||
|
let vertical = global.workspace_manager.layout_rows === -1;
|
||||||
|
this.reactive = vertical;
|
||||||
|
|
||||||
|
this._statusBin.visible = vertical;
|
||||||
|
this._thumbnailsBox.visible = !vertical;
|
||||||
|
}
|
||||||
|
|
||||||
|
_onWorkspaceSwitched() {
|
||||||
|
let workspaceManager = global.workspace_manager;
|
||||||
|
this._currentWorkspace = workspaceManager.get_active_workspace_index();
|
||||||
|
|
||||||
|
this._updateMenuOrnament();
|
||||||
|
this._updateActiveThumbnail();
|
||||||
|
|
||||||
|
this._statusLabel.set_text(this._getStatusText());
|
||||||
|
}
|
||||||
|
|
||||||
|
_nWorkspacesChanged() {
|
||||||
|
this._updateMenu();
|
||||||
|
this._updateThumbnails();
|
||||||
|
}
|
||||||
|
|
||||||
|
_updateMenuOrnament() {
|
||||||
|
for (let i = 0; i < this._workspacesItems.length; i++) {
|
||||||
|
this._workspacesItems[i].setOrnament(i === this._currentWorkspace
|
||||||
|
? PopupMenu.Ornament.DOT
|
||||||
|
: PopupMenu.Ornament.NONE);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
_updateActiveThumbnail() {
|
||||||
|
let thumbs = this._thumbnailsBox.get_children();
|
||||||
|
for (let i = 0; i < thumbs.length; i++) {
|
||||||
|
if (i === this._currentWorkspace)
|
||||||
|
thumbs[i].add_style_class_name('active');
|
||||||
|
else
|
||||||
|
thumbs[i].remove_style_class_name('active');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
_getStatusText() {
|
||||||
|
let workspaceManager = global.workspace_manager;
|
||||||
|
let current = workspaceManager.get_active_workspace_index();
|
||||||
|
let total = workspaceManager.n_workspaces;
|
||||||
|
|
||||||
|
return '%d / %d'.format(current + 1, total);
|
||||||
|
}
|
||||||
|
|
||||||
|
_updateMenuLabels() {
|
||||||
|
for (let i = 0; i < this._workspacesItems.length; i++) {
|
||||||
|
let item = this._workspacesItems[i];
|
||||||
|
let name = Meta.prefs_get_workspace_name(i);
|
||||||
|
item.label.text = name;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
_updateMenu() {
|
||||||
|
let workspaceManager = global.workspace_manager;
|
||||||
|
|
||||||
|
this.menu.removeAll();
|
||||||
|
this._workspacesItems = [];
|
||||||
|
this._currentWorkspace = workspaceManager.get_active_workspace_index();
|
||||||
|
|
||||||
|
for (let i = 0; i < workspaceManager.n_workspaces; i++) {
|
||||||
|
let name = Meta.prefs_get_workspace_name(i);
|
||||||
|
let item = new PopupMenu.PopupMenuItem(name);
|
||||||
|
item.workspaceId = i;
|
||||||
|
|
||||||
|
item.connect('activate', () => {
|
||||||
|
this._activate(item.workspaceId);
|
||||||
|
});
|
||||||
|
|
||||||
|
if (i === this._currentWorkspace)
|
||||||
|
item.setOrnament(PopupMenu.Ornament.DOT);
|
||||||
|
|
||||||
|
this.menu.addMenuItem(item);
|
||||||
|
this._workspacesItems[i] = item;
|
||||||
|
}
|
||||||
|
|
||||||
|
this._statusLabel.set_text(this._getStatusText());
|
||||||
|
}
|
||||||
|
|
||||||
|
_updateThumbnails() {
|
||||||
|
let workspaceManager = global.workspace_manager;
|
||||||
|
|
||||||
|
this._thumbnailsBox.destroy_all_children();
|
||||||
|
|
||||||
|
for (let i = 0; i < workspaceManager.n_workspaces; i++) {
|
||||||
|
let thumb = new WorkspaceThumbnail(i);
|
||||||
|
this._thumbnailsBox.add_actor(thumb);
|
||||||
|
}
|
||||||
|
this._updateActiveThumbnail();
|
||||||
|
}
|
||||||
|
|
||||||
|
_activate(index) {
|
||||||
|
let workspaceManager = global.workspace_manager;
|
||||||
|
|
||||||
|
if (index >= 0 && index < workspaceManager.n_workspaces) {
|
||||||
|
let metaWorkspace = workspaceManager.get_workspace_by_index(index);
|
||||||
|
metaWorkspace.activate(global.get_current_time());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
_onScrollEvent(actor, event) {
|
||||||
|
let direction = event.get_scroll_direction();
|
||||||
|
let diff = 0;
|
||||||
|
if (direction === Clutter.ScrollDirection.DOWN)
|
||||||
|
diff = 1;
|
||||||
|
else if (direction === Clutter.ScrollDirection.UP)
|
||||||
|
diff = -1;
|
||||||
|
else
|
||||||
|
return;
|
||||||
|
|
||||||
|
let newIndex = this._currentWorkspace + diff;
|
||||||
|
this._activate(newIndex);
|
||||||
|
}
|
||||||
|
|
||||||
|
_allocate(actor, box, flags) {
|
||||||
|
if (actor.get_n_children() > 0)
|
||||||
|
actor.get_first_child().allocate(box, flags);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
@@ -1,58 +1,74 @@
|
|||||||
/* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */
|
/* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */
|
||||||
const Clutter = imports.gi.Clutter;
|
/* exported init */
|
||||||
const Mainloop = imports.mainloop;
|
const { Clutter, GObject, St } = imports.gi;
|
||||||
const St = imports.gi.St;
|
|
||||||
|
|
||||||
const Main = imports.ui.main;
|
const Main = imports.ui.main;
|
||||||
const Workspace = imports.ui.workspace;
|
const Workspace = imports.ui.workspace;
|
||||||
const WorkspacesView = imports.ui.workspacesView;
|
const WorkspacesView = imports.ui.workspacesView;
|
||||||
|
|
||||||
function injectToFunction(parent, name, func) {
|
class MyWindowOverlay extends Workspace.WindowOverlay {
|
||||||
let origin = parent[name];
|
constructor(windowClone, parentActor) {
|
||||||
parent[name] = function() {
|
super(windowClone, parentActor);
|
||||||
let ret;
|
|
||||||
ret = origin.apply(this, arguments);
|
this._id = null;
|
||||||
if (ret === undefined)
|
this._text = new St.Label({
|
||||||
ret = func.apply(this, arguments);
|
style_class: 'extension-windowsNavigator-window-tooltip',
|
||||||
return ret;
|
visible: false,
|
||||||
|
});
|
||||||
|
parentActor.add_actor(this._text);
|
||||||
}
|
}
|
||||||
return origin;
|
|
||||||
}
|
|
||||||
|
|
||||||
let winInjections, workspaceInjections, workViewInjections, createdActors, connectedSignals;
|
showTooltip() {
|
||||||
|
this._parentActor.set_child_below_sibling(this._text, null);
|
||||||
function resetState() {
|
|
||||||
winInjections = { };
|
|
||||||
workspaceInjections = { };
|
|
||||||
workViewInjections = { };
|
|
||||||
createdActors = [ ];
|
|
||||||
connectedSignals = [ ];
|
|
||||||
}
|
|
||||||
|
|
||||||
function enable() {
|
|
||||||
resetState();
|
|
||||||
|
|
||||||
Workspace.WindowOverlay.prototype.showTooltip = function() {
|
|
||||||
this._text.raise_top();
|
|
||||||
this._text.show();
|
this._text.show();
|
||||||
this._text.text = (this._windowClone.slotId + 1).toString();
|
this._text.text = (this._windowClone.slotId + 1).toString();
|
||||||
}
|
}
|
||||||
winInjections['showTooltip'] = undefined;
|
|
||||||
|
|
||||||
Workspace.WindowOverlay.prototype.hideTooltip = function() {
|
hideTooltip() {
|
||||||
if (this._text && this._text.visible)
|
if (this._text && this._text.visible)
|
||||||
this._text.hide();
|
this._text.hide();
|
||||||
}
|
}
|
||||||
winInjections['hideTooltip'] = undefined;
|
|
||||||
|
|
||||||
Workspace.Workspace.prototype.showTooltip = function() {
|
relayout(animate) {
|
||||||
if (this._tip == null || this._actualGeometry == null)
|
super.relayout(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);
|
||||||
|
this._parentActor.set_child_below_sibling(this._text, null);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var MyWorkspace = GObject.registerClass(
|
||||||
|
class MyWorkspace extends Workspace.Workspace {
|
||||||
|
_init(metaWorkspace, monitorIndex) {
|
||||||
|
super._init(metaWorkspace, monitorIndex);
|
||||||
|
|
||||||
|
if (metaWorkspace && metaWorkspace.index() < 9) {
|
||||||
|
this._tip = new St.Label({
|
||||||
|
style_class: 'extension-windowsNavigator-window-tooltip',
|
||||||
|
visible: false,
|
||||||
|
});
|
||||||
|
this.add_actor(this._tip);
|
||||||
|
|
||||||
|
this.connect('notify::scale-x', () => {
|
||||||
|
this._tip.set_scale(1 / this.scale_x, 1 / this.scale_x);
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
this._tip = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
showTooltip() {
|
||||||
|
if (!this._tip || !this._actualGeometry)
|
||||||
return;
|
return;
|
||||||
this._tip.text = (this.metaWorkspace.index() + 1).toString();
|
this._tip.text = (this.metaWorkspace.index() + 1).toString();
|
||||||
|
|
||||||
// Hand code this instead of using _getSpacingAndPadding
|
// Hand code this instead of using _getSpacingAndPadding
|
||||||
// because that fails on empty workspaces
|
// because that fails on empty workspaces
|
||||||
let node = this.actor.get_theme_node();
|
let node = this.get_theme_node();
|
||||||
let padding = {
|
let padding = {
|
||||||
left: node.get_padding(St.Side.LEFT),
|
left: node.get_padding(St.Side.LEFT),
|
||||||
top: node.get_padding(St.Side.TOP),
|
top: node.get_padding(St.Side.TOP),
|
||||||
@@ -64,82 +80,96 @@ function enable() {
|
|||||||
this._tip.x = area.x;
|
this._tip.x = area.x;
|
||||||
this._tip.y = area.y;
|
this._tip.y = area.y;
|
||||||
this._tip.show();
|
this._tip.show();
|
||||||
this._tip.raise_top();
|
this.set_child_below_sibling(this._tip, null);
|
||||||
}
|
}
|
||||||
workspaceInjections['showTooltip'] = undefined;
|
|
||||||
|
|
||||||
Workspace.Workspace.prototype.hideTooltip = function() {
|
hideTooltip() {
|
||||||
if (this._tip == null)
|
if (!this._tip)
|
||||||
return;
|
return;
|
||||||
if (!this._tip.get_parent())
|
if (!this._tip.get_parent())
|
||||||
return;
|
return;
|
||||||
this._tip.hide();
|
this._tip.hide();
|
||||||
}
|
}
|
||||||
workspaceInjections['hideTooltip'] = undefined;
|
|
||||||
|
|
||||||
Workspace.Workspace.prototype.getWindowWithTooltip = function(id) {
|
getWindowWithTooltip(id) {
|
||||||
for (let i = 0; i < this._windows.length; i++) {
|
for (let i = 0; i < this._windows.length; i++) {
|
||||||
if ((this._windows[i].slotId + 1) == id)
|
if (this._windows[i].slotId + 1 === id)
|
||||||
return this._windows[i].metaWindow;
|
return this._windows[i].metaWindow;
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
workspaceInjections['getWindowWithTooltip'] = undefined;
|
|
||||||
|
|
||||||
Workspace.Workspace.prototype.showWindowsTooltips = function() {
|
showWindowsTooltips() {
|
||||||
for (let i in this._windowOverlays) {
|
for (let i in this._windowOverlays) {
|
||||||
if (this._windowOverlays[i] != null)
|
if (this._windowOverlays[i])
|
||||||
this._windowOverlays[i].showTooltip();
|
this._windowOverlays[i].showTooltip();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
workspaceInjections['showWindowsTooltips'] = undefined;
|
|
||||||
|
|
||||||
Workspace.Workspace.prototype.hideWindowsTooltips = function() {
|
hideWindowsTooltips() {
|
||||||
for (let i in this._windowOverlays) {
|
for (let i in this._windowOverlays) {
|
||||||
if (this._windowOverlays[i] != null)
|
if (this._windowOverlays[i])
|
||||||
this._windowOverlays[i].hideTooltip();
|
this._windowOverlays[i].hideTooltip();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
workspaceInjections['hideWindowsTooltips'] = undefined;
|
});
|
||||||
|
|
||||||
WorkspacesView.WorkspacesView.prototype._hideTooltips = function() {
|
var MyWorkspacesView = GObject.registerClass(
|
||||||
if (global.stage.get_key_focus() == global.stage)
|
class MyWorkspacesView extends WorkspacesView.WorkspacesView {
|
||||||
|
_init(width, height, x, y, workspaces) {
|
||||||
|
super._init(width, height, x, y, workspaces);
|
||||||
|
|
||||||
|
this._pickWorkspace = false;
|
||||||
|
this._pickWindow = false;
|
||||||
|
this._keyPressEventId =
|
||||||
|
global.stage.connect('key-press-event', this._onKeyPress.bind(this));
|
||||||
|
this._keyReleaseEventId =
|
||||||
|
global.stage.connect('key-release-event', this._onKeyRelease.bind(this));
|
||||||
|
}
|
||||||
|
|
||||||
|
_onDestroy() {
|
||||||
|
super._onDestroy();
|
||||||
|
|
||||||
|
global.stage.disconnect(this._keyPressEventId);
|
||||||
|
global.stage.disconnect(this._keyReleaseEventId);
|
||||||
|
}
|
||||||
|
|
||||||
|
_hideTooltips() {
|
||||||
|
if (global.stage.get_key_focus() === global.stage)
|
||||||
global.stage.set_key_focus(this._prevFocusActor);
|
global.stage.set_key_focus(this._prevFocusActor);
|
||||||
this._pickWindow = false;
|
this._pickWindow = false;
|
||||||
for (let i = 0; i < this._workspaces.length; i++)
|
for (let i = 0; i < this._workspaces.length; i++)
|
||||||
this._workspaces[i].hideWindowsTooltips();
|
this._workspaces[i].hideWindowsTooltips();
|
||||||
}
|
}
|
||||||
workViewInjections['_hideTooltips'] = undefined;
|
|
||||||
|
|
||||||
WorkspacesView.WorkspacesView.prototype._hideWorkspacesTooltips = function() {
|
_hideWorkspacesTooltips() {
|
||||||
global.stage.set_key_focus(this._prevFocusActor);
|
global.stage.set_key_focus(this._prevFocusActor);
|
||||||
this._pickWorkspace = false;
|
this._pickWorkspace = false;
|
||||||
for (let i = 0; i < this._workspaces.length; i++)
|
for (let i = 0; i < this._workspaces.length; i++)
|
||||||
this._workspaces[i].hideTooltip();
|
this._workspaces[i].hideTooltip();
|
||||||
}
|
}
|
||||||
workViewInjections['_hideWorkspacesTooltips'] = undefined;
|
|
||||||
|
|
||||||
WorkspacesView.WorkspacesView.prototype._onKeyRelease = function(s, o) {
|
_onKeyRelease(s, o) {
|
||||||
if (this._pickWindow &&
|
if (this._pickWindow &&
|
||||||
(o.get_key_symbol() == Clutter.KEY_Alt_L ||
|
(o.get_key_symbol() === Clutter.KEY_Alt_L ||
|
||||||
o.get_key_symbol() == Clutter.KEY_Alt_R))
|
o.get_key_symbol() === Clutter.KEY_Alt_R))
|
||||||
this._hideTooltips();
|
this._hideTooltips();
|
||||||
if (this._pickWorkspace &&
|
if (this._pickWorkspace &&
|
||||||
(o.get_key_symbol() == Clutter.KEY_Control_L ||
|
(o.get_key_symbol() === Clutter.KEY_Control_L ||
|
||||||
o.get_key_symbol() == Clutter.KEY_Control_R))
|
o.get_key_symbol() === Clutter.KEY_Control_R))
|
||||||
this._hideWorkspacesTooltips();
|
this._hideWorkspacesTooltips();
|
||||||
}
|
}
|
||||||
workViewInjections['_onKeyRelease'] = undefined;
|
|
||||||
|
|
||||||
WorkspacesView.WorkspacesView.prototype._onKeyPress = function(s, o) {
|
_onKeyPress(s, o) {
|
||||||
if(Main.overview.viewSelector._activePage != Main.overview.viewSelector._workspacesPage)
|
let { viewSelector } = Main.overview;
|
||||||
|
if (viewSelector._activePage !== viewSelector._workspacesPage)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
let workspaceManager = global.workspace_manager;
|
let workspaceManager = global.workspace_manager;
|
||||||
|
|
||||||
if ((o.get_key_symbol() == Clutter.KEY_Alt_L ||
|
if ((o.get_key_symbol() === Clutter.KEY_Alt_L ||
|
||||||
o.get_key_symbol() == Clutter.KEY_Alt_R)
|
o.get_key_symbol() === Clutter.KEY_Alt_R) &&
|
||||||
&& !this._pickWorkspace) {
|
!this._pickWorkspace) {
|
||||||
this._prevFocusActor = global.stage.get_key_focus();
|
this._prevFocusActor = global.stage.get_key_focus();
|
||||||
global.stage.set_key_focus(null);
|
global.stage.set_key_focus(null);
|
||||||
this._active = workspaceManager.get_active_workspace_index();
|
this._active = workspaceManager.get_active_workspace_index();
|
||||||
@@ -147,9 +177,9 @@ function enable() {
|
|||||||
this._workspaces[workspaceManager.get_active_workspace_index()].showWindowsTooltips();
|
this._workspaces[workspaceManager.get_active_workspace_index()].showWindowsTooltips();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
if ((o.get_key_symbol() == Clutter.KEY_Control_L ||
|
if ((o.get_key_symbol() === Clutter.KEY_Control_L ||
|
||||||
o.get_key_symbol() == Clutter.KEY_Control_R)
|
o.get_key_symbol() === Clutter.KEY_Control_R) &&
|
||||||
&& !this._pickWindow) {
|
!this._pickWindow) {
|
||||||
this._prevFocusActor = global.stage.get_key_focus();
|
this._prevFocusActor = global.stage.get_key_focus();
|
||||||
global.stage.set_key_focus(null);
|
global.stage.set_key_focus(null);
|
||||||
this._pickWorkspace = true;
|
this._pickWorkspace = true;
|
||||||
@@ -158,17 +188,17 @@ function enable() {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (global.stage.get_key_focus() != global.stage)
|
if (global.stage.get_key_focus() !== global.stage)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
// ignore shift presses, they're required to get numerals in azerty keyboards
|
// ignore shift presses, they're required to get numerals in azerty keyboards
|
||||||
if ((this._pickWindow || this._pickWorkspace) &&
|
if ((this._pickWindow || this._pickWorkspace) &&
|
||||||
(o.get_key_symbol() == Clutter.KEY_Shift_L ||
|
(o.get_key_symbol() === Clutter.KEY_Shift_L ||
|
||||||
o.get_key_symbol() == Clutter.KEY_Shift_R))
|
o.get_key_symbol() === Clutter.KEY_Shift_R))
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
if (this._pickWindow) {
|
if (this._pickWindow) {
|
||||||
if (this._active != workspaceManager.get_active_workspace_index()) {
|
if (this._active !== workspaceManager.get_active_workspace_index()) {
|
||||||
this._hideTooltips();
|
this._hideTooltips();
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -210,82 +240,28 @@ function enable() {
|
|||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
workViewInjections['_onKeyPress'] = undefined;
|
});
|
||||||
|
|
||||||
winInjections['_init'] = injectToFunction(Workspace.WindowOverlay.prototype, '_init', function(windowClone, parentActor) {
|
class Extension {
|
||||||
this._id = null;
|
constructor() {
|
||||||
createdActors.push(this._text = new St.Label({ style_class: 'extension-windowsNavigator-window-tooltip' }));
|
this._origWindowOverlay = Workspace.WindowOverlay;
|
||||||
this._text.hide();
|
this._origWorkspace = Workspace.Workspace;
|
||||||
parentActor.add_actor(this._text);
|
this._origWorkspacesView = WorkspacesView.WorkspacesView;
|
||||||
});
|
}
|
||||||
|
|
||||||
winInjections['relayout'] = injectToFunction(Workspace.WindowOverlay.prototype, 'relayout', function(animate) {
|
enable() {
|
||||||
let [cloneX, cloneY, cloneWidth, cloneHeight] = this._windowClone.slot;
|
Workspace.WindowOverlay = MyWindowOverlay;
|
||||||
|
Workspace.Workspace = MyWorkspace;
|
||||||
|
WorkspacesView.WorkspacesView = MyWorkspacesView;
|
||||||
|
}
|
||||||
|
|
||||||
let textX = cloneX - 2;
|
disable() {
|
||||||
let textY = cloneY - 2;
|
Workspace.WindowOverlay = this._origWindowOverlay;
|
||||||
this._text.set_position(Math.floor(textX) + 5, Math.floor(textY) + 5);
|
Workspace.Workspace = this._origWorkspace;
|
||||||
this._text.raise_top();
|
WorkspacesView.WorkspacesView = this._origWorkspacesView;
|
||||||
});
|
}
|
||||||
|
|
||||||
workspaceInjections['_init'] = injectToFunction(Workspace.Workspace.prototype, '_init', function(metaWorkspace) {
|
|
||||||
if (metaWorkspace && metaWorkspace.index() < 9) {
|
|
||||||
createdActors.push(this._tip = new St.Label({ style_class: 'extension-windowsNavigator-window-tooltip',
|
|
||||||
visible: false }));
|
|
||||||
|
|
||||||
this.actor.add_actor(this._tip);
|
|
||||||
let signalId = this.actor.connect('notify::scale-x', () => {
|
|
||||||
this._tip.set_scale(1 / this.actor.scale_x, 1 / this.actor.scale_x);
|
|
||||||
});
|
|
||||||
connectedSignals.push({ obj: this.actor, id: signalId });
|
|
||||||
} else
|
|
||||||
this._tip = null;
|
|
||||||
});
|
|
||||||
|
|
||||||
workViewInjections['_init'] = injectToFunction(WorkspacesView.WorkspacesView.prototype, '_init', function(width, height, x, y, workspaces) {
|
|
||||||
this._pickWorkspace = false;
|
|
||||||
this._pickWindow = false;
|
|
||||||
this._keyPressEventId =
|
|
||||||
global.stage.connect('key-press-event', this._onKeyPress.bind(this));
|
|
||||||
this._keyReleaseEventId =
|
|
||||||
global.stage.connect('key-release-event', this._onKeyRelease.bind(this));
|
|
||||||
connectedSignals.push({ obj: global.stage, id: this._keyPressEventId });
|
|
||||||
connectedSignals.push({ obj: global.stage, id: this._keyReleaseEventId });
|
|
||||||
});
|
|
||||||
|
|
||||||
workViewInjections['_onDestroy'] = injectToFunction(WorkspacesView.WorkspacesView.prototype, '_onDestroy', function() {
|
|
||||||
global.stage.disconnect(this._keyPressEventId);
|
|
||||||
global.stage.disconnect(this._keyReleaseEventId);
|
|
||||||
connectedSignals = [ ];
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
function removeInjection(object, injection, name) {
|
|
||||||
if (injection[name] === undefined)
|
|
||||||
delete object[name];
|
|
||||||
else
|
|
||||||
object[name] = injection[name];
|
|
||||||
}
|
|
||||||
|
|
||||||
function disable() {
|
|
||||||
let i;
|
|
||||||
|
|
||||||
for (i in workspaceInjections)
|
|
||||||
removeInjection(Workspace.Workspace.prototype, workspaceInjections, i);
|
|
||||||
for (i in winInjections)
|
|
||||||
removeInjection(Workspace.WindowOverlay.prototype, winInjections, i);
|
|
||||||
for (i in workViewInjections)
|
|
||||||
removeInjection(WorkspacesView.WorkspacesView.prototype, workViewInjections, i);
|
|
||||||
|
|
||||||
for (i of connectedSignals)
|
|
||||||
i.obj.disconnect(i.id);
|
|
||||||
|
|
||||||
for (i of createdActors)
|
|
||||||
i.destroy();
|
|
||||||
|
|
||||||
resetState();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function init() {
|
function init() {
|
||||||
/* do nothing */
|
return new Extension();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,63 +1,271 @@
|
|||||||
// -*- mode: js2; indent-tabs-mode: nil; js2-basic-offset: 4 -*-
|
// -*- mode: js2; indent-tabs-mode: nil; js2-basic-offset: 4 -*-
|
||||||
|
/* exported init enable disable */
|
||||||
|
|
||||||
const Gio = imports.gi.Gio;
|
const { Clutter, Gio, GObject, Meta, St } = imports.gi;
|
||||||
const Meta = imports.gi.Meta;
|
|
||||||
const Clutter = imports.gi.Clutter;
|
const DND = imports.ui.dnd;
|
||||||
const St = imports.gi.St;
|
const ExtensionUtils = imports.misc.extensionUtils;
|
||||||
const Mainloop = imports.mainloop;
|
const Main = imports.ui.main;
|
||||||
const PanelMenu = imports.ui.panelMenu;
|
const PanelMenu = imports.ui.panelMenu;
|
||||||
const PopupMenu = imports.ui.popupMenu;
|
const PopupMenu = imports.ui.popupMenu;
|
||||||
const Panel = imports.ui.panel;
|
|
||||||
|
|
||||||
const Gettext = imports.gettext.domain('gnome-shell-extensions');
|
const Gettext = imports.gettext.domain('gnome-shell-extensions');
|
||||||
const _ = Gettext.gettext;
|
const _ = Gettext.gettext;
|
||||||
|
|
||||||
const Main = imports.ui.main;
|
|
||||||
|
|
||||||
const ExtensionUtils = imports.misc.extensionUtils;
|
|
||||||
const Me = ExtensionUtils.getCurrentExtension();
|
|
||||||
const Convenience = Me.imports.convenience;
|
|
||||||
|
|
||||||
const WORKSPACE_SCHEMA = 'org.gnome.desktop.wm.preferences';
|
const WORKSPACE_SCHEMA = 'org.gnome.desktop.wm.preferences';
|
||||||
const WORKSPACE_KEY = 'workspace-names';
|
const WORKSPACE_KEY = 'workspace-names';
|
||||||
|
|
||||||
|
let WindowPreview = GObject.registerClass(
|
||||||
|
class WindowPreview extends St.Button {
|
||||||
|
_init(window) {
|
||||||
|
super._init({
|
||||||
|
style_class: 'workspace-indicator-window-preview',
|
||||||
|
});
|
||||||
|
|
||||||
|
this._delegate = this;
|
||||||
|
DND.makeDraggable(this, { restoreOnSuccess: true });
|
||||||
|
|
||||||
|
this._window = window;
|
||||||
|
|
||||||
|
this.connect('destroy', this._onDestroy.bind(this));
|
||||||
|
|
||||||
|
this._sizeChangedId = this._window.connect('size-changed',
|
||||||
|
this._relayout.bind(this));
|
||||||
|
this._positionChangedId = this._window.connect('position-changed',
|
||||||
|
this._relayout.bind(this));
|
||||||
|
this._minimizedChangedId = this._window.connect('notify::minimized',
|
||||||
|
this._relayout.bind(this));
|
||||||
|
this._monitorEnteredId = global.display.connect('window-entered-monitor',
|
||||||
|
this._relayout.bind(this));
|
||||||
|
this._monitorLeftId = global.display.connect('window-left-monitor',
|
||||||
|
this._relayout.bind(this));
|
||||||
|
|
||||||
|
// Do initial layout when we get a parent
|
||||||
|
let id = this.connect('parent-set', () => {
|
||||||
|
this.disconnect(id);
|
||||||
|
if (!this.get_parent())
|
||||||
|
return;
|
||||||
|
this._laterId = Meta.later_add(Meta.LaterType.BEFORE_REDRAW, () => {
|
||||||
|
this._laterId = 0;
|
||||||
|
this._relayout();
|
||||||
|
return false;
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
this._focusChangedId = global.display.connect('notify::focus-window',
|
||||||
|
this._onFocusChanged.bind(this));
|
||||||
|
this._onFocusChanged();
|
||||||
|
}
|
||||||
|
|
||||||
|
// needed for DND
|
||||||
|
get realWindow() {
|
||||||
|
return this._window.get_compositor_private();
|
||||||
|
}
|
||||||
|
|
||||||
|
_onDestroy() {
|
||||||
|
this._window.disconnect(this._sizeChangedId);
|
||||||
|
this._window.disconnect(this._positionChangedId);
|
||||||
|
this._window.disconnect(this._minimizedChangedId);
|
||||||
|
global.display.disconnect(this._monitorEnteredId);
|
||||||
|
global.display.disconnect(this._monitorLeftId);
|
||||||
|
global.display.disconnect(this._focusChangedId);
|
||||||
|
if (this._laterId)
|
||||||
|
Meta.later_remove(this._laterId);
|
||||||
|
}
|
||||||
|
|
||||||
|
_onFocusChanged() {
|
||||||
|
if (global.display.focus_window === this._window)
|
||||||
|
this.add_style_class_name('active');
|
||||||
|
else
|
||||||
|
this.remove_style_class_name('active');
|
||||||
|
}
|
||||||
|
|
||||||
|
_relayout() {
|
||||||
|
let monitor = Main.layoutManager.findIndexForActor(this);
|
||||||
|
this.visible = monitor === this._window.get_monitor() &&
|
||||||
|
this._window.window_type !== Meta.WindowType.DESKTOP &&
|
||||||
|
this._window.showing_on_its_workspace();
|
||||||
|
|
||||||
|
if (!this.visible)
|
||||||
|
return;
|
||||||
|
|
||||||
|
let workArea = Main.layoutManager.getWorkAreaForMonitor(monitor);
|
||||||
|
let hscale = this.get_parent().allocation.get_width() / workArea.width;
|
||||||
|
let vscale = this.get_parent().allocation.get_height() / workArea.height;
|
||||||
|
|
||||||
|
let frameRect = this._window.get_frame_rect();
|
||||||
|
this.set_size(
|
||||||
|
Math.round(Math.min(frameRect.width, workArea.width) * hscale),
|
||||||
|
Math.round(Math.min(frameRect.height, workArea.height) * vscale));
|
||||||
|
this.set_position(
|
||||||
|
Math.round(frameRect.x * hscale),
|
||||||
|
Math.round(frameRect.y * vscale));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
let WorkspaceThumbnail = GObject.registerClass(
|
||||||
|
class WorkspaceThumbnail extends St.Button {
|
||||||
|
_init(index) {
|
||||||
|
super._init({
|
||||||
|
style_class: 'workspace',
|
||||||
|
child: new Clutter.Actor({
|
||||||
|
layout_manager: new Clutter.BinLayout(),
|
||||||
|
clip_to_allocation: true,
|
||||||
|
}),
|
||||||
|
x_fill: true,
|
||||||
|
y_fill: true,
|
||||||
|
});
|
||||||
|
|
||||||
|
this.connect('destroy', this._onDestroy.bind(this));
|
||||||
|
|
||||||
|
this._index = index;
|
||||||
|
this._delegate = this; // needed for DND
|
||||||
|
|
||||||
|
this._windowPreviews = new Map();
|
||||||
|
|
||||||
|
let workspaceManager = global.workspace_manager;
|
||||||
|
this._workspace = workspaceManager.get_workspace_by_index(index);
|
||||||
|
|
||||||
|
this._windowAddedId = this._workspace.connect('window-added',
|
||||||
|
(ws, window) => {
|
||||||
|
this._addWindow(window);
|
||||||
|
});
|
||||||
|
this._windowRemovedId = this._workspace.connect('window-removed',
|
||||||
|
(ws, window) => {
|
||||||
|
this._removeWindow(window);
|
||||||
|
});
|
||||||
|
this._restackedId = global.display.connect('restacked',
|
||||||
|
this._onRestacked.bind(this));
|
||||||
|
|
||||||
|
this._workspace.list_windows().forEach(w => this._addWindow(w));
|
||||||
|
this._onRestacked();
|
||||||
|
}
|
||||||
|
|
||||||
|
acceptDrop(source) {
|
||||||
|
if (!source.realWindow)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
let window = source.realWindow.get_meta_window();
|
||||||
|
this._moveWindow(window);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
handleDragOver(source) {
|
||||||
|
if (source.realWindow)
|
||||||
|
return DND.DragMotionResult.MOVE_DROP;
|
||||||
|
else
|
||||||
|
return DND.DragMotionResult.CONTINUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
_addWindow(window) {
|
||||||
|
if (this._windowPreviews.has(window))
|
||||||
|
return;
|
||||||
|
|
||||||
|
let preview = new WindowPreview(window);
|
||||||
|
preview.connect('clicked', (a, btn) => this.emit('clicked', btn));
|
||||||
|
this._windowPreviews.set(window, preview);
|
||||||
|
this.child.add_child(preview);
|
||||||
|
}
|
||||||
|
|
||||||
|
_removeWindow(window) {
|
||||||
|
let preview = this._windowPreviews.get(window);
|
||||||
|
if (!preview)
|
||||||
|
return;
|
||||||
|
|
||||||
|
this._windowPreviews.delete(window);
|
||||||
|
preview.destroy();
|
||||||
|
}
|
||||||
|
|
||||||
|
_onRestacked() {
|
||||||
|
let lastPreview = null;
|
||||||
|
let windows = global.get_window_actors().map(a => a.meta_window);
|
||||||
|
for (let i = 0; i < windows.length; i++) {
|
||||||
|
let preview = this._windowPreviews.get(windows[i]);
|
||||||
|
if (!preview)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
this.child.set_child_above_sibling(preview, lastPreview);
|
||||||
|
lastPreview = preview;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
_moveWindow(window) {
|
||||||
|
let monitorIndex = Main.layoutManager.findIndexForActor(this);
|
||||||
|
if (monitorIndex !== window.get_monitor())
|
||||||
|
window.move_to_monitor(monitorIndex);
|
||||||
|
window.change_workspace_by_index(this._index, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
on_clicked() {
|
||||||
|
let ws = global.workspace_manager.get_workspace_by_index(this._index);
|
||||||
|
if (ws)
|
||||||
|
ws.activate(global.get_current_time());
|
||||||
|
}
|
||||||
|
|
||||||
|
_onDestroy() {
|
||||||
|
this._workspace.disconnect(this._windowAddedId);
|
||||||
|
this._workspace.disconnect(this._windowRemovedId);
|
||||||
|
global.display.disconnect(this._restackedId);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
let WorkspaceIndicator = GObject.registerClass(
|
||||||
class WorkspaceIndicator extends PanelMenu.Button {
|
class WorkspaceIndicator extends PanelMenu.Button {
|
||||||
constructor() {
|
_init() {
|
||||||
super(0.0, _("Workspace Indicator"));
|
super._init(0.0, _('Workspace Indicator'));
|
||||||
|
|
||||||
|
let container = new St.Widget({
|
||||||
|
layout_manager: new Clutter.BinLayout(),
|
||||||
|
x_expand: true,
|
||||||
|
y_expand: true,
|
||||||
|
});
|
||||||
|
this.add_actor(container);
|
||||||
|
|
||||||
let workspaceManager = global.workspace_manager;
|
let workspaceManager = global.workspace_manager;
|
||||||
|
|
||||||
this._currentWorkspace = workspaceManager.get_active_workspace().index();
|
this._currentWorkspace = workspaceManager.get_active_workspace_index();
|
||||||
this.statusLabel = new St.Label({ y_align: Clutter.ActorAlign.CENTER,
|
this._statusLabel = new St.Label({
|
||||||
text: this._labelText() });
|
style_class: 'panel-workspace-indicator',
|
||||||
|
y_align: Clutter.ActorAlign.CENTER,
|
||||||
|
text: this._labelText(),
|
||||||
|
});
|
||||||
|
|
||||||
this.actor.add_actor(this.statusLabel);
|
container.add_actor(this._statusLabel);
|
||||||
|
|
||||||
this.workspacesItems = [];
|
this._thumbnailsBox = new St.BoxLayout({
|
||||||
|
style_class: 'panel-workspace-indicator-box',
|
||||||
|
y_expand: true,
|
||||||
|
reactive: true,
|
||||||
|
});
|
||||||
|
|
||||||
|
container.add_actor(this._thumbnailsBox);
|
||||||
|
|
||||||
|
this._workspacesItems = [];
|
||||||
this._workspaceSection = new PopupMenu.PopupMenuSection();
|
this._workspaceSection = new PopupMenu.PopupMenuSection();
|
||||||
this.menu.addMenuItem(this._workspaceSection);
|
this.menu.addMenuItem(this._workspaceSection);
|
||||||
|
|
||||||
this._workspaceManagerSignals = [];
|
this._workspaceManagerSignals = [
|
||||||
this._workspaceManagerSignals.push(workspaceManager.connect_after('workspace-added',
|
workspaceManager.connect_after('notify::n-workspaces',
|
||||||
this._createWorkspacesSection.bind(this)));
|
this._nWorkspacesChanged.bind(this)),
|
||||||
this._workspaceManagerSignals.push(workspaceManager.connect_after('workspace-removed',
|
workspaceManager.connect_after('workspace-switched',
|
||||||
this._createWorkspacesSection.bind(this)));
|
this._onWorkspaceSwitched.bind(this)),
|
||||||
this._workspaceManagerSignals.push(workspaceManager.connect_after('workspace-switched',
|
workspaceManager.connect('notify::layout-rows',
|
||||||
this._updateIndicator.bind(this)));
|
this._onWorkspaceOrientationChanged.bind(this)),
|
||||||
|
];
|
||||||
|
|
||||||
this.actor.connect('scroll-event', this._onScrollEvent.bind(this));
|
this.connect('scroll-event', this._onScrollEvent.bind(this));
|
||||||
|
this._thumbnailsBox.connect('scroll-event', this._onScrollEvent.bind(this));
|
||||||
this._createWorkspacesSection();
|
this._createWorkspacesSection();
|
||||||
|
this._updateThumbnails();
|
||||||
//styling
|
this._onWorkspaceOrientationChanged();
|
||||||
this.statusLabel.add_style_class_name('panel-workspace-indicator');
|
|
||||||
|
|
||||||
this._settings = new Gio.Settings({ schema_id: WORKSPACE_SCHEMA });
|
this._settings = new Gio.Settings({ schema_id: WORKSPACE_SCHEMA });
|
||||||
this._settingsChangedId =
|
this._settingsChangedId = this._settings.connect(
|
||||||
this._settings.connect('changed::' + WORKSPACE_KEY,
|
`changed::${WORKSPACE_KEY}`,
|
||||||
this._createWorkspacesSection.bind(this));
|
this._updateMenuLabels.bind(this));
|
||||||
}
|
}
|
||||||
|
|
||||||
destroy() {
|
_onDestroy() {
|
||||||
for (let i = 0; i < this._workspaceManagerSignals.length; i++)
|
for (let i = 0; i < this._workspaceManagerSignals.length; i++)
|
||||||
global.workspace_manager.disconnect(this._workspaceManagerSignals[i]);
|
global.workspace_manager.disconnect(this._workspaceManagerSignals[i]);
|
||||||
|
|
||||||
@@ -66,54 +274,110 @@ class WorkspaceIndicator extends PanelMenu.Button {
|
|||||||
this._settingsChangedId = 0;
|
this._settingsChangedId = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
super.destroy();
|
Main.panel.set_offscreen_redirect(Clutter.OffscreenRedirect.ALWAYS);
|
||||||
|
|
||||||
|
super._onDestroy();
|
||||||
}
|
}
|
||||||
|
|
||||||
_updateIndicator() {
|
_onWorkspaceOrientationChanged() {
|
||||||
this.workspacesItems[this._currentWorkspace].setOrnament(PopupMenu.Ornament.NONE);
|
let vertical = global.workspace_manager.layout_rows === -1;
|
||||||
this._currentWorkspace = global.workspace_manager.get_active_workspace().index();
|
this.reactive = vertical;
|
||||||
this.workspacesItems[this._currentWorkspace].setOrnament(PopupMenu.Ornament.DOT);
|
|
||||||
|
|
||||||
this.statusLabel.set_text(this._labelText());
|
this._statusLabel.visible = vertical;
|
||||||
|
this._thumbnailsBox.visible = !vertical;
|
||||||
|
|
||||||
|
// Disable offscreen-redirect when showing the workspace switcher
|
||||||
|
// so that clip-to-allocation works
|
||||||
|
Main.panel.set_offscreen_redirect(vertical
|
||||||
|
? Clutter.OffscreenRedirect.ALWAYS
|
||||||
|
: Clutter.OffscreenRedirect.AUTOMATIC_FOR_OPACITY);
|
||||||
|
}
|
||||||
|
|
||||||
|
_onWorkspaceSwitched() {
|
||||||
|
this._currentWorkspace = global.workspace_manager.get_active_workspace_index();
|
||||||
|
|
||||||
|
this._updateMenuOrnament();
|
||||||
|
this._updateActiveThumbnail();
|
||||||
|
|
||||||
|
this._statusLabel.set_text(this._labelText());
|
||||||
|
}
|
||||||
|
|
||||||
|
_nWorkspacesChanged() {
|
||||||
|
this._createWorkspacesSection();
|
||||||
|
this._updateThumbnails();
|
||||||
|
}
|
||||||
|
|
||||||
|
_updateMenuOrnament() {
|
||||||
|
for (let i = 0; i < this._workspacesItems.length; i++) {
|
||||||
|
this._workspacesItems[i].setOrnament(i === this._currentWorkspace
|
||||||
|
? PopupMenu.Ornament.DOT
|
||||||
|
: PopupMenu.Ornament.NONE);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
_updateActiveThumbnail() {
|
||||||
|
let thumbs = this._thumbnailsBox.get_children();
|
||||||
|
for (let i = 0; i < thumbs.length; i++) {
|
||||||
|
if (i === this._currentWorkspace)
|
||||||
|
thumbs[i].add_style_class_name('active');
|
||||||
|
else
|
||||||
|
thumbs[i].remove_style_class_name('active');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
_labelText(workspaceIndex) {
|
_labelText(workspaceIndex) {
|
||||||
if(workspaceIndex == undefined) {
|
if (workspaceIndex === undefined) {
|
||||||
workspaceIndex = this._currentWorkspace;
|
workspaceIndex = this._currentWorkspace;
|
||||||
return (workspaceIndex + 1).toString();
|
return (workspaceIndex + 1).toString();
|
||||||
}
|
}
|
||||||
return Meta.prefs_get_workspace_name(workspaceIndex);
|
return Meta.prefs_get_workspace_name(workspaceIndex);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_updateMenuLabels() {
|
||||||
|
for (let i = 0; i < this._workspacesItems.length; i++)
|
||||||
|
this._workspacesItems[i].label.text = this._labelText(i);
|
||||||
|
}
|
||||||
|
|
||||||
_createWorkspacesSection() {
|
_createWorkspacesSection() {
|
||||||
let workspaceManager = global.workspace_manager;
|
let workspaceManager = global.workspace_manager;
|
||||||
|
|
||||||
this._workspaceSection.removeAll();
|
this._workspaceSection.removeAll();
|
||||||
this.workspacesItems = [];
|
this._workspacesItems = [];
|
||||||
this._currentWorkspace = workspaceManager.get_active_workspace().index();
|
this._currentWorkspace = workspaceManager.get_active_workspace_index();
|
||||||
|
|
||||||
let i = 0;
|
let i = 0;
|
||||||
for(; i < workspaceManager.n_workspaces; i++) {
|
for (; i < workspaceManager.n_workspaces; i++) {
|
||||||
this.workspacesItems[i] = new PopupMenu.PopupMenuItem(this._labelText(i));
|
this._workspacesItems[i] = new PopupMenu.PopupMenuItem(this._labelText(i));
|
||||||
this._workspaceSection.addMenuItem(this.workspacesItems[i]);
|
this._workspaceSection.addMenuItem(this._workspacesItems[i]);
|
||||||
this.workspacesItems[i].workspaceId = i;
|
this._workspacesItems[i].workspaceId = i;
|
||||||
this.workspacesItems[i].label_actor = this.statusLabel;
|
this._workspacesItems[i].label_actor = this._statusLabel;
|
||||||
let self = this;
|
this._workspacesItems[i].connect('activate', (actor, _event) => {
|
||||||
this.workspacesItems[i].connect('activate', (actor, event) => {
|
|
||||||
this._activate(actor.workspaceId);
|
this._activate(actor.workspaceId);
|
||||||
});
|
});
|
||||||
|
|
||||||
if (i == this._currentWorkspace)
|
if (i === this._currentWorkspace)
|
||||||
this.workspacesItems[i].setOrnament(PopupMenu.Ornament.DOT);
|
this._workspacesItems[i].setOrnament(PopupMenu.Ornament.DOT);
|
||||||
}
|
}
|
||||||
|
|
||||||
this.statusLabel.set_text(this._labelText());
|
this._statusLabel.set_text(this._labelText());
|
||||||
|
}
|
||||||
|
|
||||||
|
_updateThumbnails() {
|
||||||
|
let workspaceManager = global.workspace_manager;
|
||||||
|
|
||||||
|
this._thumbnailsBox.destroy_all_children();
|
||||||
|
|
||||||
|
for (let i = 0; i < workspaceManager.n_workspaces; i++) {
|
||||||
|
let thumb = new WorkspaceThumbnail(i);
|
||||||
|
this._thumbnailsBox.add_actor(thumb);
|
||||||
|
}
|
||||||
|
this._updateActiveThumbnail();
|
||||||
}
|
}
|
||||||
|
|
||||||
_activate(index) {
|
_activate(index) {
|
||||||
let workspaceManager = global.workspace_manager;
|
let workspaceManager = global.workspace_manager;
|
||||||
|
|
||||||
if(index >= 0 && index < workspaceManager.n_workspaces) {
|
if (index >= 0 && index < workspaceManager.n_workspaces) {
|
||||||
let metaWorkspace = workspaceManager.get_workspace_by_index(index);
|
let metaWorkspace = workspaceManager.get_workspace_by_index(index);
|
||||||
metaWorkspace.activate(global.get_current_time());
|
metaWorkspace.activate(global.get_current_time());
|
||||||
}
|
}
|
||||||
@@ -122,27 +386,27 @@ class WorkspaceIndicator extends PanelMenu.Button {
|
|||||||
_onScrollEvent(actor, event) {
|
_onScrollEvent(actor, event) {
|
||||||
let direction = event.get_scroll_direction();
|
let direction = event.get_scroll_direction();
|
||||||
let diff = 0;
|
let diff = 0;
|
||||||
if (direction == Clutter.ScrollDirection.DOWN) {
|
if (direction === Clutter.ScrollDirection.DOWN)
|
||||||
diff = 1;
|
diff = 1;
|
||||||
} else if (direction == Clutter.ScrollDirection.UP) {
|
else if (direction === Clutter.ScrollDirection.UP)
|
||||||
diff = -1;
|
diff = -1;
|
||||||
} else {
|
else
|
||||||
return;
|
return;
|
||||||
}
|
|
||||||
|
|
||||||
let newIndex = global.workspace_manager.get_active_workspace().index() + diff;
|
|
||||||
|
let newIndex = global.workspace_manager.get_active_workspace_index() + diff;
|
||||||
this._activate(newIndex);
|
this._activate(newIndex);
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
|
|
||||||
function init(meta) {
|
function init() {
|
||||||
Convenience.initTranslations();
|
ExtensionUtils.initTranslations();
|
||||||
}
|
}
|
||||||
|
|
||||||
let _indicator;
|
let _indicator;
|
||||||
|
|
||||||
function enable() {
|
function enable() {
|
||||||
_indicator = new WorkspaceIndicator;
|
_indicator = new WorkspaceIndicator();
|
||||||
Main.panel.addToStatusArea('workspace-indicator', _indicator);
|
Main.panel.addToStatusArea('workspace-indicator', _indicator);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,17 +1,13 @@
|
|||||||
// -*- mode: js2; indent-tabs-mode: nil; js2-basic-offset: 4 -*-
|
// -*- mode: js2; indent-tabs-mode: nil; js2-basic-offset: 4 -*-
|
||||||
|
/* exported init buildPrefsWidget */
|
||||||
|
|
||||||
const Gio = imports.gi.Gio;
|
const { Gio, GObject, Gtk } = imports.gi;
|
||||||
const GLib = imports.gi.GLib;
|
|
||||||
const GObject = imports.gi.GObject;
|
|
||||||
const Gtk = imports.gi.Gtk;
|
|
||||||
|
|
||||||
const Gettext = imports.gettext.domain('gnome-shell-extensions');
|
const Gettext = imports.gettext.domain('gnome-shell-extensions');
|
||||||
const _ = Gettext.gettext;
|
const _ = Gettext.gettext;
|
||||||
const N_ = e => e;
|
const N_ = e => e;
|
||||||
|
|
||||||
const ExtensionUtils = imports.misc.extensionUtils;
|
const ExtensionUtils = imports.misc.extensionUtils;
|
||||||
const Me = ExtensionUtils.getCurrentExtension();
|
|
||||||
const Convenience = Me.imports.convenience;
|
|
||||||
|
|
||||||
const WORKSPACE_SCHEMA = 'org.gnome.desktop.wm.preferences';
|
const WORKSPACE_SCHEMA = 'org.gnome.desktop.wm.preferences';
|
||||||
const WORKSPACE_KEY = 'workspace-names';
|
const WORKSPACE_KEY = 'workspace-names';
|
||||||
@@ -27,8 +23,6 @@ class WorkspaceNameModel extends Gtk.ListStore {
|
|||||||
};
|
};
|
||||||
|
|
||||||
this._settings = new Gio.Settings({ schema_id: WORKSPACE_SCHEMA });
|
this._settings = new Gio.Settings({ schema_id: WORKSPACE_SCHEMA });
|
||||||
//this._settings.connect('changed::workspace-names', this._reloadFromSettings.bind(this));
|
|
||||||
|
|
||||||
this._reloadFromSettings();
|
this._reloadFromSettings();
|
||||||
|
|
||||||
// overriding class closure doesn't work, because GtkTreeModel
|
// overriding class closure doesn't work, because GtkTreeModel
|
||||||
@@ -57,7 +51,7 @@ class WorkspaceNameModel extends Gtk.ListStore {
|
|||||||
while (ok)
|
while (ok)
|
||||||
ok = this.remove(iter);
|
ok = this.remove(iter);
|
||||||
|
|
||||||
for ( ; i < newNames.length; i++) {
|
for (; i < newNames.length; i++) {
|
||||||
iter = this.append();
|
iter = this.append();
|
||||||
this.set(iter, [this.Columns.LABEL], [newNames[i]]);
|
this.set(iter, [this.Columns.LABEL], [newNames[i]]);
|
||||||
}
|
}
|
||||||
@@ -115,7 +109,7 @@ class WorkspaceNameModel extends Gtk.ListStore {
|
|||||||
names.splice(index, 1);
|
names.splice(index, 1);
|
||||||
|
|
||||||
// compact the array
|
// compact the array
|
||||||
for (let i = names.length -1; i >= 0 && !names[i]; i++)
|
for (let i = names.length - 1; i >= 0 && !names[i]; i++)
|
||||||
names.pop();
|
names.pop();
|
||||||
|
|
||||||
this._settings.set_strv(WORKSPACE_KEY, names);
|
this._settings.set_strv(WORKSPACE_KEY, names);
|
||||||
@@ -131,23 +125,28 @@ class WorkspaceSettingsWidget extends Gtk.Grid {
|
|||||||
this.margin = 12;
|
this.margin = 12;
|
||||||
this.orientation = Gtk.Orientation.VERTICAL;
|
this.orientation = Gtk.Orientation.VERTICAL;
|
||||||
|
|
||||||
this.add(new Gtk.Label({ label: '<b>' + _("Workspace Names") + '</b>',
|
this.add(new Gtk.Label({
|
||||||
use_markup: true, margin_bottom: 6,
|
label: '<b>%s</b>'.format(_('Workspace Names')),
|
||||||
hexpand: true, halign: Gtk.Align.START }));
|
use_markup: true,
|
||||||
|
margin_bottom: 6,
|
||||||
|
hexpand: true,
|
||||||
|
halign: Gtk.Align.START,
|
||||||
|
}));
|
||||||
|
|
||||||
let scrolled = new Gtk.ScrolledWindow({ shadow_type: Gtk.ShadowType.IN });
|
let scrolled = new Gtk.ScrolledWindow({ shadow_type: Gtk.ShadowType.IN });
|
||||||
scrolled.set_policy(Gtk.PolicyType.NEVER, Gtk.PolicyType.AUTOMATIC);
|
scrolled.set_policy(Gtk.PolicyType.NEVER, Gtk.PolicyType.AUTOMATIC);
|
||||||
this.add(scrolled);
|
this.add(scrolled);
|
||||||
|
|
||||||
this._store = new WorkspaceNameModel();
|
this._store = new WorkspaceNameModel();
|
||||||
this._treeView = new Gtk.TreeView({ model: this._store,
|
this._treeView = new Gtk.TreeView({
|
||||||
headers_visible: false,
|
model: this._store,
|
||||||
reorderable: true,
|
headers_visible: false,
|
||||||
hexpand: true,
|
reorderable: true,
|
||||||
vexpand: true
|
hexpand: true,
|
||||||
});
|
vexpand: true,
|
||||||
|
});
|
||||||
|
|
||||||
let column = new Gtk.TreeViewColumn({ title: _("Name") });
|
let column = new Gtk.TreeViewColumn({ title: _('Name') });
|
||||||
let renderer = new Gtk.CellRendererText({ editable: true });
|
let renderer = new Gtk.CellRendererText({ editable: true });
|
||||||
renderer.connect('edited', this._cellEdited.bind(this));
|
renderer.connect('edited', this._cellEdited.bind(this));
|
||||||
column.pack_start(renderer, true);
|
column.pack_start(renderer, true);
|
||||||
@@ -176,23 +175,23 @@ class WorkspaceSettingsWidget extends Gtk.Grid {
|
|||||||
this.add(toolbar);
|
this.add(toolbar);
|
||||||
}
|
}
|
||||||
|
|
||||||
_cellEdited(renderer, path, new_text) {
|
_cellEdited(renderer, path, newText) {
|
||||||
let [ok, iter] = this._store.get_iter_from_string(path);
|
let [ok, iter] = this._store.get_iter_from_string(path);
|
||||||
|
|
||||||
if (ok)
|
if (ok)
|
||||||
this._store.set(iter, [this._store.Columns.LABEL], [new_text]);
|
this._store.set(iter, [this._store.Columns.LABEL], [newText]);
|
||||||
}
|
}
|
||||||
|
|
||||||
_newClicked() {
|
_newClicked() {
|
||||||
let iter = this._store.append();
|
let iter = this._store.append();
|
||||||
let index = this._store.get_path(iter).get_indices()[0];
|
let index = this._store.get_path(iter).get_indices()[0];
|
||||||
|
|
||||||
let label = _("Workspace %d").format(index + 1);
|
let label = _('Workspace %d').format(index + 1);
|
||||||
this._store.set(iter, [this._store.Columns.LABEL], [label]);
|
this._store.set(iter, [this._store.Columns.LABEL], [label]);
|
||||||
}
|
}
|
||||||
|
|
||||||
_delClicked() {
|
_delClicked() {
|
||||||
let [any, model, iter] = this._treeView.get_selection().get_selected();
|
let [any, model_, iter] = this._treeView.get_selection().get_selected();
|
||||||
|
|
||||||
if (any)
|
if (any)
|
||||||
this._store.remove(iter);
|
this._store.remove(iter);
|
||||||
@@ -200,7 +199,7 @@ class WorkspaceSettingsWidget extends Gtk.Grid {
|
|||||||
});
|
});
|
||||||
|
|
||||||
function init() {
|
function init() {
|
||||||
Convenience.initTranslations();
|
ExtensionUtils.initTranslations();
|
||||||
}
|
}
|
||||||
|
|
||||||
function buildPrefsWidget() {
|
function buildPrefsWidget() {
|
||||||
|
|||||||
@@ -1,5 +1,40 @@
|
|||||||
.panel-workspace-indicator {
|
.panel-workspace-indicator {
|
||||||
padding: 0 8px;
|
padding: 0 8px;
|
||||||
background-color: rgba(200, 200, 200, .5);
|
}
|
||||||
|
|
||||||
|
.panel-workspace-indicator-box {
|
||||||
|
padding: 2px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.panel-workspace-indicator-box .workspace {
|
||||||
|
width: 40px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.panel-workspace-indicator,
|
||||||
|
.panel-workspace-indicator-box .workspace {
|
||||||
border: 1px solid #cccccc;
|
border: 1px solid #cccccc;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.panel-workspace-indicator,
|
||||||
|
.panel-workspace-indicator-box .workspace.active {
|
||||||
|
background-color: rgba(200, 200, 200, .5);
|
||||||
|
}
|
||||||
|
|
||||||
|
.panel-workspace-indicator-box .workspace {
|
||||||
|
background-color: rgba(200, 200, 200, .3);
|
||||||
|
border-left-width: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.panel-workspace-indicator-box .workspace:first-child {
|
||||||
|
border-left-width: 1px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.workspace-indicator-window-preview {
|
||||||
|
background-color: #252525;
|
||||||
|
border: 1px solid #ccc;
|
||||||
|
}
|
||||||
|
|
||||||
|
.workspace-indicator-window-preview.active {
|
||||||
|
background-color: #353535;
|
||||||
|
border: 2px solid #ccc;
|
||||||
|
}
|
||||||
|
|||||||
@@ -1,93 +0,0 @@
|
|||||||
/* -*- 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;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* initTranslations:
|
|
||||||
* @domain: (optional): the gettext domain to use
|
|
||||||
*
|
|
||||||
* Initialize Gettext to load translations from extensionsdir/locale.
|
|
||||||
* If @domain is not provided, it will be taken from metadata['gettext-domain']
|
|
||||||
*/
|
|
||||||
function initTranslations(domain) {
|
|
||||||
let extension = ExtensionUtils.getCurrentExtension();
|
|
||||||
|
|
||||||
domain = domain || extension.metadata['gettext-domain'];
|
|
||||||
|
|
||||||
// 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);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* getSettings:
|
|
||||||
* @schema: (optional): the GSettings schema id
|
|
||||||
*
|
|
||||||
* Builds and return a GSettings schema for @schema, using schema files
|
|
||||||
* in extensionsdir/schemas. If @schema is not provided, it is taken from
|
|
||||||
* metadata['settings-schema'].
|
|
||||||
*/
|
|
||||||
function getSettings(schema) {
|
|
||||||
let extension = ExtensionUtils.getCurrentExtension();
|
|
||||||
|
|
||||||
schema = schema || extension.metadata['settings-schema'];
|
|
||||||
|
|
||||||
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 });
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -0,0 +1,228 @@
|
|||||||
|
---
|
||||||
|
env:
|
||||||
|
es6: true
|
||||||
|
extends: 'eslint:recommended'
|
||||||
|
rules:
|
||||||
|
array-bracket-newline:
|
||||||
|
- error
|
||||||
|
- consistent
|
||||||
|
array-bracket-spacing:
|
||||||
|
- error
|
||||||
|
- never
|
||||||
|
array-callback-return: error
|
||||||
|
arrow-parens:
|
||||||
|
- error
|
||||||
|
- as-needed
|
||||||
|
arrow-spacing: error
|
||||||
|
block-scoped-var: error
|
||||||
|
block-spacing: error
|
||||||
|
brace-style: error
|
||||||
|
# Waiting for this to have matured a bit in eslint
|
||||||
|
# camelcase:
|
||||||
|
# - error
|
||||||
|
# - properties: never
|
||||||
|
# allow: [^vfunc_, ^on_, _instance_init]
|
||||||
|
comma-dangle:
|
||||||
|
- error
|
||||||
|
- always-multiline
|
||||||
|
comma-spacing:
|
||||||
|
- error
|
||||||
|
- before: false
|
||||||
|
after: true
|
||||||
|
comma-style:
|
||||||
|
- error
|
||||||
|
- last
|
||||||
|
computed-property-spacing: error
|
||||||
|
curly:
|
||||||
|
- error
|
||||||
|
- multi-or-nest
|
||||||
|
- consistent
|
||||||
|
dot-location:
|
||||||
|
- error
|
||||||
|
- property
|
||||||
|
eol-last: error
|
||||||
|
eqeqeq: error
|
||||||
|
func-call-spacing: error
|
||||||
|
func-name-matching: error
|
||||||
|
func-style:
|
||||||
|
- error
|
||||||
|
- declaration
|
||||||
|
- allowArrowFunctions: true
|
||||||
|
indent:
|
||||||
|
- error
|
||||||
|
- 4
|
||||||
|
- ignoredNodes:
|
||||||
|
# Allow not indenting the body of GObject.registerClass, since in the
|
||||||
|
# future it's intended to be a decorator
|
||||||
|
- 'CallExpression[callee.object.name=GObject][callee.property.name=registerClass] > ClassExpression:first-child'
|
||||||
|
# Allow dedenting chained member expressions
|
||||||
|
MemberExpression: 'off'
|
||||||
|
key-spacing:
|
||||||
|
- error
|
||||||
|
- beforeColon: false
|
||||||
|
afterColon: true
|
||||||
|
keyword-spacing:
|
||||||
|
- error
|
||||||
|
- before: true
|
||||||
|
after: true
|
||||||
|
linebreak-style:
|
||||||
|
- error
|
||||||
|
- unix
|
||||||
|
lines-between-class-members: error
|
||||||
|
max-nested-callbacks: error
|
||||||
|
max-statements-per-line: error
|
||||||
|
new-parens: error
|
||||||
|
no-array-constructor: error
|
||||||
|
no-await-in-loop: error
|
||||||
|
no-caller: error
|
||||||
|
no-constant-condition:
|
||||||
|
- error
|
||||||
|
- checkLoops: false
|
||||||
|
no-div-regex: error
|
||||||
|
no-empty:
|
||||||
|
- error
|
||||||
|
- allowEmptyCatch: true
|
||||||
|
no-extra-bind: error
|
||||||
|
no-extra-parens:
|
||||||
|
- error
|
||||||
|
- all
|
||||||
|
- conditionalAssign: false
|
||||||
|
returnAssign: false
|
||||||
|
no-implicit-coercion:
|
||||||
|
- error
|
||||||
|
- allow:
|
||||||
|
- '!!'
|
||||||
|
no-invalid-this: error
|
||||||
|
no-iterator: error
|
||||||
|
no-label-var: error
|
||||||
|
no-lonely-if: error
|
||||||
|
no-loop-func: error
|
||||||
|
no-nested-ternary: error
|
||||||
|
no-new-object: error
|
||||||
|
no-new-wrappers: error
|
||||||
|
no-octal-escape: error
|
||||||
|
no-proto: error
|
||||||
|
no-prototype-builtins: 'off'
|
||||||
|
no-restricted-properties:
|
||||||
|
- error
|
||||||
|
- object: Lang
|
||||||
|
property: bind
|
||||||
|
message: Use arrow notation or Function.prototype.bind()
|
||||||
|
- object: Lang
|
||||||
|
property: Class
|
||||||
|
message: Use ES6 classes
|
||||||
|
- object: imports
|
||||||
|
property: mainloop
|
||||||
|
message: Use GLib main loops and timeouts
|
||||||
|
no-restricted-syntax:
|
||||||
|
- error
|
||||||
|
- selector: >-
|
||||||
|
MethodDefinition[key.name="_init"] >
|
||||||
|
FunctionExpression[params.length=1] >
|
||||||
|
BlockStatement[body.length=1]
|
||||||
|
CallExpression[arguments.length=1][callee.object.type="Super"][callee.property.name="_init"] >
|
||||||
|
Identifier:first-child
|
||||||
|
message: _init() that only calls super._init() is unnecessary
|
||||||
|
- selector: >-
|
||||||
|
MethodDefinition[key.name="_init"] >
|
||||||
|
FunctionExpression[params.length=0] >
|
||||||
|
BlockStatement[body.length=1]
|
||||||
|
CallExpression[arguments.length=0][callee.object.type="Super"][callee.property.name="_init"]
|
||||||
|
message: _init() that only calls super._init() is unnecessary
|
||||||
|
no-return-assign: error
|
||||||
|
no-return-await: error
|
||||||
|
no-self-compare: error
|
||||||
|
no-shadow: error
|
||||||
|
no-shadow-restricted-names: error
|
||||||
|
no-spaced-func: error
|
||||||
|
no-tabs: error
|
||||||
|
no-template-curly-in-string: error
|
||||||
|
no-throw-literal: error
|
||||||
|
no-trailing-spaces: error
|
||||||
|
no-undef-init: error
|
||||||
|
no-unneeded-ternary: error
|
||||||
|
no-unused-expressions: error
|
||||||
|
no-unused-vars:
|
||||||
|
- error
|
||||||
|
# Vars use a suffix _ instead of a prefix because of file-scope private vars
|
||||||
|
- varsIgnorePattern: (^unused|_$)
|
||||||
|
argsIgnorePattern: ^(unused|_)
|
||||||
|
no-useless-call: error
|
||||||
|
no-useless-computed-key: error
|
||||||
|
no-useless-concat: error
|
||||||
|
no-useless-constructor: error
|
||||||
|
no-useless-rename: error
|
||||||
|
no-useless-return: error
|
||||||
|
no-whitespace-before-property: error
|
||||||
|
no-with: error
|
||||||
|
nonblock-statement-body-position:
|
||||||
|
- error
|
||||||
|
- below
|
||||||
|
object-curly-newline:
|
||||||
|
- error
|
||||||
|
- consistent: true
|
||||||
|
object-curly-spacing: error
|
||||||
|
object-shorthand: error
|
||||||
|
operator-assignment: error
|
||||||
|
operator-linebreak: error
|
||||||
|
# These may be a bit controversial, we can try them out and enable them later
|
||||||
|
# prefer-const: error
|
||||||
|
# prefer-destructuring: error
|
||||||
|
prefer-numeric-literals: error
|
||||||
|
prefer-promise-reject-errors: error
|
||||||
|
prefer-rest-params: error
|
||||||
|
prefer-spread: error
|
||||||
|
prefer-template: error
|
||||||
|
quotes:
|
||||||
|
- error
|
||||||
|
- single
|
||||||
|
- avoidEscape: true
|
||||||
|
require-await: error
|
||||||
|
rest-spread-spacing: error
|
||||||
|
semi:
|
||||||
|
- error
|
||||||
|
- always
|
||||||
|
semi-spacing:
|
||||||
|
- error
|
||||||
|
- before: false
|
||||||
|
after: true
|
||||||
|
semi-style: error
|
||||||
|
space-before-blocks: error
|
||||||
|
space-before-function-paren:
|
||||||
|
- error
|
||||||
|
- named: never
|
||||||
|
# for `function ()` and `async () =>`, preserve space around keywords
|
||||||
|
anonymous: always
|
||||||
|
asyncArrow: always
|
||||||
|
space-in-parens: error
|
||||||
|
space-infix-ops:
|
||||||
|
- error
|
||||||
|
- int32Hint: false
|
||||||
|
space-unary-ops: error
|
||||||
|
spaced-comment: error
|
||||||
|
switch-colon-spacing: error
|
||||||
|
symbol-description: error
|
||||||
|
template-curly-spacing: error
|
||||||
|
template-tag-spacing: error
|
||||||
|
unicode-bom: error
|
||||||
|
valid-jsdoc:
|
||||||
|
- error
|
||||||
|
- requireReturn: false
|
||||||
|
wrap-iife:
|
||||||
|
- error
|
||||||
|
- inside
|
||||||
|
yield-star-spacing: error
|
||||||
|
yoda: error
|
||||||
|
globals:
|
||||||
|
ARGV: readonly
|
||||||
|
Debugger: readonly
|
||||||
|
GIRepositoryGType: readonly
|
||||||
|
imports: readonly
|
||||||
|
Intl: readonly
|
||||||
|
log: readonly
|
||||||
|
logError: readonly
|
||||||
|
print: readonly
|
||||||
|
printerr: readonly
|
||||||
|
window: readonly
|
||||||
|
parserOptions:
|
||||||
|
ecmaVersion: 2017
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
rules:
|
||||||
|
camelcase:
|
||||||
|
- error
|
||||||
|
- properties: never
|
||||||
|
allow: [^vfunc_, ^on_]
|
||||||
|
object-curly-spacing:
|
||||||
|
- error
|
||||||
|
- always
|
||||||
|
prefer-arrow-callback: error
|
||||||
|
globals:
|
||||||
|
global: readonly
|
||||||
+3
-6
@@ -1,5 +1,5 @@
|
|||||||
project('gnome-shell-extensions',
|
project('gnome-shell-extensions',
|
||||||
version: '3.29.91',
|
version: '3.36.2',
|
||||||
meson_version: '>= 0.44.0',
|
meson_version: '>= 0.44.0',
|
||||||
license: 'GPL2+'
|
license: 'GPL2+'
|
||||||
)
|
)
|
||||||
@@ -20,9 +20,7 @@ schemadir = join_paths(datadir, 'glib-2.0', 'schemas')
|
|||||||
sessiondir = join_paths(datadir, 'gnome-session', 'sessions')
|
sessiondir = join_paths(datadir, 'gnome-session', 'sessions')
|
||||||
xsessiondir = join_paths(datadir, 'xsessions')
|
xsessiondir = join_paths(datadir, 'xsessions')
|
||||||
|
|
||||||
extensionlib = files('lib/convenience.js')
|
js68 = find_program('js68', required: false)
|
||||||
|
|
||||||
js52 = find_program('js52', required: false)
|
|
||||||
|
|
||||||
ver_arr = meson.project_version().split('.')
|
ver_arr = meson.project_version().split('.')
|
||||||
if ver_arr[1].to_int().is_even()
|
if ver_arr[1].to_int().is_even()
|
||||||
@@ -35,6 +33,7 @@ uuid_suffix = '@gnome-shell-extensions.gcampax.github.com'
|
|||||||
|
|
||||||
classic_extensions = [
|
classic_extensions = [
|
||||||
'apps-menu',
|
'apps-menu',
|
||||||
|
'horizontal-workspaces',
|
||||||
'places-menu',
|
'places-menu',
|
||||||
'launch-new-instance',
|
'launch-new-instance',
|
||||||
'window-list'
|
'window-list'
|
||||||
@@ -42,7 +41,6 @@ classic_extensions = [
|
|||||||
|
|
||||||
default_extensions = classic_extensions
|
default_extensions = classic_extensions
|
||||||
default_extensions += [
|
default_extensions += [
|
||||||
'alternate-tab',
|
|
||||||
'drive-menu',
|
'drive-menu',
|
||||||
'screenshot-window-sizer',
|
'screenshot-window-sizer',
|
||||||
'windowsNavigator',
|
'windowsNavigator',
|
||||||
@@ -52,7 +50,6 @@ default_extensions += [
|
|||||||
all_extensions = default_extensions
|
all_extensions = default_extensions
|
||||||
all_extensions += [
|
all_extensions += [
|
||||||
'auto-move-windows',
|
'auto-move-windows',
|
||||||
'example',
|
|
||||||
'native-window-placement',
|
'native-window-placement',
|
||||||
'user-theme'
|
'user-theme'
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -38,6 +38,7 @@ kn
|
|||||||
ko
|
ko
|
||||||
lt
|
lt
|
||||||
lv
|
lv
|
||||||
|
mjw
|
||||||
ml
|
ml
|
||||||
mr
|
mr
|
||||||
ms
|
ms
|
||||||
|
|||||||
+1
-4
@@ -1,14 +1,10 @@
|
|||||||
data/gnome-classic.desktop.in
|
data/gnome-classic.desktop.in
|
||||||
data/gnome-classic.session.desktop.in
|
data/gnome-classic.session.desktop.in
|
||||||
extensions/alternate-tab/prefs.js
|
|
||||||
extensions/apps-menu/extension.js
|
extensions/apps-menu/extension.js
|
||||||
extensions/auto-move-windows/extension.js
|
extensions/auto-move-windows/extension.js
|
||||||
extensions/auto-move-windows/org.gnome.shell.extensions.auto-move-windows.gschema.xml
|
extensions/auto-move-windows/org.gnome.shell.extensions.auto-move-windows.gschema.xml
|
||||||
extensions/auto-move-windows/prefs.js
|
extensions/auto-move-windows/prefs.js
|
||||||
extensions/drive-menu/extension.js
|
extensions/drive-menu/extension.js
|
||||||
extensions/example/extension.js
|
|
||||||
extensions/example/org.gnome.shell.extensions.example.gschema.xml
|
|
||||||
extensions/example/prefs.js
|
|
||||||
extensions/native-window-placement/extension.js
|
extensions/native-window-placement/extension.js
|
||||||
extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml
|
extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml
|
||||||
extensions/places-menu/extension.js
|
extensions/places-menu/extension.js
|
||||||
@@ -19,6 +15,7 @@ extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml
|
|||||||
extensions/window-list/extension.js
|
extensions/window-list/extension.js
|
||||||
extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml
|
extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml
|
||||||
extensions/window-list/prefs.js
|
extensions/window-list/prefs.js
|
||||||
|
extensions/window-list/workspaceIndicator.js
|
||||||
extensions/windowsNavigator/extension.js
|
extensions/windowsNavigator/extension.js
|
||||||
extensions/workspace-indicator/extension.js
|
extensions/workspace-indicator/extension.js
|
||||||
extensions/workspace-indicator/prefs.js
|
extensions/workspace-indicator/prefs.js
|
||||||
|
|||||||
@@ -1,311 +1,370 @@
|
|||||||
# Afrikaans translation for gnome-shell-extensions.
|
# Afrikaans translation for gnome-shell-extensions.
|
||||||
# This file is distributed under the same license as the gnome-shell-extensions package.
|
# This file is distributed under the same license as the gnome-shell-extensions package.
|
||||||
# F Wolff <friedel@translate.org.za>, 2013.
|
# F Wolff <friedel@translate.org.za>, 2013.
|
||||||
|
# Pieter Schoeman <pieter@sonbesie.co.za>, 2017.
|
||||||
|
#
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: gnome-shell-extensions master\n"
|
"Project-Id-Version: gnome-shell-extensions master\n"
|
||||||
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
|
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell-extensions/"
|
||||||
"shell&keywords=I18N+L10N&component=extensions\n"
|
"issues\n"
|
||||||
"POT-Creation-Date: 2013-09-26 20:32+0000\n"
|
"POT-Creation-Date: 2018-09-06 10:29+0000\n"
|
||||||
"PO-Revision-Date: 2013-09-27 16:17+0200\n"
|
"PO-Revision-Date: 2018-02-06 17:47+0200\n"
|
||||||
"Last-Translator: F Wolff <friedel@translate.org.za>\n"
|
"Last-Translator: Pieter Schalk Schoeman <pieter@sonbesie.co.za>\n"
|
||||||
"Language-Team: translate-discuss-af@lists.sourceforge.net\n"
|
"Language-Team: Afrikaans <pieter@sonbesie.co.za>\n"
|
||||||
"Language: af\n"
|
"Language: af\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||||
"X-Generator: Virtaal 0.7.1\n"
|
"X-Generator: Poedit 2.0.3\n"
|
||||||
"X-Project-Style: gnome\n"
|
"X-Project-Style: gnome\n"
|
||||||
|
|
||||||
#: ../data/gnome-classic.desktop.in.h:1
|
#: data/gnome-classic.desktop.in:3 data/gnome-classic.session.desktop.in:3
|
||||||
#: ../data/gnome-classic.session.desktop.in.in.h:1
|
|
||||||
msgid "GNOME Classic"
|
msgid "GNOME Classic"
|
||||||
msgstr "GNOME Klassiek"
|
msgstr "GNOME Klassiek"
|
||||||
|
|
||||||
#: ../data/gnome-classic.desktop.in.h:2
|
#: data/gnome-classic.desktop.in:4
|
||||||
msgid "This session logs you into GNOME Classic"
|
msgid "This session logs you into GNOME Classic"
|
||||||
msgstr "Hierdie sessie laat mens aanmeld by GNOME Klassiek"
|
msgstr "Hierdie sessie laat mens aanmeld by GNOME Klassiek"
|
||||||
|
|
||||||
#: ../data/gnome-shell-classic.desktop.in.in.h:1
|
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:7
|
||||||
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"
|
msgid "Attach modal dialog to the parent window"
|
||||||
msgstr ""
|
msgstr "Heg modale dialoogvenster vas aan die ouervenster"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.extensions.classic-overrides.gschema.xml.in.h:2
|
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:8
|
||||||
|
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:25
|
||||||
|
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:33
|
||||||
|
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:41
|
||||||
msgid ""
|
msgid ""
|
||||||
"This key overrides the key in org.gnome.mutter when running GNOME Shell."
|
"This key overrides the key in org.gnome.mutter when running GNOME Shell."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"Hierdie sleutel oorskryf die sleutel in org.gnome.mutter wanneer GNOME Shell "
|
||||||
|
"uitgevoer word."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.extensions.classic-overrides.gschema.xml.in.h:3
|
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:16
|
||||||
|
msgid "Arrangement of buttons on the titlebar"
|
||||||
|
msgstr "Knoppie rangskikking op die titelbalk"
|
||||||
|
|
||||||
|
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:17
|
||||||
|
msgid ""
|
||||||
|
"This key overrides the key in org.gnome.desktop.wm.preferences when running "
|
||||||
|
"GNOME Shell."
|
||||||
|
msgstr ""
|
||||||
|
"Die sleutel oorheers die sleutel in org.gnome.desktop.wm.preferences wanneer "
|
||||||
|
"GNOME uitgevoer word."
|
||||||
|
|
||||||
|
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:24
|
||||||
msgid "Enable edge tiling when dropping windows on screen edges"
|
msgid "Enable edge tiling when dropping windows on screen edges"
|
||||||
msgstr ""
|
msgstr "Aktiveer rand-tilering wanneer vensters op skermrand laat val word"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.extensions.classic-overrides.gschema.xml.in.h:4
|
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:32
|
||||||
msgid "Workspaces only on primary monitor"
|
msgid "Workspaces only on primary monitor"
|
||||||
msgstr "Werkruimtes slegs op primêre monitor"
|
msgstr "Werkspasies slegs op primêre monitor"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.extensions.classic-overrides.gschema.xml.in.h:5
|
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:40
|
||||||
msgid "Delay focus changes in mouse mode until the pointer stops moving"
|
msgid "Delay focus changes in mouse mode until the pointer stops moving"
|
||||||
msgstr ""
|
msgstr "Vertraag fokusverandering in muismodus totdat die wyser ophou beweeg"
|
||||||
|
|
||||||
#: ../extensions/alternate-tab/prefs.js:20
|
#: extensions/alternate-tab/prefs.js:19
|
||||||
msgid "Thumbnail only"
|
msgid "Thumbnail only"
|
||||||
msgstr ""
|
msgstr "Slegs duimnael"
|
||||||
|
|
||||||
#: ../extensions/alternate-tab/prefs.js:21
|
#: extensions/alternate-tab/prefs.js:20
|
||||||
msgid "Application icon only"
|
msgid "Application icon only"
|
||||||
msgstr "Slegs toepassingsikoon"
|
msgstr "Slegs toepassingsikoon"
|
||||||
|
|
||||||
#: ../extensions/alternate-tab/prefs.js:22
|
#: extensions/alternate-tab/prefs.js:21
|
||||||
msgid "Thumbnail and application icon"
|
msgid "Thumbnail and application icon"
|
||||||
msgstr "Duimnael en toepassingsikoon"
|
msgstr "Duimnael en toepassingsikoon"
|
||||||
|
|
||||||
#: ../extensions/alternate-tab/prefs.js:37
|
#: extensions/alternate-tab/prefs.js:34
|
||||||
msgid "Present windows as"
|
msgid "Present windows as"
|
||||||
msgstr "Wys vensters as"
|
msgstr "Wys vensters as"
|
||||||
|
|
||||||
#: ../extensions/alternate-tab/prefs.js:62
|
#: extensions/alternate-tab/prefs.js:65
|
||||||
msgid "Show only windows in the current workspace"
|
msgid "Show only windows in the current workspace"
|
||||||
msgstr "Wys slegs vensters van die huidige werkruimte"
|
msgstr "Wys slegs vensters van die huidige werkruimte"
|
||||||
|
|
||||||
#: ../extensions/apps-menu/extension.js:39
|
#: extensions/apps-menu/extension.js:37
|
||||||
msgid "Activities Overview"
|
msgid "Activities Overview"
|
||||||
msgstr "Aktiwiteite-oorsig"
|
msgstr "Aktiwiteite-oorsig"
|
||||||
|
|
||||||
#: ../extensions/apps-menu/extension.js:113
|
#: extensions/apps-menu/extension.js:130
|
||||||
msgid "Favorites"
|
msgid "Favorites"
|
||||||
msgstr "Gunstelinge"
|
msgstr "Gunstelinge"
|
||||||
|
|
||||||
#: ../extensions/apps-menu/extension.js:282
|
#: extensions/apps-menu/extension.js:417
|
||||||
msgid "Applications"
|
msgid "Applications"
|
||||||
msgstr "Toepassings"
|
msgstr "Toepassings"
|
||||||
|
|
||||||
#: ../extensions/auto-move-windows/org.gnome.shell.extensions.auto-move-windows.gschema.xml.in.h:1
|
#: extensions/auto-move-windows/org.gnome.shell.extensions.auto-move-windows.gschema.xml:6
|
||||||
msgid "Application and workspace list"
|
msgid "Application and workspace list"
|
||||||
msgstr "Toepassing- en werkruimtelys"
|
msgstr "Toepassing- en werkspasielys"
|
||||||
|
|
||||||
#: ../extensions/auto-move-windows/org.gnome.shell.extensions.auto-move-windows.gschema.xml.in.h:2
|
#: extensions/auto-move-windows/org.gnome.shell.extensions.auto-move-windows.gschema.xml:7
|
||||||
msgid ""
|
msgid ""
|
||||||
"A list of strings, each containing an application id (desktop file name), "
|
"A list of strings, each containing an application id (desktop file name), "
|
||||||
"followed by a colon and the workspace number"
|
"followed by a colon and the workspace number"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"'n Lys stringe wat elkeen 'n toepassing id (werkskerm en lêernaam) sowel as "
|
||||||
|
"komma gevolg deur 'n werkspasie nommer bevat"
|
||||||
|
|
||||||
#: ../extensions/auto-move-windows/prefs.js:55
|
#: extensions/auto-move-windows/prefs.js:53
|
||||||
msgid "Application"
|
msgid "Application"
|
||||||
msgstr "Toepassing"
|
msgstr "Toepassing"
|
||||||
|
|
||||||
#: ../extensions/auto-move-windows/prefs.js:64
|
#: extensions/auto-move-windows/prefs.js:62
|
||||||
#: ../extensions/auto-move-windows/prefs.js:106
|
#: extensions/auto-move-windows/prefs.js:117
|
||||||
msgid "Workspace"
|
msgid "Workspace"
|
||||||
msgstr "Werkruimte"
|
msgstr "Werkspasie"
|
||||||
|
|
||||||
#: ../extensions/auto-move-windows/prefs.js:80
|
#: extensions/auto-move-windows/prefs.js:78
|
||||||
msgid "Add rule"
|
msgid "Add Rule"
|
||||||
msgstr "Voeg reël by"
|
msgstr "Voeg reël by"
|
||||||
|
|
||||||
#: ../extensions/auto-move-windows/prefs.js:94
|
#: extensions/auto-move-windows/prefs.js:98
|
||||||
msgid "Create new matching rule"
|
msgid "Create new matching rule"
|
||||||
msgstr ""
|
msgstr "Skep 'n nuwe ooreenstemmende reël"
|
||||||
|
|
||||||
#: ../extensions/auto-move-windows/prefs.js:98
|
#: extensions/auto-move-windows/prefs.js:103
|
||||||
msgid "Add"
|
msgid "Add"
|
||||||
msgstr "Voeg by"
|
msgstr "Voeg by"
|
||||||
|
|
||||||
#: ../extensions/drive-menu/extension.js:73
|
#. TRANSLATORS: %s is the filesystem name
|
||||||
#, c-format
|
#: extensions/drive-menu/extension.js:103
|
||||||
msgid "Ejecting drive '%s' failed:"
|
#: extensions/places-menu/placeDisplay.js:219
|
||||||
msgstr "Kon nie skyf '%s' uitskiet nie:"
|
#, javascript-format
|
||||||
|
msgid "Ejecting drive “%s” failed:"
|
||||||
|
msgstr "Kon nie skyf \"%s\" uitskiet nie:"
|
||||||
|
|
||||||
#: ../extensions/drive-menu/extension.js:90
|
#: extensions/drive-menu/extension.js:118
|
||||||
msgid "Removable devices"
|
msgid "Removable devices"
|
||||||
msgstr "Verwyderbare toestelle"
|
msgstr "Verwyderbare toestelle"
|
||||||
|
|
||||||
#: ../extensions/drive-menu/extension.js:117
|
#: extensions/drive-menu/extension.js:143
|
||||||
msgid "Open File"
|
msgid "Open Files"
|
||||||
msgstr "Open lêer"
|
msgstr "Open lêer"
|
||||||
|
|
||||||
#: ../extensions/example/extension.js:17
|
#: extensions/example/extension.js:17
|
||||||
msgid "Hello, world!"
|
msgid "Hello, world!"
|
||||||
msgstr "Hallo, wêreld!"
|
msgstr "Hallo, wêreld!"
|
||||||
|
|
||||||
#: ../extensions/example/org.gnome.shell.extensions.example.gschema.xml.in.h:1
|
#: extensions/example/org.gnome.shell.extensions.example.gschema.xml:5
|
||||||
msgid "Alternative greeting text."
|
msgid "Alternative greeting text."
|
||||||
msgstr ""
|
msgstr "Alternatiewe groetboodskap."
|
||||||
|
|
||||||
#: ../extensions/example/org.gnome.shell.extensions.example.gschema.xml.in.h:2
|
#: extensions/example/org.gnome.shell.extensions.example.gschema.xml:6
|
||||||
msgid ""
|
msgid ""
|
||||||
"If not empty, it contains the text that will be shown when clicking on the "
|
"If not empty, it contains the text that will be shown when clicking on the "
|
||||||
"panel."
|
"panel."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"Indien dit nie leeg is nie bevat dit die teks wat op die paneel gewys word "
|
||||||
|
"as daarop geklik word."
|
||||||
|
|
||||||
|
#: extensions/example/prefs.js:27
|
||||||
|
msgid "Message"
|
||||||
|
msgstr "Boodskap"
|
||||||
|
|
||||||
#. TRANSLATORS: Example is the name of the extension, should not be
|
#. TRANSLATORS: Example is the name of the extension, should not be
|
||||||
#. translated
|
#. translated
|
||||||
#: ../extensions/example/prefs.js:30
|
#: extensions/example/prefs.js:40
|
||||||
msgid ""
|
msgid ""
|
||||||
"Example aims to show how to build well behaved extensions for the Shell and "
|
"Example aims to show how to build well behaved extensions for the Shell and "
|
||||||
"as such it has little functionality on its own.\n"
|
"as such it has little functionality on its own.\n"
|
||||||
"Nevertheless it's possible to customize the greeting message."
|
"Nevertheless it’s possible to customize the greeting message."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"Example het ten doel om te wys hoe om goeie uitbreidings vir die Shell te "
|
||||||
|
"skep en het dus min funksionaliteit.\n"
|
||||||
|
"Tog is dit moontlik om die groeteboodskap aan te pas."
|
||||||
|
|
||||||
#: ../extensions/example/prefs.js:36
|
#: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:5
|
||||||
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"
|
msgid "Use more screen for windows"
|
||||||
msgstr ""
|
msgstr "Gebruik meer skermspasie vir vensters"
|
||||||
|
|
||||||
#: ../extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml.in.h:2
|
#: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:6
|
||||||
msgid ""
|
msgid ""
|
||||||
"Try to use more screen for placing window thumbnails by adapting to screen "
|
"Try to use more screen for placing window thumbnails by adapting to screen "
|
||||||
"aspect ratio, and consolidating them further to reduce the bounding box. "
|
"aspect ratio, and consolidating them further to reduce the bounding box. "
|
||||||
"This setting applies only with the natural placement strategy."
|
"This setting applies only with the natural placement strategy."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"Probeer om meer skermspasie te gebruik vir die plasing van vensterduimnaels "
|
||||||
|
"deur aan te pas by die skerm-aspekverhouding. Hierdie instelling is slegs "
|
||||||
|
"van toepassing op die normale plasingstrategie."
|
||||||
|
|
||||||
#: ../extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml.in.h:3
|
#: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:11
|
||||||
msgid "Place window captions on top"
|
msgid "Place window captions on top"
|
||||||
msgstr ""
|
msgstr "Plaas venster opskrifte bo"
|
||||||
|
|
||||||
#: ../extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml.in.h:4
|
#: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:12
|
||||||
msgid ""
|
msgid ""
|
||||||
"If true, place window captions on top the respective thumbnail, overriding "
|
"If true, place window captions on top the respective thumbnail, overriding "
|
||||||
"shell default of placing it at the bottom. Changing this setting requires "
|
"shell default of placing it at the bottom. Changing this setting requires "
|
||||||
"restarting the shell to have any effect."
|
"restarting the shell to have any effect."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"As waar, plaas venster opskrifte bo hul onderskeie duimnaels, anders as die "
|
||||||
|
"shell standaard waar hulle onder sou verskyn. As u hierdie instelling "
|
||||||
|
"verander, moet die shell weer begin word om enige effek te toon."
|
||||||
|
|
||||||
#: ../extensions/places-menu/extension.js:78
|
#: extensions/places-menu/extension.js:79
|
||||||
#: ../extensions/places-menu/extension.js:81
|
#: extensions/places-menu/extension.js:82
|
||||||
msgid "Places"
|
msgid "Places"
|
||||||
msgstr "Plekke"
|
msgstr "Plekke"
|
||||||
|
|
||||||
#: ../extensions/places-menu/placeDisplay.js:56
|
#: extensions/places-menu/placeDisplay.js:66
|
||||||
#, c-format
|
#, javascript-format
|
||||||
msgid "Failed to launch \"%s\""
|
msgid "Failed to mount volume for “%s”"
|
||||||
|
msgstr "Kon nie die \"%s\" volume heg nie"
|
||||||
|
|
||||||
|
#: extensions/places-menu/placeDisplay.js:79
|
||||||
|
#, javascript-format
|
||||||
|
msgid "Failed to launch “%s”"
|
||||||
msgstr "Kon nie \"%s\" lanseer nie"
|
msgstr "Kon nie \"%s\" lanseer nie"
|
||||||
|
|
||||||
#: ../extensions/places-menu/placeDisplay.js:98
|
#: extensions/places-menu/placeDisplay.js:135
|
||||||
#: ../extensions/places-menu/placeDisplay.js:121
|
#: extensions/places-menu/placeDisplay.js:158
|
||||||
msgid "Computer"
|
msgid "Computer"
|
||||||
msgstr "Rekenaar"
|
msgstr "Rekenaar"
|
||||||
|
|
||||||
#: ../extensions/places-menu/placeDisplay.js:199
|
#: extensions/places-menu/placeDisplay.js:336
|
||||||
msgid "Home"
|
msgid "Home"
|
||||||
msgstr "Tuis"
|
msgstr "Tuis"
|
||||||
|
|
||||||
#: ../extensions/places-menu/placeDisplay.js:286
|
#: extensions/places-menu/placeDisplay.js:378
|
||||||
msgid "Browse Network"
|
msgid "Browse Network"
|
||||||
msgstr "Blaai deur netwerk"
|
msgstr "Blaai deur netwerk"
|
||||||
|
|
||||||
#: ../extensions/systemMonitor/extension.js:214
|
#: extensions/screenshot-window-sizer/org.gnome.shell.extensions.screenshot-window-sizer.gschema.xml:7
|
||||||
msgid "CPU"
|
msgid "Cycle Screenshot Sizes"
|
||||||
msgstr "SVE"
|
msgstr "Rol deur skermkiekies"
|
||||||
|
|
||||||
#: ../extensions/systemMonitor/extension.js:267
|
#: extensions/screenshot-window-sizer/org.gnome.shell.extensions.screenshot-window-sizer.gschema.xml:11
|
||||||
msgid "Memory"
|
msgid "Cycle Screenshot Sizes Backward"
|
||||||
msgstr "Geheue"
|
msgstr "Rol agteruit deur skermkiekies"
|
||||||
|
|
||||||
#: ../extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml.in.h:1
|
#: extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml:5
|
||||||
msgid "Theme name"
|
msgid "Theme name"
|
||||||
msgstr "Temanaam"
|
msgstr "Temanaam"
|
||||||
|
|
||||||
#: ../extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml.in.h:2
|
#: extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml:6
|
||||||
msgid "The name of the theme, to be loaded from ~/.themes/name/gnome-shell"
|
msgid "The name of the theme, to be loaded from ~/.themes/name/gnome-shell"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"Die naam van die tema wat van ~/.themes/name/gnome-shell gelaai moet word"
|
||||||
|
|
||||||
#: ../extensions/window-list/extension.js:92
|
#: extensions/window-list/extension.js:106
|
||||||
msgid "Close"
|
msgid "Close"
|
||||||
msgstr "Sluit"
|
msgstr "Sluit"
|
||||||
|
|
||||||
#: ../extensions/window-list/extension.js:102
|
#: extensions/window-list/extension.js:125
|
||||||
msgid "Unminimize"
|
msgid "Unminimize"
|
||||||
msgstr ""
|
msgstr "Onminimeer"
|
||||||
|
|
||||||
#: ../extensions/window-list/extension.js:103
|
#: extensions/window-list/extension.js:126
|
||||||
msgid "Minimize"
|
msgid "Minimize"
|
||||||
msgstr "Minimeer"
|
msgstr "Minimeer"
|
||||||
|
|
||||||
#: ../extensions/window-list/extension.js:109
|
#: extensions/window-list/extension.js:132
|
||||||
msgid "Unmaximize"
|
msgid "Unmaximize"
|
||||||
msgstr ""
|
msgstr "Onmaksimeer"
|
||||||
|
|
||||||
#: ../extensions/window-list/extension.js:110
|
#: extensions/window-list/extension.js:133
|
||||||
msgid "Maximize"
|
msgid "Maximize"
|
||||||
msgstr "Maksimeer"
|
msgstr "Maksimeer"
|
||||||
|
|
||||||
#: ../extensions/window-list/extension.js:270
|
#: extensions/window-list/extension.js:408
|
||||||
msgid "Minimize all"
|
msgid "Minimize all"
|
||||||
msgstr "Minimeer almal"
|
msgstr "Minimeer almal"
|
||||||
|
|
||||||
#: ../extensions/window-list/extension.js:278
|
#: extensions/window-list/extension.js:414
|
||||||
msgid "Unminimize all"
|
msgid "Unminimize all"
|
||||||
msgstr ""
|
msgstr "Onminimeer almal"
|
||||||
|
|
||||||
#: ../extensions/window-list/extension.js:286
|
#: extensions/window-list/extension.js:420
|
||||||
msgid "Maximize all"
|
msgid "Maximize all"
|
||||||
msgstr "Maksimeer almal"
|
msgstr "Maksimeer almal"
|
||||||
|
|
||||||
#: ../extensions/window-list/extension.js:295
|
#: extensions/window-list/extension.js:429
|
||||||
msgid "Unmaximize all"
|
msgid "Unmaximize all"
|
||||||
msgstr ""
|
msgstr "Ommaksimeer almal"
|
||||||
|
|
||||||
#: ../extensions/window-list/extension.js:304
|
#: extensions/window-list/extension.js:438
|
||||||
msgid "Close all"
|
msgid "Close all"
|
||||||
msgstr "Sluit almal"
|
msgstr "Sluit almal"
|
||||||
|
|
||||||
#: ../extensions/window-list/extension.js:591
|
#: extensions/window-list/extension.js:646
|
||||||
#: ../extensions/workspace-indicator/extension.js:30
|
#: extensions/workspace-indicator/extension.js:26
|
||||||
msgid "Workspace Indicator"
|
msgid "Workspace Indicator"
|
||||||
msgstr ""
|
msgstr "Werkspasie aanwyser"
|
||||||
|
|
||||||
#: ../extensions/window-list/extension.js:743
|
#: extensions/window-list/extension.js:811
|
||||||
msgid "Window List"
|
msgid "Window List"
|
||||||
msgstr "Vensterlys"
|
msgstr "Vensterlys"
|
||||||
|
|
||||||
#: ../extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml.in.h:1
|
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:12
|
||||||
msgid "When to group windows"
|
msgid "When to group windows"
|
||||||
msgstr "Wanneer om vensters te groepeer"
|
msgstr "Wanneer om vensters te groepeer"
|
||||||
|
|
||||||
#: ../extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml.in.h:2
|
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:13
|
||||||
msgid ""
|
msgid ""
|
||||||
"Decides when to group windows from the same application on the window list. "
|
"Decides when to group windows from the same application on the window list. "
|
||||||
"Possible values are \"never\", \"auto\" and \"always\"."
|
"Possible values are “never”, “auto” and “always”."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Besluit wanneer om vensters van dieselfde toepassing in die vensterlys te "
|
"Besluit wanneer om vensters van dieselfde toepassing in die vensterlys te "
|
||||||
"groepeer. Moontlike waardes is \"never\", \"auto\" en \"always\"."
|
"groepeer. Moontlike waardes is \"nooit\", \"outomaties\" en \"altyd\"."
|
||||||
|
|
||||||
#: ../extensions/window-list/prefs.js:30
|
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:20
|
||||||
|
msgid "Show the window list on all monitors"
|
||||||
|
msgstr "Wys vensterlys op alle skerms"
|
||||||
|
|
||||||
|
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:21
|
||||||
|
msgid ""
|
||||||
|
"Whether to show the window list on all connected monitors or only on the "
|
||||||
|
"primary one."
|
||||||
|
msgstr ""
|
||||||
|
"Of die vensterlys op alle gekonnekteerde monitors vertoon moet word of slegs "
|
||||||
|
"die primêre een."
|
||||||
|
|
||||||
|
#: extensions/window-list/prefs.js:28
|
||||||
msgid "Window Grouping"
|
msgid "Window Grouping"
|
||||||
msgstr "Venstergroepering"
|
msgstr "Venstergroepering"
|
||||||
|
|
||||||
#: ../extensions/window-list/prefs.js:49
|
#: extensions/window-list/prefs.js:46
|
||||||
msgid "Never group windows"
|
msgid "Never group windows"
|
||||||
msgstr "Moet nooit vensters groepeer nie"
|
msgstr "Moet nooit vensters groepeer nie"
|
||||||
|
|
||||||
#: ../extensions/window-list/prefs.js:50
|
#: extensions/window-list/prefs.js:47
|
||||||
msgid "Group windows when space is limited"
|
msgid "Group windows when space is limited"
|
||||||
msgstr "Groepeer vensters wanneer ruimte beperk is"
|
msgstr "Groepeer vensters wanneer ruimte beperk is"
|
||||||
|
|
||||||
#: ../extensions/window-list/prefs.js:51
|
#: extensions/window-list/prefs.js:48
|
||||||
msgid "Always group windows"
|
msgid "Always group windows"
|
||||||
msgstr "Groepeer vensters altyd"
|
msgstr "Groepeer vensters altyd"
|
||||||
|
|
||||||
#: ../extensions/workspace-indicator/prefs.js:141
|
#: extensions/window-list/prefs.js:71
|
||||||
msgid "Workspace names:"
|
msgid "Show on all monitors"
|
||||||
msgstr "Werkruimtename:"
|
msgstr "Wys op alle skerms"
|
||||||
|
|
||||||
#: ../extensions/workspace-indicator/prefs.js:152
|
#: extensions/workspace-indicator/prefs.js:134
|
||||||
|
msgid "Workspace Names"
|
||||||
|
msgstr "Werkspasiename"
|
||||||
|
|
||||||
|
#: extensions/workspace-indicator/prefs.js:150
|
||||||
msgid "Name"
|
msgid "Name"
|
||||||
msgstr "Naam"
|
msgstr "Naam"
|
||||||
|
|
||||||
#: ../extensions/workspace-indicator/prefs.js:186
|
#: extensions/workspace-indicator/prefs.js:190
|
||||||
#, c-format
|
#, javascript-format
|
||||||
msgid "Workspace %d"
|
msgid "Workspace %d"
|
||||||
msgstr "Werkruimte %d"
|
msgstr "Werkspasie %d"
|
||||||
|
|
||||||
|
#~ msgid "GNOME Shell Classic"
|
||||||
|
#~ msgstr "GNOME Shell Klassiek"
|
||||||
|
|
||||||
|
#~ msgid "Window management and application launching"
|
||||||
|
#~ msgstr "Vensterbestuur en toepassinglansering"
|
||||||
|
|
||||||
|
#~ msgid "CPU"
|
||||||
|
#~ msgstr "SVE"
|
||||||
|
|
||||||
|
#~ msgid "Memory"
|
||||||
|
#~ msgstr "Geheue"
|
||||||
|
|||||||
@@ -7,9 +7,9 @@
|
|||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: gnome-shell-extensions\n"
|
"Project-Id-Version: gnome-shell-extensions\n"
|
||||||
"Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
|
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell-extensions/"
|
||||||
"shell&keywords=I18N+L10N&component=extensions\n"
|
"issues\n"
|
||||||
"POT-Creation-Date: 2017-08-19 16:41+0000\n"
|
"POT-Creation-Date: 2019-08-09 22:24+0000\n"
|
||||||
"PO-Revision-Date: 2017-07-08 13:29+0100\n"
|
"PO-Revision-Date: 2017-07-08 13:29+0100\n"
|
||||||
"Last-Translator: Jordi Mas <jmas@softcatala.org>\n"
|
"Last-Translator: Jordi Mas <jmas@softcatala.org>\n"
|
||||||
"Language-Team: Catalan <tradgnome@softcatala.org>\n"
|
"Language-Team: Catalan <tradgnome@softcatala.org>\n"
|
||||||
@@ -27,76 +27,11 @@ msgstr "GNOME clàssic"
|
|||||||
msgid "This session logs you into GNOME Classic"
|
msgid "This session logs you into GNOME Classic"
|
||||||
msgstr "Aquesta sessió us permet utilitzar el GNOME clàssic"
|
msgstr "Aquesta sessió us permet utilitzar el GNOME clàssic"
|
||||||
|
|
||||||
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:7
|
#: extensions/apps-menu/extension.js:113
|
||||||
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:8
|
|
||||||
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:25
|
|
||||||
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:33
|
|
||||||
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:41
|
|
||||||
msgid ""
|
|
||||||
"This key overrides the key in org.gnome.mutter when running GNOME Shell."
|
|
||||||
msgstr ""
|
|
||||||
"Si s'executa el GNOME Shell, aquesta clau sobreescriu la clau «org.gnome."
|
|
||||||
"mutter»."
|
|
||||||
|
|
||||||
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:16
|
|
||||||
msgid "Arrangement of buttons on the titlebar"
|
|
||||||
msgstr "Disposició dels botons en la barra de títol"
|
|
||||||
|
|
||||||
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:17
|
|
||||||
msgid ""
|
|
||||||
"This key overrides the key in org.gnome.desktop.wm.preferences when running "
|
|
||||||
"GNOME Shell."
|
|
||||||
msgstr ""
|
|
||||||
"Si s'executa el GNOME Shell, aquesta clau sobreescriu la clau «org.gnome."
|
|
||||||
"desktop.wm.preferences»."
|
|
||||||
|
|
||||||
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:24
|
|
||||||
msgid "Enable edge tiling when dropping windows on screen edges"
|
|
||||||
msgstr ""
|
|
||||||
"Habilita la tessel·lització a les vores en deixar anar les finestres a les "
|
|
||||||
"vores de la pantalla"
|
|
||||||
|
|
||||||
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:32
|
|
||||||
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:40
|
|
||||||
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:38
|
|
||||||
msgid "Present windows as"
|
|
||||||
msgstr "Mostra les finestres com a"
|
|
||||||
|
|
||||||
#: extensions/alternate-tab/prefs.js:69
|
|
||||||
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:41
|
|
||||||
msgid "Activities Overview"
|
|
||||||
msgstr "Vista general d'activitats"
|
|
||||||
|
|
||||||
#: extensions/apps-menu/extension.js:141
|
|
||||||
msgid "Favorites"
|
msgid "Favorites"
|
||||||
msgstr "Preferides"
|
msgstr "Preferides"
|
||||||
|
|
||||||
#: extensions/apps-menu/extension.js:436
|
#: extensions/apps-menu/extension.js:368
|
||||||
msgid "Applications"
|
msgid "Applications"
|
||||||
msgstr "Aplicacions"
|
msgstr "Aplicacions"
|
||||||
|
|
||||||
@@ -117,69 +52,38 @@ msgstr ""
|
|||||||
msgid "Application"
|
msgid "Application"
|
||||||
msgstr "Aplicació"
|
msgstr "Aplicació"
|
||||||
|
|
||||||
#: extensions/auto-move-windows/prefs.js:69
|
#: extensions/auto-move-windows/prefs.js:71
|
||||||
#: extensions/auto-move-windows/prefs.js:127
|
#: extensions/auto-move-windows/prefs.js:134
|
||||||
msgid "Workspace"
|
msgid "Workspace"
|
||||||
msgstr "Espai de treball"
|
msgstr "Espai de treball"
|
||||||
|
|
||||||
#: extensions/auto-move-windows/prefs.js:85
|
#: extensions/auto-move-windows/prefs.js:89
|
||||||
msgid "Add Rule"
|
msgid "Add Rule"
|
||||||
msgstr "Afegeix una regla"
|
msgstr "Afegeix una regla"
|
||||||
|
|
||||||
#: extensions/auto-move-windows/prefs.js:106
|
#: extensions/auto-move-windows/prefs.js:111
|
||||||
msgid "Create new matching rule"
|
msgid "Create new matching rule"
|
||||||
msgstr "Crea una regla de coincidència nova"
|
msgstr "Crea una regla de coincidència nova"
|
||||||
|
|
||||||
#: extensions/auto-move-windows/prefs.js:111
|
#: extensions/auto-move-windows/prefs.js:117
|
||||||
msgid "Add"
|
msgid "Add"
|
||||||
msgstr "Afegeix"
|
msgstr "Afegeix"
|
||||||
|
|
||||||
#. TRANSLATORS: %s is the filesystem name
|
#. TRANSLATORS: %s is the filesystem name
|
||||||
#: extensions/drive-menu/extension.js:107
|
#: extensions/drive-menu/extension.js:102
|
||||||
|
#: extensions/places-menu/placeDisplay.js:232
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "Ejecting drive “%s” failed:"
|
msgid "Ejecting drive “%s” failed:"
|
||||||
msgstr "Ha fallat l'expulsió de la unitat «%s»:"
|
msgstr "Ha fallat l'expulsió de la unitat «%s»:"
|
||||||
|
|
||||||
#: extensions/drive-menu/extension.js:125
|
#: extensions/drive-menu/extension.js:118
|
||||||
msgid "Removable devices"
|
msgid "Removable devices"
|
||||||
msgstr "Dispositius extraïbles"
|
msgstr "Dispositius extraïbles"
|
||||||
|
|
||||||
#: extensions/drive-menu/extension.js:150
|
#: extensions/drive-menu/extension.js:145
|
||||||
msgid "Open Files"
|
msgid "Open Files"
|
||||||
msgstr "Obre els fitxers"
|
msgstr "Obre els fitxers"
|
||||||
|
|
||||||
#: extensions/example/extension.js:17
|
|
||||||
msgid "Hello, world!"
|
|
||||||
msgstr "Hola, món!"
|
|
||||||
|
|
||||||
#: extensions/example/org.gnome.shell.extensions.example.gschema.xml:5
|
|
||||||
msgid "Alternative greeting text."
|
|
||||||
msgstr "Text de rebuda alternatiu."
|
|
||||||
|
|
||||||
#: extensions/example/org.gnome.shell.extensions.example.gschema.xml:6
|
|
||||||
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/example/prefs.js:30
|
|
||||||
msgid "Message"
|
|
||||||
msgstr "Missatge"
|
|
||||||
|
|
||||||
#. TRANSLATORS: Example is the name of the extension, should not be
|
|
||||||
#. translated
|
|
||||||
#: extensions/example/prefs.js:43
|
|
||||||
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 de benvinguda."
|
|
||||||
|
|
||||||
#: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:5
|
#: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:5
|
||||||
msgid "Use more screen for windows"
|
msgid "Use more screen for windows"
|
||||||
msgstr "Utilitza més pantalla per les finestres"
|
msgstr "Utilitza més pantalla per les finestres"
|
||||||
@@ -211,31 +115,31 @@ msgstr ""
|
|||||||
"posicionar-lo a baix. Cal reiniciar el Shell per tal que aquest canvi tingui "
|
"posicionar-lo a baix. Cal reiniciar el Shell per tal que aquest canvi tingui "
|
||||||
"efecte."
|
"efecte."
|
||||||
|
|
||||||
#: extensions/places-menu/extension.js:78
|
#: extensions/places-menu/extension.js:80
|
||||||
#: extensions/places-menu/extension.js:81
|
#: extensions/places-menu/extension.js:84
|
||||||
msgid "Places"
|
msgid "Places"
|
||||||
msgstr "Llocs"
|
msgstr "Llocs"
|
||||||
|
|
||||||
#: extensions/places-menu/placeDisplay.js:65
|
#: extensions/places-menu/placeDisplay.js:46
|
||||||
#, javascript-format
|
|
||||||
msgid "Failed to mount volume for “%s”"
|
|
||||||
msgstr "No s'ha pogut muntar el volum «%s»"
|
|
||||||
|
|
||||||
#: extensions/places-menu/placeDisplay.js:78
|
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "Failed to launch “%s”"
|
msgid "Failed to launch “%s”"
|
||||||
msgstr "No s'ha pogut iniciar «%s»"
|
msgstr "No s'ha pogut iniciar «%s»"
|
||||||
|
|
||||||
#: extensions/places-menu/placeDisplay.js:137
|
#: extensions/places-menu/placeDisplay.js:61
|
||||||
#: extensions/places-menu/placeDisplay.js:160
|
#, javascript-format
|
||||||
|
msgid "Failed to mount volume for “%s”"
|
||||||
|
msgstr "No s'ha pogut muntar el volum «%s»"
|
||||||
|
|
||||||
|
#: extensions/places-menu/placeDisplay.js:148
|
||||||
|
#: extensions/places-menu/placeDisplay.js:171
|
||||||
msgid "Computer"
|
msgid "Computer"
|
||||||
msgstr "Ordinador"
|
msgstr "Ordinador"
|
||||||
|
|
||||||
#: extensions/places-menu/placeDisplay.js:303
|
#: extensions/places-menu/placeDisplay.js:358
|
||||||
msgid "Home"
|
msgid "Home"
|
||||||
msgstr "Inici"
|
msgstr "Inici"
|
||||||
|
|
||||||
#: extensions/places-menu/placeDisplay.js:347
|
#: extensions/places-menu/placeDisplay.js:403
|
||||||
msgid "Browse Network"
|
msgid "Browse Network"
|
||||||
msgstr "Navega per la xarxa"
|
msgstr "Navega per la xarxa"
|
||||||
|
|
||||||
@@ -255,52 +159,47 @@ msgstr "Nom del tema"
|
|||||||
msgid "The name of the theme, to be loaded from ~/.themes/name/gnome-shell"
|
msgid "The name of the theme, to be loaded from ~/.themes/name/gnome-shell"
|
||||||
msgstr "El nom del tema que es carregarà des de ~/.themes/name/gnome-shell"
|
msgstr "El nom del tema que es carregarà des de ~/.themes/name/gnome-shell"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:110
|
#: extensions/window-list/extension.js:99
|
||||||
msgid "Close"
|
msgid "Close"
|
||||||
msgstr "Tanca"
|
msgstr "Tanca"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:129
|
#: extensions/window-list/extension.js:119
|
||||||
msgid "Unminimize"
|
msgid "Unminimize"
|
||||||
msgstr "Desminimitza"
|
msgstr "Desminimitza"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:130
|
#: extensions/window-list/extension.js:119
|
||||||
msgid "Minimize"
|
msgid "Minimize"
|
||||||
msgstr "Minimitza"
|
msgstr "Minimitza"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:136
|
#: extensions/window-list/extension.js:126
|
||||||
msgid "Unmaximize"
|
msgid "Unmaximize"
|
||||||
msgstr "Desmaximitza"
|
msgstr "Desmaximitza"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:137
|
#: extensions/window-list/extension.js:126
|
||||||
msgid "Maximize"
|
msgid "Maximize"
|
||||||
msgstr "Maximitza"
|
msgstr "Maximitza"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:420
|
#: extensions/window-list/extension.js:431
|
||||||
msgid "Minimize all"
|
msgid "Minimize all"
|
||||||
msgstr "Minimitza-ho tot"
|
msgstr "Minimitza-ho tot"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:428
|
#: extensions/window-list/extension.js:437
|
||||||
msgid "Unminimize all"
|
msgid "Unminimize all"
|
||||||
msgstr "Desminimitza-ho tot"
|
msgstr "Desminimitza-ho tot"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:436
|
#: extensions/window-list/extension.js:443
|
||||||
msgid "Maximize all"
|
msgid "Maximize all"
|
||||||
msgstr "Maximitza-ho tot"
|
msgstr "Maximitza-ho tot"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:445
|
#: extensions/window-list/extension.js:451
|
||||||
msgid "Unmaximize all"
|
msgid "Unmaximize all"
|
||||||
msgstr "Desmaximitza-ho tot"
|
msgstr "Desmaximitza-ho tot"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:454
|
#: extensions/window-list/extension.js:459
|
||||||
msgid "Close all"
|
msgid "Close all"
|
||||||
msgstr "Tanca-ho tot"
|
msgstr "Tanca-ho tot"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:678
|
#: extensions/window-list/extension.js:741
|
||||||
#: extensions/workspace-indicator/extension.js:30
|
|
||||||
msgid "Workspace Indicator"
|
|
||||||
msgstr "Indicador de l'espai de treball"
|
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:842
|
|
||||||
msgid "Window List"
|
msgid "Window List"
|
||||||
msgstr "Llista de finestres"
|
msgstr "Llista de finestres"
|
||||||
|
|
||||||
@@ -318,10 +217,19 @@ msgstr ""
|
|||||||
"«auto» (automàticament) i «always» (sempre)."
|
"«auto» (automàticament) i «always» (sempre)."
|
||||||
|
|
||||||
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:20
|
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:20
|
||||||
|
#: extensions/window-list/prefs.js:82
|
||||||
|
msgid "Show windows from all workspaces"
|
||||||
|
msgstr "Mostra les finestres de tots els espais de treball"
|
||||||
|
|
||||||
|
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:21
|
||||||
|
msgid "Whether to show windows from all workspaces or only the current one."
|
||||||
|
msgstr "Si es mostren les finestres de tots els espais de treballs o només de l'actual. "
|
||||||
|
|
||||||
|
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:27
|
||||||
msgid "Show the window list on all monitors"
|
msgid "Show the window list on all monitors"
|
||||||
msgstr "Mostra la llista de finestres a tots els monitors"
|
msgstr "Mostra la llista de finestres a tots els monitors"
|
||||||
|
|
||||||
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:21
|
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:28
|
||||||
msgid ""
|
msgid ""
|
||||||
"Whether to show the window list on all connected monitors or only on the "
|
"Whether to show the window list on all connected monitors or only on the "
|
||||||
"primary one."
|
"primary one."
|
||||||
@@ -329,19 +237,19 @@ msgstr ""
|
|||||||
"Si es mostra la llista de finestres en tots els monitors connectats o només "
|
"Si es mostra la llista de finestres en tots els monitors connectats o només "
|
||||||
"al primari."
|
"al primari."
|
||||||
|
|
||||||
#: extensions/window-list/prefs.js:32
|
#: extensions/window-list/prefs.js:25
|
||||||
msgid "Window Grouping"
|
msgid "Window Grouping"
|
||||||
msgstr "Agrupació de finestres"
|
msgstr "Agrupació de finestres"
|
||||||
|
|
||||||
#: extensions/window-list/prefs.js:50
|
#: extensions/window-list/prefs.js:47
|
||||||
msgid "Never group windows"
|
msgid "Never group windows"
|
||||||
msgstr "Mai agrupis les finestres"
|
msgstr "Mai agrupis les finestres"
|
||||||
|
|
||||||
#: extensions/window-list/prefs.js:51
|
#: extensions/window-list/prefs.js:48
|
||||||
msgid "Group windows when space is limited"
|
msgid "Group windows when space is limited"
|
||||||
msgstr "Agrupa les finestres quan l'espai estigui limitat"
|
msgstr "Agrupa les finestres quan l'espai estigui limitat"
|
||||||
|
|
||||||
#: extensions/window-list/prefs.js:52
|
#: extensions/window-list/prefs.js:49
|
||||||
msgid "Always group windows"
|
msgid "Always group windows"
|
||||||
msgstr "Agrupa les finestres sempre"
|
msgstr "Agrupa les finestres sempre"
|
||||||
|
|
||||||
@@ -349,27 +257,21 @@ msgstr "Agrupa les finestres sempre"
|
|||||||
msgid "Show on all monitors"
|
msgid "Show on all monitors"
|
||||||
msgstr "Mostra a tots els monitors"
|
msgstr "Mostra a tots els monitors"
|
||||||
|
|
||||||
#: extensions/workspace-indicator/prefs.js:141
|
#: extensions/window-list/workspaceIndicator.js:211
|
||||||
|
#: extensions/workspace-indicator/extension.js:216
|
||||||
|
msgid "Workspace Indicator"
|
||||||
|
msgstr "Indicador de l'espai de treball"
|
||||||
|
|
||||||
|
#: extensions/workspace-indicator/prefs.js:131
|
||||||
msgid "Workspace Names"
|
msgid "Workspace Names"
|
||||||
msgstr "Noms dels espais de treball"
|
msgstr "Noms dels espais de treball"
|
||||||
|
|
||||||
#: extensions/workspace-indicator/prefs.js:157
|
#: extensions/workspace-indicator/prefs.js:151
|
||||||
msgid "Name"
|
msgid "Name"
|
||||||
msgstr "Nom"
|
msgstr "Nom"
|
||||||
|
|
||||||
#: extensions/workspace-indicator/prefs.js:198
|
#: extensions/workspace-indicator/prefs.js:191
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "Workspace %d"
|
msgid "Workspace %d"
|
||||||
msgstr "Espai de treball %d"
|
msgstr "Espai de treball %d"
|
||||||
|
|
||||||
#~ msgid "GNOME Shell Classic"
|
|
||||||
#~ msgstr "GNOME Shell clàssic"
|
|
||||||
|
|
||||||
#~ msgid "Window management and application launching"
|
|
||||||
#~ msgstr "Gestió de finestres i iniciació d'aplicacions"
|
|
||||||
|
|
||||||
#~ msgid "CPU"
|
|
||||||
#~ msgstr "CPU"
|
|
||||||
|
|
||||||
#~ msgid "Memory"
|
|
||||||
#~ msgstr "Memòria"
|
|
||||||
|
|||||||
@@ -2,15 +2,15 @@
|
|||||||
# Copyright (C) 2011 gnome-shell-extensions's COPYRIGHT HOLDER
|
# Copyright (C) 2011 gnome-shell-extensions's COPYRIGHT HOLDER
|
||||||
# This file is distributed under the same license as the gnome-shell-extensions package.
|
# This file is distributed under the same license as the gnome-shell-extensions package.
|
||||||
# Petr Kovar <pknbe@volny.cz>, 2013.
|
# Petr Kovar <pknbe@volny.cz>, 2013.
|
||||||
# Marek Černocký <marek@manet.cz>, 2011, 2012, 2013, 2014, 2015, 2017.
|
# Marek Černocký <marek@manet.cz>, 2011, 2012, 2013, 2014, 2015, 2017, 2019.
|
||||||
#
|
#
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: gnome-shell-extensions\n"
|
"Project-Id-Version: gnome-shell-extensions\n"
|
||||||
"Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
|
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell-extensions/"
|
||||||
"shell&keywords=I18N+L10N&component=extensions\n"
|
"issues\n"
|
||||||
"POT-Creation-Date: 2017-07-05 15:07+0000\n"
|
"POT-Creation-Date: 2019-08-09 22:24+0000\n"
|
||||||
"PO-Revision-Date: 2017-07-10 16:48+0200\n"
|
"PO-Revision-Date: 2019-08-16 10:16+0200\n"
|
||||||
"Last-Translator: Marek Černocký <marek@manet.cz>\n"
|
"Last-Translator: Marek Černocký <marek@manet.cz>\n"
|
||||||
"Language-Team: Czech <gnome-cs-list@gnome.org>\n"
|
"Language-Team: Czech <gnome-cs-list@gnome.org>\n"
|
||||||
"Language: cs\n"
|
"Language: cs\n"
|
||||||
@@ -28,71 +28,11 @@ msgstr "GNOME klasik"
|
|||||||
msgid "This session logs you into GNOME Classic"
|
msgid "This session logs you into GNOME Classic"
|
||||||
msgstr "Toto sezení vás přihlásí do GNOME klasik"
|
msgstr "Toto sezení vás přihlásí do GNOME klasik"
|
||||||
|
|
||||||
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:7
|
#: extensions/apps-menu/extension.js:113
|
||||||
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:8
|
|
||||||
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:25
|
|
||||||
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:33
|
|
||||||
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:41
|
|
||||||
msgid ""
|
|
||||||
"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"
|
|
||||||
|
|
||||||
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:16
|
|
||||||
msgid "Arrangement of buttons on the titlebar"
|
|
||||||
msgstr "Uspořádání tlačítek v záhlaví"
|
|
||||||
|
|
||||||
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:17
|
|
||||||
msgid ""
|
|
||||||
"This key overrides the key in org.gnome.desktop.wm.preferences when running "
|
|
||||||
"GNOME Shell."
|
|
||||||
msgstr ""
|
|
||||||
"Když běží GNOME Shell, tento klíč přepíše klíč v org.gnome.desktop.wm."
|
|
||||||
"preferences"
|
|
||||||
|
|
||||||
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:24
|
|
||||||
msgid "Enable edge tiling when dropping windows on screen edges"
|
|
||||||
msgstr "Okna upuštěná u okraje obrazovky nechat řadit jako dlaždice"
|
|
||||||
|
|
||||||
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:32
|
|
||||||
msgid "Workspaces only on primary monitor"
|
|
||||||
msgstr "Pracovní plochy jen na hlavním monitoru"
|
|
||||||
|
|
||||||
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:40
|
|
||||||
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/prefs.js:20
|
|
||||||
msgid "Thumbnail only"
|
|
||||||
msgstr "Pouze náhled"
|
|
||||||
|
|
||||||
#: extensions/alternate-tab/prefs.js:21
|
|
||||||
msgid "Application icon only"
|
|
||||||
msgstr "Pouze ikona aplikace"
|
|
||||||
|
|
||||||
#: extensions/alternate-tab/prefs.js:22
|
|
||||||
msgid "Thumbnail and application icon"
|
|
||||||
msgstr "Náhled a ikona aplikace"
|
|
||||||
|
|
||||||
#: extensions/alternate-tab/prefs.js:38
|
|
||||||
msgid "Present windows as"
|
|
||||||
msgstr "Představovat okna jako"
|
|
||||||
|
|
||||||
#: extensions/alternate-tab/prefs.js:69
|
|
||||||
msgid "Show only windows in the current workspace"
|
|
||||||
msgstr "Zobrazovat pouze okna z aktuální pracovní plochy"
|
|
||||||
|
|
||||||
#: extensions/apps-menu/extension.js:41
|
|
||||||
msgid "Activities Overview"
|
|
||||||
msgstr "Přehled činností"
|
|
||||||
|
|
||||||
#: extensions/apps-menu/extension.js:141
|
|
||||||
msgid "Favorites"
|
msgid "Favorites"
|
||||||
msgstr "Oblíbené"
|
msgstr "Oblíbené"
|
||||||
|
|
||||||
#: extensions/apps-menu/extension.js:436
|
#: extensions/apps-menu/extension.js:368
|
||||||
msgid "Applications"
|
msgid "Applications"
|
||||||
msgstr "Aplikace"
|
msgstr "Aplikace"
|
||||||
|
|
||||||
@@ -112,67 +52,38 @@ msgstr ""
|
|||||||
msgid "Application"
|
msgid "Application"
|
||||||
msgstr "Aplikace"
|
msgstr "Aplikace"
|
||||||
|
|
||||||
#: extensions/auto-move-windows/prefs.js:69
|
#: extensions/auto-move-windows/prefs.js:71
|
||||||
#: extensions/auto-move-windows/prefs.js:127
|
#: extensions/auto-move-windows/prefs.js:134
|
||||||
msgid "Workspace"
|
msgid "Workspace"
|
||||||
msgstr "Pracovní plocha"
|
msgstr "Pracovní plocha"
|
||||||
|
|
||||||
#: extensions/auto-move-windows/prefs.js:85
|
#: extensions/auto-move-windows/prefs.js:89
|
||||||
msgid "Add Rule"
|
msgid "Add Rule"
|
||||||
msgstr "Přidat pravidlo"
|
msgstr "Přidat pravidlo"
|
||||||
|
|
||||||
#: extensions/auto-move-windows/prefs.js:106
|
#: extensions/auto-move-windows/prefs.js:111
|
||||||
msgid "Create new matching rule"
|
msgid "Create new matching rule"
|
||||||
msgstr "Vytvoření nového srovnávacího pravidla"
|
msgstr "Vytvoření nového srovnávacího pravidla"
|
||||||
|
|
||||||
#: extensions/auto-move-windows/prefs.js:111
|
#: extensions/auto-move-windows/prefs.js:117
|
||||||
msgid "Add"
|
msgid "Add"
|
||||||
msgstr "Přidat"
|
msgstr "Přidat"
|
||||||
|
|
||||||
#: extensions/drive-menu/extension.js:106
|
#. TRANSLATORS: %s is the filesystem name
|
||||||
|
#: extensions/drive-menu/extension.js:102
|
||||||
|
#: extensions/places-menu/placeDisplay.js:232
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "Ejecting drive “%s” failed:"
|
msgid "Ejecting drive “%s” failed:"
|
||||||
msgstr "Vysunutí disku „%s“ selhalo:"
|
msgstr "Vysunutí disku „%s“ selhalo:"
|
||||||
|
|
||||||
#: extensions/drive-menu/extension.js:124
|
#: extensions/drive-menu/extension.js:118
|
||||||
msgid "Removable devices"
|
msgid "Removable devices"
|
||||||
msgstr "Výměnná zařízení"
|
msgstr "Výměnná zařízení"
|
||||||
|
|
||||||
#: extensions/drive-menu/extension.js:149
|
#: extensions/drive-menu/extension.js:145
|
||||||
msgid "Open Files"
|
msgid "Open Files"
|
||||||
msgstr "Otevřít soubory"
|
msgstr "Otevřít soubory"
|
||||||
|
|
||||||
#: extensions/example/extension.js:17
|
|
||||||
msgid "Hello, world!"
|
|
||||||
msgstr "Ahoj světe!"
|
|
||||||
|
|
||||||
#: extensions/example/org.gnome.shell.extensions.example.gschema.xml:5
|
|
||||||
msgid "Alternative greeting text."
|
|
||||||
msgstr "Alternativní uvítací text"
|
|
||||||
|
|
||||||
#: extensions/example/org.gnome.shell.extensions.example.gschema.xml:6
|
|
||||||
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/example/prefs.js:30
|
|
||||||
msgid "Message"
|
|
||||||
msgstr "Zpráva"
|
|
||||||
|
|
||||||
#. TRANSLATORS: Example is the name of the extension, should not be
|
|
||||||
#. translated
|
|
||||||
#: extensions/example/prefs.js:43
|
|
||||||
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/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:5
|
#: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:5
|
||||||
msgid "Use more screen for windows"
|
msgid "Use more screen for windows"
|
||||||
msgstr "Použít větší část obrazovky pro okna"
|
msgstr "Použít větší část obrazovky pro okna"
|
||||||
@@ -201,31 +112,31 @@ msgstr ""
|
|||||||
"přepíše výchozí chování shellu, který jej umisťuje dolů. Změna tohoto "
|
"přepíše výchozí chování shellu, který jej umisťuje dolů. Změna tohoto "
|
||||||
"nastavení vyžaduje restart shellu, aby se projevila."
|
"nastavení vyžaduje restart shellu, aby se projevila."
|
||||||
|
|
||||||
#: extensions/places-menu/extension.js:78
|
#: extensions/places-menu/extension.js:80
|
||||||
#: extensions/places-menu/extension.js:81
|
#: extensions/places-menu/extension.js:84
|
||||||
msgid "Places"
|
msgid "Places"
|
||||||
msgstr "Místa"
|
msgstr "Místa"
|
||||||
|
|
||||||
#: extensions/places-menu/placeDisplay.js:65
|
#: extensions/places-menu/placeDisplay.js:46
|
||||||
#, javascript-format
|
|
||||||
msgid "Failed to mount volume for “%s”"
|
|
||||||
msgstr "Selhalo připojení svazku pro „%s“"
|
|
||||||
|
|
||||||
#: extensions/places-menu/placeDisplay.js:78
|
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "Failed to launch “%s”"
|
msgid "Failed to launch “%s”"
|
||||||
msgstr "Selhalo spuštění „%s“"
|
msgstr "Selhalo spuštění „%s“"
|
||||||
|
|
||||||
#: extensions/places-menu/placeDisplay.js:137
|
#: extensions/places-menu/placeDisplay.js:61
|
||||||
#: extensions/places-menu/placeDisplay.js:160
|
#, javascript-format
|
||||||
|
msgid "Failed to mount volume for “%s”"
|
||||||
|
msgstr "Selhalo připojení svazku pro „%s“"
|
||||||
|
|
||||||
|
#: extensions/places-menu/placeDisplay.js:148
|
||||||
|
#: extensions/places-menu/placeDisplay.js:171
|
||||||
msgid "Computer"
|
msgid "Computer"
|
||||||
msgstr "Počítač"
|
msgstr "Počítač"
|
||||||
|
|
||||||
#: extensions/places-menu/placeDisplay.js:303
|
#: extensions/places-menu/placeDisplay.js:358
|
||||||
msgid "Home"
|
msgid "Home"
|
||||||
msgstr "Domů"
|
msgstr "Domů"
|
||||||
|
|
||||||
#: extensions/places-menu/placeDisplay.js:347
|
#: extensions/places-menu/placeDisplay.js:403
|
||||||
msgid "Browse Network"
|
msgid "Browse Network"
|
||||||
msgstr "Procházet síť"
|
msgstr "Procházet síť"
|
||||||
|
|
||||||
@@ -245,52 +156,47 @@ msgstr "Název motivu"
|
|||||||
msgid "The name of the theme, to be loaded from ~/.themes/name/gnome-shell"
|
msgid "The name of the theme, to be loaded from ~/.themes/name/gnome-shell"
|
||||||
msgstr "Název motivu, který se má načíst z ~/.themes/name/gnome-shell"
|
msgstr "Název motivu, který se má načíst z ~/.themes/name/gnome-shell"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:110
|
#: extensions/window-list/extension.js:99
|
||||||
msgid "Close"
|
msgid "Close"
|
||||||
msgstr "Zavřít"
|
msgstr "Zavřít"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:129
|
#: extensions/window-list/extension.js:119
|
||||||
msgid "Unminimize"
|
msgid "Unminimize"
|
||||||
msgstr "Zrušit minimalizaci"
|
msgstr "Zrušit minimalizaci"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:130
|
#: extensions/window-list/extension.js:119
|
||||||
msgid "Minimize"
|
msgid "Minimize"
|
||||||
msgstr "Minimalizovat"
|
msgstr "Minimalizovat"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:136
|
#: extensions/window-list/extension.js:126
|
||||||
msgid "Unmaximize"
|
msgid "Unmaximize"
|
||||||
msgstr "Zrušit maximalizaci"
|
msgstr "Zrušit maximalizaci"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:137
|
#: extensions/window-list/extension.js:126
|
||||||
msgid "Maximize"
|
msgid "Maximize"
|
||||||
msgstr "Maximalizovat"
|
msgstr "Maximalizovat"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:420
|
#: extensions/window-list/extension.js:431
|
||||||
msgid "Minimize all"
|
msgid "Minimize all"
|
||||||
msgstr "Minimalizovat všechna"
|
msgstr "Minimalizovat všechna"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:428
|
#: extensions/window-list/extension.js:437
|
||||||
msgid "Unminimize all"
|
msgid "Unminimize all"
|
||||||
msgstr "Zrušit minimalizaci všech"
|
msgstr "Zrušit minimalizaci všech"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:436
|
#: extensions/window-list/extension.js:443
|
||||||
msgid "Maximize all"
|
msgid "Maximize all"
|
||||||
msgstr "Maximalizovat všechna"
|
msgstr "Maximalizovat všechna"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:445
|
#: extensions/window-list/extension.js:451
|
||||||
msgid "Unmaximize all"
|
msgid "Unmaximize all"
|
||||||
msgstr "Zrušit maximalizaci všech"
|
msgstr "Zrušit maximalizaci všech"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:454
|
#: extensions/window-list/extension.js:459
|
||||||
msgid "Close all"
|
msgid "Close all"
|
||||||
msgstr "Zavřít všechna"
|
msgstr "Zavřít všechna"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:678
|
#: extensions/window-list/extension.js:741
|
||||||
#: extensions/workspace-indicator/extension.js:30
|
|
||||||
msgid "Workspace Indicator"
|
|
||||||
msgstr "Ukazatel pracovní plochy"
|
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:842
|
|
||||||
msgid "Window List"
|
msgid "Window List"
|
||||||
msgstr "Seznam oken"
|
msgstr "Seznam oken"
|
||||||
|
|
||||||
@@ -307,10 +213,19 @@ msgstr ""
|
|||||||
"hodnoty jsou „never“ (nikdy), „auto“ (automaticky) a „always“ (vždy)."
|
"hodnoty jsou „never“ (nikdy), „auto“ (automaticky) a „always“ (vždy)."
|
||||||
|
|
||||||
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:20
|
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:20
|
||||||
|
#: extensions/window-list/prefs.js:82
|
||||||
|
msgid "Show windows from all workspaces"
|
||||||
|
msgstr "Zobrazovat okna ze všech pracovních ploch"
|
||||||
|
|
||||||
|
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:21
|
||||||
|
msgid "Whether to show windows from all workspaces or only the current one."
|
||||||
|
msgstr "Zda zobrazovat okna ze všech pracovních ploch nebo jen z aktuální."
|
||||||
|
|
||||||
|
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:27
|
||||||
msgid "Show the window list on all monitors"
|
msgid "Show the window list on all monitors"
|
||||||
msgstr "Zobrazovat seznam oken na všech monitorech"
|
msgstr "Zobrazovat seznam oken na všech monitorech"
|
||||||
|
|
||||||
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:21
|
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:28
|
||||||
msgid ""
|
msgid ""
|
||||||
"Whether to show the window list on all connected monitors or only on the "
|
"Whether to show the window list on all connected monitors or only on the "
|
||||||
"primary one."
|
"primary one."
|
||||||
@@ -318,19 +233,19 @@ msgstr ""
|
|||||||
"Zda zobrazovat seznam oken na všech připojených monitorech nebo jen na "
|
"Zda zobrazovat seznam oken na všech připojených monitorech nebo jen na "
|
||||||
"hlavním."
|
"hlavním."
|
||||||
|
|
||||||
#: extensions/window-list/prefs.js:32
|
#: extensions/window-list/prefs.js:25
|
||||||
msgid "Window Grouping"
|
msgid "Window Grouping"
|
||||||
msgstr "Seskupování oken"
|
msgstr "Seskupování oken"
|
||||||
|
|
||||||
#: extensions/window-list/prefs.js:50
|
#: extensions/window-list/prefs.js:47
|
||||||
msgid "Never group windows"
|
msgid "Never group windows"
|
||||||
msgstr "Nikdy neseskupovat okna"
|
msgstr "Nikdy neseskupovat okna"
|
||||||
|
|
||||||
#: extensions/window-list/prefs.js:51
|
#: extensions/window-list/prefs.js:48
|
||||||
msgid "Group windows when space is limited"
|
msgid "Group windows when space is limited"
|
||||||
msgstr "Seskupovat okna při nedostatku místa"
|
msgstr "Seskupovat okna při nedostatku místa"
|
||||||
|
|
||||||
#: extensions/window-list/prefs.js:52
|
#: extensions/window-list/prefs.js:49
|
||||||
msgid "Always group windows"
|
msgid "Always group windows"
|
||||||
msgstr "Vždy seskupovat okna"
|
msgstr "Vždy seskupovat okna"
|
||||||
|
|
||||||
@@ -338,15 +253,20 @@ msgstr "Vždy seskupovat okna"
|
|||||||
msgid "Show on all monitors"
|
msgid "Show on all monitors"
|
||||||
msgstr "Zobrazovat na všech monitorech"
|
msgstr "Zobrazovat na všech monitorech"
|
||||||
|
|
||||||
#: extensions/workspace-indicator/prefs.js:141
|
#: extensions/window-list/workspaceIndicator.js:211
|
||||||
|
#: extensions/workspace-indicator/extension.js:216
|
||||||
|
msgid "Workspace Indicator"
|
||||||
|
msgstr "Ukazatel pracovní plochy"
|
||||||
|
|
||||||
|
#: extensions/workspace-indicator/prefs.js:131
|
||||||
msgid "Workspace Names"
|
msgid "Workspace Names"
|
||||||
msgstr "Názvy pracovních ploch"
|
msgstr "Názvy pracovních ploch"
|
||||||
|
|
||||||
#: extensions/workspace-indicator/prefs.js:157
|
#: extensions/workspace-indicator/prefs.js:151
|
||||||
msgid "Name"
|
msgid "Name"
|
||||||
msgstr "Název"
|
msgstr "Název"
|
||||||
|
|
||||||
#: extensions/workspace-indicator/prefs.js:198
|
#: extensions/workspace-indicator/prefs.js:191
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "Workspace %d"
|
msgid "Workspace %d"
|
||||||
msgstr "Pracovní plocha %d"
|
msgstr "Pracovní plocha %d"
|
||||||
|
|||||||
@@ -9,10 +9,10 @@
|
|||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: gnome-shell-extensions master\n"
|
"Project-Id-Version: gnome-shell-extensions master\n"
|
||||||
"Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
|
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell-extensions/"
|
||||||
"shell&keywords=I18N+L10N&component=extensions\n"
|
"issues\n"
|
||||||
"POT-Creation-Date: 2017-08-11 01:33+0000\n"
|
"POT-Creation-Date: 2019-08-09 22:24+0000\n"
|
||||||
"PO-Revision-Date: 2017-09-10 17:13+0200\n"
|
"PO-Revision-Date: 2019-09-09 00:53+0200\n"
|
||||||
"Last-Translator: Kris Thomsen <mail@kristhomsen.dk>\n"
|
"Last-Translator: Kris Thomsen <mail@kristhomsen.dk>\n"
|
||||||
"Language-Team: Danish <dansk@dansk-gruppen.dk>\n"
|
"Language-Team: Danish <dansk@dansk-gruppen.dk>\n"
|
||||||
"Language: da\n"
|
"Language: da\n"
|
||||||
@@ -29,74 +29,11 @@ msgstr "GNOME Classic"
|
|||||||
msgid "This session logs you into GNOME Classic"
|
msgid "This session logs you into GNOME Classic"
|
||||||
msgstr "Denne session logger dig ind i GNOME Classic"
|
msgstr "Denne session logger dig ind i GNOME Classic"
|
||||||
|
|
||||||
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:7
|
#: extensions/apps-menu/extension.js:113
|
||||||
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:8
|
|
||||||
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:25
|
|
||||||
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:33
|
|
||||||
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:41
|
|
||||||
msgid ""
|
|
||||||
"This key overrides the key in org.gnome.mutter when running GNOME Shell."
|
|
||||||
msgstr ""
|
|
||||||
"Denne nøgle tilsidesætter nøglen i org.gnome.mutter når GNOME Shell kører."
|
|
||||||
|
|
||||||
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:16
|
|
||||||
msgid "Arrangement of buttons on the titlebar"
|
|
||||||
msgstr "Placeringen af knapper i titellinjen"
|
|
||||||
|
|
||||||
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:17
|
|
||||||
msgid ""
|
|
||||||
"This key overrides the key in org.gnome.desktop.wm.preferences when running "
|
|
||||||
"GNOME Shell."
|
|
||||||
msgstr ""
|
|
||||||
"Denne nøgle tilsidesætter nøglen i org.gnome.desktop.wm.preferences når "
|
|
||||||
"GNOME Shell kører."
|
|
||||||
|
|
||||||
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:24
|
|
||||||
msgid "Enable edge tiling when dropping windows on screen edges"
|
|
||||||
msgstr "Aktivér kant-fliselægning når vinduer slippes på skærmkanter"
|
|
||||||
|
|
||||||
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:32
|
|
||||||
msgid "Workspaces only on primary monitor"
|
|
||||||
msgstr "Kun arbejdsområder på primær skærm"
|
|
||||||
|
|
||||||
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:40
|
|
||||||
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/prefs.js:20
|
|
||||||
msgid "Thumbnail only"
|
|
||||||
msgstr "Kun miniaturebillede"
|
|
||||||
|
|
||||||
#: extensions/alternate-tab/prefs.js:21
|
|
||||||
msgid "Application icon only"
|
|
||||||
msgstr "Kun programikon"
|
|
||||||
|
|
||||||
#: extensions/alternate-tab/prefs.js:22
|
|
||||||
msgid "Thumbnail and application icon"
|
|
||||||
msgstr "Miniaturebillede og programikon"
|
|
||||||
|
|
||||||
#: extensions/alternate-tab/prefs.js:38
|
|
||||||
msgid "Present windows as"
|
|
||||||
msgstr "Præsentér vindue som"
|
|
||||||
|
|
||||||
#: extensions/alternate-tab/prefs.js:69
|
|
||||||
msgid "Show only windows in the current workspace"
|
|
||||||
msgstr "Vis kun vinduer i det nuværende arbejdsområde"
|
|
||||||
|
|
||||||
#: extensions/apps-menu/extension.js:41
|
|
||||||
msgid "Activities Overview"
|
|
||||||
msgstr "Aktivitetsoversigt"
|
|
||||||
|
|
||||||
#: extensions/apps-menu/extension.js:141
|
|
||||||
msgid "Favorites"
|
msgid "Favorites"
|
||||||
msgstr "Favoritter"
|
msgstr "Favoritter"
|
||||||
|
|
||||||
#: extensions/apps-menu/extension.js:436
|
#: extensions/apps-menu/extension.js:368
|
||||||
msgid "Applications"
|
msgid "Applications"
|
||||||
msgstr "Programmer"
|
msgstr "Programmer"
|
||||||
|
|
||||||
@@ -116,70 +53,38 @@ msgstr ""
|
|||||||
msgid "Application"
|
msgid "Application"
|
||||||
msgstr "Program"
|
msgstr "Program"
|
||||||
|
|
||||||
#: extensions/auto-move-windows/prefs.js:69
|
#: extensions/auto-move-windows/prefs.js:71
|
||||||
#: extensions/auto-move-windows/prefs.js:127
|
#: extensions/auto-move-windows/prefs.js:134
|
||||||
msgid "Workspace"
|
msgid "Workspace"
|
||||||
msgstr "Arbejdsområde"
|
msgstr "Arbejdsområde"
|
||||||
|
|
||||||
#: extensions/auto-move-windows/prefs.js:85
|
#: extensions/auto-move-windows/prefs.js:89
|
||||||
msgid "Add Rule"
|
msgid "Add Rule"
|
||||||
msgstr "Tilføj regel"
|
msgstr "Tilføj regel"
|
||||||
|
|
||||||
#: extensions/auto-move-windows/prefs.js:106
|
#: extensions/auto-move-windows/prefs.js:111
|
||||||
msgid "Create new matching rule"
|
msgid "Create new matching rule"
|
||||||
msgstr "Opret ny regel for match"
|
msgstr "Opret ny regel for match"
|
||||||
|
|
||||||
#: extensions/auto-move-windows/prefs.js:111
|
#: extensions/auto-move-windows/prefs.js:117
|
||||||
msgid "Add"
|
msgid "Add"
|
||||||
msgstr "Tilføj"
|
msgstr "Tilføj"
|
||||||
|
|
||||||
#. TRANSLATORS: %s is the filesystem name
|
#. TRANSLATORS: %s is the filesystem name
|
||||||
#: extensions/drive-menu/extension.js:107
|
#: extensions/drive-menu/extension.js:102
|
||||||
|
#: extensions/places-menu/placeDisplay.js:232
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "Ejecting drive “%s” failed:"
|
msgid "Ejecting drive “%s” failed:"
|
||||||
msgstr "Udskubning af drevet “%s” mislykkedes:"
|
msgstr "Udskubning af drevet “%s” mislykkedes:"
|
||||||
|
|
||||||
#: extensions/drive-menu/extension.js:125
|
#: extensions/drive-menu/extension.js:118
|
||||||
msgid "Removable devices"
|
msgid "Removable devices"
|
||||||
msgstr "Flytbare enheder"
|
msgstr "Flytbare enheder"
|
||||||
|
|
||||||
#: extensions/drive-menu/extension.js:150
|
#: extensions/drive-menu/extension.js:145
|
||||||
msgid "Open Files"
|
msgid "Open Files"
|
||||||
msgstr "Åbn filer"
|
msgstr "Åbn filer"
|
||||||
|
|
||||||
#: extensions/example/extension.js:17
|
|
||||||
msgid "Hello, world!"
|
|
||||||
msgstr "Hej verden!"
|
|
||||||
|
|
||||||
#: extensions/example/org.gnome.shell.extensions.example.gschema.xml:5
|
|
||||||
msgid "Alternative greeting text."
|
|
||||||
msgstr "Alternativ velkomsttekst."
|
|
||||||
|
|
||||||
#: extensions/example/org.gnome.shell.extensions.example.gschema.xml:6
|
|
||||||
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/example/prefs.js:30
|
|
||||||
msgid "Message"
|
|
||||||
msgstr "Besked"
|
|
||||||
|
|
||||||
#. TRANSLATORS: Example is the name of the extension, should not be
|
|
||||||
#. translated
|
|
||||||
#: extensions/example/prefs.js:43
|
|
||||||
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 skallen, som "
|
|
||||||
"opfører sig ordentligt, og har som sådan meget lidt selvstændig "
|
|
||||||
"funktionalitet.\n"
|
|
||||||
"Alligevel er det muligt at tilpasse velkomstbeskeden."
|
|
||||||
|
|
||||||
#: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:5
|
#: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:5
|
||||||
msgid "Use more screen for windows"
|
msgid "Use more screen for windows"
|
||||||
msgstr "Brug mere skærmplads til vinduer"
|
msgstr "Brug mere skærmplads til vinduer"
|
||||||
@@ -210,31 +115,31 @@ msgstr ""
|
|||||||
"Ændring af denne indstilling kræver at shell'en genstartes for at træde i "
|
"Ændring af denne indstilling kræver at shell'en genstartes for at træde i "
|
||||||
"kraft."
|
"kraft."
|
||||||
|
|
||||||
#: extensions/places-menu/extension.js:78
|
#: extensions/places-menu/extension.js:80
|
||||||
#: extensions/places-menu/extension.js:81
|
#: extensions/places-menu/extension.js:84
|
||||||
msgid "Places"
|
msgid "Places"
|
||||||
msgstr "Steder"
|
msgstr "Steder"
|
||||||
|
|
||||||
#: extensions/places-menu/placeDisplay.js:65
|
#: extensions/places-menu/placeDisplay.js:46
|
||||||
#, javascript-format
|
|
||||||
msgid "Failed to mount volume for “%s”"
|
|
||||||
msgstr "Kunne ikke montere diskenhed for “%s”"
|
|
||||||
|
|
||||||
#: extensions/places-menu/placeDisplay.js:78
|
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "Failed to launch “%s”"
|
msgid "Failed to launch “%s”"
|
||||||
msgstr "Kunne ikke åbne “%s”"
|
msgstr "Kunne ikke åbne “%s”"
|
||||||
|
|
||||||
#: extensions/places-menu/placeDisplay.js:137
|
#: extensions/places-menu/placeDisplay.js:61
|
||||||
#: extensions/places-menu/placeDisplay.js:160
|
#, javascript-format
|
||||||
|
msgid "Failed to mount volume for “%s”"
|
||||||
|
msgstr "Kunne ikke montere diskenhed for “%s”"
|
||||||
|
|
||||||
|
#: extensions/places-menu/placeDisplay.js:148
|
||||||
|
#: extensions/places-menu/placeDisplay.js:171
|
||||||
msgid "Computer"
|
msgid "Computer"
|
||||||
msgstr "Computer"
|
msgstr "Computer"
|
||||||
|
|
||||||
#: extensions/places-menu/placeDisplay.js:303
|
#: extensions/places-menu/placeDisplay.js:358
|
||||||
msgid "Home"
|
msgid "Home"
|
||||||
msgstr "Hjem"
|
msgstr "Hjem"
|
||||||
|
|
||||||
#: extensions/places-menu/placeDisplay.js:347
|
#: extensions/places-menu/placeDisplay.js:403
|
||||||
msgid "Browse Network"
|
msgid "Browse Network"
|
||||||
msgstr "Gennemse netværk"
|
msgstr "Gennemse netværk"
|
||||||
|
|
||||||
@@ -254,52 +159,47 @@ msgstr "Temanavn"
|
|||||||
msgid "The name of the theme, to be loaded from ~/.themes/name/gnome-shell"
|
msgid "The name of the theme, to be loaded from ~/.themes/name/gnome-shell"
|
||||||
msgstr "Navnet på temaet, som indlæses fra ~/.themes/name/gnome-shell"
|
msgstr "Navnet på temaet, som indlæses fra ~/.themes/name/gnome-shell"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:110
|
#: extensions/window-list/extension.js:99
|
||||||
msgid "Close"
|
msgid "Close"
|
||||||
msgstr "Luk"
|
msgstr "Luk"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:129
|
#: extensions/window-list/extension.js:119
|
||||||
msgid "Unminimize"
|
msgid "Unminimize"
|
||||||
msgstr "Afminimér"
|
msgstr "Afminimér"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:130
|
#: extensions/window-list/extension.js:119
|
||||||
msgid "Minimize"
|
msgid "Minimize"
|
||||||
msgstr "Minimér"
|
msgstr "Minimér"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:136
|
#: extensions/window-list/extension.js:126
|
||||||
msgid "Unmaximize"
|
msgid "Unmaximize"
|
||||||
msgstr "Afmaksimér"
|
msgstr "Afmaksimér"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:137
|
#: extensions/window-list/extension.js:126
|
||||||
msgid "Maximize"
|
msgid "Maximize"
|
||||||
msgstr "Maksimér"
|
msgstr "Maksimér"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:420
|
#: extensions/window-list/extension.js:431
|
||||||
msgid "Minimize all"
|
msgid "Minimize all"
|
||||||
msgstr "Minimér"
|
msgstr "Minimér"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:428
|
#: extensions/window-list/extension.js:437
|
||||||
msgid "Unminimize all"
|
msgid "Unminimize all"
|
||||||
msgstr "Afminimér alle"
|
msgstr "Afminimér alle"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:436
|
#: extensions/window-list/extension.js:443
|
||||||
msgid "Maximize all"
|
msgid "Maximize all"
|
||||||
msgstr "Maksimér alle"
|
msgstr "Maksimér alle"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:445
|
#: extensions/window-list/extension.js:451
|
||||||
msgid "Unmaximize all"
|
msgid "Unmaximize all"
|
||||||
msgstr "Afmaksimér alle"
|
msgstr "Afmaksimér alle"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:454
|
#: extensions/window-list/extension.js:459
|
||||||
msgid "Close all"
|
msgid "Close all"
|
||||||
msgstr "Luk alle"
|
msgstr "Luk alle"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:678
|
#: extensions/window-list/extension.js:741
|
||||||
#: extensions/workspace-indicator/extension.js:30
|
|
||||||
msgid "Workspace Indicator"
|
|
||||||
msgstr "Arbejdsområdeindikator"
|
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:842
|
|
||||||
msgid "Window List"
|
msgid "Window List"
|
||||||
msgstr "Vinduesliste"
|
msgstr "Vinduesliste"
|
||||||
|
|
||||||
@@ -316,10 +216,19 @@ msgstr ""
|
|||||||
"Mulige værdier er “never” (aldrig), “auto” (automatisk) og “always” (altid)."
|
"Mulige værdier er “never” (aldrig), “auto” (automatisk) og “always” (altid)."
|
||||||
|
|
||||||
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:20
|
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:20
|
||||||
|
#: extensions/window-list/prefs.js:82
|
||||||
|
msgid "Show windows from all workspaces"
|
||||||
|
msgstr "Vis vinduer fra alle arbejdsområder"
|
||||||
|
|
||||||
|
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:21
|
||||||
|
msgid "Whether to show windows from all workspaces or only the current one."
|
||||||
|
msgstr "Om der skal vises vinduer fra alle arbejdsområder eller kun det nuværende."
|
||||||
|
|
||||||
|
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:27
|
||||||
msgid "Show the window list on all monitors"
|
msgid "Show the window list on all monitors"
|
||||||
msgstr "Vis vindueslisten på alle skærme"
|
msgstr "Vis vindueslisten på alle skærme"
|
||||||
|
|
||||||
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:21
|
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:28
|
||||||
msgid ""
|
msgid ""
|
||||||
"Whether to show the window list on all connected monitors or only on the "
|
"Whether to show the window list on all connected monitors or only on the "
|
||||||
"primary one."
|
"primary one."
|
||||||
@@ -327,19 +236,19 @@ msgstr ""
|
|||||||
"Om vindueslisten skal vise på alle tilsluttede skærme, eller kun på den "
|
"Om vindueslisten skal vise på alle tilsluttede skærme, eller kun på den "
|
||||||
"primære."
|
"primære."
|
||||||
|
|
||||||
#: extensions/window-list/prefs.js:32
|
#: extensions/window-list/prefs.js:25
|
||||||
msgid "Window Grouping"
|
msgid "Window Grouping"
|
||||||
msgstr "Vinduesgruppering"
|
msgstr "Vinduesgruppering"
|
||||||
|
|
||||||
#: extensions/window-list/prefs.js:50
|
#: extensions/window-list/prefs.js:47
|
||||||
msgid "Never group windows"
|
msgid "Never group windows"
|
||||||
msgstr "Gruppér aldrig vinduer"
|
msgstr "Gruppér aldrig vinduer"
|
||||||
|
|
||||||
#: extensions/window-list/prefs.js:51
|
#: extensions/window-list/prefs.js:48
|
||||||
msgid "Group windows when space is limited"
|
msgid "Group windows when space is limited"
|
||||||
msgstr "Gruppér vinduer når pladsen er begrænset"
|
msgstr "Gruppér vinduer når pladsen er begrænset"
|
||||||
|
|
||||||
#: extensions/window-list/prefs.js:52
|
#: extensions/window-list/prefs.js:49
|
||||||
msgid "Always group windows"
|
msgid "Always group windows"
|
||||||
msgstr "Gruppér altid vinduer"
|
msgstr "Gruppér altid vinduer"
|
||||||
|
|
||||||
@@ -347,15 +256,90 @@ msgstr "Gruppér altid vinduer"
|
|||||||
msgid "Show on all monitors"
|
msgid "Show on all monitors"
|
||||||
msgstr "Vis på alle skærme"
|
msgstr "Vis på alle skærme"
|
||||||
|
|
||||||
#: extensions/workspace-indicator/prefs.js:141
|
#: extensions/window-list/workspaceIndicator.js:211
|
||||||
|
#: extensions/workspace-indicator/extension.js:216
|
||||||
|
msgid "Workspace Indicator"
|
||||||
|
msgstr "Arbejdsområdeindikator"
|
||||||
|
|
||||||
|
#: extensions/workspace-indicator/prefs.js:131
|
||||||
msgid "Workspace Names"
|
msgid "Workspace Names"
|
||||||
msgstr "Navne på arbejdsområder"
|
msgstr "Navne på arbejdsområder"
|
||||||
|
|
||||||
#: extensions/workspace-indicator/prefs.js:157
|
#: extensions/workspace-indicator/prefs.js:151
|
||||||
msgid "Name"
|
msgid "Name"
|
||||||
msgstr "Navn"
|
msgstr "Navn"
|
||||||
|
|
||||||
#: extensions/workspace-indicator/prefs.js:198
|
#: extensions/workspace-indicator/prefs.js:191
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "Workspace %d"
|
msgid "Workspace %d"
|
||||||
msgstr "Arbejdsområde %d"
|
msgstr "Arbejdsområde %d"
|
||||||
|
|
||||||
|
#~ msgid "Attach modal dialog to the parent window"
|
||||||
|
#~ msgstr "Tillæg modal-dialog til det overordnede vindue"
|
||||||
|
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "This key overrides the key in org.gnome.mutter when running GNOME Shell."
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "Denne nøgle tilsidesætter nøglen i org.gnome.mutter når GNOME Shell kører."
|
||||||
|
|
||||||
|
#~ msgid "Arrangement of buttons on the titlebar"
|
||||||
|
#~ msgstr "Placeringen af knapper i titellinjen"
|
||||||
|
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "This key overrides the key in org.gnome.desktop.wm.preferences when "
|
||||||
|
#~ "running GNOME Shell."
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "Denne nøgle tilsidesætter nøglen i org.gnome.desktop.wm.preferences når "
|
||||||
|
#~ "GNOME Shell kører."
|
||||||
|
|
||||||
|
#~ msgid "Enable edge tiling when dropping windows on screen edges"
|
||||||
|
#~ msgstr "Aktivér kant-fliselægning når vinduer slippes på skærmkanter"
|
||||||
|
|
||||||
|
#~ msgid "Workspaces only on primary monitor"
|
||||||
|
#~ msgstr "Kun arbejdsområder på primær skærm"
|
||||||
|
|
||||||
|
#~ 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"
|
||||||
|
|
||||||
|
#~ msgid "Thumbnail only"
|
||||||
|
#~ msgstr "Kun miniaturebillede"
|
||||||
|
|
||||||
|
#~ msgid "Application icon only"
|
||||||
|
#~ msgstr "Kun programikon"
|
||||||
|
|
||||||
|
#~ msgid "Thumbnail and application icon"
|
||||||
|
#~ msgstr "Miniaturebillede og programikon"
|
||||||
|
|
||||||
|
#~ msgid "Present windows as"
|
||||||
|
#~ msgstr "Præsentér vindue som"
|
||||||
|
|
||||||
|
#~ msgid "Activities Overview"
|
||||||
|
#~ msgstr "Aktivitetsoversigt"
|
||||||
|
|
||||||
|
#~ msgid "Hello, world!"
|
||||||
|
#~ msgstr "Hej verden!"
|
||||||
|
|
||||||
|
#~ msgid "Alternative greeting text."
|
||||||
|
#~ msgstr "Alternativ velkomsttekst."
|
||||||
|
|
||||||
|
#~ 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."
|
||||||
|
|
||||||
|
#~ msgid "Message"
|
||||||
|
#~ msgstr "Besked"
|
||||||
|
|
||||||
|
#~ 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 skallen, "
|
||||||
|
#~ "som opfører sig ordentligt, og har som sådan meget lidt selvstændig "
|
||||||
|
#~ "funktionalitet.\n"
|
||||||
|
#~ "Alligevel er det muligt at tilpasse velkomstbeskeden."
|
||||||
|
|||||||
@@ -6,22 +6,23 @@
|
|||||||
# Benjamin Steinwender <b@stbe.at>, 2013.
|
# Benjamin Steinwender <b@stbe.at>, 2013.
|
||||||
# Wolfgang Stöggl <c72578@yahoo.de>, 2014.
|
# Wolfgang Stöggl <c72578@yahoo.de>, 2014.
|
||||||
# Paul Seyfert <pseyfert@mathphys.fsk.uni-heidelberg.de>, 2017.
|
# Paul Seyfert <pseyfert@mathphys.fsk.uni-heidelberg.de>, 2017.
|
||||||
|
# Tim Sabsch <tim@sabsch.com>, 2019.
|
||||||
#
|
#
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: gnome-shell-extensions master\n"
|
"Project-Id-Version: gnome-shell-extensions master\n"
|
||||||
"Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
|
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell-extensions/"
|
||||||
"shell&keywords=I18N+L10N&component=extensions\n"
|
"issues\n"
|
||||||
"POT-Creation-Date: 2017-07-06 14:32+0000\n"
|
"POT-Creation-Date: 2019-08-09 22:24+0000\n"
|
||||||
"PO-Revision-Date: 2017-07-07 21:43+0200\n"
|
"PO-Revision-Date: 2019-08-23 21:27+0200\n"
|
||||||
"Last-Translator: Christian Kirbach <christian.kirbach@gmail.com>\n"
|
"Last-Translator: Tim Sabsch <tim@sabsch.com>\n"
|
||||||
"Language-Team: Deutsch <gnome-de@gnome.org>\n"
|
"Language-Team: Deutsch <gnome-de@gnome.org>\n"
|
||||||
"Language: de\n"
|
"Language: de\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||||
"X-Generator: Poedit 2.0.2\n"
|
"X-Generator: Poedit 2.2.1\n"
|
||||||
|
|
||||||
#: data/gnome-classic.desktop.in:3 data/gnome-classic.session.desktop.in:3
|
#: data/gnome-classic.desktop.in:3 data/gnome-classic.session.desktop.in:3
|
||||||
msgid "GNOME Classic"
|
msgid "GNOME Classic"
|
||||||
@@ -31,77 +32,11 @@ msgstr "GNOME Classic"
|
|||||||
msgid "This session logs you into GNOME Classic"
|
msgid "This session logs you into GNOME Classic"
|
||||||
msgstr "Diese Sitzung meldet Sie in GNOME Classic an"
|
msgstr "Diese Sitzung meldet Sie in GNOME Classic an"
|
||||||
|
|
||||||
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:7
|
#: extensions/apps-menu/extension.js:113
|
||||||
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:8
|
|
||||||
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:25
|
|
||||||
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:33
|
|
||||||
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:41
|
|
||||||
msgid ""
|
|
||||||
"This key overrides the key in org.gnome.mutter when running GNOME Shell."
|
|
||||||
msgstr ""
|
|
||||||
"Dieser Schlüssel überschreibt den Schlüssel in »org.gnome.mutter«, wenn die "
|
|
||||||
"GNOME-Shell ausgeführt wird."
|
|
||||||
|
|
||||||
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:16
|
|
||||||
msgid "Arrangement of buttons on the titlebar"
|
|
||||||
msgstr "Anordnung von Knöpfen auf der Titelleiste"
|
|
||||||
|
|
||||||
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:17
|
|
||||||
msgid ""
|
|
||||||
"This key overrides the key in org.gnome.desktop.wm.preferences when running "
|
|
||||||
"GNOME Shell."
|
|
||||||
msgstr ""
|
|
||||||
"Dieser Schlüssel überschreibt den Schlüssel in »org.gnome.desktop.wm."
|
|
||||||
"preferences«, wenn die GNOME-Shell ausgeführt wird."
|
|
||||||
|
|
||||||
# identisch zum Schüssel in »gnome-shell«
|
|
||||||
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:24
|
|
||||||
msgid "Enable edge tiling when dropping windows on screen edges"
|
|
||||||
msgstr ""
|
|
||||||
"Größenanpassung aktivieren, wenn ein Fenster an die Bildschirmkante "
|
|
||||||
"verschoben wird"
|
|
||||||
|
|
||||||
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:32
|
|
||||||
msgid "Workspaces only on primary monitor"
|
|
||||||
msgstr "Arbeitsflächen nur auf dem Primärmonitor"
|
|
||||||
|
|
||||||
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:40
|
|
||||||
msgid "Delay focus changes in mouse mode until the pointer stops moving"
|
|
||||||
msgstr ""
|
|
||||||
"Fokuswechsel im Mausmodus verzögern, bis sich der Zeiger nicht mehr bewegt."
|
|
||||||
|
|
||||||
#: 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:38
|
|
||||||
msgid "Present windows as"
|
|
||||||
msgstr "Fenster darstellen als"
|
|
||||||
|
|
||||||
#: extensions/alternate-tab/prefs.js:69
|
|
||||||
msgid "Show only windows in the current workspace"
|
|
||||||
msgstr "Nur Fenster der aktuellen Arbeitsfläche anzeigen"
|
|
||||||
|
|
||||||
#: extensions/apps-menu/extension.js:41
|
|
||||||
msgid "Activities Overview"
|
|
||||||
msgstr "Aktivitäten-Übersicht"
|
|
||||||
|
|
||||||
#: extensions/apps-menu/extension.js:141
|
|
||||||
msgid "Favorites"
|
msgid "Favorites"
|
||||||
msgstr "Favoriten"
|
msgstr "Favoriten"
|
||||||
|
|
||||||
#: extensions/apps-menu/extension.js:436
|
#: extensions/apps-menu/extension.js:368
|
||||||
msgid "Applications"
|
msgid "Applications"
|
||||||
msgstr "Anwendungen"
|
msgstr "Anwendungen"
|
||||||
|
|
||||||
@@ -122,68 +57,38 @@ msgstr ""
|
|||||||
msgid "Application"
|
msgid "Application"
|
||||||
msgstr "Anwendung"
|
msgstr "Anwendung"
|
||||||
|
|
||||||
#: extensions/auto-move-windows/prefs.js:69
|
#: extensions/auto-move-windows/prefs.js:71
|
||||||
#: extensions/auto-move-windows/prefs.js:127
|
#: extensions/auto-move-windows/prefs.js:134
|
||||||
msgid "Workspace"
|
msgid "Workspace"
|
||||||
msgstr "Arbeitsfläche "
|
msgstr "Arbeitsfläche"
|
||||||
|
|
||||||
#: extensions/auto-move-windows/prefs.js:85
|
#: extensions/auto-move-windows/prefs.js:89
|
||||||
msgid "Add Rule"
|
msgid "Add Rule"
|
||||||
msgstr "Regel hinzufügen"
|
msgstr "Regel hinzufügen"
|
||||||
|
|
||||||
#: extensions/auto-move-windows/prefs.js:106
|
#: extensions/auto-move-windows/prefs.js:111
|
||||||
msgid "Create new matching rule"
|
msgid "Create new matching rule"
|
||||||
msgstr "Neue Übereinstimmungsregel erstellen"
|
msgstr "Neue Übereinstimmungsregel erstellen"
|
||||||
|
|
||||||
#: extensions/auto-move-windows/prefs.js:111
|
#: extensions/auto-move-windows/prefs.js:117
|
||||||
msgid "Add"
|
msgid "Add"
|
||||||
msgstr "Hinzufügen"
|
msgstr "Hinzufügen"
|
||||||
|
|
||||||
#: extensions/drive-menu/extension.js:106
|
#. TRANSLATORS: %s is the filesystem name
|
||||||
|
#: extensions/drive-menu/extension.js:102
|
||||||
|
#: extensions/places-menu/placeDisplay.js:232
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "Ejecting drive “%s” failed:"
|
msgid "Ejecting drive “%s” failed:"
|
||||||
msgstr "Auswerfen von Laufwerk »%s« schlug fehl:"
|
msgstr "Auswerfen von Laufwerk »%s« schlug fehl:"
|
||||||
|
|
||||||
#: extensions/drive-menu/extension.js:124
|
#: extensions/drive-menu/extension.js:118
|
||||||
msgid "Removable devices"
|
msgid "Removable devices"
|
||||||
msgstr "Wechseldatenträger"
|
msgstr "Wechseldatenträger"
|
||||||
|
|
||||||
#: extensions/drive-menu/extension.js:149
|
#: extensions/drive-menu/extension.js:145
|
||||||
msgid "Open Files"
|
msgid "Open Files"
|
||||||
msgstr "Dateien öffnen"
|
msgstr "Dateien öffnen"
|
||||||
|
|
||||||
#: extensions/example/extension.js:17
|
|
||||||
msgid "Hello, world!"
|
|
||||||
msgstr "Hallo Welt!"
|
|
||||||
|
|
||||||
#: extensions/example/org.gnome.shell.extensions.example.gschema.xml:5
|
|
||||||
msgid "Alternative greeting text."
|
|
||||||
msgstr "Alternativer Begrüßungstext."
|
|
||||||
|
|
||||||
#: extensions/example/org.gnome.shell.extensions.example.gschema.xml:6
|
|
||||||
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/example/prefs.js:30
|
|
||||||
msgid "Message"
|
|
||||||
msgstr "Nachricht"
|
|
||||||
|
|
||||||
#. TRANSLATORS: Example is the name of the extension, should not be
|
|
||||||
#. translated
|
|
||||||
#: extensions/example/prefs.js:43
|
|
||||||
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/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:5
|
#: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:5
|
||||||
msgid "Use more screen for windows"
|
msgid "Use more screen for windows"
|
||||||
msgstr "Mehr Bildschirmbereich für Fenster verwenden"
|
msgstr "Mehr Bildschirmbereich für Fenster verwenden"
|
||||||
@@ -214,31 +119,31 @@ msgstr ""
|
|||||||
"Vorschaubild platziert und damit die Voreinstellung der Shell übergangen. "
|
"Vorschaubild platziert und damit die Voreinstellung der Shell übergangen. "
|
||||||
"Eine Änderungseinstellung tritt erst mit einem Neustart der Shell in Kraft."
|
"Eine Änderungseinstellung tritt erst mit einem Neustart der Shell in Kraft."
|
||||||
|
|
||||||
#: extensions/places-menu/extension.js:78
|
#: extensions/places-menu/extension.js:80
|
||||||
#: extensions/places-menu/extension.js:81
|
#: extensions/places-menu/extension.js:84
|
||||||
msgid "Places"
|
msgid "Places"
|
||||||
msgstr "Orte"
|
msgstr "Orte"
|
||||||
|
|
||||||
#: extensions/places-menu/placeDisplay.js:65
|
#: extensions/places-menu/placeDisplay.js:46
|
||||||
#, javascript-format
|
|
||||||
msgid "Failed to mount volume for “%s”"
|
|
||||||
msgstr "Datenträger für »%s« konnte nicht eingebunden werden"
|
|
||||||
|
|
||||||
#: extensions/places-menu/placeDisplay.js:78
|
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "Failed to launch “%s”"
|
msgid "Failed to launch “%s”"
|
||||||
msgstr "Starten von »%s« fehlgeschlagen"
|
msgstr "Starten von »%s« fehlgeschlagen"
|
||||||
|
|
||||||
#: extensions/places-menu/placeDisplay.js:137
|
#: extensions/places-menu/placeDisplay.js:61
|
||||||
#: extensions/places-menu/placeDisplay.js:160
|
#, javascript-format
|
||||||
|
msgid "Failed to mount volume for “%s”"
|
||||||
|
msgstr "Datenträger für »%s« konnte nicht eingebunden werden"
|
||||||
|
|
||||||
|
#: extensions/places-menu/placeDisplay.js:148
|
||||||
|
#: extensions/places-menu/placeDisplay.js:171
|
||||||
msgid "Computer"
|
msgid "Computer"
|
||||||
msgstr "Rechner"
|
msgstr "Rechner"
|
||||||
|
|
||||||
#: extensions/places-menu/placeDisplay.js:303
|
#: extensions/places-menu/placeDisplay.js:358
|
||||||
msgid "Home"
|
msgid "Home"
|
||||||
msgstr "Persönlicher Ordner"
|
msgstr "Persönlicher Ordner"
|
||||||
|
|
||||||
#: extensions/places-menu/placeDisplay.js:347
|
#: extensions/places-menu/placeDisplay.js:403
|
||||||
msgid "Browse Network"
|
msgid "Browse Network"
|
||||||
msgstr "Netzwerk durchsuchen"
|
msgstr "Netzwerk durchsuchen"
|
||||||
|
|
||||||
@@ -260,52 +165,47 @@ msgstr ""
|
|||||||
"Der Name des Themas, welches aus ~/.themes/name/gnome-shell geladen werden "
|
"Der Name des Themas, welches aus ~/.themes/name/gnome-shell geladen werden "
|
||||||
"soll"
|
"soll"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:110
|
#: extensions/window-list/extension.js:99
|
||||||
msgid "Close"
|
msgid "Close"
|
||||||
msgstr "Schließen"
|
msgstr "Schließen"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:129
|
#: extensions/window-list/extension.js:119
|
||||||
msgid "Unminimize"
|
msgid "Unminimize"
|
||||||
msgstr "Minimieren rückgängig"
|
msgstr "Minimieren rückgängig"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:130
|
#: extensions/window-list/extension.js:119
|
||||||
msgid "Minimize"
|
msgid "Minimize"
|
||||||
msgstr "Minimieren"
|
msgstr "Minimieren"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:136
|
#: extensions/window-list/extension.js:126
|
||||||
msgid "Unmaximize"
|
msgid "Unmaximize"
|
||||||
msgstr "Maximieren rückgängig"
|
msgstr "Maximieren rückgängig"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:137
|
#: extensions/window-list/extension.js:126
|
||||||
msgid "Maximize"
|
msgid "Maximize"
|
||||||
msgstr "Maximieren"
|
msgstr "Maximieren"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:420
|
#: extensions/window-list/extension.js:431
|
||||||
msgid "Minimize all"
|
msgid "Minimize all"
|
||||||
msgstr "Alle minimieren"
|
msgstr "Alle minimieren"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:428
|
#: extensions/window-list/extension.js:437
|
||||||
msgid "Unminimize all"
|
msgid "Unminimize all"
|
||||||
msgstr "Alle minimieren rückgängig"
|
msgstr "Alle minimieren rückgängig"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:436
|
#: extensions/window-list/extension.js:443
|
||||||
msgid "Maximize all"
|
msgid "Maximize all"
|
||||||
msgstr "Alle maximieren"
|
msgstr "Alle maximieren"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:445
|
#: extensions/window-list/extension.js:451
|
||||||
msgid "Unmaximize all"
|
msgid "Unmaximize all"
|
||||||
msgstr "Alle maximieren rückgängig"
|
msgstr "Alle maximieren rückgängig"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:454
|
#: extensions/window-list/extension.js:459
|
||||||
msgid "Close all"
|
msgid "Close all"
|
||||||
msgstr "Alle schließen"
|
msgstr "Alle schließen"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:678
|
#: extensions/window-list/extension.js:741
|
||||||
#: extensions/workspace-indicator/extension.js:30
|
|
||||||
msgid "Workspace Indicator"
|
|
||||||
msgstr "Arbeitsflächenindikator"
|
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:842
|
|
||||||
msgid "Window List"
|
msgid "Window List"
|
||||||
msgstr "Fensterliste"
|
msgstr "Fensterliste"
|
||||||
|
|
||||||
@@ -323,10 +223,21 @@ msgstr ""
|
|||||||
"»always« (immer)."
|
"»always« (immer)."
|
||||||
|
|
||||||
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:20
|
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:20
|
||||||
|
#: extensions/window-list/prefs.js:82
|
||||||
|
msgid "Show windows from all workspaces"
|
||||||
|
msgstr "Fenster von allen Arbeitsflächen anzeigen"
|
||||||
|
|
||||||
|
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:21
|
||||||
|
msgid "Whether to show windows from all workspaces or only the current one."
|
||||||
|
msgstr ""
|
||||||
|
"Legt fest, ob Fenster von allen oder nur der aktuellen Arbeitsflächen "
|
||||||
|
"angezeigt werden."
|
||||||
|
|
||||||
|
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:27
|
||||||
msgid "Show the window list on all monitors"
|
msgid "Show the window list on all monitors"
|
||||||
msgstr "Die Fensterliste auf allen Bildschirmen anzeigen"
|
msgstr "Die Fensterliste auf allen Bildschirmen anzeigen"
|
||||||
|
|
||||||
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:21
|
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:28
|
||||||
msgid ""
|
msgid ""
|
||||||
"Whether to show the window list on all connected monitors or only on the "
|
"Whether to show the window list on all connected monitors or only on the "
|
||||||
"primary one."
|
"primary one."
|
||||||
@@ -334,19 +245,19 @@ msgstr ""
|
|||||||
"Legt fest, ob die Fensterliste auf allen angeschlossenen Bildschirmen "
|
"Legt fest, ob die Fensterliste auf allen angeschlossenen Bildschirmen "
|
||||||
"angezeigt wird oder nur auf dem Primären."
|
"angezeigt wird oder nur auf dem Primären."
|
||||||
|
|
||||||
#: extensions/window-list/prefs.js:32
|
#: extensions/window-list/prefs.js:25
|
||||||
msgid "Window Grouping"
|
msgid "Window Grouping"
|
||||||
msgstr "Fenstergruppierung"
|
msgstr "Fenstergruppierung"
|
||||||
|
|
||||||
#: extensions/window-list/prefs.js:50
|
#: extensions/window-list/prefs.js:47
|
||||||
msgid "Never group windows"
|
msgid "Never group windows"
|
||||||
msgstr "Fenster niemals gruppieren"
|
msgstr "Fenster niemals gruppieren"
|
||||||
|
|
||||||
#: extensions/window-list/prefs.js:51
|
#: extensions/window-list/prefs.js:48
|
||||||
msgid "Group windows when space is limited"
|
msgid "Group windows when space is limited"
|
||||||
msgstr "Fenster bei Platzmangel gruppieren"
|
msgstr "Fenster bei Platzmangel gruppieren"
|
||||||
|
|
||||||
#: extensions/window-list/prefs.js:52
|
#: extensions/window-list/prefs.js:49
|
||||||
msgid "Always group windows"
|
msgid "Always group windows"
|
||||||
msgstr "Fenster immer gruppieren"
|
msgstr "Fenster immer gruppieren"
|
||||||
|
|
||||||
@@ -354,15 +265,93 @@ msgstr "Fenster immer gruppieren"
|
|||||||
msgid "Show on all monitors"
|
msgid "Show on all monitors"
|
||||||
msgstr "Auf allen Bildschirmen anzeigen"
|
msgstr "Auf allen Bildschirmen anzeigen"
|
||||||
|
|
||||||
#: extensions/workspace-indicator/prefs.js:141
|
#: extensions/window-list/workspaceIndicator.js:211
|
||||||
|
#: extensions/workspace-indicator/extension.js:216
|
||||||
|
msgid "Workspace Indicator"
|
||||||
|
msgstr "Arbeitsflächenindikator"
|
||||||
|
|
||||||
|
#: extensions/workspace-indicator/prefs.js:131
|
||||||
msgid "Workspace Names"
|
msgid "Workspace Names"
|
||||||
msgstr "Namen der Arbeitsflächen"
|
msgstr "Namen der Arbeitsflächen"
|
||||||
|
|
||||||
#: extensions/workspace-indicator/prefs.js:157
|
#: extensions/workspace-indicator/prefs.js:151
|
||||||
msgid "Name"
|
msgid "Name"
|
||||||
msgstr "Name"
|
msgstr "Name"
|
||||||
|
|
||||||
#: extensions/workspace-indicator/prefs.js:198
|
#: extensions/workspace-indicator/prefs.js:191
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "Workspace %d"
|
msgid "Workspace %d"
|
||||||
msgstr "Arbeitsfläche %d"
|
msgstr "Arbeitsfläche %d"
|
||||||
|
|
||||||
|
#~ msgid "Attach modal dialog to the parent window"
|
||||||
|
#~ msgstr "Einen modalen Dialog an das übergeordnete Fenster anhängen"
|
||||||
|
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "This key overrides the key in org.gnome.mutter when running GNOME Shell."
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "Dieser Schlüssel überschreibt den Schlüssel in »org.gnome.mutter«, wenn "
|
||||||
|
#~ "die GNOME-Shell ausgeführt wird."
|
||||||
|
|
||||||
|
#~ msgid "Arrangement of buttons on the titlebar"
|
||||||
|
#~ msgstr "Anordnung von Knöpfen auf der Titelleiste"
|
||||||
|
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "This key overrides the key in org.gnome.desktop.wm.preferences when "
|
||||||
|
#~ "running GNOME Shell."
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "Dieser Schlüssel überschreibt den Schlüssel in »org.gnome.desktop.wm."
|
||||||
|
#~ "preferences«, wenn die GNOME-Shell ausgeführt wird."
|
||||||
|
|
||||||
|
# identisch zum Schüssel in »gnome-shell«
|
||||||
|
#~ msgid "Enable edge tiling when dropping windows on screen edges"
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "Größenanpassung aktivieren, wenn ein Fenster an die Bildschirmkante "
|
||||||
|
#~ "verschoben wird"
|
||||||
|
|
||||||
|
#~ msgid "Workspaces only on primary monitor"
|
||||||
|
#~ msgstr "Arbeitsflächen nur auf dem Primärmonitor"
|
||||||
|
|
||||||
|
#~ msgid "Delay focus changes in mouse mode until the pointer stops moving"
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "Fokuswechsel im Mausmodus verzögern, bis sich der Zeiger nicht mehr "
|
||||||
|
#~ "bewegt."
|
||||||
|
|
||||||
|
#~ msgid "Thumbnail only"
|
||||||
|
#~ msgstr "Nur Vorschaubild"
|
||||||
|
|
||||||
|
#~ msgid "Application icon only"
|
||||||
|
#~ msgstr "Nur Anwendungssymbol"
|
||||||
|
|
||||||
|
#~ msgid "Thumbnail and application icon"
|
||||||
|
#~ msgstr "Vorschaubild und Anwendungssymbol"
|
||||||
|
|
||||||
|
#~ msgid "Present windows as"
|
||||||
|
#~ msgstr "Fenster darstellen als"
|
||||||
|
|
||||||
|
#~ msgid "Activities Overview"
|
||||||
|
#~ msgstr "Aktivitäten-Übersicht"
|
||||||
|
|
||||||
|
#~ msgid "Hello, world!"
|
||||||
|
#~ msgstr "Hallo Welt!"
|
||||||
|
|
||||||
|
#~ msgid "Alternative greeting text."
|
||||||
|
#~ msgstr "Alternativer Begrüßungstext."
|
||||||
|
|
||||||
|
#~ 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."
|
||||||
|
|
||||||
|
#~ msgid "Message"
|
||||||
|
#~ msgstr "Nachricht"
|
||||||
|
|
||||||
|
#~ 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."
|
||||||
|
|||||||
@@ -5,22 +5,23 @@
|
|||||||
# Ιωάννης Ζαμπούκας <ioza1964@yahoo.gr>, 2011.
|
# Ιωάννης Ζαμπούκας <ioza1964@yahoo.gr>, 2011.
|
||||||
# Dimitris Spingos (Δημήτρης Σπίγγος) <dmtrs32@gmail.com>, 2013, 2015.
|
# Dimitris Spingos (Δημήτρης Σπίγγος) <dmtrs32@gmail.com>, 2013, 2015.
|
||||||
# Vangelis Skarmoutsos <skarmoutsosv@gmail.com>, 2013.
|
# Vangelis Skarmoutsos <skarmoutsosv@gmail.com>, 2013.
|
||||||
# Efstathios Iosifidis <iosifidis@opensuse.org>, 2013.
|
# Efstathios Iosifidis <iosifidis@opensuse.org>, 2013-2019.
|
||||||
|
#
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: gnome-shell-extensions master\n"
|
"Project-Id-Version: gnome-shell-extensions master\n"
|
||||||
"Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
|
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell-extensions/"
|
||||||
"shell&keywords=I18N+L10N&component=extensions\n"
|
"issues\n"
|
||||||
"POT-Creation-Date: 2017-08-11 01:33+0000\n"
|
"POT-Creation-Date: 2019-08-09 22:24+0000\n"
|
||||||
"PO-Revision-Date: 2017-09-09 14:10+0200\n"
|
"PO-Revision-Date: 2019-09-05 19:27+0300\n"
|
||||||
"Last-Translator: Efstathios Iosifidis <iosifidis@opensuse.org>\n"
|
"Last-Translator: Efstathios Iosifidis <iosifidis@opensuse.org>\n"
|
||||||
"Language-Team: team@lists.gnome.gr\n"
|
"Language-Team: Greek, Modern (1453-) <gnome-el-list@gnome.org>\n"
|
||||||
"Language: el\n"
|
"Language: el\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
|
||||||
"X-Generator: Poedit 1.5.7\n"
|
"X-Generator: Gtranslator 3.32.1\n"
|
||||||
"X-Project-Style: gnome\n"
|
"X-Project-Style: gnome\n"
|
||||||
|
|
||||||
#: data/gnome-classic.desktop.in:3 data/gnome-classic.session.desktop.in:3
|
#: data/gnome-classic.desktop.in:3 data/gnome-classic.session.desktop.in:3
|
||||||
@@ -31,77 +32,11 @@ msgstr "GNOME Classic"
|
|||||||
msgid "This session logs you into GNOME Classic"
|
msgid "This session logs you into GNOME Classic"
|
||||||
msgstr "Αυτή η συνεδρία σας συνδέει στο GNOME Classic"
|
msgstr "Αυτή η συνεδρία σας συνδέει στο GNOME Classic"
|
||||||
|
|
||||||
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:7
|
#: extensions/apps-menu/extension.js:113
|
||||||
msgid "Attach modal dialog to the parent window"
|
|
||||||
msgstr "Προσάρτηση αποκλειστικού διαλόγου στο γονικό παράθυρο"
|
|
||||||
|
|
||||||
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:8
|
|
||||||
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:25
|
|
||||||
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:33
|
|
||||||
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:41
|
|
||||||
msgid ""
|
|
||||||
"This key overrides the key in org.gnome.mutter when running GNOME Shell."
|
|
||||||
msgstr ""
|
|
||||||
"Αυτό το κλειδί επικαλύπτει το κλειδί στο org.gnome.mutter όταν εκτελείται το "
|
|
||||||
"GNOME Shell."
|
|
||||||
|
|
||||||
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:16
|
|
||||||
msgid "Arrangement of buttons on the titlebar"
|
|
||||||
msgstr "Διάταξη κουμπιών της γραμμής τίτλου"
|
|
||||||
|
|
||||||
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:17
|
|
||||||
msgid ""
|
|
||||||
"This key overrides the key in org.gnome.desktop.wm.preferences when running "
|
|
||||||
"GNOME Shell."
|
|
||||||
msgstr ""
|
|
||||||
"Αυτό το κλειδί επικαλύπτει το κλειδί στο org.gnome.mutter όταν εκτελείται το "
|
|
||||||
"GNOME Shell."
|
|
||||||
|
|
||||||
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:24
|
|
||||||
msgid "Enable edge tiling when dropping windows on screen edges"
|
|
||||||
msgstr ""
|
|
||||||
"Ενεργοποίηση προσκόλλησης στην άκρη, όταν αφήνονται παράθυρα στα άκρα της "
|
|
||||||
"οθόνης"
|
|
||||||
|
|
||||||
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:32
|
|
||||||
msgid "Workspaces only on primary monitor"
|
|
||||||
msgstr "Χώροι εργασίας μόνο στην κύρια οθόνη"
|
|
||||||
|
|
||||||
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:40
|
|
||||||
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:38
|
|
||||||
msgid "Present windows as"
|
|
||||||
msgstr "Παρουσίαση παραθύρων ως"
|
|
||||||
|
|
||||||
#: extensions/alternate-tab/prefs.js:69
|
|
||||||
msgid "Show only windows in the current workspace"
|
|
||||||
msgstr "Εμφάνιση μόνο των παραθύρων του τρέχοντος χώρου εργασίας"
|
|
||||||
|
|
||||||
#: extensions/apps-menu/extension.js:41
|
|
||||||
msgid "Activities Overview"
|
|
||||||
msgstr "Επισκόπηση δραστηριοτήτων"
|
|
||||||
|
|
||||||
#: extensions/apps-menu/extension.js:141
|
|
||||||
msgid "Favorites"
|
msgid "Favorites"
|
||||||
msgstr "Αγαπημένα"
|
msgstr "Αγαπημένα"
|
||||||
|
|
||||||
#: extensions/apps-menu/extension.js:436
|
#: extensions/apps-menu/extension.js:368
|
||||||
msgid "Applications"
|
msgid "Applications"
|
||||||
msgstr "Εφαρμογές"
|
msgstr "Εφαρμογές"
|
||||||
|
|
||||||
@@ -122,70 +57,38 @@ msgstr ""
|
|||||||
msgid "Application"
|
msgid "Application"
|
||||||
msgstr "Εφαρμογή"
|
msgstr "Εφαρμογή"
|
||||||
|
|
||||||
#: extensions/auto-move-windows/prefs.js:69
|
#: extensions/auto-move-windows/prefs.js:71
|
||||||
#: extensions/auto-move-windows/prefs.js:127
|
#: extensions/auto-move-windows/prefs.js:134
|
||||||
msgid "Workspace"
|
msgid "Workspace"
|
||||||
msgstr "Χώρος εργασίας"
|
msgstr "Χώρος εργασίας"
|
||||||
|
|
||||||
#: extensions/auto-move-windows/prefs.js:85
|
#: extensions/auto-move-windows/prefs.js:89
|
||||||
msgid "Add Rule"
|
msgid "Add Rule"
|
||||||
msgstr "Προσθήκη κανόνα"
|
msgstr "Προσθήκη κανόνα"
|
||||||
|
|
||||||
#: extensions/auto-move-windows/prefs.js:106
|
#: extensions/auto-move-windows/prefs.js:111
|
||||||
msgid "Create new matching rule"
|
msgid "Create new matching rule"
|
||||||
msgstr "Δημιουργία νέου κανόνα αντιστοίχισης"
|
msgstr "Δημιουργία νέου κανόνα αντιστοίχισης"
|
||||||
|
|
||||||
#: extensions/auto-move-windows/prefs.js:111
|
#: extensions/auto-move-windows/prefs.js:117
|
||||||
msgid "Add"
|
msgid "Add"
|
||||||
msgstr "Προσθήκη"
|
msgstr "Προσθήκη"
|
||||||
|
|
||||||
#. TRANSLATORS: %s is the filesystem name
|
#. TRANSLATORS: %s is the filesystem name
|
||||||
#: extensions/drive-menu/extension.js:107
|
#: extensions/drive-menu/extension.js:102
|
||||||
|
#: extensions/places-menu/placeDisplay.js:232
|
||||||
|
#, javascript-format
|
||||||
msgid "Ejecting drive “%s” failed:"
|
msgid "Ejecting drive “%s” failed:"
|
||||||
msgstr "Αποτυχία εξαγωγής του δίσκου «%s»:"
|
msgstr "Αποτυχία εξαγωγής του δίσκου «%s»:"
|
||||||
|
|
||||||
#: extensions/drive-menu/extension.js:125
|
#: extensions/drive-menu/extension.js:118
|
||||||
msgid "Removable devices"
|
msgid "Removable devices"
|
||||||
msgstr "Αφαιρούμενες συσκευές"
|
msgstr "Αφαιρούμενες συσκευές"
|
||||||
|
|
||||||
#: extensions/drive-menu/extension.js:150
|
#: extensions/drive-menu/extension.js:145
|
||||||
#| msgid "Open File"
|
|
||||||
msgid "Open Files"
|
msgid "Open Files"
|
||||||
msgstr "Άνοιγμα αρχείων"
|
msgstr "Άνοιγμα αρχείων"
|
||||||
|
|
||||||
#: extensions/example/extension.js:17
|
|
||||||
msgid "Hello, world!"
|
|
||||||
msgstr "Γεια σου, κόσμε!"
|
|
||||||
|
|
||||||
#: extensions/example/org.gnome.shell.extensions.example.gschema.xml:5
|
|
||||||
msgid "Alternative greeting text."
|
|
||||||
msgstr "Εναλλακτικό κείμενο χαιρετισμού."
|
|
||||||
|
|
||||||
#: extensions/example/org.gnome.shell.extensions.example.gschema.xml:6
|
|
||||||
msgid ""
|
|
||||||
"If not empty, it contains the text that will be shown when clicking on the "
|
|
||||||
"panel."
|
|
||||||
msgstr ""
|
|
||||||
"Αν δεν είναι κενό, περιέχει το κείμενο που θα εμφανιστεί όταν γίνεται κλικ "
|
|
||||||
"στον πίνακα εφαρμογών."
|
|
||||||
|
|
||||||
#: extensions/example/prefs.js:30
|
|
||||||
msgid "Message"
|
|
||||||
msgstr "Μήνυμα"
|
|
||||||
|
|
||||||
#. TRANSLATORS: Example is the name of the extension, should not be
|
|
||||||
#. translated
|
|
||||||
#: extensions/example/prefs.js:43
|
|
||||||
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/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:5
|
#: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:5
|
||||||
msgid "Use more screen for windows"
|
msgid "Use more screen for windows"
|
||||||
msgstr "Χρησιμοποιήστε περισσότερη οθόνη για τα παράθυρα"
|
msgstr "Χρησιμοποιήστε περισσότερη οθόνη για τα παράθυρα"
|
||||||
@@ -216,30 +119,31 @@ msgstr ""
|
|||||||
"στο κάτω μέρος. Η αλλαγή αυτής της ρύθμισης απαιτεί επανεκκίνηση του "
|
"στο κάτω μέρος. Η αλλαγή αυτής της ρύθμισης απαιτεί επανεκκίνηση του "
|
||||||
"κελύφους για να υπάρξει κάποιο αποτέλεσμα."
|
"κελύφους για να υπάρξει κάποιο αποτέλεσμα."
|
||||||
|
|
||||||
#: extensions/places-menu/extension.js:78
|
#: extensions/places-menu/extension.js:80
|
||||||
#: extensions/places-menu/extension.js:81
|
#: extensions/places-menu/extension.js:84
|
||||||
msgid "Places"
|
msgid "Places"
|
||||||
msgstr "Τοποθεσίες"
|
msgstr "Τοποθεσίες"
|
||||||
|
|
||||||
#: extensions/places-menu/placeDisplay.js:65
|
#: extensions/places-menu/placeDisplay.js:46
|
||||||
#| msgid "Failed to launch “%s”"
|
#, javascript-format
|
||||||
msgid "Failed to mount volume for “%s”"
|
|
||||||
msgstr "Αποτυχία προσάρτησης τόμου για «%s»"
|
|
||||||
|
|
||||||
#: extensions/places-menu/placeDisplay.js:78
|
|
||||||
msgid "Failed to launch “%s”"
|
msgid "Failed to launch “%s”"
|
||||||
msgstr "Αποτυχία εκκίνησης «%s»"
|
msgstr "Αποτυχία εκκίνησης «%s»"
|
||||||
|
|
||||||
#: extensions/places-menu/placeDisplay.js:137
|
#: extensions/places-menu/placeDisplay.js:61
|
||||||
#: extensions/places-menu/placeDisplay.js:160
|
#, javascript-format
|
||||||
|
msgid "Failed to mount volume for “%s”"
|
||||||
|
msgstr "Αποτυχία προσάρτησης τόμου για «%s»"
|
||||||
|
|
||||||
|
#: extensions/places-menu/placeDisplay.js:148
|
||||||
|
#: extensions/places-menu/placeDisplay.js:171
|
||||||
msgid "Computer"
|
msgid "Computer"
|
||||||
msgstr "Υπολογιστής"
|
msgstr "Υπολογιστής"
|
||||||
|
|
||||||
#: extensions/places-menu/placeDisplay.js:303
|
#: extensions/places-menu/placeDisplay.js:358
|
||||||
msgid "Home"
|
msgid "Home"
|
||||||
msgstr "Προσωπικός φάκελος"
|
msgstr "Προσωπικός φάκελος"
|
||||||
|
|
||||||
#: extensions/places-menu/placeDisplay.js:347
|
#: extensions/places-menu/placeDisplay.js:403
|
||||||
msgid "Browse Network"
|
msgid "Browse Network"
|
||||||
msgstr "Περιήγηση δικτύου"
|
msgstr "Περιήγηση δικτύου"
|
||||||
|
|
||||||
@@ -248,7 +152,6 @@ msgid "Cycle Screenshot Sizes"
|
|||||||
msgstr "Περιδιάβαση τα μεγέθη των στιγμιοτύπων"
|
msgstr "Περιδιάβαση τα μεγέθη των στιγμιοτύπων"
|
||||||
|
|
||||||
#: extensions/screenshot-window-sizer/org.gnome.shell.extensions.screenshot-window-sizer.gschema.xml:11
|
#: extensions/screenshot-window-sizer/org.gnome.shell.extensions.screenshot-window-sizer.gschema.xml:11
|
||||||
#| msgid "Cycle Screenshot Sizes"
|
|
||||||
msgid "Cycle Screenshot Sizes Backward"
|
msgid "Cycle Screenshot Sizes Backward"
|
||||||
msgstr "Μεγέθη κυκλικών στιγμιοτύπων προς τα πίσω"
|
msgstr "Μεγέθη κυκλικών στιγμιοτύπων προς τα πίσω"
|
||||||
|
|
||||||
@@ -261,52 +164,47 @@ msgid "The name of the theme, to be loaded from ~/.themes/name/gnome-shell"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Το όνομα του θέματος που θα φορτωθεί από το ~ /.themes/name/gnome-shell"
|
"Το όνομα του θέματος που θα φορτωθεί από το ~ /.themes/name/gnome-shell"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:110
|
#: extensions/window-list/extension.js:99
|
||||||
msgid "Close"
|
msgid "Close"
|
||||||
msgstr "Κλείσιμο"
|
msgstr "Κλείσιμο"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:129
|
#: extensions/window-list/extension.js:119
|
||||||
msgid "Unminimize"
|
msgid "Unminimize"
|
||||||
msgstr "Αποελαχιστοποίηση"
|
msgstr "Αποελαχιστοποίηση"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:130
|
#: extensions/window-list/extension.js:119
|
||||||
msgid "Minimize"
|
msgid "Minimize"
|
||||||
msgstr "Ελαχιστοποίηση"
|
msgstr "Ελαχιστοποίηση"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:136
|
#: extensions/window-list/extension.js:126
|
||||||
msgid "Unmaximize"
|
msgid "Unmaximize"
|
||||||
msgstr "Απομεγιστοποίηση"
|
msgstr "Απομεγιστοποίηση"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:137
|
#: extensions/window-list/extension.js:126
|
||||||
msgid "Maximize"
|
msgid "Maximize"
|
||||||
msgstr "Μεγιστοποίηση"
|
msgstr "Μεγιστοποίηση"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:420
|
#: extensions/window-list/extension.js:431
|
||||||
msgid "Minimize all"
|
msgid "Minimize all"
|
||||||
msgstr "Ελαχιστοποίηση όλων"
|
msgstr "Ελαχιστοποίηση όλων"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:428
|
#: extensions/window-list/extension.js:437
|
||||||
msgid "Unminimize all"
|
msgid "Unminimize all"
|
||||||
msgstr "Αποελαχιστοποίηση όλων"
|
msgstr "Αποελαχιστοποίηση όλων"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:436
|
#: extensions/window-list/extension.js:443
|
||||||
msgid "Maximize all"
|
msgid "Maximize all"
|
||||||
msgstr "Μεγιστοποίηση όλων"
|
msgstr "Μεγιστοποίηση όλων"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:445
|
#: extensions/window-list/extension.js:451
|
||||||
msgid "Unmaximize all"
|
msgid "Unmaximize all"
|
||||||
msgstr "Απομεγιστοποίηση όλων"
|
msgstr "Απομεγιστοποίηση όλων"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:454
|
#: extensions/window-list/extension.js:459
|
||||||
msgid "Close all"
|
msgid "Close all"
|
||||||
msgstr "Κλείσιμο όλων"
|
msgstr "Κλείσιμο όλων"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:678
|
#: extensions/window-list/extension.js:741
|
||||||
#: extensions/workspace-indicator/extension.js:30
|
|
||||||
msgid "Workspace Indicator"
|
|
||||||
msgstr "Δείκτης χώρου εργασίας"
|
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:842
|
|
||||||
msgid "Window List"
|
msgid "Window List"
|
||||||
msgstr "Λίστα παραθύρου"
|
msgstr "Λίστα παραθύρου"
|
||||||
|
|
||||||
@@ -324,10 +222,24 @@ msgstr ""
|
|||||||
"«always» (πάντα)."
|
"«always» (πάντα)."
|
||||||
|
|
||||||
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:20
|
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:20
|
||||||
|
#: extensions/window-list/prefs.js:82
|
||||||
|
#| msgid "Show only windows in the current workspace"
|
||||||
|
msgid "Show windows from all workspaces"
|
||||||
|
msgstr "Εμφάνιση των παραθύρων από όλους τους χώρους εργασίας"
|
||||||
|
|
||||||
|
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:21
|
||||||
|
#| msgid ""
|
||||||
|
#| "Whether to show the window list on all connected monitors or only on the "
|
||||||
|
#| "primary one."
|
||||||
|
msgid "Whether to show windows from all workspaces or only the current one."
|
||||||
|
msgstr ""
|
||||||
|
"Αν θα εμφανίζονται παράθυρα όλων των χώρων εργασίας ή μόνο του τρέχοντα."
|
||||||
|
|
||||||
|
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:27
|
||||||
msgid "Show the window list on all monitors"
|
msgid "Show the window list on all monitors"
|
||||||
msgstr "Να εμφανίζεται ο κατάλογος παραθύρων σε όλες τις οθόνες"
|
msgstr "Να εμφανίζεται ο κατάλογος παραθύρων σε όλες τις οθόνες"
|
||||||
|
|
||||||
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:21
|
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:28
|
||||||
msgid ""
|
msgid ""
|
||||||
"Whether to show the window list on all connected monitors or only on the "
|
"Whether to show the window list on all connected monitors or only on the "
|
||||||
"primary one."
|
"primary one."
|
||||||
@@ -335,19 +247,19 @@ msgstr ""
|
|||||||
"Αν θα εμφανίζεται ο κατάλογος παραθύρων όλων των συνδεμένων οθονών ή μόνο "
|
"Αν θα εμφανίζεται ο κατάλογος παραθύρων όλων των συνδεμένων οθονών ή μόνο "
|
||||||
"της κύριας οθόνης."
|
"της κύριας οθόνης."
|
||||||
|
|
||||||
#: extensions/window-list/prefs.js:32
|
#: extensions/window-list/prefs.js:25
|
||||||
msgid "Window Grouping"
|
msgid "Window Grouping"
|
||||||
msgstr "Ομαδοποίηση παραθύρου"
|
msgstr "Ομαδοποίηση παραθύρου"
|
||||||
|
|
||||||
#: extensions/window-list/prefs.js:50
|
#: extensions/window-list/prefs.js:47
|
||||||
msgid "Never group windows"
|
msgid "Never group windows"
|
||||||
msgstr "Να μη γίνεται ποτέ ομαδοποίηση παραθύρων"
|
msgstr "Να μη γίνεται ποτέ ομαδοποίηση παραθύρων"
|
||||||
|
|
||||||
#: extensions/window-list/prefs.js:51
|
#: extensions/window-list/prefs.js:48
|
||||||
msgid "Group windows when space is limited"
|
msgid "Group windows when space is limited"
|
||||||
msgstr "Ομαδοποίηση παραθύρων όταν ο χώρος είναι περιορισμένος"
|
msgstr "Ομαδοποίηση παραθύρων όταν ο χώρος είναι περιορισμένος"
|
||||||
|
|
||||||
#: extensions/window-list/prefs.js:52
|
#: extensions/window-list/prefs.js:49
|
||||||
msgid "Always group windows"
|
msgid "Always group windows"
|
||||||
msgstr "Να γίνεται πάντα ομαδοποίηση παραθύρων"
|
msgstr "Να γίνεται πάντα ομαδοποίηση παραθύρων"
|
||||||
|
|
||||||
@@ -355,18 +267,97 @@ msgstr "Να γίνεται πάντα ομαδοποίηση παραθύρων
|
|||||||
msgid "Show on all monitors"
|
msgid "Show on all monitors"
|
||||||
msgstr "Να εμφανίζεται σε όλες τις οθόνες"
|
msgstr "Να εμφανίζεται σε όλες τις οθόνες"
|
||||||
|
|
||||||
#: extensions/workspace-indicator/prefs.js:141
|
#: extensions/window-list/workspaceIndicator.js:211
|
||||||
|
#: extensions/workspace-indicator/extension.js:216
|
||||||
|
msgid "Workspace Indicator"
|
||||||
|
msgstr "Δείκτης χώρου εργασίας"
|
||||||
|
|
||||||
|
#: extensions/workspace-indicator/prefs.js:131
|
||||||
msgid "Workspace Names"
|
msgid "Workspace Names"
|
||||||
msgstr "Ονόματα χώρων εργασίας:"
|
msgstr "Ονόματα χώρων εργασίας:"
|
||||||
|
|
||||||
#: extensions/workspace-indicator/prefs.js:157
|
#: extensions/workspace-indicator/prefs.js:151
|
||||||
msgid "Name"
|
msgid "Name"
|
||||||
msgstr "Όνομα"
|
msgstr "Όνομα"
|
||||||
|
|
||||||
#: extensions/workspace-indicator/prefs.js:198
|
#: extensions/workspace-indicator/prefs.js:191
|
||||||
|
#, javascript-format
|
||||||
msgid "Workspace %d"
|
msgid "Workspace %d"
|
||||||
msgstr "Χώρος εργασίας %d"
|
msgstr "Χώρος εργασίας %d"
|
||||||
|
|
||||||
|
#~ msgid "Attach modal dialog to the parent window"
|
||||||
|
#~ msgstr "Προσάρτηση αποκλειστικού διαλόγου στο γονικό παράθυρο"
|
||||||
|
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "This key overrides the key in org.gnome.mutter when running GNOME Shell."
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "Αυτό το κλειδί επικαλύπτει το κλειδί στο org.gnome.mutter όταν εκτελείται "
|
||||||
|
#~ "το GNOME Shell."
|
||||||
|
|
||||||
|
#~ msgid "Arrangement of buttons on the titlebar"
|
||||||
|
#~ msgstr "Διάταξη κουμπιών της γραμμής τίτλου"
|
||||||
|
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "This key overrides the key in org.gnome.desktop.wm.preferences when "
|
||||||
|
#~ "running GNOME Shell."
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "Αυτό το κλειδί επικαλύπτει το κλειδί στο org.gnome.mutter όταν εκτελείται "
|
||||||
|
#~ "το GNOME Shell."
|
||||||
|
|
||||||
|
#~ msgid "Enable edge tiling when dropping windows on screen edges"
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "Ενεργοποίηση προσκόλλησης στην άκρη, όταν αφήνονται παράθυρα στα άκρα της "
|
||||||
|
#~ "οθόνης"
|
||||||
|
|
||||||
|
#~ msgid "Workspaces only on primary monitor"
|
||||||
|
#~ msgstr "Χώροι εργασίας μόνο στην κύρια οθόνη"
|
||||||
|
|
||||||
|
#~ msgid "Delay focus changes in mouse mode until the pointer stops moving"
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "Καθυστέρηση εστίασης αλλαγών στην κατάσταση ποντικιού μέχρι να σταματήσει "
|
||||||
|
#~ "να κινείται ο δείκτης"
|
||||||
|
|
||||||
|
#~ msgid "Thumbnail only"
|
||||||
|
#~ msgstr "Μόνο μικρογραφία"
|
||||||
|
|
||||||
|
#~ msgid "Application icon only"
|
||||||
|
#~ msgstr "Μόνο εικονίδιο εφαρμογής"
|
||||||
|
|
||||||
|
#~ msgid "Thumbnail and application icon"
|
||||||
|
#~ msgstr "Μικρογραφία και εικονίδιο εφαρμογής"
|
||||||
|
|
||||||
|
#~ msgid "Present windows as"
|
||||||
|
#~ msgstr "Παρουσίαση παραθύρων ως"
|
||||||
|
|
||||||
|
#~ msgid "Activities Overview"
|
||||||
|
#~ msgstr "Επισκόπηση δραστηριοτήτων"
|
||||||
|
|
||||||
|
#~ msgid "Hello, world!"
|
||||||
|
#~ msgstr "Γεια σου, κόσμε!"
|
||||||
|
|
||||||
|
#~ msgid "Alternative greeting text."
|
||||||
|
#~ msgstr "Εναλλακτικό κείμενο χαιρετισμού."
|
||||||
|
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "If not empty, it contains the text that will be shown when clicking on "
|
||||||
|
#~ "the panel."
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "Αν δεν είναι κενό, περιέχει το κείμενο που θα εμφανιστεί όταν γίνεται "
|
||||||
|
#~ "κλικ στον πίνακα εφαρμογών."
|
||||||
|
|
||||||
|
#~ msgid "Message"
|
||||||
|
#~ msgstr "Μήνυμα"
|
||||||
|
|
||||||
|
#~ 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"
|
||||||
|
#~ "Παρ' όλα αυτά είναι δυνατό να προσαρμόσετε το μήνυμα χαιρετισμού."
|
||||||
|
|
||||||
#~ msgid "CPU"
|
#~ msgid "CPU"
|
||||||
#~ msgstr "CPU"
|
#~ msgstr "CPU"
|
||||||
|
|
||||||
|
|||||||
+139
-157
@@ -4,21 +4,23 @@
|
|||||||
# Bruce Cowan <bruce@bcowan.eu>, 2011, 2018.
|
# Bruce Cowan <bruce@bcowan.eu>, 2011, 2018.
|
||||||
# Chris Leonard <cjlhomeaddress@gmail.com>, 2012.
|
# Chris Leonard <cjlhomeaddress@gmail.com>, 2012.
|
||||||
# Philip Withnall <philip@tecnocode.co.uk>, 2014.
|
# Philip Withnall <philip@tecnocode.co.uk>, 2014.
|
||||||
|
# Zander Brown <zbrown@gnome.org>, 2019.
|
||||||
|
#
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: gnome-shell-extensions\n"
|
"Project-Id-Version: gnome-shell-extensions\n"
|
||||||
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell-extensions/"
|
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell-extensions/"
|
||||||
"issues\n"
|
"issues\n"
|
||||||
"POT-Creation-Date: 2018-02-20 23:07+0000\n"
|
"POT-Creation-Date: 2019-08-09 22:24+0000\n"
|
||||||
"PO-Revision-Date: 2018-03-10 18:03+0000\n"
|
"PO-Revision-Date: 2019-08-25 16:49+0100\n"
|
||||||
"Last-Translator: Bruce Cowan <bruce@bcowan.eu>\n"
|
"Last-Translator: Zander Brown <zbrown@gnome.org>\n"
|
||||||
"Language-Team: Sugar Labs\n"
|
"Language-Team: English - United Kingdom <en_GB@li.org>\n"
|
||||||
"Language: en_GB\n"
|
"Language: en_GB\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||||
"X-Generator: Poedit 2.0.6\n"
|
"X-Generator: Gtranslator 3.32.1\n"
|
||||||
"X-Project-Style: gnome\n"
|
"X-Project-Style: gnome\n"
|
||||||
|
|
||||||
#: data/gnome-classic.desktop.in:3 data/gnome-classic.session.desktop.in:3
|
#: data/gnome-classic.desktop.in:3 data/gnome-classic.session.desktop.in:3
|
||||||
@@ -29,72 +31,11 @@ msgstr "GNOME Classic"
|
|||||||
msgid "This session logs you into GNOME Classic"
|
msgid "This session logs you into GNOME Classic"
|
||||||
msgstr "This session logs you into GNOME Classic"
|
msgstr "This session logs you into GNOME Classic"
|
||||||
|
|
||||||
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:7
|
#: extensions/apps-menu/extension.js:113
|
||||||
msgid "Attach modal dialog to the parent window"
|
|
||||||
msgstr "Attach modal dialogue to the parent window"
|
|
||||||
|
|
||||||
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:8
|
|
||||||
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:25
|
|
||||||
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:33
|
|
||||||
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:41
|
|
||||||
msgid ""
|
|
||||||
"This key overrides the key in org.gnome.mutter when running GNOME Shell."
|
|
||||||
msgstr ""
|
|
||||||
"This key overrides the key in org.gnome.mutter when running GNOME Shell."
|
|
||||||
|
|
||||||
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:16
|
|
||||||
msgid "Arrangement of buttons on the titlebar"
|
|
||||||
msgstr "Arrangement of buttons on the titlebar"
|
|
||||||
|
|
||||||
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:17
|
|
||||||
msgid ""
|
|
||||||
"This key overrides the key in org.gnome.desktop.wm.preferences when running "
|
|
||||||
"GNOME Shell."
|
|
||||||
msgstr ""
|
|
||||||
"This key overrides the key in org.gnome.desktop.wm.preferences when running "
|
|
||||||
"GNOME Shell."
|
|
||||||
|
|
||||||
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:24
|
|
||||||
msgid "Enable edge tiling when dropping windows on screen edges"
|
|
||||||
msgstr "Enable edge tiling when dropping windows on screen edges"
|
|
||||||
|
|
||||||
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:32
|
|
||||||
msgid "Workspaces only on primary monitor"
|
|
||||||
msgstr "Workspaces only on primary monitor"
|
|
||||||
|
|
||||||
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:40
|
|
||||||
msgid "Delay focus changes in mouse mode until the pointer stops moving"
|
|
||||||
msgstr "Delay focus changes in mouse mode until the pointer stops moving"
|
|
||||||
|
|
||||||
#: extensions/alternate-tab/prefs.js:19
|
|
||||||
msgid "Thumbnail only"
|
|
||||||
msgstr "Thumbnail only"
|
|
||||||
|
|
||||||
#: extensions/alternate-tab/prefs.js:20
|
|
||||||
msgid "Application icon only"
|
|
||||||
msgstr "Application icon only"
|
|
||||||
|
|
||||||
#: extensions/alternate-tab/prefs.js:21
|
|
||||||
msgid "Thumbnail and application icon"
|
|
||||||
msgstr "Thumbnail and application icon"
|
|
||||||
|
|
||||||
#: extensions/alternate-tab/prefs.js:34
|
|
||||||
msgid "Present windows as"
|
|
||||||
msgstr "Present windows as"
|
|
||||||
|
|
||||||
#: extensions/alternate-tab/prefs.js:65
|
|
||||||
msgid "Show only windows in the current workspace"
|
|
||||||
msgstr "Show only windows in the current workspace"
|
|
||||||
|
|
||||||
#: extensions/apps-menu/extension.js:37
|
|
||||||
msgid "Activities Overview"
|
|
||||||
msgstr "Activities Overview"
|
|
||||||
|
|
||||||
#: extensions/apps-menu/extension.js:130
|
|
||||||
msgid "Favorites"
|
msgid "Favorites"
|
||||||
msgstr "Favourites"
|
msgstr "Favourites"
|
||||||
|
|
||||||
#: extensions/apps-menu/extension.js:417
|
#: extensions/apps-menu/extension.js:368
|
||||||
msgid "Applications"
|
msgid "Applications"
|
||||||
msgstr "Applications"
|
msgstr "Applications"
|
||||||
|
|
||||||
@@ -110,32 +51,31 @@ msgstr ""
|
|||||||
"A list of strings, each containing an application id (desktop file name), "
|
"A list of strings, each containing an application id (desktop file name), "
|
||||||
"followed by a colon and the workspace number"
|
"followed by a colon and the workspace number"
|
||||||
|
|
||||||
#: extensions/auto-move-windows/prefs.js:53
|
#: extensions/auto-move-windows/prefs.js:60
|
||||||
msgid "Application"
|
msgid "Application"
|
||||||
msgstr "Application"
|
msgstr "Application"
|
||||||
|
|
||||||
#: extensions/auto-move-windows/prefs.js:62
|
#: extensions/auto-move-windows/prefs.js:71
|
||||||
#: extensions/auto-move-windows/prefs.js:117
|
#: extensions/auto-move-windows/prefs.js:134
|
||||||
msgid "Workspace"
|
msgid "Workspace"
|
||||||
msgstr "Workspace"
|
msgstr "Workspace"
|
||||||
|
|
||||||
#: extensions/auto-move-windows/prefs.js:78
|
#: extensions/auto-move-windows/prefs.js:89
|
||||||
msgid "Add Rule"
|
msgid "Add Rule"
|
||||||
msgstr "Add Rule"
|
msgstr "Add Rule"
|
||||||
|
|
||||||
#: extensions/auto-move-windows/prefs.js:98
|
#: extensions/auto-move-windows/prefs.js:111
|
||||||
msgid "Create new matching rule"
|
msgid "Create new matching rule"
|
||||||
msgstr "Create new matching rule"
|
msgstr "Create new matching rule"
|
||||||
|
|
||||||
#: extensions/auto-move-windows/prefs.js:103
|
#: extensions/auto-move-windows/prefs.js:117
|
||||||
msgid "Add"
|
msgid "Add"
|
||||||
msgstr "Add"
|
msgstr "Add"
|
||||||
|
|
||||||
#. TRANSLATORS: %s is the filesystem name
|
#. TRANSLATORS: %s is the filesystem name
|
||||||
#: extensions/drive-menu/extension.js:103
|
#: extensions/drive-menu/extension.js:102
|
||||||
#: extensions/places-menu/placeDisplay.js:219
|
#: extensions/places-menu/placeDisplay.js:232
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
#| msgid "Ejecting drive '%s' failed:"
|
|
||||||
msgid "Ejecting drive “%s” failed:"
|
msgid "Ejecting drive “%s” failed:"
|
||||||
msgstr "Ejecting drive “%s” failed:"
|
msgstr "Ejecting drive “%s” failed:"
|
||||||
|
|
||||||
@@ -143,47 +83,10 @@ msgstr "Ejecting drive “%s” failed:"
|
|||||||
msgid "Removable devices"
|
msgid "Removable devices"
|
||||||
msgstr "Removable devices"
|
msgstr "Removable devices"
|
||||||
|
|
||||||
#: extensions/drive-menu/extension.js:143
|
#: extensions/drive-menu/extension.js:145
|
||||||
#| msgid "Open File"
|
|
||||||
msgid "Open Files"
|
msgid "Open Files"
|
||||||
msgstr "Open Files"
|
msgstr "Open Files"
|
||||||
|
|
||||||
#: extensions/example/extension.js:17
|
|
||||||
msgid "Hello, world!"
|
|
||||||
msgstr "Hello, world!"
|
|
||||||
|
|
||||||
#: extensions/example/org.gnome.shell.extensions.example.gschema.xml:5
|
|
||||||
msgid "Alternative greeting text."
|
|
||||||
msgstr "Alternative greeting text."
|
|
||||||
|
|
||||||
#: extensions/example/org.gnome.shell.extensions.example.gschema.xml:6
|
|
||||||
msgid ""
|
|
||||||
"If not empty, it contains the text that will be shown when clicking on the "
|
|
||||||
"panel."
|
|
||||||
msgstr ""
|
|
||||||
"If not empty, it contains the text that will be shown when clicking on the "
|
|
||||||
"panel."
|
|
||||||
|
|
||||||
#: extensions/example/prefs.js:27
|
|
||||||
msgid "Message"
|
|
||||||
msgstr "Message"
|
|
||||||
|
|
||||||
#. TRANSLATORS: Example is the name of the extension, should not be
|
|
||||||
#. translated
|
|
||||||
#: extensions/example/prefs.js:40
|
|
||||||
#| 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."
|
|
||||||
msgid ""
|
|
||||||
"Example aims to show how to build well behaved extensions for the Shell and "
|
|
||||||
"as such it has little functionality on its own.\n"
|
|
||||||
"Nevertheless it’s possible to customize the greeting message."
|
|
||||||
msgstr ""
|
|
||||||
"Example aims to show how to build well behaved extensions for the Shell and "
|
|
||||||
"as such it has little functionality on its own.\n"
|
|
||||||
"Nevertheless it’s possible to customise the greeting message."
|
|
||||||
|
|
||||||
#: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:5
|
#: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:5
|
||||||
msgid "Use more screen for windows"
|
msgid "Use more screen for windows"
|
||||||
msgstr "Use more screen for windows"
|
msgstr "Use more screen for windows"
|
||||||
@@ -212,32 +115,31 @@ msgstr ""
|
|||||||
"shell default of placing it at the bottom. Changing this setting requires "
|
"shell default of placing it at the bottom. Changing this setting requires "
|
||||||
"restarting the shell to have any effect."
|
"restarting the shell to have any effect."
|
||||||
|
|
||||||
#: extensions/places-menu/extension.js:79
|
#: extensions/places-menu/extension.js:80
|
||||||
#: extensions/places-menu/extension.js:82
|
#: extensions/places-menu/extension.js:84
|
||||||
msgid "Places"
|
msgid "Places"
|
||||||
msgstr "Places"
|
msgstr "Places"
|
||||||
|
|
||||||
#: extensions/places-menu/placeDisplay.js:66
|
#: extensions/places-menu/placeDisplay.js:46
|
||||||
|
#, javascript-format
|
||||||
|
msgid "Failed to launch “%s”"
|
||||||
|
msgstr "Failed to launch “%s”"
|
||||||
|
|
||||||
|
#: extensions/places-menu/placeDisplay.js:61
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "Failed to mount volume for “%s”"
|
msgid "Failed to mount volume for “%s”"
|
||||||
msgstr "Failed to mount volume for “%s”"
|
msgstr "Failed to mount volume for “%s”"
|
||||||
|
|
||||||
#: extensions/places-menu/placeDisplay.js:79
|
#: extensions/places-menu/placeDisplay.js:148
|
||||||
#, javascript-format
|
#: extensions/places-menu/placeDisplay.js:171
|
||||||
#| msgid "Failed to launch \"%s\""
|
|
||||||
msgid "Failed to launch “%s”"
|
|
||||||
msgstr "Failed to launch “%s”"
|
|
||||||
|
|
||||||
#: extensions/places-menu/placeDisplay.js:135
|
|
||||||
#: extensions/places-menu/placeDisplay.js:158
|
|
||||||
msgid "Computer"
|
msgid "Computer"
|
||||||
msgstr "Computer"
|
msgstr "Computer"
|
||||||
|
|
||||||
#: extensions/places-menu/placeDisplay.js:336
|
#: extensions/places-menu/placeDisplay.js:358
|
||||||
msgid "Home"
|
msgid "Home"
|
||||||
msgstr "Home"
|
msgstr "Home"
|
||||||
|
|
||||||
#: extensions/places-menu/placeDisplay.js:378
|
#: extensions/places-menu/placeDisplay.js:403
|
||||||
msgid "Browse Network"
|
msgid "Browse Network"
|
||||||
msgstr "Browse Network"
|
msgstr "Browse Network"
|
||||||
|
|
||||||
@@ -246,7 +148,6 @@ msgid "Cycle Screenshot Sizes"
|
|||||||
msgstr "Cycle Screenshot Sizes"
|
msgstr "Cycle Screenshot Sizes"
|
||||||
|
|
||||||
#: extensions/screenshot-window-sizer/org.gnome.shell.extensions.screenshot-window-sizer.gschema.xml:11
|
#: extensions/screenshot-window-sizer/org.gnome.shell.extensions.screenshot-window-sizer.gschema.xml:11
|
||||||
#| msgid "Cycle Screenshot Sizes"
|
|
||||||
msgid "Cycle Screenshot Sizes Backward"
|
msgid "Cycle Screenshot Sizes Backward"
|
||||||
msgstr "Cycle Screenshot Sizes Backward"
|
msgstr "Cycle Screenshot Sizes Backward"
|
||||||
|
|
||||||
@@ -258,52 +159,47 @@ msgstr "Theme name"
|
|||||||
msgid "The name of the theme, to be loaded from ~/.themes/name/gnome-shell"
|
msgid "The name of the theme, to be loaded from ~/.themes/name/gnome-shell"
|
||||||
msgstr "The name of the theme, to be loaded from ~/.themes/name/gnome-shell"
|
msgstr "The name of the theme, to be loaded from ~/.themes/name/gnome-shell"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:106
|
#: extensions/window-list/extension.js:99
|
||||||
msgid "Close"
|
msgid "Close"
|
||||||
msgstr "Close"
|
msgstr "Close"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:125
|
#: extensions/window-list/extension.js:119
|
||||||
msgid "Unminimize"
|
msgid "Unminimize"
|
||||||
msgstr "Unminimise"
|
msgstr "Unminimise"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:126
|
#: extensions/window-list/extension.js:119
|
||||||
msgid "Minimize"
|
msgid "Minimize"
|
||||||
msgstr "Minimise"
|
msgstr "Minimise"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:132
|
#: extensions/window-list/extension.js:126
|
||||||
msgid "Unmaximize"
|
msgid "Unmaximize"
|
||||||
msgstr "Unmaximise"
|
msgstr "Unmaximise"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:133
|
#: extensions/window-list/extension.js:126
|
||||||
msgid "Maximize"
|
msgid "Maximize"
|
||||||
msgstr "Maximise"
|
msgstr "Maximise"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:408
|
#: extensions/window-list/extension.js:431
|
||||||
msgid "Minimize all"
|
msgid "Minimize all"
|
||||||
msgstr "Minimise all"
|
msgstr "Minimise all"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:414
|
#: extensions/window-list/extension.js:437
|
||||||
msgid "Unminimize all"
|
msgid "Unminimize all"
|
||||||
msgstr "Unminimise all"
|
msgstr "Unminimise all"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:420
|
#: extensions/window-list/extension.js:443
|
||||||
msgid "Maximize all"
|
msgid "Maximize all"
|
||||||
msgstr "Maximise all"
|
msgstr "Maximise all"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:429
|
#: extensions/window-list/extension.js:451
|
||||||
msgid "Unmaximize all"
|
msgid "Unmaximize all"
|
||||||
msgstr "Unmaximise all"
|
msgstr "Unmaximise all"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:438
|
#: extensions/window-list/extension.js:459
|
||||||
msgid "Close all"
|
msgid "Close all"
|
||||||
msgstr "Close all"
|
msgstr "Close all"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:646
|
#: extensions/window-list/extension.js:741
|
||||||
#: extensions/workspace-indicator/extension.js:26
|
|
||||||
msgid "Workspace Indicator"
|
|
||||||
msgstr "Workspace Indicator"
|
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:811
|
|
||||||
msgid "Window List"
|
msgid "Window List"
|
||||||
msgstr "Window List"
|
msgstr "Window List"
|
||||||
|
|
||||||
@@ -312,9 +208,6 @@ msgid "When to group windows"
|
|||||||
msgstr "When to group windows"
|
msgstr "When to group windows"
|
||||||
|
|
||||||
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:13
|
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:13
|
||||||
#| msgid ""
|
|
||||||
#| "Decides when to group windows from the same application on the window "
|
|
||||||
#| "list. Possible values are \"never\", \"auto\" and \"always\"."
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"Decides when to group windows from the same application on the window list. "
|
"Decides when to group windows from the same application on the window list. "
|
||||||
"Possible values are “never”, “auto” and “always”."
|
"Possible values are “never”, “auto” and “always”."
|
||||||
@@ -323,10 +216,23 @@ msgstr ""
|
|||||||
"Possible values are “never”, “auto” and “always”."
|
"Possible values are “never”, “auto” and “always”."
|
||||||
|
|
||||||
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:20
|
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:20
|
||||||
|
#: extensions/window-list/prefs.js:82
|
||||||
|
#| msgid "Show only windows in the current workspace"
|
||||||
|
msgid "Show windows from all workspaces"
|
||||||
|
msgstr "Show windows from all workspaces"
|
||||||
|
|
||||||
|
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:21
|
||||||
|
#| msgid ""
|
||||||
|
#| "Whether to show the window list on all connected monitors or only on the "
|
||||||
|
#| "primary one."
|
||||||
|
msgid "Whether to show windows from all workspaces or only the current one."
|
||||||
|
msgstr "Whether to show windows from all workspaces or only the current one."
|
||||||
|
|
||||||
|
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:27
|
||||||
msgid "Show the window list on all monitors"
|
msgid "Show the window list on all monitors"
|
||||||
msgstr "Show the window list on all monitors"
|
msgstr "Show the window list on all monitors"
|
||||||
|
|
||||||
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:21
|
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:28
|
||||||
msgid ""
|
msgid ""
|
||||||
"Whether to show the window list on all connected monitors or only on the "
|
"Whether to show the window list on all connected monitors or only on the "
|
||||||
"primary one."
|
"primary one."
|
||||||
@@ -334,39 +240,115 @@ msgstr ""
|
|||||||
"Whether to show the window list on all connected monitors or only on the "
|
"Whether to show the window list on all connected monitors or only on the "
|
||||||
"primary one."
|
"primary one."
|
||||||
|
|
||||||
#: extensions/window-list/prefs.js:28
|
#: extensions/window-list/prefs.js:25
|
||||||
msgid "Window Grouping"
|
msgid "Window Grouping"
|
||||||
msgstr "Window Grouping"
|
msgstr "Window Grouping"
|
||||||
|
|
||||||
#: extensions/window-list/prefs.js:46
|
#: extensions/window-list/prefs.js:47
|
||||||
msgid "Never group windows"
|
msgid "Never group windows"
|
||||||
msgstr "Never group windows"
|
msgstr "Never group windows"
|
||||||
|
|
||||||
#: extensions/window-list/prefs.js:47
|
#: extensions/window-list/prefs.js:48
|
||||||
msgid "Group windows when space is limited"
|
msgid "Group windows when space is limited"
|
||||||
msgstr "Group windows when space is limited"
|
msgstr "Group windows when space is limited"
|
||||||
|
|
||||||
#: extensions/window-list/prefs.js:48
|
#: extensions/window-list/prefs.js:49
|
||||||
msgid "Always group windows"
|
msgid "Always group windows"
|
||||||
msgstr "Always group windows"
|
msgstr "Always group windows"
|
||||||
|
|
||||||
#: extensions/window-list/prefs.js:71
|
#: extensions/window-list/prefs.js:75
|
||||||
msgid "Show on all monitors"
|
msgid "Show on all monitors"
|
||||||
msgstr "Show on all monitors"
|
msgstr "Show on all monitors"
|
||||||
|
|
||||||
#: extensions/workspace-indicator/prefs.js:134
|
#: extensions/window-list/workspaceIndicator.js:211
|
||||||
|
#: extensions/workspace-indicator/extension.js:216
|
||||||
|
msgid "Workspace Indicator"
|
||||||
|
msgstr "Workspace Indicator"
|
||||||
|
|
||||||
|
#: extensions/workspace-indicator/prefs.js:131
|
||||||
msgid "Workspace Names"
|
msgid "Workspace Names"
|
||||||
msgstr "Workspace Names"
|
msgstr "Workspace Names"
|
||||||
|
|
||||||
#: extensions/workspace-indicator/prefs.js:150
|
#: extensions/workspace-indicator/prefs.js:151
|
||||||
msgid "Name"
|
msgid "Name"
|
||||||
msgstr "Name"
|
msgstr "Name"
|
||||||
|
|
||||||
#: extensions/workspace-indicator/prefs.js:190
|
#: extensions/workspace-indicator/prefs.js:191
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "Workspace %d"
|
msgid "Workspace %d"
|
||||||
msgstr "Workspace %d"
|
msgstr "Workspace %d"
|
||||||
|
|
||||||
|
#~ msgid "Attach modal dialog to the parent window"
|
||||||
|
#~ msgstr "Attach modal dialogue to the parent window"
|
||||||
|
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "This key overrides the key in org.gnome.mutter when running GNOME Shell."
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "This key overrides the key in org.gnome.mutter when running GNOME Shell."
|
||||||
|
|
||||||
|
#~ msgid "Arrangement of buttons on the titlebar"
|
||||||
|
#~ msgstr "Arrangement of buttons on the titlebar"
|
||||||
|
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "This key overrides the key in org.gnome.desktop.wm.preferences when "
|
||||||
|
#~ "running GNOME Shell."
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "This key overrides the key in org.gnome.desktop.wm.preferences when "
|
||||||
|
#~ "running GNOME Shell."
|
||||||
|
|
||||||
|
#~ msgid "Enable edge tiling when dropping windows on screen edges"
|
||||||
|
#~ msgstr "Enable edge tiling when dropping windows on screen edges"
|
||||||
|
|
||||||
|
#~ msgid "Workspaces only on primary monitor"
|
||||||
|
#~ msgstr "Workspaces only on primary monitor"
|
||||||
|
|
||||||
|
#~ msgid "Delay focus changes in mouse mode until the pointer stops moving"
|
||||||
|
#~ msgstr "Delay focus changes in mouse mode until the pointer stops moving"
|
||||||
|
|
||||||
|
#~ msgid "Thumbnail only"
|
||||||
|
#~ msgstr "Thumbnail only"
|
||||||
|
|
||||||
|
#~ msgid "Application icon only"
|
||||||
|
#~ msgstr "Application icon only"
|
||||||
|
|
||||||
|
#~ msgid "Thumbnail and application icon"
|
||||||
|
#~ msgstr "Thumbnail and application icon"
|
||||||
|
|
||||||
|
#~ msgid "Present windows as"
|
||||||
|
#~ msgstr "Present windows as"
|
||||||
|
|
||||||
|
#~ msgid "Activities Overview"
|
||||||
|
#~ msgstr "Activities Overview"
|
||||||
|
|
||||||
|
#~ msgid "Hello, world!"
|
||||||
|
#~ msgstr "Hello, world!"
|
||||||
|
|
||||||
|
#~ msgid "Alternative greeting text."
|
||||||
|
#~ msgstr "Alternative greeting text."
|
||||||
|
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "If not empty, it contains the text that will be shown when clicking on "
|
||||||
|
#~ "the panel."
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "If not empty, it contains the text that will be shown when clicking on "
|
||||||
|
#~ "the panel."
|
||||||
|
|
||||||
|
#~ msgid "Message"
|
||||||
|
#~ msgstr "Message"
|
||||||
|
|
||||||
|
#~| 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."
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "Example aims to show how to build well behaved extensions for the Shell "
|
||||||
|
#~ "and as such it has little functionality on its own.\n"
|
||||||
|
#~ "Nevertheless it’s possible to customize the greeting message."
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "Example aims to show how to build well behaved extensions for the Shell "
|
||||||
|
#~ "and as such it has little functionality on its own.\n"
|
||||||
|
#~ "Nevertheless it’s possible to customise the greeting message."
|
||||||
|
|
||||||
#~ msgid "GNOME Shell Classic"
|
#~ msgid "GNOME Shell Classic"
|
||||||
#~ msgstr "GNOME Shell Classic"
|
#~ msgstr "GNOME Shell Classic"
|
||||||
|
|
||||||
|
|||||||
@@ -3,107 +3,45 @@
|
|||||||
# This file is distributed under the same license as the gnome-shell-extensions package.
|
# This file is distributed under the same license as the gnome-shell-extensions package.
|
||||||
# Ryan LORTIE <desrt@desrt.ca>, 2013.
|
# Ryan LORTIE <desrt@desrt.ca>, 2013.
|
||||||
# Daniel PUENTES <blatberk@openmailbox.org>, 2015.
|
# Daniel PUENTES <blatberk@openmailbox.org>, 2015.
|
||||||
# Kristjan SCHMIDT <kristjan.schmidt@googlemail.com>, 2011, 2015.
|
# Kristjan SCHMIDT <kristjan.schmidt@googlemail.com>, 2011-2019.
|
||||||
#
|
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: gnome-shell-extensions master\n"
|
"Project-Id-Version: gnome-shell-extensions master\n"
|
||||||
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
|
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell-extensions/"
|
||||||
"shell&keywords=I18N+L10N&component=extensions\n"
|
"issues\n"
|
||||||
"POT-Creation-Date: 2015-01-31 08:37+0000\n"
|
"POT-Creation-Date: 2020-03-31 07:16+0000\n"
|
||||||
"PO-Revision-Date: 2015-02-01 16:13+0100\n"
|
"PO-Revision-Date: 2020-04-18 10:59+0200\n"
|
||||||
"Last-Translator: Kristjan SCHMIDT <kristjan.schmidt@googlemail.com>\n"
|
"Last-Translator: Kristjan SCHMIDT <kristjan.schmidt@googlemail.com>\n"
|
||||||
"Language-Team: Esperanto <gnome-l10n-eo@lists.launchpad.net>\n"
|
"Language-Team: Esperanto <gnome-eo-list@gnome.org>\n"
|
||||||
"Language: eo\n"
|
"Language: eo\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||||
"X-Generator: Poedit 1.5.4\n"
|
"X-Generator: Poedit 2.3\n"
|
||||||
|
"X-Project-Style: gnome\n"
|
||||||
|
|
||||||
#: ../data/gnome-classic.desktop.in.h:1
|
#: data/gnome-classic.desktop.in:3 data/gnome-classic.session.desktop.in:3
|
||||||
#: ../data/gnome-classic.session.desktop.in.in.h:1
|
|
||||||
msgid "GNOME Classic"
|
msgid "GNOME Classic"
|
||||||
msgstr "GNOME-klasika"
|
msgstr "GNOME-klasika"
|
||||||
|
|
||||||
#: ../data/gnome-classic.desktop.in.h:2
|
#: data/gnome-classic.desktop.in:4
|
||||||
msgid "This session logs you into GNOME Classic"
|
msgid "This session logs you into GNOME Classic"
|
||||||
msgstr "Ĉi seanco ensalutas vin GNOME-klasiken"
|
msgstr "Ĉi seanco ensalutas vin GNOME-klasiken"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.extensions.classic-overrides.gschema.xml.in.h:1
|
#: extensions/apps-menu/extension.js:113
|
||||||
msgid "Attach modal dialog to the parent window"
|
|
||||||
msgstr "Kunligi modalan dialogon al la patra fenestro"
|
|
||||||
|
|
||||||
#: ../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 ""
|
|
||||||
"Ĉi ŝlosilo atutas la ŝlosilon en org.gnome.mutter kiam rulanta GNOME-ŝelon."
|
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.extensions.classic-overrides.gschema.xml.in.h:3
|
|
||||||
msgid "Arrangement of buttons on the titlebar"
|
|
||||||
msgstr "Aranĝo de butonoj en la titolbreto"
|
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.extensions.classic-overrides.gschema.xml.in.h:4
|
|
||||||
#| msgid ""
|
|
||||||
#| "This key overrides the key in org.gnome.mutter when running GNOME Shell."
|
|
||||||
msgid ""
|
|
||||||
"This key overrides the key in org.gnome.desktop.wm.preferences when running "
|
|
||||||
"GNOME Shell."
|
|
||||||
msgstr ""
|
|
||||||
"Ĉi tiu ŝlosilo anstataŭas la ŝlosilon en org.gnome.desktop.wm.preferences "
|
|
||||||
"kiam GNOME-ŝelo rulas."
|
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.extensions.classic-overrides.gschema.xml.in.h:5
|
|
||||||
msgid "Enable edge tiling when dropping windows on screen edges"
|
|
||||||
msgstr ""
|
|
||||||
"Aktivigi kahelan aranĝon kiam demetante fenestrojn sur ekranaj borderoj"
|
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.extensions.classic-overrides.gschema.xml.in.h:6
|
|
||||||
msgid "Workspaces only on primary monitor"
|
|
||||||
msgstr "Laborspacoj nur sur la ĉefa ekrano"
|
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.extensions.classic-overrides.gschema.xml.in.h:7
|
|
||||||
msgid "Delay focus changes in mouse mode until the pointer stops moving"
|
|
||||||
msgstr "En musa reĝimo, prokrasti ŝanĝi fokuson ĝis la musmontrilo haltas"
|
|
||||||
|
|
||||||
#: ../extensions/alternate-tab/prefs.js:20
|
|
||||||
msgid "Thumbnail only"
|
|
||||||
msgstr "Miniaturo nur"
|
|
||||||
|
|
||||||
#: ../extensions/alternate-tab/prefs.js:21
|
|
||||||
msgid "Application icon only"
|
|
||||||
msgstr "Aplikaĵa piktogramo nur"
|
|
||||||
|
|
||||||
#: ../extensions/alternate-tab/prefs.js:22
|
|
||||||
msgid "Thumbnail and application icon"
|
|
||||||
msgstr "Miniaturo kaj aplikaĵo piktogramo"
|
|
||||||
|
|
||||||
#: ../extensions/alternate-tab/prefs.js:38
|
|
||||||
msgid "Present windows as"
|
|
||||||
msgstr "Prezenti fenestron kiel"
|
|
||||||
|
|
||||||
#: ../extensions/alternate-tab/prefs.js:69
|
|
||||||
msgid "Show only windows in the current workspace"
|
|
||||||
msgstr "Montri nur fenestrojn en la aktuala laborspaco"
|
|
||||||
|
|
||||||
#: ../extensions/apps-menu/extension.js:39
|
|
||||||
msgid "Activities Overview"
|
|
||||||
msgstr "Aktivecoj-Superrigardon"
|
|
||||||
|
|
||||||
#: ../extensions/apps-menu/extension.js:114
|
|
||||||
msgid "Favorites"
|
msgid "Favorites"
|
||||||
msgstr "Plej ŝatataj"
|
msgstr "Plej ŝatataj"
|
||||||
|
|
||||||
#: ../extensions/apps-menu/extension.js:283
|
#: extensions/apps-menu/extension.js:369
|
||||||
msgid "Applications"
|
msgid "Applications"
|
||||||
msgstr "Aplikaĵoj"
|
msgstr "Aplikaĵoj"
|
||||||
|
|
||||||
#: ../extensions/auto-move-windows/org.gnome.shell.extensions.auto-move-windows.gschema.xml.in.h:1
|
#: extensions/auto-move-windows/org.gnome.shell.extensions.auto-move-windows.gschema.xml:6
|
||||||
msgid "Application and workspace list"
|
msgid "Application and workspace list"
|
||||||
msgstr "Aplikaĵa kaj laborspaca listo"
|
msgstr "Aplikaĵa kaj laborspaca listo"
|
||||||
|
|
||||||
#: ../extensions/auto-move-windows/org.gnome.shell.extensions.auto-move-windows.gschema.xml.in.h:2
|
#: extensions/auto-move-windows/org.gnome.shell.extensions.auto-move-windows.gschema.xml:7
|
||||||
msgid ""
|
msgid ""
|
||||||
"A list of strings, each containing an application id (desktop file name), "
|
"A list of strings, each containing an application id (desktop file name), "
|
||||||
"followed by a colon and the workspace number"
|
"followed by a colon and the workspace number"
|
||||||
@@ -111,76 +49,47 @@ msgstr ""
|
|||||||
"Listo de ĉenoj, ĉiu enhavas aplikaĵan identigilon ('desktop' dosiernomo), "
|
"Listo de ĉenoj, ĉiu enhavas aplikaĵan identigilon ('desktop' dosiernomo), "
|
||||||
"sevkita per dupunkto kaj la laborspaca numero"
|
"sevkita per dupunkto kaj la laborspaca numero"
|
||||||
|
|
||||||
#: ../extensions/auto-move-windows/prefs.js:60
|
#: extensions/auto-move-windows/prefs.js:59
|
||||||
msgid "Application"
|
msgid "Application"
|
||||||
msgstr "Aplikaĵo"
|
msgstr "Aplikaĵo"
|
||||||
|
|
||||||
#: ../extensions/auto-move-windows/prefs.js:69
|
#: extensions/auto-move-windows/prefs.js:70
|
||||||
#: ../extensions/auto-move-windows/prefs.js:127
|
#: extensions/auto-move-windows/prefs.js:133
|
||||||
msgid "Workspace"
|
msgid "Workspace"
|
||||||
msgstr "Laborspaco"
|
msgstr "Laborspaco"
|
||||||
|
|
||||||
#: ../extensions/auto-move-windows/prefs.js:85
|
#: extensions/auto-move-windows/prefs.js:88
|
||||||
#| msgid "Add rule"
|
|
||||||
msgid "Add Rule"
|
msgid "Add Rule"
|
||||||
msgstr "Aldoni regulon"
|
msgstr "Aldoni regulon"
|
||||||
|
|
||||||
#: ../extensions/auto-move-windows/prefs.js:106
|
#: extensions/auto-move-windows/prefs.js:110
|
||||||
msgid "Create new matching rule"
|
msgid "Create new matching rule"
|
||||||
msgstr "Krei novan kongruantan regulon"
|
msgstr "Krei novan kongruantan regulon"
|
||||||
|
|
||||||
#: ../extensions/auto-move-windows/prefs.js:111
|
#: extensions/auto-move-windows/prefs.js:116
|
||||||
msgid "Add"
|
msgid "Add"
|
||||||
msgstr "Aldoni"
|
msgstr "Aldoni"
|
||||||
|
|
||||||
#: ../extensions/drive-menu/extension.js:106
|
#. TRANSLATORS: %s is the filesystem name
|
||||||
msgid "Ejecting drive '%s' failed:"
|
#: extensions/drive-menu/extension.js:103
|
||||||
msgstr "Elĵeto de volumo '%s' malsukcesis:"
|
#: extensions/places-menu/placeDisplay.js:233
|
||||||
|
#, javascript-format
|
||||||
|
msgid "Ejecting drive “%s” failed:"
|
||||||
|
msgstr "Elĵeto de volumo “%s” malsukcesis:"
|
||||||
|
|
||||||
#: ../extensions/drive-menu/extension.js:124
|
#: extensions/drive-menu/extension.js:119
|
||||||
msgid "Removable devices"
|
msgid "Removable devices"
|
||||||
msgstr "Demeteblaj aparatoj"
|
msgstr "Demeteblaj aparatoj"
|
||||||
|
|
||||||
#: ../extensions/drive-menu/extension.js:151
|
#: extensions/drive-menu/extension.js:146
|
||||||
msgid "Open File"
|
msgid "Open Files"
|
||||||
msgstr "Malfermi dosieron"
|
msgstr "Malfermi dosierojn"
|
||||||
|
|
||||||
#: ../extensions/example/extension.js:17
|
#: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:5
|
||||||
msgid "Hello, world!"
|
|
||||||
msgstr "Saluton, mondo!"
|
|
||||||
|
|
||||||
#: ../extensions/example/org.gnome.shell.extensions.example.gschema.xml.in.h:1
|
|
||||||
msgid "Alternative greeting text."
|
|
||||||
msgstr "Alterna saluta teksto."
|
|
||||||
|
|
||||||
#: ../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 ""
|
|
||||||
"Se ne malplena, enhavas la tekston kiu estos montrita kiam alklakante sur la "
|
|
||||||
"panelo."
|
|
||||||
|
|
||||||
#: ../extensions/example/prefs.js:30
|
|
||||||
#| msgid "Message:"
|
|
||||||
msgid "Message"
|
|
||||||
msgstr "Mesaĝo"
|
|
||||||
|
|
||||||
#: ../extensions/example/prefs.js:43
|
|
||||||
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 ""
|
|
||||||
"Ekzemplo klopodas montri kial krei bone-kondutantan etendojn por la ŝelo kaj "
|
|
||||||
"sekve ne havas multan funkcion.\n"
|
|
||||||
"Tamen, eblas agordi la salutan mesagon."
|
|
||||||
|
|
||||||
#: ../extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml.in.h:1
|
|
||||||
msgid "Use more screen for windows"
|
msgid "Use more screen for windows"
|
||||||
msgstr "Uzi pli da ekrano por fenetroj"
|
msgstr "Uzi pli da ekrano por fenetroj"
|
||||||
|
|
||||||
#: ../extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml.in.h:2
|
#: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:6
|
||||||
msgid ""
|
msgid ""
|
||||||
"Try to use more screen for placing window thumbnails by adapting to screen "
|
"Try to use more screen for placing window thumbnails by adapting to screen "
|
||||||
"aspect ratio, and consolidating them further to reduce the bounding box. "
|
"aspect ratio, and consolidating them further to reduce the bounding box. "
|
||||||
@@ -190,11 +99,11 @@ msgstr ""
|
|||||||
"aspekta rilatumo, kaj kunfandi ilin plu por redukti la limigan keston. Ĉi "
|
"aspekta rilatumo, kaj kunfandi ilin plu por redukti la limigan keston. Ĉi "
|
||||||
"agordo uzitas nur kun la natura lokada strategio."
|
"agordo uzitas nur kun la natura lokada strategio."
|
||||||
|
|
||||||
#: ../extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml.in.h:3
|
#: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:11
|
||||||
msgid "Place window captions on top"
|
msgid "Place window captions on top"
|
||||||
msgstr "Meti fenestrajn apudskribojn supre"
|
msgstr "Meti fenestrajn apudskribojn supre"
|
||||||
|
|
||||||
#: ../extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml.in.h:4
|
#: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:12
|
||||||
msgid ""
|
msgid ""
|
||||||
"If true, place window captions on top the respective thumbnail, overriding "
|
"If true, place window captions on top the respective thumbnail, overriding "
|
||||||
"shell default of placing it at the bottom. Changing this setting requires "
|
"shell default of placing it at the bottom. Changing this setting requires "
|
||||||
@@ -204,154 +113,242 @@ msgstr ""
|
|||||||
"estas meti ĝin malsupre). Si vi ŝanĝas ĉi agordon tiam vi devas restartigi "
|
"estas meti ĝin malsupre). Si vi ŝanĝas ĉi agordon tiam vi devas restartigi "
|
||||||
"la ŝelon."
|
"la ŝelon."
|
||||||
|
|
||||||
#: ../extensions/places-menu/extension.js:78
|
#: extensions/places-menu/extension.js:80
|
||||||
#: ../extensions/places-menu/extension.js:81
|
#: extensions/places-menu/extension.js:84
|
||||||
msgid "Places"
|
msgid "Places"
|
||||||
msgstr "Lokoj"
|
msgstr "Lokoj"
|
||||||
|
|
||||||
#: ../extensions/places-menu/placeDisplay.js:57
|
#: extensions/places-menu/placeDisplay.js:46
|
||||||
msgid "Failed to launch \"%s\""
|
#, javascript-format
|
||||||
msgstr "Malsukceis lanĉi \"%s\""
|
msgid "Failed to launch “%s”"
|
||||||
|
msgstr "Malsukcesis lanĉi “%s”"
|
||||||
|
|
||||||
#: ../extensions/places-menu/placeDisplay.js:99
|
#: extensions/places-menu/placeDisplay.js:61
|
||||||
#: ../extensions/places-menu/placeDisplay.js:122
|
#, javascript-format
|
||||||
|
msgid "Failed to mount volume for “%s”"
|
||||||
|
msgstr "Ne eblis munti datumportilon por “%s”"
|
||||||
|
|
||||||
|
#: extensions/places-menu/placeDisplay.js:148
|
||||||
|
#: extensions/places-menu/placeDisplay.js:171
|
||||||
msgid "Computer"
|
msgid "Computer"
|
||||||
msgstr "Komputilo"
|
msgstr "Komputilo"
|
||||||
|
|
||||||
#: ../extensions/places-menu/placeDisplay.js:200
|
#: extensions/places-menu/placeDisplay.js:359
|
||||||
msgid "Home"
|
msgid "Home"
|
||||||
msgstr "Domo"
|
msgstr "Domo"
|
||||||
|
|
||||||
#: ../extensions/places-menu/placeDisplay.js:287
|
#: extensions/places-menu/placeDisplay.js:404
|
||||||
msgid "Browse Network"
|
msgid "Browse Network"
|
||||||
msgstr "Foliumi reton"
|
msgstr "Foliumi reton"
|
||||||
|
|
||||||
#: ../extensions/screenshot-window-sizer/org.gnome.shell.extensions.screenshot-window-sizer.gschema.xml.in.h:1
|
#: extensions/screenshot-window-sizer/org.gnome.shell.extensions.screenshot-window-sizer.gschema.xml:7
|
||||||
msgid "Cycle Screenshot Sizes"
|
msgid "Cycle Screenshot Sizes"
|
||||||
msgstr "Cikle montri ekrankopiajn grandojn"
|
msgstr "Cikle montri ekrankopiajn grandojn"
|
||||||
|
|
||||||
#: ../extensions/systemMonitor/extension.js:214
|
#: extensions/screenshot-window-sizer/org.gnome.shell.extensions.screenshot-window-sizer.gschema.xml:11
|
||||||
msgid "CPU"
|
msgid "Cycle Screenshot Sizes Backward"
|
||||||
msgstr "Ĉefprocesoro"
|
msgstr "Montri ekrankopiajn grandojn laŭ inversa sinsekvo"
|
||||||
|
|
||||||
#: ../extensions/systemMonitor/extension.js:267
|
#: extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml:5
|
||||||
msgid "Memory"
|
|
||||||
msgstr "Memoro"
|
|
||||||
|
|
||||||
#: ../extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml.in.h:1
|
|
||||||
msgid "Theme name"
|
msgid "Theme name"
|
||||||
msgstr "Etosnomo"
|
msgstr "Etosnomo"
|
||||||
|
|
||||||
#: ../extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml.in.h:2
|
#: extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml:6
|
||||||
msgid "The name of the theme, to be loaded from ~/.themes/name/gnome-shell"
|
msgid "The name of the theme, to be loaded from ~/.themes/name/gnome-shell"
|
||||||
msgstr "La nomo de la etoso, malfermigi de ~/.themes/name/gnome-shell"
|
msgstr "La nomo de la etoso, malfermigi de ~/.themes/name/gnome-shell"
|
||||||
|
|
||||||
#: ../extensions/window-list/extension.js:110
|
#: extensions/window-list/extension.js:98
|
||||||
msgid "Close"
|
msgid "Close"
|
||||||
msgstr "Malfermi"
|
msgstr "Fermi"
|
||||||
|
|
||||||
#: ../extensions/window-list/extension.js:120
|
#: extensions/window-list/extension.js:118
|
||||||
msgid "Unminimize"
|
msgid "Unminimize"
|
||||||
msgstr "Neplejetigi"
|
msgstr "Neplejetigi"
|
||||||
|
|
||||||
#: ../extensions/window-list/extension.js:121
|
#: extensions/window-list/extension.js:118
|
||||||
msgid "Minimize"
|
msgid "Minimize"
|
||||||
msgstr "Plejetigi"
|
msgstr "Plejetigi"
|
||||||
|
|
||||||
#: ../extensions/window-list/extension.js:127
|
#: extensions/window-list/extension.js:125
|
||||||
msgid "Unmaximize"
|
msgid "Unmaximize"
|
||||||
msgstr "Nemaksimumigi"
|
msgstr "Nemaksimumigi"
|
||||||
|
|
||||||
#: ../extensions/window-list/extension.js:128
|
#: extensions/window-list/extension.js:125
|
||||||
msgid "Maximize"
|
msgid "Maximize"
|
||||||
msgstr "Maksimumigi"
|
msgstr "Maksimumigi"
|
||||||
|
|
||||||
#: ../extensions/window-list/extension.js:390
|
#: extensions/window-list/extension.js:429
|
||||||
msgid "Minimize all"
|
msgid "Minimize all"
|
||||||
msgstr "Plejetigi ĉiujn"
|
msgstr "Plejetigi ĉiujn"
|
||||||
|
|
||||||
#: ../extensions/window-list/extension.js:398
|
#: extensions/window-list/extension.js:435
|
||||||
msgid "Unminimize all"
|
msgid "Unminimize all"
|
||||||
msgstr "Neplejetigi ĉiujn"
|
msgstr "Neplejetigi ĉiujn"
|
||||||
|
|
||||||
#: ../extensions/window-list/extension.js:406
|
#: extensions/window-list/extension.js:441
|
||||||
msgid "Maximize all"
|
msgid "Maximize all"
|
||||||
msgstr "Maksimumigi ĉiujn"
|
msgstr "Maksimumigi ĉiujn"
|
||||||
|
|
||||||
#: ../extensions/window-list/extension.js:415
|
#: extensions/window-list/extension.js:449
|
||||||
msgid "Unmaximize all"
|
msgid "Unmaximize all"
|
||||||
msgstr "Nemaksimumigi ĉiujn"
|
msgstr "Nemaksimumigi ĉiujn"
|
||||||
|
|
||||||
#: ../extensions/window-list/extension.js:424
|
#: extensions/window-list/extension.js:457
|
||||||
msgid "Close all"
|
msgid "Close all"
|
||||||
msgstr "Fermi ĉiujn"
|
msgstr "Fermi ĉiujn"
|
||||||
|
|
||||||
#: ../extensions/window-list/extension.js:706
|
#: extensions/window-list/extension.js:737
|
||||||
#: ../extensions/workspace-indicator/extension.js:30
|
|
||||||
msgid "Workspace Indicator"
|
|
||||||
msgstr "Laborspaco Indikilo"
|
|
||||||
|
|
||||||
#: ../extensions/window-list/extension.js:870
|
|
||||||
msgid "Window List"
|
msgid "Window List"
|
||||||
msgstr "Fenestra listo"
|
msgstr "Fenestra listo"
|
||||||
|
|
||||||
#: ../extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml.in.h:1
|
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:12
|
||||||
msgid "When to group windows"
|
msgid "When to group windows"
|
||||||
msgstr "Kiam grupigi fenestrojn"
|
msgstr "Kiam grupigi fenestrojn"
|
||||||
|
|
||||||
#: ../extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml.in.h:2
|
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:13
|
||||||
msgid ""
|
msgid ""
|
||||||
"Decides when to group windows from the same application on the window list. "
|
"Decides when to group windows from the same application on the window list. "
|
||||||
"Possible values are \"never\", \"auto\" and \"always\"."
|
"Possible values are “never”, “auto” and “always”."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Decidas kiam grupi fenestrojn de la sama aplikaĵo en la fenestra listo. "
|
"Decidas kiam grupi fenestrojn de la sama aplikaĵo en la fenestra listo. "
|
||||||
"Validaj valoroj estas \"never\" (neniam), \"auto\" (aŭtomate) kaj \"always"
|
"Validaj valoroj estas “neniam”, “aŭtomate” kaj ĉiam”."
|
||||||
"\" (ĉiam)."
|
|
||||||
|
|
||||||
#: ../extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml.in.h:3
|
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:20
|
||||||
|
#: extensions/window-list/prefs.js:82
|
||||||
|
msgid "Show windows from all workspaces"
|
||||||
|
msgstr "Montri la fenestrojn de ĉiuj laborspacoj"
|
||||||
|
|
||||||
|
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:21
|
||||||
|
msgid "Whether to show windows from all workspaces or only the current one."
|
||||||
|
msgstr "Ĉu montri la fenestrojn de ĉiuj laborspacoj aŭ nur de la nuna."
|
||||||
|
|
||||||
|
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:27
|
||||||
msgid "Show the window list on all monitors"
|
msgid "Show the window list on all monitors"
|
||||||
msgstr "Montri la fenestroliston en ĉiuj ekranoj"
|
msgstr "Montri la fenestroliston en ĉiuj ekranoj"
|
||||||
|
|
||||||
#: ../extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml.in.h:4
|
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:28
|
||||||
msgid ""
|
msgid ""
|
||||||
"Whether to show the window list on all connected monitors or only on the "
|
"Whether to show the window list on all connected monitors or only on the "
|
||||||
"primary one."
|
"primary one."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Ĉu montri la fenestroliston en ĉiuj konektitaj ekranoj aŭ nur en la ĉefa."
|
"Ĉu montri la fenestroliston en ĉiuj konektitaj ekranoj aŭ nur en la ĉefa."
|
||||||
|
|
||||||
#: ../extensions/window-list/prefs.js:32
|
#: extensions/window-list/prefs.js:25
|
||||||
msgid "Window Grouping"
|
msgid "Window Grouping"
|
||||||
msgstr "Fenestra grupigo"
|
msgstr "Fenestra grupigo"
|
||||||
|
|
||||||
#: ../extensions/window-list/prefs.js:50
|
#: extensions/window-list/prefs.js:47
|
||||||
msgid "Never group windows"
|
msgid "Never group windows"
|
||||||
msgstr "Neniam grupigi fenestrojn"
|
msgstr "Neniam grupigi fenestrojn"
|
||||||
|
|
||||||
#: ../extensions/window-list/prefs.js:51
|
#: extensions/window-list/prefs.js:48
|
||||||
msgid "Group windows when space is limited"
|
msgid "Group windows when space is limited"
|
||||||
msgstr "Grupigi fenestrojn kiam spaco limitas"
|
msgstr "Grupigi fenestrojn kiam spaco limitas"
|
||||||
|
|
||||||
#: ../extensions/window-list/prefs.js:52
|
#: extensions/window-list/prefs.js:49
|
||||||
msgid "Always group windows"
|
msgid "Always group windows"
|
||||||
msgstr "Ĉiam grupigi fenestrojn"
|
msgstr "Ĉiam grupigi fenestrojn"
|
||||||
|
|
||||||
#: ../extensions/window-list/prefs.js:75
|
#: extensions/window-list/prefs.js:75
|
||||||
msgid "Show on all monitors"
|
msgid "Show on all monitors"
|
||||||
msgstr "Montri en ĉiuj ekranoj"
|
msgstr "Montri en ĉiuj ekranoj"
|
||||||
|
|
||||||
#: ../extensions/workspace-indicator/prefs.js:141
|
#: extensions/window-list/workspaceIndicator.js:209
|
||||||
#| msgid "Workspace names:"
|
#: extensions/workspace-indicator/extension.js:215
|
||||||
|
msgid "Workspace Indicator"
|
||||||
|
msgstr "Laborspaco Indikilo"
|
||||||
|
|
||||||
|
#: extensions/workspace-indicator/prefs.js:129
|
||||||
msgid "Workspace Names"
|
msgid "Workspace Names"
|
||||||
msgstr "Laborspacaj nomoj"
|
msgstr "Laborspacaj nomoj"
|
||||||
|
|
||||||
#: ../extensions/workspace-indicator/prefs.js:157
|
#: extensions/workspace-indicator/prefs.js:149
|
||||||
msgid "Name"
|
msgid "Name"
|
||||||
msgstr "Nomo"
|
msgstr "Nomo"
|
||||||
|
|
||||||
#: ../extensions/workspace-indicator/prefs.js:198
|
#: extensions/workspace-indicator/prefs.js:189
|
||||||
|
#, javascript-format
|
||||||
msgid "Workspace %d"
|
msgid "Workspace %d"
|
||||||
msgstr "Laborspaco %d"
|
msgstr "Laborspaco %d"
|
||||||
|
|
||||||
|
#~ msgid "Activities Overview"
|
||||||
|
#~ msgstr "Aktivecoj-Superrigardon"
|
||||||
|
|
||||||
|
#~ msgid "Attach modal dialog to the parent window"
|
||||||
|
#~ msgstr "Kunligi modalan dialogon al la patra fenestro"
|
||||||
|
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "This key overrides the key in org.gnome.mutter when running GNOME Shell."
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "Ĉi ŝlosilo atutas la ŝlosilon en org.gnome.mutter kiam rulanta GNOME-"
|
||||||
|
#~ "ŝelon."
|
||||||
|
|
||||||
|
#~ msgid "Arrangement of buttons on the titlebar"
|
||||||
|
#~ msgstr "Aranĝo de butonoj en la titolbreto"
|
||||||
|
|
||||||
|
#~| msgid ""
|
||||||
|
#~| "This key overrides the key in org.gnome.mutter when running GNOME Shell."
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "This key overrides the key in org.gnome.desktop.wm.preferences when "
|
||||||
|
#~ "running GNOME Shell."
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "Ĉi tiu ŝlosilo anstataŭas la ŝlosilon en org.gnome.desktop.wm.preferences "
|
||||||
|
#~ "kiam GNOME-ŝelo rulas."
|
||||||
|
|
||||||
|
#~ msgid "Enable edge tiling when dropping windows on screen edges"
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "Aktivigi kahelan aranĝon kiam demetante fenestrojn sur ekranaj borderoj"
|
||||||
|
|
||||||
|
#~ msgid "Workspaces only on primary monitor"
|
||||||
|
#~ msgstr "Laborspacoj nur sur la ĉefa ekrano"
|
||||||
|
|
||||||
|
#~ msgid "Delay focus changes in mouse mode until the pointer stops moving"
|
||||||
|
#~ msgstr "En musa reĝimo, prokrasti ŝanĝi fokuson ĝis la musmontrilo haltas"
|
||||||
|
|
||||||
|
#~ msgid "Thumbnail only"
|
||||||
|
#~ msgstr "Miniaturo nur"
|
||||||
|
|
||||||
|
#~ msgid "Application icon only"
|
||||||
|
#~ msgstr "Aplikaĵa piktogramo nur"
|
||||||
|
|
||||||
|
#~ msgid "Thumbnail and application icon"
|
||||||
|
#~ msgstr "Miniaturo kaj aplikaĵo piktogramo"
|
||||||
|
|
||||||
|
#~ msgid "Present windows as"
|
||||||
|
#~ msgstr "Prezenti fenestron kiel"
|
||||||
|
|
||||||
|
#~ msgid "Hello, world!"
|
||||||
|
#~ msgstr "Saluton, mondo!"
|
||||||
|
|
||||||
|
#~ msgid "Alternative greeting text."
|
||||||
|
#~ msgstr "Alterna saluta teksto."
|
||||||
|
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "If not empty, it contains the text that will be shown when clicking on "
|
||||||
|
#~ "the panel."
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "Se ne malplena, enhavas la tekston kiu estos montrita kiam alklakante sur "
|
||||||
|
#~ "la panelo."
|
||||||
|
|
||||||
|
#~| msgid "Message:"
|
||||||
|
#~ msgid "Message"
|
||||||
|
#~ msgstr "Mesaĝo"
|
||||||
|
|
||||||
|
#~ 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 ""
|
||||||
|
#~ "Ekzemplo klopodas montri kial krei bone-kondutantan etendojn por la ŝelo "
|
||||||
|
#~ "kaj sekve ne havas multan funkcion.\n"
|
||||||
|
#~ "Tamen, eblas agordi la salutan mesagon."
|
||||||
|
|
||||||
|
#~ msgid "CPU"
|
||||||
|
#~ msgstr "Ĉefprocesoro"
|
||||||
|
|
||||||
|
#~ msgid "Memory"
|
||||||
|
#~ msgstr "Memoro"
|
||||||
|
|
||||||
#~ msgid "GNOME Shell Classic"
|
#~ msgid "GNOME Shell Classic"
|
||||||
#~ msgstr "GNOME-ŝelo-klasika"
|
#~ msgstr "GNOME-ŝelo-klasika"
|
||||||
|
|
||||||
|
|||||||
@@ -4,23 +4,23 @@
|
|||||||
# Jorge González <jorgegonz@svn.gnome.org>, 2011.
|
# Jorge González <jorgegonz@svn.gnome.org>, 2011.
|
||||||
# Nicolás Satragno <nsatragno@gmail.com>, 2011.
|
# Nicolás Satragno <nsatragno@gmail.com>, 2011.
|
||||||
#
|
#
|
||||||
# Daniel Mustieles <daniel.mustieles@gmail.com>, 2011-2015, 2017.
|
# Daniel Mustieles <daniel.mustieles@gmail.com>, 2011-2019.
|
||||||
#
|
#
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: gnome-shell-extensions master\n"
|
"Project-Id-Version: gnome-shell-extensions master\n"
|
||||||
"Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
|
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell-extensions/"
|
||||||
"shell&keywords=I18N+L10N&component=extensions\n"
|
"issues\n"
|
||||||
"POT-Creation-Date: 2017-07-20 23:40+0000\n"
|
"POT-Creation-Date: 2019-08-09 22:24+0000\n"
|
||||||
"PO-Revision-Date: 2017-07-24 15:40+0200\n"
|
"PO-Revision-Date: 2019-08-20 12:08+0200\n"
|
||||||
"Last-Translator: Daniel Mustieles <daniel.mustieles@gmail.com>\n"
|
"Last-Translator: Daniel Mustieles <daniel.mustieles@gmail.com>\n"
|
||||||
"Language-Team: es <gnome-es-list@gnome.org>\n"
|
"Language-Team: Spanish - Spain <gnome-es-list@gnome.org>\n"
|
||||||
"Language: es\n"
|
"Language: es_ES\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||||
"X-Generator: Gtranslator 2.91.6\n"
|
"X-Generator: Gtranslator 3.32.1\n"
|
||||||
|
|
||||||
#: data/gnome-classic.desktop.in:3 data/gnome-classic.session.desktop.in:3
|
#: data/gnome-classic.desktop.in:3 data/gnome-classic.session.desktop.in:3
|
||||||
msgid "GNOME Classic"
|
msgid "GNOME Classic"
|
||||||
@@ -30,75 +30,11 @@ msgstr "GNOME clásico"
|
|||||||
msgid "This session logs you into GNOME Classic"
|
msgid "This session logs you into GNOME Classic"
|
||||||
msgstr "Esta sesión inicia GNOME clásico"
|
msgstr "Esta sesión inicia GNOME clásico"
|
||||||
|
|
||||||
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:7
|
#: extensions/apps-menu/extension.js:113
|
||||||
msgid "Attach modal dialog to the parent window"
|
|
||||||
msgstr "Acoplar un diálogo modal a la ventana padre"
|
|
||||||
|
|
||||||
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:8
|
|
||||||
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:25
|
|
||||||
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:33
|
|
||||||
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:41
|
|
||||||
msgid ""
|
|
||||||
"This key overrides the key in org.gnome.mutter when running GNOME Shell."
|
|
||||||
msgstr ""
|
|
||||||
"Esta clave sobrescribe la clave en org.gnome.mutter al ejecutar GNOME Shell."
|
|
||||||
|
|
||||||
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:16
|
|
||||||
msgid "Arrangement of buttons on the titlebar"
|
|
||||||
msgstr "Ordenación de los botones en la barra de título"
|
|
||||||
|
|
||||||
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:17
|
|
||||||
msgid ""
|
|
||||||
"This key overrides the key in org.gnome.desktop.wm.preferences when running "
|
|
||||||
"GNOME Shell."
|
|
||||||
msgstr ""
|
|
||||||
"Esta clave sobrescribe la clave en org.gnome.desktop.wm.preferences al "
|
|
||||||
"ejecutar GNOME Shell."
|
|
||||||
|
|
||||||
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:24
|
|
||||||
msgid "Enable edge tiling when dropping windows on screen edges"
|
|
||||||
msgstr ""
|
|
||||||
"Activar el mosaico en los bordes al arrastrar ventanas a los bordes de la "
|
|
||||||
"ventana"
|
|
||||||
|
|
||||||
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:32
|
|
||||||
msgid "Workspaces only on primary monitor"
|
|
||||||
msgstr "Áreas de trabajo solo en la pantalla principal"
|
|
||||||
|
|
||||||
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:40
|
|
||||||
msgid "Delay focus changes in mouse mode until the pointer stops moving"
|
|
||||||
msgstr ""
|
|
||||||
"Retrasar el cambio del foco del ratón hasta que el puntero deje de moverse"
|
|
||||||
|
|
||||||
#: extensions/alternate-tab/prefs.js:20
|
|
||||||
msgid "Thumbnail only"
|
|
||||||
msgstr "Sólo miniaturas"
|
|
||||||
|
|
||||||
#: extensions/alternate-tab/prefs.js:21
|
|
||||||
msgid "Application icon only"
|
|
||||||
msgstr "Sólo icono de la aplicación"
|
|
||||||
|
|
||||||
#: extensions/alternate-tab/prefs.js:22
|
|
||||||
msgid "Thumbnail and application icon"
|
|
||||||
msgstr "Miniatura e icono de la aplicación"
|
|
||||||
|
|
||||||
#: extensions/alternate-tab/prefs.js:38
|
|
||||||
msgid "Present windows as"
|
|
||||||
msgstr "Presentar ventanas como"
|
|
||||||
|
|
||||||
#: extensions/alternate-tab/prefs.js:69
|
|
||||||
msgid "Show only windows in the current workspace"
|
|
||||||
msgstr "Mostrar ventanas solamente en el área de trabajo actual"
|
|
||||||
|
|
||||||
#: extensions/apps-menu/extension.js:41
|
|
||||||
msgid "Activities Overview"
|
|
||||||
msgstr "Vista de actividades"
|
|
||||||
|
|
||||||
#: extensions/apps-menu/extension.js:141
|
|
||||||
msgid "Favorites"
|
msgid "Favorites"
|
||||||
msgstr "Favoritos"
|
msgstr "Favoritos"
|
||||||
|
|
||||||
#: extensions/apps-menu/extension.js:436
|
#: extensions/apps-menu/extension.js:368
|
||||||
msgid "Applications"
|
msgid "Applications"
|
||||||
msgstr "Aplicaciones"
|
msgstr "Aplicaciones"
|
||||||
|
|
||||||
@@ -118,69 +54,38 @@ msgstr ""
|
|||||||
msgid "Application"
|
msgid "Application"
|
||||||
msgstr "Aplicación"
|
msgstr "Aplicación"
|
||||||
|
|
||||||
#: extensions/auto-move-windows/prefs.js:69
|
#: extensions/auto-move-windows/prefs.js:71
|
||||||
#: extensions/auto-move-windows/prefs.js:127
|
#: extensions/auto-move-windows/prefs.js:134
|
||||||
msgid "Workspace"
|
msgid "Workspace"
|
||||||
msgstr "Área de trabajo"
|
msgstr "Área de trabajo"
|
||||||
|
|
||||||
#: extensions/auto-move-windows/prefs.js:85
|
#: extensions/auto-move-windows/prefs.js:89
|
||||||
msgid "Add Rule"
|
msgid "Add Rule"
|
||||||
msgstr "Añadir regla"
|
msgstr "Añadir regla"
|
||||||
|
|
||||||
#: extensions/auto-move-windows/prefs.js:106
|
#: extensions/auto-move-windows/prefs.js:111
|
||||||
msgid "Create new matching rule"
|
msgid "Create new matching rule"
|
||||||
msgstr "Crear regla de coincidencia nueva"
|
msgstr "Crear regla de coincidencia nueva"
|
||||||
|
|
||||||
#: extensions/auto-move-windows/prefs.js:111
|
#: extensions/auto-move-windows/prefs.js:117
|
||||||
msgid "Add"
|
msgid "Add"
|
||||||
msgstr "Añadir"
|
msgstr "Añadir"
|
||||||
|
|
||||||
#: extensions/drive-menu/extension.js:106
|
#. TRANSLATORS: %s is the filesystem name
|
||||||
|
#: extensions/drive-menu/extension.js:102
|
||||||
|
#: extensions/places-menu/placeDisplay.js:232
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "Ejecting drive “%s” failed:"
|
msgid "Ejecting drive “%s” failed:"
|
||||||
msgstr "Falló al expulsar el dispositivo «%s»:"
|
msgstr "Falló al expulsar el dispositivo «%s»:"
|
||||||
|
|
||||||
#: extensions/drive-menu/extension.js:124
|
#: extensions/drive-menu/extension.js:118
|
||||||
msgid "Removable devices"
|
msgid "Removable devices"
|
||||||
msgstr "Dispositivos extraíbles"
|
msgstr "Dispositivos extraíbles"
|
||||||
|
|
||||||
#: extensions/drive-menu/extension.js:149
|
#: extensions/drive-menu/extension.js:145
|
||||||
msgid "Open Files"
|
msgid "Open Files"
|
||||||
msgstr "Abrir archivos"
|
msgstr "Abrir archivos"
|
||||||
|
|
||||||
#: extensions/example/extension.js:17
|
|
||||||
msgid "Hello, world!"
|
|
||||||
msgstr "¡Hola, mundo!"
|
|
||||||
|
|
||||||
#: extensions/example/org.gnome.shell.extensions.example.gschema.xml:5
|
|
||||||
msgid "Alternative greeting text."
|
|
||||||
msgstr "Texto de bienvenida alternativo."
|
|
||||||
|
|
||||||
#: extensions/example/org.gnome.shell.extensions.example.gschema.xml:6
|
|
||||||
msgid ""
|
|
||||||
"If not empty, it contains the text that will be shown when clicking on the "
|
|
||||||
"panel."
|
|
||||||
msgstr ""
|
|
||||||
"Si no está vacío, contiene el texto que se desplegará al pulsar sobre el "
|
|
||||||
"panel."
|
|
||||||
|
|
||||||
#: extensions/example/prefs.js:30
|
|
||||||
msgid "Message"
|
|
||||||
msgstr "Mensaje"
|
|
||||||
|
|
||||||
#. TRANSLATORS: Example is the name of the extension, should not be
|
|
||||||
#. translated
|
|
||||||
#: extensions/example/prefs.js:43
|
|
||||||
msgid ""
|
|
||||||
"Example aims to show how to build well behaved extensions for the Shell and "
|
|
||||||
"as such it has little functionality on its own.\n"
|
|
||||||
"Nevertheless it’s possible to customize the greeting message."
|
|
||||||
msgstr ""
|
|
||||||
"«Example» tiene por objeto mostrar cómo construir extensiones de buen "
|
|
||||||
"comportamiento para la Shell y por eso tiene poca funcionalidad por sí "
|
|
||||||
"solo.\n"
|
|
||||||
"Sin embargo, es posible personalizar el mensaje de bienvenida."
|
|
||||||
|
|
||||||
#: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:5
|
#: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:5
|
||||||
msgid "Use more screen for windows"
|
msgid "Use more screen for windows"
|
||||||
msgstr "Usar más pantalla para las ventanas"
|
msgstr "Usar más pantalla para las ventanas"
|
||||||
@@ -210,31 +115,31 @@ msgstr ""
|
|||||||
"los sitúa por debajo. Cambiar esta configuración requiere reiniciar la shell "
|
"los sitúa por debajo. Cambiar esta configuración requiere reiniciar la shell "
|
||||||
"para que tenga efecto."
|
"para que tenga efecto."
|
||||||
|
|
||||||
#: extensions/places-menu/extension.js:78
|
#: extensions/places-menu/extension.js:80
|
||||||
#: extensions/places-menu/extension.js:81
|
#: extensions/places-menu/extension.js:84
|
||||||
msgid "Places"
|
msgid "Places"
|
||||||
msgstr "Lugares"
|
msgstr "Lugares"
|
||||||
|
|
||||||
#: extensions/places-menu/placeDisplay.js:65
|
#: extensions/places-menu/placeDisplay.js:46
|
||||||
#, javascript-format
|
|
||||||
msgid "Failed to mount volume for “%s”"
|
|
||||||
msgstr "Falló al montar el volumen para «%s»"
|
|
||||||
|
|
||||||
#: extensions/places-menu/placeDisplay.js:78
|
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "Failed to launch “%s”"
|
msgid "Failed to launch “%s”"
|
||||||
msgstr "Falló al lanzar «%s»"
|
msgstr "Falló al lanzar «%s»"
|
||||||
|
|
||||||
#: extensions/places-menu/placeDisplay.js:137
|
#: extensions/places-menu/placeDisplay.js:61
|
||||||
#: extensions/places-menu/placeDisplay.js:160
|
#, javascript-format
|
||||||
|
msgid "Failed to mount volume for “%s”"
|
||||||
|
msgstr "Falló al montar el volumen para «%s»"
|
||||||
|
|
||||||
|
#: extensions/places-menu/placeDisplay.js:148
|
||||||
|
#: extensions/places-menu/placeDisplay.js:171
|
||||||
msgid "Computer"
|
msgid "Computer"
|
||||||
msgstr "Equipo"
|
msgstr "Equipo"
|
||||||
|
|
||||||
#: extensions/places-menu/placeDisplay.js:303
|
#: extensions/places-menu/placeDisplay.js:358
|
||||||
msgid "Home"
|
msgid "Home"
|
||||||
msgstr "Carpeta personal"
|
msgstr "Carpeta personal"
|
||||||
|
|
||||||
#: extensions/places-menu/placeDisplay.js:347
|
#: extensions/places-menu/placeDisplay.js:403
|
||||||
msgid "Browse Network"
|
msgid "Browse Network"
|
||||||
msgstr "Examinar la red"
|
msgstr "Examinar la red"
|
||||||
|
|
||||||
@@ -243,7 +148,6 @@ msgid "Cycle Screenshot Sizes"
|
|||||||
msgstr "Tamaños de capturas de pantalla cíclicos"
|
msgstr "Tamaños de capturas de pantalla cíclicos"
|
||||||
|
|
||||||
#: extensions/screenshot-window-sizer/org.gnome.shell.extensions.screenshot-window-sizer.gschema.xml:11
|
#: extensions/screenshot-window-sizer/org.gnome.shell.extensions.screenshot-window-sizer.gschema.xml:11
|
||||||
#| msgid "Cycle Screenshot Sizes"
|
|
||||||
msgid "Cycle Screenshot Sizes Backward"
|
msgid "Cycle Screenshot Sizes Backward"
|
||||||
msgstr "Tamaños de capturas de pantalla cíclicos"
|
msgstr "Tamaños de capturas de pantalla cíclicos"
|
||||||
|
|
||||||
@@ -255,52 +159,47 @@ msgstr "Nombre del tema"
|
|||||||
msgid "The name of the theme, to be loaded from ~/.themes/name/gnome-shell"
|
msgid "The name of the theme, to be loaded from ~/.themes/name/gnome-shell"
|
||||||
msgstr "El nombre del tema, que se carga desde ~/.themes/nombre/gnome-shell"
|
msgstr "El nombre del tema, que se carga desde ~/.themes/nombre/gnome-shell"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:110
|
#: extensions/window-list/extension.js:99
|
||||||
msgid "Close"
|
msgid "Close"
|
||||||
msgstr "Cerrar"
|
msgstr "Cerrar"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:129
|
#: extensions/window-list/extension.js:119
|
||||||
msgid "Unminimize"
|
msgid "Unminimize"
|
||||||
msgstr "Desminimizar"
|
msgstr "Desminimizar"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:130
|
#: extensions/window-list/extension.js:119
|
||||||
msgid "Minimize"
|
msgid "Minimize"
|
||||||
msgstr "Minimizar"
|
msgstr "Minimizar"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:136
|
#: extensions/window-list/extension.js:126
|
||||||
msgid "Unmaximize"
|
msgid "Unmaximize"
|
||||||
msgstr "Desmaximizar"
|
msgstr "Desmaximizar"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:137
|
#: extensions/window-list/extension.js:126
|
||||||
msgid "Maximize"
|
msgid "Maximize"
|
||||||
msgstr "Maximizar"
|
msgstr "Maximizar"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:420
|
#: extensions/window-list/extension.js:431
|
||||||
msgid "Minimize all"
|
msgid "Minimize all"
|
||||||
msgstr "Minimizar todo"
|
msgstr "Minimizar todo"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:428
|
#: extensions/window-list/extension.js:437
|
||||||
msgid "Unminimize all"
|
msgid "Unminimize all"
|
||||||
msgstr "Desminimizar todo"
|
msgstr "Desminimizar todo"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:436
|
#: extensions/window-list/extension.js:443
|
||||||
msgid "Maximize all"
|
msgid "Maximize all"
|
||||||
msgstr "Maximizar todo"
|
msgstr "Maximizar todo"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:445
|
#: extensions/window-list/extension.js:451
|
||||||
msgid "Unmaximize all"
|
msgid "Unmaximize all"
|
||||||
msgstr "Desmaximizar todo"
|
msgstr "Desmaximizar todo"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:454
|
#: extensions/window-list/extension.js:459
|
||||||
msgid "Close all"
|
msgid "Close all"
|
||||||
msgstr "Cerrar todo"
|
msgstr "Cerrar todo"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:678
|
#: extensions/window-list/extension.js:741
|
||||||
#: extensions/workspace-indicator/extension.js:30
|
|
||||||
msgid "Workspace Indicator"
|
|
||||||
msgstr "Indicador de área de trabajo"
|
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:842
|
|
||||||
msgid "Window List"
|
msgid "Window List"
|
||||||
msgstr "Lista de ventanas"
|
msgstr "Lista de ventanas"
|
||||||
|
|
||||||
@@ -317,10 +216,25 @@ msgstr ""
|
|||||||
"ventanas. Los valores posibles son «never», «auto» y «always»."
|
"ventanas. Los valores posibles son «never», «auto» y «always»."
|
||||||
|
|
||||||
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:20
|
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:20
|
||||||
|
#: extensions/window-list/prefs.js:82
|
||||||
|
#| msgid "Show only windows in the current workspace"
|
||||||
|
msgid "Show windows from all workspaces"
|
||||||
|
msgstr "Mostrar ventanas de todas las áreas de trabajo"
|
||||||
|
|
||||||
|
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:21
|
||||||
|
#| msgid ""
|
||||||
|
#| "Whether to show the window list on all connected monitors or only on the "
|
||||||
|
#| "primary one."
|
||||||
|
msgid "Whether to show windows from all workspaces or only the current one."
|
||||||
|
msgstr ""
|
||||||
|
"Indica si se deben mostrar ventanas de todas las áreas de trabajo o sólo de "
|
||||||
|
"la actual."
|
||||||
|
|
||||||
|
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:27
|
||||||
msgid "Show the window list on all monitors"
|
msgid "Show the window list on all monitors"
|
||||||
msgstr "Mostrar la lista de ventanas en todas las pantallas"
|
msgstr "Mostrar la lista de ventanas en todas las pantallas"
|
||||||
|
|
||||||
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:21
|
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:28
|
||||||
msgid ""
|
msgid ""
|
||||||
"Whether to show the window list on all connected monitors or only on the "
|
"Whether to show the window list on all connected monitors or only on the "
|
||||||
"primary one."
|
"primary one."
|
||||||
@@ -328,19 +242,19 @@ msgstr ""
|
|||||||
"Indica si se debe mostrar la lista de ventanas en todas las pantallas "
|
"Indica si se debe mostrar la lista de ventanas en todas las pantallas "
|
||||||
"conectadas o sólo en la primaria."
|
"conectadas o sólo en la primaria."
|
||||||
|
|
||||||
#: extensions/window-list/prefs.js:32
|
#: extensions/window-list/prefs.js:25
|
||||||
msgid "Window Grouping"
|
msgid "Window Grouping"
|
||||||
msgstr "Agrupación de ventanas"
|
msgstr "Agrupación de ventanas"
|
||||||
|
|
||||||
#: extensions/window-list/prefs.js:50
|
#: extensions/window-list/prefs.js:47
|
||||||
msgid "Never group windows"
|
msgid "Never group windows"
|
||||||
msgstr "Nunca agrupar las ventanas"
|
msgstr "Nunca agrupar las ventanas"
|
||||||
|
|
||||||
#: extensions/window-list/prefs.js:51
|
#: extensions/window-list/prefs.js:48
|
||||||
msgid "Group windows when space is limited"
|
msgid "Group windows when space is limited"
|
||||||
msgstr "Agrupar las ventanas cuando el espacio esté limitado"
|
msgstr "Agrupar las ventanas cuando el espacio esté limitado"
|
||||||
|
|
||||||
#: extensions/window-list/prefs.js:52
|
#: extensions/window-list/prefs.js:49
|
||||||
msgid "Always group windows"
|
msgid "Always group windows"
|
||||||
msgstr "Siempre agrupar las ventanas"
|
msgstr "Siempre agrupar las ventanas"
|
||||||
|
|
||||||
@@ -348,19 +262,96 @@ msgstr "Siempre agrupar las ventanas"
|
|||||||
msgid "Show on all monitors"
|
msgid "Show on all monitors"
|
||||||
msgstr "Mostrar en todas las pantallas"
|
msgstr "Mostrar en todas las pantallas"
|
||||||
|
|
||||||
#: extensions/workspace-indicator/prefs.js:141
|
#: extensions/window-list/workspaceIndicator.js:211
|
||||||
|
#: extensions/workspace-indicator/extension.js:216
|
||||||
|
msgid "Workspace Indicator"
|
||||||
|
msgstr "Indicador de área de trabajo"
|
||||||
|
|
||||||
|
#: extensions/workspace-indicator/prefs.js:131
|
||||||
msgid "Workspace Names"
|
msgid "Workspace Names"
|
||||||
msgstr "Nombres de los áreas de trabajo"
|
msgstr "Nombres de los áreas de trabajo"
|
||||||
|
|
||||||
#: extensions/workspace-indicator/prefs.js:157
|
#: extensions/workspace-indicator/prefs.js:151
|
||||||
msgid "Name"
|
msgid "Name"
|
||||||
msgstr "Nombre"
|
msgstr "Nombre"
|
||||||
|
|
||||||
#: extensions/workspace-indicator/prefs.js:198
|
#: extensions/workspace-indicator/prefs.js:191
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "Workspace %d"
|
msgid "Workspace %d"
|
||||||
msgstr "Área de trabajo %d"
|
msgstr "Área de trabajo %d"
|
||||||
|
|
||||||
|
#~ msgid "Attach modal dialog to the parent window"
|
||||||
|
#~ msgstr "Acoplar un diálogo modal a la ventana padre"
|
||||||
|
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "This key overrides the key in org.gnome.mutter when running GNOME Shell."
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "Esta clave sobrescribe la clave en org.gnome.mutter al ejecutar GNOME "
|
||||||
|
#~ "Shell."
|
||||||
|
|
||||||
|
#~ msgid "Arrangement of buttons on the titlebar"
|
||||||
|
#~ msgstr "Ordenación de los botones en la barra de título"
|
||||||
|
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "This key overrides the key in org.gnome.desktop.wm.preferences when "
|
||||||
|
#~ "running GNOME Shell."
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "Esta clave sobrescribe la clave en org.gnome.desktop.wm.preferences al "
|
||||||
|
#~ "ejecutar GNOME Shell."
|
||||||
|
|
||||||
|
#~ msgid "Enable edge tiling when dropping windows on screen edges"
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "Activar el mosaico en los bordes al arrastrar ventanas a los bordes de la "
|
||||||
|
#~ "ventana"
|
||||||
|
|
||||||
|
#~ msgid "Workspaces only on primary monitor"
|
||||||
|
#~ msgstr "Áreas de trabajo solo en la pantalla principal"
|
||||||
|
|
||||||
|
#~ msgid "Delay focus changes in mouse mode until the pointer stops moving"
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "Retrasar el cambio del foco del ratón hasta que el puntero deje de moverse"
|
||||||
|
|
||||||
|
#~ msgid "Thumbnail only"
|
||||||
|
#~ msgstr "Sólo miniaturas"
|
||||||
|
|
||||||
|
#~ msgid "Application icon only"
|
||||||
|
#~ msgstr "Sólo icono de la aplicación"
|
||||||
|
|
||||||
|
#~ msgid "Thumbnail and application icon"
|
||||||
|
#~ msgstr "Miniatura e icono de la aplicación"
|
||||||
|
|
||||||
|
#~ msgid "Present windows as"
|
||||||
|
#~ msgstr "Presentar ventanas como"
|
||||||
|
|
||||||
|
#~ msgid "Activities Overview"
|
||||||
|
#~ msgstr "Vista de actividades"
|
||||||
|
|
||||||
|
#~ msgid "Hello, world!"
|
||||||
|
#~ msgstr "¡Hola, mundo!"
|
||||||
|
|
||||||
|
#~ msgid "Alternative greeting text."
|
||||||
|
#~ msgstr "Texto de bienvenida alternativo."
|
||||||
|
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "If not empty, it contains the text that will be shown when clicking on "
|
||||||
|
#~ "the panel."
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "Si no está vacío, contiene el texto que se desplegará al pulsar sobre el "
|
||||||
|
#~ "panel."
|
||||||
|
|
||||||
|
#~ msgid "Message"
|
||||||
|
#~ msgstr "Mensaje"
|
||||||
|
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "Example aims to show how to build well behaved extensions for the Shell "
|
||||||
|
#~ "and as such it has little functionality on its own.\n"
|
||||||
|
#~ "Nevertheless it’s possible to customize the greeting message."
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "«Example» tiene por objeto mostrar cómo construir extensiones de buen "
|
||||||
|
#~ "comportamiento para la Shell y por eso tiene poca funcionalidad por sí "
|
||||||
|
#~ "solo.\n"
|
||||||
|
#~ "Sin embargo, es posible personalizar el mensaje de bienvenida."
|
||||||
|
|
||||||
#~ msgid "CPU"
|
#~ msgid "CPU"
|
||||||
#~ msgstr "CPU"
|
#~ msgstr "CPU"
|
||||||
|
|
||||||
|
|||||||
@@ -6,85 +6,44 @@
|
|||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: gnome-shell-extensions master\n"
|
"Project-Id-Version: gnome-shell-extensions master\n"
|
||||||
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
|
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell-extensions/"
|
||||||
"shell&keywords=I18N+L10N&component=extensions\n"
|
"issues\n"
|
||||||
"POT-Creation-Date: 2014-08-06 07:34+0000\n"
|
"POT-Creation-Date: 2019-03-02 10:57+0000\n"
|
||||||
"PO-Revision-Date: 2014-08-06 21:43+0300\n"
|
"PO-Revision-Date: 2019-03-10 19:24+0200\n"
|
||||||
"Last-Translator: Mattias Põldaru <mahfiaz@gmail.com>\n"
|
"Last-Translator: Mart Raudsepp <leio@gentoo.org>\n"
|
||||||
"Language-Team: Estonian <gnome-et-list@gnome.org>\n"
|
"Language-Team: Estonian <gnome-et-list@gnome.org>\n"
|
||||||
"Language: et\n"
|
"Language: et\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||||
"X-Generator: Poedit 1.5.4\n"
|
"X-Generator: Poedit 2.2\n"
|
||||||
|
|
||||||
|
#: data/gnome-classic.desktop.in:3 data/gnome-classic.session.desktop.in:3
|
||||||
msgid "GNOME Classic"
|
msgid "GNOME Classic"
|
||||||
msgstr "Klassikaline GNOME"
|
msgstr "Klassikaline GNOME"
|
||||||
|
|
||||||
|
#: data/gnome-classic.desktop.in:4
|
||||||
msgid "This session logs you into GNOME Classic"
|
msgid "This session logs you into GNOME Classic"
|
||||||
msgstr "See on klassikalise GNOME seanss"
|
msgstr "See on klassikalise GNOME seanss"
|
||||||
|
|
||||||
msgid "GNOME Shell Classic"
|
#: extensions/apps-menu/extension.js:29
|
||||||
msgstr "GNOME klassikaline kest"
|
|
||||||
|
|
||||||
msgid "Window management and application launching"
|
|
||||||
msgstr "Akende haldus ja rakenduste käivitamine"
|
|
||||||
|
|
||||||
msgid "Attach modal dialog to the parent window"
|
|
||||||
msgstr "Modaalsed dialoogid on vanemakna küljes"
|
|
||||||
|
|
||||||
msgid ""
|
|
||||||
"This key overrides the key in org.gnome.mutter when running GNOME Shell."
|
|
||||||
msgstr ""
|
|
||||||
"See võti on tähtsam võtmest org.gnome.mutter GNOME Shelli käivitamisel."
|
|
||||||
|
|
||||||
msgid "Arrangement of buttons on the titlebar"
|
|
||||||
msgstr "Nuppude järjestus tiitliribal"
|
|
||||||
|
|
||||||
msgid ""
|
|
||||||
"This key overrides the key in org.gnome.desktop.wm.preferences when running "
|
|
||||||
"GNOME Shell."
|
|
||||||
msgstr ""
|
|
||||||
"See võti on tähtsam võtmest org.gnome.desktop.wm.preferences GNOME Shelli "
|
|
||||||
"käivitamisel."
|
|
||||||
|
|
||||||
msgid "Enable edge tiling when dropping windows on screen edges"
|
|
||||||
msgstr "Akna automaatpaigutus on lubatud, kui aken lohistatakse ekraani serva"
|
|
||||||
|
|
||||||
msgid "Workspaces only on primary monitor"
|
|
||||||
msgstr "Tööalad on ainult peamisel ekraanil"
|
|
||||||
|
|
||||||
msgid "Delay focus changes in mouse mode until the pointer stops moving"
|
|
||||||
msgstr "Hiire all asuv aken saab fookuse alles hiire peatumisel"
|
|
||||||
|
|
||||||
msgid "Thumbnail only"
|
|
||||||
msgstr "Ainult pisipilt"
|
|
||||||
|
|
||||||
msgid "Application icon only"
|
|
||||||
msgstr "Ainult rakenduse ikoon"
|
|
||||||
|
|
||||||
msgid "Thumbnail and application icon"
|
|
||||||
msgstr "Pisipilt ja rakenduse ikoon"
|
|
||||||
|
|
||||||
msgid "Present windows as"
|
|
||||||
msgstr "Aknaid esitletakse kui"
|
|
||||||
|
|
||||||
msgid "Show only windows in the current workspace"
|
|
||||||
msgstr "Näidatakse ainult käesoleva tööala aknaid"
|
|
||||||
|
|
||||||
msgid "Activities Overview"
|
msgid "Activities Overview"
|
||||||
msgstr "Tegevuste ülevaade"
|
msgstr "Tegevuste ülevaade"
|
||||||
|
|
||||||
|
#: extensions/apps-menu/extension.js:118
|
||||||
msgid "Favorites"
|
msgid "Favorites"
|
||||||
msgstr "Lemmikud"
|
msgstr "Lemmikud"
|
||||||
|
|
||||||
|
#: extensions/apps-menu/extension.js:407
|
||||||
msgid "Applications"
|
msgid "Applications"
|
||||||
msgstr "Rakendused"
|
msgstr "Rakendused"
|
||||||
|
|
||||||
|
#: extensions/auto-move-windows/org.gnome.shell.extensions.auto-move-windows.gschema.xml:6
|
||||||
msgid "Application and workspace list"
|
msgid "Application and workspace list"
|
||||||
msgstr "Rakenduste ja tööalade loend"
|
msgstr "Rakenduste ja tööalade loend"
|
||||||
|
|
||||||
|
#: extensions/auto-move-windows/org.gnome.shell.extensions.auto-move-windows.gschema.xml:7
|
||||||
msgid ""
|
msgid ""
|
||||||
"A list of strings, each containing an application id (desktop file name), "
|
"A list of strings, each containing an application id (desktop file name), "
|
||||||
"followed by a colon and the workspace number"
|
"followed by a colon and the workspace number"
|
||||||
@@ -92,57 +51,47 @@ msgstr ""
|
|||||||
"Rakenduste loend, sõnedest, mis sisaldavad rakenduse id-d (desktop faili "
|
"Rakenduste loend, sõnedest, mis sisaldavad rakenduse id-d (desktop faili "
|
||||||
"nimi), koolonit ja tööala numbrit."
|
"nimi), koolonit ja tööala numbrit."
|
||||||
|
|
||||||
|
#: extensions/auto-move-windows/prefs.js:60
|
||||||
msgid "Application"
|
msgid "Application"
|
||||||
msgstr "Rakendus"
|
msgstr "Rakendus"
|
||||||
|
|
||||||
|
#: extensions/auto-move-windows/prefs.js:71
|
||||||
|
#: extensions/auto-move-windows/prefs.js:134
|
||||||
msgid "Workspace"
|
msgid "Workspace"
|
||||||
msgstr "Tööala"
|
msgstr "Tööala"
|
||||||
|
|
||||||
|
#: extensions/auto-move-windows/prefs.js:89
|
||||||
msgid "Add Rule"
|
msgid "Add Rule"
|
||||||
msgstr "Lisa reegel"
|
msgstr "Lisa reegel"
|
||||||
|
|
||||||
|
#: extensions/auto-move-windows/prefs.js:111
|
||||||
msgid "Create new matching rule"
|
msgid "Create new matching rule"
|
||||||
msgstr "Uue reegli loomine"
|
msgstr "Uue reegli loomine"
|
||||||
|
|
||||||
|
#: extensions/auto-move-windows/prefs.js:117
|
||||||
msgid "Add"
|
msgid "Add"
|
||||||
msgstr "Lisa"
|
msgstr "Lisa"
|
||||||
|
|
||||||
|
#. TRANSLATORS: %s is the filesystem name
|
||||||
|
#: extensions/drive-menu/extension.js:100
|
||||||
|
#: extensions/places-menu/placeDisplay.js:217
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "Ejecting drive '%s' failed:"
|
msgid "Ejecting drive “%s” failed:"
|
||||||
msgstr "Seadme '%s' väljastamine nurjus:"
|
msgstr "Seadme „%s“ väljastamine nurjus:"
|
||||||
|
|
||||||
|
#: extensions/drive-menu/extension.js:116
|
||||||
msgid "Removable devices"
|
msgid "Removable devices"
|
||||||
msgstr "Eemaldatavad seadmed"
|
msgstr "Eemaldatavad seadmed"
|
||||||
|
|
||||||
msgid "Open File"
|
#: extensions/drive-menu/extension.js:143
|
||||||
msgstr "Faili avamine"
|
msgid "Open Files"
|
||||||
|
msgstr "Failide avamine"
|
||||||
msgid "Hello, world!"
|
|
||||||
msgstr "Tere, maailm!"
|
|
||||||
|
|
||||||
msgid "Alternative greeting text."
|
|
||||||
msgstr "Alternatiivne tervitustekst."
|
|
||||||
|
|
||||||
msgid ""
|
|
||||||
"If not empty, it contains the text that will be shown when clicking on the "
|
|
||||||
"panel."
|
|
||||||
msgstr "Kui see pole tühi, näidatakse seda teksti paneelile klõpsates."
|
|
||||||
|
|
||||||
msgid "Message"
|
|
||||||
msgstr "Sõnum"
|
|
||||||
|
|
||||||
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äide hästi käituva Shelli laienduse koostamise kohta, see ise väga kasulik "
|
|
||||||
"ei ole.\n"
|
|
||||||
"See võimaldab muuta kõigest tervitusteksti."
|
|
||||||
|
|
||||||
|
#: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:5
|
||||||
msgid "Use more screen for windows"
|
msgid "Use more screen for windows"
|
||||||
msgstr "Rohkem pinda akende jaoks"
|
msgstr "Rohkem pinda akende jaoks"
|
||||||
|
|
||||||
|
#: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:6
|
||||||
msgid ""
|
msgid ""
|
||||||
"Try to use more screen for placing window thumbnails by adapting to screen "
|
"Try to use more screen for placing window thumbnails by adapting to screen "
|
||||||
"aspect ratio, and consolidating them further to reduce the bounding box. "
|
"aspect ratio, and consolidating them further to reduce the bounding box. "
|
||||||
@@ -152,9 +101,11 @@ msgstr ""
|
|||||||
"ja paigutatakse aknad üksteisele lähemale. See säte kehtib ainult koos "
|
"ja paigutatakse aknad üksteisele lähemale. See säte kehtib ainult koos "
|
||||||
"akende loomuliku paigutusega."
|
"akende loomuliku paigutusega."
|
||||||
|
|
||||||
|
#: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:11
|
||||||
msgid "Place window captions on top"
|
msgid "Place window captions on top"
|
||||||
msgstr "Akende pealkirjad on üleval"
|
msgstr "Akende pealkirjad on üleval"
|
||||||
|
|
||||||
|
#: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:12
|
||||||
msgid ""
|
msgid ""
|
||||||
"If true, place window captions on top the respective thumbnail, overriding "
|
"If true, place window captions on top the respective thumbnail, overriding "
|
||||||
"shell default of placing it at the bottom. Changing this setting requires "
|
"shell default of placing it at the bottom. Changing this setting requires "
|
||||||
@@ -164,99 +115,229 @@ msgstr ""
|
|||||||
"Shelli vaikimisi viisi, alla asetamist. Selle sätte muutmine mõjub alles "
|
"Shelli vaikimisi viisi, alla asetamist. Selle sätte muutmine mõjub alles "
|
||||||
"pärast Shelli taaskäivitust."
|
"pärast Shelli taaskäivitust."
|
||||||
|
|
||||||
|
#: extensions/places-menu/extension.js:79
|
||||||
|
#: extensions/places-menu/extension.js:83
|
||||||
msgid "Places"
|
msgid "Places"
|
||||||
msgstr "Asukohad"
|
msgstr "Asukohad"
|
||||||
|
|
||||||
|
#: extensions/places-menu/placeDisplay.js:59
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "Failed to launch \"%s\""
|
msgid "Failed to mount volume for “%s”"
|
||||||
msgstr "\"%s\" käivitamine nurjus"
|
msgstr ""
|
||||||
|
|
||||||
|
#: extensions/places-menu/placeDisplay.js:72
|
||||||
|
#, javascript-format
|
||||||
|
msgid "Failed to launch “%s”"
|
||||||
|
msgstr "„%s“ käivitamine nurjus"
|
||||||
|
|
||||||
|
#: extensions/places-menu/placeDisplay.js:133
|
||||||
|
#: extensions/places-menu/placeDisplay.js:156
|
||||||
msgid "Computer"
|
msgid "Computer"
|
||||||
msgstr "Arvuti"
|
msgstr "Arvuti"
|
||||||
|
|
||||||
|
#: extensions/places-menu/placeDisplay.js:343
|
||||||
msgid "Home"
|
msgid "Home"
|
||||||
msgstr "Kodu"
|
msgstr "Kodu"
|
||||||
|
|
||||||
|
#: extensions/places-menu/placeDisplay.js:387
|
||||||
msgid "Browse Network"
|
msgid "Browse Network"
|
||||||
msgstr "Võrgu sirvimine"
|
msgstr "Võrgu sirvimine"
|
||||||
|
|
||||||
msgid "CPU"
|
#: extensions/screenshot-window-sizer/org.gnome.shell.extensions.screenshot-window-sizer.gschema.xml:7
|
||||||
msgstr "Protsessor"
|
msgid "Cycle Screenshot Sizes"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Memory"
|
#: extensions/screenshot-window-sizer/org.gnome.shell.extensions.screenshot-window-sizer.gschema.xml:11
|
||||||
msgstr "Mälu"
|
msgid "Cycle Screenshot Sizes Backward"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml:5
|
||||||
msgid "Theme name"
|
msgid "Theme name"
|
||||||
msgstr "Kujunduse nimi"
|
msgstr "Kujunduse nimi"
|
||||||
|
|
||||||
|
#: extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml:6
|
||||||
msgid "The name of the theme, to be loaded from ~/.themes/name/gnome-shell"
|
msgid "The name of the theme, to be loaded from ~/.themes/name/gnome-shell"
|
||||||
msgstr "Kujunduse nimi, mis laaditakse asukohast ~/.themes/name/gnome-shell"
|
msgstr "Kujunduse nimi, mis laaditakse asukohast ~/.themes/name/gnome-shell"
|
||||||
|
|
||||||
|
#: extensions/window-list/extension.js:100
|
||||||
msgid "Close"
|
msgid "Close"
|
||||||
msgstr "Sulge"
|
msgstr "Sulge"
|
||||||
|
|
||||||
|
#: extensions/window-list/extension.js:120
|
||||||
msgid "Unminimize"
|
msgid "Unminimize"
|
||||||
msgstr "Taasta"
|
msgstr "Taasta"
|
||||||
|
|
||||||
|
#: extensions/window-list/extension.js:120
|
||||||
msgid "Minimize"
|
msgid "Minimize"
|
||||||
msgstr "Minimeeri"
|
msgstr "Minimeeri"
|
||||||
|
|
||||||
|
#: extensions/window-list/extension.js:127
|
||||||
msgid "Unmaximize"
|
msgid "Unmaximize"
|
||||||
msgstr "Taasta suurus"
|
msgstr "Taasta suurus"
|
||||||
|
|
||||||
|
#: extensions/window-list/extension.js:127
|
||||||
msgid "Maximize"
|
msgid "Maximize"
|
||||||
msgstr "Maksimeeri"
|
msgstr "Maksimeeri"
|
||||||
|
|
||||||
|
#: extensions/window-list/extension.js:408
|
||||||
msgid "Minimize all"
|
msgid "Minimize all"
|
||||||
msgstr "Minimeeri kõik"
|
msgstr "Minimeeri kõik"
|
||||||
|
|
||||||
|
#: extensions/window-list/extension.js:414
|
||||||
msgid "Unminimize all"
|
msgid "Unminimize all"
|
||||||
msgstr "Taasta kõik"
|
msgstr "Taasta kõik"
|
||||||
|
|
||||||
|
#: extensions/window-list/extension.js:420
|
||||||
msgid "Maximize all"
|
msgid "Maximize all"
|
||||||
msgstr "Maksimeeri kõik"
|
msgstr "Maksimeeri kõik"
|
||||||
|
|
||||||
|
#: extensions/window-list/extension.js:429
|
||||||
msgid "Unmaximize all"
|
msgid "Unmaximize all"
|
||||||
msgstr "Taasta kõigi suurus"
|
msgstr "Taasta kõigi suurus"
|
||||||
|
|
||||||
|
#: extensions/window-list/extension.js:438
|
||||||
msgid "Close all"
|
msgid "Close all"
|
||||||
msgstr "Sulge kõik"
|
msgstr "Sulge kõik"
|
||||||
|
|
||||||
|
#: extensions/window-list/extension.js:655
|
||||||
|
#: extensions/workspace-indicator/extension.js:21
|
||||||
msgid "Workspace Indicator"
|
msgid "Workspace Indicator"
|
||||||
msgstr "Tööala näitaja"
|
msgstr "Tööala näitaja"
|
||||||
|
|
||||||
|
#: extensions/window-list/extension.js:836
|
||||||
msgid "Window List"
|
msgid "Window List"
|
||||||
msgstr "Akende loend"
|
msgstr "Akende loend"
|
||||||
|
|
||||||
|
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:12
|
||||||
msgid "When to group windows"
|
msgid "When to group windows"
|
||||||
msgstr "Millal aknaid grupeeritakse"
|
msgstr "Millal aknaid grupeeritakse"
|
||||||
|
|
||||||
|
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:13
|
||||||
msgid ""
|
msgid ""
|
||||||
"Decides when to group windows from the same application on the window list. "
|
"Decides when to group windows from the same application on the window list. "
|
||||||
"Possible values are \"never\", \"auto\" and \"always\"."
|
"Possible values are “never”, “auto” and “always”."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Määrab, millal akende loendis sama rakenduse aknaid grupeeritakse. "
|
"Määrab, millal akende loendis sama rakenduse aknaid grupeeritakse. "
|
||||||
"Võimalikud väärtused on \"never\" (mitte kunagi), \"auto\" (automaatselt) ja "
|
"Võimalikud väärtused on „never“ (mitte kunagi), „auto“ (automaatselt) ja "
|
||||||
"\"always\" (alati)."
|
"„always“ (alati)."
|
||||||
|
|
||||||
|
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:20
|
||||||
|
msgid "Show the window list on all monitors"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:21
|
||||||
|
msgid ""
|
||||||
|
"Whether to show the window list on all connected monitors or only on the "
|
||||||
|
"primary one."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: extensions/window-list/prefs.js:25
|
||||||
msgid "Window Grouping"
|
msgid "Window Grouping"
|
||||||
msgstr "Akende grupeerimine"
|
msgstr "Akende grupeerimine"
|
||||||
|
|
||||||
|
#: extensions/window-list/prefs.js:47
|
||||||
msgid "Never group windows"
|
msgid "Never group windows"
|
||||||
msgstr "Aknaid ei grupeerita kunagi"
|
msgstr "Aknaid ei grupeerita kunagi"
|
||||||
|
|
||||||
|
#: extensions/window-list/prefs.js:48
|
||||||
msgid "Group windows when space is limited"
|
msgid "Group windows when space is limited"
|
||||||
msgstr "Aknaid grupeeritakse, kui ruumi on vähe"
|
msgstr "Aknaid grupeeritakse, kui ruumi on vähe"
|
||||||
|
|
||||||
|
#: extensions/window-list/prefs.js:49
|
||||||
msgid "Always group windows"
|
msgid "Always group windows"
|
||||||
msgstr "Aknaid grupeeritakse alati"
|
msgstr "Aknaid grupeeritakse alati"
|
||||||
|
|
||||||
|
#: extensions/window-list/prefs.js:75
|
||||||
|
msgid "Show on all monitors"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: extensions/workspace-indicator/prefs.js:131
|
||||||
msgid "Workspace Names"
|
msgid "Workspace Names"
|
||||||
msgstr "Tööalade nimed"
|
msgstr "Tööalade nimed"
|
||||||
|
|
||||||
|
#: extensions/workspace-indicator/prefs.js:151
|
||||||
msgid "Name"
|
msgid "Name"
|
||||||
msgstr "Nimi"
|
msgstr "Nimi"
|
||||||
|
|
||||||
|
#: extensions/workspace-indicator/prefs.js:191
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "Workspace %d"
|
msgid "Workspace %d"
|
||||||
msgstr "Tööala %d"
|
msgstr "Tööala %d"
|
||||||
|
|
||||||
|
#~ msgid "GNOME Shell Classic"
|
||||||
|
#~ msgstr "GNOME klassikaline kest"
|
||||||
|
|
||||||
|
#~ msgid "Window management and application launching"
|
||||||
|
#~ msgstr "Akende haldus ja rakenduste käivitamine"
|
||||||
|
|
||||||
|
#~ msgid "Attach modal dialog to the parent window"
|
||||||
|
#~ msgstr "Modaalsed dialoogid on vanemakna küljes"
|
||||||
|
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "This key overrides the key in org.gnome.mutter when running GNOME Shell."
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "See võti on tähtsam võtmest org.gnome.mutter GNOME Shelli käivitamisel."
|
||||||
|
|
||||||
|
#~ msgid "Arrangement of buttons on the titlebar"
|
||||||
|
#~ msgstr "Nuppude järjestus tiitliribal"
|
||||||
|
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "This key overrides the key in org.gnome.desktop.wm.preferences when "
|
||||||
|
#~ "running GNOME Shell."
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "See võti on tähtsam võtmest org.gnome.desktop.wm.preferences GNOME Shelli "
|
||||||
|
#~ "käivitamisel."
|
||||||
|
|
||||||
|
#~ msgid "Enable edge tiling when dropping windows on screen edges"
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "Akna automaatpaigutus on lubatud, kui aken lohistatakse ekraani serva"
|
||||||
|
|
||||||
|
#~ msgid "Workspaces only on primary monitor"
|
||||||
|
#~ msgstr "Tööalad on ainult peamisel ekraanil"
|
||||||
|
|
||||||
|
#~ msgid "Delay focus changes in mouse mode until the pointer stops moving"
|
||||||
|
#~ msgstr "Hiire all asuv aken saab fookuse alles hiire peatumisel"
|
||||||
|
|
||||||
|
#~ msgid "Thumbnail only"
|
||||||
|
#~ msgstr "Ainult pisipilt"
|
||||||
|
|
||||||
|
#~ msgid "Application icon only"
|
||||||
|
#~ msgstr "Ainult rakenduse ikoon"
|
||||||
|
|
||||||
|
#~ msgid "Thumbnail and application icon"
|
||||||
|
#~ msgstr "Pisipilt ja rakenduse ikoon"
|
||||||
|
|
||||||
|
#~ msgid "Present windows as"
|
||||||
|
#~ msgstr "Aknaid esitletakse kui"
|
||||||
|
|
||||||
|
#~ msgid "Show only windows in the current workspace"
|
||||||
|
#~ msgstr "Näidatakse ainult käesoleva tööala aknaid"
|
||||||
|
|
||||||
|
#~ msgid "Hello, world!"
|
||||||
|
#~ msgstr "Tere, maailm!"
|
||||||
|
|
||||||
|
#~ msgid "Alternative greeting text."
|
||||||
|
#~ msgstr "Alternatiivne tervitustekst."
|
||||||
|
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "If not empty, it contains the text that will be shown when clicking on "
|
||||||
|
#~ "the panel."
|
||||||
|
#~ msgstr "Kui see pole tühi, näidatakse seda teksti paneelile klõpsates."
|
||||||
|
|
||||||
|
#~ msgid "Message"
|
||||||
|
#~ msgstr "Sõnum"
|
||||||
|
|
||||||
|
#~ 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äide hästi käituva Shelli laienduse koostamise kohta, see ise väga "
|
||||||
|
#~ "kasulik ei ole.\n"
|
||||||
|
#~ "See võimaldab muuta kõigest tervitusteksti."
|
||||||
|
|
||||||
|
#~ msgid "CPU"
|
||||||
|
#~ msgstr "Protsessor"
|
||||||
|
|
||||||
|
#~ msgid "Memory"
|
||||||
|
#~ msgstr "Mälu"
|
||||||
|
|||||||
@@ -5,22 +5,22 @@
|
|||||||
# assar <asiersar@yahoo.com>, 2011.
|
# assar <asiersar@yahoo.com>, 2011.
|
||||||
# Iñaki Larrañaga Murgoitio <dooteo@zundan.com>, 2011, 2013, 2015, 2017.
|
# Iñaki Larrañaga Murgoitio <dooteo@zundan.com>, 2011, 2013, 2015, 2017.
|
||||||
# Edurne Labaka <elabaka@uzei.com>, 2015.
|
# Edurne Labaka <elabaka@uzei.com>, 2015.
|
||||||
|
# Asier Sarasua Garmendia <asier.sarasua@gmail.com>, 2019.
|
||||||
|
#
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr "Project-Id-Version: gnome-shell-extensions master\n"
|
||||||
"Project-Id-Version: gnome-shell-extensions master\n"
|
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell-extensions/issues\n"
|
||||||
"Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
|
"POT-Creation-Date: 2019-08-11 13:48+0000\n"
|
||||||
"shell&keywords=I18N+L10N&component=extensions\n"
|
"PO-Revision-Date: 2019-08-12 00:42+0200\n"
|
||||||
"POT-Creation-Date: 2017-08-11 01:33+0000\n"
|
"Last-Translator: Asier Sarasua Garmendia <asier.sarasua@gmail.com>\n"
|
||||||
"PO-Revision-Date: 2017-08-27 15:49+0200\n"
|
|
||||||
"Last-Translator: Iñaki Larrañaga Murgoitio <dooteo@zundan.com>\n"
|
|
||||||
"Language-Team: Basque <librezale@librezale.eus>\n"
|
"Language-Team: Basque <librezale@librezale.eus>\n"
|
||||||
"Language: eu\n"
|
"Language: eu\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||||
"X-Generator: Lokalize 1.5\n"
|
|
||||||
"X-Project-Style: gnome\n"
|
"X-Project-Style: gnome\n"
|
||||||
|
"X-Generator: Poedit 2.2.3\n"
|
||||||
|
|
||||||
#: data/gnome-classic.desktop.in:3 data/gnome-classic.session.desktop.in:3
|
#: data/gnome-classic.desktop.in:3 data/gnome-classic.session.desktop.in:3
|
||||||
msgid "GNOME Classic"
|
msgid "GNOME Classic"
|
||||||
@@ -30,76 +30,11 @@ msgstr "GNOME Klasikoa"
|
|||||||
msgid "This session logs you into GNOME Classic"
|
msgid "This session logs you into GNOME Classic"
|
||||||
msgstr "Saio honek GNOME Klasikoa hasten du"
|
msgstr "Saio honek GNOME Klasikoa hasten du"
|
||||||
|
|
||||||
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:7
|
#: extensions/apps-menu/extension.js:113
|
||||||
msgid "Attach modal dialog to the parent window"
|
|
||||||
msgstr "Erantsi elkarrizketa-koadro modala leiho gurasoari"
|
|
||||||
|
|
||||||
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:8
|
|
||||||
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:25
|
|
||||||
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:33
|
|
||||||
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:41
|
|
||||||
msgid ""
|
|
||||||
"This key overrides the key in org.gnome.mutter when running GNOME Shell."
|
|
||||||
msgstr ""
|
|
||||||
"Gako honek org.gnome.mutter-eko gakoa gainidazten du GNOME Shell exekutatzen "
|
|
||||||
"ari denean."
|
|
||||||
|
|
||||||
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:16
|
|
||||||
msgid "Arrangement of buttons on the titlebar"
|
|
||||||
msgstr "Botoien antolamendua titulu-barran"
|
|
||||||
|
|
||||||
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:17
|
|
||||||
msgid ""
|
|
||||||
"This key overrides the key in org.gnome.desktop.wm.preferences when running "
|
|
||||||
"GNOME Shell."
|
|
||||||
msgstr ""
|
|
||||||
"Gako honekorg.gnome.desktop.wm.preferences-eko gakoa gainidazten du GNOME "
|
|
||||||
"Shell exekutatzen ari denean."
|
|
||||||
|
|
||||||
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:24
|
|
||||||
msgid "Enable edge tiling when dropping windows on screen edges"
|
|
||||||
msgstr ""
|
|
||||||
"Gaitu ertza lauza gisa ezartzea leihoak pantailaren ertzetara jaregitean"
|
|
||||||
|
|
||||||
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:32
|
|
||||||
msgid "Workspaces only on primary monitor"
|
|
||||||
msgstr "Laneko areak pantaila nagusian soilik"
|
|
||||||
|
|
||||||
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:40
|
|
||||||
msgid "Delay focus changes in mouse mode until the pointer stops moving"
|
|
||||||
msgstr ""
|
|
||||||
"Fokuaren aldaketaren atzerapena saguaren moduan erakusleak mugitzeari utzi "
|
|
||||||
"arte"
|
|
||||||
|
|
||||||
#: extensions/alternate-tab/prefs.js:20
|
|
||||||
msgid "Thumbnail only"
|
|
||||||
msgstr "Koadro txikiak soilik"
|
|
||||||
|
|
||||||
#: extensions/alternate-tab/prefs.js:21
|
|
||||||
msgid "Application icon only"
|
|
||||||
msgstr "Aplikazioen ikonoa soilik"
|
|
||||||
|
|
||||||
#: extensions/alternate-tab/prefs.js:22
|
|
||||||
msgid "Thumbnail and application icon"
|
|
||||||
msgstr "Koadro txikien eta aplikazioen ikonoa"
|
|
||||||
|
|
||||||
#: extensions/alternate-tab/prefs.js:38
|
|
||||||
msgid "Present windows as"
|
|
||||||
msgstr "Aurkeztu leihoa honela"
|
|
||||||
|
|
||||||
#: extensions/alternate-tab/prefs.js:69
|
|
||||||
msgid "Show only windows in the current workspace"
|
|
||||||
msgstr "Erakutsi leihoak bakarrik uneko laneko arean"
|
|
||||||
|
|
||||||
#: extensions/apps-menu/extension.js:41
|
|
||||||
msgid "Activities Overview"
|
|
||||||
msgstr "Jardueren ikuspegi orokorra"
|
|
||||||
|
|
||||||
#: extensions/apps-menu/extension.js:141
|
|
||||||
msgid "Favorites"
|
msgid "Favorites"
|
||||||
msgstr "Gogokoak"
|
msgstr "Gogokoak"
|
||||||
|
|
||||||
#: extensions/apps-menu/extension.js:436
|
#: extensions/apps-menu/extension.js:368
|
||||||
msgid "Applications"
|
msgid "Applications"
|
||||||
msgstr "Aplikazioak"
|
msgstr "Aplikazioak"
|
||||||
|
|
||||||
@@ -111,76 +46,44 @@ msgstr "Aplikazioen eta laneko areen zerrenda"
|
|||||||
msgid ""
|
msgid ""
|
||||||
"A list of strings, each containing an application id (desktop file name), "
|
"A list of strings, each containing an application id (desktop file name), "
|
||||||
"followed by a colon and the workspace number"
|
"followed by a colon and the workspace number"
|
||||||
msgstr ""
|
msgstr "Kateen zerrenda bat, bakoitzak aplikazio-ID bat duena (mahaigainaren fitxategi-izena) eta jarraian bi puntu eta laneko arearen zenbakia dituena"
|
||||||
"Kateen zerrenda bat, bakoitzak aplikazio-ID bat duena (mahaigainaren "
|
|
||||||
"fitxategi-izena) eta jarraian bi puntu eta laneko arearen zenbakia dituena"
|
|
||||||
|
|
||||||
#: extensions/auto-move-windows/prefs.js:60
|
#: extensions/auto-move-windows/prefs.js:60
|
||||||
msgid "Application"
|
msgid "Application"
|
||||||
msgstr "Aplikazioa"
|
msgstr "Aplikazioa"
|
||||||
|
|
||||||
#: extensions/auto-move-windows/prefs.js:69
|
#: extensions/auto-move-windows/prefs.js:71
|
||||||
#: extensions/auto-move-windows/prefs.js:127
|
#: extensions/auto-move-windows/prefs.js:134
|
||||||
msgid "Workspace"
|
msgid "Workspace"
|
||||||
msgstr "Laneko area"
|
msgstr "Laneko area"
|
||||||
|
|
||||||
#: extensions/auto-move-windows/prefs.js:85
|
#: extensions/auto-move-windows/prefs.js:89
|
||||||
msgid "Add Rule"
|
msgid "Add Rule"
|
||||||
msgstr "Gehitu araua"
|
msgstr "Gehitu araua"
|
||||||
|
|
||||||
#: extensions/auto-move-windows/prefs.js:106
|
#: extensions/auto-move-windows/prefs.js:111
|
||||||
msgid "Create new matching rule"
|
msgid "Create new matching rule"
|
||||||
msgstr "Sortu bat datorren arau berria"
|
msgstr "Sortu bat datorren arau berria"
|
||||||
|
|
||||||
#: extensions/auto-move-windows/prefs.js:111
|
#: extensions/auto-move-windows/prefs.js:117
|
||||||
msgid "Add"
|
msgid "Add"
|
||||||
msgstr "Gehitu"
|
msgstr "Gehitu"
|
||||||
|
|
||||||
#. TRANSLATORS: %s is the filesystem name
|
#. TRANSLATORS: %s is the filesystem name
|
||||||
#: extensions/drive-menu/extension.js:107
|
#: extensions/drive-menu/extension.js:102
|
||||||
|
#: extensions/places-menu/placeDisplay.js:232
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "Ejecting drive “%s” failed:"
|
msgid "Ejecting drive “%s” failed:"
|
||||||
msgstr "Huts egin du “%s“ unitatea egoztean: "
|
msgstr "Huts egin du “%s“ unitatea egoztean:"
|
||||||
|
|
||||||
#: extensions/drive-menu/extension.js:125
|
#: extensions/drive-menu/extension.js:118
|
||||||
msgid "Removable devices"
|
msgid "Removable devices"
|
||||||
msgstr "Gailu aldagarriak"
|
msgstr "Gailu aldagarriak"
|
||||||
|
|
||||||
#: extensions/drive-menu/extension.js:150
|
#: extensions/drive-menu/extension.js:145
|
||||||
#| msgid "Open File"
|
|
||||||
msgid "Open Files"
|
msgid "Open Files"
|
||||||
msgstr "Ireki fitxategiak"
|
msgstr "Ireki fitxategiak"
|
||||||
|
|
||||||
#: extensions/example/extension.js:17
|
|
||||||
msgid "Hello, world!"
|
|
||||||
msgstr "Kaixo mundua!"
|
|
||||||
|
|
||||||
#: extensions/example/org.gnome.shell.extensions.example.gschema.xml:5
|
|
||||||
msgid "Alternative greeting text."
|
|
||||||
msgstr "Ongi etorriaren bestelako testua."
|
|
||||||
|
|
||||||
#: extensions/example/org.gnome.shell.extensions.example.gschema.xml:6
|
|
||||||
msgid ""
|
|
||||||
"If not empty, it contains the text that will be shown when clicking on the "
|
|
||||||
"panel."
|
|
||||||
msgstr "Ez badago hutsik, panelean klik egitean erakutsiko den testua dauka."
|
|
||||||
|
|
||||||
#: extensions/example/prefs.js:30
|
|
||||||
msgid "Message"
|
|
||||||
msgstr "Mezua"
|
|
||||||
|
|
||||||
#. TRANSLATORS: Example is the name of the extension, should not be
|
|
||||||
#. translated
|
|
||||||
#: extensions/example/prefs.js:43
|
|
||||||
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-erako portaera egokia duten hedapenak nola eraikitzen den erakusteko "
|
|
||||||
"helburua du adibideak, ondorioz bere kasa funtzionalitate baxukoa da.\n"
|
|
||||||
"Hala ere, ongi etorriko mezua pertsonalizatzeko aukera dago."
|
|
||||||
|
|
||||||
#: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:5
|
#: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:5
|
||||||
msgid "Use more screen for windows"
|
msgid "Use more screen for windows"
|
||||||
msgstr "Erabili pantaila gehiago leihoentzako"
|
msgstr "Erabili pantaila gehiago leihoentzako"
|
||||||
@@ -190,11 +93,7 @@ msgid ""
|
|||||||
"Try to use more screen for placing window thumbnails by adapting to screen "
|
"Try to use more screen for placing window thumbnails by adapting to screen "
|
||||||
"aspect ratio, and consolidating them further to reduce the bounding box. "
|
"aspect ratio, and consolidating them further to reduce the bounding box. "
|
||||||
"This setting applies only with the natural placement strategy."
|
"This setting applies only with the natural placement strategy."
|
||||||
msgstr ""
|
msgstr "Saiatu pantaila gehiago erabiltzen leihoen koadro txikiak kokatzeko pantailaren aspektu-erlaziora egokituz, eta haiek taldekatu muga-koadroa txikiagotzeko. Ezarpen hau kokapen naturalaren estrategiarekin soilik aplikatzen da."
|
||||||
"Saiatu pantaila gehiago erabiltzen leihoen koadro txikiak kokatzeko "
|
|
||||||
"pantailaren aspektu-erlaziora egokituz, eta haiek taldekatu muga-koadroa "
|
|
||||||
"txikiagotzeko. Ezarpen hau kokapen naturalaren estrategiarekin soilik "
|
|
||||||
"aplikatzen da."
|
|
||||||
|
|
||||||
#: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:11
|
#: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:11
|
||||||
msgid "Place window captions on top"
|
msgid "Place window captions on top"
|
||||||
@@ -205,37 +104,33 @@ msgid ""
|
|||||||
"If true, place window captions on top the respective thumbnail, overriding "
|
"If true, place window captions on top the respective thumbnail, overriding "
|
||||||
"shell default of placing it at the bottom. Changing this setting requires "
|
"shell default of placing it at the bottom. Changing this setting requires "
|
||||||
"restarting the shell to have any effect."
|
"restarting the shell to have any effect."
|
||||||
msgstr ""
|
msgstr "TRUE (egia) bada, leihoen epigrafeak dagokien koadro txikien gainean jarriko ditu, Shell-aren lehenespena (behean jartzearena) gainidatziz. Ezarpen hau aldatzeko eta aplikatzeko Shell berrabiarazi behar da."
|
||||||
"TRUE (egia) bada, leihoen epigrafeak dagokien koadro txikien gainean jarriko "
|
|
||||||
"ditu, Shell-aren lehenespena (behean jartzearena) gainidatziz. Ezarpen hau "
|
|
||||||
"aldatzeko eta aplikatzeko Shell berrabiarazi behar da."
|
|
||||||
|
|
||||||
#: extensions/places-menu/extension.js:78
|
#: extensions/places-menu/extension.js:80
|
||||||
#: extensions/places-menu/extension.js:81
|
#: extensions/places-menu/extension.js:84
|
||||||
msgid "Places"
|
msgid "Places"
|
||||||
msgstr "Lekuak"
|
msgstr "Lekuak"
|
||||||
|
|
||||||
#: extensions/places-menu/placeDisplay.js:65
|
#: extensions/places-menu/placeDisplay.js:46
|
||||||
|
#, javascript-format
|
||||||
|
msgid "Failed to launch “%s”"
|
||||||
|
msgstr "Huts egin du '%s' abiaraztean"
|
||||||
|
|
||||||
|
#: extensions/places-menu/placeDisplay.js:61
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
#| msgid "Failed to launch “%s”"
|
|
||||||
msgid "Failed to mount volume for “%s”"
|
msgid "Failed to mount volume for “%s”"
|
||||||
msgstr "Huts egin du “%s“(r)en bolumena muntatzean"
|
msgstr "Huts egin du “%s“(r)en bolumena muntatzean"
|
||||||
|
|
||||||
#: extensions/places-menu/placeDisplay.js:78
|
#: extensions/places-menu/placeDisplay.js:148
|
||||||
#, javascript-format
|
#: extensions/places-menu/placeDisplay.js:171
|
||||||
msgid "Failed to launch “%s”"
|
|
||||||
msgstr "Huts egin du “%s“ abiaraztean"
|
|
||||||
|
|
||||||
#: extensions/places-menu/placeDisplay.js:137
|
|
||||||
#: extensions/places-menu/placeDisplay.js:160
|
|
||||||
msgid "Computer"
|
msgid "Computer"
|
||||||
msgstr "Ordenagailua"
|
msgstr "Ordenagailua"
|
||||||
|
|
||||||
#: extensions/places-menu/placeDisplay.js:303
|
#: extensions/places-menu/placeDisplay.js:358
|
||||||
msgid "Home"
|
msgid "Home"
|
||||||
msgstr "Karpeta nagusia"
|
msgstr "Karpeta nagusia"
|
||||||
|
|
||||||
#: extensions/places-menu/placeDisplay.js:347
|
#: extensions/places-menu/placeDisplay.js:403
|
||||||
msgid "Browse Network"
|
msgid "Browse Network"
|
||||||
msgstr "Arakatu sarea"
|
msgstr "Arakatu sarea"
|
||||||
|
|
||||||
@@ -244,7 +139,6 @@ msgid "Cycle Screenshot Sizes"
|
|||||||
msgstr "Pantaila-argazkien tamainak begiztan"
|
msgstr "Pantaila-argazkien tamainak begiztan"
|
||||||
|
|
||||||
#: extensions/screenshot-window-sizer/org.gnome.shell.extensions.screenshot-window-sizer.gschema.xml:11
|
#: extensions/screenshot-window-sizer/org.gnome.shell.extensions.screenshot-window-sizer.gschema.xml:11
|
||||||
#| msgid "Cycle Screenshot Sizes"
|
|
||||||
msgid "Cycle Screenshot Sizes Backward"
|
msgid "Cycle Screenshot Sizes Backward"
|
||||||
msgstr "Pantaila-argazkien tamainak atzerantz begiztan"
|
msgstr "Pantaila-argazkien tamainak atzerantz begiztan"
|
||||||
|
|
||||||
@@ -256,54 +150,49 @@ msgstr "Gaiaren izena"
|
|||||||
msgid "The name of the theme, to be loaded from ~/.themes/name/gnome-shell"
|
msgid "The name of the theme, to be loaded from ~/.themes/name/gnome-shell"
|
||||||
msgstr "Gaiaren izena, ~/.themes/izena/gnome-shell direktoriotik kargatzeko"
|
msgstr "Gaiaren izena, ~/.themes/izena/gnome-shell direktoriotik kargatzeko"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:110
|
#: extensions/window-list/extension.js:98
|
||||||
msgid "Close"
|
msgid "Close"
|
||||||
msgstr "Itxi"
|
msgstr "Itxi"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:129
|
#: extensions/window-list/extension.js:118
|
||||||
msgid "Unminimize"
|
msgid "Unminimize"
|
||||||
msgstr "Leheneratu"
|
msgstr "Leheneratu"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:130
|
#: extensions/window-list/extension.js:118
|
||||||
msgid "Minimize"
|
msgid "Minimize"
|
||||||
msgstr "Minimizatu"
|
msgstr "Minimizatu"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:136
|
#: extensions/window-list/extension.js:125
|
||||||
msgid "Unmaximize"
|
msgid "Unmaximize"
|
||||||
msgstr "Desmaximizatu"
|
msgstr "Desmaximizatu"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:137
|
#: extensions/window-list/extension.js:125
|
||||||
msgid "Maximize"
|
msgid "Maximize"
|
||||||
msgstr "Maximizatu"
|
msgstr "Maximizatu"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:420
|
#: extensions/window-list/extension.js:430
|
||||||
msgid "Minimize all"
|
msgid "Minimize all"
|
||||||
msgstr "Minimizatu denak"
|
msgstr "Minimizatu denak"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:428
|
#: extensions/window-list/extension.js:436
|
||||||
msgid "Unminimize all"
|
msgid "Unminimize all"
|
||||||
msgstr "Leheneratu denak"
|
msgstr "Leheneratu denak"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:436
|
#: extensions/window-list/extension.js:442
|
||||||
msgid "Maximize all"
|
msgid "Maximize all"
|
||||||
msgstr "Maximizatu denak"
|
msgstr "Maximizatu denak"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:445
|
#: extensions/window-list/extension.js:450
|
||||||
msgid "Unmaximize all"
|
msgid "Unmaximize all"
|
||||||
msgstr "Desmaximizatu denak"
|
msgstr "Desmaximizatu denak"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:454
|
#: extensions/window-list/extension.js:458
|
||||||
msgid "Close all"
|
msgid "Close all"
|
||||||
msgstr "Itxi denak"
|
msgstr "Itxi denak"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:678
|
#: extensions/window-list/extension.js:740
|
||||||
#: extensions/workspace-indicator/extension.js:30
|
|
||||||
msgid "Workspace Indicator"
|
|
||||||
msgstr "Lan arearen adierazlea"
|
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:842
|
|
||||||
msgid "Window List"
|
msgid "Window List"
|
||||||
msgstr "Leihoen zerrenda"
|
msgstr "Leiho-zerrenda"
|
||||||
|
|
||||||
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:12
|
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:12
|
||||||
msgid "When to group windows"
|
msgid "When to group windows"
|
||||||
@@ -313,36 +202,40 @@ msgstr "Noiz elkartu leihoak"
|
|||||||
msgid ""
|
msgid ""
|
||||||
"Decides when to group windows from the same application on the window list. "
|
"Decides when to group windows from the same application on the window list. "
|
||||||
"Possible values are “never”, “auto” and “always”."
|
"Possible values are “never”, “auto” and “always”."
|
||||||
msgstr ""
|
msgstr "Aplikazio bereko leihoak leihoen zerrendan noiz elkartuko diren erabakitzen du. Balio erabilgarriak: “never“ (inoiz ere ez), “auto“ (automatikoa) eta “always“ (beti)."
|
||||||
"Aplikazio bereko leihoak leihoen zerrendan noiz elkartuko diren erabakitzen "
|
|
||||||
"du. Balio erabilgarriak: “never“ (inoiz ere ez), “auto“ (automatikoa) eta "
|
|
||||||
"“always“ (beti)."
|
|
||||||
|
|
||||||
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:20
|
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:20
|
||||||
|
#: extensions/window-list/prefs.js:82
|
||||||
|
msgid "Show windows from all workspaces"
|
||||||
|
msgstr "Erakutsi laneko area guztietako leihoak"
|
||||||
|
|
||||||
|
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:21
|
||||||
|
msgid "Whether to show windows from all workspaces or only the current one."
|
||||||
|
msgstr "Laneko area guztietako leihoak edo uneko areakoak soilik erakutsiko diren."
|
||||||
|
|
||||||
|
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:27
|
||||||
msgid "Show the window list on all monitors"
|
msgid "Show the window list on all monitors"
|
||||||
msgstr "Erakutsi leihoen zerrenda pantaila guztietan"
|
msgstr "Erakutsi leihoen zerrenda pantaila guztietan"
|
||||||
|
|
||||||
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:21
|
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:28
|
||||||
msgid ""
|
msgid ""
|
||||||
"Whether to show the window list on all connected monitors or only on the "
|
"Whether to show the window list on all connected monitors or only on the "
|
||||||
"primary one."
|
"primary one."
|
||||||
msgstr ""
|
msgstr "Leihoen zerrenda konektatutako pantaila guztietan edo soilik pantaila nagusian erakutsiko den."
|
||||||
"Leihoen zerrenda konektatutako pantaila guztietan edo soilik pantaila "
|
|
||||||
"nagusian erakutsiko den."
|
|
||||||
|
|
||||||
#: extensions/window-list/prefs.js:32
|
#: extensions/window-list/prefs.js:25
|
||||||
msgid "Window Grouping"
|
msgid "Window Grouping"
|
||||||
msgstr "Leihoak elkartzea"
|
msgstr "Leiho-elkartzea"
|
||||||
|
|
||||||
#: extensions/window-list/prefs.js:50
|
#: extensions/window-list/prefs.js:47
|
||||||
msgid "Never group windows"
|
msgid "Never group windows"
|
||||||
msgstr "Leihoak inoiz ez elkartu"
|
msgstr "Leihoak inoiz ez elkartu"
|
||||||
|
|
||||||
#: extensions/window-list/prefs.js:51
|
#: extensions/window-list/prefs.js:48
|
||||||
msgid "Group windows when space is limited"
|
msgid "Group windows when space is limited"
|
||||||
msgstr "Elkartu leihoak lekua mugatuta dagoenean"
|
msgstr "Elkartu leihoak lekua mugatuta dagoenean"
|
||||||
|
|
||||||
#: extensions/window-list/prefs.js:52
|
#: extensions/window-list/prefs.js:49
|
||||||
msgid "Always group windows"
|
msgid "Always group windows"
|
||||||
msgstr "Elkartu beti leihoak"
|
msgstr "Elkartu beti leihoak"
|
||||||
|
|
||||||
@@ -350,19 +243,95 @@ msgstr "Elkartu beti leihoak"
|
|||||||
msgid "Show on all monitors"
|
msgid "Show on all monitors"
|
||||||
msgstr "Erakutsi pantaila guztietan"
|
msgstr "Erakutsi pantaila guztietan"
|
||||||
|
|
||||||
#: extensions/workspace-indicator/prefs.js:141
|
#: extensions/window-list/workspaceIndicator.js:211
|
||||||
|
#: extensions/workspace-indicator/extension.js:216
|
||||||
|
msgid "Workspace Indicator"
|
||||||
|
msgstr "Lan arearen adierazlea"
|
||||||
|
|
||||||
|
#: extensions/workspace-indicator/prefs.js:131
|
||||||
msgid "Workspace Names"
|
msgid "Workspace Names"
|
||||||
msgstr "Laneko areen izenak"
|
msgstr "Laneko areen izenak"
|
||||||
|
|
||||||
#: extensions/workspace-indicator/prefs.js:157
|
#: extensions/workspace-indicator/prefs.js:151
|
||||||
msgid "Name"
|
msgid "Name"
|
||||||
msgstr "Izena"
|
msgstr "Izena"
|
||||||
|
|
||||||
#: extensions/workspace-indicator/prefs.js:198
|
#: extensions/workspace-indicator/prefs.js:191
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "Workspace %d"
|
msgid "Workspace %d"
|
||||||
msgstr "%d. laneko area"
|
msgstr "%d. laneko area"
|
||||||
|
|
||||||
|
#~ msgid "Attach modal dialog to the parent window"
|
||||||
|
#~ msgstr "Erantsi elkarrizketa-koadro modala leiho gurasoari"
|
||||||
|
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "This key overrides the key in org.gnome.mutter when running GNOME Shell."
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "Gako honek org.gnome.mutter-eko gakoa gainidazten du GNOME Shell "
|
||||||
|
#~ "exekutatzen ari denean."
|
||||||
|
|
||||||
|
#~ msgid "Arrangement of buttons on the titlebar"
|
||||||
|
#~ msgstr "Botoien antolamendua titulu-barran"
|
||||||
|
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "This key overrides the key in org.gnome.desktop.wm.preferences when "
|
||||||
|
#~ "running GNOME Shell."
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "Gako honekorg.gnome.desktop.wm.preferences-eko gakoa gainidazten du GNOME "
|
||||||
|
#~ "Shell exekutatzen ari denean."
|
||||||
|
|
||||||
|
#~ msgid "Enable edge tiling when dropping windows on screen edges"
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "Gaitu ertza lauza gisa ezartzea leihoak pantailaren ertzetara jaregitean"
|
||||||
|
|
||||||
|
#~ msgid "Workspaces only on primary monitor"
|
||||||
|
#~ msgstr "Laneko areak pantaila nagusian soilik"
|
||||||
|
|
||||||
|
#~ msgid "Delay focus changes in mouse mode until the pointer stops moving"
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "Fokuaren aldaketaren atzerapena saguaren moduan erakusleak mugitzeari "
|
||||||
|
#~ "utzi arte"
|
||||||
|
|
||||||
|
#~ msgid "Thumbnail only"
|
||||||
|
#~ msgstr "Koadro txikiak soilik"
|
||||||
|
|
||||||
|
#~ msgid "Application icon only"
|
||||||
|
#~ msgstr "Aplikazioen ikonoa soilik"
|
||||||
|
|
||||||
|
#~ msgid "Thumbnail and application icon"
|
||||||
|
#~ msgstr "Koadro txikien eta aplikazioen ikonoa"
|
||||||
|
|
||||||
|
#~ msgid "Present windows as"
|
||||||
|
#~ msgstr "Aurkeztu leihoa honela"
|
||||||
|
|
||||||
|
#~ msgid "Activities Overview"
|
||||||
|
#~ msgstr "Jardueren ikuspegi orokorra"
|
||||||
|
|
||||||
|
#~ msgid "Hello, world!"
|
||||||
|
#~ msgstr "Kaixo mundua!"
|
||||||
|
|
||||||
|
#~ msgid "Alternative greeting text."
|
||||||
|
#~ msgstr "Ongi etorriaren bestelako testua."
|
||||||
|
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "If not empty, it contains the text that will be shown when clicking on "
|
||||||
|
#~ "the panel."
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "Ez badago hutsik, panelean klik egitean erakutsiko den testua dauka."
|
||||||
|
|
||||||
|
#~ msgid "Message"
|
||||||
|
#~ msgstr "Mezua"
|
||||||
|
|
||||||
|
#~ 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-erako portaera egokia duten hedapenak nola eraikitzen den "
|
||||||
|
#~ "erakusteko helburua du adibideak, ondorioz bere kasa funtzionalitate "
|
||||||
|
#~ "baxukoa da.\n"
|
||||||
|
#~ "Hala ere, ongi etorriko mezua pertsonalizatzeko aukera dago."
|
||||||
|
|
||||||
#~ msgid "CPU"
|
#~ msgid "CPU"
|
||||||
#~ msgstr "PUZ"
|
#~ msgstr "PUZ"
|
||||||
|
|
||||||
@@ -375,7 +344,6 @@ msgstr "%d. laneko area"
|
|||||||
#~ msgid "Window management and application launching"
|
#~ msgid "Window management and application launching"
|
||||||
#~ msgstr "Leiho-kudeaketa eta aplikazioak abiaraztea"
|
#~ msgstr "Leiho-kudeaketa eta aplikazioak abiaraztea"
|
||||||
|
|
||||||
#, fuzzy
|
|
||||||
#~ msgid "Online Accounts"
|
#~ msgid "Online Accounts"
|
||||||
#~ msgstr "Nire kontua"
|
#~ msgstr "Nire kontua"
|
||||||
|
|
||||||
|
|||||||
@@ -6,18 +6,18 @@
|
|||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: gnome-shell-extensions gnome-3-0\n"
|
"Project-Id-Version: gnome-shell-extensions gnome-3-0\n"
|
||||||
"Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
|
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell-extensions/"
|
||||||
"shell&keywords=I18N+L10N&component=extensions\n"
|
"issues\n"
|
||||||
"POT-Creation-Date: 2017-09-20 08:40+0000\n"
|
"POT-Creation-Date: 2019-08-09 22:24+0000\n"
|
||||||
"PO-Revision-Date: 2017-09-22 22:09+0330\n"
|
"PO-Revision-Date: 2019-08-14 11:48+0430\n"
|
||||||
"Last-Translator: Arash Mousavi <mousavi.arash@gmail.com>\n"
|
"Last-Translator: Danial Behzadi <dani.behzi@ubuntu.com>\n"
|
||||||
"Language-Team: Persian <>\n"
|
"Language-Team: Persian <>\n"
|
||||||
"Language: fa\n"
|
"Language: fa\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"X-Poedit-SourceCharset: utf-8\n"
|
"X-Poedit-SourceCharset: utf-8\n"
|
||||||
"X-Generator: Poedit 2.0.3\n"
|
"X-Generator: Poedit 2.2.1\n"
|
||||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||||
|
|
||||||
#: data/gnome-classic.desktop.in:3 data/gnome-classic.session.desktop.in:3
|
#: data/gnome-classic.desktop.in:3 data/gnome-classic.session.desktop.in:3
|
||||||
@@ -28,152 +28,61 @@ msgstr "گنوم کلاسیک"
|
|||||||
msgid "This session logs you into GNOME Classic"
|
msgid "This session logs you into GNOME Classic"
|
||||||
msgstr "این نشست شما را به گنوم کلاسیک وارد میکند"
|
msgstr "این نشست شما را به گنوم کلاسیک وارد میکند"
|
||||||
|
|
||||||
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:7
|
#: extensions/apps-menu/extension.js:113
|
||||||
msgid "Attach modal dialog to the parent window"
|
|
||||||
msgstr "اتصال محاوره modal به پنجره والد"
|
|
||||||
|
|
||||||
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:8
|
|
||||||
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:25
|
|
||||||
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:33
|
|
||||||
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:41
|
|
||||||
msgid "This key overrides the key in org.gnome.mutter when running GNOME Shell."
|
|
||||||
msgstr "این کلید، کلید org.gnome.mutter را در هنگام اجرای گنومشل بازنویسی میکند."
|
|
||||||
|
|
||||||
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:16
|
|
||||||
msgid "Arrangement of buttons on the titlebar"
|
|
||||||
msgstr "چینش دکمهها در نوار عنوان"
|
|
||||||
|
|
||||||
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:17
|
|
||||||
msgid ""
|
|
||||||
"This key overrides the key in org.gnome.desktop.wm.preferences when running "
|
|
||||||
"GNOME Shell."
|
|
||||||
msgstr ""
|
|
||||||
"این کلید، کلید org.gnome.desktop.wm.preferences را در هنگام اجرای گنومشل "
|
|
||||||
"بازنویسی میکند."
|
|
||||||
|
|
||||||
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:24
|
|
||||||
msgid "Enable edge tiling when dropping windows on screen edges"
|
|
||||||
msgstr "فعالسازی چینش در گوشهها هنگامی که پنجرهها در گوشههای صفحهنمایش میاندازید"
|
|
||||||
|
|
||||||
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:32
|
|
||||||
msgid "Workspaces only on primary monitor"
|
|
||||||
msgstr "فضاهای کاری تنها در نمایشگر اصلی"
|
|
||||||
|
|
||||||
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:40
|
|
||||||
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:38
|
|
||||||
msgid "Present windows as"
|
|
||||||
msgstr "نمایش پنجره به عنوان"
|
|
||||||
|
|
||||||
#: extensions/alternate-tab/prefs.js:69
|
|
||||||
msgid "Show only windows in the current workspace"
|
|
||||||
msgstr "نمایش پنجرهها تنها در فضایکاری فعلی"
|
|
||||||
|
|
||||||
#: extensions/apps-menu/extension.js:41
|
|
||||||
msgid "Activities Overview"
|
|
||||||
msgstr "نمایکلی فعالیتها"
|
|
||||||
|
|
||||||
#: extensions/apps-menu/extension.js:141
|
|
||||||
msgid "Favorites"
|
msgid "Favorites"
|
||||||
msgstr "علاقهمندیها"
|
msgstr "علاقهمندیها"
|
||||||
|
|
||||||
#: extensions/apps-menu/extension.js:436
|
#: extensions/apps-menu/extension.js:368
|
||||||
msgid "Applications"
|
msgid "Applications"
|
||||||
msgstr "برنامهها"
|
msgstr "برنامهها"
|
||||||
|
|
||||||
#: extensions/auto-move-windows/org.gnome.shell.extensions.auto-move-windows.gschema.xml:6
|
#: extensions/auto-move-windows/org.gnome.shell.extensions.auto-move-windows.gschema.xml:6
|
||||||
msgid "Application and workspace list"
|
msgid "Application and workspace list"
|
||||||
msgstr "فهرست برنامهها و فضایکاری"
|
msgstr "فهرست برنامه و فضایکاری"
|
||||||
|
|
||||||
#: extensions/auto-move-windows/org.gnome.shell.extensions.auto-move-windows.gschema.xml:7
|
#: extensions/auto-move-windows/org.gnome.shell.extensions.auto-move-windows.gschema.xml:7
|
||||||
msgid ""
|
msgid ""
|
||||||
"A list of strings, each containing an application id (desktop file name), "
|
"A list of strings, each containing an application id (desktop file name), "
|
||||||
"followed by a colon and the workspace number"
|
"followed by a colon and the workspace number"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"فهرستی از رشتهها، هرکدام حاوی شناسهی یک برنامه (نام پرونده رومیزی)، در ادامهی "
|
"فهرستی از رشتهها، هرکدام حاوی شناسهی یک برنامه (نام پرونده رومیزی)، در ادامهی یک "
|
||||||
"یک ویرگول و شمارهی فضای کاری"
|
"ویرگول و شمارهی فضای کاری"
|
||||||
|
|
||||||
#: extensions/auto-move-windows/prefs.js:60
|
#: extensions/auto-move-windows/prefs.js:60
|
||||||
msgid "Application"
|
msgid "Application"
|
||||||
msgstr "برنامه"
|
msgstr "برنامه"
|
||||||
|
|
||||||
#: extensions/auto-move-windows/prefs.js:69
|
#: extensions/auto-move-windows/prefs.js:71
|
||||||
#: extensions/auto-move-windows/prefs.js:127
|
#: extensions/auto-move-windows/prefs.js:134
|
||||||
msgid "Workspace"
|
msgid "Workspace"
|
||||||
msgstr "فضایکاری"
|
msgstr "فضایکاری"
|
||||||
|
|
||||||
#: extensions/auto-move-windows/prefs.js:85
|
#: extensions/auto-move-windows/prefs.js:89
|
||||||
msgid "Add Rule"
|
msgid "Add Rule"
|
||||||
msgstr "اضافه کردن قاعده"
|
msgstr "افزودن قاعده"
|
||||||
|
|
||||||
#: extensions/auto-move-windows/prefs.js:106
|
|
||||||
msgid "Create new matching rule"
|
|
||||||
msgstr "اضافه کردن یک قاعدهی منطبق جدید"
|
|
||||||
|
|
||||||
#: extensions/auto-move-windows/prefs.js:111
|
#: extensions/auto-move-windows/prefs.js:111
|
||||||
|
msgid "Create new matching rule"
|
||||||
|
msgstr "افزودن یک قاعدهی منطبق جدید"
|
||||||
|
|
||||||
|
#: extensions/auto-move-windows/prefs.js:117
|
||||||
msgid "Add"
|
msgid "Add"
|
||||||
msgstr "اضافه"
|
msgstr "اضافه"
|
||||||
|
|
||||||
#. TRANSLATORS: %s is the filesystem name
|
#. TRANSLATORS: %s is the filesystem name
|
||||||
#: extensions/drive-menu/extension.js:107
|
#: extensions/drive-menu/extension.js:102
|
||||||
|
#: extensions/places-menu/placeDisplay.js:232
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "Ejecting drive “%s” failed:"
|
msgid "Ejecting drive “%s” failed:"
|
||||||
msgstr "بیرون دادن دیسکگردان «%s» شکست خورد:"
|
msgstr "بیرون دادن دیسکگردان «%s» شکست خورد:"
|
||||||
|
|
||||||
#: extensions/drive-menu/extension.js:125
|
#: extensions/drive-menu/extension.js:118
|
||||||
msgid "Removable devices"
|
msgid "Removable devices"
|
||||||
msgstr "دستگاههای جداشدنی"
|
msgstr "دستگاههای جداشدنی"
|
||||||
|
|
||||||
#: extensions/drive-menu/extension.js:150
|
#: extensions/drive-menu/extension.js:145
|
||||||
msgid "Open Files"
|
msgid "Open Files"
|
||||||
msgstr "باز کردن پروندهها"
|
msgstr "گشودن پروندهها"
|
||||||
|
|
||||||
#: extensions/example/extension.js:17
|
|
||||||
msgid "Hello, world!"
|
|
||||||
msgstr "سلام دنیا!"
|
|
||||||
|
|
||||||
#: extensions/example/org.gnome.shell.extensions.example.gschema.xml:5
|
|
||||||
msgid "Alternative greeting text."
|
|
||||||
msgstr "متن خوشآمدِ جایگزین."
|
|
||||||
|
|
||||||
#: extensions/example/org.gnome.shell.extensions.example.gschema.xml:6
|
|
||||||
msgid ""
|
|
||||||
"If not empty, it contains the text that will be shown when clicking on the "
|
|
||||||
"panel."
|
|
||||||
msgstr ""
|
|
||||||
"اگر خالی نباشد، حاوی متنی خواهد بود که که هنگام کلیک بر روی پنل نمایش داده "
|
|
||||||
"میشود است."
|
|
||||||
|
|
||||||
#: extensions/example/prefs.js:30
|
|
||||||
msgid "Message"
|
|
||||||
msgstr "پیام"
|
|
||||||
|
|
||||||
#. TRANSLATORS: Example is the name of the extension, should not be
|
|
||||||
#. translated
|
|
||||||
#: extensions/example/prefs.js:43
|
|
||||||
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/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:5
|
#: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:5
|
||||||
msgid "Use more screen for windows"
|
msgid "Use more screen for windows"
|
||||||
@@ -195,38 +104,38 @@ msgstr "قراردادن عنوان پنجره در بالا"
|
|||||||
|
|
||||||
#: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:12
|
#: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:12
|
||||||
msgid ""
|
msgid ""
|
||||||
"If true, place window captions on top the respective thumbnail, overriding "
|
"If true, place window captions on top the respective thumbnail, overriding shell "
|
||||||
"shell default of placing it at the bottom. Changing this setting requires "
|
"default of placing it at the bottom. Changing this setting requires restarting "
|
||||||
"restarting the shell to have any effect."
|
"the shell to have any effect."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"اگر بر روی درست باشد، عنوان پنجره را بالای تصویر آن قرار میدهد، که حالت پیشفرض "
|
"اگر بر روی درست باشد، عنوان پنجره را بالای تصویر آن قرار میدهد، که حالت پیشفرض "
|
||||||
"شل در پایین را تغییر میدهد. تغییر این گزینه، نیاز به راهاندازی مجدد شل دارد تا "
|
"شل در پایین را تغییر میدهد. تغییر این گزینه، نیاز به راهاندازی مجدد شل دارد تا "
|
||||||
"تاثیر بگذارد."
|
"تاثیر بگذارد."
|
||||||
|
|
||||||
#: extensions/places-menu/extension.js:78 extensions/places-menu/extension.js:81
|
#: extensions/places-menu/extension.js:80 extensions/places-menu/extension.js:84
|
||||||
msgid "Places"
|
msgid "Places"
|
||||||
msgstr "مکانها"
|
msgstr "مکانها"
|
||||||
|
|
||||||
#: extensions/places-menu/placeDisplay.js:65
|
#: extensions/places-menu/placeDisplay.js:46
|
||||||
#, javascript-format
|
|
||||||
msgid "Failed to mount volume for “%s”"
|
|
||||||
msgstr "شکست در سوار کردن جلد برای «%s»"
|
|
||||||
|
|
||||||
#: extensions/places-menu/placeDisplay.js:78
|
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "Failed to launch “%s”"
|
msgid "Failed to launch “%s”"
|
||||||
msgstr "شکست در اجرای «%s»"
|
msgstr "شکست در اجرای «%s»"
|
||||||
|
|
||||||
#: extensions/places-menu/placeDisplay.js:137
|
#: extensions/places-menu/placeDisplay.js:61
|
||||||
#: extensions/places-menu/placeDisplay.js:160
|
#, javascript-format
|
||||||
|
msgid "Failed to mount volume for “%s”"
|
||||||
|
msgstr "شکست در سوار کردن حجم برای «%s»"
|
||||||
|
|
||||||
|
#: extensions/places-menu/placeDisplay.js:148
|
||||||
|
#: extensions/places-menu/placeDisplay.js:171
|
||||||
msgid "Computer"
|
msgid "Computer"
|
||||||
msgstr "رایانه"
|
msgstr "رایانه"
|
||||||
|
|
||||||
#: extensions/places-menu/placeDisplay.js:303
|
#: extensions/places-menu/placeDisplay.js:358
|
||||||
msgid "Home"
|
msgid "Home"
|
||||||
msgstr "خانه"
|
msgstr "خانه"
|
||||||
|
|
||||||
#: extensions/places-menu/placeDisplay.js:347
|
#: extensions/places-menu/placeDisplay.js:403
|
||||||
msgid "Browse Network"
|
msgid "Browse Network"
|
||||||
msgstr "مرور شبکه"
|
msgstr "مرور شبکه"
|
||||||
|
|
||||||
@@ -246,52 +155,47 @@ msgstr "نام تم"
|
|||||||
msgid "The name of the theme, to be loaded from ~/.themes/name/gnome-shell"
|
msgid "The name of the theme, to be loaded from ~/.themes/name/gnome-shell"
|
||||||
msgstr "نام تم، جهت بارگیری از شاخه themes/name/gnome-shell./~"
|
msgstr "نام تم، جهت بارگیری از شاخه themes/name/gnome-shell./~"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:110
|
#: extensions/window-list/extension.js:99
|
||||||
msgid "Close"
|
msgid "Close"
|
||||||
msgstr "خروج"
|
msgstr "خروج"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:129
|
#: extensions/window-list/extension.js:119
|
||||||
msgid "Unminimize"
|
msgid "Unminimize"
|
||||||
msgstr "ناحداقل کردن"
|
msgstr "ناکمینه"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:130
|
#: extensions/window-list/extension.js:119
|
||||||
msgid "Minimize"
|
msgid "Minimize"
|
||||||
msgstr "حداکثر کردن"
|
msgstr "کمینه"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:136
|
#: extensions/window-list/extension.js:126
|
||||||
msgid "Unmaximize"
|
msgid "Unmaximize"
|
||||||
msgstr "ناحداکثر کردن"
|
msgstr "نابیشینه"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:137
|
#: extensions/window-list/extension.js:126
|
||||||
msgid "Maximize"
|
msgid "Maximize"
|
||||||
msgstr "حداکثر کردن"
|
msgstr "بیشنه"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:420
|
#: extensions/window-list/extension.js:431
|
||||||
msgid "Minimize all"
|
msgid "Minimize all"
|
||||||
msgstr "حداقل کردن همه"
|
msgstr "کمینهٔ همه"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:428
|
#: extensions/window-list/extension.js:437
|
||||||
msgid "Unminimize all"
|
msgid "Unminimize all"
|
||||||
msgstr "ناحداقل کردن همه"
|
msgstr "ناکمینهٔ همه"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:436
|
#: extensions/window-list/extension.js:443
|
||||||
msgid "Maximize all"
|
msgid "Maximize all"
|
||||||
msgstr "حداکثر کردن همه"
|
msgstr "بیشینهٔ همه"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:445
|
#: extensions/window-list/extension.js:451
|
||||||
msgid "Unmaximize all"
|
msgid "Unmaximize all"
|
||||||
msgstr "ناحداکثر کردن همه"
|
msgstr "نابیشینهٔ همه"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:454
|
#: extensions/window-list/extension.js:459
|
||||||
msgid "Close all"
|
msgid "Close all"
|
||||||
msgstr "بستن همه"
|
msgstr "بستن همه"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:678
|
#: extensions/window-list/extension.js:741
|
||||||
#: extensions/workspace-indicator/extension.js:30
|
|
||||||
msgid "Workspace Indicator"
|
|
||||||
msgstr "نشانگر فضایکاری"
|
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:842
|
|
||||||
msgid "Window List"
|
msgid "Window List"
|
||||||
msgstr "فهرست پنجره"
|
msgstr "فهرست پنجره"
|
||||||
|
|
||||||
@@ -308,30 +212,39 @@ msgstr ""
|
|||||||
"ممکن عبارتند از «never»، «auto» و «always»."
|
"ممکن عبارتند از «never»، «auto» و «always»."
|
||||||
|
|
||||||
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:20
|
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:20
|
||||||
|
#: extensions/window-list/prefs.js:82
|
||||||
|
msgid "Show windows from all workspaces"
|
||||||
|
msgstr "نمایش پنجرهها از تمام فضاهای کاری"
|
||||||
|
|
||||||
|
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:21
|
||||||
|
msgid "Whether to show windows from all workspaces or only the current one."
|
||||||
|
msgstr "این که پنجرهها از تمام فضاهای کاری نمایش داده شود یا فقط فضای کاری فعلی."
|
||||||
|
|
||||||
|
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:27
|
||||||
msgid "Show the window list on all monitors"
|
msgid "Show the window list on all monitors"
|
||||||
msgstr "نمایش فهرست پنجرهها در تمام نمایشگرها"
|
msgstr "نمایش فهرست پنجرهها در تمام نمایشگرها"
|
||||||
|
|
||||||
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:21
|
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:28
|
||||||
msgid ""
|
msgid ""
|
||||||
"Whether to show the window list on all connected monitors or only on the "
|
"Whether to show the window list on all connected monitors or only on the primary "
|
||||||
"primary one."
|
"one."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"اینکه آیا فهرست پنجرهها در تمام نمایشگرهای متصل نمایش داده شود یا فقط در "
|
"اینکه آیا فهرست پنجرهها در تمام نمایشگرهای متصل نمایش داده شود یا فقط در نمایشگر "
|
||||||
"نمایشگر اصلی."
|
"اصلی."
|
||||||
|
|
||||||
#: extensions/window-list/prefs.js:32
|
#: extensions/window-list/prefs.js:25
|
||||||
msgid "Window Grouping"
|
msgid "Window Grouping"
|
||||||
msgstr "گروهسازی پنجرهها"
|
msgstr "گروهسازی پنجرهها"
|
||||||
|
|
||||||
#: extensions/window-list/prefs.js:50
|
#: extensions/window-list/prefs.js:47
|
||||||
msgid "Never group windows"
|
msgid "Never group windows"
|
||||||
msgstr "هیچگاه پنجرهها گروه نشوند"
|
msgstr "هیچگاه پنجرهها گروه نشوند"
|
||||||
|
|
||||||
#: extensions/window-list/prefs.js:51
|
#: extensions/window-list/prefs.js:48
|
||||||
msgid "Group windows when space is limited"
|
msgid "Group windows when space is limited"
|
||||||
msgstr "پنجرهها زمانی که فضا محدود است گروه شوند"
|
msgstr "پنجرهها زمانی که فضا محدود است گروه شوند"
|
||||||
|
|
||||||
#: extensions/window-list/prefs.js:52
|
#: extensions/window-list/prefs.js:49
|
||||||
msgid "Always group windows"
|
msgid "Always group windows"
|
||||||
msgstr "همیشه پنجرهها گروه شوند"
|
msgstr "همیشه پنجرهها گروه شوند"
|
||||||
|
|
||||||
@@ -339,18 +252,91 @@ msgstr "همیشه پنجرهها گروه شوند"
|
|||||||
msgid "Show on all monitors"
|
msgid "Show on all monitors"
|
||||||
msgstr "نمایش در تمام نمایشگرها"
|
msgstr "نمایش در تمام نمایشگرها"
|
||||||
|
|
||||||
#: extensions/workspace-indicator/prefs.js:141
|
#: extensions/window-list/workspaceIndicator.js:211
|
||||||
msgid "Workspace Names"
|
#: extensions/workspace-indicator/extension.js:216
|
||||||
msgstr "نام فضاهای کاری"
|
msgid "Workspace Indicator"
|
||||||
|
msgstr "نشانگر فضایکاری"
|
||||||
|
|
||||||
#: extensions/workspace-indicator/prefs.js:157
|
#: extensions/workspace-indicator/prefs.js:131
|
||||||
|
msgid "Workspace Names"
|
||||||
|
msgstr "نامهای فضای کاری"
|
||||||
|
|
||||||
|
#: extensions/workspace-indicator/prefs.js:151
|
||||||
msgid "Name"
|
msgid "Name"
|
||||||
msgstr "نام"
|
msgstr "نام"
|
||||||
|
|
||||||
#: extensions/workspace-indicator/prefs.js:198
|
#: extensions/workspace-indicator/prefs.js:191
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "Workspace %d"
|
msgid "Workspace %d"
|
||||||
msgstr "فضایکاری %Id"
|
msgstr "فضای کاری %Id"
|
||||||
|
|
||||||
|
#~ msgid "Attach modal dialog to the parent window"
|
||||||
|
#~ msgstr "اتصال محاوره modal به پنجره والد"
|
||||||
|
|
||||||
|
#~ msgid "This key overrides the key in org.gnome.mutter when running GNOME Shell."
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "این کلید، کلید org.gnome.mutter را در هنگام اجرای گنومشل بازنویسی میکند."
|
||||||
|
|
||||||
|
#~ msgid "Arrangement of buttons on the titlebar"
|
||||||
|
#~ msgstr "چینش دکمهها در نوار عنوان"
|
||||||
|
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "This key overrides the key in org.gnome.desktop.wm.preferences when running "
|
||||||
|
#~ "GNOME Shell."
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "این کلید، کلید org.gnome.desktop.wm.preferences را در هنگام اجرای گنومشل "
|
||||||
|
#~ "بازنویسی میکند."
|
||||||
|
|
||||||
|
#~ msgid "Enable edge tiling when dropping windows on screen edges"
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "فعالسازی چینش در گوشهها هنگامی که پنجرهها در گوشههای صفحهنمایش میاندازید"
|
||||||
|
|
||||||
|
#~ msgid "Workspaces only on primary monitor"
|
||||||
|
#~ msgstr "فضاهای کاری تنها در نمایشگر اصلی"
|
||||||
|
|
||||||
|
#~ msgid "Delay focus changes in mouse mode until the pointer stops moving"
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "به تاخیر انداختن تغییر تمرکز در حالت موشی تا زمانی که نشانگر از حرکت باز ایستد"
|
||||||
|
|
||||||
|
#~ msgid "Thumbnail only"
|
||||||
|
#~ msgstr "تنها تصویر بندانگشتی"
|
||||||
|
|
||||||
|
#~ msgid "Application icon only"
|
||||||
|
#~ msgstr "تنها شمایل برنامه"
|
||||||
|
|
||||||
|
#~ msgid "Thumbnail and application icon"
|
||||||
|
#~ msgstr "تصویر بندانگشتی و شمایل برنامه"
|
||||||
|
|
||||||
|
#~ msgid "Present windows as"
|
||||||
|
#~ msgstr "نمایش پنجره به عنوان"
|
||||||
|
|
||||||
|
#~ msgid "Activities Overview"
|
||||||
|
#~ msgstr "نمایکلی فعالیتها"
|
||||||
|
|
||||||
|
#~ msgid "Hello, world!"
|
||||||
|
#~ msgstr "سلام دنیا!"
|
||||||
|
|
||||||
|
#~ msgid "Alternative greeting text."
|
||||||
|
#~ msgstr "متن خوشآمدِ جایگزین."
|
||||||
|
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "If not empty, it contains the text that will be shown when clicking on the "
|
||||||
|
#~ "panel."
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "اگر خالی نباشد، حاوی متنی خواهد بود که که هنگام کلیک بر روی پنل نمایش داده "
|
||||||
|
#~ "میشود است."
|
||||||
|
|
||||||
|
#~ msgid "Message"
|
||||||
|
#~ msgstr "پیام"
|
||||||
|
|
||||||
|
#~ 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"
|
||||||
|
#~ "با این وجود میتوان پیام خوشآمد را تغییر داد."
|
||||||
|
|
||||||
#~ msgid "GNOME Shell Classic"
|
#~ msgid "GNOME Shell Classic"
|
||||||
#~ msgstr "گنومشل کلاسیک"
|
#~ msgstr "گنومشل کلاسیک"
|
||||||
@@ -381,8 +367,8 @@ msgstr "فضایکاری %Id"
|
|||||||
#~ msgstr "انتقالِ انتخاب فعلی به بالا قبل از بستن پنجره واشو"
|
#~ msgstr "انتقالِ انتخاب فعلی به بالا قبل از بستن پنجره واشو"
|
||||||
|
|
||||||
#~ msgid ""
|
#~ msgid ""
|
||||||
#~ "The Alternate Tab can be used in different modes, that affect the way "
|
#~ "The Alternate Tab can be used in different modes, that affect the way windows "
|
||||||
#~ "windows are chosen and presented."
|
#~ "are chosen and presented."
|
||||||
#~ msgstr ""
|
#~ msgstr ""
|
||||||
#~ "«جایگزین Tab» میتواند در حالتهای مختلفی استفاده شود، که در نحوه باز شدن و "
|
#~ "«جایگزین Tab» میتواند در حالتهای مختلفی استفاده شود، که در نحوه باز شدن و "
|
||||||
#~ "انتخاب پنجرهها تاثیر میگذارد."
|
#~ "انتخاب پنجرهها تاثیر میگذارد."
|
||||||
|
|||||||
@@ -10,10 +10,10 @@
|
|||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: gnome-shell-extensions\n"
|
"Project-Id-Version: gnome-shell-extensions\n"
|
||||||
"Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
|
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell-extensions/"
|
||||||
"shell&keywords=I18N+L10N&component=extensions\n"
|
"issues\n"
|
||||||
"POT-Creation-Date: 2017-08-11 01:33+0000\n"
|
"POT-Creation-Date: 2019-08-09 22:24+0000\n"
|
||||||
"PO-Revision-Date: 2017-08-29 12:32+0300\n"
|
"PO-Revision-Date: 2019-08-17 16:00+0300\n"
|
||||||
"Last-Translator: Jiri Grönroos <jiri.gronroos+l10n@iki.fi>\n"
|
"Last-Translator: Jiri Grönroos <jiri.gronroos+l10n@iki.fi>\n"
|
||||||
"Language-Team: suomi <lokalisointi-lista@googlegroups.com>\n"
|
"Language-Team: suomi <lokalisointi-lista@googlegroups.com>\n"
|
||||||
"Language: fi\n"
|
"Language: fi\n"
|
||||||
@@ -21,7 +21,7 @@ msgstr ""
|
|||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||||
"X-Generator: Gtranslator 2.91.7\n"
|
"X-Generator: Poedit 2.0.6\n"
|
||||||
"X-Project-Style: gnome\n"
|
"X-Project-Style: gnome\n"
|
||||||
"X-POT-Import-Date: 2012-03-05 15:06:12+0000\n"
|
"X-POT-Import-Date: 2012-03-05 15:06:12+0000\n"
|
||||||
|
|
||||||
@@ -33,71 +33,11 @@ msgstr "Perinteinen Gnome"
|
|||||||
msgid "This session logs you into GNOME Classic"
|
msgid "This session logs you into GNOME Classic"
|
||||||
msgstr "Tämä istunto kirjaa sinut perinteiseen Gnomeen"
|
msgstr "Tämä istunto kirjaa sinut perinteiseen Gnomeen"
|
||||||
|
|
||||||
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:7
|
#: extensions/apps-menu/extension.js:113
|
||||||
msgid "Attach modal dialog to the parent window"
|
|
||||||
msgstr "Liitä modaali-ikkuna ylätason ikkunaan"
|
|
||||||
|
|
||||||
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:8
|
|
||||||
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:25
|
|
||||||
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:33
|
|
||||||
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:41
|
|
||||||
msgid ""
|
|
||||||
"This key overrides the key in org.gnome.mutter when running GNOME Shell."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:16
|
|
||||||
msgid "Arrangement of buttons on the titlebar"
|
|
||||||
msgstr "Painikkeiden järjestys otsikkopalkissa"
|
|
||||||
|
|
||||||
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:17
|
|
||||||
msgid ""
|
|
||||||
"This key overrides the key in org.gnome.desktop.wm.preferences when running "
|
|
||||||
"GNOME Shell."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:24
|
|
||||||
msgid "Enable edge tiling when dropping windows on screen edges"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:32
|
|
||||||
msgid "Workspaces only on primary monitor"
|
|
||||||
msgstr "Työtilat vain ensisijaisella näytöllä"
|
|
||||||
|
|
||||||
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:40
|
|
||||||
msgid "Delay focus changes in mouse mode until the pointer stops moving"
|
|
||||||
msgstr ""
|
|
||||||
"Aseta viive kohdistusmuutoksille hiiritilassa, kunnes hiiren osoitin "
|
|
||||||
"lopettaa liikkumisen"
|
|
||||||
|
|
||||||
#: extensions/alternate-tab/prefs.js:20
|
|
||||||
msgid "Thumbnail only"
|
|
||||||
msgstr "Pelkkä pienoiskuva"
|
|
||||||
|
|
||||||
#: extensions/alternate-tab/prefs.js:21
|
|
||||||
msgid "Application icon only"
|
|
||||||
msgstr "Pelkkä sovelluksen kuvake"
|
|
||||||
|
|
||||||
#: extensions/alternate-tab/prefs.js:22
|
|
||||||
msgid "Thumbnail and application icon"
|
|
||||||
msgstr "Pienoiskuva ja sovelluksen kuvake"
|
|
||||||
|
|
||||||
#: extensions/alternate-tab/prefs.js:38
|
|
||||||
msgid "Present windows as"
|
|
||||||
msgstr "Ikkunoiden esittäminen"
|
|
||||||
|
|
||||||
#: extensions/alternate-tab/prefs.js:69
|
|
||||||
msgid "Show only windows in the current workspace"
|
|
||||||
msgstr "Näytä vain nykyisessä työtilassa olevat ikkunat"
|
|
||||||
|
|
||||||
#: extensions/apps-menu/extension.js:41
|
|
||||||
msgid "Activities Overview"
|
|
||||||
msgstr "Yleisnäkymä"
|
|
||||||
|
|
||||||
#: extensions/apps-menu/extension.js:141
|
|
||||||
msgid "Favorites"
|
msgid "Favorites"
|
||||||
msgstr "Suosikit"
|
msgstr "Suosikit"
|
||||||
|
|
||||||
#: extensions/apps-menu/extension.js:436
|
#: extensions/apps-menu/extension.js:368
|
||||||
msgid "Applications"
|
msgid "Applications"
|
||||||
msgstr "Sovellukset"
|
msgstr "Sovellukset"
|
||||||
|
|
||||||
@@ -115,65 +55,38 @@ msgstr ""
|
|||||||
msgid "Application"
|
msgid "Application"
|
||||||
msgstr "Sovellus"
|
msgstr "Sovellus"
|
||||||
|
|
||||||
#: extensions/auto-move-windows/prefs.js:69
|
#: extensions/auto-move-windows/prefs.js:71
|
||||||
#: extensions/auto-move-windows/prefs.js:127
|
#: extensions/auto-move-windows/prefs.js:134
|
||||||
msgid "Workspace"
|
msgid "Workspace"
|
||||||
msgstr "Työtila"
|
msgstr "Työtila"
|
||||||
|
|
||||||
#: extensions/auto-move-windows/prefs.js:85
|
#: extensions/auto-move-windows/prefs.js:89
|
||||||
msgid "Add Rule"
|
msgid "Add Rule"
|
||||||
msgstr "Lisää sääntö"
|
msgstr "Lisää sääntö"
|
||||||
|
|
||||||
#: extensions/auto-move-windows/prefs.js:106
|
#: extensions/auto-move-windows/prefs.js:111
|
||||||
msgid "Create new matching rule"
|
msgid "Create new matching rule"
|
||||||
msgstr "Luo uusi vastaava sääntö"
|
msgstr "Luo uusi vastaava sääntö"
|
||||||
|
|
||||||
#: extensions/auto-move-windows/prefs.js:111
|
#: extensions/auto-move-windows/prefs.js:117
|
||||||
msgid "Add"
|
msgid "Add"
|
||||||
msgstr "Lisää"
|
msgstr "Lisää"
|
||||||
|
|
||||||
#. TRANSLATORS: %s is the filesystem name
|
#. TRANSLATORS: %s is the filesystem name
|
||||||
#: extensions/drive-menu/extension.js:107
|
#: extensions/drive-menu/extension.js:102
|
||||||
|
#: extensions/places-menu/placeDisplay.js:232
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "Ejecting drive “%s” failed:"
|
msgid "Ejecting drive “%s” failed:"
|
||||||
msgstr "Aseman “%s” irrottaminen epäonnistui:"
|
msgstr "Aseman “%s” irrottaminen epäonnistui:"
|
||||||
|
|
||||||
#: extensions/drive-menu/extension.js:125
|
#: extensions/drive-menu/extension.js:118
|
||||||
msgid "Removable devices"
|
msgid "Removable devices"
|
||||||
msgstr "Erilliset tallennusvälineet"
|
msgstr "Erilliset tallennusvälineet"
|
||||||
|
|
||||||
#: extensions/drive-menu/extension.js:150
|
#: extensions/drive-menu/extension.js:145
|
||||||
#| msgid "Open File"
|
|
||||||
msgid "Open Files"
|
msgid "Open Files"
|
||||||
msgstr "Avaa tiedostonhallinta"
|
msgstr "Avaa tiedostonhallinta"
|
||||||
|
|
||||||
#: extensions/example/extension.js:17
|
|
||||||
msgid "Hello, world!"
|
|
||||||
msgstr "Hei, maailma!"
|
|
||||||
|
|
||||||
#: extensions/example/org.gnome.shell.extensions.example.gschema.xml:5
|
|
||||||
msgid "Alternative greeting text."
|
|
||||||
msgstr "Vaihtoehtoinen tervehdysteksti."
|
|
||||||
|
|
||||||
#: extensions/example/org.gnome.shell.extensions.example.gschema.xml:6
|
|
||||||
msgid ""
|
|
||||||
"If not empty, it contains the text that will be shown when clicking on the "
|
|
||||||
"panel."
|
|
||||||
msgstr "Jos ei tyhjä, sisältää paneelia napsauttaessa näytettävän tekstin."
|
|
||||||
|
|
||||||
#: extensions/example/prefs.js:30
|
|
||||||
msgid "Message"
|
|
||||||
msgstr "Viesti"
|
|
||||||
|
|
||||||
#. TRANSLATORS: Example is the name of the extension, should not be
|
|
||||||
#. translated
|
|
||||||
#: extensions/example/prefs.js:43
|
|
||||||
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/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:5
|
#: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:5
|
||||||
msgid "Use more screen for windows"
|
msgid "Use more screen for windows"
|
||||||
msgstr "Käytä enemmän tilaa ikkunoille"
|
msgstr "Käytä enemmän tilaa ikkunoille"
|
||||||
@@ -199,32 +112,31 @@ msgstr ""
|
|||||||
"Tämä syrjäyttää oletusasetuksen, eli otsikkotekstin asettamisen pienoiskuvan "
|
"Tämä syrjäyttää oletusasetuksen, eli otsikkotekstin asettamisen pienoiskuvan "
|
||||||
"alle. Tämän asetuksen muutos vaatii Gnomen uudelleenkäynnistyksen."
|
"alle. Tämän asetuksen muutos vaatii Gnomen uudelleenkäynnistyksen."
|
||||||
|
|
||||||
#: extensions/places-menu/extension.js:78
|
#: extensions/places-menu/extension.js:80
|
||||||
#: extensions/places-menu/extension.js:81
|
#: extensions/places-menu/extension.js:84
|
||||||
msgid "Places"
|
msgid "Places"
|
||||||
msgstr "Sijainnit"
|
msgstr "Sijainnit"
|
||||||
|
|
||||||
#: extensions/places-menu/placeDisplay.js:65
|
#: extensions/places-menu/placeDisplay.js:46
|
||||||
#, javascript-format
|
|
||||||
#| msgid "Failed to launch “%s”"
|
|
||||||
msgid "Failed to mount volume for “%s”"
|
|
||||||
msgstr "Taltion “%s” liittäminen epäonnistui"
|
|
||||||
|
|
||||||
#: extensions/places-menu/placeDisplay.js:78
|
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "Failed to launch “%s”"
|
msgid "Failed to launch “%s”"
|
||||||
msgstr "Kohteen “%s” käynnistys epäonnistui"
|
msgstr "Kohteen “%s” käynnistys epäonnistui"
|
||||||
|
|
||||||
#: extensions/places-menu/placeDisplay.js:137
|
#: extensions/places-menu/placeDisplay.js:61
|
||||||
#: extensions/places-menu/placeDisplay.js:160
|
#, javascript-format
|
||||||
|
msgid "Failed to mount volume for “%s”"
|
||||||
|
msgstr "Taltion “%s” liittäminen epäonnistui"
|
||||||
|
|
||||||
|
#: extensions/places-menu/placeDisplay.js:148
|
||||||
|
#: extensions/places-menu/placeDisplay.js:171
|
||||||
msgid "Computer"
|
msgid "Computer"
|
||||||
msgstr "Tietokone"
|
msgstr "Tietokone"
|
||||||
|
|
||||||
#: extensions/places-menu/placeDisplay.js:303
|
#: extensions/places-menu/placeDisplay.js:358
|
||||||
msgid "Home"
|
msgid "Home"
|
||||||
msgstr "Koti"
|
msgstr "Koti"
|
||||||
|
|
||||||
#: extensions/places-menu/placeDisplay.js:347
|
#: extensions/places-menu/placeDisplay.js:403
|
||||||
msgid "Browse Network"
|
msgid "Browse Network"
|
||||||
msgstr "Selaa verkkoa"
|
msgstr "Selaa verkkoa"
|
||||||
|
|
||||||
@@ -246,52 +158,47 @@ msgstr "Teeman nimi"
|
|||||||
msgid "The name of the theme, to be loaded from ~/.themes/name/gnome-shell"
|
msgid "The name of the theme, to be loaded from ~/.themes/name/gnome-shell"
|
||||||
msgstr "Teeman nimi, ladataan sijainnista ~/.themes/name/gnome-shell"
|
msgstr "Teeman nimi, ladataan sijainnista ~/.themes/name/gnome-shell"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:110
|
#: extensions/window-list/extension.js:99
|
||||||
msgid "Close"
|
msgid "Close"
|
||||||
msgstr "Sulje"
|
msgstr "Sulje"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:129
|
#: extensions/window-list/extension.js:119
|
||||||
msgid "Unminimize"
|
msgid "Unminimize"
|
||||||
msgstr "Palauta pienennys"
|
msgstr "Palauta pienennys"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:130
|
#: extensions/window-list/extension.js:119
|
||||||
msgid "Minimize"
|
msgid "Minimize"
|
||||||
msgstr "Pienennä"
|
msgstr "Pienennä"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:136
|
#: extensions/window-list/extension.js:126
|
||||||
msgid "Unmaximize"
|
msgid "Unmaximize"
|
||||||
msgstr "Palauta suurennus"
|
msgstr "Palauta suurennus"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:137
|
#: extensions/window-list/extension.js:126
|
||||||
msgid "Maximize"
|
msgid "Maximize"
|
||||||
msgstr "Suurenna"
|
msgstr "Suurenna"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:420
|
#: extensions/window-list/extension.js:431
|
||||||
msgid "Minimize all"
|
msgid "Minimize all"
|
||||||
msgstr "Pienennä kaikki"
|
msgstr "Pienennä kaikki"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:428
|
#: extensions/window-list/extension.js:437
|
||||||
msgid "Unminimize all"
|
msgid "Unminimize all"
|
||||||
msgstr "Palauta kaikkien koko"
|
msgstr "Palauta kaikkien koko"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:436
|
#: extensions/window-list/extension.js:443
|
||||||
msgid "Maximize all"
|
msgid "Maximize all"
|
||||||
msgstr "Suurenna kaikki"
|
msgstr "Suurenna kaikki"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:445
|
#: extensions/window-list/extension.js:451
|
||||||
msgid "Unmaximize all"
|
msgid "Unmaximize all"
|
||||||
msgstr "Palauta kaikkien koko"
|
msgstr "Palauta kaikkien koko"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:454
|
#: extensions/window-list/extension.js:459
|
||||||
msgid "Close all"
|
msgid "Close all"
|
||||||
msgstr "Sulje kaikki"
|
msgstr "Sulje kaikki"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:678
|
#: extensions/window-list/extension.js:741
|
||||||
#: extensions/workspace-indicator/extension.js:30
|
|
||||||
msgid "Workspace Indicator"
|
|
||||||
msgstr "Työtilan ilmaisin"
|
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:842
|
|
||||||
msgid "Window List"
|
msgid "Window List"
|
||||||
msgstr "Ikkunaluettelo"
|
msgstr "Ikkunaluettelo"
|
||||||
|
|
||||||
@@ -308,10 +215,21 @@ msgstr ""
|
|||||||
"Mahdolliset arvot ovat “never”, “auto” ja “always”."
|
"Mahdolliset arvot ovat “never”, “auto” ja “always”."
|
||||||
|
|
||||||
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:20
|
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:20
|
||||||
|
#: extensions/window-list/prefs.js:82
|
||||||
|
msgid "Show windows from all workspaces"
|
||||||
|
msgstr "Näytä ikkunat kaikista työtiloista"
|
||||||
|
|
||||||
|
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:21
|
||||||
|
msgid "Whether to show windows from all workspaces or only the current one."
|
||||||
|
msgstr ""
|
||||||
|
"Näytetäänkö ikkunat kaikista työtiloista vai ainoastaan nykyisestä "
|
||||||
|
"työtilasta."
|
||||||
|
|
||||||
|
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:27
|
||||||
msgid "Show the window list on all monitors"
|
msgid "Show the window list on all monitors"
|
||||||
msgstr "Näytä ikkunaluettelo kaikilla näytöillä"
|
msgstr "Näytä ikkunaluettelo kaikilla näytöillä"
|
||||||
|
|
||||||
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:21
|
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:28
|
||||||
msgid ""
|
msgid ""
|
||||||
"Whether to show the window list on all connected monitors or only on the "
|
"Whether to show the window list on all connected monitors or only on the "
|
||||||
"primary one."
|
"primary one."
|
||||||
@@ -319,19 +237,19 @@ msgstr ""
|
|||||||
"Näytetäänkö ikkunaluettelo kaikilla liitetyillä näytöillä vai ainoastaan "
|
"Näytetäänkö ikkunaluettelo kaikilla liitetyillä näytöillä vai ainoastaan "
|
||||||
"ensisijaisella näytöllä."
|
"ensisijaisella näytöllä."
|
||||||
|
|
||||||
#: extensions/window-list/prefs.js:32
|
#: extensions/window-list/prefs.js:25
|
||||||
msgid "Window Grouping"
|
msgid "Window Grouping"
|
||||||
msgstr "Ikkunoiden ryhmitys"
|
msgstr "Ikkunoiden ryhmitys"
|
||||||
|
|
||||||
#: extensions/window-list/prefs.js:50
|
#: extensions/window-list/prefs.js:47
|
||||||
msgid "Never group windows"
|
msgid "Never group windows"
|
||||||
msgstr "Älä ryhmitä ikkunoita koskaan"
|
msgstr "Älä ryhmitä ikkunoita koskaan"
|
||||||
|
|
||||||
#: extensions/window-list/prefs.js:51
|
#: extensions/window-list/prefs.js:48
|
||||||
msgid "Group windows when space is limited"
|
msgid "Group windows when space is limited"
|
||||||
msgstr "Ryhmitä ikkunat tilan ollessa rajallinen"
|
msgstr "Ryhmitä ikkunat tilan ollessa rajallinen"
|
||||||
|
|
||||||
#: extensions/window-list/prefs.js:52
|
#: extensions/window-list/prefs.js:49
|
||||||
msgid "Always group windows"
|
msgid "Always group windows"
|
||||||
msgstr "Ryhmitä ikkunat aina"
|
msgstr "Ryhmitä ikkunat aina"
|
||||||
|
|
||||||
@@ -339,19 +257,67 @@ msgstr "Ryhmitä ikkunat aina"
|
|||||||
msgid "Show on all monitors"
|
msgid "Show on all monitors"
|
||||||
msgstr "Näytä kaikilla näytöillä"
|
msgstr "Näytä kaikilla näytöillä"
|
||||||
|
|
||||||
#: extensions/workspace-indicator/prefs.js:141
|
#: extensions/window-list/workspaceIndicator.js:211
|
||||||
|
#: extensions/workspace-indicator/extension.js:216
|
||||||
|
msgid "Workspace Indicator"
|
||||||
|
msgstr "Työtilan ilmaisin"
|
||||||
|
|
||||||
|
#: extensions/workspace-indicator/prefs.js:131
|
||||||
msgid "Workspace Names"
|
msgid "Workspace Names"
|
||||||
msgstr "Työtilojen nimet"
|
msgstr "Työtilojen nimet"
|
||||||
|
|
||||||
#: extensions/workspace-indicator/prefs.js:157
|
#: extensions/workspace-indicator/prefs.js:151
|
||||||
msgid "Name"
|
msgid "Name"
|
||||||
msgstr "Nimi"
|
msgstr "Nimi"
|
||||||
|
|
||||||
#: extensions/workspace-indicator/prefs.js:198
|
#: extensions/workspace-indicator/prefs.js:191
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "Workspace %d"
|
msgid "Workspace %d"
|
||||||
msgstr "Työtila %d"
|
msgstr "Työtila %d"
|
||||||
|
|
||||||
|
#~ msgid "Attach modal dialog to the parent window"
|
||||||
|
#~ msgstr "Liitä modaali-ikkuna ylätason ikkunaan"
|
||||||
|
|
||||||
|
#~ msgid "Arrangement of buttons on the titlebar"
|
||||||
|
#~ msgstr "Painikkeiden järjestys otsikkopalkissa"
|
||||||
|
|
||||||
|
#~ msgid "Workspaces only on primary monitor"
|
||||||
|
#~ msgstr "Työtilat vain ensisijaisella näytöllä"
|
||||||
|
|
||||||
|
#~ msgid "Delay focus changes in mouse mode until the pointer stops moving"
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "Aseta viive kohdistusmuutoksille hiiritilassa, kunnes hiiren osoitin "
|
||||||
|
#~ "lopettaa liikkumisen"
|
||||||
|
|
||||||
|
#~ msgid "Thumbnail only"
|
||||||
|
#~ msgstr "Pelkkä pienoiskuva"
|
||||||
|
|
||||||
|
#~ msgid "Application icon only"
|
||||||
|
#~ msgstr "Pelkkä sovelluksen kuvake"
|
||||||
|
|
||||||
|
#~ msgid "Thumbnail and application icon"
|
||||||
|
#~ msgstr "Pienoiskuva ja sovelluksen kuvake"
|
||||||
|
|
||||||
|
#~ msgid "Present windows as"
|
||||||
|
#~ msgstr "Ikkunoiden esittäminen"
|
||||||
|
|
||||||
|
#~ msgid "Activities Overview"
|
||||||
|
#~ msgstr "Yleisnäkymä"
|
||||||
|
|
||||||
|
#~ msgid "Hello, world!"
|
||||||
|
#~ msgstr "Hei, maailma!"
|
||||||
|
|
||||||
|
#~ msgid "Alternative greeting text."
|
||||||
|
#~ msgstr "Vaihtoehtoinen tervehdysteksti."
|
||||||
|
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "If not empty, it contains the text that will be shown when clicking on "
|
||||||
|
#~ "the panel."
|
||||||
|
#~ msgstr "Jos ei tyhjä, sisältää paneelia napsauttaessa näytettävän tekstin."
|
||||||
|
|
||||||
|
#~ msgid "Message"
|
||||||
|
#~ msgstr "Viesti"
|
||||||
|
|
||||||
#~ msgid "CPU"
|
#~ msgid "CPU"
|
||||||
#~ msgstr "Suoritin"
|
#~ msgstr "Suoritin"
|
||||||
|
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user