Compare commits

..

59 Commits

Author SHA1 Message Date
Simon McVittie
9f25047e24 New upstream version 3.38.2 2020-12-03 10:11:14 +00:00
Florian Müllner
fb66afbf71 Bump version to 3.38.2
Update NEWS.
2020-12-03 00:14:49 +01:00
Florian Müllner
365fa6abc9 Update sass submodule 2020-12-03 00:14:49 +01:00
Florian Müllner
d7a824f35f workspace-indicator: Use overlap to determine preview visibility
In order to better reflect the actual workspace, show any preview
that is at least partially located on the monitor, not only those
that have the major part on that monitor.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/142>

(cherry picked from commit 50d3ee5703)
2020-12-03 00:09:21 +01:00
Florian Müllner
0d8e412220 window-list: Use overlap to determine preview visibility
In order to better reflect the actual workspace, show any preview
that is at least partially located on the monitor, not only those
that have the major part on that monitor.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/142>

(cherry picked from commit 08dfb78815)
2020-12-03 00:09:19 +01:00
Florian Müllner
991f6ef508 workspace-indicator: Account for monitor offset in window previews
Windows' frame rects are in screen coordinates, while the workspace
thumbnails are based on the monitor work area. Unless we account
for the difference, previews end up mispositioned in multi-monitor
setups.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/142>

(cherry picked from commit 6949a5d075)
2020-12-03 00:09:16 +01:00
Florian Müllner
37f03f5e2e window-list: Account for monitor offset in window previews
Windows' frame rects are in screen coordinates, while the workspace
thumbnails are based on the monitor work area. Unless we account
for the difference, previews end up mispositioned in multi-monitor
setups.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/142>

(cherry picked from commit 893d3b0473)
2020-12-03 00:09:12 +01:00
Florian Müllner
b4a4ff0a06 workspace-indicator: Round calculated preview sizes
While not strictly necessary, there's no reason to differ from the
copy in the window-list extension ...

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/142>

(cherry picked from commit f5128e13f2)
2020-12-03 00:09:09 +01:00
Ray Strode
de8876bd5e window-list: Stop monitoring drag operation if window list is destroyed
If a user is in the middle of a drag in the window list and the
window list associated with the drag gets destroyed, the drag
monitor gets leaked.

Later when the drag motion is processed, spew goes to the log:

clutter_actor_contains: assertion 'CLUTTER_IS_ACTOR (self)' failed

Examples of triggers for this bug:

- The monitor topology changes
- The screen gets locked during the drag

This commit fixes the spew and the leak by ensuring any pending
drag monitoring is disabled when the window lists are destroyed.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/145>

(cherry picked from commit 8318ea919f)
2020-12-03 00:08:57 +01:00
Thun Pin
5ad272e628 window-navigator: Adjust to 3.38 overview changes
gnome-shell's overview code changed significantly in 3.38,
adjust the extension to work without the separate overlay.

https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/issues/259

(cherry picked from commit 737c897624)
2020-12-03 00:08:30 +01:00
Florian Müllner
3b22582752 auto-move-windows: Exclude sticky windows from empty-check
We modify gnome-shell's workspace tracker to only remove empty
workspaces from the end. However we currently don't take into
account that sticky windows appear on all workspaces, so those
are preventing any workspace from getting removed at the moment.

Exclude them when determining whether a workspace is empty to
get the expected behavior.

https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/135

(cherry picked from commit 61cf679b8c)
2020-12-03 00:08:07 +01:00
Florian Müllner
e734fcbd21 window-list: Adjust to overview changes
Window DND in the overview is now based on the metaWindow,
not the window actor (misnamed as "real window").

https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/133
2020-11-19 04:54:07 +01:00
Florian Müllner
435879c121 workspace-indicator: Adjust to overview changes
Window DND in the overview is now based on the metaWindow,
not the window actor (misnamed as "real window").

https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/133
2020-11-19 04:54:07 +01:00
Florian Müllner
ed81650f55 window-list: Use custom layout manager for thumbnails
The current code positions window previews explicitly using a fixed
layout manager. For that it relies on a valid parent allocation,
which is error-prone and frequently results in warnings.

Address this by moving the positioning code into a custom layout
manager, and only update the visibility from the window preview.

https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/issues/260
2020-10-21 13:44:44 +02:00
Florian Müllner
1276a880de workspace-indicator: Use custom layout manager for thumbnails
The current code positions window previews explicitly using a fixed
layout manager. For that it relies on a valid parent allocation,
which is error-prone and frequently results in warnings.

Address this by moving the positioning code into a custom layout
manager, and only update the visibility from the window preview.

https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/issues/260
2020-10-21 13:44:44 +02:00
Sergio Costas
584016c291 window-list: Honor changes in skip-taskbar property
Although window-list checks the 'skip-taskbar' property when a
window is added to the desktop to decide wether it should be
shown in the bar or not, it doesn't honor that when the property
is changed after a window has already been added. Since the new
WaylandClient API allows to change this property for already
mapped windows, supporting this is a good idea.

This patch fixes this.

Fix https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/130


(cherry picked from commit b65f362f0d)
2020-10-08 21:50:07 +00:00
Jeremy Bicha
41664b152c New upstream version 3.38.1 2020-10-06 17:36:33 -04:00
Simon McVittie
8957c277a1 New upstream version 3.38.0 2020-09-22 09:16:27 +01:00
Marco Trevisan (Treviño)
8b9be8f120 New upstream version 3.37.91 2020-08-27 08:18:07 +02:00
Laurent Bigonville
d3b687df8b New upstream version 3.36.2 2020-05-03 10:01:14 +02:00
Florian Müllner
df463177e7 Bump version to 3.36.2
Update NEWS.
2020-04-29 22:45:40 +02:00
Florian Müllner
62af36ebfa Update sass submodule 2020-04-29 22:44:25 +02:00
Kristjan SCHMIDT
c5246b7415 Update Esperanto translation 2020-04-18 09:00:46 +00:00
Xiaoguang Wang
d39c1fd685 windowPicker: Wrong signal ID _nWorkspacesNotifyId
https://gitlab.gnome.org/GNOME/gnome-shell-extensions/merge_requests/106


(cherry picked from commit f9aaa732b2)
2020-04-10 14:31:24 +00:00
Florian Müllner
665a7fbbcb ci: Update URL check
Gitlab started inserting a /-/ in its URLs, account for that.

https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/113


(cherry picked from commit 7b82c5e12b)
2020-04-10 14:30:49 +00:00
Simon McVittie
a4987d03b8 New upstream version 3.36.1 2020-04-02 10:14:07 +01:00
Yosef Or Boczko
c477f10bfb Update Hebrew translation 2020-04-01 15:22:37 +00:00
Florian Müllner
2ae0f368b9 Bump version to 3.36.1
Update NEWS.
2020-03-31 00:58:41 +02:00
Iain Lane
ac33058086 New upstream version 3.36.0 2020-03-16 12:13:26 +00:00
Marco Trevisan (Treviño)
c7a08aaf74 New upstream version 3.35.91 2020-02-24 14:48:45 +01:00
Laurent Bigonville
8c1d6d88cf New upstream version 3.34.2 2019-12-30 00:41:31 +01:00
Florian Müllner
33b16681c6 Bump version to 3.34.2
Update NEWS.
2019-12-11 22:56:08 +01:00
Umarzuki Bin Mochlis Moktar
3c51716268 Update Malay translation 2019-12-09 11:59:58 +00:00
Willy Stadnick
e5421b6cc6 screenshot-window-sizer: Fix cycling through all valid sizes
When cycling through window sizes, we should skip any sizes that are
bigger than the available area. We do that, but the current code
assumes that the possible sizes are sorted, which is no longer the
case since the addition of "phone" sizes in commit 5b43d4733c.

As a result, we may now skip sizes that would fit perfectly fine.
Address this by filtering out invalid sizes beforehand instead of
assuming a certain order (wich no longer work due to the addition
of a portrait format).

https://gitlab.gnome.org/GNOME/gnome-shell-extensions/merge_requests/97
2019-11-27 20:56:55 +01:00
Florian Müllner
f1e7ae1010 workspace-indicator: Exclude DESKTOP windows from window previews
While nautilus removed its desktop support a while ago in favor of an
extension, it's still possible that some external X11 desktop icon app
is used. As DESKTOP windows cannot be moved between workspaces or stacked,
and aren't perceived as regular windows, it doesn't make sense to show
them as previews in the workspace switcher.

https://gitlab.gnome.org/GNOME/gnome-shell-extensions/merge_requests/93
2019-11-21 22:47:01 +01:00
Florian Müllner
10fe907c83 window-list: Exclude DESKTOP windows from window previews
While nautilus removed its desktop support a while ago in favor of an
extension, it's still possible that some external X11 desktop icon app
is used. As DESKTOP windows cannot be moved between workspaces or stacked,
and aren't perceived as regular windows, it doesn't make sense to show
them as previews in the workspace switcher.

https://gitlab.gnome.org/GNOME/gnome-shell-extensions/merge_requests/93
2019-11-21 22:47:01 +01:00
Stas Solovey
ae9809caba Update Russian translation 2019-11-13 18:42:24 +00:00
Jeremy Bicha
c95d197c5c New upstream version 3.34.1 2019-10-08 22:45:42 -04:00
Iain Lane
ae8749b7e1 New upstream version 3.34.0 2019-09-10 10:53:04 +01:00
Iain Lane
84a548c0b9 New upstream version 3.33.92 2019-09-05 18:21:22 +01:00
Marco Trevisan (Treviño)
f047cb0baf New upstream version 3.33.90 2019-08-13 04:25:54 +02:00
Iain Lane
28494941e1 New upstream version 3.32.0 2019-03-12 16:33:30 +00:00
Iain Lane
b70059ac4d New upstream version 3.31.92 2019-03-06 15:39:47 +00:00
Iain Lane
eb567c1120 New upstream version 3.31.90 2019-02-21 10:08:46 +00:00
Simon McVittie
b1eb9b9080 New upstream version 3.30.1 2018-11-02 09:22:09 +00:00
Jeremy Bicha
a0b6535210 New upstream version 3.30.0 2018-09-05 12:32:25 -04:00
Simon McVittie
9a9b3afa31 New upstream version 3.29.91 2018-08-20 19:55:42 +01:00
Simon McVittie
59bc054ef6 New upstream version 3.29.90 2018-08-02 10:32:10 +01:00
Simon McVittie
57e9dfe722 Merge remote-tracking branch 'origin/upstream/latest' into upstream/latest 2018-07-27 09:14:56 +01:00
Simon McVittie
f17a519c38 New upstream version 3.29.3 2018-07-27 08:43:26 +01:00
Jeremy Bicha
8223ca9739 New upstream version 3.28.1 2018-05-14 21:50:46 -04:00
Jeremy Bicha
fe20c27b60 New upstream version 3.28.0 2018-03-15 21:28:20 -04:00
Jeremy Bicha
5ba59d1096 New upstream version 3.27.92 2018-03-05 20:55:43 -05:00
Jeremy Bicha
0ad1e9bbc1 New upstream version 3.27.91 2018-02-23 19:30:14 -05:00
Jeremy Bicha
5ea14f063f New upstream version 3.26.2 2017-12-15 15:11:42 -05:00
Jeremy Bicha
3cc3d03f0b Initial upstream branch 2017-12-15 15:11:26 -05:00
Florian Müllner
057e5bb0c1 Bump version to 3.26.2
Update NEWS.
2017-11-02 19:51:10 +01:00
Florian Müllner
07fc66765d auto-move: Remove unused imports 2017-10-27 14:45:09 +02:00
Xavi Ivars
daa7b9b6ab [l10n] Updated Catalan (Valencian) translation 2017-10-05 14:02:06 +02:00
93 changed files with 4977 additions and 1898 deletions

29
.gitignore vendored
View File

@@ -1,29 +0,0 @@
ABOUT-NLS
Makefile
Makefile.in
Makefile.in.in
aclocal.m4
autom4te.cache/
config/
configure
config.log
config.status
data/*.json
m4/
po/*.header
po/*.sed
po/*.sin
po/Makevars.template
po/POTFILES
po/Rules-quot
po/gnome-shell-extensions.pot
po/stamp-it
staging/
zip-files/
*~
*.gmo
metadata.json
*.desktop
*.gschema.valid
*.session

View File

@@ -1,108 +0,0 @@
include:
- remote: "https://gitlab.freedesktop.org/freedesktop/ci-templates/-/raw/6f86b8bcb0cd5168c32779c4fea9a893c4a0c046/templates/ci-fairy.yml"
image: registry.gitlab.gnome.org/gnome/gnome-shell/fedora/33:2020-11-17.0
stages:
- pre_review
- review
- build
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:
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'
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
js_check:
stage: review
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
script:
- eslint -o $LINT_LOG -f junit extensions
artifacts:
paths:
- ${LINT_LOG}
reports:
junit: ${LINT_LOG}
build-bundles:
stage: build
needs: ["check_commit_log"]
script:
- ./export-zips.sh
artifacts:
name: 'Extension bundles'
expose_as: 'Get Extension bundles here'
paths:
- zip-files/

View File

@@ -1,13 +0,0 @@
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

3
.gitmodules vendored
View File

@@ -1,3 +0,0 @@
[submodule "data/gnome-shell-sass"]
path = data/gnome-shell-sass
url = https://gitlab.gnome.org/GNOME/gnome-shell-sass.git

121
NEWS
View File

@@ -1,126 +1,15 @@
40.7
====
* Bump version
40.6
====
* window-list: Update window tracking to avoid missing icons [Florian; #372]
Contributors:
Florian Müllner
40.5
====
* native-window-placement: Fix distorted layout in app grid [Sebastian; !189]
* window-list: Fix on-screen keyboard [Florian; !199]
* Misc. bug fixes [Neal; !195]
Contributors:
Neal Gompa, Sebastian Keller, Florian Müllner
40.4
====
* drive-menu: Fix indicator visibility [Florian; !176]
* Use distinct gettext domain for e.g.o uploads [Florian; #335]
Contributors:
Florian Müllner
40.3
====
* drive-menu: Improve detection of network mounts [Florian; !27]
* Misc. bug fixes [Florian; #340]
Contributors:
Florian Müllner
40.2
====
* window-list: Extend reactive area of minimap to screen edges [Adam; !171]
* Misc. bug fixes [Florian; !172]
Contributors:
Adam Goode, Florian Müllner
Translators:
Hugo Carvalho [pt], Juliano de Souza Camargo [pt]
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
========
3.38.2
======
* 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]
* window-list, workspace-indicator: Adjust to 3.38 changes [Florian; !133]
* 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]
* Misc. bug fixes [Ray; !145]
Contributors:
Sergio Costas, Florian Müllner, Jordan Petridis, Thun Pin, Ray Strode,
Jonas Ådahl
Translators:
Fabio Tomat [fur], Jordi Mas [ca]
Sergio Costas, Florian Müllner, Thun Pin, Ray Strode
3.38.1
======

View File

@@ -2,7 +2,6 @@
"parentMode": "user",
"stylesheetName": "gnome-classic.css",
"hasOverview": false,
"showWelcomeDialog": false,
"enabledExtensions": [@CLASSIC_EXTENSIONS@],
"panel": { "left": ["appMenu"],
"center": [],

View File

@@ -5,4 +5,3 @@ Exec=env GNOME_SHELL_SESSION_MODE=classic gnome-session
TryExec=gnome-session
Type=Application
DesktopNames=GNOME-Classic;GNOME;
X-GDM-SessionRegisters=true

View File

@@ -33,18 +33,6 @@ $variant: 'light';
font-weight: normal;
color: $fg_color;
text-shadow: none;
transition-duration: 0ms;
border: 0;
border-radius: 0px;
&.clock-display {
.clock {
transition-duration: 0ms;
border: 0;
border-radius: 0px;
}
}
&:hover {
color: lighten($fg_color,10%);
text-shadow: none;
@@ -81,6 +69,7 @@ $variant: 'light';
border-bottom: none;
.panel-button { color: $osd_fg_color; }
}
.popup-menu-arrow { width: 0; height: 0; } // shell's display: none;
}
#appMenu {

View File

@@ -0,0 +1,339 @@
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc. <http://fsf.org>
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users. This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is covered by
the GNU Library General Public License instead.) You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have. You must make sure that they, too, receive or can get the
source code. And you must show them these terms so they know their
rights.
We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.
Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software. If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.
Finally, any free program is threatened constantly by software
patents. We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary. To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and
modification follow.
GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License. The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language. (Hereinafter, translation is included without limitation in
the term "modification".) Each licensee is addressed as "you".
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.
1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.
You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.
2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) You must cause the modified files to carry prominent notices
stating that you changed the files and the date of any change.
b) You must cause any work that you distribute or publish, that in
whole or in part contains or is derived from the Program or any
part thereof, to be licensed as a whole at no charge to all third
parties under the terms of this License.
c) If the modified program normally reads commands interactively
when run, you must cause it, when started running for such
interactive use in the most ordinary way, to print or display an
announcement including an appropriate copyright notice and a
notice that there is no warranty (or else, saying that you provide
a warranty) and that users may redistribute the program under
these conditions, and telling the user how to view a copy of this
License. (Exception: if the Program itself is interactive but
does not normally print such an announcement, your work based on
the Program is not required to print an announcement.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.
In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:
a) Accompany it with the complete corresponding machine-readable
source code, which must be distributed under the terms of Sections
1 and 2 above on a medium customarily used for software interchange; or,
b) Accompany it with a written offer, valid for at least three
years, to give any third party, for a charge no more than your
cost of physically performing source distribution, a complete
machine-readable copy of the corresponding source code, to be
distributed under the terms of Sections 1 and 2 above on a medium
customarily used for software interchange; or,
c) Accompany it with the information you received as to the offer
to distribute corresponding source code. (This alternative is
allowed only for noncommercial distribution and only if you
received the program in object code or executable form with such
an offer, in accord with Subsection b above.)
The source code for a work means the preferred form of the work for
making modifications to it. For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable. However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.
If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.
4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.
5. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Program or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.
6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.
7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all. For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.
If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded. In such case, this License incorporates
the limitation as if written in the body of this License.
9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation. If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.
10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission. For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this. Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.
NO WARRANTY
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Also add information on how to contact you by electronic and paper mail.
If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:
Gnomovision version 69, Copyright (C) year name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, the commands you use may
be called something other than `show w' and `show c'; they could even be
mouse-clicks or menu items--whatever suits your program.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
`Gnomovision' (which makes passes at compilers) written by James Hacker.
<signature of Ty Coon>, 1 April 1989
Ty Coon, President of Vice
This General Public License does not permit incorporating your program into
proprietary programs. If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library. If this is what you want to do, use the GNU Library General
Public License instead of this License.

View File

@@ -0,0 +1,16 @@
# GNOME Shell Sass
GNOME Shell Sass is a project intended to allow the sharing of the
theme sources in sass between gnome-shell and other projects like
gnome-shell-extensions.
Any changes should be done in the [GNOME Shell subtree][shell-subtree]
and not the stand-alone [gnome-shell-sass repository][sass-repo]. They
will then be synchronized periodically before releases.
## License
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.
[shell-subtree]: https://gitlab.gnome.org/GNOME/gnome-shell/tree/master/data/theme/gnome-shell-sass
[sass-repo]: https://gitlab.gnome.org/GNOME/gnome-shell-sass
[license]: COPYING

View File

@@ -0,0 +1,43 @@
// When color definition differs for dark and light variant,
// it gets @if ed depending on $variant
$base_color: if($variant == 'light', #fff, lighten(desaturate(#241f31, 20%), 2%));
$bg_color: if($variant == 'light', #f6f5f4, darken(desaturate(#3d3846, 100%), 4%));
$fg_color: if($variant == 'light', #2e3436, #eeeeec);
$selected_fg_color: #fff;
$selected_bg_color: if($variant == 'light', #3584e4, darken(#3584e4, 10%));
$selected_borders_color: if($variant== 'light', darken($selected_bg_color, 15%), darken($selected_bg_color, 30%));
$borders_color: if($variant == 'light', darken($bg_color, 18%), darken($bg_color, 8%));
$borders_edge: if($variant == 'light', rgba(255,255,255,0.8), transparentize($fg_color, 0.93));
$link_color: if($variant == 'light', darken($selected_bg_color, 10%), lighten($selected_bg_color, 20%));
$link_visited_color: if($variant == 'light', darken($selected_bg_color, 20%), lighten($selected_bg_color, 10%));
$top_hilight: $borders_edge;
$warning_color: #f57900;
$error_color: #ff8080;
$success_color: if($variant == 'light', #33d17a, darken(#33d17a, 10%));
$destructive_color: if($variant == 'light', #e01b24, darken(#e01b24, 10%));
$osd_fg_color: #eeeeec;
$osd_text_color: white;
$osd_bg_color: transparentize(darken(desaturate(#3d3846, 100%), 12%),0.04);
$osd_insensitive_bg_color: transparentize(mix($osd_fg_color, opacify($osd_bg_color, 1), 10%), 0.5);
$osd_insensitive_fg_color: mix($osd_fg_color, opacify($osd_bg_color, 1), 50%);
$osd_borders_color: transparentize(black, 0.3);
$osd_outer_borders_color: transparentize(white, 0.84);
$shadow_color: if($variant == 'light', rgba(0,0,0,0.1), rgba(0,0,0,0.2));
//insensitive state derived colors
$insensitive_fg_color: mix($fg_color, $bg_color, 50%);
$insensitive_bg_color: mix($bg_color, $base_color, 60%);
$insensitive_borders_color: mix($borders_color, $base_color, 60%);
//colors for the backdrop state, derived from the main colors.
$backdrop_base_color: if($variant =='light', darken($base_color,1%), lighten($base_color,1%));
$backdrop_bg_color: $bg_color;
$backdrop_fg_color: mix($fg_color, $backdrop_bg_color, 80%);
$backdrop_insensitive_color: if($variant =='light', darken($backdrop_bg_color,15%), lighten($backdrop_bg_color,15%));
$backdrop_borders_color: mix($borders_color, $bg_color, 90%);
$backdrop_dark_fill: mix($backdrop_borders_color,$backdrop_bg_color, 35%);

View File

@@ -0,0 +1,177 @@
//This is the RIGHT PLACE to edit the stylesheet
//let's start by telling people not to edit the generated CSS:
$cakeisalie: "This stylesheet is generated, DO NOT EDIT";
/* #{$cakeisalie} */
/* Copyright 2009, 2015 Red Hat, Inc.
*
* Portions adapted from Mx's data/style/default.css
* Copyright 2009 Intel Corporation
*
* This program is free software; you can redistribute it and/or modify it
* under the terms and conditions of the GNU Lesser General Public License,
* version 2.1, as published by the Free Software Foundation.
*
* This program is distributed in the hope it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for
* more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA.
*/
/* Global Values */
// padding, margin and spacing
$base_padding: 6px;
$base_margin: 4px;
$base_spacing: 6px;
// border radii
$base_border_radius: 5px;
$modal_radius:$base_border_radius * 2;
// non-standard colors
$bubble_borders_color: lighten($borders_color, if($variant=='light', 0%, 5%));
// $bubble_borders_color: if($variant == 'light', rgba(255,255,255,0.1), rgba(0,0,0,0.3));
// hover
$hover_bg_color: if($variant=='light', darken($bg_color, 3%), lighten($bg_color, 5%));
$hover_fg_color: if($variant=='light', darken($fg_color, 5%), lighten($fg_color, 5%));
$hover_borders_color: lighten($borders_color,if($variant=='light', 5%, 3%));
// active
$active_bg_color: if($variant == 'light', darken($bg_color, 7%), darken($bg_color, 9%));
$active_fg_color: darken($fg_color,if($variant=='light', 5%, 3%));
$active_borders_color: darken($borders_color,if($variant=='light', 5%, 3%));
// fonts
$base_font_size: 11;
$text_shadow_color: if($variant == 'light', rgba(255,255,255,0.3), rgba(0,0,0,0.2));
// icons
$base_icon_size: 1.09em;
// $base_icon_size: 16px;
// Stage
stage {
@include fontsize($base_font_size);
color: $fg_color;
}
/* Common Stylings */
// Text
%status_text {
font-size: 2em;
font-weight: bold;
color: $osd_fg_color;
}
// osd panels
%osd_panel {
color: $osd_fg_color;
background-color: $osd_bg_color;
border: 1px solid $osd_outer_borders_color;
border-radius: $base_border_radius * 2 + 4px;
padding: $base_padding * 2;
}
// Overview panels
// for the dash and workspace switcher
%overview_panel {
color: $osd_fg_color;
background-color: transparentize($osd_bg_color, 0.2);
border: 1px solid $osd_outer_borders_color;
}
// icon tiles
%icon_tile {
border-radius: $base_border_radius + 4px;
padding: $base_padding;
border: 2px solid transparent;
transition-duration: 100ms;
text-align: center;
}
// dialogs
%bubble_panel {
color: $fg_color;
background-color: $bg_color;
border: 1px solid if($variant=='light', rgba(0,0,0, 0.6), $borders_color);
}
// button styling
%button {
border-radius: $base_border_radius;
border-style: solid;
border-width: 1px;
min-height: 22px;
padding: $base_padding * 0.5 $base_padding * 4;
@include button(normal);
&:focus { @include button(focus);}
&:hover { @include button(hover);}
&:insensitive { @include button(insensitive);}
&:active { @include button(active);}
}
// buttons in dialogs
%bubble_button {
@include button(normal, $shadow: none);
padding: $base_padding * 2;
border-style: solid;
border-width: 1px;
border-left-width: 0;
border-bottom-width: 0;
&:insensitive { @include button(insensitive, $shadow: none); }
&:hover { @include button(hover, $shadow: none); }
&:focus { @include button(focus, $shadow: none); }
&:active { @include button(active, $shadow: none); }
// radius is 2 pixel less to fit in bubble
&:first-child {
border-radius: 0 0 0 $modal_radius - 2px;
}
&:last-child {
border-right-width: 0;
border-radius: 0 0 $modal_radius - 2px 0;
}
&:first-child:last-child {
border-radius: 0 0 $modal_radius - 2px $modal_radius - 2px;
}
}
// notification styling
@mixin notification_bubble($flat: false) {
border-width: 1px;
border-style: solid;
border-radius: $base_border_radius + 2px;
margin: $base_margin;
@if $flat {
@include button(undecorated);
} @else {
@include button(normal);
}
&:focus {
@include button(focus);
}
&:hover {
@include button(hover);
}
&:active {
@include button(active);
}
}

View File

@@ -0,0 +1,231 @@
// Drawing mixins
// generic drawing of more complex things
@function draw_widget_edge($c:$borders_edge) {
// outer highlight "used" on most widgets
@return 0 1px $c;
}
// provide font size in rem, with px fallback
@mixin fontsize($size: 24, $base: 16) {
font-size: round($size) + pt;
//font-size: ($size / $base) * 1rem;
}
@mixin draw_shadows($shadow1, $shadow2:none, $shadow3:none, $shadow4:none) {
//
// Helper function to stack up to 4 box-shadows;
//
@if $shadow4!=none { box-shadow: $shadow1, $shadow2, $shadow3, $shadow4; }
@else if $shadow3!=none { box-shadow: $shadow1, $shadow2, $shadow3; }
@else if $shadow2!=none { box-shadow: $shadow1, $shadow2; }
@else { box-shadow: $shadow1; }
}
// entries
@mixin entry($t, $fc:$selected_bg_color, $edge: $borders_edge) {
//
// Entries drawing function
//
// $t: entry type
// $fc: focus color
// $edge: set to none to not draw the bottom edge or specify a color to not use the default one
//
// possible $t values:
// normal, focus, insensitive
//
@if $t==normal {
background-color: $base_color;
border-color: $borders_color;
}
@if $t==focus {
border-color: if($fc==$selected_bg_color,
$selected_borders_color,
darken($fc,35%));
box-shadow: inset 0 0 0 1px $fc;
}
@if $t==hover { }
@if $t==insensitive {
color: $insensitive_fg_color;
border-color: $insensitive_bg_color;
box-shadow: none;
}
}
// buttons
@function draw_border_color ($c) {
//
// colored buttons want the border form the base color
//
@return if($variant == 'light', darken($c, 18%), darken($c, 4%));
}
@function draw_text_shadow_color ($tc:$fg_color, $bg:$bg_color) {
//
// calculate the color of text shadows
//
// $tc is the text color
// $bg is the background color
//
$lbg: lightness($bg)/100%;
@if lightness($tc)<50% { @return rgba(255,255,255,$lbg/($lbg*1.3)); }
@else { @return rgba(0,0,0,1-$lbg*0.8); }
}
@function draw_button_hilight_color($c) {
//
// calculate the right top highlight color for buttons
//
// $c: base color;
//
@if lightness($c)>90% { @return white; }
@else if lightness($c)>80% { @return rgba(255,255,255, 0.7); }
@else if lightness($c)>50% { @return rgba(255,255,255, 0.5); }
@else if lightness($c)>40% { @return rgba(255,255,255, 0.3); }
@else { @return rgba(255,255,255, 0.1); }
}
@mixin draw_button_text_shadow ($tc:$fg_color, $bg:$bg_color) {
//
// helper function for the text emboss effect
//
// $tc is the optional text color, not the shadow color
//
// TODO: this functions needs a way to deal with special cases
//
$shadow: draw_text_shadow_color($tc, $bg);
@if lightness($tc)<50% {
text-shadow: 0 1px $shadow;
icon-shadow: 0 1px $shadow;
}
@else {
text-shadow: 0 -1px $shadow;
icon-shadow: 0 -1px $shadow;
}
}
@mixin button($t, $c:$bg_color, $tc:$fg_color, $edge: $borders_edge, $shadow: $shadow_color) {
//
// Button drawing function
//
// $t: button type,
// $c: base button color for colored* types
// $tc: optional text color for colored* types
// $edge: set to none to not draw the bottom edge or specify a color to not
// use the default one
// $shadow: set to none to not draw the drop shadow or specify a color to not
// use the default one
//
// possible $t values:
// normal, hover, active, insensitive, insensitive-active,
// backdrop, backdrop-active, backdrop-insensitive, backdrop-insensitive-active,
// osd, osd-hover, osd-active, osd-insensitive, osd-backdrop, undecorated
//
$hilight_color: draw_button_hilight_color($c);
$button_edge: if($edge == none, none, draw_widget_edge($edge));
$blank_edge: if($edge == none, none, draw_widget_edge(transparentize($edge,1)));
$button_shadow: if($shadow == none, none, 0 1px 1px 0 $shadow);
// normal button
@if $t==normal {
color: $tc;
background-color: lighten($c, 3%);
border-color: draw_border_color($c);
@include draw_shadows($button_shadow);
// box-shadow: 0 1px 1px 0 rgba(0,0,0,0.1);
text-shadow: 0 1px $text_shadow_color;
icon-shadow: 0 1px $text_shadow_color;
}
// focused button
@if $t==focus {
color: $tc;
text-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.4);
//border-color: $selected_bg_color;
}
// hover button
@else if $t==hover {
color: $tc;
background-color: lighten($c, if($variant == 'light', 8%, 5%));
border-color: if($variant == 'light', draw_border_color(lighten($c, 7%)), draw_border_color($c));
@include draw_shadows($button_shadow);
text-shadow: 0 1px $text_shadow_color;
icon-shadow: 0 1px $text_shadow_color;
}
// active button
@else if $t==active {
color: $tc;
background-color: darken($c,3%);
border-color: draw_border_color(if($variant == 'light', $c, darken($c,7%)));
text-shadow: none;
icon-shadow: none;
box-shadow: none;
}
// insensitive button
@else if $t==insensitive {
color: $insensitive_fg_color;
border-color: $insensitive_borders_color;
background-color: $insensitive_bg_color;
box-shadow: none;
text-shadow: none;
icon-shadow: none;
}
// reset
@else if $t==undecorated {
border-color: transparent;
background-color: transparent;
background-image: none;
@include draw_shadows(inset 0 1px rgba(255,255,255,0),$blank_edge);
text-shadow: none;
icon-shadow: none;
}
}
// overview icons
@mixin overview-icon($color) {
.overview-icon {
@extend %icon_tile;
color: $color;
}
&:hover,
&:selected {
.overview-icon {
background-color: transparentize($color, .9);
}
}
&:focus {
.overview-icon {
background-color: transparentize($color, .7);
// border-color: $selected_bg_color;
}
}
&:drop {
.overview-icon {
background-color: transparentize($selected_bg_color, .15);
}
}
&:active,
&:checked {
.overview-icon {
background-color: transparentize(darken($osd_bg_color, 10%), .5);
}
}
}

View File

