Compare commits
343
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
5edffcd859 | ||
|
|
14cdb5fa16 | ||
|
|
533cd07cfd | ||
|
|
7232118978 | ||
|
|
7a1286ec1c | ||
|
|
a51a52268e | ||
|
|
6db43f9603 | ||
|
|
f7b5836c75 | ||
|
|
ffb2b27477 | ||
|
|
dd3c524c49 | ||
|
|
b92973df00 | ||
|
|
0b7e8f9720 | ||
|
|
f6342d3b52 | ||
|
|
013b3fb73c | ||
|
|
69527857f8 | ||
|
|
e0128a7817 | ||
|
|
62628b25c6 | ||
|
|
3f89b57c96 | ||
|
|
01537b401f | ||
|
|
30e846274c | ||
|
|
d340922fea | ||
|
|
8dd8d6f561 | ||
|
|
cdaa837d48 | ||
|
|
7576b5c602 | ||
|
|
fac3d8b8c4 | ||
|
|
cecf778381 | ||
|
|
0663a989f4 | ||
|
|
7b2d9d0b73 | ||
|
|
f220e11bce | ||
|
|
af4165d3e5 | ||
|
|
c82ca68c03 | ||
|
|
d8b526a715 | ||
|
|
a5b6871562 | ||
|
|
deb6031381 | ||
|
|
486cb59aff | ||
|
|
de9a3df7bd | ||
|
|
02e5029eb6 | ||
|
|
d98153ba9e | ||
|
|
4d913adcec | ||
|
|
5729d0b84a | ||
|
|
4a26cecd7d | ||
|
|
e5a3fa4cfa | ||
|
|
6268e82f35 | ||
|
|
348a5777d3 | ||
|
|
594af0c412 | ||
|
|
d6a81150b6 | ||
|
|
38b3413e94 | ||
|
|
762ec75601 | ||
|
|
6da9a39959 | ||
|
|
2938a1a312 | ||
|
|
eb517c8517 | ||
|
|
a79d2afb2d | ||
|
|
db131fc7da | ||
|
|
396f4ef566 | ||
|
|
c26b4803c3 | ||
|
|
4ccf12e988 | ||
|
|
74121fce78 | ||
|
|
0a7491d747 | ||
|
|
68bf3e7ff7 | ||
|
|
93dd8f535d | ||
|
|
0b993525f5 | ||
|
|
5dfdb68c75 | ||
|
|
443d1dc42b | ||
|
|
34f6c9514a | ||
|
|
2f2619403a | ||
|
|
d25cc847f3 | ||
|
|
769ad859e6 | ||
|
|
7ba0e5b42c | ||
|
|
80c6656c4f | ||
|
|
201339345d | ||
|
|
6ee4205f1e | ||
|
|
2307e2cabe | ||
|
|
4becaa28ce | ||
|
|
a5a3523df8 | ||
|
|
cc45bd63ab | ||
|
|
757bcee4e2 | ||
|
|
1340b209f9 | ||
|
|
8f362d57fe | ||
|
|
d0b9c9b54a | ||
|
|
6284b0c489 | ||
|
|
06acd9ff25 | ||
|
|
1a1d45d9e4 | ||
|
|
1d3775b3d1 | ||
|
|
8a211f98fd | ||
|
|
d6633397b7 | ||
|
|
0d06cc685e | ||
|
|
8de89a44a4 | ||
|
|
f3b1f10f6c | ||
|
|
15c83db793 | ||
|
|
cc021589b8 | ||
|
|
2bced47762 | ||
|
|
7ba9b87064 | ||
|
|
a642c439ce | ||
|
|
d421bbfa60 | ||
|
|
3539ce1139 | ||
|
|
5e316d37cb | ||
|
|
28dbb47937 | ||
|
|
619de9d5ee | ||
|
|
561b8aeb03 | ||
|
|
94b907f46d | ||
|
|
1e04622eb4 | ||
|
|
519269be9d | ||
|
|
7d6670ce3c | ||
|
|
4286fd1bcc | ||
|
|
3bb0897bc1 | ||
|
|
50bd597baa | ||
|
|
12eedcf6f7 | ||
|
|
4403b54fbc | ||
|
|
08d382facc | ||
|
|
d9ae9a023a | ||
|
|
d6648b0b5c | ||
|
|
96a1de92db | ||
|
|
861e5c0be6 | ||
|
|
bf86b84d6c | ||
|
|
cc2f46b837 | ||
|
|
605dd02217 | ||
|
|
b33a62f2dc | ||
|
|
8a320eb0a1 | ||
|
|
83c4ced407 | ||
|
|
e094dead91 | ||
|
|
6cdf86b6b3 | ||
|
|
3e8bbb07ea | ||
|
|
e3ddd8e7d0 | ||
|
|
aa67982129 | ||
|
|
8aa645ae5d | ||
|
|
20540cb843 | ||
|
|
d338930d69 | ||
|
|
35c1763792 | ||
|
|
7a87bdcb1b | ||
|
|
50b6bd1884 | ||
|
|
db853d9023 | ||
|
|
5be44705f7 | ||
|
|
fdfa46099b | ||
|
|
f987e5f13d | ||
|
|
c766230118 | ||
|
|
bb2b1204b4 | ||
|
|
cf3690a434 | ||
|
|
7062acf10f | ||
|
|
7ace9c4d51 | ||
|
|
23887ce2a3 | ||
|
|
e8b8677bfe | ||
|
|
3603bc7c6a | ||
|
|
1e44941db6 | ||
|
|
f71da9e843 | ||
|
|
1b4a20a8af | ||
|
|
d8e179ed09 | ||
|
|
8016cf7ae9 | ||
|
|
7774426eb9 | ||
|
|
9fa522c29a | ||
|
|
b92295ad2c | ||
|
|
d7c8a5d193 | ||
|
|
0d8d6dceb0 | ||
|
|
8a5e793b3d | ||
|
|
8fcbed6481 | ||
|
|
ac2ed286e1 | ||
|
|
3c3c1f702d | ||
|
|
c33be29f56 | ||
|
|
d8ae2dcba2 | ||
|
|
3b14c0a04e | ||
|
|
0e3d6465eb | ||
|
|
d381a0b89b | ||
|
|
5df0fa145b | ||
|
|
f0ff0e1400 | ||
|
|
53f5a92dc8 | ||
|
|
d5c31273ee | ||
|
|
22ea58a849 | ||
|
|
67d96993ce | ||
|
|
96dd4f9835 | ||
|
|
3bef6be7c1 | ||
|
|
b83d38a72e | ||
|
|
5b73960f34 | ||
|
|
505a7f4ac9 | ||
|
|
e8acfb2b51 | ||
|
|
dcd5dc4c7f | ||
|
|
2702cdf889 | ||
|
|
669e7c32a2 | ||
|
|
294eb0feb5 | ||
|
|
a7ddbd0d53 | ||
|
|
c745dd6362 | ||
|
|
a4cf9f956e | ||
|
|
02aa68b24a | ||
|
|
9f25047e24 | ||
|
|
fb66afbf71 | ||
|
|
365fa6abc9 | ||
|
|
d7a824f35f | ||
|
|
0d8e412220 | ||
|
|
991f6ef508 | ||
|
|
37f03f5e2e | ||
|
|
b4a4ff0a06 | ||
|
|
de8876bd5e | ||
|
|
5ad272e628 | ||
|
|
3b22582752 | ||
|
|
4e731e1dce | ||
|
|
eee341e907 | ||
|
|
aad96bb1c4 | ||
|
|
50d3ee5703 | ||
|
|
08dfb78815 | ||
|
|
6949a5d075 | ||
|
|
893d3b0473 | ||
|
|
f5128e13f2 | ||
|
|
8318ea919f | ||
|
|
bde20e78f0 | ||
|
|
02db9525e7 | ||
|
|
8d4586bd57 | ||
|
|
8872659621 | ||
|
|
46c7677643 | ||
|
|
e734fcbd21 | ||
|
|
435879c121 | ||
|
|
4b9f4b1b63 | ||
|
|
b64c93897b | ||
|
|
a7939f18d1 | ||
|
|
15efbc29be | ||
|
|
6e5466a4ec | ||
|
|
737c897624 | ||
|
|
c317a876dd | ||
|
|
72c67aacc4 | ||
|
|
ba7e3fc0b5 | ||
|
|
61cf679b8c | ||
|
|
ba55bacab4 | ||
|
|
9445bd2205 | ||
|
|
ed81650f55 | ||
|
|
1276a880de | ||
|
|
6ed1f45ffd | ||
|
|
81be1d2e2f | ||
|
|
52abf74088 | ||
|
|
623bc6dbf3 | ||
|
|
04b23ec68f | ||
|
|
584016c291 | ||
|
|
b65f362f0d | ||
|
|
41664b152c | ||
|
|
7c30f35b12 | ||
|
|
9e976f06b4 | ||
|
|
369801dbeb | ||
|
|
2c3c7e8a73 | ||
|
|
bb8f34de83 | ||
|
|
6c98658fe1 | ||
|
|
8957c277a1 | ||
|
|
3f06c2bc04 | ||
|
|
9e38b091a9 | ||
|
|
62d7b883f0 | ||
|
|
e56a9c5681 | ||
|
|
03aa180472 | ||
|
|
bbb0775e1a | ||
|
|
c41d285131 | ||
|
|
cc63876b7e | ||
|
|
08769ec0b6 | ||
|
|
5615c21797 | ||
|
|
48d2b4c902 | ||
|
|
a43db7233d | ||
|
|
8b9be8f120 | ||
|
|
25143c92f4 | ||
|
|
c4ab7e9bbf | ||
|
|
1d082fc026 | ||
|
|
75919911f5 | ||
|
|
bf1f129854 | ||
|
|
59bcc0a6a7 | ||
|
|
61a54add2e | ||
|
|
17d07239c1 | ||
|
|
bf8a31a6c8 | ||
|
|
1d2fdf5c19 | ||
|
|
f6ada58f5f | ||
|
|
ebfbc397be | ||
|
|
02290e8bba | ||
|
|
1537ac39d4 | ||
|
|
e39c3b4561 | ||
|
|
80030687d9 | ||
|
|
3859c09318 | ||
|
|
a41cd3c19a | ||
|
|
fcbdeba8c5 | ||
|
|
116f074e3b | ||
|
|
9a78c7e4f4 | ||
|
|
9a2d6d68ff | ||
|
|
bc49778100 | ||
|
|
67d2e2f623 | ||
|
|
eff625fcb8 | ||
|
|
3742f79d4b | ||
|
|
b6a3503f5e | ||
|
|
f449ab31c9 | ||
|
|
920b925b12 | ||
|
|
ad5e70b03b | ||
|
|
7beebc11f6 | ||
|
|
1391acd71f | ||
|
|
761fdf1036 | ||
|
|
7f2c39cdb2 | ||
|
|
b5ff860118 | ||
|
|
aeaba3f379 | ||
|
|
f96943a4dc | ||
|
|
60ad2e37ff | ||
|
|
8c53fd9590 | ||
|
|
867ace0b0a | ||
|
|
a74862e745 | ||
|
|
c16f9828bd | ||
|
|
608a8b1639 | ||
|
|
7bc9b282a2 | ||
|
|
9db7b96f24 | ||
|
|
c87cfc822a | ||
|
|
d3b687df8b | ||
|
|
ff94c5a143 | ||
|
|
df463177e7 | ||
|
|
62af36ebfa | ||
|
|
81f999f761 | ||
|
|
17b5c0400a | ||
|
|
ac937b9549 | ||
|
|
0c223de045 | ||
|
|
564235d44c | ||
|
|
92a2361306 | ||
|
|
9f27654729 | ||
|
|
f4013c7a5c | ||
|
|
9e7eff4a3e | ||
|
|
c5246b7415 | ||
|
|
5b2bdd138a | ||
|
|
90d3c5c51d | ||
|
|
b00e531626 | ||
|
|
b1c1b01184 | ||
|
|
739b1e11a0 | ||
|
|
a3541ff0d9 | ||
|
|
8fb5476a1c | ||
|
|
fc8a46f15a | ||
|
|
2e21f7cf72 | ||
|
|
a317d79016 | ||
|
|
4722b89cc3 | ||
|
|
5a4b71ba90 | ||
|
|
a6ee142f21 | ||
|
|
35427ed4f1 | ||
|
|
bce63d3168 | ||
|
|
0426d1d8d5 | ||
|
|
d39c1fd685 | ||
|
|
665a7fbbcb | ||
|
|
f9aaa732b2 | ||
|
|
7b82c5e12b | ||
|
|
a4987d03b8 | ||
|
|
db305687d5 | ||
|
|
c477f10bfb | ||
|
|
f527fe3774 | ||
|
|
2ae0f368b9 | ||
|
|
3428bebb67 | ||
|
|
ac33058086 | ||
|
|
73822dc5f5 | ||
|
|
961757f717 | ||
|
|
7d5c985004 | ||
|
|
cd16995503 | ||
|
|
3a3b5bac85 | ||
|
|
9f6b83eece |
+177
@@ -0,0 +1,177 @@
|
|||||||
|
include:
|
||||||
|
- remote: 'https://gitlab.freedesktop.org/freedesktop/ci-templates/-/raw/bbe5232986c9b98eb1efe62484e07216f7d1a4df/templates/fedora.yml'
|
||||||
|
- remote: "https://gitlab.freedesktop.org/freedesktop/ci-templates/-/raw/6f86b8bcb0cd5168c32779c4fea9a893c4a0c046/templates/ci-fairy.yml"
|
||||||
|
|
||||||
|
image: registry.gitlab.gnome.org/gnome/gnome-shell/fedora/34:2021-08-12.0
|
||||||
|
|
||||||
|
stages:
|
||||||
|
- pre_review
|
||||||
|
- prepare
|
||||||
|
- review
|
||||||
|
- build
|
||||||
|
- deploy
|
||||||
|
|
||||||
|
default:
|
||||||
|
# Cancel jobs if newer commits are pushed to the branch
|
||||||
|
interruptible: true
|
||||||
|
# Auto-retry jobs in case of infra failures
|
||||||
|
retry:
|
||||||
|
max: 1
|
||||||
|
when:
|
||||||
|
- 'runner_system_failure'
|
||||||
|
- 'stuck_or_timeout_failure'
|
||||||
|
- 'scheduler_failure'
|
||||||
|
- 'api_failure'
|
||||||
|
|
||||||
|
variables:
|
||||||
|
FDO_UPSTREAM_REPO: GNOME/gnome-shell-extensions
|
||||||
|
LINT_LOG: "eslint-report.xml"
|
||||||
|
JS_LOG: "js-report.txt"
|
||||||
|
|
||||||
|
workflow:
|
||||||
|
rules:
|
||||||
|
- if: '$CI_MERGE_REQUEST_IID'
|
||||||
|
- if: '$CI_COMMIT_TAG'
|
||||||
|
- if: '$CI_COMMIT_BRANCH'
|
||||||
|
|
||||||
|
.pipeline_guard: &pipeline_guard
|
||||||
|
rules:
|
||||||
|
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
|
||||||
|
- if: '$CI_COMMIT_TAG'
|
||||||
|
- if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH'
|
||||||
|
- if: '$CI_COMMIT_BRANCH =~ /^gnome-[0-9-]+$/'
|
||||||
|
- when: 'manual'
|
||||||
|
|
||||||
|
.gnome-shell-extensions.fedora:34:
|
||||||
|
variables:
|
||||||
|
FDO_DISTRIBUTION_VERSION: 34
|
||||||
|
FDO_DISTRIBUTION_TAG: '2021-08-31.0'
|
||||||
|
FDO_DISTRIBUTION_PACKAGES: >
|
||||||
|
meson git gettext sassc
|
||||||
|
|
||||||
|
.prereview_req: &prereview_req
|
||||||
|
needs:
|
||||||
|
- check_commit_log
|
||||||
|
- check-merge-request
|
||||||
|
|
||||||
|
check_commit_log:
|
||||||
|
extends:
|
||||||
|
- .fdo.ci-fairy
|
||||||
|
stage: pre_review
|
||||||
|
script:
|
||||||
|
- if [[ x"$CI_MERGE_REQUEST_TARGET_BRANCH_NAME" != "x" ]] ;
|
||||||
|
then
|
||||||
|
ci-fairy check-commits --junit-xml=commit-message-junit-report.xml ;
|
||||||
|
else
|
||||||
|
echo "Not a merge request" ;
|
||||||
|
fi
|
||||||
|
<<: *pipeline_guard
|
||||||
|
artifacts:
|
||||||
|
expire_in: 1 week
|
||||||
|
paths:
|
||||||
|
- commit-message-junit-report.xml
|
||||||
|
reports:
|
||||||
|
junit: commit-message-junit-report.xml
|
||||||
|
|
||||||
|
check-merge-request:
|
||||||
|
extends:
|
||||||
|
- .fdo.ci-fairy
|
||||||
|
stage: pre_review
|
||||||
|
script:
|
||||||
|
- if [[ x"$CI_MERGE_REQUEST_TARGET_BRANCH_NAME" != "x" ]] ;
|
||||||
|
then
|
||||||
|
ci-fairy check-merge-request --require-allow-collaboration --junit-xml=check-merge-request-report.xml ;
|
||||||
|
else
|
||||||
|
echo "Not a merge request" ;
|
||||||
|
fi
|
||||||
|
<<: *pipeline_guard
|
||||||
|
artifacts:
|
||||||
|
expire_in: 1 week
|
||||||
|
paths:
|
||||||
|
- check-merge-request-report.xml
|
||||||
|
reports:
|
||||||
|
junit: check-merge-request-report.xml
|
||||||
|
|
||||||
|
build-fedora-container:
|
||||||
|
extends:
|
||||||
|
- .fdo.container-build@fedora@x86_64
|
||||||
|
- .gnome-shell-extensions.fedora:34
|
||||||
|
stage: prepare
|
||||||
|
<<: *prereview_req
|
||||||
|
|
||||||
|
js_check:
|
||||||
|
stage: review
|
||||||
|
<<: *prereview_req
|
||||||
|
script:
|
||||||
|
- find extensions -name '*.js' -exec js78 -c '{}' ';' 2>&1 | tee $JS_LOG
|
||||||
|
- (! grep -q . $JS_LOG)
|
||||||
|
artifacts:
|
||||||
|
paths:
|
||||||
|
- ${JS_LOG}
|
||||||
|
when: on_failure
|
||||||
|
|
||||||
|
eslint:
|
||||||
|
stage: review
|
||||||
|
<<: *prereview_req
|
||||||
|
script:
|
||||||
|
- eslint -o $LINT_LOG -f junit --resolve-plugins-relative-to $(npm root -g) extensions
|
||||||
|
artifacts:
|
||||||
|
paths:
|
||||||
|
- ${LINT_LOG}
|
||||||
|
reports:
|
||||||
|
junit: ${LINT_LOG}
|
||||||
|
|
||||||
|
build-bundles:
|
||||||
|
stage: build
|
||||||
|
<<: *prereview_req
|
||||||
|
script:
|
||||||
|
- ./export-zips.sh
|
||||||
|
artifacts:
|
||||||
|
name: 'Extension bundles'
|
||||||
|
expose_as: 'Get Extension bundles here'
|
||||||
|
paths:
|
||||||
|
- zip-files/
|
||||||
|
|
||||||
|
fedora-build:
|
||||||
|
extends:
|
||||||
|
- .fdo.distribution-image@fedora
|
||||||
|
- .gnome-shell-extensions.fedora:34
|
||||||
|
stage: build
|
||||||
|
needs:
|
||||||
|
- build-fedora-container
|
||||||
|
before_script:
|
||||||
|
- git submodule update --init
|
||||||
|
script:
|
||||||
|
- meson setup build --werror -Dextension_set=all -Dclassic_mode=true
|
||||||
|
- meson compile -C build
|
||||||
|
- meson test -C build
|
||||||
|
- meson install -C build
|
||||||
|
artifacts:
|
||||||
|
paths:
|
||||||
|
- build
|
||||||
|
|
||||||
|
fedora-dist:
|
||||||
|
extends:
|
||||||
|
- .fdo.distribution-image@fedora
|
||||||
|
- .gnome-shell-extensions.fedora:34
|
||||||
|
stage: deploy
|
||||||
|
needs:
|
||||||
|
- fedora-build
|
||||||
|
before_script:
|
||||||
|
- git submodule update --init
|
||||||
|
script:
|
||||||
|
- meson dist -C build
|
||||||
|
rules:
|
||||||
|
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
|
||||||
|
changes:
|
||||||
|
- "**/meson.build"
|
||||||
|
- meson/*
|
||||||
|
|
||||||
|
fedora-dist-tarball:
|
||||||
|
extends: fedora-dist
|
||||||
|
artifacts:
|
||||||
|
expose_as: 'Get tarball here'
|
||||||
|
paths:
|
||||||
|
- build/meson-dist/$CI_PROJECT_NAME-$CI_COMMIT_TAG.tar.xz
|
||||||
|
rules:
|
||||||
|
- if: '$CI_COMMIT_TAG'
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
patterns:
|
||||||
|
deny:
|
||||||
|
- regex: '^$CI_MERGE_REQUEST_PROJECT_URL/(-/)?merge_requests/$CI_MERGE_REQUEST_IID$'
|
||||||
|
message: Commit message must not contain a link to its own merge request
|
||||||
|
- regex: '^extensions/'
|
||||||
|
message: Commit message subject should not be prefixed with 'extensions/', use the extension name instead
|
||||||
|
where: subject
|
||||||
|
- regex: '^[^:]+: [a-z]'
|
||||||
|
message: "Commit message subject should be properly Capitalized. E.g. 'window: Marginalize extradicity'"
|
||||||
|
where: subject
|
||||||
|
- regex: '^\S*\.js:'
|
||||||
|
message: Commit message subject prefix should not include .js
|
||||||
|
where: subject
|
||||||
+1
-1
@@ -28,4 +28,4 @@ imports (like imports.lang or imports.dbus) and introspection,
|
|||||||
the other for Shell API. Within the same group, put everything
|
the other for Shell API. Within the same group, put everything
|
||||||
in alphabetic order.
|
in alphabetic order.
|
||||||
|
|
||||||
[coding-style]: https://gitlab.gnome.org/GNOME/gjs/blob/master/doc/Style_Guide.md
|
[coding-style]: https://gitlab.gnome.org/GNOME/gjs/blob/HEAD/doc/Style_Guide.md
|
||||||
|
|||||||
@@ -1,3 +1,238 @@
|
|||||||
|
42.beta
|
||||||
|
=======
|
||||||
|
* workspace-indicator: Fix cancelling editing with Esc [Florian; !208]
|
||||||
|
* window-list: Update window tracking to avoid missing icons [Florian; !207]
|
||||||
|
* Use libadwaita for preferences [Florian; !209, !213]
|
||||||
|
* Adapt to Clutter grab API changes [Florian; !212]
|
||||||
|
* Misc. bug fixes and cleanups [Jan, Florian; !210, !214]
|
||||||
|
|
||||||
|
Contributors:
|
||||||
|
Jan Beich, Florian Müllner, Naala Nanba
|
||||||
|
|
||||||
|
Translators:
|
||||||
|
Boyuan Yang [zh_CN], Matej Urbančič [sl], Naala Nanba [ab],
|
||||||
|
Alexander Shopov [bg], Emin Tufan Çetin [tr]
|
||||||
|
|
||||||
|
42.alpha
|
||||||
|
========
|
||||||
|
* native-window-placement: Fix distorted layout in app grid [Sebastian; !189]
|
||||||
|
* window-list: Fix on-screen keyboard [Florian; !199]
|
||||||
|
* Misc. bug fixes and cleanups [Neal; Just; !195, !197]
|
||||||
|
|
||||||
|
Contributors:
|
||||||
|
Piotr Drąg, Neal Gompa, Sebastian Keller, Florian Müllner, Just Perfection
|
||||||
|
|
||||||
|
Translators:
|
||||||
|
Goran Vidović [hr], Sveinn í Felli [is], Yuri Chornoivan [uk],
|
||||||
|
Fabio Tomat [fur], Quentin PAGÈS [oc], Hugo Carvalho [pt],
|
||||||
|
Yaron Shahrabani [he], Jordi Mas i Hernandez [ca], MohammadSaleh Kamyab [fa],
|
||||||
|
Fran Dieguez [gl], Daniel Mustieles [es], Aleksandr Melman [ru],
|
||||||
|
Aurimas Černius [lt], Asier Sarasua Garmendia [eu], Kukuh Syafaat [id],
|
||||||
|
Rafael Fontenelle [pt_BR]
|
||||||
|
|
||||||
|
41.0
|
||||||
|
====
|
||||||
|
* Bump version
|
||||||
|
|
||||||
|
41.rc.1
|
||||||
|
=======
|
||||||
|
* Fix pre-generating stylesheets in tarball [Florian; !190]
|
||||||
|
|
||||||
|
Contributors:
|
||||||
|
Florian Müllner
|
||||||
|
|
||||||
|
41.rc
|
||||||
|
=====
|
||||||
|
* window-list: Adapt to overview-on-startup [Florian; !185]
|
||||||
|
* apps-menu: Use a custom 'toggle-menu' shortcut [Florian; !173]
|
||||||
|
* Misc. bug fixes and cleanups [Florian; !186]
|
||||||
|
|
||||||
|
Contributors:
|
||||||
|
Florian Müllner
|
||||||
|
|
||||||
|
41.beta
|
||||||
|
=======
|
||||||
|
* window-list: Extend reactive area of minimap to screen edges [Adam; !171]
|
||||||
|
* drive-menu: Improve detection of network mounts [Florian; !27, !176]
|
||||||
|
* Use distinct gettext domain for e.g.o uploads [Florian; #335]
|
||||||
|
* Misc. bug fixes and cleanups [Florian; !172, !174, !177, !167, !178, !180,
|
||||||
|
!181, !182, !183]
|
||||||
|
|
||||||
|
Contributors:
|
||||||
|
Marco Trevisan (Treviño), Adam Goode, Florian Müllner
|
||||||
|
|
||||||
|
Translators:
|
||||||
|
Hugo Carvalho [pt], Juliano de Souza Camargo [pt], Alexander Shopov [bg]
|
||||||
|
|
||||||
|
40.1
|
||||||
|
====
|
||||||
|
* Disable welcome dialog in classic session [Florian; !169]
|
||||||
|
* windowsNavigator: Adjust to a late gnome-shell change [Florian; !170]
|
||||||
|
|
||||||
|
Contributors:
|
||||||
|
Florian Müllner
|
||||||
|
|
||||||
|
Translators:
|
||||||
|
Ngọc Quân Trần [vi], Anders Jonsson [sv], Carmen Bianca BAKKER [eo],
|
||||||
|
Pawan Chitrakar [ne], Quentin PAGÈS [oc]
|
||||||
|
|
||||||
|
40.0
|
||||||
|
====
|
||||||
|
|
||||||
|
Translators:
|
||||||
|
Jiri Grönroos [fi]
|
||||||
|
|
||||||
|
40.rc
|
||||||
|
=====
|
||||||
|
* native-window-placement: Adjust to gnome-shell changes [Florian; !164]
|
||||||
|
* windows-navigator: Adjust to gnome-shell changes [Florian; !163]
|
||||||
|
* window-list, workspace-indicator: Only show previews for up to six workspaces
|
||||||
|
[Florian; !165]
|
||||||
|
* window-list, workspace-indicator: Improve workspace preview appearance
|
||||||
|
[Florian; !166]
|
||||||
|
|
||||||
|
Contributors:
|
||||||
|
Florian Müllner
|
||||||
|
|
||||||
|
Translators:
|
||||||
|
Fran Dieguez [gl]
|
||||||
|
|
||||||
|
40.beta
|
||||||
|
=======
|
||||||
|
* Add tooltips to workspace thumbnails [Florian; !155]
|
||||||
|
* Drop arrows from top bar menus [Florian; !156]
|
||||||
|
* drive-menu: Mark mounts that can be unmounted as removable [Michael; !152]
|
||||||
|
* Remove horizontal-workspaces extension [Florian; !158]
|
||||||
|
* Adjust to shell overview changes [Florian; !159, !160]
|
||||||
|
* Fix crashes [Daniel; !157]
|
||||||
|
* Misc. bug fixes and cleanups [Florian; !154, !161]
|
||||||
|
|
||||||
|
Contributors:
|
||||||
|
Michael Lawton, Florian Müllner, Daniel van Vugt
|
||||||
|
|
||||||
|
Translators:
|
||||||
|
Аляксей [be], A S Alam [pa]
|
||||||
|
|
||||||
|
40.alpha.1
|
||||||
|
==========
|
||||||
|
* Don't depend on sassc when building from tarball [Florian; !150]
|
||||||
|
* Port extensions preferences to GTK4 [Florian; !148]
|
||||||
|
* Misc. bug fixes and cleanups [Florian, Jonas; !149, !151, !153]
|
||||||
|
|
||||||
|
Contributors:
|
||||||
|
Jonas Dreßler, Florian Müllner
|
||||||
|
|
||||||
|
40.alpha
|
||||||
|
========
|
||||||
|
* window-list: Honor changes in skip-taskbar property [Sergio; !130]
|
||||||
|
* window-list, workspace-indicator: Adjust to 3.38 changes [Florian; !133]
|
||||||
|
* window-list, workspace-indicator: Improve previews in workspace thumbs
|
||||||
|
[Florian; #260, !142]
|
||||||
|
* auto-move: Improve behavior on multi-monitor setups [Florian; !135]
|
||||||
|
* windowNavigator: Adjust to 3.38 changes [Thun; #259]
|
||||||
|
* Misc. bug fixes and cleanups [Florian, Jonas Å, Jordan, Ray; !131, !136,
|
||||||
|
!137, !140, !141, !144, !146, !145]
|
||||||
|
|
||||||
|
Contributors:
|
||||||
|
Sergio Costas, Florian Müllner, Jordan Petridis, Thun Pin, Ray Strode,
|
||||||
|
Jonas Ådahl
|
||||||
|
|
||||||
|
Translators:
|
||||||
|
Fabio Tomat [fur], Jordi Mas [ca]
|
||||||
|
|
||||||
|
3.38.1
|
||||||
|
======
|
||||||
|
|
||||||
|
Contributors:
|
||||||
|
Yacine Bouklif, Florian Müllner
|
||||||
|
|
||||||
|
Translators:
|
||||||
|
Yacine Bouklif [kab], Cheng-Chia Tseng [zh_TW], Stas Solovey [ru],
|
||||||
|
Yosef Or Boczko [he]
|
||||||
|
|
||||||
|
3.38.0
|
||||||
|
======
|
||||||
|
|
||||||
|
Translators:
|
||||||
|
Balázs Meskó [hu], Alan Mortensen [da], Juliano Camargo [pt], Tim Sabsch [de],
|
||||||
|
Milo Casagrande [it], Rūdolfs Mazurs [lv]
|
||||||
|
|
||||||
|
3.37.92
|
||||||
|
=======
|
||||||
|
|
||||||
|
Translators:
|
||||||
|
Nathan Follens [nl], Zander Brown [en_GB], Aurimas Černius [lt],
|
||||||
|
Marek Černocký [cs], Changwoo Ryu [ko], Dušan Kazik [sk]
|
||||||
|
|
||||||
|
3.37.91
|
||||||
|
=======
|
||||||
|
|
||||||
|
Contributors:
|
||||||
|
Florian Müllner
|
||||||
|
|
||||||
|
Translators:
|
||||||
|
Fran Dieguez [gl], Akarshan Biswas [bn_IN], Kukuh Syafaat [id],
|
||||||
|
Piotr Drąg [pl], Rafael Fontenelle [pt_BR], Jiri Grönroos [fi],
|
||||||
|
Марко Костић [sr], Goran Vidović [hr]
|
||||||
|
|
||||||
|
3.37.90
|
||||||
|
=======
|
||||||
|
* Misc. bug fixes and cleanups [Florian, Piotr; !126, !128]
|
||||||
|
|
||||||
|
Contributors:
|
||||||
|
Piotr Drąg, Florian Müllner
|
||||||
|
|
||||||
|
Translators:
|
||||||
|
Fabio Tomat [fur], Efstathios Iosifidis [el], Anders Jonsson [sv],
|
||||||
|
Asier Sarasua Garmendia [eu], Alexandre Franke [fr]
|
||||||
|
|
||||||
|
3.37.3
|
||||||
|
======
|
||||||
|
* window-list, native-window-placement: Adjust to shell changes [Florian; !124]
|
||||||
|
|
||||||
|
Contributors:
|
||||||
|
Florian Müllner
|
||||||
|
|
||||||
|
Translators:
|
||||||
|
Jordi Mas [ca], sicklylife [ja], Boyuan Yang [zh_CN],
|
||||||
|
Baurzhan Muftakhidinov [kk]
|
||||||
|
|
||||||
|
3.37.2
|
||||||
|
======
|
||||||
|
* window-list, auto-move: Modernize preference dialogs [Florian; !121]
|
||||||
|
* Adjust to gnome-shell changes [Florian; !122]
|
||||||
|
|
||||||
|
Contributors:
|
||||||
|
Florian Müllner
|
||||||
|
|
||||||
|
Translators:
|
||||||
|
Cheng-Chia Tseng [zh_TW], Yuri Chornoivan [uk], Daniel Mustieles [es],
|
||||||
|
Emin Tufan Çetin [tr], Danial Behzadi [fa], Daniel Șerbănescu [ro],
|
||||||
|
Matej Urbančič [sl]
|
||||||
|
|
||||||
|
3.37.1
|
||||||
|
======
|
||||||
|
* drive-menu: Emphasize eject buttons [Florian; #223]
|
||||||
|
* user-theme: Add preference dialog [Florian; !117]
|
||||||
|
* window-list: Fix inconsistent state in preference dialog [Milan; !119]
|
||||||
|
* workspace-indicator: Overhaul preference dialog [Florian; !120]
|
||||||
|
* user-theme: Support session mode styles [Florian; !118]
|
||||||
|
* Misc. bug fixes and cleanups [Florian, Xiaoguang; !113, !106, !114, !116]
|
||||||
|
|
||||||
|
Contributors:
|
||||||
|
Milan Crha, Florian Müllner, Xiaoguang Wang
|
||||||
|
|
||||||
|
Translators:
|
||||||
|
Daniel Korostil [uk], Yosef Or Boczko [he], Kristjan SCHMIDT [eo],
|
||||||
|
Dz Chen [zh_CN], Danial Behzadi [fa], Yuri Chornoivan [uk],
|
||||||
|
Anders Jonsson [sv], Daniel Mustieles [es]
|
||||||
|
|
||||||
|
3.36.0
|
||||||
|
======
|
||||||
|
|
||||||
|
Contributors:
|
||||||
|
Florian Müllner
|
||||||
|
|
||||||
3.35.91
|
3.35.91
|
||||||
=======
|
=======
|
||||||
|
|
||||||
|
|||||||
@@ -69,6 +69,19 @@ GSettings key.
|
|||||||
|
|
||||||
Adds a simple workspace switcher to the top bar.
|
Adds a simple workspace switcher to the top bar.
|
||||||
|
|
||||||
|
## Default branch
|
||||||
|
|
||||||
|
The default development branch is `main`. If you still have a local
|
||||||
|
checkout under the old name, use:
|
||||||
|
```sh
|
||||||
|
git checkout master
|
||||||
|
git branch -m master main
|
||||||
|
git fetch
|
||||||
|
git branch --unset-upstream
|
||||||
|
git branch -u origin/master
|
||||||
|
git symbolic-ref refs/remotes/origin/HEAD refs/remotes/origin/main
|
||||||
|
```
|
||||||
|
|
||||||
## License
|
## License
|
||||||
|
|
||||||
GNOME Shell Extensions are distributed under the terms of the GNU General
|
GNOME Shell Extensions are distributed under the terms of the GNU General
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
"parentMode": "user",
|
"parentMode": "user",
|
||||||
"stylesheetName": "gnome-classic.css",
|
"stylesheetName": "gnome-classic.css",
|
||||||
"hasOverview": false,
|
"hasOverview": false,
|
||||||
|
"showWelcomeDialog": false,
|
||||||
"enabledExtensions": [@CLASSIC_EXTENSIONS@],
|
"enabledExtensions": [@CLASSIC_EXTENSIONS@],
|
||||||
"panel": { "left": ["appMenu"],
|
"panel": { "left": ["appMenu"],
|
||||||
"center": [],
|
"center": [],
|
||||||
|
|||||||
@@ -0,0 +1,8 @@
|
|||||||
|
[Desktop Entry]
|
||||||
|
Name=GNOME Classic on Wayland
|
||||||
|
Comment=This session logs you into GNOME Classic
|
||||||
|
Exec=env GNOME_SHELL_SESSION_MODE=classic gnome-session
|
||||||
|
TryExec=gnome-session
|
||||||
|
Type=Application
|
||||||
|
DesktopNames=GNOME-Classic;GNOME;
|
||||||
|
X-GDM-SessionRegisters=true
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
[Desktop Entry]
|
||||||
|
Name=GNOME Classic on Xorg
|
||||||
|
Comment=This session logs you into GNOME Classic
|
||||||
|
Exec=env GNOME_SHELL_SESSION_MODE=classic gnome-session
|
||||||
|
TryExec=gnome-session
|
||||||
|
Type=Application
|
||||||
|
DesktopNames=GNOME-Classic;GNOME;
|
||||||
|
X-GDM-SessionRegisters=true
|
||||||
@@ -1,7 +1,8 @@
|
|||||||
[Desktop Entry]
|
[Desktop Entry]
|
||||||
Name=GNOME Classic
|
Name=GNOME Classic
|
||||||
Comment=This session logs you into GNOME Classic
|
Comment=This session logs you into GNOME Classic
|
||||||
Exec=env GNOME_SHELL_SESSION_MODE=classic gnome-session --session gnome-classic
|
Exec=env GNOME_SHELL_SESSION_MODE=classic gnome-session
|
||||||
TryExec=gnome-session
|
TryExec=gnome-session
|
||||||
Type=Application
|
Type=Application
|
||||||
DesktopNames=GNOME-Classic;GNOME;
|
DesktopNames=GNOME-Classic;GNOME;
|
||||||
|
X-GDM-SessionRegisters=true
|
||||||
|
|||||||
+13
-2
@@ -33,6 +33,18 @@ $variant: 'light';
|
|||||||
font-weight: normal;
|
font-weight: normal;
|
||||||
color: $fg_color;
|
color: $fg_color;
|
||||||
text-shadow: none;
|
text-shadow: none;
|
||||||
|
transition-duration: 0ms;
|
||||||
|
border: 0;
|
||||||
|
border-radius: 0px;
|
||||||
|
|
||||||
|
&.clock-display {
|
||||||
|
.clock {
|
||||||
|
transition-duration: 0ms;
|
||||||
|
border: 0;
|
||||||
|
border-radius: 0px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
&:hover {
|
&:hover {
|
||||||
color: lighten($fg_color,10%);
|
color: lighten($fg_color,10%);
|
||||||
text-shadow: none;
|
text-shadow: none;
|
||||||
@@ -69,12 +81,11 @@ $variant: 'light';
|
|||||||
border-bottom: none;
|
border-bottom: none;
|
||||||
.panel-button { color: $osd_fg_color; }
|
.panel-button { color: $osd_fg_color; }
|
||||||
}
|
}
|
||||||
.popup-menu-arrow { width: 0; height: 0; } // shell's display: none;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#appMenu {
|
#appMenu {
|
||||||
padding: 0 8px 0 8px;
|
|
||||||
spinner-image: url("classic-process-working.svg");
|
spinner-image: url("classic-process-working.svg");
|
||||||
|
.panel-status-menu-box { padding: 0; }
|
||||||
}
|
}
|
||||||
.tile-preview-left.on-primary,
|
.tile-preview-left.on-primary,
|
||||||
.tile-preview-right.on-primary,
|
.tile-preview-right.on-primary,
|
||||||
|
|||||||
@@ -1,3 +0,0 @@
|
|||||||
[GNOME Session]
|
|
||||||
Name=GNOME Classic
|
|
||||||
RequiredComponents=org.gnome.Shell;org.gnome.SettingsDaemon.A11ySettings;org.gnome.SettingsDaemon.Color;org.gnome.SettingsDaemon.Datetime;org.gnome.SettingsDaemon.Housekeeping;org.gnome.SettingsDaemon.Keyboard;org.gnome.SettingsDaemon.MediaKeys;org.gnome.SettingsDaemon.Power;org.gnome.SettingsDaemon.PrintNotifications;org.gnome.SettingsDaemon.Rfkill;org.gnome.SettingsDaemon.ScreensaverProxy;org.gnome.SettingsDaemon.Sharing;org.gnome.SettingsDaemon.Smartcard;org.gnome.SettingsDaemon.Sound;org.gnome.SettingsDaemon.Wacom;org.gnome.SettingsDaemon.XSettings;
|
|
||||||
@@ -11,6 +11,6 @@ will then be synchronized periodically before releases.
|
|||||||
GNOME Shell Sass is distributed under the terms of the GNU General Public
|
GNOME Shell Sass is distributed under the terms of the GNU General Public
|
||||||
License, version 2 or later. See the [COPYING][license] file for details.
|
License, version 2 or later. See the [COPYING][license] file for details.
|
||||||
|
|
||||||
[shell-subtree]: https://gitlab.gnome.org/GNOME/gnome-shell/tree/master/data/theme/gnome-shell-sass
|
[shell-subtree]: https://gitlab.gnome.org/GNOME/gnome-shell/tree/HEAD/data/theme/gnome-shell-sass
|
||||||
[sass-repo]: https://gitlab.gnome.org/GNOME/gnome-shell-sass
|
[sass-repo]: https://gitlab.gnome.org/GNOME/gnome-shell-sass
|
||||||
[license]: COPYING
|
[license]: COPYING
|
||||||
|
|||||||
@@ -28,6 +28,7 @@ $osd_borders_color: transparentize(black, 0.3);
|
|||||||
$osd_outer_borders_color: transparentize(white, 0.84);
|
$osd_outer_borders_color: transparentize(white, 0.84);
|
||||||
|
|
||||||
$shadow_color: if($variant == 'light', rgba(0,0,0,0.1), rgba(0,0,0,0.2));
|
$shadow_color: if($variant == 'light', rgba(0,0,0,0.1), rgba(0,0,0,0.2));
|
||||||
|
$system_bg_color: desaturate(#241f31,100%); //neutralize the HIG color
|
||||||
|
|
||||||
//insensitive state derived colors
|
//insensitive state derived colors
|
||||||
$insensitive_fg_color: mix($fg_color, $bg_color, 50%);
|
$insensitive_fg_color: mix($fg_color, $bg_color, 50%);
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ $base_margin: 4px;
|
|||||||
$base_spacing: 6px;
|
$base_spacing: 6px;
|
||||||
|
|
||||||
// border radii
|
// border radii
|
||||||
$base_border_radius: 5px;
|
$base_border_radius: 8px;
|
||||||
|
|
||||||
$modal_radius:$base_border_radius * 2;
|
$modal_radius:$base_border_radius * 2;
|
||||||
|
|
||||||
@@ -76,17 +76,16 @@ stage {
|
|||||||
%osd_panel {
|
%osd_panel {
|
||||||
color: $osd_fg_color;
|
color: $osd_fg_color;
|
||||||
background-color: $osd_bg_color;
|
background-color: $osd_bg_color;
|
||||||
border: 1px solid $osd_outer_borders_color;
|
//border: 1px solid $osd_outer_borders_color;
|
||||||
border-radius: $base_border_radius * 2 + 4px;
|
border-radius: $base_border_radius * 2 + 4px;
|
||||||
padding: $base_padding * 2;
|
padding: $base_padding * 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Overview panels
|
// Overview panels
|
||||||
// for the dash and workspace switcher
|
// for the dash and workspace switcher
|
||||||
%overview_panel {
|
%overview_panel {
|
||||||
color: $osd_fg_color;
|
color: $osd_fg_color;
|
||||||
background-color: transparentize($osd_bg_color, 0.2);
|
background-color: transparentize($osd_fg_color, 0.9);
|
||||||
border: 1px solid $osd_outer_borders_color;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// icon tiles
|
// icon tiles
|
||||||
@@ -130,8 +129,8 @@ stage {
|
|||||||
border-bottom-width: 0;
|
border-bottom-width: 0;
|
||||||
|
|
||||||
&:insensitive { @include button(insensitive, $shadow: none); }
|
&:insensitive { @include button(insensitive, $shadow: none); }
|
||||||
&:hover { @include button(hover, $shadow: none); }
|
|
||||||
&:focus { @include button(focus, $shadow: none); }
|
&:focus { @include button(focus, $shadow: none); }
|
||||||
|
&:hover { @include button(hover, $shadow: none); }
|
||||||
&:active { @include button(active, $shadow: none); }
|
&:active { @include button(active, $shadow: none); }
|
||||||
|
|
||||||
// radius is 2 pixel less to fit in bubble
|
// radius is 2 pixel less to fit in bubble
|
||||||
@@ -143,7 +142,7 @@ stage {
|
|||||||
border-right-width: 0;
|
border-right-width: 0;
|
||||||
border-radius: 0 0 $modal_radius - 2px 0;
|
border-radius: 0 0 $modal_radius - 2px 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
&:first-child:last-child {
|
&:first-child:last-child {
|
||||||
border-radius: 0 0 $modal_radius - 2px $modal_radius - 2px;
|
border-radius: 0 0 $modal_radius - 2px $modal_radius - 2px;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -46,7 +46,7 @@
|
|||||||
border-color: if($fc==$selected_bg_color,
|
border-color: if($fc==$selected_bg_color,
|
||||||
$selected_borders_color,
|
$selected_borders_color,
|
||||||
darken($fc,35%));
|
darken($fc,35%));
|
||||||
box-shadow: inset 0 0 0 1px $fc;
|
box-shadow: inset 0 0 0 2px $fc;
|
||||||
}
|
}
|
||||||
@if $t==hover { }
|
@if $t==hover { }
|
||||||
@if $t==insensitive {
|
@if $t==insensitive {
|
||||||
@@ -79,7 +79,7 @@
|
|||||||
|
|
||||||
@function draw_button_hilight_color($c) {
|
@function draw_button_hilight_color($c) {
|
||||||
//
|
//
|
||||||
// calculate the right top hilight color for buttons
|
// calculate the right top highlight color for buttons
|
||||||
//
|
//
|
||||||
// $c: base color;
|
// $c: base color;
|
||||||
//
|
//
|
||||||
@@ -150,7 +150,7 @@
|
|||||||
color: $tc;
|
color: $tc;
|
||||||
text-shadow: 0 1px $text_shadow_color;
|
text-shadow: 0 1px $text_shadow_color;
|
||||||
icon-shadow: 0 1px $text_shadow_color;
|
icon-shadow: 0 1px $text_shadow_color;
|
||||||
box-shadow: inset 0 0 0 2px transparentize($selected_bg_color, 0.7);
|
box-shadow: inset 0 0 0 2px transparentize($selected_bg_color, 0.4);
|
||||||
//border-color: $selected_bg_color;
|
//border-color: $selected_bg_color;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -218,7 +218,8 @@
|
|||||||
|
|
||||||
&:drop {
|
&:drop {
|
||||||
.overview-icon {
|
.overview-icon {
|
||||||
background-color: transparentize($selected_bg_color, .15);
|
border: 2px solid $selected_bg_color; //already 2px transparent so no jumping
|
||||||
|
background-color: transparentize($selected_bg_color, .8);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -26,6 +26,7 @@ $osd_borders_color: rgba(0,0,0, 0.7);
|
|||||||
$osd_outer_borders_color: rgba(255,255,255, 0.1);
|
$osd_outer_borders_color: rgba(255,255,255, 0.1);
|
||||||
|
|
||||||
$shadow_color: rgba(0,0,0, 0.1);
|
$shadow_color: rgba(0,0,0, 0.1);
|
||||||
|
$system_bg_color: desaturate(#241f31,100%); //neutralize the HIG color
|
||||||
|
|
||||||
//insensitive state derived colors
|
//insensitive state derived colors
|
||||||
$insensitive_fg_color: mix($fg_color, $bg_color, 50%);
|
$insensitive_fg_color: mix($fg_color, $bg_color, 50%);
|
||||||
|
|||||||
@@ -37,8 +37,8 @@
|
|||||||
@import 'widgets/window-picker';
|
@import 'widgets/window-picker';
|
||||||
@import 'widgets/search-entry';
|
@import 'widgets/search-entry';
|
||||||
@import 'widgets/search-results';
|
@import 'widgets/search-results';
|
||||||
@import 'widgets/app-grid';
|
|
||||||
@import 'widgets/dash';
|
@import 'widgets/dash';
|
||||||
|
@import 'widgets/app-grid';
|
||||||
@import 'widgets/workspace-thumbnails';
|
@import 'widgets/workspace-thumbnails';
|
||||||
// A11y / misc
|
// A11y / misc
|
||||||
@import 'widgets/a11y';
|
@import 'widgets/a11y';
|
||||||
|
|||||||
@@ -1,21 +1,19 @@
|
|||||||
/* App Grid */
|
/* App Grid */
|
||||||
|
|
||||||
$app_icon_size: 96px;
|
$app_icon_size: 96px;
|
||||||
$app_icon_padding: 24px;
|
|
||||||
|
|
||||||
// app icons
|
// app icons
|
||||||
.icon-grid {
|
.icon-grid {
|
||||||
-shell-grid-horizontal-item-size: $app_icon_size + $app_icon_padding * 2;
|
row-spacing: $base_spacing * 2;
|
||||||
-shell-grid-vertical-item-size: $app_icon_size + $app_icon_padding * 2;
|
column-spacing: $base_spacing * 2;
|
||||||
spacing: $base_spacing * 6;
|
max-row-spacing: $base_spacing * 12;
|
||||||
|
max-column-spacing: $base_spacing * 12;
|
||||||
.overview-icon {
|
page-padding-top: $base_padding * 4;
|
||||||
icon-size: $app_icon_size;
|
page-padding-bottom: $base_padding * 4;
|
||||||
}
|
page-padding-left: $base_padding * 2;
|
||||||
|
page-padding-right: $base_padding * 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
//.app-display { spacing: 20px; }
|
|
||||||
|
|
||||||
/* App Icons */
|
/* App Icons */
|
||||||
|
|
||||||
$app_grid_fg_color: #fff;
|
$app_grid_fg_color: #fff;
|
||||||
@@ -35,17 +33,16 @@ $app_grid_fg_color: #fff;
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* App Folders */
|
/* App Folders */
|
||||||
.app-folder {
|
.app-well-app.app-folder {
|
||||||
.overview-icon {
|
background-color: $dash_background_color;
|
||||||
}
|
border-radius: $base_border_radius + 4px; // same as %icon_tile
|
||||||
}
|
}
|
||||||
|
|
||||||
// expanded folder
|
// expanded folder
|
||||||
.app-folder-dialog {
|
.app-folder-dialog { //style like the dash
|
||||||
border-radius: $modal_radius * 1.5;
|
border-radius: $modal_radius * 1.5;
|
||||||
border: 1px solid $osd_outer_borders_color;
|
background-color: $dash_background_color;
|
||||||
spacing: 12px;
|
padding: 12px 0px 12px 0px;
|
||||||
background-color: transparentize(darken($osd_bg_color,10%), 0.05);
|
|
||||||
|
|
||||||
& .folder-name-container {
|
& .folder-name-container {
|
||||||
padding: 24px 36px 0;
|
padding: 24px 36px 0;
|
||||||
@@ -54,13 +51,13 @@ $app_grid_fg_color: #fff;
|
|||||||
& .folder-name-label,
|
& .folder-name-label,
|
||||||
& .folder-name-entry {
|
& .folder-name-entry {
|
||||||
font-size: 18pt;
|
font-size: 18pt;
|
||||||
font-weight: bold;
|
font-weight: 800;
|
||||||
}
|
}
|
||||||
|
|
||||||
& .folder-name-entry { width: 300px }
|
& .folder-name-entry { width: 300px }
|
||||||
|
|
||||||
/* FIXME: this is to keep the label in sync with the entry */
|
/* FIXME: this is to keep the label in sync with the entry */
|
||||||
& .folder-name-label { padding: 5px 7px }
|
& .folder-name-label { padding: 5px 7px; color: $osd_fg_color; }
|
||||||
|
|
||||||
& .edit-folder-button {
|
& .edit-folder-button {
|
||||||
@extend %button;
|
@extend %button;
|
||||||
@@ -74,23 +71,25 @@ $app_grid_fg_color: #fff;
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
& StButton#vhandle,
|
& .icon-grid {
|
||||||
& StButton#vhandle:hover,
|
row-spacing: $base_spacing * 2;
|
||||||
& StButton#vhandle:active { background-color: transparent; }
|
column-spacing: $base_spacing * 5;
|
||||||
|
page-padding-top: 0;
|
||||||
|
page-padding-bottom: 0;
|
||||||
|
page-padding-left: 0;
|
||||||
|
page-padding-right: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
& .page-indicators {
|
||||||
|
margin-bottom: 18px;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
.app-folder-dialog-container {
|
.app-folder-dialog-container {
|
||||||
padding: 12px;
|
padding: 12px;
|
||||||
width: 800px;
|
width: 620px;
|
||||||
height: 600px;
|
height: 620px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.app-folder-icon {
|
|
||||||
padding: $base_padding;
|
|
||||||
spacing-rows: $base_spacing;
|
|
||||||
spacing-columns: $base_spacing;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// Running app indicator (also shown in dash)
|
// Running app indicator (also shown in dash)
|
||||||
.app-well-app-running-dot {
|
.app-well-app-running-dot {
|
||||||
height: 5px;
|
height: 5px;
|
||||||
@@ -109,14 +108,13 @@ $app_grid_fg_color: #fff;
|
|||||||
}
|
}
|
||||||
|
|
||||||
// right-click app menu
|
// right-click app menu
|
||||||
.app-menu,
|
.app-menu {
|
||||||
.app-well-menu {
|
|
||||||
max-width: 27.25em;
|
max-width: 27.25em;
|
||||||
}
|
}
|
||||||
|
|
||||||
// App Grid pagination indicators
|
// App Grid pagination indicators
|
||||||
.page-indicator {
|
.page-indicator {
|
||||||
padding: 15px 20px;
|
padding: $base_padding $base_padding * 2 0;
|
||||||
|
|
||||||
.page-indicator-icon {
|
.page-indicator-icon {
|
||||||
width: 10px;
|
width: 10px;
|
||||||
@@ -126,16 +124,10 @@ $app_grid_fg_color: #fff;
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Some hacks I don't even know
|
.apps-scroll-view {
|
||||||
.all-apps,
|
padding: 0;
|
||||||
.frequent-apps > StBoxLayout {
|
|
||||||
// horizontal padding to make sure scrollbars or dash don't overlap content
|
|
||||||
padding: 0px 88px 10px 88px;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Label when no frequent apps
|
|
||||||
.no-frequent-applications-label { @extend %status_text; }
|
|
||||||
|
|
||||||
// shutdown and other actions in the grid
|
// shutdown and other actions in the grid
|
||||||
.system-action-icon {
|
.system-action-icon {
|
||||||
background-color: rgba(0,0,0,0.8);
|
background-color: rgba(0,0,0,0.8);
|
||||||
@@ -144,43 +136,32 @@ $app_grid_fg_color: #fff;
|
|||||||
icon-size: $app_icon_size * 0.5;
|
icon-size: $app_icon_size * 0.5;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Frequent | All toggle */
|
.page-navigation-hint {
|
||||||
|
width: 300px;
|
||||||
|
|
||||||
// container
|
&.dnd {
|
||||||
.app-view-controls {
|
background: rgba(255, 255, 255, 0.1);
|
||||||
padding-bottom: 32px;
|
|
||||||
}
|
|
||||||
|
|
||||||
// buttons
|
|
||||||
.app-view-control {
|
|
||||||
padding: 4px 32px;
|
|
||||||
margin: 0 4px;
|
|
||||||
|
|
||||||
&, &:hover, &:checked {
|
|
||||||
@include button(undecorated);
|
|
||||||
color: darken($osd_fg_color, 25%);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
&:hover {
|
&.next:ltr,
|
||||||
color: $osd_fg_color;
|
&.previous:rtl {
|
||||||
box-shadow: inset 0 -2px darken($osd_fg_color, 25%);
|
background-gradient-start: rgba(255, 255, 255, 0.05);
|
||||||
|
background-gradient-end: transparent;
|
||||||
|
background-gradient-direction: horizontal;
|
||||||
|
border-radius: 15px 0px 0px 15px;
|
||||||
}
|
}
|
||||||
|
|
||||||
&:active {
|
&.previous:ltr,
|
||||||
box-shadow: inset 0 -2px $osd_fg_color;
|
&.next:rtl {
|
||||||
}
|
background-gradient-start: transparent;
|
||||||
|
background-gradient-end: rgba(255, 255, 255, 0.05);
|
||||||
&:checked {
|
background-gradient-direction: horizontal;
|
||||||
color: $osd_fg_color;
|
border-radius: 0px 15px 15px 0px;
|
||||||
box-shadow: inset 0 -2px $selected_bg_color;
|
|
||||||
}
|
|
||||||
|
|
||||||
&:first-child {
|
|
||||||
border-right-width: 0;
|
|
||||||
border-radius: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
&:last-child {
|
|
||||||
border-radius: 0;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.page-navigation-arrow {
|
||||||
|
margin: 6px;
|
||||||
|
width: 24px;
|
||||||
|
height: 24px;
|
||||||
|
}
|
||||||
|
|||||||
@@ -14,5 +14,5 @@
|
|||||||
|
|
||||||
// Dropshadow for large icons
|
// Dropshadow for large icons
|
||||||
.icon-dropshadow {
|
.icon-dropshadow {
|
||||||
icon-shadow: 0 1px 2px rgba(black, 0.4);
|
icon-shadow: 0 1px 5px rgba(black, 0.8);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,13 @@
|
|||||||
/* Date/Time Menu */
|
/* Date/Time Menu */
|
||||||
|
|
||||||
.clock-display-box { spacing: $base_spacing; }
|
.clock-display-box {
|
||||||
|
spacing: 2px;
|
||||||
|
|
||||||
|
.clock {
|
||||||
|
padding-left: $base_padding * 2;
|
||||||
|
padding-right: $base_padding * 2;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// overall menu
|
// overall menu
|
||||||
#calendarArea {
|
#calendarArea {
|
||||||
@@ -146,9 +153,11 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.calendar-day-with-events {
|
.calendar-day-with-events {
|
||||||
color: lighten($fg_color,10%);
|
|
||||||
font-weight: bold;
|
|
||||||
background-image: url("resource:///org/gnome/shell/theme/calendar-today.svg");
|
background-image: url("resource:///org/gnome/shell/theme/calendar-today.svg");
|
||||||
|
&.calendar-work-day {
|
||||||
|
color: lighten($fg_color,10%);
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.calendar-other-month-day {
|
.calendar-other-month-day {
|
||||||
@@ -161,13 +170,38 @@
|
|||||||
height: 1.8em;
|
height: 1.8em;
|
||||||
width: 2.3em;
|
width: 2.3em;
|
||||||
border-radius: 2px;
|
border-radius: 2px;
|
||||||
padding: 0.5em 0 0;
|
|
||||||
margin: 6px;
|
margin: 6px;
|
||||||
background-color: darken($bg_color, 2%);
|
background-color: darken($bg_color, 2%);
|
||||||
color: lighten($fg_color, 5%);
|
color: lighten($fg_color, 5%);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Events */
|
||||||
|
.events-button {
|
||||||
|
@include notification_bubble;
|
||||||
|
padding: $base_padding * 2;
|
||||||
|
|
||||||
|
.events-box {
|
||||||
|
spacing: $base_spacing;
|
||||||
|
}
|
||||||
|
|
||||||
|
.events-list {
|
||||||
|
spacing: 2 * $base_spacing;
|
||||||
|
}
|
||||||
|
|
||||||
|
.events-title {
|
||||||
|
color: desaturate(darken($fg_color,40%), 10%);
|
||||||
|
font-weight: bold;
|
||||||
|
margin-bottom: $base_margin;
|
||||||
|
}
|
||||||
|
|
||||||
|
.event-time {
|
||||||
|
color: darken($fg_color,20%);
|
||||||
|
font-feature-settings: "tnum";
|
||||||
|
@include fontsize($base_font_size - 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/* World clocks */
|
/* World clocks */
|
||||||
.world-clocks-button {
|
.world-clocks-button {
|
||||||
@include notification_bubble;
|
@include notification_bubble;
|
||||||
@@ -195,9 +229,11 @@
|
|||||||
.world-clocks-time {
|
.world-clocks-time {
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
color: $fg_color;
|
color: $fg_color;
|
||||||
font-feature-settings: "lnum";
|
font-feature-settings: "tnum";
|
||||||
@include fontsize($base_font_size);
|
@include fontsize($base_font_size);
|
||||||
text-align: right;
|
|
||||||
|
&:ltr { text-align: right; }
|
||||||
|
&:rtl { text-align: left; }
|
||||||
}
|
}
|
||||||
|
|
||||||
// timezone offset label
|
// timezone offset label
|
||||||
|
|||||||
@@ -1,20 +1,18 @@
|
|||||||
/* Dash */
|
/* Dash */
|
||||||
|
|
||||||
|
$dash_background_color: #3b3b3b;
|
||||||
$dash_placeholder_size: 32px;
|
$dash_placeholder_size: 32px;
|
||||||
$dash_spacing: $base_padding + 4px;
|
$dash_padding: $base_padding + 4px; // 10px
|
||||||
|
$dash_spacing: $base_padding / 4;
|
||||||
|
|
||||||
|
$dash_bottom_margin: $base_margin * 4;
|
||||||
|
|
||||||
$dash_border_radius: $modal_radius * 1.5;
|
$dash_border_radius: $modal_radius * 1.5;
|
||||||
|
|
||||||
#dash {
|
#dash {
|
||||||
@extend %overview_panel;
|
|
||||||
@include fontsize($base_font_size - 2);
|
@include fontsize($base_font_size - 2);
|
||||||
padding: ($dash_spacing / 2) 0;
|
margin-top: $base_spacing * 3;
|
||||||
|
padding: 0 $dash_padding;
|
||||||
border-radius: 0 $dash_border_radius $dash_border_radius 0;
|
|
||||||
border-left-width: 0;
|
|
||||||
&:rtl {
|
|
||||||
border-radius: $dash_border_radius 0 0 $dash_border_radius;
|
|
||||||
border-right-width: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.placeholder {
|
.placeholder {
|
||||||
// background-image: url("resource:///org/gnome/shell/theme/dash-placeholder.svg");
|
// background-image: url("resource:///org/gnome/shell/theme/dash-placeholder.svg");
|
||||||
@@ -27,23 +25,38 @@ $dash_border_radius: $modal_radius * 1.5;
|
|||||||
width: $dash_placeholder_size;
|
width: $dash_placeholder_size;
|
||||||
height: $dash_placeholder_size;
|
height: $dash_placeholder_size;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.overview-icon {
|
||||||
|
padding: $dash_padding / 2;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.dash-background {
|
||||||
|
background-color: $dash_background_color;
|
||||||
|
margin-bottom: $dash_bottom_margin;
|
||||||
|
padding: $dash_padding;
|
||||||
|
border-radius: $dash_border_radius;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Dash Items
|
// Dash Items
|
||||||
.dash-item-container > StWidget {
|
.dash-item-container .app-well-app, .show-apps {
|
||||||
padding: ($dash_spacing / 2) $dash_spacing;
|
padding: $dash_padding $dash_spacing $dash_padding + $dash_bottom_margin;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dash-separator {
|
||||||
|
width: 1px;
|
||||||
|
margin: 0 ($dash_spacing + ($dash_padding / 2)) $dash_bottom_margin;
|
||||||
|
background-color: transparentize($osd_fg_color,0.7);
|
||||||
}
|
}
|
||||||
|
|
||||||
// OSD Tooltip
|
// OSD Tooltip
|
||||||
.dash-label {
|
.dash-label {
|
||||||
background-color: transparentize($osd_bg_color,0.05);
|
|
||||||
border-radius: $base_border_radius + 2px;
|
|
||||||
border:none;
|
|
||||||
box-shadow:0 0 0 1px $osd_outer_borders_color;
|
|
||||||
color: $osd_fg_color;
|
color: $osd_fg_color;
|
||||||
padding: $base_padding $base_padding + 2px;
|
background-color: $osd_bg_color;
|
||||||
|
border-radius: 99px;
|
||||||
|
padding: $base_padding $base_padding * 2;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
-x-offset: $base_margin * 2; // distance from the dash edge
|
-y-offset: $base_margin * 3; // distance from the dash edge
|
||||||
}
|
}
|
||||||
|
|
||||||
// Show apps button
|
// Show apps button
|
||||||
@@ -53,9 +66,8 @@ $dash_border_radius: $modal_radius * 1.5;
|
|||||||
&:focus,
|
&:focus,
|
||||||
&:checked {
|
&:checked {
|
||||||
.overview-icon {
|
.overview-icon {
|
||||||
background-color: darken($osd_bg_color,10%);
|
background-color: transparentize($osd_bg_color,0.5);
|
||||||
color: $fg_color;
|
color: $fg_color;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -38,7 +38,7 @@
|
|||||||
font-size: 18pt;
|
font-size: 18pt;
|
||||||
font-weight: 800;
|
font-weight: 800;
|
||||||
|
|
||||||
&.leightweight {
|
&.lightweight {
|
||||||
font-size: 13pt;
|
font-size: 13pt;
|
||||||
font-weight: 800;
|
font-weight: 800;
|
||||||
}
|
}
|
||||||
@@ -135,10 +135,6 @@
|
|||||||
spacing: 8px;
|
spacing: 8px;
|
||||||
margin-bottom: 6px;
|
margin-bottom: 6px;
|
||||||
|
|
||||||
.polkit-dialog-user-icon {
|
|
||||||
border-radius: 99px;
|
|
||||||
background-size: contain;
|
|
||||||
}
|
|
||||||
.polkit-dialog-user-root-label { color: $warning_color; }
|
.polkit-dialog-user-root-label { color: $warning_color; }
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -166,3 +162,12 @@
|
|||||||
.audio-selection-device-icon {
|
.audio-selection-device-icon {
|
||||||
icon-size: $base_icon_size * 4;
|
icon-size: $base_icon_size * 4;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Welcome dialog */
|
||||||
|
.welcome-dialog-image {
|
||||||
|
background-image: url("resource:///org/gnome/shell/theme/gnome-shell-start.svg");
|
||||||
|
background-size: contain;
|
||||||
|
/* Reasonable maximum dimensions */
|
||||||
|
height: 300px;
|
||||||
|
width: 300px;
|
||||||
|
}
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
StEntry {
|
StEntry {
|
||||||
border-radius: $base_border_radius;
|
border-radius: $base_border_radius;
|
||||||
padding: 8px;
|
padding: 8px;
|
||||||
border-width: 1px;
|
border-width: 0;
|
||||||
color: $fg_color;
|
color: $fg_color;
|
||||||
@include entry(normal);
|
@include entry(normal);
|
||||||
//&:hover { @include entry(hover);}
|
//&:hover { @include entry(hover);}
|
||||||
|
|||||||
@@ -52,10 +52,6 @@ $default_key_bg_color: if($variant=='light', darken($osd_bg_color, 11%), lighten
|
|||||||
|
|
||||||
// non-character keys
|
// non-character keys
|
||||||
&.default-key {
|
&.default-key {
|
||||||
|
|
||||||
// size of the icon asset
|
|
||||||
background-size: 24px;
|
|
||||||
|
|
||||||
@include button(normal, $c:$default_key_bg_color);
|
@include button(normal, $c:$default_key_bg_color);
|
||||||
&:hover, &:checked {@include button(hover, $c: $default_key_bg_color);}
|
&:hover, &:checked {@include button(hover, $c: $default_key_bg_color);}
|
||||||
&:active { @include button(active, $c: $default_key_bg_color);}
|
&:active { @include button(active, $c: $default_key_bg_color);}
|
||||||
@@ -63,19 +59,14 @@ $default_key_bg_color: if($variant=='light', darken($osd_bg_color, 11%), lighten
|
|||||||
|
|
||||||
// enter key is suggested-action
|
// enter key is suggested-action
|
||||||
&.enter-key {
|
&.enter-key {
|
||||||
background-image: url("resource:///org/gnome/shell/theme/key-enter.svg");
|
|
||||||
|
|
||||||
@include button(normal, $c:$selected_bg_color, $tc:$selected_fg_color);
|
@include button(normal, $c:$selected_bg_color, $tc:$selected_fg_color);
|
||||||
&:hover, &:checked { @include button(hover, $c: lighten($selected_bg_color, 3%));}
|
&:hover, &:checked { @include button(hover, $c: lighten($selected_bg_color, 3%));}
|
||||||
&:active {@include button(active, $c: darken($selected_bg_color, 2%));}
|
&:active {@include button(active, $c: darken($selected_bg_color, 2%));}
|
||||||
}
|
}
|
||||||
|
|
||||||
// key assets
|
&.shift-key-uppercase { color: $selected_bg_color }
|
||||||
&.shift-key-lowercase {background-image: url("resource:///org/gnome/shell/theme/key-shift.svg");}
|
|
||||||
&.shift-key-uppercase {background-image: url("resource:///org/gnome/shell/theme/key-shift-uppercase.svg");}
|
StIcon { icon-size: 1.125em; }
|
||||||
&.shift-key-uppercase:latched {background-image: url("resource:///org/gnome/shell/theme/key-shift-latched-uppercase.svg");}
|
|
||||||
&.hide-key {background-image: url("resource:///org/gnome/shell/theme/key-hide.svg");}
|
|
||||||
&.layout-key {background-image: url("resource:///org/gnome/shell/theme/key-layout.svg");}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// long press on a key popup
|
// long press on a key popup
|
||||||
|
|||||||
@@ -5,18 +5,19 @@
|
|||||||
max-width: 23em;
|
max-width: 23em;
|
||||||
}
|
}
|
||||||
|
|
||||||
.login-dialog {
|
.login-dialog,
|
||||||
|
.unlock-dialog {
|
||||||
//reset
|
//reset
|
||||||
border: none;
|
border: none;
|
||||||
background-color: transparent;
|
background-color: transparent;
|
||||||
|
|
||||||
$_gdm_bg: lighten(#2e3436, 19%);
|
$_gdm_bg: $system_bg_color;
|
||||||
|
|
||||||
StEntry {
|
StEntry {
|
||||||
@if $variant=='dark' {
|
@if $variant=='dark' {
|
||||||
$_gdm_entry_bg: transparentize(lighten(desaturate(#241f31, 20%), 2%), 0.5);
|
$_gdm_entry_bg: darken($system_bg_color, 3%);
|
||||||
background-color: $_gdm_entry_bg;
|
background-color: $_gdm_entry_bg;
|
||||||
color: $osd_fg_color;
|
color: $fg_color;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -24,9 +25,9 @@
|
|||||||
.modal-dialog-button {
|
.modal-dialog-button {
|
||||||
padding: 4px 18px;
|
padding: 4px 18px;
|
||||||
box-shadow: 0 1px 3px rgba(0,0,0,0.2);
|
box-shadow: 0 1px 3px rgba(0,0,0,0.2);
|
||||||
background-color: $_gdm_bg;
|
background-color: darken($system_bg_color, 3%);
|
||||||
border-color: $_gdm_bg;
|
border-color: darken($system_bg_color, 3%);
|
||||||
color: $fg_color;
|
color: $osd_fg_color;
|
||||||
|
|
||||||
$_hover_c: lighten($_gdm_bg, 5%);
|
$_hover_c: lighten($_gdm_bg, 5%);
|
||||||
&:hover, &:focus {
|
&:hover, &:focus {
|
||||||
@@ -43,7 +44,7 @@
|
|||||||
@include button(insensitive);
|
@include button(insensitive);
|
||||||
border-color: darken($_gdm_bg, 5%);
|
border-color: darken($_gdm_bg, 5%);
|
||||||
background-color: darken($_gdm_bg, 5%);
|
background-color: darken($_gdm_bg, 5%);
|
||||||
color: transparentize($fg_color, 0.3);
|
color: transparentize($osd_fg_color, 0.3);
|
||||||
}
|
}
|
||||||
&:default {
|
&:default {
|
||||||
@include button(normal, $c:$selected_bg_color, $tc:$selected_fg_color);
|
@include button(normal, $c:$selected_bg_color, $tc:$selected_fg_color);
|
||||||
@@ -76,8 +77,8 @@
|
|||||||
border-radius: 99px;
|
border-radius: 99px;
|
||||||
width: $base_icon_size * 2;
|
width: $base_icon_size * 2;
|
||||||
height: $base_icon_size * 2;
|
height: $base_icon_size * 2;
|
||||||
border-color: transparentize($bg_color,0.7);
|
border-color: darken($system_bg_color, 3%);
|
||||||
background-color: transparentize($bg_color,0.7);
|
background-color: darken($system_bg_color, 3%);
|
||||||
|
|
||||||
StIcon { icon-size: $base_icon_size; }
|
StIcon { icon-size: $base_icon_size; }
|
||||||
}
|
}
|
||||||
@@ -92,7 +93,6 @@
|
|||||||
.login-dialog-banner { color: darken($osd_fg_color,10%); }
|
.login-dialog-banner { color: darken($osd_fg_color,10%); }
|
||||||
.login-dialog-button-box { width: 23em; spacing: 5px; }
|
.login-dialog-button-box { width: 23em; spacing: 5px; }
|
||||||
.login-dialog-message { text-align: center; }
|
.login-dialog-message { text-align: center; }
|
||||||
.login-dialog-message-hint { padding-top: 0; padding-bottom: 20px; }
|
|
||||||
.login-dialog-user-selection-box { padding: 100px 0px; }
|
.login-dialog-user-selection-box { padding: 100px 0px; }
|
||||||
.login-dialog-not-listed-label {
|
.login-dialog-not-listed-label {
|
||||||
padding-left: 2px;
|
padding-left: 2px;
|
||||||
@@ -138,11 +138,10 @@
|
|||||||
.user-widget.horizontal .user-widget-label {
|
.user-widget.horizontal .user-widget-label {
|
||||||
@include fontsize($base_font_size + 2);
|
@include fontsize($base_font_size + 2);
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
text-align: left;
|
|
||||||
padding-left: 15px;
|
padding-left: 15px;
|
||||||
|
|
||||||
&:ltr { padding-left: 14px; }
|
&:ltr { padding-left: 14px; text-align: left; }
|
||||||
&:rtl { padding-right: 14px; }
|
&:rtl { padding-right: 14px; text-align: right; }
|
||||||
}
|
}
|
||||||
|
|
||||||
.user-widget.vertical .user-widget-label {
|
.user-widget.vertical .user-widget-label {
|
||||||
@@ -152,6 +151,11 @@
|
|||||||
padding-top: 16px;
|
padding-top: 16px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.login-dialog-timed-login-indicator {
|
||||||
|
height: 2px;
|
||||||
|
background-color: darken($fg_color,40%);
|
||||||
|
}
|
||||||
|
|
||||||
.login-dialog-prompt-layout {
|
.login-dialog-prompt-layout {
|
||||||
padding-top: 24px;
|
padding-top: 24px;
|
||||||
padding-bottom: 12px;
|
padding-bottom: 12px;
|
||||||
@@ -160,7 +164,6 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.login-dialog-prompt-entry {
|
.login-dialog-prompt-entry {
|
||||||
width: 17.89em;
|
|
||||||
height: 1.5em;
|
height: 1.5em;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,18 +1,20 @@
|
|||||||
/* Looking Glass */
|
/* Looking Glass */
|
||||||
|
|
||||||
|
$text_fg_color: #ccc;
|
||||||
|
|
||||||
// Dialog
|
// Dialog
|
||||||
#LookingGlassDialog {
|
#LookingGlassDialog {
|
||||||
background-color: $osd_bg_color;
|
background-color: $osd_bg_color;
|
||||||
spacing: $base_spacing;
|
spacing: $base_spacing;
|
||||||
padding: 4px;
|
padding: 4px;
|
||||||
border: 2px solid transparentize($osd_fg_color, 0.8);
|
border: 1px solid transparentize($osd_fg_color, 0.8);
|
||||||
border-top-width:0;
|
border-radius: $base_border_radius;
|
||||||
border-radius: 0 0 $base_border_radius $base_border_radius;
|
color: $osd_fg_color;
|
||||||
|
|
||||||
& > #Toolbar {
|
& > #Toolbar {
|
||||||
border: none;
|
border: none;
|
||||||
border-radius: $base_border_radius;
|
border-radius: $base_border_radius;
|
||||||
background-color: darken($osd_bg_color, 10%);
|
background-color: $osd_bg_color;
|
||||||
}
|
}
|
||||||
|
|
||||||
.labels { spacing: $base_spacing; }
|
.labels { spacing: $base_spacing; }
|
||||||
@@ -20,19 +22,18 @@
|
|||||||
-natural-hpadding: $base_padding * 2;
|
-natural-hpadding: $base_padding * 2;
|
||||||
-minimum-hpadding: 6px;
|
-minimum-hpadding: 6px;
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
color: $fg_color;
|
color: darken($osd_fg_color, 15%);
|
||||||
transition-duration: 100ms;
|
transition-duration: 100ms;
|
||||||
padding-left: .3em;
|
padding-left: .3em;
|
||||||
padding-right: .3em;
|
padding-right: .3em;
|
||||||
|
border-bottom-width: 2px;
|
||||||
&:hover {
|
&:hover {
|
||||||
color: white;
|
color: $osd_fg_color;
|
||||||
text-shadow: black 0px 2px 2px;
|
|
||||||
}
|
}
|
||||||
&:selected {
|
&:selected {
|
||||||
border-bottom-width: 2px;
|
border-bottom-width: 2px;
|
||||||
border-color: lighten($selected_bg_color,5%);
|
box-shadow: inset 0 -2px 0 0 lighten($selected_bg_color, 5%);
|
||||||
color: white;
|
color: $osd_fg_color;
|
||||||
text-shadow: black 0px 2px 2px;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
StBoxLayout#EvalBox { padding: 4px; spacing: $base_spacing; }
|
StBoxLayout#EvalBox { padding: 4px; spacing: $base_spacing; }
|
||||||
@@ -41,12 +42,22 @@
|
|||||||
|
|
||||||
.lg-dialog {
|
.lg-dialog {
|
||||||
StEntry {
|
StEntry {
|
||||||
selection-background-color: #bbbbbb;
|
background-color: transparentize(lighten($osd_bg_color, 5%), 0.4);
|
||||||
selected-color: $osd_bg_color;
|
color: $osd_fg_color;
|
||||||
|
border-color: transparentize($osd_fg_color, 0.8);
|
||||||
|
min-height: 22px;
|
||||||
|
selection-background-color: $selected_bg_color;
|
||||||
|
selected-color: $selected_fg_color;
|
||||||
}
|
}
|
||||||
.shell-link {
|
.shell-link {
|
||||||
color: #999999;
|
color: $link_color;
|
||||||
&:hover { color: #dddddd; }
|
&:hover { color: lighten($link_color, 10%); }
|
||||||
|
&:active { color: darken($link_color, 10%); }
|
||||||
|
}
|
||||||
|
.actor-link {
|
||||||
|
color: $text_fg_color;
|
||||||
|
&:hover { color: lighten($text_fg_color, 20%); }
|
||||||
|
&:active { color: darken($text_fg_color, 20%); }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -60,7 +71,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.lg-obj-inspector-button {
|
.lg-obj-inspector-button {
|
||||||
border: 1px solid gray;
|
border: 1px solid $osd_borders_color;
|
||||||
padding: 4px;
|
padding: 4px;
|
||||||
border-radius: $base_border_radius;
|
border-radius: $base_border_radius;
|
||||||
&:hover { border: 1px solid #ffffff; }
|
&:hover { border: 1px solid #ffffff; }
|
||||||
@@ -75,7 +86,8 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.lg-extension {
|
.lg-extension {
|
||||||
border: 1px solid $osd_borders_color;
|
border: 1px solid lighten($osd_borders_color, 5%);
|
||||||
|
background-color: lighten($osd_bg_color, 5%);
|
||||||
border-radius: $base_border_radius;
|
border-radius: $base_border_radius;
|
||||||
padding: 4px;
|
padding: 4px;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -24,7 +24,21 @@
|
|||||||
margin: ($base_margin * 2) ($base_margin * 4) 0;
|
margin: ($base_margin * 2) ($base_margin * 4) 0;
|
||||||
// NOTE: remove the padding if notification_bubble could remove margin for drop shadow
|
// NOTE: remove the padding if notification_bubble could remove margin for drop shadow
|
||||||
padding: $base_margin;
|
padding: $base_margin;
|
||||||
spacing: $base_spacing;
|
spacing: $base_spacing * 2;
|
||||||
|
|
||||||
|
.dnd-button {
|
||||||
|
// We need this because the focus outline isn't inset like for the buttons
|
||||||
|
// so the dnd button would grow when it gets focus if we didn't change only
|
||||||
|
// its color when focusing.
|
||||||
|
border-width: 2px;
|
||||||
|
border-color: transparent;
|
||||||
|
border-radius: 99px;
|
||||||
|
border-style: solid;
|
||||||
|
|
||||||
|
&:focus {
|
||||||
|
border-color: transparentize($selected_bg_color, 0.4);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// message bubbles
|
// message bubbles
|
||||||
@@ -71,9 +85,11 @@
|
|||||||
> .event-time {
|
> .event-time {
|
||||||
color: transparentize($fg_color, 0.5);
|
color: transparentize($fg_color, 0.5);
|
||||||
@include fontsize($base_font_size - 2);
|
@include fontsize($base_font_size - 2);
|
||||||
text-align: right;
|
|
||||||
/* HACK: the label should be baseline-aligned with a 1em label, fake this with some bottom padding */
|
/* HACK: the label should be baseline-aligned with a 1em label, fake this with some bottom padding */
|
||||||
padding-bottom: 0.13em;
|
padding-bottom: 0.13em;
|
||||||
|
|
||||||
|
&:ltr { text-align: right };
|
||||||
|
&:rtl { text-align: left };
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -97,7 +113,7 @@
|
|||||||
|
|
||||||
/* Media Controls */
|
/* Media Controls */
|
||||||
.message-media-control {
|
.message-media-control {
|
||||||
padding: $base_padding * 2 $base_padding * 4;
|
padding: $base_padding * 2 1.64em; // $base_padding * 4 = 24px
|
||||||
color: darken($fg_color, 15%);
|
color: darken($fg_color, 15%);
|
||||||
|
|
||||||
// uses $hover_bg_color since the media controls are in a notification_bubble
|
// uses $hover_bg_color since the media controls are in a notification_bubble
|
||||||
|
|||||||
@@ -9,24 +9,32 @@
|
|||||||
background-size: contain;
|
background-size: contain;
|
||||||
color: $osd_fg_color;
|
color: $osd_fg_color;
|
||||||
border-radius: 99px;
|
border-radius: 99px;
|
||||||
|
icon-size: $base_icon_size * 4; // 64px
|
||||||
&:hover {
|
&:hover {
|
||||||
color: lighten($osd_fg_color,30%);
|
color: lighten($osd_fg_color,30%);
|
||||||
}
|
}
|
||||||
|
|
||||||
& StIcon {
|
& StIcon {
|
||||||
background-color: transparentize($osd_fg_color,0.95);
|
background-color: transparentize($osd_fg_color,0.95);
|
||||||
padding: 18px 20px 22px 20px;
|
|
||||||
width: 88px; height: 88px;
|
|
||||||
border-radius: 99px;
|
border-radius: 99px;
|
||||||
|
padding: $base_padding * 2 ; // 12px
|
||||||
|
width: $base_icon_size * 2.5; height: $base_icon_size * 2.5; // 40px;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.user-avatar {
|
||||||
|
border: 2px $osd_fg_color;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.user-widget.vertical .user-icon {
|
.user-widget.vertical .user-icon {
|
||||||
icon-size: 128px;
|
icon-size: $base_icon_size * 6; // 128px
|
||||||
}
|
|
||||||
|
|
||||||
.user-widget.horizontal .user-icon {
|
& StIcon {
|
||||||
icon-size: 64px;
|
padding: $base_padding * 3 + 2px; // 20px
|
||||||
|
padding-top: $base_padding * 3; // 18 px
|
||||||
|
padding-bottom: $base_padding * 3 + 4px; // 22px
|
||||||
|
width: $base_icon_size * 5.5; height: $base_icon_size * 5.5; // 88px;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.lightbox { background-color: black; }
|
.lightbox { background-color: black; }
|
||||||
@@ -43,3 +51,9 @@
|
|||||||
@include fontsize($base_font_size - 1);
|
@include fontsize($base_font_size - 1);
|
||||||
color: $warning_color;
|
color: $warning_color;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Workspace animation */
|
||||||
|
|
||||||
|
.workspace-animation {
|
||||||
|
background-color: $system_bg_color;
|
||||||
|
}
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
/* Notifications & Mesage Tray */
|
/* Notifications & Message Tray */
|
||||||
|
|
||||||
$notification_banner_height: 64px;
|
$notification_banner_height: 64px;
|
||||||
$notification_banner_width: 34em;
|
$notification_banner_width: 34em;
|
||||||
|
|||||||
@@ -1,10 +1,13 @@
|
|||||||
/* OVERVIEW */
|
/* OVERVIEW */
|
||||||
|
|
||||||
#overview {
|
.controls-manager, .secondary-monitor-workspaces {
|
||||||
spacing: 24px;
|
spacing: $base_spacing * 2;
|
||||||
background-color: transparent;
|
}
|
||||||
|
|
||||||
|
#overviewGroup {
|
||||||
|
background-color: $system_bg_color;
|
||||||
}
|
}
|
||||||
|
|
||||||
.overview-controls {
|
.overview-controls {
|
||||||
padding-bottom: 32px;
|
padding-bottom: 32px;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,43 +3,36 @@
|
|||||||
|
|
||||||
$panel_corner_radius: $base_border_radius+1;
|
$panel_corner_radius: $base_border_radius+1;
|
||||||
$panel_bg_color: #000;
|
$panel_bg_color: #000;
|
||||||
$panel_fg_color: #ccc;
|
$panel_fg_color: #ddd;
|
||||||
$panel_height: 1.86em;
|
$panel_height: 2.2em;
|
||||||
|
$panel_transition_duration: 250ms; // same as the overview transition duration
|
||||||
|
|
||||||
#panel {
|
#panel {
|
||||||
background-color: $panel_bg_color;
|
background-color: $panel_bg_color;
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
height: $panel_height;
|
height: $panel_height;
|
||||||
font-feature-settings: "tnum";
|
font-feature-settings: "tnum";
|
||||||
|
transition-duration: $panel_transition_duration;
|
||||||
|
|
||||||
// transparent panel on lock & login screens
|
// transparent panel on lock & login screens
|
||||||
&.unlock-screen,
|
&.unlock-screen,
|
||||||
&.login-screen {
|
&.login-screen,
|
||||||
|
&:overview {
|
||||||
background-color: transparent;
|
background-color: transparent;
|
||||||
|
|
||||||
.panel-corner {
|
.panel-corner {
|
||||||
-panel-corner-radius: 0;
|
-panel-corner-opacity: 0;
|
||||||
-panel-corner-background-color: transparent;
|
|
||||||
-panel-corner-border-color: transparent;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// spacing between activities, app menu and such
|
|
||||||
#panelLeft, #panelCenter {
|
|
||||||
spacing: $base_spacing;
|
|
||||||
}
|
|
||||||
|
|
||||||
// the rounded outset corners
|
// the rounded outset corners
|
||||||
.panel-corner {
|
.panel-corner {
|
||||||
-panel-corner-radius: $panel_corner_radius;
|
-panel-corner-radius: $panel_corner_radius;
|
||||||
-panel-corner-background-color: $panel_bg_color;
|
-panel-corner-background-color: $panel_bg_color;
|
||||||
-panel-corner-border-width: 2px;
|
-panel-corner-border-width: 2px;
|
||||||
-panel-corner-border-color: transparent;
|
-panel-corner-border-color: transparent;
|
||||||
|
-panel-corner-opacity: 1;
|
||||||
&:active, &:overview, &:focus {
|
transition-duration: $panel_transition_duration;
|
||||||
-panel-corner-border-color: lighten($selected_bg_color,5%);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// panel menus
|
// panel menus
|
||||||
@@ -48,37 +41,70 @@ $panel_height: 1.86em;
|
|||||||
color: $panel_fg_color;
|
color: $panel_fg_color;
|
||||||
-natural-hpadding: $base_padding * 2;
|
-natural-hpadding: $base_padding * 2;
|
||||||
-minimum-hpadding: $base_padding;
|
-minimum-hpadding: $base_padding;
|
||||||
|
transition-duration: 150ms;
|
||||||
|
border: 3px solid transparent;
|
||||||
|
border-radius: 99px;
|
||||||
|
|
||||||
&:hover {
|
&.clock-display {
|
||||||
color: lighten($panel_fg_color, 20%);
|
.clock {
|
||||||
|
transition-duration: 150ms;
|
||||||
|
border: 3px solid transparent;
|
||||||
|
border-radius: 99px;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
&:active, &:overview, &:focus, &:checked {
|
&:hover, &:active, &:overview, &:focus, &:checked {
|
||||||
// Trick due to St limitations. It needs a background to draw a box-shadow
|
box-shadow: inset 0 0 0 100px rgba(255, 255, 255, 0.20);
|
||||||
background-color: rgba(0, 0, 0, 0.01);
|
|
||||||
box-shadow: inset 0 -2px 0 0 lighten($selected_bg_color,5%);
|
// The clock display needs to have the background on .clock because
|
||||||
color: lighten($panel_fg_color, 20%);
|
// we want to exclude the do-not-disturb indicator from the background
|
||||||
|
&.clock-display {
|
||||||
|
box-shadow: none;
|
||||||
|
|
||||||
|
.clock {
|
||||||
|
box-shadow: inset 0 0 0 100px rgba(255, 255, 255, 0.20);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// status area icons
|
// status area icons
|
||||||
.system-status-icon {
|
.system-status-icon {
|
||||||
icon-size: $base_icon_size;
|
icon-size: $base_icon_size;
|
||||||
padding: $base_padding - 1px;
|
padding: $base_padding - 1px;
|
||||||
|
margin: 0 $base_margin;
|
||||||
|
}
|
||||||
|
|
||||||
|
.panel-status-indicators-box .system-status-icon,
|
||||||
|
.panel-status-menu-box .system-status-icon {
|
||||||
|
margin: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
// app menu icon
|
// app menu icon
|
||||||
.app-menu-icon {
|
.app-menu-icon {
|
||||||
margin-left: $base_margin;
|
|
||||||
margin-right: $base_margin;
|
|
||||||
-st-icon-style: symbolic;
|
-st-icon-style: symbolic;
|
||||||
// dimensions of the icon are hardcoded
|
// dimensions of the icon are hardcoded
|
||||||
}
|
}
|
||||||
|
|
||||||
// lock & login screen styles
|
&#panelActivities {
|
||||||
.unlock-screen &,
|
-natural-hpadding: $base_padding * 3;
|
||||||
.login-screen & {
|
}
|
||||||
color: lighten($fg_color, 10%);
|
}
|
||||||
&:focus, &:hover, &:active { color: lighten($fg_color, 10%); }
|
|
||||||
|
&.unlock-screen,
|
||||||
|
&.login-screen,
|
||||||
|
&:overview {
|
||||||
|
.panel-button {
|
||||||
|
&:hover, &:active, &:overview, &:focus, &:checked {
|
||||||
|
box-shadow: inset 0 0 0 100px rgba(255, 255, 255, 0.15);
|
||||||
|
|
||||||
|
&.clock-display {
|
||||||
|
box-shadow: none;
|
||||||
|
|
||||||
|
.clock {
|
||||||
|
box-shadow: inset 0 0 0 100px rgba(255, 255, 255, 0.15);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -102,3 +128,8 @@ $panel_height: 1.86em;
|
|||||||
spacing: $base_spacing;
|
spacing: $base_spacing;
|
||||||
.label-shadow { color: transparent; }
|
.label-shadow { color: transparent; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#appMenu .panel-status-menu-box {
|
||||||
|
padding: 0 $base_padding;
|
||||||
|
spacing: $base_spacing;
|
||||||
|
}
|
||||||
|
|||||||
@@ -76,8 +76,10 @@ $popover_arrow_height: 12px;
|
|||||||
|
|
||||||
// container for radio and check boxes
|
// container for radio and check boxes
|
||||||
.popup-menu-ornament {
|
.popup-menu-ornament {
|
||||||
text-align: right;
|
|
||||||
width: 1.2em;
|
width: 1.2em;
|
||||||
|
|
||||||
|
&:ltr { text-align: right };
|
||||||
|
&:rtl { text-align: left };
|
||||||
}
|
}
|
||||||
|
|
||||||
// separator
|
// separator
|
||||||
|
|||||||
@@ -66,7 +66,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
#lockDialogGroup {
|
#lockDialogGroup {
|
||||||
background-color: lighten(#2e3436, 8%);
|
background-color: $system_bg_color;
|
||||||
}
|
}
|
||||||
|
|
||||||
#unlockDialogNotifications {
|
#unlockDialogNotifications {
|
||||||
|
|||||||
@@ -10,17 +10,16 @@ $search_entry_height: 36px;
|
|||||||
border-radius: $search_entry_height * 0.5; // half the height
|
border-radius: $search_entry_height * 0.5; // half the height
|
||||||
color: transparentize($fg_color,0.3);
|
color: transparentize($fg_color,0.3);
|
||||||
background-color: $bg_color;
|
background-color: $bg_color;
|
||||||
border-color: $borders_color;
|
margin-top: $base_spacing * 2;
|
||||||
|
margin-bottom: $base_spacing;
|
||||||
|
border-width: 2px;
|
||||||
|
border-color: transparent;
|
||||||
&:hover {
|
&:hover {
|
||||||
background-color: $hover_bg_color;
|
background-color: $hover_bg_color;
|
||||||
border-color: $hover_borders_color;
|
|
||||||
color: $hover_fg_color;
|
color: $hover_fg_color;
|
||||||
}
|
}
|
||||||
|
|
||||||
&:focus {
|
&:focus {
|
||||||
padding: $base_padding $base_padding+2; // 1px less to account for wider border
|
|
||||||
border-width: 2px;
|
|
||||||
border-style: solid;
|
border-style: solid;
|
||||||
border-color: $selected_bg_color;
|
border-color: $selected_bg_color;
|
||||||
color: $fg_color;
|
color: $fg_color;
|
||||||
@@ -32,4 +31,4 @@ $search_entry_height: 36px;
|
|||||||
padding: 0 4px;
|
padding: 0 4px;
|
||||||
color: inherit;
|
color: inherit;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -54,6 +54,10 @@
|
|||||||
@extend %status_text;
|
@extend %status_text;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.grid-search-results {
|
||||||
|
spacing: $base_spacing * 6;
|
||||||
|
}
|
||||||
|
|
||||||
// Search results with icons
|
// Search results with icons
|
||||||
.grid-search-result {
|
.grid-search-result {
|
||||||
@extend %app-well-app;
|
@extend %app-well-app;
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ $slider_size: 15px;
|
|||||||
-barlevel-overdrive-color: $destructive_color;
|
-barlevel-overdrive-color: $destructive_color;
|
||||||
-barlevel-overdrive-border-color: if($variant == 'light', darken($destructive_color, 4%), lighten($destructive_color, 2%)); //trough border when red;
|
-barlevel-overdrive-border-color: if($variant == 'light', darken($destructive_color, 4%), lighten($destructive_color, 2%)); //trough border when red;
|
||||||
-barlevel-overdrive-separator-width:1px;
|
-barlevel-overdrive-separator-width:1px;
|
||||||
// slider hander
|
// slider handler
|
||||||
-slider-handle-radius: $slider_size * 0.5; // half the size of the size
|
-slider-handle-radius: $slider_size * 0.5; // half the size of the size
|
||||||
-slider-handle-border-width: 1px;
|
-slider-handle-border-width: 1px;
|
||||||
-slider-handle-border-color: if($variant == 'light', $borders_color, $fg_color);
|
-slider-handle-border-color: if($variant == 'light', $borders_color, $fg_color);
|
||||||
|
|||||||
@@ -15,13 +15,11 @@
|
|||||||
border: 1px solid transparent;
|
border: 1px solid transparent;
|
||||||
|
|
||||||
&:outlined {
|
&:outlined {
|
||||||
border: 1px solid darken($borders_color,5%);
|
background-color: transparentize($osd_fg_color, 0.7);
|
||||||
background-color: transparentize($osd_fg_color, 0.9);
|
|
||||||
box-shadow: inset 0 2px 2px 0 rgba(0,0,0,0.4);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
&:selected {
|
&:selected {
|
||||||
background-color: transparentize($osd_fg_color, 0.9);
|
background-color: transparentize($osd_fg_color, 0.7);
|
||||||
color: $osd_fg_color;
|
color: $osd_fg_color;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,66 +1,52 @@
|
|||||||
/* Window Picker */
|
/* Window Picker */
|
||||||
|
|
||||||
$window_picker_spacing: $base_spacing * 2; // 16px
|
$window_picker_spacing: $base_spacing; // 6px
|
||||||
$window_picker_padding: $base_padding * 2; // 16px
|
$window_picker_padding: $base_padding * 2; // 12px
|
||||||
|
|
||||||
$window_thumbnail_border_color:transparentize($selected_fg_color, 0.65);
|
$window_thumbnail_label_color: transparentize($osd_bg_color, 0.4);
|
||||||
|
|
||||||
$window_close_button_size: 24px;
|
$window_close_button_size: 30px;
|
||||||
$window_close_button_padding: 3px;
|
$window_close_button_padding: 3px;
|
||||||
|
|
||||||
|
|
||||||
// Window picker
|
// Window picker
|
||||||
.window-picker {
|
.window-picker {
|
||||||
// Space between window thumbnails
|
// Space between window thumbnails
|
||||||
-horizontal-spacing: $window_picker_spacing;
|
spacing: $window_picker_spacing;
|
||||||
-vertical-spacing: $window_picker_spacing;
|
|
||||||
// Padding for container around window thumbnails
|
|
||||||
padding: $window_picker_padding;
|
|
||||||
|
|
||||||
&.external-monitor { padding: $window_picker_padding; }
|
|
||||||
}
|
|
||||||
|
|
||||||
// Borders on window thumbnails
|
|
||||||
.window-clone-border {
|
|
||||||
border-width: 6px;
|
|
||||||
border-style: solid;
|
|
||||||
border-color: $window_thumbnail_border_color;
|
|
||||||
border-radius: $base_border_radius + 2;
|
|
||||||
// For window decorations with round corners we can't match
|
|
||||||
// the exact shape when the window is scaled. So apply a shadow
|
|
||||||
// to fix that case
|
|
||||||
box-shadow: inset 0 0 0 1px transparentize($borders_color, 0.8);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Window titles
|
// Window titles
|
||||||
.window-caption {
|
.window-caption {
|
||||||
color: $osd_fg_color;
|
color: $osd_fg_color;
|
||||||
background-color: $osd_bg_color;
|
background-color: $osd_bg_color;
|
||||||
border:1px solid $osd_outer_borders_color;
|
border-radius: 99px;
|
||||||
border-radius: $base_border_radius + 1;
|
|
||||||
padding: $base_padding $base_padding * 2;
|
padding: $base_padding $base_padding * 2;
|
||||||
font-weight: bold;
|
|
||||||
@include fontsize($base_font_size + 1);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Close button
|
// Close button
|
||||||
.window-close {
|
.window-close {
|
||||||
background-color: $selected_bg_color;
|
background-color: $osd_bg_color;
|
||||||
color: $selected_fg_color;
|
color: $osd_fg_color;
|
||||||
border: none;
|
|
||||||
border-radius: $window_close_button_size * 0.5 + $window_close_button_padding * 2;
|
border-radius: $window_close_button_size * 0.5 + $window_close_button_padding * 2;
|
||||||
padding: $window_close_button_padding;
|
padding: $window_close_button_padding;
|
||||||
height: $window_close_button_size;
|
height: $window_close_button_size;
|
||||||
width: $window_close_button_size;
|
width: $window_close_button_size;
|
||||||
box-shadow: -1px 1px 5px 0px rgba(0,0,0,0.5);
|
box-shadow: -1px 1px 5px 0px rgba(0,0,0,0.5);
|
||||||
|
transition-duration: 300ms;
|
||||||
|
|
||||||
-shell-close-overlap: $window_close_button_size * 0.5;
|
& StIcon { icon-size: 24px; }
|
||||||
|
|
||||||
&:hover {
|
&:hover {
|
||||||
background-color: lighten($selected_bg_color, 5%);
|
background-color: lighten($osd_bg_color, 15%);
|
||||||
}
|
}
|
||||||
|
|
||||||
&:active {
|
&:active {
|
||||||
background-color: darken($selected_bg_color, 5%);
|
color: transparentize($osd_fg_color, 0.2);
|
||||||
|
background-color: darken($osd_bg_color, 5%);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.workspace-background {
|
||||||
|
// keep in sync with BACKGROUND_CORNER_RADIUS_PIXELS in workspace.js
|
||||||
|
border-radius: 30px;
|
||||||
|
box-shadow: 0 4px 16px 4px transparentize(darken($osd_bg_color, 30%), 0.7);
|
||||||
|
}
|
||||||
|
|||||||
@@ -16,7 +16,6 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.ws-switcher-box {
|
.ws-switcher-box {
|
||||||
// background: transparent;
|
|
||||||
background: transparent;
|
background: transparent;
|
||||||
height: 50px;
|
height: 50px;
|
||||||
background-size: 32px;
|
background-size: 32px;
|
||||||
@@ -29,6 +28,7 @@
|
|||||||
.ws-switcher-active-down,
|
.ws-switcher-active-down,
|
||||||
.ws-switcher-active-left,
|
.ws-switcher-active-left,
|
||||||
.ws-switcher-active-right {
|
.ws-switcher-active-right {
|
||||||
|
height: 52px;
|
||||||
background-color: $selected_bg_color;
|
background-color: $selected_bg_color;
|
||||||
border: 1px solid if($variant=='light', darken($selected_bg_color, 8%), lighten($selected_bg_color, 5%));
|
border: 1px solid if($variant=='light', darken($selected_bg_color, 8%), lighten($selected_bg_color, 5%));
|
||||||
border-radius: $base_border_radius + 3px;
|
border-radius: $base_border_radius + 3px;
|
||||||
|
|||||||
@@ -2,24 +2,20 @@
|
|||||||
|
|
||||||
// thumbnails in overview
|
// thumbnails in overview
|
||||||
.workspace-thumbnails {
|
.workspace-thumbnails {
|
||||||
@extend %overview_panel;
|
|
||||||
visible-width: 32px; //amount visible before hover
|
visible-width: 32px; //amount visible before hover
|
||||||
spacing: $base_spacing;
|
spacing: $base_spacing;
|
||||||
padding: $base_padding;
|
padding: $base_padding;
|
||||||
|
|
||||||
border-radius: $modal_radius 0 0 $modal_radius;
|
.workspace-thumbnail {
|
||||||
border-right-width: 0;
|
@extend %overview_panel;
|
||||||
|
border-radius: 3px;
|
||||||
&:rtl {
|
|
||||||
border-radius: 0 $modal_radius $modal_radius 0;
|
|
||||||
border-left-width: 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// drag and drop indicator
|
// drag and drop indicator
|
||||||
.placeholder {
|
.placeholder {
|
||||||
background-image: url("resource:///org/gnome/shell/theme/dash-placeholder.svg");
|
background-image: url("resource:///org/gnome/shell/theme/workspace-placeholder.svg");
|
||||||
background-size: contain;
|
background-size: contain;
|
||||||
height: 24px;
|
width: 18px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+79
-23
@@ -1,17 +1,33 @@
|
|||||||
sessions = [
|
session_desktop_base = 'gnome-classic'
|
||||||
['gnome-classic.session.desktop.in', sessiondir],
|
|
||||||
['gnome-classic.desktop.in', xsessiondir]
|
session_desktops = [
|
||||||
|
session_desktop_base,
|
||||||
|
session_desktop_base + '-xorg',
|
||||||
|
session_desktop_base + '-wayland',
|
||||||
]
|
]
|
||||||
foreach s : sessions
|
|
||||||
name_array = s[0].split('.')
|
foreach name: session_desktops
|
||||||
i18n.merge_file('',
|
session_desktop = name + '.desktop'
|
||||||
input: s[0],
|
if name.endswith('-xorg')
|
||||||
output: '.'.join([name_array[0], name_array[1]]),
|
session_instdir = xsessiondir
|
||||||
po_dir: '../po',
|
elif name.endswith('-wayland')
|
||||||
install: true,
|
session_instdir = wlsessiondir
|
||||||
install_dir: s[1],
|
else
|
||||||
type: 'desktop'
|
# FIXME: The same target can not be copied into two directories.
|
||||||
)
|
# There is a workaround in meson/session-post-install.py until proper
|
||||||
|
# solution arises:
|
||||||
|
# https://github.com/mesonbuild/meson/issues/2416
|
||||||
|
session_instdir = xsessiondir
|
||||||
|
#session_instdir = [ xesssiondir, wlsessiondir ]
|
||||||
|
endif
|
||||||
|
i18n.merge_file(
|
||||||
|
input: session_desktop + '.in',
|
||||||
|
output: session_desktop,
|
||||||
|
po_dir: '../po',
|
||||||
|
install: true,
|
||||||
|
install_dir: session_instdir,
|
||||||
|
type: 'desktop'
|
||||||
|
)
|
||||||
endforeach
|
endforeach
|
||||||
|
|
||||||
classic_uuids = []
|
classic_uuids = []
|
||||||
@@ -34,7 +50,42 @@ theme_sources = files(
|
|||||||
'gnome-shell-sass/_colors.scss',
|
'gnome-shell-sass/_colors.scss',
|
||||||
'gnome-shell-sass/_common.scss',
|
'gnome-shell-sass/_common.scss',
|
||||||
'gnome-shell-sass/_drawing.scss',
|
'gnome-shell-sass/_drawing.scss',
|
||||||
'gnome-shell-sass/_high-contrast-colors.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/_network-dialog.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/_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/_tiled-previews.scss',
|
||||||
|
'gnome-shell-sass/widgets/_window-picker.scss',
|
||||||
|
'gnome-shell-sass/widgets/_workspace-switcher.scss',
|
||||||
|
'gnome-shell-sass/widgets/_workspace-thumbnails.scss'
|
||||||
)
|
)
|
||||||
|
|
||||||
theme_data = [
|
theme_data = [
|
||||||
@@ -47,15 +98,20 @@ theme_data = [
|
|||||||
'gnome-classic-high-contrast.css'
|
'gnome-classic-high-contrast.css'
|
||||||
]
|
]
|
||||||
|
|
||||||
style = 'gnome-classic'
|
stylesheet = 'gnome-classic.css'
|
||||||
custom_target(style + '.css',
|
if fs.exists(stylesheet)
|
||||||
input: style + '.scss',
|
install_data(stylesheet, install_dir: themedir)
|
||||||
output: style + '.css',
|
else
|
||||||
depend_files: theme_sources,
|
sassc = find_program('sassc', required: true)
|
||||||
command: [sassc, '-a', '@INPUT@', '@OUTPUT@'],
|
custom_target(stylesheet,
|
||||||
install: true,
|
input: fs.replace_suffix(stylesheet, '.scss'),
|
||||||
install_dir: themedir
|
output: stylesheet,
|
||||||
)
|
depend_files: theme_sources,
|
||||||
|
command: [sassc, '-a', '@INPUT@', '@OUTPUT@'],
|
||||||
|
install: true,
|
||||||
|
install_dir: themedir
|
||||||
|
)
|
||||||
|
endif
|
||||||
|
|
||||||
install_data(theme_data, install_dir: themedir)
|
install_data(theme_data, install_dir: themedir)
|
||||||
|
|
||||||
|
|||||||
+19
-9
@@ -7,30 +7,40 @@ builddir=`mktemp -p $srcdir -d _build.XXXXXX` || exit 1
|
|||||||
installdir=`mktemp -p $srcdir -d _install.XXXXXX` || exit 1
|
installdir=`mktemp -p $srcdir -d _install.XXXXXX` || exit 1
|
||||||
|
|
||||||
meson setup --prefix=$installdir -Dextension_set=all $srcdir $builddir
|
meson setup --prefix=$installdir -Dextension_set=all $srcdir $builddir
|
||||||
ninja -C$builddir install
|
meson install -C $builddir
|
||||||
|
|
||||||
rm -rf $srcdir/zip-files
|
rm -rf $srcdir/zip-files
|
||||||
mkdir $srcdir/zip-files
|
mkdir $srcdir/zip-files
|
||||||
|
|
||||||
extensiondir=$installdir/share/gnome-shell/extensions
|
extensiondir=$installdir/share/gnome-shell/extensions
|
||||||
schemadir=$installdir/share/glib-2.0/schemas
|
schemadir=$installdir/share/glib-2.0/schemas
|
||||||
localedir=$installdir/share/locale
|
|
||||||
|
|
||||||
for f in $extensiondir/*; do
|
for f in $extensiondir/*; do
|
||||||
name=`basename ${f%%@*}`
|
name=`basename ${f%%@*}`
|
||||||
uuid=$name@gnome-shell-extensions.gcampax.github.com
|
uuid=$name@gnome-shell-extensions.gcampax.github.com
|
||||||
schema=$schemadir/org.gnome.shell.extensions.$name.gschema.xml
|
schema=$schemadir/org.gnome.shell.extensions.$name.gschema.xml
|
||||||
|
|
||||||
cp $srcdir/NEWS $srcdir/COPYING $f
|
olddomain=gnome-shell-extensions
|
||||||
cp -r $localedir $f
|
newdomain=gnome-shell-extension-$name
|
||||||
|
sed -i "/gettext-domain/ s:$olddomain:$newdomain:" $f/metadata.json
|
||||||
|
|
||||||
if [ -f $schema ]; then
|
xgettext --from-code=UTF-8 --output-dir=$builddir --output=$name.pot $f/*.js
|
||||||
mkdir $f/schemas
|
|
||||||
cp $schema $f/schemas;
|
if [ -f $builddir/$name.pot ]; then
|
||||||
glib-compile-schemas $f/schemas
|
mkdir $f/po
|
||||||
|
for l in $(<$srcdir/po/LINGUAS); do
|
||||||
|
msgmerge --quiet --output-file=$f/po/$l.po \
|
||||||
|
$srcdir/po/$l.po $builddir/$name.pot
|
||||||
|
done
|
||||||
fi
|
fi
|
||||||
|
|
||||||
(cd $f && zip -rmq $srcdir/zip-files/$uuid.shell-extension.zip .)
|
cp $srcdir/NEWS $srcdir/COPYING $f
|
||||||
|
sources=(NEWS COPYING $(cd $f; ls *.js))
|
||||||
|
|
||||||
|
[ -f $schema ] || unset schema
|
||||||
|
|
||||||
|
gnome-extensions pack ${sources[@]/#/--extra-source=} \
|
||||||
|
${schema:+--schema=$schema} --out-dir=$srcdir/zip-files $f
|
||||||
done
|
done
|
||||||
|
|
||||||
rm -rf $builddir
|
rm -rf $builddir
|
||||||
|
|||||||
@@ -12,8 +12,7 @@ const Main = imports.ui.main;
|
|||||||
const PanelMenu = imports.ui.panelMenu;
|
const PanelMenu = imports.ui.panelMenu;
|
||||||
const PopupMenu = imports.ui.popupMenu;
|
const PopupMenu = imports.ui.popupMenu;
|
||||||
|
|
||||||
const Gettext = imports.gettext.domain('gnome-shell-extensions');
|
const _ = ExtensionUtils.gettext;
|
||||||
const _ = Gettext.gettext;
|
|
||||||
|
|
||||||
const appSys = Shell.AppSystem.get_default();
|
const appSys = Shell.AppSystem.get_default();
|
||||||
|
|
||||||
@@ -181,11 +180,14 @@ class CategoryMenuItem extends PopupMenu.PopupBaseMenuItem {
|
|||||||
}
|
}
|
||||||
|
|
||||||
_onMotionEvent(actor, event) {
|
_onMotionEvent(actor, event) {
|
||||||
let device = event.get_device();
|
if (!this._grab) {
|
||||||
if (!device.get_grabbed_actor()) {
|
|
||||||
this._oldX = -1;
|
this._oldX = -1;
|
||||||
this._oldY = -1;
|
this._oldY = -1;
|
||||||
device.grab(this);
|
const grab = global.stage.grab(this);
|
||||||
|
if (grab.get_seat_state() !== Clutter.GrabState.NONE)
|
||||||
|
this._grab = grab;
|
||||||
|
else
|
||||||
|
grab.dismiss();
|
||||||
}
|
}
|
||||||
this.hover = true;
|
this.hover = true;
|
||||||
|
|
||||||
@@ -195,7 +197,8 @@ class CategoryMenuItem extends PopupMenu.PopupBaseMenuItem {
|
|||||||
this._oldX = -1;
|
this._oldX = -1;
|
||||||
this._oldY = -1;
|
this._oldY = -1;
|
||||||
this.hover = false;
|
this.hover = false;
|
||||||
device.ungrab();
|
this._grab?.dismiss();
|
||||||
|
delete this._grab;
|
||||||
|
|
||||||
let source = event.get_source();
|
let source = event.get_source();
|
||||||
if (source instanceof St.Widget)
|
if (source instanceof St.Widget)
|
||||||
@@ -363,17 +366,13 @@ class ApplicationsButton extends PanelMenu.Button {
|
|||||||
// role ATK_ROLE_MENU like other elements of the panel.
|
// role ATK_ROLE_MENU like other elements of the panel.
|
||||||
this.accessible_role = Atk.Role.LABEL;
|
this.accessible_role = Atk.Role.LABEL;
|
||||||
|
|
||||||
let hbox = new St.BoxLayout({ style_class: 'panel-status-menu-box' });
|
|
||||||
|
|
||||||
this._label = new St.Label({
|
this._label = new St.Label({
|
||||||
text: _('Applications'),
|
text: _('Applications'),
|
||||||
y_expand: true,
|
y_expand: true,
|
||||||
y_align: Clutter.ActorAlign.CENTER,
|
y_align: Clutter.ActorAlign.CENTER,
|
||||||
});
|
});
|
||||||
hbox.add_child(this._label);
|
|
||||||
hbox.add_child(PopupMenu.arrowIcon(St.Side.BOTTOM));
|
|
||||||
|
|
||||||
this.add_actor(hbox);
|
this.add_actor(this._label);
|
||||||
this.name = 'panelApplications';
|
this.name = 'panelApplications';
|
||||||
this.label_actor = this._label;
|
this.label_actor = this._label;
|
||||||
|
|
||||||
@@ -383,9 +382,12 @@ class ApplicationsButton extends PanelMenu.Button {
|
|||||||
this._hidingId = Main.overview.connect('hiding', () => {
|
this._hidingId = Main.overview.connect('hiding', () => {
|
||||||
this.remove_accessible_state(Atk.StateType.CHECKED);
|
this.remove_accessible_state(Atk.StateType.CHECKED);
|
||||||
});
|
});
|
||||||
Main.layoutManager.connect('startup-complete',
|
Main.wm.addKeybinding(
|
||||||
this._setKeybinding.bind(this));
|
'apps-menu-toggle-menu',
|
||||||
this._setKeybinding();
|
ExtensionUtils.getSettings(),
|
||||||
|
Meta.KeyBindingFlags.IGNORE_AUTOREPEAT,
|
||||||
|
Shell.ActionMode.NORMAL | Shell.ActionMode.OVERVIEW,
|
||||||
|
() => this.menu.toggle());
|
||||||
|
|
||||||
this._desktopTarget = new DesktopTarget();
|
this._desktopTarget = new DesktopTarget();
|
||||||
this._desktopTarget.connect('app-dropped', () => {
|
this._desktopTarget.connect('app-dropped', () => {
|
||||||
@@ -436,11 +438,7 @@ class ApplicationsButton extends PanelMenu.Button {
|
|||||||
this._tree.disconnect(this._treeChangedId);
|
this._tree.disconnect(this._treeChangedId);
|
||||||
this._tree = null;
|
this._tree = null;
|
||||||
|
|
||||||
Main.wm.setCustomKeybindingHandler('panel-main-menu',
|
Main.wm.removeKeybinding('apps-menu-toggle-menu');
|
||||||
Shell.ActionMode.NORMAL | Shell.ActionMode.OVERVIEW,
|
|
||||||
Main.sessionMode.hasOverview
|
|
||||||
? Main.overview.toggle.bind(Main.overview)
|
|
||||||
: null);
|
|
||||||
|
|
||||||
this._desktopTarget.destroy();
|
this._desktopTarget.destroy();
|
||||||
}
|
}
|
||||||
@@ -482,12 +480,6 @@ class ApplicationsButton extends PanelMenu.Button {
|
|||||||
super._onOpenStateChanged(menu, open);
|
super._onOpenStateChanged(menu, open);
|
||||||
}
|
}
|
||||||
|
|
||||||
_setKeybinding() {
|
|
||||||
Main.wm.setCustomKeybindingHandler('panel-main-menu',
|
|
||||||
Shell.ActionMode.NORMAL | Shell.ActionMode.OVERVIEW,
|
|
||||||
() => this.menu.toggle());
|
|
||||||
}
|
|
||||||
|
|
||||||
_redisplay() {
|
_redisplay() {
|
||||||
this.applicationsBox.destroy_all_children();
|
this.applicationsBox.destroy_all_children();
|
||||||
this.categoriesBox.destroy_all_children();
|
this.categoriesBox.destroy_all_children();
|
||||||
@@ -677,17 +669,20 @@ class ApplicationsButton extends PanelMenu.Button {
|
|||||||
|
|
||||||
let appsMenuButton;
|
let appsMenuButton;
|
||||||
|
|
||||||
|
/** */
|
||||||
function enable() {
|
function enable() {
|
||||||
appsMenuButton = new ApplicationsButton();
|
appsMenuButton = new ApplicationsButton();
|
||||||
let index = Main.sessionMode.panel.left.indexOf('activities') + 1;
|
let index = Main.sessionMode.panel.left.indexOf('activities') + 1;
|
||||||
Main.panel.addToStatusArea('apps-menu', appsMenuButton, index, 'left');
|
Main.panel.addToStatusArea('apps-menu', appsMenuButton, index, 'left');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** */
|
||||||
function disable() {
|
function disable() {
|
||||||
Main.panel.menuManager.removeMenu(appsMenuButton.menu);
|
Main.panel.menuManager.removeMenu(appsMenuButton.menu);
|
||||||
appsMenuButton.destroy();
|
appsMenuButton.destroy();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** */
|
||||||
function init() {
|
function init() {
|
||||||
ExtensionUtils.initTranslations();
|
ExtensionUtils.initTranslations();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,3 +3,4 @@ extension_data += configure_file(
|
|||||||
output: metadata_name,
|
output: metadata_name,
|
||||||
configuration: metadata_conf
|
configuration: metadata_conf
|
||||||
)
|
)
|
||||||
|
extension_schemas += files(metadata_conf.get('gschemaname') + '.gschema.xml')
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
{
|
{
|
||||||
"extension-id": "@extension_id@",
|
"extension-id": "@extension_id@",
|
||||||
"uuid": "@uuid@",
|
"uuid": "@uuid@",
|
||||||
|
"settings-schema": "@gschemaname@",
|
||||||
"gettext-domain": "@gettext_domain@",
|
"gettext-domain": "@gettext_domain@",
|
||||||
"name": "Applications Menu",
|
"name": "Applications Menu",
|
||||||
"description": "Add a category-based menu for applications.\nThis extension is part of Classic Mode and is officially supported by GNOME. Please do not report bugs using the form below, use GNOME's GitLab instance instead.",
|
"description": "Add a category-based menu for applications.\nThis extension is part of Classic Mode and is officially supported by GNOME. Please do not report bugs using the form below, use GNOME's GitLab instance instead.",
|
||||||
|
|||||||
@@ -0,0 +1,12 @@
|
|||||||
|
<schemalist gettext-domain="gnome-shell-extensions">
|
||||||
|
<schema id="org.gnome.shell.extensions.apps-menu"
|
||||||
|
path="/org/gnome/shell/extensions/apps-menu/">
|
||||||
|
<key name="apps-menu-toggle-menu" type="as">
|
||||||
|
<default>["<Alt>F1"]</default>
|
||||||
|
<summary>Keybinding to open the applications menu</summary>
|
||||||
|
<description>
|
||||||
|
Keybinding to open the applications menu.
|
||||||
|
</description>
|
||||||
|
</key>
|
||||||
|
</schema>
|
||||||
|
</schemalist>
|
||||||
@@ -35,17 +35,16 @@ class WindowMover {
|
|||||||
|
|
||||||
_updateAppData() {
|
_updateAppData() {
|
||||||
let ids = [...this._appConfigs.keys()];
|
let ids = [...this._appConfigs.keys()];
|
||||||
let removedApps = [...this._appData.keys()].filter(
|
let removedApps = [...this._appData.keys()]
|
||||||
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.disconnect(this._appData.get(app).windowsChangedId);
|
||||||
this._appData.delete(app);
|
this._appData.delete(app);
|
||||||
});
|
});
|
||||||
|
|
||||||
let addedApps = ids.map(id => this._appSystem.lookup_app(id)).filter(
|
let addedApps = ids
|
||||||
app => app && !this._appData.has(app)
|
.map(id => this._appSystem.lookup_app(id))
|
||||||
);
|
.filter(app => app && !this._appData.has(app));
|
||||||
addedApps.forEach(app => {
|
addedApps.forEach(app => {
|
||||||
let data = {
|
let data = {
|
||||||
windowsChangedId: app.connect('windows-changed',
|
windowsChangedId: app.connect('windows-changed',
|
||||||
@@ -73,7 +72,7 @@ class WindowMover {
|
|||||||
}
|
}
|
||||||
|
|
||||||
_moveWindow(window, workspaceNum) {
|
_moveWindow(window, workspaceNum) {
|
||||||
if (window.skip_taskbar)
|
if (window.skip_taskbar || window.is_on_all_workspaces())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
// ensure we have the required number of workspaces
|
// ensure we have the required number of workspaces
|
||||||
@@ -94,9 +93,9 @@ class WindowMover {
|
|||||||
// the window still exists and is just moved to a different workspace
|
// the window still exists and is just moved to a different workspace
|
||||||
// or something; assume it'll be added back immediately, so keep it
|
// or something; assume it'll be added back immediately, so keep it
|
||||||
// to avoid moving it again
|
// to avoid moving it again
|
||||||
windows.push(...data.windows.filter(
|
windows.push(...data.windows.filter(w => {
|
||||||
w => !windows.includes(w) && w.get_compositor_private() !== null
|
return !windows.includes(w) && w.get_compositor_private() !== null;
|
||||||
));
|
}));
|
||||||
|
|
||||||
let workspaceNum = this._appConfigs.get(app.id);
|
let workspaceNum = this._appConfigs.get(app.id);
|
||||||
windows.filter(w => !data.windows.includes(w)).forEach(window => {
|
windows.filter(w => !data.windows.includes(w)).forEach(window => {
|
||||||
@@ -109,18 +108,24 @@ class WindowMover {
|
|||||||
let prevCheckWorkspaces;
|
let prevCheckWorkspaces;
|
||||||
let winMover;
|
let winMover;
|
||||||
|
|
||||||
|
/** */
|
||||||
function init() {
|
function init() {
|
||||||
ExtensionUtils.initTranslations();
|
ExtensionUtils.initTranslations();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @returns {bool} - false (used as MetaLater handler)
|
||||||
|
*/
|
||||||
function myCheckWorkspaces() {
|
function myCheckWorkspaces() {
|
||||||
let keepAliveWorkspaces = [];
|
let keepAliveWorkspaces = [];
|
||||||
let foundNonEmpty = false;
|
let foundNonEmpty = false;
|
||||||
for (let i = this._workspaces.length - 1; i >= 0; i--) {
|
for (let i = this._workspaces.length - 1; i >= 0; i--) {
|
||||||
if (!foundNonEmpty)
|
if (!foundNonEmpty) {
|
||||||
foundNonEmpty = this._workspaces[i].list_windows().length > 0;
|
foundNonEmpty = this._workspaces[i].list_windows().some(
|
||||||
else if (!this._workspaces[i]._keepAliveId)
|
w => !w.is_on_all_workspaces());
|
||||||
|
} else if (!this._workspaces[i]._keepAliveId) {
|
||||||
keepAliveWorkspaces.push(this._workspaces[i]);
|
keepAliveWorkspaces.push(this._workspaces[i]);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// make sure the original method only removes empty workspaces at the end
|
// make sure the original method only removes empty workspaces at the end
|
||||||
@@ -131,6 +136,7 @@ function myCheckWorkspaces() {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** */
|
||||||
function enable() {
|
function enable() {
|
||||||
prevCheckWorkspaces = Main.wm._workspaceTracker._checkWorkspaces;
|
prevCheckWorkspaces = Main.wm._workspaceTracker._checkWorkspaces;
|
||||||
Main.wm._workspaceTracker._checkWorkspaces = myCheckWorkspaces;
|
Main.wm._workspaceTracker._checkWorkspaces = myCheckWorkspaces;
|
||||||
@@ -138,6 +144,7 @@ function enable() {
|
|||||||
winMover = new WindowMover();
|
winMover = new WindowMover();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** */
|
||||||
function disable() {
|
function disable() {
|
||||||
Main.wm._workspaceTracker._checkWorkspaces = prevCheckWorkspaces;
|
Main.wm._workspaceTracker._checkWorkspaces = prevCheckWorkspaces;
|
||||||
winMover.destroy();
|
winMover.destroy();
|
||||||
|
|||||||
@@ -2,281 +2,286 @@
|
|||||||
// Start apps on custom workspaces
|
// Start apps on custom workspaces
|
||||||
/* exported init buildPrefsWidget */
|
/* exported init buildPrefsWidget */
|
||||||
|
|
||||||
const { Gio, GObject, Gtk } = imports.gi;
|
const { Adw, Gio, GLib, GObject, Gtk } = imports.gi;
|
||||||
|
|
||||||
const Gettext = imports.gettext.domain('gnome-shell-extensions');
|
|
||||||
const _ = Gettext.gettext;
|
|
||||||
const N_ = e => e;
|
|
||||||
|
|
||||||
const ExtensionUtils = imports.misc.extensionUtils;
|
const ExtensionUtils = imports.misc.extensionUtils;
|
||||||
|
|
||||||
|
const _ = ExtensionUtils.gettext;
|
||||||
|
|
||||||
const SETTINGS_KEY = 'application-list';
|
const SETTINGS_KEY = 'application-list';
|
||||||
|
|
||||||
const WORKSPACE_MAX = 36; // compiled in limit of mutter
|
const WORKSPACE_MAX = 36; // compiled in limit of mutter
|
||||||
|
|
||||||
const Columns = {
|
const AutoMoveSettingsWidget = GObject.registerClass(
|
||||||
APPINFO: 0,
|
class AutoMoveSettingsWidget extends Adw.PreferencesGroup {
|
||||||
DISPLAY_NAME: 1,
|
_init() {
|
||||||
ICON: 2,
|
super._init({
|
||||||
WORKSPACE: 3,
|
title: _('Workspace Rules'),
|
||||||
ADJUSTMENT: 4,
|
});
|
||||||
};
|
|
||||||
|
|
||||||
const Widget = GObject.registerClass(
|
this._list = new Gtk.ListBox({
|
||||||
class Widget extends Gtk.Grid {
|
selection_mode: Gtk.SelectionMode.NONE,
|
||||||
_init(params) {
|
css_classes: ['boxed-list'],
|
||||||
super._init(params);
|
});
|
||||||
this.set_orientation(Gtk.Orientation.VERTICAL);
|
this.add(this._list);
|
||||||
|
|
||||||
|
this._list.append(new NewRuleRow());
|
||||||
|
|
||||||
|
this._actionGroup = new Gio.SimpleActionGroup();
|
||||||
|
this._list.insert_action_group('rules', this._actionGroup);
|
||||||
|
|
||||||
|
let action;
|
||||||
|
action = new Gio.SimpleAction({ name: 'add' });
|
||||||
|
action.connect('activate', this._onAddActivated.bind(this));
|
||||||
|
this._actionGroup.add_action(action);
|
||||||
|
|
||||||
|
action = new Gio.SimpleAction({
|
||||||
|
name: 'remove',
|
||||||
|
parameter_type: new GLib.VariantType('s'),
|
||||||
|
});
|
||||||
|
action.connect('activate', this._onRemoveActivated.bind(this));
|
||||||
|
this._actionGroup.add_action(action);
|
||||||
|
|
||||||
|
action = new Gio.SimpleAction({ name: 'update' });
|
||||||
|
action.connect('activate', () => {
|
||||||
|
this._settings.set_strv(SETTINGS_KEY,
|
||||||
|
this._getRuleRows().map(row => `${row.id}:${row.value}`));
|
||||||
|
});
|
||||||
|
this._actionGroup.add_action(action);
|
||||||
|
this._updateAction = action;
|
||||||
|
|
||||||
this._settings = ExtensionUtils.getSettings();
|
this._settings = ExtensionUtils.getSettings();
|
||||||
this._settings.connect('changed', this._refresh.bind(this));
|
this._changedId = this._settings.connect('changed',
|
||||||
this._changedPermitted = false;
|
this._sync.bind(this));
|
||||||
|
this._sync();
|
||||||
|
|
||||||
this._store = new Gtk.ListStore();
|
this.connect('destroy', () => this._settings.run_dispose());
|
||||||
this._store.set_column_types([
|
|
||||||
Gio.AppInfo,
|
|
||||||
GObject.TYPE_STRING,
|
|
||||||
Gio.Icon,
|
|
||||||
GObject.TYPE_INT,
|
|
||||||
Gtk.Adjustment,
|
|
||||||
]);
|
|
||||||
|
|
||||||
let scrolled = new Gtk.ScrolledWindow({ shadow_type: Gtk.ShadowType.IN });
|
|
||||||
scrolled.set_policy(Gtk.PolicyType.NEVER, Gtk.PolicyType.AUTOMATIC);
|
|
||||||
this.add(scrolled);
|
|
||||||
|
|
||||||
|
|
||||||
this._treeView = new Gtk.TreeView({
|
|
||||||
model: this._store,
|
|
||||||
hexpand: true,
|
|
||||||
vexpand: true,
|
|
||||||
});
|
|
||||||
this._treeView.get_selection().set_mode(Gtk.SelectionMode.SINGLE);
|
|
||||||
|
|
||||||
let appColumn = new Gtk.TreeViewColumn({
|
|
||||||
expand: true,
|
|
||||||
sort_column_id: Columns.DISPLAY_NAME,
|
|
||||||
title: _('Application'),
|
|
||||||
});
|
|
||||||
let iconRenderer = new Gtk.CellRendererPixbuf();
|
|
||||||
appColumn.pack_start(iconRenderer, false);
|
|
||||||
appColumn.add_attribute(iconRenderer, 'gicon', Columns.ICON);
|
|
||||||
let nameRenderer = new Gtk.CellRendererText();
|
|
||||||
appColumn.pack_start(nameRenderer, true);
|
|
||||||
appColumn.add_attribute(nameRenderer, 'text', Columns.DISPLAY_NAME);
|
|
||||||
this._treeView.append_column(appColumn);
|
|
||||||
|
|
||||||
let workspaceColumn = new Gtk.TreeViewColumn({
|
|
||||||
title: _('Workspace'),
|
|
||||||
sort_column_id: Columns.WORKSPACE,
|
|
||||||
});
|
|
||||||
let workspaceRenderer = new Gtk.CellRendererSpin({ editable: true });
|
|
||||||
workspaceRenderer.connect('edited', this._workspaceEdited.bind(this));
|
|
||||||
workspaceColumn.pack_start(workspaceRenderer, true);
|
|
||||||
workspaceColumn.add_attribute(workspaceRenderer, 'adjustment', Columns.ADJUSTMENT);
|
|
||||||
workspaceColumn.add_attribute(workspaceRenderer, 'text', Columns.WORKSPACE);
|
|
||||||
this._treeView.append_column(workspaceColumn);
|
|
||||||
|
|
||||||
scrolled.add(this._treeView);
|
|
||||||
|
|
||||||
let toolbar = new Gtk.Toolbar({ icon_size: Gtk.IconSize.SMALL_TOOLBAR });
|
|
||||||
toolbar.get_style_context().add_class(Gtk.STYLE_CLASS_INLINE_TOOLBAR);
|
|
||||||
this.add(toolbar);
|
|
||||||
|
|
||||||
let newButton = new Gtk.ToolButton({
|
|
||||||
icon_name: 'bookmark-new-symbolic',
|
|
||||||
label: _('Add Rule'),
|
|
||||||
is_important: true,
|
|
||||||
});
|
|
||||||
newButton.connect('clicked', this._createNew.bind(this));
|
|
||||||
toolbar.add(newButton);
|
|
||||||
|
|
||||||
let delButton = new Gtk.ToolButton({ icon_name: 'edit-delete-symbolic' });
|
|
||||||
delButton.connect('clicked', this._deleteSelected.bind(this));
|
|
||||||
toolbar.add(delButton);
|
|
||||||
|
|
||||||
let selection = this._treeView.get_selection();
|
|
||||||
selection.connect('changed', () => {
|
|
||||||
delButton.sensitive = selection.count_selected_rows() > 0;
|
|
||||||
});
|
|
||||||
delButton.sensitive = selection.count_selected_rows() > 0;
|
|
||||||
|
|
||||||
this._changedPermitted = true;
|
|
||||||
this._refresh();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
_createNew() {
|
_onAddActivated() {
|
||||||
let dialog = new Gtk.Dialog({
|
const dialog = new NewRuleDialog(this.get_root());
|
||||||
title: _('Create new matching rule'),
|
|
||||||
transient_for: this.get_toplevel(),
|
|
||||||
use_header_bar: true,
|
|
||||||
modal: true,
|
|
||||||
});
|
|
||||||
dialog.add_button(Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL);
|
|
||||||
let addButton = dialog.add_button(_('Add'), Gtk.ResponseType.OK);
|
|
||||||
dialog.set_default_response(Gtk.ResponseType.OK);
|
|
||||||
|
|
||||||
let grid = new Gtk.Grid({
|
|
||||||
column_spacing: 10,
|
|
||||||
row_spacing: 15,
|
|
||||||
margin: 10,
|
|
||||||
});
|
|
||||||
dialog._appChooser = new Gtk.AppChooserWidget({ show_all: true });
|
|
||||||
dialog._appChooser.connect('application-selected', (w, appInfo) => {
|
|
||||||
addButton.sensitive = appInfo && this._checkId(appInfo.get_id());
|
|
||||||
});
|
|
||||||
let appInfo = dialog._appChooser.get_app_info();
|
|
||||||
addButton.sensitive = appInfo && this._checkId(appInfo.get_id());
|
|
||||||
|
|
||||||
grid.attach(dialog._appChooser, 0, 0, 2, 1);
|
|
||||||
grid.attach(new Gtk.Label({
|
|
||||||
label: _('Workspace'),
|
|
||||||
halign: Gtk.Align.END,
|
|
||||||
}), 0, 1, 1, 1);
|
|
||||||
let adjustment = new Gtk.Adjustment({
|
|
||||||
lower: 1,
|
|
||||||
upper: WORKSPACE_MAX,
|
|
||||||
step_increment: 1,
|
|
||||||
});
|
|
||||||
dialog._spin = new Gtk.SpinButton({
|
|
||||||
adjustment,
|
|
||||||
snap_to_ticks: true,
|
|
||||||
});
|
|
||||||
dialog._spin.set_value(1);
|
|
||||||
grid.attach(dialog._spin, 1, 1, 1, 1);
|
|
||||||
dialog.get_content_area().add(grid);
|
|
||||||
|
|
||||||
dialog.connect('response', (dlg, id) => {
|
dialog.connect('response', (dlg, id) => {
|
||||||
if (id !== Gtk.ResponseType.OK) {
|
const appInfo = id === Gtk.ResponseType.OK
|
||||||
dialog.destroy();
|
? dialog.get_widget().get_app_info() : null;
|
||||||
return;
|
if (appInfo) {
|
||||||
|
this._settings.set_strv(SETTINGS_KEY, [
|
||||||
|
...this._settings.get_strv(SETTINGS_KEY),
|
||||||
|
`${appInfo.get_id()}:1`,
|
||||||
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
appInfo = dialog._appChooser.get_app_info();
|
|
||||||
if (!appInfo)
|
|
||||||
return;
|
|
||||||
let index = Math.floor(dialog._spin.value);
|
|
||||||
if (isNaN(index) || index < 0)
|
|
||||||
index = 1;
|
|
||||||
|
|
||||||
this._changedPermitted = false;
|
|
||||||
this._appendItem(appInfo.get_id(), index);
|
|
||||||
this._changedPermitted = true;
|
|
||||||
|
|
||||||
this._appendRow(appInfo, index);
|
|
||||||
|
|
||||||
dialog.destroy();
|
dialog.destroy();
|
||||||
});
|
});
|
||||||
dialog.show_all();
|
dialog.show();
|
||||||
}
|
}
|
||||||
|
|
||||||
_deleteSelected() {
|
_onRemoveActivated(action, param) {
|
||||||
let [any, model_, iter] = this._treeView.get_selection().get_selected();
|
const removed = param.deepUnpack();
|
||||||
|
this._settings.set_strv(SETTINGS_KEY,
|
||||||
if (any) {
|
this._settings.get_strv(SETTINGS_KEY).filter(entry => {
|
||||||
let appInfo = this._store.get_value(iter, Columns.APPINFO);
|
const [id] = entry.split(':');
|
||||||
|
return id !== removed;
|
||||||
this._changedPermitted = false;
|
}));
|
||||||
this._removeItem(appInfo.get_id());
|
|
||||||
this._changedPermitted = true;
|
|
||||||
this._store.remove(iter);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
_workspaceEdited(renderer, pathString, text) {
|
_getRuleRows() {
|
||||||
let index = parseInt(text);
|
return [...this._list].filter(row => !!row.id);
|
||||||
if (isNaN(index) || index < 0)
|
|
||||||
index = 1;
|
|
||||||
let path = Gtk.TreePath.new_from_string(pathString);
|
|
||||||
let [model_, iter] = this._store.get_iter(path);
|
|
||||||
let appInfo = this._store.get_value(iter, Columns.APPINFO);
|
|
||||||
|
|
||||||
this._changedPermitted = false;
|
|
||||||
this._changeItem(appInfo.get_id(), index);
|
|
||||||
this._store.set_value(iter, Columns.WORKSPACE, index);
|
|
||||||
this._changedPermitted = true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
_refresh() {
|
_sync() {
|
||||||
if (!this._changedPermitted)
|
const oldRules = this._getRuleRows();
|
||||||
// Ignore this notification, model is being modified outside
|
const newRules = this._settings.get_strv(SETTINGS_KEY).map(entry => {
|
||||||
return;
|
const [id, value] = entry.split(':');
|
||||||
|
return { id, value };
|
||||||
this._store.clear();
|
|
||||||
|
|
||||||
let currentItems = this._settings.get_strv(SETTINGS_KEY);
|
|
||||||
let validItems = [];
|
|
||||||
for (let i = 0; i < currentItems.length; i++) {
|
|
||||||
let [id, index] = currentItems[i].split(':');
|
|
||||||
let appInfo = Gio.DesktopAppInfo.new(id);
|
|
||||||
if (!appInfo)
|
|
||||||
continue;
|
|
||||||
validItems.push(currentItems[i]);
|
|
||||||
|
|
||||||
this._appendRow(appInfo, parseInt(index));
|
|
||||||
}
|
|
||||||
|
|
||||||
if (validItems.length !== currentItems.length) // some items were filtered out
|
|
||||||
this._settings.set_strv(SETTINGS_KEY, validItems);
|
|
||||||
}
|
|
||||||
|
|
||||||
_appendRow(appInfo, workspace) {
|
|
||||||
let iter = this._store.append();
|
|
||||||
let icon = appInfo.get_icon();
|
|
||||||
let displayName = appInfo.get_display_name();
|
|
||||||
let adj = new Gtk.Adjustment({
|
|
||||||
lower: 1,
|
|
||||||
upper: WORKSPACE_MAX,
|
|
||||||
step_increment: 1,
|
|
||||||
value: workspace,
|
|
||||||
});
|
});
|
||||||
let { APPINFO, ICON, DISPLAY_NAME, WORKSPACE, ADJUSTMENT } = Columns;
|
|
||||||
this._store.set(iter,
|
|
||||||
[APPINFO, ICON, DISPLAY_NAME, WORKSPACE, ADJUSTMENT],
|
|
||||||
[appInfo, icon, displayName, workspace, adj]);
|
|
||||||
}
|
|
||||||
|
|
||||||
_checkId(id) {
|
this._settings.block_signal_handler(this._changedId);
|
||||||
let items = this._settings.get_strv(SETTINGS_KEY);
|
this._updateAction.enabled = false;
|
||||||
return !items.some(i => i.startsWith(`${id}:`));
|
|
||||||
}
|
|
||||||
|
|
||||||
_appendItem(id, workspace) {
|
newRules.forEach(({ id, value }, index) => {
|
||||||
let currentItems = this._settings.get_strv(SETTINGS_KEY);
|
const row = oldRules.find(r => r.id === id);
|
||||||
currentItems.push(`${id}:${workspace}`);
|
const appInfo = row
|
||||||
this._settings.set_strv(SETTINGS_KEY, currentItems);
|
? null : Gio.DesktopAppInfo.new(id);
|
||||||
}
|
|
||||||
|
|
||||||
_removeItem(id) {
|
if (row)
|
||||||
let currentItems = this._settings.get_strv(SETTINGS_KEY);
|
row.set({ value });
|
||||||
let index = currentItems.map(el => el.split(':')[0]).indexOf(id);
|
else if (appInfo)
|
||||||
|
this._list.insert(new RuleRow(appInfo, value), index);
|
||||||
|
});
|
||||||
|
|
||||||
if (index < 0)
|
const removed = oldRules.filter(
|
||||||
return;
|
({ id }) => !newRules.find(r => r.id === id));
|
||||||
currentItems.splice(index, 1);
|
removed.forEach(r => this._list.remove(r));
|
||||||
this._settings.set_strv(SETTINGS_KEY, currentItems);
|
|
||||||
}
|
|
||||||
|
|
||||||
_changeItem(id, workspace) {
|
this._settings.unblock_signal_handler(this._changedId);
|
||||||
let currentItems = this._settings.get_strv(SETTINGS_KEY);
|
this._updateAction.enabled = true;
|
||||||
let index = currentItems.map(el => el.split(':')[0]).indexOf(id);
|
|
||||||
|
|
||||||
if (index < 0)
|
|
||||||
currentItems.push(`${id}:${workspace}`);
|
|
||||||
else
|
|
||||||
currentItems[index] = `${id}:${workspace}`;
|
|
||||||
this._settings.set_strv(SETTINGS_KEY, currentItems);
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
const WorkspaceSelector = GObject.registerClass({
|
||||||
|
Properties: {
|
||||||
|
'number': GObject.ParamSpec.uint(
|
||||||
|
'number', 'number', 'number',
|
||||||
|
GObject.ParamFlags.READWRITE,
|
||||||
|
1, WORKSPACE_MAX, 1),
|
||||||
|
},
|
||||||
|
}, class WorkspaceSelector extends Gtk.Widget {
|
||||||
|
static _classInit(klass) {
|
||||||
|
super._classInit(klass);
|
||||||
|
|
||||||
|
klass.set_layout_manager_type(Gtk.BoxLayout);
|
||||||
|
|
||||||
|
return klass;
|
||||||
|
}
|
||||||
|
|
||||||
|
_init() {
|
||||||
|
super._init();
|
||||||
|
|
||||||
|
this.layout_manager.spacing = 6;
|
||||||
|
|
||||||
|
const label = new Gtk.Label({
|
||||||
|
xalign: 1,
|
||||||
|
margin_end: 6,
|
||||||
|
});
|
||||||
|
this.bind_property('number',
|
||||||
|
label, 'label',
|
||||||
|
GObject.BindingFlags.SYNC_CREATE);
|
||||||
|
label.set_parent(this);
|
||||||
|
|
||||||
|
const buttonProps = {
|
||||||
|
css_classes: ['circular'],
|
||||||
|
valign: Gtk.Align.CENTER,
|
||||||
|
};
|
||||||
|
|
||||||
|
this._decButton = new Gtk.Button({
|
||||||
|
icon_name: 'list-remove-symbolic',
|
||||||
|
...buttonProps,
|
||||||
|
});
|
||||||
|
this._decButton.set_parent(this);
|
||||||
|
this._decButton.connect('clicked', () => this.number--);
|
||||||
|
|
||||||
|
this._incButton = new Gtk.Button({
|
||||||
|
icon_name: 'list-add-symbolic',
|
||||||
|
...buttonProps,
|
||||||
|
});
|
||||||
|
this._incButton.set_parent(this);
|
||||||
|
this._incButton.connect('clicked', () => this.number++);
|
||||||
|
|
||||||
|
this.connect('notify::number', () => this._syncButtons());
|
||||||
|
this._syncButtons();
|
||||||
|
}
|
||||||
|
|
||||||
|
_syncButtons() {
|
||||||
|
this._decButton.sensitive = this.number > 1;
|
||||||
|
this._incButton.sensitive = this.number < WORKSPACE_MAX;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
const RuleRow = GObject.registerClass({
|
||||||
|
Properties: {
|
||||||
|
'id': GObject.ParamSpec.string(
|
||||||
|
'id', 'id', 'id',
|
||||||
|
GObject.ParamFlags.READABLE,
|
||||||
|
''),
|
||||||
|
'value': GObject.ParamSpec.uint(
|
||||||
|
'value', 'value', 'value',
|
||||||
|
GObject.ParamFlags.READWRITE,
|
||||||
|
1, WORKSPACE_MAX, 1),
|
||||||
|
},
|
||||||
|
}, class RuleRow extends Adw.ActionRow {
|
||||||
|
_init(appInfo, value) {
|
||||||
|
super._init({
|
||||||
|
activatable: false,
|
||||||
|
title: appInfo.get_display_name(),
|
||||||
|
value,
|
||||||
|
});
|
||||||
|
this._appInfo = appInfo;
|
||||||
|
|
||||||
|
const icon = new Gtk.Image({
|
||||||
|
css_classes: ['icon-dropshadow'],
|
||||||
|
gicon: appInfo.get_icon(),
|
||||||
|
pixel_size: 32,
|
||||||
|
});
|
||||||
|
this.add_prefix(icon);
|
||||||
|
|
||||||
|
const wsButton = new WorkspaceSelector();
|
||||||
|
this.bind_property('value',
|
||||||
|
wsButton, 'number',
|
||||||
|
GObject.BindingFlags.SYNC_CREATE | GObject.BindingFlags.BIDIRECTIONAL);
|
||||||
|
this.add_suffix(wsButton);
|
||||||
|
|
||||||
|
const button = new Gtk.Button({
|
||||||
|
action_name: 'rules.remove',
|
||||||
|
action_target: new GLib.Variant('s', this.id),
|
||||||
|
icon_name: 'edit-delete-symbolic',
|
||||||
|
has_frame: false,
|
||||||
|
valign: Gtk.Align.CENTER,
|
||||||
|
});
|
||||||
|
this.add_suffix(button);
|
||||||
|
|
||||||
|
this.connect('notify::value',
|
||||||
|
() => this.activate_action('rules.update', null));
|
||||||
|
}
|
||||||
|
|
||||||
|
get id() {
|
||||||
|
return this._appInfo.get_id();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
const NewRuleRow = GObject.registerClass(
|
||||||
|
class NewRuleRow extends Gtk.ListBoxRow {
|
||||||
|
_init() {
|
||||||
|
super._init({
|
||||||
|
action_name: 'rules.add',
|
||||||
|
child: new Gtk.Image({
|
||||||
|
icon_name: 'list-add-symbolic',
|
||||||
|
pixel_size: 16,
|
||||||
|
margin_top: 12,
|
||||||
|
margin_bottom: 12,
|
||||||
|
margin_start: 12,
|
||||||
|
margin_end: 12,
|
||||||
|
}),
|
||||||
|
});
|
||||||
|
this.update_property(
|
||||||
|
[Gtk.AccessibleProperty.LABEL], [_('Add Rule')]);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
const NewRuleDialog = GObject.registerClass(
|
||||||
|
class NewRuleDialog extends Gtk.AppChooserDialog {
|
||||||
|
_init(parent) {
|
||||||
|
super._init({
|
||||||
|
transient_for: parent,
|
||||||
|
modal: true,
|
||||||
|
});
|
||||||
|
|
||||||
|
this._settings = ExtensionUtils.getSettings();
|
||||||
|
|
||||||
|
this.get_widget().set({
|
||||||
|
show_all: true,
|
||||||
|
show_other: true, // hide more button
|
||||||
|
});
|
||||||
|
|
||||||
|
this.get_widget().connect('application-selected',
|
||||||
|
this._updateSensitivity.bind(this));
|
||||||
|
this._updateSensitivity();
|
||||||
|
}
|
||||||
|
|
||||||
|
_updateSensitivity() {
|
||||||
|
const rules = this._settings.get_strv(SETTINGS_KEY);
|
||||||
|
const appInfo = this.get_widget().get_app_info();
|
||||||
|
this.set_response_sensitive(Gtk.ResponseType.OK,
|
||||||
|
appInfo && !rules.some(i => i.startsWith(appInfo.get_id())));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
/** */
|
||||||
function init() {
|
function init() {
|
||||||
ExtensionUtils.initTranslations();
|
ExtensionUtils.initTranslations();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @returns {Gtk.Widget} - the prefs widget
|
||||||
|
*/
|
||||||
function buildPrefsWidget() {
|
function buildPrefsWidget() {
|
||||||
let widget = new Widget({ margin: 12 });
|
return new AutoMoveSettingsWidget();
|
||||||
widget.show_all();
|
|
||||||
|
|
||||||
return widget;
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,9 +1,6 @@
|
|||||||
/* exported init enable disable */
|
/* exported init enable disable */
|
||||||
// Drive menu extension
|
// Drive menu extension
|
||||||
const { Gio, GObject, Shell, St } = imports.gi;
|
const { Clutter, Gio, GObject, Shell, St } = imports.gi;
|
||||||
|
|
||||||
const Gettext = imports.gettext.domain('gnome-shell-extensions');
|
|
||||||
const _ = Gettext.gettext;
|
|
||||||
|
|
||||||
const ExtensionUtils = imports.misc.extensionUtils;
|
const ExtensionUtils = imports.misc.extensionUtils;
|
||||||
const Main = imports.ui.main;
|
const Main = imports.ui.main;
|
||||||
@@ -11,12 +8,22 @@ const PanelMenu = imports.ui.panelMenu;
|
|||||||
const PopupMenu = imports.ui.popupMenu;
|
const PopupMenu = imports.ui.popupMenu;
|
||||||
const ShellMountOperation = imports.ui.shellMountOperation;
|
const ShellMountOperation = imports.ui.shellMountOperation;
|
||||||
|
|
||||||
|
const _ = ExtensionUtils.gettext;
|
||||||
|
|
||||||
|
Gio._promisify(Gio.File.prototype, 'query_filesystem_info_async');
|
||||||
|
|
||||||
var MountMenuItem = GObject.registerClass(
|
var MountMenuItem = GObject.registerClass(
|
||||||
class MountMenuItem extends PopupMenu.PopupBaseMenuItem {
|
class MountMenuItem extends PopupMenu.PopupBaseMenuItem {
|
||||||
_init(mount) {
|
_init(mount) {
|
||||||
super._init();
|
super._init({
|
||||||
|
style_class: 'drive-menu-item',
|
||||||
|
});
|
||||||
|
|
||||||
this.label = new St.Label({ text: mount.get_name() });
|
this.label = new St.Label({
|
||||||
|
text: mount.get_name(),
|
||||||
|
x_expand: true,
|
||||||
|
y_align: Clutter.ActorAlign.CENTER,
|
||||||
|
});
|
||||||
this.add_child(this.label);
|
this.add_child(this.label);
|
||||||
this.label_actor = this.label;
|
this.label_actor = this.label;
|
||||||
|
|
||||||
@@ -28,10 +35,15 @@ class MountMenuItem extends PopupMenu.PopupBaseMenuItem {
|
|||||||
icon_name: 'media-eject-symbolic',
|
icon_name: 'media-eject-symbolic',
|
||||||
style_class: 'popup-menu-icon',
|
style_class: 'popup-menu-icon',
|
||||||
});
|
});
|
||||||
let ejectButton = new St.Button({ child: ejectIcon });
|
let ejectButton = new St.Button({
|
||||||
|
child: ejectIcon,
|
||||||
|
style_class: 'button',
|
||||||
|
});
|
||||||
ejectButton.connect('clicked', this._eject.bind(this));
|
ejectButton.connect('clicked', this._eject.bind(this));
|
||||||
this.add(ejectButton);
|
this.add(ejectButton);
|
||||||
|
|
||||||
|
this.hide();
|
||||||
|
|
||||||
this._changedId = mount.connect('changed', this._syncVisibility.bind(this));
|
this._changedId = mount.connect('changed', this._syncVisibility.bind(this));
|
||||||
this._syncVisibility();
|
this._syncVisibility();
|
||||||
}
|
}
|
||||||
@@ -45,7 +57,7 @@ class MountMenuItem extends PopupMenu.PopupBaseMenuItem {
|
|||||||
super.destroy();
|
super.destroy();
|
||||||
}
|
}
|
||||||
|
|
||||||
_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;
|
||||||
if (this.mount.is_shadowed())
|
if (this.mount.is_shadowed())
|
||||||
@@ -53,17 +65,25 @@ class MountMenuItem extends PopupMenu.PopupBaseMenuItem {
|
|||||||
|
|
||||||
let volume = this.mount.get_volume();
|
let volume = this.mount.get_volume();
|
||||||
|
|
||||||
if (!volume) {
|
if (volume)
|
||||||
// probably a GDaemonMount, could be network or
|
return volume.get_identifier('class') !== 'network';
|
||||||
// local, but we can't tell; assume it's local for now
|
|
||||||
return true;
|
const root = this.mount.get_root();
|
||||||
|
|
||||||
|
try {
|
||||||
|
const attr = Gio.FILE_ATTRIBUTE_FILESYSTEM_REMOTE;
|
||||||
|
const info = await root.query_filesystem_info_async(attr, null);
|
||||||
|
return !info.get_attribute_boolean(attr);
|
||||||
|
} catch (e) {
|
||||||
|
log(`Failed to query filesystem: ${e.message}`);
|
||||||
}
|
}
|
||||||
|
|
||||||
return volume.get_identifier('class') !== 'network';
|
// Hack, fall back to looking at GType
|
||||||
|
return Gio._LocalFilePrototype.isPrototypeOf(root);
|
||||||
}
|
}
|
||||||
|
|
||||||
_syncVisibility() {
|
async _syncVisibility() {
|
||||||
this.visible = this._isInteresting();
|
this.visible = await this._isInteresting();
|
||||||
}
|
}
|
||||||
|
|
||||||
_eject() {
|
_eject() {
|
||||||
@@ -118,21 +138,16 @@ class DriveMenu extends PanelMenu.Button {
|
|||||||
_init() {
|
_init() {
|
||||||
super._init(0.0, _('Removable devices'));
|
super._init(0.0, _('Removable devices'));
|
||||||
|
|
||||||
let hbox = new St.BoxLayout({ style_class: 'panel-status-menu-box' });
|
|
||||||
let icon = new St.Icon({
|
let icon = new St.Icon({
|
||||||
icon_name: 'media-eject-symbolic',
|
icon_name: 'media-eject-symbolic',
|
||||||
style_class: 'system-status-icon',
|
style_class: 'system-status-icon',
|
||||||
});
|
});
|
||||||
|
|
||||||
hbox.add_child(icon);
|
this.add_child(icon);
|
||||||
hbox.add_child(PopupMenu.arrowIcon(St.Side.BOTTOM));
|
|
||||||
this.add_child(hbox);
|
|
||||||
|
|
||||||
this._monitor = Gio.VolumeMonitor.get();
|
this._monitor = Gio.VolumeMonitor.get();
|
||||||
this._addedId = this._monitor.connect('mount-added', (monitor, mount) => {
|
this._addedId = this._monitor.connect('mount-added',
|
||||||
this._addMount(mount);
|
(monitor, mount) => this._addMount(mount));
|
||||||
this._updateMenuVisibility();
|
|
||||||
});
|
|
||||||
this._removedId = this._monitor.connect('mount-removed', (monitor, mount) => {
|
this._removedId = this._monitor.connect('mount-removed', (monitor, mount) => {
|
||||||
this._removeMount(mount);
|
this._removeMount(mount);
|
||||||
this._updateMenuVisibility();
|
this._updateMenuVisibility();
|
||||||
@@ -163,6 +178,8 @@ class DriveMenu extends PanelMenu.Button {
|
|||||||
let item = new MountMenuItem(mount);
|
let item = new MountMenuItem(mount);
|
||||||
this._mounts.unshift(item);
|
this._mounts.unshift(item);
|
||||||
this.menu.addMenuItem(item, 0);
|
this.menu.addMenuItem(item, 0);
|
||||||
|
|
||||||
|
item.connect('notify::visible', () => this._updateMenuVisibility());
|
||||||
}
|
}
|
||||||
|
|
||||||
_removeMount(mount) {
|
_removeMount(mount) {
|
||||||
@@ -189,17 +206,20 @@ class DriveMenu extends PanelMenu.Button {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
/** */
|
||||||
function init() {
|
function init() {
|
||||||
ExtensionUtils.initTranslations();
|
ExtensionUtils.initTranslations();
|
||||||
}
|
}
|
||||||
|
|
||||||
let _indicator;
|
let _indicator;
|
||||||
|
|
||||||
|
/** */
|
||||||
function enable() {
|
function enable() {
|
||||||
_indicator = new DriveMenu();
|
_indicator = new DriveMenu();
|
||||||
Main.panel.addToStatusArea('drive-menu', _indicator);
|
Main.panel.addToStatusArea('drive-menu', _indicator);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** */
|
||||||
function disable() {
|
function disable() {
|
||||||
_indicator.destroy();
|
_indicator.destroy();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1 +1,7 @@
|
|||||||
/* This extensions requires no custom styling */
|
.drive-menu-item { spacing: 12px; }
|
||||||
|
|
||||||
|
.drive-menu-item .button {
|
||||||
|
border-radius: 99px;
|
||||||
|
padding: 3px;
|
||||||
|
min-height: auto;
|
||||||
|
}
|
||||||
|
|||||||
@@ -1,38 +0,0 @@
|
|||||||
/* exported init */
|
|
||||||
const { Meta } = imports.gi;
|
|
||||||
|
|
||||||
const { ThumbnailsBox } = imports.ui.workspaceThumbnail;
|
|
||||||
|
|
||||||
class Extension {
|
|
||||||
constructor() {
|
|
||||||
this._origUpdateSwitcherVisibility =
|
|
||||||
ThumbnailsBox.prototype._updateSwitcherVisibility;
|
|
||||||
}
|
|
||||||
|
|
||||||
enable() {
|
|
||||||
global.workspace_manager.override_workspace_layout(
|
|
||||||
Meta.DisplayCorner.TOPLEFT,
|
|
||||||
false,
|
|
||||||
1,
|
|
||||||
-1);
|
|
||||||
|
|
||||||
ThumbnailsBox.prototype._updateSwitcherVisibility = function () {
|
|
||||||
this.hide();
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
disable() {
|
|
||||||
global.workspace_manager.override_workspace_layout(
|
|
||||||
Meta.DisplayCorner.TOPLEFT,
|
|
||||||
false,
|
|
||||||
-1,
|
|
||||||
1);
|
|
||||||
|
|
||||||
ThumbnailsBox.prototype._updateSwitcherVisibility =
|
|
||||||
this._origUpdateSwitcherVisibility;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function init() {
|
|
||||||
return new Extension();
|
|
||||||
}
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
extension_data += configure_file(
|
|
||||||
input: metadata_name + '.in',
|
|
||||||
output: metadata_name,
|
|
||||||
configuration: metadata_conf
|
|
||||||
)
|
|
||||||
@@ -1,10 +0,0 @@
|
|||||||
{
|
|
||||||
"extension-id": "@extension_id@",
|
|
||||||
"uuid": "@uuid@",
|
|
||||||
"settings-schema": "@gschemaname@",
|
|
||||||
"gettext-domain": "@gettext_domain@",
|
|
||||||
"name": "Horizontal workspaces",
|
|
||||||
"description": "Use a horizontal workspace layout",
|
|
||||||
"shell-version": [ "@shell_current@" ],
|
|
||||||
"url": "@url@"
|
|
||||||
}
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
/* This extensions requires no special styling */
|
|
||||||
@@ -3,6 +3,7 @@ const AppDisplay = imports.ui.appDisplay;
|
|||||||
|
|
||||||
let _activateOriginal = null;
|
let _activateOriginal = null;
|
||||||
|
|
||||||
|
/** */
|
||||||
function enable() {
|
function enable() {
|
||||||
_activateOriginal = AppDisplay.AppIcon.prototype.activate;
|
_activateOriginal = AppDisplay.AppIcon.prototype.activate;
|
||||||
AppDisplay.AppIcon.prototype.activate = function () {
|
AppDisplay.AppIcon.prototype.activate = function () {
|
||||||
@@ -10,6 +11,7 @@ function enable() {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** */
|
||||||
function disable() {
|
function disable() {
|
||||||
AppDisplay.AppIcon.prototype.activate = _activateOriginal;
|
AppDisplay.AppIcon.prototype.activate = _activateOriginal;
|
||||||
}
|
}
|
||||||
|
|||||||
+4
-20
@@ -3,7 +3,7 @@ js_sources = []
|
|||||||
|
|
||||||
metadata_name = 'metadata.json'
|
metadata_name = 'metadata.json'
|
||||||
|
|
||||||
foreach e : all_extensions
|
foreach e : enabled_extensions
|
||||||
uuid = e + uuid_suffix
|
uuid = e + uuid_suffix
|
||||||
|
|
||||||
metadata_conf = configuration_data()
|
metadata_conf = configuration_data()
|
||||||
@@ -19,27 +19,11 @@ foreach e : all_extensions
|
|||||||
|
|
||||||
subdir(e)
|
subdir(e)
|
||||||
|
|
||||||
js_sources += extension_sources
|
install_data (extension_sources + extension_data,
|
||||||
|
install_dir: join_paths(extensiondir, uuid)
|
||||||
if (enabled_extensions.contains(e))
|
)
|
||||||
install_data (extension_sources + extension_data,
|
|
||||||
install_dir: join_paths(extensiondir, uuid)
|
|
||||||
)
|
|
||||||
endif
|
|
||||||
endforeach
|
endforeach
|
||||||
|
|
||||||
install_data (extension_schemas,
|
install_data (extension_schemas,
|
||||||
install_dir: schemadir
|
install_dir: schemadir
|
||||||
)
|
)
|
||||||
|
|
||||||
foreach js_source : js_sources
|
|
||||||
if (js60.found())
|
|
||||||
path_array = '@0@'.format(js_source).split('/')
|
|
||||||
name = join_paths(path_array[-2], path_array[-1])
|
|
||||||
|
|
||||||
test('Checking syntax of ' + name, js60,
|
|
||||||
args: ['-s', '-c', js_source],
|
|
||||||
workdir: meson.current_source_dir()
|
|
||||||
)
|
|
||||||
endif
|
|
||||||
endforeach
|
|
||||||
|
|||||||
@@ -1,6 +1,10 @@
|
|||||||
// -*- mode: js2; indent-tabs-mode: nil; js2-basic-offset: 4 -*-
|
// -*- mode: js2; indent-tabs-mode: nil; js2-basic-offset: 4 -*-
|
||||||
/* exported enable disable */
|
/* exported enable disable */
|
||||||
|
const { Clutter } = imports.gi;
|
||||||
|
|
||||||
const ExtensionUtils = imports.misc.extensionUtils;
|
const ExtensionUtils = imports.misc.extensionUtils;
|
||||||
|
const Main = imports.ui.main;
|
||||||
|
const { WindowPreview } = imports.ui.windowPreview;
|
||||||
const Workspace = imports.ui.workspace;
|
const Workspace = imports.ui.workspace;
|
||||||
|
|
||||||
// testing settings for natural window placement strategy:
|
// testing settings for natural window placement strategy:
|
||||||
@@ -63,13 +67,15 @@ class Rect {
|
|||||||
}
|
}
|
||||||
|
|
||||||
class NaturalLayoutStrategy extends Workspace.LayoutStrategy {
|
class NaturalLayoutStrategy extends Workspace.LayoutStrategy {
|
||||||
constructor(settings) {
|
constructor(params, settings) {
|
||||||
super();
|
super(params);
|
||||||
this._settings = settings;
|
this._settings = settings;
|
||||||
}
|
}
|
||||||
|
|
||||||
computeLayout(windows, layout) {
|
computeLayout(windows, _params) {
|
||||||
layout.windows = windows;
|
return {
|
||||||
|
windows,
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -100,7 +106,6 @@ class NaturalLayoutStrategy extends Workspace.LayoutStrategy {
|
|||||||
direction++;
|
direction++;
|
||||||
if (direction === 4)
|
if (direction === 4)
|
||||||
direction = 0;
|
direction = 0;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
let loopCounter = 0;
|
let loopCounter = 0;
|
||||||
@@ -221,8 +226,10 @@ class NaturalLayoutStrategy extends Workspace.LayoutStrategy {
|
|||||||
for (let i = 0; i < rects.length; i++) {
|
for (let i = 0; i < rects.length; i++) {
|
||||||
rects[i].x = rects[i].x * scale + areaRect.x;
|
rects[i].x = rects[i].x * scale + areaRect.x;
|
||||||
rects[i].y = rects[i].y * scale + areaRect.y;
|
rects[i].y = rects[i].y * scale + areaRect.y;
|
||||||
|
rects[i].width *= scale;
|
||||||
|
rects[i].height *= scale;
|
||||||
|
|
||||||
slots.push([rects[i].x, rects[i].y, scale, clones[i]]);
|
slots.push([rects[i].x, rects[i].y, rects[i].width, rects[i].height, clones[i]]);
|
||||||
}
|
}
|
||||||
|
|
||||||
return slots;
|
return slots;
|
||||||
@@ -231,37 +238,57 @@ class NaturalLayoutStrategy extends Workspace.LayoutStrategy {
|
|||||||
|
|
||||||
let winInjections, workspaceInjections;
|
let winInjections, workspaceInjections;
|
||||||
|
|
||||||
|
/** */
|
||||||
function resetState() {
|
function resetState() {
|
||||||
winInjections = { };
|
winInjections = { };
|
||||||
workspaceInjections = { };
|
workspaceInjections = { };
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** */
|
||||||
function enable() {
|
function enable() {
|
||||||
resetState();
|
resetState();
|
||||||
|
|
||||||
let settings = ExtensionUtils.getSettings();
|
let settings = ExtensionUtils.getSettings();
|
||||||
|
|
||||||
workspaceInjections['_getBestLayout'] = Workspace.Workspace.prototype._getBestLayout;
|
workspaceInjections['_createBestLayout'] = Workspace.WorkspaceLayout.prototype._createBestLayout;
|
||||||
Workspace.Workspace.prototype._getBestLayout = function (windows) {
|
Workspace.WorkspaceLayout.prototype._createBestLayout = function (_area) {
|
||||||
let strategy = new NaturalLayoutStrategy(settings);
|
this._layoutStrategy = new NaturalLayoutStrategy({
|
||||||
let layout = { strategy };
|
monitor: Main.layoutManager.monitors[this._monitorIndex],
|
||||||
strategy.computeLayout(windows, layout);
|
}, settings);
|
||||||
|
return this._layoutStrategy.computeLayout(this._sortedWindows);
|
||||||
return layout;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
// position window titles on top of windows in overlay
|
// position window titles on top of windows in overlay
|
||||||
winInjections['relayout'] = Workspace.WindowOverlay.prototype.relayout;
|
winInjections['_init'] = WindowPreview.prototype._init;
|
||||||
Workspace.WindowOverlay.prototype.relayout = function (animate) {
|
WindowPreview.prototype._init = function (...args) {
|
||||||
if (settings.get_boolean('window-captions-on-top')) {
|
winInjections['_init'].call(this, ...args);
|
||||||
let [, , , cloneHeight] = this._windowClone.slot;
|
|
||||||
this.title.translation_y = -cloneHeight;
|
|
||||||
}
|
|
||||||
|
|
||||||
winInjections['relayout'].call(this, animate);
|
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);
|
||||||
|
alignConstraint.factor = 0;
|
||||||
|
|
||||||
|
const bindConstraint = this._title.get_constraints().find(
|
||||||
|
c => c.coordinate && c.coordinate === Clutter.BindCoordinate.Y);
|
||||||
|
bindConstraint.offset = 0;
|
||||||
|
};
|
||||||
|
winInjections['_adjustOverlayOffsets'] =
|
||||||
|
WindowPreview.prototype._adjustOverlayOffsets;
|
||||||
|
WindowPreview.prototype._adjustOverlayOffsets = function (...args) {
|
||||||
|
winInjections['_adjustOverlayOffsets'].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
|
||||||
|
* @param {string} name - the @injection key that should be removed
|
||||||
|
*/
|
||||||
function removeInjection(object, injection, name) {
|
function removeInjection(object, injection, name) {
|
||||||
if (injection[name] === undefined)
|
if (injection[name] === undefined)
|
||||||
delete object[name];
|
delete object[name];
|
||||||
@@ -269,13 +296,14 @@ function removeInjection(object, injection, name) {
|
|||||||
object[name] = injection[name];
|
object[name] = injection[name];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** */
|
||||||
function disable() {
|
function disable() {
|
||||||
var i;
|
var i;
|
||||||
|
|
||||||
for (i in workspaceInjections)
|
for (i in workspaceInjections)
|
||||||
removeInjection(Workspace.Workspace.prototype, workspaceInjections, i);
|
removeInjection(Workspace.WorkspaceLayout.prototype, workspaceInjections, i);
|
||||||
for (i in winInjections)
|
for (i in winInjections)
|
||||||
removeInjection(Workspace.WindowOverlay.prototype, winInjections, i);
|
removeInjection(WindowPreview.prototype, winInjections, i);
|
||||||
|
|
||||||
global.stage.queue_relayout();
|
global.stage.queue_relayout();
|
||||||
resetState();
|
resetState();
|
||||||
|
|||||||
@@ -1,9 +1 @@
|
|||||||
.window-caption {
|
/* This extensions requires no special styling */
|
||||||
-shell-caption-spacing: 13px; /* current caption height is 26px => set it to half of it. TODO: better solution needed */
|
|
||||||
}
|
|
||||||
|
|
||||||
.window-picker {
|
|
||||||
-horizontal-spacing: 32px;
|
|
||||||
-vertical-spacing: 32px;
|
|
||||||
padding: 64px 32px;
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -8,19 +8,20 @@ const Main = imports.ui.main;
|
|||||||
const PanelMenu = imports.ui.panelMenu;
|
const PanelMenu = imports.ui.panelMenu;
|
||||||
const PopupMenu = imports.ui.popupMenu;
|
const PopupMenu = imports.ui.popupMenu;
|
||||||
|
|
||||||
const Gettext = imports.gettext.domain('gnome-shell-extensions');
|
|
||||||
const _ = Gettext.gettext;
|
|
||||||
const N_ = x => x;
|
|
||||||
|
|
||||||
const Me = ExtensionUtils.getCurrentExtension();
|
const Me = ExtensionUtils.getCurrentExtension();
|
||||||
const PlaceDisplay = Me.imports.placeDisplay;
|
const PlaceDisplay = Me.imports.placeDisplay;
|
||||||
|
|
||||||
|
const _ = ExtensionUtils.gettext;
|
||||||
|
const N_ = x => x;
|
||||||
|
|
||||||
const PLACE_ICON_SIZE = 16;
|
const PLACE_ICON_SIZE = 16;
|
||||||
|
|
||||||
var PlaceMenuItem = GObject.registerClass(
|
var PlaceMenuItem = GObject.registerClass(
|
||||||
class PlaceMenuItem extends PopupMenu.PopupBaseMenuItem {
|
class PlaceMenuItem extends PopupMenu.PopupBaseMenuItem {
|
||||||
_init(info) {
|
_init(info) {
|
||||||
super._init();
|
super._init({
|
||||||
|
style_class: 'place-menu-item',
|
||||||
|
});
|
||||||
this._info = info;
|
this._info = info;
|
||||||
|
|
||||||
this._icon = new St.Icon({
|
this._icon = new St.Icon({
|
||||||
@@ -29,7 +30,11 @@ class PlaceMenuItem extends PopupMenu.PopupBaseMenuItem {
|
|||||||
});
|
});
|
||||||
this.add_child(this._icon);
|
this.add_child(this._icon);
|
||||||
|
|
||||||
this._label = new St.Label({ text: info.name, x_expand: true });
|
this._label = new St.Label({
|
||||||
|
text: info.name,
|
||||||
|
x_expand: true,
|
||||||
|
y_align: Clutter.ActorAlign.CENTER,
|
||||||
|
});
|
||||||
this.add_child(this._label);
|
this.add_child(this._label);
|
||||||
|
|
||||||
if (info.isRemovable()) {
|
if (info.isRemovable()) {
|
||||||
@@ -37,7 +42,10 @@ class PlaceMenuItem extends PopupMenu.PopupBaseMenuItem {
|
|||||||
icon_name: 'media-eject-symbolic',
|
icon_name: 'media-eject-symbolic',
|
||||||
style_class: 'popup-menu-icon',
|
style_class: 'popup-menu-icon',
|
||||||
});
|
});
|
||||||
this._ejectButton = new St.Button({ child: this._ejectIcon });
|
this._ejectButton = new St.Button({
|
||||||
|
child: this._ejectIcon,
|
||||||
|
style_class: 'button',
|
||||||
|
});
|
||||||
this._ejectButton.connect('clicked', info.eject.bind(info));
|
this._ejectButton.connect('clicked', info.eject.bind(info));
|
||||||
this.add_child(this._ejectButton);
|
this.add_child(this._ejectButton);
|
||||||
}
|
}
|
||||||
@@ -79,15 +87,12 @@ class PlacesMenu extends PanelMenu.Button {
|
|||||||
_init() {
|
_init() {
|
||||||
super._init(0.0, _('Places'));
|
super._init(0.0, _('Places'));
|
||||||
|
|
||||||
let hbox = new St.BoxLayout({ style_class: 'panel-status-menu-box' });
|
|
||||||
let label = new St.Label({
|
let label = new St.Label({
|
||||||
text: _('Places'),
|
text: _('Places'),
|
||||||
y_expand: true,
|
y_expand: true,
|
||||||
y_align: Clutter.ActorAlign.CENTER,
|
y_align: Clutter.ActorAlign.CENTER,
|
||||||
});
|
});
|
||||||
hbox.add_child(label);
|
this.add_actor(label);
|
||||||
hbox.add_child(PopupMenu.arrowIcon(St.Side.BOTTOM));
|
|
||||||
this.add_actor(hbox);
|
|
||||||
|
|
||||||
this.placesManager = new PlaceDisplay.PlacesManager();
|
this.placesManager = new PlaceDisplay.PlacesManager();
|
||||||
|
|
||||||
@@ -127,12 +132,14 @@ class PlacesMenu extends PanelMenu.Button {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
/** */
|
||||||
function init() {
|
function init() {
|
||||||
ExtensionUtils.initTranslations();
|
ExtensionUtils.initTranslations();
|
||||||
}
|
}
|
||||||
|
|
||||||
let _indicator;
|
let _indicator;
|
||||||
|
|
||||||
|
/** */
|
||||||
function enable() {
|
function enable() {
|
||||||
_indicator = new PlacesMenu();
|
_indicator = new PlacesMenu();
|
||||||
|
|
||||||
@@ -142,6 +149,7 @@ function enable() {
|
|||||||
Main.panel.addToStatusArea('places-menu', _indicator, pos, 'left');
|
Main.panel.addToStatusArea('places-menu', _indicator, pos, 'left');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** */
|
||||||
function disable() {
|
function disable() {
|
||||||
_indicator.destroy();
|
_indicator.destroy();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,13 +3,16 @@
|
|||||||
const { Gio, GLib, Shell } = imports.gi;
|
const { Gio, GLib, Shell } = imports.gi;
|
||||||
const Signals = imports.signals;
|
const Signals = imports.signals;
|
||||||
|
|
||||||
|
const ExtensionUtils = imports.misc.extensionUtils;
|
||||||
const Main = imports.ui.main;
|
const Main = imports.ui.main;
|
||||||
const ShellMountOperation = imports.ui.shellMountOperation;
|
const ShellMountOperation = imports.ui.shellMountOperation;
|
||||||
|
|
||||||
const Gettext = imports.gettext.domain('gnome-shell-extensions');
|
const _ = ExtensionUtils.gettext;
|
||||||
const _ = Gettext.gettext;
|
|
||||||
const N_ = x => x;
|
const N_ = x => x;
|
||||||
|
|
||||||
|
Gio._promisify(Gio.AppInfo, 'launch_default_for_uri_async');
|
||||||
|
Gio._promisify(Gio.File.prototype, 'mount_enclosing_volume');
|
||||||
|
|
||||||
const BACKGROUND_SCHEMA = 'org.gnome.desktop.background';
|
const BACKGROUND_SCHEMA = 'org.gnome.desktop.background';
|
||||||
|
|
||||||
const Hostname1Iface = '<node> \
|
const Hostname1Iface = '<node> \
|
||||||
@@ -40,7 +43,7 @@ class PlaceInfo {
|
|||||||
|
|
||||||
async _ensureMountAndLaunch(context, tryMount) {
|
async _ensureMountAndLaunch(context, tryMount) {
|
||||||
try {
|
try {
|
||||||
await this._launchDefaultForUri(this.file.get_uri(), context, null);
|
await Gio.AppInfo.launch_default_for_uri_async(this.file.get_uri(), context, null);
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
if (!err.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.NOT_MOUNTED)) {
|
if (!err.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.NOT_MOUNTED)) {
|
||||||
Main.notifyError(_('Failed to launch “%s”').format(this.name), err.message);
|
Main.notifyError(_('Failed to launch “%s”').format(this.name), err.message);
|
||||||
@@ -52,7 +55,7 @@ class PlaceInfo {
|
|||||||
};
|
};
|
||||||
let op = new ShellMountOperation.ShellMountOperation(source);
|
let op = new ShellMountOperation.ShellMountOperation(source);
|
||||||
try {
|
try {
|
||||||
await this._mountEnclosingVolume(0, op.mountOp, null);
|
await this.file.mount_enclosing_volume(0, op.mountOp, null);
|
||||||
|
|
||||||
if (tryMount)
|
if (tryMount)
|
||||||
this._ensureMountAndLaunch(context, false);
|
this._ensureMountAndLaunch(context, false);
|
||||||
@@ -114,32 +117,6 @@ class PlaceInfo {
|
|||||||
throw e;
|
throw e;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
_launchDefaultForUri(uri, context, cancel) {
|
|
||||||
return new Promise((resolve, reject) => {
|
|
||||||
Gio.AppInfo.launch_default_for_uri_async(uri, context, cancel, (o, res) => {
|
|
||||||
try {
|
|
||||||
Gio.AppInfo.launch_default_for_uri_finish(res);
|
|
||||||
resolve();
|
|
||||||
} catch (e) {
|
|
||||||
reject(e);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
_mountEnclosingVolume(flags, mountOp, cancel) {
|
|
||||||
return new Promise((resolve, reject) => {
|
|
||||||
this.file.mount_enclosing_volume(flags, mountOp, cancel, (o, res) => {
|
|
||||||
try {
|
|
||||||
this.file.mount_enclosing_volume_finish(res);
|
|
||||||
resolve();
|
|
||||||
} catch (e) {
|
|
||||||
reject(e);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
Signals.addSignalMethods(PlaceInfo.prototype);
|
Signals.addSignalMethods(PlaceInfo.prototype);
|
||||||
|
|
||||||
@@ -194,7 +171,7 @@ class PlaceDeviceInfo extends PlaceInfo {
|
|||||||
}
|
}
|
||||||
|
|
||||||
isRemovable() {
|
isRemovable() {
|
||||||
return this._mount.can_eject();
|
return this._mount.can_eject() || this._mount.can_unmount();
|
||||||
}
|
}
|
||||||
|
|
||||||
eject() {
|
eject() {
|
||||||
@@ -486,7 +463,6 @@ var PlacesManager = class {
|
|||||||
}
|
}
|
||||||
|
|
||||||
_reloadBookmarks() {
|
_reloadBookmarks() {
|
||||||
|
|
||||||
this._bookmarks = [];
|
this._bookmarks = [];
|
||||||
|
|
||||||
let content = Shell.get_file_contents_utf8_sync(this._bookmarksFile.get_path());
|
let content = Shell.get_file_contents_utf8_sync(this._bookmarksFile.get_path());
|
||||||
|
|||||||
@@ -1 +1,8 @@
|
|||||||
/* none used*/
|
.place-menu-item .button {
|
||||||
|
border-radius: 99px;
|
||||||
|
padding: 3px;
|
||||||
|
min-height: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.place-menu-item .button:ltr { margin-left: 6px; }
|
||||||
|
.place-menu-item .button:rtl { margin-right: 6px; }
|
||||||
|
|||||||
@@ -28,11 +28,15 @@ const MESSAGE_FADE_TIME = 2000;
|
|||||||
|
|
||||||
let text;
|
let text;
|
||||||
|
|
||||||
|
/** */
|
||||||
function hideMessage() {
|
function hideMessage() {
|
||||||
text.destroy();
|
text.destroy();
|
||||||
text = null;
|
text = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param {string} message - the message to flash
|
||||||
|
*/
|
||||||
function flashMessage(message) {
|
function flashMessage(message) {
|
||||||
if (!text) {
|
if (!text) {
|
||||||
text = new St.Label({ style_class: 'screenshot-sizer-message' });
|
text = new St.Label({ style_class: 'screenshot-sizer-message' });
|
||||||
@@ -67,6 +71,11 @@ let SIZES = [
|
|||||||
[720, 360], // Phone landscape fullscreen
|
[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) {
|
function cycleScreenshotSizes(display, window, binding) {
|
||||||
// Probably this isn't useful with 5 sizes, but you can decrease instead
|
// Probably this isn't useful with 5 sizes, but you can decrease instead
|
||||||
// of increase by holding down shift.
|
// of increase by holding down shift.
|
||||||
@@ -133,6 +142,7 @@ function cycleScreenshotSizes(display, window, binding) {
|
|||||||
flashMessage(message);
|
flashMessage(message);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** */
|
||||||
function enable() {
|
function enable() {
|
||||||
Main.wm.addKeybinding(
|
Main.wm.addKeybinding(
|
||||||
'cycle-screenshot-sizes',
|
'cycle-screenshot-sizes',
|
||||||
@@ -148,6 +158,7 @@ function enable() {
|
|||||||
cycleScreenshotSizes);
|
cycleScreenshotSizes);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** */
|
||||||
function disable() {
|
function disable() {
|
||||||
Main.wm.removeKeybinding('cycle-screenshot-sizes');
|
Main.wm.removeKeybinding('cycle-screenshot-sizes');
|
||||||
Main.wm.removeKeybinding('cycle-screenshot-sizes-backward');
|
Main.wm.removeKeybinding('cycle-screenshot-sizes-backward');
|
||||||
|
|||||||
@@ -2,28 +2,26 @@
|
|||||||
// Load shell theme from ~/.local/share/themes/name/gnome-shell
|
// Load shell theme from ~/.local/share/themes/name/gnome-shell
|
||||||
/* exported init */
|
/* exported init */
|
||||||
|
|
||||||
const { Gio, GLib } = imports.gi;
|
const { Gio } = imports.gi;
|
||||||
|
|
||||||
const ExtensionUtils = imports.misc.extensionUtils;
|
const ExtensionUtils = imports.misc.extensionUtils;
|
||||||
const Main = imports.ui.main;
|
const Main = imports.ui.main;
|
||||||
|
|
||||||
|
const Me = ExtensionUtils.getCurrentExtension();
|
||||||
|
const Util = Me.imports.util;
|
||||||
|
|
||||||
const SETTINGS_KEY = 'name';
|
const SETTINGS_KEY = 'name';
|
||||||
|
|
||||||
class ThemeManager {
|
class ThemeManager {
|
||||||
constructor() {
|
|
||||||
this._settings = ExtensionUtils.getSettings();
|
|
||||||
}
|
|
||||||
|
|
||||||
enable() {
|
enable() {
|
||||||
this._changedId = this._settings.connect(`changed::${SETTINGS_KEY}`, this._changeTheme.bind(this));
|
this._settings = ExtensionUtils.getSettings();
|
||||||
|
this._settings.connect(`changed::${SETTINGS_KEY}`, this._changeTheme.bind(this));
|
||||||
this._changeTheme();
|
this._changeTheme();
|
||||||
}
|
}
|
||||||
|
|
||||||
disable() {
|
disable() {
|
||||||
if (this._changedId) {
|
this._settings?.run_dispose();
|
||||||
this._settings.disconnect(this._changedId);
|
this._settings = null;
|
||||||
this._changedId = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
Main.setThemeStylesheet(null);
|
Main.setThemeStylesheet(null);
|
||||||
Main.loadTheme();
|
Main.loadTheme();
|
||||||
@@ -34,13 +32,11 @@ class ThemeManager {
|
|||||||
let themeName = this._settings.get_string(SETTINGS_KEY);
|
let themeName = this._settings.get_string(SETTINGS_KEY);
|
||||||
|
|
||||||
if (themeName) {
|
if (themeName) {
|
||||||
let stylesheetPaths = [
|
const stylesheetPaths = Util.getThemeDirs()
|
||||||
[GLib.get_home_dir(), '.themes'],
|
.map(dir => `${dir}/${themeName}/gnome-shell/gnome-shell.css`);
|
||||||
[GLib.get_user_data_dir(), 'themes'],
|
|
||||||
...GLib.get_system_data_dirs().map(dir => [dir, 'themes']),
|
stylesheetPaths.push(...Util.getModeThemeDirs()
|
||||||
].map(themeDir => GLib.build_filenamev([
|
.map(dir => `${dir}/${themeName}.css`));
|
||||||
...themeDir, themeName, 'gnome-shell', 'gnome-shell.css',
|
|
||||||
]));
|
|
||||||
|
|
||||||
stylesheet = stylesheetPaths.find(path => {
|
stylesheet = stylesheetPaths.find(path => {
|
||||||
let file = Gio.file_new_for_path(path);
|
let file = Gio.file_new_for_path(path);
|
||||||
@@ -57,6 +53,9 @@ class ThemeManager {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @returns {ThemeManager} - the extension state object
|
||||||
|
*/
|
||||||
function init() {
|
function init() {
|
||||||
return new ThemeManager();
|
return new ThemeManager();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,4 +4,5 @@ extension_data += configure_file(
|
|||||||
configuration: metadata_conf
|
configuration: metadata_conf
|
||||||
)
|
)
|
||||||
|
|
||||||
|
extension_sources += files('prefs.js', 'util.js')
|
||||||
extension_schemas += files(metadata_conf.get('gschemaname') + '.gschema.xml')
|
extension_schemas += files(metadata_conf.get('gschemaname') + '.gschema.xml')
|
||||||
|
|||||||
@@ -0,0 +1,131 @@
|
|||||||
|
// -*- 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
|
||||||
|
/* eslint-disable no-await-in-loop */
|
||||||
|
|
||||||
|
const { Adw, Gio, GLib, GObject, Gtk } = imports.gi;
|
||||||
|
|
||||||
|
const ExtensionUtils = imports.misc.extensionUtils;
|
||||||
|
|
||||||
|
const Me = ExtensionUtils.getCurrentExtension();
|
||||||
|
const Util = Me.imports.util;
|
||||||
|
|
||||||
|
Gio._promisify(Gio.File.prototype, 'enumerate_children_async');
|
||||||
|
Gio._promisify(Gio.File.prototype, 'query_info_async');
|
||||||
|
Gio._promisify(Gio.FileEnumerator.prototype, 'next_files_async');
|
||||||
|
|
||||||
|
const UserThemePrefsWidget = GObject.registerClass(
|
||||||
|
class UserThemePrefsWidget extends Adw.PreferencesGroup {
|
||||||
|
_init() {
|
||||||
|
super._init({ title: 'Themes' });
|
||||||
|
|
||||||
|
this._actionGroup = new Gio.SimpleActionGroup();
|
||||||
|
this.insert_action_group('theme', this._actionGroup);
|
||||||
|
|
||||||
|
this._settings = ExtensionUtils.getSettings();
|
||||||
|
this._actionGroup.add_action(
|
||||||
|
this._settings.create_action('name'));
|
||||||
|
|
||||||
|
this.connect('destroy', () => this._settings.run_dispose());
|
||||||
|
|
||||||
|
this._rows = new Map();
|
||||||
|
this._addTheme(''); // default
|
||||||
|
|
||||||
|
this._collectThemes();
|
||||||
|
}
|
||||||
|
|
||||||
|
async _collectThemes() {
|
||||||
|
for (const dirName of Util.getThemeDirs()) {
|
||||||
|
const dir = Gio.File.new_for_path(dirName);
|
||||||
|
for (const name of await this._enumerateDir(dir)) {
|
||||||
|
if (this._rows.has(name))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
const file = dir.resolve_relative_path(
|
||||||
|
`${name}/gnome-shell/gnome-shell.css`);
|
||||||
|
try {
|
||||||
|
await file.query_info_async(
|
||||||
|
Gio.FILE_ATTRIBUTE_STANDARD_NAME,
|
||||||
|
Gio.FileQueryInfoFlags.NONE,
|
||||||
|
GLib.PRIORITY_DEFAULT, null);
|
||||||
|
this._addTheme(name);
|
||||||
|
} catch (e) {
|
||||||
|
if (!e.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.NOT_FOUND))
|
||||||
|
logError(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for (const dirName of Util.getModeThemeDirs()) {
|
||||||
|
const dir = Gio.File.new_for_path(dirName);
|
||||||
|
for (const filename of await this._enumerateDir(dir)) {
|
||||||
|
if (!filename.endsWith('.css'))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
const name = filename.slice(0, -4);
|
||||||
|
if (!this._rows.has(name))
|
||||||
|
this._addTheme(name);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
_addTheme(name) {
|
||||||
|
const row = new ThemeRow(name);
|
||||||
|
this._rows.set(name, row);
|
||||||
|
|
||||||
|
this.add(row);
|
||||||
|
}
|
||||||
|
|
||||||
|
async _enumerateDir(dir) {
|
||||||
|
const fileInfos = [];
|
||||||
|
let fileEnum;
|
||||||
|
|
||||||
|
try {
|
||||||
|
fileEnum = await dir.enumerate_children_async(
|
||||||
|
Gio.FILE_ATTRIBUTE_STANDARD_NAME,
|
||||||
|
Gio.FileQueryInfoFlags.NONE,
|
||||||
|
GLib.PRIORITY_DEFAULT, null);
|
||||||
|
} catch (e) {
|
||||||
|
if (!e.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.NOT_FOUND))
|
||||||
|
logError(e);
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
|
||||||
|
let infos;
|
||||||
|
do {
|
||||||
|
infos = await fileEnum.next_files_async(100,
|
||||||
|
GLib.PRIORITY_DEFAULT, null);
|
||||||
|
fileInfos.push(...infos);
|
||||||
|
} while (infos.length > 0);
|
||||||
|
|
||||||
|
return fileInfos.map(info => info.get_name());
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
const ThemeRow = GObject.registerClass(
|
||||||
|
class ThemeRow extends Adw.ActionRow {
|
||||||
|
_init(name) {
|
||||||
|
const check = new Gtk.CheckButton({
|
||||||
|
action_name: 'theme.name',
|
||||||
|
action_target: new GLib.Variant('s', name),
|
||||||
|
});
|
||||||
|
|
||||||
|
super._init({
|
||||||
|
title: name || 'Default',
|
||||||
|
activatable_widget: check,
|
||||||
|
});
|
||||||
|
this.add_prefix(check);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
/** */
|
||||||
|
function init() {
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @returns {Gtk.Widget} - the prefs widget
|
||||||
|
*/
|
||||||
|
function buildPrefsWidget() {
|
||||||
|
return new UserThemePrefsWidget();
|
||||||
|
}
|
||||||
@@ -0,0 +1,23 @@
|
|||||||
|
/* exported getThemeDirs getModeThemeDirs */
|
||||||
|
const { GLib } = imports.gi;
|
||||||
|
|
||||||
|
const fn = (...args) => GLib.build_filenamev(args);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @returns {string[]} - an ordered list of theme directories
|
||||||
|
*/
|
||||||
|
function getThemeDirs() {
|
||||||
|
return [
|
||||||
|
fn(GLib.get_home_dir(), '.themes'),
|
||||||
|
fn(GLib.get_user_data_dir(), 'themes'),
|
||||||
|
...GLib.get_system_data_dirs().map(dir => fn(dir, 'themes')),
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @returns {string[]} - an ordered list of mode theme directories
|
||||||
|
*/
|
||||||
|
function getModeThemeDirs() {
|
||||||
|
return GLib.get_system_data_dirs()
|
||||||
|
.map(dir => fn(dir, 'gnome-shell', 'theme'));
|
||||||
|
}
|
||||||
@@ -50,11 +50,12 @@
|
|||||||
|
|
||||||
/* workspace switcher */
|
/* workspace switcher */
|
||||||
.window-list-workspace-indicator .workspace {
|
.window-list-workspace-indicator .workspace {
|
||||||
background-color: #ddd;
|
border: 2px solid #f6f5f4;
|
||||||
|
background-color: #ccc;
|
||||||
}
|
}
|
||||||
|
|
||||||
.window-list-workspace-indicator .workspace.active {
|
.window-list-workspace-indicator .workspace.active {
|
||||||
background-color: #ccc;
|
border-color: #888;
|
||||||
}
|
}
|
||||||
|
|
||||||
.window-list-window-preview {
|
.window-list-window-preview {
|
||||||
@@ -64,5 +65,4 @@
|
|||||||
|
|
||||||
.window-list-window-preview.active {
|
.window-list-window-preview.active {
|
||||||
background-color: #f6f5f4;
|
background-color: #f6f5f4;
|
||||||
border: 2px solid #888;
|
|
||||||
}
|
}
|
||||||
|
|||||||
+103
-128
@@ -11,8 +11,7 @@ const Me = ExtensionUtils.getCurrentExtension();
|
|||||||
const { WindowPicker, WindowPickerToggle } = Me.imports.windowPicker;
|
const { WindowPicker, WindowPickerToggle } = Me.imports.windowPicker;
|
||||||
const { WorkspaceIndicator } = Me.imports.workspaceIndicator;
|
const { WorkspaceIndicator } = Me.imports.workspaceIndicator;
|
||||||
|
|
||||||
const Gettext = imports.gettext.domain('gnome-shell-extensions');
|
const _ = ExtensionUtils.gettext;
|
||||||
const _ = Gettext.gettext;
|
|
||||||
|
|
||||||
const ICON_TEXTURE_SIZE = 24;
|
const ICON_TEXTURE_SIZE = 24;
|
||||||
const DND_ACTIVATE_TIMEOUT = 500;
|
const DND_ACTIVATE_TIMEOUT = 500;
|
||||||
@@ -23,34 +22,10 @@ const GroupingMode = {
|
|||||||
ALWAYS: 2,
|
ALWAYS: 2,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
function _minimizeOrActivateWindow(window) {
|
* @param {Shell.App} app - an app
|
||||||
let focusWindow = global.display.focus_window;
|
* @returns {number} - the smallest stable sequence of the app's windows
|
||||||
if (focusWindow === window ||
|
*/
|
||||||
focusWindow && focusWindow.get_transient_for() === window)
|
|
||||||
window.minimize();
|
|
||||||
else
|
|
||||||
window.activate(global.get_current_time());
|
|
||||||
}
|
|
||||||
|
|
||||||
function _openMenu(menu) {
|
|
||||||
menu.open();
|
|
||||||
|
|
||||||
let event = Clutter.get_current_event();
|
|
||||||
if (event && event.type() === Clutter.EventType.KEY_RELEASE)
|
|
||||||
menu.actor.navigate_focus(null, Gtk.DirectionType.TAB_FORWARD, false);
|
|
||||||
}
|
|
||||||
|
|
||||||
function _onMenuStateChanged(menu, isOpen) {
|
|
||||||
if (isOpen)
|
|
||||||
return;
|
|
||||||
|
|
||||||
let [x, y] = global.get_pointer();
|
|
||||||
let actor = global.stage.get_actor_at_pos(Clutter.PickMode.REACTIVE, x, y);
|
|
||||||
if (Me.stateObj.someWindowListContains(actor))
|
|
||||||
actor.sync_hover();
|
|
||||||
}
|
|
||||||
|
|
||||||
function _getAppStableSequence(app) {
|
function _getAppStableSequence(app) {
|
||||||
let windows = app.get_windows().filter(w => !w.skip_taskbar);
|
let windows = app.get_windows().filter(w => !w.skip_taskbar);
|
||||||
return windows.reduce((prev, cur) => {
|
return windows.reduce((prev, cur) => {
|
||||||
@@ -58,7 +33,6 @@ function _getAppStableSequence(app) {
|
|||||||
}, Infinity);
|
}, Infinity);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
class WindowContextMenu extends PopupMenu.PopupMenu {
|
class WindowContextMenu extends PopupMenu.PopupMenu {
|
||||||
constructor(source, metaWindow) {
|
constructor(source, metaWindow) {
|
||||||
super(source, 0.5, St.Side.BOTTOM);
|
super(source, 0.5, St.Side.BOTTOM);
|
||||||
@@ -220,13 +194,12 @@ const BaseButton = GObject.registerClass({
|
|||||||
|
|
||||||
super._init({
|
super._init({
|
||||||
style_class: 'window-button',
|
style_class: 'window-button',
|
||||||
x_fill: true,
|
|
||||||
y_fill: true,
|
|
||||||
can_focus: true,
|
can_focus: true,
|
||||||
|
x_expand: true,
|
||||||
button_mask: St.ButtonMask.ONE | St.ButtonMask.THREE,
|
button_mask: St.ButtonMask.ONE | St.ButtonMask.THREE,
|
||||||
});
|
});
|
||||||
|
|
||||||
this.connect('allocation-changed',
|
this.connect('notify::allocation',
|
||||||
this._updateIconGeometry.bind(this));
|
this._updateIconGeometry.bind(this));
|
||||||
this.connect('clicked', this._onClicked.bind(this));
|
this.connect('clicked', this._onClicked.bind(this));
|
||||||
this.connect('destroy', this._onDestroy.bind(this));
|
this.connect('destroy', this._onDestroy.bind(this));
|
||||||
@@ -283,10 +256,37 @@ const BaseButton = GObject.registerClass({
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_openMenu(menu) {
|
||||||
|
menu.open();
|
||||||
|
|
||||||
|
let event = Clutter.get_current_event();
|
||||||
|
if (event && event.type() === Clutter.EventType.KEY_RELEASE)
|
||||||
|
menu.actor.navigate_focus(null, Gtk.DirectionType.TAB_FORWARD, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
_minimizeOrActivateWindow(window) {
|
||||||
|
let focusWindow = global.display.focus_window;
|
||||||
|
if (focusWindow === window ||
|
||||||
|
focusWindow && focusWindow.get_transient_for() === window)
|
||||||
|
window.minimize();
|
||||||
|
else
|
||||||
|
window.activate(global.get_current_time());
|
||||||
|
}
|
||||||
|
|
||||||
|
_onMenuStateChanged(menu, isOpen) {
|
||||||
|
if (isOpen)
|
||||||
|
return;
|
||||||
|
|
||||||
|
let [x, y] = global.get_pointer();
|
||||||
|
let actor = global.stage.get_actor_at_pos(Clutter.PickMode.REACTIVE, x, y);
|
||||||
|
if (Me.stateObj.someWindowListContains(actor))
|
||||||
|
actor.sync_hover();
|
||||||
|
}
|
||||||
|
|
||||||
_onPopupMenu(_actor) {
|
_onPopupMenu(_actor) {
|
||||||
if (!this._canOpenPopupMenu() || this._contextMenu.isOpen)
|
if (!this._canOpenPopupMenu() || this._contextMenu.isOpen)
|
||||||
return;
|
return;
|
||||||
_openMenu(this._contextMenu);
|
this._openMenu(this._contextMenu);
|
||||||
}
|
}
|
||||||
|
|
||||||
_isFocused() {
|
_isFocused() {
|
||||||
@@ -353,6 +353,9 @@ class WindowButton extends BaseButton {
|
|||||||
super._init(perMonitor, monitorIndex);
|
super._init(perMonitor, monitorIndex);
|
||||||
|
|
||||||
this.metaWindow = metaWindow;
|
this.metaWindow = metaWindow;
|
||||||
|
this._skipTaskbarId = metaWindow.connect('notify::skip-taskbar', () => {
|
||||||
|
this._updateVisibility();
|
||||||
|
});
|
||||||
this._updateVisibility();
|
this._updateVisibility();
|
||||||
|
|
||||||
this._windowTitle = new WindowTitle(this.metaWindow);
|
this._windowTitle = new WindowTitle(this.metaWindow);
|
||||||
@@ -360,7 +363,8 @@ class WindowButton extends BaseButton {
|
|||||||
this.label_actor = this._windowTitle.label_actor;
|
this.label_actor = this._windowTitle.label_actor;
|
||||||
|
|
||||||
this._contextMenu = new WindowContextMenu(this, this.metaWindow);
|
this._contextMenu = new WindowContextMenu(this, this.metaWindow);
|
||||||
this._contextMenu.connect('open-state-changed', _onMenuStateChanged);
|
this._contextMenu.connect('open-state-changed',
|
||||||
|
this._onMenuStateChanged.bind(this));
|
||||||
this._contextMenu.actor.hide();
|
this._contextMenu.actor.hide();
|
||||||
this._contextMenuManager.addMenu(this._contextMenu);
|
this._contextMenuManager.addMenu(this._contextMenu);
|
||||||
Main.uiGroup.add_actor(this._contextMenu.actor);
|
Main.uiGroup.add_actor(this._contextMenu.actor);
|
||||||
@@ -380,9 +384,9 @@ class WindowButton extends BaseButton {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (button === 1)
|
if (button === 1)
|
||||||
_minimizeOrActivateWindow(this.metaWindow);
|
this._minimizeOrActivateWindow(this.metaWindow);
|
||||||
else
|
else
|
||||||
_openMenu(this._contextMenu);
|
this._openMenu(this._contextMenu);
|
||||||
}
|
}
|
||||||
|
|
||||||
_isFocused() {
|
_isFocused() {
|
||||||
@@ -413,6 +417,7 @@ class WindowButton extends BaseButton {
|
|||||||
|
|
||||||
_onDestroy() {
|
_onDestroy() {
|
||||||
super._onDestroy();
|
super._onDestroy();
|
||||||
|
this.metaWindow.disconnect(this._skipTaskbarId);
|
||||||
this.metaWindow.disconnect(this._workspaceChangedId);
|
this.metaWindow.disconnect(this._workspaceChangedId);
|
||||||
global.display.disconnect(this._notifyFocusId);
|
global.display.disconnect(this._notifyFocusId);
|
||||||
this._contextMenu.destroy();
|
this._contextMenu.destroy();
|
||||||
@@ -491,8 +496,6 @@ class AppButton extends BaseButton {
|
|||||||
|
|
||||||
this._singleWindowTitle = new St.Bin({
|
this._singleWindowTitle = new St.Bin({
|
||||||
x_expand: true,
|
x_expand: true,
|
||||||
y_fill: true,
|
|
||||||
x_align: St.Align.START,
|
|
||||||
});
|
});
|
||||||
stack.add_actor(this._singleWindowTitle);
|
stack.add_actor(this._singleWindowTitle);
|
||||||
|
|
||||||
@@ -517,14 +520,16 @@ class AppButton extends BaseButton {
|
|||||||
|
|
||||||
this._menuManager = new PopupMenu.PopupMenuManager(this);
|
this._menuManager = new PopupMenu.PopupMenuManager(this);
|
||||||
this._menu = new PopupMenu.PopupMenu(this, 0.5, St.Side.BOTTOM);
|
this._menu = new PopupMenu.PopupMenu(this, 0.5, St.Side.BOTTOM);
|
||||||
this._menu.connect('open-state-changed', _onMenuStateChanged);
|
this._menu.connect('open-state-changed',
|
||||||
|
this._onMenuStateChanged.bind(this));
|
||||||
this._menu.actor.hide();
|
this._menu.actor.hide();
|
||||||
this._menu.connect('activate', this._onMenuActivate.bind(this));
|
this._menu.connect('activate', this._onMenuActivate.bind(this));
|
||||||
this._menuManager.addMenu(this._menu);
|
this._menuManager.addMenu(this._menu);
|
||||||
Main.uiGroup.add_actor(this._menu.actor);
|
Main.uiGroup.add_actor(this._menu.actor);
|
||||||
|
|
||||||
this._appContextMenu = new AppContextMenu(this);
|
this._appContextMenu = new AppContextMenu(this);
|
||||||
this._appContextMenu.connect('open-state-changed', _onMenuStateChanged);
|
this._appContextMenu.connect('open-state-changed',
|
||||||
|
this._onMenuStateChanged.bind(this));
|
||||||
this._appContextMenu.actor.hide();
|
this._appContextMenu.actor.hide();
|
||||||
Main.uiGroup.add_actor(this._appContextMenu.actor);
|
Main.uiGroup.add_actor(this._appContextMenu.actor);
|
||||||
|
|
||||||
@@ -591,7 +596,7 @@ class AppButton extends BaseButton {
|
|||||||
this._singleWindowTitle.child = this._windowTitle;
|
this._singleWindowTitle.child = this._windowTitle;
|
||||||
this._windowContextMenu = new WindowContextMenu(this, this.metaWindow);
|
this._windowContextMenu = new WindowContextMenu(this, this.metaWindow);
|
||||||
this._windowContextMenu.connect(
|
this._windowContextMenu.connect(
|
||||||
'open-state-changed', _onMenuStateChanged);
|
'open-state-changed', this._onMenuStateChanged.bind(this));
|
||||||
Main.uiGroup.add_actor(this._windowContextMenu.actor);
|
Main.uiGroup.add_actor(this._windowContextMenu.actor);
|
||||||
this._windowContextMenu.actor.hide();
|
this._windowContextMenu.actor.hide();
|
||||||
this._contextMenuManager.addMenu(this._windowContextMenu);
|
this._contextMenuManager.addMenu(this._windowContextMenu);
|
||||||
@@ -611,7 +616,6 @@ class AppButton extends BaseButton {
|
|||||||
this._contextMenuManager.addMenu(this._appContextMenu);
|
this._contextMenuManager.addMenu(this._appContextMenu);
|
||||||
this.label_actor = this._multiWindowTitle.label_actor;
|
this.label_actor = this._multiWindowTitle.label_actor;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
_onClicked(actor, button) {
|
_onClicked(actor, button) {
|
||||||
@@ -631,7 +635,7 @@ class AppButton extends BaseButton {
|
|||||||
if (windows.length === 1) {
|
if (windows.length === 1) {
|
||||||
if (contextMenuWasOpen)
|
if (contextMenuWasOpen)
|
||||||
return;
|
return;
|
||||||
_minimizeOrActivateWindow(windows[0]);
|
this._minimizeOrActivateWindow(windows[0]);
|
||||||
} else {
|
} else {
|
||||||
this._menu.removeAll();
|
this._menu.removeAll();
|
||||||
|
|
||||||
@@ -642,12 +646,12 @@ class AppButton extends BaseButton {
|
|||||||
item._window = windows[i];
|
item._window = windows[i];
|
||||||
this._menu.addMenuItem(item);
|
this._menu.addMenuItem(item);
|
||||||
}
|
}
|
||||||
_openMenu(this._menu);
|
this._openMenu(this._menu);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (contextMenuWasOpen)
|
if (contextMenuWasOpen)
|
||||||
return;
|
return;
|
||||||
_openMenu(this._contextMenu);
|
this._openMenu(this._contextMenu);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -744,28 +748,26 @@ class WindowList extends St.Widget {
|
|||||||
this._appStateChangedId = this._appSystem.connect(
|
this._appStateChangedId = this._appSystem.connect(
|
||||||
'app-state-changed', this._onAppStateChanged.bind(this));
|
'app-state-changed', this._onAppStateChanged.bind(this));
|
||||||
|
|
||||||
this._keyboardVisiblechangedId = Main.layoutManager.connect(
|
// Hack: OSK gesture is tied to visibility, piggy-back on that
|
||||||
'keyboard-visible-changed',
|
this._keyboardVisiblechangedId =
|
||||||
(o, state) => {
|
Main.keyboard._bottomDragAction.connect('notify::enabled',
|
||||||
Main.layoutManager.keyboardBox.visible = state;
|
action => {
|
||||||
let { keyboardBox } = Main.layoutManager;
|
const visible = !action.enabled;
|
||||||
keyboardBox.visible = state;
|
if (visible) {
|
||||||
if (state) {
|
Main.uiGroup.set_child_above_sibling(
|
||||||
Main.uiGroup.set_child_above_sibling(
|
this, Main.layoutManager.keyboardBox);
|
||||||
this, 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();
|
});
|
||||||
});
|
|
||||||
|
|
||||||
let workspaceManager = global.workspace_manager;
|
let workspaceManager = global.workspace_manager;
|
||||||
|
|
||||||
this._workspaceSignals = new Map();
|
|
||||||
this._nWorkspacesChangedId = workspaceManager.connect(
|
this._nWorkspacesChangedId = workspaceManager.connect(
|
||||||
'notify::n-workspaces', this._onWorkspacesChanged.bind(this));
|
'notify::n-workspaces', this._updateWorkspaceIndicatorVisibility.bind(this));
|
||||||
this._onWorkspacesChanged();
|
this._updateWorkspaceIndicatorVisibility();
|
||||||
|
|
||||||
this._switchWorkspaceId = global.window_manager.connect(
|
this._switchWorkspaceId = global.window_manager.connect(
|
||||||
'switch-workspace', this._checkGrouping.bind(this));
|
'switch-workspace', this._checkGrouping.bind(this));
|
||||||
@@ -775,20 +777,27 @@ class WindowList extends St.Widget {
|
|||||||
this._updateKeyboardAnchor();
|
this._updateKeyboardAnchor();
|
||||||
});
|
});
|
||||||
|
|
||||||
this._overviewHidingId = Main.overview.connect('hiding', () => {
|
this._overviewHidingId = Main.overview.connect('hidden', () => {
|
||||||
this.visible = !Main.layoutManager.primaryMonitor.inFullscreen;
|
this.visible = !Main.layoutManager.primaryMonitor.inFullscreen;
|
||||||
this._updateKeyboardAnchor();
|
this._updateKeyboardAnchor();
|
||||||
});
|
});
|
||||||
|
|
||||||
this._fullscreenChangedId =
|
this._fullscreenChangedId =
|
||||||
global.display.connect('in-fullscreen-changed', () => {
|
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();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
this._windowSignals = new Map();
|
||||||
|
this._windowCreatedId = global.display.connect(
|
||||||
|
'window-created', (dsp, win) => this._addWindow(win));
|
||||||
|
|
||||||
this._dragBeginId = Main.xdndHandler.connect('drag-begin',
|
this._dragBeginId = Main.xdndHandler.connect('drag-begin',
|
||||||
this._onDragBegin.bind(this));
|
this._monitorDrag.bind(this));
|
||||||
this._dragEndId = Main.xdndHandler.connect('drag-end',
|
this._dragEndId = Main.xdndHandler.connect('drag-end',
|
||||||
this._onDragEnd.bind(this));
|
this._stopMonitoringDrag.bind(this));
|
||||||
this._dragMonitor = {
|
this._dragMonitor = {
|
||||||
dragMotion: this._onDragMotion.bind(this),
|
dragMotion: this._onDragMotion.bind(this),
|
||||||
};
|
};
|
||||||
@@ -907,7 +916,7 @@ class WindowList extends St.Widget {
|
|||||||
w2.metaWindow.get_stable_sequence();
|
w2.metaWindow.get_stable_sequence();
|
||||||
});
|
});
|
||||||
for (let i = 0; i < windows.length; i++)
|
for (let i = 0; i < windows.length; i++)
|
||||||
this._onWindowAdded(null, windows[i].metaWindow);
|
this._addWindow(windows[i].metaWindow);
|
||||||
} else {
|
} else {
|
||||||
let apps = this._appSystem.get_running().sort((a1, a2) => {
|
let apps = this._appSystem.get_running().sort((a1, a2) => {
|
||||||
return _getAppStableSequence(a1) -
|
return _getAppStableSequence(a1) -
|
||||||
@@ -919,11 +928,8 @@ class WindowList extends St.Widget {
|
|||||||
}
|
}
|
||||||
|
|
||||||
_updateKeyboardAnchor() {
|
_updateKeyboardAnchor() {
|
||||||
if (!Main.keyboard.keyboardActor)
|
const translationY = Main.overview.visible ? 0 : this.height;
|
||||||
return;
|
Main.layoutManager.keyboardBox.translation_y = -translationY;
|
||||||
|
|
||||||
let translationY = Main.overview.visible ? 0 : this.height;
|
|
||||||
Main.keyboard.keyboardActor.translation_y = -translationY;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
_onAppStateChanged(appSys, app) {
|
_onAppStateChanged(appSys, app) {
|
||||||
@@ -940,10 +946,7 @@ class WindowList extends St.Widget {
|
|||||||
let button = new AppButton(app, this._perMonitor, this._monitor.index);
|
let button = new AppButton(app, this._perMonitor, this._monitor.index);
|
||||||
this._settings.bind('display-all-workspaces',
|
this._settings.bind('display-all-workspaces',
|
||||||
button, 'ignore-workspace', Gio.SettingsBindFlags.GET);
|
button, 'ignore-workspace', Gio.SettingsBindFlags.GET);
|
||||||
this._windowList.layout_manager.pack(button,
|
this._windowList.add_child(button);
|
||||||
true, true, true,
|
|
||||||
Clutter.BoxAlignment.START,
|
|
||||||
Clutter.BoxAlignment.START);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
_removeApp(app) {
|
_removeApp(app) {
|
||||||
@@ -953,10 +956,7 @@ class WindowList extends St.Widget {
|
|||||||
child.destroy();
|
child.destroy();
|
||||||
}
|
}
|
||||||
|
|
||||||
_onWindowAdded(ws, win) {
|
_addWindow(win) {
|
||||||
if (win.skip_taskbar)
|
|
||||||
return;
|
|
||||||
|
|
||||||
if (!this._grouped)
|
if (!this._grouped)
|
||||||
this._checkGrouping();
|
this._checkGrouping();
|
||||||
|
|
||||||
@@ -967,24 +967,26 @@ class WindowList extends St.Widget {
|
|||||||
if (children.find(c => c.metaWindow === win))
|
if (children.find(c => c.metaWindow === win))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
this._windowSignals.set(
|
||||||
|
win, win.connect('unmanaged', () => this._removeWindow(win)));
|
||||||
|
|
||||||
let button = new WindowButton(win, this._perMonitor, this._monitor.index);
|
let button = new WindowButton(win, this._perMonitor, this._monitor.index);
|
||||||
this._settings.bind('display-all-workspaces',
|
this._settings.bind('display-all-workspaces',
|
||||||
button, 'ignore-workspace', Gio.SettingsBindFlags.GET);
|
button, 'ignore-workspace', Gio.SettingsBindFlags.GET);
|
||||||
this._windowList.layout_manager.pack(button,
|
this._windowList.add_child(button);
|
||||||
true, true, true,
|
|
||||||
Clutter.BoxAlignment.START,
|
|
||||||
Clutter.BoxAlignment.START);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
_onWindowRemoved(ws, win) {
|
_removeWindow(win) {
|
||||||
if (this._grouped)
|
if (this._grouped)
|
||||||
this._checkGrouping();
|
this._checkGrouping();
|
||||||
|
|
||||||
if (this._grouped)
|
if (this._grouped)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (win.get_compositor_private())
|
const id = this._windowSignals.get(win);
|
||||||
return; // not actually removed, just moved to another workspace
|
if (id)
|
||||||
|
win.disconnect(id);
|
||||||
|
this._windowSignals.delete(id);
|
||||||
|
|
||||||
let children = this._windowList.get_children();
|
let children = this._windowList.get_children();
|
||||||
let child = children.find(c => c.metaWindow === win);
|
let child = children.find(c => c.metaWindow === win);
|
||||||
@@ -992,44 +994,11 @@ class WindowList extends St.Widget {
|
|||||||
child.destroy();
|
child.destroy();
|
||||||
}
|
}
|
||||||
|
|
||||||
_onWorkspacesChanged() {
|
_monitorDrag() {
|
||||||
let workspaceManager = global.workspace_manager;
|
|
||||||
let numWorkspaces = workspaceManager.n_workspaces;
|
|
||||||
|
|
||||||
for (let i = 0; i < numWorkspaces; i++) {
|
|
||||||
let workspace = workspaceManager.get_workspace_by_index(i);
|
|
||||||
if (this._workspaceSignals.has(workspace))
|
|
||||||
continue;
|
|
||||||
|
|
||||||
let signals = { windowAddedId: 0, windowRemovedId: 0 };
|
|
||||||
signals._windowAddedId = workspace.connect_after(
|
|
||||||
'window-added', this._onWindowAdded.bind(this));
|
|
||||||
signals._windowRemovedId = workspace.connect(
|
|
||||||
'window-removed', this._onWindowRemoved.bind(this));
|
|
||||||
this._workspaceSignals.set(workspace, signals);
|
|
||||||
}
|
|
||||||
|
|
||||||
this._updateWorkspaceIndicatorVisibility();
|
|
||||||
}
|
|
||||||
|
|
||||||
_disconnectWorkspaceSignals() {
|
|
||||||
let workspaceManager = global.workspace_manager;
|
|
||||||
let numWorkspaces = workspaceManager.n_workspaces;
|
|
||||||
|
|
||||||
for (let i = 0; i < numWorkspaces; i++) {
|
|
||||||
let workspace = workspaceManager.get_workspace_by_index(i);
|
|
||||||
let signals = this._workspaceSignals.get(workspace);
|
|
||||||
this._workspaceSignals.delete(workspace);
|
|
||||||
workspace.disconnect(signals._windowAddedId);
|
|
||||||
workspace.disconnect(signals._windowRemovedId);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
_onDragBegin() {
|
|
||||||
DND.addDragMonitor(this._dragMonitor);
|
DND.addDragMonitor(this._dragMonitor);
|
||||||
}
|
}
|
||||||
|
|
||||||
_onDragEnd() {
|
_stopMonitoringDrag() {
|
||||||
DND.removeDragMonitor(this._dragMonitor);
|
DND.removeDragMonitor(this._dragMonitor);
|
||||||
this._removeActivateTimeout();
|
this._removeActivateTimeout();
|
||||||
}
|
}
|
||||||
@@ -1085,24 +1054,25 @@ class WindowList extends St.Widget {
|
|||||||
this._appSystem.disconnect(this._appStateChangedId);
|
this._appSystem.disconnect(this._appStateChangedId);
|
||||||
this._appStateChangedId = 0;
|
this._appStateChangedId = 0;
|
||||||
|
|
||||||
Main.layoutManager.disconnect(this._keyboardVisiblechangedId);
|
Main.keyboard._bottomDragAction.disconnect(this._keyboardVisiblechangedId);
|
||||||
this._keyboardVisiblechangedId = 0;
|
this._keyboardVisiblechangedId = 0;
|
||||||
|
|
||||||
Main.layoutManager.hideKeyboard();
|
|
||||||
|
|
||||||
this._disconnectWorkspaceSignals();
|
|
||||||
global.workspace_manager.disconnect(this._nWorkspacesChangedId);
|
global.workspace_manager.disconnect(this._nWorkspacesChangedId);
|
||||||
this._nWorkspacesChangedId = 0;
|
this._nWorkspacesChangedId = 0;
|
||||||
|
|
||||||
global.window_manager.disconnect(this._switchWorkspaceId);
|
global.window_manager.disconnect(this._switchWorkspaceId);
|
||||||
this._switchWorkspaceId = 0;
|
this._switchWorkspaceId = 0;
|
||||||
|
|
||||||
|
this._windowSignals.forEach((id, win) => win.disconnect(id));
|
||||||
|
this._windowSignals.clear();
|
||||||
|
|
||||||
Main.overview.disconnect(this._overviewShowingId);
|
Main.overview.disconnect(this._overviewShowingId);
|
||||||
Main.overview.disconnect(this._overviewHidingId);
|
Main.overview.disconnect(this._overviewHidingId);
|
||||||
|
|
||||||
global.display.disconnect(this._fullscreenChangedId);
|
global.display.disconnect(this._fullscreenChangedId);
|
||||||
|
global.display.disconnect(this._windowCreatedId);
|
||||||
|
|
||||||
|
this._stopMonitoringDrag();
|
||||||
Main.xdndHandler.disconnect(this._dragBeginId);
|
Main.xdndHandler.disconnect(this._dragBeginId);
|
||||||
Main.xdndHandler.disconnect(this._dragEndId);
|
Main.xdndHandler.disconnect(this._dragEndId);
|
||||||
|
|
||||||
@@ -1116,6 +1086,8 @@ class WindowList extends St.Widget {
|
|||||||
|
|
||||||
class Extension {
|
class Extension {
|
||||||
constructor() {
|
constructor() {
|
||||||
|
ExtensionUtils.initTranslations();
|
||||||
|
|
||||||
this._windowLists = null;
|
this._windowLists = null;
|
||||||
this._hideOverviewOrig = Main.overview.hide;
|
this._hideOverviewOrig = Main.overview.hide;
|
||||||
}
|
}
|
||||||
@@ -1179,6 +1151,9 @@ class Extension {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @returns {Extension} - the extension's state object
|
||||||
|
*/
|
||||||
function init() {
|
function init() {
|
||||||
return new Extension();
|
return new Extension();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,95 +1,89 @@
|
|||||||
// -*- mode: js2; indent-tabs-mode: nil; js2-basic-offset: 4 -*-
|
// -*- mode: js2; indent-tabs-mode: nil; js2-basic-offset: 4 -*-
|
||||||
/* exported init buildPrefsWidget */
|
/* exported init buildPrefsWidget */
|
||||||
|
|
||||||
const { Gio, GObject, Gtk } = imports.gi;
|
const { Adw, Gio, GLib, GObject, Gtk } = imports.gi;
|
||||||
|
|
||||||
const Gettext = imports.gettext.domain('gnome-shell-extensions');
|
|
||||||
const _ = Gettext.gettext;
|
|
||||||
|
|
||||||
const ExtensionUtils = imports.misc.extensionUtils;
|
const ExtensionUtils = imports.misc.extensionUtils;
|
||||||
|
|
||||||
|
const _ = ExtensionUtils.gettext;
|
||||||
|
|
||||||
|
/** */
|
||||||
function init() {
|
function init() {
|
||||||
ExtensionUtils.initTranslations();
|
ExtensionUtils.initTranslations();
|
||||||
}
|
}
|
||||||
|
|
||||||
const WindowListPrefsWidget = GObject.registerClass(
|
const WindowListPrefsWidget = GObject.registerClass(
|
||||||
class WindowListPrefsWidget extends Gtk.Grid {
|
class WindowListPrefsWidget extends Adw.PreferencesPage {
|
||||||
_init(params) {
|
_init() {
|
||||||
super._init(params);
|
super._init();
|
||||||
|
|
||||||
this.margin = 24;
|
this._actionGroup = new Gio.SimpleActionGroup();
|
||||||
this.row_spacing = 6;
|
this.insert_action_group('window-list', this._actionGroup);
|
||||||
this.orientation = Gtk.Orientation.VERTICAL;
|
|
||||||
|
|
||||||
let groupingLabel = '<b>%s</b>'.format(_('Window Grouping'));
|
|
||||||
this.add(new Gtk.Label({
|
|
||||||
label: groupingLabel, use_markup: true,
|
|
||||||
halign: Gtk.Align.START,
|
|
||||||
}));
|
|
||||||
|
|
||||||
let align = new Gtk.Alignment({ left_padding: 12 });
|
|
||||||
this.add(align);
|
|
||||||
|
|
||||||
let grid = new Gtk.Grid({
|
|
||||||
orientation: Gtk.Orientation.VERTICAL,
|
|
||||||
row_spacing: 6,
|
|
||||||
column_spacing: 6,
|
|
||||||
});
|
|
||||||
align.add(grid);
|
|
||||||
|
|
||||||
this._settings = ExtensionUtils.getSettings();
|
this._settings = ExtensionUtils.getSettings();
|
||||||
let currentMode = this._settings.get_string('grouping-mode');
|
this._actionGroup.add_action(
|
||||||
let range = this._settings.get_range('grouping-mode');
|
this._settings.create_action('grouping-mode'));
|
||||||
let modes = range.deep_unpack()[1].deep_unpack();
|
this._actionGroup.add_action(
|
||||||
|
this._settings.create_action('show-on-all-monitors'));
|
||||||
|
this._actionGroup.add_action(
|
||||||
|
this._settings.create_action('display-all-workspaces'));
|
||||||
|
|
||||||
let modeLabels = {
|
const groupingGroup = new Adw.PreferencesGroup({
|
||||||
'never': _('Never group windows'),
|
title: _('Window Grouping'),
|
||||||
'auto': _('Group windows when space is limited'),
|
});
|
||||||
'always': _('Always group windows'),
|
this.add(groupingGroup);
|
||||||
};
|
|
||||||
|
|
||||||
let radio = null;
|
const modes = [
|
||||||
for (let i = 0; i < modes.length; i++) {
|
{ mode: 'never', title: _('Never group windows') },
|
||||||
let mode = modes[i];
|
{ mode: 'auto', title: _('Group windows when space is limited') },
|
||||||
let label = modeLabels[mode];
|
{ mode: 'always', title: _('Always group windows') },
|
||||||
if (!label) {
|
];
|
||||||
log('Unhandled option "%s" for grouping-mode'.format(mode));
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
radio = new Gtk.RadioButton({
|
for (const { mode, title } of modes) {
|
||||||
active: currentMode === mode,
|
const check = new Gtk.CheckButton({
|
||||||
label,
|
action_name: 'window-list.grouping-mode',
|
||||||
group: radio,
|
action_target: new GLib.Variant('s', mode),
|
||||||
});
|
});
|
||||||
grid.add(radio);
|
const row = new Adw.ActionRow({
|
||||||
|
activatable_widget: check,
|
||||||
radio.connect('toggled', button => {
|
title,
|
||||||
if (button.active)
|
|
||||||
this._settings.set_string('grouping-mode', mode);
|
|
||||||
});
|
});
|
||||||
|
row.add_prefix(check);
|
||||||
|
groupingGroup.add(row);
|
||||||
}
|
}
|
||||||
|
|
||||||
let check = new Gtk.CheckButton({
|
const miscGroup = new Adw.PreferencesGroup();
|
||||||
label: _('Show on all monitors'),
|
this.add(miscGroup);
|
||||||
margin_top: 6,
|
|
||||||
});
|
|
||||||
this._settings.bind('show-on-all-monitors', check, 'active', Gio.SettingsBindFlags.DEFAULT);
|
|
||||||
this.add(check);
|
|
||||||
|
|
||||||
check = new Gtk.CheckButton({
|
let toggle = new Gtk.Switch({
|
||||||
label: _('Show windows from all workspaces'),
|
action_name: 'window-list.show-on-all-monitors',
|
||||||
margin_top: 6,
|
valign: Gtk.Align.CENTER,
|
||||||
});
|
});
|
||||||
this._settings.bind('display-all-workspaces', check, 'active', Gio.SettingsBindFlags.DEFAULT);
|
let row = new Adw.ActionRow({
|
||||||
this.add(check);
|
title: _('Show on all monitors'),
|
||||||
|
activatable_widget: toggle,
|
||||||
|
});
|
||||||
|
row.add_suffix(toggle);
|
||||||
|
miscGroup.add(row);
|
||||||
|
|
||||||
|
toggle = new Gtk.Switch({
|
||||||
|
action_name: 'window-list.display-all-workspaces',
|
||||||
|
valign: Gtk.Align.CENTER,
|
||||||
|
});
|
||||||
|
this._settings.bind('display-all-workspaces',
|
||||||
|
toggle, 'active', Gio.SettingsBindFlags.DEFAULT);
|
||||||
|
row = new Adw.ActionRow({
|
||||||
|
title: _('Show windows from all workspaces'),
|
||||||
|
activatable_widget: toggle,
|
||||||
|
});
|
||||||
|
row.add_suffix(toggle);
|
||||||
|
miscGroup.add(row);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @returns {Gtk.Widget} - the prefs widget
|
||||||
|
*/
|
||||||
function buildPrefsWidget() {
|
function buildPrefsWidget() {
|
||||||
let widget = new WindowListPrefsWidget();
|
return new WindowListPrefsWidget();
|
||||||
widget.show_all();
|
|
||||||
|
|
||||||
return widget;
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,10 +1,3 @@
|
|||||||
.bottom-panel {
|
|
||||||
/* .window-button-icon height +
|
|
||||||
.window-button vertical padding +
|
|
||||||
.window-button > StWidget vertical padding) */
|
|
||||||
height: 2.25em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.window-list {
|
.window-list {
|
||||||
spacing: 2px;
|
spacing: 2px;
|
||||||
font-size: 10pt;
|
font-size: 10pt;
|
||||||
@@ -30,7 +23,7 @@
|
|||||||
.window-picker-toggle > StWidget {
|
.window-picker-toggle > StWidget {
|
||||||
color: #bbb;
|
color: #bbb;
|
||||||
background-color: black;
|
background-color: black;
|
||||||
border-radius: 4px;
|
border-radius: 2px;
|
||||||
padding: 3px 6px 1px;
|
padding: 3px 6px 1px;
|
||||||
box-shadow: inset 1px 1px 4px rgba(255,255,255,0.5);
|
box-shadow: inset 1px 1px 4px rgba(255,255,255,0.5);
|
||||||
text-shadow: 1px 1px 4px rgba(0,0,0,0.8);
|
text-shadow: 1px 1px 4px rgba(0,0,0,0.8);
|
||||||
@@ -89,7 +82,7 @@
|
|||||||
background-color: rgba(200, 200, 200, .3);
|
background-color: rgba(200, 200, 200, .3);
|
||||||
border: 1px solid #cccccc;
|
border: 1px solid #cccccc;
|
||||||
padding: 0 3px;
|
padding: 0 3px;
|
||||||
margin: 3px 0;
|
margin: 3px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.window-list-workspace-indicator .workspaces-box {
|
.window-list-workspace-indicator .workspaces-box {
|
||||||
@@ -98,37 +91,23 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.window-list-workspace-indicator .workspace {
|
.window-list-workspace-indicator .workspace {
|
||||||
border: 1px solid #cccccc;
|
border: 2px solid #000;
|
||||||
width: 52px;
|
width: 52px;
|
||||||
}
|
|
||||||
|
|
||||||
.window-list-workspace-indicator .workspace:first-child:last-child:ltr,
|
|
||||||
.window-list-workspace-indicator .workspace:first-child:last-child:rtl {
|
|
||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
}
|
background-color: #595959;
|
||||||
|
|
||||||
.window-list-workspace-indicator .workspace:first-child:ltr,
|
|
||||||
.window-list-workspace-indicator .workspace:last-child:rtl {
|
|
||||||
border-radius: 4px 0 0 4px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.window-list-workspace-indicator .workspace:first-child:rtl,
|
|
||||||
.window-list-workspace-indicator .workspace:last-child:ltr {
|
|
||||||
border-radius: 0 4px 4px 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.window-list-workspace-indicator .workspace.active {
|
.window-list-workspace-indicator .workspace.active {
|
||||||
background-color: rgba(200, 200, 200, .3);
|
border-color: #fff;
|
||||||
}
|
}
|
||||||
|
|
||||||
.window-list-window-preview {
|
.window-list-window-preview {
|
||||||
background-color: #252525;
|
background-color: #bebebe;
|
||||||
border: 1px solid #ccc;
|
border: 1px solid #828282;
|
||||||
}
|
}
|
||||||
|
|
||||||
.window-list-window-preview.active {
|
.window-list-window-preview.active {
|
||||||
background-color: #353535;
|
background-color: #d4d4d4;
|
||||||
border: 2px solid #ccc;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.notification {
|
.notification {
|
||||||
|
|||||||
@@ -1,16 +1,24 @@
|
|||||||
/* exported WindowPicker, WindowPickerToggle */
|
/* exported WindowPicker, WindowPickerToggle */
|
||||||
const { Clutter, GLib, GObject, Meta, Shell, St } = imports.gi;
|
const { Clutter, GObject, Shell, St } = imports.gi;
|
||||||
|
|
||||||
const Layout = imports.ui.layout;
|
const Layout = imports.ui.layout;
|
||||||
const Main = imports.ui.main;
|
const Main = imports.ui.main;
|
||||||
const Overview = imports.ui.overview;
|
|
||||||
const { WorkspacesDisplay } = imports.ui.workspacesView;
|
const { WorkspacesDisplay } = imports.ui.workspacesView;
|
||||||
|
const Workspace = imports.ui.workspace;
|
||||||
|
|
||||||
|
const { VIGNETTE_BRIGHTNESS } = imports.ui.lightbox;
|
||||||
|
const {
|
||||||
|
SIDE_CONTROLS_ANIMATION_TIME,
|
||||||
|
OverviewAdjustment,
|
||||||
|
ControlsState,
|
||||||
|
} = imports.ui.overviewControls;
|
||||||
|
|
||||||
let MyWorkspacesDisplay = GObject.registerClass(
|
let MyWorkspacesDisplay = GObject.registerClass(
|
||||||
class MyWorkspacesDisplay extends WorkspacesDisplay {
|
class MyWorkspacesDisplay extends WorkspacesDisplay {
|
||||||
_init() {
|
_init(controls, overviewAdjustment) {
|
||||||
let workspaceManager = global.workspace_manager;
|
let workspaceManager = global.workspace_manager;
|
||||||
|
|
||||||
|
this._overviewAdjustment = overviewAdjustment;
|
||||||
this._workspaceAdjustment = new St.Adjustment({
|
this._workspaceAdjustment = new St.Adjustment({
|
||||||
value: workspaceManager.get_active_workspace_index(),
|
value: workspaceManager.get_active_workspace_index(),
|
||||||
lower: 0,
|
lower: 0,
|
||||||
@@ -24,40 +32,32 @@ class MyWorkspacesDisplay extends WorkspacesDisplay {
|
|||||||
workspaceManager.connect('notify::n-workspaces',
|
workspaceManager.connect('notify::n-workspaces',
|
||||||
this._updateAdjustment.bind(this));
|
this._updateAdjustment.bind(this));
|
||||||
|
|
||||||
super._init(this._workspaceAdjustment);
|
super._init(controls, this._workspaceAdjustment, this._overviewAdjustment);
|
||||||
|
|
||||||
|
this._workspaceAdjustment.actor = this;
|
||||||
|
|
||||||
this.add_constraint(
|
this.add_constraint(
|
||||||
new Layout.MonitorConstraint({
|
new Layout.MonitorConstraint({
|
||||||
primary: true,
|
primary: true,
|
||||||
work_area: true,
|
work_area: true,
|
||||||
}));
|
}));
|
||||||
|
|
||||||
this._workareasChangedId = global.display.connect('workareas-changed',
|
|
||||||
this._onWorkAreasChanged.bind(this));
|
|
||||||
this._onWorkAreasChanged();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
show(...args) {
|
prepareToEnterOverview(...args) {
|
||||||
if (!this._scrollEventId) {
|
if (!this._scrollEventId) {
|
||||||
this._scrollEventId = Main.windowPicker.connect('scroll-event',
|
this._scrollEventId = Main.windowPicker.connect('scroll-event',
|
||||||
this._onScrollEvent.bind(this));
|
this._onScrollEvent.bind(this));
|
||||||
}
|
}
|
||||||
|
|
||||||
super.show(...args);
|
super.prepareToEnterOverview(...args);
|
||||||
}
|
}
|
||||||
|
|
||||||
hide(...args) {
|
vfunc_hide(...args) {
|
||||||
if (this._scrollEventId > 0)
|
if (this._scrollEventId > 0)
|
||||||
Main.windowPicker.disconnect(this._scrollEventId);
|
Main.windowPicker.disconnect(this._scrollEventId);
|
||||||
this._scrollEventId = 0;
|
this._scrollEventId = 0;
|
||||||
|
|
||||||
super.hide(...args);
|
super.vfunc_hide(...args);
|
||||||
}
|
|
||||||
|
|
||||||
_onWorkAreasChanged() {
|
|
||||||
let { primaryIndex } = Main.layoutManager;
|
|
||||||
let workarea = Main.layoutManager.getWorkAreaForMonitor(primaryIndex);
|
|
||||||
this.setWorkspacesFullGeometry(workarea);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
_updateAdjustment() {
|
_updateAdjustment() {
|
||||||
@@ -68,25 +68,75 @@ class MyWorkspacesDisplay extends WorkspacesDisplay {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
_updateWorkspacesViews() {
|
_onDestroy() {
|
||||||
super._updateWorkspacesViews();
|
if (this._nWorkspacesChangedId)
|
||||||
|
global.workspace_manager.disconnect(this._nWorkspacesChangedId);
|
||||||
|
this._nWorkspacesChangedId = 0;
|
||||||
|
|
||||||
this._workspacesViews.forEach(v => {
|
super._onDestroy();
|
||||||
Main.layoutManager.overviewGroup.remove_actor(v);
|
}
|
||||||
Main.windowPicker.add_actor(v);
|
});
|
||||||
});
|
|
||||||
|
const MyWorkspace = GObject.registerClass(
|
||||||
|
class MyWorkspace extends Workspace.Workspace {
|
||||||
|
_init(...args) {
|
||||||
|
super._init(...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() {
|
_onDestroy() {
|
||||||
if (this._workareasChangedId)
|
|
||||||
global.display.disconnect(this._workareasChangedId);
|
|
||||||
this._workareasChangedId = 0;
|
|
||||||
|
|
||||||
if (this._nWorkspacesChangedId)
|
|
||||||
global.workspace_manager.disconnect(this._nWorkspacesNotifyId);
|
|
||||||
this._nWorkspacesNotifyId = 0;
|
|
||||||
|
|
||||||
super._onDestroy();
|
super._onDestroy();
|
||||||
|
|
||||||
|
if (this._adjChangedId)
|
||||||
|
this._overviewAdjustment.disconnect(this._adjChangedId);
|
||||||
|
this._adjChangedId = 0;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
const MyWorkspaceBackground = GObject.registerClass(
|
||||||
|
class MyWorkspaceBackground extends Workspace.WorkspaceBackground {
|
||||||
|
_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);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -102,7 +152,9 @@ var WindowPicker = GObject.registerClass({
|
|||||||
this._overlayKeyId = 0;
|
this._overlayKeyId = 0;
|
||||||
this._stageKeyPressId = 0;
|
this._stageKeyPressId = 0;
|
||||||
|
|
||||||
super._init();
|
super._init({ reactive: true });
|
||||||
|
|
||||||
|
this._adjustment = new OverviewAdjustment(this);
|
||||||
|
|
||||||
this.connect('destroy', this._onDestroy.bind(this));
|
this.connect('destroy', this._onDestroy.bind(this));
|
||||||
|
|
||||||
@@ -113,31 +165,14 @@ var WindowPicker = GObject.registerClass({
|
|||||||
this, 'height',
|
this, 'height',
|
||||||
GObject.BindingFlags.SYNC_CREATE);
|
GObject.BindingFlags.SYNC_CREATE);
|
||||||
|
|
||||||
this._backgroundGroup = new Meta.BackgroundGroup({ reactive: true });
|
this._workspacesDisplay = new MyWorkspacesDisplay(this, this._adjustment);
|
||||||
this.add_child(this._backgroundGroup);
|
|
||||||
|
|
||||||
this._backgroundGroup.connect('scroll-event', (a, ev) => {
|
|
||||||
this.emit('scroll-event', ev);
|
|
||||||
});
|
|
||||||
|
|
||||||
// Trick WorkspacesDisplay constructor into adding actions here
|
|
||||||
let addActionOrig = Main.overview.addAction;
|
|
||||||
Main.overview.addAction = a => this._backgroundGroup.add_action(a);
|
|
||||||
|
|
||||||
this._workspacesDisplay = new MyWorkspacesDisplay();
|
|
||||||
this.add_child(this._workspacesDisplay);
|
this.add_child(this._workspacesDisplay);
|
||||||
|
|
||||||
Main.overview.addAction = addActionOrig;
|
|
||||||
|
|
||||||
this._bgManagers = [];
|
|
||||||
|
|
||||||
this._monitorsChangedId = Main.layoutManager.connect('monitors-changed',
|
|
||||||
this._updateBackgrounds.bind(this));
|
|
||||||
this._updateBackgrounds();
|
|
||||||
|
|
||||||
Main.uiGroup.insert_child_below(this, global.window_group);
|
Main.uiGroup.insert_child_below(this, global.window_group);
|
||||||
|
|
||||||
if (!Main.sessionMode.hasOverview) {
|
if (!Main.sessionMode.hasOverview) {
|
||||||
|
this._injectBackgroundShade();
|
||||||
|
|
||||||
this._overlayKeyId = global.display.connect('overlay-key', () => {
|
this._overlayKeyId = global.display.connect('overlay-key', () => {
|
||||||
if (!this._visible)
|
if (!this._visible)
|
||||||
this.open();
|
this.open();
|
||||||
@@ -147,6 +182,14 @@ var WindowPicker = GObject.registerClass({
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_injectBackgroundShade() {
|
||||||
|
this._origWorkspace = Workspace.Workspace;
|
||||||
|
this._origWorkspaceBackground = Workspace.WorkspaceBackground;
|
||||||
|
|
||||||
|
Workspace.Workspace = MyWorkspace;
|
||||||
|
Workspace.WorkspaceBackground = MyWorkspaceBackground;
|
||||||
|
}
|
||||||
|
|
||||||
get visible() {
|
get visible() {
|
||||||
return this._visible;
|
return this._visible;
|
||||||
}
|
}
|
||||||
@@ -161,9 +204,15 @@ var WindowPicker = GObject.registerClass({
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
this._fakeOverviewVisible(true);
|
this._fakeOverviewVisible(true);
|
||||||
this._shadeBackgrounds();
|
this._workspacesDisplay.prepareToEnterOverview();
|
||||||
this._fakeOverviewAnimation();
|
Main.overview._animationInProgress = true;
|
||||||
this._workspacesDisplay.show(false);
|
|
||||||
|
this._adjustment.value = ControlsState.HIDDEN;
|
||||||
|
this._adjustment.ease(ControlsState.WINDOW_PICKER, {
|
||||||
|
duration: SIDE_CONTROLS_ANIMATION_TIME,
|
||||||
|
mode: Clutter.AnimationMode.EASE_OUT_QUAD,
|
||||||
|
onComplete: () => (Main.overview._animationInProgress = false),
|
||||||
|
});
|
||||||
|
|
||||||
this._stageKeyPressId = global.stage.connect('key-press-event',
|
this._stageKeyPressId = global.stage.connect('key-press-event',
|
||||||
(a, event) => {
|
(a, event) => {
|
||||||
@@ -187,11 +236,17 @@ var WindowPicker = GObject.registerClass({
|
|||||||
if (!this._syncGrab())
|
if (!this._syncGrab())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
this._workspacesDisplay.animateFromOverview(false);
|
this._workspacesDisplay.prepareToLeaveOverview();
|
||||||
this._unshadeBackgrounds();
|
|
||||||
this._fakeOverviewAnimation(() => {
|
Main.overview._animationInProgress = true;
|
||||||
this._workspacesDisplay.hide();
|
this._adjustment.ease(ControlsState.HIDDEN, {
|
||||||
this._fakeOverviewVisible(false);
|
duration: SIDE_CONTROLS_ANIMATION_TIME,
|
||||||
|
mode: Clutter.AnimationMode.EASE_OUT_QUAD,
|
||||||
|
onComplete: () => {
|
||||||
|
Main.overview._animationInProgress = false;
|
||||||
|
this._workspacesDisplay.hide();
|
||||||
|
this._fakeOverviewVisible(false);
|
||||||
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
global.stage.disconnect(this._stageKeyPressId);
|
global.stage.disconnect(this._stageKeyPressId);
|
||||||
@@ -200,16 +255,8 @@ var WindowPicker = GObject.registerClass({
|
|||||||
this.emit('open-state-changed', this._visible);
|
this.emit('open-state-changed', this._visible);
|
||||||
}
|
}
|
||||||
|
|
||||||
_fakeOverviewAnimation(onComplete) {
|
getWorkspacesBoxForState() {
|
||||||
Main.overview._animationInProgress = true;
|
return this.allocation;
|
||||||
GLib.timeout_add(
|
|
||||||
GLib.PRIORITY_DEFAULT,
|
|
||||||
Overview.ANIMATION_TIME,
|
|
||||||
() => {
|
|
||||||
Main.overview._animationInProgress = false;
|
|
||||||
if (onComplete)
|
|
||||||
onComplete();
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
_fakeOverviewVisible(visible) {
|
_fakeOverviewVisible(visible) {
|
||||||
@@ -226,22 +273,32 @@ var WindowPicker = GObject.registerClass({
|
|||||||
if (this._modal)
|
if (this._modal)
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
this._modal = Main.pushModal(this, {
|
const grab = Main.pushModal(global.stage, {
|
||||||
actionMode: Shell.ActionMode.OVERVIEW,
|
actionMode: Shell.ActionMode.OVERVIEW,
|
||||||
});
|
});
|
||||||
|
if (grab.get_seat_state() !== Clutter.GrabState.NONE) {
|
||||||
if (!this._modal) {
|
this._grab = grab;
|
||||||
|
this._modal = true;
|
||||||
|
} else {
|
||||||
|
Main.popModal(grab);
|
||||||
this.hide();
|
this.hide();
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
} else if (this._modal) {
|
} else if (this._modal) {
|
||||||
Main.popModal(this);
|
Main.popModal(this._grab);
|
||||||
this._modal = false;
|
this._modal = false;
|
||||||
|
this._grab = null;
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
_onDestroy() {
|
_onDestroy() {
|
||||||
|
if (this._origWorkspace)
|
||||||
|
Workspace.Workspace = this._origWorkspace;
|
||||||
|
|
||||||
|
if (this._origWorkspaceBackground)
|
||||||
|
Workspace.WorkspaceBackground = this._origWorkspaceBackground;
|
||||||
|
|
||||||
if (this._monitorsChangedId)
|
if (this._monitorsChangedId)
|
||||||
Main.layoutManager.disconnect(this._monitorsChangedId);
|
Main.layoutManager.disconnect(this._monitorsChangedId);
|
||||||
this._monitorsChangedId = 0;
|
this._monitorsChangedId = 0;
|
||||||
@@ -254,18 +311,6 @@ var WindowPicker = GObject.registerClass({
|
|||||||
global.stage.disconnect(this._stageKeyPressId);
|
global.stage.disconnect(this._stageKeyPressId);
|
||||||
this._stageKeyPressId = 0;
|
this._stageKeyPressId = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
_updateBackgrounds() {
|
|
||||||
Main.overview._updateBackgrounds.call(this);
|
|
||||||
}
|
|
||||||
|
|
||||||
_shadeBackgrounds() {
|
|
||||||
Main.overview._shadeBackgrounds.call(this);
|
|
||||||
}
|
|
||||||
|
|
||||||
_unshadeBackgrounds() {
|
|
||||||
Main.overview._unshadeBackgrounds.call(this);
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
|
|
||||||
var WindowPickerToggle = GObject.registerClass(
|
var WindowPickerToggle = GObject.registerClass(
|
||||||
@@ -286,8 +331,6 @@ class WindowPickerToggle extends St.Button {
|
|||||||
style_class: 'window-picker-toggle',
|
style_class: 'window-picker-toggle',
|
||||||
child: iconBin,
|
child: iconBin,
|
||||||
visible: !Main.sessionMode.hasOverview,
|
visible: !Main.sessionMode.hasOverview,
|
||||||
x_fill: true,
|
|
||||||
y_fill: true,
|
|
||||||
toggle_mode: true,
|
toggle_mode: true,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -2,12 +2,17 @@
|
|||||||
const { Clutter, Gio, GObject, Meta, St } = imports.gi;
|
const { Clutter, Gio, GObject, Meta, St } = imports.gi;
|
||||||
|
|
||||||
const DND = imports.ui.dnd;
|
const DND = imports.ui.dnd;
|
||||||
|
const ExtensionUtils = imports.misc.extensionUtils;
|
||||||
const Main = imports.ui.main;
|
const Main = imports.ui.main;
|
||||||
const PanelMenu = imports.ui.panelMenu;
|
const PanelMenu = imports.ui.panelMenu;
|
||||||
const PopupMenu = imports.ui.popupMenu;
|
const PopupMenu = imports.ui.popupMenu;
|
||||||
|
|
||||||
const Gettext = imports.gettext.domain('gnome-shell-extensions');
|
const _ = ExtensionUtils.gettext;
|
||||||
const _ = Gettext.gettext;
|
|
||||||
|
const TOOLTIP_OFFSET = 6;
|
||||||
|
const TOOLTIP_ANIMATION_TIME = 150;
|
||||||
|
|
||||||
|
const MAX_THUMBNAILS = 6;
|
||||||
|
|
||||||
let WindowPreview = GObject.registerClass(
|
let WindowPreview = GObject.registerClass(
|
||||||
class WindowPreview extends St.Button {
|
class WindowPreview extends St.Button {
|
||||||
@@ -24,27 +29,14 @@ class WindowPreview extends St.Button {
|
|||||||
this.connect('destroy', this._onDestroy.bind(this));
|
this.connect('destroy', this._onDestroy.bind(this));
|
||||||
|
|
||||||
this._sizeChangedId = this._window.connect('size-changed',
|
this._sizeChangedId = this._window.connect('size-changed',
|
||||||
this._relayout.bind(this));
|
() => this.queue_relayout());
|
||||||
this._positionChangedId = this._window.connect('position-changed',
|
this._positionChangedId = this._window.connect('position-changed',
|
||||||
this._relayout.bind(this));
|
() => {
|
||||||
this._minimizedChangedId = this._window.connect('notify::minimized',
|
this._updateVisible();
|
||||||
this._relayout.bind(this));
|
this.queue_relayout();
|
||||||
this._monitorEnteredId = global.display.connect('window-entered-monitor',
|
|
||||||
this._relayout.bind(this));
|
|
||||||
this._monitorLeftId = global.display.connect('window-left-monitor',
|
|
||||||
this._relayout.bind(this));
|
|
||||||
|
|
||||||
// Do initial layout when we get a parent
|
|
||||||
let id = this.connect('parent-set', () => {
|
|
||||||
this.disconnect(id);
|
|
||||||
if (!this.get_parent())
|
|
||||||
return;
|
|
||||||
this._laterId = Meta.later_add(Meta.LaterType.BEFORE_REDRAW, () => {
|
|
||||||
this._laterId = 0;
|
|
||||||
this._relayout();
|
|
||||||
return false;
|
|
||||||
});
|
});
|
||||||
});
|
this._minimizedChangedId = this._window.connect('notify::minimized',
|
||||||
|
this._updateVisible.bind(this));
|
||||||
|
|
||||||
this._focusChangedId = global.display.connect('notify::focus-window',
|
this._focusChangedId = global.display.connect('notify::focus-window',
|
||||||
this._onFocusChanged.bind(this));
|
this._onFocusChanged.bind(this));
|
||||||
@@ -52,19 +44,15 @@ class WindowPreview extends St.Button {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// needed for DND
|
// needed for DND
|
||||||
get realWindow() {
|
get metaWindow() {
|
||||||
return this._window.get_compositor_private();
|
return this._window;
|
||||||
}
|
}
|
||||||
|
|
||||||
_onDestroy() {
|
_onDestroy() {
|
||||||
this._window.disconnect(this._sizeChangedId);
|
this._window.disconnect(this._sizeChangedId);
|
||||||
this._window.disconnect(this._positionChangedId);
|
this._window.disconnect(this._positionChangedId);
|
||||||
this._window.disconnect(this._minimizedChangedId);
|
this._window.disconnect(this._minimizedChangedId);
|
||||||
global.display.disconnect(this._monitorEnteredId);
|
|
||||||
global.display.disconnect(this._monitorLeftId);
|
|
||||||
global.display.disconnect(this._focusChangedId);
|
global.display.disconnect(this._focusChangedId);
|
||||||
if (this._laterId)
|
|
||||||
Meta.later_remove(this._laterId);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
_onFocusChanged() {
|
_onFocusChanged() {
|
||||||
@@ -74,26 +62,42 @@ class WindowPreview extends St.Button {
|
|||||||
this.remove_style_class_name('active');
|
this.remove_style_class_name('active');
|
||||||
}
|
}
|
||||||
|
|
||||||
_relayout() {
|
_updateVisible() {
|
||||||
let monitor = Main.layoutManager.findIndexForActor(this);
|
const monitor = Main.layoutManager.findIndexForActor(this);
|
||||||
this.visible = monitor === this._window.get_monitor() &&
|
const workArea = Main.layoutManager.getWorkAreaForMonitor(monitor);
|
||||||
|
this.visible = this._window.get_frame_rect().overlap(workArea) &&
|
||||||
this._window.window_type !== Meta.WindowType.DESKTOP &&
|
this._window.window_type !== Meta.WindowType.DESKTOP &&
|
||||||
this._window.showing_on_its_workspace();
|
this._window.showing_on_its_workspace();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
if (!this.visible)
|
let WorkspaceLayout = GObject.registerClass(
|
||||||
return;
|
class WorkspaceLayout extends Clutter.LayoutManager {
|
||||||
|
vfunc_get_preferred_width() {
|
||||||
|
return [0, 0];
|
||||||
|
}
|
||||||
|
|
||||||
let workArea = Main.layoutManager.getWorkAreaForMonitor(monitor);
|
vfunc_get_preferred_height() {
|
||||||
let hscale = this.get_parent().allocation.get_width() / workArea.width;
|
return [0, 0];
|
||||||
let vscale = this.get_parent().allocation.get_height() / workArea.height;
|
}
|
||||||
|
|
||||||
let frameRect = this._window.get_frame_rect();
|
vfunc_allocate(container, box) {
|
||||||
this.set_size(
|
const monitor = Main.layoutManager.findIndexForActor(container);
|
||||||
Math.round(Math.min(frameRect.width, workArea.width) * hscale),
|
const workArea = Main.layoutManager.getWorkAreaForMonitor(monitor);
|
||||||
Math.round(Math.min(frameRect.height, workArea.height) * vscale));
|
const hscale = box.get_width() / workArea.width;
|
||||||
this.set_position(
|
const vscale = box.get_height() / workArea.height;
|
||||||
Math.round(frameRect.x * hscale),
|
|
||||||
Math.round(frameRect.y * vscale));
|
for (const child of container) {
|
||||||
|
const childBox = new Clutter.ActorBox();
|
||||||
|
const frameRect = child.metaWindow.get_frame_rect();
|
||||||
|
childBox.set_size(
|
||||||
|
Math.round(Math.min(frameRect.width, workArea.width) * hscale),
|
||||||
|
Math.round(Math.min(frameRect.height, workArea.height) * vscale));
|
||||||
|
childBox.set_origin(
|
||||||
|
Math.round((frameRect.x - workArea.x) * hscale),
|
||||||
|
Math.round((frameRect.y - workArea.y) * vscale));
|
||||||
|
child.allocate(childBox);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -103,14 +107,19 @@ class WorkspaceThumbnail extends St.Button {
|
|||||||
super._init({
|
super._init({
|
||||||
style_class: 'workspace',
|
style_class: 'workspace',
|
||||||
child: new Clutter.Actor({
|
child: new Clutter.Actor({
|
||||||
layout_manager: new Clutter.BinLayout(),
|
layout_manager: new WorkspaceLayout(),
|
||||||
clip_to_allocation: true,
|
clip_to_allocation: true,
|
||||||
}),
|
}),
|
||||||
x_fill: true,
|
|
||||||
y_fill: true,
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
this._tooltip = new St.Label({
|
||||||
|
style_class: 'dash-label',
|
||||||
|
visible: false,
|
||||||
|
});
|
||||||
|
Main.uiGroup.add_child(this._tooltip);
|
||||||
|
|
||||||
this.connect('destroy', this._onDestroy.bind(this));
|
this.connect('destroy', this._onDestroy.bind(this));
|
||||||
|
this.connect('notify::hover', this._syncTooltip.bind(this));
|
||||||
|
|
||||||
this._index = index;
|
this._index = index;
|
||||||
this._delegate = this; // needed for DND
|
this._delegate = this; // needed for DND
|
||||||
@@ -136,16 +145,15 @@ class WorkspaceThumbnail extends St.Button {
|
|||||||
}
|
}
|
||||||
|
|
||||||
acceptDrop(source) {
|
acceptDrop(source) {
|
||||||
if (!source.realWindow)
|
if (!source.metaWindow)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
let window = source.realWindow.get_meta_window();
|
this._moveWindow(source.metaWindow);
|
||||||
this._moveWindow(window);
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
handleDragOver(source) {
|
handleDragOver(source) {
|
||||||
if (source.realWindow)
|
if (source.metaWindow)
|
||||||
return DND.DragMotionResult.MOVE_DROP;
|
return DND.DragMotionResult.MOVE_DROP;
|
||||||
else
|
else
|
||||||
return DND.DragMotionResult.CONTINUE;
|
return DND.DragMotionResult.CONTINUE;
|
||||||
@@ -196,7 +204,39 @@ class WorkspaceThumbnail extends St.Button {
|
|||||||
ws.activate(global.get_current_time());
|
ws.activate(global.get_current_time());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_syncTooltip() {
|
||||||
|
if (this.hover) {
|
||||||
|
this._tooltip.set({
|
||||||
|
text: Meta.prefs_get_workspace_name(this._index),
|
||||||
|
visible: true,
|
||||||
|
opacity: 0,
|
||||||
|
});
|
||||||
|
|
||||||
|
const [stageX, stageY] = this.get_transformed_position();
|
||||||
|
const thumbWidth = this.allocation.get_width();
|
||||||
|
const tipWidth = this._tooltip.width;
|
||||||
|
const tipHeight = this._tooltip.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._tooltip.set_position(x, y);
|
||||||
|
}
|
||||||
|
|
||||||
|
this._tooltip.ease({
|
||||||
|
opacity: this.hover ? 255 : 0,
|
||||||
|
duration: TOOLTIP_ANIMATION_TIME,
|
||||||
|
mode: Clutter.AnimationMode.EASE_OUT_QUAD,
|
||||||
|
onComplete: () => (this._tooltip.visible = this.hover),
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
_onDestroy() {
|
_onDestroy() {
|
||||||
|
this._tooltip.destroy();
|
||||||
|
|
||||||
this._workspace.disconnect(this._windowAddedId);
|
this._workspace.disconnect(this._windowAddedId);
|
||||||
this._workspace.disconnect(this._windowRemovedId);
|
this._workspace.disconnect(this._windowRemovedId);
|
||||||
global.display.disconnect(this._restackedId);
|
global.display.disconnect(this._restackedId);
|
||||||
@@ -209,6 +249,7 @@ class WorkspaceIndicator extends PanelMenu.Button {
|
|||||||
super._init(0.0, _('Workspace Indicator'), true);
|
super._init(0.0, _('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.menu.actor.remove_style_class_name('panel-menu');
|
this.menu.actor.remove_style_class_name('panel-menu');
|
||||||
|
|
||||||
let container = new St.Widget({
|
let container = new St.Widget({
|
||||||
@@ -248,13 +289,13 @@ class WorkspaceIndicator extends PanelMenu.Button {
|
|||||||
workspaceManager.connect_after('workspace-switched',
|
workspaceManager.connect_after('workspace-switched',
|
||||||
this._onWorkspaceSwitched.bind(this)),
|
this._onWorkspaceSwitched.bind(this)),
|
||||||
workspaceManager.connect('notify::layout-rows',
|
workspaceManager.connect('notify::layout-rows',
|
||||||
this._onWorkspaceOrientationChanged.bind(this)),
|
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._onWorkspaceOrientationChanged();
|
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._settingsChangedId = this._settings.connect(
|
||||||
@@ -273,12 +314,15 @@ class WorkspaceIndicator extends PanelMenu.Button {
|
|||||||
super._onDestroy();
|
super._onDestroy();
|
||||||
}
|
}
|
||||||
|
|
||||||
_onWorkspaceOrientationChanged() {
|
_updateThumbnailVisibility() {
|
||||||
let vertical = global.workspace_manager.layout_rows === -1;
|
const { workspaceManager } = global;
|
||||||
this.reactive = vertical;
|
const vertical = workspaceManager.layout_rows === -1;
|
||||||
|
const useMenu =
|
||||||
|
vertical || workspaceManager.n_workspaces > MAX_THUMBNAILS;
|
||||||
|
this.reactive = useMenu;
|
||||||
|
|
||||||
this._statusBin.visible = vertical;
|
this._statusBin.visible = useMenu;
|
||||||
this._thumbnailsBox.visible = !vertical;
|
this._thumbnailsBox.visible = !useMenu;
|
||||||
}
|
}
|
||||||
|
|
||||||
_onWorkspaceSwitched() {
|
_onWorkspaceSwitched() {
|
||||||
@@ -294,6 +338,7 @@ class WorkspaceIndicator extends PanelMenu.Button {
|
|||||||
_nWorkspacesChanged() {
|
_nWorkspacesChanged() {
|
||||||
this._updateMenu();
|
this._updateMenu();
|
||||||
this._updateThumbnails();
|
this._updateThumbnails();
|
||||||
|
this._updateThumbnailVisibility();
|
||||||
}
|
}
|
||||||
|
|
||||||
_updateMenuOrnament() {
|
_updateMenuOrnament() {
|
||||||
@@ -390,10 +435,5 @@ class WorkspaceIndicator extends PanelMenu.Button {
|
|||||||
let newIndex = this._currentWorkspace + diff;
|
let newIndex = this._currentWorkspace + diff;
|
||||||
this._activate(newIndex);
|
this._activate(newIndex);
|
||||||
}
|
}
|
||||||
|
|
||||||
_allocate(actor, box, flags) {
|
|
||||||
if (actor.get_n_children() > 0)
|
|
||||||
actor.get_first_child().allocate(box, flags);
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -1,52 +1,20 @@
|
|||||||
/* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */
|
/* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */
|
||||||
/* exported init */
|
/* exported init */
|
||||||
const { Clutter, GObject, St } = imports.gi;
|
const { Clutter, Graphene, GObject, St } = imports.gi;
|
||||||
|
|
||||||
const Main = imports.ui.main;
|
const Main = imports.ui.main;
|
||||||
|
const OverviewControls = imports.ui.overviewControls;
|
||||||
const Workspace = imports.ui.workspace;
|
const Workspace = imports.ui.workspace;
|
||||||
const WorkspacesView = imports.ui.workspacesView;
|
const WorkspacesView = imports.ui.workspacesView;
|
||||||
|
|
||||||
class MyWindowOverlay extends Workspace.WindowOverlay {
|
const WINDOW_SLOT = 4;
|
||||||
constructor(windowClone, parentActor) {
|
|
||||||
super(windowClone, parentActor);
|
|
||||||
|
|
||||||
this._id = null;
|
|
||||||
this._text = new St.Label({
|
|
||||||
style_class: 'extension-windowsNavigator-window-tooltip',
|
|
||||||
visible: false,
|
|
||||||
});
|
|
||||||
parentActor.add_actor(this._text);
|
|
||||||
}
|
|
||||||
|
|
||||||
showTooltip() {
|
|
||||||
this._parentActor.set_child_below_sibling(this._text, null);
|
|
||||||
this._text.show();
|
|
||||||
this._text.text = (this._windowClone.slotId + 1).toString();
|
|
||||||
}
|
|
||||||
|
|
||||||
hideTooltip() {
|
|
||||||
if (this._text && this._text.visible)
|
|
||||||
this._text.hide();
|
|
||||||
}
|
|
||||||
|
|
||||||
relayout(animate) {
|
|
||||||
super.relayout(animate);
|
|
||||||
|
|
||||||
let [cloneX, cloneY, cloneWidth_, cloneHeight_] = this._windowClone.slot;
|
|
||||||
|
|
||||||
let textX = cloneX - 2;
|
|
||||||
let textY = cloneY - 2;
|
|
||||||
this._text.set_position(Math.floor(textX) + 5, Math.floor(textY) + 5);
|
|
||||||
this._parentActor.set_child_below_sibling(this._text, null);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
var MyWorkspace = GObject.registerClass(
|
var MyWorkspace = GObject.registerClass(
|
||||||
class MyWorkspace extends Workspace.Workspace {
|
class MyWorkspace extends Workspace.Workspace {
|
||||||
_init(metaWorkspace, monitorIndex) {
|
_init(...args) {
|
||||||
super._init(metaWorkspace, monitorIndex);
|
super._init(...args);
|
||||||
|
|
||||||
if (metaWorkspace && metaWorkspace.index() < 9) {
|
if (this.metaWorkspace && this.metaWorkspace.index() < 9) {
|
||||||
this._tip = new St.Label({
|
this._tip = new St.Label({
|
||||||
style_class: 'extension-windowsNavigator-window-tooltip',
|
style_class: 'extension-windowsNavigator-window-tooltip',
|
||||||
visible: false,
|
visible: false,
|
||||||
@@ -61,63 +29,98 @@ class MyWorkspace extends Workspace.Workspace {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
vfunc_allocate(box) {
|
||||||
|
super.vfunc_allocate(box);
|
||||||
|
|
||||||
|
if (this._tip)
|
||||||
|
this._tip.allocate_preferred_size(0, 0);
|
||||||
|
}
|
||||||
|
|
||||||
showTooltip() {
|
showTooltip() {
|
||||||
if (!this._tip || !this._actualGeometry)
|
if (!this._tip)
|
||||||
return;
|
return;
|
||||||
this._tip.text = (this.metaWorkspace.index() + 1).toString();
|
this._tip.text = (this.metaWorkspace.index() + 1).toString();
|
||||||
|
|
||||||
// Hand code this instead of using _getSpacingAndPadding
|
|
||||||
// because that fails on empty workspaces
|
|
||||||
let node = this.get_theme_node();
|
|
||||||
let padding = {
|
|
||||||
left: node.get_padding(St.Side.LEFT),
|
|
||||||
top: node.get_padding(St.Side.TOP),
|
|
||||||
bottom: node.get_padding(St.Side.BOTTOM),
|
|
||||||
right: node.get_padding(St.Side.RIGHT),
|
|
||||||
};
|
|
||||||
|
|
||||||
let area = Workspace.padArea(this._actualGeometry, padding);
|
|
||||||
this._tip.x = area.x;
|
|
||||||
this._tip.y = area.y;
|
|
||||||
this._tip.show();
|
this._tip.show();
|
||||||
this.set_child_below_sibling(this._tip, null);
|
this.set_child_below_sibling(this._tip, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
hideTooltip() {
|
hideTooltip() {
|
||||||
if (!this._tip)
|
if (this._tip)
|
||||||
return;
|
this._tip.hide();
|
||||||
if (!this._tip.get_parent())
|
|
||||||
return;
|
|
||||||
this._tip.hide();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
getWindowWithTooltip(id) {
|
getWindowWithTooltip(id) {
|
||||||
for (let i = 0; i < this._windows.length; i++) {
|
const { layoutManager } = this._container;
|
||||||
if (this._windows[i].slotId + 1 === id)
|
const slot = layoutManager._windowSlots[id - 1];
|
||||||
return this._windows[i].metaWindow;
|
return slot ? slot[WINDOW_SLOT].metaWindow : null;
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
showWindowsTooltips() {
|
showWindowsTooltips() {
|
||||||
for (let i in this._windowOverlays) {
|
const { layoutManager } = this._container;
|
||||||
if (this._windowOverlays[i])
|
for (let i = 0; i < layoutManager._windowSlots.length; i++) {
|
||||||
this._windowOverlays[i].showTooltip();
|
if (layoutManager._windowSlots[i])
|
||||||
|
layoutManager._windowSlots[i][WINDOW_SLOT].showTooltip(`${i + 1}`);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
hideWindowsTooltips() {
|
hideWindowsTooltips() {
|
||||||
for (let i in this._windowOverlays) {
|
const { layoutManager } = this._container;
|
||||||
if (this._windowOverlays[i])
|
for (let i in layoutManager._windowSlots) {
|
||||||
this._windowOverlays[i].hideTooltip();
|
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;
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
var MyWorkspacesView = GObject.registerClass(
|
var MyWorkspacesView = GObject.registerClass(
|
||||||
class MyWorkspacesView extends WorkspacesView.WorkspacesView {
|
class MyWorkspacesView extends WorkspacesView.WorkspacesView {
|
||||||
_init(width, height, x, y, workspaces) {
|
_init(...args) {
|
||||||
super._init(width, height, x, y, workspaces);
|
super._init(...args);
|
||||||
|
|
||||||
this._pickWorkspace = false;
|
this._pickWorkspace = false;
|
||||||
this._pickWindow = false;
|
this._pickWindow = false;
|
||||||
@@ -161,8 +164,8 @@ class MyWorkspacesView extends WorkspacesView.WorkspacesView {
|
|||||||
}
|
}
|
||||||
|
|
||||||
_onKeyPress(s, o) {
|
_onKeyPress(s, o) {
|
||||||
let { viewSelector } = Main.overview;
|
const { ControlsState } = OverviewControls;
|
||||||
if (viewSelector._activePage !== viewSelector._workspacesPage)
|
if (this._overviewAdjustment.value !== ControlsState.WINDOW_PICKER)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
let workspaceManager = global.workspace_manager;
|
let workspaceManager = global.workspace_manager;
|
||||||
@@ -244,24 +247,24 @@ class MyWorkspacesView extends WorkspacesView.WorkspacesView {
|
|||||||
|
|
||||||
class Extension {
|
class Extension {
|
||||||
constructor() {
|
constructor() {
|
||||||
this._origWindowOverlay = Workspace.WindowOverlay;
|
|
||||||
this._origWorkspace = Workspace.Workspace;
|
this._origWorkspace = Workspace.Workspace;
|
||||||
this._origWorkspacesView = WorkspacesView.WorkspacesView;
|
this._origWorkspacesView = WorkspacesView.WorkspacesView;
|
||||||
}
|
}
|
||||||
|
|
||||||
enable() {
|
enable() {
|
||||||
Workspace.WindowOverlay = MyWindowOverlay;
|
|
||||||
Workspace.Workspace = MyWorkspace;
|
Workspace.Workspace = MyWorkspace;
|
||||||
WorkspacesView.WorkspacesView = MyWorkspacesView;
|
WorkspacesView.WorkspacesView = MyWorkspacesView;
|
||||||
}
|
}
|
||||||
|
|
||||||
disable() {
|
disable() {
|
||||||
Workspace.WindowOverlay = this._origWindowOverlay;
|
|
||||||
Workspace.Workspace = this._origWorkspace;
|
Workspace.Workspace = this._origWorkspace;
|
||||||
WorkspacesView.WorkspacesView = this._origWorkspacesView;
|
WorkspacesView.WorkspacesView = this._origWorkspacesView;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @returns {Extension} - the extension's state object
|
||||||
|
*/
|
||||||
function init() {
|
function init() {
|
||||||
return new Extension();
|
return new Extension();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,12 +9,16 @@ const Main = imports.ui.main;
|
|||||||
const PanelMenu = imports.ui.panelMenu;
|
const PanelMenu = imports.ui.panelMenu;
|
||||||
const PopupMenu = imports.ui.popupMenu;
|
const PopupMenu = imports.ui.popupMenu;
|
||||||
|
|
||||||
const Gettext = imports.gettext.domain('gnome-shell-extensions');
|
const _ = ExtensionUtils.gettext;
|
||||||
const _ = Gettext.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';
|
||||||
|
|
||||||
|
const TOOLTIP_OFFSET = 6;
|
||||||
|
const TOOLTIP_ANIMATION_TIME = 150;
|
||||||
|
|
||||||
|
const MAX_THUMBNAILS = 6;
|
||||||
|
|
||||||
let WindowPreview = GObject.registerClass(
|
let WindowPreview = GObject.registerClass(
|
||||||
class WindowPreview extends St.Button {
|
class WindowPreview extends St.Button {
|
||||||
_init(window) {
|
_init(window) {
|
||||||
@@ -30,27 +34,14 @@ class WindowPreview extends St.Button {
|
|||||||
this.connect('destroy', this._onDestroy.bind(this));
|
this.connect('destroy', this._onDestroy.bind(this));
|
||||||
|
|
||||||
this._sizeChangedId = this._window.connect('size-changed',
|
this._sizeChangedId = this._window.connect('size-changed',
|
||||||
this._relayout.bind(this));
|
() => this.queue_relayout());
|
||||||
this._positionChangedId = this._window.connect('position-changed',
|
this._positionChangedId = this._window.connect('position-changed',
|
||||||
this._relayout.bind(this));
|
() => {
|
||||||
this._minimizedChangedId = this._window.connect('notify::minimized',
|
this._updateVisible();
|
||||||
this._relayout.bind(this));
|
this.queue_relayout();
|
||||||
this._monitorEnteredId = global.display.connect('window-entered-monitor',
|
|
||||||
this._relayout.bind(this));
|
|
||||||
this._monitorLeftId = global.display.connect('window-left-monitor',
|
|
||||||
this._relayout.bind(this));
|
|
||||||
|
|
||||||
// Do initial layout when we get a parent
|
|
||||||
let id = this.connect('parent-set', () => {
|
|
||||||
this.disconnect(id);
|
|
||||||
if (!this.get_parent())
|
|
||||||
return;
|
|
||||||
this._laterId = Meta.later_add(Meta.LaterType.BEFORE_REDRAW, () => {
|
|
||||||
this._laterId = 0;
|
|
||||||
this._relayout();
|
|
||||||
return false;
|
|
||||||
});
|
});
|
||||||
});
|
this._minimizedChangedId = this._window.connect('notify::minimized',
|
||||||
|
this._updateVisible.bind(this));
|
||||||
|
|
||||||
this._focusChangedId = global.display.connect('notify::focus-window',
|
this._focusChangedId = global.display.connect('notify::focus-window',
|
||||||
this._onFocusChanged.bind(this));
|
this._onFocusChanged.bind(this));
|
||||||
@@ -58,19 +49,15 @@ class WindowPreview extends St.Button {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// needed for DND
|
// needed for DND
|
||||||
get realWindow() {
|
get metaWindow() {
|
||||||
return this._window.get_compositor_private();
|
return this._window;
|
||||||
}
|
}
|
||||||
|
|
||||||
_onDestroy() {
|
_onDestroy() {
|
||||||
this._window.disconnect(this._sizeChangedId);
|
this._window.disconnect(this._sizeChangedId);
|
||||||
this._window.disconnect(this._positionChangedId);
|
this._window.disconnect(this._positionChangedId);
|
||||||
this._window.disconnect(this._minimizedChangedId);
|
this._window.disconnect(this._minimizedChangedId);
|
||||||
global.display.disconnect(this._monitorEnteredId);
|
|
||||||
global.display.disconnect(this._monitorLeftId);
|
|
||||||
global.display.disconnect(this._focusChangedId);
|
global.display.disconnect(this._focusChangedId);
|
||||||
if (this._laterId)
|
|
||||||
Meta.later_remove(this._laterId);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
_onFocusChanged() {
|
_onFocusChanged() {
|
||||||
@@ -80,26 +67,42 @@ class WindowPreview extends St.Button {
|
|||||||
this.remove_style_class_name('active');
|
this.remove_style_class_name('active');
|
||||||
}
|
}
|
||||||
|
|
||||||
_relayout() {
|
_updateVisible() {
|
||||||
let monitor = Main.layoutManager.findIndexForActor(this);
|
const monitor = Main.layoutManager.findIndexForActor(this);
|
||||||
this.visible = monitor === this._window.get_monitor() &&
|
const workArea = Main.layoutManager.getWorkAreaForMonitor(monitor);
|
||||||
|
this.visible = this._window.get_frame_rect().overlap(workArea) &&
|
||||||
this._window.window_type !== Meta.WindowType.DESKTOP &&
|
this._window.window_type !== Meta.WindowType.DESKTOP &&
|
||||||
this._window.showing_on_its_workspace();
|
this._window.showing_on_its_workspace();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
if (!this.visible)
|
let WorkspaceLayout = GObject.registerClass(
|
||||||
return;
|
class WorkspaceLayout extends Clutter.LayoutManager {
|
||||||
|
vfunc_get_preferred_width() {
|
||||||
|
return [0, 0];
|
||||||
|
}
|
||||||
|
|
||||||
let workArea = Main.layoutManager.getWorkAreaForMonitor(monitor);
|
vfunc_get_preferred_height() {
|
||||||
let hscale = this.get_parent().allocation.get_width() / workArea.width;
|
return [0, 0];
|
||||||
let vscale = this.get_parent().allocation.get_height() / workArea.height;
|
}
|
||||||
|
|
||||||
let frameRect = this._window.get_frame_rect();
|
vfunc_allocate(container, box) {
|
||||||
this.set_size(
|
const monitor = Main.layoutManager.findIndexForActor(container);
|
||||||
Math.round(Math.min(frameRect.width, workArea.width) * hscale),
|
const workArea = Main.layoutManager.getWorkAreaForMonitor(monitor);
|
||||||
Math.round(Math.min(frameRect.height, workArea.height) * vscale));
|
const hscale = box.get_width() / workArea.width;
|
||||||
this.set_position(
|
const vscale = box.get_height() / workArea.height;
|
||||||
Math.round(frameRect.x * hscale),
|
|
||||||
Math.round(frameRect.y * vscale));
|
for (const child of container) {
|
||||||
|
const childBox = new Clutter.ActorBox();
|
||||||
|
const frameRect = child.metaWindow.get_frame_rect();
|
||||||
|
childBox.set_size(
|
||||||
|
Math.round(Math.min(frameRect.width, workArea.width) * hscale),
|
||||||
|
Math.round(Math.min(frameRect.height, workArea.height) * vscale));
|
||||||
|
childBox.set_origin(
|
||||||
|
Math.round((frameRect.x - workArea.x) * hscale),
|
||||||
|
Math.round((frameRect.y - workArea.y) * vscale));
|
||||||
|
child.allocate(childBox);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -109,14 +112,19 @@ class WorkspaceThumbnail extends St.Button {
|
|||||||
super._init({
|
super._init({
|
||||||
style_class: 'workspace',
|
style_class: 'workspace',
|
||||||
child: new Clutter.Actor({
|
child: new Clutter.Actor({
|
||||||
layout_manager: new Clutter.BinLayout(),
|
layout_manager: new WorkspaceLayout(),
|
||||||
clip_to_allocation: true,
|
clip_to_allocation: true,
|
||||||
}),
|
}),
|
||||||
x_fill: true,
|
|
||||||
y_fill: true,
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
this._tooltip = new St.Label({
|
||||||
|
style_class: 'dash-label',
|
||||||
|
visible: false,
|
||||||
|
});
|
||||||
|
Main.uiGroup.add_child(this._tooltip);
|
||||||
|
|
||||||
this.connect('destroy', this._onDestroy.bind(this));
|
this.connect('destroy', this._onDestroy.bind(this));
|
||||||
|
this.connect('notify::hover', this._syncTooltip.bind(this));
|
||||||
|
|
||||||
this._index = index;
|
this._index = index;
|
||||||
this._delegate = this; // needed for DND
|
this._delegate = this; // needed for DND
|
||||||
@@ -142,16 +150,15 @@ class WorkspaceThumbnail extends St.Button {
|
|||||||
}
|
}
|
||||||
|
|
||||||
acceptDrop(source) {
|
acceptDrop(source) {
|
||||||
if (!source.realWindow)
|
if (!source.metaWindow)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
let window = source.realWindow.get_meta_window();
|
this._moveWindow(source.metaWindow);
|
||||||
this._moveWindow(window);
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
handleDragOver(source) {
|
handleDragOver(source) {
|
||||||
if (source.realWindow)
|
if (source.metaWindow)
|
||||||
return DND.DragMotionResult.MOVE_DROP;
|
return DND.DragMotionResult.MOVE_DROP;
|
||||||
else
|
else
|
||||||
return DND.DragMotionResult.CONTINUE;
|
return DND.DragMotionResult.CONTINUE;
|
||||||
@@ -202,7 +209,39 @@ class WorkspaceThumbnail extends St.Button {
|
|||||||
ws.activate(global.get_current_time());
|
ws.activate(global.get_current_time());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_syncTooltip() {
|
||||||
|
if (this.hover) {
|
||||||
|
this._tooltip.set({
|
||||||
|
text: Meta.prefs_get_workspace_name(this._index),
|
||||||
|
visible: true,
|
||||||
|
opacity: 0,
|
||||||
|
});
|
||||||
|
|
||||||
|
const [stageX, stageY] = this.get_transformed_position();
|
||||||
|
const thumbWidth = this.allocation.get_width();
|
||||||
|
const thumbHeight = this.allocation.get_height();
|
||||||
|
const tipWidth = this._tooltip.width;
|
||||||
|
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 + thumbHeight + TOOLTIP_OFFSET;
|
||||||
|
this._tooltip.set_position(x, y);
|
||||||
|
}
|
||||||
|
|
||||||
|
this._tooltip.ease({
|
||||||
|
opacity: this.hover ? 255 : 0,
|
||||||
|
duration: TOOLTIP_ANIMATION_TIME,
|
||||||
|
mode: Clutter.AnimationMode.EASE_OUT_QUAD,
|
||||||
|
onComplete: () => (this._tooltip.visible = this.hover),
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
_onDestroy() {
|
_onDestroy() {
|
||||||
|
this._tooltip.destroy();
|
||||||
|
|
||||||
this._workspace.disconnect(this._windowAddedId);
|
this._workspace.disconnect(this._windowAddedId);
|
||||||
this._workspace.disconnect(this._windowRemovedId);
|
this._workspace.disconnect(this._windowRemovedId);
|
||||||
global.display.disconnect(this._restackedId);
|
global.display.disconnect(this._restackedId);
|
||||||
@@ -250,14 +289,14 @@ class WorkspaceIndicator extends PanelMenu.Button {
|
|||||||
workspaceManager.connect_after('workspace-switched',
|
workspaceManager.connect_after('workspace-switched',
|
||||||
this._onWorkspaceSwitched.bind(this)),
|
this._onWorkspaceSwitched.bind(this)),
|
||||||
workspaceManager.connect('notify::layout-rows',
|
workspaceManager.connect('notify::layout-rows',
|
||||||
this._onWorkspaceOrientationChanged.bind(this)),
|
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));
|
||||||
this._createWorkspacesSection();
|
this._createWorkspacesSection();
|
||||||
this._updateThumbnails();
|
this._updateThumbnails();
|
||||||
this._onWorkspaceOrientationChanged();
|
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._settingsChangedId = this._settings.connect(
|
||||||
@@ -279,16 +318,19 @@ class WorkspaceIndicator extends PanelMenu.Button {
|
|||||||
super._onDestroy();
|
super._onDestroy();
|
||||||
}
|
}
|
||||||
|
|
||||||
_onWorkspaceOrientationChanged() {
|
_updateThumbnailVisibility() {
|
||||||
let vertical = global.workspace_manager.layout_rows === -1;
|
const { workspaceManager } = global;
|
||||||
this.reactive = vertical;
|
const vertical = workspaceManager.layout_rows === -1;
|
||||||
|
const useMenu =
|
||||||
|
vertical || workspaceManager.n_workspaces > MAX_THUMBNAILS;
|
||||||
|
this.reactive = useMenu;
|
||||||
|
|
||||||
this._statusLabel.visible = vertical;
|
this._statusLabel.visible = useMenu;
|
||||||
this._thumbnailsBox.visible = !vertical;
|
this._thumbnailsBox.visible = !useMenu;
|
||||||
|
|
||||||
// Disable offscreen-redirect when showing the workspace switcher
|
// Disable offscreen-redirect when showing the workspace switcher
|
||||||
// so that clip-to-allocation works
|
// so that clip-to-allocation works
|
||||||
Main.panel.set_offscreen_redirect(vertical
|
Main.panel.set_offscreen_redirect(useMenu
|
||||||
? Clutter.OffscreenRedirect.ALWAYS
|
? Clutter.OffscreenRedirect.ALWAYS
|
||||||
: Clutter.OffscreenRedirect.AUTOMATIC_FOR_OPACITY);
|
: Clutter.OffscreenRedirect.AUTOMATIC_FOR_OPACITY);
|
||||||
}
|
}
|
||||||
@@ -305,6 +347,7 @@ class WorkspaceIndicator extends PanelMenu.Button {
|
|||||||
_nWorkspacesChanged() {
|
_nWorkspacesChanged() {
|
||||||
this._createWorkspacesSection();
|
this._createWorkspacesSection();
|
||||||
this._updateThumbnails();
|
this._updateThumbnails();
|
||||||
|
this._updateThumbnailVisibility();
|
||||||
}
|
}
|
||||||
|
|
||||||
_updateMenuOrnament() {
|
_updateMenuOrnament() {
|
||||||
@@ -399,17 +442,20 @@ class WorkspaceIndicator extends PanelMenu.Button {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
/** */
|
||||||
function init() {
|
function init() {
|
||||||
ExtensionUtils.initTranslations();
|
ExtensionUtils.initTranslations();
|
||||||
}
|
}
|
||||||
|
|
||||||
let _indicator;
|
let _indicator;
|
||||||
|
|
||||||
|
/** */
|
||||||
function enable() {
|
function enable() {
|
||||||
_indicator = new WorkspaceIndicator();
|
_indicator = new WorkspaceIndicator();
|
||||||
Main.panel.addToStatusArea('workspace-indicator', _indicator);
|
Main.panel.addToStatusArea('workspace-indicator', _indicator);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** */
|
||||||
function disable() {
|
function disable() {
|
||||||
_indicator.destroy();
|
_indicator.destroy();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,210 +1,198 @@
|
|||||||
// -*- mode: js2; indent-tabs-mode: nil; js2-basic-offset: 4 -*-
|
// -*- mode: js2; indent-tabs-mode: nil; js2-basic-offset: 4 -*-
|
||||||
/* exported init buildPrefsWidget */
|
/* exported init buildPrefsWidget */
|
||||||
|
|
||||||
const { Gio, GObject, Gtk } = imports.gi;
|
const { Adw, Gio, GLib, GObject, Gtk, Pango } = imports.gi;
|
||||||
|
|
||||||
const Gettext = imports.gettext.domain('gnome-shell-extensions');
|
|
||||||
const _ = Gettext.gettext;
|
|
||||||
const N_ = e => e;
|
|
||||||
|
|
||||||
const ExtensionUtils = imports.misc.extensionUtils;
|
const ExtensionUtils = imports.misc.extensionUtils;
|
||||||
|
|
||||||
|
const _ = ExtensionUtils.gettext;
|
||||||
|
const N_ = e => e;
|
||||||
|
|
||||||
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';
|
||||||
|
|
||||||
const WorkspaceNameModel = GObject.registerClass(
|
|
||||||
class WorkspaceNameModel extends Gtk.ListStore {
|
|
||||||
_init(params) {
|
|
||||||
super._init(params);
|
|
||||||
this.set_column_types([GObject.TYPE_STRING]);
|
|
||||||
|
|
||||||
this.Columns = {
|
|
||||||
LABEL: 0,
|
|
||||||
};
|
|
||||||
|
|
||||||
this._settings = new Gio.Settings({ schema_id: WORKSPACE_SCHEMA });
|
|
||||||
this._reloadFromSettings();
|
|
||||||
|
|
||||||
// overriding class closure doesn't work, because GtkTreeModel
|
|
||||||
// plays tricks with marshallers and class closures
|
|
||||||
this.connect('row-changed', this._onRowChanged.bind(this));
|
|
||||||
this.connect('row-inserted', this._onRowInserted.bind(this));
|
|
||||||
this.connect('row-deleted', this._onRowDeleted.bind(this));
|
|
||||||
}
|
|
||||||
|
|
||||||
_reloadFromSettings() {
|
|
||||||
if (this._preventChanges)
|
|
||||||
return;
|
|
||||||
this._preventChanges = true;
|
|
||||||
|
|
||||||
let newNames = this._settings.get_strv(WORKSPACE_KEY);
|
|
||||||
|
|
||||||
let i = 0;
|
|
||||||
let [ok, iter] = this.get_iter_first();
|
|
||||||
while (ok && i < newNames.length) {
|
|
||||||
this.set(iter, [this.Columns.LABEL], [newNames[i]]);
|
|
||||||
|
|
||||||
ok = this.iter_next(iter);
|
|
||||||
i++;
|
|
||||||
}
|
|
||||||
|
|
||||||
while (ok)
|
|
||||||
ok = this.remove(iter);
|
|
||||||
|
|
||||||
for (; i < newNames.length; i++) {
|
|
||||||
iter = this.append();
|
|
||||||
this.set(iter, [this.Columns.LABEL], [newNames[i]]);
|
|
||||||
}
|
|
||||||
|
|
||||||
this._preventChanges = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
_onRowChanged(self, path, iter) {
|
|
||||||
if (this._preventChanges)
|
|
||||||
return;
|
|
||||||
this._preventChanges = true;
|
|
||||||
|
|
||||||
let index = path.get_indices()[0];
|
|
||||||
let names = this._settings.get_strv(WORKSPACE_KEY);
|
|
||||||
|
|
||||||
if (index >= names.length) {
|
|
||||||
// fill with blanks
|
|
||||||
for (let i = names.length; i <= index; i++)
|
|
||||||
names[i] = '';
|
|
||||||
}
|
|
||||||
|
|
||||||
names[index] = this.get_value(iter, this.Columns.LABEL);
|
|
||||||
|
|
||||||
this._settings.set_strv(WORKSPACE_KEY, names);
|
|
||||||
|
|
||||||
this._preventChanges = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
_onRowInserted(self, path, iter) {
|
|
||||||
if (this._preventChanges)
|
|
||||||
return;
|
|
||||||
this._preventChanges = true;
|
|
||||||
|
|
||||||
let index = path.get_indices()[0];
|
|
||||||
let names = this._settings.get_strv(WORKSPACE_KEY);
|
|
||||||
let label = this.get_value(iter, this.Columns.LABEL) || '';
|
|
||||||
names.splice(index, 0, label);
|
|
||||||
|
|
||||||
this._settings.set_strv(WORKSPACE_KEY, names);
|
|
||||||
|
|
||||||
this._preventChanges = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
_onRowDeleted(self, path) {
|
|
||||||
if (this._preventChanges)
|
|
||||||
return;
|
|
||||||
this._preventChanges = true;
|
|
||||||
|
|
||||||
let index = path.get_indices()[0];
|
|
||||||
let names = this._settings.get_strv(WORKSPACE_KEY);
|
|
||||||
|
|
||||||
if (index >= names.length)
|
|
||||||
return;
|
|
||||||
|
|
||||||
names.splice(index, 1);
|
|
||||||
|
|
||||||
// compact the array
|
|
||||||
for (let i = names.length - 1; i >= 0 && !names[i]; i++)
|
|
||||||
names.pop();
|
|
||||||
|
|
||||||
this._settings.set_strv(WORKSPACE_KEY, names);
|
|
||||||
|
|
||||||
this._preventChanges = false;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
const WorkspaceSettingsWidget = GObject.registerClass(
|
const WorkspaceSettingsWidget = GObject.registerClass(
|
||||||
class WorkspaceSettingsWidget extends Gtk.Grid {
|
class WorkspaceSettingsWidget extends Adw.PreferencesGroup {
|
||||||
_init(params) {
|
_init() {
|
||||||
super._init(params);
|
super._init({
|
||||||
this.margin = 12;
|
title: _('Workspace Names'),
|
||||||
this.orientation = Gtk.Orientation.VERTICAL;
|
|
||||||
|
|
||||||
this.add(new Gtk.Label({
|
|
||||||
label: '<b>%s</b>'.format(_('Workspace Names')),
|
|
||||||
use_markup: true,
|
|
||||||
margin_bottom: 6,
|
|
||||||
hexpand: true,
|
|
||||||
halign: Gtk.Align.START,
|
|
||||||
}));
|
|
||||||
|
|
||||||
let scrolled = new Gtk.ScrolledWindow({ shadow_type: Gtk.ShadowType.IN });
|
|
||||||
scrolled.set_policy(Gtk.PolicyType.NEVER, Gtk.PolicyType.AUTOMATIC);
|
|
||||||
this.add(scrolled);
|
|
||||||
|
|
||||||
this._store = new WorkspaceNameModel();
|
|
||||||
this._treeView = new Gtk.TreeView({
|
|
||||||
model: this._store,
|
|
||||||
headers_visible: false,
|
|
||||||
reorderable: true,
|
|
||||||
hexpand: true,
|
|
||||||
vexpand: true,
|
|
||||||
});
|
});
|
||||||
|
|
||||||
let column = new Gtk.TreeViewColumn({ title: _('Name') });
|
this._list = new Gtk.ListBox({
|
||||||
let renderer = new Gtk.CellRendererText({ editable: true });
|
selection_mode: Gtk.SelectionMode.NONE,
|
||||||
renderer.connect('edited', this._cellEdited.bind(this));
|
css_classes: ['boxed-list'],
|
||||||
column.pack_start(renderer, true);
|
|
||||||
column.add_attribute(renderer, 'text', this._store.Columns.LABEL);
|
|
||||||
this._treeView.append_column(column);
|
|
||||||
|
|
||||||
scrolled.add(this._treeView);
|
|
||||||
|
|
||||||
let toolbar = new Gtk.Toolbar({ icon_size: Gtk.IconSize.SMALL_TOOLBAR });
|
|
||||||
toolbar.get_style_context().add_class(Gtk.STYLE_CLASS_INLINE_TOOLBAR);
|
|
||||||
|
|
||||||
let newButton = new Gtk.ToolButton({ icon_name: 'list-add-symbolic' });
|
|
||||||
newButton.connect('clicked', this._newClicked.bind(this));
|
|
||||||
toolbar.add(newButton);
|
|
||||||
|
|
||||||
let delButton = new Gtk.ToolButton({ icon_name: 'list-remove-symbolic' });
|
|
||||||
delButton.connect('clicked', this._delClicked.bind(this));
|
|
||||||
toolbar.add(delButton);
|
|
||||||
|
|
||||||
let selection = this._treeView.get_selection();
|
|
||||||
selection.connect('changed', () => {
|
|
||||||
delButton.sensitive = selection.count_selected_rows() > 0;
|
|
||||||
});
|
});
|
||||||
delButton.sensitive = selection.count_selected_rows() > 0;
|
this._list.connect('row-activated', (l, row) => row.edit());
|
||||||
|
this.add(this._list);
|
||||||
|
|
||||||
this.add(toolbar);
|
this._list.append(new NewWorkspaceRow());
|
||||||
|
|
||||||
|
this._actionGroup = new Gio.SimpleActionGroup();
|
||||||
|
this._list.insert_action_group('workspaces', this._actionGroup);
|
||||||
|
|
||||||
|
let action;
|
||||||
|
action = new Gio.SimpleAction({ name: 'add' });
|
||||||
|
action.connect('activate', () => {
|
||||||
|
const names = this._settings.get_strv(WORKSPACE_KEY);
|
||||||
|
this._settings.set_strv(WORKSPACE_KEY, [
|
||||||
|
...names,
|
||||||
|
_('Workspace %d').format(names.length + 1),
|
||||||
|
]);
|
||||||
|
});
|
||||||
|
this._actionGroup.add_action(action);
|
||||||
|
|
||||||
|
action = new Gio.SimpleAction({
|
||||||
|
name: 'remove',
|
||||||
|
parameter_type: new GLib.VariantType('s'),
|
||||||
|
});
|
||||||
|
action.connect('activate', (a, param) => {
|
||||||
|
const removed = param.deepUnpack();
|
||||||
|
this._settings.set_strv(WORKSPACE_KEY,
|
||||||
|
this._settings.get_strv(WORKSPACE_KEY)
|
||||||
|
.filter(name => name !== removed));
|
||||||
|
});
|
||||||
|
this._actionGroup.add_action(action);
|
||||||
|
|
||||||
|
action = new Gio.SimpleAction({ name: 'update' });
|
||||||
|
action.connect('activate', () => {
|
||||||
|
const names = this._getWorkspaceRows().map(row => row.name);
|
||||||
|
this._settings.set_strv(WORKSPACE_KEY, names);
|
||||||
|
});
|
||||||
|
this._actionGroup.add_action(action);
|
||||||
|
|
||||||
|
this._settings = new Gio.Settings({
|
||||||
|
schema_id: WORKSPACE_SCHEMA,
|
||||||
|
});
|
||||||
|
this._settings.connect(`changed::${WORKSPACE_KEY}`,
|
||||||
|
this._sync.bind(this));
|
||||||
|
this._sync();
|
||||||
}
|
}
|
||||||
|
|
||||||
_cellEdited(renderer, path, newText) {
|
_getWorkspaceRows() {
|
||||||
let [ok, iter] = this._store.get_iter_from_string(path);
|
return [...this._list].filter(row => row.name);
|
||||||
|
|
||||||
if (ok)
|
|
||||||
this._store.set(iter, [this._store.Columns.LABEL], [newText]);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
_newClicked() {
|
_sync() {
|
||||||
let iter = this._store.append();
|
const rows = this._getWorkspaceRows();
|
||||||
let index = this._store.get_path(iter).get_indices()[0];
|
|
||||||
|
|
||||||
let label = _('Workspace %d').format(index + 1);
|
const oldNames = rows.map(row => row.name);
|
||||||
this._store.set(iter, [this._store.Columns.LABEL], [label]);
|
const newNames = this._settings.get_strv(WORKSPACE_KEY);
|
||||||
}
|
|
||||||
|
|
||||||
_delClicked() {
|
const removed = oldNames.filter(n => !newNames.includes(n));
|
||||||
let [any, model_, iter] = this._treeView.get_selection().get_selected();
|
const added = newNames.filter(n => !oldNames.includes(n));
|
||||||
|
|
||||||
if (any)
|
removed.forEach(n => this._list.remove(rows.find(r => r.name === n)));
|
||||||
this._store.remove(iter);
|
added.forEach(n => {
|
||||||
|
this._list.insert(new WorkspaceRow(n), newNames.indexOf(n));
|
||||||
|
});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
const WorkspaceRow = GObject.registerClass(
|
||||||
|
class WorkspaceRow extends Adw.PreferencesRow {
|
||||||
|
_init(name) {
|
||||||
|
super._init({ name });
|
||||||
|
|
||||||
|
const box = new Gtk.Box({
|
||||||
|
spacing: 12,
|
||||||
|
margin_top: 6,
|
||||||
|
margin_bottom: 6,
|
||||||
|
margin_start: 6,
|
||||||
|
margin_end: 6,
|
||||||
|
});
|
||||||
|
|
||||||
|
const label = new Gtk.Label({
|
||||||
|
hexpand: true,
|
||||||
|
xalign: 0,
|
||||||
|
max_width_chars: 25,
|
||||||
|
ellipsize: Pango.EllipsizeMode.END,
|
||||||
|
});
|
||||||
|
this.bind_property('name', label, 'label',
|
||||||
|
GObject.BindingFlags.SYNC_CREATE);
|
||||||
|
box.append(label);
|
||||||
|
|
||||||
|
const button = new Gtk.Button({
|
||||||
|
action_name: 'workspaces.remove',
|
||||||
|
action_target: new GLib.Variant('s', name),
|
||||||
|
icon_name: 'edit-delete-symbolic',
|
||||||
|
has_frame: false,
|
||||||
|
});
|
||||||
|
box.append(button);
|
||||||
|
|
||||||
|
this._entry = new Gtk.Entry({
|
||||||
|
max_width_chars: 25,
|
||||||
|
});
|
||||||
|
|
||||||
|
const controller = new Gtk.ShortcutController();
|
||||||
|
controller.add_shortcut(new Gtk.Shortcut({
|
||||||
|
trigger: Gtk.ShortcutTrigger.parse_string('Escape'),
|
||||||
|
action: Gtk.CallbackAction.new(() => {
|
||||||
|
this._stopEdit();
|
||||||
|
return true;
|
||||||
|
}),
|
||||||
|
}));
|
||||||
|
this._entry.add_controller(controller);
|
||||||
|
|
||||||
|
this._stack = new Gtk.Stack();
|
||||||
|
this._stack.add_named(box, 'display');
|
||||||
|
this._stack.add_named(this._entry, 'edit');
|
||||||
|
this.child = this._stack;
|
||||||
|
|
||||||
|
this._entry.connect('activate', () => {
|
||||||
|
this.name = this._entry.text;
|
||||||
|
this._stopEdit();
|
||||||
|
});
|
||||||
|
this._entry.connect('notify::has-focus', () => {
|
||||||
|
if (this._entry.has_focus)
|
||||||
|
return;
|
||||||
|
this._stopEdit();
|
||||||
|
});
|
||||||
|
|
||||||
|
this.connect('notify::name', () => {
|
||||||
|
button.action_target = new GLib.Variant('s', this.name);
|
||||||
|
this.activate_action('workspaces.update', null);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
edit() {
|
||||||
|
this._entry.text = this.name;
|
||||||
|
this._entry.grab_focus();
|
||||||
|
this._stack.visible_child_name = 'edit';
|
||||||
|
}
|
||||||
|
|
||||||
|
_stopEdit() {
|
||||||
|
this.grab_focus();
|
||||||
|
this._stack.visible_child_name = 'display';
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
const NewWorkspaceRow = GObject.registerClass(
|
||||||
|
class NewWorkspaceRow extends Adw.PreferencesRow {
|
||||||
|
_init() {
|
||||||
|
super._init({
|
||||||
|
action_name: 'workspaces.add',
|
||||||
|
child: new Gtk.Image({
|
||||||
|
icon_name: 'list-add-symbolic',
|
||||||
|
pixel_size: 16,
|
||||||
|
margin_top: 12,
|
||||||
|
margin_bottom: 12,
|
||||||
|
margin_start: 12,
|
||||||
|
margin_end: 12,
|
||||||
|
}),
|
||||||
|
});
|
||||||
|
this.update_property(
|
||||||
|
[Gtk.AccessibleProperty.LABEL], [_('Add Workspace')]);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
/** */
|
||||||
function init() {
|
function init() {
|
||||||
ExtensionUtils.initTranslations();
|
ExtensionUtils.initTranslations();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @returns {Gtk.Widget} - the prefs widget
|
||||||
|
*/
|
||||||
function buildPrefsWidget() {
|
function buildPrefsWidget() {
|
||||||
let widget = new WorkspaceSettingsWidget();
|
return new WorkspaceSettingsWidget();
|
||||||
widget.show_all();
|
|
||||||
|
|
||||||
return widget;
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,40 +1,28 @@
|
|||||||
.panel-workspace-indicator {
|
.panel-workspace-indicator {
|
||||||
padding: 0 8px;
|
padding: 0 8px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.panel-workspace-indicator-box {
|
.panel-workspace-indicator-box {
|
||||||
padding: 2px 0;
|
padding: 4px 0;
|
||||||
|
spacing: 4px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.panel-workspace-indicator-box .workspace {
|
.panel-workspace-indicator-box .workspace {
|
||||||
width: 40px;
|
width: 40px;
|
||||||
|
border: 2px solid #000;
|
||||||
|
border-radius: 2px;
|
||||||
|
background-color: #595959;
|
||||||
}
|
}
|
||||||
|
|
||||||
.panel-workspace-indicator,
|
|
||||||
.panel-workspace-indicator-box .workspace {
|
|
||||||
border: 1px solid #cccccc;
|
|
||||||
}
|
|
||||||
|
|
||||||
.panel-workspace-indicator,
|
|
||||||
.panel-workspace-indicator-box .workspace.active {
|
.panel-workspace-indicator-box .workspace.active {
|
||||||
background-color: rgba(200, 200, 200, .5);
|
border-color: #fff;
|
||||||
}
|
|
||||||
|
|
||||||
.panel-workspace-indicator-box .workspace {
|
|
||||||
background-color: rgba(200, 200, 200, .3);
|
|
||||||
border-left-width: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.panel-workspace-indicator-box .workspace:first-child {
|
|
||||||
border-left-width: 1px;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.workspace-indicator-window-preview {
|
.workspace-indicator-window-preview {
|
||||||
background-color: #252525;
|
background-color: #bebebe;
|
||||||
border: 1px solid #ccc;
|
border: 1px solid #828282;
|
||||||
}
|
}
|
||||||
|
|
||||||
.workspace-indicator-window-preview.active {
|
.workspace-indicator-window-preview.active {
|
||||||
background-color: #353535;
|
background-color: #d4d4d4;
|
||||||
border: 2px solid #ccc;
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -34,4 +34,10 @@ and will be picked automatically at next login.
|
|||||||
<gnome:userid>fmuellner</gnome:userid>
|
<gnome:userid>fmuellner</gnome:userid>
|
||||||
</foaf:Person>
|
</foaf:Person>
|
||||||
</maintainer>
|
</maintainer>
|
||||||
|
<maintainer>
|
||||||
|
<foaf:Person>
|
||||||
|
<foaf:name>Marge Bot</foaf:name>
|
||||||
|
<gnome:userid>marge-bot</gnome:userid>
|
||||||
|
</foaf:Person>
|
||||||
|
</maintainer>
|
||||||
</Project>
|
</Project>
|
||||||
|
|||||||
+43
-8
@@ -1,7 +1,12 @@
|
|||||||
---
|
---
|
||||||
|
# SPDX-License-Identifier: MIT OR LGPL-2.0-or-later
|
||||||
|
# SPDX-FileCopyrightText: 2018 Claudio André <claudioandre.br@gmail.com>
|
||||||
env:
|
env:
|
||||||
es6: true
|
es6: true
|
||||||
|
es2020: true
|
||||||
extends: 'eslint:recommended'
|
extends: 'eslint:recommended'
|
||||||
|
plugins:
|
||||||
|
- jsdoc
|
||||||
rules:
|
rules:
|
||||||
array-bracket-newline:
|
array-bracket-newline:
|
||||||
- error
|
- error
|
||||||
@@ -24,7 +29,9 @@ rules:
|
|||||||
# allow: [^vfunc_, ^on_, _instance_init]
|
# allow: [^vfunc_, ^on_, _instance_init]
|
||||||
comma-dangle:
|
comma-dangle:
|
||||||
- error
|
- error
|
||||||
- always-multiline
|
- arrays: always-multiline
|
||||||
|
objects: always-multiline
|
||||||
|
functions: never
|
||||||
comma-spacing:
|
comma-spacing:
|
||||||
- error
|
- error
|
||||||
- before: false
|
- before: false
|
||||||
@@ -57,6 +64,17 @@ rules:
|
|||||||
- 'CallExpression[callee.object.name=GObject][callee.property.name=registerClass] > ClassExpression:first-child'
|
- 'CallExpression[callee.object.name=GObject][callee.property.name=registerClass] > ClassExpression:first-child'
|
||||||
# Allow dedenting chained member expressions
|
# Allow dedenting chained member expressions
|
||||||
MemberExpression: 'off'
|
MemberExpression: 'off'
|
||||||
|
jsdoc/check-alignment: error
|
||||||
|
jsdoc/check-param-names: error
|
||||||
|
jsdoc/check-tag-names: error
|
||||||
|
jsdoc/check-types: error
|
||||||
|
jsdoc/implements-on-classes: error
|
||||||
|
jsdoc/newline-after-description: error
|
||||||
|
jsdoc/require-jsdoc: error
|
||||||
|
jsdoc/require-param: error
|
||||||
|
jsdoc/require-param-description: error
|
||||||
|
jsdoc/require-param-name: error
|
||||||
|
jsdoc/require-param-type: error
|
||||||
key-spacing:
|
key-spacing:
|
||||||
- error
|
- error
|
||||||
- beforeColon: false
|
- beforeColon: false
|
||||||
@@ -87,6 +105,7 @@ rules:
|
|||||||
- error
|
- error
|
||||||
- all
|
- all
|
||||||
- conditionalAssign: false
|
- conditionalAssign: false
|
||||||
|
nestedBinaryExpressions: false
|
||||||
returnAssign: false
|
returnAssign: false
|
||||||
no-implicit-coercion:
|
no-implicit-coercion:
|
||||||
- error
|
- error
|
||||||
@@ -103,17 +122,24 @@ rules:
|
|||||||
no-octal-escape: error
|
no-octal-escape: error
|
||||||
no-proto: error
|
no-proto: error
|
||||||
no-prototype-builtins: 'off'
|
no-prototype-builtins: 'off'
|
||||||
|
no-restricted-globals: [error, window]
|
||||||
no-restricted-properties:
|
no-restricted-properties:
|
||||||
- error
|
- error
|
||||||
|
- object: imports
|
||||||
|
property: format
|
||||||
|
message: Use template strings
|
||||||
|
- object: pkg
|
||||||
|
property: initFormat
|
||||||
|
message: Use template strings
|
||||||
|
- object: Lang
|
||||||
|
property: copyProperties
|
||||||
|
message: Use Object.assign()
|
||||||
- object: Lang
|
- object: Lang
|
||||||
property: bind
|
property: bind
|
||||||
message: Use arrow notation or Function.prototype.bind()
|
message: Use arrow notation or Function.prototype.bind()
|
||||||
- object: Lang
|
- object: Lang
|
||||||
property: Class
|
property: Class
|
||||||
message: Use ES6 classes
|
message: Use ES6 classes
|
||||||
- object: imports
|
|
||||||
property: mainloop
|
|
||||||
message: Use GLib main loops and timeouts
|
|
||||||
no-restricted-syntax:
|
no-restricted-syntax:
|
||||||
- error
|
- error
|
||||||
- selector: >-
|
- selector: >-
|
||||||
@@ -129,6 +155,8 @@ rules:
|
|||||||
BlockStatement[body.length=1]
|
BlockStatement[body.length=1]
|
||||||
CallExpression[arguments.length=0][callee.object.type="Super"][callee.property.name="_init"]
|
CallExpression[arguments.length=0][callee.object.type="Super"][callee.property.name="_init"]
|
||||||
message: _init() that only calls super._init() is unnecessary
|
message: _init() that only calls super._init() is unnecessary
|
||||||
|
- selector: BinaryExpression[operator="instanceof"][right.name="Array"]
|
||||||
|
message: Use Array.isArray()
|
||||||
no-return-assign: error
|
no-return-assign: error
|
||||||
no-return-await: error
|
no-return-await: error
|
||||||
no-self-compare: error
|
no-self-compare: error
|
||||||
@@ -161,10 +189,14 @@ rules:
|
|||||||
object-curly-newline:
|
object-curly-newline:
|
||||||
- error
|
- error
|
||||||
- consistent: true
|
- consistent: true
|
||||||
|
multiline: true
|
||||||
object-curly-spacing: error
|
object-curly-spacing: error
|
||||||
object-shorthand: error
|
object-shorthand: error
|
||||||
operator-assignment: error
|
operator-assignment: error
|
||||||
operator-linebreak: error
|
operator-linebreak: error
|
||||||
|
padded-blocks:
|
||||||
|
- error
|
||||||
|
- never
|
||||||
# These may be a bit controversial, we can try them out and enable them later
|
# These may be a bit controversial, we can try them out and enable them later
|
||||||
# prefer-const: error
|
# prefer-const: error
|
||||||
# prefer-destructuring: error
|
# prefer-destructuring: error
|
||||||
@@ -205,18 +237,19 @@ rules:
|
|||||||
template-curly-spacing: error
|
template-curly-spacing: error
|
||||||
template-tag-spacing: error
|
template-tag-spacing: error
|
||||||
unicode-bom: error
|
unicode-bom: error
|
||||||
valid-jsdoc:
|
|
||||||
- error
|
|
||||||
- requireReturn: false
|
|
||||||
wrap-iife:
|
wrap-iife:
|
||||||
- error
|
- error
|
||||||
- inside
|
- inside
|
||||||
yield-star-spacing: error
|
yield-star-spacing: error
|
||||||
yoda: error
|
yoda: error
|
||||||
|
settings:
|
||||||
|
jsdoc:
|
||||||
|
mode: typescript
|
||||||
globals:
|
globals:
|
||||||
ARGV: readonly
|
ARGV: readonly
|
||||||
Debugger: readonly
|
Debugger: readonly
|
||||||
GIRepositoryGType: readonly
|
GIRepositoryGType: readonly
|
||||||
|
globalThis: readonly
|
||||||
imports: readonly
|
imports: readonly
|
||||||
Intl: readonly
|
Intl: readonly
|
||||||
log: readonly
|
log: readonly
|
||||||
@@ -224,5 +257,7 @@ globals:
|
|||||||
print: readonly
|
print: readonly
|
||||||
printerr: readonly
|
printerr: readonly
|
||||||
window: readonly
|
window: readonly
|
||||||
|
TextEncoder: readonly
|
||||||
|
TextDecoder: readonly
|
||||||
parserOptions:
|
parserOptions:
|
||||||
ecmaVersion: 2017
|
ecmaVersion: 2020
|
||||||
|
|||||||
+14
-11
@@ -1,11 +1,12 @@
|
|||||||
project('gnome-shell-extensions',
|
project('gnome-shell-extensions',
|
||||||
version: '3.35.91',
|
version: '42.beta',
|
||||||
meson_version: '>= 0.44.0',
|
meson_version: '>= 0.53.0',
|
||||||
license: 'GPL2+'
|
license: 'GPL2+'
|
||||||
)
|
)
|
||||||
|
|
||||||
gettext_domain = meson.project_name()
|
gettext_domain = meson.project_name()
|
||||||
|
|
||||||
|
fs = import('fs')
|
||||||
gnome = import('gnome')
|
gnome = import('gnome')
|
||||||
i18n = import('i18n')
|
i18n = import('i18n')
|
||||||
|
|
||||||
@@ -19,21 +20,15 @@ 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')
|
||||||
xsessiondir = join_paths(datadir, 'xsessions')
|
xsessiondir = join_paths(datadir, 'xsessions')
|
||||||
|
wlsessiondir = join_paths(datadir, 'wayland-sessions')
|
||||||
js60 = find_program('js60', required: false)
|
|
||||||
|
|
||||||
ver_arr = meson.project_version().split('.')
|
ver_arr = meson.project_version().split('.')
|
||||||
if ver_arr[1].to_int().is_even()
|
shell_version = ver_arr[0]
|
||||||
shell_version = '@0@.@1@'.format(ver_arr[0], ver_arr[1])
|
|
||||||
else
|
|
||||||
shell_version = '.'.join(ver_arr)
|
|
||||||
endif
|
|
||||||
|
|
||||||
uuid_suffix = '@gnome-shell-extensions.gcampax.github.com'
|
uuid_suffix = '@gnome-shell-extensions.gcampax.github.com'
|
||||||
|
|
||||||
classic_extensions = [
|
classic_extensions = [
|
||||||
'apps-menu',
|
'apps-menu',
|
||||||
'horizontal-workspaces',
|
|
||||||
'places-menu',
|
'places-menu',
|
||||||
'launch-new-instance',
|
'launch-new-instance',
|
||||||
'window-list'
|
'window-list'
|
||||||
@@ -88,9 +83,17 @@ foreach e : enabled_extensions
|
|||||||
endforeach
|
endforeach
|
||||||
|
|
||||||
if classic_mode_enabled
|
if classic_mode_enabled
|
||||||
sassc = find_program('sassc', required: true)
|
|
||||||
subdir('data')
|
subdir('data')
|
||||||
|
meson.add_install_script(
|
||||||
|
'meson/session-post-install.py',
|
||||||
|
join_paths(get_option('prefix'), datadir)
|
||||||
|
)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
subdir('extensions')
|
subdir('extensions')
|
||||||
subdir('po')
|
subdir('po')
|
||||||
|
|
||||||
|
meson.add_dist_script('meson/generate-stylesheets.py')
|
||||||
|
meson.add_dist_script('meson/check-version.py',
|
||||||
|
meson.project_version(),
|
||||||
|
'NEWS')
|
||||||
|
|||||||
Executable
+32
@@ -0,0 +1,32 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
|
import os, sys
|
||||||
|
from pathlib import Path
|
||||||
|
import argparse, subprocess
|
||||||
|
|
||||||
|
def check_version(version, file, type='news'):
|
||||||
|
if type == 'news':
|
||||||
|
line = file.open().readline()
|
||||||
|
ok = line.startswith(version)
|
||||||
|
print("{}: {}".format(file, "OK" if ok else "FAILED"))
|
||||||
|
if not ok:
|
||||||
|
raise Exception("{} does not start with {}".format(file, version))
|
||||||
|
elif type == 'metainfo':
|
||||||
|
subprocess.run(['appstream-util', 'validate-version', file, version],
|
||||||
|
check=True)
|
||||||
|
else:
|
||||||
|
raise Exception('Not implemented')
|
||||||
|
|
||||||
|
parser = argparse.ArgumentParser(description='Check release version information.')
|
||||||
|
parser.add_argument('--type', choices=['metainfo','news'], default='news')
|
||||||
|
parser.add_argument('version', help='the version to check for')
|
||||||
|
parser.add_argument('files', nargs='+', help='files to check')
|
||||||
|
args = parser.parse_args()
|
||||||
|
|
||||||
|
distroot = os.environ.get('MESON_DIST_ROOT', './')
|
||||||
|
|
||||||
|
try:
|
||||||
|
for file in args.files:
|
||||||
|
check_version(args.version, Path(distroot, file), args.type)
|
||||||
|
except:
|
||||||
|
sys.exit(1)
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
#!/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)
|
||||||
Executable
+20
@@ -0,0 +1,20 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
|
import os
|
||||||
|
import shutil
|
||||||
|
import sys
|
||||||
|
|
||||||
|
if os.environ.get('DESTDIR'):
|
||||||
|
install_root = os.environ.get('DESTDIR') + os.path.abspath(sys.argv[1])
|
||||||
|
else:
|
||||||
|
install_root = sys.argv[1]
|
||||||
|
|
||||||
|
# FIXME: Meson is unable to copy a generated target file:
|
||||||
|
# https://groups.google.com/forum/#!topic/mesonbuild/3iIoYPrN4P0
|
||||||
|
dst_dir = os.path.join(install_root, 'wayland-sessions')
|
||||||
|
if not os.path.exists(dst_dir):
|
||||||
|
os.makedirs(dst_dir)
|
||||||
|
|
||||||
|
src = os.path.join(install_root, 'xsessions', 'gnome-classic.desktop')
|
||||||
|
dst = os.path.join(dst_dir, 'gnome-classic.desktop')
|
||||||
|
shutil.copyfile(src, dst)
|
||||||
@@ -1,3 +1,4 @@
|
|||||||
|
ab
|
||||||
af
|
af
|
||||||
an
|
an
|
||||||
ar
|
ar
|
||||||
@@ -32,6 +33,7 @@ id
|
|||||||
is
|
is
|
||||||
it
|
it
|
||||||
ja
|
ja
|
||||||
|
kab
|
||||||
kk
|
kk
|
||||||
km
|
km
|
||||||
kn
|
kn
|
||||||
|
|||||||
+2
-2
@@ -1,5 +1,6 @@
|
|||||||
data/gnome-classic.desktop.in
|
data/gnome-classic.desktop.in
|
||||||
data/gnome-classic.session.desktop.in
|
data/gnome-classic-wayland.desktop.in
|
||||||
|
data/gnome-classic-xorg.desktop.in
|
||||||
extensions/apps-menu/extension.js
|
extensions/apps-menu/extension.js
|
||||||
extensions/auto-move-windows/extension.js
|
extensions/auto-move-windows/extension.js
|
||||||
extensions/auto-move-windows/org.gnome.shell.extensions.auto-move-windows.gschema.xml
|
extensions/auto-move-windows/org.gnome.shell.extensions.auto-move-windows.gschema.xml
|
||||||
@@ -10,7 +11,6 @@ extensions/native-window-placement/org.gnome.shell.extensions.native-window-plac
|
|||||||
extensions/places-menu/extension.js
|
extensions/places-menu/extension.js
|
||||||
extensions/places-menu/placeDisplay.js
|
extensions/places-menu/placeDisplay.js
|
||||||
extensions/screenshot-window-sizer/org.gnome.shell.extensions.screenshot-window-sizer.gschema.xml
|
extensions/screenshot-window-sizer/org.gnome.shell.extensions.screenshot-window-sizer.gschema.xml
|
||||||
extensions/user-theme/extension.js
|
|
||||||
extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml
|
extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml
|
||||||
extensions/window-list/extension.js
|
extensions/window-list/extension.js
|
||||||
extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml
|
extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml
|
||||||
|
|||||||
@@ -0,0 +1,261 @@
|
|||||||
|
# Abkhazian translation for gnome-shell-extensions.
|
||||||
|
# Copyright (C) 2022 gnome-shell-extensions's COPYRIGHT HOLDER
|
||||||
|
# This file is distributed under the same license as the gnome-shell-extensions package.
|
||||||
|
# Нанба Наала <naala-nanba@rambler.ru>, 2022.
|
||||||
|
#
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: gnome-shell-extensions main\n"
|
||||||
|
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell-extensions/"
|
||||||
|
"issues\n"
|
||||||
|
"POT-Creation-Date: 2022-02-12 02:08+0000\n"
|
||||||
|
"PO-Revision-Date: 2022-02-12 02:08+0000\n"
|
||||||
|
"Last-Translator: Нанба Наала <naala-nanba@rambler.ru>, 2022\n"
|
||||||
|
"Language-Team: Abkhazian <ab@li.org>\n"
|
||||||
|
"Language: ab\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
|
||||||
|
#: data/gnome-classic.desktop.in:3
|
||||||
|
msgid "GNOME Classic"
|
||||||
|
msgstr "Аклассикатә GNOME"
|
||||||
|
|
||||||
|
#: 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"
|
||||||
|
msgstr "Ари асеанс аклассикатә усуратә еишәа GNOME хархәагас иамоуп "
|
||||||
|
|
||||||
|
#: 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:112
|
||||||
|
msgid "Favorites"
|
||||||
|
msgstr "Иалкаау"
|
||||||
|
|
||||||
|
#: extensions/apps-menu/extension.js:370
|
||||||
|
msgid "Applications"
|
||||||
|
msgstr "Аԥшьқәа"
|
||||||
|
|
||||||
|
#: extensions/auto-move-windows/org.gnome.shell.extensions.auto-move-windows.gschema.xml:6
|
||||||
|
msgid "Application and workspace list"
|
||||||
|
msgstr "Аԥшьи аусуратә ҵакырақәа рыхьӡынҵеи"
|
||||||
|
|
||||||
|
#: extensions/auto-move-windows/org.gnome.shell.extensions.auto-move-windows.gschema.xml:7
|
||||||
|
msgid ""
|
||||||
|
"A list of strings, each containing an application id (desktop file name), "
|
||||||
|
"followed by a colon and the workspace number"
|
||||||
|
msgstr "Ацәаҳәақәа рыхьӡынҵа аиԥшрагәаҭага аԥшьы (desktop-фаил ахьӡ )"
|
||||||
|
"змоу, зашьҭахь ҩ-кәаԥки аусуратә ҭыԥ аномери гылоу "
|
||||||
|
|
||||||
|
#: extensions/auto-move-windows/prefs.js:19
|
||||||
|
msgid "Workspace Rules"
|
||||||
|
msgstr "Аусуратә ҵакыра аԥҟаррақәа"
|
||||||
|
|
||||||
|
#: extensions/auto-move-windows/prefs.js:245
|
||||||
|
msgid "Add Rule"
|
||||||
|
msgstr "Аԥҟара ацҵара"
|
||||||
|
|
||||||
|
#. TRANSLATORS: %s is the filesystem name
|
||||||
|
#: extensions/drive-menu/extension.js:123
|
||||||
|
#: extensions/places-menu/placeDisplay.js:210
|
||||||
|
#, javascript-format
|
||||||
|
msgid "Ejecting drive “%s” failed:"
|
||||||
|
msgstr "Адиск «%s» аҭыгара залымшахеит:"
|
||||||
|
|
||||||
|
#: extensions/drive-menu/extension.js:139
|
||||||
|
msgid "Removable devices"
|
||||||
|
msgstr "Иаҿыҵуа аиҿартәырақәа"
|
||||||
|
|
||||||
|
#: extensions/drive-menu/extension.js:161
|
||||||
|
msgid "Open Files"
|
||||||
|
msgstr "Афаил аартра"
|
||||||
|
|
||||||
|
#: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:5
|
||||||
|
msgid "Use more screen for windows"
|
||||||
|
msgstr "Изыцҵоу аекран аҵакыра аԥенџьырқәа рзы ахархәара"
|
||||||
|
|
||||||
|
#: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:6
|
||||||
|
msgid ""
|
||||||
|
"Try to use more screen for placing window thumbnails by adapting to screen "
|
||||||
|
"aspect ratio, and consolidating them further to reduce the bounding box. "
|
||||||
|
"This setting applies only with the natural placement strategy."
|
||||||
|
msgstr "Шәхы иашәырхәа изыцҵоу аекран аҵакыра аминиатиура атыԥаркразы"
|
||||||
|
"аекран аганқәа реизышәара ԥсахуа аҭыԥыркра шәыржәпала, анаҩс адаԥа ҳәаақәызҵо ашәагаа архәыҷразы"
|
||||||
|
"ари ахышәара ахархәара аиуоит аминиатиура «natural» аҭыԥыркра алгоритм ахархәараан"
|
||||||
|
|
||||||
|
#: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:11
|
||||||
|
msgid "Place window captions on top"
|
||||||
|
msgstr " Аԥенџьырқәа рыхқәа хыхь рҭыԥыркра"
|
||||||
|
|
||||||
|
#: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:12
|
||||||
|
msgid ""
|
||||||
|
"If true, place window captions on top the respective thumbnail, overriding "
|
||||||
|
"shell default of placing it at the bottom. Changing this setting requires "
|
||||||
|
"restarting the shell to have any effect."
|
||||||
|
msgstr "Иалхзар, ахқәа аминиатиура хыхьтәи ахәҭаҟны аҭыԥ ааныркылалоит"
|
||||||
|
"(ишыҟоу еиԥш ахқәа ҵаҟатәи аҭыԥ ааныркылоит).Ари ахышәара аԥсахраан,"
|
||||||
|
"уи аус аура иалагарцазы, иаҭахуп Shell аиҭарура."
|
||||||
|
|
||||||
|
#: extensions/places-menu/extension.js:88
|
||||||
|
#: extensions/places-menu/extension.js:91
|
||||||
|
msgid "Places"
|
||||||
|
msgstr "Аҭыԥқәа"
|
||||||
|
|
||||||
|
#: extensions/places-menu/placeDisplay.js:49
|
||||||
|
#, javascript-format
|
||||||
|
msgid "Failed to launch “%s”"
|
||||||
|
msgstr " «%s» аус арура залшом"
|
||||||
|
|
||||||
|
#: extensions/places-menu/placeDisplay.js:64
|
||||||
|
#, javascript-format
|
||||||
|
msgid "Failed to mount volume for “%s”"
|
||||||
|
msgstr "Иамоуӡит атом аибыҭара «%s» азы"
|
||||||
|
|
||||||
|
#: extensions/places-menu/placeDisplay.js:125
|
||||||
|
#: extensions/places-menu/placeDisplay.js:148
|
||||||
|
msgid "Computer"
|
||||||
|
msgstr "Акомпиутер"
|
||||||
|
|
||||||
|
#: extensions/places-menu/placeDisplay.js:336
|
||||||
|
msgid "Home"
|
||||||
|
msgstr "Аҩнытәи аҭаӡ"
|
||||||
|
|
||||||
|
#: extensions/places-menu/placeDisplay.js:381
|
||||||
|
msgid "Browse Network"
|
||||||
|
msgstr "Аҳа алаԥшхагара"
|
||||||
|
|
||||||
|
#: extensions/screenshot-window-sizer/org.gnome.shell.extensions.screenshot-window-sizer.gschema.xml:7
|
||||||
|
msgid "Cycle Screenshot Sizes"
|
||||||
|
msgstr "Аекран аҭыхымҭа ашәагаақәа рыԥсахра"
|
||||||
|
|
||||||
|
#: extensions/screenshot-window-sizer/org.gnome.shell.extensions.screenshot-window-sizer.gschema.xml:11
|
||||||
|
msgid "Cycle Screenshot Sizes Backward"
|
||||||
|
msgstr "Аекран аҭыхымҭа ашәагаақәа шьҭахьҟатәи ахырхарҭала рыԥсахра"
|
||||||
|
|
||||||
|
#: extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml:5
|
||||||
|
msgid "Theme name"
|
||||||
|
msgstr "Атема ахьӡ"
|
||||||
|
|
||||||
|
#: extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml:6
|
||||||
|
msgid "The name of the theme, to be loaded from ~/.themes/name/gnome-shell"
|
||||||
|
msgstr "~/.themes/name/gnome-shell аҟынтә иҭагалоу атема ахьӡ "
|
||||||
|
|
||||||
|
#: extensions/window-list/extension.js:72
|
||||||
|
msgid "Close"
|
||||||
|
msgstr "Аркра"
|
||||||
|
|
||||||
|
#: extensions/window-list/extension.js:92
|
||||||
|
msgid "Unminimize"
|
||||||
|
msgstr "Архынҳәра"
|
||||||
|
|
||||||
|
#: extensions/window-list/extension.js:92
|
||||||
|
msgid "Minimize"
|
||||||
|
msgstr "Аиҟәырҳәра"
|
||||||
|
|
||||||
|
#: extensions/window-list/extension.js:99
|
||||||
|
msgid "Unmaximize"
|
||||||
|
msgstr "Аиҭашьақәыргылара"
|
||||||
|
|
||||||
|
#: extensions/window-list/extension.js:99
|
||||||
|
msgid "Maximize"
|
||||||
|
msgstr "Аиҵыхра"
|
||||||
|
|
||||||
|
#: extensions/window-list/extension.js:434
|
||||||
|
msgid "Minimize all"
|
||||||
|
msgstr "Зегьы реиҟәырҳәра"
|
||||||
|
|
||||||
|
#: extensions/window-list/extension.js:440
|
||||||
|
msgid "Unminimize all"
|
||||||
|
msgstr "Зегьы рырхынҳәра"
|
||||||
|
|
||||||
|
#: extensions/window-list/extension.js:446
|
||||||
|
msgid "Maximize all"
|
||||||
|
msgstr "Зегьы реиҵыхра"
|
||||||
|
|
||||||
|
#: extensions/window-list/extension.js:454
|
||||||
|
msgid "Unmaximize all"
|
||||||
|
msgstr "Зегьы реиҭашьақәыргылара"
|
||||||
|
|
||||||
|
#: extensions/window-list/extension.js:462
|
||||||
|
msgid "Close all"
|
||||||
|
msgstr "Зегьы рыркра"
|
||||||
|
|
||||||
|
#: extensions/window-list/extension.js:741
|
||||||
|
msgid "Window List"
|
||||||
|
msgstr "Аԥенџьырқәа рыхьӡынҵа"
|
||||||
|
|
||||||
|
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:12
|
||||||
|
msgid "When to group windows"
|
||||||
|
msgstr "Аԥенџьырқәа аидыргәыԥлара анаҭаху"
|
||||||
|
|
||||||
|
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:13
|
||||||
|
msgid ""
|
||||||
|
"Decides when to group windows from the same application on the window list. "
|
||||||
|
"Possible values are “never”, “auto” and “always”."
|
||||||
|
msgstr "Иҳәаақәнаҵоит, ианаҭаху ԥшьык иаҵанакуа аԥенџьырқәа реидыргәыԥлара, аԥенџьырқәа рыхьӡынҵаҟны"
|
||||||
|
" Иҟалар зылшо аҵакқәа : «never» — ахаан; «auto» — автоматла; «always» — есқьынгьы"
|
||||||
|
|
||||||
|
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:20
|
||||||
|
#: extensions/window-list/prefs.js:76
|
||||||
|
msgid "Show windows from all workspaces"
|
||||||
|
msgstr "Аҵакырақәа зегьы рҟынтә аԥенџьырқәа раарԥшра"
|
||||||
|
|
||||||
|
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:21
|
||||||
|
msgid "Whether to show windows from all workspaces or only the current one."
|
||||||
|
msgstr
|
||||||
|
"Аԥенџьырқәа рыхьӡынҵа аусуратә ҵакырақәа зегь рҟынтә акәу,мамзар уажәтәи аҟынтә акәу ишаарԥшлатәу"
|
||||||
|
|
||||||
|
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:27
|
||||||
|
msgid "Show the window list on all monitors"
|
||||||
|
msgstr "Аԥенџьырқәа рыхьӡынҵа амониторқәа зегьы рҟны рырбара"
|
||||||
|
|
||||||
|
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:28
|
||||||
|
msgid ""
|
||||||
|
"Whether to show the window list on all connected monitors or only on the "
|
||||||
|
"primary one."
|
||||||
|
msgstr
|
||||||
|
"Аԥенџьырқәа рыхьӡынҵа иаҿаку амониторқәа зегьы рыҟноума иахьаарԥшлатәу , мамзар ихадоу аҟны акәу."
|
||||||
|
|
||||||
|
#: extensions/window-list/prefs.js:32
|
||||||
|
msgid "Window Grouping"
|
||||||
|
msgstr "Аԥенџьырқәа реидыргәыԥлара"
|
||||||
|
|
||||||
|
#: extensions/window-list/prefs.js:37
|
||||||
|
msgid "Never group windows"
|
||||||
|
msgstr "Ахаангьы аԥенџьырқәа реидмыргәыԥлара"
|
||||||
|
|
||||||
|
#: extensions/window-list/prefs.js:38
|
||||||
|
msgid "Group windows when space is limited"
|
||||||
|
msgstr "Аҭыԥ маҷхазар, аԥенџьырқәа еидшәыргәыԥла"
|
||||||
|
|
||||||
|
#: extensions/window-list/prefs.js:39
|
||||||
|
msgid "Always group windows"
|
||||||
|
msgstr "Еснагь аԥенџьырқәа реидыргәыԥлара"
|
||||||
|
|
||||||
|
#: extensions/window-list/prefs.js:63
|
||||||
|
msgid "Show on all monitors"
|
||||||
|
msgstr "Амониторқәа зегьы рҟны рырбара"
|
||||||
|
|
||||||
|
#: extensions/window-list/workspaceIndicator.js:249
|
||||||
|
#: extensions/workspace-indicator/extension.js:254
|
||||||
|
msgid "Workspace Indicator"
|
||||||
|
msgstr "Аусуратә ҵакыра аиндикатор"
|
||||||
|
|
||||||
|
#: extensions/workspace-indicator/prefs.js:18
|
||||||
|
msgid "Workspace Names"
|
||||||
|
msgstr "Аусуратә ҵакырақәа рыхьӡқәа"
|
||||||
|
|
||||||
|
#: extensions/workspace-indicator/prefs.js:39
|
||||||
|
#, javascript-format
|
||||||
|
msgid "Workspace %d"
|
||||||
|
msgstr "Аусуратә ҵакыра %d"
|
||||||
|
|
||||||
|
#: extensions/workspace-indicator/prefs.js:184
|
||||||
|
msgid "Add Workspace"
|
||||||
|
msgstr "Аусуратә ҵакыра ацҵара"
|
||||||
@@ -6,11 +6,11 @@
|
|||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: gnome-shell-extensions master\n"
|
"Project-Id-Version: gnome-shell-extensions master\n"
|
||||||
"Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
|
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell-extensions/"
|
||||||
"shell&keywords=I18N+L10N&component=extensions\n"
|
"issues\n"
|
||||||
"POT-Creation-Date: 2017-08-19 16:41+0000\n"
|
"POT-Creation-Date: 2021-01-20 23:03+0000\n"
|
||||||
"PO-Revision-Date: 2017-09-01 17:56+0300\n"
|
"PO-Revision-Date: 2021-01-24 15:33+0300\n"
|
||||||
"Last-Translator: Yuras Shumovich <shumovichy@gmail.com>\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"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
@@ -18,9 +18,9 @@ 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 1.8.11\n"
|
"X-Generator: Poedit 2.4.2\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"
|
msgstr "Класічны GNOME"
|
||||||
|
|
||||||
@@ -28,171 +28,69 @@ msgstr "Класічны GNOME"
|
|||||||
msgid "This session logs you into GNOME Classic"
|
msgid "This session logs you into GNOME Classic"
|
||||||
msgstr "Гэты сеанс выкарыстоўвае класічны GNOME"
|
msgstr "Гэты сеанс выкарыстоўвае класічны GNOME"
|
||||||
|
|
||||||
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:7
|
#: extensions/apps-menu/extension.js:113
|
||||||
msgid "Attach modal dialog to the parent window"
|
|
||||||
msgstr "Прымацаваць мадальны дыялог да бацькоўскага акна"
|
|
||||||
|
|
||||||
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:8
|
|
||||||
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:25
|
|
||||||
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:33
|
|
||||||
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:41
|
|
||||||
msgid ""
|
|
||||||
"This key overrides the key in org.gnome.mutter when running GNOME Shell."
|
|
||||||
msgstr "Гэты ключ засланяе ключ у org.gnome.mutter калі запушчаны GNOME Shell."
|
|
||||||
|
|
||||||
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:16
|
|
||||||
msgid "Arrangement of buttons on the titlebar"
|
|
||||||
msgstr "Парадак кнопак у загалоўнай стужцы"
|
|
||||||
|
|
||||||
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:17
|
|
||||||
msgid ""
|
|
||||||
"This key overrides the key in org.gnome.desktop.wm.preferences when running "
|
|
||||||
"GNOME Shell."
|
|
||||||
msgstr ""
|
|
||||||
"Гэты ключ засланяе ключ у org.gnome.desktop.wm.preferences калі запушчаны "
|
|
||||||
"GNOME Shell."
|
|
||||||
|
|
||||||
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:24
|
|
||||||
msgid "Enable edge tiling when dropping windows on screen edges"
|
|
||||||
msgstr "Аўтаматычна змяняць памеры акна пры перамяшчэнні да края экрана"
|
|
||||||
|
|
||||||
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:32
|
|
||||||
msgid "Workspaces only on primary monitor"
|
|
||||||
msgstr "Працоўныя прасторы толькі на асноўным маніторы"
|
|
||||||
|
|
||||||
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:40
|
|
||||||
msgid "Delay focus changes in mouse mode until the pointer stops moving"
|
|
||||||
msgstr "Затрымліваць змяненні фокуса ў рэжыме мышы да спынення паказальніка"
|
|
||||||
|
|
||||||
#: extensions/alternate-tab/prefs.js:20
|
|
||||||
msgid "Thumbnail only"
|
|
||||||
msgstr "Толькі мініяцюра"
|
|
||||||
|
|
||||||
#: extensions/alternate-tab/prefs.js:21
|
|
||||||
msgid "Application icon only"
|
|
||||||
msgstr "Толькі значок праграмы"
|
|
||||||
|
|
||||||
#: extensions/alternate-tab/prefs.js:22
|
|
||||||
msgid "Thumbnail and application icon"
|
|
||||||
msgstr "Мініяцюра і значок праграмы"
|
|
||||||
|
|
||||||
#: extensions/alternate-tab/prefs.js:38
|
|
||||||
msgid "Present windows as"
|
|
||||||
msgstr "Адлюстроўваць вокны як"
|
|
||||||
|
|
||||||
#: extensions/alternate-tab/prefs.js:69
|
|
||||||
msgid "Show only windows in the current workspace"
|
|
||||||
msgstr "Паказваць вокны толькі з бягучай працоўная прасторы"
|
|
||||||
|
|
||||||
#: extensions/apps-menu/extension.js:41
|
|
||||||
msgid "Activities Overview"
|
|
||||||
msgstr "Агляд заняткаў"
|
|
||||||
|
|
||||||
#: extensions/apps-menu/extension.js:141
|
|
||||||
msgid "Favorites"
|
msgid "Favorites"
|
||||||
msgstr "Упадабаныя"
|
msgstr "Абраныя"
|
||||||
|
|
||||||
#: extensions/apps-menu/extension.js:436
|
#: extensions/apps-menu/extension.js:369
|
||||||
msgid "Applications"
|
msgid "Applications"
|
||||||
msgstr "Праграмы"
|
msgstr "Праграмы"
|
||||||
|
|
||||||
#: extensions/auto-move-windows/org.gnome.shell.extensions.auto-move-windows.gschema.xml:6
|
#: extensions/auto-move-windows/org.gnome.shell.extensions.auto-move-windows.gschema.xml:6
|
||||||
msgid "Application and workspace list"
|
msgid "Application and workspace list"
|
||||||
msgstr "Праграма і спіс працоўных прастораў"
|
msgstr "Праграма і спіс працоўных прастор"
|
||||||
|
|
||||||
#: extensions/auto-move-windows/org.gnome.shell.extensions.auto-move-windows.gschema.xml:7
|
#: extensions/auto-move-windows/org.gnome.shell.extensions.auto-move-windows.gschema.xml:7
|
||||||
msgid ""
|
msgid ""
|
||||||
"A list of strings, each containing an application id (desktop file name), "
|
"A list of strings, each containing an application id (desktop file name), "
|
||||||
"followed by a colon and the workspace number"
|
"followed by a colon and the workspace number"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Спіс радкоў, кожны з якіх утрымлівае ідэнтыфікатар праграмы (імя *.desktop "
|
"Спіс радкоў, кожны з якіх змяшчае ідэнтыфікатар праграмы (імя файла *."
|
||||||
"файла), затым двукроп'е і нумар працоўнай прасторы"
|
"desktop), затым двукроп'е і нумар працоўнай прасторы"
|
||||||
|
|
||||||
#: extensions/auto-move-windows/prefs.js:60
|
#: extensions/auto-move-windows/prefs.js:35
|
||||||
msgid "Application"
|
msgid "Workspace Rules"
|
||||||
msgstr "Праграма"
|
msgstr "Правілы для працоўнай прасторы"
|
||||||
|
|
||||||
#: extensions/auto-move-windows/prefs.js:69
|
#: extensions/auto-move-windows/prefs.js:237
|
||||||
#: extensions/auto-move-windows/prefs.js:127
|
|
||||||
msgid "Workspace"
|
|
||||||
msgstr "Працоўная прастора"
|
|
||||||
|
|
||||||
#: extensions/auto-move-windows/prefs.js:85
|
|
||||||
msgid "Add Rule"
|
msgid "Add Rule"
|
||||||
msgstr "Дадаць правіла"
|
msgstr "Дадаць правіла"
|
||||||
|
|
||||||
#: extensions/auto-move-windows/prefs.js:106
|
|
||||||
msgid "Create new matching rule"
|
|
||||||
msgstr "Стварыць новае правіла адпаведнасці"
|
|
||||||
|
|
||||||
#: extensions/auto-move-windows/prefs.js:111
|
|
||||||
msgid "Add"
|
|
||||||
msgstr "Дадаць"
|
|
||||||
|
|
||||||
#. TRANSLATORS: %s is the filesystem name
|
#. TRANSLATORS: %s is the filesystem name
|
||||||
#: extensions/drive-menu/extension.js:107
|
#: extensions/drive-menu/extension.js:112
|
||||||
|
#: 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:125
|
#: extensions/drive-menu/extension.js:128
|
||||||
msgid "Removable devices"
|
msgid "Removable devices"
|
||||||
msgstr "Зменныя прыстасаванні"
|
msgstr "Здымныя прылады"
|
||||||
|
|
||||||
#: extensions/drive-menu/extension.js:150
|
#: extensions/drive-menu/extension.js:155
|
||||||
msgid "Open Files"
|
msgid "Open Files"
|
||||||
msgstr "Адкрыць файлы"
|
msgstr "Адкрыць файлы"
|
||||||
|
|
||||||
#: extensions/example/extension.js:17
|
|
||||||
msgid "Hello, world!"
|
|
||||||
msgstr "Прывітанне, свет!"
|
|
||||||
|
|
||||||
#: extensions/example/org.gnome.shell.extensions.example.gschema.xml:5
|
|
||||||
msgid "Alternative greeting text."
|
|
||||||
msgstr "Альтэрнатыўны тэкст вітання."
|
|
||||||
|
|
||||||
#: extensions/example/org.gnome.shell.extensions.example.gschema.xml:6
|
|
||||||
msgid ""
|
|
||||||
"If not empty, it contains the text that will be shown when clicking on the "
|
|
||||||
"panel."
|
|
||||||
msgstr ""
|
|
||||||
"Калі не пуста, ўтрымлівае тэкст, які будзе паказвацца пры націсканні на "
|
|
||||||
"панэль."
|
|
||||||
|
|
||||||
#: extensions/example/prefs.js:30
|
|
||||||
msgid "Message"
|
|
||||||
msgstr "Паведамленне"
|
|
||||||
|
|
||||||
#. TRANSLATORS: Example is the name of the extension, should not be
|
|
||||||
#. translated
|
|
||||||
#: extensions/example/prefs.js:43
|
|
||||||
msgid ""
|
|
||||||
"Example aims to show how to build well behaved extensions for the Shell and "
|
|
||||||
"as such it has little functionality on its own.\n"
|
|
||||||
"Nevertheless it’s possible to customize the greeting message."
|
|
||||||
msgstr ""
|
|
||||||
"Example пакажа як ствараць пашырэнні для Shell. Сам па сабе ён мае мала "
|
|
||||||
"функцыянальнасці.\n"
|
|
||||||
"Тым не менш, можна змяніць тэкст прывітання."
|
|
||||||
|
|
||||||
#: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:5
|
#: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:5
|
||||||
|
#, 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 ""
|
||||||
"Спрабаваць выкарыстаць большую плошчу экрана для размяшчэння мініяцюр шляхам "
|
"Спрабаваць выкарыстаць большую плошчу экрана для размяшчэння мініяцюр праз "
|
||||||
"змянення суадносінаў бакоў экрана і ўшчыльняючы іх з мэтай змяншэння памераў "
|
"змяненне суадносінаў бакоў экрана, ўшчыльняючы іх, каб зменшыць памеры "
|
||||||
"абмежавальнай рамкі. Гэты параметр ужываецца толькі разам з звычайным "
|
"абмежавальнай рамкі. Гэты параметр ужываецца толькі з натуральным "
|
||||||
"размяшчэннем мініяцюр."
|
"размяшчэннем мініяцюр."
|
||||||
|
|
||||||
#: 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"
|
||||||
msgstr "Змяшчаць загалоўкі вокнаў зверху"
|
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 ""
|
||||||
@@ -200,156 +98,243 @@ 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:78
|
#: extensions/places-menu/extension.js:89
|
||||||
#: extensions/places-menu/extension.js:81
|
#: extensions/places-menu/extension.js:93
|
||||||
msgid "Places"
|
msgid "Places"
|
||||||
msgstr "Месцы"
|
msgstr "Месцы"
|
||||||
|
|
||||||
#: extensions/places-menu/placeDisplay.js:65
|
#: extensions/places-menu/placeDisplay.js:46
|
||||||
#, javascript-format
|
|
||||||
msgid "Failed to mount volume for “%s”"
|
|
||||||
msgstr "Не ўдалося прымацаваць том для \"%s\"."
|
|
||||||
|
|
||||||
#: extensions/places-menu/placeDisplay.js:78
|
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "Failed to launch “%s”"
|
msgid "Failed to launch “%s”"
|
||||||
msgstr "Не ўдалося запусціць \"%s\""
|
msgstr "Не ўдалося запусціць «%s»"
|
||||||
|
|
||||||
#: extensions/places-menu/placeDisplay.js:137
|
#: extensions/places-menu/placeDisplay.js:61
|
||||||
#: extensions/places-menu/placeDisplay.js:160
|
#, javascript-format
|
||||||
|
msgid "Failed to mount volume for “%s”"
|
||||||
|
msgstr "Не ўдалося прымацаваць том для «%s»."
|
||||||
|
|
||||||
|
#: extensions/places-menu/placeDisplay.js:148
|
||||||
|
#: extensions/places-menu/placeDisplay.js:171
|
||||||
msgid "Computer"
|
msgid "Computer"
|
||||||
msgstr "Камп'ютар"
|
msgstr "Камп'ютар"
|
||||||
|
|
||||||
#: extensions/places-menu/placeDisplay.js:303
|
#: extensions/places-menu/placeDisplay.js:359
|
||||||
msgid "Home"
|
msgid "Home"
|
||||||
msgstr "Дамашняя папка"
|
msgstr "Хатняя папка"
|
||||||
|
|
||||||
#: extensions/places-menu/placeDisplay.js:347
|
#: extensions/places-menu/placeDisplay.js:404
|
||||||
msgid "Browse Network"
|
msgid "Browse Network"
|
||||||
msgstr "Агляд сеткі"
|
msgstr "Агляд сеткі"
|
||||||
|
|
||||||
#: extensions/screenshot-window-sizer/org.gnome.shell.extensions.screenshot-window-sizer.gschema.xml:7
|
#: extensions/screenshot-window-sizer/org.gnome.shell.extensions.screenshot-window-sizer.gschema.xml:7
|
||||||
msgid "Cycle Screenshot Sizes"
|
msgid "Cycle Screenshot Sizes"
|
||||||
msgstr "Чаргаваць памеры экраннага здымка"
|
msgstr "Паслядоўнасць змены памераў для здымка экрана"
|
||||||
|
|
||||||
#: extensions/screenshot-window-sizer/org.gnome.shell.extensions.screenshot-window-sizer.gschema.xml:11
|
#: extensions/screenshot-window-sizer/org.gnome.shell.extensions.screenshot-window-sizer.gschema.xml:11
|
||||||
msgid "Cycle Screenshot Sizes Backward"
|
msgid "Cycle Screenshot Sizes Backward"
|
||||||
msgstr "Чаргаваць памеры экраннага здымка ў адваротным напрамку"
|
msgstr "Адваротная паслядоўнасць змены памераў для здымка экрана"
|
||||||
|
|
||||||
#: extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml:5
|
#: extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml:5
|
||||||
msgid "Theme name"
|
msgid "Theme name"
|
||||||
msgstr "Імя матыву аздаблення"
|
msgstr "Назва тэмы"
|
||||||
|
|
||||||
#: extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml:6
|
#: extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml:6
|
||||||
msgid "The name of the theme, to be loaded from ~/.themes/name/gnome-shell"
|
msgid "The name of the theme, to be loaded from ~/.themes/name/gnome-shell"
|
||||||
msgstr ""
|
msgstr "Назва тэмы, што загрузіцца з ~/.themes/name/gnome-shell"
|
||||||
"Імя матыву аздаблення, які будзе загружаны з ~/.themes/name/gnome-shell"
|
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:110
|
#: extensions/window-list/extension.js:98
|
||||||
msgid "Close"
|
msgid "Close"
|
||||||
msgstr "Закрыць"
|
msgstr "Закрыць"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:129
|
#: extensions/window-list/extension.js:118
|
||||||
msgid "Unminimize"
|
msgid "Unminimize"
|
||||||
msgstr "Скасаваць мінімалізацыю"
|
msgstr "Скасаваць згортванне"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:130
|
#: extensions/window-list/extension.js:118
|
||||||
msgid "Minimize"
|
msgid "Minimize"
|
||||||
msgstr "Мінімалізаваць"
|
msgstr "Згарнуць"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:136
|
#: extensions/window-list/extension.js:125
|
||||||
msgid "Unmaximize"
|
msgid "Unmaximize"
|
||||||
msgstr "Скасаваць максімалізацыю"
|
msgstr "Скасаваць разгортванне"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:137
|
#: extensions/window-list/extension.js:125
|
||||||
msgid "Maximize"
|
msgid "Maximize"
|
||||||
msgstr "Максімалізаваць"
|
msgstr "Разгарнуць"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:420
|
#: extensions/window-list/extension.js:432
|
||||||
msgid "Minimize all"
|
msgid "Minimize all"
|
||||||
msgstr "Мінімалізаваць усе"
|
msgstr "Згарнуць усе"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:428
|
#: extensions/window-list/extension.js:438
|
||||||
msgid "Unminimize all"
|
msgid "Unminimize all"
|
||||||
msgstr "Скасаваць мінімалізацыю для ўсіх"
|
msgstr "Скасаваць згортванне для ўсіх"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:436
|
#: extensions/window-list/extension.js:444
|
||||||
msgid "Maximize all"
|
msgid "Maximize all"
|
||||||
msgstr "Максімалізаваць усе"
|
msgstr "Разгарнуць усе"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:445
|
#: extensions/window-list/extension.js:452
|
||||||
msgid "Unmaximize all"
|
msgid "Unmaximize all"
|
||||||
msgstr "Скасаваць максімалізацыю для ўсіх"
|
msgstr "Скасаваць разгортванне для ўсіх"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:454
|
#: extensions/window-list/extension.js:460
|
||||||
msgid "Close all"
|
msgid "Close all"
|
||||||
msgstr "Закрыць усе"
|
msgstr "Закрыць усе"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:678
|
#: extensions/window-list/extension.js:737
|
||||||
#: extensions/workspace-indicator/extension.js:30
|
|
||||||
msgid "Workspace Indicator"
|
|
||||||
msgstr "Індыкатар працоўнай прасторы"
|
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:842
|
|
||||||
msgid "Window List"
|
msgid "Window List"
|
||||||
msgstr "Спіс вокнаў"
|
msgstr "Спіс вокнаў"
|
||||||
|
|
||||||
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:12
|
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:12
|
||||||
msgid "When to group windows"
|
msgid "When to group windows"
|
||||||
msgstr "Калі групаваць вокны"
|
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 “never”, “auto” and “always”."
|
"Possible values are “never”, “auto” and “always”."
|
||||||
msgstr ""
|
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
|
||||||
msgid "Show the window list on all monitors"
|
#: extensions/window-list/prefs.js:100
|
||||||
msgstr "Паказаць спіс вокнаў на ўсіх маніторах"
|
msgid "Show windows from all workspaces"
|
||||||
|
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."
|
||||||
|
msgstr "Паказваць вокны з усіх працоўных прастор ці толькі з бягучай."
|
||||||
|
|
||||||
|
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:27
|
||||||
|
msgid "Show the window list on all monitors"
|
||||||
|
msgstr "Паказваць спіс вокнаў на ўсіх маніторах"
|
||||||
|
|
||||||
|
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:28
|
||||||
msgid ""
|
msgid ""
|
||||||
"Whether to show the window list on all connected monitors or only on the "
|
"Whether to show the window list on all connected monitors or only on the "
|
||||||
"primary one."
|
"primary one."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Ці паказваць спіс вокнаў на ўсіх злучаных маніторах або толькі на галоўным."
|
"Паказваць спіс вокнаў на ўсіх падлучаных маніторах ці толькі на асноўным."
|
||||||
|
|
||||||
#: extensions/window-list/prefs.js:32
|
#: extensions/window-list/prefs.js:29
|
||||||
msgid "Window Grouping"
|
msgid "Window Grouping"
|
||||||
msgstr "Групаванне вокнаў"
|
msgstr "Групаванне вокнаў"
|
||||||
|
|
||||||
#: extensions/window-list/prefs.js:50
|
#: extensions/window-list/prefs.js:58
|
||||||
msgid "Never group windows"
|
msgid "Never group windows"
|
||||||
msgstr "Ніколі не групаваць вокны"
|
msgstr "Ніколі не групаваць вокны"
|
||||||
|
|
||||||
#: extensions/window-list/prefs.js:51
|
#: extensions/window-list/prefs.js:59
|
||||||
msgid "Group windows when space is limited"
|
msgid "Group windows when space is limited"
|
||||||
msgstr "Групаваць вокны калі не хапае месца"
|
msgstr "Групаваць вокны калі не хапае месца"
|
||||||
|
|
||||||
#: extensions/window-list/prefs.js:52
|
#: extensions/window-list/prefs.js:60
|
||||||
msgid "Always group windows"
|
msgid "Always group windows"
|
||||||
msgstr "Заўсёды групаваць вокны"
|
msgstr "Заўсёды групаваць вокны"
|
||||||
|
|
||||||
#: extensions/window-list/prefs.js:75
|
#: extensions/window-list/prefs.js:94
|
||||||
msgid "Show on all monitors"
|
msgid "Show on all monitors"
|
||||||
msgstr "Паказаць усе маніторы"
|
msgstr "Паказваць на ўсіх маніторах"
|
||||||
|
|
||||||
#: extensions/workspace-indicator/prefs.js:141
|
#: extensions/window-list/workspaceIndicator.js:247
|
||||||
|
#: extensions/workspace-indicator/extension.js:253
|
||||||
|
msgid "Workspace Indicator"
|
||||||
|
msgstr "Індыкатар працоўнай прасторы"
|
||||||
|
|
||||||
|
#: extensions/workspace-indicator/prefs.js:34
|
||||||
msgid "Workspace Names"
|
msgid "Workspace Names"
|
||||||
msgstr "Назвы працоўных прастораў"
|
msgstr "Назвы працоўных прастор"
|
||||||
|
|
||||||
#: extensions/workspace-indicator/prefs.js:157
|
#: extensions/workspace-indicator/prefs.js:67
|
||||||
msgid "Name"
|
|
||||||
msgstr "Імя"
|
|
||||||
|
|
||||||
#: extensions/workspace-indicator/prefs.js:198
|
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "Workspace %d"
|
msgid "Workspace %d"
|
||||||
msgstr "Працоўная прастора %d"
|
msgstr "Працоўная прастора %d"
|
||||||
|
|
||||||
|
#: extensions/workspace-indicator/prefs.js:208
|
||||||
|
msgid "Add Workspace"
|
||||||
|
msgstr "Дадаць працоўную прастору"
|
||||||
|
|
||||||
|
#~ msgid "Attach modal dialog to the parent window"
|
||||||
|
#~ msgstr "Прымацаваць мадальны дыялог да бацькоўскага акна"
|
||||||
|
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "This key overrides the key in org.gnome.mutter when running GNOME Shell."
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "Гэты ключ засланяе ключ у org.gnome.mutter калі запушчаны GNOME Shell."
|
||||||
|
|
||||||
|
#~ msgid "Arrangement of buttons on the titlebar"
|
||||||
|
#~ msgstr "Парадак кнопак у загалоўнай стужцы"
|
||||||
|
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "This key overrides the key in org.gnome.desktop.wm.preferences when "
|
||||||
|
#~ "running GNOME Shell."
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "Гэты ключ засланяе ключ у org.gnome.desktop.wm.preferences калі запушчаны "
|
||||||
|
#~ "GNOME Shell."
|
||||||
|
|
||||||
|
#~ msgid "Enable edge tiling when dropping windows on screen edges"
|
||||||
|
#~ msgstr "Аўтаматычна змяняць памеры акна пры перамяшчэнні да края экрана"
|
||||||
|
|
||||||
|
#~ msgid "Workspaces only on primary monitor"
|
||||||
|
#~ msgstr "Працоўныя прасторы толькі на асноўным маніторы"
|
||||||
|
|
||||||
|
#~ msgid "Delay focus changes in mouse mode until the pointer stops moving"
|
||||||
|
#~ msgstr "Затрымліваць змяненні фокуса ў рэжыме мышы да спынення паказальніка"
|
||||||
|
|
||||||
|
#~ msgid "Thumbnail only"
|
||||||
|
#~ msgstr "Толькі мініяцюра"
|
||||||
|
|
||||||
|
#~ msgid "Application icon only"
|
||||||
|
#~ msgstr "Толькі значок праграмы"
|
||||||
|
|
||||||
|
#~ msgid "Thumbnail and application icon"
|
||||||
|
#~ msgstr "Мініяцюра і значок праграмы"
|
||||||
|
|
||||||
|
#~ msgid "Present windows as"
|
||||||
|
#~ msgstr "Адлюстроўваць вокны як"
|
||||||
|
|
||||||
|
#~ msgid "Activities Overview"
|
||||||
|
#~ msgstr "Агляд заняткаў"
|
||||||
|
|
||||||
|
#~ msgid "Application"
|
||||||
|
#~ msgstr "Праграма"
|
||||||
|
|
||||||
|
#~ msgid "Create new matching rule"
|
||||||
|
#~ msgstr "Стварыць новае правіла адпаведнасці"
|
||||||
|
|
||||||
|
#~ msgid "Add"
|
||||||
|
#~ msgstr "Дадаць"
|
||||||
|
|
||||||
|
#~ msgid "Hello, world!"
|
||||||
|
#~ msgstr "Прывітанне, свет!"
|
||||||
|
|
||||||
|
#~ msgid "Alternative greeting text."
|
||||||
|
#~ msgstr "Альтэрнатыўны тэкст вітання."
|
||||||
|
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "If not empty, it contains the text that will be shown when clicking on "
|
||||||
|
#~ "the panel."
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "Калі не пуста, ўтрымлівае тэкст, які будзе паказвацца пры націсканні на "
|
||||||
|
#~ "панэль."
|
||||||
|
|
||||||
|
#~ msgid "Message"
|
||||||
|
#~ msgstr "Паведамленне"
|
||||||
|
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "Example aims to show how to build well behaved extensions for the Shell "
|
||||||
|
#~ "and as such it has little functionality on its own.\n"
|
||||||
|
#~ "Nevertheless it’s possible to customize the greeting message."
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "Example пакажа як ствараць пашырэнні для Shell. Сам па сабе ён мае мала "
|
||||||
|
#~ "функцыянальнасці.\n"
|
||||||
|
#~ "Тым не менш, можна змяніць тэкст прывітання."
|
||||||
|
|
||||||
|
#~ msgid "Name"
|
||||||
|
#~ msgstr "Імя"
|
||||||
|
|||||||
@@ -1,359 +1,272 @@
|
|||||||
# Bulgarian translation for gnome-shell-extensions po-file.
|
# Bulgarian translation for gnome-shell-extensions po-file.
|
||||||
# Copyright (C) 2014, 2015, 2017 Free Software Foundation, Inc.
|
# Copyright (C) 2014, 2015, 2017 Free Software Foundation, Inc.
|
||||||
# This file is distributed under the same license as the gnome-shell-extensions package.
|
# Copyright (C) 2021, 2022 Alexander Shopov <ash@kambanaria.org>.
|
||||||
# Ivaylo Valkov <ivaylo@e-valkov.org>, 2014.
|
# This file is distributed under the same license as the gnome-shell-extensions package.
|
||||||
# Alexander Shopov <ash@kambanaria.org>, 2014, 2015.
|
# Ivaylo Valkov <ivaylo@e-valkov.org>, 2014.
|
||||||
# Lyubomir Vasilev <lyubomirv@abv.bg>, 2017.
|
# Alexander Shopov <ash@kambanaria.org>, 2014, 2015, 2021, 2022.
|
||||||
msgid ""
|
# Lyubomir Vasilev <lyubomirv@abv.bg>, 2017.
|
||||||
msgstr ""
|
msgid ""
|
||||||
"Project-Id-Version: gnome-shell-extensions master\n"
|
msgstr ""
|
||||||
"Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
|
"Project-Id-Version: gnome-shell-extensions master\n"
|
||||||
"shell&keywords=I18N+L10N&component=extensions\n"
|
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell-extensions/"
|
||||||
"POT-Creation-Date: 2017-09-09 15:20+0000\n"
|
"issues\n"
|
||||||
"PO-Revision-Date: 2017-09-08 08:47+0300\n"
|
"POT-Creation-Date: 2022-02-12 20:25+0000\n"
|
||||||
"Last-Translator: Lyubomir Vasilev <lyubomirv@abv.bg>\n"
|
"PO-Revision-Date: 2022-02-13 11:40+0100\n"
|
||||||
"Language-Team: Bulgarian <dict@fsa-bg.org>\n"
|
"Last-Translator: Alexander Shopov <ash@kambanaria.org>\n"
|
||||||
"Language: bg\n"
|
"Language-Team: Bulgarian <dict@fsa-bg.org>\n"
|
||||||
"MIME-Version: 1.0\n"
|
"Language: bg\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||||
#: data/gnome-classic.desktop.in:3 data/gnome-classic.session.desktop.in:3
|
|
||||||
msgid "GNOME Classic"
|
#: data/gnome-classic.desktop.in:3
|
||||||
msgstr "Класически GNOME"
|
msgid "GNOME Classic"
|
||||||
|
msgstr "Класически GNOME"
|
||||||
#: data/gnome-classic.desktop.in:4
|
|
||||||
msgid "This session logs you into GNOME Classic"
|
#: data/gnome-classic.desktop.in:4 data/gnome-classic-wayland.desktop.in:4
|
||||||
msgstr "Работната среда изглежда като класическия GNOME (2.x)"
|
#: data/gnome-classic-xorg.desktop.in:4
|
||||||
|
msgid "This session logs you into GNOME Classic"
|
||||||
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:7
|
msgstr "Работната среда изглежда като класическия GNOME (2.x)"
|
||||||
msgid "Attach modal dialog to the parent window"
|
|
||||||
msgstr "Прикрепяне на модалните прозорци към родителските им прозорци"
|
#: data/gnome-classic-wayland.desktop.in:3
|
||||||
|
msgid "GNOME Classic on Wayland"
|
||||||
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:8
|
msgstr "Класически GNOME в Wayland"
|
||||||
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:25
|
|
||||||
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:33
|
#: data/gnome-classic-xorg.desktop.in:3
|
||||||
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:41
|
msgid "GNOME Classic on Xorg"
|
||||||
msgid ""
|
msgstr "Класически GNOME в Xorg"
|
||||||
"This key overrides the key in org.gnome.mutter when running GNOME Shell."
|
|
||||||
msgstr ""
|
#: extensions/apps-menu/extension.js:112
|
||||||
"Този ключ при е с по-голям приоритет от „org.gnome.mutter“ при изпълнението "
|
msgid "Favorites"
|
||||||
"на обвивката на GNOME."
|
msgstr "Любими"
|
||||||
|
|
||||||
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:16
|
#: extensions/apps-menu/extension.js:370
|
||||||
msgid "Arrangement of buttons on the titlebar"
|
msgid "Applications"
|
||||||
msgstr "Подредба на бутоните на заглавната лента"
|
msgstr "Програми"
|
||||||
|
|
||||||
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:17
|
#: extensions/auto-move-windows/org.gnome.shell.extensions.auto-move-windows.gschema.xml:6
|
||||||
msgid ""
|
msgid "Application and workspace list"
|
||||||
"This key overrides the key in org.gnome.desktop.wm.preferences when running "
|
msgstr "Списък с програмите и работните плотове"
|
||||||
"GNOME Shell."
|
|
||||||
msgstr ""
|
#: extensions/auto-move-windows/org.gnome.shell.extensions.auto-move-windows.gschema.xml:7
|
||||||
"Този ключ при е с по-голям приоритет от „org.gnome.desktop.wm.preferences“ "
|
msgid ""
|
||||||
"при изпълнението на обвивката на GNOME."
|
"A list of strings, each containing an application id (desktop file name), "
|
||||||
|
"followed by a colon and the workspace number"
|
||||||
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:24
|
msgstr ""
|
||||||
msgid "Enable edge tiling when dropping windows on screen edges"
|
"Списък от низове. Всеки съдържа идентификатор на програма (име на файл „."
|
||||||
msgstr ""
|
"desktop“), следван от знака „:“ и номер на работен плот"
|
||||||
"Включване на специална подредба при приближаване на прозорец до ръбовете на "
|
|
||||||
"екрана"
|
#: extensions/auto-move-windows/prefs.js:19
|
||||||
|
msgid "Workspace Rules"
|
||||||
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:32
|
msgstr "Правила за работните плотове"
|
||||||
msgid "Workspaces only on primary monitor"
|
|
||||||
msgstr "Работни плотове само на основния екран"
|
#: extensions/auto-move-windows/prefs.js:245
|
||||||
|
msgid "Add Rule"
|
||||||
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:40
|
msgstr "Добавяне на правило"
|
||||||
msgid "Delay focus changes in mouse mode until the pointer stops moving"
|
|
||||||
msgstr "Забавяне на смяната на фокуса до спирането на движението на показалеца"
|
#. TRANSLATORS: %s is the filesystem name
|
||||||
|
#: extensions/drive-menu/extension.js:123
|
||||||
#: extensions/alternate-tab/prefs.js:20
|
#: extensions/places-menu/placeDisplay.js:210
|
||||||
msgid "Thumbnail only"
|
#, javascript-format
|
||||||
msgstr "Само миниатюри"
|
msgid "Ejecting drive “%s” failed:"
|
||||||
|
msgstr "Неуспешно изваждане на устройство „%s“:"
|
||||||
#: extensions/alternate-tab/prefs.js:21
|
|
||||||
msgid "Application icon only"
|
#: extensions/drive-menu/extension.js:139
|
||||||
msgstr "Само икони на приложенията"
|
msgid "Removable devices"
|
||||||
|
msgstr "Преносими медии"
|
||||||
#: extensions/alternate-tab/prefs.js:22
|
|
||||||
msgid "Thumbnail and application icon"
|
#: extensions/drive-menu/extension.js:161
|
||||||
msgstr "Миниатюри и икони на приложенията"
|
msgid "Open Files"
|
||||||
|
msgstr "Отваряне на файлове"
|
||||||
#: extensions/alternate-tab/prefs.js:38
|
|
||||||
msgid "Present windows as"
|
#: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:5
|
||||||
msgstr "Показване на прозорците като"
|
msgid "Use more screen for windows"
|
||||||
|
msgstr "Повече пространство за прозорците"
|
||||||
#: extensions/alternate-tab/prefs.js:69
|
|
||||||
msgid "Show only windows in the current workspace"
|
#: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:6
|
||||||
msgstr "Да се показват само прозорците на текущия работен плот"
|
msgid ""
|
||||||
|
"Try to use more screen for placing window thumbnails by adapting to screen "
|
||||||
#: extensions/apps-menu/extension.js:41
|
"aspect ratio, and consolidating them further to reduce the bounding box. "
|
||||||
msgid "Activities Overview"
|
"This setting applies only with the natural placement strategy."
|
||||||
msgstr "Показване на програмите"
|
msgstr ""
|
||||||
|
"Използване на по-голяма част от екрана за поставянето на мини изображения "
|
||||||
#: extensions/apps-menu/extension.js:141
|
"чрез промяна на съотношението на страните и допълнително обединяване за "
|
||||||
msgid "Favorites"
|
"смаляване на обхващащия ги правоъгълник. Тази настройка се прилага само при "
|
||||||
msgstr "Любими"
|
"естествената стратегия за поставяне на прозорците."
|
||||||
|
|
||||||
#: extensions/apps-menu/extension.js:436
|
#: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:11
|
||||||
msgid "Applications"
|
msgid "Place window captions on top"
|
||||||
msgstr "Програми"
|
msgstr "Заглавия на прозорците отгоре"
|
||||||
|
|
||||||
#: extensions/auto-move-windows/org.gnome.shell.extensions.auto-move-windows.gschema.xml:6
|
#: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:12
|
||||||
msgid "Application and workspace list"
|
msgid ""
|
||||||
msgstr "Списък с програмите и работните плотове"
|
"If true, place window captions on top the respective thumbnail, overriding "
|
||||||
|
"shell default of placing it at the bottom. Changing this setting requires "
|
||||||
#: extensions/auto-move-windows/org.gnome.shell.extensions.auto-move-windows.gschema.xml:7
|
"restarting the shell to have any effect."
|
||||||
msgid ""
|
msgstr ""
|
||||||
"A list of strings, each containing an application id (desktop file name), "
|
"Ако е истина, заглавията на прозорците се поставят над мини изображенията "
|
||||||
"followed by a colon and the workspace number"
|
"им, а не както е стандартно — отдолу. За прилагане на промяната на "
|
||||||
msgstr ""
|
"настройката трябва да рестартирате обвивката на GNOME."
|
||||||
"Списък от низове. Всеки съдържа идентификатор на програма (име на файл „."
|
|
||||||
"desktop“ file name), следван от знака „:“ и номер на работен плот"
|
#: extensions/places-menu/extension.js:88
|
||||||
|
#: extensions/places-menu/extension.js:91
|
||||||
#: extensions/auto-move-windows/prefs.js:60
|
msgid "Places"
|
||||||
msgid "Application"
|
msgstr "Места"
|
||||||
msgstr "Програма"
|
|
||||||
|
#: extensions/places-menu/placeDisplay.js:49
|
||||||
#: extensions/auto-move-windows/prefs.js:69
|
#, javascript-format
|
||||||
#: extensions/auto-move-windows/prefs.js:127
|
msgid "Failed to launch “%s”"
|
||||||
msgid "Workspace"
|
msgstr "Неуспешно стартиране на „%s“"
|
||||||
msgstr "Работен плот"
|
|
||||||
|
#: extensions/places-menu/placeDisplay.js:64
|
||||||
#: extensions/auto-move-windows/prefs.js:85
|
#, javascript-format
|
||||||
msgid "Add Rule"
|
msgid "Failed to mount volume for “%s”"
|
||||||
msgstr "Добавяне на правило"
|
msgstr "Неуспешно монтиране на тома „%s“"
|
||||||
|
|
||||||
#: extensions/auto-move-windows/prefs.js:106
|
#: extensions/places-menu/placeDisplay.js:125
|
||||||
msgid "Create new matching rule"
|
#: extensions/places-menu/placeDisplay.js:148
|
||||||
msgstr "Създаване на правило за съвпадение"
|
msgid "Computer"
|
||||||
|
msgstr "Компютър"
|
||||||
#: extensions/auto-move-windows/prefs.js:111
|
|
||||||
msgid "Add"
|
#: extensions/places-menu/placeDisplay.js:336
|
||||||
msgstr "Добавяне"
|
msgid "Home"
|
||||||
|
msgstr "Домашна папка"
|
||||||
#. TRANSLATORS: %s is the filesystem name
|
|
||||||
#: extensions/drive-menu/extension.js:107
|
#: extensions/places-menu/placeDisplay.js:381
|
||||||
#, javascript-format
|
msgid "Browse Network"
|
||||||
msgid "Ejecting drive “%s” failed:"
|
msgstr "Мрежа"
|
||||||
msgstr "Неуспешно изваждане на устройство „%s“:"
|
|
||||||
|
#: extensions/screenshot-window-sizer/org.gnome.shell.extensions.screenshot-window-sizer.gschema.xml:7
|
||||||
#: extensions/drive-menu/extension.js:125
|
msgid "Cycle Screenshot Sizes"
|
||||||
msgid "Removable devices"
|
msgstr "Смяна на размерите на снимката на екрана"
|
||||||
msgstr "Преносими медии"
|
|
||||||
|
#: extensions/screenshot-window-sizer/org.gnome.shell.extensions.screenshot-window-sizer.gschema.xml:11
|
||||||
#: extensions/drive-menu/extension.js:150
|
msgid "Cycle Screenshot Sizes Backward"
|
||||||
msgid "Open Files"
|
msgstr "Смяна на размерите на снимката на екрана наобратно"
|
||||||
msgstr "Отваряне на файлове"
|
|
||||||
|
#: extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml:5
|
||||||
#: extensions/example/extension.js:17
|
msgid "Theme name"
|
||||||
msgid "Hello, world!"
|
msgstr "Име на темата"
|
||||||
msgstr "Здравей, свят!"
|
|
||||||
|
#: extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml:6
|
||||||
#: extensions/example/org.gnome.shell.extensions.example.gschema.xml:5
|
msgid "The name of the theme, to be loaded from ~/.themes/name/gnome-shell"
|
||||||
msgid "Alternative greeting text."
|
msgstr ""
|
||||||
msgstr "Друго приветстващо съобщение."
|
"Името на темата, която да бъде заредена от „~/.themes/name/gnome-shell“"
|
||||||
|
|
||||||
#: extensions/example/org.gnome.shell.extensions.example.gschema.xml:6
|
#: extensions/window-list/extension.js:72
|
||||||
msgid ""
|
msgid "Close"
|
||||||
"If not empty, it contains the text that will be shown when clicking on the "
|
msgstr "Затваряне"
|
||||||
"panel."
|
|
||||||
msgstr ""
|
#: extensions/window-list/extension.js:92
|
||||||
"Ако ключът не е празен, съдържанието му се извежда при натискането на панела."
|
msgid "Unminimize"
|
||||||
|
msgstr "Деминимизиране"
|
||||||
#: extensions/example/prefs.js:30
|
|
||||||
msgid "Message"
|
#: extensions/window-list/extension.js:92
|
||||||
msgstr "Съобщение"
|
msgid "Minimize"
|
||||||
|
msgstr "Минимизиране"
|
||||||
#. TRANSLATORS: Example is the name of the extension, should not be
|
|
||||||
#. translated
|
#: extensions/window-list/extension.js:99
|
||||||
#: extensions/example/prefs.js:43
|
msgid "Unmaximize"
|
||||||
msgid ""
|
msgstr "Демаксимизиране"
|
||||||
"Example aims to show how to build well behaved extensions for the Shell and "
|
|
||||||
"as such it has little functionality on its own.\n"
|
#: extensions/window-list/extension.js:99
|
||||||
"Nevertheless it’s possible to customize the greeting message."
|
msgid "Maximize"
|
||||||
msgstr ""
|
msgstr "Максимизиране"
|
||||||
"Това е пример за добре работещо разширение на обвивката на GNOME и има "
|
|
||||||
"минимална функционалност.\n"
|
#: extensions/window-list/extension.js:434
|
||||||
"С него можете да промените приветстващото съобщение на панела."
|
msgid "Minimize all"
|
||||||
|
msgstr "Минимизиране на всички"
|
||||||
#: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:5
|
|
||||||
msgid "Use more screen for windows"
|
#: extensions/window-list/extension.js:440
|
||||||
msgstr "Повече пространство за прозорците"
|
msgid "Unminimize all"
|
||||||
|
msgstr "Деминимизиране на всички"
|
||||||
#: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:6
|
|
||||||
msgid ""
|
#: extensions/window-list/extension.js:446
|
||||||
"Try to use more screen for placing window thumbnails by adapting to screen "
|
msgid "Maximize all"
|
||||||
"aspect ratio, and consolidating them further to reduce the bounding box. "
|
msgstr "Максимизиране на всички"
|
||||||
"This setting applies only with the natural placement strategy."
|
|
||||||
msgstr ""
|
#: extensions/window-list/extension.js:454
|
||||||
"Използване на по-голяма част от екрана за поставянето на мини изображения "
|
msgid "Unmaximize all"
|
||||||
"чрез промяна на съотношението на страните и допълнително обединяване за "
|
msgstr "Демаксимизиране на всички"
|
||||||
"смаляване на обхващащия ги правоъгълник. Тази настройка се прилага само при "
|
|
||||||
"естествената стратегия за поставяне на прозорците."
|
#: extensions/window-list/extension.js:462
|
||||||
|
msgid "Close all"
|
||||||
#: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:11
|
msgstr "Затваряне на всички"
|
||||||
msgid "Place window captions on top"
|
|
||||||
msgstr "Заглавия на прозорците отгоре"
|
#: extensions/window-list/extension.js:741
|
||||||
|
msgid "Window List"
|
||||||
#: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:12
|
msgstr "Списък на прозорците"
|
||||||
msgid ""
|
|
||||||
"If true, place window captions on top the respective thumbnail, overriding "
|
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:12
|
||||||
"shell default of placing it at the bottom. Changing this setting requires "
|
msgid "When to group windows"
|
||||||
"restarting the shell to have any effect."
|
msgstr "Кога прозорците да се групират"
|
||||||
msgstr ""
|
|
||||||
"Ако е истина, заглавията на прозорците се поставят над мини изображенията "
|
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:13
|
||||||
"им, а не както е стандартно — отдолу. За прилагане на промяната на "
|
msgid ""
|
||||||
"настройката трябва да рестартирате обвивката на GNOME."
|
"Decides when to group windows from the same application on the window list. "
|
||||||
|
"Possible values are “never”, “auto” and “always”."
|
||||||
#: extensions/places-menu/extension.js:78
|
msgstr ""
|
||||||
#: extensions/places-menu/extension.js:81
|
"Кога прозорците на една програма да се групират в списъка с прозорците. "
|
||||||
msgid "Places"
|
"Възможните стойности са „never“ (никога), „auto“ (автоматично) и "
|
||||||
msgstr "Места"
|
"„always“ (винаги)."
|
||||||
|
|
||||||
#: extensions/places-menu/placeDisplay.js:65
|
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:20
|
||||||
#, javascript-format
|
#: extensions/window-list/prefs.js:76
|
||||||
msgid "Failed to mount volume for “%s”"
|
msgid "Show windows from all workspaces"
|
||||||
msgstr "Неуспешно монтиране на тома „%s“"
|
msgstr "Да се показват прозорците от всички работни плотове"
|
||||||
|
|
||||||
#: extensions/places-menu/placeDisplay.js:78
|
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:21
|
||||||
#, javascript-format
|
msgid "Whether to show windows from all workspaces or only the current one."
|
||||||
msgid "Failed to launch “%s”"
|
msgstr ""
|
||||||
msgstr "Неуспешно стартиране на „%s“"
|
"Дали да се показват прозорците от всички работни плотове или само от текущия."
|
||||||
|
|
||||||
#: extensions/places-menu/placeDisplay.js:137
|
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:27
|
||||||
#: extensions/places-menu/placeDisplay.js:160
|
msgid "Show the window list on all monitors"
|
||||||
msgid "Computer"
|
msgstr "Извеждане на списъка с прозорци на всички монитори"
|
||||||
msgstr "Компютър"
|
|
||||||
|
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:28
|
||||||
#: extensions/places-menu/placeDisplay.js:303
|
msgid ""
|
||||||
msgid "Home"
|
"Whether to show the window list on all connected monitors or only on the "
|
||||||
msgstr "Домашна папка"
|
"primary one."
|
||||||
|
msgstr ""
|
||||||
#: extensions/places-menu/placeDisplay.js:347
|
"Дали списъкът с прозорци да се извежда на всички монитори или само на "
|
||||||
msgid "Browse Network"
|
"основния"
|
||||||
msgstr "Мрежа"
|
|
||||||
|
#: extensions/window-list/prefs.js:32
|
||||||
#: extensions/screenshot-window-sizer/org.gnome.shell.extensions.screenshot-window-sizer.gschema.xml:7
|
msgid "Window Grouping"
|
||||||
msgid "Cycle Screenshot Sizes"
|
msgstr "Групиране на прозорци"
|
||||||
msgstr "Смяна на размерите на снимката на екрана"
|
|
||||||
|
#: extensions/window-list/prefs.js:37
|
||||||
#: extensions/screenshot-window-sizer/org.gnome.shell.extensions.screenshot-window-sizer.gschema.xml:11
|
msgid "Never group windows"
|
||||||
msgid "Cycle Screenshot Sizes Backward"
|
msgstr "Никога да не се групират"
|
||||||
msgstr "Смяна на размерите на снимката на екрана наобратно"
|
|
||||||
|
#: extensions/window-list/prefs.js:38
|
||||||
#: extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml:5
|
msgid "Group windows when space is limited"
|
||||||
msgid "Theme name"
|
msgstr "Групиране при ограничено място"
|
||||||
msgstr "Име на темата"
|
|
||||||
|
#: extensions/window-list/prefs.js:39
|
||||||
#: extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml:6
|
msgid "Always group windows"
|
||||||
msgid "The name of the theme, to be loaded from ~/.themes/name/gnome-shell"
|
msgstr "Винаги да се групират"
|
||||||
msgstr ""
|
|
||||||
"Името на темата, която да бъде заредена от „~/.themes/name/gnome-shell“"
|
#: extensions/window-list/prefs.js:63
|
||||||
|
msgid "Show on all monitors"
|
||||||
#: extensions/window-list/extension.js:110
|
msgstr "На всички монитори"
|
||||||
msgid "Close"
|
|
||||||
msgstr "Затваряне"
|
#: extensions/window-list/workspaceIndicator.js:249
|
||||||
|
#: extensions/workspace-indicator/extension.js:254
|
||||||
#: extensions/window-list/extension.js:129
|
msgid "Workspace Indicator"
|
||||||
msgid "Unminimize"
|
msgstr "Индикатор на работните плотове"
|
||||||
msgstr "Деминимизиране"
|
|
||||||
|
#: extensions/workspace-indicator/prefs.js:18
|
||||||
#: extensions/window-list/extension.js:130
|
msgid "Workspace Names"
|
||||||
msgid "Minimize"
|
msgstr "Имена на работните плотове"
|
||||||
msgstr "Минимизиране"
|
|
||||||
|
#: extensions/workspace-indicator/prefs.js:39
|
||||||
#: extensions/window-list/extension.js:136
|
#, javascript-format
|
||||||
msgid "Unmaximize"
|
msgid "Workspace %d"
|
||||||
msgstr "Демаксимизиране"
|
msgstr "Работен плот %d"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:137
|
#: extensions/workspace-indicator/prefs.js:184
|
||||||
msgid "Maximize"
|
msgid "Add Workspace"
|
||||||
msgstr "Максимизиране"
|
msgstr "Добавяне на работен плот"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:420
|
|
||||||
msgid "Minimize all"
|
|
||||||
msgstr "Минимизиране на всички"
|
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:428
|
|
||||||
msgid "Unminimize all"
|
|
||||||
msgstr "Деминимизиране на всички"
|
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:436
|
|
||||||
msgid "Maximize all"
|
|
||||||
msgstr "Максимизиране на всички"
|
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:445
|
|
||||||
msgid "Unmaximize all"
|
|
||||||
msgstr "Демаксимизиране на всички"
|
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:454
|
|
||||||
msgid "Close all"
|
|
||||||
msgstr "Затваряне на всички"
|
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:678
|
|
||||||
#: extensions/workspace-indicator/extension.js:30
|
|
||||||
msgid "Workspace Indicator"
|
|
||||||
msgstr "Индикатор на работните плотове"
|
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:842
|
|
||||||
msgid "Window List"
|
|
||||||
msgstr "Списък на прозорците"
|
|
||||||
|
|
||||||
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:12
|
|
||||||
msgid "When to group windows"
|
|
||||||
msgstr "Кога да се групират прозорците"
|
|
||||||
|
|
||||||
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:13
|
|
||||||
msgid ""
|
|
||||||
"Decides when to group windows from the same application on the window list. "
|
|
||||||
"Possible values are “never”, “auto” and “always”."
|
|
||||||
msgstr ""
|
|
||||||
"Кога да се групират прозорците на една програма в списъка с прозорците. "
|
|
||||||
"Възможните стойности са „never“ (никога), „auto“ (автоматично) и "
|
|
||||||
"„always“ (винаги)."
|
|
||||||
|
|
||||||
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:20
|
|
||||||
msgid "Show the window list on all monitors"
|
|
||||||
msgstr "Извеждане на списъка с прозорци на всички монитори"
|
|
||||||
|
|
||||||
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:21
|
|
||||||
msgid ""
|
|
||||||
"Whether to show the window list on all connected monitors or only on the "
|
|
||||||
"primary one."
|
|
||||||
msgstr ""
|
|
||||||
"Дали списъкът с прозорци да се извежда на всички монитори или само на "
|
|
||||||
"основния"
|
|
||||||
|
|
||||||
#: extensions/window-list/prefs.js:32
|
|
||||||
msgid "Window Grouping"
|
|
||||||
msgstr "Групиране на прозорци"
|
|
||||||
|
|
||||||
#: extensions/window-list/prefs.js:50
|
|
||||||
msgid "Never group windows"
|
|
||||||
msgstr "Никога да не се групират"
|
|
||||||
|
|
||||||
#: extensions/window-list/prefs.js:51
|
|
||||||
msgid "Group windows when space is limited"
|
|
||||||
msgstr "Групиране при ограничено място"
|
|
||||||
|
|
||||||
#: extensions/window-list/prefs.js:52
|
|
||||||
msgid "Always group windows"
|
|
||||||
msgstr "Винаги да се групират"
|
|
||||||
|
|
||||||
#: extensions/window-list/prefs.js:75
|
|
||||||
msgid "Show on all monitors"
|
|
||||||
msgstr "На всички монитори"
|
|
||||||
|
|
||||||
#: extensions/workspace-indicator/prefs.js:141
|
|
||||||
msgid "Workspace Names"
|
|
||||||
msgstr "Имена на работните плотове"
|
|
||||||
|
|
||||||
#: extensions/workspace-indicator/prefs.js:157
|
|
||||||
msgid "Name"
|
|
||||||
msgstr "Име"
|
|
||||||
|
|
||||||
#: extensions/workspace-indicator/prefs.js:198
|
|
||||||
#, javascript-format
|
|
||||||
msgid "Workspace %d"
|
|
||||||
msgstr "Работен плот %d"
|
|
||||||
|
|||||||
+209
-219
@@ -1,360 +1,350 @@
|
|||||||
# sray <sray@redhat.com>, 2013, 2014. #zanata.
|
# sray <sray@redhat.com>, 2013, 2014. #zanata.
|
||||||
|
# Akarshan Biswas <akarshan.biswas@hotmail.com>, 2020.
|
||||||
|
#
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: \n"
|
"Project-Id-Version: unnamed project\n"
|
||||||
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
|
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell-extensions/"
|
||||||
"shell&keywords=I18N+L10N&component=extensions\n"
|
"issues\n"
|
||||||
"POT-Creation-Date: 2014-09-22 07:38+0000\n"
|
"POT-Creation-Date: 2020-05-28 00:55+0000\n"
|
||||||
"PO-Revision-Date: 2014-09-22 16:37+0000\n"
|
"PO-Revision-Date: 2020-08-13 10:03+0530\n"
|
||||||
"Last-Translator: \n"
|
"Last-Translator: Akarshan Biswas <akarshan.biswas@hotmail.com>\n"
|
||||||
"Language-Team: American English <kde-i18n-doc@kde.org>\n"
|
"Language-Team: Bengali (India) <anubad@lists.ankur.org.in>\n"
|
||||||
"Language: bn_IN\n"
|
"Language: bn_IN\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"X-Generator: Lokalize 1.5\n"
|
|
||||||
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
|
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
|
||||||
|
"X-DamnedLies-Scope: partial\n"
|
||||||
|
"X-Generator: Gtranslator 3.36.0\n"
|
||||||
|
|
||||||
#: ../data/gnome-classic.desktop.in.h:1
|
#: data/gnome-classic.desktop.in:3 data/gnome-classic.session.desktop.in:3
|
||||||
#: ../data/gnome-classic.session.desktop.in.in.h:1
|
|
||||||
msgid "GNOME Classic"
|
msgid "GNOME Classic"
|
||||||
msgstr "GNOME ক্লাসিক"
|
msgstr "GNOME ক্লাসিক"
|
||||||
|
|
||||||
#: ../data/gnome-classic.desktop.in.h:2
|
#: data/gnome-classic.desktop.in:4
|
||||||
msgid "This session logs you into GNOME Classic"
|
msgid "This session logs you into GNOME Classic"
|
||||||
msgstr "এই সেশন অাপনাকে GNOME ক্লাসিকে লগ করায়"
|
msgstr "এই সেশন আপনাকে GNOME ক্লাসিকে লগ করায়"
|
||||||
|
|
||||||
#: ../data/gnome-shell-classic.desktop.in.in.h:1
|
|
||||||
msgid "GNOME Shell Classic"
|
|
||||||
msgstr "GNOME সেল ক্লাসিক"
|
|
||||||
|
|
||||||
# auto translated by TM merge from project: gnome-shell, version: 3.8.4, DocId: gnome-shell
|
|
||||||
#: ../data/gnome-shell-classic.desktop.in.in.h:2
|
|
||||||
msgid "Window management and application launching"
|
|
||||||
msgstr "উইন্ডো পরিচালনা ও অ্যাপ্লিকেশন প্রারম্ভ"
|
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.extensions.classic-overrides.gschema.xml.in.h:1
|
|
||||||
msgid "Attach modal dialog to the parent window"
|
|
||||||
msgstr "প্রধান উইন্ডোতে মোডেল ডায়ালগ সংযুক্ত করুন"
|
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.extensions.classic-overrides.gschema.xml.in.h:2
|
|
||||||
msgid ""
|
|
||||||
"This key overrides the key in org.gnome.mutter when running GNOME Shell."
|
|
||||||
msgstr ""
|
|
||||||
"GNOME সেল চালানোর ক্ষেত্রে এই কী in org.gnome.mutter এর কী ওভাররাইড করে।"
|
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.extensions.classic-overrides.gschema.xml.in.h:3
|
|
||||||
msgid "Arrangement of buttons on the titlebar"
|
|
||||||
msgstr "শিরোনাম দন্ডে বোতামগুলির সজ্জা"
|
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.extensions.classic-overrides.gschema.xml.in.h:4
|
|
||||||
#| msgid ""
|
|
||||||
#| "This key overrides the key in org.gnome.mutter when running GNOME Shell."
|
|
||||||
msgid ""
|
|
||||||
"This key overrides the key in org.gnome.desktop.wm.preferences when running "
|
|
||||||
"GNOME Shell."
|
|
||||||
msgstr ""
|
|
||||||
"GNOME সেল চালানোর সময়ে এই কী org.gnome.desktop.wm.preferences-এর কী ওভাররাইড "
|
|
||||||
"করে।"
|
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.extensions.classic-overrides.gschema.xml.in.h:5
|
|
||||||
msgid "Enable edge tiling when dropping windows on screen edges"
|
|
||||||
msgstr "উইন্ডো স্ক্রীন কিনারায় রাখার সময়ে কিনারা টাইলিং সক্রিয় করুন"
|
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.extensions.classic-overrides.gschema.xml.in.h:6
|
|
||||||
msgid "Workspaces only on primary monitor"
|
|
||||||
msgstr "শুধুমাত্র প্রধান মনিটরে ওয়ার্কস্পেস"
|
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.extensions.classic-overrides.gschema.xml.in.h:7
|
|
||||||
msgid "Delay focus changes in mouse mode until the pointer stops moving"
|
|
||||||
msgstr ""
|
|
||||||
"পয়েন্টার অবস্থান পরিবর্তন না থামানো পর্যন্ত মাউস মোডে ফোকাস পরিবর্তন বিলম্বিত "
|
|
||||||
"করুন"
|
|
||||||
|
|
||||||
#: ../extensions/alternate-tab/prefs.js:20
|
|
||||||
msgid "Thumbnail only"
|
|
||||||
msgstr "শুধুমাত্র থাম্বনেইল"
|
|
||||||
|
|
||||||
#: ../extensions/alternate-tab/prefs.js:21
|
|
||||||
msgid "Application icon only"
|
|
||||||
msgstr "শুধুমাত্র অ্যাপ্লিকেশন অাইকন"
|
|
||||||
|
|
||||||
#: ../extensions/alternate-tab/prefs.js:22
|
|
||||||
msgid "Thumbnail and application icon"
|
|
||||||
msgstr "থাম্বনেইল এবং অ্যাপ্লিকেশন অাইকন"
|
|
||||||
|
|
||||||
#: ../extensions/alternate-tab/prefs.js:38
|
|
||||||
msgid "Present windows as"
|
|
||||||
msgstr "এই রূপে উইন্ডো উপস্থাপনা"
|
|
||||||
|
|
||||||
#: ../extensions/alternate-tab/prefs.js:69
|
|
||||||
msgid "Show only windows in the current workspace"
|
|
||||||
msgstr "শুধুমাত্র উইন্ডো বর্তমান ওয়ার্কস্পেসে দেখান"
|
|
||||||
|
|
||||||
#: ../extensions/apps-menu/extension.js:39
|
|
||||||
msgid "Activities Overview"
|
|
||||||
msgstr "ক্রিয়াকলাপের পূর্বরূপ"
|
|
||||||
|
|
||||||
# auto translated by TM merge from project: system-config-printer, version: 1.1.16-23, DocId: system-config-printer
|
# auto translated by TM merge from project: system-config-printer, version: 1.1.16-23, DocId: system-config-printer
|
||||||
#: ../extensions/apps-menu/extension.js:113
|
#: extensions/apps-menu/extension.js:113
|
||||||
msgid "Favorites"
|
msgid "Favorites"
|
||||||
msgstr "বিশেষ"
|
msgstr "বিশেষ"
|
||||||
|
|
||||||
# auto translated by TM merge from project: gnome-menus, version: 3.8.0, DocId: gnome-menus-3.0
|
# auto translated by TM merge from project: gnome-menus, version: 3.8.0, DocId: gnome-menus-3.0
|
||||||
#: ../extensions/apps-menu/extension.js:282
|
#: extensions/apps-menu/extension.js:369
|
||||||
msgid "Applications"
|
msgid "Applications"
|
||||||
msgstr "অ্যাপ্লিকেশন"
|
msgstr "অ্যাপ্লিকেশন"
|
||||||
|
|
||||||
#: ../extensions/auto-move-windows/org.gnome.shell.extensions.auto-move-windows.gschema.xml.in.h:1
|
#: extensions/auto-move-windows/org.gnome.shell.extensions.auto-move-windows.gschema.xml: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.in.h:2
|
#: extensions/auto-move-windows/org.gnome.shell.extensions.auto-move-windows.gschema.xml:7
|
||||||
msgid ""
|
msgid ""
|
||||||
"A list of strings, each containing an application id (desktop file name), "
|
"A list of strings, each containing an application id (desktop file name), "
|
||||||
"followed by a colon and the workspace number"
|
"followed by a colon and the workspace number"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"স্ট্রীঙের একটি তালিকা, প্রতিটিতে থাকে একটি অ্যাপ্লিকেশন অাইডি (ডেস্কটপ ফাইল "
|
"স্ট্রীঙের একটি তালিকা, প্রতিটিতে থাকে একটি অ্যাপ্লিকেশন আইডি (ডেস্কটপ ফাইল নাম), "
|
||||||
"নাম), "
|
|
||||||
"সংগে থাকে যতিচিহ্ন এবং ওয়ার্কস্পেস নম্বর"
|
"সংগে থাকে যতিচিহ্ন এবং ওয়ার্কস্পেস নম্বর"
|
||||||
|
|
||||||
# auto translated by TM merge from project: yelp, version: 3.8.1, DocId: yelp
|
#: extensions/auto-move-windows/prefs.js:35
|
||||||
#: ../extensions/auto-move-windows/prefs.js:60
|
#| msgid "Workspace Names"
|
||||||
msgid "Application"
|
msgid "Workspace Rules"
|
||||||
msgstr "অ্যাপ্লিকেশন"
|
msgstr "ওয়ার্কস্পেস নিয়মগুলি"
|
||||||
|
|
||||||
#: ../extensions/auto-move-windows/prefs.js:69
|
|
||||||
#: ../extensions/auto-move-windows/prefs.js:127
|
|
||||||
msgid "Workspace"
|
|
||||||
msgstr "ওয়ার্কস্পেস"
|
|
||||||
|
|
||||||
# auto translated by TM merge from project: evolution, version: el6, DocId: evolution-2.32
|
# auto translated by TM merge from project: evolution, version: el6, DocId: evolution-2.32
|
||||||
#: ../extensions/auto-move-windows/prefs.js:85
|
#: extensions/auto-move-windows/prefs.js:243
|
||||||
#| msgid "Add rule"
|
|
||||||
msgid "Add Rule"
|
msgid "Add Rule"
|
||||||
msgstr "নিয়ম যোগ করুন"
|
msgstr "নিয়ম যোগ করুন"
|
||||||
|
|
||||||
#: ../extensions/auto-move-windows/prefs.js:106
|
#. TRANSLATORS: %s is the filesystem name
|
||||||
msgid "Create new matching rule"
|
#: extensions/drive-menu/extension.js:112
|
||||||
msgstr "মেলানোর নতুন নিয়ম তৈরি করুন"
|
#: extensions/places-menu/placeDisplay.js:233
|
||||||
|
|
||||||
# auto translated by TM merge from project: file-roller, version: 3.8.3, DocId: file-roller
|
|
||||||
#: ../extensions/auto-move-windows/prefs.js:111
|
|
||||||
msgid "Add"
|
|
||||||
msgstr "যোগ করুন"
|
|
||||||
|
|
||||||
#: ../extensions/drive-menu/extension.js:106
|
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "Ejecting drive '%s' failed:"
|
#| msgid "Ejecting drive '%s' failed:"
|
||||||
msgstr "'%s' ড্রাইভ ইজেক্ট করা গেল না:"
|
msgid "Ejecting drive “%s” failed:"
|
||||||
|
msgstr "'%s' ড্রাইভ ইজেক্ট করতে ব্যর্থ :"
|
||||||
|
|
||||||
#: ../extensions/drive-menu/extension.js:123
|
#: extensions/drive-menu/extension.js:128
|
||||||
msgid "Removable devices"
|
msgid "Removable devices"
|
||||||
msgstr "অপসারণযোগ্য ডিভাইসগুলি"
|
msgstr "অপসারণযোগ্য ডিভাইসগুলি"
|
||||||
|
|
||||||
# auto translated by TM merge from project: gnome-user-share, version: 3.8, DocId: gnome-user-share
|
# auto translated by TM merge from project: gnome-user-share, version: 3.8, DocId: gnome-user-share
|
||||||
#: ../extensions/drive-menu/extension.js:150
|
#: extensions/drive-menu/extension.js:155
|
||||||
msgid "Open File"
|
#| msgid "Open File"
|
||||||
|
msgid "Open Files"
|
||||||
msgstr "ফাইল খুলুন"
|
msgstr "ফাইল খুলুন"
|
||||||
|
|
||||||
#: ../extensions/example/extension.js:17
|
#: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:5
|
||||||
msgid "Hello, world!"
|
|
||||||
msgstr "ওহে, বিশ্ব!"
|
|
||||||
|
|
||||||
#: ../extensions/example/org.gnome.shell.extensions.example.gschema.xml.in.h:1
|
|
||||||
msgid "Alternative greeting text."
|
|
||||||
msgstr "বিকল্প অভিবাদন পাঠ্য।"
|
|
||||||
|
|
||||||
#: ../extensions/example/org.gnome.shell.extensions.example.gschema.xml.in.h:2
|
|
||||||
msgid ""
|
|
||||||
"If not empty, it contains the text that will be shown when clicking on the "
|
|
||||||
"panel."
|
|
||||||
msgstr "খালি না থাকলে, তাতে পাঠ্য থাকবে যা প্যানেলে ক্লিক করা হলে দেখানো হবে।"
|
|
||||||
|
|
||||||
#: ../extensions/example/prefs.js:30
|
|
||||||
#| msgid "Message:"
|
|
||||||
msgid "Message"
|
|
||||||
msgstr "বার্তা"
|
|
||||||
|
|
||||||
#: ../extensions/example/prefs.js:43
|
|
||||||
msgid ""
|
|
||||||
"Example aims to show how to build well behaved extensions for the Shell and "
|
|
||||||
"as such it has little functionality on its own.\n"
|
|
||||||
"Nevertheless it's possible to customize the greeting message."
|
|
||||||
msgstr ""
|
|
||||||
"সেলের জন্য সুস্থিত এক্সটেনশন কীভাবে গঠন করা সম্ভব তা উদাহরণের মাধ্যমে "
|
|
||||||
"উপস্থাপিত করা "
|
|
||||||
"হয়।\n"
|
|
||||||
"উপরন্তু অভিভাদন বার্তা নিজের পছন্দ মতোও করে নেওয়া যায়।"
|
|
||||||
|
|
||||||
#: ../extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml.in.h:1
|
|
||||||
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.in.h:2
|
#: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:6
|
||||||
msgid ""
|
msgid ""
|
||||||
"Try to use more screen for placing window thumbnails by adapting to screen "
|
"Try to use more screen for placing window thumbnails by adapting to screen "
|
||||||
"aspect ratio, and consolidating them further to reduce the bounding box. "
|
"aspect ratio, and consolidating them further to reduce the bounding box. "
|
||||||
"This setting applies only with the natural placement strategy."
|
"This setting applies only with the natural placement strategy."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"স্ক্রীন অ্যাসপেক্ট অনুপাত সামঞ্জস্যপূর্ণ করে উইন্ডো থাম্বনেইল রাখার জন্য অারো "
|
"স্ক্রীন অ্যাসপেক্ট অনুপাত সামঞ্জস্যপূর্ণ করে উইন্ডো থাম্বনেইল রাখার জন্য আরো স্ক্রীন "
|
||||||
"স্ক্রীন "
|
"ব্যবহারের চেষ্টা করুন, এবং বাউন্ডিং বক্স কমাতে তাদের সংঘবদ্ধ করার চেষ্টা করুন। এই "
|
||||||
"ব্যবহারের চেষ্টা করুন, এবং বাউন্ডিং বক্স কমাতে তাদের সংঘবদ্ধ করার চেষ্টা "
|
|
||||||
"করুন। এই "
|
|
||||||
"সেটিং শুধুমাত্র স্বাভাবিক প্লেসমেন্ট কৌশলের ক্ষেত্রেই প্রযোজ্য হয়।"
|
"সেটিং শুধুমাত্র স্বাভাবিক প্লেসমেন্ট কৌশলের ক্ষেত্রেই প্রযোজ্য হয়।"
|
||||||
|
|
||||||
#: ../extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml.in.h:3
|
#: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:11
|
||||||
msgid "Place window captions on top"
|
msgid "Place window captions on top"
|
||||||
msgstr "উইন্ডো ক্যাপশন একেবারে শীর্ষে রাখুন"
|
msgstr "উইন্ডো ক্যাপশন একেবারে শীর্ষে রাখুন"
|
||||||
|
|
||||||
#: ../extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml.in.h:4
|
#: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:12
|
||||||
msgid ""
|
msgid ""
|
||||||
"If true, place window captions on top the respective thumbnail, overriding "
|
"If true, place window captions on top the respective thumbnail, overriding "
|
||||||
"shell default of placing it at the bottom. Changing this setting requires "
|
"shell default of placing it at the bottom. Changing this setting requires "
|
||||||
"restarting the shell to have any effect."
|
"restarting the shell to have any effect."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"যদি সত্য হয়, তলায় রাখার সেল ডিফল্ট ওভাররাইড করে সংশ্লিষ্ট থাম্বনেইলের শীর্ষে "
|
"যদি সত্য হয়, তলায় রাখার সেল ডিফল্ট ওভাররাইড করে সংশ্লিষ্ট থাম্বনেইলের শীর্ষে উইন্ডো "
|
||||||
"উইন্ডো "
|
"ক্যাপশন রাখুন। এই সেটিং পরিবর্তন করলে তা প্রয়োগ করতে সেল বন্ধ করে চালু করতে হবে।"
|
||||||
"ক্যাপশন রাখুন। এই সেটিং পরিবর্তন করলে তা প্রয়োগ করতে সেল বন্ধ করে চালু করতে "
|
|
||||||
"হবে।"
|
|
||||||
|
|
||||||
# auto translated by TM merge from project: file-roller, version: 3.8.3, DocId: file-roller
|
# auto translated by TM merge from project: file-roller, version: 3.8.3, DocId: file-roller
|
||||||
#: ../extensions/places-menu/extension.js:78
|
#: extensions/places-menu/extension.js:89
|
||||||
#: ../extensions/places-menu/extension.js:81
|
#: extensions/places-menu/extension.js:93
|
||||||
msgid "Places"
|
msgid "Places"
|
||||||
msgstr "অবস্থান"
|
msgstr "অবস্থান"
|
||||||
|
|
||||||
#: ../extensions/places-menu/placeDisplay.js:57
|
#: extensions/places-menu/placeDisplay.js:46
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "Failed to launch \"%s\""
|
#| msgid "Failed to launch \"%s\""
|
||||||
msgstr "\"%s\" লঞ্চ করা গেল না"
|
msgid "Failed to launch “%s”"
|
||||||
|
msgstr "\"%s\" লঞ্চ করতে ব্যর্থ "
|
||||||
|
|
||||||
|
#: extensions/places-menu/placeDisplay.js:61
|
||||||
|
#, javascript-format
|
||||||
|
msgid "Failed to mount volume for “%s”"
|
||||||
|
msgstr "\"%s\" এর জন্য ভলিউম মাউন্ট করতে ব্যর্থ"
|
||||||
|
|
||||||
# auto translated by TM merge from project: gvfs, version: 1.16.3, DocId: gvfs
|
# auto translated by TM merge from project: gvfs, version: 1.16.3, DocId: gvfs
|
||||||
#: ../extensions/places-menu/placeDisplay.js:99
|
#: extensions/places-menu/placeDisplay.js:148
|
||||||
#: ../extensions/places-menu/placeDisplay.js:122
|
#: extensions/places-menu/placeDisplay.js:171
|
||||||
msgid "Computer"
|
msgid "Computer"
|
||||||
msgstr "কম্পিউটার"
|
msgstr "কম্পিউটার"
|
||||||
|
|
||||||
# auto translated by TM merge from project: rhsm-web, version: 0.0, DocId: management
|
# auto translated by TM merge from project: rhsm-web, version: 0.0, DocId: management
|
||||||
#: ../extensions/places-menu/placeDisplay.js:200
|
#: extensions/places-menu/placeDisplay.js:359
|
||||||
msgid "Home"
|
msgid "Home"
|
||||||
msgstr "প্রথম পাতা"
|
msgstr "প্রথম পাতা"
|
||||||
|
|
||||||
#: ../extensions/places-menu/placeDisplay.js:287
|
#: extensions/places-menu/placeDisplay.js:404
|
||||||
msgid "Browse Network"
|
msgid "Browse Network"
|
||||||
msgstr "নেটওয়ার্ক ব্রাউজ"
|
msgstr "নেটওয়ার্ক ব্রাউজ"
|
||||||
|
|
||||||
# auto translated by TM merge from project: gnome-system-monitor, version: 3.8.2.1, DocId: gnome-system-monitor
|
#: extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml:5
|
||||||
#: ../extensions/systemMonitor/extension.js:214
|
|
||||||
msgid "CPU"
|
|
||||||
msgstr "CPU"
|
|
||||||
|
|
||||||
# auto translated by TM merge from project: RHEV Installation Guide, version: 3.1, DocId: topics/Planning_your_Data_Center
|
|
||||||
#: ../extensions/systemMonitor/extension.js:267
|
|
||||||
msgid "Memory"
|
|
||||||
msgstr "মেমরি"
|
|
||||||
|
|
||||||
#: ../extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml.in.h:1
|
|
||||||
msgid "Theme name"
|
msgid "Theme name"
|
||||||
msgstr "থিম নাম"
|
msgstr "থিম নাম"
|
||||||
|
|
||||||
#: ../extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml.in.h:2
|
#: extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml:6
|
||||||
msgid "The name of the theme, to be loaded from ~/.themes/name/gnome-shell"
|
msgid "The name of the theme, to be loaded from ~/.themes/name/gnome-shell"
|
||||||
msgstr "থিমের নাম, ~/.themes/name/gnome-shell থেকে লোড করা হবে"
|
msgstr "থিমের নাম, ~/.themes/name/gnome-shell থেকে লোড করা হবে"
|
||||||
|
|
||||||
#: ../extensions/window-list/extension.js:110
|
#: extensions/window-list/extension.js:98
|
||||||
msgid "Close"
|
msgid "Close"
|
||||||
msgstr "বন্ধ করুন"
|
msgstr "বন্ধ করুন"
|
||||||
|
|
||||||
#: ../extensions/window-list/extension.js:120
|
#: extensions/window-list/extension.js:118
|
||||||
msgid "Unminimize"
|
msgid "Unminimize"
|
||||||
msgstr "অান-মিনিমাইজ"
|
msgstr "আন-মিনিমাইজ"
|
||||||
|
|
||||||
#: ../extensions/window-list/extension.js:121
|
#: extensions/window-list/extension.js:118
|
||||||
msgid "Minimize"
|
msgid "Minimize"
|
||||||
msgstr "ছোট করুন"
|
msgstr "ছোট করুন"
|
||||||
|
|
||||||
#: ../extensions/window-list/extension.js:127
|
#: extensions/window-list/extension.js:125
|
||||||
msgid "Unmaximize"
|
msgid "Unmaximize"
|
||||||
msgstr "অান-ম্যাক্সিমাইজ"
|
msgstr "আন-ম্যাক্সিমাইজ"
|
||||||
|
|
||||||
#: ../extensions/window-list/extension.js:128
|
#: extensions/window-list/extension.js:125
|
||||||
msgid "Maximize"
|
msgid "Maximize"
|
||||||
msgstr "বড় করুন"
|
msgstr "বড় করুন"
|
||||||
|
|
||||||
#: ../extensions/window-list/extension.js:300
|
#: extensions/window-list/extension.js:428
|
||||||
msgid "Minimize all"
|
msgid "Minimize all"
|
||||||
msgstr "সকল ছোট করুন"
|
msgstr "সকল ছোট করুন"
|
||||||
|
|
||||||
#: ../extensions/window-list/extension.js:308
|
#: extensions/window-list/extension.js:434
|
||||||
msgid "Unminimize all"
|
msgid "Unminimize all"
|
||||||
msgstr "সকল অান-মিনিমাইজ করুন"
|
msgstr "সকল আন-মিনিমাইজ করুন"
|
||||||
|
|
||||||
#: ../extensions/window-list/extension.js:316
|
#: extensions/window-list/extension.js:440
|
||||||
msgid "Maximize all"
|
msgid "Maximize all"
|
||||||
msgstr "সকল বড় করুন"
|
msgstr "সকল বড় করুন"
|
||||||
|
|
||||||
#: ../extensions/window-list/extension.js:325
|
#: extensions/window-list/extension.js:448
|
||||||
msgid "Unmaximize all"
|
msgid "Unmaximize all"
|
||||||
msgstr "সকল অান-ম্যাক্সিমাইজ করুন"
|
msgstr "সকল আন-ম্যাক্সিমাইজ করুন"
|
||||||
|
|
||||||
#: ../extensions/window-list/extension.js:334
|
#: extensions/window-list/extension.js:456
|
||||||
msgid "Close all"
|
msgid "Close all"
|
||||||
msgstr "সকল বন্ধ করুন"
|
msgstr "সকল বন্ধ করুন"
|
||||||
|
|
||||||
#: ../extensions/window-list/extension.js:644
|
#: extensions/window-list/extension.js:734
|
||||||
#: ../extensions/workspace-indicator/extension.js:30
|
|
||||||
msgid "Workspace Indicator"
|
|
||||||
msgstr "ওয়ার্কস্পেস সূচক"
|
|
||||||
|
|
||||||
#: ../extensions/window-list/extension.js:808
|
|
||||||
#| msgid "Window Grouping"
|
|
||||||
msgid "Window List"
|
msgid "Window List"
|
||||||
msgstr "উইন্ডো তালিকা"
|
msgstr "উইন্ডো তালিকা"
|
||||||
|
|
||||||
#: ../extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml.in.h:1
|
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:12
|
||||||
msgid "When to group windows"
|
msgid "When to group windows"
|
||||||
msgstr "উইন্ডো দলভুক্তকরণ"
|
msgstr "উইন্ডো দলভুক্তকরণ"
|
||||||
|
|
||||||
#: ../extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml.in.h:2
|
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:13
|
||||||
|
#| msgid ""
|
||||||
|
#| "Decides when to group windows from the same application on the window "
|
||||||
|
#| "list. Possible values are \"never\", \"auto\" and \"always\"."
|
||||||
msgid ""
|
msgid ""
|
||||||
"Decides when to group windows from the same application on the window list. "
|
"Decides when to group windows from the same application on the window list. "
|
||||||
"Possible values are \"never\", \"auto\" and \"always\"."
|
"Possible values are “never”, “auto” and “always”."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"উইন্ডো তালিকায় একই অ্যাপ্লিকেশন থেকে কখন উইন্ডো দলভুক্ত করা হবে তার সিদ্ধান্ত "
|
"উইন্ডো তালিকার একই অ্যাপ্লিকেশন থেকে কখন উইন্ডোজকে গ্রুপ করবেন তা সিদ্ধান্ত নেয়। "
|
||||||
"নেয়। "
|
"সম্ভাব্য মানগুলি হ'ল \"কখনই\", \"স্বয়ং\" এবং \"সর্বদা\"।"
|
||||||
"সম্ভাব্য মানগুলি হল \"কখনও নয়\", \"স্বয়ংক্রিয়\" এবং \"সর্বদা\"।"
|
|
||||||
|
|
||||||
#: ../extensions/window-list/prefs.js:30
|
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:20
|
||||||
|
#: extensions/window-list/prefs.js:100
|
||||||
|
#| msgid "Show only windows in the current workspace"
|
||||||
|
msgid "Show windows from all workspaces"
|
||||||
|
msgstr "সমস্ত ওয়ার্কস্পেসে থেকে উইন্ডো প্রদর্শন করুন"
|
||||||
|
|
||||||
|
#: extensions/window-list/prefs.js:29
|
||||||
msgid "Window Grouping"
|
msgid "Window Grouping"
|
||||||
msgstr "উইন্ডো দলভুক্তকরণ"
|
msgstr "উইন্ডো দলভুক্তকরণ"
|
||||||
|
|
||||||
#: ../extensions/window-list/prefs.js:49
|
#: extensions/window-list/prefs.js:58
|
||||||
msgid "Never group windows"
|
msgid "Never group windows"
|
||||||
msgstr "উইন্ডো কখনও দলভুক্ত করবেন না"
|
msgstr "উইন্ডো কখনও দলভুক্ত করবেন না"
|
||||||
|
|
||||||
#: ../extensions/window-list/prefs.js:50
|
#: extensions/window-list/prefs.js:59
|
||||||
msgid "Group windows when space is limited"
|
msgid "Group windows when space is limited"
|
||||||
msgstr "স্থান কম থাকলে উইন্ডো দলভুক্ত করুন"
|
msgstr "স্থান কম থাকলে উইন্ডো দলভুক্ত করুন"
|
||||||
|
|
||||||
#: ../extensions/window-list/prefs.js:51
|
#: extensions/window-list/prefs.js:60
|
||||||
msgid "Always group windows"
|
msgid "Always group windows"
|
||||||
msgstr "উইন্ডো সর্বদা দলভুক্ত করুন"
|
msgstr "উইন্ডো সর্বদা দলভুক্ত করুন"
|
||||||
|
|
||||||
#: ../extensions/workspace-indicator/prefs.js:141
|
#: extensions/window-list/prefs.js:94
|
||||||
#| msgid "Workspace names:"
|
msgid "Show on all monitors"
|
||||||
|
msgstr "সমস্ত মনিটরের উপর দেখান"
|
||||||
|
|
||||||
|
#: extensions/window-list/workspaceIndicator.js:207
|
||||||
|
#: extensions/workspace-indicator/extension.js:213
|
||||||
|
msgid "Workspace Indicator"
|
||||||
|
msgstr "ওয়ার্কস্পেস সূচক"
|
||||||
|
|
||||||
|
#: extensions/workspace-indicator/prefs.js:34
|
||||||
msgid "Workspace Names"
|
msgid "Workspace Names"
|
||||||
msgstr "ওয়ার্কস্পেস নামগুলি"
|
msgstr "ওয়ার্কস্পেস নামগুলি"
|
||||||
|
|
||||||
#: ../extensions/workspace-indicator/prefs.js:157
|
#: extensions/workspace-indicator/prefs.js:67
|
||||||
msgid "Name"
|
|
||||||
msgstr "নাম"
|
|
||||||
|
|
||||||
#: ../extensions/workspace-indicator/prefs.js:198
|
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "Workspace %d"
|
msgid "Workspace %d"
|
||||||
msgstr "ওয়ার্কস্পেস %d"
|
msgstr "ওয়ার্কস্পেস %d"
|
||||||
|
|
||||||
|
#: extensions/workspace-indicator/prefs.js:218
|
||||||
|
#| msgid "Workspace"
|
||||||
|
msgid "Add Workspace"
|
||||||
|
msgstr "ওয়ার্কস্পেস যোগ করুন"
|
||||||
|
|
||||||
|
#~ msgid "GNOME Shell Classic"
|
||||||
|
#~ msgstr "GNOME সেল ক্লাসিক"
|
||||||
|
|
||||||
|
# auto translated by TM merge from project: gnome-shell, version: 3.8.4, DocId: gnome-shell
|
||||||
|
#~ msgid "Window management and application launching"
|
||||||
|
#~ msgstr "উইন্ডো পরিচালনা ও অ্যাপ্লিকেশন প্রারম্ভ"
|
||||||
|
|
||||||
|
#~ msgid "Attach modal dialog to the parent window"
|
||||||
|
#~ msgstr "প্রধান উইন্ডোতে মোডেল ডায়ালগ সংযুক্ত করুন"
|
||||||
|
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "This key overrides the key in org.gnome.mutter when running GNOME Shell."
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "GNOME সেল চালানোর ক্ষেত্রে এই কী in org.gnome.mutter এর কী ওভাররাইড করে।"
|
||||||
|
|
||||||
|
#~ msgid "Arrangement of buttons on the titlebar"
|
||||||
|
#~ msgstr "শিরোনাম দন্ডে বোতামগুলির সজ্জা"
|
||||||
|
|
||||||
|
#~| msgid ""
|
||||||
|
#~| "This key overrides the key in org.gnome.mutter when running GNOME Shell."
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "This key overrides the key in org.gnome.desktop.wm.preferences when "
|
||||||
|
#~ "running GNOME Shell."
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "GNOME সেল চালানোর সময়ে এই কী org.gnome.desktop.wm.preferences-এর কী "
|
||||||
|
#~ "ওভাররাইড করে।"
|
||||||
|
|
||||||
|
#~ msgid "Enable edge tiling when dropping windows on screen edges"
|
||||||
|
#~ msgstr "উইন্ডো স্ক্রীন কিনারায় রাখার সময়ে কিনারা টাইলিং সক্রিয় করুন"
|
||||||
|
|
||||||
|
#~ msgid "Workspaces only on primary monitor"
|
||||||
|
#~ msgstr "শুধুমাত্র প্রধান মনিটরে ওয়ার্কস্পেস"
|
||||||
|
|
||||||
|
#~ msgid "Delay focus changes in mouse mode until the pointer stops moving"
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "পয়েন্টার অবস্থান পরিবর্তন না থামানো পর্যন্ত মাউস মোডে ফোকাস পরিবর্তন বিলম্বিত করুন"
|
||||||
|
|
||||||
|
#~ msgid "Thumbnail only"
|
||||||
|
#~ msgstr "শুধুমাত্র থাম্বনেইল"
|
||||||
|
|
||||||
|
#~ msgid "Application icon only"
|
||||||
|
#~ msgstr "শুধুমাত্র অ্যাপ্লিকেশন আইকন"
|
||||||
|
|
||||||
|
#~ msgid "Thumbnail and application icon"
|
||||||
|
#~ msgstr "থাম্বনেইল এবং অ্যাপ্লিকেশন আইকন"
|
||||||
|
|
||||||
|
#~ msgid "Present windows as"
|
||||||
|
#~ msgstr "এই রূপে উইন্ডো উপস্থাপনা"
|
||||||
|
|
||||||
|
#~ msgid "Activities Overview"
|
||||||
|
#~ msgstr "ক্রিয়াকলাপের পূর্বরূপ"
|
||||||
|
|
||||||
|
# auto translated by TM merge from project: yelp, version: 3.8.1, DocId: yelp
|
||||||
|
#~ msgid "Application"
|
||||||
|
#~ msgstr "অ্যাপ্লিকেশন"
|
||||||
|
|
||||||
|
#~ msgid "Create new matching rule"
|
||||||
|
#~ msgstr "মেলানোর নতুন নিয়ম তৈরি করুন"
|
||||||
|
|
||||||
|
# auto translated by TM merge from project: file-roller, version: 3.8.3, DocId: file-roller
|
||||||
|
#~ msgid "Add"
|
||||||
|
#~ msgstr "যোগ করুন"
|
||||||
|
|
||||||
|
#~ msgid "Hello, world!"
|
||||||
|
#~ msgstr "ওহে, বিশ্ব!"
|
||||||
|
|
||||||
|
#~ msgid "Alternative greeting text."
|
||||||
|
#~ msgstr "বিকল্প অভিবাদন পাঠ্য।"
|
||||||
|
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "If not empty, it contains the text that will be shown when clicking on "
|
||||||
|
#~ "the panel."
|
||||||
|
#~ msgstr "খালি না থাকলে, তাতে পাঠ্য থাকবে যা প্যানেলে ক্লিক করা হলে দেখানো হবে।"
|
||||||
|
|
||||||
|
#~| msgid "Message:"
|
||||||
|
#~ msgid "Message"
|
||||||
|
#~ msgstr "বার্তা"
|
||||||
|
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "Example aims to show how to build well behaved extensions for the Shell "
|
||||||
|
#~ "and as such it has little functionality on its own.\n"
|
||||||
|
#~ "Nevertheless it's possible to customize the greeting message."
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "সেলের জন্য সুস্থিত এক্সটেনশন কীভাবে গঠন করা সম্ভব তা উদাহরণের মাধ্যমে উপস্থাপিত "
|
||||||
|
#~ "করা হয়।\n"
|
||||||
|
#~ "উপরন্তু অভিভাদন বার্তা নিজের পছন্দ মতোও করে নেওয়া যায়।"
|
||||||
|
|
||||||
|
# auto translated by TM merge from project: gnome-system-monitor, version: 3.8.2.1, DocId: gnome-system-monitor
|
||||||
|
#~ msgid "CPU"
|
||||||
|
#~ msgstr "CPU"
|
||||||
|
|
||||||
|
# auto translated by TM merge from project: RHEV Installation Guide, version: 3.1, DocId: topics/Planning_your_Data_Center
|
||||||
|
#~ msgid "Memory"
|
||||||
|
#~ msgstr "মেমরি"
|
||||||
|
|
||||||
|
#~ msgid "Name"
|
||||||
|
#~ msgstr "নাম"
|
||||||
|
|
||||||
# auto translated by TM merge from project: gdm, version: 3.8.4, DocId: gdm
|
# auto translated by TM merge from project: gdm, version: 3.8.4, DocId: gdm
|
||||||
#~ msgid "Suspend"
|
#~ msgid "Suspend"
|
||||||
#~ msgstr "স্থগিত করুন"
|
#~ msgstr "স্থগিত করুন"
|
||||||
@@ -370,13 +360,13 @@ msgstr "ওয়ার্কস্পেস %d"
|
|||||||
#~ msgstr "স্থগিত সক্রিয় করুন"
|
#~ msgstr "স্থগিত সক্রিয় করুন"
|
||||||
|
|
||||||
#~ msgid "Control the visibility of the Suspend menu item"
|
#~ msgid "Control the visibility of the Suspend menu item"
|
||||||
#~ msgstr "স্থগিত মেনু অাইটেমের দৃশ্যমানতা নিয়ন্ত্রণ করুন"
|
#~ msgstr "স্থগিত মেনু আইটেমের দৃশ্যমানতা নিয়ন্ত্রণ করুন"
|
||||||
|
|
||||||
#~ msgid "Enable hibernating"
|
#~ msgid "Enable hibernating"
|
||||||
#~ msgstr "নিদ্রিত অবস্থা সক্রিয় করুন"
|
#~ msgstr "নিদ্রিত অবস্থা সক্রিয় করুন"
|
||||||
|
|
||||||
#~ msgid "Control the visibility of the Hibernate menu item"
|
#~ msgid "Control the visibility of the Hibernate menu item"
|
||||||
#~ msgstr "নিদ্রিত অবস্থা মেনু অাইটেমের দৃশ্যমানতা নিয়ন্ত্রণ করুন"
|
#~ msgstr "নিদ্রিত অবস্থা মেনু আইটেমের দৃশ্যমানতা নিয়ন্ত্রণ করুন"
|
||||||
|
|
||||||
#~ msgid "Normal"
|
#~ msgid "Normal"
|
||||||
#~ msgstr "স্বাভাবিক"
|
#~ msgstr "স্বাভাবিক"
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ msgstr ""
|
|||||||
"Project-Id-Version: gnome-shell-extensions\n"
|
"Project-Id-Version: gnome-shell-extensions\n"
|
||||||
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell-extensions/"
|
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell-extensions/"
|
||||||
"issues\n"
|
"issues\n"
|
||||||
"POT-Creation-Date: 2019-08-09 22:24+0000\n"
|
"POT-Creation-Date: 2021-11-06 14:08+0000\n"
|
||||||
"PO-Revision-Date: 2017-07-08 13:29+0100\n"
|
"PO-Revision-Date: 2017-07-08 13:29+0100\n"
|
||||||
"Last-Translator: Jordi Mas <jmas@softcatala.org>\n"
|
"Last-Translator: Jordi Mas <jmas@softcatala.org>\n"
|
||||||
"Language-Team: Catalan <tradgnome@softcatala.org>\n"
|
"Language-Team: Catalan <tradgnome@softcatala.org>\n"
|
||||||
@@ -19,19 +19,28 @@ msgstr ""
|
|||||||
"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"
|
||||||
|
|
||||||
#: 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 clàssic"
|
msgstr "GNOME clàssic"
|
||||||
|
|
||||||
#: 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 "Aquesta sessió us permet utilitzar el GNOME clàssic"
|
msgstr "Aquesta sessió us permet utilitzar el GNOME clàssic"
|
||||||
|
|
||||||
#: extensions/apps-menu/extension.js:113
|
#: data/gnome-classic-wayland.desktop.in:3
|
||||||
|
msgid "GNOME Classic on Wayland"
|
||||||
|
msgstr "GNOME clàssic amb Wayland"
|
||||||
|
|
||||||
|
#: data/gnome-classic-xorg.desktop.in:3
|
||||||
|
msgid "GNOME Classic on Xorg"
|
||||||
|
msgstr "GNOME clàssic amb Xorg"
|
||||||
|
|
||||||
|
#: extensions/apps-menu/extension.js:112
|
||||||
msgid "Favorites"
|
msgid "Favorites"
|
||||||
msgstr "Preferides"
|
msgstr "Preferides"
|
||||||
|
|
||||||
#: extensions/apps-menu/extension.js:368
|
#: extensions/apps-menu/extension.js:366
|
||||||
msgid "Applications"
|
msgid "Applications"
|
||||||
msgstr "Aplicacions"
|
msgstr "Aplicacions"
|
||||||
|
|
||||||
@@ -48,39 +57,26 @@ msgstr ""
|
|||||||
"d'aplicació (nom del fitxer de l'escriptori), seguit de dos punts i el "
|
"d'aplicació (nom del fitxer de l'escriptori), seguit de dos punts i el "
|
||||||
"número de l'espai de treball"
|
"número de l'espai de treball"
|
||||||
|
|
||||||
#: extensions/auto-move-windows/prefs.js:60
|
#: extensions/auto-move-windows/prefs.js:34
|
||||||
msgid "Application"
|
msgid "Workspace Rules"
|
||||||
msgstr "Aplicació"
|
msgstr "Regles dels espais de treball"
|
||||||
|
|
||||||
#: extensions/auto-move-windows/prefs.js:71
|
#: extensions/auto-move-windows/prefs.js:236
|
||||||
#: extensions/auto-move-windows/prefs.js:134
|
|
||||||
msgid "Workspace"
|
|
||||||
msgstr "Espai de treball"
|
|
||||||
|
|
||||||
#: extensions/auto-move-windows/prefs.js:89
|
|
||||||
msgid "Add Rule"
|
msgid "Add Rule"
|
||||||
msgstr "Afegeix una regla"
|
msgstr "Afegeix una regla"
|
||||||
|
|
||||||
#: extensions/auto-move-windows/prefs.js:111
|
|
||||||
msgid "Create new matching rule"
|
|
||||||
msgstr "Crea una regla de coincidència nova"
|
|
||||||
|
|
||||||
#: extensions/auto-move-windows/prefs.js:117
|
|
||||||
msgid "Add"
|
|
||||||
msgstr "Afegeix"
|
|
||||||
|
|
||||||
#. TRANSLATORS: %s is the filesystem name
|
#. TRANSLATORS: %s is the filesystem name
|
||||||
#: extensions/drive-menu/extension.js:102
|
#: extensions/drive-menu/extension.js:133
|
||||||
#: extensions/places-menu/placeDisplay.js:232
|
#: extensions/places-menu/placeDisplay.js:233
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "Ejecting drive “%s” failed:"
|
msgid "Ejecting drive “%s” failed:"
|
||||||
msgstr "Ha fallat l'expulsió de la unitat «%s»:"
|
msgstr "Ha fallat l'expulsió de la unitat «%s»:"
|
||||||
|
|
||||||
#: extensions/drive-menu/extension.js:118
|
#: extensions/drive-menu/extension.js:149
|
||||||
msgid "Removable devices"
|
msgid "Removable devices"
|
||||||
msgstr "Dispositius extraïbles"
|
msgstr "Dispositius extraïbles"
|
||||||
|
|
||||||
#: extensions/drive-menu/extension.js:145
|
#: extensions/drive-menu/extension.js:171
|
||||||
msgid "Open Files"
|
msgid "Open Files"
|
||||||
msgstr "Obre els fitxers"
|
msgstr "Obre els fitxers"
|
||||||
|
|
||||||
@@ -94,10 +90,10 @@ msgid ""
|
|||||||
"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 ""
|
||||||
"Intenta utilitzar més espai de la pantalla per posicionar les miniatures de "
|
"Intenta utilitzar més espai de la pantalla per a posicionar les miniatures "
|
||||||
"les finestres adaptant-les a la ràtio d'aspecte de la pantalla, consolidant-"
|
"de les finestres adaptant-les a la ràtio d'aspecte de la pantalla, "
|
||||||
"les més per reduir la capsa que les envolta. Aquest paràmetre de "
|
"consolidant-les més per a reduir la caixa que les envolta. Aquest paràmetre "
|
||||||
"configuració només s'aplica a l'estratègia de posicionament de finestres "
|
"de configuració només s'aplica a l'estratègia de posicionament de finestres "
|
||||||
"natural."
|
"natural."
|
||||||
|
|
||||||
#: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:11
|
#: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:11
|
||||||
@@ -115,8 +111,8 @@ msgstr ""
|
|||||||
"posicionar-lo a baix. Cal reiniciar el Shell per tal que aquest canvi tingui "
|
"posicionar-lo a baix. Cal reiniciar el Shell per tal que aquest canvi tingui "
|
||||||
"efecte."
|
"efecte."
|
||||||
|
|
||||||
#: extensions/places-menu/extension.js:80
|
#: extensions/places-menu/extension.js:88
|
||||||
#: extensions/places-menu/extension.js:84
|
#: extensions/places-menu/extension.js:91
|
||||||
msgid "Places"
|
msgid "Places"
|
||||||
msgstr "Llocs"
|
msgstr "Llocs"
|
||||||
|
|
||||||
@@ -135,11 +131,11 @@ msgstr "No s'ha pogut muntar el volum «%s»"
|
|||||||
msgid "Computer"
|
msgid "Computer"
|
||||||
msgstr "Ordinador"
|
msgstr "Ordinador"
|
||||||
|
|
||||||
#: extensions/places-menu/placeDisplay.js:358
|
#: extensions/places-menu/placeDisplay.js:359
|
||||||
msgid "Home"
|
msgid "Home"
|
||||||
msgstr "Inici"
|
msgstr "Inici"
|
||||||
|
|
||||||
#: extensions/places-menu/placeDisplay.js:403
|
#: extensions/places-menu/placeDisplay.js:404
|
||||||
msgid "Browse Network"
|
msgid "Browse Network"
|
||||||
msgstr "Navega per la xarxa"
|
msgstr "Navega per la xarxa"
|
||||||
|
|
||||||
@@ -159,43 +155,43 @@ msgstr "Nom del tema"
|
|||||||
msgid "The name of the theme, to be loaded from ~/.themes/name/gnome-shell"
|
msgid "The name of the theme, to be loaded from ~/.themes/name/gnome-shell"
|
||||||
msgstr "El nom del tema que es carregarà des de ~/.themes/name/gnome-shell"
|
msgstr "El nom del tema que es carregarà des de ~/.themes/name/gnome-shell"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:99
|
#: extensions/window-list/extension.js:72
|
||||||
msgid "Close"
|
msgid "Close"
|
||||||
msgstr "Tanca"
|
msgstr "Tanca"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:119
|
#: extensions/window-list/extension.js:92
|
||||||
msgid "Unminimize"
|
msgid "Unminimize"
|
||||||
msgstr "Desminimitza"
|
msgstr "Desminimitza"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:119
|
#: extensions/window-list/extension.js:92
|
||||||
msgid "Minimize"
|
msgid "Minimize"
|
||||||
msgstr "Minimitza"
|
msgstr "Minimitza"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:126
|
#: extensions/window-list/extension.js:99
|
||||||
msgid "Unmaximize"
|
msgid "Unmaximize"
|
||||||
msgstr "Desmaximitza"
|
msgstr "Desmaximitza"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:126
|
#: extensions/window-list/extension.js:99
|
||||||
msgid "Maximize"
|
msgid "Maximize"
|
||||||
msgstr "Maximitza"
|
msgstr "Maximitza"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:431
|
#: extensions/window-list/extension.js:434
|
||||||
msgid "Minimize all"
|
msgid "Minimize all"
|
||||||
msgstr "Minimitza-ho tot"
|
msgstr "Minimitza-ho tot"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:437
|
#: extensions/window-list/extension.js:440
|
||||||
msgid "Unminimize all"
|
msgid "Unminimize all"
|
||||||
msgstr "Desminimitza-ho tot"
|
msgstr "Desminimitza-ho tot"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:443
|
#: extensions/window-list/extension.js:446
|
||||||
msgid "Maximize all"
|
msgid "Maximize all"
|
||||||
msgstr "Maximitza-ho tot"
|
msgstr "Maximitza-ho tot"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:451
|
#: extensions/window-list/extension.js:454
|
||||||
msgid "Unmaximize all"
|
msgid "Unmaximize all"
|
||||||
msgstr "Desmaximitza-ho tot"
|
msgstr "Desmaximitza-ho tot"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:459
|
#: extensions/window-list/extension.js:462
|
||||||
msgid "Close all"
|
msgid "Close all"
|
||||||
msgstr "Tanca-ho tot"
|
msgstr "Tanca-ho tot"
|
||||||
|
|
||||||
@@ -217,13 +213,15 @@ msgstr ""
|
|||||||
"«auto» (automàticament) i «always» (sempre)."
|
"«auto» (automàticament) i «always» (sempre)."
|
||||||
|
|
||||||
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:20
|
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:20
|
||||||
#: extensions/window-list/prefs.js:82
|
#: extensions/window-list/prefs.js:86
|
||||||
msgid "Show windows from all workspaces"
|
msgid "Show windows from all workspaces"
|
||||||
msgstr "Mostra les finestres de tots els espais de treball"
|
msgstr "Mostra les finestres de tots els espais de treball"
|
||||||
|
|
||||||
#: 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 "Si es mostren les finestres de tots els espais de treballs o només de l'actual. "
|
msgstr ""
|
||||||
|
"Si es mostren les finestres de tots els espais de treballs o només de "
|
||||||
|
"l'actual."
|
||||||
|
|
||||||
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:27
|
#: 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"
|
||||||
@@ -237,41 +235,40 @@ msgstr ""
|
|||||||
"Si es mostra la llista de finestres en tots els monitors connectats o només "
|
"Si es mostra la llista de finestres en tots els monitors connectats o només "
|
||||||
"al primari."
|
"al primari."
|
||||||
|
|
||||||
#: extensions/window-list/prefs.js:25
|
#: extensions/window-list/prefs.js:39
|
||||||
msgid "Window Grouping"
|
msgid "Window Grouping"
|
||||||
msgstr "Agrupació de finestres"
|
msgstr "Agrupació de finestres"
|
||||||
|
|
||||||
#: extensions/window-list/prefs.js:47
|
#: extensions/window-list/prefs.js:63
|
||||||
msgid "Never group windows"
|
msgid "Never group windows"
|
||||||
msgstr "Mai agrupis les finestres"
|
msgstr "Mai agrupis les finestres"
|
||||||
|
|
||||||
#: extensions/window-list/prefs.js:48
|
#: extensions/window-list/prefs.js:64
|
||||||
msgid "Group windows when space is limited"
|
msgid "Group windows when space is limited"
|
||||||
msgstr "Agrupa les finestres quan l'espai estigui limitat"
|
msgstr "Agrupa les finestres quan l'espai estigui limitat"
|
||||||
|
|
||||||
#: extensions/window-list/prefs.js:49
|
#: extensions/window-list/prefs.js:65
|
||||||
msgid "Always group windows"
|
msgid "Always group windows"
|
||||||
msgstr "Agrupa les finestres sempre"
|
msgstr "Agrupa les finestres sempre"
|
||||||
|
|
||||||
#: extensions/window-list/prefs.js:75
|
#: extensions/window-list/prefs.js:81
|
||||||
msgid "Show on all monitors"
|
msgid "Show on all monitors"
|
||||||
msgstr "Mostra a tots els monitors"
|
msgstr "Mostra a tots els monitors"
|
||||||
|
|
||||||
#: extensions/window-list/workspaceIndicator.js:211
|
#: extensions/window-list/workspaceIndicator.js:249
|
||||||
#: extensions/workspace-indicator/extension.js:216
|
#: extensions/workspace-indicator/extension.js:254
|
||||||
msgid "Workspace Indicator"
|
msgid "Workspace Indicator"
|
||||||
msgstr "Indicador de l'espai de treball"
|
msgstr "Indicador de l'espai de treball"
|
||||||
|
|
||||||
#: extensions/workspace-indicator/prefs.js:131
|
#: extensions/workspace-indicator/prefs.js:33
|
||||||
msgid "Workspace Names"
|
msgid "Workspace Names"
|
||||||
msgstr "Noms dels espais de treball"
|
msgstr "Noms dels espais de treball"
|
||||||
|
|
||||||
#: extensions/workspace-indicator/prefs.js:151
|
#: extensions/workspace-indicator/prefs.js:66
|
||||||
msgid "Name"
|
|
||||||
msgstr "Nom"
|
|
||||||
|
|
||||||
#: extensions/workspace-indicator/prefs.js:191
|
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "Workspace %d"
|
msgid "Workspace %d"
|
||||||
msgstr "Espai de treball %d"
|
msgstr "Espai de treball %d"
|
||||||
|
|
||||||
|
#: extensions/workspace-indicator/prefs.js:207
|
||||||
|
msgid "Add Workspace"
|
||||||
|
msgstr "Afegeix un espai de treball"
|
||||||
|
|||||||
@@ -2,15 +2,15 @@
|
|||||||
# Copyright (C) 2011 gnome-shell-extensions's COPYRIGHT HOLDER
|
# Copyright (C) 2011 gnome-shell-extensions's COPYRIGHT HOLDER
|
||||||
# This file is distributed under the same license as the gnome-shell-extensions package.
|
# This file is distributed under the same license as the gnome-shell-extensions package.
|
||||||
# Petr Kovar <pknbe@volny.cz>, 2013.
|
# Petr Kovar <pknbe@volny.cz>, 2013.
|
||||||
# Marek Černocký <marek@manet.cz>, 2011, 2012, 2013, 2014, 2015, 2017, 2019.
|
# Marek Černocký <marek@manet.cz>, 2011, 2012, 2013, 2014, 2015, 2017, 2019, 2020.
|
||||||
#
|
#
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: gnome-shell-extensions\n"
|
"Project-Id-Version: gnome-shell-extensions\n"
|
||||||
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell-extensions/"
|
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell-extensions/"
|
||||||
"issues\n"
|
"issues\n"
|
||||||
"POT-Creation-Date: 2019-08-09 22:24+0000\n"
|
"POT-Creation-Date: 2020-05-28 00:55+0000\n"
|
||||||
"PO-Revision-Date: 2019-08-16 10:16+0200\n"
|
"PO-Revision-Date: 2020-08-28 22:18+0200\n"
|
||||||
"Last-Translator: Marek Černocký <marek@manet.cz>\n"
|
"Last-Translator: Marek Černocký <marek@manet.cz>\n"
|
||||||
"Language-Team: Czech <gnome-cs-list@gnome.org>\n"
|
"Language-Team: Czech <gnome-cs-list@gnome.org>\n"
|
||||||
"Language: cs\n"
|
"Language: cs\n"
|
||||||
@@ -32,7 +32,7 @@ msgstr "Toto sezení vás přihlásí do GNOME klasik"
|
|||||||
msgid "Favorites"
|
msgid "Favorites"
|
||||||
msgstr "Oblíbené"
|
msgstr "Oblíbené"
|
||||||
|
|
||||||
#: extensions/apps-menu/extension.js:368
|
#: extensions/apps-menu/extension.js:369
|
||||||
msgid "Applications"
|
msgid "Applications"
|
||||||
msgstr "Aplikace"
|
msgstr "Aplikace"
|
||||||
|
|
||||||
@@ -48,39 +48,26 @@ msgstr ""
|
|||||||
"Seznam řetězců, z nichž každý obsahuje ID aplikace (název souboru pracovní "
|
"Seznam řetězců, z nichž každý obsahuje ID aplikace (název souboru pracovní "
|
||||||
"plochy), následovaný dvojtečkou a číslem pracovní plochy"
|
"plochy), následovaný dvojtečkou a číslem pracovní plochy"
|
||||||
|
|
||||||
#: extensions/auto-move-windows/prefs.js:60
|
#: extensions/auto-move-windows/prefs.js:35
|
||||||
msgid "Application"
|
msgid "Workspace Rules"
|
||||||
msgstr "Aplikace"
|
msgstr "Pravidla pracovních ploch"
|
||||||
|
|
||||||
#: extensions/auto-move-windows/prefs.js:71
|
#: extensions/auto-move-windows/prefs.js:243
|
||||||
#: extensions/auto-move-windows/prefs.js:134
|
|
||||||
msgid "Workspace"
|
|
||||||
msgstr "Pracovní plocha"
|
|
||||||
|
|
||||||
#: extensions/auto-move-windows/prefs.js:89
|
|
||||||
msgid "Add Rule"
|
msgid "Add Rule"
|
||||||
msgstr "Přidat pravidlo"
|
msgstr "Přidat pravidlo"
|
||||||
|
|
||||||
#: extensions/auto-move-windows/prefs.js:111
|
|
||||||
msgid "Create new matching rule"
|
|
||||||
msgstr "Vytvoření nového srovnávacího pravidla"
|
|
||||||
|
|
||||||
#: extensions/auto-move-windows/prefs.js:117
|
|
||||||
msgid "Add"
|
|
||||||
msgstr "Přidat"
|
|
||||||
|
|
||||||
#. TRANSLATORS: %s is the filesystem name
|
#. TRANSLATORS: %s is the filesystem name
|
||||||
#: extensions/drive-menu/extension.js:102
|
#: extensions/drive-menu/extension.js:112
|
||||||
#: extensions/places-menu/placeDisplay.js:232
|
#: extensions/places-menu/placeDisplay.js:233
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "Ejecting drive “%s” failed:"
|
msgid "Ejecting drive “%s” failed:"
|
||||||
msgstr "Vysunutí disku „%s“ selhalo:"
|
msgstr "Vysunutí disku „%s“ selhalo:"
|
||||||
|
|
||||||
#: extensions/drive-menu/extension.js:118
|
#: extensions/drive-menu/extension.js:128
|
||||||
msgid "Removable devices"
|
msgid "Removable devices"
|
||||||
msgstr "Výměnná zařízení"
|
msgstr "Výměnná zařízení"
|
||||||
|
|
||||||
#: extensions/drive-menu/extension.js:145
|
#: extensions/drive-menu/extension.js:155
|
||||||
msgid "Open Files"
|
msgid "Open Files"
|
||||||
msgstr "Otevřít soubory"
|
msgstr "Otevřít soubory"
|
||||||
|
|
||||||
@@ -112,8 +99,8 @@ msgstr ""
|
|||||||
"přepíše výchozí chování shellu, který jej umisťuje dolů. Změna tohoto "
|
"přepíše výchozí chování shellu, který jej umisťuje dolů. Změna tohoto "
|
||||||
"nastavení vyžaduje restart shellu, aby se projevila."
|
"nastavení vyžaduje restart shellu, aby se projevila."
|
||||||
|
|
||||||
#: extensions/places-menu/extension.js:80
|
#: extensions/places-menu/extension.js:89
|
||||||
#: extensions/places-menu/extension.js:84
|
#: extensions/places-menu/extension.js:93
|
||||||
msgid "Places"
|
msgid "Places"
|
||||||
msgstr "Místa"
|
msgstr "Místa"
|
||||||
|
|
||||||
@@ -132,11 +119,11 @@ msgstr "Selhalo připojení svazku pro „%s“"
|
|||||||
msgid "Computer"
|
msgid "Computer"
|
||||||
msgstr "Počítač"
|
msgstr "Počítač"
|
||||||
|
|
||||||
#: extensions/places-menu/placeDisplay.js:358
|
#: extensions/places-menu/placeDisplay.js:359
|
||||||
msgid "Home"
|
msgid "Home"
|
||||||
msgstr "Domů"
|
msgstr "Domů"
|
||||||
|
|
||||||
#: extensions/places-menu/placeDisplay.js:403
|
#: extensions/places-menu/placeDisplay.js:404
|
||||||
msgid "Browse Network"
|
msgid "Browse Network"
|
||||||
msgstr "Procházet síť"
|
msgstr "Procházet síť"
|
||||||
|
|
||||||
@@ -156,47 +143,47 @@ msgstr "Název motivu"
|
|||||||
msgid "The name of the theme, to be loaded from ~/.themes/name/gnome-shell"
|
msgid "The name of the theme, to be loaded from ~/.themes/name/gnome-shell"
|
||||||
msgstr "Název motivu, který se má načíst z ~/.themes/name/gnome-shell"
|
msgstr "Název motivu, který se má načíst z ~/.themes/name/gnome-shell"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:99
|
#: extensions/window-list/extension.js:98
|
||||||
msgid "Close"
|
msgid "Close"
|
||||||
msgstr "Zavřít"
|
msgstr "Zavřít"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:119
|
#: extensions/window-list/extension.js:118
|
||||||
msgid "Unminimize"
|
msgid "Unminimize"
|
||||||
msgstr "Zrušit minimalizaci"
|
msgstr "Zrušit minimalizaci"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:119
|
#: extensions/window-list/extension.js:118
|
||||||
msgid "Minimize"
|
msgid "Minimize"
|
||||||
msgstr "Minimalizovat"
|
msgstr "Minimalizovat"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:126
|
#: extensions/window-list/extension.js:125
|
||||||
msgid "Unmaximize"
|
msgid "Unmaximize"
|
||||||
msgstr "Zrušit maximalizaci"
|
msgstr "Zrušit maximalizaci"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:126
|
#: extensions/window-list/extension.js:125
|
||||||
msgid "Maximize"
|
msgid "Maximize"
|
||||||
msgstr "Maximalizovat"
|
msgstr "Maximalizovat"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:431
|
#: extensions/window-list/extension.js:428
|
||||||
msgid "Minimize all"
|
msgid "Minimize all"
|
||||||
msgstr "Minimalizovat všechna"
|
msgstr "Minimalizovat všechna"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:437
|
#: extensions/window-list/extension.js:434
|
||||||
msgid "Unminimize all"
|
msgid "Unminimize all"
|
||||||
msgstr "Zrušit minimalizaci všech"
|
msgstr "Zrušit minimalizaci všech"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:443
|
#: extensions/window-list/extension.js:440
|
||||||
msgid "Maximize all"
|
msgid "Maximize all"
|
||||||
msgstr "Maximalizovat všechna"
|
msgstr "Maximalizovat všechna"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:451
|
#: extensions/window-list/extension.js:448
|
||||||
msgid "Unmaximize all"
|
msgid "Unmaximize all"
|
||||||
msgstr "Zrušit maximalizaci všech"
|
msgstr "Zrušit maximalizaci všech"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:459
|
#: extensions/window-list/extension.js:456
|
||||||
msgid "Close all"
|
msgid "Close all"
|
||||||
msgstr "Zavřít všechna"
|
msgstr "Zavřít všechna"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:741
|
#: extensions/window-list/extension.js:734
|
||||||
msgid "Window List"
|
msgid "Window List"
|
||||||
msgstr "Seznam oken"
|
msgstr "Seznam oken"
|
||||||
|
|
||||||
@@ -213,7 +200,7 @@ msgstr ""
|
|||||||
"hodnoty jsou „never“ (nikdy), „auto“ (automaticky) a „always“ (vždy)."
|
"hodnoty jsou „never“ (nikdy), „auto“ (automaticky) a „always“ (vždy)."
|
||||||
|
|
||||||
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:20
|
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:20
|
||||||
#: extensions/window-list/prefs.js:82
|
#: extensions/window-list/prefs.js:100
|
||||||
msgid "Show windows from all workspaces"
|
msgid "Show windows from all workspaces"
|
||||||
msgstr "Zobrazovat okna ze všech pracovních ploch"
|
msgstr "Zobrazovat okna ze všech pracovních ploch"
|
||||||
|
|
||||||
@@ -233,40 +220,40 @@ msgstr ""
|
|||||||
"Zda zobrazovat seznam oken na všech připojených monitorech nebo jen na "
|
"Zda zobrazovat seznam oken na všech připojených monitorech nebo jen na "
|
||||||
"hlavním."
|
"hlavním."
|
||||||
|
|
||||||
#: extensions/window-list/prefs.js:25
|
#: extensions/window-list/prefs.js:29
|
||||||
msgid "Window Grouping"
|
msgid "Window Grouping"
|
||||||
msgstr "Seskupování oken"
|
msgstr "Seskupování oken"
|
||||||
|
|
||||||
#: extensions/window-list/prefs.js:47
|
#: extensions/window-list/prefs.js:58
|
||||||
msgid "Never group windows"
|
msgid "Never group windows"
|
||||||
msgstr "Nikdy neseskupovat okna"
|
msgstr "Nikdy neseskupovat okna"
|
||||||
|
|
||||||
#: extensions/window-list/prefs.js:48
|
#: extensions/window-list/prefs.js:59
|
||||||
msgid "Group windows when space is limited"
|
msgid "Group windows when space is limited"
|
||||||
msgstr "Seskupovat okna při nedostatku místa"
|
msgstr "Seskupovat okna při nedostatku místa"
|
||||||
|
|
||||||
#: extensions/window-list/prefs.js:49
|
#: extensions/window-list/prefs.js:60
|
||||||
msgid "Always group windows"
|
msgid "Always group windows"
|
||||||
msgstr "Vždy seskupovat okna"
|
msgstr "Vždy seskupovat okna"
|
||||||
|
|
||||||
#: extensions/window-list/prefs.js:75
|
#: extensions/window-list/prefs.js:94
|
||||||
msgid "Show on all monitors"
|
msgid "Show on all monitors"
|
||||||
msgstr "Zobrazovat na všech monitorech"
|
msgstr "Zobrazovat na všech monitorech"
|
||||||
|
|
||||||
#: extensions/window-list/workspaceIndicator.js:211
|
#: extensions/window-list/workspaceIndicator.js:207
|
||||||
#: extensions/workspace-indicator/extension.js:216
|
#: extensions/workspace-indicator/extension.js:213
|
||||||
msgid "Workspace Indicator"
|
msgid "Workspace Indicator"
|
||||||
msgstr "Ukazatel pracovní plochy"
|
msgstr "Ukazatel pracovní plochy"
|
||||||
|
|
||||||
#: extensions/workspace-indicator/prefs.js:131
|
#: extensions/workspace-indicator/prefs.js:34
|
||||||
msgid "Workspace Names"
|
msgid "Workspace Names"
|
||||||
msgstr "Názvy pracovních ploch"
|
msgstr "Názvy pracovních ploch"
|
||||||
|
|
||||||
#: extensions/workspace-indicator/prefs.js:151
|
#: extensions/workspace-indicator/prefs.js:67
|
||||||
msgid "Name"
|
|
||||||
msgstr "Název"
|
|
||||||
|
|
||||||
#: extensions/workspace-indicator/prefs.js:191
|
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "Workspace %d"
|
msgid "Workspace %d"
|
||||||
msgstr "Pracovní plocha %d"
|
msgstr "Pracovní plocha %d"
|
||||||
|
|
||||||
|
#: extensions/workspace-indicator/prefs.js:218
|
||||||
|
msgid "Add Workspace"
|
||||||
|
msgstr "Přidat pracovní plochu"
|
||||||
|
|||||||
@@ -11,15 +11,16 @@ 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: 2019-08-09 22:24+0000\n"
|
"POT-Creation-Date: 2020-05-28 00:55+0000\n"
|
||||||
"PO-Revision-Date: 2019-09-09 00:53+0200\n"
|
"PO-Revision-Date: 2020-09-07 18:36+0200\n"
|
||||||
"Last-Translator: Kris Thomsen <mail@kristhomsen.dk>\n"
|
"Last-Translator: Alan Mortensen <alanmortensen.am@gmail.com>\n"
|
||||||
"Language-Team: Danish <dansk@dansk-gruppen.dk>\n"
|
"Language-Team: Danish <dansk@dansk-gruppen.dk>\n"
|
||||||
"Language: da\n"
|
"Language: da\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||||
|
"X-Generator: Poedit 2.3\n"
|
||||||
|
|
||||||
#: data/gnome-classic.desktop.in:3 data/gnome-classic.session.desktop.in:3
|
#: data/gnome-classic.desktop.in:3 data/gnome-classic.session.desktop.in:3
|
||||||
msgid "GNOME Classic"
|
msgid "GNOME Classic"
|
||||||
@@ -33,7 +34,7 @@ msgstr "Denne session logger dig ind i GNOME Classic"
|
|||||||
msgid "Favorites"
|
msgid "Favorites"
|
||||||
msgstr "Favoritter"
|
msgstr "Favoritter"
|
||||||
|
|
||||||
#: extensions/apps-menu/extension.js:368
|
#: extensions/apps-menu/extension.js:369
|
||||||
msgid "Applications"
|
msgid "Applications"
|
||||||
msgstr "Programmer"
|
msgstr "Programmer"
|
||||||
|
|
||||||
@@ -49,39 +50,26 @@ msgstr ""
|
|||||||
"En liste over strenge, som hver indeholder et program-id "
|
"En liste over strenge, som hver indeholder et program-id "
|
||||||
"(skrivebordsfilnavn), efterfulgt af et kolon og arbejdsområdets nummer"
|
"(skrivebordsfilnavn), efterfulgt af et kolon og arbejdsområdets nummer"
|
||||||
|
|
||||||
#: extensions/auto-move-windows/prefs.js:60
|
#: extensions/auto-move-windows/prefs.js:35
|
||||||
msgid "Application"
|
msgid "Workspace Rules"
|
||||||
msgstr "Program"
|
msgstr "Regler for arbejdsområde"
|
||||||
|
|
||||||
#: extensions/auto-move-windows/prefs.js:71
|
#: extensions/auto-move-windows/prefs.js:243
|
||||||
#: extensions/auto-move-windows/prefs.js:134
|
|
||||||
msgid "Workspace"
|
|
||||||
msgstr "Arbejdsområde"
|
|
||||||
|
|
||||||
#: extensions/auto-move-windows/prefs.js:89
|
|
||||||
msgid "Add Rule"
|
msgid "Add Rule"
|
||||||
msgstr "Tilføj regel"
|
msgstr "Tilføj regel"
|
||||||
|
|
||||||
#: extensions/auto-move-windows/prefs.js:111
|
|
||||||
msgid "Create new matching rule"
|
|
||||||
msgstr "Opret ny regel for match"
|
|
||||||
|
|
||||||
#: extensions/auto-move-windows/prefs.js:117
|
|
||||||
msgid "Add"
|
|
||||||
msgstr "Tilføj"
|
|
||||||
|
|
||||||
#. TRANSLATORS: %s is the filesystem name
|
#. TRANSLATORS: %s is the filesystem name
|
||||||
#: extensions/drive-menu/extension.js:102
|
#: extensions/drive-menu/extension.js:112
|
||||||
#: extensions/places-menu/placeDisplay.js:232
|
#: extensions/places-menu/placeDisplay.js:233
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "Ejecting drive “%s” failed:"
|
msgid "Ejecting drive “%s” failed:"
|
||||||
msgstr "Udskubning af drevet “%s” mislykkedes:"
|
msgstr "Udskubning af drevet “%s” mislykkedes:"
|
||||||
|
|
||||||
#: extensions/drive-menu/extension.js:118
|
#: extensions/drive-menu/extension.js:128
|
||||||
msgid "Removable devices"
|
msgid "Removable devices"
|
||||||
msgstr "Flytbare enheder"
|
msgstr "Flytbare enheder"
|
||||||
|
|
||||||
#: extensions/drive-menu/extension.js:145
|
#: extensions/drive-menu/extension.js:155
|
||||||
msgid "Open Files"
|
msgid "Open Files"
|
||||||
msgstr "Åbn filer"
|
msgstr "Åbn filer"
|
||||||
|
|
||||||
@@ -115,8 +103,8 @@ msgstr ""
|
|||||||
"Ændring af denne indstilling kræver at shell'en genstartes for at træde i "
|
"Ændring af denne indstilling kræver at shell'en genstartes for at træde i "
|
||||||
"kraft."
|
"kraft."
|
||||||
|
|
||||||
#: extensions/places-menu/extension.js:80
|
#: extensions/places-menu/extension.js:89
|
||||||
#: extensions/places-menu/extension.js:84
|
#: extensions/places-menu/extension.js:93
|
||||||
msgid "Places"
|
msgid "Places"
|
||||||
msgstr "Steder"
|
msgstr "Steder"
|
||||||
|
|
||||||
@@ -135,11 +123,11 @@ msgstr "Kunne ikke montere diskenhed for “%s”"
|
|||||||
msgid "Computer"
|
msgid "Computer"
|
||||||
msgstr "Computer"
|
msgstr "Computer"
|
||||||
|
|
||||||
#: extensions/places-menu/placeDisplay.js:358
|
#: extensions/places-menu/placeDisplay.js:359
|
||||||
msgid "Home"
|
msgid "Home"
|
||||||
msgstr "Hjem"
|
msgstr "Hjem"
|
||||||
|
|
||||||
#: extensions/places-menu/placeDisplay.js:403
|
#: extensions/places-menu/placeDisplay.js:404
|
||||||
msgid "Browse Network"
|
msgid "Browse Network"
|
||||||
msgstr "Gennemse netværk"
|
msgstr "Gennemse netværk"
|
||||||
|
|
||||||
@@ -159,47 +147,47 @@ msgstr "Temanavn"
|
|||||||
msgid "The name of the theme, to be loaded from ~/.themes/name/gnome-shell"
|
msgid "The name of the theme, to be loaded from ~/.themes/name/gnome-shell"
|
||||||
msgstr "Navnet på temaet, som indlæses fra ~/.themes/name/gnome-shell"
|
msgstr "Navnet på temaet, som indlæses fra ~/.themes/name/gnome-shell"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:99
|
#: extensions/window-list/extension.js:98
|
||||||
msgid "Close"
|
msgid "Close"
|
||||||
msgstr "Luk"
|
msgstr "Luk"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:119
|
#: extensions/window-list/extension.js:118
|
||||||
msgid "Unminimize"
|
msgid "Unminimize"
|
||||||
msgstr "Afminimér"
|
msgstr "Afminimér"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:119
|
#: extensions/window-list/extension.js:118
|
||||||
msgid "Minimize"
|
msgid "Minimize"
|
||||||
msgstr "Minimér"
|
msgstr "Minimér"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:126
|
#: extensions/window-list/extension.js:125
|
||||||
msgid "Unmaximize"
|
msgid "Unmaximize"
|
||||||
msgstr "Afmaksimér"
|
msgstr "Afmaksimér"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:126
|
#: extensions/window-list/extension.js:125
|
||||||
msgid "Maximize"
|
msgid "Maximize"
|
||||||
msgstr "Maksimér"
|
msgstr "Maksimér"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:431
|
#: extensions/window-list/extension.js:428
|
||||||
msgid "Minimize all"
|
msgid "Minimize all"
|
||||||
msgstr "Minimér"
|
msgstr "Minimér"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:437
|
#: extensions/window-list/extension.js:434
|
||||||
msgid "Unminimize all"
|
msgid "Unminimize all"
|
||||||
msgstr "Afminimér alle"
|
msgstr "Afminimér alle"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:443
|
#: extensions/window-list/extension.js:440
|
||||||
msgid "Maximize all"
|
msgid "Maximize all"
|
||||||
msgstr "Maksimér alle"
|
msgstr "Maksimér alle"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:451
|
#: extensions/window-list/extension.js:448
|
||||||
msgid "Unmaximize all"
|
msgid "Unmaximize all"
|
||||||
msgstr "Afmaksimér alle"
|
msgstr "Afmaksimér alle"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:459
|
#: extensions/window-list/extension.js:456
|
||||||
msgid "Close all"
|
msgid "Close all"
|
||||||
msgstr "Luk alle"
|
msgstr "Luk alle"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:741
|
#: extensions/window-list/extension.js:734
|
||||||
msgid "Window List"
|
msgid "Window List"
|
||||||
msgstr "Vinduesliste"
|
msgstr "Vinduesliste"
|
||||||
|
|
||||||
@@ -216,13 +204,14 @@ msgstr ""
|
|||||||
"Mulige værdier er “never” (aldrig), “auto” (automatisk) og “always” (altid)."
|
"Mulige værdier er “never” (aldrig), “auto” (automatisk) og “always” (altid)."
|
||||||
|
|
||||||
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:20
|
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:20
|
||||||
#: extensions/window-list/prefs.js:82
|
#: extensions/window-list/prefs.js:100
|
||||||
msgid "Show windows from all workspaces"
|
msgid "Show windows from all workspaces"
|
||||||
msgstr "Vis vinduer fra alle arbejdsområder"
|
msgstr "Vis vinduer fra alle arbejdsområder"
|
||||||
|
|
||||||
#: 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 "Om der skal vises vinduer fra alle arbejdsområder eller kun det nuværende."
|
msgstr ""
|
||||||
|
"Om der skal vises vinduer fra alle arbejdsområder eller kun det nuværende."
|
||||||
|
|
||||||
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:27
|
#: 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"
|
||||||
@@ -236,44 +225,56 @@ msgstr ""
|
|||||||
"Om vindueslisten skal vise på alle tilsluttede skærme, eller kun på den "
|
"Om vindueslisten skal vise på alle tilsluttede skærme, eller kun på den "
|
||||||
"primære."
|
"primære."
|
||||||
|
|
||||||
#: extensions/window-list/prefs.js:25
|
#: extensions/window-list/prefs.js:29
|
||||||
msgid "Window Grouping"
|
msgid "Window Grouping"
|
||||||
msgstr "Vinduesgruppering"
|
msgstr "Vinduesgruppering"
|
||||||
|
|
||||||
#: extensions/window-list/prefs.js:47
|
#: extensions/window-list/prefs.js:58
|
||||||
msgid "Never group windows"
|
msgid "Never group windows"
|
||||||
msgstr "Gruppér aldrig vinduer"
|
msgstr "Gruppér aldrig vinduer"
|
||||||
|
|
||||||
#: extensions/window-list/prefs.js:48
|
#: extensions/window-list/prefs.js:59
|
||||||
msgid "Group windows when space is limited"
|
msgid "Group windows when space is limited"
|
||||||
msgstr "Gruppér vinduer når pladsen er begrænset"
|
msgstr "Gruppér vinduer når pladsen er begrænset"
|
||||||
|
|
||||||
#: extensions/window-list/prefs.js:49
|
#: extensions/window-list/prefs.js:60
|
||||||
msgid "Always group windows"
|
msgid "Always group windows"
|
||||||
msgstr "Gruppér altid vinduer"
|
msgstr "Gruppér altid vinduer"
|
||||||
|
|
||||||
#: extensions/window-list/prefs.js:75
|
#: extensions/window-list/prefs.js:94
|
||||||
msgid "Show on all monitors"
|
msgid "Show on all monitors"
|
||||||
msgstr "Vis på alle skærme"
|
msgstr "Vis på alle skærme"
|
||||||
|
|
||||||
#: extensions/window-list/workspaceIndicator.js:211
|
#: extensions/window-list/workspaceIndicator.js:207
|
||||||
#: extensions/workspace-indicator/extension.js:216
|
#: extensions/workspace-indicator/extension.js:213
|
||||||
msgid "Workspace Indicator"
|
msgid "Workspace Indicator"
|
||||||
msgstr "Arbejdsområdeindikator"
|
msgstr "Arbejdsområdeindikator"
|
||||||
|
|
||||||
#: extensions/workspace-indicator/prefs.js:131
|
#: extensions/workspace-indicator/prefs.js:34
|
||||||
msgid "Workspace Names"
|
msgid "Workspace Names"
|
||||||
msgstr "Navne på arbejdsområder"
|
msgstr "Navne på arbejdsområder"
|
||||||
|
|
||||||
#: extensions/workspace-indicator/prefs.js:151
|
#: extensions/workspace-indicator/prefs.js:67
|
||||||
msgid "Name"
|
|
||||||
msgstr "Navn"
|
|
||||||
|
|
||||||
#: extensions/workspace-indicator/prefs.js:191
|
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "Workspace %d"
|
msgid "Workspace %d"
|
||||||
msgstr "Arbejdsområde %d"
|
msgstr "Arbejdsområde %d"
|
||||||
|
|
||||||
|
#: extensions/workspace-indicator/prefs.js:218
|
||||||
|
msgid "Add Workspace"
|
||||||
|
msgstr "Tilføj arbejdsområde"
|
||||||
|
|
||||||
|
#~ msgid "Application"
|
||||||
|
#~ msgstr "Program"
|
||||||
|
|
||||||
|
#~ msgid "Create new matching rule"
|
||||||
|
#~ msgstr "Opret ny regel for match"
|
||||||
|
|
||||||
|
#~ msgid "Add"
|
||||||
|
#~ msgstr "Tilføj"
|
||||||
|
|
||||||
|
#~ msgid "Name"
|
||||||
|
#~ msgstr "Navn"
|
||||||
|
|
||||||
#~ msgid "Attach modal dialog to the parent window"
|
#~ msgid "Attach modal dialog to the parent window"
|
||||||
#~ msgstr "Tillæg modal-dialog til det overordnede vindue"
|
#~ msgstr "Tillæg modal-dialog til det overordnede vindue"
|
||||||
|
|
||||||
|
|||||||
@@ -6,15 +6,15 @@
|
|||||||
# Benjamin Steinwender <b@stbe.at>, 2013.
|
# Benjamin Steinwender <b@stbe.at>, 2013.
|
||||||
# Wolfgang Stöggl <c72578@yahoo.de>, 2014.
|
# Wolfgang Stöggl <c72578@yahoo.de>, 2014.
|
||||||
# Paul Seyfert <pseyfert@mathphys.fsk.uni-heidelberg.de>, 2017.
|
# Paul Seyfert <pseyfert@mathphys.fsk.uni-heidelberg.de>, 2017.
|
||||||
# Tim Sabsch <tim@sabsch.com>, 2019.
|
# Tim Sabsch <tim@sabsch.com>, 2019-2020.
|
||||||
#
|
#
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: gnome-shell-extensions master\n"
|
"Project-Id-Version: gnome-shell-extensions master\n"
|
||||||
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell-extensions/"
|
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell-extensions/"
|
||||||
"issues\n"
|
"issues\n"
|
||||||
"POT-Creation-Date: 2019-08-09 22:24+0000\n"
|
"POT-Creation-Date: 2020-05-28 00:55+0000\n"
|
||||||
"PO-Revision-Date: 2019-08-23 21:27+0200\n"
|
"PO-Revision-Date: 2020-09-08 20:20+0200\n"
|
||||||
"Last-Translator: Tim Sabsch <tim@sabsch.com>\n"
|
"Last-Translator: Tim Sabsch <tim@sabsch.com>\n"
|
||||||
"Language-Team: Deutsch <gnome-de@gnome.org>\n"
|
"Language-Team: Deutsch <gnome-de@gnome.org>\n"
|
||||||
"Language: de\n"
|
"Language: de\n"
|
||||||
@@ -22,7 +22,7 @@ msgstr ""
|
|||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||||
"X-Generator: Poedit 2.2.1\n"
|
"X-Generator: Poedit 2.4.1\n"
|
||||||
|
|
||||||
#: data/gnome-classic.desktop.in:3 data/gnome-classic.session.desktop.in:3
|
#: data/gnome-classic.desktop.in:3 data/gnome-classic.session.desktop.in:3
|
||||||
msgid "GNOME Classic"
|
msgid "GNOME Classic"
|
||||||
@@ -36,7 +36,7 @@ msgstr "Diese Sitzung meldet Sie in GNOME Classic an"
|
|||||||
msgid "Favorites"
|
msgid "Favorites"
|
||||||
msgstr "Favoriten"
|
msgstr "Favoriten"
|
||||||
|
|
||||||
#: extensions/apps-menu/extension.js:368
|
#: extensions/apps-menu/extension.js:369
|
||||||
msgid "Applications"
|
msgid "Applications"
|
||||||
msgstr "Anwendungen"
|
msgstr "Anwendungen"
|
||||||
|
|
||||||
@@ -53,39 +53,26 @@ msgstr ""
|
|||||||
"Datei) enthält, gefolgt von einem Doppelpunkt und der Nummer der "
|
"Datei) enthält, gefolgt von einem Doppelpunkt und der Nummer der "
|
||||||
"Arbeitsfläche"
|
"Arbeitsfläche"
|
||||||
|
|
||||||
#: extensions/auto-move-windows/prefs.js:60
|
#: extensions/auto-move-windows/prefs.js:35
|
||||||
msgid "Application"
|
msgid "Workspace Rules"
|
||||||
msgstr "Anwendung"
|
msgstr "Arbeitsfläche-Regeln"
|
||||||
|
|
||||||
#: extensions/auto-move-windows/prefs.js:71
|
#: extensions/auto-move-windows/prefs.js:243
|
||||||
#: extensions/auto-move-windows/prefs.js:134
|
|
||||||
msgid "Workspace"
|
|
||||||
msgstr "Arbeitsfläche"
|
|
||||||
|
|
||||||
#: extensions/auto-move-windows/prefs.js:89
|
|
||||||
msgid "Add Rule"
|
msgid "Add Rule"
|
||||||
msgstr "Regel hinzufügen"
|
msgstr "Regel hinzufügen"
|
||||||
|
|
||||||
#: extensions/auto-move-windows/prefs.js:111
|
|
||||||
msgid "Create new matching rule"
|
|
||||||
msgstr "Neue Übereinstimmungsregel erstellen"
|
|
||||||
|
|
||||||
#: extensions/auto-move-windows/prefs.js:117
|
|
||||||
msgid "Add"
|
|
||||||
msgstr "Hinzufügen"
|
|
||||||
|
|
||||||
#. TRANSLATORS: %s is the filesystem name
|
#. TRANSLATORS: %s is the filesystem name
|
||||||
#: extensions/drive-menu/extension.js:102
|
#: extensions/drive-menu/extension.js:112
|
||||||
#: extensions/places-menu/placeDisplay.js:232
|
#: extensions/places-menu/placeDisplay.js:233
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "Ejecting drive “%s” failed:"
|
msgid "Ejecting drive “%s” failed:"
|
||||||
msgstr "Auswerfen von Laufwerk »%s« schlug fehl:"
|
msgstr "Auswerfen von Laufwerk »%s« schlug fehl:"
|
||||||
|
|
||||||
#: extensions/drive-menu/extension.js:118
|
#: extensions/drive-menu/extension.js:128
|
||||||
msgid "Removable devices"
|
msgid "Removable devices"
|
||||||
msgstr "Wechseldatenträger"
|
msgstr "Wechseldatenträger"
|
||||||
|
|
||||||
#: extensions/drive-menu/extension.js:145
|
#: extensions/drive-menu/extension.js:155
|
||||||
msgid "Open Files"
|
msgid "Open Files"
|
||||||
msgstr "Dateien öffnen"
|
msgstr "Dateien öffnen"
|
||||||
|
|
||||||
@@ -119,8 +106,8 @@ msgstr ""
|
|||||||
"Vorschaubild platziert und damit die Voreinstellung der Shell übergangen. "
|
"Vorschaubild platziert und damit die Voreinstellung der Shell übergangen. "
|
||||||
"Eine Änderungseinstellung tritt erst mit einem Neustart der Shell in Kraft."
|
"Eine Änderungseinstellung tritt erst mit einem Neustart der Shell in Kraft."
|
||||||
|
|
||||||
#: extensions/places-menu/extension.js:80
|
#: extensions/places-menu/extension.js:89
|
||||||
#: extensions/places-menu/extension.js:84
|
#: extensions/places-menu/extension.js:93
|
||||||
msgid "Places"
|
msgid "Places"
|
||||||
msgstr "Orte"
|
msgstr "Orte"
|
||||||
|
|
||||||
@@ -139,11 +126,11 @@ msgstr "Datenträger für »%s« konnte nicht eingebunden werden"
|
|||||||
msgid "Computer"
|
msgid "Computer"
|
||||||
msgstr "Rechner"
|
msgstr "Rechner"
|
||||||
|
|
||||||
#: extensions/places-menu/placeDisplay.js:358
|
#: extensions/places-menu/placeDisplay.js:359
|
||||||
msgid "Home"
|
msgid "Home"
|
||||||
msgstr "Persönlicher Ordner"
|
msgstr "Persönlicher Ordner"
|
||||||
|
|
||||||
#: extensions/places-menu/placeDisplay.js:403
|
#: extensions/places-menu/placeDisplay.js:404
|
||||||
msgid "Browse Network"
|
msgid "Browse Network"
|
||||||
msgstr "Netzwerk durchsuchen"
|
msgstr "Netzwerk durchsuchen"
|
||||||
|
|
||||||
@@ -165,47 +152,47 @@ msgstr ""
|
|||||||
"Der Name des Themas, welches aus ~/.themes/name/gnome-shell geladen werden "
|
"Der Name des Themas, welches aus ~/.themes/name/gnome-shell geladen werden "
|
||||||
"soll"
|
"soll"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:99
|
#: extensions/window-list/extension.js:98
|
||||||
msgid "Close"
|
msgid "Close"
|
||||||
msgstr "Schließen"
|
msgstr "Schließen"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:119
|
#: extensions/window-list/extension.js:118
|
||||||
msgid "Unminimize"
|
msgid "Unminimize"
|
||||||
msgstr "Minimieren rückgängig"
|
msgstr "Minimieren rückgängig"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:119
|
#: extensions/window-list/extension.js:118
|
||||||
msgid "Minimize"
|
msgid "Minimize"
|
||||||
msgstr "Minimieren"
|
msgstr "Minimieren"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:126
|
#: extensions/window-list/extension.js:125
|
||||||
msgid "Unmaximize"
|
msgid "Unmaximize"
|
||||||
msgstr "Maximieren rückgängig"
|
msgstr "Maximieren rückgängig"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:126
|
#: extensions/window-list/extension.js:125
|
||||||
msgid "Maximize"
|
msgid "Maximize"
|
||||||
msgstr "Maximieren"
|
msgstr "Maximieren"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:431
|
#: extensions/window-list/extension.js:428
|
||||||
msgid "Minimize all"
|
msgid "Minimize all"
|
||||||
msgstr "Alle minimieren"
|
msgstr "Alle minimieren"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:437
|
#: extensions/window-list/extension.js:434
|
||||||
msgid "Unminimize all"
|
msgid "Unminimize all"
|
||||||
msgstr "Alle minimieren rückgängig"
|
msgstr "Alle minimieren rückgängig"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:443
|
#: extensions/window-list/extension.js:440
|
||||||
msgid "Maximize all"
|
msgid "Maximize all"
|
||||||
msgstr "Alle maximieren"
|
msgstr "Alle maximieren"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:451
|
#: extensions/window-list/extension.js:448
|
||||||
msgid "Unmaximize all"
|
msgid "Unmaximize all"
|
||||||
msgstr "Alle maximieren rückgängig"
|
msgstr "Alle maximieren rückgängig"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:459
|
#: extensions/window-list/extension.js:456
|
||||||
msgid "Close all"
|
msgid "Close all"
|
||||||
msgstr "Alle schließen"
|
msgstr "Alle schließen"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:741
|
#: extensions/window-list/extension.js:734
|
||||||
msgid "Window List"
|
msgid "Window List"
|
||||||
msgstr "Fensterliste"
|
msgstr "Fensterliste"
|
||||||
|
|
||||||
@@ -223,7 +210,7 @@ msgstr ""
|
|||||||
"»always« (immer)."
|
"»always« (immer)."
|
||||||
|
|
||||||
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:20
|
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:20
|
||||||
#: extensions/window-list/prefs.js:82
|
#: extensions/window-list/prefs.js:100
|
||||||
msgid "Show windows from all workspaces"
|
msgid "Show windows from all workspaces"
|
||||||
msgstr "Fenster von allen Arbeitsflächen anzeigen"
|
msgstr "Fenster von allen Arbeitsflächen anzeigen"
|
||||||
|
|
||||||
@@ -245,44 +232,56 @@ msgstr ""
|
|||||||
"Legt fest, ob die Fensterliste auf allen angeschlossenen Bildschirmen "
|
"Legt fest, ob die Fensterliste auf allen angeschlossenen Bildschirmen "
|
||||||
"angezeigt wird oder nur auf dem Primären."
|
"angezeigt wird oder nur auf dem Primären."
|
||||||
|
|
||||||
#: extensions/window-list/prefs.js:25
|
#: extensions/window-list/prefs.js:29
|
||||||
msgid "Window Grouping"
|
msgid "Window Grouping"
|
||||||
msgstr "Fenstergruppierung"
|
msgstr "Fenstergruppierung"
|
||||||
|
|
||||||
#: extensions/window-list/prefs.js:47
|
#: extensions/window-list/prefs.js:58
|
||||||
msgid "Never group windows"
|
msgid "Never group windows"
|
||||||
msgstr "Fenster niemals gruppieren"
|
msgstr "Fenster niemals gruppieren"
|
||||||
|
|
||||||
#: extensions/window-list/prefs.js:48
|
#: extensions/window-list/prefs.js:59
|
||||||
msgid "Group windows when space is limited"
|
msgid "Group windows when space is limited"
|
||||||
msgstr "Fenster bei Platzmangel gruppieren"
|
msgstr "Fenster bei Platzmangel gruppieren"
|
||||||
|
|
||||||
#: extensions/window-list/prefs.js:49
|
#: extensions/window-list/prefs.js:60
|
||||||
msgid "Always group windows"
|
msgid "Always group windows"
|
||||||
msgstr "Fenster immer gruppieren"
|
msgstr "Fenster immer gruppieren"
|
||||||
|
|
||||||
#: extensions/window-list/prefs.js:75
|
#: extensions/window-list/prefs.js:94
|
||||||
msgid "Show on all monitors"
|
msgid "Show on all monitors"
|
||||||
msgstr "Auf allen Bildschirmen anzeigen"
|
msgstr "Auf allen Bildschirmen anzeigen"
|
||||||
|
|
||||||
#: extensions/window-list/workspaceIndicator.js:211
|
#: extensions/window-list/workspaceIndicator.js:207
|
||||||
#: extensions/workspace-indicator/extension.js:216
|
#: extensions/workspace-indicator/extension.js:213
|
||||||
msgid "Workspace Indicator"
|
msgid "Workspace Indicator"
|
||||||
msgstr "Arbeitsflächenindikator"
|
msgstr "Arbeitsflächenindikator"
|
||||||
|
|
||||||
#: extensions/workspace-indicator/prefs.js:131
|
#: extensions/workspace-indicator/prefs.js:34
|
||||||
msgid "Workspace Names"
|
msgid "Workspace Names"
|
||||||
msgstr "Namen der Arbeitsflächen"
|
msgstr "Namen der Arbeitsflächen"
|
||||||
|
|
||||||
#: extensions/workspace-indicator/prefs.js:151
|
#: extensions/workspace-indicator/prefs.js:67
|
||||||
msgid "Name"
|
|
||||||
msgstr "Name"
|
|
||||||
|
|
||||||
#: extensions/workspace-indicator/prefs.js:191
|
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "Workspace %d"
|
msgid "Workspace %d"
|
||||||
msgstr "Arbeitsfläche %d"
|
msgstr "Arbeitsfläche %d"
|
||||||
|
|
||||||
|
#: extensions/workspace-indicator/prefs.js:218
|
||||||
|
msgid "Add Workspace"
|
||||||
|
msgstr "Arbeitsfläche hinzufügen"
|
||||||
|
|
||||||
|
#~ msgid "Application"
|
||||||
|
#~ msgstr "Anwendung"
|
||||||
|
|
||||||
|
#~ msgid "Create new matching rule"
|
||||||
|
#~ msgstr "Neue Übereinstimmungsregel erstellen"
|
||||||
|
|
||||||
|
#~ msgid "Add"
|
||||||
|
#~ msgstr "Hinzufügen"
|
||||||
|
|
||||||
|
#~ msgid "Name"
|
||||||
|
#~ msgstr "Name"
|
||||||
|
|
||||||
#~ msgid "Attach modal dialog to the parent window"
|
#~ msgid "Attach modal dialog to the parent window"
|
||||||
#~ msgstr "Einen modalen Dialog an das übergeordnete Fenster anhängen"
|
#~ msgstr "Einen modalen Dialog an das übergeordnete Fenster anhängen"
|
||||||
|
|
||||||
|
|||||||
@@ -12,16 +12,16 @@ 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: 2019-08-09 22:24+0000\n"
|
"POT-Creation-Date: 2020-05-28 00:55+0000\n"
|
||||||
"PO-Revision-Date: 2019-09-05 19:27+0300\n"
|
"PO-Revision-Date: 2020-07-14 00:40+0300\n"
|
||||||
"Last-Translator: Efstathios Iosifidis <iosifidis@opensuse.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"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
|
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||||
"X-Generator: Gtranslator 3.32.1\n"
|
"X-Generator: Poedit 1.8.7.1\n"
|
||||||
"X-Project-Style: gnome\n"
|
"X-Project-Style: gnome\n"
|
||||||
|
|
||||||
#: data/gnome-classic.desktop.in:3 data/gnome-classic.session.desktop.in:3
|
#: data/gnome-classic.desktop.in:3 data/gnome-classic.session.desktop.in:3
|
||||||
@@ -36,7 +36,7 @@ msgstr "Αυτή η συνεδρία σας συνδέει στο GNOME Classic"
|
|||||||
msgid "Favorites"
|
msgid "Favorites"
|
||||||
msgstr "Αγαπημένα"
|
msgstr "Αγαπημένα"
|
||||||
|
|
||||||
#: extensions/apps-menu/extension.js:368
|
#: extensions/apps-menu/extension.js:369
|
||||||
msgid "Applications"
|
msgid "Applications"
|
||||||
msgstr "Εφαρμογές"
|
msgstr "Εφαρμογές"
|
||||||
|
|
||||||
@@ -53,39 +53,26 @@ msgstr ""
|
|||||||
"(όνομα αρχείου επιφάνειας εργασίας), ακολουθούμενη από άνω-κάτω τελεία και "
|
"(όνομα αρχείου επιφάνειας εργασίας), ακολουθούμενη από άνω-κάτω τελεία και "
|
||||||
"τον αριθμό του χώρου εργασίας"
|
"τον αριθμό του χώρου εργασίας"
|
||||||
|
|
||||||
#: extensions/auto-move-windows/prefs.js:60
|
#: extensions/auto-move-windows/prefs.js:35
|
||||||
msgid "Application"
|
msgid "Workspace Rules"
|
||||||
msgstr "Εφαρμογή"
|
msgstr "Κανόνες χώρων εργασίας"
|
||||||
|
|
||||||
#: extensions/auto-move-windows/prefs.js:71
|
#: extensions/auto-move-windows/prefs.js:243
|
||||||
#: extensions/auto-move-windows/prefs.js:134
|
|
||||||
msgid "Workspace"
|
|
||||||
msgstr "Χώρος εργασίας"
|
|
||||||
|
|
||||||
#: extensions/auto-move-windows/prefs.js:89
|
|
||||||
msgid "Add Rule"
|
msgid "Add Rule"
|
||||||
msgstr "Προσθήκη κανόνα"
|
msgstr "Προσθήκη κανόνα"
|
||||||
|
|
||||||
#: extensions/auto-move-windows/prefs.js:111
|
|
||||||
msgid "Create new matching rule"
|
|
||||||
msgstr "Δημιουργία νέου κανόνα αντιστοίχισης"
|
|
||||||
|
|
||||||
#: extensions/auto-move-windows/prefs.js:117
|
|
||||||
msgid "Add"
|
|
||||||
msgstr "Προσθήκη"
|
|
||||||
|
|
||||||
#. TRANSLATORS: %s is the filesystem name
|
#. TRANSLATORS: %s is the filesystem name
|
||||||
#: extensions/drive-menu/extension.js:102
|
#: extensions/drive-menu/extension.js:112
|
||||||
#: extensions/places-menu/placeDisplay.js:232
|
#: 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:118
|
#: extensions/drive-menu/extension.js:128
|
||||||
msgid "Removable devices"
|
msgid "Removable devices"
|
||||||
msgstr "Αφαιρούμενες συσκευές"
|
msgstr "Αφαιρούμενες συσκευές"
|
||||||
|
|
||||||
#: extensions/drive-menu/extension.js:145
|
#: extensions/drive-menu/extension.js:155
|
||||||
msgid "Open Files"
|
msgid "Open Files"
|
||||||
msgstr "Άνοιγμα αρχείων"
|
msgstr "Άνοιγμα αρχείων"
|
||||||
|
|
||||||
@@ -119,8 +106,8 @@ msgstr ""
|
|||||||
"στο κάτω μέρος. Η αλλαγή αυτής της ρύθμισης απαιτεί επανεκκίνηση του "
|
"στο κάτω μέρος. Η αλλαγή αυτής της ρύθμισης απαιτεί επανεκκίνηση του "
|
||||||
"κελύφους για να υπάρξει κάποιο αποτέλεσμα."
|
"κελύφους για να υπάρξει κάποιο αποτέλεσμα."
|
||||||
|
|
||||||
#: extensions/places-menu/extension.js:80
|
#: extensions/places-menu/extension.js:89
|
||||||
#: extensions/places-menu/extension.js:84
|
#: extensions/places-menu/extension.js:93
|
||||||
msgid "Places"
|
msgid "Places"
|
||||||
msgstr "Τοποθεσίες"
|
msgstr "Τοποθεσίες"
|
||||||
|
|
||||||
@@ -139,11 +126,11 @@ msgstr "Αποτυχία προσάρτησης τόμου για «%s»"
|
|||||||
msgid "Computer"
|
msgid "Computer"
|
||||||
msgstr "Υπολογιστής"
|
msgstr "Υπολογιστής"
|
||||||
|
|
||||||
#: extensions/places-menu/placeDisplay.js:358
|
#: extensions/places-menu/placeDisplay.js:359
|
||||||
msgid "Home"
|
msgid "Home"
|
||||||
msgstr "Προσωπικός φάκελος"
|
msgstr "Προσωπικός φάκελος"
|
||||||
|
|
||||||
#: extensions/places-menu/placeDisplay.js:403
|
#: extensions/places-menu/placeDisplay.js:404
|
||||||
msgid "Browse Network"
|
msgid "Browse Network"
|
||||||
msgstr "Περιήγηση δικτύου"
|
msgstr "Περιήγηση δικτύου"
|
||||||
|
|
||||||
@@ -164,47 +151,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:99
|
#: extensions/window-list/extension.js:98
|
||||||
msgid "Close"
|
msgid "Close"
|
||||||
msgstr "Κλείσιμο"
|
msgstr "Κλείσιμο"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:119
|
#: extensions/window-list/extension.js:118
|
||||||
msgid "Unminimize"
|
msgid "Unminimize"
|
||||||
msgstr "Αποελαχιστοποίηση"
|
msgstr "Αποελαχιστοποίηση"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:119
|
#: extensions/window-list/extension.js:118
|
||||||
msgid "Minimize"
|
msgid "Minimize"
|
||||||
msgstr "Ελαχιστοποίηση"
|
msgstr "Ελαχιστοποίηση"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:126
|
#: extensions/window-list/extension.js:125
|
||||||
msgid "Unmaximize"
|
msgid "Unmaximize"
|
||||||
msgstr "Απομεγιστοποίηση"
|
msgstr "Απομεγιστοποίηση"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:126
|
#: extensions/window-list/extension.js:125
|
||||||
msgid "Maximize"
|
msgid "Maximize"
|
||||||
msgstr "Μεγιστοποίηση"
|
msgstr "Μεγιστοποίηση"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:431
|
#: extensions/window-list/extension.js:428
|
||||||
msgid "Minimize all"
|
msgid "Minimize all"
|
||||||
msgstr "Ελαχιστοποίηση όλων"
|
msgstr "Ελαχιστοποίηση όλων"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:437
|
#: extensions/window-list/extension.js:434
|
||||||
msgid "Unminimize all"
|
msgid "Unminimize all"
|
||||||
msgstr "Αποελαχιστοποίηση όλων"
|
msgstr "Αποελαχιστοποίηση όλων"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:443
|
#: extensions/window-list/extension.js:440
|
||||||
msgid "Maximize all"
|
msgid "Maximize all"
|
||||||
msgstr "Μεγιστοποίηση όλων"
|
msgstr "Μεγιστοποίηση όλων"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:451
|
#: extensions/window-list/extension.js:448
|
||||||
msgid "Unmaximize all"
|
msgid "Unmaximize all"
|
||||||
msgstr "Απομεγιστοποίηση όλων"
|
msgstr "Απομεγιστοποίηση όλων"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:459
|
#: extensions/window-list/extension.js:456
|
||||||
msgid "Close all"
|
msgid "Close all"
|
||||||
msgstr "Κλείσιμο όλων"
|
msgstr "Κλείσιμο όλων"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:741
|
#: extensions/window-list/extension.js:734
|
||||||
msgid "Window List"
|
msgid "Window List"
|
||||||
msgstr "Λίστα παραθύρου"
|
msgstr "Λίστα παραθύρου"
|
||||||
|
|
||||||
@@ -222,15 +209,11 @@ msgstr ""
|
|||||||
"«always» (πάντα)."
|
"«always» (πάντα)."
|
||||||
|
|
||||||
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:20
|
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:20
|
||||||
#: extensions/window-list/prefs.js:82
|
#: extensions/window-list/prefs.js:100
|
||||||
#| msgid "Show only windows in the current workspace"
|
|
||||||
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 the window list on all connected monitors or only on the "
|
|
||||||
#| "primary one."
|
|
||||||
msgid "Whether to show windows from all workspaces or only the current one."
|
msgid "Whether to show windows from all workspaces or only the current one."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Αν θα εμφανίζονται παράθυρα όλων των χώρων εργασίας ή μόνο του τρέχοντα."
|
"Αν θα εμφανίζονται παράθυρα όλων των χώρων εργασίας ή μόνο του τρέχοντα."
|
||||||
@@ -247,44 +230,56 @@ msgstr ""
|
|||||||
"Αν θα εμφανίζεται ο κατάλογος παραθύρων όλων των συνδεμένων οθονών ή μόνο "
|
"Αν θα εμφανίζεται ο κατάλογος παραθύρων όλων των συνδεμένων οθονών ή μόνο "
|
||||||
"της κύριας οθόνης."
|
"της κύριας οθόνης."
|
||||||
|
|
||||||
#: extensions/window-list/prefs.js:25
|
#: extensions/window-list/prefs.js:29
|
||||||
msgid "Window Grouping"
|
msgid "Window Grouping"
|
||||||
msgstr "Ομαδοποίηση παραθύρου"
|
msgstr "Ομαδοποίηση παραθύρου"
|
||||||
|
|
||||||
#: extensions/window-list/prefs.js:47
|
#: extensions/window-list/prefs.js:58
|
||||||
msgid "Never group windows"
|
msgid "Never group windows"
|
||||||
msgstr "Να μη γίνεται ποτέ ομαδοποίηση παραθύρων"
|
msgstr "Να μη γίνεται ποτέ ομαδοποίηση παραθύρων"
|
||||||
|
|
||||||
#: extensions/window-list/prefs.js:48
|
#: extensions/window-list/prefs.js:59
|
||||||
msgid "Group windows when space is limited"
|
msgid "Group windows when space is limited"
|
||||||
msgstr "Ομαδοποίηση παραθύρων όταν ο χώρος είναι περιορισμένος"
|
msgstr "Ομαδοποίηση παραθύρων όταν ο χώρος είναι περιορισμένος"
|
||||||
|
|
||||||
#: extensions/window-list/prefs.js:49
|
#: extensions/window-list/prefs.js:60
|
||||||
msgid "Always group windows"
|
msgid "Always group windows"
|
||||||
msgstr "Να γίνεται πάντα ομαδοποίηση παραθύρων"
|
msgstr "Να γίνεται πάντα ομαδοποίηση παραθύρων"
|
||||||
|
|
||||||
#: extensions/window-list/prefs.js:75
|
#: extensions/window-list/prefs.js:94
|
||||||
msgid "Show on all monitors"
|
msgid "Show on all monitors"
|
||||||
msgstr "Να εμφανίζεται σε όλες τις οθόνες"
|
msgstr "Να εμφανίζεται σε όλες τις οθόνες"
|
||||||
|
|
||||||
#: extensions/window-list/workspaceIndicator.js:211
|
#: extensions/window-list/workspaceIndicator.js:207
|
||||||
#: extensions/workspace-indicator/extension.js:216
|
#: extensions/workspace-indicator/extension.js:213
|
||||||
msgid "Workspace Indicator"
|
msgid "Workspace Indicator"
|
||||||
msgstr "Δείκτης χώρου εργασίας"
|
msgstr "Δείκτης χώρου εργασίας"
|
||||||
|
|
||||||
#: extensions/workspace-indicator/prefs.js:131
|
#: extensions/workspace-indicator/prefs.js:34
|
||||||
msgid "Workspace Names"
|
msgid "Workspace Names"
|
||||||
msgstr "Ονόματα χώρων εργασίας:"
|
msgstr "Ονόματα χώρων εργασίας:"
|
||||||
|
|
||||||
#: extensions/workspace-indicator/prefs.js:151
|
#: extensions/workspace-indicator/prefs.js:67
|
||||||
msgid "Name"
|
|
||||||
msgstr "Όνομα"
|
|
||||||
|
|
||||||
#: extensions/workspace-indicator/prefs.js:191
|
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "Workspace %d"
|
msgid "Workspace %d"
|
||||||
msgstr "Χώρος εργασίας %d"
|
msgstr "Χώρος εργασίας %d"
|
||||||
|
|
||||||
|
#: extensions/workspace-indicator/prefs.js:218
|
||||||
|
msgid "Add Workspace"
|
||||||
|
msgstr "Προσθήκη χώρου εργασίας"
|
||||||
|
|
||||||
|
#~ msgid "Application"
|
||||||
|
#~ msgstr "Εφαρμογή"
|
||||||
|
|
||||||
|
#~ msgid "Create new matching rule"
|
||||||
|
#~ msgstr "Δημιουργία νέου κανόνα αντιστοίχισης"
|
||||||
|
|
||||||
|
#~ msgid "Add"
|
||||||
|
#~ msgstr "Προσθήκη"
|
||||||
|
|
||||||
|
#~ msgid "Name"
|
||||||
|
#~ msgstr "Όνομα"
|
||||||
|
|
||||||
#~ msgid "Attach modal dialog to the parent window"
|
#~ msgid "Attach modal dialog to the parent window"
|
||||||
#~ msgstr "Προσάρτηση αποκλειστικού διαλόγου στο γονικό παράθυρο"
|
#~ msgstr "Προσάρτηση αποκλειστικού διαλόγου στο γονικό παράθυρο"
|
||||||
|
|
||||||
|
|||||||
+56
-59
@@ -4,15 +4,15 @@
|
|||||||
# Bruce Cowan <bruce@bcowan.eu>, 2011, 2018.
|
# Bruce Cowan <bruce@bcowan.eu>, 2011, 2018.
|
||||||
# Chris Leonard <cjlhomeaddress@gmail.com>, 2012.
|
# Chris Leonard <cjlhomeaddress@gmail.com>, 2012.
|
||||||
# Philip Withnall <philip@tecnocode.co.uk>, 2014.
|
# Philip Withnall <philip@tecnocode.co.uk>, 2014.
|
||||||
# Zander Brown <zbrown@gnome.org>, 2019.
|
# Zander Brown <zbrown@gnome.org>, 2019-2020.
|
||||||
#
|
#
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: gnome-shell-extensions\n"
|
"Project-Id-Version: gnome-shell-extensions\n"
|
||||||
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell-extensions/"
|
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell-extensions/"
|
||||||
"issues\n"
|
"issues\n"
|
||||||
"POT-Creation-Date: 2019-08-09 22:24+0000\n"
|
"POT-Creation-Date: 2020-05-28 00:55+0000\n"
|
||||||
"PO-Revision-Date: 2019-08-25 16:49+0100\n"
|
"PO-Revision-Date: 2020-08-24 23:05+0100\n"
|
||||||
"Last-Translator: Zander Brown <zbrown@gnome.org>\n"
|
"Last-Translator: Zander Brown <zbrown@gnome.org>\n"
|
||||||
"Language-Team: English - United Kingdom <en_GB@li.org>\n"
|
"Language-Team: English - United Kingdom <en_GB@li.org>\n"
|
||||||
"Language: en_GB\n"
|
"Language: en_GB\n"
|
||||||
@@ -20,7 +20,7 @@ msgstr ""
|
|||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||||
"X-Generator: Gtranslator 3.32.1\n"
|
"X-Generator: Gtranslator 3.36.0\n"
|
||||||
"X-Project-Style: gnome\n"
|
"X-Project-Style: gnome\n"
|
||||||
|
|
||||||
#: data/gnome-classic.desktop.in:3 data/gnome-classic.session.desktop.in:3
|
#: data/gnome-classic.desktop.in:3 data/gnome-classic.session.desktop.in:3
|
||||||
@@ -35,7 +35,7 @@ msgstr "This session logs you into GNOME Classic"
|
|||||||
msgid "Favorites"
|
msgid "Favorites"
|
||||||
msgstr "Favourites"
|
msgstr "Favourites"
|
||||||
|
|
||||||
#: extensions/apps-menu/extension.js:368
|
#: extensions/apps-menu/extension.js:369
|
||||||
msgid "Applications"
|
msgid "Applications"
|
||||||
msgstr "Applications"
|
msgstr "Applications"
|
||||||
|
|
||||||
@@ -51,39 +51,27 @@ msgstr ""
|
|||||||
"A list of strings, each containing an application id (desktop file name), "
|
"A list of strings, each containing an application id (desktop file name), "
|
||||||
"followed by a colon and the workspace number"
|
"followed by a colon and the workspace number"
|
||||||
|
|
||||||
#: extensions/auto-move-windows/prefs.js:60
|
#: extensions/auto-move-windows/prefs.js:35
|
||||||
msgid "Application"
|
#| msgid "Workspace Names"
|
||||||
msgstr "Application"
|
msgid "Workspace Rules"
|
||||||
|
msgstr "Workspace Rules"
|
||||||
|
|
||||||
#: extensions/auto-move-windows/prefs.js:71
|
#: extensions/auto-move-windows/prefs.js:243
|
||||||
#: extensions/auto-move-windows/prefs.js:134
|
|
||||||
msgid "Workspace"
|
|
||||||
msgstr "Workspace"
|
|
||||||
|
|
||||||
#: extensions/auto-move-windows/prefs.js:89
|
|
||||||
msgid "Add Rule"
|
msgid "Add Rule"
|
||||||
msgstr "Add Rule"
|
msgstr "Add Rule"
|
||||||
|
|
||||||
#: extensions/auto-move-windows/prefs.js:111
|
|
||||||
msgid "Create new matching rule"
|
|
||||||
msgstr "Create new matching rule"
|
|
||||||
|
|
||||||
#: extensions/auto-move-windows/prefs.js:117
|
|
||||||
msgid "Add"
|
|
||||||
msgstr "Add"
|
|
||||||
|
|
||||||
#. TRANSLATORS: %s is the filesystem name
|
#. TRANSLATORS: %s is the filesystem name
|
||||||
#: extensions/drive-menu/extension.js:102
|
#: extensions/drive-menu/extension.js:112
|
||||||
#: extensions/places-menu/placeDisplay.js:232
|
#: extensions/places-menu/placeDisplay.js:233
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "Ejecting drive “%s” failed:"
|
msgid "Ejecting drive “%s” failed:"
|
||||||
msgstr "Ejecting drive “%s” failed:"
|
msgstr "Ejecting drive “%s” failed:"
|
||||||
|
|
||||||
#: extensions/drive-menu/extension.js:118
|
#: extensions/drive-menu/extension.js:128
|
||||||
msgid "Removable devices"
|
msgid "Removable devices"
|
||||||
msgstr "Removable devices"
|
msgstr "Removable devices"
|
||||||
|
|
||||||
#: extensions/drive-menu/extension.js:145
|
#: extensions/drive-menu/extension.js:155
|
||||||
msgid "Open Files"
|
msgid "Open Files"
|
||||||
msgstr "Open Files"
|
msgstr "Open Files"
|
||||||
|
|
||||||
@@ -115,8 +103,8 @@ msgstr ""
|
|||||||
"shell default of placing it at the bottom. Changing this setting requires "
|
"shell default of placing it at the bottom. Changing this setting requires "
|
||||||
"restarting the shell to have any effect."
|
"restarting the shell to have any effect."
|
||||||
|
|
||||||
#: extensions/places-menu/extension.js:80
|
#: extensions/places-menu/extension.js:89
|
||||||
#: extensions/places-menu/extension.js:84
|
#: extensions/places-menu/extension.js:93
|
||||||
msgid "Places"
|
msgid "Places"
|
||||||
msgstr "Places"
|
msgstr "Places"
|
||||||
|
|
||||||
@@ -135,11 +123,11 @@ msgstr "Failed to mount volume for “%s”"
|
|||||||
msgid "Computer"
|
msgid "Computer"
|
||||||
msgstr "Computer"
|
msgstr "Computer"
|
||||||
|
|
||||||
#: extensions/places-menu/placeDisplay.js:358
|
#: extensions/places-menu/placeDisplay.js:359
|
||||||
msgid "Home"
|
msgid "Home"
|
||||||
msgstr "Home"
|
msgstr "Home"
|
||||||
|
|
||||||
#: extensions/places-menu/placeDisplay.js:403
|
#: extensions/places-menu/placeDisplay.js:404
|
||||||
msgid "Browse Network"
|
msgid "Browse Network"
|
||||||
msgstr "Browse Network"
|
msgstr "Browse Network"
|
||||||
|
|
||||||
@@ -159,47 +147,47 @@ msgstr "Theme name"
|
|||||||
msgid "The name of the theme, to be loaded from ~/.themes/name/gnome-shell"
|
msgid "The name of the theme, to be loaded from ~/.themes/name/gnome-shell"
|
||||||
msgstr "The name of the theme, to be loaded from ~/.themes/name/gnome-shell"
|
msgstr "The name of the theme, to be loaded from ~/.themes/name/gnome-shell"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:99
|
#: extensions/window-list/extension.js:98
|
||||||
msgid "Close"
|
msgid "Close"
|
||||||
msgstr "Close"
|
msgstr "Close"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:119
|
#: extensions/window-list/extension.js:118
|
||||||
msgid "Unminimize"
|
msgid "Unminimize"
|
||||||
msgstr "Unminimise"
|
msgstr "Unminimise"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:119
|
#: extensions/window-list/extension.js:118
|
||||||
msgid "Minimize"
|
msgid "Minimize"
|
||||||
msgstr "Minimise"
|
msgstr "Minimise"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:126
|
#: extensions/window-list/extension.js:125
|
||||||
msgid "Unmaximize"
|
msgid "Unmaximize"
|
||||||
msgstr "Unmaximise"
|
msgstr "Unmaximise"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:126
|
#: extensions/window-list/extension.js:125
|
||||||
msgid "Maximize"
|
msgid "Maximize"
|
||||||
msgstr "Maximise"
|
msgstr "Maximise"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:431
|
#: extensions/window-list/extension.js:428
|
||||||
msgid "Minimize all"
|
msgid "Minimize all"
|
||||||
msgstr "Minimise all"
|
msgstr "Minimise all"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:437
|
#: extensions/window-list/extension.js:434
|
||||||
msgid "Unminimize all"
|
msgid "Unminimize all"
|
||||||
msgstr "Unminimise all"
|
msgstr "Unminimise all"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:443
|
#: extensions/window-list/extension.js:440
|
||||||
msgid "Maximize all"
|
msgid "Maximize all"
|
||||||
msgstr "Maximise all"
|
msgstr "Maximise all"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:451
|
#: extensions/window-list/extension.js:448
|
||||||
msgid "Unmaximize all"
|
msgid "Unmaximize all"
|
||||||
msgstr "Unmaximise all"
|
msgstr "Unmaximise all"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:459
|
#: extensions/window-list/extension.js:456
|
||||||
msgid "Close all"
|
msgid "Close all"
|
||||||
msgstr "Close all"
|
msgstr "Close all"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:741
|
#: extensions/window-list/extension.js:734
|
||||||
msgid "Window List"
|
msgid "Window List"
|
||||||
msgstr "Window List"
|
msgstr "Window List"
|
||||||
|
|
||||||
@@ -216,15 +204,11 @@ msgstr ""
|
|||||||
"Possible values are “never”, “auto” and “always”."
|
"Possible values are “never”, “auto” and “always”."
|
||||||
|
|
||||||
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:20
|
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:20
|
||||||
#: extensions/window-list/prefs.js:82
|
#: extensions/window-list/prefs.js:100
|
||||||
#| msgid "Show only windows in the current workspace"
|
|
||||||
msgid "Show windows from all workspaces"
|
msgid "Show windows from all workspaces"
|
||||||
msgstr "Show windows from all workspaces"
|
msgstr "Show windows from all workspaces"
|
||||||
|
|
||||||
#: 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 the window list on all connected monitors or only on the "
|
|
||||||
#| "primary one."
|
|
||||||
msgid "Whether to show windows from all workspaces or only the current one."
|
msgid "Whether to show windows from all workspaces or only the current one."
|
||||||
msgstr "Whether to show windows from all workspaces or only the current one."
|
msgstr "Whether to show windows from all workspaces or only the current one."
|
||||||
|
|
||||||
@@ -240,44 +224,57 @@ msgstr ""
|
|||||||
"Whether to show the window list on all connected monitors or only on the "
|
"Whether to show the window list on all connected monitors or only on the "
|
||||||
"primary one."
|
"primary one."
|
||||||
|
|
||||||
#: extensions/window-list/prefs.js:25
|
#: extensions/window-list/prefs.js:29
|
||||||
msgid "Window Grouping"
|
msgid "Window Grouping"
|
||||||
msgstr "Window Grouping"
|
msgstr "Window Grouping"
|
||||||
|
|
||||||
#: extensions/window-list/prefs.js:47
|
#: extensions/window-list/prefs.js:58
|
||||||
msgid "Never group windows"
|
msgid "Never group windows"
|
||||||
msgstr "Never group windows"
|
msgstr "Never group windows"
|
||||||
|
|
||||||
#: extensions/window-list/prefs.js:48
|
#: extensions/window-list/prefs.js:59
|
||||||
msgid "Group windows when space is limited"
|
msgid "Group windows when space is limited"
|
||||||
msgstr "Group windows when space is limited"
|
msgstr "Group windows when space is limited"
|
||||||
|
|
||||||
#: extensions/window-list/prefs.js:49
|
#: extensions/window-list/prefs.js:60
|
||||||
msgid "Always group windows"
|
msgid "Always group windows"
|
||||||
msgstr "Always group windows"
|
msgstr "Always group windows"
|
||||||
|
|
||||||
#: extensions/window-list/prefs.js:75
|
#: extensions/window-list/prefs.js:94
|
||||||
msgid "Show on all monitors"
|
msgid "Show on all monitors"
|
||||||
msgstr "Show on all monitors"
|
msgstr "Show on all monitors"
|
||||||
|
|
||||||
#: extensions/window-list/workspaceIndicator.js:211
|
#: extensions/window-list/workspaceIndicator.js:207
|
||||||
#: extensions/workspace-indicator/extension.js:216
|
#: extensions/workspace-indicator/extension.js:213
|
||||||
msgid "Workspace Indicator"
|
msgid "Workspace Indicator"
|
||||||
msgstr "Workspace Indicator"
|
msgstr "Workspace Indicator"
|
||||||
|
|
||||||
#: extensions/workspace-indicator/prefs.js:131
|
#: extensions/workspace-indicator/prefs.js:34
|
||||||
msgid "Workspace Names"
|
msgid "Workspace Names"
|
||||||
msgstr "Workspace Names"
|
msgstr "Workspace Names"
|
||||||
|
|
||||||
#: extensions/workspace-indicator/prefs.js:151
|
#: extensions/workspace-indicator/prefs.js:67
|
||||||
msgid "Name"
|
|
||||||
msgstr "Name"
|
|
||||||
|
|
||||||
#: extensions/workspace-indicator/prefs.js:191
|
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "Workspace %d"
|
msgid "Workspace %d"
|
||||||
msgstr "Workspace %d"
|
msgstr "Workspace %d"
|
||||||
|
|
||||||
|
#: extensions/workspace-indicator/prefs.js:218
|
||||||
|
#| msgid "Workspace"
|
||||||
|
msgid "Add Workspace"
|
||||||
|
msgstr "Add Workspace"
|
||||||
|
|
||||||
|
#~ msgid "Application"
|
||||||
|
#~ msgstr "Application"
|
||||||
|
|
||||||
|
#~ msgid "Create new matching rule"
|
||||||
|
#~ msgstr "Create new matching rule"
|
||||||
|
|
||||||
|
#~ msgid "Add"
|
||||||
|
#~ msgstr "Add"
|
||||||
|
|
||||||
|
#~ msgid "Name"
|
||||||
|
#~ msgstr "Name"
|
||||||
|
|
||||||
#~ msgid "Attach modal dialog to the parent window"
|
#~ msgid "Attach modal dialog to the parent window"
|
||||||
#~ msgstr "Attach modal dialogue to the parent window"
|
#~ msgstr "Attach modal dialogue to the parent window"
|
||||||
|
|
||||||
|
|||||||
@@ -4,40 +4,38 @@
|
|||||||
# Ryan LORTIE <desrt@desrt.ca>, 2013.
|
# Ryan LORTIE <desrt@desrt.ca>, 2013.
|
||||||
# Daniel PUENTES <blatberk@openmailbox.org>, 2015.
|
# Daniel PUENTES <blatberk@openmailbox.org>, 2015.
|
||||||
# Kristjan SCHMIDT <kristjan.schmidt@googlemail.com>, 2011-2019.
|
# Kristjan SCHMIDT <kristjan.schmidt@googlemail.com>, 2011-2019.
|
||||||
|
# Carmen Bianca BAKKER <carmen@carmenbianca.eu>, 2021.
|
||||||
|
#
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: gnome-shell-extensions master\n"
|
"Project-Id-Version: gnome-shell-extensions master\n"
|
||||||
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell-extensions/"
|
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell-extensions/"
|
||||||
"issues\n"
|
"issues\n"
|
||||||
"POT-Creation-Date: 2019-03-02 10:57+0000\n"
|
"POT-Creation-Date: 2021-03-27 20:14+0000\n"
|
||||||
"PO-Revision-Date: 2019-03-06 22:14+0200\n"
|
"PO-Revision-Date: 2021-03-29 17:24+0200\n"
|
||||||
"Last-Translator: Kristjan SCHMIDT <kristjan.schmidt@googlemail.com>\n"
|
"Last-Translator: Carmen Bianca BAKKER <carmen@carmenbianca.eu>\n"
|
||||||
"Language-Team: Esperanto <gnome-eo-list@gnome.org>\n"
|
"Language-Team: Esperanto <gnome-eo-list@gnome.org>\n"
|
||||||
"Language: eo\n"
|
"Language: eo\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
|
||||||
"X-Generator: Virtaal 0.7.1\n"
|
"X-Generator: Gtranslator 3.38.0\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-klasika"
|
msgstr "GNOME-klasika"
|
||||||
|
|
||||||
#: data/gnome-classic.desktop.in:4
|
#: data/gnome-classic.desktop.in:4
|
||||||
msgid "This session logs you into GNOME Classic"
|
msgid "This session logs you into GNOME Classic"
|
||||||
msgstr "Ĉi seanco ensalutas vin GNOME-klasiken"
|
msgstr "Ĉi tiu seanco ensalutas vin GNOME-klasiken"
|
||||||
|
|
||||||
#: extensions/apps-menu/extension.js:29
|
#: extensions/apps-menu/extension.js:113
|
||||||
msgid "Activities Overview"
|
|
||||||
msgstr "Aktivecoj-Superrigardon"
|
|
||||||
|
|
||||||
#: extensions/apps-menu/extension.js:118
|
|
||||||
msgid "Favorites"
|
msgid "Favorites"
|
||||||
msgstr "Plej ŝatataj"
|
msgstr "Plej ŝatataj"
|
||||||
|
|
||||||
#: extensions/apps-menu/extension.js:407
|
#: extensions/apps-menu/extension.js:367
|
||||||
msgid "Applications"
|
msgid "Applications"
|
||||||
msgstr "Aplikaĵoj"
|
msgstr "Aplikaĵoj"
|
||||||
|
|
||||||
@@ -53,41 +51,26 @@ msgstr ""
|
|||||||
"Listo de ĉenoj, ĉiu enhavas aplikaĵan identigilon ('desktop' dosiernomo), "
|
"Listo de ĉenoj, ĉiu enhavas aplikaĵan identigilon ('desktop' dosiernomo), "
|
||||||
"sevkita per dupunkto kaj la laborspaca numero"
|
"sevkita per dupunkto kaj la laborspaca numero"
|
||||||
|
|
||||||
#: extensions/auto-move-windows/prefs.js:60
|
#: extensions/auto-move-windows/prefs.js:35
|
||||||
msgid "Application"
|
msgid "Workspace Rules"
|
||||||
msgstr "Aplikaĵo"
|
msgstr "Laborspacaj reguloj"
|
||||||
|
|
||||||
#: extensions/auto-move-windows/prefs.js:71
|
#: extensions/auto-move-windows/prefs.js:237
|
||||||
#: extensions/auto-move-windows/prefs.js:134
|
|
||||||
msgid "Workspace"
|
|
||||||
msgstr "Laborspaco"
|
|
||||||
|
|
||||||
#: extensions/auto-move-windows/prefs.js:89
|
|
||||||
msgid "Add Rule"
|
msgid "Add Rule"
|
||||||
msgstr "Aldoni regulon"
|
msgstr "Aldoni regulon"
|
||||||
|
|
||||||
#: extensions/auto-move-windows/prefs.js:111
|
|
||||||
msgid "Create new matching rule"
|
|
||||||
msgstr "Krei novan kongruantan regulon"
|
|
||||||
|
|
||||||
#: extensions/auto-move-windows/prefs.js:117
|
|
||||||
msgid "Add"
|
|
||||||
msgstr "Aldoni"
|
|
||||||
|
|
||||||
#. TRANSLATORS: %s is the filesystem name
|
#. TRANSLATORS: %s is the filesystem name
|
||||||
#: extensions/drive-menu/extension.js:100
|
#: extensions/drive-menu/extension.js:112
|
||||||
#: extensions/places-menu/placeDisplay.js:217
|
#: extensions/places-menu/placeDisplay.js:233
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
#| msgid "Ejecting drive '%s' failed:"
|
|
||||||
msgid "Ejecting drive “%s” failed:"
|
msgid "Ejecting drive “%s” failed:"
|
||||||
msgstr "Elĵeto de volumo “%s” malsukcesis:"
|
msgstr "Elĵeto de volumo “%s” malsukcesis:"
|
||||||
|
|
||||||
#: extensions/drive-menu/extension.js:116
|
#: extensions/drive-menu/extension.js:128
|
||||||
msgid "Removable devices"
|
msgid "Removable devices"
|
||||||
msgstr "Demeteblaj aparatoj"
|
msgstr "Demeteblaj aparatoj"
|
||||||
|
|
||||||
#: extensions/drive-menu/extension.js:143
|
#: extensions/drive-menu/extension.js:152
|
||||||
#| msgid "Open File"
|
|
||||||
msgid "Open Files"
|
msgid "Open Files"
|
||||||
msgstr "Malfermi dosierojn"
|
msgstr "Malfermi dosierojn"
|
||||||
|
|
||||||
@@ -119,32 +102,31 @@ msgstr ""
|
|||||||
"estas meti ĝin malsupre). Si vi ŝanĝas ĉi agordon tiam vi devas restartigi "
|
"estas meti ĝin malsupre). Si vi ŝanĝas ĉi agordon tiam vi devas restartigi "
|
||||||
"la ŝelon."
|
"la ŝelon."
|
||||||
|
|
||||||
#: extensions/places-menu/extension.js:79
|
#: extensions/places-menu/extension.js:89
|
||||||
#: extensions/places-menu/extension.js:83
|
#: extensions/places-menu/extension.js:92
|
||||||
msgid "Places"
|
msgid "Places"
|
||||||
msgstr "Lokoj"
|
msgstr "Lokoj"
|
||||||
|
|
||||||
#: extensions/places-menu/placeDisplay.js:59
|
#: extensions/places-menu/placeDisplay.js:46
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "Failed to mount volume for “%s”"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: extensions/places-menu/placeDisplay.js:72
|
|
||||||
#, javascript-format
|
|
||||||
#| msgid "Failed to launch \"%s\""
|
|
||||||
msgid "Failed to launch “%s”"
|
msgid "Failed to launch “%s”"
|
||||||
msgstr "Malsukcesis lanĉi “%s”"
|
msgstr "Malsukcesis lanĉi “%s”"
|
||||||
|
|
||||||
#: extensions/places-menu/placeDisplay.js:133
|
#: extensions/places-menu/placeDisplay.js:61
|
||||||
#: extensions/places-menu/placeDisplay.js:156
|
#, javascript-format
|
||||||
|
msgid "Failed to mount volume for “%s”"
|
||||||
|
msgstr "Ne eblis munti datumportilon por “%s”"
|
||||||
|
|
||||||
|
#: extensions/places-menu/placeDisplay.js:148
|
||||||
|
#: extensions/places-menu/placeDisplay.js:171
|
||||||
msgid "Computer"
|
msgid "Computer"
|
||||||
msgstr "Komputilo"
|
msgstr "Komputilo"
|
||||||
|
|
||||||
#: extensions/places-menu/placeDisplay.js:343
|
#: extensions/places-menu/placeDisplay.js:359
|
||||||
msgid "Home"
|
msgid "Home"
|
||||||
msgstr "Domo"
|
msgstr "Domo"
|
||||||
|
|
||||||
#: extensions/places-menu/placeDisplay.js:387
|
#: extensions/places-menu/placeDisplay.js:404
|
||||||
msgid "Browse Network"
|
msgid "Browse Network"
|
||||||
msgstr "Foliumi reton"
|
msgstr "Foliumi reton"
|
||||||
|
|
||||||
@@ -153,10 +135,8 @@ msgid "Cycle Screenshot Sizes"
|
|||||||
msgstr "Cikle montri ekrankopiajn grandojn"
|
msgstr "Cikle montri ekrankopiajn grandojn"
|
||||||
|
|
||||||
#: extensions/screenshot-window-sizer/org.gnome.shell.extensions.screenshot-window-sizer.gschema.xml:11
|
#: extensions/screenshot-window-sizer/org.gnome.shell.extensions.screenshot-window-sizer.gschema.xml:11
|
||||||
#, fuzzy
|
|
||||||
#| msgid "Cycle Screenshot Sizes"
|
|
||||||
msgid "Cycle Screenshot Sizes Backward"
|
msgid "Cycle Screenshot Sizes Backward"
|
||||||
msgstr "Cikle montri ekrankopiajn grandojn"
|
msgstr "Montri ekrankopiajn grandojn laŭ inversa sinsekvo"
|
||||||
|
|
||||||
#: extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml:5
|
#: extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml:5
|
||||||
msgid "Theme name"
|
msgid "Theme name"
|
||||||
@@ -166,52 +146,47 @@ msgstr "Etosnomo"
|
|||||||
msgid "The name of the theme, to be loaded from ~/.themes/name/gnome-shell"
|
msgid "The name of the theme, to be loaded from ~/.themes/name/gnome-shell"
|
||||||
msgstr "La nomo de la etoso, malfermigi de ~/.themes/name/gnome-shell"
|
msgstr "La nomo de la etoso, malfermigi de ~/.themes/name/gnome-shell"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:100
|
#: extensions/window-list/extension.js:98
|
||||||
msgid "Close"
|
msgid "Close"
|
||||||
msgstr "Malfermi"
|
msgstr "Fermi"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:120
|
#: extensions/window-list/extension.js:118
|
||||||
msgid "Unminimize"
|
msgid "Unminimize"
|
||||||
msgstr "Neplejetigi"
|
msgstr "Malminimumigi"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:120
|
#: extensions/window-list/extension.js:118
|
||||||
msgid "Minimize"
|
msgid "Minimize"
|
||||||
msgstr "Plejetigi"
|
msgstr "Minimumigi"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:127
|
#: extensions/window-list/extension.js:125
|
||||||
msgid "Unmaximize"
|
msgid "Unmaximize"
|
||||||
msgstr "Nemaksimumigi"
|
msgstr "Malmaksimumigi"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:127
|
#: extensions/window-list/extension.js:125
|
||||||
msgid "Maximize"
|
msgid "Maximize"
|
||||||
msgstr "Maksimumigi"
|
msgstr "Maksimumigi"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:408
|
#: extensions/window-list/extension.js:432
|
||||||
msgid "Minimize all"
|
msgid "Minimize all"
|
||||||
msgstr "Plejetigi ĉiujn"
|
msgstr "Minimumigi ĉiujn"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:414
|
#: extensions/window-list/extension.js:438
|
||||||
msgid "Unminimize all"
|
msgid "Unminimize all"
|
||||||
msgstr "Neplejetigi ĉiujn"
|
msgstr "Malminimumigi ĉiujn"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:420
|
#: extensions/window-list/extension.js:444
|
||||||
msgid "Maximize all"
|
msgid "Maximize all"
|
||||||
msgstr "Maksimumigi ĉiujn"
|
msgstr "Maksimumigi ĉiujn"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:429
|
#: extensions/window-list/extension.js:452
|
||||||
msgid "Unmaximize all"
|
msgid "Unmaximize all"
|
||||||
msgstr "Nemaksimumigi ĉiujn"
|
msgstr "Malmaksimumigi ĉiujn"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:438
|
#: extensions/window-list/extension.js:460
|
||||||
msgid "Close all"
|
msgid "Close all"
|
||||||
msgstr "Fermi ĉiujn"
|
msgstr "Fermi ĉiujn"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:655
|
#: extensions/window-list/extension.js:737
|
||||||
#: extensions/workspace-indicator/extension.js:21
|
|
||||||
msgid "Workspace Indicator"
|
|
||||||
msgstr "Laborspaco Indikilo"
|
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:836
|
|
||||||
msgid "Window List"
|
msgid "Window List"
|
||||||
msgstr "Fenestra listo"
|
msgstr "Fenestra listo"
|
||||||
|
|
||||||
@@ -220,62 +195,86 @@ msgid "When to group windows"
|
|||||||
msgstr "Kiam grupigi fenestrojn"
|
msgstr "Kiam grupigi fenestrojn"
|
||||||
|
|
||||||
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:13
|
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:13
|
||||||
#, fuzzy
|
|
||||||
#| msgid ""
|
|
||||||
#| "Decides when to group windows from the same application on the window "
|
|
||||||
#| "list. Possible values are \"never\", \"auto\" and \"always\"."
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"Decides when to group windows from the same application on the window list. "
|
"Decides when to group windows from the same application on the window list. "
|
||||||
"Possible values are “never”, “auto” and “always”."
|
"Possible values are “never”, “auto” and “always”."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Decidas kiam grupi fenestrojn de la sama aplikaĵo en la fenestra listo. "
|
"Decidas kiam grupi fenestrojn de la sama aplikaĵo en la fenestra listo. "
|
||||||
"Validaj valoroj estas “never” (neniam), “auto” (aŭtomate) kaj “always” "
|
"Validaj valoroj estas “neniam”, “aŭtomate” kaj ĉiam”."
|
||||||
"(ĉiam)."
|
|
||||||
|
|
||||||
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:20
|
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:20
|
||||||
|
#: extensions/window-list/prefs.js:100
|
||||||
|
msgid "Show windows from all workspaces"
|
||||||
|
msgstr "Montri la fenestrojn de ĉiuj laborspacoj"
|
||||||
|
|
||||||
|
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:21
|
||||||
|
msgid "Whether to show windows from all workspaces or only the current one."
|
||||||
|
msgstr "Ĉu montri la fenestrojn de ĉiuj laborspacoj aŭ nur de la nuna."
|
||||||
|
|
||||||
|
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:27
|
||||||
msgid "Show the window list on all monitors"
|
msgid "Show the window list on all monitors"
|
||||||
msgstr "Montri la fenestroliston en ĉiuj ekranoj"
|
msgstr "Montri la fenestroliston en ĉiuj ekranoj"
|
||||||
|
|
||||||
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:21
|
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:28
|
||||||
msgid ""
|
msgid ""
|
||||||
"Whether to show the window list on all connected monitors or only on the "
|
"Whether to show the window list on all connected monitors or only on the "
|
||||||
"primary one."
|
"primary one."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Ĉu montri la fenestroliston en ĉiuj konektitaj ekranoj aŭ nur en la ĉefa."
|
"Ĉu montri la fenestroliston en ĉiuj konektitaj ekranoj aŭ nur en la ĉefa."
|
||||||
|
|
||||||
#: extensions/window-list/prefs.js:25
|
#: extensions/window-list/prefs.js:29
|
||||||
msgid "Window Grouping"
|
msgid "Window Grouping"
|
||||||
msgstr "Fenestra grupigo"
|
msgstr "Fenestra grupigo"
|
||||||
|
|
||||||
#: extensions/window-list/prefs.js:47
|
#: extensions/window-list/prefs.js:58
|
||||||
msgid "Never group windows"
|
msgid "Never group windows"
|
||||||
msgstr "Neniam grupigi fenestrojn"
|
msgstr "Neniam grupigi fenestrojn"
|
||||||
|
|
||||||
#: extensions/window-list/prefs.js:48
|
#: extensions/window-list/prefs.js:59
|
||||||
msgid "Group windows when space is limited"
|
msgid "Group windows when space is limited"
|
||||||
msgstr "Grupigi fenestrojn kiam spaco limitas"
|
msgstr "Grupigi fenestrojn kiam spaco limitas"
|
||||||
|
|
||||||
#: extensions/window-list/prefs.js:49
|
#: extensions/window-list/prefs.js:60
|
||||||
msgid "Always group windows"
|
msgid "Always group windows"
|
||||||
msgstr "Ĉiam grupigi fenestrojn"
|
msgstr "Ĉiam grupigi fenestrojn"
|
||||||
|
|
||||||
#: extensions/window-list/prefs.js:75
|
#: extensions/window-list/prefs.js:94
|
||||||
msgid "Show on all monitors"
|
msgid "Show on all monitors"
|
||||||
msgstr "Montri en ĉiuj ekranoj"
|
msgstr "Montri en ĉiuj ekranoj"
|
||||||
|
|
||||||
#: extensions/workspace-indicator/prefs.js:131
|
#: extensions/window-list/workspaceIndicator.js:249
|
||||||
|
#: extensions/workspace-indicator/extension.js:255
|
||||||
|
msgid "Workspace Indicator"
|
||||||
|
msgstr "Laborspaco Indikilo"
|
||||||
|
|
||||||
|
#: extensions/workspace-indicator/prefs.js:34
|
||||||
msgid "Workspace Names"
|
msgid "Workspace Names"
|
||||||
msgstr "Laborspacaj nomoj"
|
msgstr "Laborspacaj nomoj"
|
||||||
|
|
||||||
#: extensions/workspace-indicator/prefs.js:151
|
#: extensions/workspace-indicator/prefs.js:67
|
||||||
msgid "Name"
|
|
||||||
msgstr "Nomo"
|
|
||||||
|
|
||||||
#: extensions/workspace-indicator/prefs.js:191
|
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "Workspace %d"
|
msgid "Workspace %d"
|
||||||
msgstr "Laborspaco %d"
|
msgstr "Laborspaco %d"
|
||||||
|
|
||||||
|
#: extensions/workspace-indicator/prefs.js:208
|
||||||
|
msgid "Add Workspace"
|
||||||
|
msgstr "Aldoni laborspacon"
|
||||||
|
|
||||||
|
#~ msgid "Application"
|
||||||
|
#~ msgstr "Aplikaĵo"
|
||||||
|
|
||||||
|
#~ msgid "Create new matching rule"
|
||||||
|
#~ msgstr "Krei novan kongruantan regulon"
|
||||||
|
|
||||||
|
#~ msgid "Add"
|
||||||
|
#~ msgstr "Aldoni"
|
||||||
|
|
||||||
|
#~ msgid "Name"
|
||||||
|
#~ msgstr "Nomo"
|
||||||
|
|
||||||
|
#~ msgid "Activities Overview"
|
||||||
|
#~ msgstr "Aktivecoj-Superrigardon"
|
||||||
|
|
||||||
#~ msgid "Attach modal dialog to the parent window"
|
#~ msgid "Attach modal dialog to the parent window"
|
||||||
#~ msgstr "Kunligi modalan dialogon al la patra fenestro"
|
#~ msgstr "Kunligi modalan dialogon al la patra fenestro"
|
||||||
|
|
||||||
@@ -319,9 +318,6 @@ msgstr "Laborspaco %d"
|
|||||||
#~ msgid "Present windows as"
|
#~ msgid "Present windows as"
|
||||||
#~ msgstr "Prezenti fenestron kiel"
|
#~ msgstr "Prezenti fenestron kiel"
|
||||||
|
|
||||||
#~ msgid "Show only windows in the current workspace"
|
|
||||||
#~ msgstr "Montri nur fenestrojn en la aktuala laborspaco"
|
|
||||||
|
|
||||||
#~ msgid "Hello, world!"
|
#~ msgid "Hello, world!"
|
||||||
#~ msgstr "Saluton, mondo!"
|
#~ msgstr "Saluton, mondo!"
|
||||||
|
|
||||||
|
|||||||
@@ -4,15 +4,15 @@
|
|||||||
# Jorge González <jorgegonz@svn.gnome.org>, 2011.
|
# Jorge González <jorgegonz@svn.gnome.org>, 2011.
|
||||||
# Nicolás Satragno <nsatragno@gmail.com>, 2011.
|
# Nicolás Satragno <nsatragno@gmail.com>, 2011.
|
||||||
#
|
#
|
||||||
# Daniel Mustieles <daniel.mustieles@gmail.com>, 2011-2019.
|
# Daniel Mustieles <daniel.mustieles@gmail.com>, 2011-2021.
|
||||||
#
|
#
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: gnome-shell-extensions master\n"
|
"Project-Id-Version: gnome-shell-extensions master\n"
|
||||||
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell-extensions/"
|
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell-extensions/"
|
||||||
"issues\n"
|
"issues\n"
|
||||||
"POT-Creation-Date: 2019-08-09 22:24+0000\n"
|
"POT-Creation-Date: 2021-11-06 14:08+0000\n"
|
||||||
"PO-Revision-Date: 2019-08-20 12:08+0200\n"
|
"PO-Revision-Date: 2021-11-26 17:58+0100\n"
|
||||||
"Last-Translator: Daniel Mustieles <daniel.mustieles@gmail.com>\n"
|
"Last-Translator: Daniel Mustieles <daniel.mustieles@gmail.com>\n"
|
||||||
"Language-Team: Spanish - Spain <gnome-es-list@gnome.org>\n"
|
"Language-Team: Spanish - Spain <gnome-es-list@gnome.org>\n"
|
||||||
"Language: es_ES\n"
|
"Language: es_ES\n"
|
||||||
@@ -20,21 +20,32 @@ msgstr ""
|
|||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||||
"X-Generator: Gtranslator 3.32.1\n"
|
"X-Generator: Gtranslator 41.0\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 clásico"
|
msgstr "GNOME clásico"
|
||||||
|
|
||||||
#: 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 "Esta sesión inicia GNOME clásico"
|
msgstr "Esta sesión inicia GNOME clásico"
|
||||||
|
|
||||||
#: extensions/apps-menu/extension.js:113
|
#: data/gnome-classic-wayland.desktop.in:3
|
||||||
|
#| msgid "GNOME Classic"
|
||||||
|
msgid "GNOME Classic on Wayland"
|
||||||
|
msgstr "GNOME clásico en Wayland"
|
||||||
|
|
||||||
|
#: data/gnome-classic-xorg.desktop.in:3
|
||||||
|
#| msgid "GNOME Classic"
|
||||||
|
msgid "GNOME Classic on Xorg"
|
||||||
|
msgstr "GNOME clásicoen Xorg"
|
||||||
|
|
||||||
|
#: extensions/apps-menu/extension.js:112
|
||||||
msgid "Favorites"
|
msgid "Favorites"
|
||||||
msgstr "Favoritos"
|
msgstr "Favoritos"
|
||||||
|
|
||||||
#: extensions/apps-menu/extension.js:368
|
#: extensions/apps-menu/extension.js:366
|
||||||
msgid "Applications"
|
msgid "Applications"
|
||||||
msgstr "Aplicaciones"
|
msgstr "Aplicaciones"
|
||||||
|
|
||||||
@@ -50,39 +61,26 @@ msgstr ""
|
|||||||
"Una lista de cadenas, conteniendo cada una un ID de aplicación (nombre de "
|
"Una lista de cadenas, conteniendo cada una un ID de aplicación (nombre de "
|
||||||
"archivo de escritorio), seguido de dos puntos y el número del área de trabajo"
|
"archivo de escritorio), seguido de dos puntos y el número del área de trabajo"
|
||||||
|
|
||||||
#: extensions/auto-move-windows/prefs.js:60
|
#: extensions/auto-move-windows/prefs.js:34
|
||||||
msgid "Application"
|
msgid "Workspace Rules"
|
||||||
msgstr "Aplicación"
|
msgstr "Reglas de las áreas de trabajo"
|
||||||
|
|
||||||
#: extensions/auto-move-windows/prefs.js:71
|
#: extensions/auto-move-windows/prefs.js:236
|
||||||
#: extensions/auto-move-windows/prefs.js:134
|
|
||||||
msgid "Workspace"
|
|
||||||
msgstr "Área de trabajo"
|
|
||||||
|
|
||||||
#: extensions/auto-move-windows/prefs.js:89
|
|
||||||
msgid "Add Rule"
|
msgid "Add Rule"
|
||||||
msgstr "Añadir regla"
|
msgstr "Añadir regla"
|
||||||
|
|
||||||
#: extensions/auto-move-windows/prefs.js:111
|
|
||||||
msgid "Create new matching rule"
|
|
||||||
msgstr "Crear regla de coincidencia nueva"
|
|
||||||
|
|
||||||
#: extensions/auto-move-windows/prefs.js:117
|
|
||||||
msgid "Add"
|
|
||||||
msgstr "Añadir"
|
|
||||||
|
|
||||||
#. TRANSLATORS: %s is the filesystem name
|
#. TRANSLATORS: %s is the filesystem name
|
||||||
#: extensions/drive-menu/extension.js:102
|
#: extensions/drive-menu/extension.js:133
|
||||||
#: extensions/places-menu/placeDisplay.js:232
|
#: extensions/places-menu/placeDisplay.js:233
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "Ejecting drive “%s” failed:"
|
msgid "Ejecting drive “%s” failed:"
|
||||||
msgstr "Falló al expulsar el dispositivo «%s»:"
|
msgstr "Falló al expulsar el dispositivo «%s»:"
|
||||||
|
|
||||||
#: extensions/drive-menu/extension.js:118
|
#: extensions/drive-menu/extension.js:149
|
||||||
msgid "Removable devices"
|
msgid "Removable devices"
|
||||||
msgstr "Dispositivos extraíbles"
|
msgstr "Dispositivos extraíbles"
|
||||||
|
|
||||||
#: extensions/drive-menu/extension.js:145
|
#: extensions/drive-menu/extension.js:171
|
||||||
msgid "Open Files"
|
msgid "Open Files"
|
||||||
msgstr "Abrir archivos"
|
msgstr "Abrir archivos"
|
||||||
|
|
||||||
@@ -115,8 +113,8 @@ msgstr ""
|
|||||||
"los sitúa por debajo. Cambiar esta configuración requiere reiniciar la shell "
|
"los sitúa por debajo. Cambiar esta configuración requiere reiniciar la shell "
|
||||||
"para que tenga efecto."
|
"para que tenga efecto."
|
||||||
|
|
||||||
#: extensions/places-menu/extension.js:80
|
#: extensions/places-menu/extension.js:88
|
||||||
#: extensions/places-menu/extension.js:84
|
#: extensions/places-menu/extension.js:91
|
||||||
msgid "Places"
|
msgid "Places"
|
||||||
msgstr "Lugares"
|
msgstr "Lugares"
|
||||||
|
|
||||||
@@ -135,11 +133,11 @@ msgstr "Falló al montar el volumen para «%s»"
|
|||||||
msgid "Computer"
|
msgid "Computer"
|
||||||
msgstr "Equipo"
|
msgstr "Equipo"
|
||||||
|
|
||||||
#: extensions/places-menu/placeDisplay.js:358
|
#: extensions/places-menu/placeDisplay.js:359
|
||||||
msgid "Home"
|
msgid "Home"
|
||||||
msgstr "Carpeta personal"
|
msgstr "Carpeta personal"
|
||||||
|
|
||||||
#: extensions/places-menu/placeDisplay.js:403
|
#: extensions/places-menu/placeDisplay.js:404
|
||||||
msgid "Browse Network"
|
msgid "Browse Network"
|
||||||
msgstr "Examinar la red"
|
msgstr "Examinar la red"
|
||||||
|
|
||||||
@@ -159,43 +157,43 @@ msgstr "Nombre del tema"
|
|||||||
msgid "The name of the theme, to be loaded from ~/.themes/name/gnome-shell"
|
msgid "The name of the theme, to be loaded from ~/.themes/name/gnome-shell"
|
||||||
msgstr "El nombre del tema, que se carga desde ~/.themes/nombre/gnome-shell"
|
msgstr "El nombre del tema, que se carga desde ~/.themes/nombre/gnome-shell"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:99
|
#: extensions/window-list/extension.js:72
|
||||||
msgid "Close"
|
msgid "Close"
|
||||||
msgstr "Cerrar"
|
msgstr "Cerrar"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:119
|
#: extensions/window-list/extension.js:92
|
||||||
msgid "Unminimize"
|
msgid "Unminimize"
|
||||||
msgstr "Desminimizar"
|
msgstr "Desminimizar"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:119
|
#: extensions/window-list/extension.js:92
|
||||||
msgid "Minimize"
|
msgid "Minimize"
|
||||||
msgstr "Minimizar"
|
msgstr "Minimizar"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:126
|
#: extensions/window-list/extension.js:99
|
||||||
msgid "Unmaximize"
|
msgid "Unmaximize"
|
||||||
msgstr "Desmaximizar"
|
msgstr "Desmaximizar"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:126
|
#: extensions/window-list/extension.js:99
|
||||||
msgid "Maximize"
|
msgid "Maximize"
|
||||||
msgstr "Maximizar"
|
msgstr "Maximizar"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:431
|
#: extensions/window-list/extension.js:434
|
||||||
msgid "Minimize all"
|
msgid "Minimize all"
|
||||||
msgstr "Minimizar todo"
|
msgstr "Minimizar todo"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:437
|
#: extensions/window-list/extension.js:440
|
||||||
msgid "Unminimize all"
|
msgid "Unminimize all"
|
||||||
msgstr "Desminimizar todo"
|
msgstr "Desminimizar todo"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:443
|
#: extensions/window-list/extension.js:446
|
||||||
msgid "Maximize all"
|
msgid "Maximize all"
|
||||||
msgstr "Maximizar todo"
|
msgstr "Maximizar todo"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:451
|
#: extensions/window-list/extension.js:454
|
||||||
msgid "Unmaximize all"
|
msgid "Unmaximize all"
|
||||||
msgstr "Desmaximizar todo"
|
msgstr "Desmaximizar todo"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:459
|
#: extensions/window-list/extension.js:462
|
||||||
msgid "Close all"
|
msgid "Close all"
|
||||||
msgstr "Cerrar todo"
|
msgstr "Cerrar todo"
|
||||||
|
|
||||||
@@ -216,15 +214,11 @@ msgstr ""
|
|||||||
"ventanas. Los valores posibles son «never», «auto» y «always»."
|
"ventanas. Los valores posibles son «never», «auto» y «always»."
|
||||||
|
|
||||||
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:20
|
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:20
|
||||||
#: extensions/window-list/prefs.js:82
|
#: extensions/window-list/prefs.js:86
|
||||||
#| msgid "Show only windows in the current workspace"
|
|
||||||
msgid "Show windows from all workspaces"
|
msgid "Show windows from all workspaces"
|
||||||
msgstr "Mostrar ventanas de todas las áreas de trabajo"
|
msgstr "Mostrar ventanas de todas las áreas de trabajo"
|
||||||
|
|
||||||
#: 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 the window list on all connected monitors or only on the "
|
|
||||||
#| "primary one."
|
|
||||||
msgid "Whether to show windows from all workspaces or only the current one."
|
msgid "Whether to show windows from all workspaces or only the current one."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Indica si se deben mostrar ventanas de todas las áreas de trabajo o sólo de "
|
"Indica si se deben mostrar ventanas de todas las áreas de trabajo o sólo de "
|
||||||
@@ -242,44 +236,59 @@ msgstr ""
|
|||||||
"Indica si se debe mostrar la lista de ventanas en todas las pantallas "
|
"Indica si se debe mostrar la lista de ventanas en todas las pantallas "
|
||||||
"conectadas o sólo en la primaria."
|
"conectadas o sólo en la primaria."
|
||||||
|
|
||||||
#: extensions/window-list/prefs.js:25
|
#: extensions/window-list/prefs.js:39
|
||||||
msgid "Window Grouping"
|
msgid "Window Grouping"
|
||||||
msgstr "Agrupación de ventanas"
|
msgstr "Agrupación de ventanas"
|
||||||
|
|
||||||
#: extensions/window-list/prefs.js:47
|
#: extensions/window-list/prefs.js:63
|
||||||
msgid "Never group windows"
|
msgid "Never group windows"
|
||||||
msgstr "Nunca agrupar las ventanas"
|
msgstr "Nunca agrupar las ventanas"
|
||||||
|
|
||||||
#: extensions/window-list/prefs.js:48
|
#: extensions/window-list/prefs.js:64
|
||||||
msgid "Group windows when space is limited"
|
msgid "Group windows when space is limited"
|
||||||
msgstr "Agrupar las ventanas cuando el espacio esté limitado"
|
msgstr "Agrupar las ventanas cuando el espacio esté limitado"
|
||||||
|
|
||||||
#: extensions/window-list/prefs.js:49
|
#: extensions/window-list/prefs.js:65
|
||||||
msgid "Always group windows"
|
msgid "Always group windows"
|
||||||
msgstr "Siempre agrupar las ventanas"
|
msgstr "Siempre agrupar las ventanas"
|
||||||
|
|
||||||
#: extensions/window-list/prefs.js:75
|
#: extensions/window-list/prefs.js:81
|
||||||
msgid "Show on all monitors"
|
msgid "Show on all monitors"
|
||||||
msgstr "Mostrar en todas las pantallas"
|
msgstr "Mostrar en todas las pantallas"
|
||||||
|
|
||||||
#: extensions/window-list/workspaceIndicator.js:211
|
#: extensions/window-list/workspaceIndicator.js:249
|
||||||
#: extensions/workspace-indicator/extension.js:216
|
#: extensions/workspace-indicator/extension.js:254
|
||||||
msgid "Workspace Indicator"
|
msgid "Workspace Indicator"
|
||||||
msgstr "Indicador de área de trabajo"
|
msgstr "Indicador de área de trabajo"
|
||||||
|
|
||||||
#: extensions/workspace-indicator/prefs.js:131
|
#: extensions/workspace-indicator/prefs.js:33
|
||||||
msgid "Workspace Names"
|
msgid "Workspace Names"
|
||||||
msgstr "Nombres de los áreas de trabajo"
|
msgstr "Nombres de los áreas de trabajo"
|
||||||
|
|
||||||
#: extensions/workspace-indicator/prefs.js:151
|
#: extensions/workspace-indicator/prefs.js:66
|
||||||
msgid "Name"
|
|
||||||
msgstr "Nombre"
|
|
||||||
|
|
||||||
#: extensions/workspace-indicator/prefs.js:191
|
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "Workspace %d"
|
msgid "Workspace %d"
|
||||||
msgstr "Área de trabajo %d"
|
msgstr "Área de trabajo %d"
|
||||||
|
|
||||||
|
#: extensions/workspace-indicator/prefs.js:207
|
||||||
|
msgid "Add Workspace"
|
||||||
|
msgstr "Añadir área de trabajo"
|
||||||
|
|
||||||
|
#~ msgid "Application"
|
||||||
|
#~ msgstr "Aplicación"
|
||||||
|
|
||||||
|
#~ msgid "Workspace"
|
||||||
|
#~ msgstr "Área de trabajo"
|
||||||
|
|
||||||
|
#~ msgid "Create new matching rule"
|
||||||
|
#~ msgstr "Crear regla de coincidencia nueva"
|
||||||
|
|
||||||
|
#~ msgid "Add"
|
||||||
|
#~ msgstr "Añadir"
|
||||||
|
|
||||||
|
#~ msgid "Name"
|
||||||
|
#~ msgstr "Nombre"
|
||||||
|
|
||||||
#~ msgid "Attach modal dialog to the parent window"
|
#~ msgid "Attach modal dialog to the parent window"
|
||||||
#~ msgstr "Acoplar un diálogo modal a la ventana padre"
|
#~ msgstr "Acoplar un diálogo modal a la ventana padre"
|
||||||
|
|
||||||
|
|||||||
@@ -5,14 +5,14 @@
|
|||||||
# assar <asiersar@yahoo.com>, 2011.
|
# assar <asiersar@yahoo.com>, 2011.
|
||||||
# Iñaki Larrañaga Murgoitio <dooteo@zundan.com>, 2011, 2013, 2015, 2017.
|
# Iñaki Larrañaga Murgoitio <dooteo@zundan.com>, 2011, 2013, 2015, 2017.
|
||||||
# Edurne Labaka <elabaka@uzei.com>, 2015.
|
# Edurne Labaka <elabaka@uzei.com>, 2015.
|
||||||
# Asier Sarasua Garmendia <asier.sarasua@gmail.com>, 2019.
|
# Asier Sarasua Garmendia <asiersarasua@ni.eus>, 2019, 2020, 2021.
|
||||||
#
|
#
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr "Project-Id-Version: gnome-shell-extensions master\n"
|
msgstr "Project-Id-Version: gnome-shell-extensions master\n"
|
||||||
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell-extensions/issues\n"
|
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell-extensions/issues\n"
|
||||||
"POT-Creation-Date: 2019-08-11 13:48+0000\n"
|
"POT-Creation-Date: 2021-11-06 14:08+0000\n"
|
||||||
"PO-Revision-Date: 2019-08-12 00:42+0200\n"
|
"PO-Revision-Date: 2021-12-25 00:42+0200\n"
|
||||||
"Last-Translator: Asier Sarasua Garmendia <asier.sarasua@gmail.com>\n"
|
"Last-Translator: Asier Sarasua Garmendia <asiersarasua@ni.eus>\n"
|
||||||
"Language-Team: Basque <librezale@librezale.eus>\n"
|
"Language-Team: Basque <librezale@librezale.eus>\n"
|
||||||
"Language: eu\n"
|
"Language: eu\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
@@ -20,21 +20,29 @@ msgstr "Project-Id-Version: gnome-shell-extensions master\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-Project-Style: gnome\n"
|
"X-Project-Style: gnome\n"
|
||||||
"X-Generator: Poedit 2.2.3\n"
|
|
||||||
|
|
||||||
#: data/gnome-classic.desktop.in:3 data/gnome-classic.session.desktop.in:3
|
#: data/gnome-classic.desktop.in:3
|
||||||
msgid "GNOME Classic"
|
msgid "GNOME Classic"
|
||||||
msgstr "GNOME Klasikoa"
|
msgstr "GNOME Klasikoa"
|
||||||
|
|
||||||
#: 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 "Saio honek GNOME Klasikoa hasten du"
|
msgstr "Saio honek GNOME Klasikoa hasten du"
|
||||||
|
|
||||||
#: extensions/apps-menu/extension.js:113
|
#: data/gnome-classic-wayland.desktop.in:3
|
||||||
|
msgid "GNOME Classic on Wayland"
|
||||||
|
msgstr "GNOME klasikoa Wayland gainean"
|
||||||
|
|
||||||
|
#: data/gnome-classic-xorg.desktop.in:3
|
||||||
|
msgid "GNOME Classic on Xorg"
|
||||||
|
msgstr "GNOME klasikoa Xorg gainean"
|
||||||
|
|
||||||
|
#: extensions/apps-menu/extension.js:112
|
||||||
msgid "Favorites"
|
msgid "Favorites"
|
||||||
msgstr "Gogokoak"
|
msgstr "Gogokoak"
|
||||||
|
|
||||||
#: extensions/apps-menu/extension.js:368
|
#: extensions/apps-menu/extension.js:366
|
||||||
msgid "Applications"
|
msgid "Applications"
|
||||||
msgstr "Aplikazioak"
|
msgstr "Aplikazioak"
|
||||||
|
|
||||||
@@ -48,39 +56,26 @@ msgid ""
|
|||||||
"followed by a colon and the workspace number"
|
"followed by a colon and the workspace number"
|
||||||
msgstr "Kateen zerrenda bat, bakoitzak aplikazio-ID bat duena (mahaigainaren fitxategi-izena) eta jarraian bi puntu eta laneko arearen zenbakia dituena"
|
msgstr "Kateen zerrenda bat, bakoitzak aplikazio-ID bat duena (mahaigainaren fitxategi-izena) eta jarraian bi puntu eta laneko arearen zenbakia dituena"
|
||||||
|
|
||||||
#: extensions/auto-move-windows/prefs.js:60
|
#: extensions/auto-move-windows/prefs.js:34
|
||||||
msgid "Application"
|
msgid "Workspace Rules"
|
||||||
msgstr "Aplikazioa"
|
msgstr "Laneko areen arauak"
|
||||||
|
|
||||||
#: extensions/auto-move-windows/prefs.js:71
|
#: extensions/auto-move-windows/prefs.js:236
|
||||||
#: extensions/auto-move-windows/prefs.js:134
|
|
||||||
msgid "Workspace"
|
|
||||||
msgstr "Laneko area"
|
|
||||||
|
|
||||||
#: extensions/auto-move-windows/prefs.js:89
|
|
||||||
msgid "Add Rule"
|
msgid "Add Rule"
|
||||||
msgstr "Gehitu araua"
|
msgstr "Gehitu araua"
|
||||||
|
|
||||||
#: extensions/auto-move-windows/prefs.js:111
|
|
||||||
msgid "Create new matching rule"
|
|
||||||
msgstr "Sortu bat datorren arau berria"
|
|
||||||
|
|
||||||
#: extensions/auto-move-windows/prefs.js:117
|
|
||||||
msgid "Add"
|
|
||||||
msgstr "Gehitu"
|
|
||||||
|
|
||||||
#. TRANSLATORS: %s is the filesystem name
|
#. TRANSLATORS: %s is the filesystem name
|
||||||
#: extensions/drive-menu/extension.js:102
|
#: extensions/drive-menu/extension.js:133
|
||||||
#: extensions/places-menu/placeDisplay.js:232
|
#: extensions/places-menu/placeDisplay.js:233
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "Ejecting drive “%s” failed:"
|
msgid "Ejecting drive “%s” failed:"
|
||||||
msgstr "Huts egin du “%s“ unitatea egoztean:"
|
msgstr "Huts egin du “%s“ unitatea egoztean:"
|
||||||
|
|
||||||
#: extensions/drive-menu/extension.js:118
|
#: extensions/drive-menu/extension.js:149
|
||||||
msgid "Removable devices"
|
msgid "Removable devices"
|
||||||
msgstr "Gailu aldagarriak"
|
msgstr "Gailu aldagarriak"
|
||||||
|
|
||||||
#: extensions/drive-menu/extension.js:145
|
#: extensions/drive-menu/extension.js:171
|
||||||
msgid "Open Files"
|
msgid "Open Files"
|
||||||
msgstr "Ireki fitxategiak"
|
msgstr "Ireki fitxategiak"
|
||||||
|
|
||||||
@@ -106,8 +101,8 @@ msgid ""
|
|||||||
"restarting the shell to have any effect."
|
"restarting the shell to have any effect."
|
||||||
msgstr "TRUE (egia) bada, leihoen epigrafeak dagokien koadro txikien gainean jarriko ditu, Shell-aren lehenespena (behean jartzearena) gainidatziz. Ezarpen hau aldatzeko eta aplikatzeko Shell berrabiarazi behar da."
|
msgstr "TRUE (egia) bada, leihoen epigrafeak dagokien koadro txikien gainean jarriko ditu, Shell-aren lehenespena (behean jartzearena) gainidatziz. Ezarpen hau aldatzeko eta aplikatzeko Shell berrabiarazi behar da."
|
||||||
|
|
||||||
#: extensions/places-menu/extension.js:80
|
#: extensions/places-menu/extension.js:88
|
||||||
#: extensions/places-menu/extension.js:84
|
#: extensions/places-menu/extension.js:91
|
||||||
msgid "Places"
|
msgid "Places"
|
||||||
msgstr "Lekuak"
|
msgstr "Lekuak"
|
||||||
|
|
||||||
@@ -126,11 +121,11 @@ msgstr "Huts egin du “%s“(r)en bolumena muntatzean"
|
|||||||
msgid "Computer"
|
msgid "Computer"
|
||||||
msgstr "Ordenagailua"
|
msgstr "Ordenagailua"
|
||||||
|
|
||||||
#: extensions/places-menu/placeDisplay.js:358
|
#: extensions/places-menu/placeDisplay.js:359
|
||||||
msgid "Home"
|
msgid "Home"
|
||||||
msgstr "Karpeta nagusia"
|
msgstr "Karpeta nagusia"
|
||||||
|
|
||||||
#: extensions/places-menu/placeDisplay.js:403
|
#: extensions/places-menu/placeDisplay.js:404
|
||||||
msgid "Browse Network"
|
msgid "Browse Network"
|
||||||
msgstr "Arakatu sarea"
|
msgstr "Arakatu sarea"
|
||||||
|
|
||||||
@@ -150,47 +145,47 @@ msgstr "Gaiaren izena"
|
|||||||
msgid "The name of the theme, to be loaded from ~/.themes/name/gnome-shell"
|
msgid "The name of the theme, to be loaded from ~/.themes/name/gnome-shell"
|
||||||
msgstr "Gaiaren izena, ~/.themes/izena/gnome-shell direktoriotik kargatzeko"
|
msgstr "Gaiaren izena, ~/.themes/izena/gnome-shell direktoriotik kargatzeko"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:98
|
#: extensions/window-list/extension.js:72
|
||||||
msgid "Close"
|
msgid "Close"
|
||||||
msgstr "Itxi"
|
msgstr "Itxi"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:118
|
#: extensions/window-list/extension.js:92
|
||||||
msgid "Unminimize"
|
msgid "Unminimize"
|
||||||
msgstr "Leheneratu"
|
msgstr "Leheneratu"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:118
|
#: extensions/window-list/extension.js:92
|
||||||
msgid "Minimize"
|
msgid "Minimize"
|
||||||
msgstr "Minimizatu"
|
msgstr "Minimizatu"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:125
|
#: extensions/window-list/extension.js:99
|
||||||
msgid "Unmaximize"
|
msgid "Unmaximize"
|
||||||
msgstr "Desmaximizatu"
|
msgstr "Desmaximizatu"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:125
|
#: extensions/window-list/extension.js:99
|
||||||
msgid "Maximize"
|
msgid "Maximize"
|
||||||
msgstr "Maximizatu"
|
msgstr "Maximizatu"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:430
|
#: extensions/window-list/extension.js:434
|
||||||
msgid "Minimize all"
|
msgid "Minimize all"
|
||||||
msgstr "Minimizatu denak"
|
msgstr "Minimizatu denak"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:436
|
#: extensions/window-list/extension.js:440
|
||||||
msgid "Unminimize all"
|
msgid "Unminimize all"
|
||||||
msgstr "Leheneratu denak"
|
msgstr "Leheneratu denak"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:442
|
#: extensions/window-list/extension.js:446
|
||||||
msgid "Maximize all"
|
msgid "Maximize all"
|
||||||
msgstr "Maximizatu denak"
|
msgstr "Maximizatu denak"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:450
|
#: extensions/window-list/extension.js:454
|
||||||
msgid "Unmaximize all"
|
msgid "Unmaximize all"
|
||||||
msgstr "Desmaximizatu denak"
|
msgstr "Desmaximizatu denak"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:458
|
#: extensions/window-list/extension.js:462
|
||||||
msgid "Close all"
|
msgid "Close all"
|
||||||
msgstr "Itxi denak"
|
msgstr "Itxi denak"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:740
|
#: extensions/window-list/extension.js:741
|
||||||
msgid "Window List"
|
msgid "Window List"
|
||||||
msgstr "Leiho-zerrenda"
|
msgstr "Leiho-zerrenda"
|
||||||
|
|
||||||
@@ -205,7 +200,7 @@ msgid ""
|
|||||||
msgstr "Aplikazio bereko leihoak leihoen zerrendan noiz elkartuko diren erabakitzen du. Balio erabilgarriak: “never“ (inoiz ere ez), “auto“ (automatikoa) eta “always“ (beti)."
|
msgstr "Aplikazio bereko leihoak leihoen zerrendan noiz elkartuko diren erabakitzen du. Balio erabilgarriak: “never“ (inoiz ere ez), “auto“ (automatikoa) eta “always“ (beti)."
|
||||||
|
|
||||||
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:20
|
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:20
|
||||||
#: extensions/window-list/prefs.js:82
|
#: extensions/window-list/prefs.js:86
|
||||||
msgid "Show windows from all workspaces"
|
msgid "Show windows from all workspaces"
|
||||||
msgstr "Erakutsi laneko area guztietako leihoak"
|
msgstr "Erakutsi laneko area guztietako leihoak"
|
||||||
|
|
||||||
@@ -223,44 +218,56 @@ msgid ""
|
|||||||
"primary one."
|
"primary one."
|
||||||
msgstr "Leihoen zerrenda konektatutako pantaila guztietan edo soilik pantaila nagusian erakutsiko den."
|
msgstr "Leihoen zerrenda konektatutako pantaila guztietan edo soilik pantaila nagusian erakutsiko den."
|
||||||
|
|
||||||
#: extensions/window-list/prefs.js:25
|
#: extensions/window-list/prefs.js:39
|
||||||
msgid "Window Grouping"
|
msgid "Window Grouping"
|
||||||
msgstr "Leiho-elkartzea"
|
msgstr "Leiho-elkartzea"
|
||||||
|
|
||||||
#: extensions/window-list/prefs.js:47
|
#: extensions/window-list/prefs.js:63
|
||||||
msgid "Never group windows"
|
msgid "Never group windows"
|
||||||
msgstr "Leihoak inoiz ez elkartu"
|
msgstr "Leihoak inoiz ez elkartu"
|
||||||
|
|
||||||
#: extensions/window-list/prefs.js:48
|
#: extensions/window-list/prefs.js:64
|
||||||
msgid "Group windows when space is limited"
|
msgid "Group windows when space is limited"
|
||||||
msgstr "Elkartu leihoak lekua mugatuta dagoenean"
|
msgstr "Elkartu leihoak lekua mugatuta dagoenean"
|
||||||
|
|
||||||
#: extensions/window-list/prefs.js:49
|
#: extensions/window-list/prefs.js:65
|
||||||
msgid "Always group windows"
|
msgid "Always group windows"
|
||||||
msgstr "Elkartu beti leihoak"
|
msgstr "Elkartu beti leihoak"
|
||||||
|
|
||||||
#: extensions/window-list/prefs.js:75
|
#: extensions/window-list/prefs.js:81
|
||||||
msgid "Show on all monitors"
|
msgid "Show on all monitors"
|
||||||
msgstr "Erakutsi pantaila guztietan"
|
msgstr "Erakutsi pantaila guztietan"
|
||||||
|
|
||||||
#: extensions/window-list/workspaceIndicator.js:211
|
#: extensions/window-list/workspaceIndicator.js:249
|
||||||
#: extensions/workspace-indicator/extension.js:216
|
#: extensions/workspace-indicator/extension.js:254
|
||||||
msgid "Workspace Indicator"
|
msgid "Workspace Indicator"
|
||||||
msgstr "Lan arearen adierazlea"
|
msgstr "Lan arearen adierazlea"
|
||||||
|
|
||||||
#: extensions/workspace-indicator/prefs.js:131
|
#: extensions/workspace-indicator/prefs.js:33
|
||||||
msgid "Workspace Names"
|
msgid "Workspace Names"
|
||||||
msgstr "Laneko areen izenak"
|
msgstr "Laneko areen izenak"
|
||||||
|
|
||||||
#: extensions/workspace-indicator/prefs.js:151
|
#: extensions/workspace-indicator/prefs.js:66
|
||||||
msgid "Name"
|
|
||||||
msgstr "Izena"
|
|
||||||
|
|
||||||
#: extensions/workspace-indicator/prefs.js:191
|
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "Workspace %d"
|
msgid "Workspace %d"
|
||||||
msgstr "%d. laneko area"
|
msgstr "%d. laneko area"
|
||||||
|
|
||||||
|
#: extensions/workspace-indicator/prefs.js:207
|
||||||
|
msgid "Add Workspace"
|
||||||
|
msgstr "Gehitu laneko area"
|
||||||
|
|
||||||
|
#~ msgid "Application"
|
||||||
|
#~ msgstr "Aplikazioa"
|
||||||
|
|
||||||
|
#~ msgid "Create new matching rule"
|
||||||
|
#~ msgstr "Sortu bat datorren arau berria"
|
||||||
|
|
||||||
|
#~ msgid "Add"
|
||||||
|
#~ msgstr "Gehitu"
|
||||||
|
|
||||||
|
#~ msgid "Name"
|
||||||
|
#~ msgstr "Izena"
|
||||||
|
|
||||||
#~ msgid "Attach modal dialog to the parent window"
|
#~ msgid "Attach modal dialog to the parent window"
|
||||||
#~ msgstr "Erantsi elkarrizketa-koadro modala leiho gurasoari"
|
#~ msgstr "Erantsi elkarrizketa-koadro modala leiho gurasoari"
|
||||||
|
|
||||||
|
|||||||
@@ -1,38 +1,48 @@
|
|||||||
# Persian translation for gnome-shell-extensions.
|
# Persian translation for gnome-shell-extensions.
|
||||||
# Copyright (C) 2011 Iranian Free Software Users Group (IFSUG.org) translation team.
|
# Copyright (C) 2011 Iranian Free Software Users Group (IFSUG.org) translation team.
|
||||||
# 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.
|
||||||
# Arash Mousavi <mousavi.arash@gmail.com>, 2011, 2013, 2014, 2015, 2016, 2017.
|
# Arash Mousavi <mousavi.arash@gmail.com>, 2011-2017.
|
||||||
|
# Danial Behzadi <dani.behzi@ubuntu.com>, 2018-2020.
|
||||||
#
|
#
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: gnome-shell-extensions gnome-3-0\n"
|
"Project-Id-Version: gnome-shell-extensions gnome-3-0\n"
|
||||||
"Report-Msgid-Bugs-To: https://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: 2019-08-09 22:24+0000\n"
|
"POT-Creation-Date: 2021-11-06 14:08+0000\n"
|
||||||
"PO-Revision-Date: 2019-08-14 11:48+0430\n"
|
"PO-Revision-Date: 2021-11-10 16:24+0330\n"
|
||||||
"Last-Translator: Danial Behzadi <dani.behzi@ubuntu.com>\n"
|
"Last-Translator: MohammadSaleh Kamyab <mskf1383@protonmail.com>\n"
|
||||||
"Language-Team: Persian <>\n"
|
"Language-Team: Persian <>\n"
|
||||||
"Language: fa\n"
|
"Language: fa\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"X-Poedit-SourceCharset: utf-8\n"
|
"X-Poedit-SourceCharset: utf-8\n"
|
||||||
"X-Generator: Poedit 2.2.1\n"
|
"X-Generator: Poedit 2.4.2\n"
|
||||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||||
|
|
||||||
#: data/gnome-classic.desktop.in:3 data/gnome-classic.session.desktop.in:3
|
#: data/gnome-classic.desktop.in:3
|
||||||
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 "Favorites"
|
msgid "GNOME Classic on Wayland"
|
||||||
msgstr "علاقهمندیها"
|
msgstr "گنوم کلاسیک روی ویلند"
|
||||||
|
|
||||||
#: extensions/apps-menu/extension.js:368
|
#: data/gnome-classic-xorg.desktop.in:3
|
||||||
|
msgid "GNOME Classic on Xorg"
|
||||||
|
msgstr "گنوم کلاسیک روی زورگ"
|
||||||
|
|
||||||
|
#: extensions/apps-menu/extension.js:112
|
||||||
|
msgid "Favorites"
|
||||||
|
msgstr "برگزیدهها"
|
||||||
|
|
||||||
|
#: extensions/apps-menu/extension.js:366
|
||||||
msgid "Applications"
|
msgid "Applications"
|
||||||
msgstr "برنامهها"
|
msgstr "برنامهها"
|
||||||
|
|
||||||
@@ -48,39 +58,26 @@ msgstr ""
|
|||||||
"فهرستی از رشتهها، هرکدام حاوی شناسهی یک برنامه (نام پرونده رومیزی)، در ادامهی یک "
|
"فهرستی از رشتهها، هرکدام حاوی شناسهی یک برنامه (نام پرونده رومیزی)، در ادامهی یک "
|
||||||
"ویرگول و شمارهی فضای کاری"
|
"ویرگول و شمارهی فضای کاری"
|
||||||
|
|
||||||
#: extensions/auto-move-windows/prefs.js:60
|
#: extensions/auto-move-windows/prefs.js:34
|
||||||
msgid "Application"
|
msgid "Workspace Rules"
|
||||||
msgstr "برنامه"
|
msgstr "قواعد فضای کاری"
|
||||||
|
|
||||||
#: extensions/auto-move-windows/prefs.js:71
|
#: extensions/auto-move-windows/prefs.js:236
|
||||||
#: extensions/auto-move-windows/prefs.js:134
|
|
||||||
msgid "Workspace"
|
|
||||||
msgstr "فضایکاری"
|
|
||||||
|
|
||||||
#: extensions/auto-move-windows/prefs.js:89
|
|
||||||
msgid "Add Rule"
|
msgid "Add Rule"
|
||||||
msgstr "افزودن قاعده"
|
msgstr "افزودن قاعده"
|
||||||
|
|
||||||
#: extensions/auto-move-windows/prefs.js:111
|
|
||||||
msgid "Create new matching rule"
|
|
||||||
msgstr "افزودن یک قاعدهی منطبق جدید"
|
|
||||||
|
|
||||||
#: extensions/auto-move-windows/prefs.js:117
|
|
||||||
msgid "Add"
|
|
||||||
msgstr "اضافه"
|
|
||||||
|
|
||||||
#. TRANSLATORS: %s is the filesystem name
|
#. TRANSLATORS: %s is the filesystem name
|
||||||
#: extensions/drive-menu/extension.js:102
|
#: extensions/drive-menu/extension.js:133
|
||||||
#: extensions/places-menu/placeDisplay.js:232
|
#: 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:118
|
#: extensions/drive-menu/extension.js:149
|
||||||
msgid "Removable devices"
|
msgid "Removable devices"
|
||||||
msgstr "دستگاههای جداشدنی"
|
msgstr "دستگاههای جداشدنی"
|
||||||
|
|
||||||
#: extensions/drive-menu/extension.js:145
|
#: extensions/drive-menu/extension.js:171
|
||||||
msgid "Open Files"
|
msgid "Open Files"
|
||||||
msgstr "گشودن پروندهها"
|
msgstr "گشودن پروندهها"
|
||||||
|
|
||||||
@@ -112,7 +109,7 @@ msgstr ""
|
|||||||
"شل در پایین را تغییر میدهد. تغییر این گزینه، نیاز به راهاندازی مجدد شل دارد تا "
|
"شل در پایین را تغییر میدهد. تغییر این گزینه، نیاز به راهاندازی مجدد شل دارد تا "
|
||||||
"تاثیر بگذارد."
|
"تاثیر بگذارد."
|
||||||
|
|
||||||
#: extensions/places-menu/extension.js:80 extensions/places-menu/extension.js:84
|
#: extensions/places-menu/extension.js:88 extensions/places-menu/extension.js:91
|
||||||
msgid "Places"
|
msgid "Places"
|
||||||
msgstr "مکانها"
|
msgstr "مکانها"
|
||||||
|
|
||||||
@@ -131,11 +128,11 @@ msgstr "شکست در سوار کردن حجم برای «%s»"
|
|||||||
msgid "Computer"
|
msgid "Computer"
|
||||||
msgstr "رایانه"
|
msgstr "رایانه"
|
||||||
|
|
||||||
#: extensions/places-menu/placeDisplay.js:358
|
#: extensions/places-menu/placeDisplay.js:359
|
||||||
msgid "Home"
|
msgid "Home"
|
||||||
msgstr "خانه"
|
msgstr "خانه"
|
||||||
|
|
||||||
#: extensions/places-menu/placeDisplay.js:403
|
#: extensions/places-menu/placeDisplay.js:404
|
||||||
msgid "Browse Network"
|
msgid "Browse Network"
|
||||||
msgstr "مرور شبکه"
|
msgstr "مرور شبکه"
|
||||||
|
|
||||||
@@ -155,43 +152,43 @@ 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:99
|
#: extensions/window-list/extension.js:72
|
||||||
msgid "Close"
|
msgid "Close"
|
||||||
msgstr "خروج"
|
msgstr "خروج"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:119
|
#: extensions/window-list/extension.js:92
|
||||||
msgid "Unminimize"
|
msgid "Unminimize"
|
||||||
msgstr "ناکمینه"
|
msgstr "ناکمینه"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:119
|
#: extensions/window-list/extension.js:92
|
||||||
msgid "Minimize"
|
msgid "Minimize"
|
||||||
msgstr "کمینه"
|
msgstr "کمینه"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:126
|
#: extensions/window-list/extension.js:99
|
||||||
msgid "Unmaximize"
|
msgid "Unmaximize"
|
||||||
msgstr "نابیشینه"
|
msgstr "نابیشینه"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:126
|
#: extensions/window-list/extension.js:99
|
||||||
msgid "Maximize"
|
msgid "Maximize"
|
||||||
msgstr "بیشنه"
|
msgstr "بیشنه"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:431
|
#: extensions/window-list/extension.js:434
|
||||||
msgid "Minimize all"
|
msgid "Minimize all"
|
||||||
msgstr "کمینهٔ همه"
|
msgstr "کمینهٔ همه"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:437
|
#: extensions/window-list/extension.js:440
|
||||||
msgid "Unminimize all"
|
msgid "Unminimize all"
|
||||||
msgstr "ناکمینهٔ همه"
|
msgstr "ناکمینهٔ همه"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:443
|
#: extensions/window-list/extension.js:446
|
||||||
msgid "Maximize all"
|
msgid "Maximize all"
|
||||||
msgstr "بیشینهٔ همه"
|
msgstr "بیشینهٔ همه"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:451
|
#: extensions/window-list/extension.js:454
|
||||||
msgid "Unmaximize all"
|
msgid "Unmaximize all"
|
||||||
msgstr "نابیشینهٔ همه"
|
msgstr "نابیشینهٔ همه"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:459
|
#: extensions/window-list/extension.js:462
|
||||||
msgid "Close all"
|
msgid "Close all"
|
||||||
msgstr "بستن همه"
|
msgstr "بستن همه"
|
||||||
|
|
||||||
@@ -212,7 +209,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:82
|
#: extensions/window-list/prefs.js:86
|
||||||
msgid "Show windows from all workspaces"
|
msgid "Show windows from all workspaces"
|
||||||
msgstr "نمایش پنجرهها از تمام فضاهای کاری"
|
msgstr "نمایش پنجرهها از تمام فضاهای کاری"
|
||||||
|
|
||||||
@@ -232,44 +229,59 @@ msgstr ""
|
|||||||
"اینکه آیا فهرست پنجرهها در تمام نمایشگرهای متصل نمایش داده شود یا فقط در نمایشگر "
|
"اینکه آیا فهرست پنجرهها در تمام نمایشگرهای متصل نمایش داده شود یا فقط در نمایشگر "
|
||||||
"اصلی."
|
"اصلی."
|
||||||
|
|
||||||
#: extensions/window-list/prefs.js:25
|
#: extensions/window-list/prefs.js:39
|
||||||
msgid "Window Grouping"
|
msgid "Window Grouping"
|
||||||
msgstr "گروهسازی پنجرهها"
|
msgstr "گروهسازی پنجرهها"
|
||||||
|
|
||||||
#: extensions/window-list/prefs.js:47
|
#: extensions/window-list/prefs.js:63
|
||||||
msgid "Never group windows"
|
msgid "Never group windows"
|
||||||
msgstr "هیچگاه پنجرهها گروه نشوند"
|
msgstr "هیچگاه پنجرهها گروه نشوند"
|
||||||
|
|
||||||
#: extensions/window-list/prefs.js:48
|
#: extensions/window-list/prefs.js:64
|
||||||
msgid "Group windows when space is limited"
|
msgid "Group windows when space is limited"
|
||||||
msgstr "پنجرهها زمانی که فضا محدود است گروه شوند"
|
msgstr "پنجرهها زمانی که فضا محدود است گروه شوند"
|
||||||
|
|
||||||
#: extensions/window-list/prefs.js:49
|
#: extensions/window-list/prefs.js:65
|
||||||
msgid "Always group windows"
|
msgid "Always group windows"
|
||||||
msgstr "همیشه پنجرهها گروه شوند"
|
msgstr "همیشه پنجرهها گروه شوند"
|
||||||
|
|
||||||
#: extensions/window-list/prefs.js:75
|
#: extensions/window-list/prefs.js:81
|
||||||
msgid "Show on all monitors"
|
msgid "Show on all monitors"
|
||||||
msgstr "نمایش در تمام نمایشگرها"
|
msgstr "نمایش در تمام نمایشگرها"
|
||||||
|
|
||||||
#: extensions/window-list/workspaceIndicator.js:211
|
#: extensions/window-list/workspaceIndicator.js:249
|
||||||
#: extensions/workspace-indicator/extension.js:216
|
#: extensions/workspace-indicator/extension.js:254
|
||||||
msgid "Workspace Indicator"
|
msgid "Workspace Indicator"
|
||||||
msgstr "نشانگر فضایکاری"
|
msgstr "نشانگر فضایکاری"
|
||||||
|
|
||||||
#: extensions/workspace-indicator/prefs.js:131
|
#: extensions/workspace-indicator/prefs.js:33
|
||||||
msgid "Workspace Names"
|
msgid "Workspace Names"
|
||||||
msgstr "نامهای فضای کاری"
|
msgstr "نامهای فضای کاری"
|
||||||
|
|
||||||
#: extensions/workspace-indicator/prefs.js:151
|
#: extensions/workspace-indicator/prefs.js:66
|
||||||
msgid "Name"
|
|
||||||
msgstr "نام"
|
|
||||||
|
|
||||||
#: extensions/workspace-indicator/prefs.js:191
|
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "Workspace %d"
|
msgid "Workspace %d"
|
||||||
msgstr "فضای کاری %Id"
|
msgstr "فضای کاری %Id"
|
||||||
|
|
||||||
|
#: extensions/workspace-indicator/prefs.js:207
|
||||||
|
msgid "Add Workspace"
|
||||||
|
msgstr "افزودن فضایکاری"
|
||||||
|
|
||||||
|
#~ msgid "Application"
|
||||||
|
#~ msgstr "برنامه"
|
||||||
|
|
||||||
|
#~ msgid "Workspace"
|
||||||
|
#~ msgstr "فضایکاری"
|
||||||
|
|
||||||
|
#~ msgid "Create new matching rule"
|
||||||
|
#~ msgstr "افزودن یک قاعدهی منطبق جدید"
|
||||||
|
|
||||||
|
#~ msgid "Add"
|
||||||
|
#~ msgstr "اضافه"
|
||||||
|
|
||||||
|
#~ msgid "Name"
|
||||||
|
#~ msgstr "نام"
|
||||||
|
|
||||||
#~ msgid "Attach modal dialog to the parent window"
|
#~ msgid "Attach modal dialog to the parent window"
|
||||||
#~ msgstr "اتصال محاوره modal به پنجره والد"
|
#~ msgstr "اتصال محاوره modal به پنجره والد"
|
||||||
|
|
||||||
|
|||||||
@@ -12,9 +12,9 @@ msgstr ""
|
|||||||
"Project-Id-Version: gnome-shell-extensions\n"
|
"Project-Id-Version: gnome-shell-extensions\n"
|
||||||
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell-extensions/"
|
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell-extensions/"
|
||||||
"issues\n"
|
"issues\n"
|
||||||
"POT-Creation-Date: 2019-08-09 22:24+0000\n"
|
"POT-Creation-Date: 2020-10-17 20:14+0000\n"
|
||||||
"PO-Revision-Date: 2019-08-17 16:00+0300\n"
|
"PO-Revision-Date: 2021-03-15 21:32+0200\n"
|
||||||
"Last-Translator: Jiri Grönroos <jiri.gronroos+l10n@iki.fi>\n"
|
"Last-Translator: JR-Fi <starman@starman.fi>\n"
|
||||||
"Language-Team: suomi <lokalisointi-lista@googlegroups.com>\n"
|
"Language-Team: suomi <lokalisointi-lista@googlegroups.com>\n"
|
||||||
"Language: fi\n"
|
"Language: fi\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
@@ -25,7 +25,7 @@ msgstr ""
|
|||||||
"X-Project-Style: gnome\n"
|
"X-Project-Style: gnome\n"
|
||||||
"X-POT-Import-Date: 2012-03-05 15:06:12+0000\n"
|
"X-POT-Import-Date: 2012-03-05 15:06:12+0000\n"
|
||||||
|
|
||||||
#: 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 "Perinteinen Gnome"
|
msgstr "Perinteinen Gnome"
|
||||||
|
|
||||||
@@ -37,7 +37,7 @@ msgstr "Tämä istunto kirjaa sinut perinteiseen Gnomeen"
|
|||||||
msgid "Favorites"
|
msgid "Favorites"
|
||||||
msgstr "Suosikit"
|
msgstr "Suosikit"
|
||||||
|
|
||||||
#: extensions/apps-menu/extension.js:368
|
#: extensions/apps-menu/extension.js:369
|
||||||
msgid "Applications"
|
msgid "Applications"
|
||||||
msgstr "Sovellukset"
|
msgstr "Sovellukset"
|
||||||
|
|
||||||
@@ -50,40 +50,29 @@ msgid ""
|
|||||||
"A list of strings, each containing an application id (desktop file name), "
|
"A list of strings, each containing an application id (desktop file name), "
|
||||||
"followed by a colon and the workspace number"
|
"followed by a colon and the workspace number"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"Lista merkkijonoja, jossa jokainen on ohjelman tunnus (työpöydän "
|
||||||
|
"tiedostonimi), jota seuraa kaksoispiste ja työtilan numero"
|
||||||
|
|
||||||
#: extensions/auto-move-windows/prefs.js:60
|
#: extensions/auto-move-windows/prefs.js:35
|
||||||
msgid "Application"
|
msgid "Workspace Rules"
|
||||||
msgstr "Sovellus"
|
msgstr "Työtilojen säännöt"
|
||||||
|
|
||||||
#: extensions/auto-move-windows/prefs.js:71
|
#: extensions/auto-move-windows/prefs.js:243
|
||||||
#: extensions/auto-move-windows/prefs.js:134
|
|
||||||
msgid "Workspace"
|
|
||||||
msgstr "Työtila"
|
|
||||||
|
|
||||||
#: extensions/auto-move-windows/prefs.js:89
|
|
||||||
msgid "Add Rule"
|
msgid "Add Rule"
|
||||||
msgstr "Lisää sääntö"
|
msgstr "Lisää sääntö"
|
||||||
|
|
||||||
#: extensions/auto-move-windows/prefs.js:111
|
|
||||||
msgid "Create new matching rule"
|
|
||||||
msgstr "Luo uusi vastaava sääntö"
|
|
||||||
|
|
||||||
#: extensions/auto-move-windows/prefs.js:117
|
|
||||||
msgid "Add"
|
|
||||||
msgstr "Lisää"
|
|
||||||
|
|
||||||
#. TRANSLATORS: %s is the filesystem name
|
#. TRANSLATORS: %s is the filesystem name
|
||||||
#: extensions/drive-menu/extension.js:102
|
#: extensions/drive-menu/extension.js:112
|
||||||
#: extensions/places-menu/placeDisplay.js:232
|
#: extensions/places-menu/placeDisplay.js:233
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "Ejecting drive “%s” failed:"
|
msgid "Ejecting drive “%s” failed:"
|
||||||
msgstr "Aseman “%s” irrottaminen epäonnistui:"
|
msgstr "Aseman “%s” irrottaminen epäonnistui:"
|
||||||
|
|
||||||
#: extensions/drive-menu/extension.js:118
|
#: extensions/drive-menu/extension.js:128
|
||||||
msgid "Removable devices"
|
msgid "Removable devices"
|
||||||
msgstr "Erilliset tallennusvälineet"
|
msgstr "Erilliset tallennusvälineet"
|
||||||
|
|
||||||
#: extensions/drive-menu/extension.js:145
|
#: extensions/drive-menu/extension.js:155
|
||||||
msgid "Open Files"
|
msgid "Open Files"
|
||||||
msgstr "Avaa tiedostonhallinta"
|
msgstr "Avaa tiedostonhallinta"
|
||||||
|
|
||||||
@@ -97,6 +86,9 @@ msgid ""
|
|||||||
"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 ""
|
||||||
|
"Yritä käyttää enemmän näyttötilaa laittamalla ikkunoiden pikkukuvat "
|
||||||
|
"huomioiden näyttösuhteen ja lähentämällä niitä vähentämällä rajaavaa "
|
||||||
|
"laatikkoa. Tämä asetus toimii vain luonnollisen asettelutavan kanssa."
|
||||||
|
|
||||||
#: 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"
|
||||||
@@ -112,8 +104,8 @@ msgstr ""
|
|||||||
"Tämä syrjäyttää oletusasetuksen, eli otsikkotekstin asettamisen pienoiskuvan "
|
"Tämä syrjäyttää oletusasetuksen, eli otsikkotekstin asettamisen pienoiskuvan "
|
||||||
"alle. Tämän asetuksen muutos vaatii Gnomen uudelleenkäynnistyksen."
|
"alle. Tämän asetuksen muutos vaatii Gnomen uudelleenkäynnistyksen."
|
||||||
|
|
||||||
#: extensions/places-menu/extension.js:80
|
#: extensions/places-menu/extension.js:89
|
||||||
#: extensions/places-menu/extension.js:84
|
#: extensions/places-menu/extension.js:93
|
||||||
msgid "Places"
|
msgid "Places"
|
||||||
msgstr "Sijainnit"
|
msgstr "Sijainnit"
|
||||||
|
|
||||||
@@ -132,23 +124,22 @@ msgstr "Taltion “%s” liittäminen epäonnistui"
|
|||||||
msgid "Computer"
|
msgid "Computer"
|
||||||
msgstr "Tietokone"
|
msgstr "Tietokone"
|
||||||
|
|
||||||
#: extensions/places-menu/placeDisplay.js:358
|
#: extensions/places-menu/placeDisplay.js:359
|
||||||
msgid "Home"
|
msgid "Home"
|
||||||
msgstr "Koti"
|
msgstr "Koti"
|
||||||
|
|
||||||
#: extensions/places-menu/placeDisplay.js:403
|
#: extensions/places-menu/placeDisplay.js:404
|
||||||
msgid "Browse Network"
|
msgid "Browse Network"
|
||||||
msgstr "Selaa verkkoa"
|
msgstr "Selaa verkkoa"
|
||||||
|
|
||||||
|
# Konteksti muutui hieman, kun tälle ilmaantui pari, jossa suunta on taaksepäin
|
||||||
#: extensions/screenshot-window-sizer/org.gnome.shell.extensions.screenshot-window-sizer.gschema.xml:7
|
#: extensions/screenshot-window-sizer/org.gnome.shell.extensions.screenshot-window-sizer.gschema.xml:7
|
||||||
msgid "Cycle Screenshot Sizes"
|
msgid "Cycle Screenshot Sizes"
|
||||||
msgstr "Vaihtele kuvakaappausten kokojen välillä"
|
msgstr "Vaihda kuvakaappausten kokojen välillä"
|
||||||
|
|
||||||
#: extensions/screenshot-window-sizer/org.gnome.shell.extensions.screenshot-window-sizer.gschema.xml:11
|
#: extensions/screenshot-window-sizer/org.gnome.shell.extensions.screenshot-window-sizer.gschema.xml:11
|
||||||
#, fuzzy
|
|
||||||
#| msgid "Cycle Screenshot Sizes"
|
|
||||||
msgid "Cycle Screenshot Sizes Backward"
|
msgid "Cycle Screenshot Sizes Backward"
|
||||||
msgstr "Vaihtele kuvakaappausten kokojen välillä"
|
msgstr "Vaihda kuvakaappausten kokojen välillä taaksepäin"
|
||||||
|
|
||||||
#: extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml:5
|
#: extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml:5
|
||||||
msgid "Theme name"
|
msgid "Theme name"
|
||||||
@@ -158,47 +149,47 @@ msgstr "Teeman nimi"
|
|||||||
msgid "The name of the theme, to be loaded from ~/.themes/name/gnome-shell"
|
msgid "The name of the theme, to be loaded from ~/.themes/name/gnome-shell"
|
||||||
msgstr "Teeman nimi, ladataan sijainnista ~/.themes/name/gnome-shell"
|
msgstr "Teeman nimi, ladataan sijainnista ~/.themes/name/gnome-shell"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:99
|
#: extensions/window-list/extension.js:98
|
||||||
msgid "Close"
|
msgid "Close"
|
||||||
msgstr "Sulje"
|
msgstr "Sulje"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:119
|
#: extensions/window-list/extension.js:118
|
||||||
msgid "Unminimize"
|
msgid "Unminimize"
|
||||||
msgstr "Palauta pienennys"
|
msgstr "Palauta pienennys"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:119
|
#: extensions/window-list/extension.js:118
|
||||||
msgid "Minimize"
|
msgid "Minimize"
|
||||||
msgstr "Pienennä"
|
msgstr "Pienennä"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:126
|
#: extensions/window-list/extension.js:125
|
||||||
msgid "Unmaximize"
|
msgid "Unmaximize"
|
||||||
msgstr "Palauta suurennus"
|
msgstr "Palauta suurennus"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:126
|
#: extensions/window-list/extension.js:125
|
||||||
msgid "Maximize"
|
msgid "Maximize"
|
||||||
msgstr "Suurenna"
|
msgstr "Suurenna"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:431
|
#: extensions/window-list/extension.js:432
|
||||||
msgid "Minimize all"
|
msgid "Minimize all"
|
||||||
msgstr "Pienennä kaikki"
|
msgstr "Pienennä kaikki"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:437
|
#: extensions/window-list/extension.js:438
|
||||||
msgid "Unminimize all"
|
msgid "Unminimize all"
|
||||||
msgstr "Palauta kaikkien koko"
|
msgstr "Palauta kaikkien koko"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:443
|
#: extensions/window-list/extension.js:444
|
||||||
msgid "Maximize all"
|
msgid "Maximize all"
|
||||||
msgstr "Suurenna kaikki"
|
msgstr "Suurenna kaikki"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:451
|
#: extensions/window-list/extension.js:452
|
||||||
msgid "Unmaximize all"
|
msgid "Unmaximize all"
|
||||||
msgstr "Palauta kaikkien koko"
|
msgstr "Palauta kaikkien koko"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:459
|
#: extensions/window-list/extension.js:460
|
||||||
msgid "Close all"
|
msgid "Close all"
|
||||||
msgstr "Sulje kaikki"
|
msgstr "Sulje kaikki"
|
||||||
|
|
||||||
#: extensions/window-list/extension.js:741
|
#: extensions/window-list/extension.js:738
|
||||||
msgid "Window List"
|
msgid "Window List"
|
||||||
msgstr "Ikkunaluettelo"
|
msgstr "Ikkunaluettelo"
|
||||||
|
|
||||||
@@ -215,7 +206,7 @@ msgstr ""
|
|||||||
"Mahdolliset arvot ovat “never”, “auto” ja “always”."
|
"Mahdolliset arvot ovat “never”, “auto” ja “always”."
|
||||||
|
|
||||||
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:20
|
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:20
|
||||||
#: extensions/window-list/prefs.js:82
|
#: extensions/window-list/prefs.js:100
|
||||||
msgid "Show windows from all workspaces"
|
msgid "Show windows from all workspaces"
|
||||||
msgstr "Näytä ikkunat kaikista työtiloista"
|
msgstr "Näytä ikkunat kaikista työtiloista"
|
||||||
|
|
||||||
@@ -237,44 +228,56 @@ msgstr ""
|
|||||||
"Näytetäänkö ikkunaluettelo kaikilla liitetyillä näytöillä vai ainoastaan "
|
"Näytetäänkö ikkunaluettelo kaikilla liitetyillä näytöillä vai ainoastaan "
|
||||||
"ensisijaisella näytöllä."
|
"ensisijaisella näytöllä."
|
||||||
|
|
||||||
#: extensions/window-list/prefs.js:25
|
#: extensions/window-list/prefs.js:29
|
||||||
msgid "Window Grouping"
|
msgid "Window Grouping"
|
||||||
msgstr "Ikkunoiden ryhmitys"
|
msgstr "Ikkunoiden ryhmitys"
|
||||||
|
|
||||||
#: extensions/window-list/prefs.js:47
|
#: extensions/window-list/prefs.js:58
|
||||||
msgid "Never group windows"
|
msgid "Never group windows"
|
||||||
msgstr "Älä ryhmitä ikkunoita koskaan"
|
msgstr "Älä ryhmitä ikkunoita koskaan"
|
||||||
|
|
||||||
#: extensions/window-list/prefs.js:48
|
#: extensions/window-list/prefs.js:59
|
||||||
msgid "Group windows when space is limited"
|
msgid "Group windows when space is limited"
|
||||||
msgstr "Ryhmitä ikkunat tilan ollessa rajallinen"
|
msgstr "Ryhmitä ikkunat tilan ollessa rajallinen"
|
||||||
|
|
||||||
#: extensions/window-list/prefs.js:49
|
#: extensions/window-list/prefs.js:60
|
||||||
msgid "Always group windows"
|
msgid "Always group windows"
|
||||||
msgstr "Ryhmitä ikkunat aina"
|
msgstr "Ryhmitä ikkunat aina"
|
||||||
|
|
||||||
#: extensions/window-list/prefs.js:75
|
#: extensions/window-list/prefs.js:94
|
||||||
msgid "Show on all monitors"
|
msgid "Show on all monitors"
|
||||||
msgstr "Näytä kaikilla näytöillä"
|
msgstr "Näytä kaikilla näytöillä"
|
||||||
|
|
||||||
#: extensions/window-list/workspaceIndicator.js:211
|
#: extensions/window-list/workspaceIndicator.js:207
|
||||||
#: extensions/workspace-indicator/extension.js:216
|
#: extensions/workspace-indicator/extension.js:213
|
||||||
msgid "Workspace Indicator"
|
msgid "Workspace Indicator"
|
||||||
msgstr "Työtilan ilmaisin"
|
msgstr "Työtilan ilmaisin"
|
||||||
|
|
||||||
#: extensions/workspace-indicator/prefs.js:131
|
#: extensions/workspace-indicator/prefs.js:34
|
||||||
msgid "Workspace Names"
|
msgid "Workspace Names"
|
||||||
msgstr "Työtilojen nimet"
|
msgstr "Työtilojen nimet"
|
||||||
|
|
||||||
#: extensions/workspace-indicator/prefs.js:151
|
#: extensions/workspace-indicator/prefs.js:67
|
||||||
msgid "Name"
|
|
||||||
msgstr "Nimi"
|
|
||||||
|
|
||||||
#: extensions/workspace-indicator/prefs.js:191
|
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "Workspace %d"
|
msgid "Workspace %d"
|
||||||
msgstr "Työtila %d"
|
msgstr "Työtila %d"
|
||||||
|
|
||||||
|
#: extensions/workspace-indicator/prefs.js:218
|
||||||
|
msgid "Add Workspace"
|
||||||
|
msgstr "Lisää työtila"
|
||||||
|
|
||||||
|
#~ msgid "Application"
|
||||||
|
#~ msgstr "Sovellus"
|
||||||
|
|
||||||
|
#~ msgid "Create new matching rule"
|
||||||
|
#~ msgstr "Luo uusi vastaava sääntö"
|
||||||
|
|
||||||
|
#~ msgid "Add"
|
||||||
|
#~ msgstr "Lisää"
|
||||||
|
|
||||||
|
#~ msgid "Name"
|
||||||
|
#~ msgstr "Nimi"
|
||||||
|
|
||||||
#~ msgid "Attach modal dialog to the parent window"
|
#~ msgid "Attach modal dialog to the parent window"
|
||||||
#~ msgstr "Liitä modaali-ikkuna ylätason ikkunaan"
|
#~ msgstr "Liitä modaali-ikkuna ylätason ikkunaan"
|
||||||
|
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user