Compare commits

...
Author SHA1 Message Date
Marco Trevisan (Treviño) 5edffcd859 New upstream version 42~beta 2022-02-23 02:57:09 +01:00
Florian Müllner 14cdb5fa16 Bump version to 42.beta
Update NEWS.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/216>
2022-02-14 23:18:46 +01:00
Emin Tufan Çetin 533cd07cfd Update Turkish translation 2022-02-13 22:42:10 +00:00
Alexander Shopov 7232118978 Update Bulgarian translation 2022-02-13 10:41:54 +00:00
Naala Nanba 7a1286ec1c Update Abkhazian translation 2022-02-12 20:25:06 +00:00
Naala Nanba a51a52268e Update Abkhazian translation 2022-02-12 19:40:52 +00:00
Naala Nanba 6db43f9603 Add Abkhazian translation 2022-02-12 19:36:35 +00:00
Florian Müllner f7b5836c75 auto-move-windows: Use custom spin button in prefs
Gtk.SpinButton doesn't look great in lists, so replace it with a
small custom widget based on current mockups from the design team.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/213>
2022-02-12 02:05:50 +00:00
Florian Müllner ffb2b27477 auto-move-windows: Use libadwaita's row widgets
We get to remove a bunch of boring code, and get something better
looking and more standardized in return.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/213>
2022-02-12 02:05:50 +00:00
Florian Müllner dd3c524c49 prefs: Replace 'content' list style
It's deprecated in favor of 'boxed-list'.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/213>
2022-02-12 02:05:50 +00:00
Florian Müllner b92973df00 cleanup: Simplify promisify() calls
If the finish function isn't specified, promisify will now try
to use the async name without '_async'/'_begin' suffix (if any)
and '_finish' appended.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/214>
2022-02-11 16:22:38 +01:00
Florian Müllner 0b7e8f9720 user-theme: Stop using Gio._LocalFilePrototype
Now that promisify() works on interfaces, we don't need this
cludge anymore.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/214>
2022-02-11 16:22:38 +01:00
Florian Müllner f6342d3b52 cleanup: Replace Promise wrappers
gjs now supports overriding interface methods, which means that
promisify started to work on interfaces.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/214>
2022-02-11 16:22:38 +01:00
Florian Müllner 013b3fb73c apps-menu: Adapt to Clutter.Grab changes
Device grabs are gone, switch to the new API.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/212>
2022-02-10 00:28:04 +01:00
Florian Müllner 69527857f8 window-list: Adapt to Clutter.Grab changes
pushModal() now returns a grab object that has to be passed to
popModal() to release the grab.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/212>
2022-02-10 00:12:22 +01:00
Florian Müllner e0128a7817 window-list: Use libadwaita for preferences
libadwaita has now become stable and will be part of the GNOME 42
platform. Time to embrace it and get fancier preferences with
less code.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/209>
2022-02-08 19:22:41 +00:00
Florian Müllner 62628b25c6 auto-move-windows: Use libadwaita for preferences
libadwaita has now become stable and will be part of the GNOME 42
platform. Time to embrace it and get fancier preferences with
less code.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/209>
2022-02-08 19:22:41 +00:00
Florian Müllner 3f89b57c96 workspace-indicator: Use libadwaita for preferences
libadwaita has now become stable and will be part of the GNOME 42
platform. Time to embrace it and get fancier preferences with
less code.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/209>
2022-02-08 19:22:41 +00:00
Florian Müllner 01537b401f user-theme: Use libadwaita for preferences
libadwaita has now become stable and will be part of the GNOME 42
platform. Time to embrace it and get fancier preferences with
less code.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/209>
2022-02-08 19:22:41 +00:00
Matej Urbančič 30e846274c Update Slovenian translation 2022-01-26 21:03:10 +00:00
Florian Müllner d340922fea window-list: Track window-created/unmanaged
Shell's WindowTracker switched to those signals instead of tracking
windows through MetaWorkspace's window-added/removed signals.

As ::window-created is only emitted after a window has been added to
its workspace, looking up its app on ::window-added now fails because
the window isn't tracked yet.

Address this by switching to the same signals for window tracking
(which is simpler anyway).

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

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/207>
2022-01-26 12:33:35 +00:00
Florian Müllner 8dd8d6f561 workspace-indicator: Fix cancelling editing with Esc
The CallbackAction's callback must return true to stop the event
from propagating to the dialog, where it will trigger the close
binding.

It makes sense to still allow closing the dialog with Escape while
not editing a row. The easiest way to achieve that is by moving the
controller to the entry.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/208>
2022-01-26 10:55:59 +00:00
Jan Beich cdaa837d48 meson: Drop unused argument for i18n.merge_file()
Ignored in Meson < 0.60.0, deprecated since 0.60.1 and fatal since 0.61.0.

data/meson.build:23:0: ERROR: Function does not take positional arguments.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/210>
2022-01-25 11:52:56 +00:00
Boyuan Yang 7576b5c602 Update Chinese (China) translation 2022-01-13 20:28:37 +00:00
Florian Müllner fac3d8b8c4 Bump version to 42.alpha
Update NEWS.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/206>
2022-01-10 22:40:29 +01:00
Rafael Fontenelle cecf778381 Update Brazilian Portuguese translation 2022-01-07 22:59:34 +00:00
Kukuh Syafaat 0663a989f4 Update Indonesian translation 2022-01-05 03:24:29 +00:00
Asier Sarasua Garmendia 7b2d9d0b73 Update Basque translation 2021-12-25 14:00:09 +00:00
Aurimas Černius f220e11bce Updated Lithuanian translation 2021-12-14 13:49:10 +02:00
Aleksandr Melman af4165d3e5 Update Russian translation 2021-12-13 11:27:53 +00:00
Sveinn í Felli c82ca68c03 Update Icelandic translation 2021-12-13 09:08:27 +00:00
Jeremy Bicha d8b526a715 New upstream version 41.1 2021-12-12 20:28:55 -05:00
Florian Müllner a5b6871562 Bump version to 41.1
Update NEWS.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/200>
2021-12-11 14:20:23 +01:00
Florian Müllner deb6031381 window-list: Fix OSK
The reveal animation moved from Main.layoutManager.keyboardBox to
the keyboard itself, so instead of applying an additional translation
for the bottom panel, we override the translation that would reveal
the keyboard (and thus prevent it from showing altogether).

Fix this by moving our translation to the keyboardBox instead.

(cherry picked from commit 02e5029eb6)

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/202>
2021-12-11 14:04:21 +01:00
Sebastian Keller 486cb59aff native-window-placement: Remove custom styling
The window-picker padding was causing it to become smaller in the
overview resulting in a jump when opening it and caused sizing issues
with the workspace view in the app picker. However it is not needed
anymore with the new overview, so this can be fixed by simply removing
it.

The horizontal- and vertical-spacing properties got replaced with a
spacing property a while ago. However this is only used in
WorkspaceLayout::_createBestLayout() which gets overridden by this
extension which does not use it. So they can simply be removed.

The shell-caption-spacing property got removed when the window captions
got changed to always use the full length and has not been doing
anything since.

Fixes: https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/issues/301
Fixes: https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/issues/309
(cherry picked from commit 4a26cecd7d)

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/202>
2021-12-11 14:04:07 +01:00
Neal Gompa de9a3df7bd classic: Add X-GNOME-SessionRegisters
GDM has supported sessions registering with it for a few years now so
it can know when to shut down the greeter. Having the GNOME Classic
session declare that it will register itself allows GDM to avoid
executing a fallback codepath.

This has been supported with the regular GNOME session for a while,
and this session was likely forgotten about when it was added there.

(cherry picked from commit a79d2afb2d)

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/202>
2021-12-11 14:03:33 +01:00
Florian Müllner 02e5029eb6 window-list: Fix OSK
The reveal animation moved from Main.layoutManager.keyboardBox to
the keyboard itself, so instead of applying an additional translation
for the bottom panel, we override the translation that would reveal
the keyboard (and thus prevent it from showing altogether).

Fix this by moving our translation to the keyboardBox instead.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/199>
2021-11-26 20:01:40 +01:00
Daniel Mustieles d98153ba9e Updated Spanish translation 2021-11-26 18:05:13 +01:00
Fran Dieguez 4d913adcec Update Galician translation 2021-11-19 22:22:52 +00:00
MohammadSaleh Kamyab 5729d0b84a Update Persian translation 2021-11-18 22:40:00 +00:00
Sebastian Keller 4a26cecd7d native-window-placement: Remove custom styling
The window-picker padding was causing it to become smaller in the
overview resulting in a jump when opening it and caused sizing issues
with the workspace view in the app picker. However it is not needed
anymore with the new overview, so this can be fixed by simply removing
it.

The horizontal- and vertical-spacing properties got replaced with a
spacing property a while ago. However this is only used in
WorkspaceLayout::_createBestLayout() which gets overridden by this
extension which does not use it. So they can simply be removed.

The shell-caption-spacing property got removed when the window captions
got changed to always use the full length and has not been doing
anything since.

Fixes: https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/issues/301
Fixes: https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/issues/309
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/189>
2021-11-17 12:37:28 +00:00
Jordi Mas i Hernandez e5a3fa4cfa Update Catalan translation 2021-11-15 07:57:14 +00:00
Goran Vidović 6268e82f35 Update Croatian translation 2021-11-12 11:25:34 +00:00
Yaron Shahrabani 348a5777d3 Update Hebrew translation 2021-11-11 22:54:01 +00:00
Hugo Carvalho 594af0c412 Update Portuguese translation 2021-11-07 22:32:42 +00:00
Quentin PAGÈS d6a81150b6 Update Occitan translation 2021-11-07 19:54:26 +00:00
Fabio Tomat 38b3413e94 Update Friulian translation 2021-11-07 16:51:51 +00:00
Just Perfection 762ec75601 user-theme: Extensions review guidelines compatibility
Extensions review guidelines enforces extensions to
don't create objects in the constructor of the class
that init() returns. so creating settings object in enable()
can make the extension compatible with the ego review guidelines.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/197>
2021-11-06 21:58:59 +00:00
Yuri Chornoivan 6da9a39959 Update Ukrainian translation 2021-11-06 16:35:25 +00:00
Piotr Drąg 2938a1a312 Update POTFILES.in
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/198>
2021-11-06 15:02:17 +01:00
Neal Gompa eb517c8517 classic: Install the session for Wayland and ship override sessions
The regular GNOME session ships with three options:

* GNOME
* GNOME on Wayland (available when GDM starts in X11)
* GNOME on Xorg (available when GDM starts in Wayland)

The main GNOME session is set up so it works to match how GDM starts,
so GNOME is on Wayland if GDM is (or GNOME is on X11 if GDM is).

For GNOME Classic, we are missing this setup, so port this behavior
over from the GNOME session setup.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/195>
2021-10-29 10:00:02 -04:00
Neal Gompa a79d2afb2d classic: Add X-GNOME-SessionRegisters
GDM has supported sessions registering with it for a few years now so
it can know when to shut down the greeter. Having the GNOME Classic
session declare that it will register itself allows GDM to avoid
executing a fallback codepath.

This has been supported with the regular GNOME session for a while,
and this session was likely forgotten about when it was added there.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/195>
2021-10-29 09:58:38 -04:00
Jeremy Bicha db131fc7da New upstream version 41.0 2021-10-03 20:42:40 -04:00
Sveinn í Felli 396f4ef566 Update Icelandic translation 2021-09-29 10:18:03 +00:00
Goran Vidović c26b4803c3 Update Croatian translation 2021-09-23 14:38:14 +00:00
Florian Müllner 4ccf12e988 Bump version to 41.0
Update NEWS.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/192>
2021-09-19 12:47:07 +02:00
Florian Müllner 74121fce78 Bump version to 41.rc.1
Update NEWS.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/191>
2021-09-06 01:40:31 +02:00
Florian Müllner 0a7491d747 build: Bump meson requirement
Passing arguments to dist scripts was only introduced after 0.44,
so bump the requirement to shut up the corresponding warning.

Meson 0.53 is the same version requirement as gnome-shell, so that
shouldn't be an issue for distributors.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/191>
2021-09-06 01:40:11 +02:00
Florian Müllner 68bf3e7ff7 ci: Fix classic build
The option name used in CI was wrong, so we did not actually build
the auxiliary classic mode file.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/190>
2021-09-06 00:41:04 +02:00
Florian Müllner 93dd8f535d ci: Init submodule
As the gnome-shell-sass submodule isn't included under subprojects,
meson doesn't handle it automatically.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/190>
2021-09-06 00:39:50 +02:00
Florian Müllner 0b993525f5 build: Check sassc errors when generating stylesheet
We currently just call sassc, but don't check its return value. That
means as long as sassc is available, the script (and therefore the
newly added dist CI job) will succeed.

Make sure we fail on failure.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/190>
2021-09-06 00:33:08 +02:00
Florian Müllner 5dfdb68c75 Bump version to 41.rc
Update NEWS.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/188>
2021-09-05 02:02:52 +02:00
Florian Müllner 443d1dc42b ci: Add dist job
So far, releases are done locally by invoking `meson dist`.

We can do better and leverage the existing CI infrastructure, to get
to the following release workflow:

 - bump version in meson.build, update NEWS etc.
 - open merge request for the release
 - merge when the pipeline (including dist check) succeeds
 - tag the release
 - wait for the tag pipeline to spit out the tarball artifact

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/186>
2021-09-04 05:10:23 +02:00
Florian Müllner 34f6c9514a ci: Add a fedora build job
We currently use a setup modelled after the flatpak CI workflow,
where we produce extension bundles and expose them as artifacts
for easy testing.

It still makes sense to test a regular build though, in particular
as that can include classic mode support.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/186>
2021-09-04 05:10:23 +02:00
Florian Müllner 2f2619403a ci: Build custom image
The gnome-shell image we are using is well-suited for the jobs we
are running, but the lack of sassc means that we don't cover classic
mode.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/186>
2021-09-04 05:10:23 +02:00
Florian Müllner d25cc847f3 ci: Reindent yaml configuration
The file currently uses a mix of 4 and 2 space indentation (with the
occasional 1 space thrown in). It looks like most GNOME projects have
settled on 2-space indentation, so use that.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/186>
2021-09-04 05:10:23 +02:00
Florian Müllner 769ad859e6 build: Check NEWS for version
I don't think this ever happened to me, but it can't hurt enforcing
that every release has a corresponding NEWS entry.

(The script has been copied from Polari, thus the metainfo support)

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/186>
2021-09-04 05:10:23 +02:00
Florian Müllner 7ba0e5b42c apps-menu: Stop using panel-main-menu shortcut
It's an old GNOME 2 shortcut that's no longer worth supporting in
the regular session. Instead, set up a new shortcut backed by our
own schema.

https://discourse.gnome.org/t/difference-between-show-the-overview-and-show-the-activities-overview-keyboard-shortcuts/6572

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/173>
2021-08-31 23:42:23 +02:00
Jeremy Bicha 80c6656c4f New upstream version 40.4 2021-08-29 08:50:41 -04:00
Florian Müllner 201339345d window-list: Only show at the end of the overview transition
gnome-shell now considers the work area in the overview, so popping
up at the beginning of the overview transition is now more jarring
than at the end.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/185>
2021-08-26 23:36:53 +02:00
Florian Müllner 6ee4205f1e window-list: Fix initial visibility
Mutter uses an undefined initial in-fullscreen state, so it will
always emit the `in-fullscreen-changed` signal when it determines
the actual initial state.

This didn't use to be an issue when the shell started in the session,
but now results in the window list ending up visible in the overview
on startup.

Work around this by hiding ourselves again when the in-fullscreen
state changes in the overview.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/185>
2021-08-26 23:28:44 +02:00
Florian Müllner 2307e2cabe Bump version to 41.beta
Update NEWS.
2021-08-18 01:50:19 +02:00
Florian Müllner 4becaa28ce Update sass submodule 2021-08-18 01:50:19 +02:00
Florian Müllner a5a3523df8 Bump version to 40.4
Update NEWS.
2021-08-18 01:18:19 +02:00
Florian Müllner cc45bd63ab cleanup: Use new gettext() convenience
gnome-shell now includes convenience helpers for gettext functions that
use an extension's text domain (as initialized by initTranslations()).

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/183>
2021-08-14 23:15:56 +02:00
Florian Müllner 757bcee4e2 build: Use backend-agnostic meson commands for export
There's no alternative backend in sight for us, but it's nice to
only deal with a single build tool.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/182>
2021-08-13 05:25:47 +02:00
Florian Müllner 1340b209f9 window-list: Simplify radio handling
Instead of handling the active state manually and updating settings
on changes, we can use GActions to leave the nitty-gritty to GTK.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/181>
2021-08-13 05:22:41 +02:00
Florian Müllner 8f362d57fe lint: Synchronize configuration with gjs
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/180>
2021-08-13 04:57:35 +02:00
Florian Müllner d0b9c9b54a cleanup: Document functions
gjs now enforces this in its eslint configuration. Adding type
information generally is a good idea, so add appropriate comments
to public functions before picking up that configuration change.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/180>
2021-08-13 04:48:22 +02:00
Florian Müllner 6284b0c489 window-list: Move functions into base class
The helper functions date back to a time when AppButton and WindowButton
were unconnected classes. But nowadays they share a common base class, so
we have a better place for them than external helper functions.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/180>
2021-08-13 04:39:00 +02:00
Florian Müllner 06acd9ff25 build: Rewrite gettext domain when exporting zips
Now that every extension picks up its gettext domain from
its metadata, we can easily change it when exporting the
zips.

That ensures that every extension only binds its own domain
instead of messing up other extension's translations.

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

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/179>
2021-08-12 04:17:46 +02:00
Florian Müllner 1a1d45d9e4 build: Remove unused variable
https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/issues/335

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/179>
2021-08-12 04:17:46 +02:00
Florian Müllner 1d3775b3d1 extensions: Pick up gettext domain from metadata
Since commit a6ee142f21, the extension archives that are uploaded
to extensions.gnome.org only contain strings that are relevant for
the extension, not all translations from all extensions.

Unfortunately all extensions still share a common gettext domain,
so the extension with the last bind_textdomain() call wins and
leaves the others without translations.

We'll address this by using distinct domains when not installed
system-wide. That becomes easier if there is a canonical place
for the text domain, with the existing metadata key being the
natural choice.

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

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/179>
2021-08-12 04:17:46 +02:00
Florian Müllner 8a211f98fd build: Rewrite gettext domain when exporting zips
Now that every extension picks up its gettext domain from
its metadata, we can easily change it when exporting the
zips.

That ensures that every extension only binds its own domain
instead of messing up other extension's translations.

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

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/179>
2021-08-11 19:05:45 +02:00
Florian Müllner d6633397b7 build: Remove unused variable
https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/issues/335

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/179>
2021-08-11 19:05:45 +02:00
Florian Müllner 0d06cc685e extensions: Pick up gettext domain from metadata
Since commit a6ee142f21, the extension archives that are uploaded
to extensions.gnome.org only contain strings that are relevant for
the extension, not all translations from all extensions.

Unfortunately all extensions still share a common gettext domain,
so the extension with the last bind_textdomain() call wins and
leaves the others without translations.

We'll address this by using distinct domains when not installed
system-wide. That becomes easier if there is a canonical place
for the text domain, with the existing metadata key being the
natural choice.

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

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/179>
2021-08-11 18:42:43 +02:00
Marco Trevisan (Treviño) 8de89a44a4 README: Fix typo on instructions to move to main branch 2021-07-21 19:50:34 +02:00
Florian Müllner f3b1f10f6c ci: Set FDO_UPSTREAM_REPO
ci-fairy uses the variable to set the upstream remote that is used
to build the commit range to check.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/178>
2021-07-19 17:23:44 +02:00
Florian Müllner 15c83db793 drive-menu: Hide items initially
Now that the check for network mounts is non-blocking, the initial
sync doesn't take effect immediately. We don't want hidden items
to briefly flash the indicator, so create them initially hidden.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/176>
2021-07-19 16:44:37 +02:00
Florian Müllner cc021589b8 drive-menu: Fix indicator visibility
Commit 519269be9d made the check for network mounts non-blocking, and
we now update the indicator's visibility before a newly-added network
mount is hidden.

Address this by monitoring the item itself for visibility changes.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/176>
2021-07-19 16:44:37 +02:00
Florian Müllner 2bced47762 classic: Remove padding from app menu
It is now inconsistent with other top bar items, so drop it.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/167>
2021-07-18 21:57:38 +00:00
Florian Müllner 7ba9b87064 docs: Add README section for default branch
We are about to change it, so briefly outline how to update local
checkouts.

(Copied from glib)

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/177>
2021-07-14 21:11:59 +02:00
Florian Müllner a642c439ce docs: Use HEAD in external URLs
That way the link will keep working when the other project changes
its default branch name.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/177>
2021-07-14 20:37:15 +02:00
Florian Müllner d421bbfa60 drive-menu: Hide items initially
Now that the check for network mounts is non-blocking, the initial
sync doesn't take effect immediately. We don't want hidden items
to briefly flash the indicator, so create them initially hidden.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/176>
2021-07-13 11:54:21 +02:00
Florian Müllner 3539ce1139 drive-menu: Fix indicator visibility
Commit 519269be9d made the check for network mounts non-blocking, and
we now update the indicator's visibility before a newly-added network
mount is hidden.

Address this by monitoring the item itself for visibility changes.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/176>
2021-07-13 11:46:16 +02:00
Florian Müllner 5e316d37cb Bump version to 40.3
Update NEWS.
2021-07-12 18:18:45 +02:00
Florian Müllner 28dbb47937 window-list: Init translations
Whoops, we are missing the bindtextdomain() call, which means translations
won't work when no other extension that shares the same domain is used
(like in GNOME Classic for instance).

https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/issues/340
(cherry picked from commit c9d7f99d50f96d29c38380d9f0e3c9ddc660db9f)
2021-07-12 18:06:31 +02:00
Florian Müllner 619de9d5ee drive-menu: Avoid blocking I/O when querying filesystem
The last commit improved the heuristics for detecting network mounts,
but at the price of potentially blocking the shell. Avoid that drawback
by making the code in question async.

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

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/27>
(cherry picked from commit 519269be9d)
2021-07-12 18:06:31 +02:00
Florian Müllner 561b8aeb03 drive-menu: Don't assume mounts without volume are local
The intention of the code is to only expose actually plugged in
devices rather than network mounts, but the existing heuristics are
based on GVolume and simply assume a local mount where there's no
associated volume. Fill that gap by querying the ::remote filesystem
attribute in that case.

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

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/27>
(cherry picked from commit 7d6670ce3c)
2021-07-12 18:06:31 +02:00
Florian Müllner 94b907f46d window-list: Init translations
Whoops, we are missing the bindtextdomain() call, which means translations
won't work when no other extension that shares the same domain is used
(like in GNOME Classic for instance).

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

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/174>
2021-07-12 16:04:50 +00:00
Alexander Shopov 1e04622eb4 Update Bulgarian translation 2021-07-11 08:21:24 +00:00
Florian Müllner 519269be9d drive-menu: Avoid blocking I/O when querying filesystem
The last commit improved the heuristics for detecting network mounts,
but at the price of potentially blocking the shell. Avoid that drawback
by making the code in question async.

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

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/27>
2021-06-23 18:15:42 +02:00
Florian Müllner 7d6670ce3c drive-menu: Don't assume mounts without volume are local
The intention of the code is to only expose actually plugged in
devices rather than network mounts, but the existing heuristics are
based on GVolume and simply assume a local mount where there's no
associated volume. Fill that gap by querying the ::remote filesystem
attribute in that case.

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

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/27>
2021-06-23 17:52:19 +02:00
Florian Müllner 4286fd1bcc Tag release 40.2
Update NEWS.
2021-06-10 13:41:34 +02:00
Adam Goode 3bb0897bc1 window-list: Don't use panel-button class for the workspace indicator
The panel-button introduces some horizontal padding which is insensitive
to scroll events. Without this change, there is a small dead zone in the
corner that cannot be used to switch workspaces with the mouse wheel.

For useMenu mode, this has the effect of removing all of the horizontal
space to the edge of the screen, so I add some back with the
status-label-bin margin.

This a is similar change to 8bad8a3b63.

Fixes #315.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/171>
(cherry picked from commit d6648b0b5c)
2021-06-10 13:38:47 +02:00
Juliano de Souza Camargo 50bd597baa Update Portuguese translation
(cherry picked from commit 12eedcf6f7)
2021-06-07 10:22:07 +00:00
Juliano de Souza Camargo 12eedcf6f7 Update Portuguese translation 2021-06-07 10:22:02 +00:00
Hugo Carvalho 4403b54fbc Update Portuguese translation
(cherry picked from commit 08d382facc)
2021-06-02 16:10:00 +00:00
Hugo Carvalho 08d382facc Update Portuguese translation 2021-06-02 16:09:54 +00:00
Marco Trevisan (Treviño) d9ae9a023a New upstream version 40.1 2021-05-30 17:53:15 +02:00
Adam Goode d6648b0b5c window-list: Don't use panel-button class for the workspace indicator
The panel-button introduces some horizontal padding which is insensitive
to scroll events. Without this change, there is a small dead zone in the
corner that cannot be used to switch workspaces with the mouse wheel.

For useMenu mode, this has the effect of removing all of the horizontal
space to the edge of the screen, so I add some back with the
status-label-bin margin.

This a is similar change to 8bad8a3b63.

Fixes #315.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/171>
2021-05-26 11:57:41 +00:00
Florian Müllner 96a1de92db build: Only use major version in shell-versions
The website changed its version handling again, and now takes "40.0"
to mean "40.0, and only 40.0".

Not complaining though, as "40" is more correct in my opinion anyway ...

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/172>
2021-05-25 19:26:08 +02:00
Florian Müllner 861e5c0be6 build: Only use major version in shell-versions
The website changed its version handling again, and now takes "40.0"
to mean "40.0, and only 40.0".

Not complaining though, as "40" is more correct in my opinion anyway ...

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/172>
2021-05-25 15:45:21 +02:00
Florian Müllner bf86b84d6c Post-release version bump 2021-05-14 17:01:12 +02:00
Florian Müllner cc2f46b837 Post-release version bump 2021-05-14 17:00:35 +02:00
Florian Müllner 605dd02217 Tag release 40.1
Update NEWS.
2021-05-13 16:51:52 +02:00
Florian Müllner b33a62f2dc Update sass submodule 2021-05-13 16:50:34 +02:00
Quentin PAGÈS 8a320eb0a1 Update Occitan translation 2021-05-10 20:04:48 +00:00
Pawan Chitrakar 83c4ced407 Update Nepali translation 2021-05-01 05:49:03 +00:00
Florian Müllner e094dead91 windowsNavigator: Adjust to gnome-shell change
Parts of WindowPreview were moved to C for performance reasons, which
turned a formerly private JS property into a GObject property.

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

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/170>
2021-04-08 16:38:40 +02:00
Carmen Bianca BAKKER 6cdf86b6b3 Update Esperanto translation 2021-04-07 12:05:20 +00:00
Florian Müllner 3e8bbb07ea classic: Disable welcome dialog
The Tour focuses on new overview features, which aren't relevant
for gnome-classic where the overview is disabled altogether.

https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/4026

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/169>
2021-04-05 20:32:19 +02:00
Anders Jonsson e3ddd8e7d0 Update Swedish translation 2021-03-27 20:14:29 +00:00
Ngọc Quân Trần aa67982129 Update Vietnamese translation 2021-03-27 07:54:17 +00:00
Florian Müllner 8aa645ae5d build: Adjust shell-version
With the new version scheme, only the major version is relevant as
far as gnome-shell is concerned. However the extension website does
not handle that at the moment, so always append a ".0".
2021-03-20 13:39:25 +01:00
Florian Müllner 20540cb843 Post-release version bump 2021-03-20 13:39:25 +01:00
Florian Müllner d338930d69 Tag release 40.0
Update NEWS.
2021-03-20 13:10:47 +01:00
Jiri Grönroos 35c1763792 Update Finnish translation 2021-03-16 10:15:46 +00:00
Florian Müllner 7a87bdcb1b Post-release version bump 2021-03-16 00:00:31 +01:00
Florian Müllner 50b6bd1884 Tag release 40.rc
Update NEWS.
2021-03-15 16:32:30 +01:00
Florian Müllner db853d9023 Update sass submodule 2021-03-15 16:29:55 +01:00
Florian Müllner 5be44705f7 window-list: Improve preview styling
The current styling doesn't indicate the active workspace very well, and
makes it difficult to differentiate empty workspaces from workspaces with
maximized windows.

Tweak the styling to address those issues.

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

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/166>
2021-03-11 12:08:38 +00:00
Florian Müllner fdfa46099b workspace-indicator: Improve preview styling
The current styling doesn't indicate the active workspace very well, and
makes it difficult to differentiate empty workspaces from workspaces with
maximized windows.

Tweak the styling to address those issues.

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

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/166>
2021-03-11 12:08:38 +00:00
Florian Müllner f987e5f13d workspace-indicator: Reindent stylesheet
For some reason the CSS here uses a different indentation than
gnome-shell or the other extensions, fix that.

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

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/166>
2021-03-11 12:08:38 +00:00
Florian Müllner c766230118 window-list: Only show previews for up to six workspaces
On request of GNOME Classic users, we add GNOME2-like workspace previews
when using a horizontal workspace layout. The previews scale a lot worse
than the menu though, with the risk that they take up all the available
width in extreme cases.

Address this by also taking the number of workspaces into account, and
switch to the menu when we have more than six.

This is particularly important now that we switched to a horizontal
layout by default.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/165>
2021-03-10 20:11:18 +01:00
Florian Müllner bb2b1204b4 workspace-indicator: Only show previews for up to six workspaces
On request of GNOME Classic users, we add GNOME2-like workspace previews
when using a horizontal workspace layout. The previews scale a lot worse
than the menu though, with the risk that they take up all the available
width in extreme cases.

Address this by also taking the number of workspaces into account, and
switch to the menu when we have more than six.

This is particularly important now that we switched to a horizontal
layout by default.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/165>
2021-03-10 20:11:18 +01:00
Florian Müllner cf3690a434 windowsNavigator: Adjust to gnome-shell changes
Unsurprisingly, the big overview changes in gnome-shell broke the
extension. Make the necessary adjustments to get it working again:
 - changed constructor parameters for Workspace/WorkspacesView
 - overall state handling done by adjustment
 - window preview layout changes

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

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/163>
2021-03-10 15:28:37 +00:00
Florian Müllner 7062acf10f native-window-placement: Adjust to gnome-shell changes
More unsurprising breakage:
 - the workspace layout/strategy relation has been cleaned up
 - window previews now include an icon that influences the
   title position
 - window previews scale up on hover, which again influences
   the title position

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/164>
2021-03-10 15:26:26 +00:00
Fran Dieguez 7ace9c4d51 Update Galician translation 2021-02-24 21:14:57 +00:00
Florian Müllner 23887ce2a3 Post-release version bump 2021-02-24 01:57:00 +01:00
Florian Müllner e8b8677bfe Tag release 40.beta
Update NEWS.
2021-02-24 01:50:31 +01:00
Florian Müllner 3603bc7c6a Update sass submodule 2021-02-24 01:50:31 +01:00
Florian Müllner 1e44941db6 drive-menu: Remove unused style class
The .single-indicator class was added to add extra spacing to
lone top bar items when removing the arrows, but dropped again
after solving the extra spacing differently.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/161>
2021-02-24 00:45:58 +00:00
Florian Müllner f71da9e843 window-list: Replace WorkspaceBackground as well
The shell now scales down the backgrounds and adds a rounded corner
clip. Undo both those changes with another override.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/160>
2021-02-24 01:24:11 +01:00
Florian Müllner 1b4a20a8af window-list: Replace Workspace prototype
This is arguably more elegant than injecting into individual methods, and
will be consistent with an upcoming override that cannot be implemented
as method injection.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/160>
2021-02-24 01:24:11 +01:00
Florian Müllner d8e179ed09 window-list: Adjust to OSK changes
Visibility changes are now handled internally, without an easy way
for us to hook into. We can resort to a hack though, as the gesture
action to bring up the keyboard is only enabled while the keyboard
is hidden.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/160>
2021-02-24 01:24:11 +01:00
A S Alam 8016cf7ae9 Update Punjabi translation 2021-02-14 00:58:36 +00:00
Аляксей 7774426eb9 Update Belarusian translation 2021-02-12 16:18:20 +00:00
Florian Müllner 9fa522c29a window-list: Adjust to overview changes
The overview code changed significantly, including the bits we re-use
to implement the window picker in the classic session. Adjust to those
changes to unbreak the extension.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/159>
2021-02-12 02:20:20 +01:00
Florian Müllner b92295ad2c Update sass submodule
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/159>
2021-02-12 02:20:20 +01:00
Florian Müllner d7c8a5d193 extensions: Remove horizontal-workspaces extension
Workspaces are now horizontal by default, so we don't need to change
the layout for classic mode anymore.

That was the only reason why the extension was added, so it has now
outlived its usefulness.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/158>
2021-01-29 16:09:59 +00:00
Michael Lawton 0d8d6dceb0 places-menu: Mark mounts that can be unmounted as removable
While the eject() code falls back to unmount() for mounts that
don't support ejecting, it's not possible to actually do so
because we hide the eject button.

Fix this by treating all mounts as removable that can either be
ejected or unmounted.

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

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/152>
2021-01-28 12:25:26 +01:00
Daniel van Vugt 8a5e793b3d auto-move-windows: Don't move windows already on all workspaces
This fixes a particular case of mutter#992.

Although gnome-shell will also be softened to not crash in future, it's
also a good idea for the extension to explicitly decide how it wants to
handle windows that are already on all workspaces.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/157>
2021-01-28 16:33:50 +08:00
Florian Müllner 8fcbed6481 classic: Remove arrow-override
No need to hide what is no longer there.

https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/3567

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/156>
2021-01-26 17:00:24 +01:00
Florian Müllner ac2ed286e1 extensions: Remove arrows from top bar menus
... following the corresponding gnome-shell change.

https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/3567

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/156>
2021-01-26 16:59:43 +01:00
Florian Müllner 3c3c1f702d window-list: Add tooltips to workspace thumbnails
When showing previews instead of the menu, the workspace names
don't appear anywhere. Some users care strongly about those, so
expose them as tooltip on hover.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/155>
2021-01-20 23:58:13 +01:00
Florian Müllner c33be29f56 workspace-indicator: Add tooltips to workspace thumbnails
When showing previews instead of the menu, the workspace names from
our preferences don't appear anywhere. Some users care strongly about
those, so expose them as tooltip on hover.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/155>
2021-01-20 23:58:13 +01:00
Florian Müllner d8ae2dcba2 window-list: Drop height override
gnome-shell's top bar got taller, and is now just 1px smaller than
our size override. We don't need that additional pixel to fit our
UI, so remove the override to make the sizes of both bars consistent.

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

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/154>
2021-01-18 22:43:52 +01:00
Florian Müllner 3b14c0a04e Post-release version bump 2021-01-14 19:04:45 +01:00
Florian Müllner 0e3d6465eb Tag release 40.alpha.1
Update NEWS.
2021-01-14 19:02:07 +01:00
Florian Müllner d381a0b89b auto-move-windows: Use Gtk.Button.icon_name property
Image buttons are a very common pattern, so GTK4 added some
convenience API we can use to construct them.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/148>
2021-01-14 14:40:55 +01:00
Florian Müllner 5df0fa145b workspace-indicator: Use Gtk.Button.icon_name property
Image buttons are a very common pattern, so GTK4 added some
convenience API we can use to construct them.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/148>
2021-01-14 14:40:55 +01:00
Florian Müllner f0ff0e1400 workspace-indicator: Stop using header func for separators
GTK4 added built-in support for this common pattern, so use that
instead.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/148>
2021-01-14 14:40:55 +01:00
Florian Müllner 53f5a92dc8 user-theme: Stop using header func for separators
GTK4 provides built-in support for this common pattern, so use
that instead.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/148>
2021-01-14 14:40:55 +01:00
Florian Müllner d5c31273ee auto-move-windows: Stop using header func for separators
GTK4 added built-in support for this common pattern, so use that
instead.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/148>
2021-01-14 14:40:55 +01:00
Florian Müllner 22ea58a849 workspace-indicator: Port to GTK4
With this port, all extensions now use GTK4 for their preferences.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/148>
2021-01-14 14:40:55 +01:00
Florian Müllner 67d96993ce auto-move-windows: Port to GTK4
Just like the previous ports, this consists mostly of
replacing the old Gtk.Container methods.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/148>
2021-01-14 14:40:55 +01:00
Florian Müllner 96dd4f9835 window-list: Port to GTK4
Another easy port:
 - replace Gtk.Container methods
 - stop using show_all()
 - Gtk.CheckButton now provides the
   Gtk.RadioButton functionality as well

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/148>
2021-01-14 14:40:55 +01:00
Florian Müllner 3bef6be7c1 user-theme: Port to GTK4
With the previous preparations in place, the actual GTK4 port is
now trivial:
 - replace Gtk.Container methods with widget-specific methods
 - stop using show_all()

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/148>
2021-01-14 14:40:55 +01:00
Florian Müllner b83d38a72e user-theme: Track GSettings to sync checkmark
GTK4 removes the generic GtkWidget API for accessing an inserted
action group, so we need an alternative for tracking the currently
selected theme.

Using the underlying GSettings object looks like the easiest option,
so do that.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/148>
2021-01-14 14:40:54 +01:00
Florian Müllner 5b73960f34 extensions: Stop using :margin shortcut
The property has been removed in GTK4, so prepare for a port by
setting the four individual margin properties instead.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/148>
2021-01-14 14:40:54 +01:00
Jonas Dreßler 505a7f4ac9 classic: Fixup panel styling after gnome-shell changes
We don't want a transparent panel in the classic session (this is
already taken care of by the existing panel background-color overrides),
and we want to avoid the new pill-shaped hover/focus indicators in the
classic session.

For the gnome-shell changes, see
https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1397.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/153>
2021-01-14 00:25:47 +01:00
Florian Müllner e8acfb2b51 Update sass submodule
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/153>
2021-01-14 00:25:47 +01:00
Florian Müllner dcd5dc4c7f ci: Add back commit-rules file
Somehow git-mv ended up as git-rm without me noticing, whoops.
2021-01-11 14:17:04 +01:00
Florian Müllner 2702cdf889 ci: Update ci-fairy image
The default rules file name has changed from commitrules.yml to
commit-rules.yml, adjust to that change.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/151>
2021-01-11 14:03:44 +01:00
Florian Müllner 669e7c32a2 classic: Pre-generate stylesheet
We follow the rule of not putting generated files under version
control, but that means drawing in additional build-time dependencies.
We can reduce those when building from a released tarball by
generating the stylesheets at dist time though, so do that.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/150>
2020-12-29 00:27:07 +01:00
Florian Müllner 294eb0feb5 data: Update list of theme dependencies
The scss sources were split up in gnome-shell last cycle, catch
up with that change.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/150>
2020-12-29 00:16:16 +01:00
Florian Müllner a7ddbd0d53 Change upcoming version (again)
The extension website doesn't handle the chosen scheme correctly,
so use 40.alpha.1 instead.
2020-12-25 23:29:06 +01:00
Florian Müllner c745dd6362 build: Change upcoming version to 40.alpha2
I messed up and released 40.alpha at the same time as 3.38.2, when it's
supposed to be in January. In order to re-align with the schedule, change
the upcoming version to 40.alpha2 so we don't have to skip a release and
will be back on track in time of 40.beta.
2020-12-22 01:33:44 +01:00
Florian Müllner a4cf9f956e ci: Add some more commit message rules
Now that we have the ability to easily define custom rules, add some
more to enforce the existing commit message style.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/149>
2020-12-18 19:26:50 +01:00
Florian Müllner 02aa68b24a ci: Replace custom commit-log script with ci-fairy
ci-fairy now supports checking commit messages for required/disallowed
patterns. Use that to replace our custom commit-log script.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/149>
2020-12-18 19:26:42 +01:00
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 4e731e1dce Post-release version bump 2020-12-02 20:40:19 +01:00
Florian Müllner eee341e907 Tag release 40.alpha
Update NEWS.
2020-12-02 20:33:56 +01:00
Florian Müllner aad96bb1c4 Update sass submodule 2020-12-02 20:33:56 +01:00
Florian Müllner 50d3ee5703 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>
2020-12-02 19:27:44 +01:00
Florian Müllner 08dfb78815 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>
2020-12-02 19:22:51 +01:00
Florian Müllner 6949a5d075 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>
2020-12-02 19:22:12 +01:00
Florian Müllner 893d3b0473 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>
2020-12-02 19:20:08 +01:00
Florian Müllner f5128e13f2 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>
2020-12-02 19:17:36 +01:00
Ray Strode 8318ea919f 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>
2020-11-25 17:48:21 +00:00
Florian Müllner bde20e78f0 ci: Bump ci-fairy template include
This fixes the check-merge-request job when MR branch and target branch are
on the same repo.

See
https://gitlab.freedesktop.org/freedesktop/ci-templates/-/merge_requests/66

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/146>
2020-11-24 16:28:40 +01:00
Jordan Petridis 02db9525e7 ci: Replace only/except with rules
only/except keywords where deperecated in favor of rules.

Since we started using GNOME/gnome-shell!1492 it introduced
a second pipeline being run for each commit.

Detached pipelines are the only way to access CI_MERGE_REQUEST_*
variables, and if we disable normal pipelines you will need to
create wip/spam MRs in order to run the tests.

This reworked rules makes it so, the normal pipeline needs manual
interaction to be started, and the detached/MR pipleines is always
run.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/144>
2020-11-21 01:14:39 +01:00
Jordan Petridis 8d4586bd57 ci: Set some sensible defaults
* Allow for all jobs to be cancelled if a newer commit is pushed
* Automatically retry jobs if they fail due to some infrastructure issue

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/144>
2020-11-21 01:14:39 +01:00
Jonas Ådahl 8872659621 ci: Check that merge requests have the right settings
This will catch the missing "allow write access for maintainers" check
box being checked.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/144>
2020-11-21 01:14:39 +01:00
Florian Müllner 46c7677643 ci: Use ci-fairy image for commit log check
This is in line with what mutter/gnome-shell are using, and should
be smaller (read: faster) than the gjs image.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/144>
2020-11-21 01:14:39 +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
Jonas Ådahl 4b9f4b1b63 doap: Make marge-bot a maintainer
This is so that the merge button can be restricted to maintainers, thus
decreasing the risk of merging using the merge button.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/141>
2020-11-19 01:32:23 +01:00
Jonas Ådahl b64c93897b ci: Wait for 'check-commit-log' before continuing
The check-commit-log is quick, and to get a result early is helpful as
one can then more quickly check for failures via the report provided via
the JUnit report.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/141>
2020-11-19 01:32:23 +01:00
Jonas Ådahl a7939f18d1 ci/check-commit-log: Generate JUnit report
This means the merge request will see the commit log review issues
causing the pipeline to fail without having to dig through CI log files.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/141>
2020-11-19 01:13:11 +01:00
Jonas Ådahl 15efbc29be ci/check-commit-log: Reverse the merge request URL check
Instead of making sure there is a reference to a bug or merge request,
make sure there isn't. The reason for this is that marge-bot will always
append a merge request URL in the end of the commit message.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/141>
2020-11-19 01:13:11 +01:00
Florian Müllner 6e5466a4ec ci: Explicitly specify job dependencies
We can speed up CI a bit by allowing build jobs to run in parallel
with review jobs.

See https://gitlab.gnome.org/help/ci/yaml/README.md#needs for details.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/141>
2020-11-19 01:12:29 +01:00
Thun Pin 737c897624 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
2020-11-18 23:54:18 +00:00
Florian Müllner c317a876dd ci: Switch to updated gnome-shell image
gnome-shell now produces a CI image as part of its pipeline. Use that
instead of the old, manually-updated image.

https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/140
2020-11-19 00:22:01 +01:00
Florian Müllner 72c67aacc4 lint: Sync configuration with gjs
gjs updated its eslint configuration, so sync our copy.

https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/137
2020-11-14 00:58:52 +01:00
Florian Müllner ba7e3fc0b5 cleanup: Remove empty leading/trailing lines in blocks
gjs added a new rule to its eslint ruleset that forbids "block padding",
so make sure we conform to that rule before syncing up the configuration.

https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/137
2020-11-14 00:58:52 +01:00
Florian Müllner 61cf679b8c 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
2020-11-13 23:53:49 +00:00
Florian Müllner ba55bacab4 ci: Use junit output format
Gitlab has built-in support for junit reports, so switch eslint's
output to that format.

https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/136
2020-11-07 01:55:02 +01:00
Jordi Mas 9445bd2205 Update Catalan translation 2020-10-23 21:10:23 +02: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
Florian Müllner 6ed1f45ffd 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 03:09:45 +02:00
Florian Müllner 81be1d2e2f 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 03:09:40 +02:00
Florian Müllner 52abf74088 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-10-21 01:05:07 +00:00
Florian Müllner 623bc6dbf3 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-10-21 01:05:07 +00:00
Fabio Tomat 04b23ec68f Update Friulian translation 2020-10-17 20:14:41 +00: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
Sergio Costas b65f362f0d 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
2020-10-08 23:42:21 +02:00
Jeremy Bicha 41664b152c New upstream version 3.38.1 2020-10-06 17:36:33 -04:00
Florian Müllner 7c30f35b12 Bump version to 40.alpha
The GNOME project has adopted a new versioning scheme[0], and
GNOME 3.38 will be followed by GNOME 40.

Open the new development cycle by switching to the new scheme, as
well as to post-release bumps as recommended.

[0] https://discourse.gnome.org/t/new-gnome-versioning-scheme/4235

https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/131
2020-10-06 15:07:54 +02:00
Florian Müllner 9e976f06b4 Bump version to 3.38.1
Update NEWS.
2020-10-05 20:43:21 +02:00
Florian Müllner 369801dbeb Update sass submodule 2020-10-05 20:42:16 +02:00
Yosef Or Boczko 2c3c7e8a73 Update Hebrew translation 2020-09-28 19:05:19 +00:00
Stas Solovey bb8f34de83 Update Russian translation 2020-09-22 19:52:00 +00:00
Cheng-Chia Tseng 6c98658fe1 Update Chinese (Taiwan) translation 2020-09-22 15:07:44 +00:00
Simon McVittie 8957c277a1 New upstream version 3.38.0 2020-09-22 09:16:27 +01:00
Yacine Bouklif 3f06c2bc04 Add Kabyle translation 2020-09-19 11:51:36 +00:00
Florian Müllner 9e38b091a9 Bump version to 3.38.0
Update NEWS.
2020-09-14 22:52:43 +02:00
Rūdolfs Mazurs 62d7b883f0 Update Latvian translation 2020-09-12 09:06:28 +00:00
Milo Casagrande e56a9c5681 Update Italian translation 2020-09-10 08:12:04 +00:00
Tim Sabsch 03aa180472 Update German translation 2020-09-09 06:04:41 +00:00
Juliano Camargo bbb0775e1a Update Portuguese translation 2020-09-08 20:08:29 +00:00
Alan Mortensen c41d285131 Updated Danish translation 2020-09-07 19:58:09 +02:00
Balázs Meskó cc63876b7e Update Hungarian translation 2020-09-06 21:06:21 +00:00
Florian Müllner 08769ec0b6 Bump version to 3.37.92
Update NEWS.
2020-09-06 01:06:49 +02:00
Dušan Kazik 5615c21797 Update Slovak translation 2020-09-02 12:02:31 +00:00
Changwoo Ryu 48d2b4c902 Update Korean translation 2020-08-30 07:46:02 +00:00
Marek Černocký a43db7233d Updated Czech translation 2020-08-28 22:21:25 +02:00
Marco Trevisan (Treviño) 8b9be8f120 New upstream version 3.37.91 2020-08-27 08:18:07 +02:00
Aurimas Černius 25143c92f4 Updated Lithuanian translation 2020-08-26 22:34:38 +03:00
Zander Brown c4ab7e9bbf Update British English translation 2020-08-26 12:25:53 +00:00
Nathan Follens 1d082fc026 Update Dutch translation 2020-08-25 15:38:07 +00:00
Florian Müllner 75919911f5 Bump version to 3.37.91
Update NEWS.
2020-08-24 18:09:27 +02:00
Florian Müllner bf1f129854 Update sass submodule 2020-08-24 18:07:44 +02:00
Goran Vidović 59bcc0a6a7 Update Croatian translation 2020-08-19 22:39:08 +00:00
Goran Vidović 61a54add2e Update Croatian translation 2020-08-19 22:38:38 +00:00
Марко Костић 17d07239c1 Update Serbian translation 2020-08-19 05:21:54 +00:00
Jiri Grönroos bf8a31a6c8 Update Finnish translation 2020-08-16 15:17:57 +00:00
Rafael Fontenelle 1d2fdf5c19 Update Brazilian Portuguese translation 2020-08-16 10:30:03 +00:00
Piotr Drąg f6ada58f5f Update Polish translation 2020-08-15 11:39:47 +02:00
Kukuh Syafaat ebfbc397be Update Indonesian translation 2020-08-13 12:19:05 +00:00
Akarshan Biswas 02290e8bba Update Bengali (India) translation 2020-08-13 04:36:03 +00:00
Fran Dieguez 1537ac39d4 Update Galician translation 2020-08-12 23:02:45 +00:00
Florian Müllner e39c3b4561 Bump version to 3.37.90
Update NEWS.
2020-08-11 17:32:17 +02:00
Florian Müllner 80030687d9 Update sass submodule 2020-08-11 17:30:02 +02:00
Alexandre Franke 3859c09318 Update French translation 2020-08-10 10:50:40 +00:00
Asier Sarasua Garmendia a41cd3c19a Update Basque translation 2020-08-10 07:06:33 +00:00
Anders Jonsson fcbdeba8c5 Update Swedish translation 2020-08-01 23:10:54 +00:00
Piotr Drąg 116f074e3b Update POTFILES.in
https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/128
2020-08-01 14:38:05 +02:00
Florian Müllner 9a78c7e4f4 classic: Drop separate gnome-session definition
Originally the classic session replaced `gnome-shell.desktop` with
`gnome-shell-classic.desktop` (to add the --mode=classic parameter)
and added `nautilus-classic.desktop` (to force on desktop icons).

Neither is the case anymore (and hasn't been for years): Nowadays the
only expected difference is the GNOME_SHELL_SESSION_MODE variable and
the DesktopNames field, which are both set from the session .desktop
file rather than the gnome-session session definition.

Any difference in the latter - like not starting the USBProtection
plugin and missing systemd user session support - are bugs. The
easiest way to avoid those in the future is by removing the obsolete
duplication that enables them, so do just that.

https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/126
2020-07-31 08:52:51 +00:00
Efstathios Iosifidis 9a2d6d68ff Update Greek translation 2020-07-13 21:42:11 +00:00
Fabio Tomat bc49778100 Update Friulian translation 2020-07-12 16:10:38 +00:00
Florian Müllner 67d2e2f623 Bump version to 3.37.3
Update NEWS.
2020-07-07 18:47:17 +02:00
Florian Müllner eff625fcb8 native-window-placement: Adjust to gnome-shell changes
The extension was affected pretty badly by the window picker overhaul;
adjust to all(?) the major and minor changes to get it to work again.

https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/124
2020-07-07 17:39:36 +02:00
Florian Müllner 3742f79d4b window-list: Adjust to gnome-shell changes
The window picker saw a significant overhaul. Amazingly the adjustments
necessary are relatively small ...

https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/124
2020-07-07 17:31:52 +02:00
Florian Müllner b6a3503f5e window-list: Remove some dead code
Since PanelMenu.Button started to inherit from St.Widget, the custom
_allocate() function isn't called anymore.

Simply changing the function to vfunc_allocate() doesn't work as other
changes happened in the meantime, so for now just remove it altogether.

https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/124
2020-07-07 17:31:52 +02:00
Baurzhan Muftakhidinov f449ab31c9 Update Kazakh translation 2020-07-02 06:40:14 +00:00
Baurzhan Muftakhidinov 920b925b12 Update Kazakh translation
(cherry picked from commit 9a8b5caca3)
2020-06-25 05:18:54 +00:00
Boyuan Yang ad5e70b03b Update Chinese (China) translation 2020-06-23 21:15:19 +00:00
sicklylife 7beebc11f6 Update Japanese translation 2020-06-10 12:34:10 +00:00
sicklylife 1391acd71f Update Japanese translation 2020-06-10 12:18:25 +00:00
Jordi Mas 761fdf1036 Update Catalan translation 2020-06-06 14:42:37 +02:00
Florian Müllner 7f2c39cdb2 Bump version to 3.37.2
Update NEWS.
2020-06-02 22:16:25 +02:00
Matej Urbančič b5ff860118 Updated Slovenian translation 2020-06-01 22:08:36 +02:00
Florian Müllner aeaba3f379 window-list: Replace removed Clutter.BoxLayout method
The method was deprecated for years and has finally been removed.
Just set appropriate expand/align properties on the children and
add them with the usual add_child() method.

https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/122
2020-05-28 02:46:06 +02:00
Florian Müllner f96943a4dc window-list: Replace allocation-changed signal
It has been removed in favor of notify::allocation.

https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/122
2020-05-28 02:46:06 +02:00
Florian Müllner 60ad2e37ff window-list: Stop using obsolete StBin properties
Those properties were deprecated (and made no-ops) last cycle, and
have now been removed altogether.

https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/122
2020-05-28 02:46:06 +02:00
Florian Müllner 8c53fd9590 workspace-indicator: Stop using obsolete StBin properties
Those properties were deprecated (and made no-ops) last cycle, and
have now been removed altogether.

https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/122
2020-05-28 02:46:06 +02:00
Daniel Șerbănescu 867ace0b0a Update Romanian translation 2020-05-22 09:14:46 +00:00
Danial Behzadi a74862e745 Update Persian translation 2020-05-12 14:27:33 +00:00
Emin Tufan Çetin c16f9828bd Update Turkish translation 2020-05-05 14:34:53 +00:00
Daniel Mustieles 608a8b1639 Updated Spanish translation 2020-05-04 15:45:54 +02:00
Yuri Chornoivan 7bc9b282a2 Update Ukrainian translation 2020-05-03 19:20:15 +00:00
Florian Müllner 9db7b96f24 window-list: Modernize preference dialog a bit
The current widget uses UI patterns that are reminiscent of GNOME 2.
It doesn't take a lot to make it look more modern: Simply giving the
radio group a distinct background and border allows us to move the
whole UI to the center, making the dialog more balanced and visually
pleasing.

https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/121
2020-05-03 19:51:24 +02:00
Florian Müllner c87cfc822a auto-move: Overhaul preference dialog
auto-move uses the same outdated UI pattern as workspace-indicator did
until commit 90d3c5c51d, imposing the same problems for a future GTK4
port.

So replace treeview and toolbar with an editable list like we did for
the other extension.

https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/121
2020-05-03 19:51:24 +02:00
Laurent Bigonville d3b687df8b New upstream version 3.36.2 2020-05-03 10:01:14 +02:00
Cheng-Chia Tseng ff94c5a143 Update Chinese (Taiwan) translation 2020-05-02 08:06:58 +00: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
Florian Müllner 81f999f761 Bump version to 3.37.1
Update NEWS.
2020-04-29 21:55:52 +02:00
Florian Müllner 17b5c0400a Update sass submodule 2020-04-29 21:49:53 +02:00
Florian Müllner ac937b9549 user-theme: Make rows non-selectable
A row has to be activated to select a theme, not merely selected.
The selection therefore doesn't do anything, so disable it.
2020-04-29 21:44:13 +02:00
Daniel Mustieles 0c223de045 Updated Spanish translation 2020-04-28 17:47:14 +02:00
Anders Jonsson 564235d44c Update Swedish translation 2020-04-26 18:52:30 +00:00
Yuri Chornoivan 92a2361306 Update Ukrainian translation 2020-04-25 08:07:50 +00:00
Danial Behzadi 9f27654729 Update Persian translation 2020-04-24 20:13:04 +00:00
Dz Chen f4013c7a5c Update Chinese (China) translation 2020-04-18 09:59:29 +00:00
Kristjan SCHMIDT 9e7eff4a3e Update Esperanto translation
(cherry picked from commit c5246b7415)
2020-04-18 09:00:54 +00:00
Kristjan SCHMIDT c5246b7415 Update Esperanto translation 2020-04-18 09:00:46 +00:00
Florian Müllner 5b2bdd138a user-themes: Support session mode styles
Session mode stylesheets are installed in gnome-shell's theme
directory instead of a subdirectory of the global themes direc-
tory.

https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/118
2020-04-17 16:33:03 +00:00
Florian Müllner 90d3c5c51d workspace-indicator: Overhaul prefs widget
Inline toolbars are an outdated UI pattern, and both the toolbar widget
and the inline styling have been removed from GTK4. Making sure the
extension doesn't get in the way of a future GTK4 port is a good excuse
for modernizing the UI, so do just that :-)

Replace treeview and toolbar with an editable list as outline in the HIG:
https://developer.gnome.org/hig/stable/lists.html.en

https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/120
2020-04-17 17:54:15 +02:00
Milan Crha b00e531626 window-list: Invalid current mode selected in Preferences
It seems that gtk+ resets the active radio whenever a new radio button
is added into the group, thus rather restore the current mode after
the group is fully populated.

https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/119
2020-04-17 09:37:13 +02:00
Florian Müllner b1c1b01184 po: Update POTFILES.in
The user-themes extension actually never had translatable strings.
2020-04-12 04:41:53 +02:00
Florian Müllner 739b1e11a0 user-themes: Add preference widget
While we don't endorse or support 3rd party theming, the extension
exists and is actively used. However right now the most convenient
way of setting it up is by installing Tweak Tool; give users an
alternative by providing a simple settings dialog ourselves.

https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/117
2020-04-12 04:13:25 +02:00
Florian Müllner a3541ff0d9 ci: Drop "regular" build job
We already do a meson build/install when exporting extension bundles, and
now that the syntax check is handled by the CI instead of `meson test`,
the job just duplicates work.

https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/116
2020-04-11 01:08:11 +02:00
Florian Müllner 8fb5476a1c build: Drop syntax-checks from meson test
Those checks are just as well handled by the CI, and removing them
makes for a nice build system cleanup.

https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/116
2020-04-11 01:08:02 +02:00
Florian Müllner fc8a46f15a ci: Syntax-check js sources
This is currently done as part of `ninja test`, but doing the check
in a separate CI job means it can run in parallel with other review
jobs and fail before trying to build.

https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/116
2020-04-11 01:07:55 +02:00
Florian Müllner 2e21f7cf72 ci: Combine commit/source checks under 'review'
The current names are an artifact from when flatpak-ci used
review/stop_review jobs. 'review' is a much better name and
matches what gnome-shell itself uses.

https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/116
2020-04-11 01:07:45 +02:00
Florian Müllner a317d79016 ci: Set a default image
All jobs but one use the same issue, so specify that globally instead
of for each job.

https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/116
2020-04-11 01:07:37 +02:00
Florian Müllner 4722b89cc3 cleanup: Don't linebreak before closing parentheses
Otherwise recent versions of eslint want "dangling" commas,
which is at least ugly considering that most functions don't
allow adding arguments at leisure.

https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/116
2020-04-11 01:03:38 +02:00
Florian Müllner 5a4b71ba90 ci: Create and expose extension bundles
Similar to how we let CI create flatpaks for application, create
and expose extension bundles for easier testing.

https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/114
2020-04-10 23:57:09 +02:00
Florian Müllner a6ee142f21 build: Omit unneeded translations from zip files
Each extension zip we create includes the translations of all extensions,
which is clearly wasteful. Avoid that by generating per-extension .pot
files and filtering out unnecessary translations.

https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/114
2020-04-10 23:11:43 +02:00
Florian Müllner 35427ed4f1 build: Use gnome-extensions-tool for zipping up
The tool has a dedicated command for creating an extension bundle. It
knows how to handle translations and GSettings schemas, so we don't
have to.

https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/114
2020-04-10 23:11:43 +02:00
Florian Müllner bce63d3168 places-menu: Emphasize eject buttons here as well
We already align the buttons correctly here, but otherwise they can
use the same treatment as in the drive-menu.

https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/issues/223
2020-04-10 14:31:40 +00:00
Florian Müllner 0426d1d8d5 drive-menu: Emphasize eject buttons as distinct controls
The buttons currently appear more as an attachment to the label
than as distinct controls. Address that by:

 - applying .button styling
 - increasing spacing between label and button
 - aligning buttons at the end

https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/issues/223
2020-04-10 14:31:40 +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
Xiaoguang Wang f9aaa732b2 windowPicker: Wrong signal ID _nWorkspacesNotifyId
https://gitlab.gnome.org/GNOME/gnome-shell-extensions/merge_requests/106
2020-04-10 16:27:41 +02:00
Florian Müllner 7b82c5e12b 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
2020-04-10 16:19:27 +02:00
Simon McVittie a4987d03b8 New upstream version 3.36.1 2020-04-02 10:14:07 +01:00
Yosef Or Boczko db305687d5 Update Hebrew translation
(cherry picked from commit c477f10bfb)
2020-04-01 15:22:54 +00:00
Yosef Or Boczko c477f10bfb Update Hebrew translation 2020-04-01 15:22:37 +00:00
Florian Müllner f527fe3774 build: Post-release version bump
... and official start of the next development cycle.
2020-03-31 01:03:14 +02:00
Florian Müllner 2ae0f368b9 Bump version to 3.36.1
Update NEWS.
2020-03-31 00:58:41 +02:00
Florian Müllner 3428bebb67 Update sass submodule 2020-03-31 00:57:31 +02:00
Iain Lane ac33058086 New upstream version 3.36.0 2020-03-16 12:13:26 +00:00
Daniel Korostil 73822dc5f5 Update Ukrainian translation 2020-03-10 20:46:17 +00:00
Florian Müllner 961757f717 Bump version to 3.36.0
Update NEWS.
2020-03-07 23:07:37 +01:00
Florian Müllner 7d5c985004 build: Switch to js68 for tests
It's what the cool kids use nowadays ...
2020-03-07 23:07:37 +01:00
Florian Müllner cd16995503 Update sass submodule 2020-03-07 23:00:47 +01:00
Florian Müllner 3a3b5bac85 Bump version to 3.35.92 2020-03-01 02:22:25 +01:00
Florian Müllner 9f6b83eece Update sass submodule 2020-03-01 02:22:02 +01:00
133 changed files with 7369 additions and 6244 deletions
+177
View File
@@ -0,0 +1,177 @@
include:
- remote: 'https://gitlab.freedesktop.org/freedesktop/ci-templates/-/raw/bbe5232986c9b98eb1efe62484e07216f7d1a4df/templates/fedora.yml'
- remote: "https://gitlab.freedesktop.org/freedesktop/ci-templates/-/raw/6f86b8bcb0cd5168c32779c4fea9a893c4a0c046/templates/ci-fairy.yml"
image: registry.gitlab.gnome.org/gnome/gnome-shell/fedora/34:2021-08-12.0
stages:
- pre_review
- prepare
- review
- build
- deploy
default:
# Cancel jobs if newer commits are pushed to the branch
interruptible: true
# Auto-retry jobs in case of infra failures
retry:
max: 1
when:
- 'runner_system_failure'
- 'stuck_or_timeout_failure'
- 'scheduler_failure'
- 'api_failure'
variables:
FDO_UPSTREAM_REPO: GNOME/gnome-shell-extensions
LINT_LOG: "eslint-report.xml"
JS_LOG: "js-report.txt"
workflow:
rules:
- if: '$CI_MERGE_REQUEST_IID'
- if: '$CI_COMMIT_TAG'
- if: '$CI_COMMIT_BRANCH'
.pipeline_guard: &pipeline_guard
rules:
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
- if: '$CI_COMMIT_TAG'
- if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH'
- if: '$CI_COMMIT_BRANCH =~ /^gnome-[0-9-]+$/'
- when: 'manual'
.gnome-shell-extensions.fedora:34:
variables:
FDO_DISTRIBUTION_VERSION: 34
FDO_DISTRIBUTION_TAG: '2021-08-31.0'
FDO_DISTRIBUTION_PACKAGES: >
meson git gettext sassc
.prereview_req: &prereview_req
needs:
- check_commit_log
- check-merge-request
check_commit_log:
extends:
- .fdo.ci-fairy
stage: pre_review
script:
- if [[ x"$CI_MERGE_REQUEST_TARGET_BRANCH_NAME" != "x" ]] ;
then
ci-fairy check-commits --junit-xml=commit-message-junit-report.xml ;
else
echo "Not a merge request" ;
fi
<<: *pipeline_guard
artifacts:
expire_in: 1 week
paths:
- commit-message-junit-report.xml
reports:
junit: commit-message-junit-report.xml
check-merge-request:
extends:
- .fdo.ci-fairy
stage: pre_review
script:
- if [[ x"$CI_MERGE_REQUEST_TARGET_BRANCH_NAME" != "x" ]] ;
then
ci-fairy check-merge-request --require-allow-collaboration --junit-xml=check-merge-request-report.xml ;
else
echo "Not a merge request" ;
fi
<<: *pipeline_guard
artifacts:
expire_in: 1 week
paths:
- check-merge-request-report.xml
reports:
junit: check-merge-request-report.xml
build-fedora-container:
extends:
- .fdo.container-build@fedora@x86_64
- .gnome-shell-extensions.fedora:34
stage: prepare
<<: *prereview_req
js_check:
stage: review
<<: *prereview_req
script:
- find extensions -name '*.js' -exec js78 -c '{}' ';' 2>&1 | tee $JS_LOG
- (! grep -q . $JS_LOG)
artifacts:
paths:
- ${JS_LOG}
when: on_failure
eslint:
stage: review
<<: *prereview_req
script:
- eslint -o $LINT_LOG -f junit --resolve-plugins-relative-to $(npm root -g) extensions
artifacts:
paths:
- ${LINT_LOG}
reports:
junit: ${LINT_LOG}
build-bundles:
stage: build
<<: *prereview_req
script:
- ./export-zips.sh
artifacts:
name: 'Extension bundles'
expose_as: 'Get Extension bundles here'
paths:
- zip-files/
fedora-build:
extends:
- .fdo.distribution-image@fedora
- .gnome-shell-extensions.fedora:34
stage: build
needs:
- build-fedora-container
before_script:
- git submodule update --init
script:
- meson setup build --werror -Dextension_set=all -Dclassic_mode=true
- meson compile -C build
- meson test -C build
- meson install -C build
artifacts:
paths:
- build
fedora-dist:
extends:
- .fdo.distribution-image@fedora
- .gnome-shell-extensions.fedora:34
stage: deploy
needs:
- fedora-build
before_script:
- git submodule update --init
script:
- meson dist -C build
rules:
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
changes:
- "**/meson.build"
- meson/*
fedora-dist-tarball:
extends: fedora-dist
artifacts:
expose_as: 'Get tarball here'
paths:
- build/meson-dist/$CI_PROJECT_NAME-$CI_COMMIT_TAG.tar.xz
rules:
- if: '$CI_COMMIT_TAG'
+13
View File
@@ -0,0 +1,13 @@
patterns:
deny:
- regex: '^$CI_MERGE_REQUEST_PROJECT_URL/(-/)?merge_requests/$CI_MERGE_REQUEST_IID$'
message: Commit message must not contain a link to its own merge request
- regex: '^extensions/'
message: Commit message subject should not be prefixed with 'extensions/', use the extension name instead
where: subject
- regex: '^[^:]+: [a-z]'
message: "Commit message subject should be properly Capitalized. E.g. 'window: Marginalize extradicity'"
where: subject
- regex: '^\S*\.js:'
message: Commit message subject prefix should not include .js
where: subject
+1 -1
View File
@@ -28,4 +28,4 @@ imports (like imports.lang or imports.dbus) and introspection,
the other for Shell API. Within the same group, put everything the other for Shell API. Within the same group, put everything
in alphabetic order. in alphabetic order.
[coding-style]: https://gitlab.gnome.org/GNOME/gjs/blob/master/doc/Style_Guide.md [coding-style]: https://gitlab.gnome.org/GNOME/gjs/blob/HEAD/doc/Style_Guide.md
+235
View File
@@ -1,3 +1,238 @@
42.beta
=======
* workspace-indicator: Fix cancelling editing with Esc [Florian; !208]
* window-list: Update window tracking to avoid missing icons [Florian; !207]
* Use libadwaita for preferences [Florian; !209, !213]
* Adapt to Clutter grab API changes [Florian; !212]
* Misc. bug fixes and cleanups [Jan, Florian; !210, !214]
Contributors:
Jan Beich, Florian Müllner, Naala Nanba
Translators:
Boyuan Yang [zh_CN], Matej Urbančič [sl], Naala Nanba [ab],
Alexander Shopov [bg], Emin Tufan Çetin [tr]
42.alpha
========
* native-window-placement: Fix distorted layout in app grid [Sebastian; !189]
* window-list: Fix on-screen keyboard [Florian; !199]
* Misc. bug fixes and cleanups [Neal; Just; !195, !197]
Contributors:
Piotr Drąg, Neal Gompa, Sebastian Keller, Florian Müllner, Just Perfection
Translators:
Goran Vidović [hr], Sveinn í Felli [is], Yuri Chornoivan [uk],
Fabio Tomat [fur], Quentin PAGÈS [oc], Hugo Carvalho [pt],
Yaron Shahrabani [he], Jordi Mas i Hernandez [ca], MohammadSaleh Kamyab [fa],
Fran Dieguez [gl], Daniel Mustieles [es], Aleksandr Melman [ru],
Aurimas Černius [lt], Asier Sarasua Garmendia [eu], Kukuh Syafaat [id],
Rafael Fontenelle [pt_BR]
41.0
====
* Bump version
41.rc.1
=======
* Fix pre-generating stylesheets in tarball [Florian; !190]
Contributors:
Florian Müllner
41.rc
=====
* window-list: Adapt to overview-on-startup [Florian; !185]
* apps-menu: Use a custom 'toggle-menu' shortcut [Florian; !173]
* Misc. bug fixes and cleanups [Florian; !186]
Contributors:
Florian Müllner
41.beta
=======
* window-list: Extend reactive area of minimap to screen edges [Adam; !171]
* drive-menu: Improve detection of network mounts [Florian; !27, !176]
* Use distinct gettext domain for e.g.o uploads [Florian; #335]
* Misc. bug fixes and cleanups [Florian; !172, !174, !177, !167, !178, !180,
!181, !182, !183]
Contributors:
Marco Trevisan (Treviño), Adam Goode, Florian Müllner
Translators:
Hugo Carvalho [pt], Juliano de Souza Camargo [pt], Alexander Shopov [bg]
40.1
====
* Disable welcome dialog in classic session [Florian; !169]
* windowsNavigator: Adjust to a late gnome-shell change [Florian; !170]
Contributors:
Florian Müllner
Translators:
Ngọc Quân Trần [vi], Anders Jonsson [sv], Carmen Bianca BAKKER [eo],
Pawan Chitrakar [ne], Quentin PAGÈS [oc]
40.0
====
Translators:
Jiri Grönroos [fi]
40.rc
=====
* native-window-placement: Adjust to gnome-shell changes [Florian; !164]
* windows-navigator: Adjust to gnome-shell changes [Florian; !163]
* window-list, workspace-indicator: Only show previews for up to six workspaces
[Florian; !165]
* window-list, workspace-indicator: Improve workspace preview appearance
[Florian; !166]
Contributors:
Florian Müllner
Translators:
Fran Dieguez [gl]
40.beta
=======
* Add tooltips to workspace thumbnails [Florian; !155]
* Drop arrows from top bar menus [Florian; !156]
* drive-menu: Mark mounts that can be unmounted as removable [Michael; !152]
* Remove horizontal-workspaces extension [Florian; !158]
* Adjust to shell overview changes [Florian; !159, !160]
* Fix crashes [Daniel; !157]
* Misc. bug fixes and cleanups [Florian; !154, !161]
Contributors:
Michael Lawton, Florian Müllner, Daniel van Vugt
Translators:
Аляксей [be], A S Alam [pa]
40.alpha.1
==========
* Don't depend on sassc when building from tarball [Florian; !150]
* Port extensions preferences to GTK4 [Florian; !148]
* Misc. bug fixes and cleanups [Florian, Jonas; !149, !151, !153]
Contributors:
Jonas Dreßler, Florian Müllner
40.alpha
========
* window-list: Honor changes in skip-taskbar property [Sergio; !130]
* window-list, workspace-indicator: Adjust to 3.38 changes [Florian; !133]
* window-list, workspace-indicator: Improve previews in workspace thumbs
[Florian; #260, !142]
* auto-move: Improve behavior on multi-monitor setups [Florian; !135]
* windowNavigator: Adjust to 3.38 changes [Thun; #259]
* Misc. bug fixes and cleanups [Florian, Jonas Å, Jordan, Ray; !131, !136,
!137, !140, !141, !144, !146, !145]
Contributors:
Sergio Costas, Florian Müllner, Jordan Petridis, Thun Pin, Ray Strode,
Jonas Ådahl
Translators:
Fabio Tomat [fur], Jordi Mas [ca]
3.38.1
======
Contributors:
Yacine Bouklif, Florian Müllner
Translators:
Yacine Bouklif [kab], Cheng-Chia Tseng [zh_TW], Stas Solovey [ru],
Yosef Or Boczko [he]
3.38.0
======
Translators:
Balázs Meskó [hu], Alan Mortensen [da], Juliano Camargo [pt], Tim Sabsch [de],
Milo Casagrande [it], Rūdolfs Mazurs [lv]
3.37.92
=======
Translators:
Nathan Follens [nl], Zander Brown [en_GB], Aurimas Černius [lt],
Marek Černocký [cs], Changwoo Ryu [ko], Dušan Kazik [sk]
3.37.91
=======
Contributors:
Florian Müllner
Translators:
Fran Dieguez [gl], Akarshan Biswas [bn_IN], Kukuh Syafaat [id],
Piotr Drąg [pl], Rafael Fontenelle [pt_BR], Jiri Grönroos [fi],
Марко Костић [sr], Goran Vidović [hr]
3.37.90
=======
* Misc. bug fixes and cleanups [Florian, Piotr; !126, !128]
Contributors:
Piotr Drąg, Florian Müllner
Translators:
Fabio Tomat [fur], Efstathios Iosifidis [el], Anders Jonsson [sv],
Asier Sarasua Garmendia [eu], Alexandre Franke [fr]
3.37.3
======
* window-list, native-window-placement: Adjust to shell changes [Florian; !124]
Contributors:
Florian Müllner
Translators:
Jordi Mas [ca], sicklylife [ja], Boyuan Yang [zh_CN],
Baurzhan Muftakhidinov [kk]
3.37.2
======
* window-list, auto-move: Modernize preference dialogs [Florian; !121]
* Adjust to gnome-shell changes [Florian; !122]
Contributors:
Florian Müllner
Translators:
Cheng-Chia Tseng [zh_TW], Yuri Chornoivan [uk], Daniel Mustieles [es],
Emin Tufan Çetin [tr], Danial Behzadi [fa], Daniel Șerbănescu [ro],
Matej Urbančič [sl]
3.37.1
======
* drive-menu: Emphasize eject buttons [Florian; #223]
* user-theme: Add preference dialog [Florian; !117]
* window-list: Fix inconsistent state in preference dialog [Milan; !119]
* workspace-indicator: Overhaul preference dialog [Florian; !120]
* user-theme: Support session mode styles [Florian; !118]
* Misc. bug fixes and cleanups [Florian, Xiaoguang; !113, !106, !114, !116]
Contributors:
Milan Crha, Florian Müllner, Xiaoguang Wang
Translators:
Daniel Korostil [uk], Yosef Or Boczko [he], Kristjan SCHMIDT [eo],
Dz Chen [zh_CN], Danial Behzadi [fa], Yuri Chornoivan [uk],
Anders Jonsson [sv], Daniel Mustieles [es]
3.36.0
======
Contributors:
Florian Müllner
3.35.91 3.35.91
======= =======
+13
View File
@@ -69,6 +69,19 @@ GSettings key.
Adds a simple workspace switcher to the top bar. Adds a simple workspace switcher to the top bar.
## Default branch
The default development branch is `main`. If you still have a local
checkout under the old name, use:
```sh
git checkout master
git branch -m master main
git fetch
git branch --unset-upstream
git branch -u origin/master
git symbolic-ref refs/remotes/origin/HEAD refs/remotes/origin/main
```
## License ## License
GNOME Shell Extensions are distributed under the terms of the GNU General GNOME Shell Extensions are distributed under the terms of the GNU General
+1
View File
@@ -2,6 +2,7 @@
"parentMode": "user", "parentMode": "user",
"stylesheetName": "gnome-classic.css", "stylesheetName": "gnome-classic.css",
"hasOverview": false, "hasOverview": false,
"showWelcomeDialog": false,
"enabledExtensions": [@CLASSIC_EXTENSIONS@], "enabledExtensions": [@CLASSIC_EXTENSIONS@],
"panel": { "left": ["appMenu"], "panel": { "left": ["appMenu"],
"center": [], "center": [],
+8
View File
@@ -0,0 +1,8 @@
[Desktop Entry]
Name=GNOME Classic on Wayland
Comment=This session logs you into GNOME Classic
Exec=env GNOME_SHELL_SESSION_MODE=classic gnome-session
TryExec=gnome-session
Type=Application
DesktopNames=GNOME-Classic;GNOME;
X-GDM-SessionRegisters=true
+8
View File
@@ -0,0 +1,8 @@
[Desktop Entry]
Name=GNOME Classic on Xorg
Comment=This session logs you into GNOME Classic
Exec=env GNOME_SHELL_SESSION_MODE=classic gnome-session
TryExec=gnome-session
Type=Application
DesktopNames=GNOME-Classic;GNOME;
X-GDM-SessionRegisters=true
+2 -1
View File
@@ -1,7 +1,8 @@
[Desktop Entry] [Desktop Entry]
Name=GNOME Classic Name=GNOME Classic
Comment=This session logs you into GNOME Classic Comment=This session logs you into GNOME Classic
Exec=env GNOME_SHELL_SESSION_MODE=classic gnome-session --session gnome-classic Exec=env GNOME_SHELL_SESSION_MODE=classic gnome-session
TryExec=gnome-session TryExec=gnome-session
Type=Application Type=Application
DesktopNames=GNOME-Classic;GNOME; DesktopNames=GNOME-Classic;GNOME;
X-GDM-SessionRegisters=true
+13 -2
View File
@@ -33,6 +33,18 @@ $variant: 'light';
font-weight: normal; font-weight: normal;
color: $fg_color; color: $fg_color;
text-shadow: none; text-shadow: none;
transition-duration: 0ms;
border: 0;
border-radius: 0px;
&.clock-display {
.clock {
transition-duration: 0ms;
border: 0;
border-radius: 0px;
}
}
&:hover { &:hover {
color: lighten($fg_color,10%); color: lighten($fg_color,10%);
text-shadow: none; text-shadow: none;
@@ -69,12 +81,11 @@ $variant: 'light';
border-bottom: none; border-bottom: none;
.panel-button { color: $osd_fg_color; } .panel-button { color: $osd_fg_color; }
} }
.popup-menu-arrow { width: 0; height: 0; } // shell's display: none;
} }
#appMenu { #appMenu {
padding: 0 8px 0 8px;
spinner-image: url("classic-process-working.svg"); spinner-image: url("classic-process-working.svg");
.panel-status-menu-box { padding: 0; }
} }
.tile-preview-left.on-primary, .tile-preview-left.on-primary,
.tile-preview-right.on-primary, .tile-preview-right.on-primary,
-3
View File
@@ -1,3 +0,0 @@
[GNOME Session]
Name=GNOME Classic
RequiredComponents=org.gnome.Shell;org.gnome.SettingsDaemon.A11ySettings;org.gnome.SettingsDaemon.Color;org.gnome.SettingsDaemon.Datetime;org.gnome.SettingsDaemon.Housekeeping;org.gnome.SettingsDaemon.Keyboard;org.gnome.SettingsDaemon.MediaKeys;org.gnome.SettingsDaemon.Power;org.gnome.SettingsDaemon.PrintNotifications;org.gnome.SettingsDaemon.Rfkill;org.gnome.SettingsDaemon.ScreensaverProxy;org.gnome.SettingsDaemon.Sharing;org.gnome.SettingsDaemon.Smartcard;org.gnome.SettingsDaemon.Sound;org.gnome.SettingsDaemon.Wacom;org.gnome.SettingsDaemon.XSettings;
+1 -1
View File
@@ -11,6 +11,6 @@ will then be synchronized periodically before releases.
GNOME Shell Sass is distributed under the terms of the GNU General Public GNOME Shell Sass is distributed under the terms of the GNU General Public
License, version 2 or later. See the [COPYING][license] file for details. License, version 2 or later. See the [COPYING][license] file for details.
[shell-subtree]: https://gitlab.gnome.org/GNOME/gnome-shell/tree/master/data/theme/gnome-shell-sass [shell-subtree]: https://gitlab.gnome.org/GNOME/gnome-shell/tree/HEAD/data/theme/gnome-shell-sass
[sass-repo]: https://gitlab.gnome.org/GNOME/gnome-shell-sass [sass-repo]: https://gitlab.gnome.org/GNOME/gnome-shell-sass
[license]: COPYING [license]: COPYING
+1
View File
@@ -28,6 +28,7 @@ $osd_borders_color: transparentize(black, 0.3);
$osd_outer_borders_color: transparentize(white, 0.84); $osd_outer_borders_color: transparentize(white, 0.84);
$shadow_color: if($variant == 'light', rgba(0,0,0,0.1), rgba(0,0,0,0.2)); $shadow_color: if($variant == 'light', rgba(0,0,0,0.1), rgba(0,0,0,0.2));
$system_bg_color: desaturate(#241f31,100%); //neutralize the HIG color
//insensitive state derived colors //insensitive state derived colors
$insensitive_fg_color: mix($fg_color, $bg_color, 50%); $insensitive_fg_color: mix($fg_color, $bg_color, 50%);
+6 -7
View File
@@ -31,7 +31,7 @@ $base_margin: 4px;
$base_spacing: 6px; $base_spacing: 6px;
// border radii // border radii
$base_border_radius: 5px; $base_border_radius: 8px;
$modal_radius:$base_border_radius * 2; $modal_radius:$base_border_radius * 2;
@@ -76,17 +76,16 @@ stage {
%osd_panel { %osd_panel {
color: $osd_fg_color; color: $osd_fg_color;
background-color: $osd_bg_color; background-color: $osd_bg_color;
border: 1px solid $osd_outer_borders_color; //border: 1px solid $osd_outer_borders_color;
border-radius: $base_border_radius * 2 + 4px; border-radius: $base_border_radius * 2 + 4px;
padding: $base_padding * 2; padding: $base_padding * 2;
} }
// Overview panels // Overview panels
// for the dash and workspace switcher // for the dash and workspace switcher
%overview_panel { %overview_panel {
color: $osd_fg_color; color: $osd_fg_color;
background-color: transparentize($osd_bg_color, 0.2); background-color: transparentize($osd_fg_color, 0.9);
border: 1px solid $osd_outer_borders_color;
} }
// icon tiles // icon tiles
@@ -130,8 +129,8 @@ stage {
border-bottom-width: 0; border-bottom-width: 0;
&:insensitive { @include button(insensitive, $shadow: none); } &:insensitive { @include button(insensitive, $shadow: none); }
&:hover { @include button(hover, $shadow: none); }
&:focus { @include button(focus, $shadow: none); } &:focus { @include button(focus, $shadow: none); }
&:hover { @include button(hover, $shadow: none); }
&:active { @include button(active, $shadow: none); } &:active { @include button(active, $shadow: none); }
// radius is 2 pixel less to fit in bubble // radius is 2 pixel less to fit in bubble
@@ -143,7 +142,7 @@ stage {
border-right-width: 0; border-right-width: 0;
border-radius: 0 0 $modal_radius - 2px 0; border-radius: 0 0 $modal_radius - 2px 0;
} }
&:first-child:last-child { &:first-child:last-child {
border-radius: 0 0 $modal_radius - 2px $modal_radius - 2px; border-radius: 0 0 $modal_radius - 2px $modal_radius - 2px;
} }
+5 -4
View File
@@ -46,7 +46,7 @@
border-color: if($fc==$selected_bg_color, border-color: if($fc==$selected_bg_color,
$selected_borders_color, $selected_borders_color,
darken($fc,35%)); darken($fc,35%));
box-shadow: inset 0 0 0 1px $fc; box-shadow: inset 0 0 0 2px $fc;
} }
@if $t==hover { } @if $t==hover { }
@if $t==insensitive { @if $t==insensitive {
@@ -79,7 +79,7 @@
@function draw_button_hilight_color($c) { @function draw_button_hilight_color($c) {
// //
// calculate the right top hilight color for buttons // calculate the right top highlight color for buttons
// //
// $c: base color; // $c: base color;
// //
@@ -150,7 +150,7 @@
color: $tc; color: $tc;
text-shadow: 0 1px $text_shadow_color; text-shadow: 0 1px $text_shadow_color;
icon-shadow: 0 1px $text_shadow_color; icon-shadow: 0 1px $text_shadow_color;
box-shadow: inset 0 0 0 2px transparentize($selected_bg_color, 0.7); box-shadow: inset 0 0 0 2px transparentize($selected_bg_color, 0.4);
//border-color: $selected_bg_color; //border-color: $selected_bg_color;
} }
@@ -218,7 +218,8 @@
&:drop { &:drop {
.overview-icon { .overview-icon {
background-color: transparentize($selected_bg_color, .15); border: 2px solid $selected_bg_color; //already 2px transparent so no jumping
background-color: transparentize($selected_bg_color, .8);
} }
} }
@@ -26,6 +26,7 @@ $osd_borders_color: rgba(0,0,0, 0.7);
$osd_outer_borders_color: rgba(255,255,255, 0.1); $osd_outer_borders_color: rgba(255,255,255, 0.1);
$shadow_color: rgba(0,0,0, 0.1); $shadow_color: rgba(0,0,0, 0.1);
$system_bg_color: desaturate(#241f31,100%); //neutralize the HIG color
//insensitive state derived colors //insensitive state derived colors
$insensitive_fg_color: mix($fg_color, $bg_color, 50%); $insensitive_fg_color: mix($fg_color, $bg_color, 50%);
+1 -1
View File
@@ -37,8 +37,8 @@
@import 'widgets/window-picker'; @import 'widgets/window-picker';
@import 'widgets/search-entry'; @import 'widgets/search-entry';
@import 'widgets/search-results'; @import 'widgets/search-results';
@import 'widgets/app-grid';
@import 'widgets/dash'; @import 'widgets/dash';
@import 'widgets/app-grid';
@import 'widgets/workspace-thumbnails'; @import 'widgets/workspace-thumbnails';
// A11y / misc // A11y / misc
@import 'widgets/a11y'; @import 'widgets/a11y';
+56 -75
View File
@@ -1,21 +1,19 @@
/* App Grid */ /* App Grid */
$app_icon_size: 96px; $app_icon_size: 96px;
$app_icon_padding: 24px;
// app icons // app icons
.icon-grid { .icon-grid {
-shell-grid-horizontal-item-size: $app_icon_size + $app_icon_padding * 2; row-spacing: $base_spacing * 2;
-shell-grid-vertical-item-size: $app_icon_size + $app_icon_padding * 2; column-spacing: $base_spacing * 2;
spacing: $base_spacing * 6; max-row-spacing: $base_spacing * 12;
max-column-spacing: $base_spacing * 12;
.overview-icon { page-padding-top: $base_padding * 4;
icon-size: $app_icon_size; page-padding-bottom: $base_padding * 4;
} page-padding-left: $base_padding * 2;
page-padding-right: $base_padding * 2;
} }
//.app-display { spacing: 20px; }
/* App Icons */ /* App Icons */
$app_grid_fg_color: #fff; $app_grid_fg_color: #fff;
@@ -35,17 +33,16 @@ $app_grid_fg_color: #fff;
} }
/* App Folders */ /* App Folders */
.app-folder { .app-well-app.app-folder {
.overview-icon { background-color: $dash_background_color;
} border-radius: $base_border_radius + 4px; // same as %icon_tile
} }
// expanded folder // expanded folder
.app-folder-dialog { .app-folder-dialog { //style like the dash
border-radius: $modal_radius * 1.5; border-radius: $modal_radius * 1.5;
border: 1px solid $osd_outer_borders_color; background-color: $dash_background_color;
spacing: 12px; padding: 12px 0px 12px 0px;
background-color: transparentize(darken($osd_bg_color,10%), 0.05);
& .folder-name-container { & .folder-name-container {
padding: 24px 36px 0; padding: 24px 36px 0;
@@ -54,13 +51,13 @@ $app_grid_fg_color: #fff;
& .folder-name-label, & .folder-name-label,
& .folder-name-entry { & .folder-name-entry {
font-size: 18pt; font-size: 18pt;
font-weight: bold; font-weight: 800;
} }
& .folder-name-entry { width: 300px } & .folder-name-entry { width: 300px }
/* FIXME: this is to keep the label in sync with the entry */ /* FIXME: this is to keep the label in sync with the entry */
& .folder-name-label { padding: 5px 7px } & .folder-name-label { padding: 5px 7px; color: $osd_fg_color; }
& .edit-folder-button { & .edit-folder-button {
@extend %button; @extend %button;
@@ -74,23 +71,25 @@ $app_grid_fg_color: #fff;
} }
} }
& StButton#vhandle, & .icon-grid {
& StButton#vhandle:hover, row-spacing: $base_spacing * 2;
& StButton#vhandle:active { background-color: transparent; } column-spacing: $base_spacing * 5;
page-padding-top: 0;
page-padding-bottom: 0;
page-padding-left: 0;
page-padding-right: 0;
}
& .page-indicators {
margin-bottom: 18px;
}
} }
.app-folder-dialog-container { .app-folder-dialog-container {
padding: 12px; padding: 12px;
width: 800px; width: 620px;
height: 600px; height: 620px;
} }
.app-folder-icon {
padding: $base_padding;
spacing-rows: $base_spacing;
spacing-columns: $base_spacing;
}
// Running app indicator (also shown in dash) // Running app indicator (also shown in dash)
.app-well-app-running-dot { .app-well-app-running-dot {
height: 5px; height: 5px;
@@ -109,14 +108,13 @@ $app_grid_fg_color: #fff;
} }
// right-click app menu // right-click app menu
.app-menu, .app-menu {
.app-well-menu {
max-width: 27.25em; max-width: 27.25em;
} }
// App Grid pagination indicators // App Grid pagination indicators
.page-indicator { .page-indicator {
padding: 15px 20px; padding: $base_padding $base_padding * 2 0;
.page-indicator-icon { .page-indicator-icon {
width: 10px; width: 10px;
@@ -126,16 +124,10 @@ $app_grid_fg_color: #fff;
} }
} }
// Some hacks I don't even know .apps-scroll-view {
.all-apps, padding: 0;
.frequent-apps > StBoxLayout {
// horizontal padding to make sure scrollbars or dash don't overlap content
padding: 0px 88px 10px 88px;
} }
// Label when no frequent apps
.no-frequent-applications-label { @extend %status_text; }
// shutdown and other actions in the grid // shutdown and other actions in the grid
.system-action-icon { .system-action-icon {
background-color: rgba(0,0,0,0.8); background-color: rgba(0,0,0,0.8);
@@ -144,43 +136,32 @@ $app_grid_fg_color: #fff;
icon-size: $app_icon_size * 0.5; icon-size: $app_icon_size * 0.5;
} }
/* Frequent | All toggle */ .page-navigation-hint {
width: 300px;
// container &.dnd {
.app-view-controls { background: rgba(255, 255, 255, 0.1);
padding-bottom: 32px;
}
// buttons
.app-view-control {
padding: 4px 32px;
margin: 0 4px;
&, &:hover, &:checked {
@include button(undecorated);
color: darken($osd_fg_color, 25%);
} }
&:hover { &.next:ltr,
color: $osd_fg_color; &.previous:rtl {
box-shadow: inset 0 -2px darken($osd_fg_color, 25%); background-gradient-start: rgba(255, 255, 255, 0.05);
background-gradient-end: transparent;
background-gradient-direction: horizontal;
border-radius: 15px 0px 0px 15px;
} }
&:active { &.previous:ltr,
box-shadow: inset 0 -2px $osd_fg_color; &.next:rtl {
} background-gradient-start: transparent;
background-gradient-end: rgba(255, 255, 255, 0.05);
&:checked { background-gradient-direction: horizontal;
color: $osd_fg_color; border-radius: 0px 15px 15px 0px;
box-shadow: inset 0 -2px $selected_bg_color;
}
&:first-child {
border-right-width: 0;
border-radius: 0;
}
&:last-child {
border-radius: 0;
} }
} }
.page-navigation-arrow {
margin: 6px;
width: 24px;
height: 24px;
}
+1 -1
View File
@@ -14,5 +14,5 @@
// Dropshadow for large icons // Dropshadow for large icons
.icon-dropshadow { .icon-dropshadow {
icon-shadow: 0 1px 2px rgba(black, 0.4); icon-shadow: 0 1px 5px rgba(black, 0.8);
} }
+42 -6
View File
@@ -1,6 +1,13 @@
/* Date/Time Menu */ /* Date/Time Menu */
.clock-display-box { spacing: $base_spacing; } .clock-display-box {
spacing: 2px;
.clock {
padding-left: $base_padding * 2;
padding-right: $base_padding * 2;
}
}
// overall menu // overall menu
#calendarArea { #calendarArea {
@@ -146,9 +153,11 @@
} }
.calendar-day-with-events { .calendar-day-with-events {
color: lighten($fg_color,10%);
font-weight: bold;
background-image: url("resource:///org/gnome/shell/theme/calendar-today.svg"); background-image: url("resource:///org/gnome/shell/theme/calendar-today.svg");
&.calendar-work-day {
color: lighten($fg_color,10%);
font-weight: bold;
}
} }
.calendar-other-month-day { .calendar-other-month-day {
@@ -161,13 +170,38 @@
height: 1.8em; height: 1.8em;
width: 2.3em; width: 2.3em;
border-radius: 2px; border-radius: 2px;
padding: 0.5em 0 0;
margin: 6px; margin: 6px;
background-color: darken($bg_color, 2%); background-color: darken($bg_color, 2%);
color: lighten($fg_color, 5%); color: lighten($fg_color, 5%);
} }
} }
/* Events */
.events-button {
@include notification_bubble;
padding: $base_padding * 2;
.events-box {
spacing: $base_spacing;
}
.events-list {
spacing: 2 * $base_spacing;
}
.events-title {
color: desaturate(darken($fg_color,40%), 10%);
font-weight: bold;
margin-bottom: $base_margin;
}
.event-time {
color: darken($fg_color,20%);
font-feature-settings: "tnum";
@include fontsize($base_font_size - 1);
}
}
/* World clocks */ /* World clocks */
.world-clocks-button { .world-clocks-button {
@include notification_bubble; @include notification_bubble;
@@ -195,9 +229,11 @@
.world-clocks-time { .world-clocks-time {
font-weight: bold; font-weight: bold;
color: $fg_color; color: $fg_color;
font-feature-settings: "lnum"; font-feature-settings: "tnum";
@include fontsize($base_font_size); @include fontsize($base_font_size);
text-align: right;
&:ltr { text-align: right; }
&:rtl { text-align: left; }
} }
// timezone offset label // timezone offset label
+32 -20
View File
@@ -1,20 +1,18 @@
/* Dash */ /* Dash */
$dash_background_color: #3b3b3b;
$dash_placeholder_size: 32px; $dash_placeholder_size: 32px;
$dash_spacing: $base_padding + 4px; $dash_padding: $base_padding + 4px; // 10px
$dash_spacing: $base_padding / 4;
$dash_bottom_margin: $base_margin * 4;
$dash_border_radius: $modal_radius * 1.5; $dash_border_radius: $modal_radius * 1.5;
#dash { #dash {
@extend %overview_panel;
@include fontsize($base_font_size - 2); @include fontsize($base_font_size - 2);
padding: ($dash_spacing / 2) 0; margin-top: $base_spacing * 3;
padding: 0 $dash_padding;
border-radius: 0 $dash_border_radius $dash_border_radius 0;
border-left-width: 0;
&:rtl {
border-radius: $dash_border_radius 0 0 $dash_border_radius;
border-right-width: 0;
}
.placeholder { .placeholder {
// background-image: url("resource:///org/gnome/shell/theme/dash-placeholder.svg"); // background-image: url("resource:///org/gnome/shell/theme/dash-placeholder.svg");
@@ -27,23 +25,38 @@ $dash_border_radius: $modal_radius * 1.5;
width: $dash_placeholder_size; width: $dash_placeholder_size;
height: $dash_placeholder_size; height: $dash_placeholder_size;
} }
.overview-icon {
padding: $dash_padding / 2;
}
}
.dash-background {
background-color: $dash_background_color;
margin-bottom: $dash_bottom_margin;
padding: $dash_padding;
border-radius: $dash_border_radius;
} }
// Dash Items // Dash Items
.dash-item-container > StWidget { .dash-item-container .app-well-app, .show-apps {
padding: ($dash_spacing / 2) $dash_spacing; padding: $dash_padding $dash_spacing $dash_padding + $dash_bottom_margin;
}
.dash-separator {
width: 1px;
margin: 0 ($dash_spacing + ($dash_padding / 2)) $dash_bottom_margin;
background-color: transparentize($osd_fg_color,0.7);
} }
// OSD Tooltip // OSD Tooltip
.dash-label { .dash-label {
background-color: transparentize($osd_bg_color,0.05);
border-radius: $base_border_radius + 2px;
border:none;
box-shadow:0 0 0 1px $osd_outer_borders_color;
color: $osd_fg_color; color: $osd_fg_color;
padding: $base_padding $base_padding + 2px; background-color: $osd_bg_color;
border-radius: 99px;
padding: $base_padding $base_padding * 2;
text-align: center; text-align: center;
-x-offset: $base_margin * 2; // distance from the dash edge -y-offset: $base_margin * 3; // distance from the dash edge
} }
// Show apps button // Show apps button
@@ -53,9 +66,8 @@ $dash_border_radius: $modal_radius * 1.5;
&:focus, &:focus,
&:checked { &:checked {
.overview-icon { .overview-icon {
background-color: darken($osd_bg_color,10%); background-color: transparentize($osd_bg_color,0.5);
color: $fg_color; color: $fg_color;
} }
} }
} }
+10 -5
View File
@@ -38,7 +38,7 @@
font-size: 18pt; font-size: 18pt;
font-weight: 800; font-weight: 800;
&.leightweight { &.lightweight {
font-size: 13pt; font-size: 13pt;
font-weight: 800; font-weight: 800;
} }
@@ -135,10 +135,6 @@
spacing: 8px; spacing: 8px;
margin-bottom: 6px; margin-bottom: 6px;
.polkit-dialog-user-icon {
border-radius: 99px;
background-size: contain;
}
.polkit-dialog-user-root-label { color: $warning_color; } .polkit-dialog-user-root-label { color: $warning_color; }
} }
@@ -166,3 +162,12 @@
.audio-selection-device-icon { .audio-selection-device-icon {
icon-size: $base_icon_size * 4; icon-size: $base_icon_size * 4;
} }
/* Welcome dialog */
.welcome-dialog-image {
background-image: url("resource:///org/gnome/shell/theme/gnome-shell-start.svg");
background-size: contain;
/* Reasonable maximum dimensions */
height: 300px;
width: 300px;
}
+1 -1
View File
@@ -3,7 +3,7 @@
StEntry { StEntry {
border-radius: $base_border_radius; border-radius: $base_border_radius;
padding: 8px; padding: 8px;
border-width: 1px; border-width: 0;
color: $fg_color; color: $fg_color;
@include entry(normal); @include entry(normal);
//&:hover { @include entry(hover);} //&:hover { @include entry(hover);}
+3 -12
View File
@@ -52,10 +52,6 @@ $default_key_bg_color: if($variant=='light', darken($osd_bg_color, 11%), lighten
// non-character keys // non-character keys
&.default-key { &.default-key {
// size of the icon asset
background-size: 24px;
@include button(normal, $c:$default_key_bg_color); @include button(normal, $c:$default_key_bg_color);
&:hover, &:checked {@include button(hover, $c: $default_key_bg_color);} &:hover, &:checked {@include button(hover, $c: $default_key_bg_color);}
&:active { @include button(active, $c: $default_key_bg_color);} &:active { @include button(active, $c: $default_key_bg_color);}
@@ -63,19 +59,14 @@ $default_key_bg_color: if($variant=='light', darken($osd_bg_color, 11%), lighten
// enter key is suggested-action // enter key is suggested-action
&.enter-key { &.enter-key {
background-image: url("resource:///org/gnome/shell/theme/key-enter.svg");
@include button(normal, $c:$selected_bg_color, $tc:$selected_fg_color); @include button(normal, $c:$selected_bg_color, $tc:$selected_fg_color);
&:hover, &:checked { @include button(hover, $c: lighten($selected_bg_color, 3%));} &:hover, &:checked { @include button(hover, $c: lighten($selected_bg_color, 3%));}
&:active {@include button(active, $c: darken($selected_bg_color, 2%));} &:active {@include button(active, $c: darken($selected_bg_color, 2%));}
} }
// key assets &.shift-key-uppercase { color: $selected_bg_color }
&.shift-key-lowercase {background-image: url("resource:///org/gnome/shell/theme/key-shift.svg");}
&.shift-key-uppercase {background-image: url("resource:///org/gnome/shell/theme/key-shift-uppercase.svg");} StIcon { icon-size: 1.125em; }
&.shift-key-uppercase:latched {background-image: url("resource:///org/gnome/shell/theme/key-shift-latched-uppercase.svg");}
&.hide-key {background-image: url("resource:///org/gnome/shell/theme/key-hide.svg");}
&.layout-key {background-image: url("resource:///org/gnome/shell/theme/key-layout.svg");}
} }
// long press on a key popup // long press on a key popup
@@ -5,18 +5,19 @@
max-width: 23em; max-width: 23em;
} }
.login-dialog { .login-dialog,
.unlock-dialog {
//reset //reset
border: none; border: none;
background-color: transparent; background-color: transparent;
$_gdm_bg: lighten(#2e3436, 19%); $_gdm_bg: $system_bg_color;
StEntry { StEntry {
@if $variant=='dark' { @if $variant=='dark' {
$_gdm_entry_bg: transparentize(lighten(desaturate(#241f31, 20%), 2%), 0.5); $_gdm_entry_bg: darken($system_bg_color, 3%);
background-color: $_gdm_entry_bg; background-color: $_gdm_entry_bg;
color: $osd_fg_color; color: $fg_color;
} }
} }
@@ -24,9 +25,9 @@
.modal-dialog-button { .modal-dialog-button {
padding: 4px 18px; padding: 4px 18px;
box-shadow: 0 1px 3px rgba(0,0,0,0.2); box-shadow: 0 1px 3px rgba(0,0,0,0.2);
background-color: $_gdm_bg; background-color: darken($system_bg_color, 3%);
border-color: $_gdm_bg; border-color: darken($system_bg_color, 3%);
color: $fg_color; color: $osd_fg_color;
$_hover_c: lighten($_gdm_bg, 5%); $_hover_c: lighten($_gdm_bg, 5%);
&:hover, &:focus { &:hover, &:focus {
@@ -43,7 +44,7 @@
@include button(insensitive); @include button(insensitive);
border-color: darken($_gdm_bg, 5%); border-color: darken($_gdm_bg, 5%);
background-color: darken($_gdm_bg, 5%); background-color: darken($_gdm_bg, 5%);
color: transparentize($fg_color, 0.3); color: transparentize($osd_fg_color, 0.3);
} }
&:default { &:default {
@include button(normal, $c:$selected_bg_color, $tc:$selected_fg_color); @include button(normal, $c:$selected_bg_color, $tc:$selected_fg_color);
@@ -76,8 +77,8 @@
border-radius: 99px; border-radius: 99px;
width: $base_icon_size * 2; width: $base_icon_size * 2;
height: $base_icon_size * 2; height: $base_icon_size * 2;
border-color: transparentize($bg_color,0.7); border-color: darken($system_bg_color, 3%);
background-color: transparentize($bg_color,0.7); background-color: darken($system_bg_color, 3%);
StIcon { icon-size: $base_icon_size; } StIcon { icon-size: $base_icon_size; }
} }
@@ -92,7 +93,6 @@
.login-dialog-banner { color: darken($osd_fg_color,10%); } .login-dialog-banner { color: darken($osd_fg_color,10%); }
.login-dialog-button-box { width: 23em; spacing: 5px; } .login-dialog-button-box { width: 23em; spacing: 5px; }
.login-dialog-message { text-align: center; } .login-dialog-message { text-align: center; }
.login-dialog-message-hint { padding-top: 0; padding-bottom: 20px; }
.login-dialog-user-selection-box { padding: 100px 0px; } .login-dialog-user-selection-box { padding: 100px 0px; }
.login-dialog-not-listed-label { .login-dialog-not-listed-label {
padding-left: 2px; padding-left: 2px;
@@ -138,11 +138,10 @@
.user-widget.horizontal .user-widget-label { .user-widget.horizontal .user-widget-label {
@include fontsize($base_font_size + 2); @include fontsize($base_font_size + 2);
font-weight: bold; font-weight: bold;
text-align: left;
padding-left: 15px; padding-left: 15px;
&:ltr { padding-left: 14px; } &:ltr { padding-left: 14px; text-align: left; }
&:rtl { padding-right: 14px; } &:rtl { padding-right: 14px; text-align: right; }
} }
.user-widget.vertical .user-widget-label { .user-widget.vertical .user-widget-label {
@@ -152,6 +151,11 @@
padding-top: 16px; padding-top: 16px;
} }
.login-dialog-timed-login-indicator {
height: 2px;
background-color: darken($fg_color,40%);
}
.login-dialog-prompt-layout { .login-dialog-prompt-layout {
padding-top: 24px; padding-top: 24px;
padding-bottom: 12px; padding-bottom: 12px;
@@ -160,7 +164,6 @@
} }
.login-dialog-prompt-entry { .login-dialog-prompt-entry {
width: 17.89em;
height: 1.5em; height: 1.5em;
} }
@@ -1,18 +1,20 @@
/* Looking Glass */ /* Looking Glass */
$text_fg_color: #ccc;
// Dialog // Dialog
#LookingGlassDialog { #LookingGlassDialog {
background-color: $osd_bg_color; background-color: $osd_bg_color;
spacing: $base_spacing; spacing: $base_spacing;
padding: 4px; padding: 4px;
border: 2px solid transparentize($osd_fg_color, 0.8); border: 1px solid transparentize($osd_fg_color, 0.8);
border-top-width:0; border-radius: $base_border_radius;
border-radius: 0 0 $base_border_radius $base_border_radius; color: $osd_fg_color;
& > #Toolbar { & > #Toolbar {
border: none; border: none;
border-radius: $base_border_radius; border-radius: $base_border_radius;
background-color: darken($osd_bg_color, 10%); background-color: $osd_bg_color;
} }
.labels { spacing: $base_spacing; } .labels { spacing: $base_spacing; }
@@ -20,19 +22,18 @@
-natural-hpadding: $base_padding * 2; -natural-hpadding: $base_padding * 2;
-minimum-hpadding: 6px; -minimum-hpadding: 6px;
font-weight: bold; font-weight: bold;
color: $fg_color; color: darken($osd_fg_color, 15%);
transition-duration: 100ms; transition-duration: 100ms;
padding-left: .3em; padding-left: .3em;
padding-right: .3em; padding-right: .3em;
border-bottom-width: 2px;
&:hover { &:hover {
color: white; color: $osd_fg_color;
text-shadow: black 0px 2px 2px;
} }
&:selected { &:selected {
border-bottom-width: 2px; border-bottom-width: 2px;
border-color: lighten($selected_bg_color,5%); box-shadow: inset 0 -2px 0 0 lighten($selected_bg_color, 5%);
color: white; color: $osd_fg_color;
text-shadow: black 0px 2px 2px;
} }
} }
StBoxLayout#EvalBox { padding: 4px; spacing: $base_spacing; } StBoxLayout#EvalBox { padding: 4px; spacing: $base_spacing; }
@@ -41,12 +42,22 @@
.lg-dialog { .lg-dialog {
StEntry { StEntry {
selection-background-color: #bbbbbb; background-color: transparentize(lighten($osd_bg_color, 5%), 0.4);
selected-color: $osd_bg_color; color: $osd_fg_color;
border-color: transparentize($osd_fg_color, 0.8);
min-height: 22px;
selection-background-color: $selected_bg_color;
selected-color: $selected_fg_color;
} }
.shell-link { .shell-link {
color: #999999; color: $link_color;
&:hover { color: #dddddd; } &:hover { color: lighten($link_color, 10%); }
&:active { color: darken($link_color, 10%); }
}
.actor-link {
color: $text_fg_color;
&:hover { color: lighten($text_fg_color, 20%); }
&:active { color: darken($text_fg_color, 20%); }
} }
} }
@@ -60,7 +71,7 @@
} }
.lg-obj-inspector-button { .lg-obj-inspector-button {
border: 1px solid gray; border: 1px solid $osd_borders_color;
padding: 4px; padding: 4px;
border-radius: $base_border_radius; border-radius: $base_border_radius;
&:hover { border: 1px solid #ffffff; } &:hover { border: 1px solid #ffffff; }
@@ -75,7 +86,8 @@
} }
.lg-extension { .lg-extension {
border: 1px solid $osd_borders_color; border: 1px solid lighten($osd_borders_color, 5%);
background-color: lighten($osd_bg_color, 5%);
border-radius: $base_border_radius; border-radius: $base_border_radius;
padding: 4px; padding: 4px;
} }
@@ -24,7 +24,21 @@
margin: ($base_margin * 2) ($base_margin * 4) 0; margin: ($base_margin * 2) ($base_margin * 4) 0;
// NOTE: remove the padding if notification_bubble could remove margin for drop shadow // NOTE: remove the padding if notification_bubble could remove margin for drop shadow
padding: $base_margin; padding: $base_margin;
spacing: $base_spacing; spacing: $base_spacing * 2;
.dnd-button {
// We need this because the focus outline isn't inset like for the buttons
// so the dnd button would grow when it gets focus if we didn't change only
// its color when focusing.
border-width: 2px;
border-color: transparent;
border-radius: 99px;
border-style: solid;
&:focus {
border-color: transparentize($selected_bg_color, 0.4);
}
}
} }
// message bubbles // message bubbles
@@ -71,9 +85,11 @@
> .event-time { > .event-time {
color: transparentize($fg_color, 0.5); color: transparentize($fg_color, 0.5);
@include fontsize($base_font_size - 2); @include fontsize($base_font_size - 2);
text-align: right;
/* HACK: the label should be baseline-aligned with a 1em label, fake this with some bottom padding */ /* HACK: the label should be baseline-aligned with a 1em label, fake this with some bottom padding */
padding-bottom: 0.13em; padding-bottom: 0.13em;
&:ltr { text-align: right };
&:rtl { text-align: left };
} }
} }
@@ -97,7 +113,7 @@
/* Media Controls */ /* Media Controls */
.message-media-control { .message-media-control {
padding: $base_padding * 2 $base_padding * 4; padding: $base_padding * 2 1.64em; // $base_padding * 4 = 24px
color: darken($fg_color, 15%); color: darken($fg_color, 15%);
// uses $hover_bg_color since the media controls are in a notification_bubble // uses $hover_bg_color since the media controls are in a notification_bubble
+20 -6
View File
@@ -9,24 +9,32 @@
background-size: contain; background-size: contain;
color: $osd_fg_color; color: $osd_fg_color;
border-radius: 99px; border-radius: 99px;
icon-size: $base_icon_size * 4; // 64px
&:hover { &:hover {
color: lighten($osd_fg_color,30%); color: lighten($osd_fg_color,30%);
} }
& StIcon { & StIcon {
background-color: transparentize($osd_fg_color,0.95); background-color: transparentize($osd_fg_color,0.95);
padding: 18px 20px 22px 20px;
width: 88px; height: 88px;
border-radius: 99px; border-radius: 99px;
padding: $base_padding * 2 ; // 12px
width: $base_icon_size * 2.5; height: $base_icon_size * 2.5; // 40px;
}
&.user-avatar {
border: 2px $osd_fg_color;
} }
} }
.user-widget.vertical .user-icon { .user-widget.vertical .user-icon {
icon-size: 128px; icon-size: $base_icon_size * 6; // 128px
}
.user-widget.horizontal .user-icon { & StIcon {
icon-size: 64px; padding: $base_padding * 3 + 2px; // 20px
padding-top: $base_padding * 3; // 18 px
padding-bottom: $base_padding * 3 + 4px; // 22px
width: $base_icon_size * 5.5; height: $base_icon_size * 5.5; // 88px;
}
} }
.lightbox { background-color: black; } .lightbox { background-color: black; }
@@ -43,3 +51,9 @@
@include fontsize($base_font_size - 1); @include fontsize($base_font_size - 1);
color: $warning_color; color: $warning_color;
} }
/* Workspace animation */
.workspace-animation {
background-color: $system_bg_color;
}
@@ -1,4 +1,4 @@
/* Notifications & Mesage Tray */ /* Notifications & Message Tray */
$notification_banner_height: 64px; $notification_banner_height: 64px;
$notification_banner_width: 34em; $notification_banner_width: 34em;
+7 -4
View File
@@ -1,10 +1,13 @@
/* OVERVIEW */ /* OVERVIEW */
#overview { .controls-manager, .secondary-monitor-workspaces {
spacing: 24px; spacing: $base_spacing * 2;
background-color: transparent; }
#overviewGroup {
background-color: $system_bg_color;
} }
.overview-controls { .overview-controls {
padding-bottom: 32px; padding-bottom: 32px;
} }
+61 -30
View File
@@ -3,43 +3,36 @@
$panel_corner_radius: $base_border_radius+1; $panel_corner_radius: $base_border_radius+1;
$panel_bg_color: #000; $panel_bg_color: #000;
$panel_fg_color: #ccc; $panel_fg_color: #ddd;
$panel_height: 1.86em; $panel_height: 2.2em;
$panel_transition_duration: 250ms; // same as the overview transition duration
#panel { #panel {
background-color: $panel_bg_color; background-color: $panel_bg_color;
font-weight: bold; font-weight: bold;
height: $panel_height; height: $panel_height;
font-feature-settings: "tnum"; font-feature-settings: "tnum";
transition-duration: $panel_transition_duration;
// transparent panel on lock & login screens // transparent panel on lock & login screens
&.unlock-screen, &.unlock-screen,
&.login-screen { &.login-screen,
&:overview {
background-color: transparent; background-color: transparent;
.panel-corner { .panel-corner {
-panel-corner-radius: 0; -panel-corner-opacity: 0;
-panel-corner-background-color: transparent;
-panel-corner-border-color: transparent;
} }
} }
// spacing between activities, app menu and such
#panelLeft, #panelCenter {
spacing: $base_spacing;
}
// the rounded outset corners // the rounded outset corners
.panel-corner { .panel-corner {
-panel-corner-radius: $panel_corner_radius; -panel-corner-radius: $panel_corner_radius;
-panel-corner-background-color: $panel_bg_color; -panel-corner-background-color: $panel_bg_color;
-panel-corner-border-width: 2px; -panel-corner-border-width: 2px;
-panel-corner-border-color: transparent; -panel-corner-border-color: transparent;
-panel-corner-opacity: 1;
&:active, &:overview, &:focus { transition-duration: $panel_transition_duration;
-panel-corner-border-color: lighten($selected_bg_color,5%);
}
} }
// panel menus // panel menus
@@ -48,37 +41,70 @@ $panel_height: 1.86em;
color: $panel_fg_color; color: $panel_fg_color;
-natural-hpadding: $base_padding * 2; -natural-hpadding: $base_padding * 2;
-minimum-hpadding: $base_padding; -minimum-hpadding: $base_padding;
transition-duration: 150ms;
border: 3px solid transparent;
border-radius: 99px;
&:hover { &.clock-display {
color: lighten($panel_fg_color, 20%); .clock {
transition-duration: 150ms;
border: 3px solid transparent;
border-radius: 99px;
}
} }
&:active, &:overview, &:focus, &:checked { &:hover, &:active, &:overview, &:focus, &:checked {
// Trick due to St limitations. It needs a background to draw a box-shadow box-shadow: inset 0 0 0 100px rgba(255, 255, 255, 0.20);
background-color: rgba(0, 0, 0, 0.01);
box-shadow: inset 0 -2px 0 0 lighten($selected_bg_color,5%); // The clock display needs to have the background on .clock because
color: lighten($panel_fg_color, 20%); // we want to exclude the do-not-disturb indicator from the background
&.clock-display {
box-shadow: none;
.clock {
box-shadow: inset 0 0 0 100px rgba(255, 255, 255, 0.20);
}
}
} }
// status area icons // status area icons
.system-status-icon { .system-status-icon {
icon-size: $base_icon_size; icon-size: $base_icon_size;
padding: $base_padding - 1px; padding: $base_padding - 1px;
margin: 0 $base_margin;
}
.panel-status-indicators-box .system-status-icon,
.panel-status-menu-box .system-status-icon {
margin: 0;
} }
// app menu icon // app menu icon
.app-menu-icon { .app-menu-icon {
margin-left: $base_margin;
margin-right: $base_margin;
-st-icon-style: symbolic; -st-icon-style: symbolic;
// dimensions of the icon are hardcoded // dimensions of the icon are hardcoded
} }
// lock & login screen styles &#panelActivities {
.unlock-screen &, -natural-hpadding: $base_padding * 3;
.login-screen & { }
color: lighten($fg_color, 10%); }
&:focus, &:hover, &:active { color: lighten($fg_color, 10%); }
&.unlock-screen,
&.login-screen,
&:overview {
.panel-button {
&:hover, &:active, &:overview, &:focus, &:checked {
box-shadow: inset 0 0 0 100px rgba(255, 255, 255, 0.15);
&.clock-display {
box-shadow: none;
.clock {
box-shadow: inset 0 0 0 100px rgba(255, 255, 255, 0.15);
}
}
}
} }
} }
@@ -102,3 +128,8 @@ $panel_height: 1.86em;
spacing: $base_spacing; spacing: $base_spacing;
.label-shadow { color: transparent; } .label-shadow { color: transparent; }
} }
#appMenu .panel-status-menu-box {
padding: 0 $base_padding;
spacing: $base_spacing;
}
+3 -1
View File
@@ -76,8 +76,10 @@ $popover_arrow_height: 12px;
// container for radio and check boxes // container for radio and check boxes
.popup-menu-ornament { .popup-menu-ornament {
text-align: right;
width: 1.2em; width: 1.2em;
&:ltr { text-align: right };
&:rtl { text-align: left };
} }
// separator // separator
@@ -66,7 +66,7 @@
} }
#lockDialogGroup { #lockDialogGroup {
background-color: lighten(#2e3436, 8%); background-color: $system_bg_color;
} }
#unlockDialogNotifications { #unlockDialogNotifications {
@@ -10,17 +10,16 @@ $search_entry_height: 36px;
border-radius: $search_entry_height * 0.5; // half the height border-radius: $search_entry_height * 0.5; // half the height
color: transparentize($fg_color,0.3); color: transparentize($fg_color,0.3);
background-color: $bg_color; background-color: $bg_color;
border-color: $borders_color; margin-top: $base_spacing * 2;
margin-bottom: $base_spacing;
border-width: 2px;
border-color: transparent;
&:hover { &:hover {
background-color: $hover_bg_color; background-color: $hover_bg_color;
border-color: $hover_borders_color;
color: $hover_fg_color; color: $hover_fg_color;
} }
&:focus { &:focus {
padding: $base_padding $base_padding+2; // 1px less to account for wider border
border-width: 2px;
border-style: solid; border-style: solid;
border-color: $selected_bg_color; border-color: $selected_bg_color;
color: $fg_color; color: $fg_color;
@@ -32,4 +31,4 @@ $search_entry_height: 36px;
padding: 0 4px; padding: 0 4px;
color: inherit; color: inherit;
} }
} }
@@ -54,6 +54,10 @@
@extend %status_text; @extend %status_text;
} }
.grid-search-results {
spacing: $base_spacing * 6;
}
// Search results with icons // Search results with icons
.grid-search-result { .grid-search-result {
@extend %app-well-app; @extend %app-well-app;
+1 -1
View File
@@ -16,7 +16,7 @@ $slider_size: 15px;
-barlevel-overdrive-color: $destructive_color; -barlevel-overdrive-color: $destructive_color;
-barlevel-overdrive-border-color: if($variant == 'light', darken($destructive_color, 4%), lighten($destructive_color, 2%)); //trough border when red; -barlevel-overdrive-border-color: if($variant == 'light', darken($destructive_color, 4%), lighten($destructive_color, 2%)); //trough border when red;
-barlevel-overdrive-separator-width:1px; -barlevel-overdrive-separator-width:1px;
// slider hander // slider handler
-slider-handle-radius: $slider_size * 0.5; // half the size of the size -slider-handle-radius: $slider_size * 0.5; // half the size of the size
-slider-handle-border-width: 1px; -slider-handle-border-width: 1px;
-slider-handle-border-color: if($variant == 'light', $borders_color, $fg_color); -slider-handle-border-color: if($variant == 'light', $borders_color, $fg_color);
@@ -15,13 +15,11 @@
border: 1px solid transparent; border: 1px solid transparent;
&:outlined { &:outlined {
border: 1px solid darken($borders_color,5%); background-color: transparentize($osd_fg_color, 0.7);
background-color: transparentize($osd_fg_color, 0.9);
box-shadow: inset 0 2px 2px 0 rgba(0,0,0,0.4);
} }
&:selected { &:selected {
background-color: transparentize($osd_fg_color, 0.9); background-color: transparentize($osd_fg_color, 0.7);
color: $osd_fg_color; color: $osd_fg_color;
} }
} }
@@ -1,66 +1,52 @@
/* Window Picker */ /* Window Picker */
$window_picker_spacing: $base_spacing * 2; // 16px $window_picker_spacing: $base_spacing; // 6px
$window_picker_padding: $base_padding * 2; // 16px $window_picker_padding: $base_padding * 2; // 12px
$window_thumbnail_border_color:transparentize($selected_fg_color, 0.65); $window_thumbnail_label_color: transparentize($osd_bg_color, 0.4);
$window_close_button_size: 24px; $window_close_button_size: 30px;
$window_close_button_padding: 3px; $window_close_button_padding: 3px;
// Window picker // Window picker
.window-picker { .window-picker {
// Space between window thumbnails // Space between window thumbnails
-horizontal-spacing: $window_picker_spacing; spacing: $window_picker_spacing;
-vertical-spacing: $window_picker_spacing;
// Padding for container around window thumbnails
padding: $window_picker_padding;
&.external-monitor { padding: $window_picker_padding; }
}
// Borders on window thumbnails
.window-clone-border {
border-width: 6px;
border-style: solid;
border-color: $window_thumbnail_border_color;
border-radius: $base_border_radius + 2;
// For window decorations with round corners we can't match
// the exact shape when the window is scaled. So apply a shadow
// to fix that case
box-shadow: inset 0 0 0 1px transparentize($borders_color, 0.8);
} }
// Window titles // Window titles
.window-caption { .window-caption {
color: $osd_fg_color; color: $osd_fg_color;
background-color: $osd_bg_color; background-color: $osd_bg_color;
border:1px solid $osd_outer_borders_color; border-radius: 99px;
border-radius: $base_border_radius + 1;
padding: $base_padding $base_padding * 2; padding: $base_padding $base_padding * 2;
font-weight: bold;
@include fontsize($base_font_size + 1);
} }
// Close button // Close button
.window-close { .window-close {
background-color: $selected_bg_color; background-color: $osd_bg_color;
color: $selected_fg_color; color: $osd_fg_color;
border: none;
border-radius: $window_close_button_size * 0.5 + $window_close_button_padding * 2; border-radius: $window_close_button_size * 0.5 + $window_close_button_padding * 2;
padding: $window_close_button_padding; padding: $window_close_button_padding;
height: $window_close_button_size; height: $window_close_button_size;
width: $window_close_button_size; width: $window_close_button_size;
box-shadow: -1px 1px 5px 0px rgba(0,0,0,0.5); box-shadow: -1px 1px 5px 0px rgba(0,0,0,0.5);
transition-duration: 300ms;
-shell-close-overlap: $window_close_button_size * 0.5; & StIcon { icon-size: 24px; }
&:hover { &:hover {
background-color: lighten($selected_bg_color, 5%); background-color: lighten($osd_bg_color, 15%);
} }
&:active { &:active {
background-color: darken($selected_bg_color, 5%); color: transparentize($osd_fg_color, 0.2);
background-color: darken($osd_bg_color, 5%);
} }
} }
.workspace-background {
// keep in sync with BACKGROUND_CORNER_RADIUS_PIXELS in workspace.js
border-radius: 30px;
box-shadow: 0 4px 16px 4px transparentize(darken($osd_bg_color, 30%), 0.7);
}
@@ -16,7 +16,6 @@
} }
.ws-switcher-box { .ws-switcher-box {
// background: transparent;
background: transparent; background: transparent;
height: 50px; height: 50px;
background-size: 32px; background-size: 32px;
@@ -29,6 +28,7 @@
.ws-switcher-active-down, .ws-switcher-active-down,
.ws-switcher-active-left, .ws-switcher-active-left,
.ws-switcher-active-right { .ws-switcher-active-right {
height: 52px;
background-color: $selected_bg_color; background-color: $selected_bg_color;
border: 1px solid if($variant=='light', darken($selected_bg_color, 8%), lighten($selected_bg_color, 5%)); border: 1px solid if($variant=='light', darken($selected_bg_color, 8%), lighten($selected_bg_color, 5%));
border-radius: $base_border_radius + 3px; border-radius: $base_border_radius + 3px;
@@ -2,24 +2,20 @@
// thumbnails in overview // thumbnails in overview
.workspace-thumbnails { .workspace-thumbnails {
@extend %overview_panel;
visible-width: 32px; //amount visible before hover visible-width: 32px; //amount visible before hover
spacing: $base_spacing; spacing: $base_spacing;
padding: $base_padding; padding: $base_padding;
border-radius: $modal_radius 0 0 $modal_radius; .workspace-thumbnail {
border-right-width: 0; @extend %overview_panel;
border-radius: 3px;
&:rtl {
border-radius: 0 $modal_radius $modal_radius 0;
border-left-width: 0;
} }
// drag and drop indicator // drag and drop indicator
.placeholder { .placeholder {
background-image: url("resource:///org/gnome/shell/theme/dash-placeholder.svg"); background-image: url("resource:///org/gnome/shell/theme/workspace-placeholder.svg");
background-size: contain; background-size: contain;
height: 24px; width: 18px;
} }
} }
+79 -23
View File
@@ -1,17 +1,33 @@
sessions = [ session_desktop_base = 'gnome-classic'
['gnome-classic.session.desktop.in', sessiondir],
['gnome-classic.desktop.in', xsessiondir] session_desktops = [
session_desktop_base,
session_desktop_base + '-xorg',
session_desktop_base + '-wayland',
] ]
foreach s : sessions
name_array = s[0].split('.') foreach name: session_desktops
i18n.merge_file('', session_desktop = name + '.desktop'
input: s[0], if name.endswith('-xorg')
output: '.'.join([name_array[0], name_array[1]]), session_instdir = xsessiondir
po_dir: '../po', elif name.endswith('-wayland')
install: true, session_instdir = wlsessiondir
install_dir: s[1], else
type: 'desktop' # FIXME: The same target can not be copied into two directories.
) # There is a workaround in meson/session-post-install.py until proper
# solution arises:
# https://github.com/mesonbuild/meson/issues/2416
session_instdir = xsessiondir
#session_instdir = [ xesssiondir, wlsessiondir ]
endif
i18n.merge_file(
input: session_desktop + '.in',
output: session_desktop,
po_dir: '../po',
install: true,
install_dir: session_instdir,
type: 'desktop'
)
endforeach endforeach
classic_uuids = [] classic_uuids = []
@@ -34,7 +50,42 @@ theme_sources = files(
'gnome-shell-sass/_colors.scss', 'gnome-shell-sass/_colors.scss',
'gnome-shell-sass/_common.scss', 'gnome-shell-sass/_common.scss',
'gnome-shell-sass/_drawing.scss', 'gnome-shell-sass/_drawing.scss',
'gnome-shell-sass/_high-contrast-colors.scss' 'gnome-shell-sass/_high-contrast-colors.scss',
'gnome-shell-sass/_widgets.scss',
'gnome-shell-sass/widgets/_a11y.scss',
'gnome-shell-sass/widgets/_app-grid.scss',
'gnome-shell-sass/widgets/_base.scss',
'gnome-shell-sass/widgets/_buttons.scss',
'gnome-shell-sass/widgets/_calendar.scss',
'gnome-shell-sass/widgets/_check-box.scss',
'gnome-shell-sass/widgets/_corner-ripple.scss',
'gnome-shell-sass/widgets/_dash.scss',
'gnome-shell-sass/widgets/_dialogs.scss',
'gnome-shell-sass/widgets/_entries.scss',
'gnome-shell-sass/widgets/_hotplug.scss',
'gnome-shell-sass/widgets/_ibus-popup.scss',
'gnome-shell-sass/widgets/_keyboard.scss',
'gnome-shell-sass/widgets/_login-dialog.scss',
'gnome-shell-sass/widgets/_looking-glass.scss',
'gnome-shell-sass/widgets/_message-list.scss',
'gnome-shell-sass/widgets/_misc.scss',
'gnome-shell-sass/widgets/_network-dialog.scss',
'gnome-shell-sass/widgets/_notifications.scss',
'gnome-shell-sass/widgets/_osd.scss',
'gnome-shell-sass/widgets/_overview.scss',
'gnome-shell-sass/widgets/_panel.scss',
'gnome-shell-sass/widgets/_popovers.scss',
'gnome-shell-sass/widgets/_screen-shield.scss',
'gnome-shell-sass/widgets/_scrollbars.scss',
'gnome-shell-sass/widgets/_search-entry.scss',
'gnome-shell-sass/widgets/_search-results.scss',
'gnome-shell-sass/widgets/_slider.scss',
'gnome-shell-sass/widgets/_switcher-popup.scss',
'gnome-shell-sass/widgets/_switches.scss',
'gnome-shell-sass/widgets/_tiled-previews.scss',
'gnome-shell-sass/widgets/_window-picker.scss',
'gnome-shell-sass/widgets/_workspace-switcher.scss',
'gnome-shell-sass/widgets/_workspace-thumbnails.scss'
) )
theme_data = [ theme_data = [
@@ -47,15 +98,20 @@ theme_data = [
'gnome-classic-high-contrast.css' 'gnome-classic-high-contrast.css'
] ]
style = 'gnome-classic' stylesheet = 'gnome-classic.css'
custom_target(style + '.css', if fs.exists(stylesheet)
input: style + '.scss', install_data(stylesheet, install_dir: themedir)
output: style + '.css', else
depend_files: theme_sources, sassc = find_program('sassc', required: true)
command: [sassc, '-a', '@INPUT@', '@OUTPUT@'], custom_target(stylesheet,
install: true, input: fs.replace_suffix(stylesheet, '.scss'),
install_dir: themedir output: stylesheet,
) depend_files: theme_sources,
command: [sassc, '-a', '@INPUT@', '@OUTPUT@'],
install: true,
install_dir: themedir
)
endif
install_data(theme_data, install_dir: themedir) install_data(theme_data, install_dir: themedir)
+19 -9
View File
@@ -7,30 +7,40 @@ builddir=`mktemp -p $srcdir -d _build.XXXXXX` || exit 1
installdir=`mktemp -p $srcdir -d _install.XXXXXX` || exit 1 installdir=`mktemp -p $srcdir -d _install.XXXXXX` || exit 1
meson setup --prefix=$installdir -Dextension_set=all $srcdir $builddir meson setup --prefix=$installdir -Dextension_set=all $srcdir $builddir
ninja -C$builddir install meson install -C $builddir
rm -rf $srcdir/zip-files rm -rf $srcdir/zip-files
mkdir $srcdir/zip-files mkdir $srcdir/zip-files
extensiondir=$installdir/share/gnome-shell/extensions extensiondir=$installdir/share/gnome-shell/extensions
schemadir=$installdir/share/glib-2.0/schemas schemadir=$installdir/share/glib-2.0/schemas
localedir=$installdir/share/locale
for f in $extensiondir/*; do for f in $extensiondir/*; do
name=`basename ${f%%@*}` name=`basename ${f%%@*}`
uuid=$name@gnome-shell-extensions.gcampax.github.com uuid=$name@gnome-shell-extensions.gcampax.github.com
schema=$schemadir/org.gnome.shell.extensions.$name.gschema.xml schema=$schemadir/org.gnome.shell.extensions.$name.gschema.xml
cp $srcdir/NEWS $srcdir/COPYING $f olddomain=gnome-shell-extensions
cp -r $localedir $f newdomain=gnome-shell-extension-$name
sed -i "/gettext-domain/ s:$olddomain:$newdomain:" $f/metadata.json
if [ -f $schema ]; then xgettext --from-code=UTF-8 --output-dir=$builddir --output=$name.pot $f/*.js
mkdir $f/schemas
cp $schema $f/schemas; if [ -f $builddir/$name.pot ]; then
glib-compile-schemas $f/schemas mkdir $f/po
for l in $(<$srcdir/po/LINGUAS); do
msgmerge --quiet --output-file=$f/po/$l.po \
$srcdir/po/$l.po $builddir/$name.pot
done
fi fi
(cd $f && zip -rmq $srcdir/zip-files/$uuid.shell-extension.zip .) cp $srcdir/NEWS $srcdir/COPYING $f
sources=(NEWS COPYING $(cd $f; ls *.js))
[ -f $schema ] || unset schema
gnome-extensions pack ${sources[@]/#/--extra-source=} \
${schema:+--schema=$schema} --out-dir=$srcdir/zip-files $f
done done
rm -rf $builddir rm -rf $builddir
View File
+20 -25
View File
@@ -12,8 +12,7 @@ const Main = imports.ui.main;
const PanelMenu = imports.ui.panelMenu; const PanelMenu = imports.ui.panelMenu;
const PopupMenu = imports.ui.popupMenu; const PopupMenu = imports.ui.popupMenu;
const Gettext = imports.gettext.domain('gnome-shell-extensions'); const _ = ExtensionUtils.gettext;
const _ = Gettext.gettext;
const appSys = Shell.AppSystem.get_default(); const appSys = Shell.AppSystem.get_default();
@@ -181,11 +180,14 @@ class CategoryMenuItem extends PopupMenu.PopupBaseMenuItem {
} }
_onMotionEvent(actor, event) { _onMotionEvent(actor, event) {
let device = event.get_device(); if (!this._grab) {
if (!device.get_grabbed_actor()) {
this._oldX = -1; this._oldX = -1;
this._oldY = -1; this._oldY = -1;
device.grab(this); const grab = global.stage.grab(this);
if (grab.get_seat_state() !== Clutter.GrabState.NONE)
this._grab = grab;
else
grab.dismiss();
} }
this.hover = true; this.hover = true;
@@ -195,7 +197,8 @@ class CategoryMenuItem extends PopupMenu.PopupBaseMenuItem {
this._oldX = -1; this._oldX = -1;
this._oldY = -1; this._oldY = -1;
this.hover = false; this.hover = false;
device.ungrab(); this._grab?.dismiss();
delete this._grab;
let source = event.get_source(); let source = event.get_source();
if (source instanceof St.Widget) if (source instanceof St.Widget)
@@ -363,17 +366,13 @@ class ApplicationsButton extends PanelMenu.Button {
// role ATK_ROLE_MENU like other elements of the panel. // role ATK_ROLE_MENU like other elements of the panel.
this.accessible_role = Atk.Role.LABEL; this.accessible_role = Atk.Role.LABEL;
let hbox = new St.BoxLayout({ style_class: 'panel-status-menu-box' });
this._label = new St.Label({ this._label = new St.Label({
text: _('Applications'), text: _('Applications'),
y_expand: true, y_expand: true,
y_align: Clutter.ActorAlign.CENTER, y_align: Clutter.ActorAlign.CENTER,
}); });
hbox.add_child(this._label);
hbox.add_child(PopupMenu.arrowIcon(St.Side.BOTTOM));
this.add_actor(hbox); this.add_actor(this._label);
this.name = 'panelApplications'; this.name = 'panelApplications';
this.label_actor = this._label; this.label_actor = this._label;
@@ -383,9 +382,12 @@ class ApplicationsButton extends PanelMenu.Button {
this._hidingId = Main.overview.connect('hiding', () => { this._hidingId = Main.overview.connect('hiding', () => {
this.remove_accessible_state(Atk.StateType.CHECKED); this.remove_accessible_state(Atk.StateType.CHECKED);
}); });
Main.layoutManager.connect('startup-complete', Main.wm.addKeybinding(
this._setKeybinding.bind(this)); 'apps-menu-toggle-menu',
this._setKeybinding(); ExtensionUtils.getSettings(),
Meta.KeyBindingFlags.IGNORE_AUTOREPEAT,
Shell.ActionMode.NORMAL | Shell.ActionMode.OVERVIEW,
() => this.menu.toggle());
this._desktopTarget = new DesktopTarget(); this._desktopTarget = new DesktopTarget();
this._desktopTarget.connect('app-dropped', () => { this._desktopTarget.connect('app-dropped', () => {
@@ -436,11 +438,7 @@ class ApplicationsButton extends PanelMenu.Button {
this._tree.disconnect(this._treeChangedId); this._tree.disconnect(this._treeChangedId);
this._tree = null; this._tree = null;
Main.wm.setCustomKeybindingHandler('panel-main-menu', Main.wm.removeKeybinding('apps-menu-toggle-menu');
Shell.ActionMode.NORMAL | Shell.ActionMode.OVERVIEW,
Main.sessionMode.hasOverview
? Main.overview.toggle.bind(Main.overview)
: null);
this._desktopTarget.destroy(); this._desktopTarget.destroy();
} }
@@ -482,12 +480,6 @@ class ApplicationsButton extends PanelMenu.Button {
super._onOpenStateChanged(menu, open); super._onOpenStateChanged(menu, open);
} }
_setKeybinding() {
Main.wm.setCustomKeybindingHandler('panel-main-menu',
Shell.ActionMode.NORMAL | Shell.ActionMode.OVERVIEW,
() => this.menu.toggle());
}
_redisplay() { _redisplay() {
this.applicationsBox.destroy_all_children(); this.applicationsBox.destroy_all_children();
this.categoriesBox.destroy_all_children(); this.categoriesBox.destroy_all_children();
@@ -677,17 +669,20 @@ class ApplicationsButton extends PanelMenu.Button {
let appsMenuButton; let appsMenuButton;
/** */
function enable() { function enable() {
appsMenuButton = new ApplicationsButton(); appsMenuButton = new ApplicationsButton();
let index = Main.sessionMode.panel.left.indexOf('activities') + 1; let index = Main.sessionMode.panel.left.indexOf('activities') + 1;
Main.panel.addToStatusArea('apps-menu', appsMenuButton, index, 'left'); Main.panel.addToStatusArea('apps-menu', appsMenuButton, index, 'left');
} }
/** */
function disable() { function disable() {
Main.panel.menuManager.removeMenu(appsMenuButton.menu); Main.panel.menuManager.removeMenu(appsMenuButton.menu);
appsMenuButton.destroy(); appsMenuButton.destroy();
} }
/** */
function init() { function init() {
ExtensionUtils.initTranslations(); ExtensionUtils.initTranslations();
} }
+1
View File
@@ -3,3 +3,4 @@ extension_data += configure_file(
output: metadata_name, output: metadata_name,
configuration: metadata_conf configuration: metadata_conf
) )
extension_schemas += files(metadata_conf.get('gschemaname') + '.gschema.xml')
+1
View File
@@ -1,6 +1,7 @@
{ {
"extension-id": "@extension_id@", "extension-id": "@extension_id@",
"uuid": "@uuid@", "uuid": "@uuid@",
"settings-schema": "@gschemaname@",
"gettext-domain": "@gettext_domain@", "gettext-domain": "@gettext_domain@",
"name": "Applications Menu", "name": "Applications Menu",
"description": "Add a category-based menu for applications.\nThis extension is part of Classic Mode and is officially supported by GNOME. Please do not report bugs using the form below, use GNOME's GitLab instance instead.", "description": "Add a category-based menu for applications.\nThis extension is part of Classic Mode and is officially supported by GNOME. Please do not report bugs using the form below, use GNOME's GitLab instance instead.",
@@ -0,0 +1,12 @@
<schemalist gettext-domain="gnome-shell-extensions">
<schema id="org.gnome.shell.extensions.apps-menu"
path="/org/gnome/shell/extensions/apps-menu/">
<key name="apps-menu-toggle-menu" type="as">
<default>["&lt;Alt&gt;F1"]</default>
<summary>Keybinding to open the applications menu</summary>
<description>
Keybinding to open the applications menu.
</description>
</key>
</schema>
</schemalist>
+20 -13
View File
@@ -35,17 +35,16 @@ class WindowMover {
_updateAppData() { _updateAppData() {
let ids = [...this._appConfigs.keys()]; let ids = [...this._appConfigs.keys()];
let removedApps = [...this._appData.keys()].filter( let removedApps = [...this._appData.keys()]
a => !ids.includes(a.id) .filter(a => !ids.includes(a.id));
);
removedApps.forEach(app => { removedApps.forEach(app => {
app.disconnect(this._appData.get(app).windowsChangedId); app.disconnect(this._appData.get(app).windowsChangedId);
this._appData.delete(app); this._appData.delete(app);
}); });
let addedApps = ids.map(id => this._appSystem.lookup_app(id)).filter( let addedApps = ids
app => app && !this._appData.has(app) .map(id => this._appSystem.lookup_app(id))
); .filter(app => app && !this._appData.has(app));
addedApps.forEach(app => { addedApps.forEach(app => {
let data = { let data = {
windowsChangedId: app.connect('windows-changed', windowsChangedId: app.connect('windows-changed',
@@ -73,7 +72,7 @@ class WindowMover {
} }
_moveWindow(window, workspaceNum) { _moveWindow(window, workspaceNum) {
if (window.skip_taskbar) if (window.skip_taskbar || window.is_on_all_workspaces())
return; return;
// ensure we have the required number of workspaces // ensure we have the required number of workspaces
@@ -94,9 +93,9 @@ class WindowMover {
// the window still exists and is just moved to a different workspace // the window still exists and is just moved to a different workspace
// or something; assume it'll be added back immediately, so keep it // or something; assume it'll be added back immediately, so keep it
// to avoid moving it again // to avoid moving it again
windows.push(...data.windows.filter( windows.push(...data.windows.filter(w => {
w => !windows.includes(w) && w.get_compositor_private() !== null return !windows.includes(w) && w.get_compositor_private() !== null;
)); }));
let workspaceNum = this._appConfigs.get(app.id); let workspaceNum = this._appConfigs.get(app.id);
windows.filter(w => !data.windows.includes(w)).forEach(window => { windows.filter(w => !data.windows.includes(w)).forEach(window => {
@@ -109,18 +108,24 @@ class WindowMover {
let prevCheckWorkspaces; let prevCheckWorkspaces;
let winMover; let winMover;
/** */
function init() { function init() {
ExtensionUtils.initTranslations(); ExtensionUtils.initTranslations();
} }
/**
* @returns {bool} - false (used as MetaLater handler)
*/
function myCheckWorkspaces() { function myCheckWorkspaces() {
let keepAliveWorkspaces = []; let keepAliveWorkspaces = [];
let foundNonEmpty = false; let foundNonEmpty = false;
for (let i = this._workspaces.length - 1; i >= 0; i--) { for (let i = this._workspaces.length - 1; i >= 0; i--) {
if (!foundNonEmpty) if (!foundNonEmpty) {
foundNonEmpty = this._workspaces[i].list_windows().length > 0; foundNonEmpty = this._workspaces[i].list_windows().some(
else if (!this._workspaces[i]._keepAliveId) w => !w.is_on_all_workspaces());
} else if (!this._workspaces[i]._keepAliveId) {
keepAliveWorkspaces.push(this._workspaces[i]); keepAliveWorkspaces.push(this._workspaces[i]);
}
} }
// make sure the original method only removes empty workspaces at the end // make sure the original method only removes empty workspaces at the end
@@ -131,6 +136,7 @@ function myCheckWorkspaces() {
return false; return false;
} }
/** */
function enable() { function enable() {
prevCheckWorkspaces = Main.wm._workspaceTracker._checkWorkspaces; prevCheckWorkspaces = Main.wm._workspaceTracker._checkWorkspaces;
Main.wm._workspaceTracker._checkWorkspaces = myCheckWorkspaces; Main.wm._workspaceTracker._checkWorkspaces = myCheckWorkspaces;
@@ -138,6 +144,7 @@ function enable() {
winMover = new WindowMover(); winMover = new WindowMover();
} }
/** */
function disable() { function disable() {
Main.wm._workspaceTracker._checkWorkspaces = prevCheckWorkspaces; Main.wm._workspaceTracker._checkWorkspaces = prevCheckWorkspaces;
winMover.destroy(); winMover.destroy();
+244 -239
View File
@@ -2,281 +2,286 @@
// Start apps on custom workspaces // Start apps on custom workspaces
/* exported init buildPrefsWidget */ /* exported init buildPrefsWidget */
const { Gio, GObject, Gtk } = imports.gi; const { Adw, Gio, GLib, GObject, Gtk } = imports.gi;
const Gettext = imports.gettext.domain('gnome-shell-extensions');
const _ = Gettext.gettext;
const N_ = e => e;
const ExtensionUtils = imports.misc.extensionUtils; const ExtensionUtils = imports.misc.extensionUtils;
const _ = ExtensionUtils.gettext;
const SETTINGS_KEY = 'application-list'; const SETTINGS_KEY = 'application-list';
const WORKSPACE_MAX = 36; // compiled in limit of mutter const WORKSPACE_MAX = 36; // compiled in limit of mutter
const Columns = { const AutoMoveSettingsWidget = GObject.registerClass(
APPINFO: 0, class AutoMoveSettingsWidget extends Adw.PreferencesGroup {
DISPLAY_NAME: 1, _init() {
ICON: 2, super._init({
WORKSPACE: 3, title: _('Workspace Rules'),
ADJUSTMENT: 4, });
};
const Widget = GObject.registerClass( this._list = new Gtk.ListBox({
class Widget extends Gtk.Grid { selection_mode: Gtk.SelectionMode.NONE,
_init(params) { css_classes: ['boxed-list'],
super._init(params); });
this.set_orientation(Gtk.Orientation.VERTICAL); this.add(this._list);
this._list.append(new NewRuleRow());
this._actionGroup = new Gio.SimpleActionGroup();
this._list.insert_action_group('rules', this._actionGroup);
let action;
action = new Gio.SimpleAction({ name: 'add' });
action.connect('activate', this._onAddActivated.bind(this));
this._actionGroup.add_action(action);
action = new Gio.SimpleAction({
name: 'remove',
parameter_type: new GLib.VariantType('s'),
});
action.connect('activate', this._onRemoveActivated.bind(this));
this._actionGroup.add_action(action);
action = new Gio.SimpleAction({ name: 'update' });
action.connect('activate', () => {
this._settings.set_strv(SETTINGS_KEY,
this._getRuleRows().map(row => `${row.id}:${row.value}`));
});
this._actionGroup.add_action(action);
this._updateAction = action;
this._settings = ExtensionUtils.getSettings(); this._settings = ExtensionUtils.getSettings();
this._settings.connect('changed', this._refresh.bind(this)); this._changedId = this._settings.connect('changed',
this._changedPermitted = false; this._sync.bind(this));
this._sync();
this._store = new Gtk.ListStore(); this.connect('destroy', () => this._settings.run_dispose());
this._store.set_column_types([
Gio.AppInfo,
GObject.TYPE_STRING,
Gio.Icon,
GObject.TYPE_INT,
Gtk.Adjustment,
]);
let scrolled = new Gtk.ScrolledWindow({ shadow_type: Gtk.ShadowType.IN });
scrolled.set_policy(Gtk.PolicyType.NEVER, Gtk.PolicyType.AUTOMATIC);
this.add(scrolled);
this._treeView = new Gtk.TreeView({
model: this._store,
hexpand: true,
vexpand: true,
});
this._treeView.get_selection().set_mode(Gtk.SelectionMode.SINGLE);
let appColumn = new Gtk.TreeViewColumn({
expand: true,
sort_column_id: Columns.DISPLAY_NAME,
title: _('Application'),
});
let iconRenderer = new Gtk.CellRendererPixbuf();
appColumn.pack_start(iconRenderer, false);
appColumn.add_attribute(iconRenderer, 'gicon', Columns.ICON);
let nameRenderer = new Gtk.CellRendererText();
appColumn.pack_start(nameRenderer, true);
appColumn.add_attribute(nameRenderer, 'text', Columns.DISPLAY_NAME);
this._treeView.append_column(appColumn);
let workspaceColumn = new Gtk.TreeViewColumn({
title: _('Workspace'),
sort_column_id: Columns.WORKSPACE,
});
let workspaceRenderer = new Gtk.CellRendererSpin({ editable: true });
workspaceRenderer.connect('edited', this._workspaceEdited.bind(this));
workspaceColumn.pack_start(workspaceRenderer, true);
workspaceColumn.add_attribute(workspaceRenderer, 'adjustment', Columns.ADJUSTMENT);
workspaceColumn.add_attribute(workspaceRenderer, 'text', Columns.WORKSPACE);
this._treeView.append_column(workspaceColumn);
scrolled.add(this._treeView);
let toolbar = new Gtk.Toolbar({ icon_size: Gtk.IconSize.SMALL_TOOLBAR });
toolbar.get_style_context().add_class(Gtk.STYLE_CLASS_INLINE_TOOLBAR);
this.add(toolbar);
let newButton = new Gtk.ToolButton({
icon_name: 'bookmark-new-symbolic',
label: _('Add Rule'),
is_important: true,
});
newButton.connect('clicked', this._createNew.bind(this));
toolbar.add(newButton);
let delButton = new Gtk.ToolButton({ icon_name: 'edit-delete-symbolic' });
delButton.connect('clicked', this._deleteSelected.bind(this));
toolbar.add(delButton);
let selection = this._treeView.get_selection();
selection.connect('changed', () => {
delButton.sensitive = selection.count_selected_rows() > 0;
});
delButton.sensitive = selection.count_selected_rows() > 0;
this._changedPermitted = true;
this._refresh();
} }
_createNew() { _onAddActivated() {
let dialog = new Gtk.Dialog({ const dialog = new NewRuleDialog(this.get_root());
title: _('Create new matching rule'),
transient_for: this.get_toplevel(),
use_header_bar: true,
modal: true,
});
dialog.add_button(Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL);
let addButton = dialog.add_button(_('Add'), Gtk.ResponseType.OK);
dialog.set_default_response(Gtk.ResponseType.OK);
let grid = new Gtk.Grid({
column_spacing: 10,
row_spacing: 15,
margin: 10,
});
dialog._appChooser = new Gtk.AppChooserWidget({ show_all: true });
dialog._appChooser.connect('application-selected', (w, appInfo) => {
addButton.sensitive = appInfo && this._checkId(appInfo.get_id());
});
let appInfo = dialog._appChooser.get_app_info();
addButton.sensitive = appInfo && this._checkId(appInfo.get_id());
grid.attach(dialog._appChooser, 0, 0, 2, 1);
grid.attach(new Gtk.Label({
label: _('Workspace'),
halign: Gtk.Align.END,
}), 0, 1, 1, 1);
let adjustment = new Gtk.Adjustment({
lower: 1,
upper: WORKSPACE_MAX,
step_increment: 1,
});
dialog._spin = new Gtk.SpinButton({
adjustment,
snap_to_ticks: true,
});
dialog._spin.set_value(1);
grid.attach(dialog._spin, 1, 1, 1, 1);
dialog.get_content_area().add(grid);
dialog.connect('response', (dlg, id) => { dialog.connect('response', (dlg, id) => {
if (id !== Gtk.ResponseType.OK) { const appInfo = id === Gtk.ResponseType.OK
dialog.destroy(); ? dialog.get_widget().get_app_info() : null;
return; if (appInfo) {
this._settings.set_strv(SETTINGS_KEY, [
...this._settings.get_strv(SETTINGS_KEY),
`${appInfo.get_id()}:1`,
]);
} }
appInfo = dialog._appChooser.get_app_info();
if (!appInfo)
return;
let index = Math.floor(dialog._spin.value);
if (isNaN(index) || index < 0)
index = 1;
this._changedPermitted = false;
this._appendItem(appInfo.get_id(), index);
this._changedPermitted = true;
this._appendRow(appInfo, index);
dialog.destroy(); dialog.destroy();
}); });
dialog.show_all(); dialog.show();
} }
_deleteSelected() { _onRemoveActivated(action, param) {
let [any, model_, iter] = this._treeView.get_selection().get_selected(); const removed = param.deepUnpack();
this._settings.set_strv(SETTINGS_KEY,
if (any) { this._settings.get_strv(SETTINGS_KEY).filter(entry => {
let appInfo = this._store.get_value(iter, Columns.APPINFO); const [id] = entry.split(':');
return id !== removed;
this._changedPermitted = false; }));
this._removeItem(appInfo.get_id());
this._changedPermitted = true;
this._store.remove(iter);
}
} }
_workspaceEdited(renderer, pathString, text) { _getRuleRows() {
let index = parseInt(text); return [...this._list].filter(row => !!row.id);
if (isNaN(index) || index < 0)
index = 1;
let path = Gtk.TreePath.new_from_string(pathString);
let [model_, iter] = this._store.get_iter(path);
let appInfo = this._store.get_value(iter, Columns.APPINFO);
this._changedPermitted = false;
this._changeItem(appInfo.get_id(), index);
this._store.set_value(iter, Columns.WORKSPACE, index);
this._changedPermitted = true;
} }
_refresh() { _sync() {
if (!this._changedPermitted) const oldRules = this._getRuleRows();
// Ignore this notification, model is being modified outside const newRules = this._settings.get_strv(SETTINGS_KEY).map(entry => {
return; const [id, value] = entry.split(':');
return { id, value };
this._store.clear();
let currentItems = this._settings.get_strv(SETTINGS_KEY);
let validItems = [];
for (let i = 0; i < currentItems.length; i++) {
let [id, index] = currentItems[i].split(':');
let appInfo = Gio.DesktopAppInfo.new(id);
if (!appInfo)
continue;
validItems.push(currentItems[i]);
this._appendRow(appInfo, parseInt(index));
}
if (validItems.length !== currentItems.length) // some items were filtered out
this._settings.set_strv(SETTINGS_KEY, validItems);
}
_appendRow(appInfo, workspace) {
let iter = this._store.append();
let icon = appInfo.get_icon();
let displayName = appInfo.get_display_name();
let adj = new Gtk.Adjustment({
lower: 1,
upper: WORKSPACE_MAX,
step_increment: 1,
value: workspace,
}); });
let { APPINFO, ICON, DISPLAY_NAME, WORKSPACE, ADJUSTMENT } = Columns;
this._store.set(iter,
[APPINFO, ICON, DISPLAY_NAME, WORKSPACE, ADJUSTMENT],
[appInfo, icon, displayName, workspace, adj]);
}
_checkId(id) { this._settings.block_signal_handler(this._changedId);
let items = this._settings.get_strv(SETTINGS_KEY); this._updateAction.enabled = false;
return !items.some(i => i.startsWith(`${id}:`));
}
_appendItem(id, workspace) { newRules.forEach(({ id, value }, index) => {
let currentItems = this._settings.get_strv(SETTINGS_KEY); const row = oldRules.find(r => r.id === id);
currentItems.push(`${id}:${workspace}`); const appInfo = row
this._settings.set_strv(SETTINGS_KEY, currentItems); ? null : Gio.DesktopAppInfo.new(id);
}
_removeItem(id) { if (row)
let currentItems = this._settings.get_strv(SETTINGS_KEY); row.set({ value });
let index = currentItems.map(el => el.split(':')[0]).indexOf(id); else if (appInfo)
this._list.insert(new RuleRow(appInfo, value), index);
});
if (index < 0) const removed = oldRules.filter(
return; ({ id }) => !newRules.find(r => r.id === id));
currentItems.splice(index, 1); removed.forEach(r => this._list.remove(r));
this._settings.set_strv(SETTINGS_KEY, currentItems);
}
_changeItem(id, workspace) { this._settings.unblock_signal_handler(this._changedId);
let currentItems = this._settings.get_strv(SETTINGS_KEY); this._updateAction.enabled = true;
let index = currentItems.map(el => el.split(':')[0]).indexOf(id);
if (index < 0)
currentItems.push(`${id}:${workspace}`);
else
currentItems[index] = `${id}:${workspace}`;
this._settings.set_strv(SETTINGS_KEY, currentItems);
} }
}); });
const WorkspaceSelector = GObject.registerClass({
Properties: {
'number': GObject.ParamSpec.uint(
'number', 'number', 'number',
GObject.ParamFlags.READWRITE,
1, WORKSPACE_MAX, 1),
},
}, class WorkspaceSelector extends Gtk.Widget {
static _classInit(klass) {
super._classInit(klass);
klass.set_layout_manager_type(Gtk.BoxLayout);
return klass;
}
_init() {
super._init();
this.layout_manager.spacing = 6;
const label = new Gtk.Label({
xalign: 1,
margin_end: 6,
});
this.bind_property('number',
label, 'label',
GObject.BindingFlags.SYNC_CREATE);
label.set_parent(this);
const buttonProps = {
css_classes: ['circular'],
valign: Gtk.Align.CENTER,
};
this._decButton = new Gtk.Button({
icon_name: 'list-remove-symbolic',
...buttonProps,
});
this._decButton.set_parent(this);
this._decButton.connect('clicked', () => this.number--);
this._incButton = new Gtk.Button({
icon_name: 'list-add-symbolic',
...buttonProps,
});
this._incButton.set_parent(this);
this._incButton.connect('clicked', () => this.number++);
this.connect('notify::number', () => this._syncButtons());
this._syncButtons();
}
_syncButtons() {
this._decButton.sensitive = this.number > 1;
this._incButton.sensitive = this.number < WORKSPACE_MAX;
}
});
const RuleRow = GObject.registerClass({
Properties: {
'id': GObject.ParamSpec.string(
'id', 'id', 'id',
GObject.ParamFlags.READABLE,
''),
'value': GObject.ParamSpec.uint(
'value', 'value', 'value',
GObject.ParamFlags.READWRITE,
1, WORKSPACE_MAX, 1),
},
}, class RuleRow extends Adw.ActionRow {
_init(appInfo, value) {
super._init({
activatable: false,
title: appInfo.get_display_name(),
value,
});
this._appInfo = appInfo;
const icon = new Gtk.Image({
css_classes: ['icon-dropshadow'],
gicon: appInfo.get_icon(),
pixel_size: 32,
});
this.add_prefix(icon);
const wsButton = new WorkspaceSelector();
this.bind_property('value',
wsButton, 'number',
GObject.BindingFlags.SYNC_CREATE | GObject.BindingFlags.BIDIRECTIONAL);
this.add_suffix(wsButton);
const button = new Gtk.Button({
action_name: 'rules.remove',
action_target: new GLib.Variant('s', this.id),
icon_name: 'edit-delete-symbolic',
has_frame: false,
valign: Gtk.Align.CENTER,
});
this.add_suffix(button);
this.connect('notify::value',
() => this.activate_action('rules.update', null));
}
get id() {
return this._appInfo.get_id();
}
});
const NewRuleRow = GObject.registerClass(
class NewRuleRow extends Gtk.ListBoxRow {
_init() {
super._init({
action_name: 'rules.add',
child: new Gtk.Image({
icon_name: 'list-add-symbolic',
pixel_size: 16,
margin_top: 12,
margin_bottom: 12,
margin_start: 12,
margin_end: 12,
}),
});
this.update_property(
[Gtk.AccessibleProperty.LABEL], [_('Add Rule')]);
}
});
const NewRuleDialog = GObject.registerClass(
class NewRuleDialog extends Gtk.AppChooserDialog {
_init(parent) {
super._init({
transient_for: parent,
modal: true,
});
this._settings = ExtensionUtils.getSettings();
this.get_widget().set({
show_all: true,
show_other: true, // hide more button
});
this.get_widget().connect('application-selected',
this._updateSensitivity.bind(this));
this._updateSensitivity();
}
_updateSensitivity() {
const rules = this._settings.get_strv(SETTINGS_KEY);
const appInfo = this.get_widget().get_app_info();
this.set_response_sensitive(Gtk.ResponseType.OK,
appInfo && !rules.some(i => i.startsWith(appInfo.get_id())));
}
});
/** */
function init() { function init() {
ExtensionUtils.initTranslations(); ExtensionUtils.initTranslations();
} }
/**
* @returns {Gtk.Widget} - the prefs widget
*/
function buildPrefsWidget() { function buildPrefsWidget() {
let widget = new Widget({ margin: 12 }); return new AutoMoveSettingsWidget();
widget.show_all();
return widget;
} }
+43 -23
View File
@@ -1,9 +1,6 @@
/* exported init enable disable */ /* exported init enable disable */
// Drive menu extension // Drive menu extension
const { Gio, GObject, Shell, St } = imports.gi; const { Clutter, Gio, GObject, Shell, St } = imports.gi;
const Gettext = imports.gettext.domain('gnome-shell-extensions');
const _ = Gettext.gettext;
const ExtensionUtils = imports.misc.extensionUtils; const ExtensionUtils = imports.misc.extensionUtils;
const Main = imports.ui.main; const Main = imports.ui.main;
@@ -11,12 +8,22 @@ const PanelMenu = imports.ui.panelMenu;
const PopupMenu = imports.ui.popupMenu; const PopupMenu = imports.ui.popupMenu;
const ShellMountOperation = imports.ui.shellMountOperation; const ShellMountOperation = imports.ui.shellMountOperation;
const _ = ExtensionUtils.gettext;
Gio._promisify(Gio.File.prototype, 'query_filesystem_info_async');
var MountMenuItem = GObject.registerClass( var MountMenuItem = GObject.registerClass(
class MountMenuItem extends PopupMenu.PopupBaseMenuItem { class MountMenuItem extends PopupMenu.PopupBaseMenuItem {
_init(mount) { _init(mount) {
super._init(); super._init({
style_class: 'drive-menu-item',
});
this.label = new St.Label({ text: mount.get_name() }); this.label = new St.Label({
text: mount.get_name(),
x_expand: true,
y_align: Clutter.ActorAlign.CENTER,
});
this.add_child(this.label); this.add_child(this.label);
this.label_actor = this.label; this.label_actor = this.label;
@@ -28,10 +35,15 @@ class MountMenuItem extends PopupMenu.PopupBaseMenuItem {
icon_name: 'media-eject-symbolic', icon_name: 'media-eject-symbolic',
style_class: 'popup-menu-icon', style_class: 'popup-menu-icon',
}); });
let ejectButton = new St.Button({ child: ejectIcon }); let ejectButton = new St.Button({
child: ejectIcon,
style_class: 'button',
});
ejectButton.connect('clicked', this._eject.bind(this)); ejectButton.connect('clicked', this._eject.bind(this));
this.add(ejectButton); this.add(ejectButton);
this.hide();
this._changedId = mount.connect('changed', this._syncVisibility.bind(this)); this._changedId = mount.connect('changed', this._syncVisibility.bind(this));
this._syncVisibility(); this._syncVisibility();
} }
@@ -45,7 +57,7 @@ class MountMenuItem extends PopupMenu.PopupBaseMenuItem {
super.destroy(); super.destroy();
} }
_isInteresting() { async _isInteresting() {
if (!this.mount.can_eject() && !this.mount.can_unmount()) if (!this.mount.can_eject() && !this.mount.can_unmount())
return false; return false;
if (this.mount.is_shadowed()) if (this.mount.is_shadowed())
@@ -53,17 +65,25 @@ class MountMenuItem extends PopupMenu.PopupBaseMenuItem {
let volume = this.mount.get_volume(); let volume = this.mount.get_volume();
if (!volume) { if (volume)
// probably a GDaemonMount, could be network or return volume.get_identifier('class') !== 'network';
// local, but we can't tell; assume it's local for now
return true; const root = this.mount.get_root();
try {
const attr = Gio.FILE_ATTRIBUTE_FILESYSTEM_REMOTE;
const info = await root.query_filesystem_info_async(attr, null);
return !info.get_attribute_boolean(attr);
} catch (e) {
log(`Failed to query filesystem: ${e.message}`);
} }
return volume.get_identifier('class') !== 'network'; // Hack, fall back to looking at GType
return Gio._LocalFilePrototype.isPrototypeOf(root);
} }
_syncVisibility() { async _syncVisibility() {
this.visible = this._isInteresting(); this.visible = await this._isInteresting();
} }
_eject() { _eject() {
@@ -118,21 +138,16 @@ class DriveMenu extends PanelMenu.Button {
_init() { _init() {
super._init(0.0, _('Removable devices')); super._init(0.0, _('Removable devices'));
let hbox = new St.BoxLayout({ style_class: 'panel-status-menu-box' });
let icon = new St.Icon({ let icon = new St.Icon({
icon_name: 'media-eject-symbolic', icon_name: 'media-eject-symbolic',
style_class: 'system-status-icon', style_class: 'system-status-icon',
}); });
hbox.add_child(icon); this.add_child(icon);
hbox.add_child(PopupMenu.arrowIcon(St.Side.BOTTOM));
this.add_child(hbox);
this._monitor = Gio.VolumeMonitor.get(); this._monitor = Gio.VolumeMonitor.get();
this._addedId = this._monitor.connect('mount-added', (monitor, mount) => { this._addedId = this._monitor.connect('mount-added',
this._addMount(mount); (monitor, mount) => this._addMount(mount));
this._updateMenuVisibility();
});
this._removedId = this._monitor.connect('mount-removed', (monitor, mount) => { this._removedId = this._monitor.connect('mount-removed', (monitor, mount) => {
this._removeMount(mount); this._removeMount(mount);
this._updateMenuVisibility(); this._updateMenuVisibility();
@@ -163,6 +178,8 @@ class DriveMenu extends PanelMenu.Button {
let item = new MountMenuItem(mount); let item = new MountMenuItem(mount);
this._mounts.unshift(item); this._mounts.unshift(item);
this.menu.addMenuItem(item, 0); this.menu.addMenuItem(item, 0);
item.connect('notify::visible', () => this._updateMenuVisibility());
} }
_removeMount(mount) { _removeMount(mount) {
@@ -189,17 +206,20 @@ class DriveMenu extends PanelMenu.Button {
} }
}); });
/** */
function init() { function init() {
ExtensionUtils.initTranslations(); ExtensionUtils.initTranslations();
} }
let _indicator; let _indicator;
/** */
function enable() { function enable() {
_indicator = new DriveMenu(); _indicator = new DriveMenu();
Main.panel.addToStatusArea('drive-menu', _indicator); Main.panel.addToStatusArea('drive-menu', _indicator);
} }
/** */
function disable() { function disable() {
_indicator.destroy(); _indicator.destroy();
} }
+7 -1
View File
@@ -1 +1,7 @@
/* This extensions requires no custom styling */ .drive-menu-item { spacing: 12px; }
.drive-menu-item .button {
border-radius: 99px;
padding: 3px;
min-height: auto;
}
@@ -1,38 +0,0 @@
/* exported init */
const { Meta } = imports.gi;
const { ThumbnailsBox } = imports.ui.workspaceThumbnail;
class Extension {
constructor() {
this._origUpdateSwitcherVisibility =
ThumbnailsBox.prototype._updateSwitcherVisibility;
}
enable() {
global.workspace_manager.override_workspace_layout(
Meta.DisplayCorner.TOPLEFT,
false,
1,
-1);
ThumbnailsBox.prototype._updateSwitcherVisibility = function () {
this.hide();
};
}
disable() {
global.workspace_manager.override_workspace_layout(
Meta.DisplayCorner.TOPLEFT,
false,
-1,
1);
ThumbnailsBox.prototype._updateSwitcherVisibility =
this._origUpdateSwitcherVisibility;
}
}
function init() {
return new Extension();
}
@@ -1,5 +0,0 @@
extension_data += configure_file(
input: metadata_name + '.in',
output: metadata_name,
configuration: metadata_conf
)
@@ -1,10 +0,0 @@
{
"extension-id": "@extension_id@",
"uuid": "@uuid@",
"settings-schema": "@gschemaname@",
"gettext-domain": "@gettext_domain@",
"name": "Horizontal workspaces",
"description": "Use a horizontal workspace layout",
"shell-version": [ "@shell_current@" ],
"url": "@url@"
}
@@ -1 +0,0 @@
/* This extensions requires no special styling */
@@ -3,6 +3,7 @@ const AppDisplay = imports.ui.appDisplay;
let _activateOriginal = null; let _activateOriginal = null;
/** */
function enable() { function enable() {
_activateOriginal = AppDisplay.AppIcon.prototype.activate; _activateOriginal = AppDisplay.AppIcon.prototype.activate;
AppDisplay.AppIcon.prototype.activate = function () { AppDisplay.AppIcon.prototype.activate = function () {
@@ -10,6 +11,7 @@ function enable() {
}; };
} }
/** */
function disable() { function disable() {
AppDisplay.AppIcon.prototype.activate = _activateOriginal; AppDisplay.AppIcon.prototype.activate = _activateOriginal;
} }
+4 -20
View File
@@ -3,7 +3,7 @@ js_sources = []
metadata_name = 'metadata.json' metadata_name = 'metadata.json'
foreach e : all_extensions foreach e : enabled_extensions
uuid = e + uuid_suffix uuid = e + uuid_suffix
metadata_conf = configuration_data() metadata_conf = configuration_data()
@@ -19,27 +19,11 @@ foreach e : all_extensions
subdir(e) subdir(e)
js_sources += extension_sources install_data (extension_sources + extension_data,
install_dir: join_paths(extensiondir, uuid)
if (enabled_extensions.contains(e)) )
install_data (extension_sources + extension_data,
install_dir: join_paths(extensiondir, uuid)
)
endif
endforeach endforeach
install_data (extension_schemas, install_data (extension_schemas,
install_dir: schemadir install_dir: schemadir
) )
foreach js_source : js_sources
if (js60.found())
path_array = '@0@'.format(js_source).split('/')
name = join_paths(path_array[-2], path_array[-1])
test('Checking syntax of ' + name, js60,
args: ['-s', '-c', js_source],
workdir: meson.current_source_dir()
)
endif
endforeach
+50 -22
View File
@@ -1,6 +1,10 @@
// -*- mode: js2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- // -*- mode: js2; indent-tabs-mode: nil; js2-basic-offset: 4 -*-
/* exported enable disable */ /* exported enable disable */
const { Clutter } = imports.gi;
const ExtensionUtils = imports.misc.extensionUtils; const ExtensionUtils = imports.misc.extensionUtils;
const Main = imports.ui.main;
const { WindowPreview } = imports.ui.windowPreview;
const Workspace = imports.ui.workspace; const Workspace = imports.ui.workspace;
// testing settings for natural window placement strategy: // testing settings for natural window placement strategy:
@@ -63,13 +67,15 @@ class Rect {
} }
class NaturalLayoutStrategy extends Workspace.LayoutStrategy { class NaturalLayoutStrategy extends Workspace.LayoutStrategy {
constructor(settings) { constructor(params, settings) {
super(); super(params);
this._settings = settings; this._settings = settings;
} }
computeLayout(windows, layout) { computeLayout(windows, _params) {
layout.windows = windows; return {
windows,
};
} }
/* /*
@@ -100,7 +106,6 @@ class NaturalLayoutStrategy extends Workspace.LayoutStrategy {
direction++; direction++;
if (direction === 4) if (direction === 4)
direction = 0; direction = 0;
} }
let loopCounter = 0; let loopCounter = 0;
@@ -221,8 +226,10 @@ class NaturalLayoutStrategy extends Workspace.LayoutStrategy {
for (let i = 0; i < rects.length; i++) { for (let i = 0; i < rects.length; i++) {
rects[i].x = rects[i].x * scale + areaRect.x; rects[i].x = rects[i].x * scale + areaRect.x;
rects[i].y = rects[i].y * scale + areaRect.y; rects[i].y = rects[i].y * scale + areaRect.y;
rects[i].width *= scale;
rects[i].height *= scale;
slots.push([rects[i].x, rects[i].y, scale, clones[i]]); slots.push([rects[i].x, rects[i].y, rects[i].width, rects[i].height, clones[i]]);
} }
return slots; return slots;
@@ -231,37 +238,57 @@ class NaturalLayoutStrategy extends Workspace.LayoutStrategy {
let winInjections, workspaceInjections; let winInjections, workspaceInjections;
/** */
function resetState() { function resetState() {
winInjections = { }; winInjections = { };
workspaceInjections = { }; workspaceInjections = { };
} }
/** */
function enable() { function enable() {
resetState(); resetState();
let settings = ExtensionUtils.getSettings(); let settings = ExtensionUtils.getSettings();
workspaceInjections['_getBestLayout'] = Workspace.Workspace.prototype._getBestLayout; workspaceInjections['_createBestLayout'] = Workspace.WorkspaceLayout.prototype._createBestLayout;
Workspace.Workspace.prototype._getBestLayout = function (windows) { Workspace.WorkspaceLayout.prototype._createBestLayout = function (_area) {
let strategy = new NaturalLayoutStrategy(settings); this._layoutStrategy = new NaturalLayoutStrategy({
let layout = { strategy }; monitor: Main.layoutManager.monitors[this._monitorIndex],
strategy.computeLayout(windows, layout); }, settings);
return this._layoutStrategy.computeLayout(this._sortedWindows);
return layout;
}; };
// position window titles on top of windows in overlay // position window titles on top of windows in overlay
winInjections['relayout'] = Workspace.WindowOverlay.prototype.relayout; winInjections['_init'] = WindowPreview.prototype._init;
Workspace.WindowOverlay.prototype.relayout = function (animate) { WindowPreview.prototype._init = function (...args) {
if (settings.get_boolean('window-captions-on-top')) { winInjections['_init'].call(this, ...args);
let [, , , cloneHeight] = this._windowClone.slot;
this.title.translation_y = -cloneHeight;
}
winInjections['relayout'].call(this, animate); if (!settings.get_boolean('window-captions-on-top'))
return;
const alignConstraint = this._title.get_constraints().find(
c => c.align_axis && c.align_axis === Clutter.AlignAxis.Y_AXIS);
alignConstraint.factor = 0;
const bindConstraint = this._title.get_constraints().find(
c => c.coordinate && c.coordinate === Clutter.BindCoordinate.Y);
bindConstraint.offset = 0;
};
winInjections['_adjustOverlayOffsets'] =
WindowPreview.prototype._adjustOverlayOffsets;
WindowPreview.prototype._adjustOverlayOffsets = function (...args) {
winInjections['_adjustOverlayOffsets'].call(this, ...args);
if (settings.get_boolean('window-captions-on-top'))
this._title.translation_y = -this._title.translation_y;
}; };
} }
/**
* @param {Object} object - object that was modified
* @param {Object} injection - the map of previous injections
* @param {string} name - the @injection key that should be removed
*/
function removeInjection(object, injection, name) { function removeInjection(object, injection, name) {
if (injection[name] === undefined) if (injection[name] === undefined)
delete object[name]; delete object[name];
@@ -269,13 +296,14 @@ function removeInjection(object, injection, name) {
object[name] = injection[name]; object[name] = injection[name];
} }
/** */
function disable() { function disable() {
var i; var i;
for (i in workspaceInjections) for (i in workspaceInjections)
removeInjection(Workspace.Workspace.prototype, workspaceInjections, i); removeInjection(Workspace.WorkspaceLayout.prototype, workspaceInjections, i);
for (i in winInjections) for (i in winInjections)
removeInjection(Workspace.WindowOverlay.prototype, winInjections, i); removeInjection(WindowPreview.prototype, winInjections, i);
global.stage.queue_relayout(); global.stage.queue_relayout();
resetState(); resetState();
@@ -1,9 +1 @@
.window-caption { /* This extensions requires no special styling */
-shell-caption-spacing: 13px; /* current caption height is 26px => set it to half of it. TODO: better solution needed */
}
.window-picker {
-horizontal-spacing: 32px;
-vertical-spacing: 32px;
padding: 64px 32px;
}
+19 -11
View File
@@ -8,19 +8,20 @@ const Main = imports.ui.main;
const PanelMenu = imports.ui.panelMenu; const PanelMenu = imports.ui.panelMenu;
const PopupMenu = imports.ui.popupMenu; const PopupMenu = imports.ui.popupMenu;
const Gettext = imports.gettext.domain('gnome-shell-extensions');
const _ = Gettext.gettext;
const N_ = x => x;
const Me = ExtensionUtils.getCurrentExtension(); const Me = ExtensionUtils.getCurrentExtension();
const PlaceDisplay = Me.imports.placeDisplay; const PlaceDisplay = Me.imports.placeDisplay;
const _ = ExtensionUtils.gettext;
const N_ = x => x;
const PLACE_ICON_SIZE = 16; const PLACE_ICON_SIZE = 16;
var PlaceMenuItem = GObject.registerClass( var PlaceMenuItem = GObject.registerClass(
class PlaceMenuItem extends PopupMenu.PopupBaseMenuItem { class PlaceMenuItem extends PopupMenu.PopupBaseMenuItem {
_init(info) { _init(info) {
super._init(); super._init({
style_class: 'place-menu-item',
});
this._info = info; this._info = info;
this._icon = new St.Icon({ this._icon = new St.Icon({
@@ -29,7 +30,11 @@ class PlaceMenuItem extends PopupMenu.PopupBaseMenuItem {
}); });
this.add_child(this._icon); this.add_child(this._icon);
this._label = new St.Label({ text: info.name, x_expand: true }); this._label = new St.Label({
text: info.name,
x_expand: true,
y_align: Clutter.ActorAlign.CENTER,
});
this.add_child(this._label); this.add_child(this._label);
if (info.isRemovable()) { if (info.isRemovable()) {
@@ -37,7 +42,10 @@ class PlaceMenuItem extends PopupMenu.PopupBaseMenuItem {
icon_name: 'media-eject-symbolic', icon_name: 'media-eject-symbolic',
style_class: 'popup-menu-icon', style_class: 'popup-menu-icon',
}); });
this._ejectButton = new St.Button({ child: this._ejectIcon }); this._ejectButton = new St.Button({
child: this._ejectIcon,
style_class: 'button',
});
this._ejectButton.connect('clicked', info.eject.bind(info)); this._ejectButton.connect('clicked', info.eject.bind(info));
this.add_child(this._ejectButton); this.add_child(this._ejectButton);
} }
@@ -79,15 +87,12 @@ class PlacesMenu extends PanelMenu.Button {
_init() { _init() {
super._init(0.0, _('Places')); super._init(0.0, _('Places'));
let hbox = new St.BoxLayout({ style_class: 'panel-status-menu-box' });
let label = new St.Label({ let label = new St.Label({
text: _('Places'), text: _('Places'),
y_expand: true, y_expand: true,
y_align: Clutter.ActorAlign.CENTER, y_align: Clutter.ActorAlign.CENTER,
}); });
hbox.add_child(label); this.add_actor(label);
hbox.add_child(PopupMenu.arrowIcon(St.Side.BOTTOM));
this.add_actor(hbox);
this.placesManager = new PlaceDisplay.PlacesManager(); this.placesManager = new PlaceDisplay.PlacesManager();
@@ -127,12 +132,14 @@ class PlacesMenu extends PanelMenu.Button {
} }
}); });
/** */
function init() { function init() {
ExtensionUtils.initTranslations(); ExtensionUtils.initTranslations();
} }
let _indicator; let _indicator;
/** */
function enable() { function enable() {
_indicator = new PlacesMenu(); _indicator = new PlacesMenu();
@@ -142,6 +149,7 @@ function enable() {
Main.panel.addToStatusArea('places-menu', _indicator, pos, 'left'); Main.panel.addToStatusArea('places-menu', _indicator, pos, 'left');
} }
/** */
function disable() { function disable() {
_indicator.destroy(); _indicator.destroy();
} }
+8 -32
View File
@@ -3,13 +3,16 @@
const { Gio, GLib, Shell } = imports.gi; const { Gio, GLib, Shell } = imports.gi;
const Signals = imports.signals; const Signals = imports.signals;
const ExtensionUtils = imports.misc.extensionUtils;
const Main = imports.ui.main; const Main = imports.ui.main;
const ShellMountOperation = imports.ui.shellMountOperation; const ShellMountOperation = imports.ui.shellMountOperation;
const Gettext = imports.gettext.domain('gnome-shell-extensions'); const _ = ExtensionUtils.gettext;
const _ = Gettext.gettext;
const N_ = x => x; const N_ = x => x;
Gio._promisify(Gio.AppInfo, 'launch_default_for_uri_async');
Gio._promisify(Gio.File.prototype, 'mount_enclosing_volume');
const BACKGROUND_SCHEMA = 'org.gnome.desktop.background'; const BACKGROUND_SCHEMA = 'org.gnome.desktop.background';
const Hostname1Iface = '<node> \ const Hostname1Iface = '<node> \
@@ -40,7 +43,7 @@ class PlaceInfo {
async _ensureMountAndLaunch(context, tryMount) { async _ensureMountAndLaunch(context, tryMount) {
try { try {
await this._launchDefaultForUri(this.file.get_uri(), context, null); await Gio.AppInfo.launch_default_for_uri_async(this.file.get_uri(), context, null);
} catch (err) { } catch (err) {
if (!err.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.NOT_MOUNTED)) { if (!err.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.NOT_MOUNTED)) {
Main.notifyError(_('Failed to launch “%s”').format(this.name), err.message); Main.notifyError(_('Failed to launch “%s”').format(this.name), err.message);
@@ -52,7 +55,7 @@ class PlaceInfo {
}; };
let op = new ShellMountOperation.ShellMountOperation(source); let op = new ShellMountOperation.ShellMountOperation(source);
try { try {
await this._mountEnclosingVolume(0, op.mountOp, null); await this.file.mount_enclosing_volume(0, op.mountOp, null);
if (tryMount) if (tryMount)
this._ensureMountAndLaunch(context, false); this._ensureMountAndLaunch(context, false);
@@ -114,32 +117,6 @@ class PlaceInfo {
throw e; throw e;
} }
} }
_launchDefaultForUri(uri, context, cancel) {
return new Promise((resolve, reject) => {
Gio.AppInfo.launch_default_for_uri_async(uri, context, cancel, (o, res) => {
try {
Gio.AppInfo.launch_default_for_uri_finish(res);
resolve();
} catch (e) {
reject(e);
}
});
});
}
_mountEnclosingVolume(flags, mountOp, cancel) {
return new Promise((resolve, reject) => {
this.file.mount_enclosing_volume(flags, mountOp, cancel, (o, res) => {
try {
this.file.mount_enclosing_volume_finish(res);
resolve();
} catch (e) {
reject(e);
}
});
});
}
} }
Signals.addSignalMethods(PlaceInfo.prototype); Signals.addSignalMethods(PlaceInfo.prototype);
@@ -194,7 +171,7 @@ class PlaceDeviceInfo extends PlaceInfo {
} }
isRemovable() { isRemovable() {
return this._mount.can_eject(); return this._mount.can_eject() || this._mount.can_unmount();
} }
eject() { eject() {
@@ -486,7 +463,6 @@ var PlacesManager = class {
} }
_reloadBookmarks() { _reloadBookmarks() {
this._bookmarks = []; this._bookmarks = [];
let content = Shell.get_file_contents_utf8_sync(this._bookmarksFile.get_path()); let content = Shell.get_file_contents_utf8_sync(this._bookmarksFile.get_path());
+8 -1
View File
@@ -1 +1,8 @@
/* none used*/ .place-menu-item .button {
border-radius: 99px;
padding: 3px;
min-height: auto;
}
.place-menu-item .button:ltr { margin-left: 6px; }
.place-menu-item .button:rtl { margin-right: 6px; }
@@ -28,11 +28,15 @@ const MESSAGE_FADE_TIME = 2000;
let text; let text;
/** */
function hideMessage() { function hideMessage() {
text.destroy(); text.destroy();
text = null; text = null;
} }
/**
* @param {string} message - the message to flash
*/
function flashMessage(message) { function flashMessage(message) {
if (!text) { if (!text) {
text = new St.Label({ style_class: 'screenshot-sizer-message' }); text = new St.Label({ style_class: 'screenshot-sizer-message' });
@@ -67,6 +71,11 @@ let SIZES = [
[720, 360], // Phone landscape fullscreen [720, 360], // Phone landscape fullscreen
]; ];
/**
* @param {Meta.Display} display - the display
* @param {Meta.Window=} window - for per-window bindings, the window
* @param {Meta.KeyBinding} binding - the key binding
*/
function cycleScreenshotSizes(display, window, binding) { function cycleScreenshotSizes(display, window, binding) {
// Probably this isn't useful with 5 sizes, but you can decrease instead // Probably this isn't useful with 5 sizes, but you can decrease instead
// of increase by holding down shift. // of increase by holding down shift.
@@ -133,6 +142,7 @@ function cycleScreenshotSizes(display, window, binding) {
flashMessage(message); flashMessage(message);
} }
/** */
function enable() { function enable() {
Main.wm.addKeybinding( Main.wm.addKeybinding(
'cycle-screenshot-sizes', 'cycle-screenshot-sizes',
@@ -148,6 +158,7 @@ function enable() {
cycleScreenshotSizes); cycleScreenshotSizes);
} }
/** */
function disable() { function disable() {
Main.wm.removeKeybinding('cycle-screenshot-sizes'); Main.wm.removeKeybinding('cycle-screenshot-sizes');
Main.wm.removeKeybinding('cycle-screenshot-sizes-backward'); Main.wm.removeKeybinding('cycle-screenshot-sizes-backward');
+16 -17
View File
@@ -2,28 +2,26 @@
// Load shell theme from ~/.local/share/themes/name/gnome-shell // Load shell theme from ~/.local/share/themes/name/gnome-shell
/* exported init */ /* exported init */
const { Gio, GLib } = imports.gi; const { Gio } = imports.gi;
const ExtensionUtils = imports.misc.extensionUtils; const ExtensionUtils = imports.misc.extensionUtils;
const Main = imports.ui.main; const Main = imports.ui.main;
const Me = ExtensionUtils.getCurrentExtension();
const Util = Me.imports.util;
const SETTINGS_KEY = 'name'; const SETTINGS_KEY = 'name';
class ThemeManager { class ThemeManager {
constructor() {
this._settings = ExtensionUtils.getSettings();
}
enable() { enable() {
this._changedId = this._settings.connect(`changed::${SETTINGS_KEY}`, this._changeTheme.bind(this)); this._settings = ExtensionUtils.getSettings();
this._settings.connect(`changed::${SETTINGS_KEY}`, this._changeTheme.bind(this));
this._changeTheme(); this._changeTheme();
} }
disable() { disable() {
if (this._changedId) { this._settings?.run_dispose();
this._settings.disconnect(this._changedId); this._settings = null;
this._changedId = 0;
}
Main.setThemeStylesheet(null); Main.setThemeStylesheet(null);
Main.loadTheme(); Main.loadTheme();
@@ -34,13 +32,11 @@ class ThemeManager {
let themeName = this._settings.get_string(SETTINGS_KEY); let themeName = this._settings.get_string(SETTINGS_KEY);
if (themeName) { if (themeName) {
let stylesheetPaths = [ const stylesheetPaths = Util.getThemeDirs()
[GLib.get_home_dir(), '.themes'], .map(dir => `${dir}/${themeName}/gnome-shell/gnome-shell.css`);
[GLib.get_user_data_dir(), 'themes'],
...GLib.get_system_data_dirs().map(dir => [dir, 'themes']), stylesheetPaths.push(...Util.getModeThemeDirs()
].map(themeDir => GLib.build_filenamev([ .map(dir => `${dir}/${themeName}.css`));
...themeDir, themeName, 'gnome-shell', 'gnome-shell.css',
]));
stylesheet = stylesheetPaths.find(path => { stylesheet = stylesheetPaths.find(path => {
let file = Gio.file_new_for_path(path); let file = Gio.file_new_for_path(path);
@@ -57,6 +53,9 @@ class ThemeManager {
} }
} }
/**
* @returns {ThemeManager} - the extension state object
*/
function init() { function init() {
return new ThemeManager(); return new ThemeManager();
} }
+1
View File
@@ -4,4 +4,5 @@ extension_data += configure_file(
configuration: metadata_conf configuration: metadata_conf
) )
extension_sources += files('prefs.js', 'util.js')
extension_schemas += files(metadata_conf.get('gschemaname') + '.gschema.xml') extension_schemas += files(metadata_conf.get('gschemaname') + '.gschema.xml')
+131
View File
@@ -0,0 +1,131 @@
// -*- mode: js2; indent-tabs-mode: nil; js2-basic-offset: 4 -*-
/* exported init buildPrefsWidget */
// we use async/await here to not block the mainloop, not to parallelize
/* eslint-disable no-await-in-loop */
const { Adw, Gio, GLib, GObject, Gtk } = imports.gi;
const ExtensionUtils = imports.misc.extensionUtils;
const Me = ExtensionUtils.getCurrentExtension();
const Util = Me.imports.util;
Gio._promisify(Gio.File.prototype, 'enumerate_children_async');
Gio._promisify(Gio.File.prototype, 'query_info_async');
Gio._promisify(Gio.FileEnumerator.prototype, 'next_files_async');
const UserThemePrefsWidget = GObject.registerClass(
class UserThemePrefsWidget extends Adw.PreferencesGroup {
_init() {
super._init({ title: 'Themes' });
this._actionGroup = new Gio.SimpleActionGroup();
this.insert_action_group('theme', this._actionGroup);
this._settings = ExtensionUtils.getSettings();
this._actionGroup.add_action(
this._settings.create_action('name'));
this.connect('destroy', () => this._settings.run_dispose());
this._rows = new Map();
this._addTheme(''); // default
this._collectThemes();
}
async _collectThemes() {
for (const dirName of Util.getThemeDirs()) {
const dir = Gio.File.new_for_path(dirName);
for (const name of await this._enumerateDir(dir)) {
if (this._rows.has(name))
continue;
const file = dir.resolve_relative_path(
`${name}/gnome-shell/gnome-shell.css`);
try {
await file.query_info_async(
Gio.FILE_ATTRIBUTE_STANDARD_NAME,
Gio.FileQueryInfoFlags.NONE,
GLib.PRIORITY_DEFAULT, null);
this._addTheme(name);
} catch (e) {
if (!e.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.NOT_FOUND))
logError(e);
}
}
}
for (const dirName of Util.getModeThemeDirs()) {
const dir = Gio.File.new_for_path(dirName);
for (const filename of await this._enumerateDir(dir)) {
if (!filename.endsWith('.css'))
continue;
const name = filename.slice(0, -4);
if (!this._rows.has(name))
this._addTheme(name);
}
}
}
_addTheme(name) {
const row = new ThemeRow(name);
this._rows.set(name, row);
this.add(row);
}
async _enumerateDir(dir) {
const fileInfos = [];
let fileEnum;
try {
fileEnum = await dir.enumerate_children_async(
Gio.FILE_ATTRIBUTE_STANDARD_NAME,
Gio.FileQueryInfoFlags.NONE,
GLib.PRIORITY_DEFAULT, null);
} catch (e) {
if (!e.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.NOT_FOUND))
logError(e);
return [];
}
let infos;
do {
infos = await fileEnum.next_files_async(100,
GLib.PRIORITY_DEFAULT, null);
fileInfos.push(...infos);
} while (infos.length > 0);
return fileInfos.map(info => info.get_name());
}
});
const ThemeRow = GObject.registerClass(
class ThemeRow extends Adw.ActionRow {
_init(name) {
const check = new Gtk.CheckButton({
action_name: 'theme.name',
action_target: new GLib.Variant('s', name),
});
super._init({
title: name || 'Default',
activatable_widget: check,
});
this.add_prefix(check);
}
});
/** */
function init() {
}
/**
* @returns {Gtk.Widget} - the prefs widget
*/
function buildPrefsWidget() {
return new UserThemePrefsWidget();
}
+23
View File
@@ -0,0 +1,23 @@
/* exported getThemeDirs getModeThemeDirs */
const { GLib } = imports.gi;
const fn = (...args) => GLib.build_filenamev(args);
/**
* @returns {string[]} - an ordered list of theme directories
*/
function getThemeDirs() {
return [
fn(GLib.get_home_dir(), '.themes'),
fn(GLib.get_user_data_dir(), 'themes'),
...GLib.get_system_data_dirs().map(dir => fn(dir, 'themes')),
];
}
/**
* @returns {string[]} - an ordered list of mode theme directories
*/
function getModeThemeDirs() {
return GLib.get_system_data_dirs()
.map(dir => fn(dir, 'gnome-shell', 'theme'));
}
+3 -3
View File
@@ -50,11 +50,12 @@
/* workspace switcher */ /* workspace switcher */
.window-list-workspace-indicator .workspace { .window-list-workspace-indicator .workspace {
background-color: #ddd; border: 2px solid #f6f5f4;
background-color: #ccc;
} }
.window-list-workspace-indicator .workspace.active { .window-list-workspace-indicator .workspace.active {
background-color: #ccc; border-color: #888;
} }
.window-list-window-preview { .window-list-window-preview {
@@ -64,5 +65,4 @@
.window-list-window-preview.active { .window-list-window-preview.active {
background-color: #f6f5f4; background-color: #f6f5f4;
border: 2px solid #888;
} }
+103 -128
View File
@@ -11,8 +11,7 @@ const Me = ExtensionUtils.getCurrentExtension();
const { WindowPicker, WindowPickerToggle } = Me.imports.windowPicker; const { WindowPicker, WindowPickerToggle } = Me.imports.windowPicker;
const { WorkspaceIndicator } = Me.imports.workspaceIndicator; const { WorkspaceIndicator } = Me.imports.workspaceIndicator;
const Gettext = imports.gettext.domain('gnome-shell-extensions'); const _ = ExtensionUtils.gettext;
const _ = Gettext.gettext;
const ICON_TEXTURE_SIZE = 24; const ICON_TEXTURE_SIZE = 24;
const DND_ACTIVATE_TIMEOUT = 500; const DND_ACTIVATE_TIMEOUT = 500;
@@ -23,34 +22,10 @@ const GroupingMode = {
ALWAYS: 2, ALWAYS: 2,
}; };
/**
function _minimizeOrActivateWindow(window) { * @param {Shell.App} app - an app
let focusWindow = global.display.focus_window; * @returns {number} - the smallest stable sequence of the app's windows
if (focusWindow === window || */
focusWindow && focusWindow.get_transient_for() === window)
window.minimize();
else
window.activate(global.get_current_time());
}
function _openMenu(menu) {
menu.open();
let event = Clutter.get_current_event();
if (event && event.type() === Clutter.EventType.KEY_RELEASE)
menu.actor.navigate_focus(null, Gtk.DirectionType.TAB_FORWARD, false);
}
function _onMenuStateChanged(menu, isOpen) {
if (isOpen)
return;
let [x, y] = global.get_pointer();
let actor = global.stage.get_actor_at_pos(Clutter.PickMode.REACTIVE, x, y);
if (Me.stateObj.someWindowListContains(actor))
actor.sync_hover();
}
function _getAppStableSequence(app) { function _getAppStableSequence(app) {
let windows = app.get_windows().filter(w => !w.skip_taskbar); let windows = app.get_windows().filter(w => !w.skip_taskbar);
return windows.reduce((prev, cur) => { return windows.reduce((prev, cur) => {
@@ -58,7 +33,6 @@ function _getAppStableSequence(app) {
}, Infinity); }, Infinity);
} }
class WindowContextMenu extends PopupMenu.PopupMenu { class WindowContextMenu extends PopupMenu.PopupMenu {
constructor(source, metaWindow) { constructor(source, metaWindow) {
super(source, 0.5, St.Side.BOTTOM); super(source, 0.5, St.Side.BOTTOM);
@@ -220,13 +194,12 @@ const BaseButton = GObject.registerClass({
super._init({ super._init({
style_class: 'window-button', style_class: 'window-button',
x_fill: true,
y_fill: true,
can_focus: true, can_focus: true,
x_expand: true,
button_mask: St.ButtonMask.ONE | St.ButtonMask.THREE, button_mask: St.ButtonMask.ONE | St.ButtonMask.THREE,
}); });
this.connect('allocation-changed', this.connect('notify::allocation',
this._updateIconGeometry.bind(this)); this._updateIconGeometry.bind(this));
this.connect('clicked', this._onClicked.bind(this)); this.connect('clicked', this._onClicked.bind(this));
this.connect('destroy', this._onDestroy.bind(this)); this.connect('destroy', this._onDestroy.bind(this));
@@ -283,10 +256,37 @@ const BaseButton = GObject.registerClass({
return true; return true;
} }
_openMenu(menu) {
menu.open();
let event = Clutter.get_current_event();
if (event && event.type() === Clutter.EventType.KEY_RELEASE)
menu.actor.navigate_focus(null, Gtk.DirectionType.TAB_FORWARD, false);
}
_minimizeOrActivateWindow(window) {
let focusWindow = global.display.focus_window;
if (focusWindow === window ||
focusWindow && focusWindow.get_transient_for() === window)
window.minimize();
else
window.activate(global.get_current_time());
}
_onMenuStateChanged(menu, isOpen) {
if (isOpen)
return;
let [x, y] = global.get_pointer();
let actor = global.stage.get_actor_at_pos(Clutter.PickMode.REACTIVE, x, y);
if (Me.stateObj.someWindowListContains(actor))
actor.sync_hover();
}
_onPopupMenu(_actor) { _onPopupMenu(_actor) {
if (!this._canOpenPopupMenu() || this._contextMenu.isOpen) if (!this._canOpenPopupMenu() || this._contextMenu.isOpen)
return; return;
_openMenu(this._contextMenu); this._openMenu(this._contextMenu);
} }
_isFocused() { _isFocused() {
@@ -353,6 +353,9 @@ class WindowButton extends BaseButton {
super._init(perMonitor, monitorIndex); super._init(perMonitor, monitorIndex);
this.metaWindow = metaWindow; this.metaWindow = metaWindow;
this._skipTaskbarId = metaWindow.connect('notify::skip-taskbar', () => {
this._updateVisibility();
});
this._updateVisibility(); this._updateVisibility();
this._windowTitle = new WindowTitle(this.metaWindow); this._windowTitle = new WindowTitle(this.metaWindow);
@@ -360,7 +363,8 @@ class WindowButton extends BaseButton {
this.label_actor = this._windowTitle.label_actor; this.label_actor = this._windowTitle.label_actor;
this._contextMenu = new WindowContextMenu(this, this.metaWindow); this._contextMenu = new WindowContextMenu(this, this.metaWindow);
this._contextMenu.connect('open-state-changed', _onMenuStateChanged); this._contextMenu.connect('open-state-changed',
this._onMenuStateChanged.bind(this));
this._contextMenu.actor.hide(); this._contextMenu.actor.hide();
this._contextMenuManager.addMenu(this._contextMenu); this._contextMenuManager.addMenu(this._contextMenu);
Main.uiGroup.add_actor(this._contextMenu.actor); Main.uiGroup.add_actor(this._contextMenu.actor);
@@ -380,9 +384,9 @@ class WindowButton extends BaseButton {
} }
if (button === 1) if (button === 1)
_minimizeOrActivateWindow(this.metaWindow); this._minimizeOrActivateWindow(this.metaWindow);
else else
_openMenu(this._contextMenu); this._openMenu(this._contextMenu);
} }
_isFocused() { _isFocused() {
@@ -413,6 +417,7 @@ class WindowButton extends BaseButton {
_onDestroy() { _onDestroy() {
super._onDestroy(); super._onDestroy();
this.metaWindow.disconnect(this._skipTaskbarId);
this.metaWindow.disconnect(this._workspaceChangedId); this.metaWindow.disconnect(this._workspaceChangedId);
global.display.disconnect(this._notifyFocusId); global.display.disconnect(this._notifyFocusId);
this._contextMenu.destroy(); this._contextMenu.destroy();
@@ -491,8 +496,6 @@ class AppButton extends BaseButton {
this._singleWindowTitle = new St.Bin({ this._singleWindowTitle = new St.Bin({
x_expand: true, x_expand: true,
y_fill: true,
x_align: St.Align.START,
}); });
stack.add_actor(this._singleWindowTitle); stack.add_actor(this._singleWindowTitle);
@@ -517,14 +520,16 @@ class AppButton extends BaseButton {
this._menuManager = new PopupMenu.PopupMenuManager(this); this._menuManager = new PopupMenu.PopupMenuManager(this);
this._menu = new PopupMenu.PopupMenu(this, 0.5, St.Side.BOTTOM); this._menu = new PopupMenu.PopupMenu(this, 0.5, St.Side.BOTTOM);
this._menu.connect('open-state-changed', _onMenuStateChanged); this._menu.connect('open-state-changed',
this._onMenuStateChanged.bind(this));
this._menu.actor.hide(); this._menu.actor.hide();
this._menu.connect('activate', this._onMenuActivate.bind(this)); this._menu.connect('activate', this._onMenuActivate.bind(this));
this._menuManager.addMenu(this._menu); this._menuManager.addMenu(this._menu);
Main.uiGroup.add_actor(this._menu.actor); Main.uiGroup.add_actor(this._menu.actor);
this._appContextMenu = new AppContextMenu(this); this._appContextMenu = new AppContextMenu(this);
this._appContextMenu.connect('open-state-changed', _onMenuStateChanged); this._appContextMenu.connect('open-state-changed',
this._onMenuStateChanged.bind(this));
this._appContextMenu.actor.hide(); this._appContextMenu.actor.hide();
Main.uiGroup.add_actor(this._appContextMenu.actor); Main.uiGroup.add_actor(this._appContextMenu.actor);
@@ -591,7 +596,7 @@ class AppButton extends BaseButton {
this._singleWindowTitle.child = this._windowTitle; this._singleWindowTitle.child = this._windowTitle;
this._windowContextMenu = new WindowContextMenu(this, this.metaWindow); this._windowContextMenu = new WindowContextMenu(this, this.metaWindow);
this._windowContextMenu.connect( this._windowContextMenu.connect(
'open-state-changed', _onMenuStateChanged); 'open-state-changed', this._onMenuStateChanged.bind(this));
Main.uiGroup.add_actor(this._windowContextMenu.actor); Main.uiGroup.add_actor(this._windowContextMenu.actor);
this._windowContextMenu.actor.hide(); this._windowContextMenu.actor.hide();
this._contextMenuManager.addMenu(this._windowContextMenu); this._contextMenuManager.addMenu(this._windowContextMenu);
@@ -611,7 +616,6 @@ class AppButton extends BaseButton {
this._contextMenuManager.addMenu(this._appContextMenu); this._contextMenuManager.addMenu(this._appContextMenu);
this.label_actor = this._multiWindowTitle.label_actor; this.label_actor = this._multiWindowTitle.label_actor;
} }
} }
_onClicked(actor, button) { _onClicked(actor, button) {
@@ -631,7 +635,7 @@ class AppButton extends BaseButton {
if (windows.length === 1) { if (windows.length === 1) {
if (contextMenuWasOpen) if (contextMenuWasOpen)
return; return;
_minimizeOrActivateWindow(windows[0]); this._minimizeOrActivateWindow(windows[0]);
} else { } else {
this._menu.removeAll(); this._menu.removeAll();
@@ -642,12 +646,12 @@ class AppButton extends BaseButton {
item._window = windows[i]; item._window = windows[i];
this._menu.addMenuItem(item); this._menu.addMenuItem(item);
} }
_openMenu(this._menu); this._openMenu(this._menu);
} }
} else { } else {
if (contextMenuWasOpen) if (contextMenuWasOpen)
return; return;
_openMenu(this._contextMenu); this._openMenu(this._contextMenu);
} }
} }
@@ -744,28 +748,26 @@ class WindowList extends St.Widget {
this._appStateChangedId = this._appSystem.connect( this._appStateChangedId = this._appSystem.connect(
'app-state-changed', this._onAppStateChanged.bind(this)); 'app-state-changed', this._onAppStateChanged.bind(this));
this._keyboardVisiblechangedId = Main.layoutManager.connect( // Hack: OSK gesture is tied to visibility, piggy-back on that
'keyboard-visible-changed', this._keyboardVisiblechangedId =
(o, state) => { Main.keyboard._bottomDragAction.connect('notify::enabled',
Main.layoutManager.keyboardBox.visible = state; action => {
let { keyboardBox } = Main.layoutManager; const visible = !action.enabled;
keyboardBox.visible = state; if (visible) {
if (state) { Main.uiGroup.set_child_above_sibling(
Main.uiGroup.set_child_above_sibling( this, Main.layoutManager.keyboardBox);
this, keyboardBox); } else {
} else { Main.uiGroup.set_child_above_sibling(
Main.uiGroup.set_child_above_sibling( this, Main.layoutManager.panelBox);
this, Main.layoutManager.panelBox); }
} this._updateKeyboardAnchor();
this._updateKeyboardAnchor(); });
});
let workspaceManager = global.workspace_manager; let workspaceManager = global.workspace_manager;
this._workspaceSignals = new Map();
this._nWorkspacesChangedId = workspaceManager.connect( this._nWorkspacesChangedId = workspaceManager.connect(
'notify::n-workspaces', this._onWorkspacesChanged.bind(this)); 'notify::n-workspaces', this._updateWorkspaceIndicatorVisibility.bind(this));
this._onWorkspacesChanged(); this._updateWorkspaceIndicatorVisibility();
this._switchWorkspaceId = global.window_manager.connect( this._switchWorkspaceId = global.window_manager.connect(
'switch-workspace', this._checkGrouping.bind(this)); 'switch-workspace', this._checkGrouping.bind(this));
@@ -775,20 +777,27 @@ class WindowList extends St.Widget {
this._updateKeyboardAnchor(); this._updateKeyboardAnchor();
}); });
this._overviewHidingId = Main.overview.connect('hiding', () => { this._overviewHidingId = Main.overview.connect('hidden', () => {
this.visible = !Main.layoutManager.primaryMonitor.inFullscreen; this.visible = !Main.layoutManager.primaryMonitor.inFullscreen;
this._updateKeyboardAnchor(); this._updateKeyboardAnchor();
}); });
this._fullscreenChangedId = this._fullscreenChangedId =
global.display.connect('in-fullscreen-changed', () => { global.display.connect('in-fullscreen-changed', () => {
// Work-around for initial change from unknown to !fullscreen
if (Main.overview.visible)
this.hide();
this._updateKeyboardAnchor(); this._updateKeyboardAnchor();
}); });
this._windowSignals = new Map();
this._windowCreatedId = global.display.connect(
'window-created', (dsp, win) => this._addWindow(win));
this._dragBeginId = Main.xdndHandler.connect('drag-begin', this._dragBeginId = Main.xdndHandler.connect('drag-begin',
this._onDragBegin.bind(this)); this._monitorDrag.bind(this));
this._dragEndId = Main.xdndHandler.connect('drag-end', this._dragEndId = Main.xdndHandler.connect('drag-end',
this._onDragEnd.bind(this)); this._stopMonitoringDrag.bind(this));
this._dragMonitor = { this._dragMonitor = {
dragMotion: this._onDragMotion.bind(this), dragMotion: this._onDragMotion.bind(this),
}; };
@@ -907,7 +916,7 @@ class WindowList extends St.Widget {
w2.metaWindow.get_stable_sequence(); w2.metaWindow.get_stable_sequence();
}); });
for (let i = 0; i < windows.length; i++) for (let i = 0; i < windows.length; i++)
this._onWindowAdded(null, windows[i].metaWindow); this._addWindow(windows[i].metaWindow);
} else { } else {
let apps = this._appSystem.get_running().sort((a1, a2) => { let apps = this._appSystem.get_running().sort((a1, a2) => {
return _getAppStableSequence(a1) - return _getAppStableSequence(a1) -
@@ -919,11 +928,8 @@ class WindowList extends St.Widget {
} }
_updateKeyboardAnchor() { _updateKeyboardAnchor() {
if (!Main.keyboard.keyboardActor) const translationY = Main.overview.visible ? 0 : this.height;
return; Main.layoutManager.keyboardBox.translation_y = -translationY;
let translationY = Main.overview.visible ? 0 : this.height;
Main.keyboard.keyboardActor.translation_y = -translationY;
} }
_onAppStateChanged(appSys, app) { _onAppStateChanged(appSys, app) {
@@ -940,10 +946,7 @@ class WindowList extends St.Widget {
let button = new AppButton(app, this._perMonitor, this._monitor.index); let button = new AppButton(app, this._perMonitor, this._monitor.index);
this._settings.bind('display-all-workspaces', this._settings.bind('display-all-workspaces',
button, 'ignore-workspace', Gio.SettingsBindFlags.GET); button, 'ignore-workspace', Gio.SettingsBindFlags.GET);
this._windowList.layout_manager.pack(button, this._windowList.add_child(button);
true, true, true,
Clutter.BoxAlignment.START,
Clutter.BoxAlignment.START);
} }
_removeApp(app) { _removeApp(app) {
@@ -953,10 +956,7 @@ class WindowList extends St.Widget {
child.destroy(); child.destroy();
} }
_onWindowAdded(ws, win) { _addWindow(win) {
if (win.skip_taskbar)
return;
if (!this._grouped) if (!this._grouped)
this._checkGrouping(); this._checkGrouping();
@@ -967,24 +967,26 @@ class WindowList extends St.Widget {
if (children.find(c => c.metaWindow === win)) if (children.find(c => c.metaWindow === win))
return; return;
this._windowSignals.set(
win, win.connect('unmanaged', () => this._removeWindow(win)));
let button = new WindowButton(win, this._perMonitor, this._monitor.index); let button = new WindowButton(win, this._perMonitor, this._monitor.index);
this._settings.bind('display-all-workspaces', this._settings.bind('display-all-workspaces',
button, 'ignore-workspace', Gio.SettingsBindFlags.GET); button, 'ignore-workspace', Gio.SettingsBindFlags.GET);
this._windowList.layout_manager.pack(button, this._windowList.add_child(button);
true, true, true,
Clutter.BoxAlignment.START,
Clutter.BoxAlignment.START);
} }
_onWindowRemoved(ws, win) { _removeWindow(win) {
if (this._grouped) if (this._grouped)
this._checkGrouping(); this._checkGrouping();
if (this._grouped) if (this._grouped)
return; return;
if (win.get_compositor_private()) const id = this._windowSignals.get(win);
return; // not actually removed, just moved to another workspace if (id)
win.disconnect(id);
this._windowSignals.delete(id);
let children = this._windowList.get_children(); let children = this._windowList.get_children();
let child = children.find(c => c.metaWindow === win); let child = children.find(c => c.metaWindow === win);
@@ -992,44 +994,11 @@ class WindowList extends St.Widget {
child.destroy(); child.destroy();
} }
_onWorkspacesChanged() { _monitorDrag() {
let workspaceManager = global.workspace_manager;
let numWorkspaces = workspaceManager.n_workspaces;
for (let i = 0; i < numWorkspaces; i++) {
let workspace = workspaceManager.get_workspace_by_index(i);
if (this._workspaceSignals.has(workspace))
continue;
let signals = { windowAddedId: 0, windowRemovedId: 0 };
signals._windowAddedId = workspace.connect_after(
'window-added', this._onWindowAdded.bind(this));
signals._windowRemovedId = workspace.connect(
'window-removed', this._onWindowRemoved.bind(this));
this._workspaceSignals.set(workspace, signals);
}
this._updateWorkspaceIndicatorVisibility();
}
_disconnectWorkspaceSignals() {
let workspaceManager = global.workspace_manager;
let numWorkspaces = workspaceManager.n_workspaces;
for (let i = 0; i < numWorkspaces; i++) {
let workspace = workspaceManager.get_workspace_by_index(i);
let signals = this._workspaceSignals.get(workspace);
this._workspaceSignals.delete(workspace);
workspace.disconnect(signals._windowAddedId);
workspace.disconnect(signals._windowRemovedId);
}
}
_onDragBegin() {
DND.addDragMonitor(this._dragMonitor); DND.addDragMonitor(this._dragMonitor);
} }
_onDragEnd() { _stopMonitoringDrag() {
DND.removeDragMonitor(this._dragMonitor); DND.removeDragMonitor(this._dragMonitor);
this._removeActivateTimeout(); this._removeActivateTimeout();
} }
@@ -1085,24 +1054,25 @@ class WindowList extends St.Widget {
this._appSystem.disconnect(this._appStateChangedId); this._appSystem.disconnect(this._appStateChangedId);
this._appStateChangedId = 0; this._appStateChangedId = 0;
Main.layoutManager.disconnect(this._keyboardVisiblechangedId); Main.keyboard._bottomDragAction.disconnect(this._keyboardVisiblechangedId);
this._keyboardVisiblechangedId = 0; this._keyboardVisiblechangedId = 0;
Main.layoutManager.hideKeyboard();
this._disconnectWorkspaceSignals();
global.workspace_manager.disconnect(this._nWorkspacesChangedId); global.workspace_manager.disconnect(this._nWorkspacesChangedId);
this._nWorkspacesChangedId = 0; this._nWorkspacesChangedId = 0;
global.window_manager.disconnect(this._switchWorkspaceId); global.window_manager.disconnect(this._switchWorkspaceId);
this._switchWorkspaceId = 0; this._switchWorkspaceId = 0;
this._windowSignals.forEach((id, win) => win.disconnect(id));
this._windowSignals.clear();
Main.overview.disconnect(this._overviewShowingId); Main.overview.disconnect(this._overviewShowingId);
Main.overview.disconnect(this._overviewHidingId); Main.overview.disconnect(this._overviewHidingId);
global.display.disconnect(this._fullscreenChangedId); global.display.disconnect(this._fullscreenChangedId);
global.display.disconnect(this._windowCreatedId);
this._stopMonitoringDrag();
Main.xdndHandler.disconnect(this._dragBeginId); Main.xdndHandler.disconnect(this._dragBeginId);
Main.xdndHandler.disconnect(this._dragEndId); Main.xdndHandler.disconnect(this._dragEndId);
@@ -1116,6 +1086,8 @@ class WindowList extends St.Widget {
class Extension { class Extension {
constructor() { constructor() {
ExtensionUtils.initTranslations();
this._windowLists = null; this._windowLists = null;
this._hideOverviewOrig = Main.overview.hide; this._hideOverviewOrig = Main.overview.hide;
} }
@@ -1179,6 +1151,9 @@ class Extension {
} }
} }
/**
* @returns {Extension} - the extension's state object
*/
function init() { function init() {
return new Extension(); return new Extension();
} }
+60 -66
View File
@@ -1,95 +1,89 @@
// -*- mode: js2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- // -*- mode: js2; indent-tabs-mode: nil; js2-basic-offset: 4 -*-
/* exported init buildPrefsWidget */ /* exported init buildPrefsWidget */
const { Gio, GObject, Gtk } = imports.gi; const { Adw, Gio, GLib, GObject, Gtk } = imports.gi;
const Gettext = imports.gettext.domain('gnome-shell-extensions');
const _ = Gettext.gettext;
const ExtensionUtils = imports.misc.extensionUtils; const ExtensionUtils = imports.misc.extensionUtils;
const _ = ExtensionUtils.gettext;
/** */
function init() { function init() {
ExtensionUtils.initTranslations(); ExtensionUtils.initTranslations();
} }
const WindowListPrefsWidget = GObject.registerClass( const WindowListPrefsWidget = GObject.registerClass(
class WindowListPrefsWidget extends Gtk.Grid { class WindowListPrefsWidget extends Adw.PreferencesPage {
_init(params) { _init() {
super._init(params); super._init();
this.margin = 24; this._actionGroup = new Gio.SimpleActionGroup();
this.row_spacing = 6; this.insert_action_group('window-list', this._actionGroup);
this.orientation = Gtk.Orientation.VERTICAL;
let groupingLabel = '<b>%s</b>'.format(_('Window Grouping'));
this.add(new Gtk.Label({
label: groupingLabel, use_markup: true,
halign: Gtk.Align.START,
}));
let align = new Gtk.Alignment({ left_padding: 12 });
this.add(align);
let grid = new Gtk.Grid({
orientation: Gtk.Orientation.VERTICAL,
row_spacing: 6,
column_spacing: 6,
});
align.add(grid);
this._settings = ExtensionUtils.getSettings(); this._settings = ExtensionUtils.getSettings();
let currentMode = this._settings.get_string('grouping-mode'); this._actionGroup.add_action(
let range = this._settings.get_range('grouping-mode'); this._settings.create_action('grouping-mode'));
let modes = range.deep_unpack()[1].deep_unpack(); this._actionGroup.add_action(
this._settings.create_action('show-on-all-monitors'));
this._actionGroup.add_action(
this._settings.create_action('display-all-workspaces'));
let modeLabels = { const groupingGroup = new Adw.PreferencesGroup({
'never': _('Never group windows'), title: _('Window Grouping'),
'auto': _('Group windows when space is limited'), });
'always': _('Always group windows'), this.add(groupingGroup);
};
let radio = null; const modes = [
for (let i = 0; i < modes.length; i++) { { mode: 'never', title: _('Never group windows') },
let mode = modes[i]; { mode: 'auto', title: _('Group windows when space is limited') },
let label = modeLabels[mode]; { mode: 'always', title: _('Always group windows') },
if (!label) { ];
log('Unhandled option "%s" for grouping-mode'.format(mode));
continue;
}
radio = new Gtk.RadioButton({ for (const { mode, title } of modes) {
active: currentMode === mode, const check = new Gtk.CheckButton({
label, action_name: 'window-list.grouping-mode',
group: radio, action_target: new GLib.Variant('s', mode),
}); });
grid.add(radio); const row = new Adw.ActionRow({
activatable_widget: check,
radio.connect('toggled', button => { title,
if (button.active)
this._settings.set_string('grouping-mode', mode);
}); });
row.add_prefix(check);
groupingGroup.add(row);
} }
let check = new Gtk.CheckButton({ const miscGroup = new Adw.PreferencesGroup();
label: _('Show on all monitors'), this.add(miscGroup);
margin_top: 6,
});
this._settings.bind('show-on-all-monitors', check, 'active', Gio.SettingsBindFlags.DEFAULT);
this.add(check);
check = new Gtk.CheckButton({ let toggle = new Gtk.Switch({
label: _('Show windows from all workspaces'), action_name: 'window-list.show-on-all-monitors',
margin_top: 6, valign: Gtk.Align.CENTER,
}); });
this._settings.bind('display-all-workspaces', check, 'active', Gio.SettingsBindFlags.DEFAULT); let row = new Adw.ActionRow({
this.add(check); title: _('Show on all monitors'),
activatable_widget: toggle,
});
row.add_suffix(toggle);
miscGroup.add(row);
toggle = new Gtk.Switch({
action_name: 'window-list.display-all-workspaces',
valign: Gtk.Align.CENTER,
});
this._settings.bind('display-all-workspaces',
toggle, 'active', Gio.SettingsBindFlags.DEFAULT);
row = new Adw.ActionRow({
title: _('Show windows from all workspaces'),
activatable_widget: toggle,
});
row.add_suffix(toggle);
miscGroup.add(row);
} }
}); });
/**
* @returns {Gtk.Widget} - the prefs widget
*/
function buildPrefsWidget() { function buildPrefsWidget() {
let widget = new WindowListPrefsWidget(); return new WindowListPrefsWidget();
widget.show_all();
return widget;
} }
+8 -29
View File
@@ -1,10 +1,3 @@
.bottom-panel {
/* .window-button-icon height +
.window-button vertical padding +
.window-button > StWidget vertical padding) */
height: 2.25em;
}
.window-list { .window-list {
spacing: 2px; spacing: 2px;
font-size: 10pt; font-size: 10pt;
@@ -30,7 +23,7 @@
.window-picker-toggle > StWidget { .window-picker-toggle > StWidget {
color: #bbb; color: #bbb;
background-color: black; background-color: black;
border-radius: 4px; border-radius: 2px;
padding: 3px 6px 1px; padding: 3px 6px 1px;
box-shadow: inset 1px 1px 4px rgba(255,255,255,0.5); box-shadow: inset 1px 1px 4px rgba(255,255,255,0.5);
text-shadow: 1px 1px 4px rgba(0,0,0,0.8); text-shadow: 1px 1px 4px rgba(0,0,0,0.8);
@@ -89,7 +82,7 @@
background-color: rgba(200, 200, 200, .3); background-color: rgba(200, 200, 200, .3);
border: 1px solid #cccccc; border: 1px solid #cccccc;
padding: 0 3px; padding: 0 3px;
margin: 3px 0; margin: 3px;
} }
.window-list-workspace-indicator .workspaces-box { .window-list-workspace-indicator .workspaces-box {
@@ -98,37 +91,23 @@
} }
.window-list-workspace-indicator .workspace { .window-list-workspace-indicator .workspace {
border: 1px solid #cccccc; border: 2px solid #000;
width: 52px; width: 52px;
}
.window-list-workspace-indicator .workspace:first-child:last-child:ltr,
.window-list-workspace-indicator .workspace:first-child:last-child:rtl {
border-radius: 4px; border-radius: 4px;
} background-color: #595959;
.window-list-workspace-indicator .workspace:first-child:ltr,
.window-list-workspace-indicator .workspace:last-child:rtl {
border-radius: 4px 0 0 4px;
}
.window-list-workspace-indicator .workspace:first-child:rtl,
.window-list-workspace-indicator .workspace:last-child:ltr {
border-radius: 0 4px 4px 0;
} }
.window-list-workspace-indicator .workspace.active { .window-list-workspace-indicator .workspace.active {
background-color: rgba(200, 200, 200, .3); border-color: #fff;
} }
.window-list-window-preview { .window-list-window-preview {
background-color: #252525; background-color: #bebebe;
border: 1px solid #ccc; border: 1px solid #828282;
} }
.window-list-window-preview.active { .window-list-window-preview.active {
background-color: #353535; background-color: #d4d4d4;
border: 2px solid #ccc;
} }
.notification { .notification {
+132 -89
View File
@@ -1,16 +1,24 @@
/* exported WindowPicker, WindowPickerToggle */ /* exported WindowPicker, WindowPickerToggle */
const { Clutter, GLib, GObject, Meta, Shell, St } = imports.gi; const { Clutter, GObject, Shell, St } = imports.gi;
const Layout = imports.ui.layout; const Layout = imports.ui.layout;
const Main = imports.ui.main; const Main = imports.ui.main;
const Overview = imports.ui.overview;
const { WorkspacesDisplay } = imports.ui.workspacesView; const { WorkspacesDisplay } = imports.ui.workspacesView;
const Workspace = imports.ui.workspace;
const { VIGNETTE_BRIGHTNESS } = imports.ui.lightbox;
const {
SIDE_CONTROLS_ANIMATION_TIME,
OverviewAdjustment,
ControlsState,
} = imports.ui.overviewControls;
let MyWorkspacesDisplay = GObject.registerClass( let MyWorkspacesDisplay = GObject.registerClass(
class MyWorkspacesDisplay extends WorkspacesDisplay { class MyWorkspacesDisplay extends WorkspacesDisplay {
_init() { _init(controls, overviewAdjustment) {
let workspaceManager = global.workspace_manager; let workspaceManager = global.workspace_manager;
this._overviewAdjustment = overviewAdjustment;
this._workspaceAdjustment = new St.Adjustment({ this._workspaceAdjustment = new St.Adjustment({
value: workspaceManager.get_active_workspace_index(), value: workspaceManager.get_active_workspace_index(),
lower: 0, lower: 0,
@@ -24,40 +32,32 @@ class MyWorkspacesDisplay extends WorkspacesDisplay {
workspaceManager.connect('notify::n-workspaces', workspaceManager.connect('notify::n-workspaces',
this._updateAdjustment.bind(this)); this._updateAdjustment.bind(this));
super._init(this._workspaceAdjustment); super._init(controls, this._workspaceAdjustment, this._overviewAdjustment);
this._workspaceAdjustment.actor = this;
this.add_constraint( this.add_constraint(
new Layout.MonitorConstraint({ new Layout.MonitorConstraint({
primary: true, primary: true,
work_area: true, work_area: true,
})); }));
this._workareasChangedId = global.display.connect('workareas-changed',
this._onWorkAreasChanged.bind(this));
this._onWorkAreasChanged();
} }
show(...args) { prepareToEnterOverview(...args) {
if (!this._scrollEventId) { if (!this._scrollEventId) {
this._scrollEventId = Main.windowPicker.connect('scroll-event', this._scrollEventId = Main.windowPicker.connect('scroll-event',
this._onScrollEvent.bind(this)); this._onScrollEvent.bind(this));
} }
super.show(...args); super.prepareToEnterOverview(...args);
} }
hide(...args) { vfunc_hide(...args) {
if (this._scrollEventId > 0) if (this._scrollEventId > 0)
Main.windowPicker.disconnect(this._scrollEventId); Main.windowPicker.disconnect(this._scrollEventId);
this._scrollEventId = 0; this._scrollEventId = 0;
super.hide(...args); super.vfunc_hide(...args);
}
_onWorkAreasChanged() {
let { primaryIndex } = Main.layoutManager;
let workarea = Main.layoutManager.getWorkAreaForMonitor(primaryIndex);
this.setWorkspacesFullGeometry(workarea);
} }
_updateAdjustment() { _updateAdjustment() {
@@ -68,25 +68,75 @@ class MyWorkspacesDisplay extends WorkspacesDisplay {
}); });
} }
_updateWorkspacesViews() { _onDestroy() {
super._updateWorkspacesViews(); if (this._nWorkspacesChangedId)
global.workspace_manager.disconnect(this._nWorkspacesChangedId);
this._nWorkspacesChangedId = 0;
this._workspacesViews.forEach(v => { super._onDestroy();
Main.layoutManager.overviewGroup.remove_actor(v); }
Main.windowPicker.add_actor(v); });
});
const MyWorkspace = GObject.registerClass(
class MyWorkspace extends Workspace.Workspace {
_init(...args) {
super._init(...args);
this._adjChangedId =
this._overviewAdjustment.connect('notify::value', () => {
const { value: progress } = this._overviewAdjustment;
const brightness = 1 - (1 - VIGNETTE_BRIGHTNESS) * progress;
for (const bg of this._background?._backgroundGroup ?? []) {
bg.content.set({
vignette: true,
brightness,
});
}
});
} }
_onDestroy() { _onDestroy() {
if (this._workareasChangedId)
global.display.disconnect(this._workareasChangedId);
this._workareasChangedId = 0;
if (this._nWorkspacesChangedId)
global.workspace_manager.disconnect(this._nWorkspacesNotifyId);
this._nWorkspacesNotifyId = 0;
super._onDestroy(); super._onDestroy();
if (this._adjChangedId)
this._overviewAdjustment.disconnect(this._adjChangedId);
this._adjChangedId = 0;
}
});
const MyWorkspaceBackground = GObject.registerClass(
class MyWorkspaceBackground extends Workspace.WorkspaceBackground {
_updateBorderRadius() {
}
vfunc_allocate(box) {
this.set_allocation(box);
const themeNode = this.get_theme_node();
const contentBox = themeNode.get_content_box(box);
this._bin.allocate(contentBox);
const [contentWidth, contentHeight] = contentBox.get_size();
const monitor = Main.layoutManager.monitors[this._monitorIndex];
const xRatio = contentWidth / this._workarea.width;
const yRatio = contentHeight / this._workarea.height;
const right = area => area.x + area.width;
const bottom = area => area.y + area.height;
const offsets = {
left: xRatio * (this._workarea.x - monitor.x),
right: xRatio * (right(monitor) - right(this._workarea)),
top: yRatio * (this._workarea.y - monitor.y),
bottom: yRatio * (bottom(monitor) - bottom(this._workarea)),
};
contentBox.set_origin(-offsets.left, -offsets.top);
contentBox.set_size(
offsets.left + contentWidth + offsets.right,
offsets.top + contentHeight + offsets.bottom);
this._backgroundGroup.allocate(contentBox);
} }
}); });
@@ -102,7 +152,9 @@ var WindowPicker = GObject.registerClass({
this._overlayKeyId = 0; this._overlayKeyId = 0;
this._stageKeyPressId = 0; this._stageKeyPressId = 0;
super._init(); super._init({ reactive: true });
this._adjustment = new OverviewAdjustment(this);
this.connect('destroy', this._onDestroy.bind(this)); this.connect('destroy', this._onDestroy.bind(this));
@@ -113,31 +165,14 @@ var WindowPicker = GObject.registerClass({
this, 'height', this, 'height',
GObject.BindingFlags.SYNC_CREATE); GObject.BindingFlags.SYNC_CREATE);
this._backgroundGroup = new Meta.BackgroundGroup({ reactive: true }); this._workspacesDisplay = new MyWorkspacesDisplay(this, this._adjustment);
this.add_child(this._backgroundGroup);
this._backgroundGroup.connect('scroll-event', (a, ev) => {
this.emit('scroll-event', ev);
});
// Trick WorkspacesDisplay constructor into adding actions here
let addActionOrig = Main.overview.addAction;
Main.overview.addAction = a => this._backgroundGroup.add_action(a);
this._workspacesDisplay = new MyWorkspacesDisplay();
this.add_child(this._workspacesDisplay); this.add_child(this._workspacesDisplay);
Main.overview.addAction = addActionOrig;
this._bgManagers = [];
this._monitorsChangedId = Main.layoutManager.connect('monitors-changed',
this._updateBackgrounds.bind(this));
this._updateBackgrounds();
Main.uiGroup.insert_child_below(this, global.window_group); Main.uiGroup.insert_child_below(this, global.window_group);
if (!Main.sessionMode.hasOverview) { if (!Main.sessionMode.hasOverview) {
this._injectBackgroundShade();
this._overlayKeyId = global.display.connect('overlay-key', () => { this._overlayKeyId = global.display.connect('overlay-key', () => {
if (!this._visible) if (!this._visible)
this.open(); this.open();
@@ -147,6 +182,14 @@ var WindowPicker = GObject.registerClass({
} }
} }
_injectBackgroundShade() {
this._origWorkspace = Workspace.Workspace;
this._origWorkspaceBackground = Workspace.WorkspaceBackground;
Workspace.Workspace = MyWorkspace;
Workspace.WorkspaceBackground = MyWorkspaceBackground;
}
get visible() { get visible() {
return this._visible; return this._visible;
} }
@@ -161,9 +204,15 @@ var WindowPicker = GObject.registerClass({
return; return;
this._fakeOverviewVisible(true); this._fakeOverviewVisible(true);
this._shadeBackgrounds(); this._workspacesDisplay.prepareToEnterOverview();
this._fakeOverviewAnimation(); Main.overview._animationInProgress = true;
this._workspacesDisplay.show(false);
this._adjustment.value = ControlsState.HIDDEN;
this._adjustment.ease(ControlsState.WINDOW_PICKER, {
duration: SIDE_CONTROLS_ANIMATION_TIME,
mode: Clutter.AnimationMode.EASE_OUT_QUAD,
onComplete: () => (Main.overview._animationInProgress = false),
});
this._stageKeyPressId = global.stage.connect('key-press-event', this._stageKeyPressId = global.stage.connect('key-press-event',
(a, event) => { (a, event) => {
@@ -187,11 +236,17 @@ var WindowPicker = GObject.registerClass({
if (!this._syncGrab()) if (!this._syncGrab())
return; return;
this._workspacesDisplay.animateFromOverview(false); this._workspacesDisplay.prepareToLeaveOverview();
this._unshadeBackgrounds();
this._fakeOverviewAnimation(() => { Main.overview._animationInProgress = true;
this._workspacesDisplay.hide(); this._adjustment.ease(ControlsState.HIDDEN, {
this._fakeOverviewVisible(false); duration: SIDE_CONTROLS_ANIMATION_TIME,
mode: Clutter.AnimationMode.EASE_OUT_QUAD,
onComplete: () => {
Main.overview._animationInProgress = false;
this._workspacesDisplay.hide();
this._fakeOverviewVisible(false);
},
}); });
global.stage.disconnect(this._stageKeyPressId); global.stage.disconnect(this._stageKeyPressId);
@@ -200,16 +255,8 @@ var WindowPicker = GObject.registerClass({
this.emit('open-state-changed', this._visible); this.emit('open-state-changed', this._visible);
} }
_fakeOverviewAnimation(onComplete) { getWorkspacesBoxForState() {
Main.overview._animationInProgress = true; return this.allocation;
GLib.timeout_add(
GLib.PRIORITY_DEFAULT,
Overview.ANIMATION_TIME,
() => {
Main.overview._animationInProgress = false;
if (onComplete)
onComplete();
});
} }
_fakeOverviewVisible(visible) { _fakeOverviewVisible(visible) {
@@ -226,22 +273,32 @@ var WindowPicker = GObject.registerClass({
if (this._modal) if (this._modal)
return true; return true;
this._modal = Main.pushModal(this, { const grab = Main.pushModal(global.stage, {
actionMode: Shell.ActionMode.OVERVIEW, actionMode: Shell.ActionMode.OVERVIEW,
}); });
if (grab.get_seat_state() !== Clutter.GrabState.NONE) {
if (!this._modal) { this._grab = grab;
this._modal = true;
} else {
Main.popModal(grab);
this.hide(); this.hide();
return false; return false;
} }
} else if (this._modal) { } else if (this._modal) {
Main.popModal(this); Main.popModal(this._grab);
this._modal = false; this._modal = false;
this._grab = null;
} }
return true; return true;
} }
_onDestroy() { _onDestroy() {
if (this._origWorkspace)
Workspace.Workspace = this._origWorkspace;
if (this._origWorkspaceBackground)
Workspace.WorkspaceBackground = this._origWorkspaceBackground;
if (this._monitorsChangedId) if (this._monitorsChangedId)
Main.layoutManager.disconnect(this._monitorsChangedId); Main.layoutManager.disconnect(this._monitorsChangedId);
this._monitorsChangedId = 0; this._monitorsChangedId = 0;
@@ -254,18 +311,6 @@ var WindowPicker = GObject.registerClass({
global.stage.disconnect(this._stageKeyPressId); global.stage.disconnect(this._stageKeyPressId);
this._stageKeyPressId = 0; this._stageKeyPressId = 0;
} }
_updateBackgrounds() {
Main.overview._updateBackgrounds.call(this);
}
_shadeBackgrounds() {
Main.overview._shadeBackgrounds.call(this);
}
_unshadeBackgrounds() {
Main.overview._unshadeBackgrounds.call(this);
}
}); });
var WindowPickerToggle = GObject.registerClass( var WindowPickerToggle = GObject.registerClass(
@@ -286,8 +331,6 @@ class WindowPickerToggle extends St.Button {
style_class: 'window-picker-toggle', style_class: 'window-picker-toggle',
child: iconBin, child: iconBin,
visible: !Main.sessionMode.hasOverview, visible: !Main.sessionMode.hasOverview,
x_fill: true,
y_fill: true,
toggle_mode: true, toggle_mode: true,
}); });
+101 -61
View File
@@ -2,12 +2,17 @@
const { Clutter, Gio, GObject, Meta, St } = imports.gi; const { Clutter, Gio, GObject, Meta, St } = imports.gi;
const DND = imports.ui.dnd; const DND = imports.ui.dnd;
const ExtensionUtils = imports.misc.extensionUtils;
const Main = imports.ui.main; const Main = imports.ui.main;
const PanelMenu = imports.ui.panelMenu; const PanelMenu = imports.ui.panelMenu;
const PopupMenu = imports.ui.popupMenu; const PopupMenu = imports.ui.popupMenu;
const Gettext = imports.gettext.domain('gnome-shell-extensions'); const _ = ExtensionUtils.gettext;
const _ = Gettext.gettext;
const TOOLTIP_OFFSET = 6;
const TOOLTIP_ANIMATION_TIME = 150;
const MAX_THUMBNAILS = 6;
let WindowPreview = GObject.registerClass( let WindowPreview = GObject.registerClass(
class WindowPreview extends St.Button { class WindowPreview extends St.Button {
@@ -24,27 +29,14 @@ class WindowPreview extends St.Button {
this.connect('destroy', this._onDestroy.bind(this)); this.connect('destroy', this._onDestroy.bind(this));
this._sizeChangedId = this._window.connect('size-changed', this._sizeChangedId = this._window.connect('size-changed',
this._relayout.bind(this)); () => this.queue_relayout());
this._positionChangedId = this._window.connect('position-changed', this._positionChangedId = this._window.connect('position-changed',
this._relayout.bind(this)); () => {
this._minimizedChangedId = this._window.connect('notify::minimized', this._updateVisible();
this._relayout.bind(this)); this.queue_relayout();
this._monitorEnteredId = global.display.connect('window-entered-monitor',
this._relayout.bind(this));
this._monitorLeftId = global.display.connect('window-left-monitor',
this._relayout.bind(this));
// Do initial layout when we get a parent
let id = this.connect('parent-set', () => {
this.disconnect(id);
if (!this.get_parent())
return;
this._laterId = Meta.later_add(Meta.LaterType.BEFORE_REDRAW, () => {
this._laterId = 0;
this._relayout();
return false;
}); });
}); this._minimizedChangedId = this._window.connect('notify::minimized',
this._updateVisible.bind(this));
this._focusChangedId = global.display.connect('notify::focus-window', this._focusChangedId = global.display.connect('notify::focus-window',
this._onFocusChanged.bind(this)); this._onFocusChanged.bind(this));
@@ -52,19 +44,15 @@ class WindowPreview extends St.Button {
} }
// needed for DND // needed for DND
get realWindow() { get metaWindow() {
return this._window.get_compositor_private(); return this._window;
} }
_onDestroy() { _onDestroy() {
this._window.disconnect(this._sizeChangedId); this._window.disconnect(this._sizeChangedId);
this._window.disconnect(this._positionChangedId); this._window.disconnect(this._positionChangedId);
this._window.disconnect(this._minimizedChangedId); this._window.disconnect(this._minimizedChangedId);
global.display.disconnect(this._monitorEnteredId);
global.display.disconnect(this._monitorLeftId);
global.display.disconnect(this._focusChangedId); global.display.disconnect(this._focusChangedId);
if (this._laterId)
Meta.later_remove(this._laterId);
} }
_onFocusChanged() { _onFocusChanged() {
@@ -74,26 +62,42 @@ class WindowPreview extends St.Button {
this.remove_style_class_name('active'); this.remove_style_class_name('active');
} }
_relayout() { _updateVisible() {
let monitor = Main.layoutManager.findIndexForActor(this); const monitor = Main.layoutManager.findIndexForActor(this);
this.visible = monitor === this._window.get_monitor() && const workArea = Main.layoutManager.getWorkAreaForMonitor(monitor);
this.visible = this._window.get_frame_rect().overlap(workArea) &&
this._window.window_type !== Meta.WindowType.DESKTOP && this._window.window_type !== Meta.WindowType.DESKTOP &&
this._window.showing_on_its_workspace(); this._window.showing_on_its_workspace();
}
});
if (!this.visible) let WorkspaceLayout = GObject.registerClass(
return; class WorkspaceLayout extends Clutter.LayoutManager {
vfunc_get_preferred_width() {
return [0, 0];
}
let workArea = Main.layoutManager.getWorkAreaForMonitor(monitor); vfunc_get_preferred_height() {
let hscale = this.get_parent().allocation.get_width() / workArea.width; return [0, 0];
let vscale = this.get_parent().allocation.get_height() / workArea.height; }
let frameRect = this._window.get_frame_rect(); vfunc_allocate(container, box) {
this.set_size( const monitor = Main.layoutManager.findIndexForActor(container);
Math.round(Math.min(frameRect.width, workArea.width) * hscale), const workArea = Main.layoutManager.getWorkAreaForMonitor(monitor);
Math.round(Math.min(frameRect.height, workArea.height) * vscale)); const hscale = box.get_width() / workArea.width;
this.set_position( const vscale = box.get_height() / workArea.height;
Math.round(frameRect.x * hscale),
Math.round(frameRect.y * vscale)); for (const child of container) {
const childBox = new Clutter.ActorBox();
const frameRect = child.metaWindow.get_frame_rect();
childBox.set_size(
Math.round(Math.min(frameRect.width, workArea.width) * hscale),
Math.round(Math.min(frameRect.height, workArea.height) * vscale));
childBox.set_origin(
Math.round((frameRect.x - workArea.x) * hscale),
Math.round((frameRect.y - workArea.y) * vscale));
child.allocate(childBox);
}
} }
}); });
@@ -103,14 +107,19 @@ class WorkspaceThumbnail extends St.Button {
super._init({ super._init({
style_class: 'workspace', style_class: 'workspace',
child: new Clutter.Actor({ child: new Clutter.Actor({
layout_manager: new Clutter.BinLayout(), layout_manager: new WorkspaceLayout(),
clip_to_allocation: true, clip_to_allocation: true,
}), }),
x_fill: true,
y_fill: true,
}); });
this._tooltip = new St.Label({
style_class: 'dash-label',
visible: false,
});
Main.uiGroup.add_child(this._tooltip);
this.connect('destroy', this._onDestroy.bind(this)); this.connect('destroy', this._onDestroy.bind(this));
this.connect('notify::hover', this._syncTooltip.bind(this));
this._index = index; this._index = index;
this._delegate = this; // needed for DND this._delegate = this; // needed for DND
@@ -136,16 +145,15 @@ class WorkspaceThumbnail extends St.Button {
} }
acceptDrop(source) { acceptDrop(source) {
if (!source.realWindow) if (!source.metaWindow)
return false; return false;
let window = source.realWindow.get_meta_window(); this._moveWindow(source.metaWindow);
this._moveWindow(window);
return true; return true;
} }
handleDragOver(source) { handleDragOver(source) {
if (source.realWindow) if (source.metaWindow)
return DND.DragMotionResult.MOVE_DROP; return DND.DragMotionResult.MOVE_DROP;
else else
return DND.DragMotionResult.CONTINUE; return DND.DragMotionResult.CONTINUE;
@@ -196,7 +204,39 @@ class WorkspaceThumbnail extends St.Button {
ws.activate(global.get_current_time()); ws.activate(global.get_current_time());
} }
_syncTooltip() {
if (this.hover) {
this._tooltip.set({
text: Meta.prefs_get_workspace_name(this._index),
visible: true,
opacity: 0,
});
const [stageX, stageY] = this.get_transformed_position();
const thumbWidth = this.allocation.get_width();
const tipWidth = this._tooltip.width;
const tipHeight = this._tooltip.height;
const xOffset = Math.floor((thumbWidth - tipWidth) / 2);
const monitor = Main.layoutManager.findMonitorForActor(this);
const x = Math.clamp(
stageX + xOffset,
monitor.x,
monitor.x + monitor.width - tipWidth);
const y = stageY - tipHeight - TOOLTIP_OFFSET;
this._tooltip.set_position(x, y);
}
this._tooltip.ease({
opacity: this.hover ? 255 : 0,
duration: TOOLTIP_ANIMATION_TIME,
mode: Clutter.AnimationMode.EASE_OUT_QUAD,
onComplete: () => (this._tooltip.visible = this.hover),
});
}
_onDestroy() { _onDestroy() {
this._tooltip.destroy();
this._workspace.disconnect(this._windowAddedId); this._workspace.disconnect(this._windowAddedId);
this._workspace.disconnect(this._windowRemovedId); this._workspace.disconnect(this._windowRemovedId);
global.display.disconnect(this._restackedId); global.display.disconnect(this._restackedId);
@@ -209,6 +249,7 @@ class WorkspaceIndicator extends PanelMenu.Button {
super._init(0.0, _('Workspace Indicator'), true); super._init(0.0, _('Workspace Indicator'), true);
this.setMenu(new PopupMenu.PopupMenu(this, 0.0, St.Side.BOTTOM)); this.setMenu(new PopupMenu.PopupMenu(this, 0.0, St.Side.BOTTOM));
this.add_style_class_name('window-list-workspace-indicator'); this.add_style_class_name('window-list-workspace-indicator');
this.remove_style_class_name('panel-button');
this.menu.actor.remove_style_class_name('panel-menu'); this.menu.actor.remove_style_class_name('panel-menu');
let container = new St.Widget({ let container = new St.Widget({
@@ -248,13 +289,13 @@ class WorkspaceIndicator extends PanelMenu.Button {
workspaceManager.connect_after('workspace-switched', workspaceManager.connect_after('workspace-switched',
this._onWorkspaceSwitched.bind(this)), this._onWorkspaceSwitched.bind(this)),
workspaceManager.connect('notify::layout-rows', workspaceManager.connect('notify::layout-rows',
this._onWorkspaceOrientationChanged.bind(this)), this._updateThumbnailVisibility.bind(this)),
]; ];
this.connect('scroll-event', this._onScrollEvent.bind(this)); this.connect('scroll-event', this._onScrollEvent.bind(this));
this._updateMenu(); this._updateMenu();
this._updateThumbnails(); this._updateThumbnails();
this._onWorkspaceOrientationChanged(); this._updateThumbnailVisibility();
this._settings = new Gio.Settings({ schema_id: 'org.gnome.desktop.wm.preferences' }); this._settings = new Gio.Settings({ schema_id: 'org.gnome.desktop.wm.preferences' });
this._settingsChangedId = this._settings.connect( this._settingsChangedId = this._settings.connect(
@@ -273,12 +314,15 @@ class WorkspaceIndicator extends PanelMenu.Button {
super._onDestroy(); super._onDestroy();
} }
_onWorkspaceOrientationChanged() { _updateThumbnailVisibility() {
let vertical = global.workspace_manager.layout_rows === -1; const { workspaceManager } = global;
this.reactive = vertical; const vertical = workspaceManager.layout_rows === -1;
const useMenu =
vertical || workspaceManager.n_workspaces > MAX_THUMBNAILS;
this.reactive = useMenu;
this._statusBin.visible = vertical; this._statusBin.visible = useMenu;
this._thumbnailsBox.visible = !vertical; this._thumbnailsBox.visible = !useMenu;
} }
_onWorkspaceSwitched() { _onWorkspaceSwitched() {
@@ -294,6 +338,7 @@ class WorkspaceIndicator extends PanelMenu.Button {
_nWorkspacesChanged() { _nWorkspacesChanged() {
this._updateMenu(); this._updateMenu();
this._updateThumbnails(); this._updateThumbnails();
this._updateThumbnailVisibility();
} }
_updateMenuOrnament() { _updateMenuOrnament() {
@@ -390,10 +435,5 @@ class WorkspaceIndicator extends PanelMenu.Button {
let newIndex = this._currentWorkspace + diff; let newIndex = this._currentWorkspace + diff;
this._activate(newIndex); this._activate(newIndex);
} }
_allocate(actor, box, flags) {
if (actor.get_n_children() > 0)
actor.get_first_child().allocate(box, flags);
}
}); });
+79 -76
View File
@@ -1,52 +1,20 @@
/* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */ /* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */
/* exported init */ /* exported init */
const { Clutter, GObject, St } = imports.gi; const { Clutter, Graphene, GObject, St } = imports.gi;
const Main = imports.ui.main; const Main = imports.ui.main;
const OverviewControls = imports.ui.overviewControls;
const Workspace = imports.ui.workspace; const Workspace = imports.ui.workspace;
const WorkspacesView = imports.ui.workspacesView; const WorkspacesView = imports.ui.workspacesView;
class MyWindowOverlay extends Workspace.WindowOverlay { const WINDOW_SLOT = 4;
constructor(windowClone, parentActor) {
super(windowClone, parentActor);
this._id = null;
this._text = new St.Label({
style_class: 'extension-windowsNavigator-window-tooltip',
visible: false,
});
parentActor.add_actor(this._text);
}
showTooltip() {
this._parentActor.set_child_below_sibling(this._text, null);
this._text.show();
this._text.text = (this._windowClone.slotId + 1).toString();
}
hideTooltip() {
if (this._text && this._text.visible)
this._text.hide();
}
relayout(animate) {
super.relayout(animate);
let [cloneX, cloneY, cloneWidth_, cloneHeight_] = this._windowClone.slot;
let textX = cloneX - 2;
let textY = cloneY - 2;
this._text.set_position(Math.floor(textX) + 5, Math.floor(textY) + 5);
this._parentActor.set_child_below_sibling(this._text, null);
}
}
var MyWorkspace = GObject.registerClass( var MyWorkspace = GObject.registerClass(
class MyWorkspace extends Workspace.Workspace { class MyWorkspace extends Workspace.Workspace {
_init(metaWorkspace, monitorIndex) { _init(...args) {
super._init(metaWorkspace, monitorIndex); super._init(...args);
if (metaWorkspace && metaWorkspace.index() < 9) { if (this.metaWorkspace && this.metaWorkspace.index() < 9) {
this._tip = new St.Label({ this._tip = new St.Label({
style_class: 'extension-windowsNavigator-window-tooltip', style_class: 'extension-windowsNavigator-window-tooltip',
visible: false, visible: false,
@@ -61,63 +29,98 @@ class MyWorkspace extends Workspace.Workspace {
} }
} }
vfunc_allocate(box) {
super.vfunc_allocate(box);
if (this._tip)
this._tip.allocate_preferred_size(0, 0);
}
showTooltip() { showTooltip() {
if (!this._tip || !this._actualGeometry) if (!this._tip)
return; return;
this._tip.text = (this.metaWorkspace.index() + 1).toString(); this._tip.text = (this.metaWorkspace.index() + 1).toString();
// Hand code this instead of using _getSpacingAndPadding
// because that fails on empty workspaces
let node = this.get_theme_node();
let padding = {
left: node.get_padding(St.Side.LEFT),
top: node.get_padding(St.Side.TOP),
bottom: node.get_padding(St.Side.BOTTOM),
right: node.get_padding(St.Side.RIGHT),
};
let area = Workspace.padArea(this._actualGeometry, padding);
this._tip.x = area.x;
this._tip.y = area.y;
this._tip.show(); this._tip.show();
this.set_child_below_sibling(this._tip, null); this.set_child_below_sibling(this._tip, null);
} }
hideTooltip() { hideTooltip() {
if (!this._tip) if (this._tip)
return; this._tip.hide();
if (!this._tip.get_parent())
return;
this._tip.hide();
} }
getWindowWithTooltip(id) { getWindowWithTooltip(id) {
for (let i = 0; i < this._windows.length; i++) { const { layoutManager } = this._container;
if (this._windows[i].slotId + 1 === id) const slot = layoutManager._windowSlots[id - 1];
return this._windows[i].metaWindow; return slot ? slot[WINDOW_SLOT].metaWindow : null;
}
return null;
} }
showWindowsTooltips() { showWindowsTooltips() {
for (let i in this._windowOverlays) { const { layoutManager } = this._container;
if (this._windowOverlays[i]) for (let i = 0; i < layoutManager._windowSlots.length; i++) {
this._windowOverlays[i].showTooltip(); if (layoutManager._windowSlots[i])
layoutManager._windowSlots[i][WINDOW_SLOT].showTooltip(`${i + 1}`);
} }
} }
hideWindowsTooltips() { hideWindowsTooltips() {
for (let i in this._windowOverlays) { const { layoutManager } = this._container;
if (this._windowOverlays[i]) for (let i in layoutManager._windowSlots) {
this._windowOverlays[i].hideTooltip(); if (layoutManager._windowSlots[i])
layoutManager._windowSlots[i][WINDOW_SLOT].hideTooltip();
} }
} }
// overriding _addWindowClone to apply the tooltip patch on the cloned
// windowPreview
_addWindowClone(metaWindow) {
const clone = super._addWindowClone(metaWindow);
// appling the tooltip patch
(function patchPreview() {
this._text = new St.Label({
style_class: 'extension-windowsNavigator-window-tooltip',
visible: false,
});
this._text.add_constraint(new Clutter.BindConstraint({
source: this.windowContainer,
coordinate: Clutter.BindCoordinate.POSITION,
}));
this._text.add_constraint(new Clutter.AlignConstraint({
source: this.windowContainer,
align_axis: Clutter.AlignAxis.X_AXIS,
pivot_point: new Graphene.Point({ x: 0.5, y: -1 }),
factor: this._closeButtonSide === St.Side.LEFT ? 1 : 0,
}));
this._text.add_constraint(new Clutter.AlignConstraint({
source: this.windowContainer,
align_axis: Clutter.AlignAxis.Y_AXIS,
pivot_point: new Graphene.Point({ x: -1, y: 0.5 }),
factor: 0,
}));
this.add_child(this._text);
}).call(clone);
clone.showTooltip = function (text) {
this._text.set({ text });
this._text.show();
};
clone.hideTooltip = function () {
if (this._text && this._text.visible)
this._text.hide();
};
return clone;
}
}); });
var MyWorkspacesView = GObject.registerClass( var MyWorkspacesView = GObject.registerClass(
class MyWorkspacesView extends WorkspacesView.WorkspacesView { class MyWorkspacesView extends WorkspacesView.WorkspacesView {
_init(width, height, x, y, workspaces) { _init(...args) {
super._init(width, height, x, y, workspaces); super._init(...args);
this._pickWorkspace = false; this._pickWorkspace = false;
this._pickWindow = false; this._pickWindow = false;
@@ -161,8 +164,8 @@ class MyWorkspacesView extends WorkspacesView.WorkspacesView {
} }
_onKeyPress(s, o) { _onKeyPress(s, o) {
let { viewSelector } = Main.overview; const { ControlsState } = OverviewControls;
if (viewSelector._activePage !== viewSelector._workspacesPage) if (this._overviewAdjustment.value !== ControlsState.WINDOW_PICKER)
return false; return false;
let workspaceManager = global.workspace_manager; let workspaceManager = global.workspace_manager;
@@ -244,24 +247,24 @@ class MyWorkspacesView extends WorkspacesView.WorkspacesView {
class Extension { class Extension {
constructor() { constructor() {
this._origWindowOverlay = Workspace.WindowOverlay;
this._origWorkspace = Workspace.Workspace; this._origWorkspace = Workspace.Workspace;
this._origWorkspacesView = WorkspacesView.WorkspacesView; this._origWorkspacesView = WorkspacesView.WorkspacesView;
} }
enable() { enable() {
Workspace.WindowOverlay = MyWindowOverlay;
Workspace.Workspace = MyWorkspace; Workspace.Workspace = MyWorkspace;
WorkspacesView.WorkspacesView = MyWorkspacesView; WorkspacesView.WorkspacesView = MyWorkspacesView;
} }
disable() { disable() {
Workspace.WindowOverlay = this._origWindowOverlay;
Workspace.Workspace = this._origWorkspace; Workspace.Workspace = this._origWorkspace;
WorkspacesView.WorkspacesView = this._origWorkspacesView; WorkspacesView.WorkspacesView = this._origWorkspacesView;
} }
} }
/**
* @returns {Extension} - the extension's state object
*/
function init() { function init() {
return new Extension(); return new Extension();
} }
+103 -57
View File
@@ -9,12 +9,16 @@ const Main = imports.ui.main;
const PanelMenu = imports.ui.panelMenu; const PanelMenu = imports.ui.panelMenu;
const PopupMenu = imports.ui.popupMenu; const PopupMenu = imports.ui.popupMenu;
const Gettext = imports.gettext.domain('gnome-shell-extensions'); const _ = ExtensionUtils.gettext;
const _ = Gettext.gettext;
const WORKSPACE_SCHEMA = 'org.gnome.desktop.wm.preferences'; const WORKSPACE_SCHEMA = 'org.gnome.desktop.wm.preferences';
const WORKSPACE_KEY = 'workspace-names'; const WORKSPACE_KEY = 'workspace-names';
const TOOLTIP_OFFSET = 6;
const TOOLTIP_ANIMATION_TIME = 150;
const MAX_THUMBNAILS = 6;
let WindowPreview = GObject.registerClass( let WindowPreview = GObject.registerClass(
class WindowPreview extends St.Button { class WindowPreview extends St.Button {
_init(window) { _init(window) {
@@ -30,27 +34,14 @@ class WindowPreview extends St.Button {
this.connect('destroy', this._onDestroy.bind(this)); this.connect('destroy', this._onDestroy.bind(this));
this._sizeChangedId = this._window.connect('size-changed', this._sizeChangedId = this._window.connect('size-changed',
this._relayout.bind(this)); () => this.queue_relayout());
this._positionChangedId = this._window.connect('position-changed', this._positionChangedId = this._window.connect('position-changed',
this._relayout.bind(this)); () => {
this._minimizedChangedId = this._window.connect('notify::minimized', this._updateVisible();
this._relayout.bind(this)); this.queue_relayout();
this._monitorEnteredId = global.display.connect('window-entered-monitor',
this._relayout.bind(this));
this._monitorLeftId = global.display.connect('window-left-monitor',
this._relayout.bind(this));
// Do initial layout when we get a parent
let id = this.connect('parent-set', () => {
this.disconnect(id);
if (!this.get_parent())
return;
this._laterId = Meta.later_add(Meta.LaterType.BEFORE_REDRAW, () => {
this._laterId = 0;
this._relayout();
return false;
}); });
}); this._minimizedChangedId = this._window.connect('notify::minimized',
this._updateVisible.bind(this));
this._focusChangedId = global.display.connect('notify::focus-window', this._focusChangedId = global.display.connect('notify::focus-window',
this._onFocusChanged.bind(this)); this._onFocusChanged.bind(this));
@@ -58,19 +49,15 @@ class WindowPreview extends St.Button {
} }
// needed for DND // needed for DND
get realWindow() { get metaWindow() {
return this._window.get_compositor_private(); return this._window;
} }
_onDestroy() { _onDestroy() {
this._window.disconnect(this._sizeChangedId); this._window.disconnect(this._sizeChangedId);
this._window.disconnect(this._positionChangedId); this._window.disconnect(this._positionChangedId);
this._window.disconnect(this._minimizedChangedId); this._window.disconnect(this._minimizedChangedId);
global.display.disconnect(this._monitorEnteredId);
global.display.disconnect(this._monitorLeftId);
global.display.disconnect(this._focusChangedId); global.display.disconnect(this._focusChangedId);
if (this._laterId)
Meta.later_remove(this._laterId);
} }
_onFocusChanged() { _onFocusChanged() {
@@ -80,26 +67,42 @@ class WindowPreview extends St.Button {
this.remove_style_class_name('active'); this.remove_style_class_name('active');
} }
_relayout() { _updateVisible() {
let monitor = Main.layoutManager.findIndexForActor(this); const monitor = Main.layoutManager.findIndexForActor(this);
this.visible = monitor === this._window.get_monitor() && const workArea = Main.layoutManager.getWorkAreaForMonitor(monitor);
this.visible = this._window.get_frame_rect().overlap(workArea) &&
this._window.window_type !== Meta.WindowType.DESKTOP && this._window.window_type !== Meta.WindowType.DESKTOP &&
this._window.showing_on_its_workspace(); this._window.showing_on_its_workspace();
}
});
if (!this.visible) let WorkspaceLayout = GObject.registerClass(
return; class WorkspaceLayout extends Clutter.LayoutManager {
vfunc_get_preferred_width() {
return [0, 0];
}
let workArea = Main.layoutManager.getWorkAreaForMonitor(monitor); vfunc_get_preferred_height() {
let hscale = this.get_parent().allocation.get_width() / workArea.width; return [0, 0];
let vscale = this.get_parent().allocation.get_height() / workArea.height; }
let frameRect = this._window.get_frame_rect(); vfunc_allocate(container, box) {
this.set_size( const monitor = Main.layoutManager.findIndexForActor(container);
Math.round(Math.min(frameRect.width, workArea.width) * hscale), const workArea = Main.layoutManager.getWorkAreaForMonitor(monitor);
Math.round(Math.min(frameRect.height, workArea.height) * vscale)); const hscale = box.get_width() / workArea.width;
this.set_position( const vscale = box.get_height() / workArea.height;
Math.round(frameRect.x * hscale),
Math.round(frameRect.y * vscale)); for (const child of container) {
const childBox = new Clutter.ActorBox();
const frameRect = child.metaWindow.get_frame_rect();
childBox.set_size(
Math.round(Math.min(frameRect.width, workArea.width) * hscale),
Math.round(Math.min(frameRect.height, workArea.height) * vscale));
childBox.set_origin(
Math.round((frameRect.x - workArea.x) * hscale),
Math.round((frameRect.y - workArea.y) * vscale));
child.allocate(childBox);
}
} }
}); });
@@ -109,14 +112,19 @@ class WorkspaceThumbnail extends St.Button {
super._init({ super._init({
style_class: 'workspace', style_class: 'workspace',
child: new Clutter.Actor({ child: new Clutter.Actor({
layout_manager: new Clutter.BinLayout(), layout_manager: new WorkspaceLayout(),
clip_to_allocation: true, clip_to_allocation: true,
}), }),
x_fill: true,
y_fill: true,
}); });
this._tooltip = new St.Label({
style_class: 'dash-label',
visible: false,
});
Main.uiGroup.add_child(this._tooltip);
this.connect('destroy', this._onDestroy.bind(this)); this.connect('destroy', this._onDestroy.bind(this));
this.connect('notify::hover', this._syncTooltip.bind(this));
this._index = index; this._index = index;
this._delegate = this; // needed for DND this._delegate = this; // needed for DND
@@ -142,16 +150,15 @@ class WorkspaceThumbnail extends St.Button {
} }
acceptDrop(source) { acceptDrop(source) {
if (!source.realWindow) if (!source.metaWindow)
return false; return false;
let window = source.realWindow.get_meta_window(); this._moveWindow(source.metaWindow);
this._moveWindow(window);
return true; return true;
} }
handleDragOver(source) { handleDragOver(source) {
if (source.realWindow) if (source.metaWindow)
return DND.DragMotionResult.MOVE_DROP; return DND.DragMotionResult.MOVE_DROP;
else else
return DND.DragMotionResult.CONTINUE; return DND.DragMotionResult.CONTINUE;
@@ -202,7 +209,39 @@ class WorkspaceThumbnail extends St.Button {
ws.activate(global.get_current_time()); ws.activate(global.get_current_time());
} }
_syncTooltip() {
if (this.hover) {
this._tooltip.set({
text: Meta.prefs_get_workspace_name(this._index),
visible: true,
opacity: 0,
});
const [stageX, stageY] = this.get_transformed_position();
const thumbWidth = this.allocation.get_width();
const thumbHeight = this.allocation.get_height();
const tipWidth = this._tooltip.width;
const xOffset = Math.floor((thumbWidth - tipWidth) / 2);
const monitor = Main.layoutManager.findMonitorForActor(this);
const x = Math.clamp(
stageX + xOffset,
monitor.x,
monitor.x + monitor.width - tipWidth);
const y = stageY + thumbHeight + TOOLTIP_OFFSET;
this._tooltip.set_position(x, y);
}
this._tooltip.ease({
opacity: this.hover ? 255 : 0,
duration: TOOLTIP_ANIMATION_TIME,
mode: Clutter.AnimationMode.EASE_OUT_QUAD,
onComplete: () => (this._tooltip.visible = this.hover),
});
}
_onDestroy() { _onDestroy() {
this._tooltip.destroy();
this._workspace.disconnect(this._windowAddedId); this._workspace.disconnect(this._windowAddedId);
this._workspace.disconnect(this._windowRemovedId); this._workspace.disconnect(this._windowRemovedId);
global.display.disconnect(this._restackedId); global.display.disconnect(this._restackedId);
@@ -250,14 +289,14 @@ class WorkspaceIndicator extends PanelMenu.Button {
workspaceManager.connect_after('workspace-switched', workspaceManager.connect_after('workspace-switched',
this._onWorkspaceSwitched.bind(this)), this._onWorkspaceSwitched.bind(this)),
workspaceManager.connect('notify::layout-rows', workspaceManager.connect('notify::layout-rows',
this._onWorkspaceOrientationChanged.bind(this)), this._updateThumbnailVisibility.bind(this)),
]; ];
this.connect('scroll-event', this._onScrollEvent.bind(this)); this.connect('scroll-event', this._onScrollEvent.bind(this));
this._thumbnailsBox.connect('scroll-event', this._onScrollEvent.bind(this)); this._thumbnailsBox.connect('scroll-event', this._onScrollEvent.bind(this));
this._createWorkspacesSection(); this._createWorkspacesSection();
this._updateThumbnails(); this._updateThumbnails();
this._onWorkspaceOrientationChanged(); this._updateThumbnailVisibility();
this._settings = new Gio.Settings({ schema_id: WORKSPACE_SCHEMA }); this._settings = new Gio.Settings({ schema_id: WORKSPACE_SCHEMA });
this._settingsChangedId = this._settings.connect( this._settingsChangedId = this._settings.connect(
@@ -279,16 +318,19 @@ class WorkspaceIndicator extends PanelMenu.Button {
super._onDestroy(); super._onDestroy();
} }
_onWorkspaceOrientationChanged() { _updateThumbnailVisibility() {
let vertical = global.workspace_manager.layout_rows === -1; const { workspaceManager } = global;
this.reactive = vertical; const vertical = workspaceManager.layout_rows === -1;
const useMenu =
vertical || workspaceManager.n_workspaces > MAX_THUMBNAILS;
this.reactive = useMenu;
this._statusLabel.visible = vertical; this._statusLabel.visible = useMenu;
this._thumbnailsBox.visible = !vertical; this._thumbnailsBox.visible = !useMenu;
// Disable offscreen-redirect when showing the workspace switcher // Disable offscreen-redirect when showing the workspace switcher
// so that clip-to-allocation works // so that clip-to-allocation works
Main.panel.set_offscreen_redirect(vertical Main.panel.set_offscreen_redirect(useMenu
? Clutter.OffscreenRedirect.ALWAYS ? Clutter.OffscreenRedirect.ALWAYS
: Clutter.OffscreenRedirect.AUTOMATIC_FOR_OPACITY); : Clutter.OffscreenRedirect.AUTOMATIC_FOR_OPACITY);
} }
@@ -305,6 +347,7 @@ class WorkspaceIndicator extends PanelMenu.Button {
_nWorkspacesChanged() { _nWorkspacesChanged() {
this._createWorkspacesSection(); this._createWorkspacesSection();
this._updateThumbnails(); this._updateThumbnails();
this._updateThumbnailVisibility();
} }
_updateMenuOrnament() { _updateMenuOrnament() {
@@ -399,17 +442,20 @@ class WorkspaceIndicator extends PanelMenu.Button {
} }
}); });
/** */
function init() { function init() {
ExtensionUtils.initTranslations(); ExtensionUtils.initTranslations();
} }
let _indicator; let _indicator;
/** */
function enable() { function enable() {
_indicator = new WorkspaceIndicator(); _indicator = new WorkspaceIndicator();
Main.panel.addToStatusArea('workspace-indicator', _indicator); Main.panel.addToStatusArea('workspace-indicator', _indicator);
} }
/** */
function disable() { function disable() {
_indicator.destroy(); _indicator.destroy();
} }
+168 -180
View File
@@ -1,210 +1,198 @@
// -*- mode: js2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- // -*- mode: js2; indent-tabs-mode: nil; js2-basic-offset: 4 -*-
/* exported init buildPrefsWidget */ /* exported init buildPrefsWidget */
const { Gio, GObject, Gtk } = imports.gi; const { Adw, Gio, GLib, GObject, Gtk, Pango } = imports.gi;
const Gettext = imports.gettext.domain('gnome-shell-extensions');
const _ = Gettext.gettext;
const N_ = e => e;
const ExtensionUtils = imports.misc.extensionUtils; const ExtensionUtils = imports.misc.extensionUtils;
const _ = ExtensionUtils.gettext;
const N_ = e => e;
const WORKSPACE_SCHEMA = 'org.gnome.desktop.wm.preferences'; const WORKSPACE_SCHEMA = 'org.gnome.desktop.wm.preferences';
const WORKSPACE_KEY = 'workspace-names'; const WORKSPACE_KEY = 'workspace-names';
const WorkspaceNameModel = GObject.registerClass(
class WorkspaceNameModel extends Gtk.ListStore {
_init(params) {
super._init(params);
this.set_column_types([GObject.TYPE_STRING]);
this.Columns = {
LABEL: 0,
};
this._settings = new Gio.Settings({ schema_id: WORKSPACE_SCHEMA });
this._reloadFromSettings();
// overriding class closure doesn't work, because GtkTreeModel
// plays tricks with marshallers and class closures
this.connect('row-changed', this._onRowChanged.bind(this));
this.connect('row-inserted', this._onRowInserted.bind(this));
this.connect('row-deleted', this._onRowDeleted.bind(this));
}
_reloadFromSettings() {
if (this._preventChanges)
return;
this._preventChanges = true;
let newNames = this._settings.get_strv(WORKSPACE_KEY);
let i = 0;
let [ok, iter] = this.get_iter_first();
while (ok && i < newNames.length) {
this.set(iter, [this.Columns.LABEL], [newNames[i]]);
ok = this.iter_next(iter);
i++;
}
while (ok)
ok = this.remove(iter);
for (; i < newNames.length; i++) {
iter = this.append();
this.set(iter, [this.Columns.LABEL], [newNames[i]]);
}
this._preventChanges = false;
}
_onRowChanged(self, path, iter) {
if (this._preventChanges)
return;
this._preventChanges = true;
let index = path.get_indices()[0];
let names = this._settings.get_strv(WORKSPACE_KEY);
if (index >= names.length) {
// fill with blanks
for (let i = names.length; i <= index; i++)
names[i] = '';
}
names[index] = this.get_value(iter, this.Columns.LABEL);
this._settings.set_strv(WORKSPACE_KEY, names);
this._preventChanges = false;
}
_onRowInserted(self, path, iter) {
if (this._preventChanges)
return;
this._preventChanges = true;
let index = path.get_indices()[0];
let names = this._settings.get_strv(WORKSPACE_KEY);
let label = this.get_value(iter, this.Columns.LABEL) || '';
names.splice(index, 0, label);
this._settings.set_strv(WORKSPACE_KEY, names);
this._preventChanges = false;
}
_onRowDeleted(self, path) {
if (this._preventChanges)
return;
this._preventChanges = true;
let index = path.get_indices()[0];
let names = this._settings.get_strv(WORKSPACE_KEY);
if (index >= names.length)
return;
names.splice(index, 1);
// compact the array
for (let i = names.length - 1; i >= 0 && !names[i]; i++)
names.pop();
this._settings.set_strv(WORKSPACE_KEY, names);
this._preventChanges = false;
}
});
const WorkspaceSettingsWidget = GObject.registerClass( const WorkspaceSettingsWidget = GObject.registerClass(
class WorkspaceSettingsWidget extends Gtk.Grid { class WorkspaceSettingsWidget extends Adw.PreferencesGroup {
_init(params) { _init() {
super._init(params); super._init({
this.margin = 12; title: _('Workspace Names'),
this.orientation = Gtk.Orientation.VERTICAL;
this.add(new Gtk.Label({
label: '<b>%s</b>'.format(_('Workspace Names')),
use_markup: true,
margin_bottom: 6,
hexpand: true,
halign: Gtk.Align.START,
}));
let scrolled = new Gtk.ScrolledWindow({ shadow_type: Gtk.ShadowType.IN });
scrolled.set_policy(Gtk.PolicyType.NEVER, Gtk.PolicyType.AUTOMATIC);
this.add(scrolled);
this._store = new WorkspaceNameModel();
this._treeView = new Gtk.TreeView({
model: this._store,
headers_visible: false,
reorderable: true,
hexpand: true,
vexpand: true,
}); });
let column = new Gtk.TreeViewColumn({ title: _('Name') }); this._list = new Gtk.ListBox({
let renderer = new Gtk.CellRendererText({ editable: true }); selection_mode: Gtk.SelectionMode.NONE,
renderer.connect('edited', this._cellEdited.bind(this)); css_classes: ['boxed-list'],
column.pack_start(renderer, true);
column.add_attribute(renderer, 'text', this._store.Columns.LABEL);
this._treeView.append_column(column);
scrolled.add(this._treeView);
let toolbar = new Gtk.Toolbar({ icon_size: Gtk.IconSize.SMALL_TOOLBAR });
toolbar.get_style_context().add_class(Gtk.STYLE_CLASS_INLINE_TOOLBAR);
let newButton = new Gtk.ToolButton({ icon_name: 'list-add-symbolic' });
newButton.connect('clicked', this._newClicked.bind(this));
toolbar.add(newButton);
let delButton = new Gtk.ToolButton({ icon_name: 'list-remove-symbolic' });
delButton.connect('clicked', this._delClicked.bind(this));
toolbar.add(delButton);
let selection = this._treeView.get_selection();
selection.connect('changed', () => {
delButton.sensitive = selection.count_selected_rows() > 0;
}); });
delButton.sensitive = selection.count_selected_rows() > 0; this._list.connect('row-activated', (l, row) => row.edit());
this.add(this._list);
this.add(toolbar); this._list.append(new NewWorkspaceRow());
this._actionGroup = new Gio.SimpleActionGroup();
this._list.insert_action_group('workspaces', this._actionGroup);
let action;
action = new Gio.SimpleAction({ name: 'add' });
action.connect('activate', () => {
const names = this._settings.get_strv(WORKSPACE_KEY);
this._settings.set_strv(WORKSPACE_KEY, [
...names,
_('Workspace %d').format(names.length + 1),
]);
});
this._actionGroup.add_action(action);
action = new Gio.SimpleAction({
name: 'remove',
parameter_type: new GLib.VariantType('s'),
});
action.connect('activate', (a, param) => {
const removed = param.deepUnpack();
this._settings.set_strv(WORKSPACE_KEY,
this._settings.get_strv(WORKSPACE_KEY)
.filter(name => name !== removed));
});
this._actionGroup.add_action(action);
action = new Gio.SimpleAction({ name: 'update' });
action.connect('activate', () => {
const names = this._getWorkspaceRows().map(row => row.name);
this._settings.set_strv(WORKSPACE_KEY, names);
});
this._actionGroup.add_action(action);
this._settings = new Gio.Settings({
schema_id: WORKSPACE_SCHEMA,
});
this._settings.connect(`changed::${WORKSPACE_KEY}`,
this._sync.bind(this));
this._sync();
} }
_cellEdited(renderer, path, newText) { _getWorkspaceRows() {
let [ok, iter] = this._store.get_iter_from_string(path); return [...this._list].filter(row => row.name);
if (ok)
this._store.set(iter, [this._store.Columns.LABEL], [newText]);
} }
_newClicked() { _sync() {
let iter = this._store.append(); const rows = this._getWorkspaceRows();
let index = this._store.get_path(iter).get_indices()[0];
let label = _('Workspace %d').format(index + 1); const oldNames = rows.map(row => row.name);
this._store.set(iter, [this._store.Columns.LABEL], [label]); const newNames = this._settings.get_strv(WORKSPACE_KEY);
}
_delClicked() { const removed = oldNames.filter(n => !newNames.includes(n));
let [any, model_, iter] = this._treeView.get_selection().get_selected(); const added = newNames.filter(n => !oldNames.includes(n));
if (any) removed.forEach(n => this._list.remove(rows.find(r => r.name === n)));
this._store.remove(iter); added.forEach(n => {
this._list.insert(new WorkspaceRow(n), newNames.indexOf(n));
});
} }
}); });
const WorkspaceRow = GObject.registerClass(
class WorkspaceRow extends Adw.PreferencesRow {
_init(name) {
super._init({ name });
const box = new Gtk.Box({
spacing: 12,
margin_top: 6,
margin_bottom: 6,
margin_start: 6,
margin_end: 6,
});
const label = new Gtk.Label({
hexpand: true,
xalign: 0,
max_width_chars: 25,
ellipsize: Pango.EllipsizeMode.END,
});
this.bind_property('name', label, 'label',
GObject.BindingFlags.SYNC_CREATE);
box.append(label);
const button = new Gtk.Button({
action_name: 'workspaces.remove',
action_target: new GLib.Variant('s', name),
icon_name: 'edit-delete-symbolic',
has_frame: false,
});
box.append(button);
this._entry = new Gtk.Entry({
max_width_chars: 25,
});
const controller = new Gtk.ShortcutController();
controller.add_shortcut(new Gtk.Shortcut({
trigger: Gtk.ShortcutTrigger.parse_string('Escape'),
action: Gtk.CallbackAction.new(() => {
this._stopEdit();
return true;
}),
}));
this._entry.add_controller(controller);
this._stack = new Gtk.Stack();
this._stack.add_named(box, 'display');
this._stack.add_named(this._entry, 'edit');
this.child = this._stack;
this._entry.connect('activate', () => {
this.name = this._entry.text;
this._stopEdit();
});
this._entry.connect('notify::has-focus', () => {
if (this._entry.has_focus)
return;
this._stopEdit();
});
this.connect('notify::name', () => {
button.action_target = new GLib.Variant('s', this.name);
this.activate_action('workspaces.update', null);
});
}
edit() {
this._entry.text = this.name;
this._entry.grab_focus();
this._stack.visible_child_name = 'edit';
}
_stopEdit() {
this.grab_focus();
this._stack.visible_child_name = 'display';
}
});
const NewWorkspaceRow = GObject.registerClass(
class NewWorkspaceRow extends Adw.PreferencesRow {
_init() {
super._init({
action_name: 'workspaces.add',
child: new Gtk.Image({
icon_name: 'list-add-symbolic',
pixel_size: 16,
margin_top: 12,
margin_bottom: 12,
margin_start: 12,
margin_end: 12,
}),
});
this.update_property(
[Gtk.AccessibleProperty.LABEL], [_('Add Workspace')]);
}
});
/** */
function init() { function init() {
ExtensionUtils.initTranslations(); ExtensionUtils.initTranslations();
} }
/**
* @returns {Gtk.Widget} - the prefs widget
*/
function buildPrefsWidget() { function buildPrefsWidget() {
let widget = new WorkspaceSettingsWidget(); return new WorkspaceSettingsWidget();
widget.show_all();
return widget;
} }
+11 -23
View File
@@ -1,40 +1,28 @@
.panel-workspace-indicator { .panel-workspace-indicator {
padding: 0 8px; padding: 0 8px;
} }
.panel-workspace-indicator-box { .panel-workspace-indicator-box {
padding: 2px 0; padding: 4px 0;
spacing: 4px;
} }
.panel-workspace-indicator-box .workspace { .panel-workspace-indicator-box .workspace {
width: 40px; width: 40px;
border: 2px solid #000;
border-radius: 2px;
background-color: #595959;
} }
.panel-workspace-indicator,
.panel-workspace-indicator-box .workspace {
border: 1px solid #cccccc;
}
.panel-workspace-indicator,
.panel-workspace-indicator-box .workspace.active { .panel-workspace-indicator-box .workspace.active {
background-color: rgba(200, 200, 200, .5); border-color: #fff;
}
.panel-workspace-indicator-box .workspace {
background-color: rgba(200, 200, 200, .3);
border-left-width: 0;
}
.panel-workspace-indicator-box .workspace:first-child {
border-left-width: 1px;
} }
.workspace-indicator-window-preview { .workspace-indicator-window-preview {
background-color: #252525; background-color: #bebebe;
border: 1px solid #ccc; border: 1px solid #828282;
} }
.workspace-indicator-window-preview.active { .workspace-indicator-window-preview.active {
background-color: #353535; background-color: #d4d4d4;
border: 2px solid #ccc;
} }
+6
View File
@@ -34,4 +34,10 @@ and will be picked automatically at next login.
<gnome:userid>fmuellner</gnome:userid> <gnome:userid>fmuellner</gnome:userid>
</foaf:Person> </foaf:Person>
</maintainer> </maintainer>
<maintainer>
<foaf:Person>
<foaf:name>Marge Bot</foaf:name>
<gnome:userid>marge-bot</gnome:userid>
</foaf:Person>
</maintainer>
</Project> </Project>
+43 -8
View File
@@ -1,7 +1,12 @@
--- ---
# SPDX-License-Identifier: MIT OR LGPL-2.0-or-later
# SPDX-FileCopyrightText: 2018 Claudio André <claudioandre.br@gmail.com>
env: env:
es6: true es6: true
es2020: true
extends: 'eslint:recommended' extends: 'eslint:recommended'
plugins:
- jsdoc
rules: rules:
array-bracket-newline: array-bracket-newline:
- error - error
@@ -24,7 +29,9 @@ rules:
# allow: [^vfunc_, ^on_, _instance_init] # allow: [^vfunc_, ^on_, _instance_init]
comma-dangle: comma-dangle:
- error - error
- always-multiline - arrays: always-multiline
objects: always-multiline
functions: never
comma-spacing: comma-spacing:
- error - error
- before: false - before: false
@@ -57,6 +64,17 @@ rules:
- 'CallExpression[callee.object.name=GObject][callee.property.name=registerClass] > ClassExpression:first-child' - 'CallExpression[callee.object.name=GObject][callee.property.name=registerClass] > ClassExpression:first-child'
# Allow dedenting chained member expressions # Allow dedenting chained member expressions
MemberExpression: 'off' MemberExpression: 'off'
jsdoc/check-alignment: error
jsdoc/check-param-names: error
jsdoc/check-tag-names: error
jsdoc/check-types: error
jsdoc/implements-on-classes: error
jsdoc/newline-after-description: error
jsdoc/require-jsdoc: error
jsdoc/require-param: error
jsdoc/require-param-description: error
jsdoc/require-param-name: error
jsdoc/require-param-type: error
key-spacing: key-spacing:
- error - error
- beforeColon: false - beforeColon: false
@@ -87,6 +105,7 @@ rules:
- error - error
- all - all
- conditionalAssign: false - conditionalAssign: false
nestedBinaryExpressions: false
returnAssign: false returnAssign: false
no-implicit-coercion: no-implicit-coercion:
- error - error
@@ -103,17 +122,24 @@ rules:
no-octal-escape: error no-octal-escape: error
no-proto: error no-proto: error
no-prototype-builtins: 'off' no-prototype-builtins: 'off'
no-restricted-globals: [error, window]
no-restricted-properties: no-restricted-properties:
- error - error
- object: imports
property: format
message: Use template strings
- object: pkg
property: initFormat
message: Use template strings
- object: Lang
property: copyProperties
message: Use Object.assign()
- object: Lang - object: Lang
property: bind property: bind
message: Use arrow notation or Function.prototype.bind() message: Use arrow notation or Function.prototype.bind()
- object: Lang - object: Lang
property: Class property: Class
message: Use ES6 classes message: Use ES6 classes
- object: imports
property: mainloop
message: Use GLib main loops and timeouts
no-restricted-syntax: no-restricted-syntax:
- error - error
- selector: >- - selector: >-
@@ -129,6 +155,8 @@ rules:
BlockStatement[body.length=1] BlockStatement[body.length=1]
CallExpression[arguments.length=0][callee.object.type="Super"][callee.property.name="_init"] CallExpression[arguments.length=0][callee.object.type="Super"][callee.property.name="_init"]
message: _init() that only calls super._init() is unnecessary message: _init() that only calls super._init() is unnecessary
- selector: BinaryExpression[operator="instanceof"][right.name="Array"]
message: Use Array.isArray()
no-return-assign: error no-return-assign: error
no-return-await: error no-return-await: error
no-self-compare: error no-self-compare: error
@@ -161,10 +189,14 @@ rules:
object-curly-newline: object-curly-newline:
- error - error
- consistent: true - consistent: true
multiline: true
object-curly-spacing: error object-curly-spacing: error
object-shorthand: error object-shorthand: error
operator-assignment: error operator-assignment: error
operator-linebreak: error operator-linebreak: error
padded-blocks:
- error
- never
# These may be a bit controversial, we can try them out and enable them later # These may be a bit controversial, we can try them out and enable them later
# prefer-const: error # prefer-const: error
# prefer-destructuring: error # prefer-destructuring: error
@@ -205,18 +237,19 @@ rules:
template-curly-spacing: error template-curly-spacing: error
template-tag-spacing: error template-tag-spacing: error
unicode-bom: error unicode-bom: error
valid-jsdoc:
- error
- requireReturn: false
wrap-iife: wrap-iife:
- error - error
- inside - inside
yield-star-spacing: error yield-star-spacing: error
yoda: error yoda: error
settings:
jsdoc:
mode: typescript
globals: globals:
ARGV: readonly ARGV: readonly
Debugger: readonly Debugger: readonly
GIRepositoryGType: readonly GIRepositoryGType: readonly
globalThis: readonly
imports: readonly imports: readonly
Intl: readonly Intl: readonly
log: readonly log: readonly
@@ -224,5 +257,7 @@ globals:
print: readonly print: readonly
printerr: readonly printerr: readonly
window: readonly window: readonly
TextEncoder: readonly
TextDecoder: readonly
parserOptions: parserOptions:
ecmaVersion: 2017 ecmaVersion: 2020
+14 -11
View File
@@ -1,11 +1,12 @@
project('gnome-shell-extensions', project('gnome-shell-extensions',
version: '3.35.91', version: '42.beta',
meson_version: '>= 0.44.0', meson_version: '>= 0.53.0',
license: 'GPL2+' license: 'GPL2+'
) )
gettext_domain = meson.project_name() gettext_domain = meson.project_name()
fs = import('fs')
gnome = import('gnome') gnome = import('gnome')
i18n = import('i18n') i18n = import('i18n')
@@ -19,21 +20,15 @@ themedir = join_paths(shelldir, 'theme')
schemadir = join_paths(datadir, 'glib-2.0', 'schemas') schemadir = join_paths(datadir, 'glib-2.0', 'schemas')
sessiondir = join_paths(datadir, 'gnome-session', 'sessions') sessiondir = join_paths(datadir, 'gnome-session', 'sessions')
xsessiondir = join_paths(datadir, 'xsessions') xsessiondir = join_paths(datadir, 'xsessions')
wlsessiondir = join_paths(datadir, 'wayland-sessions')
js60 = find_program('js60', required: false)
ver_arr = meson.project_version().split('.') ver_arr = meson.project_version().split('.')
if ver_arr[1].to_int().is_even() shell_version = ver_arr[0]
shell_version = '@0@.@1@'.format(ver_arr[0], ver_arr[1])
else
shell_version = '.'.join(ver_arr)
endif
uuid_suffix = '@gnome-shell-extensions.gcampax.github.com' uuid_suffix = '@gnome-shell-extensions.gcampax.github.com'
classic_extensions = [ classic_extensions = [
'apps-menu', 'apps-menu',
'horizontal-workspaces',
'places-menu', 'places-menu',
'launch-new-instance', 'launch-new-instance',
'window-list' 'window-list'
@@ -88,9 +83,17 @@ foreach e : enabled_extensions
endforeach endforeach
if classic_mode_enabled if classic_mode_enabled
sassc = find_program('sassc', required: true)
subdir('data') subdir('data')
meson.add_install_script(
'meson/session-post-install.py',
join_paths(get_option('prefix'), datadir)
)
endif endif
subdir('extensions') subdir('extensions')
subdir('po') subdir('po')
meson.add_dist_script('meson/generate-stylesheets.py')
meson.add_dist_script('meson/check-version.py',
meson.project_version(),
'NEWS')
+32
View File
@@ -0,0 +1,32 @@
#!/usr/bin/env python3
import os, sys
from pathlib import Path
import argparse, subprocess
def check_version(version, file, type='news'):
if type == 'news':
line = file.open().readline()
ok = line.startswith(version)
print("{}: {}".format(file, "OK" if ok else "FAILED"))
if not ok:
raise Exception("{} does not start with {}".format(file, version))
elif type == 'metainfo':
subprocess.run(['appstream-util', 'validate-version', file, version],
check=True)
else:
raise Exception('Not implemented')
parser = argparse.ArgumentParser(description='Check release version information.')
parser.add_argument('--type', choices=['metainfo','news'], default='news')
parser.add_argument('version', help='the version to check for')
parser.add_argument('files', nargs='+', help='files to check')
args = parser.parse_args()
distroot = os.environ.get('MESON_DIST_ROOT', './')
try:
for file in args.files:
check_version(args.version, Path(distroot, file), args.type)
except:
sys.exit(1)
+13
View File
@@ -0,0 +1,13 @@
#!/usr/bin/env python3
import os
from pathlib import PurePath
import subprocess
sourceroot = os.environ.get('MESON_SOURCE_ROOT')
distroot = os.environ.get('MESON_DIST_ROOT')
stylesheet_path = PurePath('data/gnome-classic.css')
src = PurePath(sourceroot, stylesheet_path.with_suffix('.scss'))
dst = PurePath(distroot, stylesheet_path)
subprocess.run(['sassc', '-a', src, dst], check=True)
+20
View File
@@ -0,0 +1,20 @@
#!/usr/bin/env python3
import os
import shutil
import sys
if os.environ.get('DESTDIR'):
install_root = os.environ.get('DESTDIR') + os.path.abspath(sys.argv[1])
else:
install_root = sys.argv[1]
# FIXME: Meson is unable to copy a generated target file:
# https://groups.google.com/forum/#!topic/mesonbuild/3iIoYPrN4P0
dst_dir = os.path.join(install_root, 'wayland-sessions')
if not os.path.exists(dst_dir):
os.makedirs(dst_dir)
src = os.path.join(install_root, 'xsessions', 'gnome-classic.desktop')
dst = os.path.join(dst_dir, 'gnome-classic.desktop')
shutil.copyfile(src, dst)
+2
View File
@@ -1,3 +1,4 @@
ab
af af
an an
ar ar
@@ -32,6 +33,7 @@ id
is is
it it
ja ja
kab
kk kk
km km
kn kn
+2 -2
View File
@@ -1,5 +1,6 @@
data/gnome-classic.desktop.in data/gnome-classic.desktop.in
data/gnome-classic.session.desktop.in data/gnome-classic-wayland.desktop.in
data/gnome-classic-xorg.desktop.in
extensions/apps-menu/extension.js extensions/apps-menu/extension.js
extensions/auto-move-windows/extension.js extensions/auto-move-windows/extension.js
extensions/auto-move-windows/org.gnome.shell.extensions.auto-move-windows.gschema.xml extensions/auto-move-windows/org.gnome.shell.extensions.auto-move-windows.gschema.xml
@@ -10,7 +11,6 @@ extensions/native-window-placement/org.gnome.shell.extensions.native-window-plac
extensions/places-menu/extension.js extensions/places-menu/extension.js
extensions/places-menu/placeDisplay.js extensions/places-menu/placeDisplay.js
extensions/screenshot-window-sizer/org.gnome.shell.extensions.screenshot-window-sizer.gschema.xml extensions/screenshot-window-sizer/org.gnome.shell.extensions.screenshot-window-sizer.gschema.xml
extensions/user-theme/extension.js
extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml
extensions/window-list/extension.js extensions/window-list/extension.js
extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml
+261
View File
@@ -0,0 +1,261 @@
# Abkhazian translation for gnome-shell-extensions.
# Copyright (C) 2022 gnome-shell-extensions's COPYRIGHT HOLDER
# This file is distributed under the same license as the gnome-shell-extensions package.
# Нанба Наала <naala-nanba@rambler.ru>, 2022.
#
msgid ""
msgstr ""
"Project-Id-Version: gnome-shell-extensions main\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell-extensions/"
"issues\n"
"POT-Creation-Date: 2022-02-12 02:08+0000\n"
"PO-Revision-Date: 2022-02-12 02:08+0000\n"
"Last-Translator: Нанба Наала <naala-nanba@rambler.ru>, 2022\n"
"Language-Team: Abkhazian <ab@li.org>\n"
"Language: ab\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: data/gnome-classic.desktop.in:3
msgid "GNOME Classic"
msgstr "Аклассикатә GNOME"
#: data/gnome-classic.desktop.in:4 data/gnome-classic-wayland.desktop.in:4
#: data/gnome-classic-xorg.desktop.in:4
msgid "This session logs you into GNOME Classic"
msgstr "Ари асеанс аклассикатә усуратә еишәа GNOME хархәагас иамоуп "
#: data/gnome-classic-wayland.desktop.in:3
msgid "GNOME Classic on Wayland"
msgstr "Аклассикатә GNOME Wayland аҟны"
#: data/gnome-classic-xorg.desktop.in:3
msgid "GNOME Classic on Xorg"
msgstr "Аклассикатә GNOME Xorg аҟны"
#: extensions/apps-menu/extension.js:112
msgid "Favorites"
msgstr "Иалкаау"
#: extensions/apps-menu/extension.js:370
msgid "Applications"
msgstr "Аԥшьқәа"
#: extensions/auto-move-windows/org.gnome.shell.extensions.auto-move-windows.gschema.xml:6
msgid "Application and workspace list"
msgstr "Аԥшьи аусуратә ҵакырақәа рыхьӡынҵеи"
#: extensions/auto-move-windows/org.gnome.shell.extensions.auto-move-windows.gschema.xml:7
msgid ""
"A list of strings, each containing an application id (desktop file name), "
"followed by a colon and the workspace number"
msgstr "Ацәаҳәақәа рыхьӡынҵа аиԥшрагәаҭага аԥшьы (desktop-фаил ахьӡ )"
"змоу, зашьҭахь ҩ-кәаԥки аусуратә ҭыԥ аномери гылоу "
#: extensions/auto-move-windows/prefs.js:19
msgid "Workspace Rules"
msgstr "Аусуратә ҵакыра аԥҟаррақәа"
#: extensions/auto-move-windows/prefs.js:245
msgid "Add Rule"
msgstr "Аԥҟара ацҵара"
#. TRANSLATORS: %s is the filesystem name
#: extensions/drive-menu/extension.js:123
#: extensions/places-menu/placeDisplay.js:210
#, javascript-format
msgid "Ejecting drive “%s” failed:"
msgstr "Адиск «%s» аҭыгара залымшахеит:"
#: extensions/drive-menu/extension.js:139
msgid "Removable devices"
msgstr "Иаҿыҵуа аиҿартәырақәа"
#: extensions/drive-menu/extension.js:161
msgid "Open Files"
msgstr "Афаил аартра"
#: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:5
msgid "Use more screen for windows"
msgstr "Изыцҵоу аекран аҵакыра аԥенџьырқәа рзы ахархәара"
#: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:6
msgid ""
"Try to use more screen for placing window thumbnails by adapting to screen "
"aspect ratio, and consolidating them further to reduce the bounding box. "
"This setting applies only with the natural placement strategy."
msgstr "Шәхы иашәырхәа изыцҵоу аекран аҵакыра аминиатиура атыԥаркразы"
"аекран аганқәа реизышәара ԥсахуа аҭыԥыркра шәыржәпала, анаҩс адаԥа ҳәаақәызҵо ашәагаа архәыҷразы"
"ари ахышәара ахархәара аиуоит аминиатиура «natural» аҭыԥыркра алгоритм ахархәараан"
#: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:11
msgid "Place window captions on top"
msgstr " Аԥенџьырқәа рыхқәа хыхь рҭыԥыркра"
#: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:12
msgid ""
"If true, place window captions on top the respective thumbnail, overriding "
"shell default of placing it at the bottom. Changing this setting requires "
"restarting the shell to have any effect."
msgstr "Иалхзар, ахқәа аминиатиура хыхьтәи ахәҭаҟны аҭыԥ ааныркылалоит"
"(ишыҟоу еиԥш ахқәа ҵаҟатәи аҭыԥ ааныркылоит).Ари ахышәара аԥсахраан,"
"уи аус аура иалагарцазы, иаҭахуп Shell аиҭарура."
#: extensions/places-menu/extension.js:88
#: extensions/places-menu/extension.js:91
msgid "Places"
msgstr "Аҭыԥқәа"
#: extensions/places-menu/placeDisplay.js:49
#, javascript-format
msgid "Failed to launch “%s”"
msgstr " «%s» аус арура залшом"
#: extensions/places-menu/placeDisplay.js:64
#, javascript-format
msgid "Failed to mount volume for “%s”"
msgstr "Иамоуӡит атом аибыҭара «%s» азы"
#: extensions/places-menu/placeDisplay.js:125
#: extensions/places-menu/placeDisplay.js:148
msgid "Computer"
msgstr "Акомпиутер"
#: extensions/places-menu/placeDisplay.js:336
msgid "Home"
msgstr "Аҩнытәи аҭаӡ"
#: extensions/places-menu/placeDisplay.js:381
msgid "Browse Network"
msgstr "Аҳа алаԥшхагара"
#: extensions/screenshot-window-sizer/org.gnome.shell.extensions.screenshot-window-sizer.gschema.xml:7
msgid "Cycle Screenshot Sizes"
msgstr "Аекран аҭыхымҭа ашәагаақәа рыԥсахра"
#: extensions/screenshot-window-sizer/org.gnome.shell.extensions.screenshot-window-sizer.gschema.xml:11
msgid "Cycle Screenshot Sizes Backward"
msgstr "Аекран аҭыхымҭа ашәагаақәа шьҭахьҟатәи ахырхарҭала рыԥсахра"
#: extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml:5
msgid "Theme name"
msgstr "Атема ахьӡ"
#: extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml:6
msgid "The name of the theme, to be loaded from ~/.themes/name/gnome-shell"
msgstr "~/.themes/name/gnome-shell аҟынтә иҭагалоу атема ахьӡ "
#: extensions/window-list/extension.js:72
msgid "Close"
msgstr "Аркра"
#: extensions/window-list/extension.js:92
msgid "Unminimize"
msgstr "Архынҳәра"
#: extensions/window-list/extension.js:92
msgid "Minimize"
msgstr "Аиҟәырҳәра"
#: extensions/window-list/extension.js:99
msgid "Unmaximize"
msgstr "Аиҭашьақәыргылара"
#: extensions/window-list/extension.js:99
msgid "Maximize"
msgstr "Аиҵыхра"
#: extensions/window-list/extension.js:434
msgid "Minimize all"
msgstr "Зегьы реиҟәырҳәра"
#: extensions/window-list/extension.js:440
msgid "Unminimize all"
msgstr "Зегьы рырхынҳәра"
#: extensions/window-list/extension.js:446
msgid "Maximize all"
msgstr "Зегьы реиҵыхра"
#: extensions/window-list/extension.js:454
msgid "Unmaximize all"
msgstr "Зегьы реиҭашьақәыргылара"
#: extensions/window-list/extension.js:462
msgid "Close all"
msgstr "Зегьы рыркра"
#: extensions/window-list/extension.js:741
msgid "Window List"
msgstr "Аԥенџьырқәа рыхьӡынҵа"
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:12
msgid "When to group windows"
msgstr "Аԥенџьырқәа аидыргәыԥлара анаҭаху"
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:13
msgid ""
"Decides when to group windows from the same application on the window list. "
"Possible values are “never”, “auto” and “always”."
msgstr "Иҳәаақәнаҵоит, ианаҭаху ԥшьык иаҵанакуа аԥенџьырқәа реидыргәыԥлара, аԥенџьырқәа рыхьӡынҵаҟны"
" Иҟалар зылшо аҵакқәа : «never» — ахаан; «auto» — автоматла; «always» — есқьынгьы"
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:20
#: extensions/window-list/prefs.js:76
msgid "Show windows from all workspaces"
msgstr "Аҵакырақәа зегьы рҟынтә аԥенџьырқәа раарԥшра"
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:21
msgid "Whether to show windows from all workspaces or only the current one."
msgstr
"Аԥенџьырқәа рыхьӡынҵа аусуратә ҵакырақәа зегь рҟынтә акәу,мамзар уажәтәи аҟынтә акәу ишаарԥшлатәу"
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:27
msgid "Show the window list on all monitors"
msgstr "Аԥенџьырқәа рыхьӡынҵа амониторқәа зегьы рҟны рырбара"
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:28
msgid ""
"Whether to show the window list on all connected monitors or only on the "
"primary one."
msgstr
"Аԥенџьырқәа рыхьӡынҵа иаҿаку амониторқәа зегьы рыҟноума иахьаарԥшлатәу , мамзар ихадоу аҟны акәу."
#: extensions/window-list/prefs.js:32
msgid "Window Grouping"
msgstr "Аԥенџьырқәа реидыргәыԥлара"
#: extensions/window-list/prefs.js:37
msgid "Never group windows"
msgstr "Ахаангьы аԥенџьырқәа реидмыргәыԥлара"
#: extensions/window-list/prefs.js:38
msgid "Group windows when space is limited"
msgstr "Аҭыԥ маҷхазар, аԥенџьырқәа еидшәыргәыԥла"
#: extensions/window-list/prefs.js:39
msgid "Always group windows"
msgstr "Еснагь аԥенџьырқәа реидыргәыԥлара"
#: extensions/window-list/prefs.js:63
msgid "Show on all monitors"
msgstr "Амониторқәа зегьы рҟны рырбара"
#: extensions/window-list/workspaceIndicator.js:249
#: extensions/workspace-indicator/extension.js:254
msgid "Workspace Indicator"
msgstr "Аусуратә ҵакыра аиндикатор"
#: extensions/workspace-indicator/prefs.js:18
msgid "Workspace Names"
msgstr "Аусуратә ҵакырақәа рыхьӡқәа"
#: extensions/workspace-indicator/prefs.js:39
#, javascript-format
msgid "Workspace %d"
msgstr "Аусуратә ҵакыра %d"
#: extensions/workspace-indicator/prefs.js:184
msgid "Add Workspace"
msgstr "Аусуратә ҵакыра ацҵара"
+181 -196
View File
@@ -6,11 +6,11 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: gnome-shell-extensions master\n" "Project-Id-Version: gnome-shell-extensions master\n"
"Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell-extensions/"
"shell&keywords=I18N+L10N&component=extensions\n" "issues\n"
"POT-Creation-Date: 2017-08-19 16:41+0000\n" "POT-Creation-Date: 2021-01-20 23:03+0000\n"
"PO-Revision-Date: 2017-09-01 17:56+0300\n" "PO-Revision-Date: 2021-01-24 15:33+0300\n"
"Last-Translator: Yuras Shumovich <shumovichy@gmail.com>\n" "Last-Translator: Launchpad translators\n"
"Language-Team: Belarusian <i18n-bel-gnome@googlegroups.com>\n" "Language-Team: Belarusian <i18n-bel-gnome@googlegroups.com>\n"
"Language: be\n" "Language: be\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
@@ -18,9 +18,9 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
"X-Generator: Poedit 1.8.11\n" "X-Generator: Poedit 2.4.2\n"
#: data/gnome-classic.desktop.in:3 data/gnome-classic.session.desktop.in:3 #: data/gnome-classic.desktop.in:3
msgid "GNOME Classic" msgid "GNOME Classic"
msgstr "Класічны GNOME" msgstr "Класічны GNOME"
@@ -28,171 +28,69 @@ msgstr "Класічны GNOME"
msgid "This session logs you into GNOME Classic" msgid "This session logs you into GNOME Classic"
msgstr "Гэты сеанс выкарыстоўвае класічны GNOME" msgstr "Гэты сеанс выкарыстоўвае класічны GNOME"
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:7 #: extensions/apps-menu/extension.js:113
msgid "Attach modal dialog to the parent window"
msgstr "Прымацаваць мадальны дыялог да бацькоўскага акна"
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:8
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:25
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:33
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:41
msgid ""
"This key overrides the key in org.gnome.mutter when running GNOME Shell."
msgstr "Гэты ключ засланяе ключ у org.gnome.mutter калі запушчаны GNOME Shell."
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:16
msgid "Arrangement of buttons on the titlebar"
msgstr "Парадак кнопак у загалоўнай стужцы"
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:17
msgid ""
"This key overrides the key in org.gnome.desktop.wm.preferences when running "
"GNOME Shell."
msgstr ""
"Гэты ключ засланяе ключ у org.gnome.desktop.wm.preferences калі запушчаны "
"GNOME Shell."
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:24
msgid "Enable edge tiling when dropping windows on screen edges"
msgstr "Аўтаматычна змяняць памеры акна пры перамяшчэнні да края экрана"
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:32
msgid "Workspaces only on primary monitor"
msgstr "Працоўныя прасторы толькі на асноўным маніторы"
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:40
msgid "Delay focus changes in mouse mode until the pointer stops moving"
msgstr "Затрымліваць змяненні фокуса ў рэжыме мышы да спынення паказальніка"
#: extensions/alternate-tab/prefs.js:20
msgid "Thumbnail only"
msgstr "Толькі мініяцюра"
#: extensions/alternate-tab/prefs.js:21
msgid "Application icon only"
msgstr "Толькі значок праграмы"
#: extensions/alternate-tab/prefs.js:22
msgid "Thumbnail and application icon"
msgstr "Мініяцюра і значок праграмы"
#: extensions/alternate-tab/prefs.js:38
msgid "Present windows as"
msgstr "Адлюстроўваць вокны як"
#: extensions/alternate-tab/prefs.js:69
msgid "Show only windows in the current workspace"
msgstr "Паказваць вокны толькі з бягучай працоўная прасторы"
#: extensions/apps-menu/extension.js:41
msgid "Activities Overview"
msgstr "Агляд заняткаў"
#: extensions/apps-menu/extension.js:141
msgid "Favorites" msgid "Favorites"
msgstr "Упадабаныя" msgstr "Абраныя"
#: extensions/apps-menu/extension.js:436 #: extensions/apps-menu/extension.js:369
msgid "Applications" msgid "Applications"
msgstr "Праграмы" msgstr "Праграмы"
#: extensions/auto-move-windows/org.gnome.shell.extensions.auto-move-windows.gschema.xml:6 #: extensions/auto-move-windows/org.gnome.shell.extensions.auto-move-windows.gschema.xml:6
msgid "Application and workspace list" msgid "Application and workspace list"
msgstr "Праграма і спіс працоўных прастораў" msgstr "Праграма і спіс працоўных прастор"
#: extensions/auto-move-windows/org.gnome.shell.extensions.auto-move-windows.gschema.xml:7 #: extensions/auto-move-windows/org.gnome.shell.extensions.auto-move-windows.gschema.xml:7
msgid "" msgid ""
"A list of strings, each containing an application id (desktop file name), " "A list of strings, each containing an application id (desktop file name), "
"followed by a colon and the workspace number" "followed by a colon and the workspace number"
msgstr "" msgstr ""
"Спіс радкоў, кожны з якіх утрымлівае ідэнтыфікатар праграмы (імя *.desktop " "Спіс радкоў, кожны з якіх змяшчае ідэнтыфікатар праграмы (імя файла *."
"файла), затым двукроп'е і нумар працоўнай прасторы" "desktop), затым двукроп'е і нумар працоўнай прасторы"
#: extensions/auto-move-windows/prefs.js:60 #: extensions/auto-move-windows/prefs.js:35
msgid "Application" msgid "Workspace Rules"
msgstr "Праграма" msgstr "Правілы для працоўнай прасторы"
#: extensions/auto-move-windows/prefs.js:69 #: extensions/auto-move-windows/prefs.js:237
#: extensions/auto-move-windows/prefs.js:127
msgid "Workspace"
msgstr "Працоўная прастора"
#: extensions/auto-move-windows/prefs.js:85
msgid "Add Rule" msgid "Add Rule"
msgstr "Дадаць правіла" msgstr "Дадаць правіла"
#: extensions/auto-move-windows/prefs.js:106
msgid "Create new matching rule"
msgstr "Стварыць новае правіла адпаведнасці"
#: extensions/auto-move-windows/prefs.js:111
msgid "Add"
msgstr "Дадаць"
#. TRANSLATORS: %s is the filesystem name #. TRANSLATORS: %s is the filesystem name
#: extensions/drive-menu/extension.js:107 #: extensions/drive-menu/extension.js:112
#: extensions/places-menu/placeDisplay.js:233
#, javascript-format #, javascript-format
msgid "Ejecting drive “%s” failed:" msgid "Ejecting drive “%s” failed:"
msgstr "Не ўдалося выняць прывод \"%s\":" msgstr "Не ўдалося выняць дыск «%s»:"
#: extensions/drive-menu/extension.js:125 #: extensions/drive-menu/extension.js:128
msgid "Removable devices" msgid "Removable devices"
msgstr "Зменныя прыстасаванні" msgstr "Здымныя прылады"
#: extensions/drive-menu/extension.js:150 #: extensions/drive-menu/extension.js:155
msgid "Open Files" msgid "Open Files"
msgstr "Адкрыць файлы" msgstr "Адкрыць файлы"
#: extensions/example/extension.js:17
msgid "Hello, world!"
msgstr "Прывітанне, свет!"
#: extensions/example/org.gnome.shell.extensions.example.gschema.xml:5
msgid "Alternative greeting text."
msgstr "Альтэрнатыўны тэкст вітання."
#: extensions/example/org.gnome.shell.extensions.example.gschema.xml:6
msgid ""
"If not empty, it contains the text that will be shown when clicking on the "
"panel."
msgstr ""
"Калі не пуста, ўтрымлівае тэкст, які будзе паказвацца пры націсканні на "
"панэль."
#: extensions/example/prefs.js:30
msgid "Message"
msgstr "Паведамленне"
#. TRANSLATORS: Example is the name of the extension, should not be
#. translated
#: extensions/example/prefs.js:43
msgid ""
"Example aims to show how to build well behaved extensions for the Shell and "
"as such it has little functionality on its own.\n"
"Nevertheless 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 #: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:5
#, fuzzy
msgid "Use more screen for windows" msgid "Use more screen for windows"
msgstr "Выкарыстоўваць большую плошчу экрана для вокнаў" msgstr "Выкарыстоўваць большую плошчу экрана для вокнаў"
#: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:6 #: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:6
#, fuzzy
msgid "" msgid ""
"Try to use more screen for placing window thumbnails by adapting to screen " "Try to use more screen for placing window thumbnails by adapting to screen "
"aspect ratio, and consolidating them further to reduce the bounding box. " "aspect ratio, and consolidating them further to reduce the bounding box. "
"This setting applies only with the natural placement strategy." "This setting applies only with the natural placement strategy."
msgstr "" msgstr ""
"Спрабаваць выкарыстаць большую плошчу экрана для размяшчэння мініяцюр шляхам " "Спрабаваць выкарыстаць большую плошчу экрана для размяшчэння мініяцюр праз "
"змянення суадносінаў бакоў экрана і ўшчыльняючы іх з мэтай змяншэння памераў " "змяненне суадносінаў бакоў экрана, ўшчыльняючы іх, каб зменшыць памеры "
"абмежавальнай рамкі. Гэты параметр ужываецца толькі разам з звычайным " "абмежавальнай рамкі. Гэты параметр ужываецца толькі з натуральным "
"размяшчэннем мініяцюр." "размяшчэннем мініяцюр."
#: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:11 #: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:11
msgid "Place window captions on top" msgid "Place window captions on top"
msgstr "Змяшчаць загалоўкі вокнаў зверху" msgstr "Размяшчаць подпіс акна зверху"
#: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:12 #: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:12
msgid "" msgid ""
@@ -200,156 +98,243 @@ msgid ""
"shell default of placing it at the bottom. Changing this setting requires " "shell default of placing it at the bottom. Changing this setting requires "
"restarting the shell to have any effect." "restarting the shell to have any effect."
msgstr "" msgstr ""
"Калі выбрана, загалоўкі вокнаў будуць размешчаны ўверсе мініяцюры, а не " "Калі выбрана, подпіс акна будзе над мініяцюрай, а не пад ей (як "
"знізу, як прадвызначана. Для таго, каб гэтая настройка ўступіла ў сілу, " "перадвызначана). Каб змена налады ўступіла ў сілу, трэба перазапусціць "
"трэба перазапусціць абалонку." "абалонку."
#: extensions/places-menu/extension.js:78 #: extensions/places-menu/extension.js:89
#: extensions/places-menu/extension.js:81 #: extensions/places-menu/extension.js:93
msgid "Places" msgid "Places"
msgstr "Месцы" msgstr "Месцы"
#: extensions/places-menu/placeDisplay.js:65 #: extensions/places-menu/placeDisplay.js:46
#, javascript-format
msgid "Failed to mount volume for “%s”"
msgstr "Не ўдалося прымацаваць том для \"%s\"."
#: extensions/places-menu/placeDisplay.js:78
#, javascript-format #, javascript-format
msgid "Failed to launch “%s”" msgid "Failed to launch “%s”"
msgstr "Не ўдалося запусціць \"%s\"" msgstr "Не ўдалося запусціць «%s»"
#: extensions/places-menu/placeDisplay.js:137 #: extensions/places-menu/placeDisplay.js:61
#: extensions/places-menu/placeDisplay.js:160 #, javascript-format
msgid "Failed to mount volume for “%s”"
msgstr "Не ўдалося прымацаваць том для «%s»."
#: extensions/places-menu/placeDisplay.js:148
#: extensions/places-menu/placeDisplay.js:171
msgid "Computer" msgid "Computer"
msgstr "Камп'ютар" msgstr "Камп'ютар"
#: extensions/places-menu/placeDisplay.js:303 #: extensions/places-menu/placeDisplay.js:359
msgid "Home" msgid "Home"
msgstr "Дамашняя папка" msgstr "Хатняя папка"
#: extensions/places-menu/placeDisplay.js:347 #: extensions/places-menu/placeDisplay.js:404
msgid "Browse Network" msgid "Browse Network"
msgstr "Агляд сеткі" msgstr "Агляд сеткі"
#: extensions/screenshot-window-sizer/org.gnome.shell.extensions.screenshot-window-sizer.gschema.xml:7 #: extensions/screenshot-window-sizer/org.gnome.shell.extensions.screenshot-window-sizer.gschema.xml:7
msgid "Cycle Screenshot Sizes" msgid "Cycle Screenshot Sizes"
msgstr "Чаргаваць памеры экраннага здымка" msgstr "Паслядоўнасць змены памераў для здымка экрана"
#: extensions/screenshot-window-sizer/org.gnome.shell.extensions.screenshot-window-sizer.gschema.xml:11 #: extensions/screenshot-window-sizer/org.gnome.shell.extensions.screenshot-window-sizer.gschema.xml:11
msgid "Cycle Screenshot Sizes Backward" msgid "Cycle Screenshot Sizes Backward"
msgstr "Чаргаваць памеры экраннага здымка ў адваротным напрамку" msgstr "Адваротная паслядоўнасць змены памераў для здымка экрана"
#: extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml:5 #: extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml:5
msgid "Theme name" msgid "Theme name"
msgstr "Імя матыву аздаблення" msgstr "Назва тэмы"
#: extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml:6 #: extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml:6
msgid "The name of the theme, to be loaded from ~/.themes/name/gnome-shell" msgid "The name of the theme, to be loaded from ~/.themes/name/gnome-shell"
msgstr "" msgstr "Назва тэмы, што загрузіцца з ~/.themes/name/gnome-shell"
"Імя матыву аздаблення, які будзе загружаны з ~/.themes/name/gnome-shell"
#: extensions/window-list/extension.js:110 #: extensions/window-list/extension.js:98
msgid "Close" msgid "Close"
msgstr "Закрыць" msgstr "Закрыць"
#: extensions/window-list/extension.js:129 #: extensions/window-list/extension.js:118
msgid "Unminimize" msgid "Unminimize"
msgstr "Скасаваць мінімалізацыю" msgstr "Скасаваць згортванне"
#: extensions/window-list/extension.js:130 #: extensions/window-list/extension.js:118
msgid "Minimize" msgid "Minimize"
msgstr "Мінімалізаваць" msgstr "Згарнуць"
#: extensions/window-list/extension.js:136 #: extensions/window-list/extension.js:125
msgid "Unmaximize" msgid "Unmaximize"
msgstr "Скасаваць максімалізацыю" msgstr "Скасаваць разгортванне"
#: extensions/window-list/extension.js:137 #: extensions/window-list/extension.js:125
msgid "Maximize" msgid "Maximize"
msgstr "Максімалізаваць" msgstr "Разгарнуць"
#: extensions/window-list/extension.js:420 #: extensions/window-list/extension.js:432
msgid "Minimize all" msgid "Minimize all"
msgstr "Мінімалізаваць усе" msgstr "Згарнуць усе"
#: extensions/window-list/extension.js:428 #: extensions/window-list/extension.js:438
msgid "Unminimize all" msgid "Unminimize all"
msgstr "Скасаваць мінімалізацыю для ўсіх" msgstr "Скасаваць згортванне для ўсіх"
#: extensions/window-list/extension.js:436 #: extensions/window-list/extension.js:444
msgid "Maximize all" msgid "Maximize all"
msgstr "Максімалізаваць усе" msgstr "Разгарнуць усе"
#: extensions/window-list/extension.js:445 #: extensions/window-list/extension.js:452
msgid "Unmaximize all" msgid "Unmaximize all"
msgstr "Скасаваць максімалізацыю для ўсіх" msgstr "Скасаваць разгортванне для ўсіх"
#: extensions/window-list/extension.js:454 #: extensions/window-list/extension.js:460
msgid "Close all" msgid "Close all"
msgstr "Закрыць усе" msgstr "Закрыць усе"
#: extensions/window-list/extension.js:678 #: extensions/window-list/extension.js:737
#: extensions/workspace-indicator/extension.js:30
msgid "Workspace Indicator"
msgstr "Індыкатар працоўнай прасторы"
#: extensions/window-list/extension.js:842
msgid "Window List" msgid "Window List"
msgstr "Спіс вокнаў" msgstr "Спіс вокнаў"
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:12 #: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:12
msgid "When to group windows" msgid "When to group windows"
msgstr "Калі групаваць вокны" msgstr "Умовы групавання вокнаў"
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:13 #: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:13
msgid "" msgid ""
"Decides when to group windows from the same application on the window list. " "Decides when to group windows from the same application on the window list. "
"Possible values are “never”, “auto” and “always”." "Possible values are “never”, “auto” and “always”."
msgstr "" msgstr ""
"Вырашае калі групаваць вокны адной праграмы ў спісе вокнаў. Магчымыя " "Вызначае калі групаваць вокны адной праграмы ў спісе вокнаў. Магчымыя "
"значэнні: \"never\" (ніколі), \"auto\" (аўтаматычна), \"always\" (заўсёды)." "значэнні: «never» (ніколі), «auto» (аўтаматычна), «always» (заўсёды)."
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:20 #: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:20
msgid "Show the window list on all monitors" #: extensions/window-list/prefs.js:100
msgstr "Паказаць спіс вокнаў на ўсіх маніторах" msgid "Show windows from all workspaces"
msgstr "Паказваць вокны з усіх працоўных прастор"
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:21 #: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:21
msgid "Whether to show windows from all workspaces or only the current one."
msgstr "Паказваць вокны з усіх працоўных прастор ці толькі з бягучай."
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:27
msgid "Show the window list on all monitors"
msgstr "Паказваць спіс вокнаў на ўсіх маніторах"
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:28
msgid "" msgid ""
"Whether to show the window list on all connected monitors or only on the " "Whether to show the window list on all connected monitors or only on the "
"primary one." "primary one."
msgstr "" msgstr ""
"Ці паказваць спіс вокнаў на ўсіх злучаных маніторах або толькі на галоўным." "Паказваць спіс вокнаў на ўсіх падлучаных маніторах ці толькі на асноўным."
#: extensions/window-list/prefs.js:32 #: extensions/window-list/prefs.js:29
msgid "Window Grouping" msgid "Window Grouping"
msgstr "Групаванне вокнаў" msgstr "Групаванне вокнаў"
#: extensions/window-list/prefs.js:50 #: extensions/window-list/prefs.js:58
msgid "Never group windows" msgid "Never group windows"
msgstr "Ніколі не групаваць вокны" msgstr "Ніколі не групаваць вокны"
#: extensions/window-list/prefs.js:51 #: extensions/window-list/prefs.js:59
msgid "Group windows when space is limited" msgid "Group windows when space is limited"
msgstr "Групаваць вокны калі не хапае месца" msgstr "Групаваць вокны калі не хапае месца"
#: extensions/window-list/prefs.js:52 #: extensions/window-list/prefs.js:60
msgid "Always group windows" msgid "Always group windows"
msgstr "Заўсёды групаваць вокны" msgstr "Заўсёды групаваць вокны"
#: extensions/window-list/prefs.js:75 #: extensions/window-list/prefs.js:94
msgid "Show on all monitors" msgid "Show on all monitors"
msgstr "Паказаць усе маніторы" msgstr "Паказваць на ўсіх маніторах"
#: extensions/workspace-indicator/prefs.js:141 #: extensions/window-list/workspaceIndicator.js:247
#: extensions/workspace-indicator/extension.js:253
msgid "Workspace Indicator"
msgstr "Індыкатар працоўнай прасторы"
#: extensions/workspace-indicator/prefs.js:34
msgid "Workspace Names" msgid "Workspace Names"
msgstr "Назвы працоўных прастораў" msgstr "Назвы працоўных прастор"
#: extensions/workspace-indicator/prefs.js:157 #: extensions/workspace-indicator/prefs.js:67
msgid "Name"
msgstr "Імя"
#: extensions/workspace-indicator/prefs.js:198
#, javascript-format #, javascript-format
msgid "Workspace %d" msgid "Workspace %d"
msgstr "Працоўная прастора %d" msgstr "Працоўная прастора %d"
#: extensions/workspace-indicator/prefs.js:208
msgid "Add Workspace"
msgstr "Дадаць працоўную прастору"
#~ msgid "Attach modal dialog to the parent window"
#~ msgstr "Прымацаваць мадальны дыялог да бацькоўскага акна"
#~ msgid ""
#~ "This key overrides the key in org.gnome.mutter when running GNOME Shell."
#~ msgstr ""
#~ "Гэты ключ засланяе ключ у org.gnome.mutter калі запушчаны GNOME Shell."
#~ msgid "Arrangement of buttons on the titlebar"
#~ msgstr "Парадак кнопак у загалоўнай стужцы"
#~ msgid ""
#~ "This key overrides the key in org.gnome.desktop.wm.preferences when "
#~ "running GNOME Shell."
#~ msgstr ""
#~ "Гэты ключ засланяе ключ у org.gnome.desktop.wm.preferences калі запушчаны "
#~ "GNOME Shell."
#~ msgid "Enable edge tiling when dropping windows on screen edges"
#~ msgstr "Аўтаматычна змяняць памеры акна пры перамяшчэнні да края экрана"
#~ msgid "Workspaces only on primary monitor"
#~ msgstr "Працоўныя прасторы толькі на асноўным маніторы"
#~ msgid "Delay focus changes in mouse mode until the pointer stops moving"
#~ msgstr "Затрымліваць змяненні фокуса ў рэжыме мышы да спынення паказальніка"
#~ msgid "Thumbnail only"
#~ msgstr "Толькі мініяцюра"
#~ msgid "Application icon only"
#~ msgstr "Толькі значок праграмы"
#~ msgid "Thumbnail and application icon"
#~ msgstr "Мініяцюра і значок праграмы"
#~ msgid "Present windows as"
#~ msgstr "Адлюстроўваць вокны як"
#~ msgid "Activities Overview"
#~ msgstr "Агляд заняткаў"
#~ msgid "Application"
#~ msgstr "Праграма"
#~ msgid "Create new matching rule"
#~ msgstr "Стварыць новае правіла адпаведнасці"
#~ msgid "Add"
#~ msgstr "Дадаць"
#~ msgid "Hello, world!"
#~ msgstr "Прывітанне, свет!"
#~ msgid "Alternative greeting text."
#~ msgstr "Альтэрнатыўны тэкст вітання."
#~ msgid ""
#~ "If not empty, it contains the text that will be shown when clicking on "
#~ "the panel."
#~ msgstr ""
#~ "Калі не пуста, ўтрымлівае тэкст, які будзе паказвацца пры націсканні на "
#~ "панэль."
#~ msgid "Message"
#~ msgstr "Паведамленне"
#~ msgid ""
#~ "Example aims to show how to build well behaved extensions for the Shell "
#~ "and as such it has little functionality on its own.\n"
#~ "Nevertheless its possible to customize the greeting message."
#~ msgstr ""
#~ "Example пакажа як ствараць пашырэнні для Shell. Сам па сабе ён мае мала "
#~ "функцыянальнасці.\n"
#~ "Тым не менш, можна змяніць тэкст прывітання."
#~ msgid "Name"
#~ msgstr "Імя"
+272 -359
View File
@@ -1,359 +1,272 @@
# Bulgarian translation for gnome-shell-extensions po-file. # Bulgarian translation for gnome-shell-extensions po-file.
# Copyright (C) 2014, 2015, 2017 Free Software Foundation, Inc. # Copyright (C) 2014, 2015, 2017 Free Software Foundation, Inc.
# This file is distributed under the same license as the gnome-shell-extensions package. # Copyright (C) 2021, 2022 Alexander Shopov <ash@kambanaria.org>.
# Ivaylo Valkov <ivaylo@e-valkov.org>, 2014. # This file is distributed under the same license as the gnome-shell-extensions package.
# Alexander Shopov <ash@kambanaria.org>, 2014, 2015. # Ivaylo Valkov <ivaylo@e-valkov.org>, 2014.
# Lyubomir Vasilev <lyubomirv@abv.bg>, 2017. # Alexander Shopov <ash@kambanaria.org>, 2014, 2015, 2021, 2022.
msgid "" # Lyubomir Vasilev <lyubomirv@abv.bg>, 2017.
msgstr "" msgid ""
"Project-Id-Version: gnome-shell-extensions master\n" msgstr ""
"Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" "Project-Id-Version: gnome-shell-extensions master\n"
"shell&keywords=I18N+L10N&component=extensions\n" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell-extensions/"
"POT-Creation-Date: 2017-09-09 15:20+0000\n" "issues\n"
"PO-Revision-Date: 2017-09-08 08:47+0300\n" "POT-Creation-Date: 2022-02-12 20:25+0000\n"
"Last-Translator: Lyubomir Vasilev <lyubomirv@abv.bg>\n" "PO-Revision-Date: 2022-02-13 11:40+0100\n"
"Language-Team: Bulgarian <dict@fsa-bg.org>\n" "Last-Translator: Alexander Shopov <ash@kambanaria.org>\n"
"Language: bg\n" "Language-Team: Bulgarian <dict@fsa-bg.org>\n"
"MIME-Version: 1.0\n" "Language: bg\n"
"Content-Type: text/plain; charset=UTF-8\n" "MIME-Version: 1.0\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Type: text/plain; charset=UTF-8\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n" "Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: data/gnome-classic.desktop.in:3 data/gnome-classic.session.desktop.in:3
msgid "GNOME Classic" #: data/gnome-classic.desktop.in:3
msgstr "Класически GNOME" msgid "GNOME Classic"
msgstr "Класически GNOME"
#: data/gnome-classic.desktop.in:4
msgid "This session logs you into GNOME Classic" #: data/gnome-classic.desktop.in:4 data/gnome-classic-wayland.desktop.in:4
msgstr "Работната среда изглежда като класическия GNOME (2.x)" #: data/gnome-classic-xorg.desktop.in:4
msgid "This session logs you into GNOME Classic"
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:7 msgstr "Работната среда изглежда като класическия GNOME (2.x)"
msgid "Attach modal dialog to the parent window"
msgstr "Прикрепяне на модалните прозорци към родителските им прозорци" #: data/gnome-classic-wayland.desktop.in:3
msgid "GNOME Classic on Wayland"
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:8 msgstr "Класически GNOME в Wayland"
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:25
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:33 #: data/gnome-classic-xorg.desktop.in:3
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:41 msgid "GNOME Classic on Xorg"
msgid "" msgstr "Класически GNOME в Xorg"
"This key overrides the key in org.gnome.mutter when running GNOME Shell."
msgstr "" #: extensions/apps-menu/extension.js:112
"Този ключ при е с по-голям приоритет от „org.gnome.mutter“ при изпълнението " msgid "Favorites"
"на обвивката на GNOME." msgstr "Любими"
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:16 #: extensions/apps-menu/extension.js:370
msgid "Arrangement of buttons on the titlebar" msgid "Applications"
msgstr одредба на бутоните на заглавната лента" msgstr рограми"
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:17 #: extensions/auto-move-windows/org.gnome.shell.extensions.auto-move-windows.gschema.xml:6
msgid "" msgid "Application and workspace list"
"This key overrides the key in org.gnome.desktop.wm.preferences when running " msgstr "Списък с програмите и работните плотове"
"GNOME Shell."
msgstr "" #: extensions/auto-move-windows/org.gnome.shell.extensions.auto-move-windows.gschema.xml:7
"Този ключ при е с по-голям приоритет от „org.gnome.desktop.wm.preferences“ " msgid ""
"при изпълнението на обвивката на GNOME." "A list of strings, each containing an application id (desktop file name), "
"followed by a colon and the workspace number"
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:24 msgstr ""
msgid "Enable edge tiling when dropping windows on screen edges" "Списък от низове. Всеки съдържа идентификатор на програма (име на файл „."
msgstr "" "desktop“), следван от знака „:“ и номер на работен плот"
"Включване на специална подредба при приближаване на прозорец до ръбовете на "
"екрана" #: extensions/auto-move-windows/prefs.js:19
msgid "Workspace Rules"
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:32 msgstr "Правила за работните плотове"
msgid "Workspaces only on primary monitor"
msgstr "Работни плотове само на основния екран" #: extensions/auto-move-windows/prefs.js:245
msgid "Add Rule"
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:40 msgstr "Добавяне на правило"
msgid "Delay focus changes in mouse mode until the pointer stops moving"
msgstr "Забавяне на смяната на фокуса до спирането на движението на показалеца" #. TRANSLATORS: %s is the filesystem name
#: extensions/drive-menu/extension.js:123
#: extensions/alternate-tab/prefs.js:20 #: extensions/places-menu/placeDisplay.js:210
msgid "Thumbnail only" #, javascript-format
msgstr "Само миниатюри" msgid "Ejecting drive “%s” failed:"
msgstr "Неуспешно изваждане на устройство „%s“:"
#: extensions/alternate-tab/prefs.js:21
msgid "Application icon only" #: extensions/drive-menu/extension.js:139
msgstr "Само икони на приложенията" msgid "Removable devices"
msgstr "Преносими медии"
#: extensions/alternate-tab/prefs.js:22
msgid "Thumbnail and application icon" #: extensions/drive-menu/extension.js:161
msgstr "Миниатюри и икони на приложенията" msgid "Open Files"
msgstr "Отваряне на файлове"
#: extensions/alternate-tab/prefs.js:38
msgid "Present windows as" #: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:5
msgstr "Показване на прозорците като" msgid "Use more screen for windows"
msgstr "Повече пространство за прозорците"
#: extensions/alternate-tab/prefs.js:69
msgid "Show only windows in the current workspace" #: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:6
msgstr "Да се показват само прозорците на текущия работен плот" msgid ""
"Try to use more screen for placing window thumbnails by adapting to screen "
#: extensions/apps-menu/extension.js:41 "aspect ratio, and consolidating them further to reduce the bounding box. "
msgid "Activities Overview" "This setting applies only with the natural placement strategy."
msgstr "Показване на програмите" msgstr ""
"Използване на по-голяма част от екрана за поставянето на мини изображения "
#: extensions/apps-menu/extension.js:141 "чрез промяна на съотношението на страните и допълнително обединяване за "
msgid "Favorites" "смаляване на обхващащия ги правоъгълник. Тази настройка се прилага само при "
msgstr "Любими" "естествената стратегия за поставяне на прозорците."
#: extensions/apps-menu/extension.js:436 #: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:11
msgid "Applications" msgid "Place window captions on top"
msgstr "Програми" msgstr "Заглавия на прозорците отгоре"
#: extensions/auto-move-windows/org.gnome.shell.extensions.auto-move-windows.gschema.xml:6 #: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:12
msgid "Application and workspace list" msgid ""
msgstr "Списък с програмите и работните плотове" "If true, place window captions on top the respective thumbnail, overriding "
"shell default of placing it at the bottom. Changing this setting requires "
#: extensions/auto-move-windows/org.gnome.shell.extensions.auto-move-windows.gschema.xml:7 "restarting the shell to have any effect."
msgid "" msgstr ""
"A list of strings, each containing an application id (desktop file name), " "Ако е истина, заглавията на прозорците се поставят над мини изображенията "
"followed by a colon and the workspace number" "им, а не както е стандартно — отдолу. За прилагане на промяната на "
msgstr "" "настройката трябва да рестартирате обвивката на GNOME."
"Списък от низове. Всеки съдържа идентификатор на програма (име на файл „."
"desktop“ file name), следван от знака „:“ и номер на работен плот" #: extensions/places-menu/extension.js:88
#: extensions/places-menu/extension.js:91
#: extensions/auto-move-windows/prefs.js:60 msgid "Places"
msgid "Application" msgstr "Места"
msgstr "Програма"
#: extensions/places-menu/placeDisplay.js:49
#: extensions/auto-move-windows/prefs.js:69 #, javascript-format
#: extensions/auto-move-windows/prefs.js:127 msgid "Failed to launch “%s”"
msgid "Workspace" msgstr "Неуспешно стартиране на „%s“"
msgstr "Работен плот"
#: extensions/places-menu/placeDisplay.js:64
#: extensions/auto-move-windows/prefs.js:85 #, javascript-format
msgid "Add Rule" msgid "Failed to mount volume for “%s”"
msgstr "Добавяне на правило" msgstr "Неуспешно монтиране на тома „%s“"
#: extensions/auto-move-windows/prefs.js:106 #: extensions/places-menu/placeDisplay.js:125
msgid "Create new matching rule" #: extensions/places-menu/placeDisplay.js:148
msgstr "Създаване на правило за съвпадение" msgid "Computer"
msgstr "Компютър"
#: extensions/auto-move-windows/prefs.js:111
msgid "Add" #: extensions/places-menu/placeDisplay.js:336
msgstr "Добавяне" msgid "Home"
msgstr "Домашна папка"
#. TRANSLATORS: %s is the filesystem name
#: extensions/drive-menu/extension.js:107 #: extensions/places-menu/placeDisplay.js:381
#, javascript-format msgid "Browse Network"
msgid "Ejecting drive “%s” failed:" msgstr "Мрежа"
msgstr "Неуспешно изваждане на устройство „%s“:"
#: extensions/screenshot-window-sizer/org.gnome.shell.extensions.screenshot-window-sizer.gschema.xml:7
#: extensions/drive-menu/extension.js:125 msgid "Cycle Screenshot Sizes"
msgid "Removable devices" msgstr "Смяна на размерите на снимката на екрана"
msgstr "Преносими медии"
#: extensions/screenshot-window-sizer/org.gnome.shell.extensions.screenshot-window-sizer.gschema.xml:11
#: extensions/drive-menu/extension.js:150 msgid "Cycle Screenshot Sizes Backward"
msgid "Open Files" msgstr "Смяна на размерите на снимката на екрана наобратно"
msgstr "Отваряне на файлове"
#: extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml:5
#: extensions/example/extension.js:17 msgid "Theme name"
msgid "Hello, world!" msgstr "Име на темата"
msgstr "Здравей, свят!"
#: extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml:6
#: extensions/example/org.gnome.shell.extensions.example.gschema.xml:5 msgid "The name of the theme, to be loaded from ~/.themes/name/gnome-shell"
msgid "Alternative greeting text." msgstr ""
msgstr "Друго приветстващо съобщение." "Името на темата, която да бъде заредена от „~/.themes/name/gnome-shell“"
#: extensions/example/org.gnome.shell.extensions.example.gschema.xml:6 #: extensions/window-list/extension.js:72
msgid "" msgid "Close"
"If not empty, it contains the text that will be shown when clicking on the " msgstr "Затваряне"
"panel."
msgstr "" #: extensions/window-list/extension.js:92
"Ако ключът не е празен, съдържанието му се извежда при натискането на панела." msgid "Unminimize"
msgstr "Деминимизиране"
#: extensions/example/prefs.js:30
msgid "Message" #: extensions/window-list/extension.js:92
msgstr "Съобщение" msgid "Minimize"
msgstr "Минимизиране"
#. TRANSLATORS: Example is the name of the extension, should not be
#. translated #: extensions/window-list/extension.js:99
#: extensions/example/prefs.js:43 msgid "Unmaximize"
msgid "" msgstr "Демаксимизиране"
"Example aims to show how to build well behaved extensions for the Shell and "
"as such it has little functionality on its own.\n" #: extensions/window-list/extension.js:99
"Nevertheless its possible to customize the greeting message." msgid "Maximize"
msgstr "" msgstr "Максимизиране"
"Това е пример за добре работещо разширение на обвивката на GNOME и има "
"минимална функционалност.\n" #: extensions/window-list/extension.js:434
"С него можете да промените приветстващото съобщение на панела." msgid "Minimize all"
msgstr "Минимизиране на всички"
#: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:5
msgid "Use more screen for windows" #: extensions/window-list/extension.js:440
msgstr "Повече пространство за прозорците" msgid "Unminimize all"
msgstr "Деминимизиране на всички"
#: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:6
msgid "" #: extensions/window-list/extension.js:446
"Try to use more screen for placing window thumbnails by adapting to screen " msgid "Maximize all"
"aspect ratio, and consolidating them further to reduce the bounding box. " msgstr "Максимизиране на всички"
"This setting applies only with the natural placement strategy."
msgstr "" #: extensions/window-list/extension.js:454
"Използване на по-голяма част от екрана за поставянето на мини изображения " msgid "Unmaximize all"
"чрез промяна на съотношението на страните и допълнително обединяване за " msgstr "Демаксимизиране на всички"
"смаляване на обхващащия ги правоъгълник. Тази настройка се прилага само при "
"естествената стратегия за поставяне на прозорците." #: extensions/window-list/extension.js:462
msgid "Close all"
#: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:11 msgstr "Затваряне на всички"
msgid "Place window captions on top"
msgstr "Заглавия на прозорците отгоре" #: extensions/window-list/extension.js:741
msgid "Window List"
#: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:12 msgstr "Списък на прозорците"
msgid ""
"If true, place window captions on top the respective thumbnail, overriding " #: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:12
"shell default of placing it at the bottom. Changing this setting requires " msgid "When to group windows"
"restarting the shell to have any effect." msgstr "Кога прозорците да се групират"
msgstr ""
"Ако е истина, заглавията на прозорците се поставят над мини изображенията " #: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:13
"им, а не както е стандартно — отдолу. За прилагане на промяната на " msgid ""
"настройката трябва да рестартирате обвивката на GNOME." "Decides when to group windows from the same application on the window list. "
"Possible values are “never”, “auto” and “always”."
#: extensions/places-menu/extension.js:78 msgstr ""
#: extensions/places-menu/extension.js:81 "Кога прозорците на една програма да се групират в списъка с прозорците. "
msgid "Places" "Възможните стойности са „never“ (никога), „auto“ (автоматично) и "
msgstr "Места" "„always“ (винаги)."
#: extensions/places-menu/placeDisplay.js:65 #: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:20
#, javascript-format #: extensions/window-list/prefs.js:76
msgid "Failed to mount volume for “%s”" msgid "Show windows from all workspaces"
msgstr "Неуспешно монтиране на тома „%s“" msgstr "Да се показват прозорците от всички работни плотове"
#: extensions/places-menu/placeDisplay.js:78 #: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:21
#, javascript-format msgid "Whether to show windows from all workspaces or only the current one."
msgid "Failed to launch “%s”" msgstr ""
msgstr "Неуспешно стартиране на „%s“" "Дали да се показват прозорците от всички работни плотове или само от текущия."
#: extensions/places-menu/placeDisplay.js:137 #: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:27
#: extensions/places-menu/placeDisplay.js:160 msgid "Show the window list on all monitors"
msgid "Computer" msgstr "Извеждане на списъка с прозорци на всички монитори"
msgstr "Компютър"
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:28
#: extensions/places-menu/placeDisplay.js:303 msgid ""
msgid "Home" "Whether to show the window list on all connected monitors or only on the "
msgstr "Домашна папка" "primary one."
msgstr ""
#: extensions/places-menu/placeDisplay.js:347 "Дали списъкът с прозорци да се извежда на всички монитори или само на "
msgid "Browse Network" "основния"
msgstr "Мрежа"
#: extensions/window-list/prefs.js:32
#: extensions/screenshot-window-sizer/org.gnome.shell.extensions.screenshot-window-sizer.gschema.xml:7 msgid "Window Grouping"
msgid "Cycle Screenshot Sizes" msgstr "Групиране на прозорци"
msgstr "Смяна на размерите на снимката на екрана"
#: extensions/window-list/prefs.js:37
#: extensions/screenshot-window-sizer/org.gnome.shell.extensions.screenshot-window-sizer.gschema.xml:11 msgid "Never group windows"
msgid "Cycle Screenshot Sizes Backward" msgstr "Никога да не се групират"
msgstr "Смяна на размерите на снимката на екрана наобратно"
#: extensions/window-list/prefs.js:38
#: extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml:5 msgid "Group windows when space is limited"
msgid "Theme name" msgstr "Групиране при ограничено място"
msgstr "Име на темата"
#: extensions/window-list/prefs.js:39
#: extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml:6 msgid "Always group windows"
msgid "The name of the theme, to be loaded from ~/.themes/name/gnome-shell" msgstr "Винаги да се групират"
msgstr ""
"Името на темата, която да бъде заредена от „~/.themes/name/gnome-shell“" #: extensions/window-list/prefs.js:63
msgid "Show on all monitors"
#: extensions/window-list/extension.js:110 msgstr "На всички монитори"
msgid "Close"
msgstr "Затваряне" #: extensions/window-list/workspaceIndicator.js:249
#: extensions/workspace-indicator/extension.js:254
#: extensions/window-list/extension.js:129 msgid "Workspace Indicator"
msgid "Unminimize" msgstr "Индикатор на работните плотове"
msgstr "Деминимизиране"
#: extensions/workspace-indicator/prefs.js:18
#: extensions/window-list/extension.js:130 msgid "Workspace Names"
msgid "Minimize" msgstr "Имена на работните плотове"
msgstr "Минимизиране"
#: extensions/workspace-indicator/prefs.js:39
#: extensions/window-list/extension.js:136 #, javascript-format
msgid "Unmaximize" msgid "Workspace %d"
msgstr "Демаксимизиране" msgstr "Работен плот %d"
#: extensions/window-list/extension.js:137 #: extensions/workspace-indicator/prefs.js:184
msgid "Maximize" msgid "Add Workspace"
msgstr "Максимизиране" msgstr "Добавяне на работен плот"
#: extensions/window-list/extension.js:420
msgid "Minimize all"
msgstr "Минимизиране на всички"
#: extensions/window-list/extension.js:428
msgid "Unminimize all"
msgstr "Деминимизиране на всички"
#: extensions/window-list/extension.js:436
msgid "Maximize all"
msgstr "Максимизиране на всички"
#: extensions/window-list/extension.js:445
msgid "Unmaximize all"
msgstr "Демаксимизиране на всички"
#: extensions/window-list/extension.js:454
msgid "Close all"
msgstr "Затваряне на всички"
#: extensions/window-list/extension.js:678
#: extensions/workspace-indicator/extension.js:30
msgid "Workspace Indicator"
msgstr "Индикатор на работните плотове"
#: extensions/window-list/extension.js:842
msgid "Window List"
msgstr "Списък на прозорците"
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:12
msgid "When to group windows"
msgstr "Кога да се групират прозорците"
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:13
msgid ""
"Decides when to group windows from the same application on the window list. "
"Possible values are “never”, “auto” and “always”."
msgstr ""
"Кога да се групират прозорците на една програма в списъка с прозорците. "
"Възможните стойности са „never“ (никога), „auto“ (автоматично) и "
"„always“ (винаги)."
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:20
msgid "Show the window list on all monitors"
msgstr "Извеждане на списъка с прозорци на всички монитори"
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:21
msgid ""
"Whether to show the window list on all connected monitors or only on the "
"primary one."
msgstr ""
"Дали списъкът с прозорци да се извежда на всички монитори или само на "
"основния"
#: extensions/window-list/prefs.js:32
msgid "Window Grouping"
msgstr "Групиране на прозорци"
#: extensions/window-list/prefs.js:50
msgid "Never group windows"
msgstr "Никога да не се групират"
#: extensions/window-list/prefs.js:51
msgid "Group windows when space is limited"
msgstr "Групиране при ограничено място"
#: extensions/window-list/prefs.js:52
msgid "Always group windows"
msgstr "Винаги да се групират"
#: extensions/window-list/prefs.js:75
msgid "Show on all monitors"
msgstr "На всички монитори"
#: extensions/workspace-indicator/prefs.js:141
msgid "Workspace Names"
msgstr "Имена на работните плотове"
#: extensions/workspace-indicator/prefs.js:157
msgid "Name"
msgstr "Име"
#: extensions/workspace-indicator/prefs.js:198
#, javascript-format
msgid "Workspace %d"
msgstr "Работен плот %d"
+209 -219
View File
@@ -1,360 +1,350 @@
# sray <sray@redhat.com>, 2013, 2014. #zanata. # sray <sray@redhat.com>, 2013, 2014. #zanata.
# Akarshan Biswas <akarshan.biswas@hotmail.com>, 2020.
#
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: \n" "Project-Id-Version: unnamed project\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell-extensions/"
"shell&keywords=I18N+L10N&component=extensions\n" "issues\n"
"POT-Creation-Date: 2014-09-22 07:38+0000\n" "POT-Creation-Date: 2020-05-28 00:55+0000\n"
"PO-Revision-Date: 2014-09-22 16:37+0000\n" "PO-Revision-Date: 2020-08-13 10:03+0530\n"
"Last-Translator: \n" "Last-Translator: Akarshan Biswas <akarshan.biswas@hotmail.com>\n"
"Language-Team: American English <kde-i18n-doc@kde.org>\n" "Language-Team: Bengali (India) <anubad@lists.ankur.org.in>\n"
"Language: bn_IN\n" "Language: bn_IN\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Generator: Lokalize 1.5\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n"
"X-DamnedLies-Scope: partial\n"
"X-Generator: Gtranslator 3.36.0\n"
#: ../data/gnome-classic.desktop.in.h:1 #: data/gnome-classic.desktop.in:3 data/gnome-classic.session.desktop.in:3
#: ../data/gnome-classic.session.desktop.in.in.h:1
msgid "GNOME Classic" msgid "GNOME Classic"
msgstr "GNOME ক্লাসিক" msgstr "GNOME ক্লাসিক"
#: ../data/gnome-classic.desktop.in.h:2 #: data/gnome-classic.desktop.in:4
msgid "This session logs you into GNOME Classic" msgid "This session logs you into GNOME Classic"
msgstr "এই সেশন অাপনাকে GNOME ক্লাসিকে লগ করায়" msgstr "এই সেশন পনাকে GNOME ক্লাসিকে লগ করায়"
#: ../data/gnome-shell-classic.desktop.in.in.h:1
msgid "GNOME Shell Classic"
msgstr "GNOME সেল ক্লাসিক"
# auto translated by TM merge from project: gnome-shell, version: 3.8.4, DocId: gnome-shell
#: ../data/gnome-shell-classic.desktop.in.in.h:2
msgid "Window management and application launching"
msgstr "উইন্ডো পরিচালনা ও অ্যাপ্লিকেশন প্রারম্ভ"
#: ../data/org.gnome.shell.extensions.classic-overrides.gschema.xml.in.h:1
msgid "Attach modal dialog to the parent window"
msgstr "প্রধান উইন্ডোতে মোডেল ডায়ালগ সংযুক্ত করুন"
#: ../data/org.gnome.shell.extensions.classic-overrides.gschema.xml.in.h:2
msgid ""
"This key overrides the key in org.gnome.mutter when running GNOME Shell."
msgstr ""
"GNOME সেল চালানোর ক্ষেত্রে এই কী in org.gnome.mutter এর কী ওভাররাইড করে।"
#: ../data/org.gnome.shell.extensions.classic-overrides.gschema.xml.in.h:3
msgid "Arrangement of buttons on the titlebar"
msgstr "শিরোনাম দন্ডে বোতামগুলির সজ্জা"
#: ../data/org.gnome.shell.extensions.classic-overrides.gschema.xml.in.h:4
#| msgid ""
#| "This key overrides the key in org.gnome.mutter when running GNOME Shell."
msgid ""
"This key overrides the key in org.gnome.desktop.wm.preferences when running "
"GNOME Shell."
msgstr ""
"GNOME সেল চালানোর সময়ে এই কী org.gnome.desktop.wm.preferences-এর কী ওভাররাইড "
"করে।"
#: ../data/org.gnome.shell.extensions.classic-overrides.gschema.xml.in.h:5
msgid "Enable edge tiling when dropping windows on screen edges"
msgstr "উইন্ডো স্ক্রীন কিনারায় রাখার সময়ে কিনারা টাইলিং সক্রিয় করুন"
#: ../data/org.gnome.shell.extensions.classic-overrides.gschema.xml.in.h:6
msgid "Workspaces only on primary monitor"
msgstr "শুধুমাত্র প্রধান মনিটরে ওয়ার্কস্পেস"
#: ../data/org.gnome.shell.extensions.classic-overrides.gschema.xml.in.h:7
msgid "Delay focus changes in mouse mode until the pointer stops moving"
msgstr ""
"পয়েন্টার অবস্থান পরিবর্তন না থামানো পর্যন্ত মাউস মোডে ফোকাস পরিবর্তন বিলম্বিত "
"করুন"
#: ../extensions/alternate-tab/prefs.js:20
msgid "Thumbnail only"
msgstr "শুধুমাত্র থাম্বনেইল"
#: ../extensions/alternate-tab/prefs.js:21
msgid "Application icon only"
msgstr "শুধুমাত্র অ্যাপ্লিকেশন অাইকন"
#: ../extensions/alternate-tab/prefs.js:22
msgid "Thumbnail and application icon"
msgstr "থাম্বনেইল এবং অ্যাপ্লিকেশন অাইকন"
#: ../extensions/alternate-tab/prefs.js:38
msgid "Present windows as"
msgstr "এই রূপে উইন্ডো উপস্থাপনা"
#: ../extensions/alternate-tab/prefs.js:69
msgid "Show only windows in the current workspace"
msgstr "শুধুমাত্র উইন্ডো বর্তমান ওয়ার্কস্পেসে দেখান"
#: ../extensions/apps-menu/extension.js:39
msgid "Activities Overview"
msgstr "ক্রিয়াকলাপের পূর্বরূপ"
# auto translated by TM merge from project: system-config-printer, version: 1.1.16-23, DocId: system-config-printer # auto translated by TM merge from project: system-config-printer, version: 1.1.16-23, DocId: system-config-printer
#: ../extensions/apps-menu/extension.js:113 #: extensions/apps-menu/extension.js:113
msgid "Favorites" msgid "Favorites"
msgstr "বিশেষ" msgstr "বিশেষ"
# auto translated by TM merge from project: gnome-menus, version: 3.8.0, DocId: gnome-menus-3.0 # auto translated by TM merge from project: gnome-menus, version: 3.8.0, DocId: gnome-menus-3.0
#: ../extensions/apps-menu/extension.js:282 #: extensions/apps-menu/extension.js:369
msgid "Applications" msgid "Applications"
msgstr "অ্যাপ্লিকেশন" msgstr "অ্যাপ্লিকেশন"
#: ../extensions/auto-move-windows/org.gnome.shell.extensions.auto-move-windows.gschema.xml.in.h:1 #: extensions/auto-move-windows/org.gnome.shell.extensions.auto-move-windows.gschema.xml:6
msgid "Application and workspace list" msgid "Application and workspace list"
msgstr "অ্যাপ্লেকেশন এবং ওয়ার্কস্পেস তালিকা" msgstr "অ্যাপ্লেকেশন এবং ওয়ার্কস্পেস তালিকা"
#: ../extensions/auto-move-windows/org.gnome.shell.extensions.auto-move-windows.gschema.xml.in.h:2 #: extensions/auto-move-windows/org.gnome.shell.extensions.auto-move-windows.gschema.xml:7
msgid "" msgid ""
"A list of strings, each containing an application id (desktop file name), " "A list of strings, each containing an application id (desktop file name), "
"followed by a colon and the workspace number" "followed by a colon and the workspace number"
msgstr "" msgstr ""
"স্ট্রীঙের একটি তালিকা, প্রতিটিতে থাকে একটি অ্যাপ্লিকেশন অাইডি (ডেস্কটপ ফাইল " "স্ট্রীঙের একটি তালিকা, প্রতিটিতে থাকে একটি অ্যাপ্লিকেশন ইডি (ডেস্কটপ ফাইল নাম), "
"নাম), "
"সংগে থাকে যতিচিহ্ন এবং ওয়ার্কস্পেস নম্বর" "সংগে থাকে যতিচিহ্ন এবং ওয়ার্কস্পেস নম্বর"
# auto translated by TM merge from project: yelp, version: 3.8.1, DocId: yelp #: extensions/auto-move-windows/prefs.js:35
#: ../extensions/auto-move-windows/prefs.js:60 #| msgid "Workspace Names"
msgid "Application" msgid "Workspace Rules"
msgstr "অ্যাপ্লিকেশন" msgstr "ওয়ার্কস্পেস নিয়মগুলি"
#: ../extensions/auto-move-windows/prefs.js:69
#: ../extensions/auto-move-windows/prefs.js:127
msgid "Workspace"
msgstr "ওয়ার্কস্পেস"
# auto translated by TM merge from project: evolution, version: el6, DocId: evolution-2.32 # auto translated by TM merge from project: evolution, version: el6, DocId: evolution-2.32
#: ../extensions/auto-move-windows/prefs.js:85 #: extensions/auto-move-windows/prefs.js:243
#| msgid "Add rule"
msgid "Add Rule" msgid "Add Rule"
msgstr "নিয়ম যোগ করুন" msgstr "নিয়ম যোগ করুন"
#: ../extensions/auto-move-windows/prefs.js:106 #. TRANSLATORS: %s is the filesystem name
msgid "Create new matching rule" #: extensions/drive-menu/extension.js:112
msgstr "মেলানোর নতুন নিয়ম তৈরি করুন" #: extensions/places-menu/placeDisplay.js:233
# auto translated by TM merge from project: file-roller, version: 3.8.3, DocId: file-roller
#: ../extensions/auto-move-windows/prefs.js:111
msgid "Add"
msgstr "যোগ করুন"
#: ../extensions/drive-menu/extension.js:106
#, javascript-format #, javascript-format
msgid "Ejecting drive '%s' failed:" #| msgid "Ejecting drive '%s' failed:"
msgstr "'%s' ড্রাইভ ইজেক্ট করা গেল না:" msgid "Ejecting drive “%s” failed:"
msgstr "'%s' ড্রাইভ ইজেক্ট করতে ব্যর্থ :"
#: ../extensions/drive-menu/extension.js:123 #: extensions/drive-menu/extension.js:128
msgid "Removable devices" msgid "Removable devices"
msgstr "অপসারণযোগ্য ডিভাইসগুলি" msgstr "অপসারণযোগ্য ডিভাইসগুলি"
# auto translated by TM merge from project: gnome-user-share, version: 3.8, DocId: gnome-user-share # auto translated by TM merge from project: gnome-user-share, version: 3.8, DocId: gnome-user-share
#: ../extensions/drive-menu/extension.js:150 #: extensions/drive-menu/extension.js:155
msgid "Open File" #| msgid "Open File"
msgid "Open Files"
msgstr "ফাইল খুলুন" msgstr "ফাইল খুলুন"
#: ../extensions/example/extension.js:17 #: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:5
msgid "Hello, world!"
msgstr "ওহে, বিশ্ব!"
#: ../extensions/example/org.gnome.shell.extensions.example.gschema.xml.in.h:1
msgid "Alternative greeting text."
msgstr "বিকল্প অভিবাদন পাঠ্য।"
#: ../extensions/example/org.gnome.shell.extensions.example.gschema.xml.in.h:2
msgid ""
"If not empty, it contains the text that will be shown when clicking on the "
"panel."
msgstr "খালি না থাকলে, তাতে পাঠ্য থাকবে যা প্যানেলে ক্লিক করা হলে দেখানো হবে।"
#: ../extensions/example/prefs.js:30
#| msgid "Message:"
msgid "Message"
msgstr "বার্তা"
#: ../extensions/example/prefs.js:43
msgid ""
"Example aims to show how to build well behaved extensions for the Shell and "
"as such it has little functionality on its own.\n"
"Nevertheless it's possible to customize the greeting message."
msgstr ""
"সেলের জন্য সুস্থিত এক্সটেনশন কীভাবে গঠন করা সম্ভব তা উদাহরণের মাধ্যমে "
"উপস্থাপিত করা "
"হয়।\n"
"উপরন্তু অভিভাদন বার্তা নিজের পছন্দ মতোও করে নেওয়া যায়।"
#: ../extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml.in.h:1
msgid "Use more screen for windows" msgid "Use more screen for windows"
msgstr "উইন্ডোর জন্য অারো স্ক্রীন ব্যবহার করুন" msgstr "উইন্ডোর জন্য রো স্ক্রীন ব্যবহার করুন"
#: ../extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml.in.h:2 #: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:6
msgid "" msgid ""
"Try to use more screen for placing window thumbnails by adapting to screen " "Try to use more screen for placing window thumbnails by adapting to screen "
"aspect ratio, and consolidating them further to reduce the bounding box. " "aspect ratio, and consolidating them further to reduce the bounding box. "
"This setting applies only with the natural placement strategy." "This setting applies only with the natural placement strategy."
msgstr "" msgstr ""
"স্ক্রীন অ্যাসপেক্ট অনুপাত সামঞ্জস্যপূর্ণ করে উইন্ডো থাম্বনেইল রাখার জন্য অারো " "স্ক্রীন অ্যাসপেক্ট অনুপাত সামঞ্জস্যপূর্ণ করে উইন্ডো থাম্বনেইল রাখার জন্য আরো স্ক্রীন "
"স্ক্রীন " "ব্যবহারের চেষ্টা করুন, এবং বাউন্ডিং বক্স কমাতে তাদের সংঘবদ্ধ করার চেষ্টা করুন। এই "
"ব্যবহারের চেষ্টা করুন, এবং বাউন্ডিং বক্স কমাতে তাদের সংঘবদ্ধ করার চেষ্টা "
"করুন। এই "
"সেটিং শুধুমাত্র স্বাভাবিক প্লেসমেন্ট কৌশলের ক্ষেত্রেই প্রযোজ্য হয়।" "সেটিং শুধুমাত্র স্বাভাবিক প্লেসমেন্ট কৌশলের ক্ষেত্রেই প্রযোজ্য হয়।"
#: ../extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml.in.h:3 #: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:11
msgid "Place window captions on top" msgid "Place window captions on top"
msgstr "উইন্ডো ক্যাপশন একেবারে শীর্ষে রাখুন" msgstr "উইন্ডো ক্যাপশন একেবারে শীর্ষে রাখুন"
#: ../extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml.in.h:4 #: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:12
msgid "" msgid ""
"If true, place window captions on top the respective thumbnail, overriding " "If true, place window captions on top the respective thumbnail, overriding "
"shell default of placing it at the bottom. Changing this setting requires " "shell default of placing it at the bottom. Changing this setting requires "
"restarting the shell to have any effect." "restarting the shell to have any effect."
msgstr "" msgstr ""
"যদি সত্য হয়, তলায় রাখার সেল ডিফল্ট ওভাররাইড করে সংশ্লিষ্ট থাম্বনেইলের শীর্ষে " "যদি সত্য হয়, তলায় রাখার সেল ডিফল্ট ওভাররাইড করে সংশ্লিষ্ট থাম্বনেইলের শীর্ষে উইন্ডো "
"উইন্ডো " "ক্যাপশন রাখুন। এই সেটিং পরিবর্তন করলে তা প্রয়োগ করতে সেল বন্ধ করে চালু করতে হবে।"
"ক্যাপশন রাখুন। এই সেটিং পরিবর্তন করলে তা প্রয়োগ করতে সেল বন্ধ করে চালু করতে "
"হবে।"
# auto translated by TM merge from project: file-roller, version: 3.8.3, DocId: file-roller # auto translated by TM merge from project: file-roller, version: 3.8.3, DocId: file-roller
#: ../extensions/places-menu/extension.js:78 #: extensions/places-menu/extension.js:89
#: ../extensions/places-menu/extension.js:81 #: extensions/places-menu/extension.js:93
msgid "Places" msgid "Places"
msgstr "অবস্থান" msgstr "অবস্থান"
#: ../extensions/places-menu/placeDisplay.js:57 #: extensions/places-menu/placeDisplay.js:46
#, javascript-format #, javascript-format
msgid "Failed to launch \"%s\"" #| msgid "Failed to launch \"%s\""
msgstr "\"%s\" লঞ্চ করা গেল না" msgid "Failed to launch “%s”"
msgstr "\"%s\" লঞ্চ করতে ব্যর্থ "
#: extensions/places-menu/placeDisplay.js:61
#, javascript-format
msgid "Failed to mount volume for “%s”"
msgstr "\"%s\" এর জন্য ভলিউম মাউন্ট করতে ব্যর্থ"
# auto translated by TM merge from project: gvfs, version: 1.16.3, DocId: gvfs # auto translated by TM merge from project: gvfs, version: 1.16.3, DocId: gvfs
#: ../extensions/places-menu/placeDisplay.js:99 #: extensions/places-menu/placeDisplay.js:148
#: ../extensions/places-menu/placeDisplay.js:122 #: extensions/places-menu/placeDisplay.js:171
msgid "Computer" msgid "Computer"
msgstr "কম্পিউটার" msgstr "কম্পিউটার"
# auto translated by TM merge from project: rhsm-web, version: 0.0, DocId: management # auto translated by TM merge from project: rhsm-web, version: 0.0, DocId: management
#: ../extensions/places-menu/placeDisplay.js:200 #: extensions/places-menu/placeDisplay.js:359
msgid "Home" msgid "Home"
msgstr "প্রথম পাতা" msgstr "প্রথম পাতা"
#: ../extensions/places-menu/placeDisplay.js:287 #: extensions/places-menu/placeDisplay.js:404
msgid "Browse Network" msgid "Browse Network"
msgstr "নেটওয়ার্ক ব্রাউজ" msgstr "নেটওয়ার্ক ব্রাউজ"
# auto translated by TM merge from project: gnome-system-monitor, version: 3.8.2.1, DocId: gnome-system-monitor #: extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml:5
#: ../extensions/systemMonitor/extension.js:214
msgid "CPU"
msgstr "CPU"
# auto translated by TM merge from project: RHEV Installation Guide, version: 3.1, DocId: topics/Planning_your_Data_Center
#: ../extensions/systemMonitor/extension.js:267
msgid "Memory"
msgstr "মেমরি"
#: ../extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml.in.h:1
msgid "Theme name" msgid "Theme name"
msgstr "থিম নাম" msgstr "থিম নাম"
#: ../extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml.in.h:2 #: extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml:6
msgid "The name of the theme, to be loaded from ~/.themes/name/gnome-shell" msgid "The name of the theme, to be loaded from ~/.themes/name/gnome-shell"
msgstr "থিমের নাম, ~/.themes/name/gnome-shell থেকে লোড করা হবে" msgstr "থিমের নাম, ~/.themes/name/gnome-shell থেকে লোড করা হবে"
#: ../extensions/window-list/extension.js:110 #: extensions/window-list/extension.js:98
msgid "Close" msgid "Close"
msgstr "বন্ধ করুন" msgstr "বন্ধ করুন"
#: ../extensions/window-list/extension.js:120 #: extensions/window-list/extension.js:118
msgid "Unminimize" msgid "Unminimize"
msgstr "অান-মিনিমাইজ" msgstr "ন-মিনিমাইজ"
#: ../extensions/window-list/extension.js:121 #: extensions/window-list/extension.js:118
msgid "Minimize" msgid "Minimize"
msgstr "ছোট করুন" msgstr "ছোট করুন"
#: ../extensions/window-list/extension.js:127 #: extensions/window-list/extension.js:125
msgid "Unmaximize" msgid "Unmaximize"
msgstr "অান-ম্যাক্সিমাইজ" msgstr "ন-ম্যাক্সিমাইজ"
#: ../extensions/window-list/extension.js:128 #: extensions/window-list/extension.js:125
msgid "Maximize" msgid "Maximize"
msgstr "বড় করুন" msgstr "বড় করুন"
#: ../extensions/window-list/extension.js:300 #: extensions/window-list/extension.js:428
msgid "Minimize all" msgid "Minimize all"
msgstr "সকল ছোট করুন" msgstr "সকল ছোট করুন"
#: ../extensions/window-list/extension.js:308 #: extensions/window-list/extension.js:434
msgid "Unminimize all" msgid "Unminimize all"
msgstr "সকল অান-মিনিমাইজ করুন" msgstr "সকল ন-মিনিমাইজ করুন"
#: ../extensions/window-list/extension.js:316 #: extensions/window-list/extension.js:440
msgid "Maximize all" msgid "Maximize all"
msgstr "সকল বড় করুন" msgstr "সকল বড় করুন"
#: ../extensions/window-list/extension.js:325 #: extensions/window-list/extension.js:448
msgid "Unmaximize all" msgid "Unmaximize all"
msgstr "সকল অান-ম্যাক্সিমাইজ করুন" msgstr "সকল ন-ম্যাক্সিমাইজ করুন"
#: ../extensions/window-list/extension.js:334 #: extensions/window-list/extension.js:456
msgid "Close all" msgid "Close all"
msgstr "সকল বন্ধ করুন" msgstr "সকল বন্ধ করুন"
#: ../extensions/window-list/extension.js:644 #: extensions/window-list/extension.js:734
#: ../extensions/workspace-indicator/extension.js:30
msgid "Workspace Indicator"
msgstr "ওয়ার্কস্পেস সূচক"
#: ../extensions/window-list/extension.js:808
#| msgid "Window Grouping"
msgid "Window List" msgid "Window List"
msgstr "উইন্ডো তালিকা" msgstr "উইন্ডো তালিকা"
#: ../extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml.in.h:1 #: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:12
msgid "When to group windows" msgid "When to group windows"
msgstr "উইন্ডো দলভুক্তকরণ" msgstr "উইন্ডো দলভুক্তকরণ"
#: ../extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml.in.h:2 #: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:13
#| msgid ""
#| "Decides when to group windows from the same application on the window "
#| "list. Possible values are \"never\", \"auto\" and \"always\"."
msgid "" msgid ""
"Decides when to group windows from the same application on the window list. " "Decides when to group windows from the same application on the window list. "
"Possible values are \"never\", \"auto\" and \"always\"." "Possible values are never”, “auto and always."
msgstr "" msgstr ""
"উইন্ডো তালিকা একই অ্যাপ্লিকেশন থেকে কখন উইন্ডো দলভুক্ত করা হবে তা সিদ্ধান্ত " "উইন্ডো তালিকা একই অ্যাপ্লিকেশন থেকে কখন উইন্ডোজকে গ্রুপ করবে তা সিদ্ধান্ত নেয়। "
"নেয়। " "সম্ভাব্য মানগুলি হ'ল \"কখনই\", \"স্বয়ং\" এবং \"সর্বদা\"।"
"সম্ভাব্য মানগুলি হল \"কখনও নয়\", \"স্বয়ংক্রিয়\" এবং \"সর্বদা\"।"
#: ../extensions/window-list/prefs.js:30 #: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:20
#: extensions/window-list/prefs.js:100
#| msgid "Show only windows in the current workspace"
msgid "Show windows from all workspaces"
msgstr "সমস্ত ওয়ার্কস্পেসে থেকে উইন্ডো প্রদর্শন করুন"
#: extensions/window-list/prefs.js:29
msgid "Window Grouping" msgid "Window Grouping"
msgstr "উইন্ডো দলভুক্তকরণ" msgstr "উইন্ডো দলভুক্তকরণ"
#: ../extensions/window-list/prefs.js:49 #: extensions/window-list/prefs.js:58
msgid "Never group windows" msgid "Never group windows"
msgstr "উইন্ডো কখনও দলভুক্ত করবেন না" msgstr "উইন্ডো কখনও দলভুক্ত করবেন না"
#: ../extensions/window-list/prefs.js:50 #: extensions/window-list/prefs.js:59
msgid "Group windows when space is limited" msgid "Group windows when space is limited"
msgstr "স্থান কম থাকলে উইন্ডো দলভুক্ত করুন" msgstr "স্থান কম থাকলে উইন্ডো দলভুক্ত করুন"
#: ../extensions/window-list/prefs.js:51 #: extensions/window-list/prefs.js:60
msgid "Always group windows" msgid "Always group windows"
msgstr "উইন্ডো সর্বদা দলভুক্ত করুন" msgstr "উইন্ডো সর্বদা দলভুক্ত করুন"
#: ../extensions/workspace-indicator/prefs.js:141 #: extensions/window-list/prefs.js:94
#| msgid "Workspace names:" msgid "Show on all monitors"
msgstr "সমস্ত মনিটরের উপর দেখান"
#: extensions/window-list/workspaceIndicator.js:207
#: extensions/workspace-indicator/extension.js:213
msgid "Workspace Indicator"
msgstr "ওয়ার্কস্পেস সূচক"
#: extensions/workspace-indicator/prefs.js:34
msgid "Workspace Names" msgid "Workspace Names"
msgstr "ওয়ার্কস্পেস নামগুলি" msgstr "ওয়ার্কস্পেস নামগুলি"
#: ../extensions/workspace-indicator/prefs.js:157 #: extensions/workspace-indicator/prefs.js:67
msgid "Name"
msgstr "নাম"
#: ../extensions/workspace-indicator/prefs.js:198
#, javascript-format #, javascript-format
msgid "Workspace %d" msgid "Workspace %d"
msgstr "ওয়ার্কস্পেস %d" msgstr "ওয়ার্কস্পেস %d"
#: extensions/workspace-indicator/prefs.js:218
#| msgid "Workspace"
msgid "Add Workspace"
msgstr "ওয়ার্কস্পেস যোগ করুন"
#~ msgid "GNOME Shell Classic"
#~ msgstr "GNOME সেল ক্লাসিক"
# auto translated by TM merge from project: gnome-shell, version: 3.8.4, DocId: gnome-shell
#~ msgid "Window management and application launching"
#~ msgstr "উইন্ডো পরিচালনা ও অ্যাপ্লিকেশন প্রারম্ভ"
#~ msgid "Attach modal dialog to the parent window"
#~ msgstr "প্রধান উইন্ডোতে মোডেল ডায়ালগ সংযুক্ত করুন"
#~ msgid ""
#~ "This key overrides the key in org.gnome.mutter when running GNOME Shell."
#~ msgstr ""
#~ "GNOME সেল চালানোর ক্ষেত্রে এই কী in org.gnome.mutter এর কী ওভাররাইড করে।"
#~ msgid "Arrangement of buttons on the titlebar"
#~ msgstr "শিরোনাম দন্ডে বোতামগুলির সজ্জা"
#~| msgid ""
#~| "This key overrides the key in org.gnome.mutter when running GNOME Shell."
#~ msgid ""
#~ "This key overrides the key in org.gnome.desktop.wm.preferences when "
#~ "running GNOME Shell."
#~ msgstr ""
#~ "GNOME সেল চালানোর সময়ে এই কী org.gnome.desktop.wm.preferences-এর কী "
#~ "ওভাররাইড করে।"
#~ msgid "Enable edge tiling when dropping windows on screen edges"
#~ msgstr "উইন্ডো স্ক্রীন কিনারায় রাখার সময়ে কিনারা টাইলিং সক্রিয় করুন"
#~ msgid "Workspaces only on primary monitor"
#~ msgstr "শুধুমাত্র প্রধান মনিটরে ওয়ার্কস্পেস"
#~ msgid "Delay focus changes in mouse mode until the pointer stops moving"
#~ msgstr ""
#~ "পয়েন্টার অবস্থান পরিবর্তন না থামানো পর্যন্ত মাউস মোডে ফোকাস পরিবর্তন বিলম্বিত করুন"
#~ msgid "Thumbnail only"
#~ msgstr "শুধুমাত্র থাম্বনেইল"
#~ msgid "Application icon only"
#~ msgstr "শুধুমাত্র অ্যাপ্লিকেশন আইকন"
#~ msgid "Thumbnail and application icon"
#~ msgstr "থাম্বনেইল এবং অ্যাপ্লিকেশন আইকন"
#~ msgid "Present windows as"
#~ msgstr "এই রূপে উইন্ডো উপস্থাপনা"
#~ msgid "Activities Overview"
#~ msgstr "ক্রিয়াকলাপের পূর্বরূপ"
# auto translated by TM merge from project: yelp, version: 3.8.1, DocId: yelp
#~ msgid "Application"
#~ msgstr "অ্যাপ্লিকেশন"
#~ msgid "Create new matching rule"
#~ msgstr "মেলানোর নতুন নিয়ম তৈরি করুন"
# auto translated by TM merge from project: file-roller, version: 3.8.3, DocId: file-roller
#~ msgid "Add"
#~ msgstr "যোগ করুন"
#~ msgid "Hello, world!"
#~ msgstr "ওহে, বিশ্ব!"
#~ msgid "Alternative greeting text."
#~ msgstr "বিকল্প অভিবাদন পাঠ্য।"
#~ msgid ""
#~ "If not empty, it contains the text that will be shown when clicking on "
#~ "the panel."
#~ msgstr "খালি না থাকলে, তাতে পাঠ্য থাকবে যা প্যানেলে ক্লিক করা হলে দেখানো হবে।"
#~| msgid "Message:"
#~ msgid "Message"
#~ msgstr "বার্তা"
#~ msgid ""
#~ "Example aims to show how to build well behaved extensions for the Shell "
#~ "and as such it has little functionality on its own.\n"
#~ "Nevertheless it's possible to customize the greeting message."
#~ msgstr ""
#~ "সেলের জন্য সুস্থিত এক্সটেনশন কীভাবে গঠন করা সম্ভব তা উদাহরণের মাধ্যমে উপস্থাপিত "
#~ "করা হয়।\n"
#~ "উপরন্তু অভিভাদন বার্তা নিজের পছন্দ মতোও করে নেওয়া যায়।"
# auto translated by TM merge from project: gnome-system-monitor, version: 3.8.2.1, DocId: gnome-system-monitor
#~ msgid "CPU"
#~ msgstr "CPU"
# auto translated by TM merge from project: RHEV Installation Guide, version: 3.1, DocId: topics/Planning_your_Data_Center
#~ msgid "Memory"
#~ msgstr "মেমরি"
#~ msgid "Name"
#~ msgstr "নাম"
# auto translated by TM merge from project: gdm, version: 3.8.4, DocId: gdm # auto translated by TM merge from project: gdm, version: 3.8.4, DocId: gdm
#~ msgid "Suspend" #~ msgid "Suspend"
#~ msgstr "স্থগিত করুন" #~ msgstr "স্থগিত করুন"
@@ -370,13 +360,13 @@ msgstr "ওয়ার্কস্পেস %d"
#~ msgstr "স্থগিত সক্রিয় করুন" #~ msgstr "স্থগিত সক্রিয় করুন"
#~ msgid "Control the visibility of the Suspend menu item" #~ msgid "Control the visibility of the Suspend menu item"
#~ msgstr "স্থগিত মেনু অাইটেমের দৃশ্যমানতা নিয়ন্ত্রণ করুন" #~ msgstr "স্থগিত মেনু ইটেমের দৃশ্যমানতা নিয়ন্ত্রণ করুন"
#~ msgid "Enable hibernating" #~ msgid "Enable hibernating"
#~ msgstr "নিদ্রিত অবস্থা সক্রিয় করুন" #~ msgstr "নিদ্রিত অবস্থা সক্রিয় করুন"
#~ msgid "Control the visibility of the Hibernate menu item" #~ msgid "Control the visibility of the Hibernate menu item"
#~ msgstr "নিদ্রিত অবস্থা মেনু অাইটেমের দৃশ্যমানতা নিয়ন্ত্রণ করুন" #~ msgstr "নিদ্রিত অবস্থা মেনু ইটেমের দৃশ্যমানতা নিয়ন্ত্রণ করুন"
#~ msgid "Normal" #~ msgid "Normal"
#~ msgstr "স্বাভাবিক" #~ msgstr "স্বাভাবিক"
+56 -59
View File
@@ -9,7 +9,7 @@ msgstr ""
"Project-Id-Version: gnome-shell-extensions\n" "Project-Id-Version: gnome-shell-extensions\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell-extensions/" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell-extensions/"
"issues\n" "issues\n"
"POT-Creation-Date: 2019-08-09 22:24+0000\n" "POT-Creation-Date: 2021-11-06 14:08+0000\n"
"PO-Revision-Date: 2017-07-08 13:29+0100\n" "PO-Revision-Date: 2017-07-08 13:29+0100\n"
"Last-Translator: Jordi Mas <jmas@softcatala.org>\n" "Last-Translator: Jordi Mas <jmas@softcatala.org>\n"
"Language-Team: Catalan <tradgnome@softcatala.org>\n" "Language-Team: Catalan <tradgnome@softcatala.org>\n"
@@ -19,19 +19,28 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n" "Plural-Forms: nplurals=2; plural=n != 1;\n"
#: data/gnome-classic.desktop.in:3 data/gnome-classic.session.desktop.in:3 #: data/gnome-classic.desktop.in:3
msgid "GNOME Classic" msgid "GNOME Classic"
msgstr "GNOME clàssic" msgstr "GNOME clàssic"
#: data/gnome-classic.desktop.in:4 #: data/gnome-classic.desktop.in:4 data/gnome-classic-wayland.desktop.in:4
#: data/gnome-classic-xorg.desktop.in:4
msgid "This session logs you into GNOME Classic" msgid "This session logs you into GNOME Classic"
msgstr "Aquesta sessió us permet utilitzar el GNOME clàssic" msgstr "Aquesta sessió us permet utilitzar el GNOME clàssic"
#: extensions/apps-menu/extension.js:113 #: data/gnome-classic-wayland.desktop.in:3
msgid "GNOME Classic on Wayland"
msgstr "GNOME clàssic amb Wayland"
#: data/gnome-classic-xorg.desktop.in:3
msgid "GNOME Classic on Xorg"
msgstr "GNOME clàssic amb Xorg"
#: extensions/apps-menu/extension.js:112
msgid "Favorites" msgid "Favorites"
msgstr "Preferides" msgstr "Preferides"
#: extensions/apps-menu/extension.js:368 #: extensions/apps-menu/extension.js:366
msgid "Applications" msgid "Applications"
msgstr "Aplicacions" msgstr "Aplicacions"
@@ -48,39 +57,26 @@ msgstr ""
"d'aplicació (nom del fitxer de l'escriptori), seguit de dos punts i el " "d'aplicació (nom del fitxer de l'escriptori), seguit de dos punts i el "
"número de l'espai de treball" "número de l'espai de treball"
#: extensions/auto-move-windows/prefs.js:60 #: extensions/auto-move-windows/prefs.js:34
msgid "Application" msgid "Workspace Rules"
msgstr "Aplicació" msgstr "Regles dels espais de treball"
#: extensions/auto-move-windows/prefs.js:71 #: extensions/auto-move-windows/prefs.js:236
#: extensions/auto-move-windows/prefs.js:134
msgid "Workspace"
msgstr "Espai de treball"
#: extensions/auto-move-windows/prefs.js:89
msgid "Add Rule" msgid "Add Rule"
msgstr "Afegeix una regla" msgstr "Afegeix una regla"
#: extensions/auto-move-windows/prefs.js:111
msgid "Create new matching rule"
msgstr "Crea una regla de coincidència nova"
#: extensions/auto-move-windows/prefs.js:117
msgid "Add"
msgstr "Afegeix"
#. TRANSLATORS: %s is the filesystem name #. TRANSLATORS: %s is the filesystem name
#: extensions/drive-menu/extension.js:102 #: extensions/drive-menu/extension.js:133
#: extensions/places-menu/placeDisplay.js:232 #: extensions/places-menu/placeDisplay.js:233
#, javascript-format #, javascript-format
msgid "Ejecting drive “%s” failed:" msgid "Ejecting drive “%s” failed:"
msgstr "Ha fallat l'expulsió de la unitat «%s»:" msgstr "Ha fallat l'expulsió de la unitat «%s»:"
#: extensions/drive-menu/extension.js:118 #: extensions/drive-menu/extension.js:149
msgid "Removable devices" msgid "Removable devices"
msgstr "Dispositius extraïbles" msgstr "Dispositius extraïbles"
#: extensions/drive-menu/extension.js:145 #: extensions/drive-menu/extension.js:171
msgid "Open Files" msgid "Open Files"
msgstr "Obre els fitxers" msgstr "Obre els fitxers"
@@ -94,10 +90,10 @@ msgid ""
"aspect ratio, and consolidating them further to reduce the bounding box. " "aspect ratio, and consolidating them further to reduce the bounding box. "
"This setting applies only with the natural placement strategy." "This setting applies only with the natural placement strategy."
msgstr "" msgstr ""
"Intenta utilitzar més espai de la pantalla per posicionar les miniatures de " "Intenta utilitzar més espai de la pantalla per a posicionar les miniatures "
"les finestres adaptant-les a la ràtio d'aspecte de la pantalla, consolidant-" "de les finestres adaptant-les a la ràtio d'aspecte de la pantalla, "
"les més per reduir la capsa que les envolta. Aquest paràmetre de " "consolidant-les més per a reduir la caixa que les envolta. Aquest paràmetre "
"configuració només s'aplica a l'estratègia de posicionament de finestres " "de configuració només s'aplica a l'estratègia de posicionament de finestres "
"natural." "natural."
#: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:11 #: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:11
@@ -115,8 +111,8 @@ msgstr ""
"posicionar-lo a baix. Cal reiniciar el Shell per tal que aquest canvi tingui " "posicionar-lo a baix. Cal reiniciar el Shell per tal que aquest canvi tingui "
"efecte." "efecte."
#: extensions/places-menu/extension.js:80 #: extensions/places-menu/extension.js:88
#: extensions/places-menu/extension.js:84 #: extensions/places-menu/extension.js:91
msgid "Places" msgid "Places"
msgstr "Llocs" msgstr "Llocs"
@@ -135,11 +131,11 @@ msgstr "No s'ha pogut muntar el volum «%s»"
msgid "Computer" msgid "Computer"
msgstr "Ordinador" msgstr "Ordinador"
#: extensions/places-menu/placeDisplay.js:358 #: extensions/places-menu/placeDisplay.js:359
msgid "Home" msgid "Home"
msgstr "Inici" msgstr "Inici"
#: extensions/places-menu/placeDisplay.js:403 #: extensions/places-menu/placeDisplay.js:404
msgid "Browse Network" msgid "Browse Network"
msgstr "Navega per la xarxa" msgstr "Navega per la xarxa"
@@ -159,43 +155,43 @@ msgstr "Nom del tema"
msgid "The name of the theme, to be loaded from ~/.themes/name/gnome-shell" msgid "The name of the theme, to be loaded from ~/.themes/name/gnome-shell"
msgstr "El nom del tema que es carregarà des de ~/.themes/name/gnome-shell" msgstr "El nom del tema que es carregarà des de ~/.themes/name/gnome-shell"
#: extensions/window-list/extension.js:99 #: extensions/window-list/extension.js:72
msgid "Close" msgid "Close"
msgstr "Tanca" msgstr "Tanca"
#: extensions/window-list/extension.js:119 #: extensions/window-list/extension.js:92
msgid "Unminimize" msgid "Unminimize"
msgstr "Desminimitza" msgstr "Desminimitza"
#: extensions/window-list/extension.js:119 #: extensions/window-list/extension.js:92
msgid "Minimize" msgid "Minimize"
msgstr "Minimitza" msgstr "Minimitza"
#: extensions/window-list/extension.js:126 #: extensions/window-list/extension.js:99
msgid "Unmaximize" msgid "Unmaximize"
msgstr "Desmaximitza" msgstr "Desmaximitza"
#: extensions/window-list/extension.js:126 #: extensions/window-list/extension.js:99
msgid "Maximize" msgid "Maximize"
msgstr "Maximitza" msgstr "Maximitza"
#: extensions/window-list/extension.js:431 #: extensions/window-list/extension.js:434
msgid "Minimize all" msgid "Minimize all"
msgstr "Minimitza-ho tot" msgstr "Minimitza-ho tot"
#: extensions/window-list/extension.js:437 #: extensions/window-list/extension.js:440
msgid "Unminimize all" msgid "Unminimize all"
msgstr "Desminimitza-ho tot" msgstr "Desminimitza-ho tot"
#: extensions/window-list/extension.js:443 #: extensions/window-list/extension.js:446
msgid "Maximize all" msgid "Maximize all"
msgstr "Maximitza-ho tot" msgstr "Maximitza-ho tot"
#: extensions/window-list/extension.js:451 #: extensions/window-list/extension.js:454
msgid "Unmaximize all" msgid "Unmaximize all"
msgstr "Desmaximitza-ho tot" msgstr "Desmaximitza-ho tot"
#: extensions/window-list/extension.js:459 #: extensions/window-list/extension.js:462
msgid "Close all" msgid "Close all"
msgstr "Tanca-ho tot" msgstr "Tanca-ho tot"
@@ -217,13 +213,15 @@ msgstr ""
"«auto» (automàticament) i «always» (sempre)." "«auto» (automàticament) i «always» (sempre)."
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:20 #: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:20
#: extensions/window-list/prefs.js:82 #: extensions/window-list/prefs.js:86
msgid "Show windows from all workspaces" msgid "Show windows from all workspaces"
msgstr "Mostra les finestres de tots els espais de treball" msgstr "Mostra les finestres de tots els espais de treball"
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:21 #: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:21
msgid "Whether to show windows from all workspaces or only the current one." msgid "Whether to show windows from all workspaces or only the current one."
msgstr "Si es mostren les finestres de tots els espais de treballs o només de l'actual. " msgstr ""
"Si es mostren les finestres de tots els espais de treballs o només de "
"l'actual."
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:27 #: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:27
msgid "Show the window list on all monitors" msgid "Show the window list on all monitors"
@@ -237,41 +235,40 @@ msgstr ""
"Si es mostra la llista de finestres en tots els monitors connectats o només " "Si es mostra la llista de finestres en tots els monitors connectats o només "
"al primari." "al primari."
#: extensions/window-list/prefs.js:25 #: extensions/window-list/prefs.js:39
msgid "Window Grouping" msgid "Window Grouping"
msgstr "Agrupació de finestres" msgstr "Agrupació de finestres"
#: extensions/window-list/prefs.js:47 #: extensions/window-list/prefs.js:63
msgid "Never group windows" msgid "Never group windows"
msgstr "Mai agrupis les finestres" msgstr "Mai agrupis les finestres"
#: extensions/window-list/prefs.js:48 #: extensions/window-list/prefs.js:64
msgid "Group windows when space is limited" msgid "Group windows when space is limited"
msgstr "Agrupa les finestres quan l'espai estigui limitat" msgstr "Agrupa les finestres quan l'espai estigui limitat"
#: extensions/window-list/prefs.js:49 #: extensions/window-list/prefs.js:65
msgid "Always group windows" msgid "Always group windows"
msgstr "Agrupa les finestres sempre" msgstr "Agrupa les finestres sempre"
#: extensions/window-list/prefs.js:75 #: extensions/window-list/prefs.js:81
msgid "Show on all monitors" msgid "Show on all monitors"
msgstr "Mostra a tots els monitors" msgstr "Mostra a tots els monitors"
#: extensions/window-list/workspaceIndicator.js:211 #: extensions/window-list/workspaceIndicator.js:249
#: extensions/workspace-indicator/extension.js:216 #: extensions/workspace-indicator/extension.js:254
msgid "Workspace Indicator" msgid "Workspace Indicator"
msgstr "Indicador de l'espai de treball" msgstr "Indicador de l'espai de treball"
#: extensions/workspace-indicator/prefs.js:131 #: extensions/workspace-indicator/prefs.js:33
msgid "Workspace Names" msgid "Workspace Names"
msgstr "Noms dels espais de treball" msgstr "Noms dels espais de treball"
#: extensions/workspace-indicator/prefs.js:151 #: extensions/workspace-indicator/prefs.js:66
msgid "Name"
msgstr "Nom"
#: extensions/workspace-indicator/prefs.js:191
#, javascript-format #, javascript-format
msgid "Workspace %d" msgid "Workspace %d"
msgstr "Espai de treball %d" msgstr "Espai de treball %d"
#: extensions/workspace-indicator/prefs.js:207
msgid "Add Workspace"
msgstr "Afegeix un espai de treball"
+41 -54
View File
@@ -2,15 +2,15 @@
# Copyright (C) 2011 gnome-shell-extensions's COPYRIGHT HOLDER # Copyright (C) 2011 gnome-shell-extensions's COPYRIGHT HOLDER
# This file is distributed under the same license as the gnome-shell-extensions package. # This file is distributed under the same license as the gnome-shell-extensions package.
# Petr Kovar <pknbe@volny.cz>, 2013. # Petr Kovar <pknbe@volny.cz>, 2013.
# Marek Černocký <marek@manet.cz>, 2011, 2012, 2013, 2014, 2015, 2017, 2019. # Marek Černocký <marek@manet.cz>, 2011, 2012, 2013, 2014, 2015, 2017, 2019, 2020.
# #
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: gnome-shell-extensions\n" "Project-Id-Version: gnome-shell-extensions\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell-extensions/" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell-extensions/"
"issues\n" "issues\n"
"POT-Creation-Date: 2019-08-09 22:24+0000\n" "POT-Creation-Date: 2020-05-28 00:55+0000\n"
"PO-Revision-Date: 2019-08-16 10:16+0200\n" "PO-Revision-Date: 2020-08-28 22:18+0200\n"
"Last-Translator: Marek Černocký <marek@manet.cz>\n" "Last-Translator: Marek Černocký <marek@manet.cz>\n"
"Language-Team: Czech <gnome-cs-list@gnome.org>\n" "Language-Team: Czech <gnome-cs-list@gnome.org>\n"
"Language: cs\n" "Language: cs\n"
@@ -32,7 +32,7 @@ msgstr "Toto sezení vás přihlásí do GNOME klasik"
msgid "Favorites" msgid "Favorites"
msgstr "Oblíbené" msgstr "Oblíbené"
#: extensions/apps-menu/extension.js:368 #: extensions/apps-menu/extension.js:369
msgid "Applications" msgid "Applications"
msgstr "Aplikace" msgstr "Aplikace"
@@ -48,39 +48,26 @@ msgstr ""
"Seznam řetězců, z nichž každý obsahuje ID aplikace (název souboru pracovní " "Seznam řetězců, z nichž každý obsahuje ID aplikace (název souboru pracovní "
"plochy), následovaný dvojtečkou a číslem pracovní plochy" "plochy), následovaný dvojtečkou a číslem pracovní plochy"
#: extensions/auto-move-windows/prefs.js:60 #: extensions/auto-move-windows/prefs.js:35
msgid "Application" msgid "Workspace Rules"
msgstr "Aplikace" msgstr "Pravidla pracovních ploch"
#: extensions/auto-move-windows/prefs.js:71 #: extensions/auto-move-windows/prefs.js:243
#: extensions/auto-move-windows/prefs.js:134
msgid "Workspace"
msgstr "Pracovní plocha"
#: extensions/auto-move-windows/prefs.js:89
msgid "Add Rule" msgid "Add Rule"
msgstr "Přidat pravidlo" msgstr "Přidat pravidlo"
#: extensions/auto-move-windows/prefs.js:111
msgid "Create new matching rule"
msgstr "Vytvoření nového srovnávacího pravidla"
#: extensions/auto-move-windows/prefs.js:117
msgid "Add"
msgstr "Přidat"
#. TRANSLATORS: %s is the filesystem name #. TRANSLATORS: %s is the filesystem name
#: extensions/drive-menu/extension.js:102 #: extensions/drive-menu/extension.js:112
#: extensions/places-menu/placeDisplay.js:232 #: extensions/places-menu/placeDisplay.js:233
#, javascript-format #, javascript-format
msgid "Ejecting drive “%s” failed:" msgid "Ejecting drive “%s” failed:"
msgstr "Vysunutí disku „%s“ selhalo:" msgstr "Vysunutí disku „%s“ selhalo:"
#: extensions/drive-menu/extension.js:118 #: extensions/drive-menu/extension.js:128
msgid "Removable devices" msgid "Removable devices"
msgstr "Výměnná zařízení" msgstr "Výměnná zařízení"
#: extensions/drive-menu/extension.js:145 #: extensions/drive-menu/extension.js:155
msgid "Open Files" msgid "Open Files"
msgstr "Otevřít soubory" msgstr "Otevřít soubory"
@@ -112,8 +99,8 @@ msgstr ""
"přepíše výchozí chování shellu, který jej umisťuje dolů. Změna tohoto " "přepíše výchozí chování shellu, který jej umisťuje dolů. Změna tohoto "
"nastavení vyžaduje restart shellu, aby se projevila." "nastavení vyžaduje restart shellu, aby se projevila."
#: extensions/places-menu/extension.js:80 #: extensions/places-menu/extension.js:89
#: extensions/places-menu/extension.js:84 #: extensions/places-menu/extension.js:93
msgid "Places" msgid "Places"
msgstr "Místa" msgstr "Místa"
@@ -132,11 +119,11 @@ msgstr "Selhalo připojení svazku pro „%s“"
msgid "Computer" msgid "Computer"
msgstr "Počítač" msgstr "Počítač"
#: extensions/places-menu/placeDisplay.js:358 #: extensions/places-menu/placeDisplay.js:359
msgid "Home" msgid "Home"
msgstr "Domů" msgstr "Domů"
#: extensions/places-menu/placeDisplay.js:403 #: extensions/places-menu/placeDisplay.js:404
msgid "Browse Network" msgid "Browse Network"
msgstr "Procházet síť" msgstr "Procházet síť"
@@ -156,47 +143,47 @@ msgstr "Název motivu"
msgid "The name of the theme, to be loaded from ~/.themes/name/gnome-shell" msgid "The name of the theme, to be loaded from ~/.themes/name/gnome-shell"
msgstr "Název motivu, který se má načíst z ~/.themes/name/gnome-shell" msgstr "Název motivu, který se má načíst z ~/.themes/name/gnome-shell"
#: extensions/window-list/extension.js:99 #: extensions/window-list/extension.js:98
msgid "Close" msgid "Close"
msgstr "Zavřít" msgstr "Zavřít"
#: extensions/window-list/extension.js:119 #: extensions/window-list/extension.js:118
msgid "Unminimize" msgid "Unminimize"
msgstr "Zrušit minimalizaci" msgstr "Zrušit minimalizaci"
#: extensions/window-list/extension.js:119 #: extensions/window-list/extension.js:118
msgid "Minimize" msgid "Minimize"
msgstr "Minimalizovat" msgstr "Minimalizovat"
#: extensions/window-list/extension.js:126 #: extensions/window-list/extension.js:125
msgid "Unmaximize" msgid "Unmaximize"
msgstr "Zrušit maximalizaci" msgstr "Zrušit maximalizaci"
#: extensions/window-list/extension.js:126 #: extensions/window-list/extension.js:125
msgid "Maximize" msgid "Maximize"
msgstr "Maximalizovat" msgstr "Maximalizovat"
#: extensions/window-list/extension.js:431 #: extensions/window-list/extension.js:428
msgid "Minimize all" msgid "Minimize all"
msgstr "Minimalizovat všechna" msgstr "Minimalizovat všechna"
#: extensions/window-list/extension.js:437 #: extensions/window-list/extension.js:434
msgid "Unminimize all" msgid "Unminimize all"
msgstr "Zrušit minimalizaci všech" msgstr "Zrušit minimalizaci všech"
#: extensions/window-list/extension.js:443 #: extensions/window-list/extension.js:440
msgid "Maximize all" msgid "Maximize all"
msgstr "Maximalizovat všechna" msgstr "Maximalizovat všechna"
#: extensions/window-list/extension.js:451 #: extensions/window-list/extension.js:448
msgid "Unmaximize all" msgid "Unmaximize all"
msgstr "Zrušit maximalizaci všech" msgstr "Zrušit maximalizaci všech"
#: extensions/window-list/extension.js:459 #: extensions/window-list/extension.js:456
msgid "Close all" msgid "Close all"
msgstr "Zavřít všechna" msgstr "Zavřít všechna"
#: extensions/window-list/extension.js:741 #: extensions/window-list/extension.js:734
msgid "Window List" msgid "Window List"
msgstr "Seznam oken" msgstr "Seznam oken"
@@ -213,7 +200,7 @@ msgstr ""
"hodnoty jsou „never“ (nikdy), „auto“ (automaticky) a „always“ (vždy)." "hodnoty jsou „never“ (nikdy), „auto“ (automaticky) a „always“ (vždy)."
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:20 #: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:20
#: extensions/window-list/prefs.js:82 #: extensions/window-list/prefs.js:100
msgid "Show windows from all workspaces" msgid "Show windows from all workspaces"
msgstr "Zobrazovat okna ze všech pracovních ploch" msgstr "Zobrazovat okna ze všech pracovních ploch"
@@ -233,40 +220,40 @@ msgstr ""
"Zda zobrazovat seznam oken na všech připojených monitorech nebo jen na " "Zda zobrazovat seznam oken na všech připojených monitorech nebo jen na "
"hlavním." "hlavním."
#: extensions/window-list/prefs.js:25 #: extensions/window-list/prefs.js:29
msgid "Window Grouping" msgid "Window Grouping"
msgstr "Seskupování oken" msgstr "Seskupování oken"
#: extensions/window-list/prefs.js:47 #: extensions/window-list/prefs.js:58
msgid "Never group windows" msgid "Never group windows"
msgstr "Nikdy neseskupovat okna" msgstr "Nikdy neseskupovat okna"
#: extensions/window-list/prefs.js:48 #: extensions/window-list/prefs.js:59
msgid "Group windows when space is limited" msgid "Group windows when space is limited"
msgstr "Seskupovat okna při nedostatku místa" msgstr "Seskupovat okna při nedostatku místa"
#: extensions/window-list/prefs.js:49 #: extensions/window-list/prefs.js:60
msgid "Always group windows" msgid "Always group windows"
msgstr "Vždy seskupovat okna" msgstr "Vždy seskupovat okna"
#: extensions/window-list/prefs.js:75 #: extensions/window-list/prefs.js:94
msgid "Show on all monitors" msgid "Show on all monitors"
msgstr "Zobrazovat na všech monitorech" msgstr "Zobrazovat na všech monitorech"
#: extensions/window-list/workspaceIndicator.js:211 #: extensions/window-list/workspaceIndicator.js:207
#: extensions/workspace-indicator/extension.js:216 #: extensions/workspace-indicator/extension.js:213
msgid "Workspace Indicator" msgid "Workspace Indicator"
msgstr "Ukazatel pracovní plochy" msgstr "Ukazatel pracovní plochy"
#: extensions/workspace-indicator/prefs.js:131 #: extensions/workspace-indicator/prefs.js:34
msgid "Workspace Names" msgid "Workspace Names"
msgstr "Názvy pracovních ploch" msgstr "Názvy pracovních ploch"
#: extensions/workspace-indicator/prefs.js:151 #: extensions/workspace-indicator/prefs.js:67
msgid "Name"
msgstr "Název"
#: extensions/workspace-indicator/prefs.js:191
#, javascript-format #, javascript-format
msgid "Workspace %d" msgid "Workspace %d"
msgstr "Pracovní plocha %d" msgstr "Pracovní plocha %d"
#: extensions/workspace-indicator/prefs.js:218
msgid "Add Workspace"
msgstr "Přidat pracovní plochu"
+56 -55
View File
@@ -11,15 +11,16 @@ msgstr ""
"Project-Id-Version: gnome-shell-extensions master\n" "Project-Id-Version: gnome-shell-extensions master\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell-extensions/" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell-extensions/"
"issues\n" "issues\n"
"POT-Creation-Date: 2019-08-09 22:24+0000\n" "POT-Creation-Date: 2020-05-28 00:55+0000\n"
"PO-Revision-Date: 2019-09-09 00:53+0200\n" "PO-Revision-Date: 2020-09-07 18:36+0200\n"
"Last-Translator: Kris Thomsen <mail@kristhomsen.dk>\n" "Last-Translator: Alan Mortensen <alanmortensen.am@gmail.com>\n"
"Language-Team: Danish <dansk@dansk-gruppen.dk>\n" "Language-Team: Danish <dansk@dansk-gruppen.dk>\n"
"Language: da\n" "Language: da\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Poedit 2.3\n"
#: data/gnome-classic.desktop.in:3 data/gnome-classic.session.desktop.in:3 #: data/gnome-classic.desktop.in:3 data/gnome-classic.session.desktop.in:3
msgid "GNOME Classic" msgid "GNOME Classic"
@@ -33,7 +34,7 @@ msgstr "Denne session logger dig ind i GNOME Classic"
msgid "Favorites" msgid "Favorites"
msgstr "Favoritter" msgstr "Favoritter"
#: extensions/apps-menu/extension.js:368 #: extensions/apps-menu/extension.js:369
msgid "Applications" msgid "Applications"
msgstr "Programmer" msgstr "Programmer"
@@ -49,39 +50,26 @@ msgstr ""
"En liste over strenge, som hver indeholder et program-id " "En liste over strenge, som hver indeholder et program-id "
"(skrivebordsfilnavn), efterfulgt af et kolon og arbejdsområdets nummer" "(skrivebordsfilnavn), efterfulgt af et kolon og arbejdsområdets nummer"
#: extensions/auto-move-windows/prefs.js:60 #: extensions/auto-move-windows/prefs.js:35
msgid "Application" msgid "Workspace Rules"
msgstr "Program" msgstr "Regler for arbejdsområde"
#: extensions/auto-move-windows/prefs.js:71 #: extensions/auto-move-windows/prefs.js:243
#: extensions/auto-move-windows/prefs.js:134
msgid "Workspace"
msgstr "Arbejdsområde"
#: extensions/auto-move-windows/prefs.js:89
msgid "Add Rule" msgid "Add Rule"
msgstr "Tilføj regel" msgstr "Tilføj regel"
#: extensions/auto-move-windows/prefs.js:111
msgid "Create new matching rule"
msgstr "Opret ny regel for match"
#: extensions/auto-move-windows/prefs.js:117
msgid "Add"
msgstr "Tilføj"
#. TRANSLATORS: %s is the filesystem name #. TRANSLATORS: %s is the filesystem name
#: extensions/drive-menu/extension.js:102 #: extensions/drive-menu/extension.js:112
#: extensions/places-menu/placeDisplay.js:232 #: extensions/places-menu/placeDisplay.js:233
#, javascript-format #, javascript-format
msgid "Ejecting drive “%s” failed:" msgid "Ejecting drive “%s” failed:"
msgstr "Udskubning af drevet “%s” mislykkedes:" msgstr "Udskubning af drevet “%s” mislykkedes:"
#: extensions/drive-menu/extension.js:118 #: extensions/drive-menu/extension.js:128
msgid "Removable devices" msgid "Removable devices"
msgstr "Flytbare enheder" msgstr "Flytbare enheder"
#: extensions/drive-menu/extension.js:145 #: extensions/drive-menu/extension.js:155
msgid "Open Files" msgid "Open Files"
msgstr "Åbn filer" msgstr "Åbn filer"
@@ -115,8 +103,8 @@ msgstr ""
"Ændring af denne indstilling kræver at shell'en genstartes for at træde i " "Ændring af denne indstilling kræver at shell'en genstartes for at træde i "
"kraft." "kraft."
#: extensions/places-menu/extension.js:80 #: extensions/places-menu/extension.js:89
#: extensions/places-menu/extension.js:84 #: extensions/places-menu/extension.js:93
msgid "Places" msgid "Places"
msgstr "Steder" msgstr "Steder"
@@ -135,11 +123,11 @@ msgstr "Kunne ikke montere diskenhed for “%s”"
msgid "Computer" msgid "Computer"
msgstr "Computer" msgstr "Computer"
#: extensions/places-menu/placeDisplay.js:358 #: extensions/places-menu/placeDisplay.js:359
msgid "Home" msgid "Home"
msgstr "Hjem" msgstr "Hjem"
#: extensions/places-menu/placeDisplay.js:403 #: extensions/places-menu/placeDisplay.js:404
msgid "Browse Network" msgid "Browse Network"
msgstr "Gennemse netværk" msgstr "Gennemse netværk"
@@ -159,47 +147,47 @@ msgstr "Temanavn"
msgid "The name of the theme, to be loaded from ~/.themes/name/gnome-shell" msgid "The name of the theme, to be loaded from ~/.themes/name/gnome-shell"
msgstr "Navnet på temaet, som indlæses fra ~/.themes/name/gnome-shell" msgstr "Navnet på temaet, som indlæses fra ~/.themes/name/gnome-shell"
#: extensions/window-list/extension.js:99 #: extensions/window-list/extension.js:98
msgid "Close" msgid "Close"
msgstr "Luk" msgstr "Luk"
#: extensions/window-list/extension.js:119 #: extensions/window-list/extension.js:118
msgid "Unminimize" msgid "Unminimize"
msgstr "Afminimér" msgstr "Afminimér"
#: extensions/window-list/extension.js:119 #: extensions/window-list/extension.js:118
msgid "Minimize" msgid "Minimize"
msgstr "Minimér" msgstr "Minimér"
#: extensions/window-list/extension.js:126 #: extensions/window-list/extension.js:125
msgid "Unmaximize" msgid "Unmaximize"
msgstr "Afmaksimér" msgstr "Afmaksimér"
#: extensions/window-list/extension.js:126 #: extensions/window-list/extension.js:125
msgid "Maximize" msgid "Maximize"
msgstr "Maksimér" msgstr "Maksimér"
#: extensions/window-list/extension.js:431 #: extensions/window-list/extension.js:428
msgid "Minimize all" msgid "Minimize all"
msgstr "Minimér" msgstr "Minimér"
#: extensions/window-list/extension.js:437 #: extensions/window-list/extension.js:434
msgid "Unminimize all" msgid "Unminimize all"
msgstr "Afminimér alle" msgstr "Afminimér alle"
#: extensions/window-list/extension.js:443 #: extensions/window-list/extension.js:440
msgid "Maximize all" msgid "Maximize all"
msgstr "Maksimér alle" msgstr "Maksimér alle"
#: extensions/window-list/extension.js:451 #: extensions/window-list/extension.js:448
msgid "Unmaximize all" msgid "Unmaximize all"
msgstr "Afmaksimér alle" msgstr "Afmaksimér alle"
#: extensions/window-list/extension.js:459 #: extensions/window-list/extension.js:456
msgid "Close all" msgid "Close all"
msgstr "Luk alle" msgstr "Luk alle"
#: extensions/window-list/extension.js:741 #: extensions/window-list/extension.js:734
msgid "Window List" msgid "Window List"
msgstr "Vinduesliste" msgstr "Vinduesliste"
@@ -216,13 +204,14 @@ msgstr ""
"Mulige værdier er “never” (aldrig), “auto” (automatisk) og “always” (altid)." "Mulige værdier er “never” (aldrig), “auto” (automatisk) og “always” (altid)."
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:20 #: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:20
#: extensions/window-list/prefs.js:82 #: extensions/window-list/prefs.js:100
msgid "Show windows from all workspaces" msgid "Show windows from all workspaces"
msgstr "Vis vinduer fra alle arbejdsområder" msgstr "Vis vinduer fra alle arbejdsområder"
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:21 #: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:21
msgid "Whether to show windows from all workspaces or only the current one." msgid "Whether to show windows from all workspaces or only the current one."
msgstr "Om der skal vises vinduer fra alle arbejdsområder eller kun det nuværende." msgstr ""
"Om der skal vises vinduer fra alle arbejdsområder eller kun det nuværende."
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:27 #: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:27
msgid "Show the window list on all monitors" msgid "Show the window list on all monitors"
@@ -236,44 +225,56 @@ msgstr ""
"Om vindueslisten skal vise på alle tilsluttede skærme, eller kun på den " "Om vindueslisten skal vise på alle tilsluttede skærme, eller kun på den "
"primære." "primære."
#: extensions/window-list/prefs.js:25 #: extensions/window-list/prefs.js:29
msgid "Window Grouping" msgid "Window Grouping"
msgstr "Vinduesgruppering" msgstr "Vinduesgruppering"
#: extensions/window-list/prefs.js:47 #: extensions/window-list/prefs.js:58
msgid "Never group windows" msgid "Never group windows"
msgstr "Gruppér aldrig vinduer" msgstr "Gruppér aldrig vinduer"
#: extensions/window-list/prefs.js:48 #: extensions/window-list/prefs.js:59
msgid "Group windows when space is limited" msgid "Group windows when space is limited"
msgstr "Gruppér vinduer når pladsen er begrænset" msgstr "Gruppér vinduer når pladsen er begrænset"
#: extensions/window-list/prefs.js:49 #: extensions/window-list/prefs.js:60
msgid "Always group windows" msgid "Always group windows"
msgstr "Gruppér altid vinduer" msgstr "Gruppér altid vinduer"
#: extensions/window-list/prefs.js:75 #: extensions/window-list/prefs.js:94
msgid "Show on all monitors" msgid "Show on all monitors"
msgstr "Vis på alle skærme" msgstr "Vis på alle skærme"
#: extensions/window-list/workspaceIndicator.js:211 #: extensions/window-list/workspaceIndicator.js:207
#: extensions/workspace-indicator/extension.js:216 #: extensions/workspace-indicator/extension.js:213
msgid "Workspace Indicator" msgid "Workspace Indicator"
msgstr "Arbejdsområdeindikator" msgstr "Arbejdsområdeindikator"
#: extensions/workspace-indicator/prefs.js:131 #: extensions/workspace-indicator/prefs.js:34
msgid "Workspace Names" msgid "Workspace Names"
msgstr "Navne på arbejdsområder" msgstr "Navne på arbejdsområder"
#: extensions/workspace-indicator/prefs.js:151 #: extensions/workspace-indicator/prefs.js:67
msgid "Name"
msgstr "Navn"
#: extensions/workspace-indicator/prefs.js:191
#, javascript-format #, javascript-format
msgid "Workspace %d" msgid "Workspace %d"
msgstr "Arbejdsområde %d" msgstr "Arbejdsområde %d"
#: extensions/workspace-indicator/prefs.js:218
msgid "Add Workspace"
msgstr "Tilføj arbejdsområde"
#~ msgid "Application"
#~ msgstr "Program"
#~ msgid "Create new matching rule"
#~ msgstr "Opret ny regel for match"
#~ msgid "Add"
#~ msgstr "Tilføj"
#~ msgid "Name"
#~ msgstr "Navn"
#~ msgid "Attach modal dialog to the parent window" #~ msgid "Attach modal dialog to the parent window"
#~ msgstr "Tillæg modal-dialog til det overordnede vindue" #~ msgstr "Tillæg modal-dialog til det overordnede vindue"
+54 -55
View File
@@ -6,15 +6,15 @@
# Benjamin Steinwender <b@stbe.at>, 2013. # Benjamin Steinwender <b@stbe.at>, 2013.
# Wolfgang Stöggl <c72578@yahoo.de>, 2014. # Wolfgang Stöggl <c72578@yahoo.de>, 2014.
# Paul Seyfert <pseyfert@mathphys.fsk.uni-heidelberg.de>, 2017. # Paul Seyfert <pseyfert@mathphys.fsk.uni-heidelberg.de>, 2017.
# Tim Sabsch <tim@sabsch.com>, 2019. # Tim Sabsch <tim@sabsch.com>, 2019-2020.
# #
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: gnome-shell-extensions master\n" "Project-Id-Version: gnome-shell-extensions master\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell-extensions/" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell-extensions/"
"issues\n" "issues\n"
"POT-Creation-Date: 2019-08-09 22:24+0000\n" "POT-Creation-Date: 2020-05-28 00:55+0000\n"
"PO-Revision-Date: 2019-08-23 21:27+0200\n" "PO-Revision-Date: 2020-09-08 20:20+0200\n"
"Last-Translator: Tim Sabsch <tim@sabsch.com>\n" "Last-Translator: Tim Sabsch <tim@sabsch.com>\n"
"Language-Team: Deutsch <gnome-de@gnome.org>\n" "Language-Team: Deutsch <gnome-de@gnome.org>\n"
"Language: de\n" "Language: de\n"
@@ -22,7 +22,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Poedit 2.2.1\n" "X-Generator: Poedit 2.4.1\n"
#: data/gnome-classic.desktop.in:3 data/gnome-classic.session.desktop.in:3 #: data/gnome-classic.desktop.in:3 data/gnome-classic.session.desktop.in:3
msgid "GNOME Classic" msgid "GNOME Classic"
@@ -36,7 +36,7 @@ msgstr "Diese Sitzung meldet Sie in GNOME Classic an"
msgid "Favorites" msgid "Favorites"
msgstr "Favoriten" msgstr "Favoriten"
#: extensions/apps-menu/extension.js:368 #: extensions/apps-menu/extension.js:369
msgid "Applications" msgid "Applications"
msgstr "Anwendungen" msgstr "Anwendungen"
@@ -53,39 +53,26 @@ msgstr ""
"Datei) enthält, gefolgt von einem Doppelpunkt und der Nummer der " "Datei) enthält, gefolgt von einem Doppelpunkt und der Nummer der "
"Arbeitsfläche" "Arbeitsfläche"
#: extensions/auto-move-windows/prefs.js:60 #: extensions/auto-move-windows/prefs.js:35
msgid "Application" msgid "Workspace Rules"
msgstr "Anwendung" msgstr "Arbeitsfläche-Regeln"
#: extensions/auto-move-windows/prefs.js:71 #: extensions/auto-move-windows/prefs.js:243
#: extensions/auto-move-windows/prefs.js:134
msgid "Workspace"
msgstr "Arbeitsfläche"
#: extensions/auto-move-windows/prefs.js:89
msgid "Add Rule" msgid "Add Rule"
msgstr "Regel hinzufügen" msgstr "Regel hinzufügen"
#: extensions/auto-move-windows/prefs.js:111
msgid "Create new matching rule"
msgstr "Neue Übereinstimmungsregel erstellen"
#: extensions/auto-move-windows/prefs.js:117
msgid "Add"
msgstr "Hinzufügen"
#. TRANSLATORS: %s is the filesystem name #. TRANSLATORS: %s is the filesystem name
#: extensions/drive-menu/extension.js:102 #: extensions/drive-menu/extension.js:112
#: extensions/places-menu/placeDisplay.js:232 #: extensions/places-menu/placeDisplay.js:233
#, javascript-format #, javascript-format
msgid "Ejecting drive “%s” failed:" msgid "Ejecting drive “%s” failed:"
msgstr "Auswerfen von Laufwerk »%s« schlug fehl:" msgstr "Auswerfen von Laufwerk »%s« schlug fehl:"
#: extensions/drive-menu/extension.js:118 #: extensions/drive-menu/extension.js:128
msgid "Removable devices" msgid "Removable devices"
msgstr "Wechseldatenträger" msgstr "Wechseldatenträger"
#: extensions/drive-menu/extension.js:145 #: extensions/drive-menu/extension.js:155
msgid "Open Files" msgid "Open Files"
msgstr "Dateien öffnen" msgstr "Dateien öffnen"
@@ -119,8 +106,8 @@ msgstr ""
"Vorschaubild platziert und damit die Voreinstellung der Shell übergangen. " "Vorschaubild platziert und damit die Voreinstellung der Shell übergangen. "
"Eine Änderungseinstellung tritt erst mit einem Neustart der Shell in Kraft." "Eine Änderungseinstellung tritt erst mit einem Neustart der Shell in Kraft."
#: extensions/places-menu/extension.js:80 #: extensions/places-menu/extension.js:89
#: extensions/places-menu/extension.js:84 #: extensions/places-menu/extension.js:93
msgid "Places" msgid "Places"
msgstr "Orte" msgstr "Orte"
@@ -139,11 +126,11 @@ msgstr "Datenträger für »%s« konnte nicht eingebunden werden"
msgid "Computer" msgid "Computer"
msgstr "Rechner" msgstr "Rechner"
#: extensions/places-menu/placeDisplay.js:358 #: extensions/places-menu/placeDisplay.js:359
msgid "Home" msgid "Home"
msgstr "Persönlicher Ordner" msgstr "Persönlicher Ordner"
#: extensions/places-menu/placeDisplay.js:403 #: extensions/places-menu/placeDisplay.js:404
msgid "Browse Network" msgid "Browse Network"
msgstr "Netzwerk durchsuchen" msgstr "Netzwerk durchsuchen"
@@ -165,47 +152,47 @@ msgstr ""
"Der Name des Themas, welches aus ~/.themes/name/gnome-shell geladen werden " "Der Name des Themas, welches aus ~/.themes/name/gnome-shell geladen werden "
"soll" "soll"
#: extensions/window-list/extension.js:99 #: extensions/window-list/extension.js:98
msgid "Close" msgid "Close"
msgstr "Schließen" msgstr "Schließen"
#: extensions/window-list/extension.js:119 #: extensions/window-list/extension.js:118
msgid "Unminimize" msgid "Unminimize"
msgstr "Minimieren rückgängig" msgstr "Minimieren rückgängig"
#: extensions/window-list/extension.js:119 #: extensions/window-list/extension.js:118
msgid "Minimize" msgid "Minimize"
msgstr "Minimieren" msgstr "Minimieren"
#: extensions/window-list/extension.js:126 #: extensions/window-list/extension.js:125
msgid "Unmaximize" msgid "Unmaximize"
msgstr "Maximieren rückgängig" msgstr "Maximieren rückgängig"
#: extensions/window-list/extension.js:126 #: extensions/window-list/extension.js:125
msgid "Maximize" msgid "Maximize"
msgstr "Maximieren" msgstr "Maximieren"
#: extensions/window-list/extension.js:431 #: extensions/window-list/extension.js:428
msgid "Minimize all" msgid "Minimize all"
msgstr "Alle minimieren" msgstr "Alle minimieren"
#: extensions/window-list/extension.js:437 #: extensions/window-list/extension.js:434
msgid "Unminimize all" msgid "Unminimize all"
msgstr "Alle minimieren rückgängig" msgstr "Alle minimieren rückgängig"
#: extensions/window-list/extension.js:443 #: extensions/window-list/extension.js:440
msgid "Maximize all" msgid "Maximize all"
msgstr "Alle maximieren" msgstr "Alle maximieren"
#: extensions/window-list/extension.js:451 #: extensions/window-list/extension.js:448
msgid "Unmaximize all" msgid "Unmaximize all"
msgstr "Alle maximieren rückgängig" msgstr "Alle maximieren rückgängig"
#: extensions/window-list/extension.js:459 #: extensions/window-list/extension.js:456
msgid "Close all" msgid "Close all"
msgstr "Alle schließen" msgstr "Alle schließen"
#: extensions/window-list/extension.js:741 #: extensions/window-list/extension.js:734
msgid "Window List" msgid "Window List"
msgstr "Fensterliste" msgstr "Fensterliste"
@@ -223,7 +210,7 @@ msgstr ""
"»always« (immer)." "»always« (immer)."
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:20 #: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:20
#: extensions/window-list/prefs.js:82 #: extensions/window-list/prefs.js:100
msgid "Show windows from all workspaces" msgid "Show windows from all workspaces"
msgstr "Fenster von allen Arbeitsflächen anzeigen" msgstr "Fenster von allen Arbeitsflächen anzeigen"
@@ -245,44 +232,56 @@ msgstr ""
"Legt fest, ob die Fensterliste auf allen angeschlossenen Bildschirmen " "Legt fest, ob die Fensterliste auf allen angeschlossenen Bildschirmen "
"angezeigt wird oder nur auf dem Primären." "angezeigt wird oder nur auf dem Primären."
#: extensions/window-list/prefs.js:25 #: extensions/window-list/prefs.js:29
msgid "Window Grouping" msgid "Window Grouping"
msgstr "Fenstergruppierung" msgstr "Fenstergruppierung"
#: extensions/window-list/prefs.js:47 #: extensions/window-list/prefs.js:58
msgid "Never group windows" msgid "Never group windows"
msgstr "Fenster niemals gruppieren" msgstr "Fenster niemals gruppieren"
#: extensions/window-list/prefs.js:48 #: extensions/window-list/prefs.js:59
msgid "Group windows when space is limited" msgid "Group windows when space is limited"
msgstr "Fenster bei Platzmangel gruppieren" msgstr "Fenster bei Platzmangel gruppieren"
#: extensions/window-list/prefs.js:49 #: extensions/window-list/prefs.js:60
msgid "Always group windows" msgid "Always group windows"
msgstr "Fenster immer gruppieren" msgstr "Fenster immer gruppieren"
#: extensions/window-list/prefs.js:75 #: extensions/window-list/prefs.js:94
msgid "Show on all monitors" msgid "Show on all monitors"
msgstr "Auf allen Bildschirmen anzeigen" msgstr "Auf allen Bildschirmen anzeigen"
#: extensions/window-list/workspaceIndicator.js:211 #: extensions/window-list/workspaceIndicator.js:207
#: extensions/workspace-indicator/extension.js:216 #: extensions/workspace-indicator/extension.js:213
msgid "Workspace Indicator" msgid "Workspace Indicator"
msgstr "Arbeitsflächenindikator" msgstr "Arbeitsflächenindikator"
#: extensions/workspace-indicator/prefs.js:131 #: extensions/workspace-indicator/prefs.js:34
msgid "Workspace Names" msgid "Workspace Names"
msgstr "Namen der Arbeitsflächen" msgstr "Namen der Arbeitsflächen"
#: extensions/workspace-indicator/prefs.js:151 #: extensions/workspace-indicator/prefs.js:67
msgid "Name"
msgstr "Name"
#: extensions/workspace-indicator/prefs.js:191
#, javascript-format #, javascript-format
msgid "Workspace %d" msgid "Workspace %d"
msgstr "Arbeitsfläche %d" msgstr "Arbeitsfläche %d"
#: extensions/workspace-indicator/prefs.js:218
msgid "Add Workspace"
msgstr "Arbeitsfläche hinzufügen"
#~ msgid "Application"
#~ msgstr "Anwendung"
#~ msgid "Create new matching rule"
#~ msgstr "Neue Übereinstimmungsregel erstellen"
#~ msgid "Add"
#~ msgstr "Hinzufügen"
#~ msgid "Name"
#~ msgstr "Name"
#~ msgid "Attach modal dialog to the parent window" #~ msgid "Attach modal dialog to the parent window"
#~ msgstr "Einen modalen Dialog an das übergeordnete Fenster anhängen" #~ msgstr "Einen modalen Dialog an das übergeordnete Fenster anhängen"
+55 -60
View File
@@ -12,16 +12,16 @@ msgstr ""
"Project-Id-Version: gnome-shell-extensions master\n" "Project-Id-Version: gnome-shell-extensions master\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell-extensions/" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell-extensions/"
"issues\n" "issues\n"
"POT-Creation-Date: 2019-08-09 22:24+0000\n" "POT-Creation-Date: 2020-05-28 00:55+0000\n"
"PO-Revision-Date: 2019-09-05 19:27+0300\n" "PO-Revision-Date: 2020-07-14 00:40+0300\n"
"Last-Translator: Efstathios Iosifidis <iosifidis@opensuse.org>\n" "Last-Translator: Efstathios Iosifidis <eiosifidis@gnome.org>\n"
"Language-Team: Greek, Modern (1453-) <gnome-el-list@gnome.org>\n" "Language-Team: Greek, Modern (1453-) <gnome-el-list@gnome.org>\n"
"Language: el\n" "Language: el\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Gtranslator 3.32.1\n" "X-Generator: Poedit 1.8.7.1\n"
"X-Project-Style: gnome\n" "X-Project-Style: gnome\n"
#: data/gnome-classic.desktop.in:3 data/gnome-classic.session.desktop.in:3 #: data/gnome-classic.desktop.in:3 data/gnome-classic.session.desktop.in:3
@@ -36,7 +36,7 @@ msgstr "Αυτή η συνεδρία σας συνδέει στο GNOME Classic"
msgid "Favorites" msgid "Favorites"
msgstr "Αγαπημένα" msgstr "Αγαπημένα"
#: extensions/apps-menu/extension.js:368 #: extensions/apps-menu/extension.js:369
msgid "Applications" msgid "Applications"
msgstr "Εφαρμογές" msgstr "Εφαρμογές"
@@ -53,39 +53,26 @@ msgstr ""
"(όνομα αρχείου επιφάνειας εργασίας), ακολουθούμενη από άνω-κάτω τελεία και " "(όνομα αρχείου επιφάνειας εργασίας), ακολουθούμενη από άνω-κάτω τελεία και "
"τον αριθμό του χώρου εργασίας" "τον αριθμό του χώρου εργασίας"
#: extensions/auto-move-windows/prefs.js:60 #: extensions/auto-move-windows/prefs.js:35
msgid "Application" msgid "Workspace Rules"
msgstr "Εφαρμογή" msgstr "Κανόνες χώρων εργασίας"
#: extensions/auto-move-windows/prefs.js:71 #: extensions/auto-move-windows/prefs.js:243
#: extensions/auto-move-windows/prefs.js:134
msgid "Workspace"
msgstr "Χώρος εργασίας"
#: extensions/auto-move-windows/prefs.js:89
msgid "Add Rule" msgid "Add Rule"
msgstr "Προσθήκη κανόνα" msgstr "Προσθήκη κανόνα"
#: extensions/auto-move-windows/prefs.js:111
msgid "Create new matching rule"
msgstr "Δημιουργία νέου κανόνα αντιστοίχισης"
#: extensions/auto-move-windows/prefs.js:117
msgid "Add"
msgstr "Προσθήκη"
#. TRANSLATORS: %s is the filesystem name #. TRANSLATORS: %s is the filesystem name
#: extensions/drive-menu/extension.js:102 #: extensions/drive-menu/extension.js:112
#: extensions/places-menu/placeDisplay.js:232 #: extensions/places-menu/placeDisplay.js:233
#, javascript-format #, javascript-format
msgid "Ejecting drive “%s” failed:" msgid "Ejecting drive “%s” failed:"
msgstr "Αποτυχία εξαγωγής του δίσκου «%s»:" msgstr "Αποτυχία εξαγωγής του δίσκου «%s»:"
#: extensions/drive-menu/extension.js:118 #: extensions/drive-menu/extension.js:128
msgid "Removable devices" msgid "Removable devices"
msgstr "Αφαιρούμενες συσκευές" msgstr "Αφαιρούμενες συσκευές"
#: extensions/drive-menu/extension.js:145 #: extensions/drive-menu/extension.js:155
msgid "Open Files" msgid "Open Files"
msgstr "Άνοιγμα αρχείων" msgstr "Άνοιγμα αρχείων"
@@ -119,8 +106,8 @@ msgstr ""
"στο κάτω μέρος. Η αλλαγή αυτής της ρύθμισης απαιτεί επανεκκίνηση του " "στο κάτω μέρος. Η αλλαγή αυτής της ρύθμισης απαιτεί επανεκκίνηση του "
"κελύφους για να υπάρξει κάποιο αποτέλεσμα." "κελύφους για να υπάρξει κάποιο αποτέλεσμα."
#: extensions/places-menu/extension.js:80 #: extensions/places-menu/extension.js:89
#: extensions/places-menu/extension.js:84 #: extensions/places-menu/extension.js:93
msgid "Places" msgid "Places"
msgstr "Τοποθεσίες" msgstr "Τοποθεσίες"
@@ -139,11 +126,11 @@ msgstr "Αποτυχία προσάρτησης τόμου για «%s»"
msgid "Computer" msgid "Computer"
msgstr "Υπολογιστής" msgstr "Υπολογιστής"
#: extensions/places-menu/placeDisplay.js:358 #: extensions/places-menu/placeDisplay.js:359
msgid "Home" msgid "Home"
msgstr "Προσωπικός φάκελος" msgstr "Προσωπικός φάκελος"
#: extensions/places-menu/placeDisplay.js:403 #: extensions/places-menu/placeDisplay.js:404
msgid "Browse Network" msgid "Browse Network"
msgstr "Περιήγηση δικτύου" msgstr "Περιήγηση δικτύου"
@@ -164,47 +151,47 @@ msgid "The name of the theme, to be loaded from ~/.themes/name/gnome-shell"
msgstr "" msgstr ""
"Το όνομα του θέματος που θα φορτωθεί από το ~ /.themes/name/gnome-shell" "Το όνομα του θέματος που θα φορτωθεί από το ~ /.themes/name/gnome-shell"
#: extensions/window-list/extension.js:99 #: extensions/window-list/extension.js:98
msgid "Close" msgid "Close"
msgstr "Κλείσιμο" msgstr "Κλείσιμο"
#: extensions/window-list/extension.js:119 #: extensions/window-list/extension.js:118
msgid "Unminimize" msgid "Unminimize"
msgstr "Αποελαχιστοποίηση" msgstr "Αποελαχιστοποίηση"
#: extensions/window-list/extension.js:119 #: extensions/window-list/extension.js:118
msgid "Minimize" msgid "Minimize"
msgstr "Ελαχιστοποίηση" msgstr "Ελαχιστοποίηση"
#: extensions/window-list/extension.js:126 #: extensions/window-list/extension.js:125
msgid "Unmaximize" msgid "Unmaximize"
msgstr "Απομεγιστοποίηση" msgstr "Απομεγιστοποίηση"
#: extensions/window-list/extension.js:126 #: extensions/window-list/extension.js:125
msgid "Maximize" msgid "Maximize"
msgstr "Μεγιστοποίηση" msgstr "Μεγιστοποίηση"
#: extensions/window-list/extension.js:431 #: extensions/window-list/extension.js:428
msgid "Minimize all" msgid "Minimize all"
msgstr "Ελαχιστοποίηση όλων" msgstr "Ελαχιστοποίηση όλων"
#: extensions/window-list/extension.js:437 #: extensions/window-list/extension.js:434
msgid "Unminimize all" msgid "Unminimize all"
msgstr "Αποελαχιστοποίηση όλων" msgstr "Αποελαχιστοποίηση όλων"
#: extensions/window-list/extension.js:443 #: extensions/window-list/extension.js:440
msgid "Maximize all" msgid "Maximize all"
msgstr "Μεγιστοποίηση όλων" msgstr "Μεγιστοποίηση όλων"
#: extensions/window-list/extension.js:451 #: extensions/window-list/extension.js:448
msgid "Unmaximize all" msgid "Unmaximize all"
msgstr "Απομεγιστοποίηση όλων" msgstr "Απομεγιστοποίηση όλων"
#: extensions/window-list/extension.js:459 #: extensions/window-list/extension.js:456
msgid "Close all" msgid "Close all"
msgstr "Κλείσιμο όλων" msgstr "Κλείσιμο όλων"
#: extensions/window-list/extension.js:741 #: extensions/window-list/extension.js:734
msgid "Window List" msgid "Window List"
msgstr "Λίστα παραθύρου" msgstr "Λίστα παραθύρου"
@@ -222,15 +209,11 @@ msgstr ""
"«always» (πάντα)." "«always» (πάντα)."
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:20 #: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:20
#: extensions/window-list/prefs.js:82 #: extensions/window-list/prefs.js:100
#| msgid "Show only windows in the current workspace"
msgid "Show windows from all workspaces" msgid "Show windows from all workspaces"
msgstr "Εμφάνιση των παραθύρων από όλους τους χώρους εργασίας" msgstr "Εμφάνιση των παραθύρων από όλους τους χώρους εργασίας"
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:21 #: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:21
#| msgid ""
#| "Whether to show the window list on all connected monitors or only on the "
#| "primary one."
msgid "Whether to show windows from all workspaces or only the current one." msgid "Whether to show windows from all workspaces or only the current one."
msgstr "" msgstr ""
"Αν θα εμφανίζονται παράθυρα όλων των χώρων εργασίας ή μόνο του τρέχοντα." "Αν θα εμφανίζονται παράθυρα όλων των χώρων εργασίας ή μόνο του τρέχοντα."
@@ -247,44 +230,56 @@ msgstr ""
"Αν θα εμφανίζεται ο κατάλογος παραθύρων όλων των συνδεμένων οθονών ή μόνο " "Αν θα εμφανίζεται ο κατάλογος παραθύρων όλων των συνδεμένων οθονών ή μόνο "
"της κύριας οθόνης." "της κύριας οθόνης."
#: extensions/window-list/prefs.js:25 #: extensions/window-list/prefs.js:29
msgid "Window Grouping" msgid "Window Grouping"
msgstr "Ομαδοποίηση παραθύρου" msgstr "Ομαδοποίηση παραθύρου"
#: extensions/window-list/prefs.js:47 #: extensions/window-list/prefs.js:58
msgid "Never group windows" msgid "Never group windows"
msgstr "Να μη γίνεται ποτέ ομαδοποίηση παραθύρων" msgstr "Να μη γίνεται ποτέ ομαδοποίηση παραθύρων"
#: extensions/window-list/prefs.js:48 #: extensions/window-list/prefs.js:59
msgid "Group windows when space is limited" msgid "Group windows when space is limited"
msgstr "Ομαδοποίηση παραθύρων όταν ο χώρος είναι περιορισμένος" msgstr "Ομαδοποίηση παραθύρων όταν ο χώρος είναι περιορισμένος"
#: extensions/window-list/prefs.js:49 #: extensions/window-list/prefs.js:60
msgid "Always group windows" msgid "Always group windows"
msgstr "Να γίνεται πάντα ομαδοποίηση παραθύρων" msgstr "Να γίνεται πάντα ομαδοποίηση παραθύρων"
#: extensions/window-list/prefs.js:75 #: extensions/window-list/prefs.js:94
msgid "Show on all monitors" msgid "Show on all monitors"
msgstr "Να εμφανίζεται σε όλες τις οθόνες" msgstr "Να εμφανίζεται σε όλες τις οθόνες"
#: extensions/window-list/workspaceIndicator.js:211 #: extensions/window-list/workspaceIndicator.js:207
#: extensions/workspace-indicator/extension.js:216 #: extensions/workspace-indicator/extension.js:213
msgid "Workspace Indicator" msgid "Workspace Indicator"
msgstr "Δείκτης χώρου εργασίας" msgstr "Δείκτης χώρου εργασίας"
#: extensions/workspace-indicator/prefs.js:131 #: extensions/workspace-indicator/prefs.js:34
msgid "Workspace Names" msgid "Workspace Names"
msgstr "Ονόματα χώρων εργασίας:" msgstr "Ονόματα χώρων εργασίας:"
#: extensions/workspace-indicator/prefs.js:151 #: extensions/workspace-indicator/prefs.js:67
msgid "Name"
msgstr "Όνομα"
#: extensions/workspace-indicator/prefs.js:191
#, javascript-format #, javascript-format
msgid "Workspace %d" msgid "Workspace %d"
msgstr "Χώρος εργασίας %d" msgstr "Χώρος εργασίας %d"
#: extensions/workspace-indicator/prefs.js:218
msgid "Add Workspace"
msgstr "Προσθήκη χώρου εργασίας"
#~ msgid "Application"
#~ msgstr "Εφαρμογή"
#~ msgid "Create new matching rule"
#~ msgstr "Δημιουργία νέου κανόνα αντιστοίχισης"
#~ msgid "Add"
#~ msgstr "Προσθήκη"
#~ msgid "Name"
#~ msgstr "Όνομα"
#~ msgid "Attach modal dialog to the parent window" #~ msgid "Attach modal dialog to the parent window"
#~ msgstr "Προσάρτηση αποκλειστικού διαλόγου στο γονικό παράθυρο" #~ msgstr "Προσάρτηση αποκλειστικού διαλόγου στο γονικό παράθυρο"
+56 -59
View File
@@ -4,15 +4,15 @@
# Bruce Cowan <bruce@bcowan.eu>, 2011, 2018. # Bruce Cowan <bruce@bcowan.eu>, 2011, 2018.
# Chris Leonard <cjlhomeaddress@gmail.com>, 2012. # Chris Leonard <cjlhomeaddress@gmail.com>, 2012.
# Philip Withnall <philip@tecnocode.co.uk>, 2014. # Philip Withnall <philip@tecnocode.co.uk>, 2014.
# Zander Brown <zbrown@gnome.org>, 2019. # Zander Brown <zbrown@gnome.org>, 2019-2020.
# #
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: gnome-shell-extensions\n" "Project-Id-Version: gnome-shell-extensions\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell-extensions/" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell-extensions/"
"issues\n" "issues\n"
"POT-Creation-Date: 2019-08-09 22:24+0000\n" "POT-Creation-Date: 2020-05-28 00:55+0000\n"
"PO-Revision-Date: 2019-08-25 16:49+0100\n" "PO-Revision-Date: 2020-08-24 23:05+0100\n"
"Last-Translator: Zander Brown <zbrown@gnome.org>\n" "Last-Translator: Zander Brown <zbrown@gnome.org>\n"
"Language-Team: English - United Kingdom <en_GB@li.org>\n" "Language-Team: English - United Kingdom <en_GB@li.org>\n"
"Language: en_GB\n" "Language: en_GB\n"
@@ -20,7 +20,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Gtranslator 3.32.1\n" "X-Generator: Gtranslator 3.36.0\n"
"X-Project-Style: gnome\n" "X-Project-Style: gnome\n"
#: data/gnome-classic.desktop.in:3 data/gnome-classic.session.desktop.in:3 #: data/gnome-classic.desktop.in:3 data/gnome-classic.session.desktop.in:3
@@ -35,7 +35,7 @@ msgstr "This session logs you into GNOME Classic"
msgid "Favorites" msgid "Favorites"
msgstr "Favourites" msgstr "Favourites"
#: extensions/apps-menu/extension.js:368 #: extensions/apps-menu/extension.js:369
msgid "Applications" msgid "Applications"
msgstr "Applications" msgstr "Applications"
@@ -51,39 +51,27 @@ msgstr ""
"A list of strings, each containing an application id (desktop file name), " "A list of strings, each containing an application id (desktop file name), "
"followed by a colon and the workspace number" "followed by a colon and the workspace number"
#: extensions/auto-move-windows/prefs.js:60 #: extensions/auto-move-windows/prefs.js:35
msgid "Application" #| msgid "Workspace Names"
msgstr "Application" msgid "Workspace Rules"
msgstr "Workspace Rules"
#: extensions/auto-move-windows/prefs.js:71 #: extensions/auto-move-windows/prefs.js:243
#: extensions/auto-move-windows/prefs.js:134
msgid "Workspace"
msgstr "Workspace"
#: extensions/auto-move-windows/prefs.js:89
msgid "Add Rule" msgid "Add Rule"
msgstr "Add Rule" msgstr "Add Rule"
#: extensions/auto-move-windows/prefs.js:111
msgid "Create new matching rule"
msgstr "Create new matching rule"
#: extensions/auto-move-windows/prefs.js:117
msgid "Add"
msgstr "Add"
#. TRANSLATORS: %s is the filesystem name #. TRANSLATORS: %s is the filesystem name
#: extensions/drive-menu/extension.js:102 #: extensions/drive-menu/extension.js:112
#: extensions/places-menu/placeDisplay.js:232 #: extensions/places-menu/placeDisplay.js:233
#, javascript-format #, javascript-format
msgid "Ejecting drive “%s” failed:" msgid "Ejecting drive “%s” failed:"
msgstr "Ejecting drive “%s” failed:" msgstr "Ejecting drive “%s” failed:"
#: extensions/drive-menu/extension.js:118 #: extensions/drive-menu/extension.js:128
msgid "Removable devices" msgid "Removable devices"
msgstr "Removable devices" msgstr "Removable devices"
#: extensions/drive-menu/extension.js:145 #: extensions/drive-menu/extension.js:155
msgid "Open Files" msgid "Open Files"
msgstr "Open Files" msgstr "Open Files"
@@ -115,8 +103,8 @@ msgstr ""
"shell default of placing it at the bottom. Changing this setting requires " "shell default of placing it at the bottom. Changing this setting requires "
"restarting the shell to have any effect." "restarting the shell to have any effect."
#: extensions/places-menu/extension.js:80 #: extensions/places-menu/extension.js:89
#: extensions/places-menu/extension.js:84 #: extensions/places-menu/extension.js:93
msgid "Places" msgid "Places"
msgstr "Places" msgstr "Places"
@@ -135,11 +123,11 @@ msgstr "Failed to mount volume for “%s”"
msgid "Computer" msgid "Computer"
msgstr "Computer" msgstr "Computer"
#: extensions/places-menu/placeDisplay.js:358 #: extensions/places-menu/placeDisplay.js:359
msgid "Home" msgid "Home"
msgstr "Home" msgstr "Home"
#: extensions/places-menu/placeDisplay.js:403 #: extensions/places-menu/placeDisplay.js:404
msgid "Browse Network" msgid "Browse Network"
msgstr "Browse Network" msgstr "Browse Network"
@@ -159,47 +147,47 @@ msgstr "Theme name"
msgid "The name of the theme, to be loaded from ~/.themes/name/gnome-shell" msgid "The name of the theme, to be loaded from ~/.themes/name/gnome-shell"
msgstr "The name of the theme, to be loaded from ~/.themes/name/gnome-shell" msgstr "The name of the theme, to be loaded from ~/.themes/name/gnome-shell"
#: extensions/window-list/extension.js:99 #: extensions/window-list/extension.js:98
msgid "Close" msgid "Close"
msgstr "Close" msgstr "Close"
#: extensions/window-list/extension.js:119 #: extensions/window-list/extension.js:118
msgid "Unminimize" msgid "Unminimize"
msgstr "Unminimise" msgstr "Unminimise"
#: extensions/window-list/extension.js:119 #: extensions/window-list/extension.js:118
msgid "Minimize" msgid "Minimize"
msgstr "Minimise" msgstr "Minimise"
#: extensions/window-list/extension.js:126 #: extensions/window-list/extension.js:125
msgid "Unmaximize" msgid "Unmaximize"
msgstr "Unmaximise" msgstr "Unmaximise"
#: extensions/window-list/extension.js:126 #: extensions/window-list/extension.js:125
msgid "Maximize" msgid "Maximize"
msgstr "Maximise" msgstr "Maximise"
#: extensions/window-list/extension.js:431 #: extensions/window-list/extension.js:428
msgid "Minimize all" msgid "Minimize all"
msgstr "Minimise all" msgstr "Minimise all"
#: extensions/window-list/extension.js:437 #: extensions/window-list/extension.js:434
msgid "Unminimize all" msgid "Unminimize all"
msgstr "Unminimise all" msgstr "Unminimise all"
#: extensions/window-list/extension.js:443 #: extensions/window-list/extension.js:440
msgid "Maximize all" msgid "Maximize all"
msgstr "Maximise all" msgstr "Maximise all"
#: extensions/window-list/extension.js:451 #: extensions/window-list/extension.js:448
msgid "Unmaximize all" msgid "Unmaximize all"
msgstr "Unmaximise all" msgstr "Unmaximise all"
#: extensions/window-list/extension.js:459 #: extensions/window-list/extension.js:456
msgid "Close all" msgid "Close all"
msgstr "Close all" msgstr "Close all"
#: extensions/window-list/extension.js:741 #: extensions/window-list/extension.js:734
msgid "Window List" msgid "Window List"
msgstr "Window List" msgstr "Window List"
@@ -216,15 +204,11 @@ msgstr ""
"Possible values are “never”, “auto” and “always”." "Possible values are “never”, “auto” and “always”."
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:20 #: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:20
#: extensions/window-list/prefs.js:82 #: extensions/window-list/prefs.js:100
#| msgid "Show only windows in the current workspace"
msgid "Show windows from all workspaces" msgid "Show windows from all workspaces"
msgstr "Show windows from all workspaces" msgstr "Show windows from all workspaces"
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:21 #: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:21
#| msgid ""
#| "Whether to show the window list on all connected monitors or only on the "
#| "primary one."
msgid "Whether to show windows from all workspaces or only the current one." msgid "Whether to show windows from all workspaces or only the current one."
msgstr "Whether to show windows from all workspaces or only the current one." msgstr "Whether to show windows from all workspaces or only the current one."
@@ -240,44 +224,57 @@ msgstr ""
"Whether to show the window list on all connected monitors or only on the " "Whether to show the window list on all connected monitors or only on the "
"primary one." "primary one."
#: extensions/window-list/prefs.js:25 #: extensions/window-list/prefs.js:29
msgid "Window Grouping" msgid "Window Grouping"
msgstr "Window Grouping" msgstr "Window Grouping"
#: extensions/window-list/prefs.js:47 #: extensions/window-list/prefs.js:58
msgid "Never group windows" msgid "Never group windows"
msgstr "Never group windows" msgstr "Never group windows"
#: extensions/window-list/prefs.js:48 #: extensions/window-list/prefs.js:59
msgid "Group windows when space is limited" msgid "Group windows when space is limited"
msgstr "Group windows when space is limited" msgstr "Group windows when space is limited"
#: extensions/window-list/prefs.js:49 #: extensions/window-list/prefs.js:60
msgid "Always group windows" msgid "Always group windows"
msgstr "Always group windows" msgstr "Always group windows"
#: extensions/window-list/prefs.js:75 #: extensions/window-list/prefs.js:94
msgid "Show on all monitors" msgid "Show on all monitors"
msgstr "Show on all monitors" msgstr "Show on all monitors"
#: extensions/window-list/workspaceIndicator.js:211 #: extensions/window-list/workspaceIndicator.js:207
#: extensions/workspace-indicator/extension.js:216 #: extensions/workspace-indicator/extension.js:213
msgid "Workspace Indicator" msgid "Workspace Indicator"
msgstr "Workspace Indicator" msgstr "Workspace Indicator"
#: extensions/workspace-indicator/prefs.js:131 #: extensions/workspace-indicator/prefs.js:34
msgid "Workspace Names" msgid "Workspace Names"
msgstr "Workspace Names" msgstr "Workspace Names"
#: extensions/workspace-indicator/prefs.js:151 #: extensions/workspace-indicator/prefs.js:67
msgid "Name"
msgstr "Name"
#: extensions/workspace-indicator/prefs.js:191
#, javascript-format #, javascript-format
msgid "Workspace %d" msgid "Workspace %d"
msgstr "Workspace %d" msgstr "Workspace %d"
#: extensions/workspace-indicator/prefs.js:218
#| msgid "Workspace"
msgid "Add Workspace"
msgstr "Add Workspace"
#~ msgid "Application"
#~ msgstr "Application"
#~ msgid "Create new matching rule"
#~ msgstr "Create new matching rule"
#~ msgid "Add"
#~ msgstr "Add"
#~ msgid "Name"
#~ msgstr "Name"
#~ msgid "Attach modal dialog to the parent window" #~ msgid "Attach modal dialog to the parent window"
#~ msgstr "Attach modal dialogue to the parent window" #~ msgstr "Attach modal dialogue to the parent window"
+92 -96
View File
@@ -4,40 +4,38 @@
# Ryan LORTIE <desrt@desrt.ca>, 2013. # Ryan LORTIE <desrt@desrt.ca>, 2013.
# Daniel PUENTES <blatberk@openmailbox.org>, 2015. # Daniel PUENTES <blatberk@openmailbox.org>, 2015.
# Kristjan SCHMIDT <kristjan.schmidt@googlemail.com>, 2011-2019. # Kristjan SCHMIDT <kristjan.schmidt@googlemail.com>, 2011-2019.
# Carmen Bianca BAKKER <carmen@carmenbianca.eu>, 2021.
#
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: gnome-shell-extensions master\n" "Project-Id-Version: gnome-shell-extensions master\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell-extensions/" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell-extensions/"
"issues\n" "issues\n"
"POT-Creation-Date: 2019-03-02 10:57+0000\n" "POT-Creation-Date: 2021-03-27 20:14+0000\n"
"PO-Revision-Date: 2019-03-06 22:14+0200\n" "PO-Revision-Date: 2021-03-29 17:24+0200\n"
"Last-Translator: Kristjan SCHMIDT <kristjan.schmidt@googlemail.com>\n" "Last-Translator: Carmen Bianca BAKKER <carmen@carmenbianca.eu>\n"
"Language-Team: Esperanto <gnome-eo-list@gnome.org>\n" "Language-Team: Esperanto <gnome-eo-list@gnome.org>\n"
"Language: eo\n" "Language: eo\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n"
"X-Generator: Virtaal 0.7.1\n" "X-Generator: Gtranslator 3.38.0\n"
"X-Project-Style: gnome\n" "X-Project-Style: gnome\n"
#: data/gnome-classic.desktop.in:3 data/gnome-classic.session.desktop.in:3 #: data/gnome-classic.desktop.in:3
msgid "GNOME Classic" msgid "GNOME Classic"
msgstr "GNOME-klasika" msgstr "GNOME-klasika"
#: data/gnome-classic.desktop.in:4 #: data/gnome-classic.desktop.in:4
msgid "This session logs you into GNOME Classic" msgid "This session logs you into GNOME Classic"
msgstr "Ĉi seanco ensalutas vin GNOME-klasiken" msgstr "Ĉi tiu seanco ensalutas vin GNOME-klasiken"
#: extensions/apps-menu/extension.js:29 #: extensions/apps-menu/extension.js:113
msgid "Activities Overview"
msgstr "Aktivecoj-Superrigardon"
#: extensions/apps-menu/extension.js:118
msgid "Favorites" msgid "Favorites"
msgstr "Plej ŝatataj" msgstr "Plej ŝatataj"
#: extensions/apps-menu/extension.js:407 #: extensions/apps-menu/extension.js:367
msgid "Applications" msgid "Applications"
msgstr "Aplikaĵoj" msgstr "Aplikaĵoj"
@@ -53,41 +51,26 @@ msgstr ""
"Listo de ĉenoj, ĉiu enhavas aplikaĵan identigilon ('desktop' dosiernomo), " "Listo de ĉenoj, ĉiu enhavas aplikaĵan identigilon ('desktop' dosiernomo), "
"sevkita per dupunkto kaj la laborspaca numero" "sevkita per dupunkto kaj la laborspaca numero"
#: extensions/auto-move-windows/prefs.js:60 #: extensions/auto-move-windows/prefs.js:35
msgid "Application" msgid "Workspace Rules"
msgstr "Aplikaĵo" msgstr "Laborspacaj reguloj"
#: extensions/auto-move-windows/prefs.js:71 #: extensions/auto-move-windows/prefs.js:237
#: extensions/auto-move-windows/prefs.js:134
msgid "Workspace"
msgstr "Laborspaco"
#: extensions/auto-move-windows/prefs.js:89
msgid "Add Rule" msgid "Add Rule"
msgstr "Aldoni regulon" msgstr "Aldoni regulon"
#: extensions/auto-move-windows/prefs.js:111
msgid "Create new matching rule"
msgstr "Krei novan kongruantan regulon"
#: extensions/auto-move-windows/prefs.js:117
msgid "Add"
msgstr "Aldoni"
#. TRANSLATORS: %s is the filesystem name #. TRANSLATORS: %s is the filesystem name
#: extensions/drive-menu/extension.js:100 #: extensions/drive-menu/extension.js:112
#: extensions/places-menu/placeDisplay.js:217 #: extensions/places-menu/placeDisplay.js:233
#, javascript-format #, javascript-format
#| msgid "Ejecting drive '%s' failed:"
msgid "Ejecting drive “%s” failed:" msgid "Ejecting drive “%s” failed:"
msgstr "Elĵeto de volumo “%s” malsukcesis:" msgstr "Elĵeto de volumo “%s” malsukcesis:"
#: extensions/drive-menu/extension.js:116 #: extensions/drive-menu/extension.js:128
msgid "Removable devices" msgid "Removable devices"
msgstr "Demeteblaj aparatoj" msgstr "Demeteblaj aparatoj"
#: extensions/drive-menu/extension.js:143 #: extensions/drive-menu/extension.js:152
#| msgid "Open File"
msgid "Open Files" msgid "Open Files"
msgstr "Malfermi dosierojn" msgstr "Malfermi dosierojn"
@@ -119,32 +102,31 @@ msgstr ""
"estas meti ĝin malsupre). Si vi ŝanĝas ĉi agordon tiam vi devas restartigi " "estas meti ĝin malsupre). Si vi ŝanĝas ĉi agordon tiam vi devas restartigi "
"la ŝelon." "la ŝelon."
#: extensions/places-menu/extension.js:79 #: extensions/places-menu/extension.js:89
#: extensions/places-menu/extension.js:83 #: extensions/places-menu/extension.js:92
msgid "Places" msgid "Places"
msgstr "Lokoj" msgstr "Lokoj"
#: extensions/places-menu/placeDisplay.js:59 #: extensions/places-menu/placeDisplay.js:46
#, javascript-format #, javascript-format
msgid "Failed to mount volume for “%s”"
msgstr ""
#: extensions/places-menu/placeDisplay.js:72
#, javascript-format
#| msgid "Failed to launch \"%s\""
msgid "Failed to launch “%s”" msgid "Failed to launch “%s”"
msgstr "Malsukcesis lanĉi “%s”" msgstr "Malsukcesis lanĉi “%s”"
#: extensions/places-menu/placeDisplay.js:133 #: extensions/places-menu/placeDisplay.js:61
#: extensions/places-menu/placeDisplay.js:156 #, javascript-format
msgid "Failed to mount volume for “%s”"
msgstr "Ne eblis munti datumportilon por “%s”"
#: extensions/places-menu/placeDisplay.js:148
#: extensions/places-menu/placeDisplay.js:171
msgid "Computer" msgid "Computer"
msgstr "Komputilo" msgstr "Komputilo"
#: extensions/places-menu/placeDisplay.js:343 #: extensions/places-menu/placeDisplay.js:359
msgid "Home" msgid "Home"
msgstr "Domo" msgstr "Domo"
#: extensions/places-menu/placeDisplay.js:387 #: extensions/places-menu/placeDisplay.js:404
msgid "Browse Network" msgid "Browse Network"
msgstr "Foliumi reton" msgstr "Foliumi reton"
@@ -153,10 +135,8 @@ msgid "Cycle Screenshot Sizes"
msgstr "Cikle montri ekrankopiajn grandojn" msgstr "Cikle montri ekrankopiajn grandojn"
#: extensions/screenshot-window-sizer/org.gnome.shell.extensions.screenshot-window-sizer.gschema.xml:11 #: extensions/screenshot-window-sizer/org.gnome.shell.extensions.screenshot-window-sizer.gschema.xml:11
#, fuzzy
#| msgid "Cycle Screenshot Sizes"
msgid "Cycle Screenshot Sizes Backward" msgid "Cycle Screenshot Sizes Backward"
msgstr "Cikle montri ekrankopiajn grandojn" msgstr "Montri ekrankopiajn grandojn laŭ inversa sinsekvo"
#: extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml:5 #: extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml:5
msgid "Theme name" msgid "Theme name"
@@ -166,52 +146,47 @@ msgstr "Etosnomo"
msgid "The name of the theme, to be loaded from ~/.themes/name/gnome-shell" msgid "The name of the theme, to be loaded from ~/.themes/name/gnome-shell"
msgstr "La nomo de la etoso, malfermigi de ~/.themes/name/gnome-shell" msgstr "La nomo de la etoso, malfermigi de ~/.themes/name/gnome-shell"
#: extensions/window-list/extension.js:100 #: extensions/window-list/extension.js:98
msgid "Close" msgid "Close"
msgstr "Malfermi" msgstr "Fermi"
#: extensions/window-list/extension.js:120 #: extensions/window-list/extension.js:118
msgid "Unminimize" msgid "Unminimize"
msgstr "Neplejetigi" msgstr "Malminimumigi"
#: extensions/window-list/extension.js:120 #: extensions/window-list/extension.js:118
msgid "Minimize" msgid "Minimize"
msgstr "Plejetigi" msgstr "Minimumigi"
#: extensions/window-list/extension.js:127 #: extensions/window-list/extension.js:125
msgid "Unmaximize" msgid "Unmaximize"
msgstr "Nemaksimumigi" msgstr "Malmaksimumigi"
#: extensions/window-list/extension.js:127 #: extensions/window-list/extension.js:125
msgid "Maximize" msgid "Maximize"
msgstr "Maksimumigi" msgstr "Maksimumigi"
#: extensions/window-list/extension.js:408 #: extensions/window-list/extension.js:432
msgid "Minimize all" msgid "Minimize all"
msgstr "Plejetigi ĉiujn" msgstr "Minimumigi ĉiujn"
#: extensions/window-list/extension.js:414 #: extensions/window-list/extension.js:438
msgid "Unminimize all" msgid "Unminimize all"
msgstr "Neplejetigi ĉiujn" msgstr "Malminimumigi ĉiujn"
#: extensions/window-list/extension.js:420 #: extensions/window-list/extension.js:444
msgid "Maximize all" msgid "Maximize all"
msgstr "Maksimumigi ĉiujn" msgstr "Maksimumigi ĉiujn"
#: extensions/window-list/extension.js:429 #: extensions/window-list/extension.js:452
msgid "Unmaximize all" msgid "Unmaximize all"
msgstr "Nemaksimumigi ĉiujn" msgstr "Malmaksimumigi ĉiujn"
#: extensions/window-list/extension.js:438 #: extensions/window-list/extension.js:460
msgid "Close all" msgid "Close all"
msgstr "Fermi ĉiujn" msgstr "Fermi ĉiujn"
#: extensions/window-list/extension.js:655 #: extensions/window-list/extension.js:737
#: extensions/workspace-indicator/extension.js:21
msgid "Workspace Indicator"
msgstr "Laborspaco Indikilo"
#: extensions/window-list/extension.js:836
msgid "Window List" msgid "Window List"
msgstr "Fenestra listo" msgstr "Fenestra listo"
@@ -220,62 +195,86 @@ msgid "When to group windows"
msgstr "Kiam grupigi fenestrojn" msgstr "Kiam grupigi fenestrojn"
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:13 #: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:13
#, fuzzy
#| msgid ""
#| "Decides when to group windows from the same application on the window "
#| "list. Possible values are \"never\", \"auto\" and \"always\"."
msgid "" msgid ""
"Decides when to group windows from the same application on the window list. " "Decides when to group windows from the same application on the window list. "
"Possible values are “never”, “auto” and “always”." "Possible values are “never”, “auto” and “always”."
msgstr "" msgstr ""
"Decidas kiam grupi fenestrojn de la sama aplikaĵo en la fenestra listo. " "Decidas kiam grupi fenestrojn de la sama aplikaĵo en la fenestra listo. "
"Validaj valoroj estas “never” (neniam), “auto” (aŭtomate) kaj “always” " "Validaj valoroj estas “neniam, “aŭtomate kaj ĉiam”."
"(ĉiam)."
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:20 #: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:20
#: extensions/window-list/prefs.js:100
msgid "Show windows from all workspaces"
msgstr "Montri la fenestrojn de ĉiuj laborspacoj"
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:21
msgid "Whether to show windows from all workspaces or only the current one."
msgstr "Ĉu montri la fenestrojn de ĉiuj laborspacoj aŭ nur de la nuna."
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:27
msgid "Show the window list on all monitors" msgid "Show the window list on all monitors"
msgstr "Montri la fenestroliston en ĉiuj ekranoj" msgstr "Montri la fenestroliston en ĉiuj ekranoj"
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:21 #: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:28
msgid "" msgid ""
"Whether to show the window list on all connected monitors or only on the " "Whether to show the window list on all connected monitors or only on the "
"primary one." "primary one."
msgstr "" msgstr ""
"Ĉu montri la fenestroliston en ĉiuj konektitaj ekranoj aŭ nur en la ĉefa." "Ĉu montri la fenestroliston en ĉiuj konektitaj ekranoj aŭ nur en la ĉefa."
#: extensions/window-list/prefs.js:25 #: extensions/window-list/prefs.js:29
msgid "Window Grouping" msgid "Window Grouping"
msgstr "Fenestra grupigo" msgstr "Fenestra grupigo"
#: extensions/window-list/prefs.js:47 #: extensions/window-list/prefs.js:58
msgid "Never group windows" msgid "Never group windows"
msgstr "Neniam grupigi fenestrojn" msgstr "Neniam grupigi fenestrojn"
#: extensions/window-list/prefs.js:48 #: extensions/window-list/prefs.js:59
msgid "Group windows when space is limited" msgid "Group windows when space is limited"
msgstr "Grupigi fenestrojn kiam spaco limitas" msgstr "Grupigi fenestrojn kiam spaco limitas"
#: extensions/window-list/prefs.js:49 #: extensions/window-list/prefs.js:60
msgid "Always group windows" msgid "Always group windows"
msgstr "Ĉiam grupigi fenestrojn" msgstr "Ĉiam grupigi fenestrojn"
#: extensions/window-list/prefs.js:75 #: extensions/window-list/prefs.js:94
msgid "Show on all monitors" msgid "Show on all monitors"
msgstr "Montri en ĉiuj ekranoj" msgstr "Montri en ĉiuj ekranoj"
#: extensions/workspace-indicator/prefs.js:131 #: extensions/window-list/workspaceIndicator.js:249
#: extensions/workspace-indicator/extension.js:255
msgid "Workspace Indicator"
msgstr "Laborspaco Indikilo"
#: extensions/workspace-indicator/prefs.js:34
msgid "Workspace Names" msgid "Workspace Names"
msgstr "Laborspacaj nomoj" msgstr "Laborspacaj nomoj"
#: extensions/workspace-indicator/prefs.js:151 #: extensions/workspace-indicator/prefs.js:67
msgid "Name"
msgstr "Nomo"
#: extensions/workspace-indicator/prefs.js:191
#, javascript-format #, javascript-format
msgid "Workspace %d" msgid "Workspace %d"
msgstr "Laborspaco %d" msgstr "Laborspaco %d"
#: extensions/workspace-indicator/prefs.js:208
msgid "Add Workspace"
msgstr "Aldoni laborspacon"
#~ msgid "Application"
#~ msgstr "Aplikaĵo"
#~ msgid "Create new matching rule"
#~ msgstr "Krei novan kongruantan regulon"
#~ msgid "Add"
#~ msgstr "Aldoni"
#~ msgid "Name"
#~ msgstr "Nomo"
#~ msgid "Activities Overview"
#~ msgstr "Aktivecoj-Superrigardon"
#~ msgid "Attach modal dialog to the parent window" #~ msgid "Attach modal dialog to the parent window"
#~ msgstr "Kunligi modalan dialogon al la patra fenestro" #~ msgstr "Kunligi modalan dialogon al la patra fenestro"
@@ -319,9 +318,6 @@ msgstr "Laborspaco %d"
#~ msgid "Present windows as" #~ msgid "Present windows as"
#~ msgstr "Prezenti fenestron kiel" #~ msgstr "Prezenti fenestron kiel"
#~ msgid "Show only windows in the current workspace"
#~ msgstr "Montri nur fenestrojn en la aktuala laborspaco"
#~ msgid "Hello, world!" #~ msgid "Hello, world!"
#~ msgstr "Saluton, mondo!" #~ msgstr "Saluton, mondo!"
+70 -61
View File
@@ -4,15 +4,15 @@
# Jorge González <jorgegonz@svn.gnome.org>, 2011. # Jorge González <jorgegonz@svn.gnome.org>, 2011.
# Nicolás Satragno <nsatragno@gmail.com>, 2011. # Nicolás Satragno <nsatragno@gmail.com>, 2011.
# #
# Daniel Mustieles <daniel.mustieles@gmail.com>, 2011-2019. # Daniel Mustieles <daniel.mustieles@gmail.com>, 2011-2021.
# #
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: gnome-shell-extensions master\n" "Project-Id-Version: gnome-shell-extensions master\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell-extensions/" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell-extensions/"
"issues\n" "issues\n"
"POT-Creation-Date: 2019-08-09 22:24+0000\n" "POT-Creation-Date: 2021-11-06 14:08+0000\n"
"PO-Revision-Date: 2019-08-20 12:08+0200\n" "PO-Revision-Date: 2021-11-26 17:58+0100\n"
"Last-Translator: Daniel Mustieles <daniel.mustieles@gmail.com>\n" "Last-Translator: Daniel Mustieles <daniel.mustieles@gmail.com>\n"
"Language-Team: Spanish - Spain <gnome-es-list@gnome.org>\n" "Language-Team: Spanish - Spain <gnome-es-list@gnome.org>\n"
"Language: es_ES\n" "Language: es_ES\n"
@@ -20,21 +20,32 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Gtranslator 3.32.1\n" "X-Generator: Gtranslator 41.0\n"
#: data/gnome-classic.desktop.in:3 data/gnome-classic.session.desktop.in:3 #: data/gnome-classic.desktop.in:3
msgid "GNOME Classic" msgid "GNOME Classic"
msgstr "GNOME clásico" msgstr "GNOME clásico"
#: data/gnome-classic.desktop.in:4 #: data/gnome-classic.desktop.in:4 data/gnome-classic-wayland.desktop.in:4
#: data/gnome-classic-xorg.desktop.in:4
msgid "This session logs you into GNOME Classic" msgid "This session logs you into GNOME Classic"
msgstr "Esta sesión inicia GNOME clásico" msgstr "Esta sesión inicia GNOME clásico"
#: extensions/apps-menu/extension.js:113 #: data/gnome-classic-wayland.desktop.in:3
#| msgid "GNOME Classic"
msgid "GNOME Classic on Wayland"
msgstr "GNOME clásico en Wayland"
#: data/gnome-classic-xorg.desktop.in:3
#| msgid "GNOME Classic"
msgid "GNOME Classic on Xorg"
msgstr "GNOME clásicoen Xorg"
#: extensions/apps-menu/extension.js:112
msgid "Favorites" msgid "Favorites"
msgstr "Favoritos" msgstr "Favoritos"
#: extensions/apps-menu/extension.js:368 #: extensions/apps-menu/extension.js:366
msgid "Applications" msgid "Applications"
msgstr "Aplicaciones" msgstr "Aplicaciones"
@@ -50,39 +61,26 @@ msgstr ""
"Una lista de cadenas, conteniendo cada una un ID de aplicación (nombre de " "Una lista de cadenas, conteniendo cada una un ID de aplicación (nombre de "
"archivo de escritorio), seguido de dos puntos y el número del área de trabajo" "archivo de escritorio), seguido de dos puntos y el número del área de trabajo"
#: extensions/auto-move-windows/prefs.js:60 #: extensions/auto-move-windows/prefs.js:34
msgid "Application" msgid "Workspace Rules"
msgstr "Aplicación" msgstr "Reglas de las áreas de trabajo"
#: extensions/auto-move-windows/prefs.js:71 #: extensions/auto-move-windows/prefs.js:236
#: extensions/auto-move-windows/prefs.js:134
msgid "Workspace"
msgstr "Área de trabajo"
#: extensions/auto-move-windows/prefs.js:89
msgid "Add Rule" msgid "Add Rule"
msgstr "Añadir regla" msgstr "Añadir regla"
#: extensions/auto-move-windows/prefs.js:111
msgid "Create new matching rule"
msgstr "Crear regla de coincidencia nueva"
#: extensions/auto-move-windows/prefs.js:117
msgid "Add"
msgstr "Añadir"
#. TRANSLATORS: %s is the filesystem name #. TRANSLATORS: %s is the filesystem name
#: extensions/drive-menu/extension.js:102 #: extensions/drive-menu/extension.js:133
#: extensions/places-menu/placeDisplay.js:232 #: extensions/places-menu/placeDisplay.js:233
#, javascript-format #, javascript-format
msgid "Ejecting drive “%s” failed:" msgid "Ejecting drive “%s” failed:"
msgstr "Falló al expulsar el dispositivo «%s»:" msgstr "Falló al expulsar el dispositivo «%s»:"
#: extensions/drive-menu/extension.js:118 #: extensions/drive-menu/extension.js:149
msgid "Removable devices" msgid "Removable devices"
msgstr "Dispositivos extraíbles" msgstr "Dispositivos extraíbles"
#: extensions/drive-menu/extension.js:145 #: extensions/drive-menu/extension.js:171
msgid "Open Files" msgid "Open Files"
msgstr "Abrir archivos" msgstr "Abrir archivos"
@@ -115,8 +113,8 @@ msgstr ""
"los sitúa por debajo. Cambiar esta configuración requiere reiniciar la shell " "los sitúa por debajo. Cambiar esta configuración requiere reiniciar la shell "
"para que tenga efecto." "para que tenga efecto."
#: extensions/places-menu/extension.js:80 #: extensions/places-menu/extension.js:88
#: extensions/places-menu/extension.js:84 #: extensions/places-menu/extension.js:91
msgid "Places" msgid "Places"
msgstr "Lugares" msgstr "Lugares"
@@ -135,11 +133,11 @@ msgstr "Falló al montar el volumen para «%s»"
msgid "Computer" msgid "Computer"
msgstr "Equipo" msgstr "Equipo"
#: extensions/places-menu/placeDisplay.js:358 #: extensions/places-menu/placeDisplay.js:359
msgid "Home" msgid "Home"
msgstr "Carpeta personal" msgstr "Carpeta personal"
#: extensions/places-menu/placeDisplay.js:403 #: extensions/places-menu/placeDisplay.js:404
msgid "Browse Network" msgid "Browse Network"
msgstr "Examinar la red" msgstr "Examinar la red"
@@ -159,43 +157,43 @@ msgstr "Nombre del tema"
msgid "The name of the theme, to be loaded from ~/.themes/name/gnome-shell" msgid "The name of the theme, to be loaded from ~/.themes/name/gnome-shell"
msgstr "El nombre del tema, que se carga desde ~/.themes/nombre/gnome-shell" msgstr "El nombre del tema, que se carga desde ~/.themes/nombre/gnome-shell"
#: extensions/window-list/extension.js:99 #: extensions/window-list/extension.js:72
msgid "Close" msgid "Close"
msgstr "Cerrar" msgstr "Cerrar"
#: extensions/window-list/extension.js:119 #: extensions/window-list/extension.js:92
msgid "Unminimize" msgid "Unminimize"
msgstr "Desminimizar" msgstr "Desminimizar"
#: extensions/window-list/extension.js:119 #: extensions/window-list/extension.js:92
msgid "Minimize" msgid "Minimize"
msgstr "Minimizar" msgstr "Minimizar"
#: extensions/window-list/extension.js:126 #: extensions/window-list/extension.js:99
msgid "Unmaximize" msgid "Unmaximize"
msgstr "Desmaximizar" msgstr "Desmaximizar"
#: extensions/window-list/extension.js:126 #: extensions/window-list/extension.js:99
msgid "Maximize" msgid "Maximize"
msgstr "Maximizar" msgstr "Maximizar"
#: extensions/window-list/extension.js:431 #: extensions/window-list/extension.js:434
msgid "Minimize all" msgid "Minimize all"
msgstr "Minimizar todo" msgstr "Minimizar todo"
#: extensions/window-list/extension.js:437 #: extensions/window-list/extension.js:440
msgid "Unminimize all" msgid "Unminimize all"
msgstr "Desminimizar todo" msgstr "Desminimizar todo"
#: extensions/window-list/extension.js:443 #: extensions/window-list/extension.js:446
msgid "Maximize all" msgid "Maximize all"
msgstr "Maximizar todo" msgstr "Maximizar todo"
#: extensions/window-list/extension.js:451 #: extensions/window-list/extension.js:454
msgid "Unmaximize all" msgid "Unmaximize all"
msgstr "Desmaximizar todo" msgstr "Desmaximizar todo"
#: extensions/window-list/extension.js:459 #: extensions/window-list/extension.js:462
msgid "Close all" msgid "Close all"
msgstr "Cerrar todo" msgstr "Cerrar todo"
@@ -216,15 +214,11 @@ msgstr ""
"ventanas. Los valores posibles son «never», «auto» y «always»." "ventanas. Los valores posibles son «never», «auto» y «always»."
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:20 #: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:20
#: extensions/window-list/prefs.js:82 #: extensions/window-list/prefs.js:86
#| msgid "Show only windows in the current workspace"
msgid "Show windows from all workspaces" msgid "Show windows from all workspaces"
msgstr "Mostrar ventanas de todas las áreas de trabajo" msgstr "Mostrar ventanas de todas las áreas de trabajo"
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:21 #: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:21
#| msgid ""
#| "Whether to show the window list on all connected monitors or only on the "
#| "primary one."
msgid "Whether to show windows from all workspaces or only the current one." msgid "Whether to show windows from all workspaces or only the current one."
msgstr "" msgstr ""
"Indica si se deben mostrar ventanas de todas las áreas de trabajo o sólo de " "Indica si se deben mostrar ventanas de todas las áreas de trabajo o sólo de "
@@ -242,44 +236,59 @@ msgstr ""
"Indica si se debe mostrar la lista de ventanas en todas las pantallas " "Indica si se debe mostrar la lista de ventanas en todas las pantallas "
"conectadas o sólo en la primaria." "conectadas o sólo en la primaria."
#: extensions/window-list/prefs.js:25 #: extensions/window-list/prefs.js:39
msgid "Window Grouping" msgid "Window Grouping"
msgstr "Agrupación de ventanas" msgstr "Agrupación de ventanas"
#: extensions/window-list/prefs.js:47 #: extensions/window-list/prefs.js:63
msgid "Never group windows" msgid "Never group windows"
msgstr "Nunca agrupar las ventanas" msgstr "Nunca agrupar las ventanas"
#: extensions/window-list/prefs.js:48 #: extensions/window-list/prefs.js:64
msgid "Group windows when space is limited" msgid "Group windows when space is limited"
msgstr "Agrupar las ventanas cuando el espacio esté limitado" msgstr "Agrupar las ventanas cuando el espacio esté limitado"
#: extensions/window-list/prefs.js:49 #: extensions/window-list/prefs.js:65
msgid "Always group windows" msgid "Always group windows"
msgstr "Siempre agrupar las ventanas" msgstr "Siempre agrupar las ventanas"
#: extensions/window-list/prefs.js:75 #: extensions/window-list/prefs.js:81
msgid "Show on all monitors" msgid "Show on all monitors"
msgstr "Mostrar en todas las pantallas" msgstr "Mostrar en todas las pantallas"
#: extensions/window-list/workspaceIndicator.js:211 #: extensions/window-list/workspaceIndicator.js:249
#: extensions/workspace-indicator/extension.js:216 #: extensions/workspace-indicator/extension.js:254
msgid "Workspace Indicator" msgid "Workspace Indicator"
msgstr "Indicador de área de trabajo" msgstr "Indicador de área de trabajo"
#: extensions/workspace-indicator/prefs.js:131 #: extensions/workspace-indicator/prefs.js:33
msgid "Workspace Names" msgid "Workspace Names"
msgstr "Nombres de los áreas de trabajo" msgstr "Nombres de los áreas de trabajo"
#: extensions/workspace-indicator/prefs.js:151 #: extensions/workspace-indicator/prefs.js:66
msgid "Name"
msgstr "Nombre"
#: extensions/workspace-indicator/prefs.js:191
#, javascript-format #, javascript-format
msgid "Workspace %d" msgid "Workspace %d"
msgstr "Área de trabajo %d" msgstr "Área de trabajo %d"
#: extensions/workspace-indicator/prefs.js:207
msgid "Add Workspace"
msgstr "Añadir área de trabajo"
#~ msgid "Application"
#~ msgstr "Aplicación"
#~ msgid "Workspace"
#~ msgstr "Área de trabajo"
#~ msgid "Create new matching rule"
#~ msgstr "Crear regla de coincidencia nueva"
#~ msgid "Add"
#~ msgstr "Añadir"
#~ msgid "Name"
#~ msgstr "Nombre"
#~ msgid "Attach modal dialog to the parent window" #~ msgid "Attach modal dialog to the parent window"
#~ msgstr "Acoplar un diálogo modal a la ventana padre" #~ msgstr "Acoplar un diálogo modal a la ventana padre"
+66 -59
View File
@@ -5,14 +5,14 @@
# assar <asiersar@yahoo.com>, 2011. # assar <asiersar@yahoo.com>, 2011.
# Iñaki Larrañaga Murgoitio <dooteo@zundan.com>, 2011, 2013, 2015, 2017. # Iñaki Larrañaga Murgoitio <dooteo@zundan.com>, 2011, 2013, 2015, 2017.
# Edurne Labaka <elabaka@uzei.com>, 2015. # Edurne Labaka <elabaka@uzei.com>, 2015.
# Asier Sarasua Garmendia <asier.sarasua@gmail.com>, 2019. # Asier Sarasua Garmendia <asiersarasua@ni.eus>, 2019, 2020, 2021.
# #
msgid "" msgid ""
msgstr "Project-Id-Version: gnome-shell-extensions master\n" msgstr "Project-Id-Version: gnome-shell-extensions master\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell-extensions/issues\n" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell-extensions/issues\n"
"POT-Creation-Date: 2019-08-11 13:48+0000\n" "POT-Creation-Date: 2021-11-06 14:08+0000\n"
"PO-Revision-Date: 2019-08-12 00:42+0200\n" "PO-Revision-Date: 2021-12-25 00:42+0200\n"
"Last-Translator: Asier Sarasua Garmendia <asier.sarasua@gmail.com>\n" "Last-Translator: Asier Sarasua Garmendia <asiersarasua@ni.eus>\n"
"Language-Team: Basque <librezale@librezale.eus>\n" "Language-Team: Basque <librezale@librezale.eus>\n"
"Language: eu\n" "Language: eu\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
@@ -20,21 +20,29 @@ msgstr "Project-Id-Version: gnome-shell-extensions master\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Project-Style: gnome\n" "X-Project-Style: gnome\n"
"X-Generator: Poedit 2.2.3\n"
#: data/gnome-classic.desktop.in:3 data/gnome-classic.session.desktop.in:3 #: data/gnome-classic.desktop.in:3
msgid "GNOME Classic" msgid "GNOME Classic"
msgstr "GNOME Klasikoa" msgstr "GNOME Klasikoa"
#: data/gnome-classic.desktop.in:4 #: data/gnome-classic.desktop.in:4 data/gnome-classic-wayland.desktop.in:4
#: data/gnome-classic-xorg.desktop.in:4
msgid "This session logs you into GNOME Classic" msgid "This session logs you into GNOME Classic"
msgstr "Saio honek GNOME Klasikoa hasten du" msgstr "Saio honek GNOME Klasikoa hasten du"
#: extensions/apps-menu/extension.js:113 #: data/gnome-classic-wayland.desktop.in:3
msgid "GNOME Classic on Wayland"
msgstr "GNOME klasikoa Wayland gainean"
#: data/gnome-classic-xorg.desktop.in:3
msgid "GNOME Classic on Xorg"
msgstr "GNOME klasikoa Xorg gainean"
#: extensions/apps-menu/extension.js:112
msgid "Favorites" msgid "Favorites"
msgstr "Gogokoak" msgstr "Gogokoak"
#: extensions/apps-menu/extension.js:368 #: extensions/apps-menu/extension.js:366
msgid "Applications" msgid "Applications"
msgstr "Aplikazioak" msgstr "Aplikazioak"
@@ -48,39 +56,26 @@ msgid ""
"followed by a colon and the workspace number" "followed by a colon and the workspace number"
msgstr "Kateen zerrenda bat, bakoitzak aplikazio-ID bat duena (mahaigainaren fitxategi-izena) eta jarraian bi puntu eta laneko arearen zenbakia dituena" msgstr "Kateen zerrenda bat, bakoitzak aplikazio-ID bat duena (mahaigainaren fitxategi-izena) eta jarraian bi puntu eta laneko arearen zenbakia dituena"
#: extensions/auto-move-windows/prefs.js:60 #: extensions/auto-move-windows/prefs.js:34
msgid "Application" msgid "Workspace Rules"
msgstr "Aplikazioa" msgstr "Laneko areen arauak"
#: extensions/auto-move-windows/prefs.js:71 #: extensions/auto-move-windows/prefs.js:236
#: extensions/auto-move-windows/prefs.js:134
msgid "Workspace"
msgstr "Laneko area"
#: extensions/auto-move-windows/prefs.js:89
msgid "Add Rule" msgid "Add Rule"
msgstr "Gehitu araua" msgstr "Gehitu araua"
#: extensions/auto-move-windows/prefs.js:111
msgid "Create new matching rule"
msgstr "Sortu bat datorren arau berria"
#: extensions/auto-move-windows/prefs.js:117
msgid "Add"
msgstr "Gehitu"
#. TRANSLATORS: %s is the filesystem name #. TRANSLATORS: %s is the filesystem name
#: extensions/drive-menu/extension.js:102 #: extensions/drive-menu/extension.js:133
#: extensions/places-menu/placeDisplay.js:232 #: extensions/places-menu/placeDisplay.js:233
#, javascript-format #, javascript-format
msgid "Ejecting drive “%s” failed:" msgid "Ejecting drive “%s” failed:"
msgstr "Huts egin du “%s“ unitatea egoztean:" msgstr "Huts egin du “%s“ unitatea egoztean:"
#: extensions/drive-menu/extension.js:118 #: extensions/drive-menu/extension.js:149
msgid "Removable devices" msgid "Removable devices"
msgstr "Gailu aldagarriak" msgstr "Gailu aldagarriak"
#: extensions/drive-menu/extension.js:145 #: extensions/drive-menu/extension.js:171
msgid "Open Files" msgid "Open Files"
msgstr "Ireki fitxategiak" msgstr "Ireki fitxategiak"
@@ -106,8 +101,8 @@ msgid ""
"restarting the shell to have any effect." "restarting the shell to have any effect."
msgstr "TRUE (egia) bada, leihoen epigrafeak dagokien koadro txikien gainean jarriko ditu, Shell-aren lehenespena (behean jartzearena) gainidatziz. Ezarpen hau aldatzeko eta aplikatzeko Shell berrabiarazi behar da." msgstr "TRUE (egia) bada, leihoen epigrafeak dagokien koadro txikien gainean jarriko ditu, Shell-aren lehenespena (behean jartzearena) gainidatziz. Ezarpen hau aldatzeko eta aplikatzeko Shell berrabiarazi behar da."
#: extensions/places-menu/extension.js:80 #: extensions/places-menu/extension.js:88
#: extensions/places-menu/extension.js:84 #: extensions/places-menu/extension.js:91
msgid "Places" msgid "Places"
msgstr "Lekuak" msgstr "Lekuak"
@@ -126,11 +121,11 @@ msgstr "Huts egin du “%s“(r)en bolumena muntatzean"
msgid "Computer" msgid "Computer"
msgstr "Ordenagailua" msgstr "Ordenagailua"
#: extensions/places-menu/placeDisplay.js:358 #: extensions/places-menu/placeDisplay.js:359
msgid "Home" msgid "Home"
msgstr "Karpeta nagusia" msgstr "Karpeta nagusia"
#: extensions/places-menu/placeDisplay.js:403 #: extensions/places-menu/placeDisplay.js:404
msgid "Browse Network" msgid "Browse Network"
msgstr "Arakatu sarea" msgstr "Arakatu sarea"
@@ -150,47 +145,47 @@ msgstr "Gaiaren izena"
msgid "The name of the theme, to be loaded from ~/.themes/name/gnome-shell" msgid "The name of the theme, to be loaded from ~/.themes/name/gnome-shell"
msgstr "Gaiaren izena, ~/.themes/izena/gnome-shell direktoriotik kargatzeko" msgstr "Gaiaren izena, ~/.themes/izena/gnome-shell direktoriotik kargatzeko"
#: extensions/window-list/extension.js:98 #: extensions/window-list/extension.js:72
msgid "Close" msgid "Close"
msgstr "Itxi" msgstr "Itxi"
#: extensions/window-list/extension.js:118 #: extensions/window-list/extension.js:92
msgid "Unminimize" msgid "Unminimize"
msgstr "Leheneratu" msgstr "Leheneratu"
#: extensions/window-list/extension.js:118 #: extensions/window-list/extension.js:92
msgid "Minimize" msgid "Minimize"
msgstr "Minimizatu" msgstr "Minimizatu"
#: extensions/window-list/extension.js:125 #: extensions/window-list/extension.js:99
msgid "Unmaximize" msgid "Unmaximize"
msgstr "Desmaximizatu" msgstr "Desmaximizatu"
#: extensions/window-list/extension.js:125 #: extensions/window-list/extension.js:99
msgid "Maximize" msgid "Maximize"
msgstr "Maximizatu" msgstr "Maximizatu"
#: extensions/window-list/extension.js:430 #: extensions/window-list/extension.js:434
msgid "Minimize all" msgid "Minimize all"
msgstr "Minimizatu denak" msgstr "Minimizatu denak"
#: extensions/window-list/extension.js:436 #: extensions/window-list/extension.js:440
msgid "Unminimize all" msgid "Unminimize all"
msgstr "Leheneratu denak" msgstr "Leheneratu denak"
#: extensions/window-list/extension.js:442 #: extensions/window-list/extension.js:446
msgid "Maximize all" msgid "Maximize all"
msgstr "Maximizatu denak" msgstr "Maximizatu denak"
#: extensions/window-list/extension.js:450 #: extensions/window-list/extension.js:454
msgid "Unmaximize all" msgid "Unmaximize all"
msgstr "Desmaximizatu denak" msgstr "Desmaximizatu denak"
#: extensions/window-list/extension.js:458 #: extensions/window-list/extension.js:462
msgid "Close all" msgid "Close all"
msgstr "Itxi denak" msgstr "Itxi denak"
#: extensions/window-list/extension.js:740 #: extensions/window-list/extension.js:741
msgid "Window List" msgid "Window List"
msgstr "Leiho-zerrenda" msgstr "Leiho-zerrenda"
@@ -205,7 +200,7 @@ msgid ""
msgstr "Aplikazio bereko leihoak leihoen zerrendan noiz elkartuko diren erabakitzen du. Balio erabilgarriak: “never“ (inoiz ere ez), “auto“ (automatikoa) eta “always“ (beti)." msgstr "Aplikazio bereko leihoak leihoen zerrendan noiz elkartuko diren erabakitzen du. Balio erabilgarriak: “never“ (inoiz ere ez), “auto“ (automatikoa) eta “always“ (beti)."
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:20 #: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:20
#: extensions/window-list/prefs.js:82 #: extensions/window-list/prefs.js:86
msgid "Show windows from all workspaces" msgid "Show windows from all workspaces"
msgstr "Erakutsi laneko area guztietako leihoak" msgstr "Erakutsi laneko area guztietako leihoak"
@@ -223,44 +218,56 @@ msgid ""
"primary one." "primary one."
msgstr "Leihoen zerrenda konektatutako pantaila guztietan edo soilik pantaila nagusian erakutsiko den." msgstr "Leihoen zerrenda konektatutako pantaila guztietan edo soilik pantaila nagusian erakutsiko den."
#: extensions/window-list/prefs.js:25 #: extensions/window-list/prefs.js:39
msgid "Window Grouping" msgid "Window Grouping"
msgstr "Leiho-elkartzea" msgstr "Leiho-elkartzea"
#: extensions/window-list/prefs.js:47 #: extensions/window-list/prefs.js:63
msgid "Never group windows" msgid "Never group windows"
msgstr "Leihoak inoiz ez elkartu" msgstr "Leihoak inoiz ez elkartu"
#: extensions/window-list/prefs.js:48 #: extensions/window-list/prefs.js:64
msgid "Group windows when space is limited" msgid "Group windows when space is limited"
msgstr "Elkartu leihoak lekua mugatuta dagoenean" msgstr "Elkartu leihoak lekua mugatuta dagoenean"
#: extensions/window-list/prefs.js:49 #: extensions/window-list/prefs.js:65
msgid "Always group windows" msgid "Always group windows"
msgstr "Elkartu beti leihoak" msgstr "Elkartu beti leihoak"
#: extensions/window-list/prefs.js:75 #: extensions/window-list/prefs.js:81
msgid "Show on all monitors" msgid "Show on all monitors"
msgstr "Erakutsi pantaila guztietan" msgstr "Erakutsi pantaila guztietan"
#: extensions/window-list/workspaceIndicator.js:211 #: extensions/window-list/workspaceIndicator.js:249
#: extensions/workspace-indicator/extension.js:216 #: extensions/workspace-indicator/extension.js:254
msgid "Workspace Indicator" msgid "Workspace Indicator"
msgstr "Lan arearen adierazlea" msgstr "Lan arearen adierazlea"
#: extensions/workspace-indicator/prefs.js:131 #: extensions/workspace-indicator/prefs.js:33
msgid "Workspace Names" msgid "Workspace Names"
msgstr "Laneko areen izenak" msgstr "Laneko areen izenak"
#: extensions/workspace-indicator/prefs.js:151 #: extensions/workspace-indicator/prefs.js:66
msgid "Name"
msgstr "Izena"
#: extensions/workspace-indicator/prefs.js:191
#, javascript-format #, javascript-format
msgid "Workspace %d" msgid "Workspace %d"
msgstr "%d. laneko area" msgstr "%d. laneko area"
#: extensions/workspace-indicator/prefs.js:207
msgid "Add Workspace"
msgstr "Gehitu laneko area"
#~ msgid "Application"
#~ msgstr "Aplikazioa"
#~ msgid "Create new matching rule"
#~ msgstr "Sortu bat datorren arau berria"
#~ msgid "Add"
#~ msgstr "Gehitu"
#~ msgid "Name"
#~ msgstr "Izena"
#~ msgid "Attach modal dialog to the parent window" #~ msgid "Attach modal dialog to the parent window"
#~ msgstr "Erantsi elkarrizketa-koadro modala leiho gurasoari" #~ msgstr "Erantsi elkarrizketa-koadro modala leiho gurasoari"
+71 -59
View File
@@ -1,38 +1,48 @@
# Persian translation for gnome-shell-extensions. # Persian translation for gnome-shell-extensions.
# Copyright (C) 2011 Iranian Free Software Users Group (IFSUG.org) translation team. # Copyright (C) 2011 Iranian Free Software Users Group (IFSUG.org) translation team.
# This file is distributed under the same license as the gnome-shell-extensions package. # This file is distributed under the same license as the gnome-shell-extensions package.
# Arash Mousavi <mousavi.arash@gmail.com>, 2011, 2013, 2014, 2015, 2016, 2017. # Arash Mousavi <mousavi.arash@gmail.com>, 2011-2017.
# Danial Behzadi <dani.behzi@ubuntu.com>, 2018-2020.
# #
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: gnome-shell-extensions gnome-3-0\n" "Project-Id-Version: gnome-shell-extensions gnome-3-0\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell-extensions/" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell-extensions/"
"issues\n" "issues\n"
"POT-Creation-Date: 2019-08-09 22:24+0000\n" "POT-Creation-Date: 2021-11-06 14:08+0000\n"
"PO-Revision-Date: 2019-08-14 11:48+0430\n" "PO-Revision-Date: 2021-11-10 16:24+0330\n"
"Last-Translator: Danial Behzadi <dani.behzi@ubuntu.com>\n" "Last-Translator: MohammadSaleh Kamyab <mskf1383@protonmail.com>\n"
"Language-Team: Persian <>\n" "Language-Team: Persian <>\n"
"Language: fa\n" "Language: fa\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Poedit-SourceCharset: utf-8\n" "X-Poedit-SourceCharset: utf-8\n"
"X-Generator: Poedit 2.2.1\n" "X-Generator: Poedit 2.4.2\n"
"Plural-Forms: nplurals=1; plural=0;\n" "Plural-Forms: nplurals=1; plural=0;\n"
#: data/gnome-classic.desktop.in:3 data/gnome-classic.session.desktop.in:3 #: data/gnome-classic.desktop.in:3
msgid "GNOME Classic" msgid "GNOME Classic"
msgstr "گنوم کلاسیک" msgstr "گنوم کلاسیک"
#: data/gnome-classic.desktop.in:4 #: data/gnome-classic.desktop.in:4 data/gnome-classic-wayland.desktop.in:4
#: data/gnome-classic-xorg.desktop.in:4
msgid "This session logs you into GNOME Classic" msgid "This session logs you into GNOME Classic"
msgstr "این نشست شما را به گنوم کلاسیک وارد می‌کند" msgstr "این نشست شما را به گنوم کلاسیک وارد می‌کند"
#: extensions/apps-menu/extension.js:113 #: data/gnome-classic-wayland.desktop.in:3
msgid "Favorites" msgid "GNOME Classic on Wayland"
msgstr "علاقه‌مندی‌ها" msgstr "گنوم کلاسیک روی وی‌لند"
#: extensions/apps-menu/extension.js:368 #: data/gnome-classic-xorg.desktop.in:3
msgid "GNOME Classic on Xorg"
msgstr "گنوم کلاسیک روی زورگ"
#: extensions/apps-menu/extension.js:112
msgid "Favorites"
msgstr "برگزیده‌ها"
#: extensions/apps-menu/extension.js:366
msgid "Applications" msgid "Applications"
msgstr "برنامه‌ها" msgstr "برنامه‌ها"
@@ -48,39 +58,26 @@ msgstr ""
"فهرستی از رشته‌ها، هرکدام حاوی شناسه‌ی یک برنامه (نام پرونده رومیزی)، در ادامه‌ی یک " "فهرستی از رشته‌ها، هرکدام حاوی شناسه‌ی یک برنامه (نام پرونده رومیزی)، در ادامه‌ی یک "
"ویرگول و شماره‌ی فضای کاری" "ویرگول و شماره‌ی فضای کاری"
#: extensions/auto-move-windows/prefs.js:60 #: extensions/auto-move-windows/prefs.js:34
msgid "Application" msgid "Workspace Rules"
msgstr "برنامه" msgstr "قواعد فضای کاری"
#: extensions/auto-move-windows/prefs.js:71 #: extensions/auto-move-windows/prefs.js:236
#: extensions/auto-move-windows/prefs.js:134
msgid "Workspace"
msgstr "فضای‌کاری"
#: extensions/auto-move-windows/prefs.js:89
msgid "Add Rule" msgid "Add Rule"
msgstr "افزودن قاعده" msgstr "افزودن قاعده"
#: extensions/auto-move-windows/prefs.js:111
msgid "Create new matching rule"
msgstr "افزودن یک قاعده‌ی منطبق جدید"
#: extensions/auto-move-windows/prefs.js:117
msgid "Add"
msgstr "اضافه"
#. TRANSLATORS: %s is the filesystem name #. TRANSLATORS: %s is the filesystem name
#: extensions/drive-menu/extension.js:102 #: extensions/drive-menu/extension.js:133
#: extensions/places-menu/placeDisplay.js:232 #: extensions/places-menu/placeDisplay.js:233
#, javascript-format #, javascript-format
msgid "Ejecting drive “%s” failed:" msgid "Ejecting drive “%s” failed:"
msgstr "بیرون دادن دیسک‌گردان «%s» شکست خورد:" msgstr "بیرون دادن دیسک‌گردان «%s» شکست خورد:"
#: extensions/drive-menu/extension.js:118 #: extensions/drive-menu/extension.js:149
msgid "Removable devices" msgid "Removable devices"
msgstr "دستگاه‌های جداشدنی" msgstr "دستگاه‌های جداشدنی"
#: extensions/drive-menu/extension.js:145 #: extensions/drive-menu/extension.js:171
msgid "Open Files" msgid "Open Files"
msgstr "گشودن پرونده‌ها" msgstr "گشودن پرونده‌ها"
@@ -112,7 +109,7 @@ msgstr ""
"شل در پایین را تغییر می‌دهد. تغییر این گزینه، نیاز به راه‌اندازی مجدد شل دارد تا " "شل در پایین را تغییر می‌دهد. تغییر این گزینه، نیاز به راه‌اندازی مجدد شل دارد تا "
"تاثیر بگذارد." "تاثیر بگذارد."
#: extensions/places-menu/extension.js:80 extensions/places-menu/extension.js:84 #: extensions/places-menu/extension.js:88 extensions/places-menu/extension.js:91
msgid "Places" msgid "Places"
msgstr "مکان‌ها" msgstr "مکان‌ها"
@@ -131,11 +128,11 @@ msgstr "شکست در سوار کردن حجم برای «%s»"
msgid "Computer" msgid "Computer"
msgstr "رایانه" msgstr "رایانه"
#: extensions/places-menu/placeDisplay.js:358 #: extensions/places-menu/placeDisplay.js:359
msgid "Home" msgid "Home"
msgstr "خانه" msgstr "خانه"
#: extensions/places-menu/placeDisplay.js:403 #: extensions/places-menu/placeDisplay.js:404
msgid "Browse Network" msgid "Browse Network"
msgstr "مرور شبکه" msgstr "مرور شبکه"
@@ -155,43 +152,43 @@ msgstr "نام تم"
msgid "The name of the theme, to be loaded from ~/.themes/name/gnome-shell" msgid "The name of the theme, to be loaded from ~/.themes/name/gnome-shell"
msgstr "نام تم، جهت بارگیری از شاخه themes/name/gnome-shell./~" msgstr "نام تم، جهت بارگیری از شاخه themes/name/gnome-shell./~"
#: extensions/window-list/extension.js:99 #: extensions/window-list/extension.js:72
msgid "Close" msgid "Close"
msgstr "خروج" msgstr "خروج"
#: extensions/window-list/extension.js:119 #: extensions/window-list/extension.js:92
msgid "Unminimize" msgid "Unminimize"
msgstr "ناکمینه" msgstr "ناکمینه"
#: extensions/window-list/extension.js:119 #: extensions/window-list/extension.js:92
msgid "Minimize" msgid "Minimize"
msgstr "کمینه" msgstr "کمینه"
#: extensions/window-list/extension.js:126 #: extensions/window-list/extension.js:99
msgid "Unmaximize" msgid "Unmaximize"
msgstr "نابیشینه" msgstr "نابیشینه"
#: extensions/window-list/extension.js:126 #: extensions/window-list/extension.js:99
msgid "Maximize" msgid "Maximize"
msgstr "بیشنه" msgstr "بیشنه"
#: extensions/window-list/extension.js:431 #: extensions/window-list/extension.js:434
msgid "Minimize all" msgid "Minimize all"
msgstr "کمینهٔ همه" msgstr "کمینهٔ همه"
#: extensions/window-list/extension.js:437 #: extensions/window-list/extension.js:440
msgid "Unminimize all" msgid "Unminimize all"
msgstr "ناکمینهٔ همه" msgstr "ناکمینهٔ همه"
#: extensions/window-list/extension.js:443 #: extensions/window-list/extension.js:446
msgid "Maximize all" msgid "Maximize all"
msgstr "بیشینهٔ همه" msgstr "بیشینهٔ همه"
#: extensions/window-list/extension.js:451 #: extensions/window-list/extension.js:454
msgid "Unmaximize all" msgid "Unmaximize all"
msgstr "نابیشینهٔ همه" msgstr "نابیشینهٔ همه"
#: extensions/window-list/extension.js:459 #: extensions/window-list/extension.js:462
msgid "Close all" msgid "Close all"
msgstr "بستن همه" msgstr "بستن همه"
@@ -212,7 +209,7 @@ msgstr ""
"ممکن عبارتند از «never»، «auto» و «always»." "ممکن عبارتند از «never»، «auto» و «always»."
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:20 #: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:20
#: extensions/window-list/prefs.js:82 #: extensions/window-list/prefs.js:86
msgid "Show windows from all workspaces" msgid "Show windows from all workspaces"
msgstr "نمایش پنجره‌ها از تمام فضاهای کاری" msgstr "نمایش پنجره‌ها از تمام فضاهای کاری"
@@ -232,44 +229,59 @@ msgstr ""
"اینکه آیا فهرست پنجره‌ها در تمام نمایشگرهای متصل نمایش داده شود یا فقط در نمایشگر " "اینکه آیا فهرست پنجره‌ها در تمام نمایشگرهای متصل نمایش داده شود یا فقط در نمایشگر "
"اصلی." "اصلی."
#: extensions/window-list/prefs.js:25 #: extensions/window-list/prefs.js:39
msgid "Window Grouping" msgid "Window Grouping"
msgstr "گروه‌سازی پنجره‌ها" msgstr "گروه‌سازی پنجره‌ها"
#: extensions/window-list/prefs.js:47 #: extensions/window-list/prefs.js:63
msgid "Never group windows" msgid "Never group windows"
msgstr "هیچ‌گاه پنجره‌ها گروه نشوند" msgstr "هیچ‌گاه پنجره‌ها گروه نشوند"
#: extensions/window-list/prefs.js:48 #: extensions/window-list/prefs.js:64
msgid "Group windows when space is limited" msgid "Group windows when space is limited"
msgstr "پنجره‌ها زمانی که فضا محدود است گروه شوند" msgstr "پنجره‌ها زمانی که فضا محدود است گروه شوند"
#: extensions/window-list/prefs.js:49 #: extensions/window-list/prefs.js:65
msgid "Always group windows" msgid "Always group windows"
msgstr "همیشه پنجره‌ها گروه شوند" msgstr "همیشه پنجره‌ها گروه شوند"
#: extensions/window-list/prefs.js:75 #: extensions/window-list/prefs.js:81
msgid "Show on all monitors" msgid "Show on all monitors"
msgstr "نمایش در تمام نمایشگرها" msgstr "نمایش در تمام نمایشگرها"
#: extensions/window-list/workspaceIndicator.js:211 #: extensions/window-list/workspaceIndicator.js:249
#: extensions/workspace-indicator/extension.js:216 #: extensions/workspace-indicator/extension.js:254
msgid "Workspace Indicator" msgid "Workspace Indicator"
msgstr "نشانگر فضای‌کاری" msgstr "نشانگر فضای‌کاری"
#: extensions/workspace-indicator/prefs.js:131 #: extensions/workspace-indicator/prefs.js:33
msgid "Workspace Names" msgid "Workspace Names"
msgstr "نام‌های فضای کاری" msgstr "نام‌های فضای کاری"
#: extensions/workspace-indicator/prefs.js:151 #: extensions/workspace-indicator/prefs.js:66
msgid "Name"
msgstr "نام"
#: extensions/workspace-indicator/prefs.js:191
#, javascript-format #, javascript-format
msgid "Workspace %d" msgid "Workspace %d"
msgstr "فضای کاری %Id" msgstr "فضای کاری %Id"
#: extensions/workspace-indicator/prefs.js:207
msgid "Add Workspace"
msgstr "افزودن فضای‌کاری"
#~ msgid "Application"
#~ msgstr "برنامه"
#~ msgid "Workspace"
#~ msgstr "فضای‌کاری"
#~ msgid "Create new matching rule"
#~ msgstr "افزودن یک قاعده‌ی منطبق جدید"
#~ msgid "Add"
#~ msgstr "اضافه"
#~ msgid "Name"
#~ msgstr "نام"
#~ msgid "Attach modal dialog to the parent window" #~ msgid "Attach modal dialog to the parent window"
#~ msgstr "اتصال محاوره modal به پنجره والد" #~ msgstr "اتصال محاوره modal به پنجره والد"
+62 -59
View File
@@ -12,9 +12,9 @@ msgstr ""
"Project-Id-Version: gnome-shell-extensions\n" "Project-Id-Version: gnome-shell-extensions\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell-extensions/" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell-extensions/"
"issues\n" "issues\n"
"POT-Creation-Date: 2019-08-09 22:24+0000\n" "POT-Creation-Date: 2020-10-17 20:14+0000\n"
"PO-Revision-Date: 2019-08-17 16:00+0300\n" "PO-Revision-Date: 2021-03-15 21:32+0200\n"
"Last-Translator: Jiri Grönroos <jiri.gronroos+l10n@iki.fi>\n" "Last-Translator: JR-Fi <starman@starman.fi>\n"
"Language-Team: suomi <lokalisointi-lista@googlegroups.com>\n" "Language-Team: suomi <lokalisointi-lista@googlegroups.com>\n"
"Language: fi\n" "Language: fi\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
@@ -25,7 +25,7 @@ msgstr ""
"X-Project-Style: gnome\n" "X-Project-Style: gnome\n"
"X-POT-Import-Date: 2012-03-05 15:06:12+0000\n" "X-POT-Import-Date: 2012-03-05 15:06:12+0000\n"
#: data/gnome-classic.desktop.in:3 data/gnome-classic.session.desktop.in:3 #: data/gnome-classic.desktop.in:3
msgid "GNOME Classic" msgid "GNOME Classic"
msgstr "Perinteinen Gnome" msgstr "Perinteinen Gnome"
@@ -37,7 +37,7 @@ msgstr "Tämä istunto kirjaa sinut perinteiseen Gnomeen"
msgid "Favorites" msgid "Favorites"
msgstr "Suosikit" msgstr "Suosikit"
#: extensions/apps-menu/extension.js:368 #: extensions/apps-menu/extension.js:369
msgid "Applications" msgid "Applications"
msgstr "Sovellukset" msgstr "Sovellukset"
@@ -50,40 +50,29 @@ msgid ""
"A list of strings, each containing an application id (desktop file name), " "A list of strings, each containing an application id (desktop file name), "
"followed by a colon and the workspace number" "followed by a colon and the workspace number"
msgstr "" msgstr ""
"Lista merkkijonoja, jossa jokainen on ohjelman tunnus (työpöydän "
"tiedostonimi), jota seuraa kaksoispiste ja työtilan numero"
#: extensions/auto-move-windows/prefs.js:60 #: extensions/auto-move-windows/prefs.js:35
msgid "Application" msgid "Workspace Rules"
msgstr "Sovellus" msgstr "Työtilojen säännöt"
#: extensions/auto-move-windows/prefs.js:71 #: extensions/auto-move-windows/prefs.js:243
#: extensions/auto-move-windows/prefs.js:134
msgid "Workspace"
msgstr "Työtila"
#: extensions/auto-move-windows/prefs.js:89
msgid "Add Rule" msgid "Add Rule"
msgstr "Lisää sääntö" msgstr "Lisää sääntö"
#: extensions/auto-move-windows/prefs.js:111
msgid "Create new matching rule"
msgstr "Luo uusi vastaava sääntö"
#: extensions/auto-move-windows/prefs.js:117
msgid "Add"
msgstr "Lisää"
#. TRANSLATORS: %s is the filesystem name #. TRANSLATORS: %s is the filesystem name
#: extensions/drive-menu/extension.js:102 #: extensions/drive-menu/extension.js:112
#: extensions/places-menu/placeDisplay.js:232 #: extensions/places-menu/placeDisplay.js:233
#, javascript-format #, javascript-format
msgid "Ejecting drive “%s” failed:" msgid "Ejecting drive “%s” failed:"
msgstr "Aseman “%s” irrottaminen epäonnistui:" msgstr "Aseman “%s” irrottaminen epäonnistui:"
#: extensions/drive-menu/extension.js:118 #: extensions/drive-menu/extension.js:128
msgid "Removable devices" msgid "Removable devices"
msgstr "Erilliset tallennusvälineet" msgstr "Erilliset tallennusvälineet"
#: extensions/drive-menu/extension.js:145 #: extensions/drive-menu/extension.js:155
msgid "Open Files" msgid "Open Files"
msgstr "Avaa tiedostonhallinta" msgstr "Avaa tiedostonhallinta"
@@ -97,6 +86,9 @@ msgid ""
"aspect ratio, and consolidating them further to reduce the bounding box. " "aspect ratio, and consolidating them further to reduce the bounding box. "
"This setting applies only with the natural placement strategy." "This setting applies only with the natural placement strategy."
msgstr "" msgstr ""
"Yritä käyttää enemmän näyttötilaa laittamalla ikkunoiden pikkukuvat "
"huomioiden näyttösuhteen ja lähentämällä niitä vähentämällä rajaavaa "
"laatikkoa. Tämä asetus toimii vain luonnollisen asettelutavan kanssa."
#: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:11 #: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:11
msgid "Place window captions on top" msgid "Place window captions on top"
@@ -112,8 +104,8 @@ msgstr ""
"Tämä syrjäyttää oletusasetuksen, eli otsikkotekstin asettamisen pienoiskuvan " "Tämä syrjäyttää oletusasetuksen, eli otsikkotekstin asettamisen pienoiskuvan "
"alle. Tämän asetuksen muutos vaatii Gnomen uudelleenkäynnistyksen." "alle. Tämän asetuksen muutos vaatii Gnomen uudelleenkäynnistyksen."
#: extensions/places-menu/extension.js:80 #: extensions/places-menu/extension.js:89
#: extensions/places-menu/extension.js:84 #: extensions/places-menu/extension.js:93
msgid "Places" msgid "Places"
msgstr "Sijainnit" msgstr "Sijainnit"
@@ -132,23 +124,22 @@ msgstr "Taltion “%s” liittäminen epäonnistui"
msgid "Computer" msgid "Computer"
msgstr "Tietokone" msgstr "Tietokone"
#: extensions/places-menu/placeDisplay.js:358 #: extensions/places-menu/placeDisplay.js:359
msgid "Home" msgid "Home"
msgstr "Koti" msgstr "Koti"
#: extensions/places-menu/placeDisplay.js:403 #: extensions/places-menu/placeDisplay.js:404
msgid "Browse Network" msgid "Browse Network"
msgstr "Selaa verkkoa" msgstr "Selaa verkkoa"
# Konteksti muutui hieman, kun tälle ilmaantui pari, jossa suunta on taaksepäin
#: extensions/screenshot-window-sizer/org.gnome.shell.extensions.screenshot-window-sizer.gschema.xml:7 #: extensions/screenshot-window-sizer/org.gnome.shell.extensions.screenshot-window-sizer.gschema.xml:7
msgid "Cycle Screenshot Sizes" msgid "Cycle Screenshot Sizes"
msgstr "Vaihtele kuvakaappausten kokojen välillä" msgstr "Vaihda kuvakaappausten kokojen välillä"
#: extensions/screenshot-window-sizer/org.gnome.shell.extensions.screenshot-window-sizer.gschema.xml:11 #: extensions/screenshot-window-sizer/org.gnome.shell.extensions.screenshot-window-sizer.gschema.xml:11
#, fuzzy
#| msgid "Cycle Screenshot Sizes"
msgid "Cycle Screenshot Sizes Backward" msgid "Cycle Screenshot Sizes Backward"
msgstr "Vaihtele kuvakaappausten kokojen välillä" msgstr "Vaihda kuvakaappausten kokojen välillä taaksepäin"
#: extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml:5 #: extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml:5
msgid "Theme name" msgid "Theme name"
@@ -158,47 +149,47 @@ msgstr "Teeman nimi"
msgid "The name of the theme, to be loaded from ~/.themes/name/gnome-shell" msgid "The name of the theme, to be loaded from ~/.themes/name/gnome-shell"
msgstr "Teeman nimi, ladataan sijainnista ~/.themes/name/gnome-shell" msgstr "Teeman nimi, ladataan sijainnista ~/.themes/name/gnome-shell"
#: extensions/window-list/extension.js:99 #: extensions/window-list/extension.js:98
msgid "Close" msgid "Close"
msgstr "Sulje" msgstr "Sulje"
#: extensions/window-list/extension.js:119 #: extensions/window-list/extension.js:118
msgid "Unminimize" msgid "Unminimize"
msgstr "Palauta pienennys" msgstr "Palauta pienennys"
#: extensions/window-list/extension.js:119 #: extensions/window-list/extension.js:118
msgid "Minimize" msgid "Minimize"
msgstr "Pienennä" msgstr "Pienennä"
#: extensions/window-list/extension.js:126 #: extensions/window-list/extension.js:125
msgid "Unmaximize" msgid "Unmaximize"
msgstr "Palauta suurennus" msgstr "Palauta suurennus"
#: extensions/window-list/extension.js:126 #: extensions/window-list/extension.js:125
msgid "Maximize" msgid "Maximize"
msgstr "Suurenna" msgstr "Suurenna"
#: extensions/window-list/extension.js:431 #: extensions/window-list/extension.js:432
msgid "Minimize all" msgid "Minimize all"
msgstr "Pienennä kaikki" msgstr "Pienennä kaikki"
#: extensions/window-list/extension.js:437 #: extensions/window-list/extension.js:438
msgid "Unminimize all" msgid "Unminimize all"
msgstr "Palauta kaikkien koko" msgstr "Palauta kaikkien koko"
#: extensions/window-list/extension.js:443 #: extensions/window-list/extension.js:444
msgid "Maximize all" msgid "Maximize all"
msgstr "Suurenna kaikki" msgstr "Suurenna kaikki"
#: extensions/window-list/extension.js:451 #: extensions/window-list/extension.js:452
msgid "Unmaximize all" msgid "Unmaximize all"
msgstr "Palauta kaikkien koko" msgstr "Palauta kaikkien koko"
#: extensions/window-list/extension.js:459 #: extensions/window-list/extension.js:460
msgid "Close all" msgid "Close all"
msgstr "Sulje kaikki" msgstr "Sulje kaikki"
#: extensions/window-list/extension.js:741 #: extensions/window-list/extension.js:738
msgid "Window List" msgid "Window List"
msgstr "Ikkunaluettelo" msgstr "Ikkunaluettelo"
@@ -215,7 +206,7 @@ msgstr ""
"Mahdolliset arvot ovat “never”, “auto” ja “always”." "Mahdolliset arvot ovat “never”, “auto” ja “always”."
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:20 #: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:20
#: extensions/window-list/prefs.js:82 #: extensions/window-list/prefs.js:100
msgid "Show windows from all workspaces" msgid "Show windows from all workspaces"
msgstr "Näytä ikkunat kaikista työtiloista" msgstr "Näytä ikkunat kaikista työtiloista"
@@ -237,44 +228,56 @@ msgstr ""
"Näytetäänkö ikkunaluettelo kaikilla liitetyillä näytöillä vai ainoastaan " "Näytetäänkö ikkunaluettelo kaikilla liitetyillä näytöillä vai ainoastaan "
"ensisijaisella näytöllä." "ensisijaisella näytöllä."
#: extensions/window-list/prefs.js:25 #: extensions/window-list/prefs.js:29
msgid "Window Grouping" msgid "Window Grouping"
msgstr "Ikkunoiden ryhmitys" msgstr "Ikkunoiden ryhmitys"
#: extensions/window-list/prefs.js:47 #: extensions/window-list/prefs.js:58
msgid "Never group windows" msgid "Never group windows"
msgstr "Älä ryhmitä ikkunoita koskaan" msgstr "Älä ryhmitä ikkunoita koskaan"
#: extensions/window-list/prefs.js:48 #: extensions/window-list/prefs.js:59
msgid "Group windows when space is limited" msgid "Group windows when space is limited"
msgstr "Ryhmitä ikkunat tilan ollessa rajallinen" msgstr "Ryhmitä ikkunat tilan ollessa rajallinen"
#: extensions/window-list/prefs.js:49 #: extensions/window-list/prefs.js:60
msgid "Always group windows" msgid "Always group windows"
msgstr "Ryhmitä ikkunat aina" msgstr "Ryhmitä ikkunat aina"
#: extensions/window-list/prefs.js:75 #: extensions/window-list/prefs.js:94
msgid "Show on all monitors" msgid "Show on all monitors"
msgstr "Näytä kaikilla näytöillä" msgstr "Näytä kaikilla näytöillä"
#: extensions/window-list/workspaceIndicator.js:211 #: extensions/window-list/workspaceIndicator.js:207
#: extensions/workspace-indicator/extension.js:216 #: extensions/workspace-indicator/extension.js:213
msgid "Workspace Indicator" msgid "Workspace Indicator"
msgstr "Työtilan ilmaisin" msgstr "Työtilan ilmaisin"
#: extensions/workspace-indicator/prefs.js:131 #: extensions/workspace-indicator/prefs.js:34
msgid "Workspace Names" msgid "Workspace Names"
msgstr "Työtilojen nimet" msgstr "Työtilojen nimet"
#: extensions/workspace-indicator/prefs.js:151 #: extensions/workspace-indicator/prefs.js:67
msgid "Name"
msgstr "Nimi"
#: extensions/workspace-indicator/prefs.js:191
#, javascript-format #, javascript-format
msgid "Workspace %d" msgid "Workspace %d"
msgstr "Työtila %d" msgstr "Työtila %d"
#: extensions/workspace-indicator/prefs.js:218
msgid "Add Workspace"
msgstr "Lisää työtila"
#~ msgid "Application"
#~ msgstr "Sovellus"
#~ msgid "Create new matching rule"
#~ msgstr "Luo uusi vastaava sääntö"
#~ msgid "Add"
#~ msgstr "Lisää"
#~ msgid "Name"
#~ msgstr "Nimi"
#~ msgid "Attach modal dialog to the parent window" #~ msgid "Attach modal dialog to the parent window"
#~ msgstr "Liitä modaali-ikkuna ylätason ikkunaan" #~ msgstr "Liitä modaali-ikkuna ylätason ikkunaan"

Some files were not shown because too many files have changed in this diff Show More