@@ -0,0 +1,41 @@
// When color definition differs for dark and light variant,
// it gets @if ed depending on $variant
$base_color: #222;
$bg_color: #000;
$fg_color: #fff;
$selected_fg_color: #ffffff;
$selected_bg_color: darken(#4a90d9,20%);
$selected_borders_color: darken($selected_bg_color, 20%);
$borders_color: darken($bg_color,12%);
$borders_edge: transparentize($fg_color, 0.9);
$link_color: lighten($selected_bg_color,20%);
$link_visited_color: lighten($selected_bg_color,10%);
$top_hilight: $borders_edge;
$warning_color: #f57900;
$error_color: #cc0000;
$success_color: darken(#73d216,10%);
$destructive_color: darken(#ef2929,10%);
$osd_fg_color: #eeeeec;
$osd_bg_color: #2e3436;
$osd_borders_color: rgba(0,0,0, 0.7);
$osd_outer_borders_color: rgba(255,255,255, 0.1);
$shadow_color: rgba(0,0,0, 0.1);
//insensitive state derived colors
$insensitive_fg_color: mix($fg_color, $bg_color, 50%);
$insensitive_bg_color: mix($bg_color, $base_color, 60%);
$insensitive_borders_color: $borders_color;
//colors for the backdrop state, derived from the main colors.
$backdrop_base_color: lighten($base_color,1%);
$backdrop_bg_color: $bg_color;
$backdrop_fg_color: mix($fg_color, $backdrop_bg_color, 80%);
$backdrop_insensitive_color: lighten($backdrop_bg_color,15%);
$backdrop_borders_color: mix($borders_color, $bg_color, 90%);
$backdrop_dark_fill: mix($backdrop_borders_color,$backdrop_bg_color, 35%);

View File

@@ -0,0 +1,51 @@
//
// Shell widgets stylesheets are placed in separate .scss files
// in 'widgets' and imported into the main stylesheet in this file.
// To create or update a widget for the shell modify the list below.
//
/* WIDGETS */
// Primary widgets
@import 'widgets/base';
@import 'widgets/entries';
@import 'widgets/buttons';
@import 'widgets/check-box';
@import 'widgets/switches';
@import 'widgets/slider';
@import 'widgets/scrollbars';
// Popovers
@import 'widgets/popovers';
@import 'widgets/calendar';
@import 'widgets/message-list';
@import 'widgets/ibus-popup';
// Notifications
@import 'widgets/notifications';
@import 'widgets/hotplug';
// Dialogs
@import 'widgets/dialogs';
@import 'widgets/network-dialog';
// OSDs
@import 'widgets/osd';
@import 'widgets/switcher-popup';
@import 'widgets/workspace-switcher';
// Panel
@import 'widgets/panel';
@import 'widgets/corner-ripple';
// Overview
@import 'widgets/overview';
@import 'widgets/window-picker';
@import 'widgets/search-entry';
@import 'widgets/search-results';
@import 'widgets/app-grid';
@import 'widgets/dash';
@import 'widgets/workspace-thumbnails';
// A11y / misc
@import 'widgets/a11y';
@import 'widgets/misc';
@import 'widgets/tiled-previews';
@import 'widgets/keyboard';
@import 'widgets/looking-glass';
// Lock / login screens
@import 'widgets/login-dialog';
@import 'widgets/screen-shield';

View File

@@ -0,0 +1,37 @@
<Project xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
xmlns:foaf="http://xmlns.com/foaf/0.1/"
xmlns:gnome="http://api.gnome.org/doap-extensions#"
xmlns="http://usefulinc.com/ns/doap#">
<name xml:lang="en">GNOME Shell Sass</name>
<shortdesc xml:lang="en">Sass sources of GNOME Shell</shortdesc>
<description>GNOME Shell Sass is a project intended to allow the sharing of the
sass theme sources between gnome-shell and other projects like gnome-shell-extensions.</description>
<category rdf:resource="http://api.gnome.org/doap-extensions#core" />
<programming-language>sass</programming-language>
<programming-language>css</programming-language>
<maintainer>
<foaf:Person>
<foaf:name>Carlos Soriano</foaf:name>
<foaf:mbox rdf:resource="mailto:csoriano@gnome.org" />
<gnome:userid>csoriano</gnome:userid>
</foaf:Person>
</maintainer>
<maintainer>
<foaf:Person>
<foaf:name>Florian Müllner</foaf:name>
<foaf:mbox rdf:resource="mailto:fmuellner@gnome.org" />
<gnome:userid>fmuellner</gnome:userid>
</foaf:Person>
</maintainer>
<maintainer>
<foaf:Person>
<foaf:name>Jakub Steiner</foaf:name>
<foaf:mbox rdf:resource="mailto:jimmac@gmail.com" />
<gnome:userid>jimmac</gnome:userid>
</foaf:Person>
</maintainer>
</Project>

View File

@@ -0,0 +1,24 @@
// Pointer location
.ripple-pointer-location {
width: $ripple_size;
height: $ripple_size;
border-radius: $ripple_size * 0.5; // radius equals the size of the box to give us the curve
background-color: lighten(transparentize($selected_bg_color, 0.7), 30%);
box-shadow: 0 0 2px 2px lighten($selected_bg_color, 20%);
}
// Pointer accessibility notifications
.pie-timer {
width: 60px;
height: 60px;
-pie-border-width: 3px;
-pie-border-color: $selected_bg_color;
-pie-background-color: lighten(transparentize($selected_bg_color, 0.7), 40%);
}
// Screen zoom/Magnifier
.magnifier-zoom-region {
border: 2px solid $selected_bg_color;
&.full-screen { border-width: 0; }
}

View File

@@ -0,0 +1,152 @@
/* App Grid */
$app_icon_size: 96px;
// app icons
.icon-grid {
row-spacing: $base_spacing * 6;
column-spacing: $base_spacing * 6;
max-row-spacing: $base_spacing * 12;
max-column-spacing: $base_spacing * 12;
page-padding-top: $base_padding * 6;
page-padding-bottom: $base_padding * 6;
page-padding-left: $base_padding * 6;
page-padding-right: $base_padding * 6;
}
/* App Icons */
$app_grid_fg_color: #fff;
// Icon tiles in the app grid
.app-well-app,
%app-well-app {
@include overview-icon($app_grid_fg_color);
.overview-icon.overview-icon-with-label {
padding: 10px 8px 5px 8px;
> StBoxLayout {
spacing: $base_spacing;
}
}
}
/* App Folders */
.app-well-app.app-folder {
background-color: transparentize($osd_bg_color, 0.8);
border-radius: $base_border_radius + 4px; // same as %icon_tile
}
// expanded folder
.app-folder-dialog {
border-radius: $modal_radius * 1.5;
border: 1px solid $osd_outer_borders_color;
background-color: transparentize(darken($osd_bg_color,10%), 0.05);
padding: 12px;
& .folder-name-container {
padding: 24px 36px 0;
spacing: 12px;
& .folder-name-label,
& .folder-name-entry {
font-size: 18pt;
font-weight: 800;
}
& .folder-name-entry { width: 300px }
/* FIXME: this is to keep the label in sync with the entry */
& .folder-name-label { padding: 5px 7px; color: $osd_fg_color; }
& .edit-folder-button {
@extend %button;
padding: 0;
width: 36px;
height: 36px;
border-radius: 18px;
& > StIcon { icon-size: 16px }
}
}
& .icon-grid {
row-spacing: $base_spacing * 2;
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;
.page-indicator {
padding: 15px 12px;
}
}
}
.app-folder-dialog-container {
padding: 12px;
width: 620px;
height: 620px;
}
.app-folder-icon {
padding: $base_padding;
spacing-rows: $base_spacing;
spacing-columns: $base_spacing;
}
// Running app indicator (also shown in dash)
.app-well-app-running-dot {
height: 5px;
width: 5px;
border-radius:5px;
background-color: $osd_fg_color;
margin-bottom: 1px;
}
// Rename popup for app folders
.rename-folder-popup {
.rename-folder-popup-item {
spacing: $base_spacing;
&:ltr, &:rtl { padding: 0 $base_padding * 2; }
}
}
// right-click app menu
.app-menu,
.app-well-menu {
max-width: 27.25em;
}
// App Grid pagination indicators
.page-indicator {
padding: 15px 20px;
.page-indicator-icon {
width: 10px;
height: 10px;
border-radius: 10px; // the same as height&width
background-color: white;
}
}
// Some hacks I don't even know
.all-apps {
// horizontal padding to make sure scrollbars or dash don't overlap content
padding: 0px 88px 10px 88px;
}
// shutdown and other actions in the grid
.system-action-icon {
background-color: rgba(0,0,0,0.8);
color: #fff;
border-radius: 99px;
icon-size: $app_icon_size * 0.5;
}

View File

@@ -0,0 +1,18 @@
// Links
.shell-link {
color: $link_color;
&:hover {
color: lighten($link_color, 10%);
}
}
// Outline for low res icons
.lowres-icon {
icon-shadow: 0 1px 2px rgba(black, 0.3);
}
// Dropshadow for large icons
.icon-dropshadow {
icon-shadow: 0 1px 2px rgba(black, 0.4);
}

View File

@@ -0,0 +1,5 @@
/* Buttons */
.button {
@extend %button; // that's it
}

View File

@@ -0,0 +1,291 @@
/* Date/Time Menu */
.clock-display-box {
spacing: $base_spacing / 2;
.clock {
padding-left: $base_padding;
padding-right: $base_padding;
}
}
// overall menu
#calendarArea {
padding:0;
}
// Calendar menu side column
.datemenu-calendar-column {
spacing: $base_spacing;
border: 0 solid $bubble_borders_color;
padding: 0 $base_padding * 2;
&:ltr {margin-right: $base_margin * 2; border-left-width: 1px; }
&:rtl {margin-left: $base_margin * 2; border-right-width: 1px; }
.datemenu-displays-section {
}
.datemenu-displays-box {
spacing: $base_spacing;
}
}
.events-section-title {
@include notification_bubble($flat: true);
color: desaturate(darken($fg_color,40%), 10%);
font-weight: bold;
padding: .4em;
}
/* today button (the date) */
.datemenu-today-button {
@include notification_bubble($flat: true);
padding: $base_padding * 1.5;
// weekday label
.day-label {
@include fontsize($base_font_size+1);
font-weight: bold;
}
// date label
.date-label {
@include fontsize($base_font_size+7);
font-weight: 1000;
}
}
/* Calendar */
.calendar {
@include notification_bubble;
padding: $base_padding;
// month
.calendar-month-label {
color: lighten($fg_color,5%);
font-weight: bold;
padding: 8px 0;
&:focus {}
}
// prev/next month icons
.calendar-change-month-back StIcon,
.calendar-change-month-forward StIcon {
icon-size: $base_icon_size;
}
.pager-button {
background-color: transparent;
height: 32px;
width: 32px;
border-radius: $base_border_radius;
&:hover, &:focus { background-color: lighten($hover_bg_color, 5%); }
&:active { background-color: $active_bg_color; }
}
$calendar_day_size: 32px;
.calendar-day-base {
@include fontsize($base_font_size - 3);
text-align: center;
width: $calendar_day_size;
height: $calendar_day_size;
padding: 0;
margin: 2px;
border-radius: $calendar_day_size * 0.5 + 2px;
border: 1px solid transparent; //avoid jumparound due to today
font-feature-settings: "tnum";
&:hover, &:focus { background-color: $hover_bg_color; }
&:active,&:selected {
color: lighten($fg_color,10%);
background-color: darken($bg_color,5%);
}
// day of week heading
&.calendar-day-heading {
color: lighten($fg_color,10%);
margin-top: 1em;
@include fontsize($base_font_size - 4);
}
}
.calendar-day { //border collapse hack - see calendar.js
border-width: 0;
}
.calendar-day-top {
border-top-width: 1px;
}
.calendar-day-left {
border-left-width: 1px;
}
.calendar-work-day {}
.calendar-nonwork-day {
color: $insensitive_fg_color;
}
// Today
.calendar-today {
font-weight: bold;
border: 1px solid transparent;
background-color: $selected_bg_color;
color: $selected_fg_color;
&:hover,&:focus {
background-color:lighten($selected_bg_color, 3%);
color: $selected_fg_color;
}
&:active,&:selected {
background-color: $selected_bg_color;
color: $selected_fg_color;
&:hover,&:focus {
background-color:lighten($selected_bg_color, 3%);
color: $selected_fg_color;
}
}
}
.calendar-day-with-events {
background-image: url("resource:///org/gnome/shell/theme/calendar-today.svg");
&.calendar-work-day {
color: lighten($fg_color,10%);
font-weight: bold;
}
}
.calendar-other-month-day {
color: transparentize($fg_color ,0.5);
}
.calendar-week-number {
@include fontsize($base_font_size - 4);
font-weight: bold;
height: 1.8em;
width: 2.3em;
border-radius: 2px;
margin: 6px;
background-color: darken($bg_color, 2%);
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-button {
@include notification_bubble;
padding: $base_padding * 2;
.world-clocks-grid {
spacing-rows: $base_spacing;
spacing-columns: $base_spacing * 2;
}
// title
.world-clocks-header {
color: desaturate(darken($fg_color,40%), 10%);
font-weight: bold;
}
// city label
.world-clocks-city {
color: $fg_color;
@include fontsize($base_font_size);
font-weight: normal;
}
// timezone time
.world-clocks-time {
font-weight: bold;
color: $fg_color;
font-feature-settings: "tnum";
@include fontsize($base_font_size);
&:ltr { text-align: right; }
&:rtl { text-align: left; }
}
// timezone offset label
.world-clocks-timezone {
color: darken($fg_color,20%);
font-feature-settings: "tnum";
@include fontsize($base_font_size - 1);
}
}
/* Weather */
.weather-button {
@include notification_bubble;
padding: $base_padding * 2;
.weather-box {
spacing: $base_spacing + $base_margin;
}
.weather-header-box {
spacing: $base_spacing;
}
.weather-header {
color: desaturate(darken($fg_color,40%), 10%);
font-weight: bold;
&.location {
font-weight: normal;
@include fontsize($base_font_size - 1);
}
}
.weather-grid {
spacing-rows: $base_spacing;
spacing-columns: $base_spacing * 2;
}
.weather-forecast-time {
color: darken($fg_color,30%);
font-feature-settings: "tnum";
@include fontsize($base_font_size - 2);
font-weight: normal;
padding-top: 0.2em;
padding-bottom: 0.4em;
}
.weather-forecast-icon {
icon-size: $base_icon_size * 2;
}
.weather-forecast-temp {
font-weight: bold;
}
}

View File

@@ -0,0 +1,18 @@
/* Check Boxes */
// these are equal to the size of the SVG assets
$check_height: 22px;
$check_width: 24px;
.check-box {
StBoxLayout { spacing: .8em; }
StBin {
width: $check_width;
height: $check_height;
background-image: url("resource:///org/gnome/shell/theme/checkbox-off.svg");
}
&:focus StBin { background-image: url("resource:///org/gnome/shell/theme/checkbox-off-focused.svg"); }
&:checked StBin { background-image: url("resource:///org/gnome/shell/theme/checkbox.svg"); }
&:focus:checked StBin { background-image: url("resource:///org/gnome/shell/theme/checkbox-focused.svg"); }
}

View File

@@ -0,0 +1,15 @@
/* Activities Ripple */
$ripple_size: 50px;
.ripple-box {
background-color: lighten(transparentize($selected_bg_color, 0.7), 40%);
box-shadow: 0 0 2px 2px lighten($selected_bg_color, 20%);
// plus + 2px for the border (box-shadow)
width: $ripple_size + 2px;
height: $ripple_size + 2px;
border-radius: 0 0 $ripple_size + 2px 0; // radius equals the size of the box to give us the curve
// just a simple change to the border radius position
&:rtl { border-radius: 0 0 0 $ripple_size + 2px; }
}

View File

@@ -0,0 +1,61 @@
/* Dash */
$dash_placeholder_size: 32px;
$dash_spacing: $base_padding + 4px;
$dash_border_radius: $modal_radius * 1.5;
#dash {
@extend %overview_panel;
@include fontsize($base_font_size - 2);
padding: ($dash_spacing / 2) 0;
border-radius: 0 $dash_border_radius $dash_border_radius 0;
border-left-width: 0;
&:rtl {
border-radius: $dash_border_radius 0 0 $dash_border_radius;
border-right-width: 0;
}
.placeholder {
// background-image: url("resource:///org/gnome/shell/theme/dash-placeholder.svg");
background-image:none;
background-size: contain;
height: $dash_placeholder_size;
}
.empty-dash-drop-target {
width: $dash_placeholder_size;
height: $dash_placeholder_size;
}
}
// Dash Items
.dash-item-container > StWidget {
padding: ($dash_spacing / 2) $dash_spacing;
}
// OSD Tooltip
.dash-label {
background-color: transparentize($osd_bg_color,0.05);
border-radius: $base_border_radius + 2px;
border:none;
box-shadow:0 0 0 1px $osd_outer_borders_color;
color: $osd_fg_color;
padding: $base_padding $base_padding + 2px;
text-align: center;
-x-offset: $base_margin * 2; // distance from the dash edge
}
// Show apps button
.show-apps {
@include overview-icon($osd_fg_color);
&:focus,
&:checked {
.overview-icon {
background-color: darken($osd_bg_color,10%);
color: $fg_color;
}
}
}

View File

@@ -0,0 +1,164 @@
/* Modal Dialogs */
.headline {
@include fontsize($base_font_size + 1);
}
.modal-dialog {
border-radius: $modal_radius;
@extend %bubble_panel;
.modal-dialog-content-box {
margin: 32px 40px;
spacing: 32px;
max-width: 28em;
}
.modal-dialog-linked-button {
@extend %bubble_button;
}
}
/* End Session Dialog */
.end-session-dialog {
width: 30em;
.end-session-dialog-battery-warning,
.dialog-list-title {
color: $warning_color;
}
}
/* Message Dialog */
.message-dialog-content {
spacing: 18px;
.message-dialog-title {
text-align: center;
font-size: 18pt;
font-weight: 800;
&.lightweight {
font-size: 13pt;
font-weight: 800;
}
}
.message-dialog-description { text-align: center; }
}
/* Dialog List */
.dialog-list {
spacing: 18px;
.dialog-list-title {
text-align: center;
font-weight: bold;
}
.dialog-list-scrollview { max-height: 200px; }
.dialog-list-box {
spacing: 1em;
.dialog-list-item {
spacing: 1em;
.dialog-list-item-title { font-weight: bold; }
.dialog-list-item-description {
color: darken($fg_color,5%);
@include fontsize($base_font_size - 1);
}
}
}
}
/* Run Dialog */
.run-dialog {
.modal-dialog-content-box {
margin-top: 24px;
margin-bottom: 14px;
}
.run-dialog-entry { width: 20em; }
.run-dialog-description {
@include fontsize($base_font_size - 1);
text-align: center;
color: darken($fg_color, 20%);
}
}
/* Password or Authentication Dialog */
.prompt-dialog {
width: 28em;
.modal-dialog-content-box {
margin-bottom: 24px;
}
}
.prompt-dialog-password-grid {
spacing-rows: 8px;
spacing-columns: 4px;
.prompt-dialog-password-entry {
width: auto;
// 4px (spacing) + 16px (spinner-width)
&:ltr { margin-left: 20px; }
&:rtl { margin-right: 20px; }
}
}
.prompt-dialog-password-layout {
spacing: 8px;
}
.prompt-dialog-password-entry {
width: 20em;
}
.prompt-dialog-error-label,
.prompt-dialog-info-label,
.prompt-dialog-null-label {
text-align: center;
@include fontsize($base_font_size - 1);
}
.prompt-dialog-error-label {
color: $warning_color;
}
/* Polkit Dialog */
.polkit-dialog-user-layout {
text-align: center;
spacing: 8px;
margin-bottom: 6px;
.polkit-dialog-user-root-label { color: $warning_color; }
}
/* Audio selection dialog */
.audio-device-selection-dialog {
.modal-dialog-content-box { margin-bottom: 28px; }
.audio-selection-box { spacing: 20px; }
}
.audio-selection-device {
border: 1px solid $bubble_borders_color;
border-radius: 12px;
&:hover,&:focus { background-color: $hover_bg_color; }
&:active {
background-color: $selected_bg_color;
color: $selected_fg_color;
}
}
.audio-selection-device-box {
padding: 20px;
spacing: 20px;
}
.audio-selection-device-icon {
icon-size: $base_icon_size * 4;
}

View File

@@ -0,0 +1,27 @@
/* Entries */
StEntry {
border-radius: $base_border_radius;
padding: 8px;
border-width: 1px;
color: $fg_color;
@include entry(normal);
//&:hover { @include entry(hover);}
&:focus { @include entry(focus);}
&:insensitive { @include entry(insensitive);}
selection-background-color: $selected_bg_color;
selected-color: $selected_fg_color;
StIcon.capslock-warning {
icon-size: 16px;
warning-color: $warning_color;
padding: 0 4px;
}
StIcon.peek-password {
icon-size: $base_icon_size;
padding: 0 4px;
}
StLabel.hint-text {
margin-left: 2px;
color: transparentize($fg_color, 0.3);
}
}

View File

@@ -0,0 +1,10 @@
// hotplug
.hotplug-notification-item {
@extend %bubble_button;
}
.hotplug-notification-item-icon {
icon-size: 24px;
padding: 0 4px;
}

View File

@@ -0,0 +1,35 @@
// IBus Candidate Popup
.candidate-popup-boxpointer {
@extend .popup-menu-boxpointer;
}
.candidate-popup-content {
padding: 0.5em;
spacing: 0.3em;
}
.candidate-index {
padding: 0 0.5em 0 0;
color: darken($fg_color,10%);
}
.candidate-box {
padding: 0.3em 0.5em 0.3em 0.5em;
border-radius: $base_border_radius;
&:selected,&:hover { background-color: $selected_bg_color; color: $selected_fg_color; }
}
.candidate-page-button-box {
height: 2em;
.vertical & { padding-top: 0.5em; }
.horizontal & { padding-left: 0.5em; }
}
.candidate-page-button {
padding: 4px;
}
.candidate-page-button-previous { border-radius: $base_border_radius 0px 0px $base_border_radius; border-right-width: 0; }
.candidate-page-button-next { border-radius: 0px $base_border_radius $base_border_radius 0px; }
.candidate-page-button-icon { icon-size: 1em; }

View File

@@ -0,0 +1,115 @@
/* On-screen Keyboard */
$key_size: 1.2em;
$key_border_radius: $base_border_radius + 3px;
$key_bg_color: $bg_color;
// $default_key_bg_color: darken($key_bg_color, 4%);
$default_key_bg_color: if($variant=='light', darken($osd_bg_color, 11%), lighten($osd_bg_color, 2%));
// draw keys using button function
#keyboard {
background-color: transparentize(if($variant=='light', darken($bg_color, 5%), darken($bg_color, 8%)), 0.1);
box-shadow: inset 0 1px 0 0 $osd_outer_borders_color;
.page-indicator {
padding: $base_padding;
.page-indicator-icon {
width: 8px;
height: 8px;
}
}
}
// the container for individual keys
.key-container {
padding: $base_margin;
spacing: $base_margin;
}
// the keys
.keyboard-key {
@include button(normal, $c:$key_bg_color);
&:focus { @include button(focus);}
&:hover, &:checked { @include button(hover, $c: $key_bg_color);}
&:active { @include button(active, $c: $key_bg_color); }
@include fontsize($base_font_size + 5);
min-height: $key_size;
min-width: $key_size;
border-width: 1px;
border-style: solid;
border-radius: $key_border_radius;
&:grayed { //FIXMEy
background-color: darken($bg_color, 3%);
color: $osd_fg_color;
border-color: $osd_borders_color;
}
// non-character keys
&.default-key {
@include button(normal, $c:$default_key_bg_color);
&:hover, &:checked {@include button(hover, $c: $default_key_bg_color);}
&:active { @include button(active, $c: $default_key_bg_color);}
}
// enter key is suggested-action
&.enter-key {
@include button(normal, $c:$selected_bg_color, $tc:$selected_fg_color);
&:hover, &:checked { @include button(hover, $c: lighten($selected_bg_color, 3%));}
&:active {@include button(active, $c: darken($selected_bg_color, 2%));}
}
&.shift-key-uppercase { color: $selected_bg_color }
StIcon { icon-size: 1.125em; }
}
// long press on a key popup
.keyboard-subkeys {
color: $osd_fg_color;
-arrow-border-radius: $modal_radius;
-arrow-background-color: $osd_bg_color;
-arrow-border-width: 1px;
-arrow-border-color: lighten($osd_bg_color, 9%);
-arrow-base: 20px;
-arrow-rise: 10px;
-boxpointer-gap: $base_spacing;
.keyboard-key {
@include button(normal, $c:$key_bg_color);
&:focus { @include button(focus);}
&:hover, &:checked { @include button(hover, $c: $key_bg_color);}
&:active { @include button(active, $c: $key_bg_color); }
border-radius:$base_border_radius;
}
}
// emoji
.emoji-page {
.keyboard-key {
background-color: transparent;
border: none;
color: initial;
}
}
.emoji-panel {
.keyboard-key:latched {
border-color: lighten($selected_bg_color, 5%);
background-color: $selected_bg_color;
}
}
// suggestions
.word-suggestions {
@include fontsize($base_font_size + 3);
spacing: 12px;
min-height: 20pt;
}

View File

@@ -0,0 +1,169 @@
/* Login Dialog */
.login-dialog-banner-view {
padding-top: 24px;
max-width: 23em;
}
.login-dialog {
//reset
border: none;
background-color: transparent;
$_gdm_bg: lighten(#2e3436, 19%);
StEntry {
@if $variant=='dark' {
$_gdm_entry_bg: transparentize(lighten(desaturate(#241f31, 20%), 2%), 0.5);
background-color: $_gdm_entry_bg;
color: $osd_fg_color;
}
}
.modal-dialog-button-box { spacing: 3px; }
.modal-dialog-button {
padding: 4px 18px;
box-shadow: 0 1px 3px rgba(0,0,0,0.2);
background-color: $_gdm_bg;
border-color: $_gdm_bg;
color: $fg_color;
$_hover_c: lighten($_gdm_bg, 5%);
&:hover, &:focus {
background-color: $_hover_c;
border-color: $_hover_c;
}
&:active {
$_active_c: darken($_gdm_bg, 5%);
box-shadow: none;
background-color: $_active_c;
border-color: $_active_c;
}
&:insensitive {
@include button(insensitive);
border-color: darken($_gdm_bg, 5%);
background-color: darken($_gdm_bg, 5%);
color: transparentize($fg_color, 0.3);
}
&:default {
@include button(normal, $c:$selected_bg_color, $tc:$selected_fg_color);
border-color: $selected_bg_color;
&:hover, &:focus {
@include button(hover,$c:$selected_bg_color, $tc:$selected_fg_color);
$_def_hover_c: lighten($selected_bg_color, 5%);
background-color: $_def_hover_c;
border-color: $_def_hover_c;
}
&:active {
@include button(active,$c:$selected_bg_color, $tc:$selected_fg_color);
$_def_active_c: darken($selected_bg_color, 5%);
background-color: $_def_active_c;
border-color: $_def_active_c;
}
&:insensitive {
@include button(insensitive);
border-color: darken($selected_bg_color, 10%);
background-color: darken($selected_bg_color, 10%);
color: transparentize($selected_fg_color, 0.3);
}
}
}
.cancel-button,
.switch-user-button,
.login-dialog-session-list-button {
padding: 0;
border-radius: 99px;
width: $base_icon_size * 2;
height: $base_icon_size * 2;
border-color: transparentize($bg_color,0.7);
background-color: transparentize($bg_color,0.7);
StIcon { icon-size: $base_icon_size; }
}
.caps-lock-warning-label,
.login-dialog-message-warning {
color: $osd_fg_color;
}
}
.login-dialog-logo-bin { padding: 24px 0px; }
.login-dialog-banner { color: darken($osd_fg_color,10%); }
.login-dialog-button-box { width: 23em; spacing: 5px; }
.login-dialog-message { text-align: center; }
.login-dialog-message-hint { padding-top: 0; padding-bottom: 20px; }
.login-dialog-user-selection-box { padding: 100px 0px; }
.login-dialog-not-listed-label {
padding-left: 2px;
.login-dialog-not-listed-button:focus &,
.login-dialog-not-listed-button:hover & {
color: $osd_fg_color;
}
}
.login-dialog-not-listed-label {
@include fontsize($base_font_size - 1);
font-weight: bold;
color: darken($osd_fg_color,30%);
padding-top: 1em;
}
.login-dialog-user-list-view { -st-vfade-offset: 1em; }
.login-dialog-user-list {
spacing: 12px;
width: 23em;
&:expanded .login-dialog-user-list-item:selected { background-color: $selected_bg_color; color: $selected_fg_color; }
&:expanded .login-dialog-user-list-item:logged-in { border-right: 2px solid $selected_bg_color; }
}
.login-dialog-user-list-item {
border-radius: $base_border_radius + 4px;
padding: 6px;
color: darken($osd_fg_color,30%);
&:ltr .user-widget { padding-right: 1em; }
&:rtl .user-widget { padding-left: 1em; }
.login-dialog-timed-login-indicator {
height: 2px;
margin-top: 6px;
background-color: $osd_fg_color;
}
&:focus .login-dialog-timed-login-indicator { background-color: $selected_fg_color; }
}
.user-widget-label {
color: $osd_fg_color;
}
.user-widget.horizontal .user-widget-label {
@include fontsize($base_font_size + 2);
font-weight: bold;
padding-left: 15px;
&:ltr { padding-left: 14px; text-align: left; }
&:rtl { padding-right: 14px; text-align: right; }
}
.user-widget.vertical .user-widget-label {
@include fontsize($base_font_size + 5);
text-align: center;
font-weight: normal;
padding-top: 16px;
}
.login-dialog-prompt-layout {
padding-top: 24px;
padding-bottom: 12px;
spacing: $base_spacing * 2;
width: 23em;
}
.login-dialog-prompt-entry {
height: 1.5em;
}
.login-dialog-prompt-label {
color: darken($osd_fg_color, 20%);
@include fontsize($base_font_size + 1);
padding-top: 1em;
}

View File

@@ -0,0 +1,109 @@
/* Looking Glass */
$text_fg_color: #ccc;
// Dialog
#LookingGlassDialog {
background-color: $osd_bg_color;
spacing: $base_spacing;
padding: 4px;
border: 1px solid transparentize($osd_fg_color, 0.8);
border-radius: $base_border_radius;
color: $osd_fg_color;
& > #Toolbar {
border: none;
border-radius: $base_border_radius;
background-color: $osd_bg_color;
}
.labels { spacing: $base_spacing; }
.notebook-tab {
-natural-hpadding: $base_padding * 2;
-minimum-hpadding: 6px;
font-weight: bold;
color: darken($osd_fg_color, 15%);
transition-duration: 100ms;
padding-left: .3em;
padding-right: .3em;
border-bottom-width: 2px;
&:hover {
color: $osd_fg_color;
}
&:selected {
border-bottom-width: 2px;
box-shadow: inset 0 -2px 0 0 lighten($selected_bg_color, 5%);
color: $osd_fg_color;
}
}
StBoxLayout#EvalBox { padding: 4px; spacing: $base_spacing; }
StBoxLayout#ResultsArea { spacing: $base_spacing; }
}
.lg-dialog {
StEntry {
background-color: transparentize(lighten($osd_bg_color, 5%), 0.4);
color: $osd_fg_color;
border-color: transparentize($osd_fg_color, 0.8);
min-height: 22px;
selection-background-color: $selected_bg_color;
selected-color: $selected_fg_color;
}
.shell-link {
color: $link_color;
&:hover { color: lighten($link_color, 10%); }
&:active { color: darken($link_color, 10%); }
}
.actor-link {
color: $text_fg_color;
&:hover { color: lighten($text_fg_color, 20%); }
&:active { color: darken($text_fg_color, 20%); }
}
}
.lg-completions-text {
font-size: .9em;
font-style: italic;
}
.lg-obj-inspector-title {
spacing: $base_spacing;
}
.lg-obj-inspector-button {
border: 1px solid $osd_borders_color;
padding: 4px;
border-radius: $base_border_radius;
&:hover { border: 1px solid #ffffff; }
}
// Extensions
#lookingGlassExtensions { padding: 4px; }
.lg-extensions-list {
padding: 4px;
spacing: 6px;
}
.lg-extension {
border: 1px solid lighten($osd_borders_color, 5%);
background-color: lighten($osd_bg_color, 5%);
border-radius: $base_border_radius;
padding: 4px;
}
.lg-extension-name {
font-weight: bold;
}
.lg-extension-meta {
spacing: 6px;
}
// Inspector
#LookingGlassPropertyInspector {
background: $osd_bg_color;
border: 1px solid $osd_borders_color;
border-radius: $base_border_radius;
padding: 6px;
}

View File

@@ -0,0 +1,136 @@
/* Message List */
// a.k.a. notifications in the menu
// main list
.message-list {
width: 31.5em;
padding: 0 $base_padding * 2;
.message-list-placeholder { spacing: 12px; }
}
.message-list-sections {
spacing: $base_spacing;
margin: 0 $base_margin * 4; // to account for scrollbar
}
.message-list-section,
.message-list-section-list {
spacing: $base_spacing;
}
// do-not-disturb + clear button
.message-list-controls {
margin: ($base_margin * 2) ($base_margin * 4) 0;
// NOTE: remove the padding if notification_bubble could remove margin for drop shadow
padding: $base_margin;
spacing: $base_spacing * 2;
}
// message bubbles
.message {
@include notification_bubble;
// icon container
.message-icon-bin {
padding: ($base_padding * 3) 0 ($base_padding * 3) ($base_padding * 2);
&:rtl {
padding: ($base_padding * 3) ($base_padding * 2) ($base_padding * 3) 0;
}
// icon size and color
> StIcon {
icon-size: $base_icon_size*2; // 32px
-st-icon-style: symbolic;
}
// fallback
> .fallback-app-icon {
width: $base_icon_size;
height: $base_icon_size;
}
}
// content
.message-content {
padding: $base_padding + $base_margin * 2;
spacing: 4px;
}
// title
.message-title {
font-weight: bold;
}
// secondary container in title box
.message-secondary-bin {
padding: 0 $base_margin * 2;
// notification time stamp
> .event-time {
color: transparentize($fg_color, 0.5);
@include fontsize($base_font_size - 2);
/* HACK: the label should be baseline-aligned with a 1em label, fake this with some bottom padding */
padding-bottom: 0.13em;
&:ltr { text-align: right };
&:rtl { text-align: left };
}
}
// close button
.message-close-button {
color: lighten($fg_color, 15%);
&:hover { color: if($variant=='light', lighten($fg_color, 30%), darken($fg_color, 10%)); }
&:active { color: if($variant=='light', lighten($fg_color, 40%), darken($fg_color, 20%)); }
}
// body
.message-body {
color: darken($fg_color, 10%);
}
}
// URLs in messages
.url-highlighter {
link-color: $link_color;
}
/* Media Controls */
.message-media-control {
padding: $base_padding * 2 $base_padding * 4;
color: darken($fg_color, 15%);
// uses $hover_bg_color since the media controls are in a notification_bubble
&:hover {
background-color: lighten($hover_bg_color, 5%);
color: $fg_color;
}
&:active {
background-color: darken($hover_bg_color, 2%);
color: $fg_color;
}
&:insensitive { color: darken($fg_color,40%); }
// fix border-radius for last button
&:last-child:ltr { border-radius: 0 $base_border_radius+2 $base_border_radius+2 0; }
&:last-child:rtl { border-radius: $base_border_radius+2 0 0 $base_border_radius+2; }
}
// album-art
.media-message-cover-icon {
icon-size: $base_icon_size*2 !important; // 48px
border-radius: $base_border_radius;
// when there is no artwork
&.fallback {
color: darken($fg_color, 17%);
background-color: $bg_color;
border: 1px solid transparent;
border-radius: $base_border_radius;
icon-size: $base_icon_size * 2 !important;
}
}

View File

@@ -0,0 +1,56 @@
// Rubberband for select-area screenshots
.select-area-rubberband {
background-color: transparentize($selected_bg_color,0.7);
border: 1px solid $selected_bg_color;
}
// User icon
.user-icon {
background-size: contain;
color: $osd_fg_color;
border-radius: 99px;
border: 2px $osd_fg_color;
&:hover {
color: lighten($osd_fg_color,30%);
}
& StIcon {
background-color: transparentize($osd_fg_color,0.95);
border-radius: 99px;
}
}
.user-widget.vertical .user-icon {
icon-size: $base_icon_size * 6; // 128px
& StIcon {
padding: $base_padding * 3 + 2px; // 20px
padding-top: $base_padding * 3; // 18 px
padding-bottom: $base_padding * 3 + 4px; // 22px
width: $base_icon_size * 5.5; height: $base_icon_size * 5.5; // 88px;
}
}
.user-widget.horizontal .user-icon {
icon-size: $base_icon_size * 4; // 64px
& StIcon {
padding: $base_padding * 2 ; // 12px
width: $base_icon_size * 2.5; height: $base_icon_size * 2.5; // 40px;
}
}
.lightbox { background-color: black; }
.flashspot { background-color: white; }
// Hidden
.hidden { color: rgba(0,0,0,0);}
// Caps-lock warning
.caps-lock-warning-label {
text-align: center;
padding-bottom: 8px;
@include fontsize($base_font_size - 1);
color: $warning_color;
}

View File

@@ -0,0 +1,56 @@
/* Network Dialogs */
.nm-dialog {
max-height: 34em;
min-height: 31em;
min-width: 32em;
}
.nm-dialog-content {
spacing: 20px;
padding: 24px;
}
.nm-dialog-airplane-box { spacing: 12px; }
.nm-dialog-airplane-headline {
font-weight: bold;
text-align: center;
}
.nm-dialog-airplane-text { color: $fg_color; }
// header
.nm-dialog-header {
font-weight: bold;
}
.nm-dialog-header-icon {
icon-size: $base_icon_size * 2;
}
.nm-dialog-header-hbox { spacing: 10px; }
// list of networks
.nm-dialog-scroll-view {
border: 1px solid $borders_color;
padding:0;
background-color: darken($bg_color, 3%);
}
// list item
.nm-dialog-item {
@include fontsize($base_font_size);
border-bottom: 1px solid $borders_color;
padding: $base_padding * 2;
spacing: 0px;
&:selected {
background-color: $selected_bg_color;
color: $selected_fg_color;
}
}
// icons in list
.nm-dialog-icon { icon-size: $base_icon_size; }
.nm-dialog-icons { spacing: $base_spacing * 2; }
// no networks
.no-networks-label { color: $insensitive_fg_color; }
.no-networks-box { spacing: $base_padding; }

View File

@@ -0,0 +1,57 @@
/* Notifications & Message Tray */
$notification_banner_height: 64px;
$notification_banner_width: 34em;
// Banner notifications
.notification-banner {
min-height: $notification_banner_height;
width: $notification_banner_width;
.notification-actions {
spacing: 0;
}
.notification-button {
@extend %bubble_button;
}
}
// counter
.summary-source-counter {
font-size: $base_font_size - 1pt;
font-weight: bold;
height: 1.6em;
width: 1.6em;
-shell-counter-overlap-x: 3px;
-shell-counter-overlap-y: 3px;
background-color: $selected_bg_color;
color: $selected_fg_color;
border: 2px solid $fg_color;
box-shadow: 0 2px 2px rgba(0,0,0,0.5);
border-radius: 0.9em; // should be 0.8 but whatever; wish I could do 50%;
}
// chat bubbles
.chat-body { spacing: 5px; }
.chat-response { margin: 5px; }
.chat-log-message { color: darken($fg_color,10%); }
.chat-new-group { padding-top: 1em; }
.chat-received {
padding-left: 4px;
&:rtl { padding-left: 0px; padding-right: 4px; }
}
.chat-sent {
padding-left: 18pt;
color: lighten($fg_color, 15%);
&:rtl { padding-left: 0; padding-right: 18pt; }
}
.chat-meta-message {
padding-left: 4px;
@include fontsize($base_font_size - 2);
font-weight: bold;
color: lighten($fg_color,18%);
&:rtl { padding-left: 0; padding-right: 4px; }
}

View File

@@ -0,0 +1,45 @@
/* OSD */
$osd_levelbar_height:8px;
.osd-window {
@extend %osd_panel;
text-align: center;
font-weight: bold;
spacing: $base_spacing * 2; // 12px
margin: $base_margin * 8; // 32px
min-width: 64px;
min-height: 64px;
StIcon {
icon-size:$base_icon_size * 6;
}
.osd-monitor-label { font-size: 3em; }
.level {
height: $osd_levelbar_height;
-barlevel-height: $osd_levelbar_height;
-barlevel-background-color: transparentize($osd_fg_color, if($variant=='light', 0.7, 0.9));
-barlevel-active-background-color: $osd_fg_color;
-barlevel-overdrive-color: $destructive_color;
-barlevel-overdrive-separator-width: 3px;
}
}
/* Pad OSD */
.pad-osd-window {
padding: 32px;
background-color: transparentize(#000, 0.2);
.pad-osd-title-box { spacing: 12px; }
.pad-osd-title-menu-box { spacing: 6px; }
}
.combo-box-label {
width: 15em;
}
.resize-popup {
@extend %osd_panel;
}

View File

@@ -0,0 +1,10 @@
/* OVERVIEW */
#overview {
spacing: 24px;
background-color: transparent;
}
.overview-controls {
padding-bottom: 32px;
}

View File

@@ -0,0 +1,121 @@
/* Top Bar */
// a.k.a. the panel
$panel_corner_radius: $base_border_radius+1;
$panel_bg_color: #000;
$panel_fg_color: #ccc;
$panel_height: 1.86em;
#panel {
background-color: $panel_bg_color;
font-weight: bold;
height: $panel_height;
font-feature-settings: "tnum";
// transparent panel on lock & login screens
&.unlock-screen,
&.login-screen {
background-color: transparent;
.panel-corner {
-panel-corner-radius: 0;
-panel-corner-background-color: transparent;
-panel-corner-border-color: transparent;
}
}
// spacing between activities, app menu and such
#panelLeft, #panelCenter {
spacing: $base_spacing;
}
// the rounded outset corners
.panel-corner {
-panel-corner-radius: $panel_corner_radius;
-panel-corner-background-color: $panel_bg_color;
-panel-corner-border-width: 2px;
-panel-corner-border-color: transparent;
&:active, &:overview, &:focus {
-panel-corner-border-color: lighten($selected_bg_color,5%);
}
}
// panel menus
.panel-button {
font-weight: bold;
color: $panel_fg_color;
-natural-hpadding: $base_padding * 2;
-minimum-hpadding: $base_padding;
&:hover {
color: lighten($panel_fg_color, 20%);
}
&:active, &:overview, &:focus, &:checked {
color: lighten($panel_fg_color, 20%);
}
// status area icons
.system-status-icon {
icon-size: $base_icon_size;
padding: $base_padding - 1px;
}
// app menu icon
.app-menu-icon {
margin-left: $base_margin;
margin-right: $base_margin;
-st-icon-style: symbolic;
// dimensions of the icon are hardcoded
}
// lock & login screen styles
.unlock-screen &,
.login-screen & {
color: lighten($fg_color, 10%);
&:focus, &:hover, &:active { color: lighten($fg_color, 10%); }
}
}
.panel-button {
&:active, &:overview, &:focus, &:checked {
// Trick due to St limitations. It needs a background to draw a box-shadow
background-color: rgba(0, 0, 0, 0.01);
box-shadow: inset 0 -2px 0 0 lighten($selected_bg_color,5%);
}
}
.panel-button.clock-display {
// Move highlight from .panel-button to .clock
&:active, &:overview, &:focus, &:checked {
box-shadow: none;
.clock {
background-color: rgba(0, 0, 0, 0.01);
box-shadow: inset 0 -2px 0 0 lighten($selected_bg_color,5%);
}
}
}
.panel-status-indicators-box,
.panel-status-menu-box {
spacing: 2px;
}
// spacing between power icon and (optional) percentage label
.power-status.panel-status-indicators-box {
spacing: 0;
}
// indicator for active
.screencast-indicator,
.remote-access-indicator { color: $warning_color; }
}
// App Menu
#appMenu {
spacing: $base_spacing;
.label-shadow { color: transparent; }
}

View File

@@ -0,0 +1,131 @@
/* Popovers/Menus */
$popover_arrow_height: 12px;
//.the popover itself
.popup-menu-boxpointer {
-arrow-border-radius: $base_border_radius+4;
-arrow-background-color: $bg_color;
-arrow-border-width: 1px;
-arrow-border-color: $borders_color;
-arrow-base: $popover_arrow_height * 2;
-arrow-rise: $popover_arrow_height;
-arrow-box-shadow: 0 1px 3px rgba(0,0,0,0.5); // dreaming bugzilla #689995
}
// container of the popover menu
.popup-menu {
min-width: 15em;
color: $fg_color;
//.popup-status-menu-item { font-weight: normal; color: pink; } //dunno what that is
&.panel-menu {
-boxpointer-gap: $base_margin; // distance from the panel
margin-bottom: 1.75em;
}
}
.popup-menu-content {
padding: $base_padding * 2 + $base_margin 0;
}
// menu items
.popup-menu-item {
spacing: $base_padding;
padding: $base_padding;
&:ltr { padding-right:1.75em; padding-left: 0; }
&:rtl { padding-right: 0; padding-left:1.75em; }
&:checked {
background-color: lighten($bg_color, 2%);
box-shadow: none;
}
&.selected {
background-color: transparentize(white, if($variant=='light', 0.2, 0.9));
color: $fg_color;
}
&:active {
background-color: $selected_bg_color;
color: $selected_fg_color;
}
&:insensitive { color: transparentize($fg_color,0.5);}
}
// all icons and other graphical elements
.popup-inactive-menu-item {
color: $fg_color;
&:insensitive { color: transparentize($fg_color,0.5); }
}
// symbolic icons in popover
.popup-menu-arrow,
.popup-menu-icon { icon-size: $base_icon_size; }
// popover submenus
.popup-sub-menu {
background-color: darken($bg_color, 3%);
box-shadow: none;
border-top: 1px solid transparentize($borders_color, 0.2);
border-bottom: 1px solid transparentize($borders_color, 0.2);
}
// container for radio and check boxes
.popup-menu-ornament {
width: 1.2em;
&:ltr { text-align: right };
&:rtl { text-align: left };
}
// separator
.popup-separator-menu-item {
padding: 0;
.popup-separator-menu-item-separator {
//-margin-horizontal: 24px;
height: 1px; //not really the whole box
margin: 6px 64px;
background-color: lighten($borders_color, 2%);
.popup-sub-menu & { //submenu separators
margin: 0 64px 0 32px;
@if $variant == 'dark' {
background-color: lighten($bg_color,10%);
}
}
}
}
// desktop background menu
.background-menu {
-boxpointer-gap: $base_margin;
-arrow-rise: 0px; // hide the beak on the menu
}
// system status menu
.aggregate-menu {
min-width: 21em;
// lock screen, shutdown, etc. buttons
.popup-menu-icon {
padding:0;
margin: 0 $base_margin;
-st-icon-style: symbolic;
}
.popup-sub-menu .popup-menu-item > :first-child {
// account for icons in submenus with padding
&:ltr {
padding-left: $base_padding + $base_margin * 2;
margin-left: $base_icon_size;
}
&:rtl {
padding-right: $base_padding + $base_margin * 2; ;
margin-right: $base_icon_size;
}
}
}

View File

@@ -0,0 +1,78 @@
/* Screen Shield */
.unlock-dialog-clock {
color: white;
font-weight: 300;
text-align: center;
spacing: 24px;
padding-bottom: 2.5em;
}
.unlock-dialog-clock-time {
font-size: 64pt;
padding-top: 42px;
font-feature-settings: "tnum";
}
.unlock-dialog-clock-date {
font-size: 16pt;
font-weight: normal;
}
.unlock-dialog-clock-hint {
font-weight: normal;
padding-top: 48px;
}
.unlock-dialog-notifications-container {
margin: 12px 0;
spacing: 6px;
width: 23em;
background-color: transparent;
.summary-notification-stack-scrollview {
padding-top: 0;
padding-bottom: 0;
}
.notification,
.unlock-dialog-notification-source {
padding: 12px 6px;
border: none;
background-color: transparentize($osd_bg_color,0.7);
color: $osd_fg_color;
border-radius: $modal_radius;
&.critical { background-color: transparentize($osd_bg_color,0.1) }
}
}
.unlock-dialog-notification-label {
padding: 0px 0px 0px 12px;
}
.unlock-dialog-notification-count-text {
weight: bold;
padding: 0 6px;
color: $osd_bg_color;
background-color: transparentize($osd_fg_color, 0.7);
border-radius: 99px;
margin-right: 12px;
}
.screen-shield-background { //just the shadow, really
background: black;
box-shadow: 0px 2px 4px rgba(0,0,0,0.6);
}
#lockDialogGroup {
background-color: lighten(#2e3436, 8%);
}
#unlockDialogNotifications {
StButton#vhandle, StButton#hhandle {
background-color: transparentize($bg_color,0.7);
&:hover, &:focus { background-color: transparentize($bg_color,0.5); }
&:active { background-color: transparentize($selected_bg_color,0.5); }
}
}

