Compare commits
529 Commits
43.beta
...
debian/mas
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
6ce713f305 | ||
|
|
db248b3ce6 | ||
|
|
2e2651ea4c | ||
|
|
696225fdc9 | ||
|
|
fd31c81873 | ||
|
|
981f094061 | ||
|
|
e864d0d1cc | ||
|
|
4345703c2e | ||
|
|
a911447375 | ||
|
|
2d3307c657 | ||
|
|
d59bc0b7f0 | ||
|
|
cb8c2eb27f | ||
|
|
0544729bba | ||
|
|
017c410a6a | ||
|
|
f2c73329be | ||
|
|
ce644be96f | ||
|
|
e75a1a15ac | ||
|
|
1155170c7c | ||
|
|
6d8f54a20b | ||
|
|
93a2e7bdba | ||
|
|
3bfaf6f88a | ||
|
|
37baccd9fc | ||
|
|
9365725246 | ||
|
|
f1257c4523 | ||
|
|
f0865f039e | ||
|
|
4955c20669 | ||
|
|
cf007dd472 | ||
|
|
701b14ecbf | ||
|
|
18674b2e35 | ||
|
|
278d0afc79 | ||
|
|
90031432da | ||
|
|
b11f0f16f4 | ||
|
|
b7895ad956 | ||
|
|
22b9f888fb | ||
|
|
61a260bc94 | ||
|
|
ced3c94dfa | ||
|
|
904ead1fb1 | ||
|
|
f6b6049bc5 | ||
|
|
ca1c4b0f9e | ||
|
|
b9067eed79 | ||
|
|
68c7beabab | ||
|
|
3ba184bfe2 | ||
|
|
24fa8a6e04 | ||
|
|
923f204478 | ||
|
|
930595003d | ||
|
|
58b4b3c8d6 | ||
|
|
25cc126ebc | ||
|
|
30bac19c5a | ||
|
|
7689d660dc | ||
|
|
a69d37f2ee | ||
|
|
2e715149db | ||
|
|
26d067d301 | ||
|
|
51df22adcf | ||
|
|
e0d5ede296 | ||
|
|
2c25e22145 | ||
|
|
c1df8cedb8 | ||
|
|
2189f8cc58 | ||
|
|
6cd74c86ae | ||
|
|
6ff6eb2c22 | ||
|
|
ffa9806d40 | ||
|
|
5ff41b9151 | ||
|
|
7e8ba59304 | ||
|
|
88657c2def | ||
|
|
68b7915bc6 | ||
|
|
497d175ae9 | ||
|
|
f6e66faf8f | ||
|
|
ee0bb2c636 | ||
|
|
6bee46bf1a | ||
|
|
1edb245e85 | ||
|
|
de48d02c62 | ||
|
|
ac3e095e27 | ||
|
|
95a58358f8 | ||
|
|
cc72a34973 | ||
|
|
7a010d5a72 | ||
|
|
9e4b7488b3 | ||
|
|
18cf40a521 | ||
|
|
ed6d806617 | ||
|
|
f4347d240a | ||
|
|
77b35dcda3 | ||
|
|
6ebb41b1e8 | ||
|
|
11cb22bd24 | ||
|
|
6fc3f5cea2 | ||
|
|
c8484e77d3 | ||
|
|
98c5d4a739 | ||
|
|
4f5e421539 | ||
|
|
72868ac7c5 | ||
|
|
5dea503cbd | ||
|
|
81b8ad4499 | ||
|
|
01d3d8fd6d | ||
|
|
47c2834ffa | ||
|
|
8f8292afb3 | ||
|
|
d505f75c9b | ||
|
|
a8a2729531 | ||
|
|
aeee81a82c | ||
|
|
9f88e98d1b | ||
|
|
4b7055d0da | ||
|
|
563d7770d3 | ||
|
|
9306ee7a5d | ||
|
|
e8c8c7d940 | ||
|
|
871c9c39dc | ||
|
|
fcefdc3271 | ||
|
|
ecc955b4cd | ||
|
|
7e5f7eb0aa | ||
|
|
1c3407c05f | ||
|
|
7a017c1e76 | ||
|
|
26fb856ffc | ||
|
|
9d2b15ba26 | ||
|
|
28cdc1df1a | ||
|
|
b2455f0ecd | ||
|
|
0c501f84b9 | ||
|
|
c6d5ea5934 | ||
|
|
047f939b63 | ||
|
|
3d693372ad | ||
|
|
a33802d3e5 | ||
|
|
573aba17d7 | ||
|
|
d483244ecb | ||
|
|
8e39e0d363 | ||
|
|
2762830b10 | ||
|
|
df1df4b8e1 | ||
|
|
210e86641b | ||
|
|
2117c42d74 | ||
|
|
a8a49e3c65 | ||
|
|
bfe26eaf84 | ||
|
|
60a08debff | ||
|
|
132bd9259e | ||
|
|
5eb4dcf6bf | ||
|
|
5edffcd859 | ||
|
|
295fb67225 | ||
|
|
a2c271d677 | ||
|
|
6901f6187d | ||
|
|
e2ee6bacd0 | ||
|
|
bc6c24fc4e | ||
|
|
58f72a073d | ||
|
|
d8b526a715 | ||
|
|
a5b6871562 | ||
|
|
deb6031381 | ||
|
|
486cb59aff | ||
|
|
de9a3df7bd | ||
|
|
c83a75766c | ||
|
|
c016fb531c | ||
|
|
1615745a1f | ||
|
|
dc50382d22 | ||
|
|
a5b84379f4 | ||
|
|
d168261fa5 | ||
|
|
db131fc7da | ||
|
|
e83760388f | ||
|
|
82d19a5433 | ||
|
|
e3e39728ce | ||
|
|
76dfb8ef31 | ||
|
|
544cf566b5 | ||
|
|
da88313488 | ||
|
|
2aa0720e93 | ||
|
|
80c6656c4f | ||
|
|
be536ee32e | ||
|
|
339e06634f | ||
|
|
ff9527ea52 | ||
|
|
a5a3523df8 | ||
|
|
06acd9ff25 | ||
|
|
1a1d45d9e4 | ||
|
|
1d3775b3d1 | ||
|
|
15c83db793 | ||
|
|
cc021589b8 | ||
|
|
5e316d37cb | ||
|
|
28dbb47937 | ||
|
|
619de9d5ee | ||
|
|
561b8aeb03 | ||
|
|
4286fd1bcc | ||
|
|
3bb0897bc1 | ||
|
|
12eedcf6f7 | ||
|
|
08d382facc | ||
|
|
e2369147b1 | ||
|
|
5e559c4444 | ||
|
|
e30762ea43 | ||
|
|
1fa4a078d8 | ||
|
|
3e87fa8aa5 | ||
|
|
e52ca120c4 | ||
|
|
3eadbba8a1 | ||
|
|
41f9451070 | ||
|
|
d9ae9a023a | ||
|
|
d2f5bfdbfd | ||
|
|
b4a1953372 | ||
|
|
96a1de92db | ||
|
|
cc2f46b837 | ||
|
|
db1342e5ff | ||
|
|
86c5057d62 | ||
|
|
779dea8408 | ||
|
|
544f374e44 | ||
|
|
b55d783cc2 | ||
|
|
9f25047e24 | ||
|
|
fb66afbf71 | ||
|
|
365fa6abc9 | ||
|
|
d7a824f35f | ||
|
|
0d8e412220 | ||
|
|
991f6ef508 | ||
|
|
37f03f5e2e | ||
|
|
b4a4ff0a06 | ||
|
|
de8876bd5e | ||
|
|
5ad272e628 | ||
|
|
3b22582752 | ||
|
|
e734fcbd21 | ||
|
|
435879c121 | ||
|
|
ed81650f55 | ||
|
|
1276a880de | ||
|
|
584016c291 | ||
|
|
4e948b2b48 | ||
|
|
b6bce374ad | ||
|
|
6cbd8abdca | ||
|
|
5947f38421 | ||
|
|
41664b152c | ||
|
|
29b24e391a | ||
|
|
0cdb80a9e0 | ||
|
|
a8907d6fb1 | ||
|
|
4851a66c57 | ||
|
|
1d5c2091cc | ||
|
|
e5abcaf7c8 | ||
|
|
d5733eed90 | ||
|
|
8957c277a1 | ||
|
|
a22cc0dc4e | ||
|
|
276f6a1c6f | ||
|
|
e161e32b63 | ||
|
|
e31a351c56 | ||
|
|
f728c0172b | ||
|
|
136644d45e | ||
|
|
24308612fd | ||
|
|
1ae3e89b57 | ||
|
|
8b9be8f120 | ||
|
|
c1bb6ca349 | ||
|
|
b03d1b9cc7 | ||
|
|
3ce0485742 | ||
|
|
100651a74c | ||
|
|
d3b687df8b | ||
|
|
df463177e7 | ||
|
|
62af36ebfa | ||
|
|
c5246b7415 | ||
|
|
d39c1fd685 | ||
|
|
665a7fbbcb | ||
|
|
5138e30a2a | ||
|
|
a69fa591da | ||
|
|
7f2a3eb2ca | ||
|
|
a4987d03b8 | ||
|
|
c477f10bfb | ||
|
|
2ae0f368b9 | ||
|
|
e45cc8cdc0 | ||
|
|
3c8edd7b3a | ||
|
|
ac33058086 | ||
|
|
855832d08b | ||
|
|
9f07981fe5 | ||
|
|
a27d6d3c7e | ||
|
|
2a4da355f1 | ||
|
|
c7a08aaf74 | ||
|
|
ca47fbc16b | ||
|
|
5a3c3de1a4 | ||
|
|
ff9062ac17 | ||
|
|
9486fc3f98 | ||
|
|
8c1d6d88cf | ||
|
|
33b16681c6 | ||
|
|
3c51716268 | ||
|
|
e5421b6cc6 | ||
|
|
f1e7ae1010 | ||
|
|
10fe907c83 | ||
|
|
ae9809caba | ||
|
|
28e873b5e0 | ||
|
|
39d532ca3f | ||
|
|
07a602e404 | ||
|
|
a448e48cdb | ||
|
|
092a3ee21a | ||
|
|
c95d197c5c | ||
|
|
88cfcdbd2e | ||
|
|
f3378c7b6f | ||
|
|
50545c1486 | ||
|
|
ae8749b7e1 | ||
|
|
ff678d06ea | ||
|
|
6345449d50 | ||
|
|
8951266183 | ||
|
|
6911624d4d | ||
|
|
84a548c0b9 | ||
|
|
da6efff220 | ||
|
|
cc99aff03b | ||
|
|
cdc5210c25 | ||
|
|
4838833d72 | ||
|
|
0fad184fda | ||
|
|
6d8c96d665 | ||
|
|
e6c1a3b052 | ||
|
|
f047cb0baf | ||
|
|
71add2e391 | ||
|
|
61abd2a48f | ||
|
|
6ba2f49866 | ||
|
|
2fd2cf9074 | ||
|
|
28494941e1 | ||
|
|
d0d40f248d | ||
|
|
cc2a2ca153 | ||
|
|
2307b639dd | ||
|
|
1e0ea36a81 | ||
|
|
b70059ac4d | ||
|
|
4e1250a6ba | ||
|
|
56d2852004 | ||
|
|
3fa8edcb1a | ||
|
|
edb14ea03c | ||
|
|
a2f554bc1e | ||
|
|
eb567c1120 | ||
|
|
a289bbfb93 | ||
|
|
5486c2040d | ||
|
|
84c95be03f | ||
|
|
d9e6c6c4c5 | ||
|
|
25559e758c | ||
|
|
89ce4aee4a | ||
|
|
b1eb9b9080 | ||
|
|
ba9d2e7919 | ||
|
|
9d0c742f34 | ||
|
|
1e69961bc7 | ||
|
|
e4ddc4c14e | ||
|
|
a0b6535210 | ||
|
|
be149bab3d | ||
|
|
1b4bbe19e3 | ||
|
|
2e6b602a04 | ||
|
|
5b9012152c | ||
|
|
efd20bb4f7 | ||
|
|
7d595e4774 | ||
|
|
7b4c3085c0 | ||
|
|
9a9b3afa31 | ||
|
|
7045a5dcea | ||
|
|
777bae87b5 | ||
|
|
06ae867c2f | ||
|
|
77ebd3d202 | ||
|
|
59bc054ef6 | ||
|
|
227f999001 | ||
|
|
e37782c2ce | ||
|
|
f210be5ab4 | ||
|
|
12b1a0639e | ||
|
|
34098b871b | ||
|
|
57e9dfe722 | ||
|
|
cc2ebff0e3 | ||
|
|
7c21766dd5 | ||
|
|
965dfd2d39 | ||
|
|
f17a519c38 | ||
|
|
49e598b4b7 | ||
|
|
40f13f3afa | ||
|
|
356e2054fa | ||
|
|
8223ca9739 | ||
|
|
dab22e927b | ||
|
|
a1f60be674 | ||
|
|
e0ec59d30b | ||
|
|
abc1c9ef7e | ||
|
|
3e4a778978 | ||
|
|
ca85495a1c | ||
|
|
fe20c27b60 | ||
|
|
41dc03222c | ||
|
|
3cf56d8270 | ||
|
|
9436564a76 | ||
|
|
142065d58b | ||
|
|
2ffd3d95bb | ||
|
|
6b9f87dbea | ||
|
|
5ba59d1096 | ||
|
|
3b2aee92fb | ||
|
|
12dac8ee62 | ||
|
|
f8df77051b | ||
|
|
fd9c0f6be4 | ||
|
|
cf05510b0d | ||
|
|
207923a1b6 | ||
|
|
fbbcb058fa | ||
|
|
cef1736de2 | ||
|
|
da10cfc062 | ||
|
|
0ad1e9bbc1 | ||
|
|
7cbf2533fe | ||
|
|
1a9d1c235c | ||
|
|
5c8a19f54f | ||
|
|
44fe593f8a | ||
|
|
b8d1af4e50 | ||
|
|
18f189b887 | ||
|
|
c9776c97de | ||
|
|
57a4241749 | ||
|
|
163ff997b1 | ||
|
|
449e9879ce | ||
|
|
5ea14f063f | ||
|
|
84350c3776 | ||
|
|
3cc3d03f0b | ||
|
|
91027ae9a4 | ||
|
|
9db80785a5 | ||
|
|
a876817127 | ||
|
|
057e5bb0c1 | ||
|
|
07fc66765d | ||
|
|
3a0c70aef7 | ||
|
|
bbb6a73af1 | ||
|
|
51119ec213 | ||
|
|
2690ee46f2 | ||
|
|
bc2e456a6a | ||
|
|
daa7b9b6ab | ||
|
|
b27c3719f0 | ||
|
|
147482d5e8 | ||
|
|
514403e1ba | ||
|
|
109d3aad6a | ||
|
|
15779e204d | ||
|
|
49e403f822 | ||
|
|
ffb5b76f4e | ||
|
|
b21932ffd9 | ||
|
|
46d8f1c8d9 | ||
|
|
8caffac3d7 | ||
|
|
40da5360a4 | ||
|
|
5b9f91991f | ||
|
|
a565f2d984 | ||
|
|
0b7269a4b8 | ||
|
|
c7805b4b40 | ||
|
|
e6b65be75a | ||
|
|
7043fe592c | ||
|
|
f7d35c41ae | ||
|
|
afb4942a72 | ||
|
|
4f7bd0918b | ||
|
|
fb8d34254a | ||
|
|
2a390c4c25 | ||
|
|
040fbf72e9 | ||
|
|
395e9aea3c | ||
|
|
bb3508327f | ||
|
|
068ae45f6c | ||
|
|
02ff0f658b | ||
|
|
3c14d9b524 | ||
|
|
8de00babad | ||
|
|
59768f0514 | ||
|
|
e185fe30f8 | ||
|
|
0d20be43d4 | ||
|
|
356632063c | ||
|
|
3a592ddb59 | ||
|
|
652ade33b5 | ||
|
|
05e6188921 | ||
|
|
b222ebed80 | ||
|
|
179d9b9ae1 | ||
|
|
ab7f50d2c8 | ||
|
|
51cc3c7cd1 | ||
|
|
d51f14529a | ||
|
|
563dfc3d4d | ||
|
|
3ad72a04af | ||
|
|
d43130f779 | ||
|
|
ce997ff4fd | ||
|
|
7a5d530358 | ||
|
|
dd0520f334 | ||
|
|
aab9143c13 | ||
|
|
b689ec2ef4 | ||
|
|
c9c2da444b | ||
|
|
9c931c175c | ||
|
|
39db8f1768 | ||
|
|
f7ed9ff131 | ||
|
|
4423126272 | ||
|
|
5294bc510b | ||
|
|
1b599315a2 | ||
|
|
b561655503 | ||
|
|
64923382b4 | ||
|
|
5ef6525be7 | ||
|
|
6dc066f7dd | ||
|
|
380cf61811 | ||
|
|
4624ca952e | ||
|
|
6f1475e944 | ||
|
|
22256eec46 | ||
|
|
31a5de2577 | ||
|
|
269e008541 | ||
|
|
79d866e9b5 | ||
|
|
6d4341f8a4 | ||
|
|
61dd96a29e | ||
|
|
9e2a8e0fb2 | ||
|
|
82ff7afe2b | ||
|
|
0017eaebfc | ||
|
|
fa729854b8 | ||
|
|
5644aebac7 | ||
|
|
941f5e43b4 | ||
|
|
a595407d39 | ||
|
|
60417b361e | ||
|
|
c3adf1724c | ||
|
|
435bbff3b0 | ||
|
|
706ea0dd7e | ||
|
|
e7c37a9d54 | ||
|
|
a7f66d648e | ||
|
|
013dc818e3 | ||
|
|
9430670019 | ||
|
|
67c795b610 | ||
|
|
42158401ac | ||
|
|
06a9891d77 | ||
|
|
c53e5325c3 | ||
|
|
6161d531fc | ||
|
|
ad52e75e97 | ||
|
|
2db7b6756d | ||
|
|
2f70c6c8a7 | ||
|
|
8fd8943460 | ||
|
|
695b533be1 | ||
|
|
491e9fb3e9 | ||
|
|
4d8bccc861 | ||
|
|
88b5fea2f9 | ||
|
|
91e886c564 | ||
|
|
1e8ff58d82 | ||
|
|
0b84052458 | ||
|
|
4abc92ef44 | ||
|
|
d12833afc4 | ||
|
|
8de34e23a3 | ||
|
|
3158caa1be | ||
|
|
8a6d13c416 | ||
|
|
90fe2cfb36 | ||
|
|
c91d5ebec1 | ||
|
|
5a00d5e117 | ||
|
|
1b938d9d5b | ||
|
|
62cbbef068 | ||
|
|
684547a66d | ||
|
|
261569c9fd | ||
|
|
e8d3ad369a | ||
|
|
f81ae009f9 | ||
|
|
8b954a2937 | ||
|
|
1e58f48f1d | ||
|
|
1a0e9905fb | ||
|
|
8a04a843f6 | ||
|
|
814e57fbd0 | ||
|
|
f69389a76b | ||
|
|
3f9b1357ff | ||
|
|
e0cb098823 | ||
|
|
bc470533bf | ||
|
|
84d4e7efe3 | ||
|
|
39b900243e | ||
|
|
017aedadd2 | ||
|
|
7c06399818 | ||
|
|
26646997b0 | ||
|
|
1b3f651c7e | ||
|
|
23b002adaa | ||
|
|
d9118a8653 | ||
|
|
245714aa0c | ||
|
|
2618620d04 | ||
|
|
1d3d0585a2 | ||
|
|
2e263b1cdc | ||
|
|
f4aece9488 | ||
|
|
c1928689da | ||
|
|
6972b3458d | ||
|
|
bb6634bbb0 | ||
|
|
1b2a6bdc72 | ||
|
|
901c12671e | ||
|
|
3c564fd613 |
29
.gitignore
vendored
29
.gitignore
vendored
@@ -1,29 +0,0 @@
|
|||||||
ABOUT-NLS
|
|
||||||
Makefile
|
|
||||||
Makefile.in
|
|
||||||
Makefile.in.in
|
|
||||||
aclocal.m4
|
|
||||||
autom4te.cache/
|
|
||||||
config/
|
|
||||||
configure
|
|
||||||
config.log
|
|
||||||
config.status
|
|
||||||
data/*.json
|
|
||||||
m4/
|
|
||||||
po/*.header
|
|
||||||
po/*.sed
|
|
||||||
po/*.sin
|
|
||||||
po/Makevars.template
|
|
||||||
po/POTFILES
|
|
||||||
po/Rules-quot
|
|
||||||
po/gnome-shell-extensions.pot
|
|
||||||
po/stamp-it
|
|
||||||
staging/
|
|
||||||
zip-files/
|
|
||||||
|
|
||||||
*~
|
|
||||||
*.gmo
|
|
||||||
metadata.json
|
|
||||||
*.desktop
|
|
||||||
*.gschema.valid
|
|
||||||
*.session
|
|
||||||
@@ -107,7 +107,8 @@ eslint:
|
|||||||
stage: review
|
stage: review
|
||||||
<<: *prereview_req
|
<<: *prereview_req
|
||||||
script:
|
script:
|
||||||
- eslint -o $LINT_LOG -f junit --resolve-plugins-relative-to $(npm root -g) extensions
|
- export NODE_PATH=$(npm root -g)
|
||||||
|
- ./.gitlab-ci/run-eslint --output-file ${LINT_LOG} --format junit --stdout
|
||||||
artifacts:
|
artifacts:
|
||||||
paths:
|
paths:
|
||||||
- ${LINT_LOG}
|
- ${LINT_LOG}
|
||||||
@@ -132,8 +133,6 @@ fedora-build:
|
|||||||
stage: build
|
stage: build
|
||||||
needs:
|
needs:
|
||||||
- build-fedora-container
|
- build-fedora-container
|
||||||
variables:
|
|
||||||
GIT_SUBMODULE_STRATEGY: normal
|
|
||||||
script:
|
script:
|
||||||
- meson setup build --werror -Dextension_set=all -Dclassic_mode=true
|
- meson setup build --werror -Dextension_set=all -Dclassic_mode=true
|
||||||
- meson compile -C build
|
- meson compile -C build
|
||||||
|
|||||||
54
.gitlab-ci/run-eslint
Executable file
54
.gitlab-ci/run-eslint
Executable file
@@ -0,0 +1,54 @@
|
|||||||
|
#!/usr/bin/env node
|
||||||
|
|
||||||
|
const {ESLint} = require('eslint');
|
||||||
|
|
||||||
|
console.log(`Running ESLint version ${ESLint.version}...`);
|
||||||
|
|
||||||
|
const fs = require('fs');
|
||||||
|
const path = require('path');
|
||||||
|
|
||||||
|
function hasOption(...names) {
|
||||||
|
return process.argv.some(arg => names.includes(arg));
|
||||||
|
}
|
||||||
|
|
||||||
|
function getOption(...names) {
|
||||||
|
const optIndex =
|
||||||
|
process.argv.findIndex(arg => names.includes(arg)) + 1;
|
||||||
|
|
||||||
|
if (optIndex === 0)
|
||||||
|
return undefined;
|
||||||
|
|
||||||
|
return process.argv[optIndex];
|
||||||
|
}
|
||||||
|
|
||||||
|
(async function main() {
|
||||||
|
const outputOption = getOption('--output-file', '-o');
|
||||||
|
const outputPath = outputOption ? path.resolve(outputOption) : null;
|
||||||
|
|
||||||
|
const sourceDir = path.dirname(process.argv[1]);
|
||||||
|
process.chdir(path.resolve(sourceDir, '..'));
|
||||||
|
|
||||||
|
const sources = ['extensions'];
|
||||||
|
const eslint = new ESLint();
|
||||||
|
|
||||||
|
const results = await eslint.lintFiles(sources);
|
||||||
|
const formatter = await eslint.loadFormatter(getOption('--format', '-f'));
|
||||||
|
const resultText = formatter.format(results);
|
||||||
|
|
||||||
|
if (outputPath) {
|
||||||
|
fs.mkdirSync(path.dirname(outputPath), {recursive: true});
|
||||||
|
fs.writeFileSync(outputPath, resultText);
|
||||||
|
|
||||||
|
if (hasOption('--stdout')) {
|
||||||
|
const consoleFormatter = await eslint.loadFormatter();
|
||||||
|
console.log(consoleFormatter.format(results));
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
console.log(resultText);
|
||||||
|
}
|
||||||
|
|
||||||
|
process.exitCode = results.some(r => r.errorCount > 0) ? 1 : 0;
|
||||||
|
})().catch((error) => {
|
||||||
|
process.exitCode = 1;
|
||||||
|
console.error(error);
|
||||||
|
});
|
||||||
3
.gitmodules
vendored
3
.gitmodules
vendored
@@ -1,3 +0,0 @@
|
|||||||
[submodule "data/gnome-shell-sass"]
|
|
||||||
path = data/gnome-shell-sass
|
|
||||||
url = https://gitlab.gnome.org/GNOME/gnome-shell-sass.git
|
|
||||||
67
NEWS
67
NEWS
@@ -1,3 +1,70 @@
|
|||||||
|
45.beta
|
||||||
|
=======
|
||||||
|
* Port extensions to ESM [Florian; !259, !266, !268, !269]
|
||||||
|
* Misc. bug fixes and cleanups [Florian; !260, !261, !262, !263, !264]
|
||||||
|
|
||||||
|
Contributors:
|
||||||
|
Florian Müllner
|
||||||
|
|
||||||
|
Translators:
|
||||||
|
Efstathios Iosifidis [el]
|
||||||
|
|
||||||
|
45.alpha
|
||||||
|
========
|
||||||
|
* window-list: Modernize default styling [Alexander; !253]
|
||||||
|
* Replace classic styling with built-in light style [Florian; !254]
|
||||||
|
* window-list: Add tooltip for long window titles [Arik; !251]
|
||||||
|
* light-style: New extension [Florian; !256]
|
||||||
|
* Misc. bug fixes and cleanups [Florian; !255, !257]
|
||||||
|
|
||||||
|
Contributors:
|
||||||
|
Florian Müllner, Arik W, Alexander Weichart
|
||||||
|
|
||||||
|
44.0
|
||||||
|
====
|
||||||
|
* Bump version
|
||||||
|
|
||||||
|
44.rc
|
||||||
|
=====
|
||||||
|
* Bump version
|
||||||
|
|
||||||
|
44.beta
|
||||||
|
=======
|
||||||
|
* Tweak menu alignment [robxnano; !246]
|
||||||
|
|
||||||
|
Contributors:
|
||||||
|
Florian Müllner, robxnano
|
||||||
|
|
||||||
|
Translators:
|
||||||
|
Vasil Pupkin [be]
|
||||||
|
|
||||||
|
43.1
|
||||||
|
====
|
||||||
|
* Fixed crash [Florian; !243]
|
||||||
|
* Misc. bug fixes and cleanups [mowemcfc; !244]
|
||||||
|
|
||||||
|
Contributors:
|
||||||
|
Florian Müllner, mowemcfc
|
||||||
|
|
||||||
|
Translators:
|
||||||
|
Sabri Ünal [tr]
|
||||||
|
|
||||||
|
43.0
|
||||||
|
====
|
||||||
|
|
||||||
|
Contributors:
|
||||||
|
Florian Müllner
|
||||||
|
|
||||||
|
Translators:
|
||||||
|
Pawan Chitrakar [ne], Zurab Kargareteli [ka], Aleksandr Melman [ru]
|
||||||
|
|
||||||
|
43.rc
|
||||||
|
=====
|
||||||
|
* Misc. bug fixes and cleanups [Florian; !240]
|
||||||
|
|
||||||
|
Contributors:
|
||||||
|
Florian Müllner
|
||||||
|
|
||||||
43.beta
|
43.beta
|
||||||
=======
|
=======
|
||||||
* Misc. bug fixes and cleanups [Florian; !237, !238]
|
* Misc. bug fixes and cleanups [Florian; !237, !238]
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
|
Before Width: | Height: | Size: 100 KiB |
@@ -1,10 +1,10 @@
|
|||||||
{
|
{
|
||||||
"parentMode": "user",
|
"parentMode": "user",
|
||||||
"stylesheetName": "gnome-classic.css",
|
"colorScheme": "force-light",
|
||||||
"hasOverview": false,
|
"hasOverview": false,
|
||||||
"showWelcomeDialog": false,
|
"showWelcomeDialog": false,
|
||||||
"enabledExtensions": [@CLASSIC_EXTENSIONS@],
|
"enabledExtensions": [@CLASSIC_EXTENSIONS@],
|
||||||
"panel": { "left": ["appMenu"],
|
"panel": { "left": [],
|
||||||
"center": [],
|
"center": [],
|
||||||
"right": ["a11y", "keyboard", "dateMenu", "quickSettings"]
|
"right": ["a11y", "keyboard", "dateMenu", "quickSettings"]
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +0,0 @@
|
|||||||
@import url("gnome-classic.css");
|
|
||||||
|
|
||||||
stage {
|
|
||||||
-st-icon-style: symbolic;
|
|
||||||
}
|
|
||||||
@@ -1,95 +0,0 @@
|
|||||||
/* Use the gnome-shell theme, but with light colors */
|
|
||||||
$variant: 'light';
|
|
||||||
|
|
||||||
@import "gnome-shell-sass/_colors"; //use gtk colors
|
|
||||||
@import "gnome-shell-sass/_drawing";
|
|
||||||
@import "gnome-shell-sass/_common";
|
|
||||||
@import "gnome-shell-sass/_widgets";
|
|
||||||
|
|
||||||
/* Overrides */
|
|
||||||
|
|
||||||
#panel, #panel.solid {
|
|
||||||
font-weight: normal;
|
|
||||||
background-color: $bg_color;
|
|
||||||
background-gradient-direction: vertical;
|
|
||||||
background-gradient-end: darken($bg_color,5%);
|
|
||||||
border-top-color: #666; /* we don't support non-uniform border-colors and
|
|
||||||
use the top border color for any border, so we
|
|
||||||
need to set it even if all we want is a bottom
|
|
||||||
border */
|
|
||||||
border-bottom: 1px solid #666;
|
|
||||||
app-icon-bottom-clip: 0px;
|
|
||||||
&:overview {
|
|
||||||
background-color: #000;
|
|
||||||
background-gradient-end: #000;
|
|
||||||
border-top-color: #000;
|
|
||||||
border-bottom: 1px solid #000;
|
|
||||||
.panel-button { color: #fff; }
|
|
||||||
}
|
|
||||||
|
|
||||||
.panel-button {
|
|
||||||
-natural-hpadding: 8px;
|
|
||||||
-minimum-hpadding: 4px;
|
|
||||||
font-weight: normal;
|
|
||||||
color: $fg_color;
|
|
||||||
text-shadow: none;
|
|
||||||
transition-duration: 0ms;
|
|
||||||
border: 0;
|
|
||||||
border-radius: 0px;
|
|
||||||
|
|
||||||
&.clock-display {
|
|
||||||
.clock {
|
|
||||||
transition-duration: 0ms;
|
|
||||||
border: 0;
|
|
||||||
border-radius: 0px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
&:hover {
|
|
||||||
color: lighten($fg_color,10%);
|
|
||||||
text-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
|
|
||||||
|
|
||||||
.system-status-icon {
|
|
||||||
icon-shadow: none;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.panel-corner,
|
|
||||||
.panel-corner:active,
|
|
||||||
.panel-corner:overview,
|
|
||||||
.panel-corner:focus {
|
|
||||||
-panel-corner-radius: 0;
|
|
||||||
}
|
|
||||||
&.lock-screen,
|
|
||||||
&.unlock-screen,
|
|
||||||
&.login-screen {
|
|
||||||
background-color: transparentize($bg_color, 0.5);
|
|
||||||
background-gradient-start: transparentize($bg_color, 0.5);
|
|
||||||
background-gradient-end: transparentize($bg_color, 0.5);
|
|
||||||
border-bottom: none;
|
|
||||||
.panel-button { color: $osd_fg_color; }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#appMenu {
|
|
||||||
spinner-image: url("classic-process-working.svg");
|
|
||||||
.panel-status-menu-box { padding: 0; }
|
|
||||||
}
|
|
||||||
.tile-preview-left.on-primary,
|
|
||||||
.tile-preview-right.on-primary,
|
|
||||||
.tile-preview-left.tile-preview-right.on-primary {
|
|
||||||
/* keep in sync with -panel-corner-radius */
|
|
||||||
border-radius: 0;
|
|
||||||
}
|
|
||||||
Submodule data/gnome-shell-sass deleted from 0f09f2abc7
@@ -46,68 +46,5 @@ configure_file(
|
|||||||
install_dir: modedir
|
install_dir: modedir
|
||||||
)
|
)
|
||||||
|
|
||||||
theme_sources = files(
|
|
||||||
'gnome-shell-sass/_colors.scss',
|
|
||||||
'gnome-shell-sass/_common.scss',
|
|
||||||
'gnome-shell-sass/_drawing.scss',
|
|
||||||
'gnome-shell-sass/_high-contrast-colors.scss',
|
|
||||||
'gnome-shell-sass/_widgets.scss',
|
|
||||||
'gnome-shell-sass/widgets/_a11y.scss',
|
|
||||||
'gnome-shell-sass/widgets/_app-grid.scss',
|
|
||||||
'gnome-shell-sass/widgets/_base.scss',
|
|
||||||
'gnome-shell-sass/widgets/_buttons.scss',
|
|
||||||
'gnome-shell-sass/widgets/_calendar.scss',
|
|
||||||
'gnome-shell-sass/widgets/_check-box.scss',
|
|
||||||
'gnome-shell-sass/widgets/_corner-ripple.scss',
|
|
||||||
'gnome-shell-sass/widgets/_dash.scss',
|
|
||||||
'gnome-shell-sass/widgets/_dialogs.scss',
|
|
||||||
'gnome-shell-sass/widgets/_entries.scss',
|
|
||||||
'gnome-shell-sass/widgets/_hotplug.scss',
|
|
||||||
'gnome-shell-sass/widgets/_ibus-popup.scss',
|
|
||||||
'gnome-shell-sass/widgets/_keyboard.scss',
|
|
||||||
'gnome-shell-sass/widgets/_login-dialog.scss',
|
|
||||||
'gnome-shell-sass/widgets/_looking-glass.scss',
|
|
||||||
'gnome-shell-sass/widgets/_message-list.scss',
|
|
||||||
'gnome-shell-sass/widgets/_misc.scss',
|
|
||||||
'gnome-shell-sass/widgets/_notifications.scss',
|
|
||||||
'gnome-shell-sass/widgets/_osd.scss',
|
|
||||||
'gnome-shell-sass/widgets/_overview.scss',
|
|
||||||
'gnome-shell-sass/widgets/_panel.scss',
|
|
||||||
'gnome-shell-sass/widgets/_popovers.scss',
|
|
||||||
'gnome-shell-sass/widgets/_quick-settings.scss',
|
|
||||||
'gnome-shell-sass/widgets/_screen-shield.scss',
|
|
||||||
'gnome-shell-sass/widgets/_scrollbars.scss',
|
|
||||||
'gnome-shell-sass/widgets/_search-entry.scss',
|
|
||||||
'gnome-shell-sass/widgets/_search-results.scss',
|
|
||||||
'gnome-shell-sass/widgets/_slider.scss',
|
|
||||||
'gnome-shell-sass/widgets/_switcher-popup.scss',
|
|
||||||
'gnome-shell-sass/widgets/_switches.scss',
|
|
||||||
'gnome-shell-sass/widgets/_window-picker.scss',
|
|
||||||
'gnome-shell-sass/widgets/_workspace-switcher.scss',
|
|
||||||
'gnome-shell-sass/widgets/_workspace-thumbnails.scss'
|
|
||||||
)
|
|
||||||
|
|
||||||
theme_data = [
|
|
||||||
'classic-process-working.svg',
|
|
||||||
'gnome-classic-high-contrast.css'
|
|
||||||
]
|
|
||||||
|
|
||||||
stylesheet = 'gnome-classic.css'
|
|
||||||
if fs.exists(stylesheet)
|
|
||||||
install_data(stylesheet, install_dir: themedir)
|
|
||||||
else
|
|
||||||
sassc = find_program('sassc', required: true)
|
|
||||||
custom_target(stylesheet,
|
|
||||||
input: fs.replace_suffix(stylesheet, '.scss'),
|
|
||||||
output: stylesheet,
|
|
||||||
depend_files: theme_sources,
|
|
||||||
command: [sassc, '-a', '@INPUT@', '@OUTPUT@'],
|
|
||||||
install: true,
|
|
||||||
install_dir: themedir
|
|
||||||
)
|
|
||||||
endif
|
|
||||||
|
|
||||||
install_data(theme_data, install_dir: themedir)
|
|
||||||
|
|
||||||
classic_override = '00_org.gnome.shell.extensions.classic.gschema.override'
|
classic_override = '00_org.gnome.shell.extensions.classic.gschema.override'
|
||||||
install_data(classic_override, install_dir: schemadir)
|
install_data(classic_override, install_dir: schemadir)
|
||||||
|
|||||||
916
debian/changelog
vendored
Normal file
916
debian/changelog
vendored
Normal file
@@ -0,0 +1,916 @@
|
|||||||
|
gnome-shell-extensions (45~beta-1) experimental; urgency=medium
|
||||||
|
|
||||||
|
* New upstream release
|
||||||
|
|
||||||
|
-- Jeremy Bícha <jbicha@ubuntu.com> Mon, 21 Aug 2023 10:17:23 -0400
|
||||||
|
|
||||||
|
gnome-shell-extensions (44.0-2) unstable; urgency=medium
|
||||||
|
|
||||||
|
* Team upload
|
||||||
|
* Upload to unstable (part of transition: #1043144)
|
||||||
|
|
||||||
|
-- Simon McVittie <smcv@debian.org> Sun, 20 Aug 2023 23:04:08 +0100
|
||||||
|
|
||||||
|
gnome-shell-extensions (44.0-1) experimental; urgency=medium
|
||||||
|
|
||||||
|
* New upstream release
|
||||||
|
* debian/control.in: Bump minimum meson to 0.58.0
|
||||||
|
* debian/control.in: Build-Depend on libglib2.0-bin
|
||||||
|
|
||||||
|
-- Jeremy Bicha <jbicha@ubuntu.com> Mon, 27 Mar 2023 08:50:32 -0400
|
||||||
|
|
||||||
|
gnome-shell-extensions (44~rc-1) experimental; urgency=medium
|
||||||
|
|
||||||
|
* New upstream release
|
||||||
|
|
||||||
|
-- Jeremy Bicha <jbicha@ubuntu.com> Tue, 07 Mar 2023 12:20:00 -0500
|
||||||
|
|
||||||
|
gnome-shell-extensions (44~beta-1) experimental; urgency=medium
|
||||||
|
|
||||||
|
[ Jeremy Bicha ]
|
||||||
|
* New upstream release
|
||||||
|
|
||||||
|
[ Debian Janitor ]
|
||||||
|
* Remove constraints unnecessary since buster (oldstable)
|
||||||
|
|
||||||
|
-- Jeremy Bicha <jbicha@ubuntu.com> Wed, 15 Feb 2023 11:01:26 -0500
|
||||||
|
|
||||||
|
gnome-shell-extensions (43.1-1) unstable; urgency=medium
|
||||||
|
|
||||||
|
* New upstream release
|
||||||
|
|
||||||
|
-- Jeremy Bicha <jbicha@ubuntu.com> Tue, 22 Nov 2022 14:14:48 -0500
|
||||||
|
|
||||||
|
gnome-shell-extensions (43.0-2) unstable; urgency=medium
|
||||||
|
|
||||||
|
* Release to unstable
|
||||||
|
|
||||||
|
-- Jeremy Bicha <jbicha@ubuntu.com> Tue, 27 Sep 2022 19:13:41 -0400
|
||||||
|
|
||||||
|
gnome-shell-extensions (43.0-1) experimental; urgency=medium
|
||||||
|
|
||||||
|
* New upstream release
|
||||||
|
|
||||||
|
-- Jeremy Bicha <jbicha@ubuntu.com> Mon, 19 Sep 2022 10:57:41 -0400
|
||||||
|
|
||||||
|
gnome-shell-extensions (43~rc-1) experimental; urgency=medium
|
||||||
|
|
||||||
|
* New upstream release
|
||||||
|
|
||||||
|
-- Jeremy Bicha <jbicha@ubuntu.com> Tue, 06 Sep 2022 14:39:00 -0400
|
||||||
|
|
||||||
|
gnome-shell-extensions (43~beta-1) experimental; urgency=medium
|
||||||
|
|
||||||
|
* New upstream release
|
||||||
|
|
||||||
|
-- Jeremy Bicha <jbicha@ubuntu.com> Sun, 21 Aug 2022 10:59:20 -0400
|
||||||
|
|
||||||
|
gnome-shell-extensions (42.3-1) unstable; urgency=medium
|
||||||
|
|
||||||
|
* New upstream release (LP: #1981606)
|
||||||
|
|
||||||
|
-- Jeremy Bicha <jbicha@ubuntu.com> Wed, 13 Jul 2022 17:49:05 +0200
|
||||||
|
|
||||||
|
gnome-shell-extensions (42.2-1) unstable; urgency=medium
|
||||||
|
|
||||||
|
* New upstream release
|
||||||
|
|
||||||
|
-- Jeremy Bicha <jbicha@ubuntu.com> Fri, 03 Jun 2022 09:23:28 -0400
|
||||||
|
|
||||||
|
gnome-shell-extensions (42.1-1) unstable; urgency=medium
|
||||||
|
|
||||||
|
* New upstream release (LP: #1972365)
|
||||||
|
|
||||||
|
-- Jeremy Bicha <jbicha@ubuntu.com> Mon, 09 May 2022 08:09:32 -0400
|
||||||
|
|
||||||
|
gnome-shell-extensions (42.0-2) unstable; urgency=medium
|
||||||
|
|
||||||
|
* Release to unstable
|
||||||
|
|
||||||
|
-- Jeremy Bicha <jbicha@ubuntu.com> Mon, 28 Mar 2022 11:18:12 -0400
|
||||||
|
|
||||||
|
gnome-shell-extensions (42.0-1) experimental; urgency=medium
|
||||||
|
|
||||||
|
* New upstream release
|
||||||
|
|
||||||
|
-- Jeremy Bicha <jeremy.bicha@canonical.com> Mon, 14 Mar 2022 11:30:18 -0400
|
||||||
|
|
||||||
|
gnome-shell-extensions (42~rc-1) experimental; urgency=medium
|
||||||
|
|
||||||
|
* New upstream release
|
||||||
|
|
||||||
|
-- Jeremy Bicha <jeremy.bicha@canonical.com> Tue, 08 Mar 2022 17:54:41 -0500
|
||||||
|
|
||||||
|
gnome-shell-extensions (42~beta-1) experimental; urgency=medium
|
||||||
|
|
||||||
|
* New upstream release:
|
||||||
|
- Use libadwaita for preferences
|
||||||
|
- window-list: Fix on-screen keyboard
|
||||||
|
- native-window-placement: Fix distorted layout in app grid
|
||||||
|
* debian/control: Depend on libadwaita and gtk-4 (instead of gtk-3)
|
||||||
|
* debian/patches: Drop applied upstream
|
||||||
|
|
||||||
|
-- Marco Trevisan (Treviño) <marco@ubuntu.com> Wed, 23 Feb 2022 07:35:20 +0100
|
||||||
|
|
||||||
|
gnome-shell-extensions (41.1-2) unstable; urgency=medium
|
||||||
|
|
||||||
|
* Team upload
|
||||||
|
* d/p/meson-Drop-unused-argument-for-i18n.merge_file.patch:
|
||||||
|
Backport patch from upstream to fix FBTFS with Meson 0.61
|
||||||
|
(Closes: #1005534)
|
||||||
|
|
||||||
|
-- Simon McVittie <smcv@debian.org> Tue, 15 Feb 2022 11:18:30 +0000
|
||||||
|
|
||||||
|
gnome-shell-extensions (41.1-1) unstable; urgency=medium
|
||||||
|
|
||||||
|
* New upstream release
|
||||||
|
|
||||||
|
-- Jeremy Bicha <jbicha@debian.org> Sun, 12 Dec 2021 20:30:17 -0500
|
||||||
|
|
||||||
|
gnome-shell-extensions (41.0-2) unstable; urgency=medium
|
||||||
|
|
||||||
|
* Team upload
|
||||||
|
* Upload to unstable
|
||||||
|
|
||||||
|
-- Simon McVittie <smcv@debian.org> Sat, 16 Oct 2021 20:06:04 +0100
|
||||||
|
|
||||||
|
gnome-shell-extensions (41.0-1) experimental; urgency=medium
|
||||||
|
|
||||||
|
* New upstream release
|
||||||
|
* debian/control.in: Bump minimum meson to 0.53.0
|
||||||
|
* Bump Standards-Version to 4.6.0
|
||||||
|
|
||||||
|
-- Jeremy Bicha <jbicha@debian.org> Sun, 10 Oct 2021 17:04:15 -0400
|
||||||
|
|
||||||
|
gnome-shell-extensions (40.4-3) unstable; urgency=medium
|
||||||
|
|
||||||
|
* Team upload
|
||||||
|
* Release to unstable (transition: #992870)
|
||||||
|
|
||||||
|
-- Simon McVittie <smcv@debian.org> Sat, 11 Sep 2021 21:52:59 +0100
|
||||||
|
|
||||||
|
gnome-shell-extensions (40.4-2) experimental; urgency=medium
|
||||||
|
|
||||||
|
[ Jeremy Bicha ]
|
||||||
|
* New upstream release
|
||||||
|
* debian/copyright: Add gnome-classic.css to Files-Excluded
|
||||||
|
* Revert "debian/control: Don't build depend on sassc"
|
||||||
|
* This ensures we compile the CSS file from source.
|
||||||
|
|
||||||
|
[ Marco Trevisan (Treviño) ]
|
||||||
|
* debian/control: Support pre-release versions of gnome-shell
|
||||||
|
|
||||||
|
-- Jeremy Bicha <jbicha@debian.org> Sun, 29 Aug 2021 09:16:04 -0400
|
||||||
|
|
||||||
|
gnome-shell-extensions (40.1-1) experimental; urgency=medium
|
||||||
|
|
||||||
|
* New upstream release
|
||||||
|
* debian/control:
|
||||||
|
- Update runtime dependencies to match code.
|
||||||
|
Found grepping code via:
|
||||||
|
grep "imports\.gi" --include "*.js" -rh -B2 . \
|
||||||
|
| grep -o "\b[A-Z][A-Za-z]\+\b" | sed "s/,\?\s*$//g" | sort -u
|
||||||
|
- Don't build depend on sassc.
|
||||||
|
Since we compile from tarball, this is not needed anymore given that
|
||||||
|
compiled css are provided already.
|
||||||
|
- Build-depend on dh-sequence-gnome 0.22.
|
||||||
|
It's the first version that supports new GNOME versioning schema.
|
||||||
|
|
||||||
|
-- Marco Trevisan (Treviño) <marco@ubuntu.com> Sun, 30 May 2021 20:05:13 +0200
|
||||||
|
|
||||||
|
gnome-shell-extensions (3.38.2-1) unstable; urgency=medium
|
||||||
|
|
||||||
|
* Team upload
|
||||||
|
* New upstream release
|
||||||
|
* Standards-Version: 4.5.1 (no changes required)
|
||||||
|
* d/gbp.conf: Use upstream/3.38.x branch.
|
||||||
|
Version 40~alpha was already released upstream.
|
||||||
|
|
||||||
|
-- Simon McVittie <smcv@debian.org> Thu, 03 Dec 2020 10:17:58 +0000
|
||||||
|
|
||||||
|
gnome-shell-extensions (3.38.1-1) unstable; urgency=medium
|
||||||
|
|
||||||
|
* New upstream release
|
||||||
|
* Recommend gnome-shell-extension-prefs instead of gnome-tweaks
|
||||||
|
|
||||||
|
-- Jeremy Bicha <jbicha@debian.org> Tue, 06 Oct 2020 17:44:30 -0400
|
||||||
|
|
||||||
|
gnome-shell-extensions (3.38.0-2) unstable; urgency=medium
|
||||||
|
|
||||||
|
* Team upload
|
||||||
|
* Revert "debian/watch: Watch for unstable releases"
|
||||||
|
* Release to unstable
|
||||||
|
|
||||||
|
-- Simon McVittie <smcv@debian.org> Fri, 25 Sep 2020 23:00:58 +0100
|
||||||
|
|
||||||
|
gnome-shell-extensions (3.38.0-1) experimental; urgency=medium
|
||||||
|
|
||||||
|
* Team upload
|
||||||
|
* New upstream release
|
||||||
|
- Translation updates
|
||||||
|
* d/upstream/metadata: Add
|
||||||
|
* Update standards version to 4.5.0, no changes needed
|
||||||
|
* Fix gnome-classic regression in 3.37.91-1.
|
||||||
|
gnome-session no longer takes the `--session gnome-classic` argument
|
||||||
|
when running in classic mode.
|
||||||
|
|
||||||
|
-- Simon McVittie <smcv@debian.org> Tue, 22 Sep 2020 11:49:24 +0100
|
||||||
|
|
||||||
|
gnome-shell-extensions (3.37.91-1) experimental; urgency=medium
|
||||||
|
|
||||||
|
* New upstream release:
|
||||||
|
- drive-menu: Emphasize eject buttons
|
||||||
|
- user-theme: Add preference dialog
|
||||||
|
- window-list:
|
||||||
|
+ Fix inconsistent state in preference dialog
|
||||||
|
+ auto-move: Modernize preference dialogs
|
||||||
|
- workspace-indicator: Overhaul preference dialog
|
||||||
|
- user-theme: Support session mode styles
|
||||||
|
- Adjust to gnome-shell changes
|
||||||
|
* debian/patches: Refresh
|
||||||
|
* debian/control: B-D on debhelper 13
|
||||||
|
* debian/rules: Don't override dh_missing equal default behavior
|
||||||
|
* debian/control: Remove useless dependency on clutter gir
|
||||||
|
|
||||||
|
-- Marco Trevisan (Treviño) <marco@ubuntu.com> Thu, 27 Aug 2020 17:39:42 +0200
|
||||||
|
|
||||||
|
gnome-shell-extensions (3.36.2-1) unstable; urgency=medium
|
||||||
|
|
||||||
|
* New upstream release
|
||||||
|
|
||||||
|
-- Laurent Bigonville <bigon@debian.org> Sun, 03 May 2020 10:02:18 +0200
|
||||||
|
|
||||||
|
gnome-shell-extensions (3.36.1-1) unstable; urgency=medium
|
||||||
|
|
||||||
|
* Team upload
|
||||||
|
* New upstream release
|
||||||
|
- Update Ukrainian translation
|
||||||
|
- Update Gnome Shell CSS
|
||||||
|
* Upload to unstable (part of transition: #954422)
|
||||||
|
|
||||||
|
-- Simon McVittie <smcv@debian.org> Fri, 10 Apr 2020 15:12:29 +0100
|
||||||
|
|
||||||
|
gnome-shell-extensions (3.36.0-1) experimental; urgency=medium
|
||||||
|
|
||||||
|
* New upstream translation release
|
||||||
|
|
||||||
|
-- Iain Lane <laney@debian.org> Mon, 16 Mar 2020 12:39:02 +0000
|
||||||
|
|
||||||
|
gnome-shell-extensions (3.35.91-1) experimental; urgency=medium
|
||||||
|
|
||||||
|
* New upstream release
|
||||||
|
- Fixes and adjustments to latest gnome-shell
|
||||||
|
|
||||||
|
-- Marco Trevisan (Treviño) <marco@ubuntu.com> Mon, 24 Feb 2020 18:29:29 +0000
|
||||||
|
|
||||||
|
gnome-shell-extensions (3.34.2-1) unstable; urgency=medium
|
||||||
|
|
||||||
|
* New upstream release
|
||||||
|
* debian/control.in: Bump Standards-Version to 4.4.1 (no further changes)
|
||||||
|
|
||||||
|
-- Laurent Bigonville <bigon@debian.org> Mon, 30 Dec 2019 00:51:13 +0100
|
||||||
|
|
||||||
|
gnome-shell-extensions (3.34.1-2) unstable; urgency=high
|
||||||
|
|
||||||
|
* New upstream release
|
||||||
|
- Fix GNOME Classic session's compatibility with gnome-setting-daemon 3.34
|
||||||
|
|
||||||
|
-- Jeremy Bicha <jbicha@debian.org> Tue, 08 Oct 2019 22:49:14 -0400
|
||||||
|
|
||||||
|
gnome-shell-extensions (3.34.0-2) unstable; urgency=medium
|
||||||
|
|
||||||
|
* Team upload.
|
||||||
|
* Upload to unstable.
|
||||||
|
|
||||||
|
-- Andreas Henriksson <andreas@fatal.se> Mon, 30 Sep 2019 17:27:38 +0200
|
||||||
|
|
||||||
|
gnome-shell-extensions (3.34.0-1) experimental; urgency=medium
|
||||||
|
|
||||||
|
* New upstream translation release
|
||||||
|
|
||||||
|
-- Iain Lane <laney@debian.org> Tue, 10 Sep 2019 10:59:31 +0100
|
||||||
|
|
||||||
|
gnome-shell-extensions (3.33.92-1) experimental; urgency=medium
|
||||||
|
|
||||||
|
* New upstream bugfix / translation releases
|
||||||
|
|
||||||
|
-- Iain Lane <laney@debian.org> Thu, 05 Sep 2019 18:22:14 +0100
|
||||||
|
|
||||||
|
gnome-shell-extensions (3.33.90-1) experimental; urgency=medium
|
||||||
|
|
||||||
|
[ Marco Trevisan (Treviño) ]
|
||||||
|
* New upstream release
|
||||||
|
+ window-list: Support showing windows from all workspaces
|
||||||
|
+ Make GNOME Classic more classic:
|
||||||
|
- Disable GNOME 3 overview
|
||||||
|
- Add window picker button to window list
|
||||||
|
- Style improvements and fixes
|
||||||
|
- Support horizontal workspace layout in window list
|
||||||
|
- Add draggable previews to window list workspace switcher
|
||||||
|
- Arrange workspaces horizontally
|
||||||
|
+ workspace-indicator: Support horizontal workspace layout
|
||||||
|
+ workspace-indicator: Add draggable previews
|
||||||
|
+ Fix windowsNavigator extension after ES6 port
|
||||||
|
+ screenshot-window-sizer: Add phone screenshot sizes
|
||||||
|
|
||||||
|
[ Iain Lane ]
|
||||||
|
* rules: Build all extensions via the upstream build system. We don't need
|
||||||
|
to hardcode the list to build, as the build system provides a way to build
|
||||||
|
'all' extensions.
|
||||||
|
* rules: Build with --fail-missing
|
||||||
|
* compat, control, rules: Move to compat 12 and specifying via build-deps
|
||||||
|
|
||||||
|
-- Iain Lane <laney@debian.org> Tue, 13 Aug 2019 11:59:22 +0100
|
||||||
|
|
||||||
|
gnome-shell-extensions (3.32.0-1) experimental; urgency=medium
|
||||||
|
|
||||||
|
* New upstream release
|
||||||
|
|
||||||
|
-- Iain Lane <laney@debian.org> Tue, 12 Mar 2019 16:34:14 +0000
|
||||||
|
|
||||||
|
gnome-shell-extensions (3.31.92-1) experimental; urgency=medium
|
||||||
|
|
||||||
|
* New upstream release
|
||||||
|
|
||||||
|
-- Iain Lane <laney@debian.org> Wed, 06 Mar 2019 15:40:48 +0000
|
||||||
|
|
||||||
|
gnome-shell-extensions (3.31.90-1) experimental; urgency=medium
|
||||||
|
|
||||||
|
* New upstream release
|
||||||
|
+ Misc. bug fixes and cleanups
|
||||||
|
+ Remove obsolete alternate-tab extension
|
||||||
|
+ Adjust to gnome-shell changes
|
||||||
|
* debian/watch: Watch for unstable releases
|
||||||
|
* rules: alternate-tab is dropped; stop trying to enable it
|
||||||
|
|
||||||
|
-- Iain Lane <laney@debian.org> Thu, 21 Feb 2019 10:33:12 +0000
|
||||||
|
|
||||||
|
gnome-shell-extensions (3.30.1-1) unstable; urgency=medium
|
||||||
|
|
||||||
|
* Team upload
|
||||||
|
* New upstream release
|
||||||
|
* Bump Standards-Version to 4.2.1
|
||||||
|
* d/p/gnome-session-classic-wrapper-script.patch:
|
||||||
|
Re-word to avoid a Lintian warning
|
||||||
|
|
||||||
|
-- Simon McVittie <smcv@debian.org> Fri, 02 Nov 2018 09:26:47 +0000
|
||||||
|
|
||||||
|
gnome-shell-extensions (3.30.0-1) unstable; urgency=medium
|
||||||
|
|
||||||
|
* New upstream release
|
||||||
|
* Release to unstable
|
||||||
|
|
||||||
|
-- Jeremy Bicha <jbicha@debian.org> Wed, 05 Sep 2018 12:34:40 -0400
|
||||||
|
|
||||||
|
gnome-shell-extensions (3.29.91-1) experimental; urgency=medium
|
||||||
|
|
||||||
|
* Team upload
|
||||||
|
* New upstream development release
|
||||||
|
* Bump Standards-Version to 4.2.0
|
||||||
|
* Sort dependency lists (wrap-and-sort -a)
|
||||||
|
* d/copyright: Remove unnecessary sentence fragment
|
||||||
|
* d/p/series: Remove commented-out line
|
||||||
|
|
||||||
|
-- Simon McVittie <smcv@debian.org> Mon, 20 Aug 2018 20:27:57 +0100
|
||||||
|
|
||||||
|
gnome-shell-extensions (3.29.90-1) experimental; urgency=medium
|
||||||
|
|
||||||
|
* Team upload
|
||||||
|
* New upstream development release
|
||||||
|
|
||||||
|
-- Simon McVittie <smcv@debian.org> Thu, 02 Aug 2018 10:46:44 +0100
|
||||||
|
|
||||||
|
gnome-shell-extensions (3.29.3+really3.29.3-1) experimental; urgency=medium
|
||||||
|
|
||||||
|
* Team upload
|
||||||
|
* d/watch: Watch for development versions
|
||||||
|
* Re-upload to experimental with a higher version than
|
||||||
|
3.29.3+really3.28.1-1, which reverted the incorrect upload of the
|
||||||
|
previous version to unstable
|
||||||
|
|
||||||
|
-- Simon McVittie <smcv@debian.org> Fri, 27 Jul 2018 23:56:10 +0100
|
||||||
|
|
||||||
|
gnome-shell-extensions (3.29.3-1) unstable; urgency=medium
|
||||||
|
|
||||||
|
* Team upload
|
||||||
|
|
||||||
|
[ Arnaud Rebillout ]
|
||||||
|
* New upstream release
|
||||||
|
|
||||||
|
[ Simon McVittie ]
|
||||||
|
* Bump Standards-Version to 4.1.5
|
||||||
|
* Set Rules-Requires-Root to no
|
||||||
|
|
||||||
|
-- Simon McVittie <smcv@debian.org> Fri, 27 Jul 2018 09:37:34 +0100
|
||||||
|
|
||||||
|
gnome-shell-extensions (3.28.1-1) unstable; urgency=medium
|
||||||
|
|
||||||
|
* New upstream release
|
||||||
|
* Bump Standards-Version to 4.1.4
|
||||||
|
|
||||||
|
-- Jeremy Bicha <jbicha@debian.org> Mon, 14 May 2018 21:51:46 -0400
|
||||||
|
|
||||||
|
gnome-shell-extensions (3.28.0-2) unstable; urgency=medium
|
||||||
|
|
||||||
|
* Fix typo in configure flag that resulted in missing
|
||||||
|
auto-move-windows, native-window-placement, & user-theme extensions
|
||||||
|
|
||||||
|
-- Jeremy Bicha <jbicha@debian.org> Mon, 19 Mar 2018 18:20:53 -0400
|
||||||
|
|
||||||
|
gnome-shell-extensions (3.28.0-1) unstable; urgency=medium
|
||||||
|
|
||||||
|
* New upstream release
|
||||||
|
|
||||||
|
-- Jeremy Bicha <jbicha@debian.org> Sun, 18 Mar 2018 20:17:17 -0400
|
||||||
|
|
||||||
|
gnome-shell-extensions (3.27.92-2) unstable; urgency=medium
|
||||||
|
|
||||||
|
* Release to unstable
|
||||||
|
|
||||||
|
-- Jeremy Bicha <jbicha@debian.org> Sat, 10 Mar 2018 19:37:45 -0500
|
||||||
|
|
||||||
|
gnome-shell-extensions (3.27.92-1) experimental; urgency=medium
|
||||||
|
|
||||||
|
[ Jeremy Bicha ]
|
||||||
|
* New upstream release candidate
|
||||||
|
* Drop explicit dependency on mutter's gir. gnome-shell-extensions depends
|
||||||
|
on gnome-shell which depends on the gir. Dropping it will make transitions
|
||||||
|
easier.
|
||||||
|
|
||||||
|
[ Simon McVittie ]
|
||||||
|
* Recommend gnome-tweaks instead of transitional gnome-tweak-tool
|
||||||
|
|
||||||
|
-- Jeremy Bicha <jbicha@debian.org> Mon, 05 Mar 2018 21:02:01 -0500
|
||||||
|
|
||||||
|
gnome-shell-extensions (3.27.91-1) experimental; urgency=medium
|
||||||
|
|
||||||
|
* New upstream development release
|
||||||
|
* Build with meson
|
||||||
|
* Build-Depend on sassc
|
||||||
|
* Bump debhelper compat to 11
|
||||||
|
* Drop places-menu-Don-t-force-dispose-of-uninitialized-proxies.patch &
|
||||||
|
dont-require-nautilus-classic.patch: Applied in new release
|
||||||
|
|
||||||
|
-- Jeremy Bicha <jbicha@debian.org> Fri, 23 Feb 2018 19:49:59 -0500
|
||||||
|
|
||||||
|
gnome-shell-extensions (3.26.2-3) unstable; urgency=medium
|
||||||
|
|
||||||
|
* Team upload
|
||||||
|
|
||||||
|
[ Jeremy Bicha ]
|
||||||
|
* Update Vcs fields for migration to https://salsa.debian.org/
|
||||||
|
|
||||||
|
[ Simon McVittie ]
|
||||||
|
* d/patches: Re-export with gbp pq export
|
||||||
|
* d/p/places-menu-Don-t-force-dispose-of-uninitialized-proxies.patch:
|
||||||
|
Take patch from upstream to avoid frequent tracebacks from the Places
|
||||||
|
menu with gjs >= 1.50.2-3 (Closes: #888608)
|
||||||
|
|
||||||
|
-- Simon McVittie <smcv@debian.org> Tue, 30 Jan 2018 09:15:54 +0000
|
||||||
|
|
||||||
|
gnome-shell-extensions (3.26.2-2) unstable; urgency=medium
|
||||||
|
|
||||||
|
* Update Vcs fields for conversion to git
|
||||||
|
* Add debian/gbp.conf
|
||||||
|
* Bump Standards-Version to 4.1.2
|
||||||
|
|
||||||
|
-- Jeremy Bicha <jbicha@debian.org> Fri, 15 Dec 2017 15:19:14 -0500
|
||||||
|
|
||||||
|
gnome-shell-extensions (3.26.2-1) unstable; urgency=medium
|
||||||
|
|
||||||
|
* New upstream release
|
||||||
|
|
||||||
|
-- Michael Biebl <biebl@debian.org> Sun, 05 Nov 2017 20:17:03 +0100
|
||||||
|
|
||||||
|
gnome-shell-extensions (3.26.1-2) unstable; urgency=medium
|
||||||
|
|
||||||
|
* Release to unstable
|
||||||
|
* Bump Standards-Version to 4.1.1
|
||||||
|
|
||||||
|
-- Jeremy Bicha <jbicha@debian.org> Fri, 13 Oct 2017 16:49:30 -0400
|
||||||
|
|
||||||
|
gnome-shell-extensions (3.26.1-1) experimental; urgency=medium
|
||||||
|
|
||||||
|
* Team upload
|
||||||
|
* New upstream stable release
|
||||||
|
|
||||||
|
-- Simon McVittie <smcv@debian.org> Fri, 06 Oct 2017 11:01:11 +0100
|
||||||
|
|
||||||
|
gnome-shell-extensions (3.26.0-1) experimental; urgency=medium
|
||||||
|
|
||||||
|
* Team upload
|
||||||
|
* New upstream stable release
|
||||||
|
|
||||||
|
-- Simon McVittie <smcv@debian.org> Wed, 13 Sep 2017 11:33:19 +0100
|
||||||
|
|
||||||
|
gnome-shell-extensions (3.25.91-1) experimental; urgency=medium
|
||||||
|
|
||||||
|
* Team upload
|
||||||
|
* New upstream release, for GNOME Shell 3.25.91
|
||||||
|
- d/p/adapt-to-gsd324.patch: Drop, applied upstream
|
||||||
|
- Switch dependency to gir1.2-mutter-1
|
||||||
|
|
||||||
|
-- Simon McVittie <smcv@debian.org> Tue, 05 Sep 2017 16:43:01 +0100
|
||||||
|
|
||||||
|
gnome-shell-extensions (3.22.2-2) unstable; urgency=medium
|
||||||
|
|
||||||
|
* Add adapt-to-gsd324.patch (Closes: #869948):
|
||||||
|
- Adjust gnome-session file for gnome-settings-daemon 3.24
|
||||||
|
* debian/control.in:
|
||||||
|
- Bump Standards-Version to 4.0.0
|
||||||
|
- Explicitly depend on gnome-settings-daemon >= 3.24
|
||||||
|
- Drop version from gnome-tweak-tool recommends
|
||||||
|
- Depend on gnome-session-bin instead of gnome-session (LP: #1702832)
|
||||||
|
|
||||||
|
-- Jeremy Bicha <jbicha@ubuntu.com> Sun, 06 Aug 2017 17:38:06 -0400
|
||||||
|
|
||||||
|
gnome-shell-extensions (3.22.2-1) unstable; urgency=medium
|
||||||
|
|
||||||
|
* New upstream release.
|
||||||
|
|
||||||
|
-- Michael Biebl <biebl@debian.org> Thu, 10 Nov 2016 19:36:44 +0100
|
||||||
|
|
||||||
|
gnome-shell-extensions (3.22.1-1) unstable; urgency=medium
|
||||||
|
|
||||||
|
* New upstream release.
|
||||||
|
|
||||||
|
-- Michael Biebl <biebl@debian.org> Tue, 11 Oct 2016 17:58:31 +0200
|
||||||
|
|
||||||
|
gnome-shell-extensions (3.22.0-1) unstable; urgency=medium
|
||||||
|
|
||||||
|
* New upstream release.
|
||||||
|
|
||||||
|
-- Michael Biebl <biebl@debian.org> Tue, 20 Sep 2016 01:59:50 +0200
|
||||||
|
|
||||||
|
gnome-shell-extensions (3.21.92-1) unstable; urgency=medium
|
||||||
|
|
||||||
|
* New upstream development release.
|
||||||
|
* Replace Build-Depends gnome-common with pkg-config and gettext.
|
||||||
|
|
||||||
|
-- Michael Biebl <biebl@debian.org> Tue, 13 Sep 2016 22:13:19 +0200
|
||||||
|
|
||||||
|
gnome-shell-extensions (3.21.91-1) unstable; urgency=medium
|
||||||
|
|
||||||
|
* New upstream beta release.
|
||||||
|
|
||||||
|
-- Andreas Henriksson <andreas@fatal.se> Tue, 30 Aug 2016 19:57:32 +0200
|
||||||
|
|
||||||
|
gnome-shell-extensions (3.21.90-1) experimental; urgency=medium
|
||||||
|
|
||||||
|
[ Andreas Henriksson ]
|
||||||
|
* New upstream beta release.
|
||||||
|
* Update build-dependencies according to configure.ac changes:
|
||||||
|
- drop intltool, now gettext is used instead.
|
||||||
|
|
||||||
|
[ Jeremy Bicha ]
|
||||||
|
* Convert from cdbs to dh
|
||||||
|
* Add debian/docs to install NEWS and README
|
||||||
|
* Bump dh compat to 10
|
||||||
|
* Update Vcs fields
|
||||||
|
* Refresh patches
|
||||||
|
|
||||||
|
-- Andreas Henriksson <andreas@fatal.se> Sun, 21 Aug 2016 05:36:17 +0200
|
||||||
|
|
||||||
|
gnome-shell-extensions (3.21.4-1) experimental; urgency=medium
|
||||||
|
|
||||||
|
* New upstream development release.
|
||||||
|
* Stop hard-coding Victor Seva in the Uploaders field
|
||||||
|
|
||||||
|
-- Andreas Henriksson <andreas@fatal.se> Fri, 12 Aug 2016 16:28:33 +0200
|
||||||
|
|
||||||
|
gnome-shell-extensions (3.20.1-1) unstable; urgency=medium
|
||||||
|
|
||||||
|
* New upstream release.
|
||||||
|
* Bump Standards-Version to 3.9.8.
|
||||||
|
|
||||||
|
-- Michael Biebl <biebl@debian.org> Wed, 11 May 2016 15:21:35 +0200
|
||||||
|
|
||||||
|
gnome-shell-extensions (3.20.0-2) unstable; urgency=medium
|
||||||
|
|
||||||
|
* Upload to unstable.
|
||||||
|
|
||||||
|
-- Michael Biebl <biebl@debian.org> Sun, 17 Apr 2016 00:25:25 +0200
|
||||||
|
|
||||||
|
gnome-shell-extensions (3.20.0-1) experimental; urgency=medium
|
||||||
|
|
||||||
|
* New upstream release.
|
||||||
|
|
||||||
|
-- Andreas Henriksson <andreas@fatal.se> Fri, 25 Mar 2016 10:48:00 +0100
|
||||||
|
|
||||||
|
gnome-shell-extensions (3.19.92-1) experimental; urgency=medium
|
||||||
|
|
||||||
|
* New upstream release.
|
||||||
|
* Update dont-require-nautilus-classic.patch to apply.
|
||||||
|
|
||||||
|
-- Andreas Henriksson <andreas@fatal.se> Thu, 17 Mar 2016 12:51:13 +0100
|
||||||
|
|
||||||
|
gnome-shell-extensions (3.18.4-1) unstable; urgency=medium
|
||||||
|
|
||||||
|
* New upstream release.
|
||||||
|
* Bump Standards-Version to 3.9.7.
|
||||||
|
|
||||||
|
-- Michael Biebl <biebl@debian.org> Sun, 06 Mar 2016 22:38:57 +0100
|
||||||
|
|
||||||
|
gnome-shell-extensions (3.18.3-2) unstable; urgency=medium
|
||||||
|
|
||||||
|
* Add Breaks/Replaces gnome-shell-common (<< 3.18) (Closes: #808906)
|
||||||
|
- Helps upgrades from Jessie by allowing overwriting
|
||||||
|
/usr/share/gnome-shell/theme/calendar-today.svg et.al.
|
||||||
|
which was previously shipped in gnome-shell-common.
|
||||||
|
|
||||||
|
-- Andreas Henriksson <andreas@fatal.se> Wed, 10 Feb 2016 01:24:42 +0100
|
||||||
|
|
||||||
|
gnome-shell-extensions (3.18.3-1) unstable; urgency=medium
|
||||||
|
|
||||||
|
* New upstream release.
|
||||||
|
|
||||||
|
-- Michael Biebl <biebl@debian.org> Thu, 14 Jan 2016 22:49:16 +0100
|
||||||
|
|
||||||
|
gnome-shell-extensions (3.18.2-1) unstable; urgency=medium
|
||||||
|
|
||||||
|
* New upstream release.
|
||||||
|
|
||||||
|
-- Michael Biebl <biebl@debian.org> Fri, 13 Nov 2015 00:04:09 +0100
|
||||||
|
|
||||||
|
gnome-shell-extensions (3.18.1-1) unstable; urgency=medium
|
||||||
|
|
||||||
|
* New upstream release.
|
||||||
|
|
||||||
|
-- Michael Biebl <biebl@debian.org> Fri, 16 Oct 2015 22:09:01 +0200
|
||||||
|
|
||||||
|
gnome-shell-extensions (3.18.0-1) unstable; urgency=medium
|
||||||
|
|
||||||
|
* New upstream release.
|
||||||
|
|
||||||
|
-- Laurent Bigonville <bigon@debian.org> Sun, 11 Oct 2015 16:29:18 +0200
|
||||||
|
|
||||||
|
gnome-shell-extensions (3.17.92-1) experimental; urgency=medium
|
||||||
|
|
||||||
|
* New upstream release candidate.
|
||||||
|
|
||||||
|
-- Andreas Henriksson <andreas@fatal.se> Fri, 18 Sep 2015 17:28:06 +0200
|
||||||
|
|
||||||
|
gnome-shell-extensions (3.16.2-1) unstable; urgency=medium
|
||||||
|
|
||||||
|
[ Emilio Pozuelo Monfort ]
|
||||||
|
* debian/gnome-shell-extensions.gsettings-override:
|
||||||
|
+ Dropped, no longer needed as the enabled extension no longer exists.
|
||||||
|
Thanks Artur Rona for noticing. (Closes: #782747)
|
||||||
|
|
||||||
|
[ Michael Biebl ]
|
||||||
|
* New upstream release.
|
||||||
|
* Update Homepage.
|
||||||
|
* Bump debhelper compatibility level to 9.
|
||||||
|
|
||||||
|
-- Michael Biebl <biebl@debian.org> Thu, 02 Jul 2015 19:13:32 +0200
|
||||||
|
|
||||||
|
gnome-shell-extensions (3.16.1-1) unstable; urgency=medium
|
||||||
|
|
||||||
|
* New upstream release.
|
||||||
|
* debian/control.in,
|
||||||
|
debian/rules:
|
||||||
|
+ The system monitor extension was removed. Drop the libgtop
|
||||||
|
build and runtime dependencies and stop enabling it.
|
||||||
|
* debian/patches/apps-center-labels.patch,
|
||||||
|
debian/patches/window-list-pointerInNotification.patch,
|
||||||
|
debian/patches/menu-arrows-icons.patch:
|
||||||
|
+ Dropped, merged upstream.
|
||||||
|
* debian/patches/dont-require-nautilus-classic.patch:
|
||||||
|
+ Updated for the new version.
|
||||||
|
|
||||||
|
-- Emilio Pozuelo Monfort <pochu@debian.org> Sun, 14 Jun 2015 15:23:59 +0200
|
||||||
|
|
||||||
|
gnome-shell-extensions (3.14.2-1) unstable; urgency=medium
|
||||||
|
|
||||||
|
* New upstream bugfix release.
|
||||||
|
* menu-arrows-icons: new patch. Make arrows consistent with the rest
|
||||||
|
of the shell.
|
||||||
|
* apps-center-labels.patch: patch from upstream git. Center labels
|
||||||
|
vertically in the applications menu.
|
||||||
|
* window-list-pointerInNotification.patch: patch from upstream git.
|
||||||
|
Update window-list extension for an older shell API change.
|
||||||
|
|
||||||
|
-- Josselin Mouette <joss@debian.org> Sun, 30 Nov 2014 16:06:59 +0100
|
||||||
|
|
||||||
|
gnome-shell-extensions (3.14.1-1) unstable; urgency=medium
|
||||||
|
|
||||||
|
* New upstream release.
|
||||||
|
* debian/control.in: Bump Standards-Version to 3.9.6 (no further changes)
|
||||||
|
* Add missing dependencies against gir packages, including gir1.2-gmenu-3.0,
|
||||||
|
this should fix the apps-menu extension for some people (Closes: #765460).
|
||||||
|
|
||||||
|
-- Laurent Bigonville <bigon@debian.org> Sun, 19 Oct 2014 21:17:58 +0200
|
||||||
|
|
||||||
|
gnome-shell-extensions (3.14.0-2) unstable; urgency=medium
|
||||||
|
|
||||||
|
* Drop xrandr from EXTENSIONS_DISABLED, this extension was removed
|
||||||
|
upstream.
|
||||||
|
* Add new screenshot-window-sizer extension to EXTENSIONS_ENABLED.
|
||||||
|
|
||||||
|
-- Michael Biebl <biebl@debian.org> Wed, 24 Sep 2014 01:15:32 +0200
|
||||||
|
|
||||||
|
gnome-shell-extensions (3.14.0-1) unstable; urgency=medium
|
||||||
|
|
||||||
|
* debian/watch: only scan for stable releases.
|
||||||
|
* New upstream release.
|
||||||
|
* Upload to unstable.
|
||||||
|
|
||||||
|
-- Andreas Henriksson <andreas@fatal.se> Tue, 23 Sep 2014 15:46:30 +0200
|
||||||
|
|
||||||
|
gnome-shell-extensions (3.13.91-1) experimental; urgency=medium
|
||||||
|
|
||||||
|
* New upstream development release.
|
||||||
|
|
||||||
|
-- Andreas Henriksson <andreas@fatal.se> Sat, 06 Sep 2014 11:16:39 -0700
|
||||||
|
|
||||||
|
gnome-shell-extensions (3.12.2-1) unstable; urgency=medium
|
||||||
|
|
||||||
|
* New upstream release.
|
||||||
|
* Bump Standards-Version to 3.9.5
|
||||||
|
* Upload to unstable.
|
||||||
|
|
||||||
|
-- Andreas Henriksson <andreas@fatal.se> Tue, 15 Jul 2014 00:06:09 +0200
|
||||||
|
|
||||||
|
gnome-shell-extensions (3.12.0-1) experimental; urgency=low
|
||||||
|
|
||||||
|
[ Jean Schurger ]
|
||||||
|
* New upstream release (3.10.1)
|
||||||
|
* debian/rules: remove one of the 'windowsNavigator' extension listed twice
|
||||||
|
and the 'alternative-system-menu' extension (does not exists anymore)
|
||||||
|
* debian/copyright: Update 'Format:' line
|
||||||
|
|
||||||
|
[ Andreas Henriksson ]
|
||||||
|
* New upstream release (3.12.0)
|
||||||
|
* debian/local/gnome-session-classic,
|
||||||
|
debian/patches/gnome-session-classic-wrapper-script.patch:
|
||||||
|
- update script to include new GNOME_SHELL_SESSION_MODE env variable
|
||||||
|
and update patch to apply again.
|
||||||
|
|
||||||
|
-- Andreas Henriksson <andreas@fatal.se> Fri, 04 Apr 2014 21:43:18 +0200
|
||||||
|
|
||||||
|
gnome-shell-extensions (3.8.4-2) unstable; urgency=low
|
||||||
|
|
||||||
|
* Upload to unstable.
|
||||||
|
|
||||||
|
-- Emilio Pozuelo Monfort <pochu@debian.org> Sun, 13 Oct 2013 18:11:33 +0200
|
||||||
|
|
||||||
|
gnome-shell-extensions (3.8.4-1) experimental; urgency=low
|
||||||
|
|
||||||
|
[ Jeremy Bicha ]
|
||||||
|
* New upstream release
|
||||||
|
* Dropped patches applied in new version:
|
||||||
|
- fix-hibernate.patch
|
||||||
|
- fix-applications-menu-resolution-change.patch
|
||||||
|
- look-in-data-home-for-themes.patch
|
||||||
|
|
||||||
|
[ Michael Biebl ]
|
||||||
|
* Add a wrapper script to start the GNOME Classic session as currently
|
||||||
|
Xsession doesn't allow to run gnome-session with custom arguments due to
|
||||||
|
#653327.
|
||||||
|
|
||||||
|
-- Michael Biebl <biebl@debian.org> Fri, 11 Oct 2013 18:55:23 +0200
|
||||||
|
|
||||||
|
gnome-shell-extensions (3.8.3.1-1) experimental; urgency=low
|
||||||
|
|
||||||
|
[ Jeremy Bicha ]
|
||||||
|
* New upstream release
|
||||||
|
- default-min-max and static-workspaces extensions have been dropped.
|
||||||
|
Use Classic Mode or tweak org.gnome.shell.overrides in dconf-editor
|
||||||
|
* debian/control.in:
|
||||||
|
- Depend on gnome-session 3.8, required for the new Classic mode.
|
||||||
|
- Update homepage
|
||||||
|
* debian/patches/dont-require-nautilus-classic.patch:
|
||||||
|
- Don't require nautilus-classic since it forces desktop icons
|
||||||
|
* debian/patches/fix-applications-menu-resolution-change.patch:
|
||||||
|
- Backport commit to not break applications menu when screen resolution
|
||||||
|
changes
|
||||||
|
* debian/patches/fix-hibernate.patch:
|
||||||
|
- Backport patch to fix checking whether hibernate is allowed
|
||||||
|
* debian/patches/look-in-data-home-for-themes.patch:
|
||||||
|
- Backport commit to also look in XDG_DATA_HOME (usually ~/.local/share/)
|
||||||
|
for user themes
|
||||||
|
* debian/rules:
|
||||||
|
- Run autoreconf
|
||||||
|
|
||||||
|
-- Andreas Henriksson <andreas@fatal.se> Fri, 16 Aug 2013 20:25:30 +0200
|
||||||
|
|
||||||
|
gnome-shell-extensions (3.8.2-1) experimental; urgency=low
|
||||||
|
|
||||||
|
* Team upload
|
||||||
|
|
||||||
|
[ Victor Seva ]
|
||||||
|
* Recommends gnome-tweak-tool
|
||||||
|
|
||||||
|
[ Jean Schurger ]
|
||||||
|
* New upstream release 3.7.92 (LP: #1017979, #1059152).
|
||||||
|
* Enabled new extensions.
|
||||||
|
* Dropped 'dock' and 'gajim'.
|
||||||
|
* Use ./configure instead of autoreconf.
|
||||||
|
* Bumped Standards-Version to 3.9.4.
|
||||||
|
* Updated Vcs-Svn.
|
||||||
|
* debian/control.in
|
||||||
|
- Added runtime dependency to 'gvfs' (>= 1.16.0).
|
||||||
|
The 'Places' extension rely on a 'gvfs' linked to 'udisks2'.
|
||||||
|
|
||||||
|
[ Simon McVittie ]
|
||||||
|
* New upstream release 3.8.2.
|
||||||
|
* Install the "classic mode"
|
||||||
|
* Enable windowNavigator extension (this means we have everything except
|
||||||
|
example and xrandr, the same as in the Ubuntu gnome3-team's PPA)
|
||||||
|
|
||||||
|
-- Simon McVittie <smcv@debian.org> Thu, 23 May 2013 09:07:23 +0100
|
||||||
|
|
||||||
|
gnome-shell-extensions (3.4.0-2) unstable; urgency=low
|
||||||
|
|
||||||
|
* Upload to unstable.
|
||||||
|
|
||||||
|
-- Michael Biebl <biebl@debian.org> Wed, 30 May 2012 13:22:54 +0200
|
||||||
|
|
||||||
|
gnome-shell-extensions (3.4.0-1) experimental; urgency=low
|
||||||
|
|
||||||
|
* New upstream release.
|
||||||
|
* Remove 01_status-menu_disable_accounts.patch: The alternative-status-menu
|
||||||
|
extension no longer recreates the complete user menu but reuses the one
|
||||||
|
from gnome-shell, so we can't easily get rid of the "Online Accounts" menu
|
||||||
|
entry. We will patch gnome-shell directly instead.
|
||||||
|
* Remove 02-Revert-all-remove-all-GSettings-usage.patch and
|
||||||
|
03-Revert-Remove-all-references-to-localedir-from-metad.patch, no longer
|
||||||
|
required.
|
||||||
|
* Bump Standards-Version to 3.9.3
|
||||||
|
|
||||||
|
-- Michael Biebl <biebl@debian.org> Mon, 21 May 2012 00:24:56 +0200
|
||||||
|
|
||||||
|
gnome-shell-extensions (3.2.3-1) unstable; urgency=low
|
||||||
|
|
||||||
|
[ Josselin Mouette ]
|
||||||
|
* gnome-shell-extensions.gsettings-override: enable the alternative
|
||||||
|
status menu by default. Closes: #648112.
|
||||||
|
* Use ${gnome:Version} to generate strict dependencies, it’s very
|
||||||
|
unlikely that extensions remain compatible after a major upgrade.
|
||||||
|
|
||||||
|
[ Michael Biebl ]
|
||||||
|
* Upload to unstable.
|
||||||
|
|
||||||
|
[ Josselin Mouette ]
|
||||||
|
* 01_status-menu_disable_accounts.patch: new patch. Drop the unusable
|
||||||
|
advertisement for Google. It is already available in the control
|
||||||
|
center anyway.
|
||||||
|
|
||||||
|
[ Michael Biebl ]
|
||||||
|
* New upstream release.
|
||||||
|
* Drop patches which have been merged upstream:
|
||||||
|
- debian/patches/upstream/*
|
||||||
|
- debian/patches/fix-*
|
||||||
|
* Refresh 01_status-menu_disable_accounts.patch.
|
||||||
|
* Add 02-Revert-all-remove-all-GSettings-usage.patch: Use GSettings since we
|
||||||
|
install the extensions system-wide.
|
||||||
|
* Use dh-autoreconf to generate the build system.
|
||||||
|
* Add 03-Revert-Remove-all-references-to-localedir-from-metad.patch: Use
|
||||||
|
locales from system-wide location.
|
||||||
|
|
||||||
|
-- Michael Biebl <biebl@debian.org> Sat, 11 Feb 2012 23:28:53 +0100
|
||||||
|
|
||||||
|
gnome-shell-extensions (3.2.0-1) experimental; urgency=low
|
||||||
|
|
||||||
|
[ Victor Seva ]
|
||||||
|
* Initial release (Closes: #627515)
|
||||||
|
Package based on the work by Bilal Akhtar <bilalakhtar@ubuntu.com>
|
||||||
|
* debian/copyright
|
||||||
|
- Added myself
|
||||||
|
- Fixed syntax-error-in-dep5-copyright syntax error
|
||||||
|
* debian/control.in
|
||||||
|
- Added myself as maintainer.
|
||||||
|
- Fix gnome-shell dependency.
|
||||||
|
- Fix gir1.2-gtop-2.0 dependency for systemMonitor ext.
|
||||||
|
* debian/rules
|
||||||
|
- Added uploaders.mk gnome-version.mk includes.
|
||||||
|
- Removed unused variables.
|
||||||
|
* debian/watch added.
|
||||||
|
* No more gnome-shell-extension-* packages.
|
||||||
|
* debian/patches/upstream
|
||||||
|
- patch_967aee7aad2accfb38d91ab56b6c5e91d86a2722.diff
|
||||||
|
popup menu fix
|
||||||
|
- patch_66242aa76a5d59fb4659551575c1fbb42e50b8fb.diff
|
||||||
|
dock fix.
|
||||||
|
- patch_4c5a36e4c0cbe38f2e26b6b3c8b02e88b4b939f7.diff
|
||||||
|
patch_2bba98d6214cffae2eb5cecb9d7c1f6b6d244052.diff
|
||||||
|
systemMonitor: Properly enable/disable
|
||||||
|
* debian/patches
|
||||||
|
- fix_dock_gnome-shell_version.diff
|
||||||
|
- fix_alternate-tab_661281.diff
|
||||||
|
- fix_alternate-tab_gnome-shell_version.diff
|
||||||
|
* debian/rules
|
||||||
|
- EXTENSIONS_ENABLED, EXTENSIONS_DISABLED variables
|
||||||
|
- disabled xrandr-indicator
|
||||||
|
|
||||||
|
[ Michael Biebl ]
|
||||||
|
* debian/watch: Track .xz tarballs.
|
||||||
|
* debian/control.in:
|
||||||
|
- Set pkg-gnome-maintainers@lists.alioth.debian.org as Maintainer and add
|
||||||
|
Victor Seva <linuxmaniac@torreviejawireless.org> to Uploaders.
|
||||||
|
- Wrap (Build-)Depends.
|
||||||
|
- Add Vcs-Svn and Vcs-Browser field.
|
||||||
|
* debian/rules:
|
||||||
|
- Include gnome-get-source.mk.
|
||||||
|
|
||||||
|
-- Michael Biebl <biebl@debian.org> Sat, 12 Nov 2011 18:32:22 +0100
|
||||||
50
debian/control
vendored
Normal file
50
debian/control
vendored
Normal file
@@ -0,0 +1,50 @@
|
|||||||
|
# This file is autogenerated. DO NOT EDIT!
|
||||||
|
#
|
||||||
|
# Modifications should be made to debian/control.in instead.
|
||||||
|
# This file is regenerated automatically in the clean target.
|
||||||
|
Source: gnome-shell-extensions
|
||||||
|
Section: gnome
|
||||||
|
Priority: optional
|
||||||
|
Maintainer: Debian GNOME Maintainers <pkg-gnome-maintainers@lists.alioth.debian.org>
|
||||||
|
Uploaders: Iain Lane <laney@debian.org>, Laurent Bigonville <bigon@debian.org>, Marco Trevisan (Treviño) <marco@ubuntu.com>
|
||||||
|
Build-Depends: debhelper-compat (= 13),
|
||||||
|
dh-sequence-gnome (>= 0.22),
|
||||||
|
libglib2.0-bin,
|
||||||
|
meson (>= 0.58.0),
|
||||||
|
sassc
|
||||||
|
Rules-Requires-Root: no
|
||||||
|
Standards-Version: 4.6.0
|
||||||
|
Vcs-Browser: https://salsa.debian.org/gnome-team/gnome-shell-extensions
|
||||||
|
Vcs-Git: https://salsa.debian.org/gnome-team/gnome-shell-extensions.git
|
||||||
|
Homepage: https://wiki.gnome.org/Projects/GnomeShell/Extensions
|
||||||
|
|
||||||
|
Package: gnome-shell-extensions
|
||||||
|
Architecture: all
|
||||||
|
Depends: gir1.2-adw-1,
|
||||||
|
gir1.2-atk-1.0,
|
||||||
|
gir1.2-glib-2.0,
|
||||||
|
gir1.2-gmenu-3.0,
|
||||||
|
gir1.2-graphene-1.0 (>= 1.10.2),
|
||||||
|
gir1.2-gtk-4.0,
|
||||||
|
gir1.2-pango-1.0,
|
||||||
|
gnome-session-bin (>= 3.8),
|
||||||
|
gnome-settings-daemon (>= 3.24),
|
||||||
|
gnome-shell (<< ${gnome:NextVersion}),
|
||||||
|
gnome-shell (>= ${gnome:Version}),
|
||||||
|
gvfs (>= 1.16.0),
|
||||||
|
${misc:Depends}
|
||||||
|
Recommends: gnome-shell-extension-prefs
|
||||||
|
Replaces: gnome-shell-common (<< 3.18)
|
||||||
|
Breaks: gnome-shell-common (<< 3.18)
|
||||||
|
Description: Extensions to extend functionality of GNOME Shell
|
||||||
|
The GNOME Shell redefines user interactions with the GNOME desktop. In
|
||||||
|
particular, it offers new paradigms for launching applications,
|
||||||
|
accessing documents, and organizing open windows in GNOME. Later, it
|
||||||
|
will introduce a new applets eco-system and offer new solutions for
|
||||||
|
other desktop features, such as notifications and contacts management.
|
||||||
|
The GNOME Shell is intended to replace functions handled by the GNOME
|
||||||
|
Panel and by the window manager in previous versions of GNOME. The GNOME
|
||||||
|
Shell has rich visual effects enabled by new graphical technologies.
|
||||||
|
.
|
||||||
|
GNOME Shell is extensible using extensions. This package contains
|
||||||
|
official GNOME Shell extensions.
|
||||||
46
debian/control.in
vendored
Normal file
46
debian/control.in
vendored
Normal file
@@ -0,0 +1,46 @@
|
|||||||
|
Source: gnome-shell-extensions
|
||||||
|
Section: gnome
|
||||||
|
Priority: optional
|
||||||
|
Maintainer: Debian GNOME Maintainers <pkg-gnome-maintainers@lists.alioth.debian.org>
|
||||||
|
Uploaders: @GNOME_TEAM@
|
||||||
|
Build-Depends: debhelper-compat (= 13),
|
||||||
|
dh-sequence-gnome (>= 0.22),
|
||||||
|
libglib2.0-bin,
|
||||||
|
meson (>= 0.58.0),
|
||||||
|
sassc
|
||||||
|
Rules-Requires-Root: no
|
||||||
|
Standards-Version: 4.6.0
|
||||||
|
Vcs-Browser: https://salsa.debian.org/gnome-team/gnome-shell-extensions
|
||||||
|
Vcs-Git: https://salsa.debian.org/gnome-team/gnome-shell-extensions.git
|
||||||
|
Homepage: https://wiki.gnome.org/Projects/GnomeShell/Extensions
|
||||||
|
|
||||||
|
Package: gnome-shell-extensions
|
||||||
|
Architecture: all
|
||||||
|
Depends: gir1.2-adw-1,
|
||||||
|
gir1.2-atk-1.0,
|
||||||
|
gir1.2-glib-2.0,
|
||||||
|
gir1.2-gmenu-3.0,
|
||||||
|
gir1.2-graphene-1.0 (>= 1.10.2),
|
||||||
|
gir1.2-gtk-4.0,
|
||||||
|
gir1.2-pango-1.0,
|
||||||
|
gnome-session-bin (>= 3.8),
|
||||||
|
gnome-settings-daemon (>= 3.24),
|
||||||
|
gnome-shell (<< ${gnome:NextVersion}),
|
||||||
|
gnome-shell (>= ${gnome:Version}),
|
||||||
|
gvfs (>= 1.16.0),
|
||||||
|
${misc:Depends}
|
||||||
|
Recommends: gnome-shell-extension-prefs
|
||||||
|
Replaces: gnome-shell-common (<< 3.18)
|
||||||
|
Breaks: gnome-shell-common (<< 3.18)
|
||||||
|
Description: Extensions to extend functionality of GNOME Shell
|
||||||
|
The GNOME Shell redefines user interactions with the GNOME desktop. In
|
||||||
|
particular, it offers new paradigms for launching applications,
|
||||||
|
accessing documents, and organizing open windows in GNOME. Later, it
|
||||||
|
will introduce a new applets eco-system and offer new solutions for
|
||||||
|
other desktop features, such as notifications and contacts management.
|
||||||
|
The GNOME Shell is intended to replace functions handled by the GNOME
|
||||||
|
Panel and by the window manager in previous versions of GNOME. The GNOME
|
||||||
|
Shell has rich visual effects enabled by new graphical technologies.
|
||||||
|
.
|
||||||
|
GNOME Shell is extensible using extensions. This package contains
|
||||||
|
official GNOME Shell extensions.
|
||||||
30
debian/copyright
vendored
Normal file
30
debian/copyright
vendored
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
|
||||||
|
Upstream-Name: gnome-shell-extensions
|
||||||
|
Upstream-Contact: 2011 Giovanni Campagna <gcampagna@src.gnome.org>
|
||||||
|
Source: https://download.gnome.org/sources/gnome-shell-extensions/
|
||||||
|
Files-Excluded: data/gnome-classic.css
|
||||||
|
Comment: Build that generated file from source
|
||||||
|
|
||||||
|
Files: *
|
||||||
|
Copyright: 2011 Giovanni Campagna <gcampagna@src.gnome.org>
|
||||||
|
License: GPL-2+
|
||||||
|
|
||||||
|
Files: debian/*
|
||||||
|
Copyright:
|
||||||
|
2011 Victor Seva <linuxmaniac@torreviejawireless.org>
|
||||||
|
2011 Bilal Akhtar <bilalakhtar@ubuntu.com>
|
||||||
|
License: GPL-2+
|
||||||
|
|
||||||
|
License: GPL-2+
|
||||||
|
This package is free software; you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation; either version 2 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
.
|
||||||
|
This package is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
.
|
||||||
|
On Debian systems, the complete text of the GNU General
|
||||||
|
Public License version 2 can be found in "/usr/share/common-licenses/GPL-2".
|
||||||
2
debian/docs
vendored
Normal file
2
debian/docs
vendored
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
NEWS
|
||||||
|
README.md
|
||||||
17
debian/gbp.conf
vendored
Normal file
17
debian/gbp.conf
vendored
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
[DEFAULT]
|
||||||
|
pristine-tar = True
|
||||||
|
debian-branch = debian/latest
|
||||||
|
upstream-branch = upstream/latest
|
||||||
|
|
||||||
|
[buildpackage]
|
||||||
|
sign-tags = True
|
||||||
|
|
||||||
|
[dch]
|
||||||
|
multimaint-merge = True
|
||||||
|
|
||||||
|
[import-orig]
|
||||||
|
postimport = dch -v%(version)s New upstream release; git add debian/changelog; debcommit
|
||||||
|
upstream-vcs-tag = %(version%~%.)s
|
||||||
|
|
||||||
|
[pq]
|
||||||
|
patch-numbers = False
|
||||||
1
debian/install
vendored
Normal file
1
debian/install
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
debian/local/gnome-session-classic usr/bin
|
||||||
2
debian/local/gnome-session-classic
vendored
Executable file
2
debian/local/gnome-session-classic
vendored
Executable file
@@ -0,0 +1,2 @@
|
|||||||
|
#! /bin/sh
|
||||||
|
env GNOME_SHELL_SESSION_MODE=classic gnome-session "$@"
|
||||||
30
debian/patches/gnome-session-classic-wrapper-script.patch
vendored
Normal file
30
debian/patches/gnome-session-classic-wrapper-script.patch
vendored
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
From: Michael Biebl <biebl@debian.org>
|
||||||
|
Date: Tue, 30 Jan 2018 09:04:03 +0000
|
||||||
|
Subject: Use a wrapper script to start GNOME classic session
|
||||||
|
|
||||||
|
Xsession currently doesn't allow passing more then one argument, as it
|
||||||
|
otherwise fails with
|
||||||
|
Xsession: unable to launch "gnome-session --session classic" X session ---
|
||||||
|
"gnome-session --session classic" not found; falling back to default session.
|
||||||
|
|
||||||
|
This is due to [1]. Add a wrapper script to start the GNOME classic session
|
||||||
|
as a workaround. Once [1] is fixed, this should be removed again.
|
||||||
|
|
||||||
|
[1] http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=653327.
|
||||||
|
---
|
||||||
|
data/gnome-classic.desktop.in | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/data/gnome-classic.desktop.in b/data/gnome-classic.desktop.in
|
||||||
|
index 13da2b5..d627655 100644
|
||||||
|
--- a/data/gnome-classic.desktop.in
|
||||||
|
+++ b/data/gnome-classic.desktop.in
|
||||||
|
@@ -1,7 +1,7 @@
|
||||||
|
[Desktop Entry]
|
||||||
|
Name=GNOME Classic
|
||||||
|
Comment=This session logs you into GNOME Classic
|
||||||
|
-Exec=env GNOME_SHELL_SESSION_MODE=classic gnome-session
|
||||||
|
+Exec=gnome-session-classic
|
||||||
|
TryExec=gnome-session
|
||||||
|
Type=Application
|
||||||
|
DesktopNames=GNOME-Classic;GNOME;
|
||||||
1
debian/patches/series
vendored
Normal file
1
debian/patches/series
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
gnome-session-classic-wrapper-script.patch
|
||||||
9
debian/rules
vendored
Executable file
9
debian/rules
vendored
Executable file
@@ -0,0 +1,9 @@
|
|||||||
|
#!/usr/bin/make -f
|
||||||
|
|
||||||
|
%:
|
||||||
|
dh $@
|
||||||
|
|
||||||
|
override_dh_auto_configure:
|
||||||
|
dh_auto_configure -- \
|
||||||
|
-Dextension_set=all \
|
||||||
|
-Dclassic_mode=true
|
||||||
1
debian/source/format
vendored
Normal file
1
debian/source/format
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
3.0 (quilt)
|
||||||
5
debian/upstream/metadata
vendored
Normal file
5
debian/upstream/metadata
vendored
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
Bug-Database: https://gitlab.gnome.org/GNOME/gnome-shell-extensions/issues
|
||||||
|
Bug-Submit: https://gitlab.gnome.org/GNOME/gnome-shell-extensions/issues/new
|
||||||
|
Repository: https://gitlab.gnome.org/GNOME/gnome-shell-extensions.git
|
||||||
|
Repository-Browse: https://gitlab.gnome.org/GNOME/gnome-shell-extensions
|
||||||
4
debian/watch
vendored
Normal file
4
debian/watch
vendored
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
version=4
|
||||||
|
opts="searchmode=plain, uversionmangle=s/\.(alpha|beta|rc)/~$1/, downloadurlmangle=s|cache.json||" \
|
||||||
|
https://download.gnome.org/sources/@PACKAGE@/cache.json \
|
||||||
|
[\d.]+/@PACKAGE@-([\d.]+)@ARCHIVE_EXT@
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
#!/bin/sh
|
#!/bin/bash
|
||||||
|
|
||||||
srcdir=`dirname $0`
|
srcdir=`dirname $0`
|
||||||
srcdir=`(cd $srcdir && pwd)`
|
srcdir=`(cd $srcdir && pwd)`
|
||||||
|
|||||||
@@ -1,18 +1,22 @@
|
|||||||
/* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */
|
/* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */
|
||||||
/* exported init enable disable */
|
import Atk from 'gi://Atk';
|
||||||
|
import Clutter from 'gi://Clutter';
|
||||||
|
import Gio from 'gi://Gio';
|
||||||
|
import GLib from 'gi://GLib';
|
||||||
|
import GMenu from 'gi://GMenu';
|
||||||
|
import GObject from 'gi://GObject';
|
||||||
|
import Gtk from 'gi://Gtk';
|
||||||
|
import Meta from 'gi://Meta';
|
||||||
|
import Shell from 'gi://Shell';
|
||||||
|
import St from 'gi://St';
|
||||||
|
import {EventEmitter} from 'resource:///org/gnome/shell/misc/signals.js';
|
||||||
|
|
||||||
const {
|
import {Extension, gettext as _} from 'resource:///org/gnome/shell/extensions/extension.js';
|
||||||
Atk, Clutter, Gio, GLib, GMenu, GObject, Gtk, Meta, Shell, St,
|
|
||||||
} = imports.gi;
|
|
||||||
const Signals = imports.signals;
|
|
||||||
|
|
||||||
const DND = imports.ui.dnd;
|
import * as DND from 'resource:///org/gnome/shell/ui/dnd.js';
|
||||||
const ExtensionUtils = imports.misc.extensionUtils;
|
import * as Main from 'resource:///org/gnome/shell/ui/main.js';
|
||||||
const Main = imports.ui.main;
|
import * as PanelMenu from 'resource:///org/gnome/shell/ui/panelMenu.js';
|
||||||
const PanelMenu = imports.ui.panelMenu;
|
import * as PopupMenu from 'resource:///org/gnome/shell/ui/popupMenu.js';
|
||||||
const PopupMenu = imports.ui.popupMenu;
|
|
||||||
|
|
||||||
const _ = ExtensionUtils.gettext;
|
|
||||||
|
|
||||||
const appSys = Shell.AppSystem.get_default();
|
const appSys = Shell.AppSystem.get_default();
|
||||||
|
|
||||||
@@ -46,11 +50,8 @@ class ApplicationMenuItem extends PopupMenu.PopupBaseMenuItem {
|
|||||||
this.label_actor = appLabel;
|
this.label_actor = appLabel;
|
||||||
|
|
||||||
let textureCache = St.TextureCache.get_default();
|
let textureCache = St.TextureCache.get_default();
|
||||||
let iconThemeChangedId = textureCache.connect('icon-theme-changed',
|
textureCache.connectObject('icon-theme-changed',
|
||||||
this._updateIcon.bind(this));
|
() => this._updateIcon(), this);
|
||||||
this.connect('destroy', () => {
|
|
||||||
textureCache.disconnect(iconThemeChangedId);
|
|
||||||
});
|
|
||||||
this._updateIcon();
|
this._updateIcon();
|
||||||
|
|
||||||
this._delegate = this;
|
this._delegate = this;
|
||||||
@@ -117,7 +118,7 @@ class CategoryMenuItem extends PopupMenu.PopupBaseMenuItem {
|
|||||||
else
|
else
|
||||||
name = _('Favorites');
|
name = _('Favorites');
|
||||||
|
|
||||||
this.add_child(new St.Label({ text: name }));
|
this.add_child(new St.Label({text: name}));
|
||||||
this.connect('motion-event', this._onMotionEvent.bind(this));
|
this.connect('motion-event', this._onMotionEvent.bind(this));
|
||||||
this.connect('notify::active', this._onActiveChanged.bind(this));
|
this.connect('notify::active', this._onActiveChanged.bind(this));
|
||||||
}
|
}
|
||||||
@@ -239,8 +240,10 @@ class ApplicationsMenu extends PopupMenu.PopupMenu {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class DesktopTarget {
|
class DesktopTarget extends EventEmitter {
|
||||||
constructor() {
|
constructor() {
|
||||||
|
super();
|
||||||
|
|
||||||
this._desktop = null;
|
this._desktop = null;
|
||||||
this._desktopDestroyedId = 0;
|
this._desktopDestroyedId = 0;
|
||||||
|
|
||||||
@@ -267,9 +270,7 @@ class DesktopTarget {
|
|||||||
|
|
||||||
_setDesktop(desktop) {
|
_setDesktop(desktop) {
|
||||||
if (this._desktop) {
|
if (this._desktop) {
|
||||||
this._desktop.disconnect(this._desktopDestroyedId);
|
this._desktop.disconnectObject(this);
|
||||||
this._desktopDestroyedId = 0;
|
|
||||||
|
|
||||||
delete this._desktop._delegate;
|
delete this._desktop._delegate;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -277,9 +278,9 @@ class DesktopTarget {
|
|||||||
this.emit('desktop-changed');
|
this.emit('desktop-changed');
|
||||||
|
|
||||||
if (this._desktop) {
|
if (this._desktop) {
|
||||||
this._desktopDestroyedId = this._desktop.connect('destroy', () => {
|
this._desktop.connectObject('destroy', () => {
|
||||||
this._setDesktop(null);
|
this._setDesktop(null);
|
||||||
});
|
}, this);
|
||||||
this._desktop._delegate = this;
|
this._desktop._delegate = this;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -319,10 +320,7 @@ class DesktopTarget {
|
|||||||
}
|
}
|
||||||
|
|
||||||
destroy() {
|
destroy() {
|
||||||
if (this._windowAddedId)
|
global.window_group.disconnectObject(this);
|
||||||
global.window_group.disconnect(this._windowAddedId);
|
|
||||||
this._windowAddedId = 0;
|
|
||||||
|
|
||||||
this._setDesktop(null);
|
this._setDesktop(null);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -357,7 +355,6 @@ class DesktopTarget {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Signals.addSignalMethods(DesktopTarget.prototype);
|
|
||||||
|
|
||||||
class ApplicationsButton extends PanelMenu.Button {
|
class ApplicationsButton extends PanelMenu.Button {
|
||||||
static {
|
static {
|
||||||
@@ -385,15 +382,14 @@ class ApplicationsButton extends PanelMenu.Button {
|
|||||||
this.name = 'panelApplications';
|
this.name = 'panelApplications';
|
||||||
this.label_actor = this._label;
|
this.label_actor = this._label;
|
||||||
|
|
||||||
this._showingId = Main.overview.connect('showing', () => {
|
Main.overview.connectObject(
|
||||||
this.add_accessible_state(Atk.StateType.CHECKED);
|
'showing', () => this.add_accessible_state(Atk.StateType.CHECKED),
|
||||||
});
|
'hiding', () => this.remove_accessible_state(Atk.StateType.CHECKED),
|
||||||
this._hidingId = Main.overview.connect('hiding', () => {
|
this);
|
||||||
this.remove_accessible_state(Atk.StateType.CHECKED);
|
|
||||||
});
|
|
||||||
Main.wm.addKeybinding(
|
Main.wm.addKeybinding(
|
||||||
'apps-menu-toggle-menu',
|
'apps-menu-toggle-menu',
|
||||||
ExtensionUtils.getSettings(),
|
Extension.lookupByURL(import.meta.url).getSettings(),
|
||||||
Meta.KeyBindingFlags.IGNORE_AUTOREPEAT,
|
Meta.KeyBindingFlags.IGNORE_AUTOREPEAT,
|
||||||
Shell.ActionMode.NORMAL | Shell.ActionMode.OVERVIEW,
|
Shell.ActionMode.NORMAL | Shell.ActionMode.OVERVIEW,
|
||||||
() => this.menu.toggle());
|
() => this.menu.toggle());
|
||||||
@@ -408,16 +404,16 @@ 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._tree.connectObject('changed',
|
||||||
this._onTreeChanged.bind(this));
|
() => this._onTreeChanged(), 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',
|
appSys.connectObject('installed-changed',
|
||||||
this._onTreeChanged.bind(this));
|
() => this._onTreeChanged(), this);
|
||||||
}
|
}
|
||||||
|
|
||||||
_onTreeChanged() {
|
_onTreeChanged() {
|
||||||
@@ -441,11 +437,7 @@ class ApplicationsButton extends PanelMenu.Button {
|
|||||||
_onDestroy() {
|
_onDestroy() {
|
||||||
super._onDestroy();
|
super._onDestroy();
|
||||||
|
|
||||||
Main.overview.disconnect(this._showingId);
|
delete this._tree;
|
||||||
Main.overview.disconnect(this._hidingId);
|
|
||||||
appSys.disconnect(this._installedChangedId);
|
|
||||||
this._tree.disconnect(this._treeChangedId);
|
|
||||||
this._tree = null;
|
|
||||||
|
|
||||||
Main.wm.removeKeybinding('apps-menu-toggle-menu');
|
Main.wm.removeKeybinding('apps-menu-toggle-menu');
|
||||||
|
|
||||||
@@ -509,7 +501,7 @@ class ApplicationsButton extends PanelMenu.Button {
|
|||||||
}
|
}
|
||||||
let app = appSys.lookup_app(id);
|
let app = appSys.lookup_app(id);
|
||||||
if (!app)
|
if (!app)
|
||||||
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) {
|
||||||
@@ -555,8 +547,8 @@ class ApplicationsButton extends PanelMenu.Button {
|
|||||||
_createLayout() {
|
_createLayout() {
|
||||||
let section = new PopupMenu.PopupMenuSection();
|
let section = new PopupMenu.PopupMenuSection();
|
||||||
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({
|
this.applicationsScrollBox = new St.ScrollView({
|
||||||
style_class: 'apps-menu vfade',
|
style_class: 'apps-menu vfade',
|
||||||
x_expand: true,
|
x_expand: true,
|
||||||
@@ -578,9 +570,9 @@ class ApplicationsButton extends PanelMenu.Button {
|
|||||||
vscroll.connect('scroll-stop', () => (this.menu.passEvents = false));
|
vscroll.connect('scroll-stop', () => (this.menu.passEvents = false));
|
||||||
this.leftBox.add_child(this.categoriesScrollBox);
|
this.leftBox.add_child(this.categoriesScrollBox);
|
||||||
|
|
||||||
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);
|
||||||
this.categoriesBox = new St.BoxLayout({ vertical: true });
|
this.categoriesBox = new St.BoxLayout({vertical: true});
|
||||||
this.categoriesScrollBox.add_actor(this.categoriesBox);
|
this.categoriesScrollBox.add_actor(this.categoriesBox);
|
||||||
|
|
||||||
this.mainBox.add(this.leftBox);
|
this.mainBox.add(this.leftBox);
|
||||||
@@ -676,22 +668,17 @@ class ApplicationsButton extends PanelMenu.Button {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
let appsMenuButton;
|
export default class AppsMenuExtension extends Extension {
|
||||||
|
enable() {
|
||||||
|
this._appsMenuButton = new ApplicationsButton();
|
||||||
|
const index = Main.sessionMode.panel.left.indexOf('activities') + 1;
|
||||||
|
Main.panel.addToStatusArea(
|
||||||
|
'apps-menu', this._appsMenuButton, index, 'left');
|
||||||
|
}
|
||||||
|
|
||||||
/** */
|
disable() {
|
||||||
function enable() {
|
Main.panel.menuManager.removeMenu(this._appsMenuButton.menu);
|
||||||
appsMenuButton = new ApplicationsButton();
|
this._appsMenuButton.destroy();
|
||||||
let index = Main.sessionMode.panel.left.indexOf('activities') + 1;
|
delete this._appsMenuButton;
|
||||||
Main.panel.addToStatusArea('apps-menu', appsMenuButton, index, 'left');
|
}
|
||||||
}
|
|
||||||
|
|
||||||
/** */
|
|
||||||
function disable() {
|
|
||||||
Main.panel.menuManager.removeMenu(appsMenuButton.menu);
|
|
||||||
appsMenuButton.destroy();
|
|
||||||
}
|
|
||||||
|
|
||||||
/** */
|
|
||||||
function init() {
|
|
||||||
ExtensionUtils.initTranslations();
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,22 +1,20 @@
|
|||||||
// -*- 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;
|
import Shell from 'gi://Shell';
|
||||||
|
|
||||||
const ExtensionUtils = imports.misc.extensionUtils;
|
import {Extension} from 'resource:///org/gnome/shell/extensions/extension.js';
|
||||||
const Main = imports.ui.main;
|
import * as Main from 'resource:///org/gnome/shell/ui/main.js';
|
||||||
|
|
||||||
class WindowMover {
|
class WindowMover {
|
||||||
constructor() {
|
constructor(settings) {
|
||||||
this._settings = ExtensionUtils.getSettings();
|
this._settings = settings;
|
||||||
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._appSystem.connectObject('installed-changed',
|
||||||
this._appSystem.connect('installed-changed',
|
() => this._updateAppData(), 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();
|
||||||
@@ -38,7 +36,7 @@ class WindowMover {
|
|||||||
let removedApps = [...this._appData.keys()]
|
let removedApps = [...this._appData.keys()]
|
||||||
.filter(a => !ids.includes(a.id));
|
.filter(a => !ids.includes(a.id));
|
||||||
removedApps.forEach(app => {
|
removedApps.forEach(app => {
|
||||||
app.disconnect(this._appData.get(app).windowsChangedId);
|
app.disconnectObject(this);
|
||||||
this._appData.delete(app);
|
this._appData.delete(app);
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -46,21 +44,14 @@ class WindowMover {
|
|||||||
.map(id => this._appSystem.lookup_app(id))
|
.map(id => this._appSystem.lookup_app(id))
|
||||||
.filter(app => app && !this._appData.has(app));
|
.filter(app => app && !this._appData.has(app));
|
||||||
addedApps.forEach(app => {
|
addedApps.forEach(app => {
|
||||||
let data = {
|
app.connectObject('window-changed',
|
||||||
windowsChangedId: app.connect('windows-changed',
|
this._appWindowsChanged.bind(this), this);
|
||||||
this._appWindowsChanged.bind(this)),
|
this._appData.set(app, {windows: app.get_windows()});
|
||||||
moveWindowsId: 0,
|
|
||||||
windows: app.get_windows(),
|
|
||||||
};
|
|
||||||
this._appData.set(app, data);
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
destroy() {
|
destroy() {
|
||||||
if (this._appsChangedId) {
|
this._appSystem.disconnectObject(this);
|
||||||
this._appSystem.disconnect(this._appsChangedId);
|
|
||||||
this._appsChangedId = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (this._settings) {
|
if (this._settings) {
|
||||||
this._settings.run_dispose();
|
this._settings.run_dispose();
|
||||||
@@ -105,47 +96,41 @@ class WindowMover {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
let prevCheckWorkspaces;
|
export default class AutoMoveExtension extends Extension {
|
||||||
let winMover;
|
enable() {
|
||||||
|
this._prevCheckWorkspaces = Main.wm._workspaceTracker._checkWorkspaces;
|
||||||
/** */
|
Main.wm._workspaceTracker._checkWorkspaces =
|
||||||
function init() {
|
this._getCheckWorkspaceOverride(this._prevCheckWorkspaces);
|
||||||
ExtensionUtils.initTranslations();
|
this._windowMover = new WindowMover(this.getSettings());
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @returns {bool} - false (used as MetaLater handler)
|
|
||||||
*/
|
|
||||||
function myCheckWorkspaces() {
|
|
||||||
let keepAliveWorkspaces = [];
|
|
||||||
let foundNonEmpty = false;
|
|
||||||
for (let i = this._workspaces.length - 1; i >= 0; i--) {
|
|
||||||
if (!foundNonEmpty) {
|
|
||||||
foundNonEmpty = this._workspaces[i].list_windows().some(
|
|
||||||
w => !w.is_on_all_workspaces());
|
|
||||||
} else if (!this._workspaces[i]._keepAliveId) {
|
|
||||||
keepAliveWorkspaces.push(this._workspaces[i]);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// make sure the original method only removes empty workspaces at the end
|
disable() {
|
||||||
keepAliveWorkspaces.forEach(ws => (ws._keepAliveId = 1));
|
Main.wm._workspaceTracker._checkWorkspaces = this._prevCheckWorkspaces;
|
||||||
prevCheckWorkspaces.call(this);
|
this._windowMover.destroy();
|
||||||
keepAliveWorkspaces.forEach(ws => delete ws._keepAliveId);
|
delete this._windowMover;
|
||||||
|
}
|
||||||
|
|
||||||
return false;
|
_getCheckWorkspaceOverride(originalMethod) {
|
||||||
}
|
/* eslint-disable no-invalid-this */
|
||||||
|
return function () {
|
||||||
/** */
|
const keepAliveWorkspaces = [];
|
||||||
function enable() {
|
let foundNonEmpty = false;
|
||||||
prevCheckWorkspaces = Main.wm._workspaceTracker._checkWorkspaces;
|
for (let i = this._workspaces.length - 1; i >= 0; i--) {
|
||||||
Main.wm._workspaceTracker._checkWorkspaces = myCheckWorkspaces;
|
if (!foundNonEmpty) {
|
||||||
|
foundNonEmpty = this._workspaces[i].list_windows().some(
|
||||||
winMover = new WindowMover();
|
w => !w.is_on_all_workspaces());
|
||||||
}
|
} else if (!this._workspaces[i]._keepAliveId) {
|
||||||
|
keepAliveWorkspaces.push(this._workspaces[i]);
|
||||||
/** */
|
}
|
||||||
function disable() {
|
}
|
||||||
Main.wm._workspaceTracker._checkWorkspaces = prevCheckWorkspaces;
|
|
||||||
winMover.destroy();
|
// make sure the original method only removes empty workspaces at the end
|
||||||
|
keepAliveWorkspaces.forEach(ws => (ws._keepAliveId = 1));
|
||||||
|
originalMethod.call(this);
|
||||||
|
keepAliveWorkspaces.forEach(ws => delete ws._keepAliveId);
|
||||||
|
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
/* eslint-enable no-invalid-this */
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,12 +1,13 @@
|
|||||||
// -*- 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 { Adw, Gio, GLib, GObject, Gtk } = imports.gi;
|
import Adw from 'gi://Adw';
|
||||||
|
import Gio from 'gi://Gio';
|
||||||
|
import GLib from 'gi://GLib';
|
||||||
|
import GObject from 'gi://GObject';
|
||||||
|
import Gtk from 'gi://Gtk';
|
||||||
|
|
||||||
const ExtensionUtils = imports.misc.extensionUtils;
|
import {ExtensionPreferences, gettext as _} from 'resource:///org/gnome/Shell/Extensions/js/extensions/prefs.js';
|
||||||
|
|
||||||
const _ = ExtensionUtils.gettext;
|
|
||||||
|
|
||||||
const SETTINGS_KEY = 'application-list';
|
const SETTINGS_KEY = 'application-list';
|
||||||
|
|
||||||
@@ -59,13 +60,14 @@ class RulesList extends GObject.Object {
|
|||||||
GObject.registerClass(this);
|
GObject.registerClass(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
#settings = ExtensionUtils.getSettings();
|
#settings;
|
||||||
#rules = [];
|
#rules = [];
|
||||||
#changedId;
|
#changedId;
|
||||||
|
|
||||||
constructor() {
|
constructor(settings) {
|
||||||
super();
|
super();
|
||||||
|
|
||||||
|
this.#settings = settings;
|
||||||
this.#changedId =
|
this.#changedId =
|
||||||
this.#settings.connect(`changed::${SETTINGS_KEY}`,
|
this.#settings.connect(`changed::${SETTINGS_KEY}`,
|
||||||
() => this.#sync());
|
() => this.#sync());
|
||||||
@@ -75,7 +77,7 @@ class RulesList extends GObject.Object {
|
|||||||
append(appInfo) {
|
append(appInfo) {
|
||||||
const pos = this.#rules.length;
|
const pos = this.#rules.length;
|
||||||
|
|
||||||
this.#rules.push(new Rule({ appInfo }));
|
this.#rules.push(new Rule({appInfo}));
|
||||||
this.#saveRules();
|
this.#saveRules();
|
||||||
|
|
||||||
this.items_changed(pos, 0, 1);
|
this.items_changed(pos, 0, 1);
|
||||||
@@ -97,7 +99,7 @@ class RulesList extends GObject.Object {
|
|||||||
if (pos < 0)
|
if (pos < 0)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
this.#rules[pos].set({ workspace });
|
this.#rules[pos].set({workspace});
|
||||||
this.#saveRules();
|
this.#saveRules();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -116,7 +118,7 @@ class RulesList extends GObject.Object {
|
|||||||
const [id, workspace] = stringRule.split(':');
|
const [id, workspace] = stringRule.split(':');
|
||||||
const appInfo = Gio.DesktopAppInfo.new(id);
|
const appInfo = Gio.DesktopAppInfo.new(id);
|
||||||
if (appInfo)
|
if (appInfo)
|
||||||
this.#rules.push(new Rule({ appInfo, workspace }));
|
this.#rules.push(new Rule({appInfo, workspace}));
|
||||||
else
|
else
|
||||||
log(`Invalid ID ${id}`);
|
log(`Invalid ID ${id}`);
|
||||||
}
|
}
|
||||||
@@ -147,15 +149,16 @@ class AutoMoveSettingsWidget extends Adw.PreferencesGroup {
|
|||||||
(self, name, param) => self._rules.changeWorkspace(...param.deepUnpack()));
|
(self, name, param) => self._rules.changeWorkspace(...param.deepUnpack()));
|
||||||
}
|
}
|
||||||
|
|
||||||
constructor() {
|
constructor(settings) {
|
||||||
super({
|
super({
|
||||||
title: _('Workspace Rules'),
|
title: _('Workspace Rules'),
|
||||||
});
|
});
|
||||||
|
|
||||||
this._rules = new RulesList();
|
this._settings = settings;
|
||||||
|
this._rules = new RulesList(this._settings);
|
||||||
|
|
||||||
const store = new Gio.ListStore({ item_type: Gio.ListModel });
|
const store = new Gio.ListStore({item_type: Gio.ListModel});
|
||||||
const listModel = new Gtk.FlattenListModel({ model: store });
|
const listModel = new Gtk.FlattenListModel({model: store});
|
||||||
store.append(this._rules);
|
store.append(this._rules);
|
||||||
store.append(new NewItemModel());
|
store.append(new NewItemModel());
|
||||||
|
|
||||||
@@ -173,7 +176,7 @@ class AutoMoveSettingsWidget extends Adw.PreferencesGroup {
|
|||||||
}
|
}
|
||||||
|
|
||||||
_addNewRule() {
|
_addNewRule() {
|
||||||
const dialog = new NewRuleDialog(this.get_root());
|
const dialog = new NewRuleDialog(this.get_root(), this._settings);
|
||||||
dialog.connect('response', (dlg, id) => {
|
dialog.connect('response', (dlg, id) => {
|
||||||
const appInfo = id === Gtk.ResponseType.OK
|
const appInfo = id === Gtk.ResponseType.OK
|
||||||
? dialog.get_widget().get_app_info() : null;
|
? dialog.get_widget().get_app_info() : null;
|
||||||
@@ -248,7 +251,7 @@ class RuleRow extends Adw.ActionRow {
|
|||||||
}
|
}
|
||||||
|
|
||||||
constructor(rule) {
|
constructor(rule) {
|
||||||
const { appInfo } = rule;
|
const {appInfo} = rule;
|
||||||
const id = appInfo.get_id();
|
const id = appInfo.get_id();
|
||||||
|
|
||||||
super({
|
super({
|
||||||
@@ -312,13 +315,13 @@ class NewRuleDialog extends Gtk.AppChooserDialog {
|
|||||||
GObject.registerClass(this);
|
GObject.registerClass(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
constructor(parent) {
|
constructor(parent, settings) {
|
||||||
super({
|
super({
|
||||||
transient_for: parent,
|
transient_for: parent,
|
||||||
modal: true,
|
modal: true,
|
||||||
});
|
});
|
||||||
|
|
||||||
this._settings = ExtensionUtils.getSettings();
|
this._settings = settings;
|
||||||
|
|
||||||
this.get_widget().set({
|
this.get_widget().set({
|
||||||
show_all: true,
|
show_all: true,
|
||||||
@@ -338,14 +341,8 @@ class NewRuleDialog extends Gtk.AppChooserDialog {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/** */
|
export default class AutoMovePrefs extends ExtensionPreferences {
|
||||||
function init() {
|
getPreferencesWidget() {
|
||||||
ExtensionUtils.initTranslations();
|
return new AutoMoveSettingsWidget(this.getSettings());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @returns {Gtk.Widget} - the prefs widget
|
|
||||||
*/
|
|
||||||
function buildPrefsWidget() {
|
|
||||||
return new AutoMoveSettingsWidget();
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,14 +1,16 @@
|
|||||||
/* exported init enable disable */
|
|
||||||
// Drive menu extension
|
// Drive menu extension
|
||||||
const { Clutter, Gio, GObject, Shell, St } = imports.gi;
|
import Clutter from 'gi://Clutter';
|
||||||
|
import Gio from 'gi://Gio';
|
||||||
|
import GObject from 'gi://GObject';
|
||||||
|
import Shell from 'gi://Shell';
|
||||||
|
import St from 'gi://St';
|
||||||
|
|
||||||
const ExtensionUtils = imports.misc.extensionUtils;
|
import {Extension, gettext as _} from 'resource:///org/gnome/shell/extensions/extension.js';
|
||||||
const Main = imports.ui.main;
|
|
||||||
const PanelMenu = imports.ui.panelMenu;
|
|
||||||
const PopupMenu = imports.ui.popupMenu;
|
|
||||||
const ShellMountOperation = imports.ui.shellMountOperation;
|
|
||||||
|
|
||||||
const _ = ExtensionUtils.gettext;
|
import * as Main from 'resource:///org/gnome/shell/ui/main.js';
|
||||||
|
import * as PanelMenu from 'resource:///org/gnome/shell/ui/panelMenu.js';
|
||||||
|
import * as PopupMenu from 'resource:///org/gnome/shell/ui/popupMenu.js';
|
||||||
|
import * as ShellMountOperation from 'resource:///org/gnome/shell/ui/shellMountOperation.js';
|
||||||
|
|
||||||
Gio._promisify(Gio.File.prototype, 'query_filesystem_info_async');
|
Gio._promisify(Gio.File.prototype, 'query_filesystem_info_async');
|
||||||
|
|
||||||
@@ -47,19 +49,11 @@ class MountMenuItem extends PopupMenu.PopupBaseMenuItem {
|
|||||||
|
|
||||||
this.hide();
|
this.hide();
|
||||||
|
|
||||||
this._changedId = mount.connect('changed', this._syncVisibility.bind(this));
|
mount.connectObject('changed',
|
||||||
|
() => this._syncVisibility(), this);
|
||||||
this._syncVisibility();
|
this._syncVisibility();
|
||||||
}
|
}
|
||||||
|
|
||||||
_onDestroy() {
|
|
||||||
if (this._changedId) {
|
|
||||||
this.mount.disconnect(this._changedId);
|
|
||||||
this._changedId = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
super.destroy();
|
|
||||||
}
|
|
||||||
|
|
||||||
async _isInteresting() {
|
async _isInteresting() {
|
||||||
if (!this.mount.can_eject() && !this.mount.can_unmount())
|
if (!this.mount.can_eject() && !this.mount.can_unmount())
|
||||||
return false;
|
return false;
|
||||||
@@ -142,7 +136,7 @@ class DriveMenu extends PanelMenu.Button {
|
|||||||
}
|
}
|
||||||
|
|
||||||
constructor() {
|
constructor() {
|
||||||
super(0.0, _('Removable devices'));
|
super(0.5, _('Removable devices'));
|
||||||
|
|
||||||
let icon = new St.Icon({
|
let icon = new St.Icon({
|
||||||
icon_name: 'media-eject-symbolic',
|
icon_name: 'media-eject-symbolic',
|
||||||
@@ -152,12 +146,12 @@ class DriveMenu extends PanelMenu.Button {
|
|||||||
this.add_child(icon);
|
this.add_child(icon);
|
||||||
|
|
||||||
this._monitor = Gio.VolumeMonitor.get();
|
this._monitor = Gio.VolumeMonitor.get();
|
||||||
this._addedId = this._monitor.connect('mount-added',
|
this._monitor.connectObject(
|
||||||
(monitor, mount) => this._addMount(mount));
|
'mount-added', (monitor, mount) => this._addMount(mount),
|
||||||
this._removedId = this._monitor.connect('mount-removed', (monitor, mount) => {
|
'mount-removed', (monitor, mount) => {
|
||||||
this._removeMount(mount);
|
this._removeMount(mount);
|
||||||
this._updateMenuVisibility();
|
this._updateMenuVisibility();
|
||||||
});
|
}, this);
|
||||||
|
|
||||||
this._mounts = [];
|
this._mounts = [];
|
||||||
|
|
||||||
@@ -199,33 +193,16 @@ class DriveMenu extends PanelMenu.Button {
|
|||||||
}
|
}
|
||||||
log('Removing a mount that was never added to the menu');
|
log('Removing a mount that was never added to the menu');
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
_onDestroy() {
|
export default class PlaceMenuExtension extends Extension {
|
||||||
if (this._addedId) {
|
enable() {
|
||||||
this._monitor.disconnect(this._addedId);
|
this._indicator = new DriveMenu();
|
||||||
this._monitor.disconnect(this._removedId);
|
Main.panel.addToStatusArea('drive-menu', this._indicator);
|
||||||
this._addedId = 0;
|
}
|
||||||
this._removedId = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
super._onDestroy();
|
disable() {
|
||||||
|
this._indicator.destroy();
|
||||||
|
delete this._indicator;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/** */
|
|
||||||
function init() {
|
|
||||||
ExtensionUtils.initTranslations();
|
|
||||||
}
|
|
||||||
|
|
||||||
let _indicator;
|
|
||||||
|
|
||||||
/** */
|
|
||||||
function enable() {
|
|
||||||
_indicator = new DriveMenu();
|
|
||||||
Main.panel.addToStatusArea('drive-menu', _indicator);
|
|
||||||
}
|
|
||||||
|
|
||||||
/** */
|
|
||||||
function disable() {
|
|
||||||
_indicator.destroy();
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -1,17 +1,22 @@
|
|||||||
/* exported enable disable */
|
import {AppIcon} from 'resource:///org/gnome/shell/ui/appDisplay.js';
|
||||||
const AppDisplay = imports.ui.appDisplay;
|
import {InjectionManager} from 'resource:///org/gnome/shell/extensions/extension.js';
|
||||||
|
|
||||||
let _activateOriginal = null;
|
export default class Extension {
|
||||||
|
constructor() {
|
||||||
|
this._injectionManager = new InjectionManager();
|
||||||
|
}
|
||||||
|
|
||||||
/** */
|
enable() {
|
||||||
function enable() {
|
this._injectionManager.overrideMethod(AppIcon.prototype, 'activate',
|
||||||
_activateOriginal = AppDisplay.AppIcon.prototype.activate;
|
originalMethod => {
|
||||||
AppDisplay.AppIcon.prototype.activate = function () {
|
return function () {
|
||||||
_activateOriginal.call(this, 2);
|
// eslint-disable-next-line no-invalid-this
|
||||||
};
|
originalMethod.call(this, 2);
|
||||||
}
|
};
|
||||||
|
});
|
||||||
/** */
|
}
|
||||||
function disable() {
|
|
||||||
AppDisplay.AppIcon.prototype.activate = _activateOriginal;
|
disable() {
|
||||||
|
this._injectionManager.clear();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
36
extensions/light-style/extension.js
Normal file
36
extensions/light-style/extension.js
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
/*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*
|
||||||
|
* SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
*/
|
||||||
|
|
||||||
|
import St from 'gi://St';
|
||||||
|
|
||||||
|
import * as Main from 'resource:///org/gnome/shell/ui/main.js';
|
||||||
|
|
||||||
|
export default class Extension {
|
||||||
|
_updateColorScheme(scheme) {
|
||||||
|
Main.sessionMode.colorScheme = scheme;
|
||||||
|
St.Settings.get().notify('color-scheme');
|
||||||
|
}
|
||||||
|
|
||||||
|
enable() {
|
||||||
|
this._savedColorScheme = Main.sessionMode.colorScheme;
|
||||||
|
this._updateColorScheme('prefer-light');
|
||||||
|
}
|
||||||
|
|
||||||
|
disable() {
|
||||||
|
this._updateColorScheme(this._savedColorScheme);
|
||||||
|
}
|
||||||
|
}
|
||||||
5
extensions/light-style/meson.build
Normal file
5
extensions/light-style/meson.build
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
extension_data += configure_file(
|
||||||
|
input: metadata_name + '.in',
|
||||||
|
output: metadata_name,
|
||||||
|
configuration: metadata_conf
|
||||||
|
)
|
||||||
10
extensions/light-style/metadata.json.in
Normal file
10
extensions/light-style/metadata.json.in
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
{
|
||||||
|
"extension-id": "@extension_id@",
|
||||||
|
"uuid": "@uuid@",
|
||||||
|
"settings-schema": "@gschemaname@",
|
||||||
|
"gettext-domain": "@gettext_domain@",
|
||||||
|
"name": "Light Style",
|
||||||
|
"description": "Switch default to light style",
|
||||||
|
"shell-version": [ "@shell_current@" ],
|
||||||
|
"url": "@url@"
|
||||||
|
}
|
||||||
@@ -1,11 +1,11 @@
|
|||||||
// -*- mode: js2; indent-tabs-mode: nil; js2-basic-offset: 4 -*-
|
// -*- mode: js2; indent-tabs-mode: nil; js2-basic-offset: 4 -*-
|
||||||
/* exported enable disable */
|
import Clutter from 'gi://Clutter';
|
||||||
const { Clutter } = imports.gi;
|
|
||||||
|
|
||||||
const ExtensionUtils = imports.misc.extensionUtils;
|
import {Extension, InjectionManager} from 'resource:///org/gnome/shell/extensions/extension.js';
|
||||||
const Main = imports.ui.main;
|
|
||||||
const { WindowPreview } = imports.ui.windowPreview;
|
import * as Main from 'resource:///org/gnome/shell/ui/main.js';
|
||||||
const Workspace = imports.ui.workspace;
|
import {WindowPreview} from 'resource:///org/gnome/shell/ui/windowPreview.js';
|
||||||
|
import * as Workspace from 'resource:///org/gnome/shell/ui/workspace.js';
|
||||||
|
|
||||||
// testing settings for natural window placement strategy:
|
// testing settings for natural window placement strategy:
|
||||||
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)
|
||||||
@@ -236,75 +236,64 @@ class NaturalLayoutStrategy extends Workspace.LayoutStrategy {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
let winInjections, workspaceInjections;
|
export default class NativeWindowPlacementExtension extends Extension {
|
||||||
|
constructor(metadata) {
|
||||||
|
super(metadata);
|
||||||
|
|
||||||
/** */
|
this._injectionManager = new InjectionManager();
|
||||||
function resetState() {
|
}
|
||||||
winInjections = { };
|
|
||||||
workspaceInjections = { };
|
enable() {
|
||||||
}
|
const settings = this.getSettings();
|
||||||
|
|
||||||
/** */
|
const layoutProto = Workspace.WorkspaceLayout.prototype;
|
||||||
function enable() {
|
const previewProto = WindowPreview.prototype;
|
||||||
resetState();
|
|
||||||
|
this._injectionManager.overrideMethod(layoutProto, '_createBestLayout', () => {
|
||||||
let settings = ExtensionUtils.getSettings();
|
/* eslint-disable no-invalid-this */
|
||||||
|
return function () {
|
||||||
workspaceInjections['_createBestLayout'] = Workspace.WorkspaceLayout.prototype._createBestLayout;
|
this._layoutStrategy = new NaturalLayoutStrategy({
|
||||||
Workspace.WorkspaceLayout.prototype._createBestLayout = function (_area) {
|
monitor: Main.layoutManager.monitors[this._monitorIndex],
|
||||||
this._layoutStrategy = new NaturalLayoutStrategy({
|
}, settings);
|
||||||
monitor: Main.layoutManager.monitors[this._monitorIndex],
|
return this._layoutStrategy.computeLayout(this._sortedWindows);
|
||||||
}, settings);
|
};
|
||||||
return this._layoutStrategy.computeLayout(this._sortedWindows);
|
/* eslint-enable no-invalid-this */
|
||||||
};
|
});
|
||||||
|
|
||||||
// position window titles on top of windows in overlay
|
// position window titles on top of windows in overlay
|
||||||
winInjections['_init'] = WindowPreview.prototype._init;
|
this._injectionManager.overrideMethod(previewProto, '_init', originalMethod => {
|
||||||
WindowPreview.prototype._init = function (...args) {
|
/* eslint-disable no-invalid-this */
|
||||||
winInjections['_init'].call(this, ...args);
|
return function (...args) {
|
||||||
|
originalMethod.call(this, ...args);
|
||||||
if (!settings.get_boolean('window-captions-on-top'))
|
|
||||||
return;
|
if (!settings.get_boolean('window-captions-on-top'))
|
||||||
|
return;
|
||||||
const alignConstraint = this._title.get_constraints().find(
|
|
||||||
c => c.align_axis && c.align_axis === Clutter.AlignAxis.Y_AXIS);
|
const alignConstraint = this._title.get_constraints().find(
|
||||||
alignConstraint.factor = 0;
|
c => c.align_axis && c.align_axis === Clutter.AlignAxis.Y_AXIS);
|
||||||
|
alignConstraint.factor = 0;
|
||||||
const bindConstraint = this._title.get_constraints().find(
|
|
||||||
c => c.coordinate && c.coordinate === Clutter.BindCoordinate.Y);
|
const bindConstraint = this._title.get_constraints().find(
|
||||||
bindConstraint.offset = 0;
|
c => c.coordinate && c.coordinate === Clutter.BindCoordinate.Y);
|
||||||
};
|
bindConstraint.offset = 0;
|
||||||
winInjections['_adjustOverlayOffsets'] =
|
};
|
||||||
WindowPreview.prototype._adjustOverlayOffsets;
|
/* eslint-enable no-invalid-this */
|
||||||
WindowPreview.prototype._adjustOverlayOffsets = function (...args) {
|
});
|
||||||
winInjections['_adjustOverlayOffsets'].call(this, ...args);
|
|
||||||
|
this._injectionManager.overrideMethod(previewProto, '_adjustOverlayOffsets', originalMethod => {
|
||||||
if (settings.get_boolean('window-captions-on-top'))
|
/* eslint-disable no-invalid-this */
|
||||||
this._title.translation_y = -this._title.translation_y;
|
return function (...args) {
|
||||||
};
|
originalMethod.call(this, ...args);
|
||||||
}
|
|
||||||
|
if (settings.get_boolean('window-captions-on-top'))
|
||||||
/**
|
this._title.translation_y = -this._title.translation_y;
|
||||||
* @param {object} object - object that was modified
|
};
|
||||||
* @param {object} injection - the map of previous injections
|
/* eslint-enable no-invalid-this */
|
||||||
* @param {string} name - the @injection key that should be removed
|
});
|
||||||
*/
|
}
|
||||||
function removeInjection(object, injection, name) {
|
|
||||||
if (injection[name] === undefined)
|
disable() {
|
||||||
delete object[name];
|
this._injectionManager.clear();
|
||||||
else
|
global.stage.queue_relayout();
|
||||||
object[name] = injection[name];
|
}
|
||||||
}
|
|
||||||
|
|
||||||
/** */
|
|
||||||
function disable() {
|
|
||||||
var i;
|
|
||||||
|
|
||||||
for (i in workspaceInjections)
|
|
||||||
removeInjection(Workspace.WorkspaceLayout.prototype, workspaceInjections, i);
|
|
||||||
for (i in winInjections)
|
|
||||||
removeInjection(WindowPreview.prototype, winInjections, i);
|
|
||||||
|
|
||||||
global.stage.queue_relayout();
|
|
||||||
resetState();
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,17 +1,16 @@
|
|||||||
/* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */
|
/* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */
|
||||||
/* exported init enable disable */
|
import Clutter from 'gi://Clutter';
|
||||||
|
import GObject from 'gi://GObject';
|
||||||
|
import St from 'gi://St';
|
||||||
|
|
||||||
const { Clutter, GObject, St } = imports.gi;
|
import {Extension, gettext as _} from 'resource:///org/gnome/shell/extensions/extension.js';
|
||||||
|
|
||||||
const ExtensionUtils = imports.misc.extensionUtils;
|
import * as Main from 'resource:///org/gnome/shell/ui/main.js';
|
||||||
const Main = imports.ui.main;
|
import * as PanelMenu from 'resource:///org/gnome/shell/ui/panelMenu.js';
|
||||||
const PanelMenu = imports.ui.panelMenu;
|
import * as PopupMenu from 'resource:///org/gnome/shell/ui/popupMenu.js';
|
||||||
const PopupMenu = imports.ui.popupMenu;
|
|
||||||
|
|
||||||
const Me = ExtensionUtils.getCurrentExtension();
|
import {PlacesManager} from './placeDisplay.js';
|
||||||
const PlaceDisplay = Me.imports.placeDisplay;
|
|
||||||
|
|
||||||
const _ = ExtensionUtils.gettext;
|
|
||||||
const N_ = x => x;
|
const N_ = x => x;
|
||||||
|
|
||||||
const PLACE_ICON_SIZE = 16;
|
const PLACE_ICON_SIZE = 16;
|
||||||
@@ -53,17 +52,8 @@ class PlaceMenuItem extends PopupMenu.PopupBaseMenuItem {
|
|||||||
this.add_child(this._ejectButton);
|
this.add_child(this._ejectButton);
|
||||||
}
|
}
|
||||||
|
|
||||||
this._changedId = info.connect('changed',
|
info.connectObject('changed',
|
||||||
this._propertiesChanged.bind(this));
|
this._propertiesChanged.bind(this), this);
|
||||||
}
|
|
||||||
|
|
||||||
destroy() {
|
|
||||||
if (this._changedId) {
|
|
||||||
this._info.disconnect(this._changedId);
|
|
||||||
this._changedId = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
super.destroy();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
activate(event) {
|
activate(event) {
|
||||||
@@ -91,7 +81,7 @@ class PlacesMenu extends PanelMenu.Button {
|
|||||||
}
|
}
|
||||||
|
|
||||||
constructor() {
|
constructor() {
|
||||||
super(0.0, _('Places'));
|
super(0.5, _('Places'));
|
||||||
|
|
||||||
let label = new St.Label({
|
let label = new St.Label({
|
||||||
text: _('Places'),
|
text: _('Places'),
|
||||||
@@ -100,7 +90,7 @@ class PlacesMenu extends PanelMenu.Button {
|
|||||||
});
|
});
|
||||||
this.add_actor(label);
|
this.add_actor(label);
|
||||||
|
|
||||||
this.placesManager = new PlaceDisplay.PlacesManager();
|
this.placesManager = new PlacesManager();
|
||||||
|
|
||||||
this._sections = { };
|
this._sections = { };
|
||||||
|
|
||||||
@@ -138,24 +128,18 @@ class PlacesMenu extends PanelMenu.Button {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/** */
|
export default class PlacesMenuExtension extends Extension {
|
||||||
function init() {
|
enable() {
|
||||||
ExtensionUtils.initTranslations();
|
this._indicator = new PlacesMenu();
|
||||||
}
|
|
||||||
|
let pos = Main.sessionMode.panel.left.length;
|
||||||
let _indicator;
|
if ('apps-menu' in Main.panel.statusArea)
|
||||||
|
pos++;
|
||||||
/** */
|
Main.panel.addToStatusArea('places-menu', this._indicator, pos, 'left');
|
||||||
function enable() {
|
}
|
||||||
_indicator = new PlacesMenu();
|
|
||||||
|
disable() {
|
||||||
let pos = Main.sessionMode.panel.left.indexOf('appMenu');
|
this._indicator.destroy();
|
||||||
if ('apps-menu' in Main.panel.statusArea)
|
delete this._indicator;
|
||||||
pos++;
|
}
|
||||||
Main.panel.addToStatusArea('places-menu', _indicator, pos, 'left');
|
|
||||||
}
|
|
||||||
|
|
||||||
/** */
|
|
||||||
function disable() {
|
|
||||||
_indicator.destroy();
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,13 +1,14 @@
|
|||||||
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
|
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
|
||||||
|
import Gio from 'gi://Gio';
|
||||||
|
import GLib from 'gi://GLib';
|
||||||
|
import Shell from 'gi://Shell';
|
||||||
|
import {EventEmitter} from 'resource:///org/gnome/shell/misc/signals.js';
|
||||||
|
|
||||||
const { Gio, GLib, Shell } = imports.gi;
|
import {gettext as _} from 'resource:///org/gnome/shell/extensions/extension.js';
|
||||||
const Signals = imports.signals;
|
|
||||||
|
|
||||||
const ExtensionUtils = imports.misc.extensionUtils;
|
import * as Main from 'resource:///org/gnome/shell/ui/main.js';
|
||||||
const Main = imports.ui.main;
|
import * as ShellMountOperation from 'resource:///org/gnome/shell/ui/shellMountOperation.js';
|
||||||
const ShellMountOperation = imports.ui.shellMountOperation;
|
|
||||||
|
|
||||||
const _ = ExtensionUtils.gettext;
|
|
||||||
const N_ = x => x;
|
const N_ = x => x;
|
||||||
|
|
||||||
Gio._promisify(Gio.AppInfo, 'launch_default_for_uri_async');
|
Gio._promisify(Gio.AppInfo, 'launch_default_for_uri_async');
|
||||||
@@ -22,8 +23,10 @@ const Hostname1Iface = '<node> \
|
|||||||
</node>';
|
</node>';
|
||||||
const Hostname1 = Gio.DBusProxy.makeProxyWrapper(Hostname1Iface);
|
const Hostname1 = Gio.DBusProxy.makeProxyWrapper(Hostname1Iface);
|
||||||
|
|
||||||
class PlaceInfo {
|
class PlaceInfo extends EventEmitter {
|
||||||
constructor(...params) {
|
constructor(...params) {
|
||||||
|
super();
|
||||||
|
|
||||||
this._init(...params);
|
this._init(...params);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -31,7 +34,7 @@ class PlaceInfo {
|
|||||||
this.kind = kind;
|
this.kind = kind;
|
||||||
this.file = file;
|
this.file = file;
|
||||||
this.name = name || this._getFileName();
|
this.name = name || this._getFileName();
|
||||||
this.icon = icon ? new Gio.ThemedIcon({ name: icon }) : this.getIcon();
|
this.icon = icon ? new Gio.ThemedIcon({name: icon}) : this.getIcon();
|
||||||
}
|
}
|
||||||
|
|
||||||
destroy() {
|
destroy() {
|
||||||
@@ -94,16 +97,16 @@ class PlaceInfo {
|
|||||||
// icon from the query info above
|
// icon from the query info above
|
||||||
switch (this.kind) {
|
switch (this.kind) {
|
||||||
case 'network':
|
case 'network':
|
||||||
return new Gio.ThemedIcon({ name: 'folder-remote-symbolic' });
|
return new Gio.ThemedIcon({name: 'folder-remote-symbolic'});
|
||||||
case 'devices':
|
case 'devices':
|
||||||
return new Gio.ThemedIcon({ name: 'drive-harddisk-symbolic' });
|
return new Gio.ThemedIcon({name: 'drive-harddisk-symbolic'});
|
||||||
case 'special':
|
case 'special':
|
||||||
case 'bookmarks':
|
case 'bookmarks':
|
||||||
default:
|
default:
|
||||||
if (!this.file.is_native())
|
if (!this.file.is_native())
|
||||||
return new Gio.ThemedIcon({ name: 'folder-remote-symbolic' });
|
return new Gio.ThemedIcon({name: 'folder-remote-symbolic'});
|
||||||
else
|
else
|
||||||
return new Gio.ThemedIcon({ name: 'folder-symbolic' });
|
return new Gio.ThemedIcon({name: 'folder-symbolic'});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -118,7 +121,6 @@ class PlaceInfo {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Signals.addSignalMethods(PlaceInfo.prototype);
|
|
||||||
|
|
||||||
class RootInfo extends PlaceInfo {
|
class RootInfo extends PlaceInfo {
|
||||||
_init() {
|
_init() {
|
||||||
@@ -138,7 +140,7 @@ class RootInfo extends PlaceInfo {
|
|||||||
}
|
}
|
||||||
|
|
||||||
getIcon() {
|
getIcon() {
|
||||||
return new Gio.ThemedIcon({ name: 'drive-harddisk-symbolic' });
|
return new Gio.ThemedIcon({name: 'drive-harddisk-symbolic'});
|
||||||
}
|
}
|
||||||
|
|
||||||
_propertiesChanged(proxy) {
|
_propertiesChanged(proxy) {
|
||||||
@@ -246,8 +248,10 @@ const DEFAULT_DIRECTORIES = [
|
|||||||
GLib.UserDirectory.DIRECTORY_VIDEOS,
|
GLib.UserDirectory.DIRECTORY_VIDEOS,
|
||||||
];
|
];
|
||||||
|
|
||||||
var PlacesManager = class {
|
export class PlacesManager extends EventEmitter {
|
||||||
constructor() {
|
constructor() {
|
||||||
|
super();
|
||||||
|
|
||||||
this._places = {
|
this._places = {
|
||||||
special: [],
|
special: [],
|
||||||
devices: [],
|
devices: [],
|
||||||
@@ -255,16 +259,26 @@ var PlacesManager = class {
|
|||||||
network: [],
|
network: [],
|
||||||
};
|
};
|
||||||
|
|
||||||
this._settings = new Gio.Settings({ schema_id: BACKGROUND_SCHEMA });
|
this._settings = new Gio.Settings({schema_id: BACKGROUND_SCHEMA});
|
||||||
this._showDesktopIconsChangedId = this._settings.connect(
|
this._settings.connectObject('changed::show-desktop-icons',
|
||||||
'changed::show-desktop-icons', this._updateSpecials.bind(this));
|
() => this._updateSpecials(), this);
|
||||||
this._updateSpecials();
|
this._updateSpecials();
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Show devices, code more or less ported from nautilus-places-sidebar.c
|
* Show devices, code more or less ported from nautilus-places-sidebar.c
|
||||||
*/
|
*/
|
||||||
this._volumeMonitor = Gio.VolumeMonitor.get();
|
this._volumeMonitor = Gio.VolumeMonitor.get();
|
||||||
this._connectVolumeMonitorSignals();
|
this._volumeMonitor.connectObject(
|
||||||
|
'volume-added', () => this._updateMounts(),
|
||||||
|
'volume-removed', () => this._updateMounts(),
|
||||||
|
'volume-changed', () => this._updateMounts(),
|
||||||
|
'mount-added', () => this._updateMounts(),
|
||||||
|
'mount-removed', () => this._updateMounts(),
|
||||||
|
'mount-changed', () => this._updateMounts(),
|
||||||
|
'drive-connected', () => this._updateMounts(),
|
||||||
|
'drive-disconnected', () => this._updateMounts(),
|
||||||
|
'drive-changed', () => this._updateMounts(),
|
||||||
|
this);
|
||||||
this._updateMounts();
|
this._updateMounts();
|
||||||
|
|
||||||
this._bookmarksFile = this._findBookmarksFile();
|
this._bookmarksFile = this._findBookmarksFile();
|
||||||
@@ -289,34 +303,11 @@ var PlacesManager = class {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
_connectVolumeMonitorSignals() {
|
|
||||||
const signals = [
|
|
||||||
'volume-added',
|
|
||||||
'volume-removed',
|
|
||||||
'volume-changed',
|
|
||||||
'mount-added',
|
|
||||||
'mount-removed',
|
|
||||||
'mount-changed',
|
|
||||||
'drive-connected',
|
|
||||||
'drive-disconnected',
|
|
||||||
'drive-changed',
|
|
||||||
];
|
|
||||||
|
|
||||||
this._volumeMonitorSignals = [];
|
|
||||||
let func = this._updateMounts.bind(this);
|
|
||||||
for (let i = 0; i < signals.length; i++) {
|
|
||||||
let id = this._volumeMonitor.connect(signals[i], func);
|
|
||||||
this._volumeMonitorSignals.push(id);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
destroy() {
|
destroy() {
|
||||||
if (this._settings)
|
this._settings?.disconnectObject(this);
|
||||||
this._settings.disconnect(this._showDesktopIconsChangedId);
|
|
||||||
this._settings = null;
|
this._settings = null;
|
||||||
|
|
||||||
for (let i = 0; i < this._volumeMonitorSignals.length; i++)
|
this._volumeMonitor.disconnectObject(this);
|
||||||
this._volumeMonitor.disconnect(this._volumeMonitorSignals[i]);
|
|
||||||
|
|
||||||
if (this._monitor)
|
if (this._monitor)
|
||||||
this._monitor.cancel();
|
this._monitor.cancel();
|
||||||
@@ -542,5 +533,4 @@ var PlacesManager = class {
|
|||||||
get(kind) {
|
get(kind) {
|
||||||
return this._places[kind];
|
return this._places[kind];
|
||||||
}
|
}
|
||||||
};
|
}
|
||||||
Signals.addSignalMethods(PlacesManager.prototype);
|
|
||||||
|
|||||||
@@ -1,4 +1,3 @@
|
|||||||
/* 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>
|
||||||
@@ -19,153 +18,151 @@
|
|||||||
* 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 { Clutter, Meta, Shell, St } = imports.gi;
|
import Clutter from 'gi://Clutter';
|
||||||
|
import Meta from 'gi://Meta';
|
||||||
|
import Shell from 'gi://Shell';
|
||||||
|
import St from 'gi://St';
|
||||||
|
|
||||||
const ExtensionUtils = imports.misc.extensionUtils;
|
import {Extension} from 'resource:///org/gnome/shell/extensions/extension.js';
|
||||||
const Main = imports.ui.main;
|
|
||||||
|
import * as Main from 'resource:///org/gnome/shell/ui/main.js';
|
||||||
|
|
||||||
const MESSAGE_FADE_TIME = 2000;
|
const MESSAGE_FADE_TIME = 2000;
|
||||||
|
|
||||||
let text;
|
export default class ScreenshotWindowSizerExtension extends Extension {
|
||||||
|
SIZES = [
|
||||||
|
[624, 351],
|
||||||
|
[800, 450],
|
||||||
|
[1024, 576],
|
||||||
|
[1200, 675],
|
||||||
|
[1600, 900],
|
||||||
|
[360, 654], // Phone portrait maximized
|
||||||
|
[720, 360], // Phone landscape fullscreen
|
||||||
|
];
|
||||||
|
|
||||||
/** */
|
_flashMessage(message) {
|
||||||
function hideMessage() {
|
if (!this._text) {
|
||||||
text.destroy();
|
this._text = new St.Label({style_class: 'screenshot-sizer-message'});
|
||||||
text = null;
|
Main.uiGroup.add_actor(this._text);
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param {string} message - the message to flash
|
|
||||||
*/
|
|
||||||
function flashMessage(message) {
|
|
||||||
if (!text) {
|
|
||||||
text = new St.Label({ style_class: 'screenshot-sizer-message' });
|
|
||||||
Main.uiGroup.add_actor(text);
|
|
||||||
}
|
|
||||||
|
|
||||||
text.remove_all_transitions();
|
|
||||||
text.text = message;
|
|
||||||
|
|
||||||
text.opacity = 255;
|
|
||||||
|
|
||||||
let monitor = Main.layoutManager.primaryMonitor;
|
|
||||||
text.set_position(
|
|
||||||
monitor.x + Math.floor(monitor.width / 2 - text.width / 2),
|
|
||||||
monitor.y + Math.floor(monitor.height / 2 - text.height / 2));
|
|
||||||
|
|
||||||
text.ease({
|
|
||||||
opacity: 0,
|
|
||||||
duration: MESSAGE_FADE_TIME,
|
|
||||||
mode: Clutter.AnimationMode.EASE_OUT_QUAD,
|
|
||||||
onComplete: hideMessage,
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
let SIZES = [
|
|
||||||
[624, 351],
|
|
||||||
[800, 450],
|
|
||||||
[1024, 576],
|
|
||||||
[1200, 675],
|
|
||||||
[1600, 900],
|
|
||||||
[360, 654], // Phone portrait maximized
|
|
||||||
[720, 360], // Phone landscape fullscreen
|
|
||||||
];
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param {Meta.Display} display - the display
|
|
||||||
* @param {Meta.Window=} window - for per-window bindings, the window
|
|
||||||
* @param {Meta.KeyBinding} binding - the key binding
|
|
||||||
*/
|
|
||||||
function cycleScreenshotSizes(display, window, binding) {
|
|
||||||
// Probably this isn't useful with 5 sizes, but you can decrease instead
|
|
||||||
// of increase by holding down shift.
|
|
||||||
let modifiers = binding.get_modifiers();
|
|
||||||
let backwards = (modifiers & Meta.VirtualModifier.SHIFT_MASK) !== 0;
|
|
||||||
|
|
||||||
// Unmaximize first
|
|
||||||
if (window.get_maximized() !== 0)
|
|
||||||
window.unmaximize(Meta.MaximizeFlags.BOTH);
|
|
||||||
|
|
||||||
let workArea = window.get_work_area_current_monitor();
|
|
||||||
let outerRect = window.get_frame_rect();
|
|
||||||
|
|
||||||
// Double both axes if on a hidpi display
|
|
||||||
let scaleFactor = St.ThemeContext.get_for_stage(global.stage).scale_factor;
|
|
||||||
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
|
|
||||||
let nearestIndex;
|
|
||||||
let nearestError;
|
|
||||||
|
|
||||||
for (let i = 0; i < scaledSizes.length; i++) {
|
|
||||||
let [width, height] = scaledSizes[i];
|
|
||||||
|
|
||||||
// get the best initial window size
|
|
||||||
let error = Math.abs(width - outerRect.width) + Math.abs(height - outerRect.height);
|
|
||||||
if (nearestIndex === undefined || error < nearestError) {
|
|
||||||
nearestIndex = i;
|
|
||||||
nearestError = error;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
this._text.remove_all_transitions();
|
||||||
|
this._text.text = message;
|
||||||
|
|
||||||
|
this._text.opacity = 255;
|
||||||
|
|
||||||
|
const monitor = Main.layoutManager.primaryMonitor;
|
||||||
|
this._text.set_position(
|
||||||
|
monitor.x + Math.floor(monitor.width / 2 - this._text.width / 2),
|
||||||
|
monitor.y + Math.floor(monitor.height / 2 - this._text.height / 2));
|
||||||
|
|
||||||
|
this._text.ease({
|
||||||
|
opacity: 0,
|
||||||
|
duration: MESSAGE_FADE_TIME,
|
||||||
|
mode: Clutter.AnimationMode.EASE_OUT_QUAD,
|
||||||
|
onComplete: () => this._hideMessage(),
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
// get the next size up or down from ideal
|
_hideMessage() {
|
||||||
let newIndex = (nearestIndex + (backwards ? -1 : 1)) % scaledSizes.length;
|
this._text.destroy();
|
||||||
let [newWidth, newHeight] = scaledSizes[newIndex];
|
delete this._text;
|
||||||
|
}
|
||||||
|
|
||||||
// Push the window onscreen if it would be resized offscreen
|
/**
|
||||||
let newX = outerRect.x;
|
* @param {Meta.Display} display - the display
|
||||||
let newY = outerRect.y;
|
* @param {Meta.Window=} window - for per-window bindings, the window
|
||||||
if (newX + newWidth > workArea.x + workArea.width)
|
* @param {Meta.KeyBinding} binding - the key binding
|
||||||
newX = Math.max(workArea.x + workArea.width - newWidth);
|
*/
|
||||||
if (newY + newHeight > workArea.y + workArea.height)
|
_cycleScreenshotSizes(display, window, binding) {
|
||||||
newY = Math.max(workArea.y + workArea.height - newHeight);
|
// Probably this isn't useful with 5 sizes, but you can decrease instead
|
||||||
|
// of increase by holding down shift.
|
||||||
|
let modifiers = binding.get_modifiers();
|
||||||
|
let backwards = (modifiers & Meta.VirtualModifier.SHIFT_MASK) !== 0;
|
||||||
|
|
||||||
const id = window.connect('size-changed', () => {
|
// Unmaximize first
|
||||||
window.disconnect(id);
|
if (window.get_maximized() !== 0)
|
||||||
_notifySizeChange(window);
|
window.unmaximize(Meta.MaximizeFlags.BOTH);
|
||||||
});
|
|
||||||
window.move_resize_frame(true, newX, newY, newWidth, newHeight);
|
let workArea = window.get_work_area_current_monitor();
|
||||||
}
|
let outerRect = window.get_frame_rect();
|
||||||
|
|
||||||
/**
|
// Double both axes if on a hidpi display
|
||||||
* @param {Meta.Window} window - the window whose size changed
|
let scaleFactor = St.ThemeContext.get_for_stage(global.stage).scale_factor;
|
||||||
*/
|
let scaledSizes = this.SIZES.map(size => size.map(wh => wh * scaleFactor))
|
||||||
function _notifySizeChange(window) {
|
.filter(([w, h]) => w <= workArea.width && h <= workArea.height);
|
||||||
const { scaleFactor } = St.ThemeContext.get_for_stage(global.stage);
|
|
||||||
let newOuterRect = window.get_frame_rect();
|
// Find the nearest 16:9 size for the current window size
|
||||||
let message = '%d×%d'.format(
|
let nearestIndex;
|
||||||
newOuterRect.width / scaleFactor,
|
let nearestError;
|
||||||
newOuterRect.height / scaleFactor);
|
|
||||||
|
for (let i = 0; i < scaledSizes.length; i++) {
|
||||||
// The new size might have been constrained by geometry hints (e.g. for
|
let [width, height] = scaledSizes[i];
|
||||||
// a terminal) - in that case, include the actual ratio to the message
|
|
||||||
// we flash
|
// get the best initial window size
|
||||||
let actualNumerator = 9 * newOuterRect.width / newOuterRect.height;
|
let error = Math.abs(width - outerRect.width) + Math.abs(height - outerRect.height);
|
||||||
if (Math.abs(actualNumerator - 16) > 0.01)
|
if (nearestIndex === undefined || error < nearestError) {
|
||||||
message += ' (%.2f:9)'.format(actualNumerator);
|
nearestIndex = i;
|
||||||
|
nearestError = error;
|
||||||
flashMessage(message);
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/** */
|
// get the next size up or down from ideal
|
||||||
function enable() {
|
let newIndex = (nearestIndex + (backwards ? -1 : 1)) % scaledSizes.length;
|
||||||
Main.wm.addKeybinding(
|
let [newWidth, newHeight] = scaledSizes[newIndex];
|
||||||
'cycle-screenshot-sizes',
|
|
||||||
ExtensionUtils.getSettings(),
|
// Push the window onscreen if it would be resized offscreen
|
||||||
Meta.KeyBindingFlags.PER_WINDOW,
|
let newX = outerRect.x;
|
||||||
Shell.ActionMode.NORMAL,
|
let newY = outerRect.y;
|
||||||
cycleScreenshotSizes);
|
if (newX + newWidth > workArea.x + workArea.width)
|
||||||
Main.wm.addKeybinding(
|
newX = Math.max(workArea.x + workArea.width - newWidth);
|
||||||
'cycle-screenshot-sizes-backward',
|
if (newY + newHeight > workArea.y + workArea.height)
|
||||||
ExtensionUtils.getSettings(),
|
newY = Math.max(workArea.y + workArea.height - newHeight);
|
||||||
Meta.KeyBindingFlags.PER_WINDOW | Meta.KeyBindingFlags.IS_REVERSED,
|
|
||||||
Shell.ActionMode.NORMAL,
|
const id = window.connect('size-changed', () => {
|
||||||
cycleScreenshotSizes);
|
window.disconnect(id);
|
||||||
}
|
this._notifySizeChange(window);
|
||||||
|
});
|
||||||
/** */
|
window.move_resize_frame(true, newX, newY, newWidth, newHeight);
|
||||||
function disable() {
|
}
|
||||||
Main.wm.removeKeybinding('cycle-screenshot-sizes');
|
|
||||||
Main.wm.removeKeybinding('cycle-screenshot-sizes-backward');
|
/**
|
||||||
|
* @param {Meta.Window} window - the window whose size changed
|
||||||
|
*/
|
||||||
|
_notifySizeChange(window) {
|
||||||
|
const {scaleFactor} = St.ThemeContext.get_for_stage(global.stage);
|
||||||
|
let newOuterRect = window.get_frame_rect();
|
||||||
|
let message = '%d×%d'.format(
|
||||||
|
newOuterRect.width / scaleFactor,
|
||||||
|
newOuterRect.height / scaleFactor);
|
||||||
|
|
||||||
|
// 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
|
||||||
|
// we flash
|
||||||
|
let actualNumerator = 9 * newOuterRect.width / newOuterRect.height;
|
||||||
|
if (Math.abs(actualNumerator - 16) > 0.01)
|
||||||
|
message += ' (%.2f:9)'.format(actualNumerator);
|
||||||
|
|
||||||
|
this._flashMessage(message);
|
||||||
|
}
|
||||||
|
|
||||||
|
enable() {
|
||||||
|
Main.wm.addKeybinding(
|
||||||
|
'cycle-screenshot-sizes',
|
||||||
|
this.getSettings(),
|
||||||
|
Meta.KeyBindingFlags.PER_WINDOW,
|
||||||
|
Shell.ActionMode.NORMAL,
|
||||||
|
this._cycleScreenshotSizes.bind(this));
|
||||||
|
Main.wm.addKeybinding(
|
||||||
|
'cycle-screenshot-sizes-backward',
|
||||||
|
this.getSettings(),
|
||||||
|
Meta.KeyBindingFlags.PER_WINDOW | Meta.KeyBindingFlags.IS_REVERSED,
|
||||||
|
Shell.ActionMode.NORMAL,
|
||||||
|
this._cycleScreenshotSizes.bind(this));
|
||||||
|
}
|
||||||
|
|
||||||
|
disable() {
|
||||||
|
Main.wm.removeKeybinding('cycle-screenshot-sizes');
|
||||||
|
Main.wm.removeKeybinding('cycle-screenshot-sizes-backward');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,20 +1,19 @@
|
|||||||
// -*- mode: js2; indent-tabs-mode: nil; js2-basic-offset: 4 -*-
|
// -*- mode: js2; indent-tabs-mode: nil; js2-basic-offset: 4 -*-
|
||||||
// Load shell theme from ~/.local/share/themes/name/gnome-shell
|
// Load shell theme from ~/.local/share/themes/name/gnome-shell
|
||||||
/* exported init */
|
|
||||||
|
|
||||||
const { Gio } = imports.gi;
|
import Gio from 'gi://Gio';
|
||||||
|
|
||||||
const ExtensionUtils = imports.misc.extensionUtils;
|
import {Extension} from 'resource:///org/gnome/shell/extensions/extension.js';
|
||||||
const Main = imports.ui.main;
|
|
||||||
|
|
||||||
const Me = ExtensionUtils.getCurrentExtension();
|
import * as Main from 'resource:///org/gnome/shell/ui/main.js';
|
||||||
const Util = Me.imports.util;
|
|
||||||
|
import {getThemeDirs, getModeThemeDirs} from './util.js';
|
||||||
|
|
||||||
const SETTINGS_KEY = 'name';
|
const SETTINGS_KEY = 'name';
|
||||||
|
|
||||||
class ThemeManager {
|
export default class ThemeManager extends Extension {
|
||||||
enable() {
|
enable() {
|
||||||
this._settings = ExtensionUtils.getSettings();
|
this._settings = this.getSettings();
|
||||||
this._settings.connect(`changed::${SETTINGS_KEY}`, this._changeTheme.bind(this));
|
this._settings.connect(`changed::${SETTINGS_KEY}`, this._changeTheme.bind(this));
|
||||||
this._changeTheme();
|
this._changeTheme();
|
||||||
}
|
}
|
||||||
@@ -32,10 +31,10 @@ class ThemeManager {
|
|||||||
let themeName = this._settings.get_string(SETTINGS_KEY);
|
let themeName = this._settings.get_string(SETTINGS_KEY);
|
||||||
|
|
||||||
if (themeName) {
|
if (themeName) {
|
||||||
const stylesheetPaths = Util.getThemeDirs()
|
const stylesheetPaths = getThemeDirs()
|
||||||
.map(dir => `${dir}/${themeName}/gnome-shell/gnome-shell.css`);
|
.map(dir => `${dir}/${themeName}/gnome-shell/gnome-shell.css`);
|
||||||
|
|
||||||
stylesheetPaths.push(...Util.getModeThemeDirs()
|
stylesheetPaths.push(...getModeThemeDirs()
|
||||||
.map(dir => `${dir}/${themeName}.css`));
|
.map(dir => `${dir}/${themeName}.css`));
|
||||||
|
|
||||||
stylesheet = stylesheetPaths.find(path => {
|
stylesheet = stylesheetPaths.find(path => {
|
||||||
@@ -45,17 +44,10 @@ class ThemeManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (stylesheet)
|
if (stylesheet)
|
||||||
global.log(`loading user theme: ${stylesheet}`);
|
log(`loading user theme: ${stylesheet}`);
|
||||||
else
|
else
|
||||||
global.log('loading default theme (Adwaita)');
|
log('loading default theme (Adwaita)');
|
||||||
Main.setThemeStylesheet(stylesheet);
|
Main.setThemeStylesheet(stylesheet);
|
||||||
Main.loadTheme();
|
Main.loadTheme();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @returns {ThemeManager} - the extension state object
|
|
||||||
*/
|
|
||||||
function init() {
|
|
||||||
return new ThemeManager();
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -1,15 +1,17 @@
|
|||||||
// -*- mode: js2; indent-tabs-mode: nil; js2-basic-offset: 4 -*-
|
// -*- mode: js2; indent-tabs-mode: nil; js2-basic-offset: 4 -*-
|
||||||
/* exported init buildPrefsWidget */
|
|
||||||
|
|
||||||
// we use async/await here to not block the mainloop, not to parallelize
|
// we use async/await here to not block the mainloop, not to parallelize
|
||||||
/* eslint-disable no-await-in-loop */
|
/* eslint-disable no-await-in-loop */
|
||||||
|
|
||||||
const { Adw, Gio, GLib, GObject, Gtk } = imports.gi;
|
import Adw from 'gi://Adw';
|
||||||
|
import Gio from 'gi://Gio';
|
||||||
|
import GLib from 'gi://GLib';
|
||||||
|
import GObject from 'gi://GObject';
|
||||||
|
import Gtk from 'gi://Gtk';
|
||||||
|
|
||||||
const ExtensionUtils = imports.misc.extensionUtils;
|
import {ExtensionPreferences} from 'resource:///org/gnome/Shell/Extensions/js/extensions/prefs.js';
|
||||||
|
|
||||||
const Me = ExtensionUtils.getCurrentExtension();
|
import {getThemeDirs, getModeThemeDirs} from './util.js';
|
||||||
const Util = Me.imports.util;
|
|
||||||
|
|
||||||
Gio._promisify(Gio.File.prototype, 'enumerate_children_async');
|
Gio._promisify(Gio.File.prototype, 'enumerate_children_async');
|
||||||
Gio._promisify(Gio.File.prototype, 'query_info_async');
|
Gio._promisify(Gio.File.prototype, 'query_info_async');
|
||||||
@@ -20,13 +22,13 @@ class UserThemePrefsWidget extends Adw.PreferencesGroup {
|
|||||||
GObject.registerClass(this);
|
GObject.registerClass(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
constructor() {
|
constructor(settings) {
|
||||||
super({ title: 'Themes' });
|
super({title: 'Themes'});
|
||||||
|
|
||||||
this._actionGroup = new Gio.SimpleActionGroup();
|
this._actionGroup = new Gio.SimpleActionGroup();
|
||||||
this.insert_action_group('theme', this._actionGroup);
|
this.insert_action_group('theme', this._actionGroup);
|
||||||
|
|
||||||
this._settings = ExtensionUtils.getSettings();
|
this._settings = settings;
|
||||||
this._actionGroup.add_action(
|
this._actionGroup.add_action(
|
||||||
this._settings.create_action('name'));
|
this._settings.create_action('name'));
|
||||||
|
|
||||||
@@ -39,7 +41,7 @@ class UserThemePrefsWidget extends Adw.PreferencesGroup {
|
|||||||
}
|
}
|
||||||
|
|
||||||
async _collectThemes() {
|
async _collectThemes() {
|
||||||
for (const dirName of Util.getThemeDirs()) {
|
for (const dirName of getThemeDirs()) {
|
||||||
const dir = Gio.File.new_for_path(dirName);
|
const dir = Gio.File.new_for_path(dirName);
|
||||||
for (const name of await this._enumerateDir(dir)) {
|
for (const name of await this._enumerateDir(dir)) {
|
||||||
if (this._rows.has(name))
|
if (this._rows.has(name))
|
||||||
@@ -60,7 +62,7 @@ class UserThemePrefsWidget extends Adw.PreferencesGroup {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for (const dirName of Util.getModeThemeDirs()) {
|
for (const dirName of getModeThemeDirs()) {
|
||||||
const dir = Gio.File.new_for_path(dirName);
|
const dir = Gio.File.new_for_path(dirName);
|
||||||
for (const filename of await this._enumerateDir(dir)) {
|
for (const filename of await this._enumerateDir(dir)) {
|
||||||
if (!filename.endsWith('.css'))
|
if (!filename.endsWith('.css'))
|
||||||
@@ -125,13 +127,8 @@ class ThemeRow extends Adw.ActionRow {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/** */
|
export default class UserThemePrefs extends ExtensionPreferences {
|
||||||
function init() {
|
getPreferencesWidget() {
|
||||||
}
|
return new UserThemePrefsWidget(this.getSettings());
|
||||||
|
}
|
||||||
/**
|
|
||||||
* @returns {Gtk.Widget} - the prefs widget
|
|
||||||
*/
|
|
||||||
function buildPrefsWidget() {
|
|
||||||
return new UserThemePrefsWidget();
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,12 +1,11 @@
|
|||||||
/* exported getThemeDirs getModeThemeDirs */
|
import GLib from 'gi://GLib';
|
||||||
const { GLib } = imports.gi;
|
|
||||||
|
|
||||||
const fn = (...args) => GLib.build_filenamev(args);
|
const fn = (...args) => GLib.build_filenamev(args);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @returns {string[]} - an ordered list of theme directories
|
* @returns {string[]} - an ordered list of theme directories
|
||||||
*/
|
*/
|
||||||
function getThemeDirs() {
|
export function getThemeDirs() {
|
||||||
return [
|
return [
|
||||||
fn(GLib.get_home_dir(), '.themes'),
|
fn(GLib.get_home_dir(), '.themes'),
|
||||||
fn(GLib.get_user_data_dir(), 'themes'),
|
fn(GLib.get_user_data_dir(), 'themes'),
|
||||||
@@ -17,7 +16,7 @@ function getThemeDirs() {
|
|||||||
/**
|
/**
|
||||||
* @returns {string[]} - an ordered list of mode theme directories
|
* @returns {string[]} - an ordered list of mode theme directories
|
||||||
*/
|
*/
|
||||||
function getModeThemeDirs() {
|
export function getModeThemeDirs() {
|
||||||
return GLib.get_system_data_dirs()
|
return GLib.get_system_data_dirs()
|
||||||
.map(dir => fn(dir, 'gnome-shell', 'theme'));
|
.map(dir => fn(dir, 'gnome-shell', 'theme'));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,21 +1,28 @@
|
|||||||
/* exported init */
|
import Clutter from 'gi://Clutter';
|
||||||
const { Clutter, Gio, GLib, GObject, Gtk, Meta, Shell, St } = imports.gi;
|
import Gio from 'gi://Gio';
|
||||||
|
import GLib from 'gi://GLib';
|
||||||
|
import GObject from 'gi://GObject';
|
||||||
|
import Gtk from 'gi://Gtk';
|
||||||
|
import Meta from 'gi://Meta';
|
||||||
|
import Shell from 'gi://Shell';
|
||||||
|
import St from 'gi://St';
|
||||||
|
|
||||||
const DND = imports.ui.dnd;
|
import {Extension, gettext as _} from 'resource:///org/gnome/shell/extensions/extension.js';
|
||||||
const ExtensionUtils = imports.misc.extensionUtils;
|
|
||||||
const Main = imports.ui.main;
|
|
||||||
const Overview = imports.ui.overview;
|
|
||||||
const PopupMenu = imports.ui.popupMenu;
|
|
||||||
|
|
||||||
const Me = ExtensionUtils.getCurrentExtension();
|
import * as DND from 'resource:///org/gnome/shell/ui/dnd.js';
|
||||||
const { WindowPicker, WindowPickerToggle } = Me.imports.windowPicker;
|
import * as Main from 'resource:///org/gnome/shell/ui/main.js';
|
||||||
const { WorkspaceIndicator } = Me.imports.workspaceIndicator;
|
import * as Overview from 'resource:///org/gnome/shell/ui/overview.js';
|
||||||
|
import * as PopupMenu from 'resource:///org/gnome/shell/ui/popupMenu.js';
|
||||||
|
|
||||||
const _ = ExtensionUtils.gettext;
|
import {WindowPicker, WindowPickerToggle} from './windowPicker.js';
|
||||||
|
import {WorkspaceIndicator} from './workspaceIndicator.js';
|
||||||
|
|
||||||
const ICON_TEXTURE_SIZE = 24;
|
const ICON_TEXTURE_SIZE = 24;
|
||||||
const DND_ACTIVATE_TIMEOUT = 500;
|
const DND_ACTIVATE_TIMEOUT = 500;
|
||||||
|
|
||||||
|
const TOOLTIP_OFFSET = 6;
|
||||||
|
const TOOLTIP_ANIMATION_TIME = 150;
|
||||||
|
|
||||||
const GroupingMode = {
|
const GroupingMode = {
|
||||||
NEVER: 0,
|
NEVER: 0,
|
||||||
AUTO: 1,
|
AUTO: 1,
|
||||||
@@ -48,10 +55,6 @@ class WindowContextMenu extends PopupMenu.PopupMenu {
|
|||||||
});
|
});
|
||||||
this.addMenuItem(this._minimizeItem);
|
this.addMenuItem(this._minimizeItem);
|
||||||
|
|
||||||
this._notifyMinimizedId = this._metaWindow.connect(
|
|
||||||
'notify::minimized', this._updateMinimizeItem.bind(this));
|
|
||||||
this._updateMinimizeItem();
|
|
||||||
|
|
||||||
this._maximizeItem = new PopupMenu.PopupMenuItem('');
|
this._maximizeItem = new PopupMenu.PopupMenuItem('');
|
||||||
this._maximizeItem.connect('activate', () => {
|
this._maximizeItem.connect('activate', () => {
|
||||||
if (this._metaWindow.get_maximized() === Meta.MaximizeFlags.BOTH)
|
if (this._metaWindow.get_maximized() === Meta.MaximizeFlags.BOTH)
|
||||||
@@ -61,21 +64,20 @@ class WindowContextMenu extends PopupMenu.PopupMenu {
|
|||||||
});
|
});
|
||||||
this.addMenuItem(this._maximizeItem);
|
this.addMenuItem(this._maximizeItem);
|
||||||
|
|
||||||
this._notifyMaximizedHId = this._metaWindow.connect(
|
|
||||||
'notify::maximized-horizontally',
|
|
||||||
this._updateMaximizeItem.bind(this));
|
|
||||||
this._notifyMaximizedVId = this._metaWindow.connect(
|
|
||||||
'notify::maximized-vertically',
|
|
||||||
this._updateMaximizeItem.bind(this));
|
|
||||||
this._updateMaximizeItem();
|
|
||||||
|
|
||||||
this._closeItem = new PopupMenu.PopupMenuItem(_('Close'));
|
this._closeItem = new PopupMenu.PopupMenuItem(_('Close'));
|
||||||
this._closeItem.connect('activate', () => {
|
this._closeItem.connect('activate', () => {
|
||||||
this._metaWindow.delete(global.get_current_time());
|
this._metaWindow.delete(global.get_current_time());
|
||||||
});
|
});
|
||||||
this.addMenuItem(this._closeItem);
|
this.addMenuItem(this._closeItem);
|
||||||
|
|
||||||
this.actor.connect('destroy', this._onDestroy.bind(this));
|
this._metaWindow.connectObject(
|
||||||
|
'notify::minimized', this._updateMinimizeItem.bind(this),
|
||||||
|
'notify::maximized-horizontally', this._updateMaximizeItem.bind(this),
|
||||||
|
'notify::maximized-vertically', this._updateMaximizeItem.bind(this),
|
||||||
|
this);
|
||||||
|
|
||||||
|
this._updateMinimizeItem();
|
||||||
|
this._updateMaximizeItem();
|
||||||
|
|
||||||
this.connect('open-state-changed', () => {
|
this.connect('open-state-changed', () => {
|
||||||
if (!this.isOpen)
|
if (!this.isOpen)
|
||||||
@@ -98,12 +100,6 @@ class WindowContextMenu extends PopupMenu.PopupMenu {
|
|||||||
this._maximizeItem.label.text = maximized
|
this._maximizeItem.label.text = maximized
|
||||||
? _('Unmaximize') : _('Maximize');
|
? _('Unmaximize') : _('Maximize');
|
||||||
}
|
}
|
||||||
|
|
||||||
_onDestroy() {
|
|
||||||
this._metaWindow.disconnect(this._notifyMinimizedId);
|
|
||||||
this._metaWindow.disconnect(this._notifyMaximizedHId);
|
|
||||||
this._metaWindow.disconnect(this._notifyMaximizedVId);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
class WindowTitle extends St.BoxLayout {
|
class WindowTitle extends St.BoxLayout {
|
||||||
@@ -120,27 +116,26 @@ class WindowTitle extends St.BoxLayout {
|
|||||||
|
|
||||||
this._metaWindow = metaWindow;
|
this._metaWindow = metaWindow;
|
||||||
|
|
||||||
this._icon = new St.Bin({ style_class: 'window-button-icon' });
|
this._icon = new St.Bin({style_class: 'window-button-icon'});
|
||||||
this.add(this._icon);
|
this.add(this._icon);
|
||||||
this.label_actor = new St.Label({ y_align: Clutter.ActorAlign.CENTER });
|
this.label_actor = new St.Label({y_align: Clutter.ActorAlign.CENTER});
|
||||||
this.label_actor.clutter_text.single_line_mode = true;
|
this.label_actor.clutter_text.single_line_mode = true;
|
||||||
this.add(this.label_actor);
|
this.add(this.label_actor);
|
||||||
|
|
||||||
this._textureCache = St.TextureCache.get_default();
|
this._textureCache = St.TextureCache.get_default();
|
||||||
this._iconThemeChangedId = this._textureCache.connect(
|
this._textureCache.connectObject('icon-theme-changed',
|
||||||
'icon-theme-changed', this._updateIcon.bind(this));
|
() => this._updateIcon(), this);
|
||||||
this._notifyWmClass = this._metaWindow.connect_after(
|
|
||||||
'notify::wm-class', this._updateIcon.bind(this));
|
this._metaWindow.connectObject(
|
||||||
this._notifyAppId = this._metaWindow.connect_after(
|
'notify::wm-class',
|
||||||
'notify::gtk-application-id', this._updateIcon.bind(this));
|
() => this._updateIcon(), GObject.ConnectFlags.AFTER,
|
||||||
|
'notify::gtk-application-id',
|
||||||
|
() => this._updateIcon(), GObject.ConnectFlags.AFTER,
|
||||||
|
'notify::title', () => this._updateTitle(),
|
||||||
|
'notify::minimized', () => this._minimizedChanged(),
|
||||||
|
this);
|
||||||
|
|
||||||
this._updateIcon();
|
this._updateIcon();
|
||||||
|
|
||||||
this.connect('destroy', this._onDestroy.bind(this));
|
|
||||||
|
|
||||||
this._notifyTitleId = this._metaWindow.connect(
|
|
||||||
'notify::title', this._updateTitle.bind(this));
|
|
||||||
this._notifyMinimizedId = this._metaWindow.connect(
|
|
||||||
'notify::minimized', this._minimizedChanged.bind(this));
|
|
||||||
this._minimizedChanged();
|
this._minimizedChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -170,14 +165,6 @@ class WindowTitle extends St.BoxLayout {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
_onDestroy() {
|
|
||||||
this._textureCache.disconnect(this._iconThemeChangedId);
|
|
||||||
this._metaWindow.disconnect(this._notifyTitleId);
|
|
||||||
this._metaWindow.disconnect(this._notifyMinimizedId);
|
|
||||||
this._metaWindow.disconnect(this._notifyWmClass);
|
|
||||||
this._metaWindow.disconnect(this._notifyAppId);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
class BaseButton extends St.Button {
|
class BaseButton extends St.Button {
|
||||||
@@ -213,17 +200,23 @@ class BaseButton extends St.Button {
|
|||||||
|
|
||||||
this._contextMenuManager = new PopupMenu.PopupMenuManager(this);
|
this._contextMenuManager = new PopupMenu.PopupMenuManager(this);
|
||||||
|
|
||||||
this._switchWorkspaceId = global.window_manager.connect(
|
global.window_manager.connectObject('switch-workspace',
|
||||||
'switch-workspace', this._updateVisibility.bind(this));
|
() => this._updateVisibility(), this);
|
||||||
|
|
||||||
if (this._perMonitor) {
|
if (this._perMonitor) {
|
||||||
this._windowEnteredMonitorId = global.display.connect(
|
global.display.connectObject(
|
||||||
'window-entered-monitor',
|
'window-entered-monitor',
|
||||||
this._windowEnteredOrLeftMonitor.bind(this));
|
this._windowEnteredOrLeftMonitor.bind(this),
|
||||||
this._windowLeftMonitorId = global.display.connect(
|
|
||||||
'window-left-monitor',
|
'window-left-monitor',
|
||||||
this._windowEnteredOrLeftMonitor.bind(this));
|
this._windowEnteredOrLeftMonitor.bind(this),
|
||||||
|
this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
this._tooltip = new Tooltip(this, {
|
||||||
|
style_class: 'dash-label',
|
||||||
|
visible: false,
|
||||||
|
});
|
||||||
|
Main.uiGroup.add_child(this._tooltip);
|
||||||
}
|
}
|
||||||
|
|
||||||
get active() {
|
get active() {
|
||||||
@@ -250,7 +243,7 @@ class BaseButton extends St.Button {
|
|||||||
if (this._longPressTimeoutId)
|
if (this._longPressTimeoutId)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
const { longPressDuration } = Clutter.Settings.get_default();
|
const {longPressDuration} = Clutter.Settings.get_default();
|
||||||
this._longPressTimeoutId =
|
this._longPressTimeoutId =
|
||||||
GLib.timeout_add(GLib.PRIORITY_DEFAULT, longPressDuration, () => {
|
GLib.timeout_add(GLib.PRIORITY_DEFAULT, longPressDuration, () => {
|
||||||
delete this._longPressTimeoutId;
|
delete this._longPressTimeoutId;
|
||||||
@@ -325,9 +318,11 @@ class BaseButton extends St.Button {
|
|||||||
if (isOpen)
|
if (isOpen)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
const extension = Extension.lookupByURL(import.meta.url);
|
||||||
|
|
||||||
let [x, y] = global.get_pointer();
|
let [x, y] = global.get_pointer();
|
||||||
let actor = global.stage.get_actor_at_pos(Clutter.PickMode.REACTIVE, x, y);
|
let actor = global.stage.get_actor_at_pos(Clutter.PickMode.REACTIVE, x, y);
|
||||||
if (Me.stateObj.someWindowListContains(actor))
|
if (extension.someWindowListContains(actor))
|
||||||
actor.sync_hover();
|
actor.sync_hover();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -382,15 +377,7 @@ class BaseButton extends St.Button {
|
|||||||
}
|
}
|
||||||
|
|
||||||
_onDestroy() {
|
_onDestroy() {
|
||||||
global.window_manager.disconnect(this._switchWorkspaceId);
|
this._tooltip.destroy();
|
||||||
|
|
||||||
if (this._windowEnteredMonitorId)
|
|
||||||
global.display.disconnect(this._windowEnteredMonitorId);
|
|
||||||
this._windowEnteredMonitorId = 0;
|
|
||||||
|
|
||||||
if (this._windowLeftMonitorId)
|
|
||||||
global.display.disconnect(this._windowLeftMonitorId);
|
|
||||||
this._windowLeftMonitorId = 0;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -403,9 +390,11 @@ class WindowButton extends BaseButton {
|
|||||||
super(perMonitor, monitorIndex);
|
super(perMonitor, monitorIndex);
|
||||||
|
|
||||||
this.metaWindow = metaWindow;
|
this.metaWindow = metaWindow;
|
||||||
this._skipTaskbarId = metaWindow.connect('notify::skip-taskbar', () => {
|
metaWindow.connectObject(
|
||||||
this._updateVisibility();
|
'notify::skip-taskbar', () => this._updateVisibility(),
|
||||||
});
|
'workspace-changed', () => this._updateVisibility(),
|
||||||
|
this);
|
||||||
|
|
||||||
this._updateVisibility();
|
this._updateVisibility();
|
||||||
|
|
||||||
this._windowTitle = new WindowTitle(this.metaWindow);
|
this._windowTitle = new WindowTitle(this.metaWindow);
|
||||||
@@ -419,11 +408,8 @@ class WindowButton extends BaseButton {
|
|||||||
this._contextMenuManager.addMenu(this._contextMenu);
|
this._contextMenuManager.addMenu(this._contextMenu);
|
||||||
Main.uiGroup.add_actor(this._contextMenu.actor);
|
Main.uiGroup.add_actor(this._contextMenu.actor);
|
||||||
|
|
||||||
this._workspaceChangedId = this.metaWindow.connect(
|
global.display.connectObject('notify::focus-window',
|
||||||
'workspace-changed', this._updateVisibility.bind(this));
|
() => this._updateStyle(), this);
|
||||||
|
|
||||||
this._notifyFocusId = global.display.connect(
|
|
||||||
'notify::focus-window', this._updateStyle.bind(this));
|
|
||||||
this._updateStyle();
|
this._updateStyle();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -467,9 +453,6 @@ class WindowButton extends BaseButton {
|
|||||||
|
|
||||||
_onDestroy() {
|
_onDestroy() {
|
||||||
super._onDestroy();
|
super._onDestroy();
|
||||||
this.metaWindow.disconnect(this._skipTaskbarId);
|
|
||||||
this.metaWindow.disconnect(this._workspaceChangedId);
|
|
||||||
global.display.disconnect(this._notifyFocusId);
|
|
||||||
this._contextMenu.destroy();
|
this._contextMenu.destroy();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -543,7 +526,7 @@ class AppButton extends BaseButton {
|
|||||||
this.app = app;
|
this.app = app;
|
||||||
this._updateVisibility();
|
this._updateVisibility();
|
||||||
|
|
||||||
let stack = new St.Widget({ layout_manager: new Clutter.BinLayout() });
|
let stack = new St.Widget({layout_manager: new Clutter.BinLayout()});
|
||||||
this.set_child(stack);
|
this.set_child(stack);
|
||||||
|
|
||||||
this._singleWindowTitle = new St.Bin({
|
this._singleWindowTitle = new St.Bin({
|
||||||
@@ -586,18 +569,17 @@ class AppButton extends BaseButton {
|
|||||||
Main.uiGroup.add_actor(this._appContextMenu.actor);
|
Main.uiGroup.add_actor(this._appContextMenu.actor);
|
||||||
|
|
||||||
this._textureCache = St.TextureCache.get_default();
|
this._textureCache = St.TextureCache.get_default();
|
||||||
this._iconThemeChangedId =
|
this._textureCache.connectObject('icon-theme-changed', () => {
|
||||||
this._textureCache.connect('icon-theme-changed', () => {
|
this._icon.child = app.create_icon_texture(ICON_TEXTURE_SIZE);
|
||||||
this._icon.child = app.create_icon_texture(ICON_TEXTURE_SIZE);
|
}, this);
|
||||||
});
|
|
||||||
|
|
||||||
this._windowsChangedId = this.app.connect(
|
this.app.connectObject('windows-changed',
|
||||||
'windows-changed', this._windowsChanged.bind(this));
|
() => this._windowsChanged(), this);
|
||||||
this._windowsChanged();
|
this._windowsChanged();
|
||||||
|
|
||||||
this._windowTracker = Shell.WindowTracker.get_default();
|
this._windowTracker = Shell.WindowTracker.get_default();
|
||||||
this._notifyFocusId = this._windowTracker.connect(
|
this._windowTracker.connectObject('notify::focus-app',
|
||||||
'notify::focus-app', this._updateStyle.bind(this));
|
() => this._updateStyle(), this);
|
||||||
this._updateStyle();
|
this._updateStyle();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -717,9 +699,6 @@ class AppButton extends BaseButton {
|
|||||||
|
|
||||||
_onDestroy() {
|
_onDestroy() {
|
||||||
super._onDestroy();
|
super._onDestroy();
|
||||||
this._textureCache.disconnect(this._iconThemeChangedId);
|
|
||||||
this._windowTracker.disconnect(this._notifyFocusId);
|
|
||||||
this.app.disconnect(this._windowsChangedId);
|
|
||||||
this._menu.destroy();
|
this._menu.destroy();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -729,7 +708,7 @@ class WindowList extends St.Widget {
|
|||||||
GObject.registerClass(this);
|
GObject.registerClass(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
constructor(perMonitor, monitor) {
|
constructor(perMonitor, monitor, settings) {
|
||||||
super({
|
super({
|
||||||
name: 'panel',
|
name: 'panel',
|
||||||
style_class: 'bottom-panel solid',
|
style_class: 'bottom-panel solid',
|
||||||
@@ -742,7 +721,7 @@ class WindowList extends St.Widget {
|
|||||||
this._perMonitor = perMonitor;
|
this._perMonitor = perMonitor;
|
||||||
this._monitor = monitor;
|
this._monitor = monitor;
|
||||||
|
|
||||||
let box = new St.BoxLayout({ x_expand: true, y_expand: true });
|
let box = new St.BoxLayout({x_expand: true, y_expand: true});
|
||||||
this.add_actor(box);
|
this.add_actor(box);
|
||||||
|
|
||||||
let toggle = new WindowPickerToggle();
|
let toggle = new WindowPickerToggle();
|
||||||
@@ -751,7 +730,7 @@ class WindowList extends St.Widget {
|
|||||||
toggle.connect('notify::checked',
|
toggle.connect('notify::checked',
|
||||||
this._updateWindowListVisibility.bind(this));
|
this._updateWindowListVisibility.bind(this));
|
||||||
|
|
||||||
let layout = new Clutter.BoxLayout({ homogeneous: true });
|
let layout = new Clutter.BoxLayout({homogeneous: true});
|
||||||
this._windowList = new St.Widget({
|
this._windowList = new St.Widget({
|
||||||
style_class: 'window-list',
|
style_class: 'window-list',
|
||||||
reactive: true,
|
reactive: true,
|
||||||
@@ -769,19 +748,19 @@ class WindowList extends St.Widget {
|
|||||||
});
|
});
|
||||||
this._windowList.connect('scroll-event', this._onScrollEvent.bind(this));
|
this._windowList.connect('scroll-event', this._onScrollEvent.bind(this));
|
||||||
|
|
||||||
let indicatorsBox = new St.BoxLayout({ x_align: Clutter.ActorAlign.END });
|
let indicatorsBox = new St.BoxLayout({x_align: Clutter.ActorAlign.END});
|
||||||
box.add(indicatorsBox);
|
box.add(indicatorsBox);
|
||||||
|
|
||||||
this._workspaceIndicator = new WorkspaceIndicator();
|
this._workspaceIndicator = new WorkspaceIndicator();
|
||||||
indicatorsBox.add_child(this._workspaceIndicator.container);
|
indicatorsBox.add_child(this._workspaceIndicator.container);
|
||||||
|
|
||||||
this._mutterSettings = new Gio.Settings({ schema_id: 'org.gnome.mutter' });
|
this._mutterSettings = new Gio.Settings({schema_id: 'org.gnome.mutter'});
|
||||||
this._workspacesOnlyOnPrimaryChangedId = this._mutterSettings.connect(
|
this._mutterSettings.connectObject(
|
||||||
'changed::workspaces-only-on-primary',
|
'changed::workspaces-only-on-primary',
|
||||||
this._updateWorkspaceIndicatorVisibility.bind(this));
|
() => this._updateWorkspaceIndicatorVisibility(),
|
||||||
this._dynamicWorkspacesChangedId = this._mutterSettings.connect(
|
|
||||||
'changed::dynamic-workspaces',
|
'changed::dynamic-workspaces',
|
||||||
this._updateWorkspaceIndicatorVisibility.bind(this));
|
() => this._updateWorkspaceIndicatorVisibility(),
|
||||||
|
this);
|
||||||
this._updateWorkspaceIndicatorVisibility();
|
this._updateWorkspaceIndicatorVisibility();
|
||||||
|
|
||||||
this._menuManager = new PopupMenu.PopupMenuManager(this);
|
this._menuManager = new PopupMenu.PopupMenuManager(this);
|
||||||
@@ -799,59 +778,58 @@ class WindowList extends St.Widget {
|
|||||||
this._updatePosition();
|
this._updatePosition();
|
||||||
|
|
||||||
this._appSystem = Shell.AppSystem.get_default();
|
this._appSystem = Shell.AppSystem.get_default();
|
||||||
this._appStateChangedId = this._appSystem.connect(
|
this._appSystem.connectObject('app-state-changed',
|
||||||
'app-state-changed', this._onAppStateChanged.bind(this));
|
this._onAppStateChanged.bind(this), this);
|
||||||
|
|
||||||
// Hack: OSK gesture is tied to visibility, piggy-back on that
|
// Hack: OSK gesture is tied to visibility, piggy-back on that
|
||||||
this._keyboardVisiblechangedId =
|
Main.keyboard._bottomDragAction.connectObject('notify::enabled',
|
||||||
Main.keyboard._bottomDragAction.connect('notify::enabled',
|
action => {
|
||||||
action => {
|
const visible = !action.enabled;
|
||||||
const visible = !action.enabled;
|
if (visible) {
|
||||||
if (visible) {
|
Main.uiGroup.set_child_above_sibling(
|
||||||
Main.uiGroup.set_child_above_sibling(
|
this, Main.layoutManager.keyboardBox);
|
||||||
this, Main.layoutManager.keyboardBox);
|
} else {
|
||||||
} else {
|
Main.uiGroup.set_child_above_sibling(
|
||||||
Main.uiGroup.set_child_above_sibling(
|
this, Main.layoutManager.panelBox);
|
||||||
this, Main.layoutManager.panelBox);
|
}
|
||||||
}
|
this._updateKeyboardAnchor();
|
||||||
this._updateKeyboardAnchor();
|
}, this);
|
||||||
});
|
|
||||||
|
|
||||||
let workspaceManager = global.workspace_manager;
|
let workspaceManager = global.workspace_manager;
|
||||||
|
|
||||||
this._nWorkspacesChangedId = workspaceManager.connect(
|
workspaceManager.connectObject('notify::n-workspaces',
|
||||||
'notify::n-workspaces', this._updateWorkspaceIndicatorVisibility.bind(this));
|
() => this._updateWorkspaceIndicatorVisibility(), this);
|
||||||
this._updateWorkspaceIndicatorVisibility();
|
this._updateWorkspaceIndicatorVisibility();
|
||||||
|
|
||||||
this._switchWorkspaceId = global.window_manager.connect(
|
global.window_manager.connectObject('switch-workspace',
|
||||||
'switch-workspace', this._checkGrouping.bind(this));
|
() => this._checkGrouping(), this);
|
||||||
|
|
||||||
this._overviewShowingId = Main.overview.connect('showing', () => {
|
Main.overview.connectObject(
|
||||||
this.hide();
|
'showing', () => {
|
||||||
this._updateKeyboardAnchor();
|
this.hide();
|
||||||
});
|
|
||||||
|
|
||||||
this._overviewHidingId = Main.overview.connect('hidden', () => {
|
|
||||||
this.visible = !this._monitor.inFullscreen;
|
|
||||||
this._updateKeyboardAnchor();
|
|
||||||
});
|
|
||||||
|
|
||||||
this._fullscreenChangedId =
|
|
||||||
global.display.connect('in-fullscreen-changed', () => {
|
|
||||||
// Work-around for initial change from unknown to !fullscreen
|
|
||||||
if (Main.overview.visible)
|
|
||||||
this.hide();
|
|
||||||
this._updateKeyboardAnchor();
|
this._updateKeyboardAnchor();
|
||||||
});
|
},
|
||||||
|
'hidden', () => {
|
||||||
|
this.visible = !this._monitor.inFullscreen;
|
||||||
|
this._updateKeyboardAnchor();
|
||||||
|
}, this);
|
||||||
|
|
||||||
|
global.display.connectObject('in-fullscreen-changed', () => {
|
||||||
|
// Work-around for initial change from unknown to !fullscreen
|
||||||
|
if (Main.overview.visible)
|
||||||
|
this.hide();
|
||||||
|
this._updateKeyboardAnchor();
|
||||||
|
}, this);
|
||||||
|
|
||||||
this._windowSignals = new Map();
|
this._windowSignals = new Map();
|
||||||
this._windowCreatedId = global.display.connect(
|
this._windowCreatedId = global.display.connect(
|
||||||
'window-created', (dsp, win) => this._addWindow(win));
|
'window-created', (dsp, win) => this._addWindow(win));
|
||||||
|
|
||||||
this._dragBeginId = Main.xdndHandler.connect('drag-begin',
|
Main.xdndHandler.connectObject(
|
||||||
this._monitorDrag.bind(this));
|
'drag-begin', () => this._monitorDrag(),
|
||||||
this._dragEndId = Main.xdndHandler.connect('drag-end',
|
'drag-end', () => this._stopMonitoringDrag(),
|
||||||
this._stopMonitoringDrag.bind(this));
|
this);
|
||||||
|
|
||||||
this._dragMonitor = {
|
this._dragMonitor = {
|
||||||
dragMotion: this._onDragMotion.bind(this),
|
dragMotion: this._onDragMotion.bind(this),
|
||||||
};
|
};
|
||||||
@@ -859,9 +837,9 @@ class WindowList extends St.Widget {
|
|||||||
this._dndTimeoutId = 0;
|
this._dndTimeoutId = 0;
|
||||||
this._dndWindow = null;
|
this._dndWindow = null;
|
||||||
|
|
||||||
this._settings = ExtensionUtils.getSettings();
|
this._settings = settings;
|
||||||
this._groupingModeChangedId = this._settings.connect(
|
this._settings.connect('changed::grouping-mode',
|
||||||
'changed::grouping-mode', this._groupingModeChanged.bind(this));
|
() => this._groupingModeChanged());
|
||||||
this._grouped = undefined;
|
this._grouped = undefined;
|
||||||
this._groupingModeChanged();
|
this._groupingModeChanged();
|
||||||
}
|
}
|
||||||
@@ -900,7 +878,8 @@ class WindowList extends St.Widget {
|
|||||||
}
|
}
|
||||||
|
|
||||||
_updateWindowListVisibility() {
|
_updateWindowListVisibility() {
|
||||||
let visible = !Main.windowPicker.visible;
|
const {windowPicker} = Extension.lookupByURL(import.meta.url);
|
||||||
|
const visible = !windowPicker.visible;
|
||||||
|
|
||||||
this._windowList.ease({
|
this._windowList.ease({
|
||||||
opacity: visible ? 255 : 0,
|
opacity: visible ? 255 : 0,
|
||||||
@@ -918,7 +897,7 @@ class WindowList extends St.Widget {
|
|||||||
|
|
||||||
let children = this._windowList.get_children();
|
let children = this._windowList.get_children();
|
||||||
let [, childWidth] = children[0].get_preferred_width(-1);
|
let [, childWidth] = children[0].get_preferred_width(-1);
|
||||||
let { spacing } = this._windowList.layout_manager;
|
let {spacing} = this._windowList.layout_manager;
|
||||||
|
|
||||||
let workspace = global.workspace_manager.get_active_workspace();
|
let workspace = global.workspace_manager.get_active_workspace();
|
||||||
let windows = global.display.get_tab_list(Meta.TabList.NORMAL, workspace);
|
let windows = global.display.get_tab_list(Meta.TabList.NORMAL, workspace);
|
||||||
@@ -1098,39 +1077,16 @@ class WindowList extends St.Widget {
|
|||||||
}
|
}
|
||||||
|
|
||||||
_onDestroy() {
|
_onDestroy() {
|
||||||
this._mutterSettings.disconnect(this._workspacesOnlyOnPrimaryChangedId);
|
|
||||||
this._mutterSettings.disconnect(this._dynamicWorkspacesChangedId);
|
|
||||||
|
|
||||||
this._workspaceIndicator.destroy();
|
this._workspaceIndicator.destroy();
|
||||||
|
|
||||||
Main.ctrlAltTabManager.removeGroup(this);
|
Main.ctrlAltTabManager.removeGroup(this);
|
||||||
|
|
||||||
this._appSystem.disconnect(this._appStateChangedId);
|
|
||||||
this._appStateChangedId = 0;
|
|
||||||
|
|
||||||
Main.keyboard._bottomDragAction.disconnect(this._keyboardVisiblechangedId);
|
|
||||||
this._keyboardVisiblechangedId = 0;
|
|
||||||
|
|
||||||
global.workspace_manager.disconnect(this._nWorkspacesChangedId);
|
|
||||||
this._nWorkspacesChangedId = 0;
|
|
||||||
|
|
||||||
global.window_manager.disconnect(this._switchWorkspaceId);
|
|
||||||
this._switchWorkspaceId = 0;
|
|
||||||
|
|
||||||
this._windowSignals.forEach((id, win) => win.disconnect(id));
|
this._windowSignals.forEach((id, win) => win.disconnect(id));
|
||||||
this._windowSignals.clear();
|
this._windowSignals.clear();
|
||||||
|
|
||||||
Main.overview.disconnect(this._overviewShowingId);
|
|
||||||
Main.overview.disconnect(this._overviewHidingId);
|
|
||||||
|
|
||||||
global.display.disconnect(this._fullscreenChangedId);
|
|
||||||
global.display.disconnect(this._windowCreatedId);
|
|
||||||
|
|
||||||
this._stopMonitoringDrag();
|
this._stopMonitoringDrag();
|
||||||
Main.xdndHandler.disconnect(this._dragBeginId);
|
|
||||||
Main.xdndHandler.disconnect(this._dragEndId);
|
|
||||||
|
|
||||||
this._settings.disconnect(this._groupingModeChangedId);
|
this._settings.run_dispose();
|
||||||
|
|
||||||
let windows = global.get_window_actors();
|
let windows = global.get_window_actors();
|
||||||
for (let i = 0; i < windows.length; i++)
|
for (let i = 0; i < windows.length; i++)
|
||||||
@@ -1138,9 +1094,9 @@ class WindowList extends St.Widget {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class Extension {
|
export default class WindowListExtension extends Extension {
|
||||||
constructor() {
|
constructor(metadata) {
|
||||||
ExtensionUtils.initTranslations();
|
super(metadata);
|
||||||
|
|
||||||
this._windowLists = null;
|
this._windowLists = null;
|
||||||
this._hideOverviewOrig = Main.overview.hide;
|
this._hideOverviewOrig = Main.overview.hide;
|
||||||
@@ -1149,17 +1105,17 @@ class Extension {
|
|||||||
enable() {
|
enable() {
|
||||||
this._windowLists = [];
|
this._windowLists = [];
|
||||||
|
|
||||||
this._settings = ExtensionUtils.getSettings();
|
this._settings = this.getSettings();
|
||||||
this._showOnAllMonitorsChangedId = this._settings.connect(
|
this._settings.connectObject('changed::show-on-all-monitors',
|
||||||
'changed::show-on-all-monitors', this._buildWindowLists.bind(this));
|
() => this._buildWindowLists(), this);
|
||||||
|
|
||||||
this._monitorsChangedId = Main.layoutManager.connect(
|
Main.layoutManager.connectObject('monitors-changed',
|
||||||
'monitors-changed', this._buildWindowLists.bind(this));
|
() => this._buildWindowLists(), this);
|
||||||
|
|
||||||
Main.windowPicker = new WindowPicker();
|
this.windowPicker = new WindowPicker();
|
||||||
|
|
||||||
Main.overview.hide = () => {
|
Main.overview.hide = () => {
|
||||||
Main.windowPicker.close();
|
this.windowPicker.close();
|
||||||
this._hideOverviewOrig.call(Main.overview);
|
this._hideOverviewOrig.call(Main.overview);
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -1174,7 +1130,7 @@ class Extension {
|
|||||||
|
|
||||||
Main.layoutManager.monitors.forEach(monitor => {
|
Main.layoutManager.monitors.forEach(monitor => {
|
||||||
if (showOnAllMonitors || monitor === Main.layoutManager.primaryMonitor)
|
if (showOnAllMonitors || monitor === Main.layoutManager.primaryMonitor)
|
||||||
this._windowLists.push(new WindowList(showOnAllMonitors, monitor));
|
this._windowLists.push(new WindowList(showOnAllMonitors, monitor, this.getSettings()));
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1182,11 +1138,8 @@ class Extension {
|
|||||||
if (!this._windowLists)
|
if (!this._windowLists)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
this._settings.disconnect(this._showOnAllMonitorsChangedId);
|
this._settings.disconnectObject(this);
|
||||||
this._showOnAllMonitorsChangedId = 0;
|
Main.layoutManager.disconnectObject(this);
|
||||||
|
|
||||||
Main.layoutManager.disconnect(this._monitorsChangedId);
|
|
||||||
this._monitorsChangedId = 0;
|
|
||||||
|
|
||||||
this._windowLists.forEach(windowList => {
|
this._windowLists.forEach(windowList => {
|
||||||
windowList.hide();
|
windowList.hide();
|
||||||
@@ -1194,8 +1147,8 @@ class Extension {
|
|||||||
});
|
});
|
||||||
this._windowLists = null;
|
this._windowLists = null;
|
||||||
|
|
||||||
Main.windowPicker.destroy();
|
this.windowPicker.destroy();
|
||||||
delete Main.windowPicker;
|
delete this.windowPicker;
|
||||||
|
|
||||||
Main.overview.hide = this._hideOverviewOrig;
|
Main.overview.hide = this._hideOverviewOrig;
|
||||||
}
|
}
|
||||||
@@ -1205,9 +1158,66 @@ class Extension {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
class Tooltip extends St.Label {
|
||||||
* @returns {Extension} - the extension's state object
|
static {
|
||||||
*/
|
GObject.registerClass(this);
|
||||||
function init() {
|
}
|
||||||
return new Extension();
|
|
||||||
|
constructor(widget, params) {
|
||||||
|
super(params);
|
||||||
|
|
||||||
|
this._widget = widget;
|
||||||
|
|
||||||
|
this._widget.connect('notify::hover', () => {
|
||||||
|
if (this._widget.hover)
|
||||||
|
this.open();
|
||||||
|
else
|
||||||
|
this.close();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
open() {
|
||||||
|
const buttonTitleWidget = this._widget.label_actor;
|
||||||
|
const [, , preferredTitleWidth] = buttonTitleWidget.get_preferred_size();
|
||||||
|
const maxTitleWidth = buttonTitleWidget.allocation.get_width();
|
||||||
|
const isTitleFullyShown = preferredTitleWidth <= maxTitleWidth;
|
||||||
|
|
||||||
|
if (isTitleFullyShown)
|
||||||
|
return;
|
||||||
|
|
||||||
|
this.set({
|
||||||
|
text: this._widget.label_actor.get_text(),
|
||||||
|
visible: true,
|
||||||
|
opacity: 0,
|
||||||
|
});
|
||||||
|
|
||||||
|
const [stageX, stageY] = this._widget.get_transformed_position();
|
||||||
|
const thumbWidth = this._widget.allocation.get_width();
|
||||||
|
const tipWidth = this.width;
|
||||||
|
const tipHeight = this.height;
|
||||||
|
const xOffset = Math.floor((thumbWidth - tipWidth) / 2);
|
||||||
|
const monitor = Main.layoutManager.findMonitorForActor(this);
|
||||||
|
const x = Math.clamp(
|
||||||
|
stageX + xOffset,
|
||||||
|
monitor.x,
|
||||||
|
monitor.x + monitor.width - tipWidth);
|
||||||
|
const y = stageY - tipHeight - TOOLTIP_OFFSET;
|
||||||
|
this.set_position(x, y);
|
||||||
|
|
||||||
|
this.ease({
|
||||||
|
opacity: 255,
|
||||||
|
duration: TOOLTIP_ANIMATION_TIME,
|
||||||
|
mode: Clutter.AnimationMode.EASE_OUT_QUAD,
|
||||||
|
onComplete: () => (this.visible = this._widget.hover),
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
close() {
|
||||||
|
this.ease({
|
||||||
|
opacity: 0,
|
||||||
|
duration: TOOLTIP_ANIMATION_TIME,
|
||||||
|
mode: Clutter.AnimationMode.EASE_OUT_QUAD,
|
||||||
|
onComplete: () => (this.visible = this._widget.hover),
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,11 +3,10 @@ extension_data += configure_file(
|
|||||||
output: metadata_name,
|
output: metadata_name,
|
||||||
configuration: metadata_conf
|
configuration: metadata_conf
|
||||||
)
|
)
|
||||||
extension_data += files('stylesheet.css')
|
extension_data += files(
|
||||||
|
'stylesheet-dark.css',
|
||||||
|
'stylesheet-light.css'
|
||||||
|
)
|
||||||
|
|
||||||
extension_sources += files('prefs.js', 'windowPicker.js', 'workspaceIndicator.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
|
|
||||||
extension_data += files('classic.css')
|
|
||||||
endif
|
|
||||||
|
|||||||
@@ -1,29 +1,24 @@
|
|||||||
// -*- mode: js2; indent-tabs-mode: nil; js2-basic-offset: 4 -*-
|
// -*- mode: js2; indent-tabs-mode: nil; js2-basic-offset: 4 -*-
|
||||||
/* exported init buildPrefsWidget */
|
import Adw from 'gi://Adw';
|
||||||
|
import Gio from 'gi://Gio';
|
||||||
|
import GLib from 'gi://GLib';
|
||||||
|
import GObject from 'gi://GObject';
|
||||||
|
import Gtk from 'gi://Gtk';
|
||||||
|
|
||||||
const { Adw, Gio, GLib, GObject, Gtk } = imports.gi;
|
import {ExtensionPreferences, gettext as _} from 'resource:///org/gnome/Shell/Extensions/js/extensions/prefs.js';
|
||||||
|
|
||||||
const ExtensionUtils = imports.misc.extensionUtils;
|
|
||||||
|
|
||||||
const _ = ExtensionUtils.gettext;
|
|
||||||
|
|
||||||
/** */
|
|
||||||
function init() {
|
|
||||||
ExtensionUtils.initTranslations();
|
|
||||||
}
|
|
||||||
|
|
||||||
class WindowListPrefsWidget extends Adw.PreferencesPage {
|
class WindowListPrefsWidget extends Adw.PreferencesPage {
|
||||||
static {
|
static {
|
||||||
GObject.registerClass(this);
|
GObject.registerClass(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
constructor() {
|
constructor(settings) {
|
||||||
super();
|
super();
|
||||||
|
|
||||||
this._actionGroup = new Gio.SimpleActionGroup();
|
this._actionGroup = new Gio.SimpleActionGroup();
|
||||||
this.insert_action_group('window-list', this._actionGroup);
|
this.insert_action_group('window-list', this._actionGroup);
|
||||||
|
|
||||||
this._settings = ExtensionUtils.getSettings();
|
this._settings = settings;
|
||||||
this._actionGroup.add_action(
|
this._actionGroup.add_action(
|
||||||
this._settings.create_action('grouping-mode'));
|
this._settings.create_action('grouping-mode'));
|
||||||
this._actionGroup.add_action(
|
this._actionGroup.add_action(
|
||||||
@@ -37,12 +32,12 @@ class WindowListPrefsWidget extends Adw.PreferencesPage {
|
|||||||
this.add(groupingGroup);
|
this.add(groupingGroup);
|
||||||
|
|
||||||
const modes = [
|
const modes = [
|
||||||
{ mode: 'never', title: _('Never group windows') },
|
{mode: 'never', title: _('Never group windows')},
|
||||||
{ mode: 'auto', title: _('Group windows when space is limited') },
|
{mode: 'auto', title: _('Group windows when space is limited')},
|
||||||
{ mode: 'always', title: _('Always group windows') },
|
{mode: 'always', title: _('Always group windows')},
|
||||||
];
|
];
|
||||||
|
|
||||||
for (const { mode, title } of modes) {
|
for (const {mode, title} of modes) {
|
||||||
const check = new Gtk.CheckButton({
|
const check = new Gtk.CheckButton({
|
||||||
action_name: 'window-list.grouping-mode',
|
action_name: 'window-list.grouping-mode',
|
||||||
action_target: new GLib.Variant('s', mode),
|
action_target: new GLib.Variant('s', mode),
|
||||||
@@ -84,9 +79,8 @@ class WindowListPrefsWidget extends Adw.PreferencesPage {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
export default class WindowListPrefs extends ExtensionPreferences {
|
||||||
* @returns {Gtk.Widget} - the prefs widget
|
getPreferencesWidget() {
|
||||||
*/
|
return new WindowListPrefsWidget(this.getSettings());
|
||||||
function buildPrefsWidget() {
|
}
|
||||||
return new WindowListPrefsWidget();
|
|
||||||
}
|
}
|
||||||
|
|||||||
113
extensions/window-list/stylesheet-dark.css
Normal file
113
extensions/window-list/stylesheet-dark.css
Normal file
@@ -0,0 +1,113 @@
|
|||||||
|
.window-list {
|
||||||
|
spacing: 2px;
|
||||||
|
font-size: 10pt;
|
||||||
|
}
|
||||||
|
|
||||||
|
.bottom-panel {
|
||||||
|
background-color: #000000;
|
||||||
|
border-top-width: 0px;
|
||||||
|
padding: 2px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.window-button {
|
||||||
|
padding: 2px, 1px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.window-button:first-child:ltr {
|
||||||
|
padding-left: 2px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.window-button:last-child:rtl {
|
||||||
|
padding-right: 2px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.window-button-box {
|
||||||
|
spacing: 4px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.window-button > StWidget,
|
||||||
|
.window-picker-toggle > StWidget {
|
||||||
|
color: #bbb;
|
||||||
|
background-color: #1d1d1d;
|
||||||
|
border-radius: 4px;
|
||||||
|
padding: 3px 6px 1px;
|
||||||
|
transition: 100ms ease;
|
||||||
|
}
|
||||||
|
|
||||||
|
.window-button > StWidget {
|
||||||
|
-st-natural-width: 18.75em;
|
||||||
|
max-width: 18.75em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.window-button:hover > StWidget,
|
||||||
|
.window-picker-toggle:hover > StWidget {
|
||||||
|
color: #fff;
|
||||||
|
background-color: #303030;
|
||||||
|
}
|
||||||
|
|
||||||
|
.window-button:active > StWidget,
|
||||||
|
.window-button:focus > StWidget {
|
||||||
|
color: #fff;
|
||||||
|
background-color: #3f3f3f;
|
||||||
|
}
|
||||||
|
|
||||||
|
.window-button.focused > StWidget,
|
||||||
|
.window-picker-toggle:checked > StWidget {
|
||||||
|
color: #fff;
|
||||||
|
background-color: #3f3f3f;
|
||||||
|
}
|
||||||
|
|
||||||
|
.window-button.focused:active > StWidget,
|
||||||
|
.window-picker-toggle:checked:active > StWidget {
|
||||||
|
color: #fff;
|
||||||
|
background-color: #3f3f3f;
|
||||||
|
}
|
||||||
|
|
||||||
|
.window-button.minimized > StWidget {
|
||||||
|
color: #666;
|
||||||
|
background-color: #161616;
|
||||||
|
}
|
||||||
|
|
||||||
|
.window-button.minimized:active > StWidget {
|
||||||
|
color: #666;
|
||||||
|
background-color: #161616;
|
||||||
|
}
|
||||||
|
|
||||||
|
.window-button-icon {
|
||||||
|
width: 24px;
|
||||||
|
height: 24px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.window-list-workspace-indicator .status-label-bin {
|
||||||
|
background-color: rgba(200, 200, 200, 0.3);
|
||||||
|
padding: 0 3px;
|
||||||
|
margin: 3px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.window-list-workspace-indicator .workspaces-box {
|
||||||
|
spacing: 3px;
|
||||||
|
padding: 3px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.window-list-workspace-indicator .workspace {
|
||||||
|
width: 52px;
|
||||||
|
border-radius: 4px;
|
||||||
|
background-color: #1e1e1e;
|
||||||
|
}
|
||||||
|
|
||||||
|
.window-list-workspace-indicator .workspace.active {
|
||||||
|
background-color: #3f3f3f;
|
||||||
|
}
|
||||||
|
|
||||||
|
.window-list-window-preview {
|
||||||
|
background-color: #bebebe;
|
||||||
|
border-radius: 1px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.window-list-window-preview.active {
|
||||||
|
background-color: #d4d4d4;
|
||||||
|
}
|
||||||
|
|
||||||
|
.notification {
|
||||||
|
font-weight: normal;
|
||||||
|
}
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
@import url("stylesheet.css");
|
@import url("stylesheet-dark.css");
|
||||||
|
|
||||||
#panel.bottom-panel {
|
#panel.bottom-panel {
|
||||||
border-top-width: 1px;
|
border-top-width: 1px;
|
||||||
@@ -1,115 +0,0 @@
|
|||||||
.window-list {
|
|
||||||
spacing: 2px;
|
|
||||||
font-size: 10pt;
|
|
||||||
}
|
|
||||||
|
|
||||||
.window-button {
|
|
||||||
padding: 1px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.window-button:first-child:ltr {
|
|
||||||
padding-left: 2px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.window-button:last-child:rtl {
|
|
||||||
padding-right: 2px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.window-button-box {
|
|
||||||
spacing: 4px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.window-button > StWidget,
|
|
||||||
.window-picker-toggle > StWidget {
|
|
||||||
color: #bbb;
|
|
||||||
background-color: black;
|
|
||||||
border-radius: 2px;
|
|
||||||
padding: 3px 6px 1px;
|
|
||||||
box-shadow: inset 1px 1px 4px rgba(255,255,255,0.5);
|
|
||||||
text-shadow: 1px 1px 4px rgba(0,0,0,0.8);
|
|
||||||
}
|
|
||||||
|
|
||||||
.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;
|
|
||||||
background-color: #1f1f1f;
|
|
||||||
}
|
|
||||||
|
|
||||||
.window-button:active > StWidget,
|
|
||||||
.window-button:focus > StWidget {
|
|
||||||
box-shadow: inset 2px 2px 4px rgba(255,255,255,0.5);
|
|
||||||
}
|
|
||||||
|
|
||||||
.window-button.focused > StWidget,
|
|
||||||
.window-picker-toggle:checked > StWidget {
|
|
||||||
color: white;
|
|
||||||
box-shadow: inset 1px 1px 4px rgba(255,255,255,0.7);
|
|
||||||
}
|
|
||||||
|
|
||||||
.window-button.focused:active > StWidget,
|
|
||||||
.window-picker-toggle:checked:active > StWidget {
|
|
||||||
box-shadow: inset 2px 2px 4px rgba(255,255,255,0.7);
|
|
||||||
}
|
|
||||||
|
|
||||||
.window-button.minimized > StWidget {
|
|
||||||
color: #666;
|
|
||||||
box-shadow: inset -1px -1px 4px rgba(255,255,255,0.5);
|
|
||||||
}
|
|
||||||
|
|
||||||
.window-button.minimized:active > StWidget {
|
|
||||||
box-shadow: inset -2px -2px 4px rgba(255,255,255,0.5);
|
|
||||||
}
|
|
||||||
|
|
||||||
.window-button-icon {
|
|
||||||
width: 24px;
|
|
||||||
height: 24px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.window-list-workspace-indicator .status-label-bin {
|
|
||||||
background-color: rgba(200, 200, 200, .3);
|
|
||||||
border: 1px solid #cccccc;
|
|
||||||
padding: 0 3px;
|
|
||||||
margin: 3px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.window-list-workspace-indicator .workspaces-box {
|
|
||||||
spacing: 3px;
|
|
||||||
padding: 3px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.window-list-workspace-indicator .workspace {
|
|
||||||
border: 2px solid #000;
|
|
||||||
width: 52px;
|
|
||||||
border-radius: 4px;
|
|
||||||
background-color: #595959;
|
|
||||||
}
|
|
||||||
|
|
||||||
.window-list-workspace-indicator .workspace.active {
|
|
||||||
border-color: #fff;
|
|
||||||
}
|
|
||||||
|
|
||||||
.window-list-window-preview {
|
|
||||||
background-color: #bebebe;
|
|
||||||
border: 1px solid #828282;
|
|
||||||
}
|
|
||||||
|
|
||||||
.window-list-window-preview.active {
|
|
||||||
background-color: #d4d4d4;
|
|
||||||
}
|
|
||||||
|
|
||||||
.notification {
|
|
||||||
font-weight: normal;
|
|
||||||
}
|
|
||||||
@@ -1,17 +1,20 @@
|
|||||||
/* exported WindowPicker, WindowPickerToggle */
|
import Clutter from 'gi://Clutter';
|
||||||
const { Clutter, GObject, Shell, St } = imports.gi;
|
import GObject from 'gi://GObject';
|
||||||
|
import Shell from 'gi://Shell';
|
||||||
|
import St from 'gi://St';
|
||||||
|
|
||||||
const Layout = imports.ui.layout;
|
import {Extension, InjectionManager} from 'resource:///org/gnome/shell/extensions/extension.js';
|
||||||
const Main = imports.ui.main;
|
import * as Layout from 'resource:///org/gnome/shell/ui/layout.js';
|
||||||
const { WorkspacesDisplay } = imports.ui.workspacesView;
|
import * as Main from 'resource:///org/gnome/shell/ui/main.js';
|
||||||
const Workspace = imports.ui.workspace;
|
import {WorkspacesDisplay} from 'resource:///org/gnome/shell/ui/workspacesView.js';
|
||||||
|
import * as Workspace from 'resource:///org/gnome/shell/ui/workspace.js';
|
||||||
|
|
||||||
const { VIGNETTE_BRIGHTNESS } = imports.ui.lightbox;
|
import {VIGNETTE_BRIGHTNESS} from 'resource:///org/gnome/shell/ui/lightbox.js';
|
||||||
const {
|
import {
|
||||||
SIDE_CONTROLS_ANIMATION_TIME,
|
SIDE_CONTROLS_ANIMATION_TIME,
|
||||||
OverviewAdjustment,
|
OverviewAdjustment,
|
||||||
ControlsState,
|
ControlsState
|
||||||
} = imports.ui.overviewControls;
|
} from 'resource:///org/gnome/shell/ui/overviewControls.js';
|
||||||
|
|
||||||
class MyWorkspacesDisplay extends WorkspacesDisplay {
|
class MyWorkspacesDisplay extends WorkspacesDisplay {
|
||||||
static {
|
static {
|
||||||
@@ -32,12 +35,13 @@ class MyWorkspacesDisplay extends WorkspacesDisplay {
|
|||||||
|
|
||||||
super(controls, workspaceAdjustment, overviewAdjustment);
|
super(controls, workspaceAdjustment, overviewAdjustment);
|
||||||
|
|
||||||
|
this._windowPicker = controls;
|
||||||
|
|
||||||
this._workspaceAdjustment = workspaceAdjustment;
|
this._workspaceAdjustment = workspaceAdjustment;
|
||||||
this._workspaceAdjustment.actor = this;
|
this._workspaceAdjustment.actor = this;
|
||||||
|
|
||||||
this._nWorkspacesChangedId =
|
workspaceManager.connectObject('notify::n-workspaces',
|
||||||
workspaceManager.connect('notify::n-workspaces',
|
() => this._updateAdjustment(), this);
|
||||||
this._updateAdjustment.bind(this));
|
|
||||||
|
|
||||||
this.add_constraint(
|
this.add_constraint(
|
||||||
new Layout.MonitorConstraint({
|
new Layout.MonitorConstraint({
|
||||||
@@ -48,7 +52,7 @@ class MyWorkspacesDisplay extends WorkspacesDisplay {
|
|||||||
|
|
||||||
prepareToEnterOverview(...args) {
|
prepareToEnterOverview(...args) {
|
||||||
if (!this._scrollEventId) {
|
if (!this._scrollEventId) {
|
||||||
this._scrollEventId = Main.windowPicker.connect('scroll-event',
|
this._scrollEventId = this._windowPicker.connect('scroll-event',
|
||||||
this._onScrollEvent.bind(this));
|
this._onScrollEvent.bind(this));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -57,7 +61,7 @@ class MyWorkspacesDisplay extends WorkspacesDisplay {
|
|||||||
|
|
||||||
vfunc_hide(...args) {
|
vfunc_hide(...args) {
|
||||||
if (this._scrollEventId > 0)
|
if (this._scrollEventId > 0)
|
||||||
Main.windowPicker.disconnect(this._scrollEventId);
|
this._windowPicker.disconnect(this._scrollEventId);
|
||||||
this._scrollEventId = 0;
|
this._scrollEventId = 0;
|
||||||
|
|
||||||
super.vfunc_hide(...args);
|
super.vfunc_hide(...args);
|
||||||
@@ -70,88 +74,11 @@ class MyWorkspacesDisplay extends WorkspacesDisplay {
|
|||||||
value: workspaceManager.get_active_workspace_index(),
|
value: workspaceManager.get_active_workspace_index(),
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
_onDestroy() {
|
|
||||||
if (this._nWorkspacesChangedId)
|
|
||||||
global.workspace_manager.disconnect(this._nWorkspacesChangedId);
|
|
||||||
this._nWorkspacesChangedId = 0;
|
|
||||||
|
|
||||||
super._onDestroy();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
class MyWorkspace extends Workspace.Workspace {
|
export class WindowPicker extends Clutter.Actor {
|
||||||
static {
|
|
||||||
GObject.registerClass(this);
|
|
||||||
}
|
|
||||||
|
|
||||||
constructor(...args) {
|
|
||||||
super(...args);
|
|
||||||
|
|
||||||
this._adjChangedId =
|
|
||||||
this._overviewAdjustment.connect('notify::value', () => {
|
|
||||||
const { value: progress } = this._overviewAdjustment;
|
|
||||||
const brightness = 1 - (1 - VIGNETTE_BRIGHTNESS) * progress;
|
|
||||||
for (const bg of this._background?._backgroundGroup ?? []) {
|
|
||||||
bg.content.set({
|
|
||||||
vignette: true,
|
|
||||||
brightness,
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
_onDestroy() {
|
|
||||||
super._onDestroy();
|
|
||||||
|
|
||||||
if (this._adjChangedId)
|
|
||||||
this._overviewAdjustment.disconnect(this._adjChangedId);
|
|
||||||
this._adjChangedId = 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
class MyWorkspaceBackground extends Workspace.WorkspaceBackground {
|
|
||||||
static {
|
|
||||||
GObject.registerClass(this);
|
|
||||||
}
|
|
||||||
|
|
||||||
_updateBorderRadius() {
|
|
||||||
}
|
|
||||||
|
|
||||||
vfunc_allocate(box) {
|
|
||||||
this.set_allocation(box);
|
|
||||||
|
|
||||||
const themeNode = this.get_theme_node();
|
|
||||||
const contentBox = themeNode.get_content_box(box);
|
|
||||||
|
|
||||||
this._bin.allocate(contentBox);
|
|
||||||
|
|
||||||
const [contentWidth, contentHeight] = contentBox.get_size();
|
|
||||||
const monitor = Main.layoutManager.monitors[this._monitorIndex];
|
|
||||||
const xRatio = contentWidth / this._workarea.width;
|
|
||||||
const yRatio = contentHeight / this._workarea.height;
|
|
||||||
|
|
||||||
const right = area => area.x + area.width;
|
|
||||||
const bottom = area => area.y + area.height;
|
|
||||||
|
|
||||||
const offsets = {
|
|
||||||
left: xRatio * (this._workarea.x - monitor.x),
|
|
||||||
right: xRatio * (right(monitor) - right(this._workarea)),
|
|
||||||
top: yRatio * (this._workarea.y - monitor.y),
|
|
||||||
bottom: yRatio * (bottom(monitor) - bottom(this._workarea)),
|
|
||||||
};
|
|
||||||
|
|
||||||
contentBox.set_origin(-offsets.left, -offsets.top);
|
|
||||||
contentBox.set_size(
|
|
||||||
offsets.left + contentWidth + offsets.right,
|
|
||||||
offsets.top + contentHeight + offsets.bottom);
|
|
||||||
this._backgroundGroup.allocate(contentBox);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
var WindowPicker = class WindowPicker extends Clutter.Actor {
|
|
||||||
static [GObject.signals] = {
|
static [GObject.signals] = {
|
||||||
'open-state-changed': { param_types: [GObject.TYPE_BOOLEAN] },
|
'open-state-changed': {param_types: [GObject.TYPE_BOOLEAN]},
|
||||||
};
|
};
|
||||||
|
|
||||||
static {
|
static {
|
||||||
@@ -159,16 +86,16 @@ var WindowPicker = class WindowPicker extends Clutter.Actor {
|
|||||||
}
|
}
|
||||||
|
|
||||||
constructor() {
|
constructor() {
|
||||||
super({ reactive: true });
|
super({reactive: true});
|
||||||
|
|
||||||
this._visible = false;
|
this._visible = false;
|
||||||
this._modal = false;
|
this._modal = false;
|
||||||
|
|
||||||
this._overlayKeyId = 0;
|
|
||||||
this._stageKeyPressId = 0;
|
this._stageKeyPressId = 0;
|
||||||
|
|
||||||
this._adjustment = new OverviewAdjustment(this);
|
this._adjustment = new OverviewAdjustment(this);
|
||||||
|
|
||||||
|
this._injectionManager = new InjectionManager();
|
||||||
this.connect('destroy', this._onDestroy.bind(this));
|
this.connect('destroy', this._onDestroy.bind(this));
|
||||||
|
|
||||||
global.bind_property('screen-width',
|
global.bind_property('screen-width',
|
||||||
@@ -186,21 +113,78 @@ var WindowPicker = class WindowPicker extends Clutter.Actor {
|
|||||||
if (!Main.sessionMode.hasOverview) {
|
if (!Main.sessionMode.hasOverview) {
|
||||||
this._injectBackgroundShade();
|
this._injectBackgroundShade();
|
||||||
|
|
||||||
this._overlayKeyId = global.display.connect('overlay-key', () => {
|
global.display.connectObject('overlay-key', () => {
|
||||||
if (!this._visible)
|
if (!this._visible)
|
||||||
this.open();
|
this.open();
|
||||||
else
|
else
|
||||||
this.close();
|
this.close();
|
||||||
});
|
}, this);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
_injectBackgroundShade() {
|
_injectBackgroundShade() {
|
||||||
this._origWorkspace = Workspace.Workspace;
|
const backgroundProto = Workspace.WorkspaceBackground.prototype;
|
||||||
this._origWorkspaceBackground = Workspace.WorkspaceBackground;
|
this._injectionManager.overrideMethod(backgroundProto, '_updateBorderRadius',
|
||||||
|
() => {
|
||||||
|
return function () {};
|
||||||
|
});
|
||||||
|
this._injectionManager.overrideMethod(backgroundProto, 'vfunc_allocate',
|
||||||
|
() => {
|
||||||
|
/* eslint-disable no-invalid-this */
|
||||||
|
return function (box) {
|
||||||
|
this.set_allocation(box);
|
||||||
|
|
||||||
Workspace.Workspace = MyWorkspace;
|
const themeNode = this.get_theme_node();
|
||||||
Workspace.WorkspaceBackground = MyWorkspaceBackground;
|
const contentBox = themeNode.get_content_box(box);
|
||||||
|
|
||||||
|
this._bin.allocate(contentBox);
|
||||||
|
|
||||||
|
const [contentWidth, contentHeight] = contentBox.get_size();
|
||||||
|
const monitor = Main.layoutManager.monitors[this._monitorIndex];
|
||||||
|
const xRatio = contentWidth / this._workarea.width;
|
||||||
|
const yRatio = contentHeight / this._workarea.height;
|
||||||
|
|
||||||
|
const right = area => area.x + area.width;
|
||||||
|
const bottom = area => area.y + area.height;
|
||||||
|
|
||||||
|
const offsets = {
|
||||||
|
left: xRatio * (this._workarea.x - monitor.x),
|
||||||
|
right: xRatio * (right(monitor) - right(this._workarea)),
|
||||||
|
top: yRatio * (this._workarea.y - monitor.y),
|
||||||
|
bottom: yRatio * (bottom(monitor) - bottom(this._workarea)),
|
||||||
|
};
|
||||||
|
|
||||||
|
contentBox.set_origin(-offsets.left, -offsets.top);
|
||||||
|
contentBox.set_size(
|
||||||
|
offsets.left + contentWidth + offsets.right,
|
||||||
|
offsets.top + contentHeight + offsets.bottom);
|
||||||
|
this._backgroundGroup.allocate(contentBox);
|
||||||
|
};
|
||||||
|
/* eslint-enable */
|
||||||
|
});
|
||||||
|
this._injectionManager.overrideMethod(backgroundProto, 'vfunc_parent_set',
|
||||||
|
() => {
|
||||||
|
/* eslint-disable no-invalid-this */
|
||||||
|
return function () {
|
||||||
|
setTimeout(() => {
|
||||||
|
const parent = this.get_parent();
|
||||||
|
if (!parent)
|
||||||
|
return;
|
||||||
|
|
||||||
|
parent._overviewAdjustment.connectObject('notify::value', () => {
|
||||||
|
const {value: progress} = parent._overviewAdjustment;
|
||||||
|
const brightness = 1 - (1 - VIGNETTE_BRIGHTNESS) * progress;
|
||||||
|
for (const bg of this._backgroundGroup ?? []) {
|
||||||
|
bg.content.set({
|
||||||
|
vignette: true,
|
||||||
|
brightness,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}, this);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
/* eslint-enable */
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
get visible() {
|
get visible() {
|
||||||
@@ -306,27 +290,15 @@ var WindowPicker = class WindowPicker extends Clutter.Actor {
|
|||||||
}
|
}
|
||||||
|
|
||||||
_onDestroy() {
|
_onDestroy() {
|
||||||
if (this._origWorkspace)
|
this._injectionManager.clear();
|
||||||
Workspace.Workspace = this._origWorkspace;
|
|
||||||
|
|
||||||
if (this._origWorkspaceBackground)
|
|
||||||
Workspace.WorkspaceBackground = this._origWorkspaceBackground;
|
|
||||||
|
|
||||||
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)
|
if (this._stageKeyPressId)
|
||||||
global.stage.disconnect(this._stageKeyPressId);
|
global.stage.disconnect(this._stageKeyPressId);
|
||||||
this._stageKeyPressId = 0;
|
this._stageKeyPressId = 0;
|
||||||
}
|
}
|
||||||
};
|
}
|
||||||
|
|
||||||
var WindowPickerToggle = class WindowPickerToggle extends St.Button {
|
export class WindowPickerToggle extends St.Button {
|
||||||
static {
|
static {
|
||||||
GObject.registerClass(this);
|
GObject.registerClass(this);
|
||||||
}
|
}
|
||||||
@@ -350,15 +322,16 @@ var WindowPickerToggle = class WindowPickerToggle extends St.Button {
|
|||||||
toggle_mode: true,
|
toggle_mode: true,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
const {windowPicker} = Extension.lookupByURL(import.meta.url);
|
||||||
this.connect('notify::checked', () => {
|
this.connect('notify::checked', () => {
|
||||||
if (this.checked)
|
if (this.checked)
|
||||||
Main.windowPicker.open();
|
windowPicker.open();
|
||||||
else
|
else
|
||||||
Main.windowPicker.close();
|
windowPicker.close();
|
||||||
});
|
});
|
||||||
|
|
||||||
Main.windowPicker.connect('open-state-changed', () => {
|
windowPicker.connect('open-state-changed', () => {
|
||||||
this.checked = Main.windowPicker.visible;
|
this.checked = windowPicker.visible;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
};
|
}
|
||||||
|
|||||||
@@ -1,13 +1,15 @@
|
|||||||
/* exported WorkspaceIndicator */
|
import Clutter from 'gi://Clutter';
|
||||||
const { Clutter, Gio, GObject, Meta, St } = imports.gi;
|
import Gio from 'gi://Gio';
|
||||||
|
import GObject from 'gi://GObject';
|
||||||
|
import Meta from 'gi://Meta';
|
||||||
|
import St from 'gi://St';
|
||||||
|
|
||||||
const DND = imports.ui.dnd;
|
import {gettext as _} from 'resource:///org/gnome/shell/extensions/extension.js';
|
||||||
const ExtensionUtils = imports.misc.extensionUtils;
|
|
||||||
const Main = imports.ui.main;
|
|
||||||
const PanelMenu = imports.ui.panelMenu;
|
|
||||||
const PopupMenu = imports.ui.popupMenu;
|
|
||||||
|
|
||||||
const _ = ExtensionUtils.gettext;
|
import * as DND from 'resource:///org/gnome/shell/ui/dnd.js';
|
||||||
|
import * as Main from 'resource:///org/gnome/shell/ui/main.js';
|
||||||
|
import * as PanelMenu from 'resource:///org/gnome/shell/ui/panelMenu.js';
|
||||||
|
import * as PopupMenu from 'resource:///org/gnome/shell/ui/popupMenu.js';
|
||||||
|
|
||||||
const TOOLTIP_OFFSET = 6;
|
const TOOLTIP_OFFSET = 6;
|
||||||
const TOOLTIP_ANIMATION_TIME = 150;
|
const TOOLTIP_ANIMATION_TIME = 150;
|
||||||
@@ -25,24 +27,21 @@ class WindowPreview extends St.Button {
|
|||||||
});
|
});
|
||||||
|
|
||||||
this._delegate = this;
|
this._delegate = this;
|
||||||
DND.makeDraggable(this, { restoreOnSuccess: true });
|
DND.makeDraggable(this, {restoreOnSuccess: true});
|
||||||
|
|
||||||
this._window = window;
|
this._window = window;
|
||||||
|
|
||||||
this.connect('destroy', this._onDestroy.bind(this));
|
this._window.connectObject(
|
||||||
|
'size-changed', () => this.queue_relayout(),
|
||||||
this._sizeChangedId = this._window.connect('size-changed',
|
'position-changed', () => {
|
||||||
() => this.queue_relayout());
|
|
||||||
this._positionChangedId = this._window.connect('position-changed',
|
|
||||||
() => {
|
|
||||||
this._updateVisible();
|
this._updateVisible();
|
||||||
this.queue_relayout();
|
this.queue_relayout();
|
||||||
});
|
},
|
||||||
this._minimizedChangedId = this._window.connect('notify::minimized',
|
'notify::minimized', this._updateVisible.bind(this),
|
||||||
this._updateVisible.bind(this));
|
this);
|
||||||
|
|
||||||
this._focusChangedId = global.display.connect('notify::focus-window',
|
global.display.connectObject('notify::focus-window',
|
||||||
this._onFocusChanged.bind(this));
|
this._onFocusChanged.bind(this), this);
|
||||||
this._onFocusChanged();
|
this._onFocusChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -51,13 +50,6 @@ class WindowPreview extends St.Button {
|
|||||||
return this._window;
|
return this._window;
|
||||||
}
|
}
|
||||||
|
|
||||||
_onDestroy() {
|
|
||||||
this._window.disconnect(this._sizeChangedId);
|
|
||||||
this._window.disconnect(this._positionChangedId);
|
|
||||||
this._window.disconnect(this._minimizedChangedId);
|
|
||||||
global.display.disconnect(this._focusChangedId);
|
|
||||||
}
|
|
||||||
|
|
||||||
_onFocusChanged() {
|
_onFocusChanged() {
|
||||||
if (global.display.focus_window === this._window)
|
if (global.display.focus_window === this._window)
|
||||||
this.add_style_class_name('active');
|
this.add_style_class_name('active');
|
||||||
@@ -138,16 +130,13 @@ class WorkspaceThumbnail extends St.Button {
|
|||||||
let workspaceManager = global.workspace_manager;
|
let workspaceManager = global.workspace_manager;
|
||||||
this._workspace = workspaceManager.get_workspace_by_index(index);
|
this._workspace = workspaceManager.get_workspace_by_index(index);
|
||||||
|
|
||||||
this._windowAddedId = this._workspace.connect('window-added',
|
this._workspace.connectObject(
|
||||||
(ws, window) => {
|
'window-added', (ws, window) => this._addWindow(window),
|
||||||
this._addWindow(window);
|
'window-removed', (ws, window) => this._removeWindow(window),
|
||||||
});
|
this);
|
||||||
this._windowRemovedId = this._workspace.connect('window-removed',
|
|
||||||
(ws, window) => {
|
global.display.connectObject('restacked',
|
||||||
this._removeWindow(window);
|
this._onRestacked.bind(this), this);
|
||||||
});
|
|
||||||
this._restackedId = global.display.connect('restacked',
|
|
||||||
this._onRestacked.bind(this));
|
|
||||||
|
|
||||||
this._workspace.list_windows().forEach(w => this._addWindow(w));
|
this._workspace.list_windows().forEach(w => this._addWindow(w));
|
||||||
this._onRestacked();
|
this._onRestacked();
|
||||||
@@ -245,20 +234,16 @@ class WorkspaceThumbnail extends St.Button {
|
|||||||
|
|
||||||
_onDestroy() {
|
_onDestroy() {
|
||||||
this._tooltip.destroy();
|
this._tooltip.destroy();
|
||||||
|
|
||||||
this._workspace.disconnect(this._windowAddedId);
|
|
||||||
this._workspace.disconnect(this._windowRemovedId);
|
|
||||||
global.display.disconnect(this._restackedId);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
var WorkspaceIndicator = class WorkspaceIndicator extends PanelMenu.Button {
|
export class WorkspaceIndicator extends PanelMenu.Button {
|
||||||
static {
|
static {
|
||||||
GObject.registerClass(this);
|
GObject.registerClass(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
constructor() {
|
constructor() {
|
||||||
super(0.0, _('Workspace Indicator'), true);
|
super(0.5, _('Workspace Indicator'), true);
|
||||||
this.setMenu(new PopupMenu.PopupMenu(this, 0.0, St.Side.BOTTOM));
|
this.setMenu(new PopupMenu.PopupMenu(this, 0.0, St.Side.BOTTOM));
|
||||||
this.add_style_class_name('window-list-workspace-indicator');
|
this.add_style_class_name('window-list-workspace-indicator');
|
||||||
this.remove_style_class_name('panel-button');
|
this.remove_style_class_name('panel-button');
|
||||||
@@ -274,7 +259,7 @@ var WorkspaceIndicator = class WorkspaceIndicator extends PanelMenu.Button {
|
|||||||
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({ text: this._getStatusText() });
|
this._statusLabel = new St.Label({text: this._getStatusText()});
|
||||||
|
|
||||||
this._statusBin = new St.Bin({
|
this._statusBin = new St.Bin({
|
||||||
style_class: 'status-label-bin',
|
style_class: 'status-label-bin',
|
||||||
@@ -295,39 +280,24 @@ var WorkspaceIndicator = class WorkspaceIndicator extends PanelMenu.Button {
|
|||||||
|
|
||||||
this._workspacesItems = [];
|
this._workspacesItems = [];
|
||||||
|
|
||||||
this._workspaceManagerSignals = [
|
workspaceManager.connectObject(
|
||||||
workspaceManager.connect('notify::n-workspaces',
|
'notify::n-workspaces', this._nWorkspacesChanged.bind(this), GObject.ConnectFlags.AFTER,
|
||||||
this._nWorkspacesChanged.bind(this)),
|
'workspace-switched', this._onWorkspaceSwitched.bind(this), GObject.ConnectFlags.AFTER,
|
||||||
workspaceManager.connect_after('workspace-switched',
|
'notify::layout-rows', this._updateThumbnailVisibility.bind(this),
|
||||||
this._onWorkspaceSwitched.bind(this)),
|
this);
|
||||||
workspaceManager.connect('notify::layout-rows',
|
|
||||||
this._updateThumbnailVisibility.bind(this)),
|
|
||||||
];
|
|
||||||
|
|
||||||
this.connect('scroll-event', this._onScrollEvent.bind(this));
|
this.connect('scroll-event', this._onScrollEvent.bind(this));
|
||||||
this._updateMenu();
|
this._updateMenu();
|
||||||
this._updateThumbnails();
|
this._updateThumbnails();
|
||||||
this._updateThumbnailVisibility();
|
this._updateThumbnailVisibility();
|
||||||
|
|
||||||
this._settings = new Gio.Settings({ schema_id: 'org.gnome.desktop.wm.preferences' });
|
this._settings = new Gio.Settings({schema_id: 'org.gnome.desktop.wm.preferences'});
|
||||||
this._settingsChangedId = this._settings.connect(
|
this._settings.connectObject('changed::workspace-names',
|
||||||
'changed::workspace-names', this._updateMenuLabels.bind(this));
|
() => this._updateMenuLabels(), 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();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
_updateThumbnailVisibility() {
|
_updateThumbnailVisibility() {
|
||||||
const { workspaceManager } = global;
|
const {workspaceManager} = global;
|
||||||
const vertical = workspaceManager.layout_rows === -1;
|
const vertical = workspaceManager.layout_rows === -1;
|
||||||
const useMenu =
|
const useMenu =
|
||||||
vertical || workspaceManager.n_workspaces > MAX_THUMBNAILS;
|
vertical || workspaceManager.n_workspaces > MAX_THUMBNAILS;
|
||||||
@@ -447,4 +417,4 @@ var WorkspaceIndicator = class WorkspaceIndicator extends PanelMenu.Button {
|
|||||||
let newIndex = this._currentWorkspace + diff;
|
let newIndex = this._currentWorkspace + diff;
|
||||||
this._activate(newIndex);
|
this._activate(newIndex);
|
||||||
}
|
}
|
||||||
};
|
}
|
||||||
|
|||||||
@@ -1,276 +1,290 @@
|
|||||||
/* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */
|
/* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */
|
||||||
/* exported init */
|
import Clutter from 'gi://Clutter';
|
||||||
const { Clutter, Graphene, GObject, St } = imports.gi;
|
import Graphene from 'gi://Graphene';
|
||||||
|
import St from 'gi://St';
|
||||||
|
|
||||||
const Main = imports.ui.main;
|
import * as Main from 'resource:///org/gnome/shell/ui/main.js';
|
||||||
const OverviewControls = imports.ui.overviewControls;
|
import * as OverviewControls from 'resource:///org/gnome/shell/ui/overviewControls.js';
|
||||||
const Workspace = imports.ui.workspace;
|
import {InjectionManager} from 'resource:///org/gnome/shell/extensions/extension.js';
|
||||||
const WorkspacesView = imports.ui.workspacesView;
|
import {WindowPreview} from 'resource:///org/gnome/shell/ui/windowPreview.js';
|
||||||
|
import {Workspace} from 'resource:///org/gnome/shell/ui/workspace.js';
|
||||||
|
import {WorkspacesView} from 'resource:///org/gnome/shell/ui/workspacesView.js';
|
||||||
|
|
||||||
const WINDOW_SLOT = 4;
|
const WINDOW_SLOT = 4;
|
||||||
|
|
||||||
class MyWorkspace extends Workspace.Workspace {
|
export default class Extension {
|
||||||
static {
|
|
||||||
GObject.registerClass(this);
|
|
||||||
}
|
|
||||||
|
|
||||||
constructor(...args) {
|
|
||||||
super(...args);
|
|
||||||
|
|
||||||
if (this.metaWorkspace && this.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;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
vfunc_allocate(box) {
|
|
||||||
super.vfunc_allocate(box);
|
|
||||||
|
|
||||||
if (this._tip)
|
|
||||||
this._tip.allocate_preferred_size(0, 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
showTooltip() {
|
|
||||||
if (!this._tip)
|
|
||||||
return;
|
|
||||||
this._tip.text = (this.metaWorkspace.index() + 1).toString();
|
|
||||||
this._tip.show();
|
|
||||||
this.set_child_below_sibling(this._tip, null);
|
|
||||||
}
|
|
||||||
|
|
||||||
hideTooltip() {
|
|
||||||
if (this._tip)
|
|
||||||
this._tip.hide();
|
|
||||||
}
|
|
||||||
|
|
||||||
getWindowWithTooltip(id) {
|
|
||||||
const { layoutManager } = this._container;
|
|
||||||
const slot = layoutManager._windowSlots[id - 1];
|
|
||||||
return slot ? slot[WINDOW_SLOT].metaWindow : null;
|
|
||||||
}
|
|
||||||
|
|
||||||
showWindowsTooltips() {
|
|
||||||
const { layoutManager } = this._container;
|
|
||||||
for (let i = 0; i < layoutManager._windowSlots.length; i++) {
|
|
||||||
if (layoutManager._windowSlots[i])
|
|
||||||
layoutManager._windowSlots[i][WINDOW_SLOT].showTooltip(`${i + 1}`);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
hideWindowsTooltips() {
|
|
||||||
const { layoutManager } = this._container;
|
|
||||||
for (let i in layoutManager._windowSlots) {
|
|
||||||
if (layoutManager._windowSlots[i])
|
|
||||||
layoutManager._windowSlots[i][WINDOW_SLOT].hideTooltip();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// overriding _addWindowClone to apply the tooltip patch on the cloned
|
|
||||||
// windowPreview
|
|
||||||
_addWindowClone(metaWindow) {
|
|
||||||
const clone = super._addWindowClone(metaWindow);
|
|
||||||
|
|
||||||
// appling the tooltip patch
|
|
||||||
(function patchPreview() {
|
|
||||||
this._text = new St.Label({
|
|
||||||
style_class: 'extension-windowsNavigator-window-tooltip',
|
|
||||||
visible: false,
|
|
||||||
});
|
|
||||||
|
|
||||||
this._text.add_constraint(new Clutter.BindConstraint({
|
|
||||||
source: this.windowContainer,
|
|
||||||
coordinate: Clutter.BindCoordinate.POSITION,
|
|
||||||
}));
|
|
||||||
this._text.add_constraint(new Clutter.AlignConstraint({
|
|
||||||
source: this.windowContainer,
|
|
||||||
align_axis: Clutter.AlignAxis.X_AXIS,
|
|
||||||
pivot_point: new Graphene.Point({ x: 0.5, y: -1 }),
|
|
||||||
factor: this._closeButtonSide === St.Side.LEFT ? 1 : 0,
|
|
||||||
}));
|
|
||||||
this._text.add_constraint(new Clutter.AlignConstraint({
|
|
||||||
source: this.windowContainer,
|
|
||||||
align_axis: Clutter.AlignAxis.Y_AXIS,
|
|
||||||
pivot_point: new Graphene.Point({ x: -1, y: 0.5 }),
|
|
||||||
factor: 0,
|
|
||||||
}));
|
|
||||||
|
|
||||||
this.add_child(this._text);
|
|
||||||
}).call(clone);
|
|
||||||
|
|
||||||
clone.showTooltip = function (text) {
|
|
||||||
this._text.set({ text });
|
|
||||||
this._text.show();
|
|
||||||
};
|
|
||||||
|
|
||||||
clone.hideTooltip = function () {
|
|
||||||
if (this._text && this._text.visible)
|
|
||||||
this._text.hide();
|
|
||||||
};
|
|
||||||
|
|
||||||
return clone;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
class MyWorkspacesView extends WorkspacesView.WorkspacesView {
|
|
||||||
static {
|
|
||||||
GObject.registerClass(this);
|
|
||||||
}
|
|
||||||
|
|
||||||
constructor(...args) {
|
|
||||||
super(...args);
|
|
||||||
|
|
||||||
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);
|
|
||||||
this._pickWindow = false;
|
|
||||||
for (let i = 0; i < this._workspaces.length; i++)
|
|
||||||
this._workspaces[i].hideWindowsTooltips();
|
|
||||||
}
|
|
||||||
|
|
||||||
_hideWorkspacesTooltips() {
|
|
||||||
global.stage.set_key_focus(this._prevFocusActor);
|
|
||||||
this._pickWorkspace = false;
|
|
||||||
for (let i = 0; i < this._workspaces.length; i++)
|
|
||||||
this._workspaces[i].hideTooltip();
|
|
||||||
}
|
|
||||||
|
|
||||||
_onKeyRelease(s, o) {
|
|
||||||
if (this._pickWindow &&
|
|
||||||
(o.get_key_symbol() === Clutter.KEY_Alt_L ||
|
|
||||||
o.get_key_symbol() === Clutter.KEY_Alt_R))
|
|
||||||
this._hideTooltips();
|
|
||||||
if (this._pickWorkspace &&
|
|
||||||
(o.get_key_symbol() === Clutter.KEY_Control_L ||
|
|
||||||
o.get_key_symbol() === Clutter.KEY_Control_R))
|
|
||||||
this._hideWorkspacesTooltips();
|
|
||||||
}
|
|
||||||
|
|
||||||
_onKeyPress(s, o) {
|
|
||||||
const { ControlsState } = OverviewControls;
|
|
||||||
if (this._overviewAdjustment.value !== ControlsState.WINDOW_PICKER)
|
|
||||||
return false;
|
|
||||||
|
|
||||||
let workspaceManager = global.workspace_manager;
|
|
||||||
|
|
||||||
if ((o.get_key_symbol() === Clutter.KEY_Alt_L ||
|
|
||||||
o.get_key_symbol() === Clutter.KEY_Alt_R) &&
|
|
||||||
!this._pickWorkspace) {
|
|
||||||
this._prevFocusActor = global.stage.get_key_focus();
|
|
||||||
global.stage.set_key_focus(null);
|
|
||||||
this._active = workspaceManager.get_active_workspace_index();
|
|
||||||
this._pickWindow = true;
|
|
||||||
this._workspaces[workspaceManager.get_active_workspace_index()].showWindowsTooltips();
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
if ((o.get_key_symbol() === Clutter.KEY_Control_L ||
|
|
||||||
o.get_key_symbol() === Clutter.KEY_Control_R) &&
|
|
||||||
!this._pickWindow) {
|
|
||||||
this._prevFocusActor = global.stage.get_key_focus();
|
|
||||||
global.stage.set_key_focus(null);
|
|
||||||
this._pickWorkspace = true;
|
|
||||||
for (let i = 0; i < this._workspaces.length; i++)
|
|
||||||
this._workspaces[i].showTooltip();
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (global.stage.get_key_focus() !== global.stage)
|
|
||||||
return false;
|
|
||||||
|
|
||||||
// ignore shift presses, they're required to get numerals in azerty keyboards
|
|
||||||
if ((this._pickWindow || this._pickWorkspace) &&
|
|
||||||
(o.get_key_symbol() === Clutter.KEY_Shift_L ||
|
|
||||||
o.get_key_symbol() === Clutter.KEY_Shift_R))
|
|
||||||
return true;
|
|
||||||
|
|
||||||
if (this._pickWindow) {
|
|
||||||
if (this._active !== workspaceManager.get_active_workspace_index()) {
|
|
||||||
this._hideTooltips();
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
let c = o.get_key_symbol() - Clutter.KEY_KP_0;
|
|
||||||
if (c > 9 || c <= 0) {
|
|
||||||
c = o.get_key_symbol() - Clutter.KEY_0;
|
|
||||||
if (c > 9 || c <= 0) {
|
|
||||||
this._hideTooltips();
|
|
||||||
global.log(c);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
let win = this._workspaces[this._active].getWindowWithTooltip(c);
|
|
||||||
this._hideTooltips();
|
|
||||||
|
|
||||||
if (win)
|
|
||||||
Main.activateWindow(win, global.get_current_time());
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
if (this._pickWorkspace) {
|
|
||||||
let c = o.get_key_symbol() - Clutter.KEY_KP_0;
|
|
||||||
if (c > 9 || c <= 0) {
|
|
||||||
c = o.get_key_symbol() - Clutter.KEY_0;
|
|
||||||
if (c > 9 || c <= 0) {
|
|
||||||
this._hideWorkspacesTooltips();
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
let workspace = this._workspaces[c - 1];
|
|
||||||
if (workspace !== undefined)
|
|
||||||
workspace.metaWorkspace.activate(global.get_current_time());
|
|
||||||
|
|
||||||
this._hideWorkspacesTooltips();
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
class Extension {
|
|
||||||
constructor() {
|
constructor() {
|
||||||
this._origWorkspace = Workspace.Workspace;
|
this._injectionManager = new InjectionManager();
|
||||||
this._origWorkspacesView = WorkspacesView.WorkspacesView;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
enable() {
|
enable() {
|
||||||
Workspace.Workspace = MyWorkspace;
|
const previewProto = WindowPreview.prototype;
|
||||||
WorkspacesView.WorkspacesView = MyWorkspacesView;
|
|
||||||
|
this._injectionManager.overrideMethod(previewProto, '_init', originalMethod => {
|
||||||
|
/* eslint-disable no-invalid-this */
|
||||||
|
return function (...args) {
|
||||||
|
originalMethod.call(this, ...args);
|
||||||
|
|
||||||
|
this._text = new St.Label({
|
||||||
|
style_class: 'extension-windowsNavigator-window-tooltip',
|
||||||
|
visible: false,
|
||||||
|
});
|
||||||
|
|
||||||
|
this._text.add_constraint(new Clutter.BindConstraint({
|
||||||
|
source: this.windowContainer,
|
||||||
|
coordinate: Clutter.BindCoordinate.POSITION,
|
||||||
|
}));
|
||||||
|
this._text.add_constraint(new Clutter.AlignConstraint({
|
||||||
|
source: this.windowContainer,
|
||||||
|
align_axis: Clutter.AlignAxis.X_AXIS,
|
||||||
|
pivot_point: new Graphene.Point({x: 0.5, y: -1}),
|
||||||
|
factor: this._closeButtonSide === St.Side.LEFT ? 1 : 0,
|
||||||
|
}));
|
||||||
|
this._text.add_constraint(new Clutter.AlignConstraint({
|
||||||
|
source: this.windowContainer,
|
||||||
|
align_axis: Clutter.AlignAxis.Y_AXIS,
|
||||||
|
pivot_point: new Graphene.Point({x: -1, y: 0.5}),
|
||||||
|
factor: 0,
|
||||||
|
}));
|
||||||
|
|
||||||
|
this.add_child(this._text);
|
||||||
|
};
|
||||||
|
/* eslint-enable */
|
||||||
|
});
|
||||||
|
this._injectionManager.overrideMethod(previewProto, 'showTooltip', () => {
|
||||||
|
/* eslint-disable no-invalid-this */
|
||||||
|
return function (text) {
|
||||||
|
this._text.set({text});
|
||||||
|
this._text.show();
|
||||||
|
};
|
||||||
|
/* eslint-enable */
|
||||||
|
});
|
||||||
|
this._injectionManager.overrideMethod(previewProto, 'hideTooltip', () => {
|
||||||
|
/* eslint-disable no-invalid-this */
|
||||||
|
return function () {
|
||||||
|
this._text?.hide();
|
||||||
|
};
|
||||||
|
/* eslint-enable */
|
||||||
|
});
|
||||||
|
|
||||||
|
const workspaceProto = Workspace.prototype;
|
||||||
|
this._injectionManager.overrideMethod(workspaceProto, '_init', originalMethod => {
|
||||||
|
/* eslint-disable no-invalid-this */
|
||||||
|
return function (...args) {
|
||||||
|
originalMethod.call(this, ...args);
|
||||||
|
|
||||||
|
if (this.metaWorkspace && this.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;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
/* eslint-enable */
|
||||||
|
});
|
||||||
|
this._injectionManager.overrideMethod(workspaceProto, 'vfunc_allocate', originalMethod => {
|
||||||
|
/* eslint-disable no-invalid-this */
|
||||||
|
return function (box) {
|
||||||
|
originalMethod.call(this, box);
|
||||||
|
|
||||||
|
this._tip?.allocate_preferred_size(0, 0);
|
||||||
|
};
|
||||||
|
/* eslint-enable */
|
||||||
|
});
|
||||||
|
this._injectionManager.overrideMethod(workspaceProto, 'showTooltip', () => {
|
||||||
|
/* eslint-disable no-invalid-this */
|
||||||
|
return function () {
|
||||||
|
if (!this._tip)
|
||||||
|
return;
|
||||||
|
this._tip.text = (this.metaWorkspace.index() + 1).toString();
|
||||||
|
this._tip.show();
|
||||||
|
this.set_child_below_sibling(this._tip, null);
|
||||||
|
};
|
||||||
|
/* eslint-enable */
|
||||||
|
});
|
||||||
|
this._injectionManager.overrideMethod(workspaceProto, 'hideTooltip', () => {
|
||||||
|
/* eslint-disable no-invalid-this */
|
||||||
|
return function () {
|
||||||
|
this._tip?.hide();
|
||||||
|
};
|
||||||
|
/* eslint-enable */
|
||||||
|
});
|
||||||
|
this._injectionManager.overrideMethod(workspaceProto, 'getWindowWithTooltip', () => {
|
||||||
|
/* eslint-disable no-invalid-this */
|
||||||
|
return function (id) {
|
||||||
|
const {layoutManager} = this._container;
|
||||||
|
const slot = layoutManager._windowSlots[id - 1];
|
||||||
|
return slot ? slot[WINDOW_SLOT].metaWindow : null;
|
||||||
|
};
|
||||||
|
/* eslint-enable */
|
||||||
|
});
|
||||||
|
this._injectionManager.overrideMethod(workspaceProto, 'showWindowsTooltips', () => {
|
||||||
|
/* eslint-disable no-invalid-this */
|
||||||
|
return function () {
|
||||||
|
const {layoutManager} = this._container;
|
||||||
|
for (let i = 0; i < layoutManager._windowSlots.length; i++) {
|
||||||
|
if (layoutManager._windowSlots[i])
|
||||||
|
layoutManager._windowSlots[i][WINDOW_SLOT].showTooltip(`${i + 1}`);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
/* eslint-enable */
|
||||||
|
});
|
||||||
|
this._injectionManager.overrideMethod(workspaceProto, 'hideWindowsTooltips', () => {
|
||||||
|
/* eslint-disable no-invalid-this */
|
||||||
|
return function () {
|
||||||
|
const {layoutManager} = this._container;
|
||||||
|
for (let i in layoutManager._windowSlots) {
|
||||||
|
if (layoutManager._windowSlots[i])
|
||||||
|
layoutManager._windowSlots[i][WINDOW_SLOT].hideTooltip();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
/* eslint-enable */
|
||||||
|
});
|
||||||
|
|
||||||
|
const viewProto = WorkspacesView.prototype;
|
||||||
|
this._injectionManager.overrideMethod(viewProto, '_init', originalMethod => {
|
||||||
|
/* eslint-disable no-invalid-this */
|
||||||
|
return function (...args) {
|
||||||
|
originalMethod.call(this, ...args);
|
||||||
|
|
||||||
|
this._pickWorkspace = false;
|
||||||
|
this._pickWindow = false;
|
||||||
|
global.stage.connectObject(
|
||||||
|
'key-press-event', this._onKeyPress.bind(this),
|
||||||
|
'key-release-event', this._onKeyRelease.bind(this),
|
||||||
|
this);
|
||||||
|
};
|
||||||
|
/* eslint-enable */
|
||||||
|
});
|
||||||
|
this._injectionManager.overrideMethod(viewProto, '_hideTooltips', () => {
|
||||||
|
/* eslint-disable no-invalid-this */
|
||||||
|
return function () {
|
||||||
|
if (global.stage.get_key_focus() === global.stage)
|
||||||
|
global.stage.set_key_focus(this._prevFocusActor);
|
||||||
|
this._pickWindow = false;
|
||||||
|
for (let i = 0; i < this._workspaces.length; i++)
|
||||||
|
this._workspaces[i].hideWindowsTooltips();
|
||||||
|
};
|
||||||
|
/* eslint-enable */
|
||||||
|
});
|
||||||
|
this._injectionManager.overrideMethod(viewProto, '_hideWorkspacesTooltips', () => {
|
||||||
|
/* eslint-disable no-invalid-this */
|
||||||
|
return function () {
|
||||||
|
global.stage.set_key_focus(this._prevFocusActor);
|
||||||
|
this._pickWorkspace = false;
|
||||||
|
for (let i = 0; i < this._workspaces.length; i++)
|
||||||
|
this._workspaces[i].hideTooltip();
|
||||||
|
};
|
||||||
|
/* eslint-enable */
|
||||||
|
});
|
||||||
|
this._injectionManager.overrideMethod(viewProto, '_onKeyRelease', () => {
|
||||||
|
/* eslint-disable no-invalid-this */
|
||||||
|
return function (actor, event) {
|
||||||
|
if (this._pickWindow &&
|
||||||
|
(event.get_key_symbol() === Clutter.KEY_Alt_L ||
|
||||||
|
event.get_key_symbol() === Clutter.KEY_Alt_R))
|
||||||
|
this._hideTooltips();
|
||||||
|
if (this._pickWorkspace &&
|
||||||
|
(event.get_key_symbol() === Clutter.KEY_Control_L ||
|
||||||
|
event.get_key_symbol() === Clutter.KEY_Control_R))
|
||||||
|
this._hideWorkspacesTooltips();
|
||||||
|
};
|
||||||
|
/* eslint-enable */
|
||||||
|
});
|
||||||
|
this._injectionManager.overrideMethod(viewProto, '_onKeyPress', () => {
|
||||||
|
/* eslint-disable no-invalid-this */
|
||||||
|
return function (actor, event) {
|
||||||
|
const {ControlsState} = OverviewControls;
|
||||||
|
if (this._overviewAdjustment.value !== ControlsState.WINDOW_PICKER)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
let workspaceManager = global.workspace_manager;
|
||||||
|
|
||||||
|
if ((event.get_key_symbol() === Clutter.KEY_Alt_L ||
|
||||||
|
event.get_key_symbol() === Clutter.KEY_Alt_R) &&
|
||||||
|
!this._pickWorkspace) {
|
||||||
|
this._prevFocusActor = global.stage.get_key_focus();
|
||||||
|
global.stage.set_key_focus(null);
|
||||||
|
this._active = workspaceManager.get_active_workspace_index();
|
||||||
|
this._pickWindow = true;
|
||||||
|
this._workspaces[workspaceManager.get_active_workspace_index()].showWindowsTooltips();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
if ((event.get_key_symbol() === Clutter.KEY_Control_L ||
|
||||||
|
event.get_key_symbol() === Clutter.KEY_Control_R) &&
|
||||||
|
!this._pickWindow) {
|
||||||
|
this._prevFocusActor = global.stage.get_key_focus();
|
||||||
|
global.stage.set_key_focus(null);
|
||||||
|
this._pickWorkspace = true;
|
||||||
|
for (let i = 0; i < this._workspaces.length; i++)
|
||||||
|
this._workspaces[i].showTooltip();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (global.stage.get_key_focus() !== global.stage)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
// ignore shift presses, they're required to get numerals in azerty keyboards
|
||||||
|
if ((this._pickWindow || this._pickWorkspace) &&
|
||||||
|
(event.get_key_symbol() === Clutter.KEY_Shift_L ||
|
||||||
|
event.get_key_symbol() === Clutter.KEY_Shift_R))
|
||||||
|
return true;
|
||||||
|
|
||||||
|
if (this._pickWindow) {
|
||||||
|
if (this._active !== workspaceManager.get_active_workspace_index()) {
|
||||||
|
this._hideTooltips();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
let c = event.get_key_symbol() - Clutter.KEY_KP_0;
|
||||||
|
if (c > 9 || c <= 0) {
|
||||||
|
c = event.get_key_symbol() - Clutter.KEY_0;
|
||||||
|
if (c > 9 || c <= 0) {
|
||||||
|
this._hideTooltips();
|
||||||
|
log(c);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
let win = this._workspaces[this._active].getWindowWithTooltip(c);
|
||||||
|
this._hideTooltips();
|
||||||
|
|
||||||
|
if (win)
|
||||||
|
Main.activateWindow(win, global.get_current_time());
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
if (this._pickWorkspace) {
|
||||||
|
let c = event.get_key_symbol() - Clutter.KEY_KP_0;
|
||||||
|
if (c > 9 || c <= 0) {
|
||||||
|
c = event.get_key_symbol() - Clutter.KEY_0;
|
||||||
|
if (c > 9 || c <= 0) {
|
||||||
|
this._hideWorkspacesTooltips();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
let workspace = this._workspaces[c - 1];
|
||||||
|
if (workspace !== undefined)
|
||||||
|
workspace.metaWorkspace.activate(global.get_current_time());
|
||||||
|
|
||||||
|
this._hideWorkspacesTooltips();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
/* eslint-enable */
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
disable() {
|
disable() {
|
||||||
Workspace.Workspace = this._origWorkspace;
|
this._injectionManager.clear();
|
||||||
WorkspacesView.WorkspacesView = this._origWorkspacesView;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @returns {Extension} - the extension's state object
|
|
||||||
*/
|
|
||||||
function init() {
|
|
||||||
return new Extension();
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -1,15 +1,16 @@
|
|||||||
// -*- mode: js2; indent-tabs-mode: nil; js2-basic-offset: 4 -*-
|
// -*- mode: js2; indent-tabs-mode: nil; js2-basic-offset: 4 -*-
|
||||||
/* exported init enable disable */
|
import Clutter from 'gi://Clutter';
|
||||||
|
import Gio from 'gi://Gio';
|
||||||
|
import GObject from 'gi://GObject';
|
||||||
|
import Meta from 'gi://Meta';
|
||||||
|
import St from 'gi://St';
|
||||||
|
|
||||||
const { Clutter, Gio, GObject, Meta, St } = imports.gi;
|
import {Extension, gettext as _} from 'resource:///org/gnome/shell/extensions/extension.js';
|
||||||
|
|
||||||
const DND = imports.ui.dnd;
|
import * as DND from 'resource:///org/gnome/shell/ui/dnd.js';
|
||||||
const ExtensionUtils = imports.misc.extensionUtils;
|
import * as Main from 'resource:///org/gnome/shell/ui/main.js';
|
||||||
const Main = imports.ui.main;
|
import * as PanelMenu from 'resource:///org/gnome/shell/ui/panelMenu.js';
|
||||||
const PanelMenu = imports.ui.panelMenu;
|
import * as PopupMenu from 'resource:///org/gnome/shell/ui/popupMenu.js';
|
||||||
const PopupMenu = imports.ui.popupMenu;
|
|
||||||
|
|
||||||
const _ = ExtensionUtils.gettext;
|
|
||||||
|
|
||||||
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';
|
||||||
@@ -30,24 +31,21 @@ class WindowPreview extends St.Button {
|
|||||||
});
|
});
|
||||||
|
|
||||||
this._delegate = this;
|
this._delegate = this;
|
||||||
DND.makeDraggable(this, { restoreOnSuccess: true });
|
DND.makeDraggable(this, {restoreOnSuccess: true});
|
||||||
|
|
||||||
this._window = window;
|
this._window = window;
|
||||||
|
|
||||||
this.connect('destroy', this._onDestroy.bind(this));
|
this._window.connectObject(
|
||||||
|
'size-changed', () => this.queue_relayout(),
|
||||||
this._sizeChangedId = this._window.connect('size-changed',
|
'position-changed', () => {
|
||||||
() => this.queue_relayout());
|
|
||||||
this._positionChangedId = this._window.connect('position-changed',
|
|
||||||
() => {
|
|
||||||
this._updateVisible();
|
this._updateVisible();
|
||||||
this.queue_relayout();
|
this.queue_relayout();
|
||||||
});
|
},
|
||||||
this._minimizedChangedId = this._window.connect('notify::minimized',
|
'notify::minimized', this._updateVisible.bind(this),
|
||||||
this._updateVisible.bind(this));
|
this);
|
||||||
|
|
||||||
this._focusChangedId = global.display.connect('notify::focus-window',
|
global.display.connectObject('notify::focus-window',
|
||||||
this._onFocusChanged.bind(this));
|
this._onFocusChanged.bind(this), this);
|
||||||
this._onFocusChanged();
|
this._onFocusChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -56,13 +54,6 @@ class WindowPreview extends St.Button {
|
|||||||
return this._window;
|
return this._window;
|
||||||
}
|
}
|
||||||
|
|
||||||
_onDestroy() {
|
|
||||||
this._window.disconnect(this._sizeChangedId);
|
|
||||||
this._window.disconnect(this._positionChangedId);
|
|
||||||
this._window.disconnect(this._minimizedChangedId);
|
|
||||||
global.display.disconnect(this._focusChangedId);
|
|
||||||
}
|
|
||||||
|
|
||||||
_onFocusChanged() {
|
_onFocusChanged() {
|
||||||
if (global.display.focus_window === this._window)
|
if (global.display.focus_window === this._window)
|
||||||
this.add_style_class_name('active');
|
this.add_style_class_name('active');
|
||||||
@@ -143,16 +134,13 @@ class WorkspaceThumbnail extends St.Button {
|
|||||||
let workspaceManager = global.workspace_manager;
|
let workspaceManager = global.workspace_manager;
|
||||||
this._workspace = workspaceManager.get_workspace_by_index(index);
|
this._workspace = workspaceManager.get_workspace_by_index(index);
|
||||||
|
|
||||||
this._windowAddedId = this._workspace.connect('window-added',
|
this._workspace.connectObject(
|
||||||
(ws, window) => {
|
'window-added', (ws, window) => this._addWindow(window),
|
||||||
this._addWindow(window);
|
'window-removed', (ws, window) => this._removeWindow(window),
|
||||||
});
|
this);
|
||||||
this._windowRemovedId = this._workspace.connect('window-removed',
|
|
||||||
(ws, window) => {
|
global.display.connectObject('restacked',
|
||||||
this._removeWindow(window);
|
this._onRestacked.bind(this), this);
|
||||||
});
|
|
||||||
this._restackedId = global.display.connect('restacked',
|
|
||||||
this._onRestacked.bind(this));
|
|
||||||
|
|
||||||
this._workspace.list_windows().forEach(w => this._addWindow(w));
|
this._workspace.list_windows().forEach(w => this._addWindow(w));
|
||||||
this._onRestacked();
|
this._onRestacked();
|
||||||
@@ -250,10 +238,6 @@ class WorkspaceThumbnail extends St.Button {
|
|||||||
|
|
||||||
_onDestroy() {
|
_onDestroy() {
|
||||||
this._tooltip.destroy();
|
this._tooltip.destroy();
|
||||||
|
|
||||||
this._workspace.disconnect(this._windowAddedId);
|
|
||||||
this._workspace.disconnect(this._windowRemovedId);
|
|
||||||
global.display.disconnect(this._restackedId);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -263,7 +247,7 @@ class WorkspaceIndicator extends PanelMenu.Button {
|
|||||||
}
|
}
|
||||||
|
|
||||||
constructor() {
|
constructor() {
|
||||||
super(0.0, _('Workspace Indicator'));
|
super(0.5, _('Workspace Indicator'));
|
||||||
|
|
||||||
let container = new St.Widget({
|
let container = new St.Widget({
|
||||||
layout_manager: new Clutter.BinLayout(),
|
layout_manager: new Clutter.BinLayout(),
|
||||||
@@ -295,14 +279,11 @@ class WorkspaceIndicator extends PanelMenu.Button {
|
|||||||
this._workspaceSection = new PopupMenu.PopupMenuSection();
|
this._workspaceSection = new PopupMenu.PopupMenuSection();
|
||||||
this.menu.addMenuItem(this._workspaceSection);
|
this.menu.addMenuItem(this._workspaceSection);
|
||||||
|
|
||||||
this._workspaceManagerSignals = [
|
workspaceManager.connectObject(
|
||||||
workspaceManager.connect_after('notify::n-workspaces',
|
'notify::n-workspaces', this._nWorkspacesChanged.bind(this), GObject.ConnectFlags.AFTER,
|
||||||
this._nWorkspacesChanged.bind(this)),
|
'workspace-switched', this._onWorkspaceSwitched.bind(this), GObject.ConnectFlags.AFTER,
|
||||||
workspaceManager.connect_after('workspace-switched',
|
'notify::layout-rows', this._updateThumbnailVisibility.bind(this),
|
||||||
this._onWorkspaceSwitched.bind(this)),
|
this);
|
||||||
workspaceManager.connect('notify::layout-rows',
|
|
||||||
this._updateThumbnailVisibility.bind(this)),
|
|
||||||
];
|
|
||||||
|
|
||||||
this.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._thumbnailsBox.connect('scroll-event', this._onScrollEvent.bind(this));
|
||||||
@@ -310,28 +291,19 @@ class WorkspaceIndicator extends PanelMenu.Button {
|
|||||||
this._updateThumbnails();
|
this._updateThumbnails();
|
||||||
this._updateThumbnailVisibility();
|
this._updateThumbnailVisibility();
|
||||||
|
|
||||||
this._settings = new Gio.Settings({ schema_id: WORKSPACE_SCHEMA });
|
this._settings = new Gio.Settings({schema_id: WORKSPACE_SCHEMA});
|
||||||
this._settingsChangedId = this._settings.connect(
|
this._settings.connectObject(`changed::${WORKSPACE_KEY}`,
|
||||||
`changed::${WORKSPACE_KEY}`,
|
this._updateMenuLabels.bind(this), this);
|
||||||
this._updateMenuLabels.bind(this));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
_onDestroy() {
|
_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;
|
|
||||||
}
|
|
||||||
|
|
||||||
Main.panel.set_offscreen_redirect(Clutter.OffscreenRedirect.ALWAYS);
|
Main.panel.set_offscreen_redirect(Clutter.OffscreenRedirect.ALWAYS);
|
||||||
|
|
||||||
super._onDestroy();
|
super._onDestroy();
|
||||||
}
|
}
|
||||||
|
|
||||||
_updateThumbnailVisibility() {
|
_updateThumbnailVisibility() {
|
||||||
const { workspaceManager } = global;
|
const {workspaceManager} = global;
|
||||||
const vertical = workspaceManager.layout_rows === -1;
|
const vertical = workspaceManager.layout_rows === -1;
|
||||||
const useMenu =
|
const useMenu =
|
||||||
vertical || workspaceManager.n_workspaces > MAX_THUMBNAILS;
|
vertical || workspaceManager.n_workspaces > MAX_THUMBNAILS;
|
||||||
@@ -454,20 +426,14 @@ class WorkspaceIndicator extends PanelMenu.Button {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/** */
|
export default class WorkspaceIndicatorExtension extends Extension {
|
||||||
function init() {
|
enable() {
|
||||||
ExtensionUtils.initTranslations();
|
this._indicator = new WorkspaceIndicator();
|
||||||
}
|
Main.panel.addToStatusArea('workspace-indicator', this._indicator);
|
||||||
|
}
|
||||||
|
|
||||||
let _indicator;
|
disable() {
|
||||||
|
this._indicator.destroy();
|
||||||
/** */
|
delete this._indicator;
|
||||||
function enable() {
|
}
|
||||||
_indicator = new WorkspaceIndicator();
|
|
||||||
Main.panel.addToStatusArea('workspace-indicator', _indicator);
|
|
||||||
}
|
|
||||||
|
|
||||||
/** */
|
|
||||||
function disable() {
|
|
||||||
_indicator.destroy();
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,11 +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 */
|
import Adw from 'gi://Adw';
|
||||||
|
import Gio from 'gi://Gio';
|
||||||
|
import GLib from 'gi://GLib';
|
||||||
|
import GObject from 'gi://GObject';
|
||||||
|
import Gtk from 'gi://Gtk';
|
||||||
|
import Pango from 'gi://Pango';
|
||||||
|
|
||||||
const { Adw, Gio, GLib, GObject, Gtk, Pango } = imports.gi;
|
import {ExtensionPreferences, gettext as _} from 'resource:///org/gnome/Shell/Extensions/js/extensions/prefs.js';
|
||||||
|
|
||||||
const ExtensionUtils = imports.misc.extensionUtils;
|
|
||||||
|
|
||||||
const _ = ExtensionUtils.gettext;
|
|
||||||
const N_ = e => e;
|
const N_ = e => e;
|
||||||
|
|
||||||
const WORKSPACE_SCHEMA = 'org.gnome.desktop.wm.preferences';
|
const WORKSPACE_SCHEMA = 'org.gnome.desktop.wm.preferences';
|
||||||
@@ -41,7 +43,7 @@ class WorkspacesList extends GObject.Object {
|
|||||||
GObject.registerClass(this);
|
GObject.registerClass(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
#settings = new Gio.Settings({ schema_id: WORKSPACE_SCHEMA });
|
#settings = new Gio.Settings({schema_id: WORKSPACE_SCHEMA});
|
||||||
#names = this.#settings.get_strv(WORKSPACE_KEY);
|
#names = this.#settings.get_strv(WORKSPACE_KEY);
|
||||||
#items = Gtk.StringList.new(this.#names);
|
#items = Gtk.StringList.new(this.#names);
|
||||||
#changedId;
|
#changedId;
|
||||||
@@ -131,8 +133,8 @@ class WorkspaceSettingsWidget extends Adw.PreferencesGroup {
|
|||||||
|
|
||||||
this._workspaces = new WorkspacesList();
|
this._workspaces = new WorkspacesList();
|
||||||
|
|
||||||
const store = new Gio.ListStore({ item_type: Gio.ListModel });
|
const store = new Gio.ListStore({item_type: Gio.ListModel});
|
||||||
const listModel = new Gtk.FlattenListModel({ model: store });
|
const listModel = new Gtk.FlattenListModel({model: store});
|
||||||
store.append(this._workspaces);
|
store.append(this._workspaces);
|
||||||
store.append(new NewItemModel());
|
store.append(new NewItemModel());
|
||||||
|
|
||||||
@@ -157,7 +159,7 @@ class WorkspaceRow extends Adw.PreferencesRow {
|
|||||||
}
|
}
|
||||||
|
|
||||||
constructor(name) {
|
constructor(name) {
|
||||||
super({ name });
|
super({name});
|
||||||
|
|
||||||
const box = new Gtk.Box({
|
const box = new Gtk.Box({
|
||||||
spacing: 12,
|
spacing: 12,
|
||||||
@@ -256,14 +258,8 @@ class NewWorkspaceRow extends Adw.PreferencesRow {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/** */
|
export default class WorkspaceIndicatorPrefs extends ExtensionPreferences {
|
||||||
function init() {
|
getPreferencesWidget() {
|
||||||
ExtensionUtils.initTranslations();
|
return new WorkspaceSettingsWidget();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @returns {Gtk.Widget} - the prefs widget
|
|
||||||
*/
|
|
||||||
function buildPrefsWidget() {
|
|
||||||
return new WorkspaceSettingsWidget();
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -68,7 +68,10 @@ rules:
|
|||||||
jsdoc/check-tag-names: error
|
jsdoc/check-tag-names: error
|
||||||
jsdoc/check-types: error
|
jsdoc/check-types: error
|
||||||
jsdoc/implements-on-classes: error
|
jsdoc/implements-on-classes: error
|
||||||
jsdoc/newline-after-description: error
|
jsdoc/tag-lines:
|
||||||
|
- error
|
||||||
|
- any
|
||||||
|
- startLines: 1
|
||||||
jsdoc/require-jsdoc: error
|
jsdoc/require-jsdoc: error
|
||||||
jsdoc/require-param: error
|
jsdoc/require-param: error
|
||||||
jsdoc/require-param-description: error
|
jsdoc/require-param-description: error
|
||||||
|
|||||||
@@ -3,9 +3,12 @@ rules:
|
|||||||
- error
|
- error
|
||||||
- properties: never
|
- properties: never
|
||||||
allow: [^vfunc_, ^on_]
|
allow: [^vfunc_, ^on_]
|
||||||
object-curly-spacing:
|
consistent-return: error
|
||||||
|
eqeqeq:
|
||||||
- error
|
- error
|
||||||
- always
|
- smart
|
||||||
prefer-arrow-callback: error
|
prefer-arrow-callback: error
|
||||||
globals:
|
globals:
|
||||||
global: readonly
|
global: readonly
|
||||||
|
parserOptions:
|
||||||
|
sourceType: module
|
||||||
|
|||||||
24
meson.build
24
meson.build
@@ -1,6 +1,6 @@
|
|||||||
project('gnome-shell-extensions',
|
project('gnome-shell-extensions',
|
||||||
version: '43.beta',
|
version: '45.beta',
|
||||||
meson_version: '>= 0.53.0',
|
meson_version: '>= 0.58.0',
|
||||||
license: 'GPL2+'
|
license: 'GPL2+'
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -15,7 +15,6 @@ datadir = get_option('datadir')
|
|||||||
shelldir = join_paths(datadir, 'gnome-shell')
|
shelldir = join_paths(datadir, 'gnome-shell')
|
||||||
extensiondir = join_paths(shelldir, 'extensions')
|
extensiondir = join_paths(shelldir, 'extensions')
|
||||||
modedir = join_paths(shelldir, 'modes')
|
modedir = join_paths(shelldir, 'modes')
|
||||||
themedir = join_paths(shelldir, 'theme')
|
|
||||||
|
|
||||||
schemadir = join_paths(datadir, 'glib-2.0', 'schemas')
|
schemadir = join_paths(datadir, 'glib-2.0', 'schemas')
|
||||||
sessiondir = join_paths(datadir, 'gnome-session', 'sessions')
|
sessiondir = join_paths(datadir, 'gnome-session', 'sessions')
|
||||||
@@ -37,6 +36,7 @@ classic_extensions = [
|
|||||||
default_extensions = classic_extensions
|
default_extensions = classic_extensions
|
||||||
default_extensions += [
|
default_extensions += [
|
||||||
'drive-menu',
|
'drive-menu',
|
||||||
|
'light-style',
|
||||||
'screenshot-window-sizer',
|
'screenshot-window-sizer',
|
||||||
'windowsNavigator',
|
'windowsNavigator',
|
||||||
'workspace-indicator'
|
'workspace-indicator'
|
||||||
@@ -93,7 +93,23 @@ endif
|
|||||||
subdir('extensions')
|
subdir('extensions')
|
||||||
subdir('po')
|
subdir('po')
|
||||||
|
|
||||||
meson.add_dist_script('meson/generate-stylesheets.py')
|
gnome.post_install(
|
||||||
|
glib_compile_schemas: true,
|
||||||
|
)
|
||||||
|
|
||||||
meson.add_dist_script('meson/check-version.py',
|
meson.add_dist_script('meson/check-version.py',
|
||||||
meson.project_version(),
|
meson.project_version(),
|
||||||
'NEWS')
|
'NEWS')
|
||||||
|
|
||||||
|
summary_options = {
|
||||||
|
'extensions': enabled_extensions,
|
||||||
|
'classic_mode': get_option('classic_mode'),
|
||||||
|
}
|
||||||
|
|
||||||
|
summary_dirs = {
|
||||||
|
'prefix': get_option('prefix'),
|
||||||
|
'datadir': get_option('datadir'),
|
||||||
|
}
|
||||||
|
|
||||||
|
summary(summary_dirs, section: 'Directories')
|
||||||
|
summary(summary_options, section: 'Build Options')
|
||||||
|
|||||||
@@ -1,13 +0,0 @@
|
|||||||
#!/usr/bin/env python3
|
|
||||||
|
|
||||||
import os
|
|
||||||
from pathlib import PurePath
|
|
||||||
import subprocess
|
|
||||||
|
|
||||||
sourceroot = os.environ.get('MESON_SOURCE_ROOT')
|
|
||||||
distroot = os.environ.get('MESON_DIST_ROOT')
|
|
||||||
|
|
||||||
stylesheet_path = PurePath('data/gnome-classic.css')
|
|
||||||
src = PurePath(sourceroot, stylesheet_path.with_suffix('.scss'))
|
|
||||||
dst = PurePath(distroot, stylesheet_path)
|
|
||||||
subprocess.run(['sassc', '-a', src, dst], check=True)
|
|
||||||
101
po/be.po
101
po/be.po
@@ -8,8 +8,8 @@ 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/"
|
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell-extensions/"
|
||||||
"issues\n"
|
"issues\n"
|
||||||
"POT-Creation-Date: 2021-01-20 23:03+0000\n"
|
"POT-Creation-Date: 2022-07-10 12:54+0000\n"
|
||||||
"PO-Revision-Date: 2021-01-24 15:33+0300\n"
|
"PO-Revision-Date: 2022-10-19 15:20+0300\n"
|
||||||
"Last-Translator: Launchpad translators\n"
|
"Last-Translator: Launchpad translators\n"
|
||||||
"Language-Team: Belarusian <i18n-bel-gnome@googlegroups.com>\n"
|
"Language-Team: Belarusian <i18n-bel-gnome@googlegroups.com>\n"
|
||||||
"Language: be\n"
|
"Language: be\n"
|
||||||
@@ -18,21 +18,30 @@ msgstr ""
|
|||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
|
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
|
||||||
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
|
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
|
||||||
"X-Generator: Poedit 2.4.2\n"
|
"X-Generator: Poedit 3.0\n"
|
||||||
|
|
||||||
#: data/gnome-classic.desktop.in:3
|
#: data/gnome-classic.desktop.in:3
|
||||||
msgid "GNOME Classic"
|
msgid "GNOME Classic"
|
||||||
msgstr "Класічны GNOME"
|
msgstr "Класічны GNOME"
|
||||||
|
|
||||||
#: data/gnome-classic.desktop.in:4
|
#: data/gnome-classic.desktop.in:4 data/gnome-classic-wayland.desktop.in:4
|
||||||
|
#: data/gnome-classic-xorg.desktop.in:4
|
||||||
msgid "This session logs you into GNOME Classic"
|
msgid "This session logs you into GNOME Classic"
|
||||||
msgstr "Гэты сеанс выкарыстоўвае класічны GNOME"
|
msgstr "Гэты сеанс выкарыстоўвае класічны GNOME"
|
||||||
|
|
||||||
#: extensions/apps-menu/extension.js:113
|
#: data/gnome-classic-wayland.desktop.in:3
|
||||||
|
msgid "GNOME Classic on Wayland"
|
||||||
|
msgstr "Класічны GNOME на Wayland"
|
||||||
|
|
||||||
|
#: data/gnome-classic-xorg.desktop.in:3
|
||||||
|
msgid "GNOME Classic on Xorg"
|
||||||
|
msgstr "Класічны GNOME на Xorg"
|
||||||
|
|
||||||
|
#: extensions/apps-menu/extension.js:118
|
||||||
msgid "Favorites"
|
msgid "Favorites"
|
||||||
msgstr "Абраныя"
|
msgstr "Абраныя"
|
||||||
|
|
||||||
#: extensions/apps-menu/extension.js:369
|
#: extensions/apps-menu/extension.js:379
|
||||||
msgid "Applications"
|
msgid "Applications"
|
||||||
msgstr "Праграмы"
|
msgstr "Праграмы"
|
||||||
|
|
||||||
@@ -48,43 +57,41 @@ msgstr ""
|
|||||||
"Спіс радкоў, кожны з якіх змяшчае ідэнтыфікатар праграмы (імя файла *."
|
"Спіс радкоў, кожны з якіх змяшчае ідэнтыфікатар праграмы (імя файла *."
|
||||||
"desktop), затым двукроп'е і нумар працоўнай прасторы"
|
"desktop), затым двукроп'е і нумар працоўнай прасторы"
|
||||||
|
|
||||||
#: extensions/auto-move-windows/prefs.js:35
|
#: extensions/auto-move-windows/prefs.js:152
|
||||||
msgid "Workspace Rules"
|
msgid "Workspace Rules"
|
||||||
msgstr "Правілы для працоўнай прасторы"
|
msgstr "Правілы для працоўнай прасторы"
|
||||||
|
|
||||||
#: extensions/auto-move-windows/prefs.js:237
|
#: extensions/auto-move-windows/prefs.js:306
|
||||||
msgid "Add Rule"
|
msgid "Add Rule"
|
||||||
msgstr "Дадаць правіла"
|
msgstr "Дадаць правіла"
|
||||||
|
|
||||||
#. TRANSLATORS: %s is the filesystem name
|
#. TRANSLATORS: %s is the filesystem name
|
||||||
#: extensions/drive-menu/extension.js:112
|
#: extensions/drive-menu/extension.js:126
|
||||||
#: extensions/places-menu/placeDisplay.js:233
|
#: extensions/places-menu/placeDisplay.js:210
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "Ejecting drive “%s” failed:"
|
msgid "Ejecting drive “%s” failed:"
|
||||||
msgstr "Не ўдалося выняць дыск «%s»:"
|
msgstr "Не ўдалося выняць дыск «%s»:"
|
||||||
|
|
||||||
#: extensions/drive-menu/extension.js:128
|
#: extensions/drive-menu/extension.js:145
|
||||||
msgid "Removable devices"
|
msgid "Removable devices"
|
||||||
msgstr "Здымныя прылады"
|
msgstr "Здымныя прылады"
|
||||||
|
|
||||||
#: extensions/drive-menu/extension.js:155
|
#: extensions/drive-menu/extension.js:167
|
||||||
msgid "Open Files"
|
msgid "Open Files"
|
||||||
msgstr "Адкрыць файлы"
|
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
|
||||||
#, fuzzy
|
|
||||||
msgid "Use more screen for windows"
|
msgid "Use more screen for windows"
|
||||||
msgstr "Выкарыстоўваць большую плошчу экрана для вокнаў"
|
msgstr "Выкарыстоўваць большую плошчу экрана для вокнаў"
|
||||||
|
|
||||||
#: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:6
|
#: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:6
|
||||||
#, fuzzy
|
|
||||||
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 ""
|
||||||
"Спрабаваць выкарыстаць большую плошчу экрана для размяшчэння мініяцюр праз "
|
"Спрабаваць выкарыстаць большую плошчу экрана для размяшчэння мініяцюр праз "
|
||||||
"змяненне суадносінаў бакоў экрана, ўшчыльняючы іх, каб зменшыць памеры "
|
"змяненне суадносін бакоў экрана, ўшчыльняючы іх, каб зменшыць памеры "
|
||||||
"абмежавальнай рамкі. Гэты параметр ужываецца толькі з натуральным "
|
"абмежавальнай рамкі. Гэты параметр ужываецца толькі з натуральным "
|
||||||
"размяшчэннем мініяцюр."
|
"размяшчэннем мініяцюр."
|
||||||
|
|
||||||
@@ -102,31 +109,31 @@ msgstr ""
|
|||||||
"перадвызначана). Каб змена налады ўступіла ў сілу, трэба перазапусціць "
|
"перадвызначана). Каб змена налады ўступіла ў сілу, трэба перазапусціць "
|
||||||
"абалонку."
|
"абалонку."
|
||||||
|
|
||||||
#: extensions/places-menu/extension.js:89
|
#: extensions/places-menu/extension.js:94
|
||||||
#: extensions/places-menu/extension.js:93
|
#: extensions/places-menu/extension.js:97
|
||||||
msgid "Places"
|
msgid "Places"
|
||||||
msgstr "Месцы"
|
msgstr "Месцы"
|
||||||
|
|
||||||
#: extensions/places-menu/placeDisplay.js:46
|
#: extensions/places-menu/placeDisplay.js:49
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "Failed to launch “%s”"
|
msgid "Failed to launch “%s”"
|
||||||
msgstr "Не ўдалося запусціць «%s»"
|
msgstr "Не ўдалося запусціць «%s»"
|
||||||
|
|
||||||
#: extensions/places-menu/placeDisplay.js:61
|
#: extensions/places-menu/placeDisplay.js:64
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "Failed to mount volume for “%s”"
|
msgid "Failed to mount volume for “%s”"
|
||||||
msgstr "Не ўдалося прымацаваць том для «%s»."
|
msgstr "Не ўдалося прымацаваць том для «%s»."
|
||||||
|
|
||||||
|
#: extensions/places-menu/placeDisplay.js:125
|
||||||
#: extensions/places-menu/placeDisplay.js:148
|
#: extensions/places-menu/placeDisplay.js:148
|
||||||
#: extensions/places-menu/placeDisplay.js:171
|
|
||||||
msgid "Computer"
|
msgid "Computer"
|
||||||
msgstr "Камп'ютар"
|
msgstr "Камп'ютар"
|
||||||
|
|
||||||
#: extensions/places-menu/placeDisplay.js:359
|
#: extensions/places-menu/placeDisplay.js:336
|
||||||
msgid "Home"
|
msgid "Home"
|
||||||
msgstr "Хатняя папка"
|
msgstr "Хатняя папка"
|
||||||
|
|
||||||
#: extensions/places-menu/placeDisplay.js:404
|
#: extensions/places-menu/placeDisplay.js:381
|
||||||
msgid "Browse Network"
|
msgid "Browse Network"
|
||||||
msgstr "Агляд сеткі"
|
msgstr "Агляд сеткі"
|
||||||
|
|
||||||
@@ -146,47 +153,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:98
|
#: extensions/window-list/extension.js:72
|
||||||
msgid "Close"
|
msgid "Close"
|
||||||
msgstr "Закрыць"
|
msgstr "Закрыць"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:118
|
#: extensions/window-list/extension.js:92
|
||||||
msgid "Unminimize"
|
msgid "Unminimize"
|
||||||
msgstr "Скасаваць згортванне"
|
msgstr "Скасаваць згортванне"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:118
|
#: extensions/window-list/extension.js:92
|
||||||
msgid "Minimize"
|
msgid "Minimize"
|
||||||
msgstr "Згарнуць"
|
msgstr "Згарнуць"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:125
|
#: extensions/window-list/extension.js:99
|
||||||
msgid "Unmaximize"
|
msgid "Unmaximize"
|
||||||
msgstr "Скасаваць разгортванне"
|
msgstr "Скасаваць разгортванне"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:125
|
#: extensions/window-list/extension.js:99
|
||||||
msgid "Maximize"
|
msgid "Maximize"
|
||||||
msgstr "Разгарнуць"
|
msgstr "Разгарнуць"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:432
|
#: extensions/window-list/extension.js:483
|
||||||
msgid "Minimize all"
|
msgid "Minimize all"
|
||||||
msgstr "Згарнуць усе"
|
msgstr "Згарнуць усе"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:438
|
#: extensions/window-list/extension.js:489
|
||||||
msgid "Unminimize all"
|
msgid "Unminimize all"
|
||||||
msgstr "Скасаваць згортванне для ўсіх"
|
msgstr "Скасаваць згортванне для ўсіх"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:444
|
#: extensions/window-list/extension.js:495
|
||||||
msgid "Maximize all"
|
msgid "Maximize all"
|
||||||
msgstr "Разгарнуць усе"
|
msgstr "Разгарнуць усе"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:452
|
#: extensions/window-list/extension.js:503
|
||||||
msgid "Unmaximize all"
|
msgid "Unmaximize all"
|
||||||
msgstr "Скасаваць разгортванне для ўсіх"
|
msgstr "Скасаваць разгортванне для ўсіх"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:460
|
#: extensions/window-list/extension.js:511
|
||||||
msgid "Close all"
|
msgid "Close all"
|
||||||
msgstr "Закрыць усе"
|
msgstr "Закрыць усе"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:737
|
#: extensions/window-list/extension.js:795
|
||||||
msgid "Window List"
|
msgid "Window List"
|
||||||
msgstr "Спіс вокнаў"
|
msgstr "Спіс вокнаў"
|
||||||
|
|
||||||
@@ -203,7 +210,7 @@ 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:100
|
#: extensions/window-list/prefs.js:79
|
||||||
msgid "Show windows from all workspaces"
|
msgid "Show windows from all workspaces"
|
||||||
msgstr "Паказваць вокны з усіх працоўных прастор"
|
msgstr "Паказваць вокны з усіх працоўных прастор"
|
||||||
|
|
||||||
@@ -222,41 +229,41 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Паказваць спіс вокнаў на ўсіх падлучаных маніторах ці толькі на асноўным."
|
"Паказваць спіс вокнаў на ўсіх падлучаных маніторах ці толькі на асноўным."
|
||||||
|
|
||||||
#: extensions/window-list/prefs.js:29
|
#: extensions/window-list/prefs.js:35
|
||||||
msgid "Window Grouping"
|
msgid "Window Grouping"
|
||||||
msgstr "Групаванне вокнаў"
|
msgstr "Групаванне вокнаў"
|
||||||
|
|
||||||
#: extensions/window-list/prefs.js:58
|
#: extensions/window-list/prefs.js:40
|
||||||
msgid "Never group windows"
|
msgid "Never group windows"
|
||||||
msgstr "Ніколі не групаваць вокны"
|
msgstr "Ніколі не групаваць вокны"
|
||||||
|
|
||||||
#: extensions/window-list/prefs.js:59
|
#: extensions/window-list/prefs.js:41
|
||||||
msgid "Group windows when space is limited"
|
msgid "Group windows when space is limited"
|
||||||
msgstr "Групаваць вокны калі не хапае месца"
|
msgstr "Групаваць вокны калі не хапае месца"
|
||||||
|
|
||||||
#: extensions/window-list/prefs.js:60
|
#: extensions/window-list/prefs.js:42
|
||||||
msgid "Always group windows"
|
msgid "Always group windows"
|
||||||
msgstr "Заўсёды групаваць вокны"
|
msgstr "Заўсёды групаваць вокны"
|
||||||
|
|
||||||
#: extensions/window-list/prefs.js:94
|
#: extensions/window-list/prefs.js:66
|
||||||
msgid "Show on all monitors"
|
msgid "Show on all monitors"
|
||||||
msgstr "Паказваць на ўсіх маніторах"
|
msgstr "Паказваць на ўсіх маніторах"
|
||||||
|
|
||||||
#: extensions/window-list/workspaceIndicator.js:247
|
#: extensions/window-list/workspaceIndicator.js:261
|
||||||
#: extensions/workspace-indicator/extension.js:253
|
#: extensions/workspace-indicator/extension.js:266
|
||||||
msgid "Workspace Indicator"
|
msgid "Workspace Indicator"
|
||||||
msgstr "Індыкатар працоўнай прасторы"
|
msgstr "Індыкатар працоўнай прасторы"
|
||||||
|
|
||||||
#: extensions/workspace-indicator/prefs.js:34
|
#: extensions/workspace-indicator/prefs.js:62
|
||||||
msgid "Workspace Names"
|
|
||||||
msgstr "Назвы працоўных прастор"
|
|
||||||
|
|
||||||
#: extensions/workspace-indicator/prefs.js:67
|
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "Workspace %d"
|
msgid "Workspace %d"
|
||||||
msgstr "Працоўная прастора %d"
|
msgstr "Працоўная прастора %d"
|
||||||
|
|
||||||
#: extensions/workspace-indicator/prefs.js:208
|
#: extensions/workspace-indicator/prefs.js:129
|
||||||
|
msgid "Workspace Names"
|
||||||
|
msgstr "Назвы працоўных прастор"
|
||||||
|
|
||||||
|
#: extensions/workspace-indicator/prefs.js:255
|
||||||
msgid "Add Workspace"
|
msgid "Add Workspace"
|
||||||
msgstr "Дадаць працоўную прастору"
|
msgstr "Дадаць працоўную прастору"
|
||||||
|
|
||||||
|
|||||||
101
po/el.po
101
po/el.po
@@ -12,8 +12,8 @@ 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/"
|
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell-extensions/"
|
||||||
"issues\n"
|
"issues\n"
|
||||||
"POT-Creation-Date: 2020-05-28 00:55+0000\n"
|
"POT-Creation-Date: 2023-02-18 15:10+0000\n"
|
||||||
"PO-Revision-Date: 2020-07-14 00:40+0300\n"
|
"PO-Revision-Date: 2023-08-01 23:41+0300\n"
|
||||||
"Last-Translator: Efstathios Iosifidis <eiosifidis@gnome.org>\n"
|
"Last-Translator: Efstathios Iosifidis <eiosifidis@gnome.org>\n"
|
||||||
"Language-Team: Greek, Modern (1453-) <gnome-el-list@gnome.org>\n"
|
"Language-Team: Greek, Modern (1453-) <gnome-el-list@gnome.org>\n"
|
||||||
"Language: el\n"
|
"Language: el\n"
|
||||||
@@ -21,22 +21,31 @@ 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: Poedit 1.8.7.1\n"
|
"X-Generator: Poedit 3.3.2\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
|
||||||
msgid "GNOME Classic"
|
msgid "GNOME Classic"
|
||||||
msgstr "GNOME Classic"
|
msgstr "GNOME Classic"
|
||||||
|
|
||||||
#: data/gnome-classic.desktop.in:4
|
#: data/gnome-classic.desktop.in:4 data/gnome-classic-wayland.desktop.in:4
|
||||||
|
#: data/gnome-classic-xorg.desktop.in:4
|
||||||
msgid "This session logs you into GNOME Classic"
|
msgid "This session logs you into GNOME Classic"
|
||||||
msgstr "Αυτή η συνεδρία σας συνδέει στο GNOME Classic"
|
msgstr "Αυτή η συνεδρία σας συνδέει στο GNOME Classic"
|
||||||
|
|
||||||
#: extensions/apps-menu/extension.js:113
|
#: data/gnome-classic-wayland.desktop.in:3
|
||||||
|
msgid "GNOME Classic on Wayland"
|
||||||
|
msgstr "GNOME Classic σε Wayland"
|
||||||
|
|
||||||
|
#: data/gnome-classic-xorg.desktop.in:3
|
||||||
|
msgid "GNOME Classic on Xorg"
|
||||||
|
msgstr "GNOME Classic σε Xorg"
|
||||||
|
|
||||||
|
#: extensions/apps-menu/extension.js:118
|
||||||
msgid "Favorites"
|
msgid "Favorites"
|
||||||
msgstr "Αγαπημένα"
|
msgstr "Αγαπημένα"
|
||||||
|
|
||||||
#: extensions/apps-menu/extension.js:369
|
#: extensions/apps-menu/extension.js:380
|
||||||
msgid "Applications"
|
msgid "Applications"
|
||||||
msgstr "Εφαρμογές"
|
msgstr "Εφαρμογές"
|
||||||
|
|
||||||
@@ -53,26 +62,26 @@ msgstr ""
|
|||||||
"(όνομα αρχείου επιφάνειας εργασίας), ακολουθούμενη από άνω-κάτω τελεία και "
|
"(όνομα αρχείου επιφάνειας εργασίας), ακολουθούμενη από άνω-κάτω τελεία και "
|
||||||
"τον αριθμό του χώρου εργασίας"
|
"τον αριθμό του χώρου εργασίας"
|
||||||
|
|
||||||
#: extensions/auto-move-windows/prefs.js:35
|
#: extensions/auto-move-windows/prefs.js:152
|
||||||
msgid "Workspace Rules"
|
msgid "Workspace Rules"
|
||||||
msgstr "Κανόνες χώρων εργασίας"
|
msgstr "Κανόνες χώρων εργασίας"
|
||||||
|
|
||||||
#: extensions/auto-move-windows/prefs.js:243
|
#: extensions/auto-move-windows/prefs.js:306
|
||||||
msgid "Add Rule"
|
msgid "Add Rule"
|
||||||
msgstr "Προσθήκη κανόνα"
|
msgstr "Προσθήκη κανόνα"
|
||||||
|
|
||||||
#. TRANSLATORS: %s is the filesystem name
|
#. TRANSLATORS: %s is the filesystem name
|
||||||
#: extensions/drive-menu/extension.js:112
|
#: extensions/drive-menu/extension.js:126
|
||||||
#: extensions/places-menu/placeDisplay.js:233
|
#: extensions/places-menu/placeDisplay.js:212
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "Ejecting drive “%s” failed:"
|
msgid "Ejecting drive “%s” failed:"
|
||||||
msgstr "Αποτυχία εξαγωγής του δίσκου «%s»:"
|
msgstr "Αποτυχία εξαγωγής του δίσκου «%s»:"
|
||||||
|
|
||||||
#: extensions/drive-menu/extension.js:128
|
#: extensions/drive-menu/extension.js:145
|
||||||
msgid "Removable devices"
|
msgid "Removable devices"
|
||||||
msgstr "Αφαιρούμενες συσκευές"
|
msgstr "Αφαιρούμενες συσκευές"
|
||||||
|
|
||||||
#: extensions/drive-menu/extension.js:155
|
#: extensions/drive-menu/extension.js:167
|
||||||
msgid "Open Files"
|
msgid "Open Files"
|
||||||
msgstr "Άνοιγμα αρχείων"
|
msgstr "Άνοιγμα αρχείων"
|
||||||
|
|
||||||
@@ -106,31 +115,31 @@ msgstr ""
|
|||||||
"στο κάτω μέρος. Η αλλαγή αυτής της ρύθμισης απαιτεί επανεκκίνηση του "
|
"στο κάτω μέρος. Η αλλαγή αυτής της ρύθμισης απαιτεί επανεκκίνηση του "
|
||||||
"κελύφους για να υπάρξει κάποιο αποτέλεσμα."
|
"κελύφους για να υπάρξει κάποιο αποτέλεσμα."
|
||||||
|
|
||||||
#: extensions/places-menu/extension.js:89
|
#: extensions/places-menu/extension.js:94
|
||||||
#: extensions/places-menu/extension.js:93
|
#: extensions/places-menu/extension.js:97
|
||||||
msgid "Places"
|
msgid "Places"
|
||||||
msgstr "Τοποθεσίες"
|
msgstr "Τοποθεσίες"
|
||||||
|
|
||||||
#: extensions/places-menu/placeDisplay.js:46
|
#: extensions/places-menu/placeDisplay.js:52
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "Failed to launch “%s”"
|
msgid "Failed to launch “%s”"
|
||||||
msgstr "Αποτυχία εκκίνησης «%s»"
|
msgstr "Αποτυχία εκκίνησης «%s»"
|
||||||
|
|
||||||
#: extensions/places-menu/placeDisplay.js:61
|
#: extensions/places-menu/placeDisplay.js:67
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "Failed to mount volume for “%s”"
|
msgid "Failed to mount volume for “%s”"
|
||||||
msgstr "Αποτυχία προσάρτησης τόμου για «%s»"
|
msgstr "Αποτυχία προσάρτησης τόμου για «%s»"
|
||||||
|
|
||||||
#: extensions/places-menu/placeDisplay.js:148
|
#: extensions/places-menu/placeDisplay.js:127
|
||||||
#: extensions/places-menu/placeDisplay.js:171
|
#: extensions/places-menu/placeDisplay.js:150
|
||||||
msgid "Computer"
|
msgid "Computer"
|
||||||
msgstr "Υπολογιστής"
|
msgstr "Υπολογιστής"
|
||||||
|
|
||||||
#: extensions/places-menu/placeDisplay.js:359
|
#: extensions/places-menu/placeDisplay.js:340
|
||||||
msgid "Home"
|
msgid "Home"
|
||||||
msgstr "Προσωπικός φάκελος"
|
msgstr "Προσωπικός φάκελος"
|
||||||
|
|
||||||
#: extensions/places-menu/placeDisplay.js:404
|
#: extensions/places-menu/placeDisplay.js:385
|
||||||
msgid "Browse Network"
|
msgid "Browse Network"
|
||||||
msgstr "Περιήγηση δικτύου"
|
msgstr "Περιήγηση δικτύου"
|
||||||
|
|
||||||
@@ -151,47 +160,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:98
|
#: extensions/window-list/extension.js:72
|
||||||
msgid "Close"
|
msgid "Close"
|
||||||
msgstr "Κλείσιμο"
|
msgstr "Κλείσιμο"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:118
|
#: extensions/window-list/extension.js:92
|
||||||
msgid "Unminimize"
|
msgid "Unminimize"
|
||||||
msgstr "Αποελαχιστοποίηση"
|
msgstr "Αποελαχιστοποίηση"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:118
|
#: extensions/window-list/extension.js:92
|
||||||
msgid "Minimize"
|
msgid "Minimize"
|
||||||
msgstr "Ελαχιστοποίηση"
|
msgstr "Ελαχιστοποίηση"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:125
|
#: extensions/window-list/extension.js:99
|
||||||
msgid "Unmaximize"
|
msgid "Unmaximize"
|
||||||
msgstr "Απομεγιστοποίηση"
|
msgstr "Απομεγιστοποίηση"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:125
|
#: extensions/window-list/extension.js:99
|
||||||
msgid "Maximize"
|
msgid "Maximize"
|
||||||
msgstr "Μεγιστοποίηση"
|
msgstr "Μεγιστοποίηση"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:428
|
#: extensions/window-list/extension.js:483
|
||||||
msgid "Minimize all"
|
msgid "Minimize all"
|
||||||
msgstr "Ελαχιστοποίηση όλων"
|
msgstr "Ελαχιστοποίηση όλων"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:434
|
#: extensions/window-list/extension.js:489
|
||||||
msgid "Unminimize all"
|
msgid "Unminimize all"
|
||||||
msgstr "Αποελαχιστοποίηση όλων"
|
msgstr "Αποελαχιστοποίηση όλων"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:440
|
#: extensions/window-list/extension.js:495
|
||||||
msgid "Maximize all"
|
msgid "Maximize all"
|
||||||
msgstr "Μεγιστοποίηση όλων"
|
msgstr "Μεγιστοποίηση όλων"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:448
|
#: extensions/window-list/extension.js:503
|
||||||
msgid "Unmaximize all"
|
msgid "Unmaximize all"
|
||||||
msgstr "Απομεγιστοποίηση όλων"
|
msgstr "Απομεγιστοποίηση όλων"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:456
|
#: extensions/window-list/extension.js:511
|
||||||
msgid "Close all"
|
msgid "Close all"
|
||||||
msgstr "Κλείσιμο όλων"
|
msgstr "Κλείσιμο όλων"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:734
|
#: extensions/window-list/extension.js:795
|
||||||
msgid "Window List"
|
msgid "Window List"
|
||||||
msgstr "Λίστα παραθύρου"
|
msgstr "Λίστα παραθύρου"
|
||||||
|
|
||||||
@@ -209,7 +218,7 @@ 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:100
|
#: extensions/window-list/prefs.js:79
|
||||||
msgid "Show windows from all workspaces"
|
msgid "Show windows from all workspaces"
|
||||||
msgstr "Εμφάνιση των παραθύρων από όλους τους χώρους εργασίας"
|
msgstr "Εμφάνιση των παραθύρων από όλους τους χώρους εργασίας"
|
||||||
|
|
||||||
@@ -230,41 +239,41 @@ msgstr ""
|
|||||||
"Αν θα εμφανίζεται ο κατάλογος παραθύρων όλων των συνδεμένων οθονών ή μόνο "
|
"Αν θα εμφανίζεται ο κατάλογος παραθύρων όλων των συνδεμένων οθονών ή μόνο "
|
||||||
"της κύριας οθόνης."
|
"της κύριας οθόνης."
|
||||||
|
|
||||||
#: extensions/window-list/prefs.js:29
|
#: extensions/window-list/prefs.js:35
|
||||||
msgid "Window Grouping"
|
msgid "Window Grouping"
|
||||||
msgstr "Ομαδοποίηση παραθύρου"
|
msgstr "Ομαδοποίηση παραθύρου"
|
||||||
|
|
||||||
#: extensions/window-list/prefs.js:58
|
#: extensions/window-list/prefs.js:40
|
||||||
msgid "Never group windows"
|
msgid "Never group windows"
|
||||||
msgstr "Να μη γίνεται ποτέ ομαδοποίηση παραθύρων"
|
msgstr "Να μη γίνεται ποτέ ομαδοποίηση παραθύρων"
|
||||||
|
|
||||||
#: extensions/window-list/prefs.js:59
|
#: extensions/window-list/prefs.js:41
|
||||||
msgid "Group windows when space is limited"
|
msgid "Group windows when space is limited"
|
||||||
msgstr "Ομαδοποίηση παραθύρων όταν ο χώρος είναι περιορισμένος"
|
msgstr "Ομαδοποίηση παραθύρων όταν ο χώρος είναι περιορισμένος"
|
||||||
|
|
||||||
#: extensions/window-list/prefs.js:60
|
#: extensions/window-list/prefs.js:42
|
||||||
msgid "Always group windows"
|
msgid "Always group windows"
|
||||||
msgstr "Να γίνεται πάντα ομαδοποίηση παραθύρων"
|
msgstr "Να γίνεται πάντα ομαδοποίηση παραθύρων"
|
||||||
|
|
||||||
#: extensions/window-list/prefs.js:94
|
#: extensions/window-list/prefs.js:66
|
||||||
msgid "Show on all monitors"
|
msgid "Show on all monitors"
|
||||||
msgstr "Να εμφανίζεται σε όλες τις οθόνες"
|
msgstr "Να εμφανίζεται σε όλες τις οθόνες"
|
||||||
|
|
||||||
#: extensions/window-list/workspaceIndicator.js:207
|
#: extensions/window-list/workspaceIndicator.js:261
|
||||||
#: extensions/workspace-indicator/extension.js:213
|
#: extensions/workspace-indicator/extension.js:266
|
||||||
msgid "Workspace Indicator"
|
msgid "Workspace Indicator"
|
||||||
msgstr "Δείκτης χώρου εργασίας"
|
msgstr "Δείκτης χώρου εργασίας"
|
||||||
|
|
||||||
#: extensions/workspace-indicator/prefs.js:34
|
#: extensions/workspace-indicator/prefs.js:62
|
||||||
msgid "Workspace Names"
|
|
||||||
msgstr "Ονόματα χώρων εργασίας:"
|
|
||||||
|
|
||||||
#: extensions/workspace-indicator/prefs.js:67
|
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "Workspace %d"
|
msgid "Workspace %d"
|
||||||
msgstr "Χώρος εργασίας %d"
|
msgstr "Χώρος εργασίας %d"
|
||||||
|
|
||||||
#: extensions/workspace-indicator/prefs.js:218
|
#: extensions/workspace-indicator/prefs.js:129
|
||||||
|
msgid "Workspace Names"
|
||||||
|
msgstr "Ονόματα χώρων εργασίας"
|
||||||
|
|
||||||
|
#: extensions/workspace-indicator/prefs.js:255
|
||||||
msgid "Add Workspace"
|
msgid "Add Workspace"
|
||||||
msgstr "Προσθήκη χώρου εργασίας"
|
msgstr "Προσθήκη χώρου εργασίας"
|
||||||
|
|
||||||
|
|||||||
9
po/ka.po
9
po/ka.po
@@ -9,15 +9,15 @@ msgstr ""
|
|||||||
"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: 2022-02-13 10:42+0000\n"
|
"POT-Creation-Date: 2022-02-13 10:42+0000\n"
|
||||||
"PO-Revision-Date: 2022-02-13 14:35+0100\n"
|
"PO-Revision-Date: 2022-09-14 16:37+0200\n"
|
||||||
"Last-Translator: Temuri Doghonadze <temuri.doghonadze@gmail.com>\n"
|
"Last-Translator: Temuri Doghonadze <temuri.doghonadze@gmail.com>\n"
|
||||||
"Language-Team: \n"
|
"Language-Team: \n"
|
||||||
"Language: ka\n"
|
"Language: ka\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=1; plural=0;\n"
|
||||||
"X-Generator: Poedit 3.0.1\n"
|
"X-Generator: Poedit 3.1.1\n"
|
||||||
|
|
||||||
#: data/gnome-classic.desktop.in:3
|
#: data/gnome-classic.desktop.in:3
|
||||||
msgid "GNOME Classic"
|
msgid "GNOME Classic"
|
||||||
@@ -104,6 +104,9 @@ msgid ""
|
|||||||
"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 ""
|
||||||
|
"თუ ჩართულია, ფანჯრის სათაური შესაბამისი მინიატურის თავზე გამოჩნდება, რითიც "
|
||||||
|
"გადაფარავს გარსის ნაგულისხმებ მნიშვნელობას, რომ ის ძირზე იყოს. ამ "
|
||||||
|
"პარამეტრის ძალაში შესასვლელად საჭიროა გარსის გადატვირთვა."
|
||||||
|
|
||||||
#: extensions/places-menu/extension.js:88
|
#: extensions/places-menu/extension.js:88
|
||||||
#: extensions/places-menu/extension.js:91
|
#: extensions/places-menu/extension.js:91
|
||||||
|
|||||||
147
po/ne.po
147
po/ne.po
@@ -6,33 +6,41 @@
|
|||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: gnome-shell-extension gnome 3.14\n"
|
"Project-Id-Version: gnome-shell-extension gnome 3.14\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: 2022-07-10 12:54+0000\n"
|
||||||
"POT-Creation-Date: 2020-05-28 00:55+0000\n"
|
"PO-Revision-Date: 2022-09-08 02:59+0545\n"
|
||||||
"PO-Revision-Date: 2021-05-01 11:32+0545\n"
|
|
||||||
"Last-Translator: Pawan Chitrakar <chautari@gmail.com>\n"
|
"Last-Translator: Pawan Chitrakar <chautari@gmail.com>\n"
|
||||||
"Language-Team: Nepali Translation Team <chautari@gmail.com>\n"
|
"Language-Team: Nepali Translation Team <chautari@gmail.com>\n"
|
||||||
"Language: ne\n"
|
"Language: ne\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-Generator: Poedit 2.4.2\n"
|
|
||||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||||
|
"X-Generator: Poedit 3.0.1\n"
|
||||||
"X-Poedit-SourceCharset: UTF-8\n"
|
"X-Poedit-SourceCharset: UTF-8\n"
|
||||||
|
|
||||||
#: data/gnome-classic.desktop.in:3 data/gnome-classic.session.desktop.in:3
|
#: data/gnome-classic.desktop.in:3
|
||||||
msgid "GNOME Classic"
|
msgid "GNOME Classic"
|
||||||
msgstr "जिनोम क्लासिक"
|
msgstr "जिनोम क्लासिक"
|
||||||
|
|
||||||
#: data/gnome-classic.desktop.in:4
|
#: data/gnome-classic.desktop.in:4 data/gnome-classic-wayland.desktop.in:4
|
||||||
|
#: data/gnome-classic-xorg.desktop.in:4
|
||||||
msgid "This session logs you into GNOME Classic"
|
msgid "This session logs you into GNOME Classic"
|
||||||
msgstr "यो सेसन जिनोम क्लासिकमा लगईन हुन्छ"
|
msgstr "यो सेसन जिनोम क्लासिकमा लगईन हुन्छ"
|
||||||
|
|
||||||
#: extensions/apps-menu/extension.js:113
|
#: data/gnome-classic-wayland.desktop.in:3
|
||||||
|
msgid "GNOME Classic on Wayland"
|
||||||
|
msgstr "वेल्याण्डमा जिनोम क्लासिक"
|
||||||
|
|
||||||
|
#: data/gnome-classic-xorg.desktop.in:3
|
||||||
|
msgid "GNOME Classic on Xorg"
|
||||||
|
msgstr "Xorg मा जिनोम क्लासिक"
|
||||||
|
|
||||||
|
#: extensions/apps-menu/extension.js:118
|
||||||
msgid "Favorites"
|
msgid "Favorites"
|
||||||
msgstr "मनपर्ने"
|
msgstr "मनपर्ने"
|
||||||
|
|
||||||
#: extensions/apps-menu/extension.js:369
|
#: extensions/apps-menu/extension.js:379
|
||||||
msgid "Applications"
|
msgid "Applications"
|
||||||
msgstr "अनुप्रयोग"
|
msgstr "अनुप्रयोग"
|
||||||
|
|
||||||
@@ -42,32 +50,31 @@ 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 "
|
||||||
"followed by a colon and the workspace number"
|
"and the workspace number"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"स्ट्रिङहरूको सूची, प्रत्येकमा अनुप्रयोग आईडी (डेस्कटप फाइल नाम) समाविष्ट छ, त्यसपछि "
|
"स्ट्रिङहरूको सूची, प्रत्येकमा अनुप्रयोग आईडी (डेस्कटप फाइल नाम) समाविष्ट छ, त्यसपछि विराम र कार्यस्थान "
|
||||||
"विराम र कार्यस्थान नम्बरद्वारा अनुगमन गरियो"
|
"नम्बरद्वारा अनुगमन गरियो"
|
||||||
|
|
||||||
#: extensions/auto-move-windows/prefs.js:35
|
#: extensions/auto-move-windows/prefs.js:152
|
||||||
msgid "Workspace Rules"
|
msgid "Workspace Rules"
|
||||||
msgstr "कार्यस्थान नियम"
|
msgstr "कार्यस्थान नियम"
|
||||||
|
|
||||||
#: extensions/auto-move-windows/prefs.js:243
|
#: extensions/auto-move-windows/prefs.js:306
|
||||||
msgid "Add Rule"
|
msgid "Add Rule"
|
||||||
msgstr "नियम थप्नुहोस्"
|
msgstr "नियम थप्नुहोस्"
|
||||||
|
|
||||||
#. TRANSLATORS: %s is the filesystem name
|
#. TRANSLATORS: %s is the filesystem name
|
||||||
#: extensions/drive-menu/extension.js:112
|
#: extensions/drive-menu/extension.js:126 extensions/places-menu/placeDisplay.js:210
|
||||||
#: extensions/places-menu/placeDisplay.js:233
|
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "Ejecting drive “%s” failed:"
|
msgid "Ejecting drive “%s” failed:"
|
||||||
msgstr "\"%s\" ड्राइभ निकाल्न असफल भयो:"
|
msgstr "\"%s\" ड्राइभ निकाल्न असफल भयो:"
|
||||||
|
|
||||||
#: extensions/drive-menu/extension.js:128
|
#: extensions/drive-menu/extension.js:145
|
||||||
msgid "Removable devices"
|
msgid "Removable devices"
|
||||||
msgstr "छुट्याउन मिल्ने यन्त्र"
|
msgstr "छुट्याउन मिल्ने यन्त्र"
|
||||||
|
|
||||||
#: extensions/drive-menu/extension.js:155
|
#: extensions/drive-menu/extension.js:167
|
||||||
msgid "Open Files"
|
msgid "Open Files"
|
||||||
msgstr "खुला फाइल"
|
msgstr "खुला फाइल"
|
||||||
|
|
||||||
@@ -77,13 +84,12 @@ msgstr "सञ्झ्यालका लागि बढी पर्दा
|
|||||||
|
|
||||||
#: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:6
|
#: 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 "
|
||||||
"aspect ratio, and consolidating them further to reduce the bounding box. "
|
"consolidating them further to reduce the bounding box. This setting applies only with the "
|
||||||
"This setting applies only with the natural placement strategy."
|
"natural placement strategy."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"सञ्झ्याल थम्बनेलहरू पर्दा आकार अनुपातमा अनुकूल गरेर राख्नका लागि धेरै पर्दा प्रयोग गर्न "
|
"सञ्झ्याल थम्बनेलहरू पर्दा आकार अनुपातमा अनुकूल गरेर राख्नका लागि धेरै पर्दा प्रयोग गर्न प्रयास गर्नुहोस्, र "
|
||||||
"प्रयास गर्नुहोस्, र तिनीहरूलाई बाउन्डिङ बाकस घटाउन अझ संगठित गर्नुहोस् । यो तरिका "
|
"तिनीहरूलाई बाउन्डिङ बाकस घटाउन अझ संगठित गर्नुहोस् । यो तरिका प्राकृतिक प्लेसमेन्ट रणनीतिमा मात्र लागू हुन्छ।"
|
||||||
"प्राकृतिक प्लेसमेन्ट रणनीतिमा मात्र लागू हुन्छ।"
|
|
||||||
|
|
||||||
#: 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"
|
||||||
@@ -91,39 +97,36 @@ 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 default of "
|
||||||
"shell default of placing it at the bottom. Changing this setting requires "
|
"placing it at the bottom. Changing this setting requires restarting the shell to have any "
|
||||||
"restarting the shell to have any effect."
|
"effect."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"ठीक भएमा, सम्बन्धित थम्बनेलको माथि सञ्झ्याल क्याप्सन राख्नुहोस्, यसलाई तल राख्ने "
|
"ठीक भएमा, सम्बन्धित थम्बनेलको माथि सञ्झ्याल क्याप्सन राख्नुहोस्, यसलाई तल राख्ने पूर्वनिर्धारित शेल अधिलेखन "
|
||||||
"पूर्वनिर्धारित शेल अधिलेखन गर्नुहोस् । यो सेटिङ परिवर्तन गर्न कुनै प्रभाव पार्न शेल पुन: "
|
"गर्नुहोस् । यो सेटिङ परिवर्तन गर्न कुनै प्रभाव पार्न शेल पुन: सुरुआत गर्नु आवश्यक हुन्छ ।"
|
||||||
"सुरुआत गर्नु आवश्यक हुन्छ ।"
|
|
||||||
|
|
||||||
#: extensions/places-menu/extension.js:89
|
#: extensions/places-menu/extension.js:94 extensions/places-menu/extension.js:97
|
||||||
#: extensions/places-menu/extension.js:93
|
|
||||||
msgid "Places"
|
msgid "Places"
|
||||||
msgstr "ठाउँहरू"
|
msgstr "ठाउँहरू"
|
||||||
|
|
||||||
#: extensions/places-menu/placeDisplay.js:46
|
#: extensions/places-menu/placeDisplay.js:49
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "Failed to launch “%s”"
|
msgid "Failed to launch “%s”"
|
||||||
msgstr "%s सुरु गर्न असफल"
|
msgstr "%s सुरु गर्न असफल"
|
||||||
|
|
||||||
#: extensions/places-menu/placeDisplay.js:61
|
#: extensions/places-menu/placeDisplay.js:64
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "Failed to mount volume for “%s”"
|
msgid "Failed to mount volume for “%s”"
|
||||||
msgstr "\"%s\" का लागि भोल्युम माउन्ट गर्न असफल"
|
msgstr "\"%s\" का लागि भोल्युम माउन्ट गर्न असफल"
|
||||||
|
|
||||||
#: extensions/places-menu/placeDisplay.js:148
|
#: extensions/places-menu/placeDisplay.js:125 extensions/places-menu/placeDisplay.js:148
|
||||||
#: extensions/places-menu/placeDisplay.js:171
|
|
||||||
msgid "Computer"
|
msgid "Computer"
|
||||||
msgstr "कम्प्युटर"
|
msgstr "कम्प्युटर"
|
||||||
|
|
||||||
#: extensions/places-menu/placeDisplay.js:359
|
#: extensions/places-menu/placeDisplay.js:336
|
||||||
msgid "Home"
|
msgid "Home"
|
||||||
msgstr "गृह"
|
msgstr "गृह"
|
||||||
|
|
||||||
#: extensions/places-menu/placeDisplay.js:404
|
#: extensions/places-menu/placeDisplay.js:381
|
||||||
msgid "Browse Network"
|
msgid "Browse Network"
|
||||||
msgstr "सञ्जाल ब्राउज गर्नुहोस्"
|
msgstr "सञ्जाल ब्राउज गर्नुहोस्"
|
||||||
|
|
||||||
@@ -143,47 +146,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:98
|
#: extensions/window-list/extension.js:72
|
||||||
msgid "Close"
|
msgid "Close"
|
||||||
msgstr "बन्द"
|
msgstr "बन्द"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:118
|
#: extensions/window-list/extension.js:92
|
||||||
msgid "Unminimize"
|
msgid "Unminimize"
|
||||||
msgstr "न्यूनतम नबनाउनुहोस्"
|
msgstr "न्यूनतम नबनाउनुहोस्"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:118
|
#: extensions/window-list/extension.js:92
|
||||||
msgid "Minimize"
|
msgid "Minimize"
|
||||||
msgstr "सानो बनाउनुहोस्"
|
msgstr "सानो बनाउनुहोस्"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:125
|
#: extensions/window-list/extension.js:99
|
||||||
msgid "Unmaximize"
|
msgid "Unmaximize"
|
||||||
msgstr "अघिकतम नबनाउनुहोस्"
|
msgstr "अघिकतम नबनाउनुहोस्"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:125
|
#: extensions/window-list/extension.js:99
|
||||||
msgid "Maximize"
|
msgid "Maximize"
|
||||||
msgstr "ठूलो बनाउनुहोस्"
|
msgstr "ठूलो बनाउनुहोस्"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:428
|
#: extensions/window-list/extension.js:483
|
||||||
msgid "Minimize all"
|
msgid "Minimize all"
|
||||||
msgstr "सबै सानो बनाउनुहोस्"
|
msgstr "सबै सानो बनाउनुहोस्"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:434
|
#: extensions/window-list/extension.js:489
|
||||||
msgid "Unminimize all"
|
msgid "Unminimize all"
|
||||||
msgstr "सबै न्यूनतम नबनाउनुहोस्"
|
msgstr "सबै न्यूनतम नबनाउनुहोस्"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:440
|
#: extensions/window-list/extension.js:495
|
||||||
msgid "Maximize all"
|
msgid "Maximize all"
|
||||||
msgstr "सबै ठूलो बनाउनुहोस्"
|
msgstr "सबै ठूलो बनाउनुहोस्"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:448
|
#: extensions/window-list/extension.js:503
|
||||||
msgid "Unmaximize all"
|
msgid "Unmaximize all"
|
||||||
msgstr "सबैलाई अघिकतम नबनाउनुहोस्"
|
msgstr "सबैलाई अघिकतम नबनाउनुहोस्"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:456
|
#: extensions/window-list/extension.js:511
|
||||||
msgid "Close all"
|
msgid "Close all"
|
||||||
msgstr "सबै बन्द गर्नुहोस्"
|
msgstr "सबै बन्द गर्नुहोस्"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:734
|
#: extensions/window-list/extension.js:795
|
||||||
msgid "Window List"
|
msgid "Window List"
|
||||||
msgstr "सञ्झ्याल सूची"
|
msgstr "सञ्झ्याल सूची"
|
||||||
|
|
||||||
@@ -193,14 +196,14 @@ msgstr "कहिले सञ्झ्याल समुहबध्द गर
|
|||||||
|
|
||||||
#: 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 ""
|
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 "
|
||||||
"Possible values are “never”, “auto” and “always”."
|
"“never”, “auto” and “always”."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"सञ्झ्याल सूचीमा उस्तै अनुप्रयोगबाट कहिले समूह बनाउने निर्णय गर्दछ । सम्भावित मान \"कहिले "
|
"सञ्झ्याल सूचीमा उस्तै अनुप्रयोगबाट कहिले समूह बनाउने निर्णय गर्दछ । सम्भावित मान \"कहिले पनि\", \"स्वचालित\" र "
|
||||||
"पनि\", \"स्वचालित\" र \"सधैँ\" हुन् ।"
|
"\"सधैँ\" हुन् ।"
|
||||||
|
|
||||||
#: 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:100
|
#: extensions/window-list/prefs.js:79
|
||||||
msgid "Show windows from all workspaces"
|
msgid "Show windows from all workspaces"
|
||||||
msgstr "सबै कार्यस्थानबाट सन्झ्याल देखाउनुहोस्"
|
msgstr "सबै कार्यस्थानबाट सन्झ्याल देखाउनुहोस्"
|
||||||
|
|
||||||
@@ -213,48 +216,44 @@ msgid "Show the window list on all monitors"
|
|||||||
msgstr "सबै मोनिटरमा सञ्झ्याल सूची देखाउनुहोस्"
|
msgstr "सबै मोनिटरमा सञ्झ्याल सूची देखाउनुहोस्"
|
||||||
|
|
||||||
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:28
|
#: 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 primary one."
|
||||||
"Whether to show the window list on all connected monitors or only on the "
|
msgstr "सबै जडान गरिएको मोनिटरमा वा प्राथमिक मोनिटरमा मात्र सञ्झ्याल सूची देखाउने या नदेखाउने ।"
|
||||||
"primary one."
|
|
||||||
msgstr ""
|
|
||||||
"सबै जडान गरिएको मोनिटरमा वा प्राथमिक मोनिटरमा मात्र सञ्झ्याल सूची देखाउने या नदेखाउने "
|
|
||||||
"।"
|
|
||||||
|
|
||||||
#: extensions/window-list/prefs.js:29
|
#: extensions/window-list/prefs.js:35
|
||||||
msgid "Window Grouping"
|
msgid "Window Grouping"
|
||||||
msgstr "समूहबद्ध सञ्झ्याल"
|
msgstr "समूहबद्ध सञ्झ्याल"
|
||||||
|
|
||||||
#: extensions/window-list/prefs.js:58
|
#: extensions/window-list/prefs.js:40
|
||||||
msgid "Never group windows"
|
msgid "Never group windows"
|
||||||
msgstr "सञ्झ्याल समुहबध्द नगर्ने"
|
msgstr "सञ्झ्याल समुहबध्द नगर्ने"
|
||||||
|
|
||||||
#: extensions/window-list/prefs.js:59
|
#: extensions/window-list/prefs.js:41
|
||||||
msgid "Group windows when space is limited"
|
msgid "Group windows when space is limited"
|
||||||
msgstr "खाली स्थान सिमित भएको बेलामा सञ्झ्यालहरू समूह गर्नुहोस्"
|
msgstr "खाली स्थान सिमित भएको बेलामा सञ्झ्यालहरू समूह गर्नुहोस्"
|
||||||
|
|
||||||
#: extensions/window-list/prefs.js:60
|
#: extensions/window-list/prefs.js:42
|
||||||
msgid "Always group windows"
|
msgid "Always group windows"
|
||||||
msgstr "सञ्झ्याल सधैँ समुहबध्द गर्ने"
|
msgstr "सञ्झ्याल सधैँ समुहबध्द गर्ने"
|
||||||
|
|
||||||
#: extensions/window-list/prefs.js:94
|
#: extensions/window-list/prefs.js:66
|
||||||
msgid "Show on all monitors"
|
msgid "Show on all monitors"
|
||||||
msgstr "सबै मोनिटरमा देखाउनुहोस्"
|
msgstr "सबै मोनिटरमा देखाउनुहोस्"
|
||||||
|
|
||||||
#: extensions/window-list/workspaceIndicator.js:207
|
#: extensions/window-list/workspaceIndicator.js:261
|
||||||
#: extensions/workspace-indicator/extension.js:213
|
#: extensions/workspace-indicator/extension.js:266
|
||||||
msgid "Workspace Indicator"
|
msgid "Workspace Indicator"
|
||||||
msgstr "कार्यस्थान सूचक"
|
msgstr "कार्यस्थान सूचक"
|
||||||
|
|
||||||
#: extensions/workspace-indicator/prefs.js:34
|
#: extensions/workspace-indicator/prefs.js:62
|
||||||
msgid "Workspace Names"
|
|
||||||
msgstr "कार्यस्थल नाम"
|
|
||||||
|
|
||||||
#: extensions/workspace-indicator/prefs.js:67
|
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "Workspace %d"
|
msgid "Workspace %d"
|
||||||
msgstr "कार्यस्थल %d"
|
msgstr "कार्यस्थल %d"
|
||||||
|
|
||||||
#: extensions/workspace-indicator/prefs.js:218
|
#: extensions/workspace-indicator/prefs.js:129
|
||||||
|
msgid "Workspace Names"
|
||||||
|
msgstr "कार्यस्थल नाम"
|
||||||
|
|
||||||
|
#: extensions/workspace-indicator/prefs.js:255
|
||||||
msgid "Add Workspace"
|
msgid "Add Workspace"
|
||||||
msgstr "कार्यस्थल थप्नुहोस्"
|
msgstr "कार्यस्थल थप्नुहोस्"
|
||||||
|
|
||||||
|
|||||||
101
po/ru.po
101
po/ru.po
@@ -6,20 +6,20 @@
|
|||||||
#
|
#
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: gnome-shell-extensions gnome-3-0\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: 2021-11-06 14:08+0000\n"
|
"POT-Creation-Date: 2022-07-10 12:54+0000\n"
|
||||||
"PO-Revision-Date: 2021-12-11 15:12+0300\n"
|
"PO-Revision-Date: 2022-09-14 13:09+0300\n"
|
||||||
"Last-Translator: Aleksandr Melman <Alexmelman88@gmail.com>\n"
|
"Last-Translator: Aleksandr Melman <Alexmelman88@gmail.com>\n"
|
||||||
"Language-Team: Русский <gnome-cyr@gnome.org>\n"
|
"Language-Team: Русский <gnome-cyr@gnome.org>\n"
|
||||||
"Language: ru\n"
|
"Language: ru\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=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
|
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
|
||||||
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
|
"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
|
||||||
"X-Generator: Poedit 3.0\n"
|
"X-Generator: Poedit 3.1\n"
|
||||||
|
|
||||||
#: data/gnome-classic.desktop.in:3
|
#: data/gnome-classic.desktop.in:3
|
||||||
msgid "GNOME Classic"
|
msgid "GNOME Classic"
|
||||||
@@ -28,7 +28,7 @@ msgstr "Классический GNOME"
|
|||||||
#: data/gnome-classic.desktop.in:4 data/gnome-classic-wayland.desktop.in:4
|
#: data/gnome-classic.desktop.in:4 data/gnome-classic-wayland.desktop.in:4
|
||||||
#: data/gnome-classic-xorg.desktop.in:4
|
#: data/gnome-classic-xorg.desktop.in:4
|
||||||
msgid "This session logs you into GNOME Classic"
|
msgid "This session logs you into GNOME Classic"
|
||||||
msgstr "Данный сеанс использует классический рабочий стол GNOME"
|
msgstr "Данный сеанс использует классический GNOME"
|
||||||
|
|
||||||
#: data/gnome-classic-wayland.desktop.in:3
|
#: data/gnome-classic-wayland.desktop.in:3
|
||||||
msgid "GNOME Classic on Wayland"
|
msgid "GNOME Classic on Wayland"
|
||||||
@@ -38,17 +38,17 @@ msgstr "Классический GNOME на Wayland"
|
|||||||
msgid "GNOME Classic on Xorg"
|
msgid "GNOME Classic on Xorg"
|
||||||
msgstr "Классический GNOME на Xorg"
|
msgstr "Классический GNOME на Xorg"
|
||||||
|
|
||||||
#: extensions/apps-menu/extension.js:112
|
#: extensions/apps-menu/extension.js:118
|
||||||
msgid "Favorites"
|
msgid "Favorites"
|
||||||
msgstr "Избранное"
|
msgstr "Избранное"
|
||||||
|
|
||||||
#: extensions/apps-menu/extension.js:366
|
#: extensions/apps-menu/extension.js:379
|
||||||
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 ""
|
||||||
@@ -56,28 +56,28 @@ msgid ""
|
|||||||
"followed by a colon and the workspace number"
|
"followed by a colon and the workspace number"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Список строк, содержащих идентификатор приложения (имя desktop-файла), за "
|
"Список строк, содержащих идентификатор приложения (имя desktop-файла), за "
|
||||||
"которым следует двоеточие и номер рабочего места"
|
"которым следует двоеточие и номер рабочего стола"
|
||||||
|
|
||||||
#: extensions/auto-move-windows/prefs.js:34
|
#: extensions/auto-move-windows/prefs.js:152
|
||||||
msgid "Workspace Rules"
|
msgid "Workspace Rules"
|
||||||
msgstr "Правила для рабочей области"
|
msgstr "Правила для рабочих столов"
|
||||||
|
|
||||||
#: extensions/auto-move-windows/prefs.js:236
|
#: extensions/auto-move-windows/prefs.js:306
|
||||||
msgid "Add Rule"
|
msgid "Add Rule"
|
||||||
msgstr "Добавить правило"
|
msgstr "Добавить правило"
|
||||||
|
|
||||||
#. TRANSLATORS: %s is the filesystem name
|
#. TRANSLATORS: %s is the filesystem name
|
||||||
#: extensions/drive-menu/extension.js:133
|
#: extensions/drive-menu/extension.js:126
|
||||||
#: extensions/places-menu/placeDisplay.js:233
|
#: extensions/places-menu/placeDisplay.js:210
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "Ejecting drive “%s” failed:"
|
msgid "Ejecting drive “%s” failed:"
|
||||||
msgstr "Не удалось извлечь диск «%s»:"
|
msgstr "Не удалось извлечь диск «%s»:"
|
||||||
|
|
||||||
#: extensions/drive-menu/extension.js:149
|
#: extensions/drive-menu/extension.js:145
|
||||||
msgid "Removable devices"
|
msgid "Removable devices"
|
||||||
msgstr "Съёмные устройства"
|
msgstr "Съёмные устройства"
|
||||||
|
|
||||||
#: extensions/drive-menu/extension.js:171
|
#: extensions/drive-menu/extension.js:167
|
||||||
msgid "Open Files"
|
msgid "Open Files"
|
||||||
msgstr "Открыть файлы"
|
msgstr "Открыть файлы"
|
||||||
|
|
||||||
@@ -110,31 +110,31 @@ msgstr ""
|
|||||||
"умолчанию заголовки располагаются снизу). При изменении этого параметра, "
|
"умолчанию заголовки располагаются снизу). При изменении этого параметра, "
|
||||||
"чтобы оно вступило в силу, необходимо перезапустить Shell."
|
"чтобы оно вступило в силу, необходимо перезапустить Shell."
|
||||||
|
|
||||||
#: extensions/places-menu/extension.js:88
|
#: extensions/places-menu/extension.js:94
|
||||||
#: extensions/places-menu/extension.js:91
|
#: extensions/places-menu/extension.js:97
|
||||||
msgid "Places"
|
msgid "Places"
|
||||||
msgstr "Места"
|
msgstr "Места"
|
||||||
|
|
||||||
#: extensions/places-menu/placeDisplay.js:46
|
#: extensions/places-menu/placeDisplay.js:49
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "Failed to launch “%s”"
|
msgid "Failed to launch “%s”"
|
||||||
msgstr "Не удалось запустить «%s»"
|
msgstr "Не удалось запустить «%s»"
|
||||||
|
|
||||||
#: extensions/places-menu/placeDisplay.js:61
|
#: extensions/places-menu/placeDisplay.js:64
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "Failed to mount volume for “%s”"
|
msgid "Failed to mount volume for “%s”"
|
||||||
msgstr "Не удалось смонтировать том для «%s»"
|
msgstr "Не удалось смонтировать том для «%s»"
|
||||||
|
|
||||||
|
#: extensions/places-menu/placeDisplay.js:125
|
||||||
#: extensions/places-menu/placeDisplay.js:148
|
#: extensions/places-menu/placeDisplay.js:148
|
||||||
#: extensions/places-menu/placeDisplay.js:171
|
|
||||||
msgid "Computer"
|
msgid "Computer"
|
||||||
msgstr "Компьютер"
|
msgstr "Компьютер"
|
||||||
|
|
||||||
#: extensions/places-menu/placeDisplay.js:359
|
#: extensions/places-menu/placeDisplay.js:336
|
||||||
msgid "Home"
|
msgid "Home"
|
||||||
msgstr "Домашняя папка"
|
msgstr "Домашняя папка"
|
||||||
|
|
||||||
#: extensions/places-menu/placeDisplay.js:404
|
#: extensions/places-menu/placeDisplay.js:381
|
||||||
msgid "Browse Network"
|
msgid "Browse Network"
|
||||||
msgstr "Обзор сети"
|
msgstr "Обзор сети"
|
||||||
|
|
||||||
@@ -175,28 +175,28 @@ msgstr "Восстановить"
|
|||||||
msgid "Maximize"
|
msgid "Maximize"
|
||||||
msgstr "Развернуть"
|
msgstr "Развернуть"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:434
|
#: extensions/window-list/extension.js:483
|
||||||
msgid "Minimize all"
|
msgid "Minimize all"
|
||||||
msgstr "Свернуть все"
|
msgstr "Свернуть все"
|
||||||
|
|
||||||
# ну или "восстановить", правда тогда появляется неоднозначный повтор (unmaximize)
|
# ну или "восстановить", правда тогда появляется неоднозначный повтор (unmaximize)
|
||||||
#: extensions/window-list/extension.js:440
|
#: extensions/window-list/extension.js:489
|
||||||
msgid "Unminimize all"
|
msgid "Unminimize all"
|
||||||
msgstr "Вернуть все"
|
msgstr "Вернуть все"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:446
|
#: extensions/window-list/extension.js:495
|
||||||
msgid "Maximize all"
|
msgid "Maximize all"
|
||||||
msgstr "Развернуть все"
|
msgstr "Развернуть все"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:454
|
#: extensions/window-list/extension.js:503
|
||||||
msgid "Unmaximize all"
|
msgid "Unmaximize all"
|
||||||
msgstr "Восстановить все"
|
msgstr "Восстановить все"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:462
|
#: extensions/window-list/extension.js:511
|
||||||
msgid "Close all"
|
msgid "Close all"
|
||||||
msgstr "Закрыть все"
|
msgstr "Закрыть все"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:741
|
#: extensions/window-list/extension.js:795
|
||||||
msgid "Window List"
|
msgid "Window List"
|
||||||
msgstr "Список окон"
|
msgstr "Список окон"
|
||||||
|
|
||||||
@@ -214,14 +214,14 @@ 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:86
|
#: extensions/window-list/prefs.js:79
|
||||||
msgid "Show windows from all workspaces"
|
msgid "Show windows from all workspaces"
|
||||||
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:21
|
||||||
msgid "Whether to show windows from all workspaces or only the current one."
|
msgid "Whether to show windows from all workspaces or only the current one."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Показывать ли список окон со всех рабочих областей или только с текущей."
|
"Показывать ли список окон со всех рабочих столов или только с текущего."
|
||||||
|
|
||||||
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:27
|
#: 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"
|
||||||
@@ -235,41 +235,40 @@ msgstr ""
|
|||||||
"Показывать ли список окон на всех подключенных мониторах или только на "
|
"Показывать ли список окон на всех подключенных мониторах или только на "
|
||||||
"основном."
|
"основном."
|
||||||
|
|
||||||
#: extensions/window-list/prefs.js:39
|
#: extensions/window-list/prefs.js:35
|
||||||
msgid "Window Grouping"
|
msgid "Window Grouping"
|
||||||
msgstr "Группировка окон"
|
msgstr "Группировка окон"
|
||||||
|
|
||||||
#: extensions/window-list/prefs.js:63
|
#: extensions/window-list/prefs.js:40
|
||||||
msgid "Never group windows"
|
msgid "Never group windows"
|
||||||
msgstr "Никогда не группировать окна"
|
msgstr "Никогда не группировать окна"
|
||||||
|
|
||||||
#: extensions/window-list/prefs.js:64
|
#: extensions/window-list/prefs.js:41
|
||||||
msgid "Group windows when space is limited"
|
msgid "Group windows when space is limited"
|
||||||
msgstr "Группировать окна, если место ограничено"
|
msgstr "Группировать окна, если место ограничено"
|
||||||
|
|
||||||
#: extensions/window-list/prefs.js:65
|
#: extensions/window-list/prefs.js:42
|
||||||
msgid "Always group windows"
|
msgid "Always group windows"
|
||||||
msgstr "Всегда группировать окна"
|
msgstr "Всегда группировать окна"
|
||||||
|
|
||||||
#: extensions/window-list/prefs.js:81
|
#: extensions/window-list/prefs.js:66
|
||||||
msgid "Show on all monitors"
|
msgid "Show on all monitors"
|
||||||
msgstr "Показывать на всех мониторах"
|
msgstr "Показывать на всех мониторах"
|
||||||
|
|
||||||
#: extensions/window-list/workspaceIndicator.js:249
|
#: extensions/window-list/workspaceIndicator.js:261
|
||||||
#: extensions/workspace-indicator/extension.js:254
|
#: extensions/workspace-indicator/extension.js:266
|
||||||
msgid "Workspace Indicator"
|
msgid "Workspace Indicator"
|
||||||
msgstr "Индикатор рабочей области"
|
msgstr "Индикатор рабочих столов"
|
||||||
|
|
||||||
#: extensions/workspace-indicator/prefs.js:33
|
#: extensions/workspace-indicator/prefs.js:62
|
||||||
msgid "Workspace Names"
|
|
||||||
msgstr "Названия рабочих областей"
|
|
||||||
|
|
||||||
#: extensions/workspace-indicator/prefs.js:66
|
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "Workspace %d"
|
msgid "Workspace %d"
|
||||||
msgstr "Рабочая область %d"
|
msgstr "Рабочий стол %d"
|
||||||
|
|
||||||
#: extensions/workspace-indicator/prefs.js:207
|
#: extensions/workspace-indicator/prefs.js:129
|
||||||
|
msgid "Workspace Names"
|
||||||
|
msgstr "Названия рабочих столов"
|
||||||
|
|
||||||
|
#: extensions/workspace-indicator/prefs.js:255
|
||||||
msgid "Add Workspace"
|
msgid "Add Workspace"
|
||||||
msgstr "Добавить рабочую область"
|
msgstr "Добавить рабочий стол"
|
||||||
|
|
||||||
|
|||||||
170
po/tr.po
170
po/tr.po
@@ -1,5 +1,5 @@
|
|||||||
# Turkish translation for gnome-shell-extensions.
|
# Turkish translation for gnome-shell-extensions.
|
||||||
# Copyright (C) 2012-2019 gnome-shell-extensions's COPYRIGHT HOLDER
|
# Copyright (C) 2012-2022 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.
|
||||||
#
|
#
|
||||||
# Osman Karagöz <osmank3@gmail.com>, 2012.
|
# Osman Karagöz <osmank3@gmail.com>, 2012.
|
||||||
@@ -14,7 +14,7 @@ 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/"
|
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell-extensions/"
|
||||||
"issues\n"
|
"issues\n"
|
||||||
"POT-Creation-Date: 2021-11-06 14:08+0000\n"
|
"POT-Creation-Date: 2022-07-10 12:54+0000\n"
|
||||||
"PO-Revision-Date: 2022-02-14 01:35+0300\n"
|
"PO-Revision-Date: 2022-02-14 01:35+0300\n"
|
||||||
"Last-Translator: Emin Tufan Çetin <etcetin@gmail.com>\n"
|
"Last-Translator: Emin Tufan Çetin <etcetin@gmail.com>\n"
|
||||||
"Language-Team: Turkish <gnome-turk@gnome.org>\n"
|
"Language-Team: Turkish <gnome-turk@gnome.org>\n"
|
||||||
@@ -42,11 +42,11 @@ msgstr "Wayland üstünde GNOME Klasik"
|
|||||||
msgid "GNOME Classic on Xorg"
|
msgid "GNOME Classic on Xorg"
|
||||||
msgstr "Xorg üstünde GNOME Klasik"
|
msgstr "Xorg üstünde GNOME Klasik"
|
||||||
|
|
||||||
#: extensions/apps-menu/extension.js:112
|
#: extensions/apps-menu/extension.js:118
|
||||||
msgid "Favorites"
|
msgid "Favorites"
|
||||||
msgstr "Gözdeler"
|
msgstr "Gözdeler"
|
||||||
|
|
||||||
#: extensions/apps-menu/extension.js:366
|
#: extensions/apps-menu/extension.js:379
|
||||||
msgid "Applications"
|
msgid "Applications"
|
||||||
msgstr "Uygulamalar"
|
msgstr "Uygulamalar"
|
||||||
|
|
||||||
@@ -62,26 +62,26 @@ msgstr ""
|
|||||||
"Her biri, bir uygulama kimliği (masaüstü dosya adı) ardından gelen iki nokta "
|
"Her biri, bir uygulama kimliği (masaüstü dosya adı) ardından gelen iki nokta "
|
||||||
"üst üste ve çalışma alanı numarasını içeren dizgeler listesi"
|
"üst üste ve çalışma alanı numarasını içeren dizgeler listesi"
|
||||||
|
|
||||||
#: extensions/auto-move-windows/prefs.js:34
|
#: extensions/auto-move-windows/prefs.js:152
|
||||||
msgid "Workspace Rules"
|
msgid "Workspace Rules"
|
||||||
msgstr "Çalışma Alanı Kuralları"
|
msgstr "Çalışma Alanı Kuralları"
|
||||||
|
|
||||||
#: extensions/auto-move-windows/prefs.js:236
|
#: extensions/auto-move-windows/prefs.js:306
|
||||||
msgid "Add Rule"
|
msgid "Add Rule"
|
||||||
msgstr "Kural Ekle"
|
msgstr "Kural Ekle"
|
||||||
|
|
||||||
#. TRANSLATORS: %s is the filesystem name
|
#. TRANSLATORS: %s is the filesystem name
|
||||||
#: extensions/drive-menu/extension.js:133
|
#: extensions/drive-menu/extension.js:126
|
||||||
#: extensions/places-menu/placeDisplay.js:233
|
#: extensions/places-menu/placeDisplay.js:210
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "Ejecting drive “%s” failed:"
|
msgid "Ejecting drive “%s” failed:"
|
||||||
msgstr "“%s” sürücüsü çıkarılamadı:"
|
msgstr "“%s” sürücüsü çıkarılamadı:"
|
||||||
|
|
||||||
#: extensions/drive-menu/extension.js:149
|
#: extensions/drive-menu/extension.js:145
|
||||||
msgid "Removable devices"
|
msgid "Removable devices"
|
||||||
msgstr "Çıkarılabilir aygıtlar"
|
msgstr "Çıkarılabilir aygıtlar"
|
||||||
|
|
||||||
#: extensions/drive-menu/extension.js:171
|
#: extensions/drive-menu/extension.js:167
|
||||||
msgid "Open Files"
|
msgid "Open Files"
|
||||||
msgstr "Dosyaları Aç"
|
msgstr "Dosyaları Aç"
|
||||||
|
|
||||||
@@ -96,9 +96,9 @@ msgid ""
|
|||||||
"This setting applies only with the natural placement strategy."
|
"This setting applies only with the natural placement strategy."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Ekran en-boy oranına uyarak ve sınır kutucuğunu küçültüp daha da "
|
"Ekran en-boy oranına uyarak ve sınır kutucuğunu küçültüp daha da "
|
||||||
"sıkılaştırarak, pencere küçük resimlerini yerleştirmek için ekranda daha "
|
"sıkılaştırarak, pencere küçük resimlerini yerleştirmek için ekranda daha çok "
|
||||||
"çok alan kullanmayı dene. Bu seçenek yalnızca doğal yerleştirme stratejisi "
|
"alan kullanmayı dene. Bu seçenek yalnızca doğal yerleştirme stratejisi ile "
|
||||||
"ile geçerlidir."
|
"geçerlidir."
|
||||||
|
|
||||||
#: 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"
|
||||||
@@ -115,31 +115,31 @@ msgstr ""
|
|||||||
"Yapılan değişikliklerin etkili olması için kabuğun yeniden başlatılması "
|
"Yapılan değişikliklerin etkili olması için kabuğun yeniden başlatılması "
|
||||||
"gerekir."
|
"gerekir."
|
||||||
|
|
||||||
#: extensions/places-menu/extension.js:88
|
#: extensions/places-menu/extension.js:94
|
||||||
#: extensions/places-menu/extension.js:91
|
#: extensions/places-menu/extension.js:97
|
||||||
msgid "Places"
|
msgid "Places"
|
||||||
msgstr "Yerler"
|
msgstr "Yerler"
|
||||||
|
|
||||||
#: extensions/places-menu/placeDisplay.js:46
|
#: extensions/places-menu/placeDisplay.js:49
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "Failed to launch “%s”"
|
msgid "Failed to launch “%s”"
|
||||||
msgstr "“%s” başlatılamadı"
|
msgstr "“%s” başlatılamadı"
|
||||||
|
|
||||||
#: extensions/places-menu/placeDisplay.js:61
|
#: extensions/places-menu/placeDisplay.js:64
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "Failed to mount volume for “%s”"
|
msgid "Failed to mount volume for “%s”"
|
||||||
msgstr "“%s” için birim bağlanamadı"
|
msgstr "“%s” için birim bağlanamadı"
|
||||||
|
|
||||||
|
#: extensions/places-menu/placeDisplay.js:125
|
||||||
#: extensions/places-menu/placeDisplay.js:148
|
#: extensions/places-menu/placeDisplay.js:148
|
||||||
#: extensions/places-menu/placeDisplay.js:171
|
|
||||||
msgid "Computer"
|
msgid "Computer"
|
||||||
msgstr "Bilgisayar"
|
msgstr "Bilgisayar"
|
||||||
|
|
||||||
#: extensions/places-menu/placeDisplay.js:359
|
#: extensions/places-menu/placeDisplay.js:336
|
||||||
msgid "Home"
|
msgid "Home"
|
||||||
msgstr "Ev"
|
msgstr "Ev"
|
||||||
|
|
||||||
#: extensions/places-menu/placeDisplay.js:404
|
#: extensions/places-menu/placeDisplay.js:381
|
||||||
msgid "Browse Network"
|
msgid "Browse Network"
|
||||||
msgstr "Ağa Gözat"
|
msgstr "Ağa Gözat"
|
||||||
|
|
||||||
@@ -179,27 +179,27 @@ msgstr "Önceki duruma getir"
|
|||||||
msgid "Maximize"
|
msgid "Maximize"
|
||||||
msgstr "En büyük duruma getir"
|
msgstr "En büyük duruma getir"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:434
|
#: extensions/window-list/extension.js:483
|
||||||
msgid "Minimize all"
|
msgid "Minimize all"
|
||||||
msgstr "Tümünü simge durumuna küçült"
|
msgstr "Tümünü simge durumuna küçült"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:440
|
#: extensions/window-list/extension.js:489
|
||||||
msgid "Unminimize all"
|
msgid "Unminimize all"
|
||||||
msgstr "Tümünü önceki duruma getir"
|
msgstr "Tümünü önceki duruma getir"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:446
|
#: extensions/window-list/extension.js:495
|
||||||
msgid "Maximize all"
|
msgid "Maximize all"
|
||||||
msgstr "Tümünü en büyük duruma getir"
|
msgstr "Tümünü en büyük duruma getir"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:454
|
#: extensions/window-list/extension.js:503
|
||||||
msgid "Unmaximize all"
|
msgid "Unmaximize all"
|
||||||
msgstr "Tümünü önceki duruma getir"
|
msgstr "Tümünü önceki duruma getir"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:462
|
#: extensions/window-list/extension.js:511
|
||||||
msgid "Close all"
|
msgid "Close all"
|
||||||
msgstr "Tümünü kapat"
|
msgstr "Tümünü kapat"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:741
|
#: extensions/window-list/extension.js:795
|
||||||
msgid "Window List"
|
msgid "Window List"
|
||||||
msgstr "Pencere Listesi"
|
msgstr "Pencere Listesi"
|
||||||
|
|
||||||
@@ -217,7 +217,7 @@ msgstr ""
|
|||||||
"“always” (her zaman)."
|
"“always” (her zaman)."
|
||||||
|
|
||||||
#: 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:86
|
#: extensions/window-list/prefs.js:79
|
||||||
msgid "Show windows from all workspaces"
|
msgid "Show windows from all workspaces"
|
||||||
msgstr "Tüm çalışma alanlarındaki pencereleri göster"
|
msgstr "Tüm çalışma alanlarındaki pencereleri göster"
|
||||||
|
|
||||||
@@ -236,129 +236,43 @@ 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 ""
|
||||||
"Pencere listesinin tüm bağlı monitörlerde mi yoksa yalnızca birincil monitörde "
|
"Pencere listesinin tüm bağlı monitörlerde mi yoksa yalnızca birincil "
|
||||||
"mi gösterileceğini belirtir."
|
"monitörde mi gösterileceğini belirtir."
|
||||||
|
|
||||||
#: extensions/window-list/prefs.js:39
|
#: extensions/window-list/prefs.js:35
|
||||||
msgid "Window Grouping"
|
msgid "Window Grouping"
|
||||||
msgstr "Pencere Kümeleme"
|
msgstr "Pencere Kümeleme"
|
||||||
|
|
||||||
#: extensions/window-list/prefs.js:63
|
#: extensions/window-list/prefs.js:40
|
||||||
msgid "Never group windows"
|
msgid "Never group windows"
|
||||||
msgstr "Pencereleri asla kümeleme"
|
msgstr "Pencereleri asla kümeleme"
|
||||||
|
|
||||||
#: extensions/window-list/prefs.js:64
|
#: extensions/window-list/prefs.js:41
|
||||||
msgid "Group windows when space is limited"
|
msgid "Group windows when space is limited"
|
||||||
msgstr "Yer kısıtlıyken pencereleri kümele"
|
msgstr "Yer kısıtlıyken pencereleri kümele"
|
||||||
|
|
||||||
#: extensions/window-list/prefs.js:65
|
#: extensions/window-list/prefs.js:42
|
||||||
msgid "Always group windows"
|
msgid "Always group windows"
|
||||||
msgstr "Pencereleri her zaman kümele"
|
msgstr "Pencereleri her zaman kümele"
|
||||||
|
|
||||||
#: extensions/window-list/prefs.js:81
|
#: extensions/window-list/prefs.js:66
|
||||||
msgid "Show on all monitors"
|
msgid "Show on all monitors"
|
||||||
msgstr "Tüm monitörlerde göster"
|
msgstr "Tüm monitörlerde göster"
|
||||||
|
|
||||||
#: extensions/window-list/workspaceIndicator.js:249
|
#: extensions/window-list/workspaceIndicator.js:261
|
||||||
#: extensions/workspace-indicator/extension.js:254
|
#: extensions/workspace-indicator/extension.js:266
|
||||||
msgid "Workspace Indicator"
|
msgid "Workspace Indicator"
|
||||||
msgstr "Çalışma Alanı Belirteci"
|
msgstr "Çalışma Alanı Belirteci"
|
||||||
|
|
||||||
#: extensions/workspace-indicator/prefs.js:33
|
#: extensions/workspace-indicator/prefs.js:62
|
||||||
msgid "Workspace Names"
|
|
||||||
msgstr "Çalışma Alanı Adları"
|
|
||||||
|
|
||||||
#: extensions/workspace-indicator/prefs.js:66
|
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "Workspace %d"
|
msgid "Workspace %d"
|
||||||
msgstr "Çalışma Alanı %d"
|
msgstr "Çalışma Alanı %d"
|
||||||
|
|
||||||
#: extensions/workspace-indicator/prefs.js:207
|
#: extensions/workspace-indicator/prefs.js:129
|
||||||
|
msgid "Workspace Names"
|
||||||
|
msgstr "Çalışma Alanı Adları"
|
||||||
|
|
||||||
|
#: extensions/workspace-indicator/prefs.js:255
|
||||||
msgid "Add Workspace"
|
msgid "Add Workspace"
|
||||||
msgstr "Çalışma Alanı Ekle"
|
msgstr "Çalışma Alanı Ekle"
|
||||||
|
|
||||||
#~ msgid "Application"
|
|
||||||
#~ msgstr "Uygulama"
|
|
||||||
|
|
||||||
#~ msgid "Create new matching rule"
|
|
||||||
#~ msgstr "Yeni bir eşleşme kuralı oluştur"
|
|
||||||
|
|
||||||
#~ msgid "Add"
|
|
||||||
#~ msgstr "Ekle"
|
|
||||||
|
|
||||||
#~ msgid "Name"
|
|
||||||
#~ msgstr "Ad"
|
|
||||||
|
|
||||||
#~ msgid "Attach modal dialog to the parent window"
|
|
||||||
#~ msgstr "Yardımcı iletişim penceresini ana pencereye iliştir"
|
|
||||||
|
|
||||||
#~ msgid ""
|
|
||||||
#~ "This key overrides the key in org.gnome.mutter when running GNOME Shell."
|
|
||||||
#~ msgstr ""
|
|
||||||
#~ "Bu anahtar, GNOME Shell çalışırken org.gnome.mutter içindeki anahtarı "
|
|
||||||
#~ "geçersiz kılar."
|
|
||||||
|
|
||||||
#~ msgid "Arrangement of buttons on the titlebar"
|
|
||||||
#~ msgstr "Başlık çubuğundaki düğmelerin düzeni"
|
|
||||||
|
|
||||||
#~ msgid ""
|
|
||||||
#~ "This key overrides the key in org.gnome.desktop.wm.preferences when "
|
|
||||||
#~ "running GNOME Shell."
|
|
||||||
#~ msgstr ""
|
|
||||||
#~ "Bu anahtar, GNOME Kabuğu çalışırken org.gnome.desktop.wm.preferences "
|
|
||||||
#~ "içindeki anahtarı geçersiz kılar."
|
|
||||||
|
|
||||||
#~ msgid "Enable edge tiling when dropping windows on screen edges"
|
|
||||||
#~ msgstr ""
|
|
||||||
#~ "Pencereler ekran kenarlarında bırakıldığında kenar döşemeyi etkinleştir"
|
|
||||||
|
|
||||||
#~ msgid "Workspaces only on primary monitor"
|
|
||||||
#~ msgstr "Çalışma alanları sadece birincil ekranda"
|
|
||||||
|
|
||||||
#~ msgid "Delay focus changes in mouse mode until the pointer stops moving"
|
|
||||||
#~ msgstr ""
|
|
||||||
#~ "Fare kipinde odak değişikliklerini işaretçi hareketi durana kadar beklet"
|
|
||||||
|
|
||||||
#~ msgid "Thumbnail only"
|
|
||||||
#~ msgstr "Yalnızca küçük resim"
|
|
||||||
|
|
||||||
#~ msgid "Application icon only"
|
|
||||||
#~ msgstr "Sadece uygulama simgesi"
|
|
||||||
|
|
||||||
#~ msgid "Thumbnail and application icon"
|
|
||||||
#~ msgstr "Küçük resim ve uygulama simgesi"
|
|
||||||
|
|
||||||
#~ msgid "Present windows as"
|
|
||||||
#~ msgstr "Pencereleri farklı sun"
|
|
||||||
|
|
||||||
#~ msgid "Activities Overview"
|
|
||||||
#~ msgstr "Etkinlikler Genel Görünümü"
|
|
||||||
|
|
||||||
#~ msgid "Hello, world!"
|
|
||||||
#~ msgstr "Merhaba dünya!"
|
|
||||||
|
|
||||||
#~ msgid "Alternative greeting text."
|
|
||||||
#~ msgstr "Alternatif karşılama metni."
|
|
||||||
|
|
||||||
#~ msgid ""
|
|
||||||
#~ "If not empty, it contains the text that will be shown when clicking on "
|
|
||||||
#~ "the panel."
|
|
||||||
#~ msgstr "Eğer boş değilse, panele tıklandığında gösterilecek metni içerir."
|
|
||||||
|
|
||||||
#~ msgid "Message"
|
|
||||||
#~ msgstr "İleti"
|
|
||||||
|
|
||||||
#~ 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 ""
|
|
||||||
#~ "Bu örnek, Shell için uygun eklentilerin nasıl geliştirileceğini "
|
|
||||||
#~ "göstermeyi amaçlar; bu yüzden kendi başına çok az işleve sahiptir.\n"
|
|
||||||
#~ "Yine de karşılama iletisini özelleştirmek mümkündür."
|
|
||||||
|
|
||||||
#~ msgid "CPU"
|
|
||||||
#~ msgstr "İşlemci"
|
|
||||||
|
|
||||||
#~ msgid "Memory"
|
|
||||||
#~ msgstr "Bellek"
|
|
||||||
|
|||||||
Reference in New Issue
Block a user