View File

@@ -0,0 +1,29 @@
/* Scrollbars */
StScrollView {
&.vfade { -st-vfade-offset: 68px; }
&.hfade { -st-hfade-offset: 68px; }
}
StScrollBar {
padding: 0;
StScrollView & {
min-width: 14px;
min-height: 14px;
}
StBin#trough {
border-radius: 0;
background-color: transparent;
}
StButton#vhandle, StButton#hhandle {
border-radius: 8px;
background-color: mix($fg_color, $bg_color, 60%);
//border: 3px solid transparent; //would be nice to margin or at least to transparent
margin: 3px;
&:hover { background-color: mix($fg_color, $bg_color, 80%); }
&:active { background-color: $selected_bg_color; }
}
}

View File

@@ -0,0 +1,35 @@
// Search entry
$search_entry_width: 320px;
$search_entry_height: 36px;
%search_entry,
.search-entry {
width: $search_entry_width;
padding: $base_padding+1 $base_padding+3;
border-radius: $search_entry_height * 0.5; // half the height
color: transparentize($fg_color,0.3);
background-color: $bg_color;
border-color: $borders_color;
&:hover {
background-color: $hover_bg_color;
border-color: $hover_borders_color;
color: $hover_fg_color;
}
&:focus {
padding: $base_padding $base_padding+2; // 1px less to account for wider border
border-width: 2px;
border-style: solid;
border-color: $selected_bg_color;
color: $fg_color;
box-shadow: inset 0 1px 2px 1px rgba(0,0,0,0.2);
}
.search-entry-icon {
icon-size: $base_icon_size;
padding: 0 4px;
color: inherit;
}
}

View File

@@ -0,0 +1,108 @@
/* Search */
// search overview container
#searchResultsContent {
max-width: 1024px;
spacing: $base_margin * 2;
}
// search results sections "the boxes"
.search-section {
// This should be equal to #searchResultsContent spacing
spacing: $base_margin * 2;
// separator
.search-section-separator {
// height: 1px;
// background-color: $osd_outer_borders_color;
height: 0;
background-color: transparent;
}
}
// content
.search-section-content {
background-color: transparentize(lighten($osd_bg_color, 5%), 0.2);
border-radius: $modal_radius+3;
border: 1px solid $osd_outer_borders_color;
box-shadow: 0 2px 4px 0 $shadow_color;
text-shadow: 0 1px if($variant == 'light', rgba(255,255,255,0.2), rgba(0,0,0,0.2));
color: $osd_fg_color;
padding: $base_padding * 3;
// This is the space between the provider icon and the results container
spacing: $base_margin * 2;
}
%search-section-content-item {
@extend %icon_tile;
&:focus,
&:hover,
&:selected {
background-color: transparentize($osd_fg_color, .9);
transition-duration: 200ms;
}
&:active,
&:checked {
background-color: transparentize(darken($osd_bg_color, 10%), .1);
}
}
// "no results" text
.search-statustext {
@extend %status_text;
}
.grid-search-results {
spacing: $base_spacing * 6;
}
// Search results with icons
.grid-search-result {
@extend %app-well-app;
}
// search result provider
.search-provider-icon {
@extend %search-section-content-item;
// content
.list-search-provider-content {
spacing: $base_spacing * 2;
// provider labels
.list-search-provider-details {
width: 120px;
margin-top: 0;
color: darken($osd_fg_color, 8%);
// font-weight: bold;
}
}
}
// search results list
.list-search-results {
spacing: $base_spacing;
}
// search result listitem
.list-search-result {
@extend %search-section-content-item;
// content
.list-search-result-content {
spacing: $base_padding;
}
// list item title (with leading icon)
.list-search-result-title {
spacing: $base_spacing * 2;
// font-weight: bold;
}
// list item description
.list-search-result-description {
color: darken($osd_fg_color, 30%);
}
}

View File

@@ -0,0 +1,27 @@
/* Slider */
$slider_size: 15px;
.slider {
height: $slider_size;
// slider trough
-barlevel-height: 3px; // has to be an odd number
-barlevel-background-color: $borders_color; //background of the trough
-barlevel-border-width: 1px;
-barlevel-border-color: $borders_color; // trough border color
// fill style
-barlevel-active-background-color: $selected_bg_color; //active trough fill
-barlevel-active-border-color: if($variant == 'light', darken($selected_bg_color, 4%), lighten($selected_bg_color, 2%)); //active trough border
// overfill style (red in this case)
-barlevel-overdrive-color: $destructive_color;
-barlevel-overdrive-border-color: if($variant == 'light', darken($destructive_color, 4%), lighten($destructive_color, 2%)); //trough border when red;
-barlevel-overdrive-separator-width:1px;
// slider handler
-slider-handle-radius: $slider_size * 0.5; // half the size of the size
-slider-handle-border-width: 1px;
-slider-handle-border-color: if($variant == 'light', $borders_color, $fg_color);
color: if($variant == 'light', lighten($bg_color, 10%), $fg_color);
&:hover { color: $hover_bg_color; }
&:active { color: $active_bg_color; }
}

View File

@@ -0,0 +1,65 @@
/* App Switcher */
.switcher-popup {
padding: 8px;
spacing: $base_spacing * 4;
}
// switcher onscreen panel
.switcher-list {
@extend %osd_panel;
.item-box {
padding: 8px;
border-radius: $base_border_radius + 1px;
border: 1px solid transparent;
&:outlined {
background-color: transparentize($osd_fg_color, 0.7);
}
&:selected {
background-color: transparentize($osd_fg_color, 0.7);
color: $osd_fg_color;
}
}
// window thumbnails
.thumbnail-box {
padding: 2px;
spacing: $base_spacing;
}
.thumbnail {
width: 256px;
}
.separator {
width: 1px;
background: $borders_color;
}
.switcher-list-item-container {
spacing: $base_spacing * 2;
}
}
.switcher-arrow {
border-color: rgba(0,0,0,0);
color: transparentize($fg_color,0.2);
&:highlighted {
color: $fg_color;
}
}
// Input Source Switcher
.input-source-switcher-symbol {
font-size: 34pt;
width: 96px;
height: 96px;
}
// Window cycler highlight
.cycler-highlight {
border: 5px solid $selected_bg_color;
}

View File

@@ -0,0 +1,16 @@
/* Switches */
// these are equal to the size of the SVG assets
$switch_height: 22px;
$switch_width: 46px;
.toggle-switch {
color: $fg_color;
height: $switch_height;
width: $switch_width;
background-size: contain;
background-image: if($variant == 'light', url("resource:///org/gnome/shell/theme/toggle-off.svg"),url("resource:///org/gnome/shell/theme/toggle-off-dark.svg"));
&:checked {
background-image: if($variant == 'light', url("resource:///org/gnome/shell/theme/toggle-on.svg"),url("resource:///org/gnome/shell/theme/toggle-on-dark.svg"));
}
}

View File

@@ -0,0 +1,19 @@
/* Tiled window previews */
$tile_corner_radius: $base_border_radius + 1px;
.tile-preview {
background-color: transparentize($selected_bg_color,0.5);
border: 1px solid $selected_bg_color;
}
.tile-preview-left.on-primary {
border-radius: $tile_corner_radius 0 0 0;
}
.tile-preview-right.on-primary {
border-radius: 0 $tile_corner_radius 0 0;
}
.tile-preview-left.tile-preview-right.on-primary {
border-radius: $tile_corner_radius $tile_corner_radius 0 0;
}

View File

@@ -0,0 +1,65 @@
/* Window Picker */
$window_picker_spacing: $base_spacing; // 6px
$window_picker_padding: $base_padding * 2; // 12px
$window_thumbnail_border_color:transparentize($selected_fg_color, 0.65);
$window_close_button_size: 24px;
$window_close_button_padding: 3px;
$window_clone_border_size: 6px;
// Window picker
.window-picker {
// Space between window thumbnails
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: $window_clone_border_size;
border-style: solid;
border-color: $window_thumbnail_border_color;
border-radius: $base_border_radius + 2;
// For window decorations with round corners we can't match
// the exact shape when the window is scaled. So apply a shadow
// to fix that case
box-shadow: inset 0 0 0 1px transparentize($borders_color, 0.8);
}
// Window titles
.window-caption {
color: $osd_fg_color;
background-color: $osd_bg_color;
border:1px solid $osd_outer_borders_color;
border-radius: $base_border_radius + 1;
padding: $base_padding $base_padding * 2;
font-weight: bold;
@include fontsize($base_font_size + 1);
}
// Close button
.window-close {
background-color: $selected_bg_color;
color: $selected_fg_color;
border: none;
border-radius: $window_close_button_size * 0.5 + $window_close_button_padding * 2;
padding: $window_close_button_padding;
height: $window_close_button_size;
width: $window_close_button_size;
box-shadow: -1px 1px 5px 0px rgba(0,0,0,0.5);
&:hover {
background-color: lighten($selected_bg_color, 5%);
}
&:active {
background-color: darken($selected_bg_color, 5%);
}
}

View File

@@ -0,0 +1,36 @@
/* Workspace Switcher */
.workspace-switcher-group {
padding: $base_padding * 2;
}
.workspace-switcher-container {
@extend %osd_panel;
}
.workspace-switcher {
background: transparent;
border: none;
border-radius: 0;
padding: 0;
spacing: $base_spacing * 2;
}
.ws-switcher-box {
background: transparent;
height: 50px;
background-size: 32px;
border: 1px solid transparentize($osd_fg_color,0.9);
border-radius: $base_border_radius + 3px;
}
// active workspace in the switcher
.ws-switcher-active-up,
.ws-switcher-active-down,
.ws-switcher-active-left,
.ws-switcher-active-right {
height: 52px;
background-color: $selected_bg_color;
border: 1px solid if($variant=='light', darken($selected_bg_color, 8%), lighten($selected_bg_color, 5%));
border-radius: $base_border_radius + 3px;
color: $selected_fg_color;
}

View File

@@ -0,0 +1,32 @@
/* Workspace pager */
// thumbnails in overview
.workspace-thumbnails {
@extend %overview_panel;
visible-width: 32px; //amount visible before hover
spacing: $base_spacing;
padding: $base_padding;
border-radius: $modal_radius 0 0 $modal_radius;
border-right-width: 0;
&:rtl {
border-radius: 0 $modal_radius $modal_radius 0;
border-left-width: 0;
}
// drag and drop indicator
.placeholder {
background-image: url("resource:///org/gnome/shell/theme/dash-placeholder.svg");
background-size: contain;
height: 24px;
}
}
// selected indicator
.workspace-thumbnail-indicator {
border: 3px solid $selected_bg_color;
border-radius: 3px;
padding: 0px;
// background-color: transparentize($selected_bg_color, 0.9);
}

View File

@@ -28,42 +28,7 @@ theme_sources = files(
'gnome-shell-sass/_colors.scss',
'gnome-shell-sass/_common.scss',
'gnome-shell-sass/_drawing.scss',
'gnome-shell-sass/_high-contrast-colors.scss',
'gnome-shell-sass/_widgets.scss',
'gnome-shell-sass/widgets/_a11y.scss',
'gnome-shell-sass/widgets/_app-grid.scss',
'gnome-shell-sass/widgets/_base.scss',
'gnome-shell-sass/widgets/_buttons.scss',
'gnome-shell-sass/widgets/_calendar.scss',
'gnome-shell-sass/widgets/_check-box.scss',
'gnome-shell-sass/widgets/_corner-ripple.scss',
'gnome-shell-sass/widgets/_dash.scss',
'gnome-shell-sass/widgets/_dialogs.scss',
'gnome-shell-sass/widgets/_entries.scss',
'gnome-shell-sass/widgets/_hotplug.scss',
'gnome-shell-sass/widgets/_ibus-popup.scss',
'gnome-shell-sass/widgets/_keyboard.scss',
'gnome-shell-sass/widgets/_login-dialog.scss',
'gnome-shell-sass/widgets/_looking-glass.scss',
'gnome-shell-sass/widgets/_message-list.scss',
'gnome-shell-sass/widgets/_misc.scss',
'gnome-shell-sass/widgets/_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'
'gnome-shell-sass/_high-contrast-colors.scss'
)
theme_data = [
@@ -76,20 +41,15 @@ theme_data = [
'gnome-classic-high-contrast.css'
]
stylesheet = 'gnome-classic.css'
if fs.exists(stylesheet)
install_data(stylesheet, install_dir: themedir)
else
sassc = find_program('sassc', required: true)
custom_target(stylesheet,
input: fs.replace_suffix(stylesheet, '.scss'),
output: stylesheet,
depend_files: theme_sources,
command: [sassc, '-a', '@INPUT@', '@OUTPUT@'],
install: true,
install_dir: themedir
)
endif
style = 'gnome-classic'
custom_target(style + '.css',
input: style + '.scss',
output: style + '.css',
depend_files: theme_sources,
command: [sassc, '-a', '@INPUT@', '@OUTPUT@'],
install: true,
install_dir: themedir
)
install_data(theme_data, install_dir: themedir)

View File

@@ -14,16 +14,13 @@ mkdir $srcdir/zip-files
extensiondir=$installdir/share/gnome-shell/extensions
schemadir=$installdir/share/glib-2.0/schemas
localedir=$installdir/share/locale
for f in $extensiondir/*; do
name=`basename ${f%%@*}`
uuid=$name@gnome-shell-extensions.gcampax.github.com
schema=$schemadir/org.gnome.shell.extensions.$name.gschema.xml
olddomain=gnome-shell-extensions
newdomain=gnome-shell-extension-$name
sed -i "/gettext-domain/ s:$olddomain:$newdomain:" $f/metadata.json
xgettext --from-code=UTF-8 --output-dir=$builddir --output=$name.pot $f/*.js
if [ -f $builddir/$name.pot ]; then

View File

@@ -12,8 +12,7 @@ const Main = imports.ui.main;
const PanelMenu = imports.ui.panelMenu;
const PopupMenu = imports.ui.popupMenu;
const Me = ExtensionUtils.getCurrentExtension();
const Gettext = imports.gettext.domain(Me.metadata['gettext-domain']);
const Gettext = imports.gettext.domain('gnome-shell-extensions');
const _ = Gettext.gettext;
const appSys = Shell.AppSystem.get_default();
@@ -364,13 +363,17 @@ class ApplicationsButton extends PanelMenu.Button {
// role ATK_ROLE_MENU like other elements of the panel.
this.accessible_role = Atk.Role.LABEL;
let hbox = new St.BoxLayout({ style_class: 'panel-status-menu-box' });
this._label = new St.Label({
text: _('Applications'),
y_expand: true,
y_align: Clutter.ActorAlign.CENTER,
});
hbox.add_child(this._label);
hbox.add_child(PopupMenu.arrowIcon(St.Side.BOTTOM));
this.add_actor(this._label);
this.add_actor(hbox);
this.name = 'panelApplications';
this.label_actor = this._label;

View File

@@ -72,7 +72,7 @@ class WindowMover {
}
_moveWindow(window, workspaceNum) {
if (window.skip_taskbar || window.is_on_all_workspaces())
if (window.skip_taskbar)
return;
// ensure we have the required number of workspaces

View File

@@ -4,12 +4,11 @@
const { Gio, GLib, GObject, Gtk, Pango } = imports.gi;
const ExtensionUtils = imports.misc.extensionUtils;
const Me = ExtensionUtils.getCurrentExtension();
const Gettext = imports.gettext.domain(Me.metadata['gettext-domain']);
const Gettext = imports.gettext.domain('gnome-shell-extensions');
const _ = Gettext.gettext;
const ExtensionUtils = imports.misc.extensionUtils;
const SETTINGS_KEY = 'application-list';
const WORKSPACE_MAX = 36; // compiled in limit of mutter
@@ -30,9 +29,9 @@ class AutoMoveSettingsWidget extends Gtk.ScrolledWindow {
margin_start: 36,
margin_end: 36,
});
this.set_child(box);
this.add(box);
box.append(new Gtk.Label({
box.add(new Gtk.Label({
label: '<b>%s</b>'.format(_('Workspace Rules')),
use_markup: true,
halign: Gtk.Align.START,
@@ -41,9 +40,9 @@ class AutoMoveSettingsWidget extends Gtk.ScrolledWindow {
this._list = new Gtk.ListBox({
selection_mode: Gtk.SelectionMode.NONE,
valign: Gtk.Align.START,
show_separators: true,
});
box.append(this._list);
this._list.set_header_func(this._updateHeader.bind(this));
box.add(this._list);
const context = this._list.get_style_context();
const cssProvider = new Gtk.CssProvider();
@@ -54,7 +53,7 @@ class AutoMoveSettingsWidget extends Gtk.ScrolledWindow {
Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION);
context.add_class('frame');
this._list.append(new NewRuleRow());
this._list.add(new NewRuleRow());
this._actionGroup = new Gio.SimpleActionGroup();
this._list.insert_action_group('rules', this._actionGroup);
@@ -85,10 +84,12 @@ class AutoMoveSettingsWidget extends Gtk.ScrolledWindow {
this._sync();
this.connect('destroy', () => this._settings.run_dispose());
this.show_all();
}
_onAddActivated() {
const dialog = new NewRuleDialog(this.get_root());
const dialog = new NewRuleDialog(this.get_toplevel());
dialog.connect('response', (dlg, id) => {
const appInfo = id === Gtk.ResponseType.OK
? dialog.get_widget().get_app_info() : null;
@@ -100,7 +101,6 @@ class AutoMoveSettingsWidget extends Gtk.ScrolledWindow {
}
dialog.destroy();
});
dialog.show();
}
_onRemoveActivated(action, param) {
@@ -113,7 +113,7 @@ class AutoMoveSettingsWidget extends Gtk.ScrolledWindow {
}
_getRuleRows() {
return [...this._list].filter(row => !!row.id);
return this._list.get_children().filter(row => !!row.id);
}
_sync() {
@@ -139,11 +139,17 @@ class AutoMoveSettingsWidget extends Gtk.ScrolledWindow {
const removed = oldRules.filter(
({ id }) => !newRules.find(r => r.id === id));
removed.forEach(r => this._list.remove(r));
removed.forEach(r => r.destroy());
this._settings.unblock_signal_handler(this._changedId);
this._updateAction.enabled = true;
}
_updateHeader(row, before) {
if (!before || row.get_header())
return;
row.set_header(new Gtk.Separator());
}
});
const RuleRow = GObject.registerClass({
@@ -159,6 +165,12 @@ const RuleRow = GObject.registerClass({
},
}, class RuleRow extends Gtk.ListBoxRow {
_init(appInfo, value) {
super._init({
activatable: false,
value,
});
this._appInfo = appInfo;
const box = new Gtk.Box({
spacing: 6,
margin_top: 6,
@@ -167,19 +179,12 @@ const RuleRow = GObject.registerClass({
margin_end: 6,
});
super._init({
activatable: false,
value,
child: box,
});
this._appInfo = appInfo;
const icon = new Gtk.Image({
gicon: appInfo.get_icon(),
pixel_size: 32,
});
icon.get_style_context().add_class('icon-dropshadow');
box.append(icon);
box.add(icon);
const label = new Gtk.Label({
label: appInfo.get_display_name(),
@@ -188,7 +193,7 @@ const RuleRow = GObject.registerClass({
max_width_chars: 20,
ellipsize: Pango.EllipsizeMode.END,
});
box.append(label);
box.add(label);
const spinButton = new Gtk.SpinButton({
adjustment: new Gtk.Adjustment({
@@ -202,17 +207,26 @@ const RuleRow = GObject.registerClass({
this.bind_property('value',
spinButton, 'value',
GObject.BindingFlags.SYNC_CREATE | GObject.BindingFlags.BIDIRECTIONAL);
box.append(spinButton);
box.add(spinButton);
const button = new Gtk.Button({
action_name: 'rules.remove',
action_target: new GLib.Variant('s', this.id),
icon_name: 'edit-delete-symbolic',
image: new Gtk.Image({
icon_name: 'edit-delete-symbolic',
pixel_size: 16,
}),
});
box.append(button);
box.add(button);
this.connect('notify::value',
() => this.activate_action('rules.update', null));
this.add(box);
this.connect('notify::value', () => {
const actionGroup = this.get_action_group('rules');
actionGroup.activate_action('update', null);
});
this.show_all();
}
get id() {
@@ -225,17 +239,19 @@ 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')]);
this.get_accessible().set_name(_('Add Rule'));
this.add(new Gtk.Image({
icon_name: 'list-add-symbolic',
pixel_size: 16,
margin_top: 12,
margin_bottom: 12,
margin_start: 12,
margin_end: 12,
}));
this.show_all();
}
});
@@ -257,6 +273,8 @@ class NewRuleDialog extends Gtk.AppChooserDialog {
this.get_widget().connect('application-selected',
this._updateSensitivity.bind(this));
this._updateSensitivity();
this.show();
}
_updateSensitivity() {

View File

@@ -2,16 +2,15 @@
// Drive menu extension
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 Main = imports.ui.main;
const PanelMenu = imports.ui.panelMenu;
const PopupMenu = imports.ui.popupMenu;
const ShellMountOperation = imports.ui.shellMountOperation;
const Me = ExtensionUtils.getCurrentExtension();
const Gettext = imports.gettext.domain(Me.metadata['gettext-domain']);
const _ = Gettext.gettext;
var MountMenuItem = GObject.registerClass(
class MountMenuItem extends PopupMenu.PopupBaseMenuItem {
_init(mount) {
@@ -42,8 +41,6 @@ class MountMenuItem extends PopupMenu.PopupBaseMenuItem {
ejectButton.connect('clicked', this._eject.bind(this));
this.add(ejectButton);
this.hide();
this._changedId = mount.connect('changed', this._syncVisibility.bind(this));
this._syncVisibility();
}
@@ -57,21 +54,7 @@ class MountMenuItem extends PopupMenu.PopupBaseMenuItem {
super.destroy();
}
_fsIsRemote(root) {
return new Promise((resolve, reject) => {
const attr = Gio.FILE_ATTRIBUTE_FILESYSTEM_REMOTE;
root.query_filesystem_info_async(attr, null, (o, res) => {
try {
const info = root.query_filesystem_info_finish(res);
resolve(!info.get_attribute_boolean(attr));
} catch (e) {
reject(e);
}
});
});
}
async _isInteresting() {
_isInteresting() {
if (!this.mount.can_eject() && !this.mount.can_unmount())
return false;
if (this.mount.is_shadowed())
@@ -79,23 +62,17 @@ class MountMenuItem extends PopupMenu.PopupBaseMenuItem {
let volume = this.mount.get_volume();
if (volume)
return volume.get_identifier('class') !== 'network';
const root = this.mount.get_root();
try {
return await this._fsIsRemote(root);
} catch (e) {
log(`Failed to query filesystem: ${e.message}`);
if (!volume) {
// probably a GDaemonMount, could be network or
// local, but we can't tell; assume it's local for now
return true;
}
// Hack, fall back to looking at GType
return Gio._LocalFilePrototype.isPrototypeOf(root);
return volume.get_identifier('class') !== 'network';
}
async _syncVisibility() {
this.visible = await this._isInteresting();
_syncVisibility() {
this.visible = this._isInteresting();
}
_eject() {
@@ -150,16 +127,21 @@ class DriveMenu extends PanelMenu.Button {
_init() {
super._init(0.0, _('Removable devices'));
let hbox = new St.BoxLayout({ style_class: 'panel-status-menu-box' });
let icon = new St.Icon({
icon_name: 'media-eject-symbolic',
style_class: 'system-status-icon',
});
this.add_child(icon);
hbox.add_child(icon);
hbox.add_child(PopupMenu.arrowIcon(St.Side.BOTTOM));
this.add_child(hbox);
this._monitor = Gio.VolumeMonitor.get();
this._addedId = this._monitor.connect('mount-added',
(monitor, mount) => this._addMount(mount));
this._addedId = this._monitor.connect('mount-added', (monitor, mount) => {
this._addMount(mount);
this._updateMenuVisibility();
});
this._removedId = this._monitor.connect('mount-removed', (monitor, mount) => {
this._removeMount(mount);
this._updateMenuVisibility();
@@ -190,8 +172,6 @@ class DriveMenu extends PanelMenu.Button {
let item = new MountMenuItem(mount);
this._mounts.unshift(item);
this.menu.addMenuItem(item, 0);
item.connect('notify::visible', () => this._updateMenuVisibility());
}
_removeMount(mount) {

View File

@@ -0,0 +1,38 @@
/* exported init */
const { Meta } = imports.gi;
const { ThumbnailsBox } = imports.ui.workspaceThumbnail;
class Extension {
constructor() {
this._origUpdateSwitcherVisibility =
ThumbnailsBox.prototype._updateSwitcherVisibility;
}
enable() {
global.workspace_manager.override_workspace_layout(
Meta.DisplayCorner.TOPLEFT,
false,
1,
-1);
ThumbnailsBox.prototype._updateSwitcherVisibility = function () {
this.hide();
};
}
disable() {
global.workspace_manager.override_workspace_layout(
Meta.DisplayCorner.TOPLEFT,
false,
-1,
1);
ThumbnailsBox.prototype._updateSwitcherVisibility =
this._origUpdateSwitcherVisibility;
}
}
function init() {
return new Extension();
}

View File

@@ -0,0 +1,5 @@
extension_data += configure_file(
input: metadata_name + '.in',
output: metadata_name,
configuration: metadata_conf
)

View File

@@ -0,0 +1,10 @@
{
"extension-id": "@extension_id@",
"uuid": "@uuid@",
"settings-schema": "@gschemaname@",
"gettext-domain": "@gettext_domain@",
"name": "Horizontal workspaces",
"description": "Use a horizontal workspace layout",
"shell-version": [ "@shell_current@" ],
"url": "@url@"
}

View File

@@ -0,0 +1 @@
/* This extensions requires no special styling */

View File

@@ -3,7 +3,6 @@
const { Clutter } = imports.gi;
const ExtensionUtils = imports.misc.extensionUtils;
const Main = imports.ui.main;
const { WindowPreview } = imports.ui.windowPreview;
const Workspace = imports.ui.workspace;
@@ -67,15 +66,13 @@ class Rect {
}
class NaturalLayoutStrategy extends Workspace.LayoutStrategy {
constructor(params, settings) {
super(params);
constructor(settings) {
super();
this._settings = settings;
}
computeLayout(windows, _params) {
return {
windows,
};
computeLayout(windows, layout) {
layout.windows = windows;
}
/*
@@ -106,6 +103,7 @@ class NaturalLayoutStrategy extends Workspace.LayoutStrategy {
direction++;
if (direction === 4)
direction = 0;
}
let loopCounter = 0;
@@ -249,36 +247,23 @@ function enable() {
let settings = ExtensionUtils.getSettings();
workspaceInjections['_createBestLayout'] = Workspace.WorkspaceLayout.prototype._createBestLayout;
Workspace.WorkspaceLayout.prototype._createBestLayout = function (_area) {
this._layoutStrategy = new NaturalLayoutStrategy({
monitor: Main.layoutManager.monitors[this._monitorIndex],
}, settings);
return this._layoutStrategy.computeLayout(this._sortedWindows);
Workspace.WorkspaceLayout.prototype._createBestLayout = function (area) {
let strategy = new NaturalLayoutStrategy(settings);
let layout = { area, strategy };
strategy.computeLayout(this._sortedWindows, layout);
return layout;
};
// position window titles on top of windows in overlay
winInjections['_init'] = WindowPreview.prototype._init;
WindowPreview.prototype._init = function (...args) {
winInjections['_init'].call(this, ...args);
WindowPreview.prototype._init = function (metaWindow, workspace) {
winInjections['_init'].call(this, metaWindow, workspace);
if (!settings.get_boolean('window-captions-on-top'))
return;
const alignConstraint = this._title.get_constraints().find(
const constraint = 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;
constraint.factor = settings.get_boolean('window-captions-on-top')
? 0 : 1;
};
}

View File

@@ -1 +1,9 @@
/* This extensions requires no special styling */
.window-caption {
-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;
}

View File

@@ -8,12 +8,11 @@ const Main = imports.ui.main;
const PanelMenu = imports.ui.panelMenu;
const PopupMenu = imports.ui.popupMenu;
const Me = ExtensionUtils.getCurrentExtension();
const Gettext = imports.gettext.domain(Me.metadata['gettext-domain']);
const Gettext = imports.gettext.domain('gnome-shell-extensions');
const _ = Gettext.gettext;
const N_ = x => x;
const Me = ExtensionUtils.getCurrentExtension();
const PlaceDisplay = Me.imports.placeDisplay;
const PLACE_ICON_SIZE = 16;
@@ -89,12 +88,15 @@ class PlacesMenu extends PanelMenu.Button {
_init() {
super._init(0.0, _('Places'));
let hbox = new St.BoxLayout({ style_class: 'panel-status-menu-box' });
let label = new St.Label({
text: _('Places'),
y_expand: true,
y_align: Clutter.ActorAlign.CENTER,
});
this.add_actor(label);
hbox.add_child(label);
hbox.add_child(PopupMenu.arrowIcon(St.Side.BOTTOM));
this.add_actor(hbox);
this.placesManager = new PlaceDisplay.PlacesManager();

View File

@@ -3,13 +3,10 @@
const { Gio, GLib, Shell } = imports.gi;
const Signals = imports.signals;
const ExtensionUtils = imports.misc.extensionUtils;
const Main = imports.ui.main;
const ShellMountOperation = imports.ui.shellMountOperation;
const Me = ExtensionUtils.getCurrentExtension();
const Gettext = imports.gettext.domain(Me.metadata['gettext-domain']);
const Gettext = imports.gettext.domain('gnome-shell-extensions');
const _ = Gettext.gettext;
const N_ = x => x;
@@ -197,7 +194,7 @@ class PlaceDeviceInfo extends PlaceInfo {
}
isRemovable() {
return this._mount.can_eject() || this._mount.can_unmount();
return this._mount.can_eject();
}
eject() {
@@ -489,6 +486,7 @@ var PlacesManager = class {
}
_reloadBookmarks() {
this._bookmarks = [];
let content = Shell.get_file_contents_utf8_sync(this._bookmarksFile.get_path());

View File

@@ -26,21 +26,18 @@ class UserThemePrefsWidget extends Gtk.ScrolledWindow {
});
const box = new Gtk.Box();
this.set_child(box);
this.add(box);
this._list = new Gtk.ListBox({
selection_mode: Gtk.SelectionMode.NONE,
show_separators: true,
halign: Gtk.Align.CENTER,
valign: Gtk.Align.START,
hexpand: true,
margin_start: 60,
margin_end: 60,
margin_top: 60,
margin_bottom: 60,
margin: 60,
});
this._list.get_style_context().add_class('frame');
box.append(this._list);
this._list.set_header_func(this._updateHeader.bind(this));
box.add(this._list);
this._actionGroup = new Gio.SimpleActionGroup();
this._list.insert_action_group('theme', this._actionGroup);
@@ -93,10 +90,11 @@ class UserThemePrefsWidget extends Gtk.ScrolledWindow {
}
_addTheme(name) {
const row = new ThemeRow(name, this._settings);
const row = new ThemeRow(name);
this._rows.set(name, row);
this._list.append(row);
this._list.add(row);
row.show_all();
}
async _enumerateDir(dir) {
@@ -123,28 +121,31 @@ class UserThemePrefsWidget extends Gtk.ScrolledWindow {
return fileInfos.map(info => info.get_name());
}
_updateHeader(row, before) {
if (!before || row.get_header())
return;
row.set_header(new Gtk.Separator());
}
});
const ThemeRow = GObject.registerClass(
class ThemeRow extends Gtk.ListBoxRow {
_init(name, settings) {
this._name = name;
this._settings = settings;
_init(name) {
this._name = new GLib.Variant('s', name);
super._init({
action_name: 'theme.name',
action_target: this._name,
});
const box = new Gtk.Box({
spacing: 12,
margin_start: 12,
margin_end: 12,
margin_top: 12,
margin_bottom: 12,
});
super._init({
action_name: 'theme.name',
action_target: new GLib.Variant('s', name),
child: box,
margin: 12,
});
this.add(box);
box.append(new Gtk.Label({
box.add(new Gtk.Label({
label: name || 'Default',
hexpand: true,
xalign: 0,
@@ -156,21 +157,24 @@ class ThemeRow extends Gtk.ListBoxRow {
icon_name: 'emblem-ok-symbolic',
pixel_size: 16,
});
box.append(this._checkmark);
box.add(this._checkmark);
const id = this._settings.connect('changed::name',
this._syncCheckmark.bind(this));
this._syncCheckmark();
box.show_all();
this.connect('destroy', () => {
this._settings.disconnect(id);
this._settings = null;
const id = this.connect('parent-set', () => {
this.disconnect(id);
const actionGroup = this.get_action_group('theme');
actionGroup.connect('action-state-changed::name',
this._syncCheckmark.bind(this));
this._syncCheckmark();
});
}
_syncCheckmark() {
const visible = this._name === this._settings.get_string('name');
this._checkmark.opacity = visible ? 1. : 0;
const actionGroup = this.get_action_group('theme');
const state = actionGroup.get_action_state('name');
this._checkmark.opacity = this._name.equal(state);
}
});
@@ -178,5 +182,8 @@ function init() {
}
function buildPrefsWidget() {
return new UserThemePrefsWidget();
let widget = new UserThemePrefsWidget();
widget.show_all();
return widget;
}

View File

@@ -50,12 +50,11 @@
/* workspace switcher */
.window-list-workspace-indicator .workspace {
border: 2px solid #f6f5f4;
background-color: #ccc;
background-color: #ddd;
}
.window-list-workspace-indicator .workspace.active {
border-color: #888;
background-color: #ccc;
}
.window-list-window-preview {
@@ -65,4 +64,5 @@
.window-list-window-preview.active {
background-color: #f6f5f4;
border: 2px solid #888;
}

View File

@@ -11,7 +11,7 @@ const Me = ExtensionUtils.getCurrentExtension();
const { WindowPicker, WindowPickerToggle } = Me.imports.windowPicker;
const { WorkspaceIndicator } = Me.imports.workspaceIndicator;
const Gettext = imports.gettext.domain(Me.metadata['gettext-domain']);
const Gettext = imports.gettext.domain('gnome-shell-extensions');
const _ = Gettext.gettext;
const ICON_TEXTURE_SIZE = 24;
@@ -612,6 +612,7 @@ class AppButton extends BaseButton {
this._contextMenuManager.addMenu(this._appContextMenu);
this.label_actor = this._multiWindowTitle.label_actor;
}
}
_onClicked(actor, button) {
@@ -744,26 +745,28 @@ class WindowList extends St.Widget {
this._appStateChangedId = this._appSystem.connect(
'app-state-changed', this._onAppStateChanged.bind(this));
// Hack: OSK gesture is tied to visibility, piggy-back on that
this._keyboardVisiblechangedId =
Main.keyboard._bottomDragAction.connect('notify::enabled',
action => {
const visible = !action.enabled;
if (visible) {
Main.uiGroup.set_child_above_sibling(
this, Main.layoutManager.keyboardBox);
} else {
Main.uiGroup.set_child_above_sibling(
this, Main.layoutManager.panelBox);
}
this._updateKeyboardAnchor();
});
this._keyboardVisiblechangedId = Main.layoutManager.connect(
'keyboard-visible-changed',
(o, state) => {
Main.layoutManager.keyboardBox.visible = state;
let { keyboardBox } = Main.layoutManager;
keyboardBox.visible = state;
if (state) {
Main.uiGroup.set_child_above_sibling(
this, keyboardBox);
} else {
Main.uiGroup.set_child_above_sibling(
this, Main.layoutManager.panelBox);
}
this._updateKeyboardAnchor();
});
let workspaceManager = global.workspace_manager;
this._workspaceSignals = new Map();
this._nWorkspacesChangedId = workspaceManager.connect(
'notify::n-workspaces', this._updateWorkspaceIndicatorVisibility.bind(this));
this._updateWorkspaceIndicatorVisibility();
'notify::n-workspaces', this._onWorkspacesChanged.bind(this));
this._onWorkspacesChanged();
this._switchWorkspaceId = global.window_manager.connect(
'switch-workspace', this._checkGrouping.bind(this));
@@ -783,10 +786,6 @@ class WindowList extends St.Widget {
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._monitorDrag.bind(this));
this._dragEndId = Main.xdndHandler.connect('drag-end',
@@ -909,7 +908,7 @@ class WindowList extends St.Widget {
w2.metaWindow.get_stable_sequence();
});
for (let i = 0; i < windows.length; i++)
this._addWindow(windows[i].metaWindow);
this._onWindowAdded(null, windows[i].metaWindow);
} else {
let apps = this._appSystem.get_running().sort((a1, a2) => {
return _getAppStableSequence(a1) -
@@ -921,8 +920,11 @@ class WindowList extends St.Widget {
}
_updateKeyboardAnchor() {
const translationY = Main.overview.visible ? 0 : this.height;
Main.layoutManager.keyboardBox.translation_y = -translationY;
if (!Main.keyboard.keyboardActor)
return;
let translationY = Main.overview.visible ? 0 : this.height;
Main.keyboard.keyboardActor.translation_y = -translationY;
}
_onAppStateChanged(appSys, app) {
@@ -949,7 +951,7 @@ class WindowList extends St.Widget {
child.destroy();
}
_addWindow(win) {
_onWindowAdded(ws, win) {
if (!this._grouped)
this._checkGrouping();
@@ -960,26 +962,21 @@ class WindowList extends St.Widget {
if (children.find(c => c.metaWindow === win))
return;
this._windowSignals.set(
win, win.connect('unmanaged', () => this._removeWindow(win)));
let button = new WindowButton(win, this._perMonitor, this._monitor.index);
this._settings.bind('display-all-workspaces',
button, 'ignore-workspace', Gio.SettingsBindFlags.GET);
this._windowList.add_child(button);
}
_removeWindow(win) {
_onWindowRemoved(ws, win) {
if (this._grouped)
this._checkGrouping();
if (this._grouped)
return;
const id = this._windowSignals.get(win);
if (id)
win.disconnect(id);
this._windowSignals.delete(id);
if (win.get_compositor_private())
return; // not actually removed, just moved to another workspace
let children = this._windowList.get_children();
let child = children.find(c => c.metaWindow === win);
@@ -987,6 +984,39 @@ class WindowList extends St.Widget {
child.destroy();
}
_onWorkspacesChanged() {
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);
}
}
_monitorDrag() {
DND.addDragMonitor(this._dragMonitor);
}
@@ -1047,23 +1077,23 @@ class WindowList extends St.Widget {
this._appSystem.disconnect(this._appStateChangedId);
this._appStateChangedId = 0;
Main.keyboard._bottomDragAction.disconnect(this._keyboardVisiblechangedId);
Main.layoutManager.disconnect(this._keyboardVisiblechangedId);
this._keyboardVisiblechangedId = 0;
Main.layoutManager.hideKeyboard();
this._disconnectWorkspaceSignals();
global.workspace_manager.disconnect(this._nWorkspacesChangedId);
this._nWorkspacesChangedId = 0;
global.window_manager.disconnect(this._switchWorkspaceId);
this._switchWorkspaceId = 0;
this._windowSignals.forEach((id, win) => win.disconnect(id));
this._windowSignals.clear();
Main.overview.disconnect(this._overviewShowingId);
Main.overview.disconnect(this._overviewHidingId);
global.display.disconnect(this._fullscreenChangedId);
global.display.disconnect(this._windowCreatedId);
this._stopMonitoringDrag();
Main.xdndHandler.disconnect(this._dragBeginId);
@@ -1079,8 +1109,6 @@ class WindowList extends St.Widget {
class Extension {
constructor() {
ExtensionUtils.initTranslations();
this._windowLists = null;
this._hideOverviewOrig = Main.overview.hide;
}

View File

@@ -3,12 +3,11 @@
const { Gio, GObject, Gtk } = imports.gi;
const ExtensionUtils = imports.misc.extensionUtils;
const Me = ExtensionUtils.getCurrentExtension();
const Gettext = imports.gettext.domain(Me.metadata['gettext-domain']);
const Gettext = imports.gettext.domain('gnome-shell-extensions');
const _ = Gettext.gettext;
const ExtensionUtils = imports.misc.extensionUtils;
function init() {
ExtensionUtils.initTranslations();
@@ -28,7 +27,7 @@ class WindowListPrefsWidget extends Gtk.Box {
});
let groupingLabel = '<b>%s</b>'.format(_('Window Grouping'));
this.append(new Gtk.Label({
this.add(new Gtk.Label({
label: groupingLabel, use_markup: true,
halign: Gtk.Align.START,
}));
@@ -38,7 +37,7 @@ class WindowListPrefsWidget extends Gtk.Box {
spacing: 12,
margin_bottom: 12,
});
this.append(box);
this.add(box);
const context = box.get_style_context();
const cssProvider = new Gtk.CssProvider();
@@ -71,13 +70,13 @@ class WindowListPrefsWidget extends Gtk.Box {
continue;
}
radio = new Gtk.CheckButton({
radio = new Gtk.RadioButton({
active: !i,
label,
group: radio,
margin_end: 12,
});
box.append(radio);
box.add(radio);
if (currentMode === mode)
currentRadio = radio;
@@ -95,13 +94,15 @@ class WindowListPrefsWidget extends Gtk.Box {
label: _('Show on all monitors'),
});
this._settings.bind('show-on-all-monitors', check, 'active', Gio.SettingsBindFlags.DEFAULT);
this.append(check);
this.add(check);
check = new Gtk.CheckButton({
label: _('Show windows from all workspaces'),
});
this._settings.bind('display-all-workspaces', check, 'active', Gio.SettingsBindFlags.DEFAULT);
this.append(check);
this.add(check);
this.show_all();
}
});

View File

@@ -1,3 +1,10 @@
.bottom-panel {
/* .window-button-icon height +
.window-button vertical padding +
.window-button > StWidget vertical padding) */
height: 2.25em;
}
.window-list {
spacing: 2px;
font-size: 10pt;
@@ -23,7 +30,7 @@
.window-picker-toggle > StWidget {
color: #bbb;
background-color: black;
border-radius: 2px;
border-radius: 4px;
padding: 3px 6px 1px;
box-shadow: inset 1px 1px 4px rgba(255,255,255,0.5);
text-shadow: 1px 1px 4px rgba(0,0,0,0.8);
@@ -82,7 +89,7 @@
background-color: rgba(200, 200, 200, .3);
border: 1px solid #cccccc;
padding: 0 3px;
margin: 3px;
margin: 3px 0;
}
.window-list-workspace-indicator .workspaces-box {
@@ -91,23 +98,37 @@
}
.window-list-workspace-indicator .workspace {
border: 2px solid #000;
border: 1px solid #cccccc;
width: 52px;
}
.window-list-workspace-indicator .workspace:first-child:last-child:ltr,
.window-list-workspace-indicator .workspace:first-child:last-child:rtl {
border-radius: 4px;
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 {
border-color: #fff;
background-color: rgba(200, 200, 200, .3);
}
.window-list-window-preview {
background-color: #bebebe;
border: 1px solid #828282;
background-color: #252525;
border: 1px solid #ccc;
}
.window-list-window-preview.active {
background-color: #d4d4d4;
background-color: #353535;
border: 2px solid #ccc;
}
.notification {

View File

@@ -1,24 +1,16 @@
/* exported WindowPicker, WindowPickerToggle */
const { Clutter, GObject, Shell, St } = imports.gi;
const { Clutter, GLib, GObject, Meta, Shell, St } = imports.gi;
const Layout = imports.ui.layout;
const Main = imports.ui.main;
const Overview = imports.ui.overview;
const { WorkspacesDisplay } = imports.ui.workspacesView;
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(
class MyWorkspacesDisplay extends WorkspacesDisplay {
_init(controls, overviewAdjustment) {
_init() {
let workspaceManager = global.workspace_manager;
this._overviewAdjustment = overviewAdjustment;
this._workspaceAdjustment = new St.Adjustment({
value: workspaceManager.get_active_workspace_index(),
lower: 0,
@@ -32,7 +24,7 @@ class MyWorkspacesDisplay extends WorkspacesDisplay {
workspaceManager.connect('notify::n-workspaces',
this._updateAdjustment.bind(this));
super._init(controls, this._workspaceAdjustment, this._overviewAdjustment);
super._init(this._workspaceAdjustment);
this._workspaceAdjustment.actor = this;
@@ -41,15 +33,19 @@ class MyWorkspacesDisplay extends WorkspacesDisplay {
primary: true,
work_area: true,
}));
this._workareasChangedId = global.display.connect('workareas-changed',
this._onWorkAreasChanged.bind(this));
this._onWorkAreasChanged();
}
prepareToEnterOverview(...args) {
animateToOverview(...args) {
if (!this._scrollEventId) {
this._scrollEventId = Main.windowPicker.connect('scroll-event',
this._onScrollEvent.bind(this));
}
super.prepareToEnterOverview(...args);
super.animateToOverview(...args);
}
vfunc_hide(...args) {
@@ -60,6 +56,13 @@ class MyWorkspacesDisplay extends WorkspacesDisplay {
super.vfunc_hide(...args);
}
_onWorkAreasChanged() {
let { primaryIndex } = Main.layoutManager;
this._actualGeometry =
Main.layoutManager.getWorkAreaForMonitor(primaryIndex);
this._syncWorkspacesActualGeometry();
}
_updateAdjustment() {
let workspaceManager = global.workspace_manager;
this._workspaceAdjustment.set({
@@ -68,7 +71,20 @@ class MyWorkspacesDisplay extends WorkspacesDisplay {
});
}
_updateWorkspacesViews() {
super._updateWorkspacesViews();
this._workspacesViews.forEach(v => {
Main.layoutManager.overviewGroup.remove_actor(v);
Main.windowPicker.add_actor(v);
});
}
_onDestroy() {
if (this._workareasChangedId)
global.display.disconnect(this._workareasChangedId);
this._workareasChangedId = 0;
if (this._nWorkspacesChangedId)
global.workspace_manager.disconnect(this._nWorkspacesChangedId);
this._nWorkspacesChangedId = 0;
@@ -77,69 +93,6 @@ class MyWorkspacesDisplay extends WorkspacesDisplay {
}
});
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() {
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);
}
});
var WindowPicker = GObject.registerClass({
Signals: {
'open-state-changed': { param_types: [GObject.TYPE_BOOLEAN] },
@@ -152,9 +105,7 @@ var WindowPicker = GObject.registerClass({
this._overlayKeyId = 0;
this._stageKeyPressId = 0;
super._init({ reactive: true });
this._adjustment = new OverviewAdjustment(this);
super._init();
this.connect('destroy', this._onDestroy.bind(this));
@@ -165,14 +116,31 @@ var WindowPicker = GObject.registerClass({
this, 'height',
GObject.BindingFlags.SYNC_CREATE);
this._workspacesDisplay = new MyWorkspacesDisplay(this, this._adjustment);
this._backgroundGroup = new Meta.BackgroundGroup({ reactive: true });
this.add_child(this._backgroundGroup);
this._backgroundGroup.connect('scroll-event', (a, ev) => {
this.emit('scroll-event', ev);
});
// Trick WorkspacesDisplay constructor into adding actions here
let addActionOrig = Main.overview.addAction;
Main.overview.addAction = a => this._backgroundGroup.add_action(a);
this._workspacesDisplay = new MyWorkspacesDisplay();
this.add_child(this._workspacesDisplay);
Main.overview.addAction = addActionOrig;
this._bgManagers = [];
this._monitorsChangedId = Main.layoutManager.connect('monitors-changed',
this._updateBackgrounds.bind(this));
this._updateBackgrounds();
Main.uiGroup.insert_child_below(this, global.window_group);
if (!Main.sessionMode.hasOverview) {
this._injectBackgroundShade();
this._overlayKeyId = global.display.connect('overlay-key', () => {
if (!this._visible)
this.open();
@@ -182,14 +150,6 @@ var WindowPicker = GObject.registerClass({
}
}
_injectBackgroundShade() {
this._origWorkspace = Workspace.Workspace;
this._origWorkspaceBackground = Workspace.WorkspaceBackground;
Workspace.Workspace = MyWorkspace;
Workspace.WorkspaceBackground = MyWorkspaceBackground;
}
get visible() {
return this._visible;
}
@@ -204,15 +164,9 @@ var WindowPicker = GObject.registerClass({
return;
this._fakeOverviewVisible(true);
this._workspacesDisplay.prepareToEnterOverview();
Main.overview._animationInProgress = true;
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._shadeBackgrounds();
this._fakeOverviewAnimation();
this._workspacesDisplay.animateToOverview(false);
this._stageKeyPressId = global.stage.connect('key-press-event',
(a, event) => {
@@ -236,17 +190,11 @@ var WindowPicker = GObject.registerClass({
if (!this._syncGrab())
return;
this._workspacesDisplay.prepareToLeaveOverview();
Main.overview._animationInProgress = true;
this._adjustment.ease(ControlsState.HIDDEN, {
duration: SIDE_CONTROLS_ANIMATION_TIME,
mode: Clutter.AnimationMode.EASE_OUT_QUAD,
onComplete: () => {
Main.overview._animationInProgress = false;
this._workspacesDisplay.hide();
this._fakeOverviewVisible(false);
},
this._workspacesDisplay.animateFromOverview(false);
this._unshadeBackgrounds();
this._fakeOverviewAnimation(() => {
this._workspacesDisplay.hide();
this._fakeOverviewVisible(false);
});
global.stage.disconnect(this._stageKeyPressId);
@@ -255,8 +203,16 @@ var WindowPicker = GObject.registerClass({
this.emit('open-state-changed', this._visible);
}
getWorkspacesBoxForState() {
return this.allocation;
_fakeOverviewAnimation(onComplete) {
Main.overview._animationInProgress = true;
GLib.timeout_add(
GLib.PRIORITY_DEFAULT,
Overview.ANIMATION_TIME,
() => {
Main.overview._animationInProgress = false;
if (onComplete)
onComplete();
});
}
_fakeOverviewVisible(visible) {
@@ -289,12 +245,6 @@ var WindowPicker = GObject.registerClass({
}
_onDestroy() {
if (this._origWorkspace)
Workspace.Workspace = this._origWorkspace;
if (this._origWorkspaceBackground)
Workspace.WorkspaceBackground = this._origWorkspaceBackground;
if (this._monitorsChangedId)
Main.layoutManager.disconnect(this._monitorsChangedId);
this._monitorsChangedId = 0;
@@ -307,6 +257,18 @@ var WindowPicker = GObject.registerClass({
global.stage.disconnect(this._stageKeyPressId);
this._stageKeyPressId = 0;
}
_updateBackgrounds() {
Main.overview._updateBackgrounds.call(this);
}
_shadeBackgrounds() {
Main.overview._shadeBackgrounds.call(this);
}
_unshadeBackgrounds() {
Main.overview._unshadeBackgrounds.call(this);
}
});
var WindowPickerToggle = GObject.registerClass(

View File

@@ -2,21 +2,13 @@
const { Clutter, Gio, GObject, Meta, St } = imports.gi;
const DND = imports.ui.dnd;
const ExtensionUtils = imports.misc.extensionUtils;
const Main = imports.ui.main;
const PanelMenu = imports.ui.panelMenu;
const PopupMenu = imports.ui.popupMenu;
const Me = ExtensionUtils.getCurrentExtension();
const Gettext = imports.gettext.domain(Me.metadata['gettext-domain']);
const Gettext = imports.gettext.domain('gnome-shell-extensions');
const _ = Gettext.gettext;
const TOOLTIP_OFFSET = 6;
const TOOLTIP_ANIMATION_TIME = 150;
const MAX_THUMBNAILS = 6;
let WindowPreview = GObject.registerClass(
class WindowPreview extends St.Button {
_init(window) {
@@ -115,14 +107,7 @@ class WorkspaceThumbnail extends St.Button {
}),
});
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('notify::hover', this._syncTooltip.bind(this));
this._index = index;
this._delegate = this; // needed for DND
@@ -207,39 +192,7 @@ class WorkspaceThumbnail extends St.Button {
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() {
this._tooltip.destroy();
this._workspace.disconnect(this._windowAddedId);
this._workspace.disconnect(this._windowRemovedId);
global.display.disconnect(this._restackedId);
@@ -252,7 +205,6 @@ class WorkspaceIndicator extends PanelMenu.Button {
super._init(0.0, _('Workspace Indicator'), true);
this.setMenu(new PopupMenu.PopupMenu(this, 0.0, St.Side.BOTTOM));
this.add_style_class_name('window-list-workspace-indicator');
this.remove_style_class_name('panel-button');
this.menu.actor.remove_style_class_name('panel-menu');
let container = new St.Widget({
@@ -292,13 +244,13 @@ class WorkspaceIndicator extends PanelMenu.Button {
workspaceManager.connect_after('workspace-switched',
this._onWorkspaceSwitched.bind(this)),
workspaceManager.connect('notify::layout-rows',
this._updateThumbnailVisibility.bind(this)),
this._onWorkspaceOrientationChanged.bind(this)),
];
this.connect('scroll-event', this._onScrollEvent.bind(this));
this._updateMenu();
this._updateThumbnails();
this._updateThumbnailVisibility();
this._onWorkspaceOrientationChanged();
this._settings = new Gio.Settings({ schema_id: 'org.gnome.desktop.wm.preferences' });
this._settingsChangedId = this._settings.connect(
@@ -317,15 +269,12 @@ class WorkspaceIndicator extends PanelMenu.Button {
super._onDestroy();
}
_updateThumbnailVisibility() {
const { workspaceManager } = global;
const vertical = workspaceManager.layout_rows === -1;
const useMenu =
vertical || workspaceManager.n_workspaces > MAX_THUMBNAILS;
this.reactive = useMenu;
_onWorkspaceOrientationChanged() {
let vertical = global.workspace_manager.layout_rows === -1;
this.reactive = vertical;
this._statusBin.visible = useMenu;
this._thumbnailsBox.visible = !useMenu;
this._statusBin.visible = vertical;
this._thumbnailsBox.visible = !vertical;
}
_onWorkspaceSwitched() {
@@ -341,7 +290,6 @@ class WorkspaceIndicator extends PanelMenu.Button {
_nWorkspacesChanged() {
this._updateMenu();
this._updateThumbnails();
this._updateThumbnailVisibility();
}
_updateMenuOrnament() {

View File

@@ -3,7 +3,6 @@
const { Clutter, Graphene, GObject, St } = imports.gi;
const Main = imports.ui.main;
const OverviewControls = imports.ui.overviewControls;
const Workspace = imports.ui.workspace;
const WorkspacesView = imports.ui.workspacesView;
@@ -11,10 +10,10 @@ const WINDOW_SLOT = 4;
var MyWorkspace = GObject.registerClass(
class MyWorkspace extends Workspace.Workspace {
_init(...args) {
super._init(...args);
_init(metaWorkspace, monitorIndex) {
super._init(metaWorkspace, monitorIndex);
if (this.metaWorkspace && this.metaWorkspace.index() < 9) {
if (metaWorkspace && metaWorkspace.index() < 9) {
this._tip = new St.Label({
style_class: 'extension-windowsNavigator-window-tooltip',
visible: false,
@@ -50,24 +49,21 @@ class MyWorkspace extends Workspace.Workspace {
}
getWindowWithTooltip(id) {
const { layoutManager } = this._container;
const slot = layoutManager._windowSlots[id - 1];
const slot = this.layout_manager._windowSlots[id - 1];
return slot ? slot[WINDOW_SLOT].metaWindow : null;
}
showWindowsTooltips() {
const { layoutManager } = this._container;
for (let i = 0; i < layoutManager._windowSlots.length; i++) {
if (layoutManager._windowSlots[i])
layoutManager._windowSlots[i][WINDOW_SLOT].showTooltip(`${i + 1}`);
for (let i = 0; i < this.layout_manager._windowSlots.length; i++) {
if (this.layout_manager._windowSlots[i])
this.layout_manager._windowSlots[i][WINDOW_SLOT].showTooltip(`${i + 1}`);
}
}
hideWindowsTooltips() {
const { layoutManager } = this._container;
for (let i in layoutManager._windowSlots) {
if (layoutManager._windowSlots[i])
layoutManager._windowSlots[i][WINDOW_SLOT].hideTooltip();
for (let i in this.layout_manager._windowSlots) {
if (this.layout_manager._windowSlots[i])
this.layout_manager._windowSlots[i][WINDOW_SLOT].hideTooltip();
}
}
@@ -84,17 +80,17 @@ class MyWorkspace extends Workspace.Workspace {
});
this._text.add_constraint(new Clutter.BindConstraint({
source: this.windowContainer,
source: this._borderCenter,
coordinate: Clutter.BindCoordinate.POSITION,
}));
this._text.add_constraint(new Clutter.AlignConstraint({
source: this.windowContainer,
source: this._borderCenter,
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,
source: this._borderCenter,
align_axis: Clutter.AlignAxis.Y_AXIS,
pivot_point: new Graphene.Point({ x: -1, y: 0.5 }),
factor: 0,
@@ -119,8 +115,8 @@ class MyWorkspace extends Workspace.Workspace {
var MyWorkspacesView = GObject.registerClass(
class MyWorkspacesView extends WorkspacesView.WorkspacesView {
_init(...args) {
super._init(...args);
_init(width, height, x, y, workspaces) {
super._init(width, height, x, y, workspaces);
this._pickWorkspace = false;
this._pickWindow = false;
@@ -164,8 +160,8 @@ class MyWorkspacesView extends WorkspacesView.WorkspacesView {
}
_onKeyPress(s, o) {
const { ControlsState } = OverviewControls;
if (this._overviewAdjustment.value !== ControlsState.WINDOW_PICKER)
let { viewSelector } = Main.overview;
if (viewSelector._activePage !== viewSelector._workspacesPage)
return false;
let workspaceManager = global.workspace_manager;

View File

@@ -9,19 +9,12 @@ const Main = imports.ui.main;
const PanelMenu = imports.ui.panelMenu;
const PopupMenu = imports.ui.popupMenu;
const Me = ExtensionUtils.getCurrentExtension();
const Gettext = imports.gettext.domain(Me.metadata['gettext-domain']);
const Gettext = imports.gettext.domain('gnome-shell-extensions');
const _ = Gettext.gettext;
const WORKSPACE_SCHEMA = 'org.gnome.desktop.wm.preferences';
const WORKSPACE_KEY = 'workspace-names';
const TOOLTIP_OFFSET = 6;
const TOOLTIP_ANIMATION_TIME = 150;
const MAX_THUMBNAILS = 6;
let WindowPreview = GObject.registerClass(
class WindowPreview extends St.Button {
_init(window) {
@@ -120,14 +113,7 @@ class WorkspaceThumbnail extends St.Button {
}),
});
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('notify::hover', this._syncTooltip.bind(this));
this._index = index;
this._delegate = this; // needed for DND
@@ -212,39 +198,7 @@ class WorkspaceThumbnail extends St.Button {
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() {
this._tooltip.destroy();
this._workspace.disconnect(this._windowAddedId);
this._workspace.disconnect(this._windowRemovedId);
global.display.disconnect(this._restackedId);
@@ -292,14 +246,14 @@ class WorkspaceIndicator extends PanelMenu.Button {
workspaceManager.connect_after('workspace-switched',
this._onWorkspaceSwitched.bind(this)),
workspaceManager.connect('notify::layout-rows',
this._updateThumbnailVisibility.bind(this)),
this._onWorkspaceOrientationChanged.bind(this)),
];
this.connect('scroll-event', this._onScrollEvent.bind(this));
this._thumbnailsBox.connect('scroll-event', this._onScrollEvent.bind(this));
this._createWorkspacesSection();
this._updateThumbnails();
this._updateThumbnailVisibility();
this._onWorkspaceOrientationChanged();
this._settings = new Gio.Settings({ schema_id: WORKSPACE_SCHEMA });
this._settingsChangedId = this._settings.connect(
@@ -321,19 +275,16 @@ class WorkspaceIndicator extends PanelMenu.Button {
super._onDestroy();
}
_updateThumbnailVisibility() {
const { workspaceManager } = global;
const vertical = workspaceManager.layout_rows === -1;
const useMenu =
vertical || workspaceManager.n_workspaces > MAX_THUMBNAILS;
this.reactive = useMenu;
_onWorkspaceOrientationChanged() {
let vertical = global.workspace_manager.layout_rows === -1;
this.reactive = vertical;
this._statusLabel.visible = useMenu;
this._thumbnailsBox.visible = !useMenu;
this._statusLabel.visible = vertical;
this._thumbnailsBox.visible = !vertical;
// Disable offscreen-redirect when showing the workspace switcher
// so that clip-to-allocation works
Main.panel.set_offscreen_redirect(useMenu
Main.panel.set_offscreen_redirect(vertical
? Clutter.OffscreenRedirect.ALWAYS
: Clutter.OffscreenRedirect.AUTOMATIC_FOR_OPACITY);
}
@@ -350,7 +301,6 @@ class WorkspaceIndicator extends PanelMenu.Button {
_nWorkspacesChanged() {
this._createWorkspacesSection();
this._updateThumbnails();
this._updateThumbnailVisibility();
}
_updateMenuOrnament() {

View File

@@ -1,15 +1,14 @@
// -*- mode: js2; indent-tabs-mode: nil; js2-basic-offset: 4 -*-
/* exported init buildPrefsWidget */
const { Gio, GLib, GObject, Gtk, Pango } = imports.gi;
const { Gdk, Gio, GLib, GObject, Gtk, Pango } = imports.gi;
const ExtensionUtils = imports.misc.extensionUtils;
const Me = ExtensionUtils.getCurrentExtension();
const Gettext = imports.gettext.domain(Me.metadata['gettext-domain']);
const Gettext = imports.gettext.domain('gnome-shell-extensions');
const _ = Gettext.gettext;
const N_ = e => e;
const ExtensionUtils = imports.misc.extensionUtils;
const WORKSPACE_SCHEMA = 'org.gnome.desktop.wm.preferences';
const WORKSPACE_KEY = 'workspace-names';
@@ -29,9 +28,9 @@ class WorkspaceSettingsWidget extends Gtk.ScrolledWindow {
margin_start: 36,
margin_end: 36,
});
this.set_child(box);
this.add(box);
box.append(new Gtk.Label({
box.add(new Gtk.Label({
label: '<b>%s</b>'.format(_('Workspace Names')),
use_markup: true,
halign: Gtk.Align.START,
@@ -40,10 +39,10 @@ class WorkspaceSettingsWidget extends Gtk.ScrolledWindow {
this._list = new Gtk.ListBox({
selection_mode: Gtk.SelectionMode.NONE,
valign: Gtk.Align.START,
show_separators: true,
});
this._list.set_header_func(this._updateHeader.bind(this));
this._list.connect('row-activated', (l, row) => row.edit());
box.append(this._list);
box.add(this._list);
const context = this._list.get_style_context();
const cssProvider = new Gtk.CssProvider();
@@ -54,7 +53,7 @@ class WorkspaceSettingsWidget extends Gtk.ScrolledWindow {
Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION);
context.add_class('frame');
this._list.append(new NewWorkspaceRow());
this._list.add(new NewWorkspaceRow());
this._actionGroup = new Gio.SimpleActionGroup();
this._list.insert_action_group('workspaces', this._actionGroup);
@@ -95,10 +94,12 @@ class WorkspaceSettingsWidget extends Gtk.ScrolledWindow {
this._settings.connect(`changed::${WORKSPACE_KEY}`,
this._sync.bind(this));
this._sync();
this.show_all();
}
_getWorkspaceRows() {
return [...this._list].filter(row => row.name);
return this._list.get_children().filter(row => row.name);
}
_sync() {
@@ -110,11 +111,17 @@ class WorkspaceSettingsWidget extends Gtk.ScrolledWindow {
const removed = oldNames.filter(n => !newNames.includes(n));
const added = newNames.filter(n => !oldNames.includes(n));
removed.forEach(n => this._list.remove(rows.find(r => r.name === n)));
removed.forEach(n => rows.find(r => r.name === n).destroy());
added.forEach(n => {
this._list.insert(new WorkspaceRow(n), newNames.indexOf(n));
});
}
_updateHeader(row, before) {
if (!before || row.get_header())
return;
row.set_header(new Gtk.Separator());
}
});
const WorkspaceRow = GObject.registerClass(
@@ -122,13 +129,6 @@ class WorkspaceRow extends Gtk.ListBoxRow {
_init(name) {
super._init({ name });
const controller = new Gtk.ShortcutController();
controller.add_shortcut(new Gtk.Shortcut({
trigger: Gtk.ShortcutTrigger.parse_string('Escape'),
action: Gtk.CallbackAction.new(this._stopEdit.bind(this)),
}));
this.add_controller(controller);
const box = new Gtk.Box({
spacing: 12,
margin_top: 6,
@@ -145,14 +145,18 @@ class WorkspaceRow extends Gtk.ListBoxRow {
});
this.bind_property('name', label, 'label',
GObject.BindingFlags.SYNC_CREATE);
box.append(label);
box.add(label);
const image = new Gtk.Image({
icon_name: 'edit-delete-symbolic',
pixel_size: 16,
});
const button = new Gtk.Button({
action_name: 'workspaces.remove',
action_target: new GLib.Variant('s', name),
icon_name: 'edit-delete-symbolic',
image,
});
box.append(button);
box.add(button);
this._entry = new Gtk.Entry({
max_width_chars: 25,
@@ -161,7 +165,7 @@ class WorkspaceRow extends Gtk.ListBoxRow {
this._stack = new Gtk.Stack();
this._stack.add_named(box, 'display');
this._stack.add_named(this._entry, 'edit');
this.child = this._stack;
this.add(this._stack);
this._entry.connect('activate', () => {
this.name = this._entry.text;
@@ -172,11 +176,17 @@ class WorkspaceRow extends Gtk.ListBoxRow {
return;
this._stopEdit();
});
this._entry.connect('key-press-event',
this._onEntryKeyPress.bind(this));
this.connect('notify::name', () => {
button.action_target = new GLib.Variant('s', this.name);
this.activate_action('workspaces.update', null);
const actionGroup = this.get_action_group('workspaces');
actionGroup.activate_action('update', null);
});
this.show_all();
}
edit() {
@@ -189,6 +199,14 @@ class WorkspaceRow extends Gtk.ListBoxRow {
this.grab_focus();
this._stack.visible_child_name = 'display';
}
_onEntryKeyPress(entry, event) {
const [, keyval] = event.get_keyval();
if (keyval !== Gdk.KEY_Escape)
return Gdk.EVENT_PROPAGATE;
this._stopEdit();
return Gdk.EVENT_STOP;
}
});
const NewWorkspaceRow = GObject.registerClass(
@@ -196,17 +214,19 @@ class NewWorkspaceRow extends Gtk.ListBoxRow {
_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')]);
this.get_accessible().set_name(_('Add Workspace'));
this.add(new Gtk.Image({
icon_name: 'list-add-symbolic',
pixel_size: 16,
margin_top: 12,
margin_bottom: 12,
margin_start: 12,
margin_end: 12,
}));
this.show_all();
}
});

View File

@@ -1,28 +1,40 @@
.panel-workspace-indicator {
padding: 0 8px;
padding: 0 8px;
}
.panel-workspace-indicator-box {
padding: 4px 0;
spacing: 4px;
padding: 2px 0;
}
.panel-workspace-indicator-box .workspace {
width: 40px;
border: 2px solid #000;
border-radius: 2px;
background-color: #595959;
width: 40px;
}
.panel-workspace-indicator,
.panel-workspace-indicator-box .workspace {
border: 1px solid #cccccc;
}
.panel-workspace-indicator,
.panel-workspace-indicator-box .workspace.active {
border-color: #fff;
background-color: rgba(200, 200, 200, .5);
}
.panel-workspace-indicator-box .workspace {
background-color: rgba(200, 200, 200, .3);
border-left-width: 0;
}
.panel-workspace-indicator-box .workspace:first-child {
border-left-width: 1px;
}
.workspace-indicator-window-preview {
background-color: #bebebe;
border: 1px solid #828282;
background-color: #252525;
border: 1px solid #ccc;
}
.workspace-indicator-window-preview.active {
background-color: #d4d4d4;
background-color: #353535;
border: 2px solid #ccc;
}

View File

@@ -34,10 +34,4 @@ and will be picked automatically at next login.
<gnome:userid>fmuellner</gnome:userid>
</foaf:Person>
</maintainer>
<maintainer>
<foaf:Person>
<foaf:name>Marge Bot</foaf:name>
<gnome:userid>marge-bot</gnome:userid>
</foaf:Person>
</maintainer>
</Project>

View File

@@ -1,5 +1,4 @@
---
# SPDX-License-Identifier: MIT OR LGPL-2.0-or-later
env:
es6: true
extends: 'eslint:recommended'
@@ -25,9 +24,7 @@ rules:
# allow: [^vfunc_, ^on_, _instance_init]
comma-dangle:
- error
- arrays: always-multiline
objects: always-multiline
functions: never
- always-multiline
comma-spacing:
- error
- before: false
@@ -90,7 +87,6 @@ rules:
- error
- all
- conditionalAssign: false
nestedBinaryExpressions: false
returnAssign: false
no-implicit-coercion:
- error
@@ -109,15 +105,15 @@ rules:
no-prototype-builtins: 'off'
no-restricted-properties:
- error
- object: Lang
property: copyProperties
message: Use Object.assign()
- object: Lang
property: bind
message: Use arrow notation or Function.prototype.bind()
- object: Lang
property: Class
message: Use ES6 classes
- object: imports
property: mainloop
message: Use GLib main loops and timeouts
no-restricted-syntax:
- error
- selector: >-
@@ -133,8 +129,6 @@ rules:
BlockStatement[body.length=1]
CallExpression[arguments.length=0][callee.object.type="Super"][callee.property.name="_init"]
message: _init() that only calls super._init() is unnecessary
- selector: BinaryExpression[operator="instanceof"][right.name="Array"]
message: Use Array.isArray()
no-return-assign: error
no-return-await: error
no-self-compare: error
@@ -171,9 +165,6 @@ rules:
object-shorthand: error
operator-assignment: error
operator-linebreak: error
padded-blocks:
- error
- never
# These may be a bit controversial, we can try them out and enable them later
# prefer-const: error
# prefer-destructuring: error
@@ -226,12 +217,12 @@ globals:
ARGV: readonly
Debugger: readonly
GIRepositoryGType: readonly
globalThis: readonly
imports: readonly
Intl: readonly
log: readonly
logError: readonly
print: readonly
printerr: readonly
window: readonly
parserOptions:
ecmaVersion: 2020
ecmaVersion: 2017

View File

@@ -1,12 +1,11 @@
project('gnome-shell-extensions',
version: '40.7',
version: '3.38.2',
meson_version: '>= 0.44.0',
license: 'GPL2+'
)
gettext_domain = meson.project_name()
fs = import('fs')
gnome = import('gnome')
i18n = import('i18n')
@@ -22,12 +21,17 @@ sessiondir = join_paths(datadir, 'gnome-session', 'sessions')
xsessiondir = join_paths(datadir, 'xsessions')
ver_arr = meson.project_version().split('.')
shell_version = ver_arr[0]
if ver_arr[1].to_int().is_even()
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'
classic_extensions = [
'apps-menu',
'horizontal-workspaces',
'places-menu',
'launch-new-instance',
'window-list'
@@ -82,10 +86,9 @@ foreach e : enabled_extensions
endforeach
if classic_mode_enabled
sassc = find_program('sassc', required: true)
subdir('data')
endif
subdir('extensions')
subdir('po')
meson.add_dist_script('meson/generate-stylesheets.py')

View File

@@ -1,13 +0,0 @@
#!/usr/bin/env python3
import os
from pathlib import PurePath
import subprocess
sourceroot = os.environ.get('MESON_SOURCE_ROOT')
distroot = os.environ.get('MESON_DIST_ROOT')
stylesheet_path = PurePath('data/gnome-classic.css')
src = PurePath(sourceroot, stylesheet_path.with_suffix('.scss'))
dst = PurePath(distroot, stylesheet_path)
subprocess.call(['sassc', '-a', src, dst])

379
po/be.po
View File

@@ -6,11 +6,11 @@
msgid ""
msgstr ""
"Project-Id-Version: gnome-shell-extensions master\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell-extensions/"
"issues\n"
"POT-Creation-Date: 2021-01-20 23:03+0000\n"
"PO-Revision-Date: 2021-01-24 15:33+0300\n"
"Last-Translator: Launchpad translators\n"
"Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
"shell&keywords=I18N+L10N&component=extensions\n"
"POT-Creation-Date: 2017-08-19 16:41+0000\n"
"PO-Revision-Date: 2017-09-01 17:56+0300\n"
"Last-Translator: Yuras Shumovich <shumovichy@gmail.com>\n"
"Language-Team: Belarusian <i18n-bel-gnome@googlegroups.com>\n"
"Language: be\n"
"MIME-Version: 1.0\n"
@@ -18,9 +18,9 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\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"
"X-Generator: Poedit 2.4.2\n"
"X-Generator: Poedit 1.8.11\n"
#: data/gnome-classic.desktop.in:3
#: data/gnome-classic.desktop.in:3 data/gnome-classic.session.desktop.in:3
msgid "GNOME Classic"
msgstr "Класічны GNOME"
@@ -28,69 +28,171 @@ msgstr "Класічны GNOME"
msgid "This session logs you into GNOME Classic"
msgstr "Гэты сеанс выкарыстоўвае класічны GNOME"
#: extensions/apps-menu/extension.js:113
msgid "Favorites"
msgstr "Абраныя"
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:7
msgid "Attach modal dialog to the parent window"
msgstr "Прымацаваць мадальны дыялог да бацькоўскага акна"
#: extensions/apps-menu/extension.js:369
#: 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"
msgstr "Упадабаныя"
#: extensions/apps-menu/extension.js:436
msgid "Applications"
msgstr "Праграмы"
#: extensions/auto-move-windows/org.gnome.shell.extensions.auto-move-windows.gschema.xml:6
msgid "Application and workspace list"
msgstr "Праграма і спіс працоўных прастор"
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), затым двукроп'е і нумар працоўнай прасторы"
"Спіс радкоў, кожны з якіх утрымлівае ідэнтыфікатар праграмы (імя *.desktop "
"файла), затым двукроп'е і нумар працоўнай прасторы"
#: extensions/auto-move-windows/prefs.js:35
msgid "Workspace Rules"
msgstr "Правілы для працоўнай прасторы"
#: extensions/auto-move-windows/prefs.js:60
msgid "Application"
msgstr "Праграма"
#: extensions/auto-move-windows/prefs.js:237
#: extensions/auto-move-windows/prefs.js:69
#: extensions/auto-move-windows/prefs.js:127
msgid "Workspace"
msgstr "Працоўная прастора"
#: extensions/auto-move-windows/prefs.js:85
msgid "Add Rule"
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
#: extensions/drive-menu/extension.js:112
#: extensions/places-menu/placeDisplay.js:233
#: extensions/drive-menu/extension.js:107
#, javascript-format
msgid "Ejecting drive “%s” failed:"
msgstr "Не ўдалося выняць дыск «%s»:"
msgstr "Не ўдалося выняць прывод \"%s\":"
#: extensions/drive-menu/extension.js:128
#: extensions/drive-menu/extension.js:125
msgid "Removable devices"
msgstr "Здымныя прылады"
msgstr "Зменныя прыстасаванні"
#: extensions/drive-menu/extension.js:155
#: extensions/drive-menu/extension.js:150
msgid "Open Files"
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 its possible to customize the greeting message."
msgstr ""
"Example пакажа як ствараць пашырэнні для Shell. Сам па сабе ён мае мала "
"функцыянальнасці.\n"
"Тым не менш, можна змяніць тэкст прывітання."
#: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:5
#, fuzzy
msgid "Use more screen for windows"
msgstr "Выкарыстоўваць большую плошчу экрана для вокнаў"
#: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:6
#, fuzzy
msgid ""
"Try to use more screen for placing window thumbnails by adapting to screen "
"aspect ratio, and consolidating them further to reduce the bounding box. "
"This setting applies only with the natural placement strategy."
msgstr ""
"Спрабаваць выкарыстаць большую плошчу экрана для размяшчэння мініяцюр праз "
"змяненне суадносінаў бакоў экрана, ўшчыльняючы іх, каб зменшыць памеры "
"абмежавальнай рамкі. Гэты параметр ужываецца толькі з натуральным "
"Спрабаваць выкарыстаць большую плошчу экрана для размяшчэння мініяцюр шляхам "
"змянення суадносінаў бакоў экрана і ўшчыльняючы іх з мэтай змяншэння памераў "
"абмежавальнай рамкі. Гэты параметр ужываецца толькі разам з звычайным "
"размяшчэннем мініяцюр."
#: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:11
msgid "Place window captions on top"
msgstr "Размяшчаць подпіс акна зверху"
msgstr "Змяшчаць загалоўкі вокнаў зверху"
#: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:12
msgid ""
@@ -98,243 +200,156 @@ msgid ""
"shell default of placing it at the bottom. Changing this setting requires "
"restarting the shell to have any effect."
msgstr ""
"Калі выбрана, подпіс акна будзе над мініяцюрай, а не пад ей (як "
"перадвызначана). Каб змена налады ўступіла ў сілу, трэба перазапусціць "
"абалонку."
"Калі выбрана, загалоўкі вокнаў будуць размешчаны ўверсе мініяцюры, а не "
"знізу, як прадвызначана. Для таго, каб гэтая настройка ўступіла ў сілу, "
"трэба перазапусціць абалонку."
#: extensions/places-menu/extension.js:89
#: extensions/places-menu/extension.js:93
#: extensions/places-menu/extension.js:78
#: extensions/places-menu/extension.js:81
msgid "Places"
msgstr "Месцы"
#: extensions/places-menu/placeDisplay.js:46
#, javascript-format
msgid "Failed to launch “%s”"
msgstr "Не ўдалося запусціць «%s»"
#: extensions/places-menu/placeDisplay.js:61
#: extensions/places-menu/placeDisplay.js:65
#, javascript-format
msgid "Failed to mount volume for “%s”"
msgstr "Не ўдалося прымацаваць том для «%s»."
msgstr "Не ўдалося прымацаваць том для \"%s\"."
#: extensions/places-menu/placeDisplay.js:148
#: extensions/places-menu/placeDisplay.js:171
#: extensions/places-menu/placeDisplay.js:78
#, javascript-format
msgid "Failed to launch “%s”"
msgstr "Не ўдалося запусціць \"%s\""
#: extensions/places-menu/placeDisplay.js:137
#: extensions/places-menu/placeDisplay.js:160
msgid "Computer"
msgstr "Камп'ютар"
#: extensions/places-menu/placeDisplay.js:359
#: extensions/places-menu/placeDisplay.js:303
msgid "Home"
msgstr "Хатняя папка"
msgstr "Дамашняя папка"
#: extensions/places-menu/placeDisplay.js:404
#: extensions/places-menu/placeDisplay.js:347
msgid "Browse Network"
msgstr "Агляд сеткі"
#: extensions/screenshot-window-sizer/org.gnome.shell.extensions.screenshot-window-sizer.gschema.xml:7
msgid "Cycle Screenshot Sizes"
msgstr "Паслядоўнасць змены памераў для здымка экрана"
msgstr "Чаргаваць памеры экраннага здымка"
#: extensions/screenshot-window-sizer/org.gnome.shell.extensions.screenshot-window-sizer.gschema.xml:11
msgid "Cycle Screenshot Sizes Backward"
msgstr "Адваротная паслядоўнасць змены памераў для здымка экрана"
msgstr "Чаргаваць памеры экраннага здымка ў адваротным напрамку"
#: extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml:5
msgid "Theme name"
msgstr "Назва тэмы"
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"
msgstr ""
"Імя матыву аздаблення, які будзе загружаны з ~/.themes/name/gnome-shell"
#: extensions/window-list/extension.js:98
#: extensions/window-list/extension.js:110
msgid "Close"
msgstr "Закрыць"
#: extensions/window-list/extension.js:118
#: extensions/window-list/extension.js:129
msgid "Unminimize"
msgstr "Скасаваць згортванне"
msgstr "Скасаваць мінімалізацыю"
#: extensions/window-list/extension.js:118
#: extensions/window-list/extension.js:130
msgid "Minimize"
msgstr "Згарнуць"
msgstr "Мінімалізаваць"
#: extensions/window-list/extension.js:125
#: extensions/window-list/extension.js:136
msgid "Unmaximize"
msgstr "Скасаваць разгортванне"
msgstr "Скасаваць максімалізацыю"
#: extensions/window-list/extension.js:125
#: extensions/window-list/extension.js:137
msgid "Maximize"
msgstr "Разгарнуць"
msgstr "Максімалізаваць"
#: extensions/window-list/extension.js:432
#: extensions/window-list/extension.js:420
msgid "Minimize all"
msgstr "Згарнуць усе"
msgstr "Мінімалізаваць усе"
#: extensions/window-list/extension.js:438
#: extensions/window-list/extension.js:428
msgid "Unminimize all"
msgstr "Скасаваць згортванне для ўсіх"
msgstr "Скасаваць мінімалізацыю для ўсіх"
#: extensions/window-list/extension.js:444
#: extensions/window-list/extension.js:436
msgid "Maximize all"
msgstr "Разгарнуць усе"
msgstr "Максімалізаваць усе"
#: extensions/window-list/extension.js:452
#: extensions/window-list/extension.js:445
msgid "Unmaximize all"
msgstr "Скасаваць разгортванне для ўсіх"
msgstr "Скасаваць максімалізацыю для ўсіх"
#: extensions/window-list/extension.js:460
#: extensions/window-list/extension.js:454
msgid "Close all"
msgstr "Закрыць усе"
#: extensions/window-list/extension.js:737
#: 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 "Умовы групавання вокнаў"
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» (заўсёды)."
"Вырашае калі групаваць вокны адной праграмы ў спісе вокнаў. Магчымыя "
"значэнні: \"never\" (ніколі), \"auto\" (аўтаматычна), \"always\" (заўсёды)."
#: 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 "Паказваць вокны з усіх працоўных прастор"
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 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:29
#: extensions/window-list/prefs.js:32
msgid "Window Grouping"
msgstr "Групаванне вокнаў"
#: extensions/window-list/prefs.js:58
#: extensions/window-list/prefs.js:50
msgid "Never group windows"
msgstr "Ніколі не групаваць вокны"
#: extensions/window-list/prefs.js:59
#: extensions/window-list/prefs.js:51
msgid "Group windows when space is limited"
msgstr "Групаваць вокны калі не хапае месца"
#: extensions/window-list/prefs.js:60
#: extensions/window-list/prefs.js:52
msgid "Always group windows"
msgstr "Заўсёды групаваць вокны"
#: extensions/window-list/prefs.js:94
#: extensions/window-list/prefs.js:75
msgid "Show on all monitors"
msgstr "Паказваць на ўсіх маніторах"
msgstr "Паказаць усе маніторы"
#: extensions/window-list/workspaceIndicator.js:247
#: extensions/workspace-indicator/extension.js:253
msgid "Workspace Indicator"
msgstr "Індыкатар працоўнай прасторы"
#: extensions/workspace-indicator/prefs.js:34
#: extensions/workspace-indicator/prefs.js:141
msgid "Workspace Names"
msgstr "Назвы працоўных прастор"
msgstr "Назвы працоўных прастораў"
#: extensions/workspace-indicator/prefs.js:67
#: extensions/workspace-indicator/prefs.js:157
msgid "Name"
msgstr "Імя"
#: extensions/workspace-indicator/prefs.js:198
#, javascript-format
msgid "Workspace %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 its possible to customize the greeting message."
#~ msgstr ""
#~ "Example пакажа як ствараць пашырэнні для Shell. Сам па сабе ён мае мала "
#~ "функцыянальнасці.\n"
#~ "Тым не менш, можна змяніць тэкст прывітання."
#~ msgid "Name"
#~ msgstr "Імя"

View File

@@ -83,7 +83,7 @@ msgid ""
msgstr ""
"Intenta utilitzar més espai de la pantalla per a posicionar les miniatures de "
"les finestres adaptant-les a la ràtio d'aspecte de la pantalla, consolidant-"
"les més per a reduir la caixa que les envolta. Aquest paràmetre de "
"les més per a reduir la capsa que les envolta. Aquest paràmetre de "
"configuració només s'aplica a l'estratègia de posicionament de finestres "
"natural."

111
po/eo.po
View File

@@ -4,38 +4,36 @@
# Ryan LORTIE <desrt@desrt.ca>, 2013.
# Daniel PUENTES <blatberk@openmailbox.org>, 2015.
# Kristjan SCHMIDT <kristjan.schmidt@googlemail.com>, 2011-2019.
# Carmen Bianca BAKKER <carmen@carmenbianca.eu>, 2021.
#
msgid ""
msgstr ""
"Project-Id-Version: gnome-shell-extensions master\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell-extensions/"
"issues\n"
"POT-Creation-Date: 2021-03-27 20:14+0000\n"
"PO-Revision-Date: 2021-03-29 17:24+0200\n"
"Last-Translator: Carmen Bianca BAKKER <carmen@carmenbianca.eu>\n"
"POT-Creation-Date: 2020-03-31 07:16+0000\n"
"PO-Revision-Date: 2020-04-18 10:59+0200\n"
"Last-Translator: Kristjan SCHMIDT <kristjan.schmidt@googlemail.com>\n"
"Language-Team: Esperanto <gnome-eo-list@gnome.org>\n"
"Language: eo\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
"X-Generator: Gtranslator 3.38.0\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Poedit 2.3\n"
"X-Project-Style: gnome\n"
#: data/gnome-classic.desktop.in:3
#: data/gnome-classic.desktop.in:3 data/gnome-classic.session.desktop.in:3
msgid "GNOME Classic"
msgstr "GNOME-klasika"
#: data/gnome-classic.desktop.in:4
msgid "This session logs you into GNOME Classic"
msgstr "Ĉi tiu seanco ensalutas vin GNOME-klasiken"
msgstr "Ĉi seanco ensalutas vin GNOME-klasiken"
#: extensions/apps-menu/extension.js:113
msgid "Favorites"
msgstr "Plej ŝatataj"
#: extensions/apps-menu/extension.js:367
#: extensions/apps-menu/extension.js:369
msgid "Applications"
msgstr "Aplikaĵoj"
@@ -51,26 +49,39 @@ msgstr ""
"Listo de ĉenoj, ĉiu enhavas aplikaĵan identigilon ('desktop' dosiernomo), "
"sevkita per dupunkto kaj la laborspaca numero"
#: extensions/auto-move-windows/prefs.js:35
msgid "Workspace Rules"
msgstr "Laborspacaj reguloj"
#: extensions/auto-move-windows/prefs.js:59
msgid "Application"
msgstr "Aplikaĵo"
#: extensions/auto-move-windows/prefs.js:237
#: extensions/auto-move-windows/prefs.js:70
#: extensions/auto-move-windows/prefs.js:133
msgid "Workspace"
msgstr "Laborspaco"
#: extensions/auto-move-windows/prefs.js:88
msgid "Add Rule"
msgstr "Aldoni regulon"
#: extensions/auto-move-windows/prefs.js:110
msgid "Create new matching rule"
msgstr "Krei novan kongruantan regulon"
#: extensions/auto-move-windows/prefs.js:116
msgid "Add"
msgstr "Aldoni"
#. TRANSLATORS: %s is the filesystem name
#: extensions/drive-menu/extension.js:112
#: extensions/drive-menu/extension.js:103
#: extensions/places-menu/placeDisplay.js:233
#, javascript-format
msgid "Ejecting drive “%s” failed:"
msgstr "Elĵeto de volumo “%s” malsukcesis:"
#: extensions/drive-menu/extension.js:128
#: extensions/drive-menu/extension.js:119
msgid "Removable devices"
msgstr "Demeteblaj aparatoj"
#: extensions/drive-menu/extension.js:152
#: extensions/drive-menu/extension.js:146
msgid "Open Files"
msgstr "Malfermi dosierojn"
@@ -102,8 +113,8 @@ msgstr ""
"estas meti ĝin malsupre). Si vi ŝanĝas ĉi agordon tiam vi devas restartigi "
"la ŝelon."
#: extensions/places-menu/extension.js:89
#: extensions/places-menu/extension.js:92
#: extensions/places-menu/extension.js:80
#: extensions/places-menu/extension.js:84
msgid "Places"
msgstr "Lokoj"
@@ -152,37 +163,37 @@ msgstr "Fermi"
#: extensions/window-list/extension.js:118
msgid "Unminimize"
msgstr "Malminimumigi"
msgstr "Neplejetigi"
#: extensions/window-list/extension.js:118
msgid "Minimize"
msgstr "Minimumigi"
msgstr "Plejetigi"
#: extensions/window-list/extension.js:125
msgid "Unmaximize"
msgstr "Malmaksimumigi"
msgstr "Nemaksimumigi"
#: extensions/window-list/extension.js:125
msgid "Maximize"
msgstr "Maksimumigi"
#: extensions/window-list/extension.js:432
#: extensions/window-list/extension.js:429
msgid "Minimize all"
msgstr "Minimumigi ĉiujn"
msgstr "Plejetigi ĉiujn"
#: extensions/window-list/extension.js:438
#: extensions/window-list/extension.js:435
msgid "Unminimize all"
msgstr "Malminimumigi ĉiujn"
msgstr "Neplejetigi ĉiujn"
#: extensions/window-list/extension.js:444
#: extensions/window-list/extension.js:441
msgid "Maximize all"
msgstr "Maksimumigi ĉiujn"
#: extensions/window-list/extension.js:452
#: extensions/window-list/extension.js:449
msgid "Unmaximize all"
msgstr "Malmaksimumigi ĉiujn"
msgstr "Nemaksimumigi ĉiujn"
#: extensions/window-list/extension.js:460
#: extensions/window-list/extension.js:457
msgid "Close all"
msgstr "Fermi ĉiujn"
@@ -203,7 +214,7 @@ msgstr ""
"Validaj valoroj estas “neniam”, “aŭtomate” kaj ĉiam”."
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:20
#: extensions/window-list/prefs.js:100
#: extensions/window-list/prefs.js:82
msgid "Show windows from all workspaces"
msgstr "Montri la fenestrojn de ĉiuj laborspacoj"
@@ -222,56 +233,44 @@ msgid ""
msgstr ""
"Ĉu montri la fenestroliston en ĉiuj konektitaj ekranoj aŭ nur en la ĉefa."
#: extensions/window-list/prefs.js:29
#: extensions/window-list/prefs.js:25
msgid "Window Grouping"
msgstr "Fenestra grupigo"
#: extensions/window-list/prefs.js:58
#: extensions/window-list/prefs.js:47
msgid "Never group windows"
msgstr "Neniam grupigi fenestrojn"
#: extensions/window-list/prefs.js:59
#: extensions/window-list/prefs.js:48
msgid "Group windows when space is limited"
msgstr "Grupigi fenestrojn kiam spaco limitas"
#: extensions/window-list/prefs.js:60
#: extensions/window-list/prefs.js:49
msgid "Always group windows"
msgstr "Ĉiam grupigi fenestrojn"
#: extensions/window-list/prefs.js:94
#: extensions/window-list/prefs.js:75
msgid "Show on all monitors"
msgstr "Montri en ĉiuj ekranoj"
#: extensions/window-list/workspaceIndicator.js:249
#: extensions/workspace-indicator/extension.js:255
#: extensions/window-list/workspaceIndicator.js:209
#: extensions/workspace-indicator/extension.js:215
msgid "Workspace Indicator"
msgstr "Laborspaco Indikilo"
#: extensions/workspace-indicator/prefs.js:34
#: extensions/workspace-indicator/prefs.js:129
msgid "Workspace Names"
msgstr "Laborspacaj nomoj"
#: extensions/workspace-indicator/prefs.js:67
#: extensions/workspace-indicator/prefs.js:149
msgid "Name"
msgstr "Nomo"
#: extensions/workspace-indicator/prefs.js:189
#, javascript-format
msgid "Workspace %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"

View File

@@ -12,20 +12,20 @@ msgstr ""
"Project-Id-Version: gnome-shell-extensions\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell-extensions/"
"issues\n"
"POT-Creation-Date: 2020-10-17 20:14+0000\n"
"PO-Revision-Date: 2021-03-15 21:32+0200\n"
"Last-Translator: JR-Fi <starman@starman.fi>\n"
"POT-Creation-Date: 2020-05-28 00:55+0000\n"
"PO-Revision-Date: 2020-08-16 18:17+0300\n"
"Last-Translator: Jiri Grönroos <jiri.gronroos+l10n@iki.fi>\n"
"Language-Team: suomi <lokalisointi-lista@googlegroups.com>\n"
"Language: fi\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Poedit 2.0.6\n"
"X-Generator: Poedit 2.4.1\n"
"X-Project-Style: gnome\n"
"X-POT-Import-Date: 2012-03-05 15:06:12+0000\n"
#: data/gnome-classic.desktop.in:3
#: data/gnome-classic.desktop.in:3 data/gnome-classic.session.desktop.in:3
msgid "GNOME Classic"
msgstr "Perinteinen Gnome"
@@ -50,8 +50,6 @@ msgid ""
"A list of strings, each containing an application id (desktop file name), "
"followed by a colon and the workspace number"
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:35
msgid "Workspace Rules"
@@ -86,9 +84,6 @@ msgid ""
"aspect ratio, and consolidating them further to reduce the bounding box. "
"This setting applies only with the natural placement strategy."
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
msgid "Place window captions on top"
@@ -132,14 +127,15 @@ msgstr "Koti"
msgid "Browse Network"
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
msgid "Cycle Screenshot Sizes"
msgstr "Vaihda kuvakaappausten kokojen välillä"
msgstr "Vaihtele kuvakaappausten kokojen välillä"
#: extensions/screenshot-window-sizer/org.gnome.shell.extensions.screenshot-window-sizer.gschema.xml:11
#, fuzzy
#| msgid "Cycle Screenshot Sizes"
msgid "Cycle Screenshot Sizes Backward"
msgstr "Vaihda kuvakaappausten kokojen välillä taaksepäin"
msgstr "Vaihtele kuvakaappausten kokojen välillä"
#: extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml:5
msgid "Theme name"
@@ -169,27 +165,27 @@ msgstr "Palauta suurennus"
msgid "Maximize"
msgstr "Suurenna"
#: extensions/window-list/extension.js:432
#: extensions/window-list/extension.js:428
msgid "Minimize all"
msgstr "Pienennä kaikki"
#: extensions/window-list/extension.js:438
#: extensions/window-list/extension.js:434
msgid "Unminimize all"
msgstr "Palauta kaikkien koko"
#: extensions/window-list/extension.js:444
#: extensions/window-list/extension.js:440
msgid "Maximize all"
msgstr "Suurenna kaikki"
#: extensions/window-list/extension.js:452
#: extensions/window-list/extension.js:448
msgid "Unmaximize all"
msgstr "Palauta kaikkien koko"
#: extensions/window-list/extension.js:460
#: extensions/window-list/extension.js:456
msgid "Close all"
msgstr "Sulje kaikki"
#: extensions/window-list/extension.js:738
#: extensions/window-list/extension.js:734
msgid "Window List"
msgstr "Ikkunaluettelo"

View File

@@ -8,23 +8,23 @@ msgstr ""
"Project-Id-Version: gnome-shell-extensions master\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell-extensions/"
"issues\n"
"POT-Creation-Date: 2020-10-08 21:24+0000\n"
"PO-Revision-Date: 2020-10-17 22:14+0200\n"
"POT-Creation-Date: 2020-05-28 00:55+0000\n"
"PO-Revision-Date: 2020-07-12 18:10+0200\n"
"Last-Translator: Fabio Tomat <f.t.public@gmail.com>\n"
"Language-Team: Friulian <fur@li.org>\n"
"Language: fur\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 2.4.1\n"
"X-Generator: Poedit 2.3.1\n"
#: data/gnome-classic.desktop.in:3
#: data/gnome-classic.desktop.in:3 data/gnome-classic.session.desktop.in:3
msgid "GNOME Classic"
msgstr "GNOME Classic"
#: data/gnome-classic.desktop.in:4
msgid "This session logs you into GNOME Classic"
msgstr "Cheste session ti fâs jentrâ in GNOME Classic"
msgstr "Cheste session a si invie cun GNOME classic"
#: extensions/apps-menu/extension.js:113
msgid "Favorites"
@@ -43,8 +43,8 @@ msgid ""
"A list of strings, each containing an application id (desktop file name), "
"followed by a colon and the workspace number"
msgstr ""
"Une liste di stringhis, ogniune e ten il ID di une aplicazion (non dal file ."
"desktop), cun daûr doi ponts e il numar dal spazi di lavôr"
"Une liste di stringhis, ogniune a ten il ID di une aplicazion (non dal file ."
"desktop), seguît di doi ponts e il numar dal spazi di lavôr"
#: extensions/auto-move-windows/prefs.js:35
msgid "Workspace Rules"
@@ -63,15 +63,15 @@ msgstr "No si è rivâts a parâ fûr la unitât “%s”»:"
#: extensions/drive-menu/extension.js:128
msgid "Removable devices"
msgstr "Dispositîfs estraibii"
msgstr "Argagn rimovibil"
#: extensions/drive-menu/extension.js:155
msgid "Open Files"
msgstr "Vierç i files"
msgstr "Vierç i file"
#: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:5
msgid "Use more screen for windows"
msgstr "Dopre plui schermi pai barcons"
msgstr "Dopre plui spazi par i balcons"
#: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:6
msgid ""
@@ -79,14 +79,14 @@ msgid ""
"aspect ratio, and consolidating them further to reduce the bounding box. "
"This setting applies only with the natural placement strategy."
msgstr ""
"Cîr di doprâ plui schermi par plaçâ lis miniaturis dai barcons, adatant il "
"rapuart di aspiet dal visôr e consolidant ancjemo di plui lis miniaturis par "
"ridusi il spazi complessîf. Cheste impostazion si apliche dome se "
"l'algoritmi di plaçament al è naturâl."
"Cîr di doprâ plui puest par plaçâ lis miniaturis dai balcons, adatânsi al "
"rapuart di aspiet dal visôr e consolidanlis ancjemo di plui par ridusi il "
"spazi complessîf. Cheste impostazion a si apliche dome se l'algoritmo di "
"posizionament al è \"natural\"."
#: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:11
msgid "Place window captions on top"
msgstr "Met il titul dal barcon parsore"
msgstr "Met il titul dal balcon insomp"
#: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:12
msgid ""
@@ -94,9 +94,9 @@ msgid ""
"shell default of placing it at the bottom. Changing this setting requires "
"restarting the shell to have any effect."
msgstr ""
"Se VÊR, al place i titui dai barcons denant des relativis miniaturis, "
"sorpassant il compuartament predefinît de shell, che lis place in bas. "
"Cambiant cheste impostazion si scugne tornâ a inviâ la shell."
"Se VÊR, al place i titui dai balcons insomp as relativis miniaturis, lant in "
"volte al compuartament normâl de shell, che lis place in bas.Cambiant cheste "
"impostazion a si scugne tornâ a inviâ la shell."
#: extensions/places-menu/extension.js:89
#: extensions/places-menu/extension.js:93
@@ -120,7 +120,7 @@ msgstr "Computer"
#: extensions/places-menu/placeDisplay.js:359
msgid "Home"
msgstr "Home"
msgstr "Cjase"
#: extensions/places-menu/placeDisplay.js:404
msgid "Browse Network"
@@ -128,11 +128,11 @@ msgstr "Esplore rêt"
#: extensions/screenshot-window-sizer/org.gnome.shell.extensions.screenshot-window-sizer.gschema.xml:7
msgid "Cycle Screenshot Sizes"
msgstr "Dimensions videadis catuardis ciclichis"
msgstr "Dimensions caturis di schermi ciclichis"
#: extensions/screenshot-window-sizer/org.gnome.shell.extensions.screenshot-window-sizer.gschema.xml:11
msgid "Cycle Screenshot Sizes Backward"
msgstr "Dimensions videadis caturadis ciclichis indaûr"
msgstr "Dimensions caturis di schermi ciclichis indaûr"
#: extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml:5
msgid "Theme name"
@@ -184,19 +184,19 @@ msgstr "Siere ducj"
#: extensions/window-list/extension.js:734
msgid "Window List"
msgstr "Liste barcons"
msgstr "Liste balcons"
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:12
msgid "When to group windows"
msgstr "Cuant meti in grup i barcons"
msgstr "Quant ingru i balcons"
#: 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 ""
"Al decît cuant meti dongje i barcons de stesse aplicazion su la liste dai "
"barcons. I valôrs pussibii a son “never”, “auto” e “always”."
"Al decît cuant intropâ i balcons de stesse aplicazion su le liste dai "
"balcons. I pussibii valôrs a son “never”, “auto” e “always”."
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:20
#: extensions/window-list/prefs.js:100
@@ -218,23 +218,23 @@ msgid ""
"primary one."
msgstr ""
"Indiche se mostrâ la liste dai barcons su ducj i visôrs tacâts o nome sul "
"chel principâl."
"principâl."
#: extensions/window-list/prefs.js:29
msgid "Window Grouping"
msgstr "Intropament di barcons"
msgstr "Ingrumament balcons"
#: extensions/window-list/prefs.js:58
msgid "Never group windows"
msgstr "No sta meti mai in grup i barcons"
msgstr "No ingru i balcons"
#: extensions/window-list/prefs.js:59
msgid "Group windows when space is limited"
msgstr "Met dongje i barcons cuant che il spazi al è limitât"
msgstr "Ingrume i balcons quanche al'è pôc puest"
#: extensions/window-list/prefs.js:60
msgid "Always group windows"
msgstr "Met simpri in grup i barcons"
msgstr "Ingrume simpri i balcons"
#: extensions/window-list/prefs.js:94
msgid "Show on all monitors"

View File

@@ -1,29 +1,29 @@
# Galician translation for gnome-shell-extensions.
# Copyright (C) 2011 gnome-shell-extensions's COPYRIGHT HOLDER
# This file is distributed under the same license as the gnome-shell-extensions package.
#
# Fran Diéguez <frandieguez@gnome.org>, 2011.
# Fran Dieguez <frandieguez@gnome.org>, 2011-2020, 2021.
# Fran Dieguez <frandieguez@gnome.org>, 2011-2020.
#
msgid ""
msgstr ""
"Project-Id-Version: gnome-shell-extensions master\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell-extensions/is"
"sues\n"
"POT-Creation-Date: 2020-10-17 20:14+0000\n"
"PO-Revision-Date: 2021-02-24 20:41+0100\n"
"Last-Translator: Fran Diéguez <frandieguez@gnome.org>\n"
"Language-Team: Proxecto Trasno <proxecto@trasno.gal>\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell-extensions/"
"issues\n"
"POT-Creation-Date: 2020-05-28 00:55+0000\n"
"PO-Revision-Date: 2020-08-13 01:02+0200\n"
"Last-Translator: Fran Dieguez <frandieguez@gnome.org>\n"
"Language-Team: Galician <proxecto@trasno.gal>\n"
"Language: gl\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
"X-Generator: Gtranslator 3.38.0\n"
"X-Generator: Gtranslator 3.36.0\n"
"X-Project-Style: gnome\n"
#: data/gnome-classic.desktop.in:3
#: data/gnome-classic.desktop.in:3 data/gnome-classic.session.desktop.in:3
msgid "GNOME Classic"
msgstr "GNOME clásico"
msgstr "GNOME clasico"
#: data/gnome-classic.desktop.in:4
msgid "This session logs you into GNOME Classic"
@@ -50,6 +50,7 @@ msgstr ""
"de ficheiro desktop), seguido por unha coma e o número do espazo de traballo"
#: extensions/auto-move-windows/prefs.js:35
#| msgid "Workspace Names"
msgid "Workspace Rules"
msgstr "Regras da área de traballo"
@@ -74,7 +75,7 @@ msgstr "Abrir ficheiros"
#: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:5
msgid "Use more screen for windows"
msgstr "Usar mais pantalla para as xanelas"
msgstr "Usar máis pantalla para as xanelas"
#: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:6
msgid ""
@@ -82,14 +83,13 @@ msgid ""
"aspect ratio, and consolidating them further to reduce the bounding box. "
"This setting applies only with the natural placement strategy."
msgstr ""
"Tente usar mais pantalla para dispor as miniaturas das xanelas adaptándose"
" "
"taxa de aspecto da pantalla e consolidalas para reducir a caixa envolvente. "
"Esta configuración aplícase só para a estratexia de disposición natural."
"Tente usar máis pantalla para dispor as miniaturas das xanelas adaptándose"
"taxa de aspecto da pantalla e consolidalas para reducir a caixa saltante. "
"Esta configuración aplícase só para a estratexia de disposición natural."
#: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:11
msgid "Place window captions on top"
msgstr "Por a xanela sempre na parte superior"
msgstr "Pór a xanela sempre na parte superior"
#: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:12
msgid ""
@@ -165,27 +165,27 @@ msgstr "Restaurar"
msgid "Maximize"
msgstr "Maximizar"
#: extensions/window-list/extension.js:432
#: extensions/window-list/extension.js:428
msgid "Minimize all"
msgstr "Minimizar todo"
#: extensions/window-list/extension.js:438
#: extensions/window-list/extension.js:434
msgid "Unminimize all"
msgstr "Restaurar todo"
#: extensions/window-list/extension.js:444
#: extensions/window-list/extension.js:440
msgid "Maximize all"
msgstr "Maximizar todo"
#: extensions/window-list/extension.js:452
#: extensions/window-list/extension.js:448
msgid "Unmaximize all"
msgstr "Restaurar todo"
#: extensions/window-list/extension.js:460
#: extensions/window-list/extension.js:456
msgid "Close all"
msgstr "Pechar todo"
#: extensions/window-list/extension.js:738
#: extensions/window-list/extension.js:734
msgid "Window List"
msgstr "Lista de xanelas"
@@ -259,6 +259,7 @@ msgid "Workspace %d"
msgstr "Espazos de traballo %d"
#: extensions/workspace-indicator/prefs.js:218
#| msgid "Workspace"
msgid "Add Workspace"
msgstr "Engadir área de traballo"

362
po/ne.po
View File

@@ -6,304 +6,320 @@
msgid ""
msgstr ""
"Project-Id-Version: gnome-shell-extension gnome 3.14\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell-extensions/"
"issues\n"
"POT-Creation-Date: 2020-05-28 00:55+0000\n"
"PO-Revision-Date: 2021-05-01 11:32+0545\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
"shell&keywords=I18N+L10N&component=extensions\n"
"POT-Creation-Date: 2014-09-09 10:57+0000\n"
"PO-Revision-Date: 2014-09-14 21:52+0400\n"
"Last-Translator: Pawan Chitrakar <chautari@gmail.com>\n"
"Language-Team: Nepali Translation Team <chautari@gmail.com>\n"
"Language: ne\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 2.4.2\n"
"X-Generator: Poedit 1.6.9\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"Language: ne\n"
"X-Poedit-SourceCharset: UTF-8\n"
#: data/gnome-classic.desktop.in:3 data/gnome-classic.session.desktop.in:3
#: ../data/gnome-classic.desktop.in.h:1
#: ../data/gnome-classic.session.desktop.in.in.h:1
msgid "GNOME Classic"
msgstr "जिनोम क्लासिक"
#: data/gnome-classic.desktop.in:4
#: ../data/gnome-classic.desktop.in.h:2
msgid "This session logs you into GNOME Classic"
msgstr "यो सेसन जिनोम क्लासिकमा लगईन हुन्छ"
#: extensions/apps-menu/extension.js:113
#: ../data/gnome-shell-classic.desktop.in.in.h:1
msgid "GNOME Shell Classic"
msgstr "जिनोम शेल क्लासिक"
#: ../data/gnome-shell-classic.desktop.in.in.h:2
msgid "Window management and application launching"
msgstr "सञ्झ्याल प्रबन्ध र अनुप्रयोग सुरुआत "
#: ../data/org.gnome.shell.extensions.classic-overrides.gschema.xml.in.h:1
msgid "Attach modal dialog to the parent window"
msgstr ""
#: ../data/org.gnome.shell.extensions.classic-overrides.gschema.xml.in.h:2
msgid ""
"This key overrides the key in org.gnome.mutter when running GNOME Shell."
msgstr ""
#: ../data/org.gnome.shell.extensions.classic-overrides.gschema.xml.in.h:3
#, fuzzy
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.desktop.wm.preferences when running "
"GNOME Shell."
msgstr ""
#: ../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 ""
#: ../extensions/apps-menu/extension.js:113
msgid "Favorites"
msgstr "मनपर्ने"
#: extensions/apps-menu/extension.js:369
#: ../extensions/apps-menu/extension.js:282
msgid "Applications"
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.in.h:1
msgid "Application and workspace list"
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.in.h:2
msgid ""
"A list of strings, each containing an application id (desktop file name), "
"followed by a colon and the workspace number"
msgstr ""
"स्ट्रिङहरूको सूची, प्रत्येकमा अनुप्रयोग आईडी (डेस्कटप फाइल नाम) समाविष्ट छ, त्यसपछि "
"विराम र कार्यस्थान नम्बरद्वारा अनुगमन गरियो"
#: extensions/auto-move-windows/prefs.js:35
msgid "Workspace Rules"
msgstr "कार्यस्थान नियम"
#: ../extensions/auto-move-windows/prefs.js:60
msgid "Application"
msgstr "अनुप्रयोग"
#: extensions/auto-move-windows/prefs.js:243
#: ../extensions/auto-move-windows/prefs.js:69
#: ../extensions/auto-move-windows/prefs.js:127
msgid "Workspace"
msgstr "कार्यस्थल"
#: ../extensions/auto-move-windows/prefs.js:85
msgid "Add Rule"
msgstr "नियम थप्नुहोस्"
#. TRANSLATORS: %s is the filesystem name
#: extensions/drive-menu/extension.js:112
#: extensions/places-menu/placeDisplay.js:233
#, javascript-format
msgid "Ejecting drive “%s” failed:"
msgstr "\"%s\" ड्राइभ निकाल्न असफल भयो:"
#: ../extensions/auto-move-windows/prefs.js:106
msgid "Create new matching rule"
msgstr "मिल्ने नियम सिर्जना गर्नुहोस्"
#: extensions/drive-menu/extension.js:128
#: ../extensions/auto-move-windows/prefs.js:111
msgid "Add"
msgstr "थप्नुहोस्..."
#: ../extensions/drive-menu/extension.js:106
#, javascript-format
msgid "Ejecting drive '%s' failed:"
msgstr ""
#: ../extensions/drive-menu/extension.js:123
msgid "Removable devices"
msgstr "छुट्याउन मिल्ने यन्त्र"
#: extensions/drive-menu/extension.js:155
msgid "Open Files"
msgstr "खुला फाइल"
#: ../extensions/drive-menu/extension.js:150
msgid "Open File"
msgstr "फाइल खोल्नुहोस्"
#: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:5
#: ../extensions/example/extension.js:17
msgid "Hello, world!"
msgstr "हेलो विश्व"
#: ../extensions/example/org.gnome.shell.extensions.example.gschema.xml.in.h:1
#, fuzzy
msgid "Alternative greeting text."
msgstr "युआरएल (URL) %s हो, वैकल्पिक पाठ %s हो ।"
#: ../extensions/example/org.gnome.shell.extensions.example.gschema.xml.in.h:2
msgid ""
"If not empty, it contains the text that will be shown when clicking on the "
"panel."
msgstr ""
#: ../extensions/example/prefs.js:30
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 ""
#: ../extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml.in.h:1
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.in.h:2
msgid ""
"Try to use more screen for placing window thumbnails by adapting to screen "
"aspect ratio, and consolidating them further to reduce the bounding box. "
"This setting applies only with the natural placement strategy."
msgstr ""
"सञ्झ्याल थम्बनेलहरू पर्दा आकार अनुपातमा अनुकूल गरेर राख्नका लागि धेरै पर्दा प्रयोग गर्न "
"प्रयास गर्नुहोस्, र तिनीहरूलाई बाउन्डिङ बाकस घटाउन अझ संगठित गर्नुहोस् । यो तरिका "
"प्राकृतिक प्लेसमेन्ट रणनीतिमा मात्र लागू हुन्छ।"
#: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:11
#: ../extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml.in.h:3
#, fuzzy
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.in.h:4
msgid ""
"If true, place window captions on top the respective thumbnail, overriding "
"shell default of placing it at the bottom. Changing this setting requires "
"restarting the shell to have any effect."
msgstr ""
"ठीक भएमा, सम्बन्धित थम्बनेलको माथि सञ्झ्याल क्याप्सन राख्नुहोस्, यसलाई तल राख्ने "
"पूर्वनिर्धारित शेल अधिलेखन गर्नुहोस् । यो सेटिङ परिवर्तन गर्न कुनै प्रभाव पार्न शेल पुन: "
"सुरुआत गर्नु आवश्यक हुन्छ ।"
#: extensions/places-menu/extension.js:89
#: extensions/places-menu/extension.js:93
#: ../extensions/places-menu/extension.js:78
#: ../extensions/places-menu/extension.js:81
msgid "Places"
msgstr "ठाउँहरू"
#: extensions/places-menu/placeDisplay.js:46
#: ../extensions/places-menu/placeDisplay.js:57
#, javascript-format
msgid "Failed to launch “%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\" का लागि भोल्युम माउन्ट गर्न असफल"
#: extensions/places-menu/placeDisplay.js:148
#: extensions/places-menu/placeDisplay.js:171
#: ../extensions/places-menu/placeDisplay.js:99
#: ../extensions/places-menu/placeDisplay.js:122
msgid "Computer"
msgstr "कम्प्युटर"
#: extensions/places-menu/placeDisplay.js:359
#: ../extensions/places-menu/placeDisplay.js:200
msgid "Home"
msgstr "गृह"
#: extensions/places-menu/placeDisplay.js:404
#: ../extensions/places-menu/placeDisplay.js:287
msgid "Browse Network"
msgstr "सञ्जाल ब्राउज गर्नुहोस्"
#: extensions/screenshot-window-sizer/org.gnome.shell.extensions.screenshot-window-sizer.gschema.xml:7
msgid "Cycle Screenshot Sizes"
msgstr "स्क्रिनसट साइज चक्र"
#: ../extensions/systemMonitor/extension.js:214
msgid "CPU"
msgstr "सीपीयू (CPU)"
#: extensions/screenshot-window-sizer/org.gnome.shell.extensions.screenshot-window-sizer.gschema.xml:11
msgid "Cycle Screenshot Sizes Backward"
msgstr "स्क्रिनसट साइज उल्तो चक्र"
#: ../extensions/systemMonitor/extension.js:267
msgid "Memory"
msgstr "स्मृति"
#: extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml:5
#: ../extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml.in.h:1
msgid "Theme name"
msgstr "सारभूत नाम"
#: extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml:6
#: ../extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml.in.h:2
msgid "The name of the theme, to be loaded from ~/.themes/name/gnome-shell"
msgstr "~/.themes/name/gnome-shell बाट लोड गरिनुपर्ने विषयवस्तुको नाम"
msgstr ""
#: extensions/window-list/extension.js:98
#: ../extensions/window-list/extension.js:110
msgid "Close"
msgstr "बन्द"
#: extensions/window-list/extension.js:118
#: ../extensions/window-list/extension.js:120
msgid "Unminimize"
msgstr "न्यूनतम नबनाउनुहोस्"
msgstr ""
#: extensions/window-list/extension.js:118
#: ../extensions/window-list/extension.js:121
msgid "Minimize"
msgstr "सानो बनाउनुहोस्"
#: extensions/window-list/extension.js:125
#: ../extensions/window-list/extension.js:127
msgid "Unmaximize"
msgstr "अघिकतम नबनाउनुहोस्"
msgstr ""
#: extensions/window-list/extension.js:125
#: ../extensions/window-list/extension.js:128
msgid "Maximize"
msgstr "ठूलो बनाउनुहोस्"
#: extensions/window-list/extension.js:428
#: ../extensions/window-list/extension.js:300
msgid "Minimize all"
msgstr "सबै सानो बनाउनुहोस्"
#: extensions/window-list/extension.js:434
#: ../extensions/window-list/extension.js:308
#, fuzzy
msgid "Unminimize all"
msgstr "सबै न्यूनतम नबनाउनुहोस्"
msgstr "सबै"
#: extensions/window-list/extension.js:440
#: ../extensions/window-list/extension.js:316
msgid "Maximize all"
msgstr "सबै ठूलो बनाउनुहोस्"
#: extensions/window-list/extension.js:448
#: ../extensions/window-list/extension.js:325
#, fuzzy
msgid "Unmaximize all"
msgstr "सबैलाई अघिकतम नबनाउनुहोस्"
msgstr "सबै"
#: extensions/window-list/extension.js:456
#: ../extensions/window-list/extension.js:334
msgid "Close all"
msgstr "सबै बन्द गर्नुहोस्"
#: extensions/window-list/extension.js:734
#: ../extensions/window-list/extension.js:644
#: ../extensions/workspace-indicator/extension.js:30
#, fuzzy
msgid "Workspace Indicator"
msgstr "कार्यस्थल"
#: ../extensions/window-list/extension.js:808
msgid "Window List"
msgstr "सञ्झ्याल सूची"
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:12
#: ../extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml.in.h:1
msgid "When to group windows"
msgstr "कहिले सञ्झ्याल समुहबध्द गर्ने"
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:13
#: ../extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml.in.h:2
msgid ""
"Decides when to group windows from the same application on the window list. "
"Possible values are never”, “auto and always."
"Possible values are \"never\", \"auto\" and \"always\"."
msgstr ""
"सञ्झ्याल सूचीमा उस्तै अनुप्रयोगबाट कहिले समूह बनाउने निर्णय गर्दछ । सम्भावित मान \"कहिले "
"पनि\", \"स्वचालित\" र \"सधैँ\" हुन् ।"
#: 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 "सबै कार्यस्थानबाट सन्झ्याल देखाउनुहोस्"
#: 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:29
#: ../extensions/window-list/prefs.js:30
msgid "Window Grouping"
msgstr "समूहबद्ध सञ्झ्याल"
#: extensions/window-list/prefs.js:58
#: ../extensions/window-list/prefs.js:49
msgid "Never group windows"
msgstr "सञ्झ्याल समुहबध्द नगर्ने"
#: extensions/window-list/prefs.js:59
#: ../extensions/window-list/prefs.js:50
msgid "Group windows when space is limited"
msgstr "खाली स्थान सिमित भएको बेलामा सञ्झ्यालहरू समूह गर्नुहोस्"
msgstr ""
#: extensions/window-list/prefs.js:60
#: ../extensions/window-list/prefs.js:51
msgid "Always group windows"
msgstr "सञ्झ्याल सधैँ समुहबध्द गर्ने"
#: extensions/window-list/prefs.js:94
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
#: ../extensions/workspace-indicator/prefs.js:141
msgid "Workspace Names"
msgstr "कार्यस्थल नाम"
#: extensions/workspace-indicator/prefs.js:67
#: ../extensions/workspace-indicator/prefs.js:157
msgid "Name"
msgstr "नाम: "
#: ../extensions/workspace-indicator/prefs.js:198
#, javascript-format
msgid "Workspace %d"
msgstr "कार्यस्थल %d"
#: extensions/workspace-indicator/prefs.js:218
msgid "Add Workspace"
msgstr "कार्यस्थल थप्नुहोस्"
#~ msgid "GNOME Shell Classic"
#~ msgstr "जिनोम शेल क्लासिक"
#~ msgid "Window management and application launching"
#~ msgstr "सञ्झ्याल प्रबन्ध र अनुप्रयोग सुरुआत "
#, fuzzy
#~ msgid "Arrangement of buttons on the titlebar"
#~ msgstr "टाँकहरू"
#~ msgid "Thumbnail only"
#~ msgstr "थम्बनेल प्रतिमा मात्रै"
#~ msgid "Application icon only"
#~ msgstr "अनुप्रयोग प्रतिमा मात्रै"
#~ msgid "Thumbnail and application icon"
#~ msgstr "थम्बनेल प्रतिमा र अनुप्रयोग प्रतिमा"
#~ msgid "Present windows as"
#~ msgstr "हालको सञ्झ्याल"
#~ msgid "Application"
#~ msgstr "अनुप्रयोग"
#~ msgid "Create new matching rule"
#~ msgstr "मिल्ने नियम सिर्जना गर्नुहोस्"
#~ msgid "Add"
#~ msgstr "थप्नुहोस्..."
#~ msgid "Hello, world!"
#~ msgstr "हेलो विश्व"
#, fuzzy
#~ msgid "Alternative greeting text."
#~ msgstr "युआरएल (URL) %s हो, वैकल्पिक पाठ %s हो ।"
#~ msgid "Message"
#~ msgstr "सन्देश"
#~ msgid "CPU"
#~ msgstr "सीपीयू (CPU)"
#~ msgid "Memory"
#~ msgstr "स्मृति"
#~ msgid "Name"
#~ msgstr "नाम: "

352
po/oc.po
View File

@@ -6,41 +6,105 @@
msgid ""
msgstr ""
"Project-Id-Version: gnome-shell-extensions master\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell-extensions/"
"issues\n"
"POT-Creation-Date: 2020-05-28 00:55+0000\n"
"PO-Revision-Date: 2021-05-10 22:04+0200\n"
"Last-Translator: Quentin PAGÈS\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
"shell&keywords=I18N+L10N&component=extensions\n"
"POT-Creation-Date: 2016-05-09 19:09+0000\n"
"PO-Revision-Date: 2016-05-08 18:59+0200\n"
"Last-Translator: Cédric Valmary (totenoc.eu) <cvalmary@yahoo.fr>\n"
"Language-Team: Tot En Òc\n"
"Language: oc\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
"X-Generator: Poedit 2.4.3\n"
"X-Generator: Virtaal 0.7.1\n"
"X-Project-Style: gnome\n"
#: data/gnome-classic.desktop.in:3 data/gnome-classic.session.desktop.in:3
#: ../data/gnome-classic.desktop.in.h:1
#: ../data/gnome-classic.session.desktop.in.in.h:1
msgid "GNOME Classic"
msgstr "GNOME Classic"
#: data/gnome-classic.desktop.in:4
#: ../data/gnome-classic.desktop.in.h:2
msgid "This session logs you into GNOME Classic"
msgstr "Aquesta session vos connècta a GNOME Classic"
#: extensions/apps-menu/extension.js:113
#: ../data/org.gnome.shell.extensions.classic-overrides.gschema.xml.in.h:1
msgid "Attach modal dialog to the parent window"
msgstr "Estacar las bóstias de dialòg modalas a lor fenèstra parenta"
#: ../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 ""
"Aquesta clau remplaça la clau dins org.gnome.mutter quand GNOME Shell es en "
"cors d'execucion."
#: ../data/org.gnome.shell.extensions.classic-overrides.gschema.xml.in.h:3
msgid "Arrangement of buttons on the titlebar"
msgstr "òrdre dels botons dins la barra de títol"
#: ../data/org.gnome.shell.extensions.classic-overrides.gschema.xml.in.h:4
msgid ""
"This key overrides the key in org.gnome.desktop.wm.preferences when running "
"GNOME Shell."
msgstr ""
"Aquesta clau remplaça la clau dins org.gnome.desktop.wm.preferences quand "
"GNOME Shell es en cors d'execucion."
#: ../data/org.gnome.shell.extensions.classic-overrides.gschema.xml.in.h:5
msgid "Enable edge tiling when dropping windows on screen edges"
msgstr ""
"Activar la disposicion verticala quand las fenèstras son depausadas als "
"bòrds de l'ecran"
#: ../data/org.gnome.shell.extensions.classic-overrides.gschema.xml.in.h:6
msgid "Workspaces only on primary monitor"
msgstr "Espacis de trabalh unicament sus l'ecran principal"
#: ../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 ""
"Retardar los cambiaments de focus en mòde mirga fins al moment que lo "
"puntador arrèsta de bolegar"
#: ../extensions/alternate-tab/prefs.js:20
msgid "Thumbnail only"
msgstr "Vinheta solament"
#: ../extensions/alternate-tab/prefs.js:21
msgid "Application icon only"
msgstr "Icòna d'aplicacion solament"
#: ../extensions/alternate-tab/prefs.js:22
msgid "Thumbnail and application icon"
msgstr "Vinheta e icòna d'aplicacion"
#: ../extensions/alternate-tab/prefs.js:38
msgid "Present windows as"
msgstr "Presentar la fenèstra coma"
#: ../extensions/alternate-tab/prefs.js:69
msgid "Show only windows in the current workspace"
msgstr "Afichar pas las fenèstras que sus l'espaci de trabalh actual"
#: ../extensions/apps-menu/extension.js:38
msgid "Activities Overview"
msgstr "Vista d'ensemble de las activitats"
#: ../extensions/apps-menu/extension.js:109
msgid "Favorites"
msgstr "Favorits"
#: extensions/apps-menu/extension.js:369
#: ../extensions/apps-menu/extension.js:266
msgid "Applications"
msgstr "Aplicacions"
#: 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.in.h:1
msgid "Application and workspace list"
msgstr "Lista d'aplicacions e d'espacis de trabalh"
#: 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.in.h:2
msgid ""
"A list of strings, each containing an application id (desktop file name), "
"followed by a colon and the workspace number"
@@ -49,34 +113,76 @@ msgstr ""
"d'aplicacion (nom de fichièr desktop), seguit per un dos-punts e lo numèro "
"de l'espaci de trabalh"
#: extensions/auto-move-windows/prefs.js:35
msgid "Workspace Rules"
msgstr "Règlas dels espacis de trabalh"
#: ../extensions/auto-move-windows/prefs.js:60
msgid "Application"
msgstr "Aplicacion"
#: extensions/auto-move-windows/prefs.js:243
#: ../extensions/auto-move-windows/prefs.js:69
#: ../extensions/auto-move-windows/prefs.js:127
msgid "Workspace"
msgstr "Espaci de trabalh"
#: ../extensions/auto-move-windows/prefs.js:85
msgid "Add Rule"
msgstr "Apondre una règla"
#. TRANSLATORS: %s is the filesystem name
#: extensions/drive-menu/extension.js:112
#: extensions/places-menu/placeDisplay.js:233
#: ../extensions/auto-move-windows/prefs.js:106
msgid "Create new matching rule"
msgstr "Crear una règla novèla de concordància"
#: ../extensions/auto-move-windows/prefs.js:111
msgid "Add"
msgstr "Apondre"
#: ../extensions/drive-menu/extension.js:106
#, javascript-format
msgid "Ejecting drive %s failed:"
msgid "Ejecting drive '%s' failed:"
msgstr "L'ejeccion del disc « %s » a fracassat :"
#: extensions/drive-menu/extension.js:128
#: ../extensions/drive-menu/extension.js:124
msgid "Removable devices"
msgstr "Periferics amovibles"
#: extensions/drive-menu/extension.js:155
msgid "Open Files"
msgstr "Dobrir Fichièrs"
#: ../extensions/drive-menu/extension.js:149
msgid "Open File"
msgstr "Dobrir lo fichièr"
#: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:5
#: ../extensions/example/extension.js:17
msgid "Hello, world!"
msgstr "Adieu, lo mond !"
#: ../extensions/example/org.gnome.shell.extensions.example.gschema.xml.in.h:1
msgid "Alternative greeting text."
msgstr "Autre tèxte d'acuèlh."
#: ../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 ""
"S'es pas void, conten lo tèxte que s'aficha quand clicatz sul tablèu de bòrd."
#: ../extensions/example/prefs.js:30
msgid "Message"
msgstr "Message"
#. 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 ""
"Exemple a per tòca de far veire cossí bastir de bonas èxtensions pel Shell e "
"en tant que tal, a pas tant de foncionalitats en se qu'aquò.\n"
"Pasmens, es possible de personalizar lo messatge d'acuèlh."
#: ../extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml.in.h:1
msgid "Use more screen for windows"
msgstr "Utilizar mai d'ecran per las fenèstras"
#: 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.in.h:2
msgid ""
"Try to use more screen for placing window thumbnails by adapting to screen "
"aspect ratio, and consolidating them further to reduce the bounding box. "
@@ -87,11 +193,11 @@ msgstr ""
"mai per reduire la zòna englobanta. Aqueste paramètre s'aplica pas qu'en "
"utilizant l'estrategia de plaçament « 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.in.h:3
msgid "Place window captions on top"
msgstr "Plaçar los títols de las fenèstras en dessús"
#: 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.in.h:4
msgid ""
"If true, place window captions on top the respective thumbnail, overriding "
"shell default of placing it at the bottom. Changing this setting requires "
@@ -101,123 +207,108 @@ msgstr ""
"correspondenta, aquò remplaça lo comportament per defaut que los plaça en "
"dejós. Per qu'aqueste paramètre siá pres en compte, cal reaviar lo Shell."
#: extensions/places-menu/extension.js:89
#: extensions/places-menu/extension.js:93
#: ../extensions/places-menu/extension.js:78
#: ../extensions/places-menu/extension.js:81
msgid "Places"
msgstr "Emplaçaments"
#: extensions/places-menu/placeDisplay.js:46
#: ../extensions/places-menu/placeDisplay.js:59
#, javascript-format
msgid "Failed to launch “%s”"
msgid "Failed to launch \"%s\""
msgstr "Impossible d'aviar « %s »"
#: extensions/places-menu/placeDisplay.js:61
#, javascript-format
msgid "Failed to mount volume for “%s”"
msgstr "Fracàs del montatge del volum per « %s »"
#: extensions/places-menu/placeDisplay.js:148
#: extensions/places-menu/placeDisplay.js:171
#: ../extensions/places-menu/placeDisplay.js:101
#: ../extensions/places-menu/placeDisplay.js:124
msgid "Computer"
msgstr "Ordenador"
#: extensions/places-menu/placeDisplay.js:359
#: ../extensions/places-menu/placeDisplay.js:267
msgid "Home"
msgstr "Dorsièr personal"
#: extensions/places-menu/placeDisplay.js:404
#: ../extensions/places-menu/placeDisplay.js:311
msgid "Browse Network"
msgstr "Percórrer la ret"
#: 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.in.h:1
msgid "Cycle Screenshot Sizes"
msgstr "Passar a la talha de captura seguenta"
#: extensions/screenshot-window-sizer/org.gnome.shell.extensions.screenshot-window-sizer.gschema.xml:11
msgid "Cycle Screenshot Sizes Backward"
msgstr "Talhas de las capturas d'ecran enrèire"
#: extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml:5
#: ../extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml.in.h:1
msgid "Theme name"
msgstr "Nom del tèma"
#: extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml:6
#: ../extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml.in.h:2
msgid "The name of the theme, to be loaded from ~/.themes/name/gnome-shell"
msgstr "Lo nom del tèma, de cargar a partir de ~/.themes/name/gnome-shell"
#: extensions/window-list/extension.js:98
#: ../extensions/window-list/extension.js:110
msgid "Close"
msgstr "Tampar"
#: extensions/window-list/extension.js:118
#: ../extensions/window-list/extension.js:120
msgid "Unminimize"
msgstr "Restablir"
#: extensions/window-list/extension.js:118
#: ../extensions/window-list/extension.js:121
msgid "Minimize"
msgstr "Reduire"
#: extensions/window-list/extension.js:125
#: ../extensions/window-list/extension.js:127
msgid "Unmaximize"
msgstr "Restablir"
#: extensions/window-list/extension.js:125
#: ../extensions/window-list/extension.js:128
msgid "Maximize"
msgstr "Maximizar"
#: extensions/window-list/extension.js:428
#: ../extensions/window-list/extension.js:403
msgid "Minimize all"
msgstr "Reduire tot"
#: extensions/window-list/extension.js:434
#: ../extensions/window-list/extension.js:411
msgid "Unminimize all"
msgstr "Restablir tot"
#: extensions/window-list/extension.js:440
#: ../extensions/window-list/extension.js:419
msgid "Maximize all"
msgstr "Maximizar tot"
#: extensions/window-list/extension.js:448
#: ../extensions/window-list/extension.js:428
msgid "Unmaximize all"
msgstr "Restablir tot"
#: extensions/window-list/extension.js:456
#: ../extensions/window-list/extension.js:437
msgid "Close all"
msgstr "Tampar tot"
#: extensions/window-list/extension.js:734
#: ../extensions/window-list/extension.js:661
#: ../extensions/workspace-indicator/extension.js:30
msgid "Workspace Indicator"
msgstr "Indicator d'espaci de trabalh"
#: ../extensions/window-list/extension.js:820
msgid "Window List"
msgstr "Lista de fenèstras"
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:12
#: ../extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml.in.h:1
msgid "When to group windows"
msgstr "Quand regropar las fenèstras"
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:13
#: ../extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml.in.h:2
msgid ""
"Decides when to group windows from the same application on the window list. "
"Possible values are never”, “auto and always."
"Possible values are \"never\", \"auto\" and \"always\"."
msgstr ""
"Decidís quora regropar las fenèstras d'una meteissa aplicacion sus la lista "
"de las fenèstras. Las valors possiblas son « never » (pas jamai), « auto » e "
"« always » (totjorn)."
#: 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 "Afichar las fenèstras de totes los espacis de trabalh"
#: 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 ""
"Indica se cal afichar las fenèstras sus totes los espacis de trabalh o "
"solament 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.in.h:3
msgid "Show the window list on all monitors"
msgstr "Afichar la lista de las fenèstras sus totes los ecrans"
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:28
#: ../extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml.in.h:4
msgid ""
"Whether to show the window list on all connected monitors or only on the "
"primary one."
@@ -225,128 +316,39 @@ msgstr ""
"Indica se cal afichar la lista de las fenèstras sus totes los ecrans "
"connectats o solament l'ecran principal."
#: extensions/window-list/prefs.js:29
#: ../extensions/window-list/prefs.js:32
msgid "Window Grouping"
msgstr "Regropament de fenèstras"
#: extensions/window-list/prefs.js:58
#: ../extensions/window-list/prefs.js:50
msgid "Never group windows"
msgstr "Regropar pas jamai las fenèstras"
#: extensions/window-list/prefs.js:59
#: ../extensions/window-list/prefs.js:51
msgid "Group windows when space is limited"
msgstr "Regropar las fenèstras quand l'espaci es limitat"
#: extensions/window-list/prefs.js:60
#: ../extensions/window-list/prefs.js:52
msgid "Always group windows"
msgstr "Regropar totjorn las fenèstras"
#: extensions/window-list/prefs.js:94
#: ../extensions/window-list/prefs.js:75
msgid "Show on all monitors"
msgstr "Afichar sus totes los ecrans"
#: extensions/window-list/workspaceIndicator.js:207
#: extensions/workspace-indicator/extension.js:213
msgid "Workspace Indicator"
msgstr "Indicator d'espaci de trabalh"
#: extensions/workspace-indicator/prefs.js:34
#: ../extensions/workspace-indicator/prefs.js:141
msgid "Workspace Names"
msgstr "Noms dels espacis de trabalh"
#: extensions/workspace-indicator/prefs.js:67
#: ../extensions/workspace-indicator/prefs.js:157
msgid "Name"
msgstr "Nom"
#: ../extensions/workspace-indicator/prefs.js:198
#, javascript-format
msgid "Workspace %d"
msgstr "Espaci de trabalh %d"
#: extensions/workspace-indicator/prefs.js:218
msgid "Add Workspace"
msgstr "Apondre un espaci de trabalh"
#~ msgid "Attach modal dialog to the parent window"
#~ msgstr "Estacar las bóstias de dialòg modalas a lor fenèstra parenta"
#~ msgid ""
#~ "This key overrides the key in org.gnome.mutter when running GNOME Shell."
#~ msgstr ""
#~ "Aquesta clau remplaça la clau dins org.gnome.mutter quand GNOME Shell es "
#~ "en cors d'execucion."
#~ msgid "Arrangement of buttons on the titlebar"
#~ msgstr "òrdre dels botons dins la barra de títol"
#~ msgid ""
#~ "This key overrides the key in org.gnome.desktop.wm.preferences when "
#~ "running GNOME Shell."
#~ msgstr ""
#~ "Aquesta clau remplaça la clau dins org.gnome.desktop.wm.preferences quand "
#~ "GNOME Shell es en cors d'execucion."
#~ msgid "Enable edge tiling when dropping windows on screen edges"
#~ msgstr ""
#~ "Activar la disposicion verticala quand las fenèstras son depausadas als "
#~ "bòrds de l'ecran"
#~ msgid "Workspaces only on primary monitor"
#~ msgstr "Espacis de trabalh unicament sus l'ecran principal"
#~ msgid "Delay focus changes in mouse mode until the pointer stops moving"
#~ msgstr ""
#~ "Retardar los cambiaments de focus en mòde mirga fins al moment que lo "
#~ "puntador arrèsta de bolegar"
#~ msgid "Thumbnail only"
#~ msgstr "Vinheta solament"
#~ msgid "Application icon only"
#~ msgstr "Icòna d'aplicacion solament"
#~ msgid "Thumbnail and application icon"
#~ msgstr "Vinheta e icòna d'aplicacion"
#~ msgid "Present windows as"
#~ msgstr "Presentar la fenèstra coma"
#~ msgid "Activities Overview"
#~ msgstr "Vista d'ensemble de las activitats"
#~ msgid "Application"
#~ msgstr "Aplicacion"
#~ msgid "Create new matching rule"
#~ msgstr "Crear una règla novèla de concordància"
#~ msgid "Add"
#~ msgstr "Apondre"
#~ msgid "Hello, world!"
#~ msgstr "Adieu, lo mond !"
#~ msgid "Alternative greeting text."
#~ msgstr "Autre tèxte d'acuèlh."
#~ msgid ""
#~ "If not empty, it contains the text that will be shown when clicking on "
#~ "the panel."
#~ msgstr ""
#~ "S'es pas void, conten lo tèxte que s'aficha quand clicatz sul tablèu de "
#~ "bòrd."
#~ msgid "Message"
#~ msgstr "Message"
#~ msgid ""
#~ "Example aims to show how to build well behaved extensions for the Shell "
#~ "and as such it has little functionality on its own.\n"
#~ "Nevertheless it's possible to customize the greeting message."
#~ msgstr ""
#~ "Exemple a per tòca de far veire cossí bastir de bonas èxtensions pel "
#~ "Shell e en tant que tal, a pas tant de foncionalitats en se qu'aquò.\n"
#~ "Pasmens, es possible de personalizar lo messatge d'acuèlh."
#~ msgid "Name"
#~ msgstr "Nom"
#~ msgid "GNOME Shell Classic"
#~ msgstr "GNOME Shell Classic"

328
po/pa.po
View File

@@ -2,21 +2,21 @@
# Copyright (C) 2011 gnome-shell-extensions's COPYRIGHT HOLDER
# This file is distributed under the same license as the gnome-shell-extensions package.
#
# A S Alam <aalam@users.sf.net>, 2011, 2012, 2013, 2014, 2015, 2018, 2021.
# A S Alam <aalam@users.sf.net>, 2011, 2012, 2013, 2014, 2015, 2018.
msgid ""
msgstr ""
"Project-Id-Version: gnome-shell-extensions gnome-3-0\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell-extensions/is"
"sues\n"
"POT-Creation-Date: 2020-05-28 00:55+0000\n"
"PO-Revision-Date: 2021-02-13 16:51-0800\n"
"Last-Translator: A S Alam <aalam@satluj.org>\n"
"POT-Creation-Date: 2018-02-20 23:07+0000\n"
"PO-Revision-Date: 2018-03-10 09:36-0600\n"
"Last-Translator: A S Alam <alam.yellow@gmail.com>\n"
"Language-Team: Punjabi <punjabi-translation@googlegroups.com>\n"
"Language: pa\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Lokalize 20.08.1\n"
"X-Generator: Lokalize 2.0\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
#: data/gnome-classic.desktop.in:3 data/gnome-classic.session.desktop.in:3
@@ -27,11 +27,73 @@ msgstr "ਗਨੋਮ ਕਲਾਸਿਕ"
msgid "This session logs you into GNOME Classic"
msgstr "ਇਹ ਸ਼ੈਸ਼ਨ ਤੁਹਾਨੂੰ ਗਨੋਮ ਕਲਾਸਿਕ ਵਿੱਚ ਲਾਗ ਕਰਦਾ ਹੈ"
#: extensions/apps-menu/extension.js:113
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:7
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 ਕੁੰਜੀ ਨੂੰ ਅਣਡਿੱਠਾ ਕਰਦੀ ਹੈ।"
#: 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.preferencesr ਕੁੰਜੀ ਨੂੰ"
" ਅਣਡਿੱਠਾ "
"ਕਰਦੀ ਹੈ।"
#: 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:19
msgid "Thumbnail only"
msgstr "ਕੇਵਲ ਥੰਮਨੇਲ ਹੀ"
#: extensions/alternate-tab/prefs.js:20
msgid "Application icon only"
msgstr "ਐਪਲੀਕੇਸ਼ਨ ਆਈਕਾਨ ਹੀ"
#: extensions/alternate-tab/prefs.js:21
msgid "Thumbnail and application icon"
msgstr "ਥੰਮਨੇਲ ਅਤੇ ਐਪਲੀਕੇਸ਼ਨ ਆਈਕਾਨ"
#: extensions/alternate-tab/prefs.js:34
msgid "Present windows as"
msgstr "ਵਿੰਡੋਜ਼ ਨੂੰ ਪੇਸ਼ ਕਰੋ"
#: extensions/alternate-tab/prefs.js:65
msgid "Show only windows in the current workspace"
msgstr "ਮੌਜੂਦਾ ਵਰਕਸਪੇਸ ਵਿੱਚੋਂ ਹੀ ਵਿੰਡੋਜ਼ ਹੀ ਵੇਖਾਓ"
#: extensions/apps-menu/extension.js:37
msgid "Activities Overview"
msgstr "ਸਰਗਰਮੀ ਝਲਕ"
#: extensions/apps-menu/extension.js:130
msgid "Favorites"
msgstr "ਪਸੰਦੀਦਾ"
#: extensions/apps-menu/extension.js:369
#: extensions/apps-menu/extension.js:417
msgid "Applications"
msgstr "ਐਪਲੀਕੇਸ਼ਨ"
@@ -48,30 +110,81 @@ msgstr ""
" ਵਰਕਸਪੇਸ ਨੰਬਰ "
"ਰੱਖਦਾ ਹੈ"
#: extensions/auto-move-windows/prefs.js:35
#| msgid "Workspace Names"
msgid "Workspace Rules"
msgstr "ਵਰਕਸਪੇਸ ਨਿਯਮ"
#: extensions/auto-move-windows/prefs.js:53
msgid "Application"
msgstr "ਐਪਲੀਕੇਸ਼ਨ"
#: extensions/auto-move-windows/prefs.js:243
#: extensions/auto-move-windows/prefs.js:62
#: extensions/auto-move-windows/prefs.js:117
msgid "Workspace"
msgstr "ਵਰਕਸਪੇਸ"
#: extensions/auto-move-windows/prefs.js:78
msgid "Add Rule"
msgstr "ਨਿਯਮ ਜੋੜੋ"
#: extensions/auto-move-windows/prefs.js:98
msgid "Create new matching rule"
msgstr "ਨਵਾਂ ਮਿਲਾਉਣ ਨਿਯਮ ਬਣਾਓ"
#: extensions/auto-move-windows/prefs.js:103
msgid "Add"
msgstr "ਜੋੜੋ"
#. TRANSLATORS: %s is the filesystem name
#: extensions/drive-menu/extension.js:112
#: extensions/places-menu/placeDisplay.js:233
#: extensions/drive-menu/extension.js:103
#: extensions/places-menu/placeDisplay.js:219
#, javascript-format
#| msgid "Ejecting drive '%s' failed:"
msgid "Ejecting drive “%s” failed:"
msgstr "ਡਰਾਇਵ “%s“ ਬਾਹਰ ਕੱਢਣ ਲਈ ਫੇਲ੍ਹ:"
#: extensions/drive-menu/extension.js:128
#: extensions/drive-menu/extension.js:118
msgid "Removable devices"
msgstr "ਹਟਾਉਣਯੋਗ ਜੰਤਰ"
#: extensions/drive-menu/extension.js:155
#: extensions/drive-menu/extension.js:143
#| msgid "Open File"
msgid "Open Files"
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:27
msgid "Message"
msgstr "ਸੁਨੇਹਾ"
#. TRANSLATORS: Example is the name of the extension, should not be
#. translated
#: extensions/example/prefs.js:40
#| msgid ""
#| "Example aims to show how to build well behaved extensions for the Shell "
#| "and as such it has little functionality on its own.\n"
#| "Nevertheless it's possible to customize the greeting message."
msgid ""
"Example aims to show how to build well behaved extensions for the Shell and "
"as such it has little functionality on its own.\n"
"Nevertheless its possible to customize the greeting message."
msgstr ""
"Example ਦਾ ਮਕਸਦ ਸ਼ੈਲ ਲਈ ਇੱਕ ਵਧੀਆ ਕੰਮ ਕਰਦੀ ਇਕਸਟੈਸ਼ਨ ਬਣਾਉਣ ਦੀ ਉਦਾਹਰਨ ਦੇਣਾ ਹੈ ਅਤੇ"
" ਇਸ ਦਾ "
"ਖੁਦ ਕੋਈ ਬਹੁਤਾ ਕੰਮ ਨਹੀਂ ਹੈ।\n"
"ਫੇਰ ਵੀ ਸਵਾਗਤੀ ਸੁਨੇਹੇ ਨੂੰ ਬਦਲਣਾ ਸੰਭਵ ਹੈ।"
#: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:5
msgid "Use more screen for windows"
msgstr "ਵਿੰਡੋਜ਼ ਲਈ ਹੋਰ ਸਕਰੀਨ ਵਰਤੋਂ"
@@ -103,31 +216,32 @@ msgstr ""
"ਨੂੰ ਅਣਡਿੱਠਾ ਕਰਦਾ ਹੈ। ਇਹ ਸੈਟਿੰਗ ਬਦਲਾਅ ਦੇ ਚਾਲੂ ਹੋਣ ਲਈ ਸ਼ੈਲ ਨੂੰ ਮੁੜ-ਚਾਲੂ ਕਰਨ ਦੀ"
" ਲੋੜ ਹੈ।"
#: extensions/places-menu/extension.js:89
#: extensions/places-menu/extension.js:93
#: extensions/places-menu/extension.js:79
#: extensions/places-menu/extension.js:82
msgid "Places"
msgstr "ਥਾਵਾਂ"
#: extensions/places-menu/placeDisplay.js:46
#, javascript-format
msgid "Failed to launch “%s”"
msgstr "“%s“ ਚਲਾਉਣ ਲਈ ਫੇਲ੍ਹ ਹੈ"
#: extensions/places-menu/placeDisplay.js:61
#: extensions/places-menu/placeDisplay.js:66
#, javascript-format
msgid "Failed to mount volume for “%s”"
msgstr "“%s” ਲਈ ਵਾਲੀਅਮ ਮਾਊਂਟ ਕਰਨ ਲਈ ਅਸਫ਼ਲ"
#: extensions/places-menu/placeDisplay.js:148
#: extensions/places-menu/placeDisplay.js:171
#: extensions/places-menu/placeDisplay.js:79
#, javascript-format
#| msgid "Failed to launch \"%s\""
msgid "Failed to launch “%s”"
msgstr "“%s“ ਚਲਾਉਣ ਲਈ ਫੇਲ੍ਹ ਹੈ"
#: extensions/places-menu/placeDisplay.js:135
#: extensions/places-menu/placeDisplay.js:158
msgid "Computer"
msgstr "ਕੰਪਿਊਟਰ"
#: extensions/places-menu/placeDisplay.js:359
#: extensions/places-menu/placeDisplay.js:336
msgid "Home"
msgstr "ਘਰ"
#: extensions/places-menu/placeDisplay.js:404
#: extensions/places-menu/placeDisplay.js:378
msgid "Browse Network"
msgstr "ਨੈੱਟਵਰਕ ਝਲਕ ਵੇਖੋ"
@@ -136,6 +250,7 @@ msgid "Cycle Screenshot Sizes"
msgstr "ਸਾਈਕਲ ਸਕਰੀਨਸ਼ਾਟ ਆਕਾਰ"
#: extensions/screenshot-window-sizer/org.gnome.shell.extensions.screenshot-window-sizer.gschema.xml:11
#| msgid "Cycle Screenshot Sizes"
msgid "Cycle Screenshot Sizes Backward"
msgstr "ਸਾਈਕਲ ਸਕਰੀਨਸ਼ਾਟ ਆਕਾਰ ਪਿੱਛੇ ਵੱਲ"
@@ -147,47 +262,52 @@ msgstr "ਥੀਮ ਨਾਂ"
msgid "The name of the theme, to be loaded from ~/.themes/name/gnome-shell"
msgstr "ਥੀਮ ਦਾ ਨਾਂ, ਜੋ ~/.themes/name/gnome-shell ਤੋਂ ਲੋਡ ਕੀਤਾ ਜਾਵੇਗਾ"
#: extensions/window-list/extension.js:98
#: extensions/window-list/extension.js:106
msgid "Close"
msgstr "ਬੰਦ ਕਰੋ"
#: extensions/window-list/extension.js:118
#: extensions/window-list/extension.js:125
msgid "Unminimize"
msgstr "ਅਣ-ਨਿਊਨਤਮ"
#: extensions/window-list/extension.js:118
#: extensions/window-list/extension.js:126
msgid "Minimize"
msgstr "ਨਿਊਨਤਮ"
#: extensions/window-list/extension.js:125
#: extensions/window-list/extension.js:132
msgid "Unmaximize"
msgstr "ਅਣ-ਵੱਧੋ-ਵੱਧ"
#: extensions/window-list/extension.js:125
#: extensions/window-list/extension.js:133
msgid "Maximize"
msgstr "ਵੱਧੋ-ਵੱਧ"
#: extensions/window-list/extension.js:428
#: extensions/window-list/extension.js:408
msgid "Minimize all"
msgstr "ਸਭ ਨਿਊਨਤਮ ਕਰੋ"
#: extensions/window-list/extension.js:434
#: extensions/window-list/extension.js:414
msgid "Unminimize all"
msgstr "ਸਭ ਅਣ-ਨਿਊਨਤਮ ਕਰੋ"
#: extensions/window-list/extension.js:440
#: extensions/window-list/extension.js:420
msgid "Maximize all"
msgstr "ਸਭ ਵੱਧ-ਵੱਧ ਕਰੋ"
#: extensions/window-list/extension.js:448
#: extensions/window-list/extension.js:429
msgid "Unmaximize all"
msgstr "ਸਭ ਅਣ-ਵੱਧੋ-ਵੱਧ ਕਰੋ"
#: extensions/window-list/extension.js:456
#: extensions/window-list/extension.js:438
msgid "Close all"
msgstr "ਸਭ ਬੰਦ ਕਰੋ"
#: extensions/window-list/extension.js:734
#: extensions/window-list/extension.js:646
#: extensions/workspace-indicator/extension.js:26
msgid "Workspace Indicator"
msgstr "ਵਰਕਸਪੇਸ ਇੰਡੀਕੇਟਰ"
#: extensions/window-list/extension.js:811
msgid "Window List"
msgstr "ਵਿੰਡੋਜ਼ ਸੂਚੀ"
@@ -196,157 +316,61 @@ 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\"."
msgid ""
"Decides when to group windows from the same application on the window list. "
"Possible values are “never”, “auto” and “always”."
msgstr ""
"ਵਿੰਡੋ ਲਿਸਟ ਵਿੱਚ ਇਕੋ ਕੰਮ ਦੇ ਵਿੰਡੋ ਦਾ ਗਰੁੱਪ ਕਦੋਂ ਬਣਾਉਣਾ ਹੈ, ਇਹ ਦੱਸੋ। ਸੰਭਵ ਮੁੱਲ"
" ਹਨ “ਕਦੇ ਨਹੀਂ“, “ਆਟੋ“ "
"ਅਤੇ “ਹਮੇਸ਼ਾ“।"
" ਹਨ “ਕਦੇ ਨਹੀਂ“, "
"“ਆਟੋ“ ਅਤੇ “ਹਮੇਸ਼ਾ“।"
#: extensions/window-list/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/org.gnome.shell.extensions.window-list.gschema.xml:21
#| msgid ""
#| "Whether to show the window list on all connected monitors or only on the "
#| "primary one."
msgid "Whether to show windows from all workspaces or only the current one."
msgstr "ਕੀ ਸਭ ਵਰਕਸਪੇਸਾਂ ਤੋਂ ਵਿੰਡੋ ਵੇਖਣੀਆਂ ਹਨ ਜਾਂ ਸਿਰਫ਼ ਇੱਕ ਤੋਂ ਹੀ।"
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:27
msgid "Show the window list on all monitors"
msgstr "ਸਭ ਮਾਨੀਟਰਾਂ ਉੱਤੇ ਵਿੰਡੋ ਸੂਚੀ ਵੇਖਾਓ"
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:28
#: 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:29
#: extensions/window-list/prefs.js:28
msgid "Window Grouping"
msgstr "ਵਿੰਡੋ ਗਰੁੱਪਿੰਗ"
#: extensions/window-list/prefs.js:58
#: extensions/window-list/prefs.js:46
msgid "Never group windows"
msgstr "ਵਿੰਡੋ ਦਾ ਗਰੁੱਪ ਕਦੇ ਨਾ ਬਣਾਓ"
#: extensions/window-list/prefs.js:59
#: extensions/window-list/prefs.js:47
msgid "Group windows when space is limited"
msgstr "ਜਦੋਂ ਥਾਂ ਥੋੜੀ ਹੋਵੇ ਤਾਂ ਵਿੰਡੋਜ਼ ਦਾ ਗਰੁੱਪ ਬਣਾਓ"
#: extensions/window-list/prefs.js:60
#: extensions/window-list/prefs.js:48
msgid "Always group windows"
msgstr "ਵਿੰਡੋ ਦਾ ਗਰੁੱਪ ਹਮੇਸ਼ਾ ਬਣਾਓ"
#: extensions/window-list/prefs.js:94
#: extensions/window-list/prefs.js:71
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
#: extensions/workspace-indicator/prefs.js:134
msgid "Workspace Names"
msgstr "ਵਰਕਸਪੇਸ ਨਾਂ"
#: extensions/workspace-indicator/prefs.js:67
#: extensions/workspace-indicator/prefs.js:150
msgid "Name"
msgstr "ਨਾਂ"
#: extensions/workspace-indicator/prefs.js:190
#, javascript-format
msgid "Workspace %d"
msgstr "ਵਰਕਸਪੇਸ %d"
#: extensions/workspace-indicator/prefs.js:218
#| msgid "Workspace"
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 ਕੁੰਜੀ ਨੂੰ ਅਣਡਿੱਠਾ ਕਰਦੀ ਹੈ।"
#~ 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.preferencesr ਕੁੰਜੀ ਨੂੰ ਅਣਡਿੱਠਾ "
#~ "ਕਰਦੀ ਹੈ।"
#~ 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."
#~ 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 its possible to customize the greeting message."
#~ msgstr ""
#~ "Example ਦਾ ਮਕਸਦ ਸ਼ੈਲ ਲਈ ਇੱਕ ਵਧੀਆ ਕੰਮ ਕਰਦੀ ਇਕਸਟੈਸ਼ਨ ਬਣਾਉਣ ਦੀ ਉਦਾਹਰਨ ਦੇਣਾ ਹੈ ਅਤੇ ਇਸ "
#~ "ਦਾ ਖੁਦ ਕੋਈ ਬਹੁਤਾ ਕੰਮ ਨਹੀਂ ਹੈ।\n"
#~ "ਫੇਰ ਵੀ ਸਵਾਗਤੀ ਸੁਨੇਹੇ ਨੂੰ ਬਦਲਣਾ ਸੰਭਵ ਹੈ।"
#~ msgid "Name"
#~ msgstr "ਨਾਂ"
#~ msgid "GNOME Shell Classic"
#~ msgstr "ਗਨੋਮ ਸ਼ੈਲ ਕਲਾਸਿਕ"

View File

@@ -6,45 +6,38 @@
# António Lima <amrlima@gmail.com>, 2013.
# Pedro Albuquerque <palbuquerque73@gmail.com>, 2014.
# Bruno Ramalhete <bram.512@gmail.com>, 2015.
# José Vieira <jvieira33@sapo.pt>, 2020-2021.
# Hugo Carvalho <hugokarvalho@hotmail.com>, 2021.
# Juliano de Souza Camargo <julianosc@protonmail.com>, 2021.
# José Vieira <jvieira33@sapo.pt>, 2020.
#
msgid ""
msgstr ""
"Project-Id-Version: 3.14\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell-extensions/"
"issues\n"
"POT-Creation-Date: 2021-06-02 16:10+0000\n"
"PO-Revision-Date: 2021-06-07 07:21-0300\n"
"Last-Translator: Juliano de Souza Camargo <julianosc@protonmail.com>\n"
"Language-Team: Portuguese < >\n"
"POT-Creation-Date: 2020-05-28 00:55+0000\n"
"PO-Revision-Date: 2020-09-05 00:47+0100\n"
"Last-Translator: José Vieira <jvieira33@sapo.pt>\n"
"Language-Team: Portuguese <>\n"
"Language: pt\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
"X-Generator: Gtranslator 40.0\n"
"X-Generator: Gtranslator 3.36.0\n"
"X-Project-Style: gnome\n"
"X-DL-Team: pt\n"
"X-DL-Module: gnome-shell-extensions\n"
"X-DL-Branch: gnome-40\n"
"X-DL-Domain: po\n"
"X-DL-State: Translating\n"
#: data/gnome-classic.desktop.in:3
#: data/gnome-classic.desktop.in:3 data/gnome-classic.session.desktop.in:3
msgid "GNOME Classic"
msgstr "GNOME clássico"
#: data/gnome-classic.desktop.in:4
msgid "This session logs you into GNOME Classic"
msgstr "Esta sessão vai usar o GNOME clássico"
msgstr "Esta sessão entra no GNOME clássico"
#: extensions/apps-menu/extension.js:113
msgid "Favorites"
msgstr "Favoritos"
#: extensions/apps-menu/extension.js:367
#: extensions/apps-menu/extension.js:369
msgid "Applications"
msgstr "Aplicações"
@@ -61,10 +54,11 @@ msgstr ""
"ficheiro desktop), seguido de dois pontos e o número da área de trabalho"
#: extensions/auto-move-windows/prefs.js:35
#| msgid "Workspace Names"
msgid "Workspace Rules"
msgstr "Regras das áreas de trabalho"
#: extensions/auto-move-windows/prefs.js:237
#: extensions/auto-move-windows/prefs.js:243
msgid "Add Rule"
msgstr "Adicionar regra"
@@ -72,6 +66,7 @@ msgstr "Adicionar regra"
#: extensions/drive-menu/extension.js:112
#: extensions/places-menu/placeDisplay.js:233
#, javascript-format
#| msgid "Ejecting drive '%s' failed:"
msgid "Ejecting drive “%s” failed:"
msgstr "Falha ao ejetar a unidade '%s':"
@@ -79,9 +74,10 @@ msgstr "Falha ao ejetar a unidade '%s':"
msgid "Removable devices"
msgstr "Dispositivos removíveis"
#: extensions/drive-menu/extension.js:152
#: extensions/drive-menu/extension.js:155
#| msgid "Open File"
msgid "Open Files"
msgstr "Abrir ficheiros"
msgstr "Ficheiros abertos"
#: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:5
msgid "Use more screen for windows"
@@ -100,7 +96,7 @@ msgstr ""
#: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:11
msgid "Place window captions on top"
msgstr "Colocar título de janela em cima"
msgstr "Colocar título de janelas em cima"
#: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:12
msgid ""
@@ -108,17 +104,18 @@ msgid ""
"shell default of placing it at the bottom. Changing this setting requires "
"restarting the shell to have any effect."
msgstr ""
"Se verdadeiro, coloca títulos de janelas em cima das respectivas miniaturas, "
"Se verdadeiro, coloca títulos de janelas em cima da respectiva miniatura, "
"substituindo a predefinição, que as coloca no fundo. Alterar esta "
"configuração requer reinicializar a interface para ter efeito."
#: extensions/places-menu/extension.js:89
#: extensions/places-menu/extension.js:92
#: extensions/places-menu/extension.js:93
msgid "Places"
msgstr "Locais"
#: extensions/places-menu/placeDisplay.js:46
#, javascript-format
#| msgid "Failed to launch \"%s\""
msgid "Failed to launch “%s”"
msgstr "Falha ao iniciar \"%s\""
@@ -145,6 +142,7 @@ msgid "Cycle Screenshot Sizes"
msgstr "Percorrer os tamanhos de captura de ecrã"
#: extensions/screenshot-window-sizer/org.gnome.shell.extensions.screenshot-window-sizer.gschema.xml:11
#| msgid "Cycle Screenshot Sizes"
msgid "Cycle Screenshot Sizes Backward"
msgstr "Percorrer para trás os tamanhos de captura de ecrã"
@@ -176,27 +174,27 @@ msgstr "Desmaximizar"
msgid "Maximize"
msgstr "Maximizar"
#: extensions/window-list/extension.js:432
#: extensions/window-list/extension.js:428
msgid "Minimize all"
msgstr "Minimizar todas"
#: extensions/window-list/extension.js:438
#: extensions/window-list/extension.js:434
msgid "Unminimize all"
msgstr "Desminimizar todas"
#: extensions/window-list/extension.js:444
#: extensions/window-list/extension.js:440
msgid "Maximize all"
msgstr "Maximizar todas"
#: extensions/window-list/extension.js:452
#: extensions/window-list/extension.js:448
msgid "Unmaximize all"
msgstr "Desmaximizar todas"
#: extensions/window-list/extension.js:460
#: extensions/window-list/extension.js:456
msgid "Close all"
msgstr "Fechar todas"
#: extensions/window-list/extension.js:737
#: extensions/window-list/extension.js:734
msgid "Window List"
msgstr "Lista de janelas"
@@ -205,19 +203,26 @@ msgid "When to group windows"
msgstr "Quando agrupar janelas"
#: 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 ""
"Decides when to group windows from the same application on the window list. "
"Possible values are “never”, “auto” and “always”."
msgstr ""
"Decide quando agrupar janelas da mesma aplicação na lista de janelas. Os "
"valores válidos são \"nunca\", \"auto\" e \"sempre\"."
"Decide quando agrupar janelas da mesma aplicação na lista de janelas. "
"Valores válidos são \"nunca\", \"auto\" e \"sempre\"."
#: 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 "Mostrar janelas de todas as área de trabalho"
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:21
#| msgid ""
#| "Whether to show the window list on all connected monitors or only on the "
#| "primary one."
msgid "Whether to show windows from all workspaces or only the current one."
msgstr ""
"Se deve mostrar janelas de todas as áreas de trabalho ou apenas da atual."
@@ -254,8 +259,8 @@ msgstr "Agrupar sempre as janelas"
msgid "Show on all monitors"
msgstr "Mostrar em todos os monitores"
#: extensions/window-list/workspaceIndicator.js:249
#: extensions/workspace-indicator/extension.js:255
#: extensions/window-list/workspaceIndicator.js:207
#: extensions/workspace-indicator/extension.js:213
msgid "Workspace Indicator"
msgstr "Indicador de área de trabalho"
@@ -268,7 +273,8 @@ msgstr "Nomes das áreas de trabalho"
msgid "Workspace %d"
msgstr "Área de trabalho %d"
#: extensions/workspace-indicator/prefs.js:208
#: extensions/workspace-indicator/prefs.js:218
#| msgid "Workspace"
msgid "Add Workspace"
msgstr "Adicionar área de trabalho"

114
po/sv.po
View File

@@ -1,26 +1,26 @@
# Swedish translation for gnome-shell-extensions.
# Copyright © 2011-2021 Free Software Foundation, Inc.
# Copyright © 2011, 2012, 2014, 2015, 2017, 2019, 2020 Free Software Foundation, Inc.
# This file is distributed under the same license as the gnome-shell-extensions package.
# Daniel Nylander <po@danielnylander.se>, 2011, 2012.
# Mattias Eriksson <snaggen@gmail.com>, 2014.
# Anders Jonsson <anders.jonsson@norsjovallen.se>, 2015, 2017, 2019, 2020, 2021.
# Anders Jonsson <anders.jonsson@norsjovallen.se>, 2015, 2017, 2019, 2020.
#
msgid ""
msgstr ""
"Project-Id-Version: gnome-shell-extensions\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell-extensions/"
"issues\n"
"POT-Creation-Date: 2020-10-17 20:14+0000\n"
"PO-Revision-Date: 2021-03-27 21:12+0100\n"
"POT-Creation-Date: 2020-06-25 05:19+0000\n"
"PO-Revision-Date: 2020-07-31 16:32+0200\n"
"Last-Translator: Anders Jonsson <anders.jonsson@norsjovallen.se>\n"
"Language-Team: Swedish <tp-sv@listor.tp-sv.se>\n"
"Language: sv\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 2.4.2\n"
"X-Generator: Poedit 2.3.1\n"
#: data/gnome-classic.desktop.in:3
#: data/gnome-classic.desktop.in:3 data/gnome-classic.session.desktop.in:3
msgid "GNOME Classic"
msgstr "GNOME Klassisk"
@@ -96,7 +96,7 @@ msgid ""
"shell default of placing it at the bottom. Changing this setting requires "
"restarting the shell to have any effect."
msgstr ""
"Om sant, placera fönster titlar över respektive miniatyrbild, åsidosätter "
"Om sant, placera fönster titlar över respektive miniatyrbild, överskuggar "
"skalets standardplacering under miniatyrbilden. För att ändra denna "
"inställning krävs att skalet startas om för att den ska få effekt."
@@ -164,27 +164,27 @@ msgstr "Avmaximera"
msgid "Maximize"
msgstr "Maximera"
#: extensions/window-list/extension.js:432
#: extensions/window-list/extension.js:428
msgid "Minimize all"
msgstr "Minimera alla"
#: extensions/window-list/extension.js:438
#: extensions/window-list/extension.js:434
msgid "Unminimize all"
msgstr "Avminimera alla"
#: extensions/window-list/extension.js:444
#: extensions/window-list/extension.js:440
msgid "Maximize all"
msgstr "Maximera alla"
#: extensions/window-list/extension.js:452
#: extensions/window-list/extension.js:448
msgid "Unmaximize all"
msgstr "Avmaximera alla"
#: extensions/window-list/extension.js:460
#: extensions/window-list/extension.js:456
msgid "Close all"
msgstr "Stäng alla"
#: extensions/window-list/extension.js:738
#: extensions/window-list/extension.js:734
msgid "Window List"
msgstr "Fönsterlista"
@@ -259,3 +259,91 @@ msgstr "Arbetsyta %d"
#: extensions/workspace-indicator/prefs.js:218
msgid "Add Workspace"
msgstr "Lägg till arbetsyta"
#~ msgid "Application"
#~ msgstr "Program"
#~ msgid "Workspace"
#~ msgstr "Arbetsyta"
#~ msgid "Create new matching rule"
#~ msgstr "Skapa ny matchande regel"
#~ msgid "Add"
#~ msgstr "Lägg till"
#~ msgid "Name"
#~ msgstr "Namn"
#~ msgid "Attach modal dialog to the parent window"
#~ msgstr "Koppla samman modal dialog till föräldrafönstret"
#~ msgid ""
#~ "This key overrides the key in org.gnome.mutter when running GNOME Shell."
#~ msgstr ""
#~ "Denna nyckel överskuggar nyckeln i org.gnome.mutter när GNOME-skalet körs."
#~ msgid "Arrangement of buttons on the titlebar"
#~ msgstr "Arrangemang för knappar i namnlisten"
#~ msgid ""
#~ "This key overrides the key in org.gnome.desktop.wm.preferences when "
#~ "running GNOME Shell."
#~ msgstr ""
#~ "Denna nyckel överskuggar nyckeln i org.gnome.desktop.wm.preferences när "
#~ "GNOME-skalet körs."
#~ msgid "Enable edge tiling when dropping windows on screen edges"
#~ msgstr "Slå på kantdockning när fönster släpps på skärmkanter"
#~ msgid "Workspaces only on primary monitor"
#~ msgstr "Arbetsytor endast på primär skärm"
#~ msgid "Delay focus changes in mouse mode until the pointer stops moving"
#~ msgstr "Fördröj fokusändringar i musläge tills pekare slutar röra sig"
#~ msgid "Thumbnail only"
#~ msgstr "Endast miniatyrbild"
#~ msgid "Application icon only"
#~ msgstr "Endast programikon"
#~ msgid "Thumbnail and application icon"
#~ msgstr "Miniatyrbild och programikon"
#~ msgid "Present windows as"
#~ msgstr "Presentera fönster som"
#~ msgid "Activities Overview"
#~ msgstr "Aktivitetsöversikt"
#~ msgid "Hello, world!"
#~ msgstr "Hej, världen!"
#~ msgid "Alternative greeting text."
#~ msgstr "Alternativ hälsningstext."
#~ msgid ""
#~ "If not empty, it contains the text that will be shown when clicking on "
#~ "the panel."
#~ msgstr ""
#~ "Om inte tom, innehåller den text som kommer att visas när man klickar på "
#~ "panelen."
#~ msgid "Message"
#~ msgstr "Meddelande"
#~ 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 its possible to customize the greeting message."
#~ msgstr ""
#~ "Exemplet ämnar visa hur man bygger ett väluppfostrat tillägg för skalet "
#~ "och som sådant har det lite funktionalitet i sig självt.\n"
#~ "Hur som helst är det i alla fall möjligt att anpassa välkomstmeddelandet."
#~ msgid "CPU"
#~ msgstr "CPU"
#~ msgid "Memory"
#~ msgstr "Minne"

309
po/vi.po
View File

@@ -2,15 +2,15 @@
# Copyright © 2016 GNOME i18n Project for Vietnamese.
# This file is distributed under the same license as the gnome-shell-extensions package.
# Nguyễn Thái Ngọc Duy <pclouds@gmail.com>, 2011.
# Trần Ngọc Quân <vnwildman@gmail.com>, 2014, 2016, 2017, 2021.
# Trần Ngọc Quân <vnwildman@gmail.com>, 2014, 2016, 2017.
#
msgid ""
msgstr ""
"Project-Id-Version: gnome-shell-extensions master\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell-extensions/"
"issues\n"
"POT-Creation-Date: 2020-05-28 00:55+0000\n"
"PO-Revision-Date: 2021-03-27 14:51+0700\n"
"Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
"shell&keywords=I18N+L10N&component=extensions\n"
"POT-Creation-Date: 2017-09-03 13:30+0000\n"
"PO-Revision-Date: 2017-09-04 14:34+0700\n"
"Last-Translator: Trần Ngọc Quân <vnwildman@gmail.com>\n"
"Language-Team: Vietnamese <gnome-vi-list@gnome.org>\n"
"Language: vi\n"
@@ -28,11 +28,72 @@ msgstr "GNOME cổ điển"
msgid "This session logs you into GNOME Classic"
msgstr "Phiên làm việc này đăng nhập bạn vào GNOME Cổ điển"
#: extensions/apps-menu/extension.js:113
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:7
msgid "Attach modal dialog to the parent window"
msgstr "Gắn hộp thoại dạng luôn nằm trên cửa sổ mẹ"
#: 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 ""
"Khóa này sẽ đè lên khóa có trong org.gnome.mutter khi chạy Hệ vỏ GNOME."
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:16
msgid "Arrangement of buttons on the titlebar"
msgstr "Sắp xếp các nút trên thanh tiêu đề"
#: 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 ""
"Khóa này sẽ đè lên khóa có trong org.gnome.desktop.wm.preferences khi đang "
"chạy Hệ vỏ GNOME."
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:24
msgid "Enable edge tiling when dropping windows on screen edges"
msgstr "Bật xếp lớp ở cạnh khi thả cửa sổ vào cạnh màn hình"
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:32
msgid "Workspaces only on primary monitor"
msgstr "Không gian làm việc chỉ ở trên màn hình chính"
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:40
msgid "Delay focus changes in mouse mode until the pointer stops moving"
msgstr "Khoảng trễ chờ cho con chuột ngừng di chuyển"
#: extensions/alternate-tab/prefs.js:20
msgid "Thumbnail only"
msgstr "Chỉ ảnh nhỏ"
#: extensions/alternate-tab/prefs.js:21
msgid "Application icon only"
msgstr "Chỉ có ảnh nhỏ đại diện cho ứng dụng"
#: extensions/alternate-tab/prefs.js:22
msgid "Thumbnail and application icon"
msgstr "Ảnh thu nhỏ và biểu tượng của ứng dụng"
#: extensions/alternate-tab/prefs.js:38
msgid "Present windows as"
msgstr "Cửa sổ hiện tại như là"
#: extensions/alternate-tab/prefs.js:69
msgid "Show only windows in the current workspace"
msgstr "Chỉ hiển thị các cửa sổ trong không gian làm việc hiện tại"
#: extensions/apps-menu/extension.js:41
msgid "Activities Overview"
msgstr "Tổng quan hoạt động"
#: extensions/apps-menu/extension.js:141
msgid "Favorites"
msgstr "Ưa thích"
#: extensions/apps-menu/extension.js:369
#: extensions/apps-menu/extension.js:436
msgid "Applications"
msgstr "Ứng dụng"
@@ -48,29 +109,73 @@ msgstr ""
"Một danh sách chuỗi, mỗi chuỗi là một mã số của ứng dụng (tên tập tin ."
"desktop), theo sau là dấu hai chấm và mã số không gian làm việc"
#: extensions/auto-move-windows/prefs.js:35
msgid "Workspace Rules"
msgstr "Thước Không gian làm việc"
#: extensions/auto-move-windows/prefs.js:60
msgid "Application"
msgstr "Ứng dụng"
#: extensions/auto-move-windows/prefs.js:243
#: extensions/auto-move-windows/prefs.js:69
#: extensions/auto-move-windows/prefs.js:127
msgid "Workspace"
msgstr "Không gian làm việc"
#: extensions/auto-move-windows/prefs.js:85
msgid "Add Rule"
msgstr "Thêm quy tắc"
#: extensions/auto-move-windows/prefs.js:106
msgid "Create new matching rule"
msgstr "Tạo mới một quy tắc khớp mẫu"
#: extensions/auto-move-windows/prefs.js:111
msgid "Add"
msgstr "Thêm"
#. TRANSLATORS: %s is the filesystem name
#: extensions/drive-menu/extension.js:112
#: extensions/places-menu/placeDisplay.js:233
#: extensions/drive-menu/extension.js:107
#, javascript-format
msgid "Ejecting drive “%s” failed:"
msgstr "Gặp lỗi khi đẩy hệ thống tập tin “%s” ra:"
msgstr "Gặp lỗi khi đẩy đĩa “%s” ra:"
#: extensions/drive-menu/extension.js:128
#: extensions/drive-menu/extension.js:125
msgid "Removable devices"
msgstr "Đĩa di động"
#: extensions/drive-menu/extension.js:155
#: extensions/drive-menu/extension.js:150
msgid "Open Files"
msgstr "Mở tập tin"
#: extensions/example/extension.js:17
msgid "Hello, world!"
msgstr "Xin chào!"
#: extensions/example/org.gnome.shell.extensions.example.gschema.xml:5
msgid "Alternative greeting text."
msgstr "Lời chào thay thế."
#: 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 ""
"Nếu không rỗng, nó sẽ chứa chữ mà chữ này sẽ được hiển thị khi bấm chuột "
"trên bảng điều khiển."
#: extensions/example/prefs.js:30
msgid "Message"
msgstr "Thông báo"
#. 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 its possible to customize the greeting message."
msgstr ""
"Ví dụ có mục đích hướng dẫn làm cách nào để xây dựng các phần mở rộng chạy "
"tốt cho Hệ vỏ và do vậy nó chỉ có một ít chức năng.\n"
"Tuy thế nó có khả năng cá nhân hóa lời chào."
#: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:5
msgid "Use more screen for windows"
msgstr "Dùng nhiều màn hình cho các cửa sổ"
@@ -99,31 +204,31 @@ msgstr ""
"đè lên cách ứng xử mặc định của hệ vỏ là ở dưới đáy. Những thay đổi này cần "
"khởi động lại hệ vỏ để có tác dụng."
#: extensions/places-menu/extension.js:89
#: extensions/places-menu/extension.js:93
#: extensions/places-menu/extension.js:78
#: extensions/places-menu/extension.js:81
msgid "Places"
msgstr "Mở nhanh"
#: extensions/places-menu/placeDisplay.js:46
#, javascript-format
msgid "Failed to launch “%s”"
msgstr "Gặp lỗi khi khởi chạy \"%s\""
#: extensions/places-menu/placeDisplay.js:61
#: extensions/places-menu/placeDisplay.js:65
#, javascript-format
msgid "Failed to mount volume for “%s”"
msgstr "Gặp lỗi khi gắn đĩa cho “%s”"
#: extensions/places-menu/placeDisplay.js:148
#: extensions/places-menu/placeDisplay.js:171
#: extensions/places-menu/placeDisplay.js:78
#, javascript-format
msgid "Failed to launch “%s”"
msgstr "Gặp lỗi khi khởi chạy \"%s\""
#: extensions/places-menu/placeDisplay.js:137
#: extensions/places-menu/placeDisplay.js:160
msgid "Computer"
msgstr "Máy tính"
#: extensions/places-menu/placeDisplay.js:359
#: extensions/places-menu/placeDisplay.js:303
msgid "Home"
msgstr "Thư mục riêng"
#: extensions/places-menu/placeDisplay.js:404
#: extensions/places-menu/placeDisplay.js:347
msgid "Browse Network"
msgstr "Duyệt mạng"
@@ -143,47 +248,52 @@ msgstr "Tên chủ đề"
msgid "The name of the theme, to be loaded from ~/.themes/name/gnome-shell"
msgstr "Tên của chủ đề, được tải từ ~/.themes/name/gnome-shell"
#: extensions/window-list/extension.js:98
#: extensions/window-list/extension.js:110
msgid "Close"
msgstr "Đóng"
#: extensions/window-list/extension.js:118
#: extensions/window-list/extension.js:129
msgid "Unminimize"
msgstr "Thôi thu nhỏ"
#: extensions/window-list/extension.js:118
#: extensions/window-list/extension.js:130
msgid "Minimize"
msgstr "Thu nhỏ"
#: extensions/window-list/extension.js:125
#: extensions/window-list/extension.js:136
msgid "Unmaximize"
msgstr "Thôi phóng hết cỡ"
msgstr "Thôi phóng lớn"
#: extensions/window-list/extension.js:125
#: extensions/window-list/extension.js:137
msgid "Maximize"
msgstr "Phóng to hết cỡ"
#: extensions/window-list/extension.js:428
#: extensions/window-list/extension.js:420
msgid "Minimize all"
msgstr "Thu nhỏ tất cả"
#: extensions/window-list/extension.js:434
#: extensions/window-list/extension.js:428
msgid "Unminimize all"
msgstr "Thôi thu nhỏ tất cả"
#: extensions/window-list/extension.js:440
#: extensions/window-list/extension.js:436
msgid "Maximize all"
msgstr "Phóng to tất cả"
#: extensions/window-list/extension.js:448
#: extensions/window-list/extension.js:445
msgid "Unmaximize all"
msgstr "Thôi phóng to tất cả"
#: extensions/window-list/extension.js:456
#: extensions/window-list/extension.js:454
msgid "Close all"
msgstr "Đóng tất cả"
#: extensions/window-list/extension.js:734
#: extensions/window-list/extension.js:678
#: extensions/workspace-indicator/extension.js:30
msgid "Workspace Indicator"
msgstr "Bộ chỉ thị không gian làm việc"
#: extensions/window-list/extension.js:842
msgid "Window List"
msgstr "Danh sách cửa sổ"
@@ -200,21 +310,10 @@ msgstr ""
"cửa số. Các giá trị có thể là “never”, “auto” và “always”."
#: 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 "Hiển thị các cửa sổ trong mọi không gian làm việc"
#: 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 ""
"Có hiển thị các cửa sổ từ mọi không gian làm việc hay chỉ trên màn hình hiện "
"tại mà thôi."
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:27
msgid "Show the window list on all monitors"
msgstr "Hiển thị danh sách cửa sổ ở mọi màn hình"
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:28
#: 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."
@@ -222,123 +321,39 @@ msgstr ""
"Có hiển thị danh sách cửa sổ trên mọi màn hình đã kết nối hay chỉ trên màn "
"hình chính mà thôi."
#: extensions/window-list/prefs.js:29
#: extensions/window-list/prefs.js:32
msgid "Window Grouping"
msgstr "Nhóm cửa sổ lại"
#: extensions/window-list/prefs.js:58
#: extensions/window-list/prefs.js:50
msgid "Never group windows"
msgstr "Không bao giờ nhóm các cửa sổ lại với nhau"
#: extensions/window-list/prefs.js:59
#: extensions/window-list/prefs.js:51
msgid "Group windows when space is limited"
msgstr "Nhóm các cửa sổ lại với nhau khi không đủ chỗ"
#: extensions/window-list/prefs.js:60
#: extensions/window-list/prefs.js:52
msgid "Always group windows"
msgstr "Luôn nhóm các cửa sổ lại với nhau"
#: extensions/window-list/prefs.js:94
#: extensions/window-list/prefs.js:75
msgid "Show on all monitors"
msgstr "Hiển thị trên mọi màn hình"
#: extensions/window-list/workspaceIndicator.js:207
#: extensions/workspace-indicator/extension.js:213
msgid "Workspace Indicator"
msgstr "Bộ chỉ thị không gian làm việc"
#: extensions/workspace-indicator/prefs.js:34
#: extensions/workspace-indicator/prefs.js:141
msgid "Workspace Names"
msgstr "Tên không gian làm việc"
#: extensions/workspace-indicator/prefs.js:67
#: extensions/workspace-indicator/prefs.js:157
msgid "Name"
msgstr "Tên"
#: extensions/workspace-indicator/prefs.js:198
#, javascript-format
msgid "Workspace %d"
msgstr "Không gian làm việc %d"
#: extensions/workspace-indicator/prefs.js:218
msgid "Add Workspace"
msgstr "Thêm Không gian làm việc"
#~ msgid "Attach modal dialog to the parent window"
#~ msgstr "Gắn hộp thoại dạng luôn nằm trên cửa sổ mẹ"
#~ msgid ""
#~ "This key overrides the key in org.gnome.mutter when running GNOME Shell."
#~ msgstr ""
#~ "Khóa này sẽ đè lên khóa có trong org.gnome.mutter khi chạy Hệ vỏ GNOME."
#~ msgid "Arrangement of buttons on the titlebar"
#~ msgstr "Sắp xếp các nút trên thanh tiêu đề"
#~ msgid ""
#~ "This key overrides the key in org.gnome.desktop.wm.preferences when "
#~ "running GNOME Shell."
#~ msgstr ""
#~ "Khóa này sẽ đè lên khóa có trong org.gnome.desktop.wm.preferences khi "
#~ "đang chạy Hệ vỏ GNOME."
#~ msgid "Enable edge tiling when dropping windows on screen edges"
#~ msgstr "Bật xếp lớp ở cạnh khi thả cửa sổ vào cạnh màn hình"
#~ msgid "Workspaces only on primary monitor"
#~ msgstr "Không gian làm việc chỉ ở trên màn hình chính"
#~ msgid "Delay focus changes in mouse mode until the pointer stops moving"
#~ msgstr "Khoảng trễ chờ cho con chuột ngừng di chuyển"
#~ msgid "Thumbnail only"
#~ msgstr "Chỉ ảnh nhỏ"
#~ msgid "Application icon only"
#~ msgstr "Chỉ có ảnh nhỏ đại diện cho ứng dụng"
#~ msgid "Thumbnail and application icon"
#~ msgstr "Ảnh thu nhỏ và biểu tượng của ứng dụng"
#~ msgid "Present windows as"
#~ msgstr "Cửa sổ hiện tại như là"
#~ msgid "Activities Overview"
#~ msgstr "Tổng quan hoạt động"
#~ msgid "Application"
#~ msgstr "Ứng dụng"
#~ msgid "Create new matching rule"
#~ msgstr "Tạo mới một quy tắc khớp mẫu"
#~ msgid "Add"
#~ msgstr "Thêm"
#~ msgid "Hello, world!"
#~ msgstr "Xin chào!"
#~ msgid "Alternative greeting text."
#~ msgstr "Lời chào thay thế."
#~ msgid ""
#~ "If not empty, it contains the text that will be shown when clicking on "
#~ "the panel."
#~ msgstr ""
#~ "Nếu không rỗng, nó sẽ chứa chữ mà chữ này sẽ được hiển thị khi bấm chuột "
#~ "trên bảng điều khiển."
#~ msgid "Message"
#~ msgstr "Thông báo"
#~ msgid ""
#~ "Example aims to show how to build well behaved extensions for the Shell "
#~ "and as such it has little functionality on its own.\n"
#~ "Nevertheless its possible to customize the greeting message."
#~ msgstr ""
#~ "Ví dụ có mục đích hướng dẫn làm cách nào để xây dựng các phần mở rộng "
#~ "chạy tốt cho Hệ vỏ và do vậy nó chỉ có một ít chức năng.\n"
#~ "Tuy thế nó có khả năng cá nhân hóa lời chào."
#~ msgid "Name"
#~ msgstr "Tên"
#~ msgid "CPU"
#~ msgstr "CPU"