Compare commits

..

49 Commits

Author SHA1 Message Date
Florian Müllner
c302db7545 Bump version to 47.alpha
Update NEWS.
2024-06-29 14:11:12 +02:00
Florian Müllner
0554a8e97d window-list: Replace custom tooltip implementation
DashItemContainer already has support for showing a tooltip-like
label, so now that we use that for animating items, we can use
it for tooltips as well.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/325>
2024-06-29 13:43:55 +02:00
Florian Müllner
039c66e7b7 window-list: Animate buttons in and out
Buttons are currently added and removed from the list without
any transitions, which gives the list a "jumpy" feel. Instead,
do what we do elsewhere and smoothly animate additions and
removals by re-using the dash's ItemContainer class.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/325>
2024-06-29 13:43:55 +02:00
Florian Müllner
7eb00e350e window-list: Don't hide window button while unmanaging
This will allow to animate the transition.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/325>
2024-06-29 13:43:55 +02:00
Florian Müllner
f76f9e8220 window-list: Don't use homogeneous layout
We want all buttons in the window list to have the same size,
but that's already achieved via max/natural-width in the CSS.

Not enforcing the equal size via the layout manager will allow
buttons to temporarily have a different size when we start
animating additions and removals.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/325>
2024-06-29 13:13:12 +02:00
Balázs Úr
17c963b63f Update Hungarian translation 2024-06-28 14:25:44 +00:00
Yosef Or Boczko
5d45a697ce Update Hebrew translation 2024-06-28 07:34:33 +00:00
Милош Поповић
ef729f2d66 Update Serbian translation 2024-06-20 15:00:07 +00:00
Artur S0
1394e82bd0 Update Russian translation 2024-05-27 10:19:22 +00:00
Scrambled 777
9e61aaf08c Update Hindi translation 2024-05-25 17:17:19 +00:00
Florian Müllner
6ac76140a5 ci: Hook up release-module
In the future, the module will automate uploading the release
tarball. We already use the CI pipeline to generate the tarball,
so it's easy to hook up the module and provide some testing
before the module goes into production.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/324>
2024-05-24 15:18:59 +02:00
Florian Müllner
8c014a6b1d ci: Use meson introspect to generate artifact path
We currently assume that the `CI_COMMIT_TAG` variable matches the
version component of the generated dist tarball.

That is usually correct, but sometimes errors happen and a wrong
tag is pushed, and the real release uses something like "46.0-real".

Account for that by building the artifact path from `meson introspect`
and exporting it as environment variable.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/324>
2024-05-24 15:18:59 +02:00
Scrambled 777
2fe844f412 Update Hindi translation 2024-05-12 13:44:51 +00:00
Jose Riha
8185b43d54 Update Slovak translation
(cherry picked from commit 1219dfc144)
2024-05-11 22:19:20 +00:00
Hugo Carvalho
59ab3f834d Update Portuguese translation
(cherry picked from commit dd16556530)
2024-05-04 23:22:30 +00:00
Martin
8b6835c3d6 Update Slovenian translation 2024-05-01 22:12:17 +00:00
Florian Müllner
bb5bb70ac5 Update POTFILES.in
The file is now copied at build time from the workspace-indicator
extension.

Fixes: 0c42f162 ("window-list: Use actual copy of workspace-indicator")
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/321>
2024-04-29 16:49:30 +02:00
Florian Müllner
da90d365ec window-list: Use getter methods for events
The underlying structs were made opaque a while ago, so direct
access to the struct fields is no longer possible.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/320>
2024-04-26 15:22:16 +02:00
Florian Müllner
02ff72b2f0 apps-menu: Set label_actor of Category items
Category items are based on BaseMenuItem rather than MenuItem,
so the accessible relationship isn't set up automatically for us.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/319>
2024-04-25 14:42:53 +00:00
Jordi Mas i Hernandez
9c7a086870 Update Catalan translation 2024-04-25 11:53:01 +00:00
Florian Müllner
24ba03fe96 window-list: Expose workspace preview option
Now that we have the option, the window-list should expose it
in its preference window like the workspace-indicator.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/316>
2024-04-24 14:23:22 +00:00
Florian Müllner
69d8d1a335 workspace-indicator: Make previews configurable
Now that previews scroll when there are too many workspaces,
there is no longer a reason for the 6-workspace limit.

However some users do prefer the menu, so rather than drop it,
turn it into a proper preference.

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

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/316>
2024-04-24 14:23:22 +00:00
Florian Müllner
d495a2eed8 workspace-indicator: Also show previews in menu
Since the regular session also switched to horizontal workspaces,
using a vertical menu has been a bit awkward.

Now that our previews have become more flexible, we can use them
in the collapsed state as well as when embedded into the top bar.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/316>
2024-04-24 14:23:22 +00:00
Florian Müllner
6b3990457e workspace-indicator: Stop handling vertical layouts
Both the regular session and GNOME classic use a horizontal layout
nowadays, so it doesn't seem worth to specifically handle vertical
layouts anymore.

The extension will still work when the layout is changed (by some
other extension), there will simply be a mismatch between horizontal
previews and the actual layout.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/316>
2024-04-24 14:23:22 +00:00
Florian Müllner
099cff0b95 workspace-indicator: Support labels in previews
The space in the top bar is too limited to include the workspace
names. However we'll soon replace the textual menu with a preview
popover. We can use bigger previews there, so we can include the
names to not lose functionality with regards to the current menu.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/316>
2024-04-24 14:23:22 +00:00
Florian Müllner
fac7fedfd3 workspace-indicator: Handle preview overflow
We currently avoid previews from overflowing in most setups by
artificially limiting them to a maximum of six workspaces.

Add some proper handling to also cover cases where space is more
limited, and to allow removing the restriction in the future.

For that, wrap the previews in an auto-scrolling scroll view
and add overflow indicators on each side.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/316>
2024-04-24 14:23:22 +00:00
Florian Müllner
6ed1b56526 workspace-indicator: Split out WorkspacePreviews
The previews will become a bit more complex soon, so spit them out
into a dedicated class.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/316>
2024-04-24 14:23:22 +00:00
Florian Müllner
a2ffb1238f workspace-indicator: Handle active indication in thumbnail
Meta.Workspace has had an `active` property for a while now, so
we can use a property binding instead of tracking the active
workspace ourselves.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/316>
2024-04-24 14:23:22 +00:00
Florian Müllner
b55e7a4dc8 workspace-indicator: Simplify scroll handling
gnome-shell already includes a method for switching workspaces
via scroll events. Use that instead of implementing our own.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/316>
2024-04-24 14:23:22 +00:00
Florian Müllner
0c42f162d3 window-list: Use actual copy of workspace-indicator
We are now at a point where the code from the workspace-indicator
extension is usable from the window-list.

However instead of updating the copy, go one step further and
remove it altogether, and copy the required files at build time.

This ensures that future changes are picked up by both extensions
without duplicating any work.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/307>
2024-04-24 14:19:51 +00:00
Florian Müllner
01a37c8f26 export-zips: Pick up non-default stylesheets
The window-list extension is about to import the workspace-indicator
stylesheet. Explicitly pack css files, so the stylesheet is included
in the bundle.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/307>
2024-04-24 14:19:51 +00:00
Florian Müllner
5e88c7d891 workspace-indicator: Support light style
The window-list extension already includes light styling for
its copy of the workspace indicator. Just copy that over to
support the light variant here as well.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/307>
2024-04-24 14:19:51 +00:00
Florian Müllner
af23a8491c workspace-indicator: Tweak preview style
Sync sizes and padding with the window-list previews.

Tone down the colors a bit, but less then the current window-list
style where workspaces blend too much into the background and
the selection is unclear.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/307>
2024-04-24 14:19:51 +00:00
Florian Müllner
32a454f917 workspace-indicator: Include n-workspaces in status label
The two extensions currently use a slightly different label
in menu mode:
The workspace indicator uses the plain workspace number ("2"),
while the window list includes the number of workspaces ("2 / 4").

The additional information seem useful, as well as the slightly
bigger click/touch target, so copy the window-list behavior.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/307>
2024-04-24 14:19:51 +00:00
Florian Müllner
63ff5b2ac1 workspace-indicator: Simplify getting status text
Currently the same method is used to get the label text for the
indicator itself and for the menu items.

A method that behaves significantly different depending on whether
a parameter is passed is confusing, so only deal with the indicator
label and directly use the mutter API to get the workspace names
for menu items.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/307>
2024-04-24 14:19:51 +00:00
Florian Müllner
a9fff9861b workspace-indicator: Small cleanup
The code to update the menu labels is a bit cleaner in the
window-list extension, so use that.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/307>
2024-04-24 14:19:51 +00:00
Florian Müllner
89a3daf9fe workspace-indicator: Only change top bar redirect when in top bar
While this is always the case for the workspace indicator, adding
the check will allow to use the same code in the window list.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/307>
2024-04-24 14:19:51 +00:00
Florian Müllner
078a5a01ae workspace-indicator: Support showing tooltips above
The indicator is located in the top bar, so tooltips are always
shown below the previews. However supporting showing tooltips
above previews when space permits allows the same code to be
used in the copy that is included with the window-list extension.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/307>
2024-04-24 14:19:51 +00:00
Florian Müllner
9c8c3495b6 workspace-indicator: Don't use menu section
We never added anything else to the menu, so we can just operate
on the entire menu instead of an intermediate section.

This removes another difference with the window-list copy.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/307>
2024-04-24 14:19:51 +00:00
Florian Müllner
25e854dde8 workspace-indicator: Use existing property
We already track the current workspace index, use that
instead of getting it from the workspace manager again.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/307>
2024-04-24 14:19:51 +00:00
Florian Müllner
64060ef4c5 workspace-indicator: Don't use SCHEMA/KEY constants
Each constant is only used once, so all they do is disconnect
the actual value from the code that uses it.

The copy in the window-list extension just uses the strings directly,
do the same here.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/307>
2024-04-24 14:19:51 +00:00
Florian Müllner
9c97f01bc2 window-list: Handle changes to workspace menu
For now the menu is always set at construction time, however this
will change in the future. Prepare for that by handling the
`menu-set` signal, similar to the top bar.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/307>
2024-04-24 14:19:51 +00:00
Florian Müllner
8693a8a74c window-list: Externally adjust workspace menu
In order to use a PanelMenu.Button in the bottom bar, we have
to tweak its menu a bit.

We currently handle this inside the indicator, but that means the
code diverges from the original code in the workspace-indicator
extension.

Avoid this by using a small subclass that handles the adjustments.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/307>
2024-04-24 14:19:51 +00:00
Florian Müllner
47c12c6279 window-list: Override base style class
Apply the changes from the last commit to the workspace-indicator
copy, and override the base style class from the extension.

This will eventually allow us to share the exact same code between
the two extensions, but still use individual styling if necessary.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/307>
2024-04-24 14:19:51 +00:00
Florian Müllner
e96015b9ea workspace-indicator: Allow overriding base style class
This will allow reusing the code from the window-list extension
without limiting the ability to specify styling that only applies
to one of the extensions.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/307>
2024-04-24 14:19:51 +00:00
Florian Müllner
d3debab713 window-list: Use consistent style class prefix
This will eventually allow us to re-use the workspace-indicator
extension without changing anything but the used prefix.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/307>
2024-04-24 14:19:51 +00:00
Florian Müllner
00045b7396 workspace-indicator: Use descendant style selectors
Add a style class to the indicator itself, and only select
descendant elements. This allows using the briefer class names
from the window-list extension without too much risk of conflicts.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/307>
2024-04-24 14:19:51 +00:00
Florian Müllner
19877302a6 workspace-indicator: Move indicator code into separate file
Shortly after the window-list extension was added, it gained a
workspace switcher based on the workspace indicator extension.

Duplicating the code wasn't a big issue while the switcher was
a simple menu, but since it gained previews with a fair bit of
custom styling, syncing changes between the two extensions has
become tedious, in particular as the two copies have slightly
diverged over time.

In order to allow the two copies to converge again, the indicator
code needs to be separate from the extension boilerplate, so
split out the code into a separate module.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/307>
2024-04-24 14:19:51 +00:00
Florian Müllner
56a74abb8a window-list: Use more appropriate fallback icon
'icon-missing' is not an actual icon name. It somewhat works
because an invalid icon name will fallback to the correct
'image-missing', however for apps the generic app icon is
a better fallback.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/315>
2024-04-24 14:10:41 +00:00
45 changed files with 3283 additions and 3577 deletions

View File

@@ -1,17 +0,0 @@
# SPDX-FileCopyrightText: 2024 Florian Müllner <fmuellner@gnome.org>
# SPDX-License-Identifier: CC0-1.0
root = true
[*]
charset = utf-8
end_of_line = lf
indent_style = space
trim_trailing_whitespace = true
[*.js]
indent_size = 4
[meson.build]
indent_size = 2

View File

@@ -3,13 +3,10 @@
# SPDX-License-Identifier: GPL-2.0-or-later
include:
- remote: 'https://gitlab.gnome.org/Infrastructure/freedesktop-ci-templates/-/raw/master/templates/fedora.yml'
- remote: "https://gitlab.gnome.org/Infrastructure/freedesktop-ci-templates/-/raw/master/templates/ci-fairy.yml"
- component: gitlab.gnome.org/GNOME/citemplates/release-service@master
inputs:
job-stage: deploy
dist-job-name: fedora-dist-tarball
tarball-artifact-path: "$TARBALL_ARTIFACT_PATH"
- 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"
- project: 'Infrastructure/openshift-images/gnome-release-service'
file: '/ci-templates/release-module.yml'
stages:
- pre_review
@@ -33,8 +30,7 @@ default:
variables:
FDO_UPSTREAM_REPO: GNOME/gnome-shell-extensions
MESON_BUILD_DIR: build
TARBALL_ARTIFACT_PATH: "${MESON_BUILD_DIR}/meson-dist/${CI_PROJECT_NAME}-${CI_COMMIT_TAG}.tar.xz"
LINT_LOG: "eslint-report.xml"
workflow:
rules:
@@ -112,16 +108,14 @@ js_check:
eslint:
stage: review
<<: *prereview_req
variables:
LINT_LOG: "eslint-report.xml"
script:
- export NODE_PATH=$(npm root -g)
- ./.gitlab-ci/run-eslint --output-file "$LINT_LOG" --format junit --stdout
- ./.gitlab-ci/run-eslint --output-file ${LINT_LOG} --format junit --stdout
artifacts:
paths:
- "$LINT_LOG"
- ${LINT_LOG}
reports:
junit: "$LINT_LOG"
junit: ${LINT_LOG}
potfile_js_check:
stage: review
@@ -147,13 +141,28 @@ fedora-build:
stage: build
<<: *prereview_req
script:
- meson setup "$MESON_BUILD_DIR" --werror -Dextension_set=all -Dclassic_mode=true
- meson compile -C "$MESON_BUILD_DIR"
- meson test -C "$MESON_BUILD_DIR"
- meson install -C "$MESON_BUILD_DIR"
- meson setup build --werror -Dextension_set=all -Dclassic_mode=true
- meson compile -C build
- meson test -C build
- meson install -C build
artifacts:
paths:
- "$MESON_BUILD_DIR"
- build
fedora-distinfo:
stage: deploy
needs:
- fedora-build
script:
- .gitlab-ci/export-artifact-path build > dist.env
artifacts:
reports:
dotenv: dist.env
paths:
- build
- dist.env
rules:
- if: '$CI_COMMIT_TAG'
fedora-dist:
stage: deploy
@@ -162,7 +171,7 @@ fedora-dist:
variables:
GIT_SUBMODULE_STRATEGY: normal
script:
- meson dist -C "$MESON_BUILD_DIR"
- meson dist -C build
rules:
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
changes:
@@ -171,11 +180,21 @@ fedora-dist:
fedora-dist-tarball:
extends: fedora-dist
needs:
- fedora-distinfo
artifacts:
expose_as: 'Get tarball here'
name: "${CI_JOB_NAME}-${CI_COMMIT_REF_NAME}"
when: always
paths:
- "$TARBALL_ARTIFACT_PATH"
- $TARBALL_ARTIFACT_PATH
reports:
dotenv: dist.env
rules:
- if: '$CI_COMMIT_TAG'
release-module:
stage: deploy
needs:
- fedora-dist-tarball
extends: .release-module
rules:
- if: '$CI_COMMIT_TAG'

21
.gitlab-ci/export-artifact-path Executable file
View File

@@ -0,0 +1,21 @@
#!/usr/bin/gjs -m
// SPDX-FileCopyrightText: 2024 Florian Müllner <fmuellner@gnome.org>
//
// SPDX-License-Identifier: GPL-2.0-or-later
import Gio from 'gi://Gio';
import {programArgs, programInvocationName, exit} from 'system';
const [buildDir] = programArgs;
if (!buildDir) {
printerr(`usage: ${programInvocationName} <build-dir>`);
exit(1);
}
const subprocess = Gio.Subprocess.new(
['meson', 'introspect', '--projectinfo', buildDir],
Gio.SubprocessFlags.STDOUT_PIPE);
const [, out] = subprocess.communicate_utf8(null, null);
const {descriptive_name, version} = JSON.parse(out);
print(`TARBALL_ARTIFACT_PATH=${buildDir}/meson-dist/${descriptive_name}-${version}.tar.xz`);

View File

@@ -20,6 +20,9 @@ need in gnome-shell.
Generally, we follow [GJS coding style][coding-style], which in short is:
indent 4 spaces, no tabs, space after comma, no space after function call.
The Emacs mode line for this
/* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */
Imports should be at the top, in two groups, one for standard
imports (like imports.lang or imports.dbus) and introspection,
the other for Shell API. Within the same group, put everything

37
NEWS
View File

@@ -1,38 +1,19 @@
46.4
====
* Update template CI images to fix release pipeline [Florian; !377]
Contributors:
Florian Müllner
46.3
====
* places-menu: Fix a11y labelling [Florian; #542]
* places-menu: Fix opening drives with mount operations [Florian; !361]
* window-list: Fix hiding when entering overview with gestures [Florian; !364]
* workspace-indicator: Only show previews of regular windows [Florian; !363]
* Misc. bug fixes and cleanups [Florian, Bartłomiej; !345, !353, !370, !354,
!362, !367, !368]
Contributors:
Florian Müllner, Bartłomiej Piotrowski
Translators:
Милош Поповић [sr], Jose Riha [sk], Chao-Hsiung Liao [zh_TW],
Daniel Șerbănescu [ro], Giannis Antypas [el], twlvnn kraftwerk [bg]
46.2
====
47.alpha
========
* Improve workspace previews in window-list and workspace-indicator
[Florian; !307, !316]
* apps-menu: Fix a11y of category labels [Florian; !319]
* window-list: Fix long-press support [Florian; !320]
* Misc. bug fixes and cleanups [Florian; !324]
* window-list: Animate transitions [Florian; !325]
* Misc. bug fixes and cleanups [Florian; !315, !321, !324]
Contributors:
Florian Müllner
Translators:
Hugo Carvalho [pt], Jose Riha [sk], Jordi Mas i Hernandez [ca],
Scrambled 777 [hi]
Jordi Mas i Hernandez [ca], Martin [sl], Hugo Carvalho [pt], Jose Riha [sk],
Scrambled 777 [hi], Artur S0 [ru], Милош Поповић [sr], Yosef Or Boczko [he],
Balázs Úr [hu]
46.1
====

View File

@@ -10,33 +10,33 @@ session_desktops = [
session_desktop_base + '-wayland',
]
foreach name : session_desktops
session_desktop = name + '.desktop'
if name.endswith('-xorg')
session_instdir = xsessiondir
elif name.endswith('-wayland')
session_instdir = wlsessiondir
else
# 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',
)
foreach name: session_desktops
session_desktop = name + '.desktop'
if name.endswith('-xorg')
session_instdir = xsessiondir
elif name.endswith('-wayland')
session_instdir = wlsessiondir
else
# 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
classic_uuids = []
foreach e : classic_extensions
classic_uuids += e + uuid_suffix
classic_uuids += e + uuid_suffix
endforeach
mode_conf = configuration_data()
@@ -47,7 +47,7 @@ configure_file(
input: mode_file + '.in',
output: mode_file,
configuration: mode_conf,
install_dir: modedir,
install_dir: modedir
)
classic_override = '00_org.gnome.shell.extensions.classic.gschema.override'

View File

@@ -8,16 +8,16 @@ srcdir=`dirname $0`
srcdir=`(cd $srcdir && pwd)`
builddir=`mktemp -p $srcdir -d _build.XXXXXX` || exit 1
destdir=`mktemp -p $srcdir -d _dest.XXXXXX` || exit 1
installdir=`mktemp -p $srcdir -d _install.XXXXXX` || exit 1
meson setup --prefix=/usr -Dextension_set=all $srcdir $builddir
meson install --destdir $destdir -C $builddir
meson setup --prefix=$installdir -Dextension_set=all $srcdir $builddir
meson install -C $builddir
rm -rf $srcdir/zip-files
mkdir $srcdir/zip-files
extensiondir=$destdir/usr/share/gnome-shell/extensions
schemadir=$destdir/usr/share/glib-2.0/schemas
extensiondir=$installdir/share/gnome-shell/extensions
schemadir=$installdir/share/glib-2.0/schemas
for f in $extensiondir/*; do
name=`basename ${f%%@*}`
@@ -39,7 +39,7 @@ for f in $extensiondir/*; do
fi
cp $srcdir/NEWS $srcdir/COPYING $f
sources=(NEWS COPYING $(cd $f; ls *.js))
sources=(NEWS COPYING $(cd $f; ls *.js *.css 2>/dev/null))
[ -d $f/icons ] && sources+=(icons)
@@ -50,4 +50,4 @@ for f in $extensiondir/*; do
done
rm -rf $builddir
rm -rf $destdir
rm -rf $installdir

View File

@@ -5,6 +5,7 @@
//
// SPDX-License-Identifier: GPL-2.0-or-later
/* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */
import Atk from 'gi://Atk';
import Clutter from 'gi://Clutter';
import Gio from 'gi://Gio';

View File

@@ -4,6 +4,9 @@
//
// SPDX-License-Identifier: GPL-2.0-or-later
// -*- mode: js2; indent-tabs-mode: nil; js2-basic-offset: 4 -*-
// Start apps on custom workspaces
import Shell from 'gi://Shell';
import {Extension} from 'resource:///org/gnome/shell/extensions/extension.js';

View File

@@ -3,6 +3,9 @@
//
// SPDX-License-Identifier: GPL-2.0-or-later
// -*- mode: js2; indent-tabs-mode: nil; js2-basic-offset: 4 -*-
// Start apps on custom workspaces
import Adw from 'gi://Adw';
import Gio from 'gi://Gio';
import GLib from 'gi://GLib';

View File

@@ -16,20 +16,18 @@ foreach e : enabled_extensions
metadata_conf.set('gschemaname', 'org.gnome.shell.extensions.' + e)
metadata_conf.set('gettext_domain', gettext_domain)
metadata_conf.set('shell_current', shell_version)
metadata_conf.set(
'url',
'https://gitlab.gnome.org/GNOME/gnome-shell-extensions',
)
metadata_conf.set('url', 'https://gitlab.gnome.org/GNOME/gnome-shell-extensions')
extension_sources = files(e + '/extension.js')
extension_data = []
subdir(e)
install_data(
extension_sources + extension_data,
install_dir: join_paths(extensiondir, uuid),
install_data (extension_sources + extension_data,
install_dir: join_paths(extensiondir, uuid)
)
endforeach
install_data(extension_schemas, install_dir: schemadir)
install_data (extension_schemas,
install_dir: schemadir
)

View File

@@ -5,6 +5,7 @@
//
// SPDX-License-Identifier: GPL-2.0-or-later
// -*- mode: js2; indent-tabs-mode: nil; js2-basic-offset: 4 -*-
import Clutter from 'gi://Clutter';
import {Extension, InjectionManager} from 'resource:///org/gnome/shell/extensions/extension.js';

View File

@@ -5,6 +5,7 @@
//
// SPDX-License-Identifier: GPL-2.0-or-later
/* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */
import Clutter from 'gi://Clutter';
import GObject from 'gi://GObject';
import St from 'gi://St';
@@ -19,17 +20,32 @@ import {PlacesManager} from './placeDisplay.js';
const N_ = x => x;
class PlaceMenuItem extends PopupMenu.PopupImageMenuItem {
const PLACE_ICON_SIZE = 16;
class PlaceMenuItem extends PopupMenu.PopupBaseMenuItem {
static {
GObject.registerClass(this);
}
constructor(info) {
super(info.name, info.icon, {
super({
style_class: 'place-menu-item',
});
this._info = info;
this._icon = new St.Icon({
gicon: info.icon,
icon_size: PLACE_ICON_SIZE,
});
this.add_child(this._icon);
this._label = new St.Label({
text: info.name,
x_expand: true,
y_align: Clutter.ActorAlign.CENTER,
});
this.add_child(this._label);
if (info.isRemovable()) {
this._ejectIcon = new St.Icon({
icon_name: 'media-eject-symbolic',
@@ -54,8 +70,8 @@ class PlaceMenuItem extends PopupMenu.PopupImageMenuItem {
}
_propertiesChanged(info) {
this.setIcon(info.icon);
this.label.text = info.name;
this._icon.gicon = info.icon;
this._label.text = info.name;
}
}

View File

@@ -6,6 +6,7 @@
//
// SPDX-License-Identifier: GPL-2.0-or-later
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
import Gio from 'gi://Gio';
import GLib from 'gi://GLib';
import Shell from 'gi://Shell';
@@ -60,15 +61,15 @@ class PlaceInfo extends EventEmitter {
return;
}
const source = {
get_drive: () => null,
let source = {
get_icon: () => this.icon,
};
let op = new ShellMountOperation.ShellMountOperation(source);
try {
await this.file.mount_enclosing_volume(0, op.mountOp, null);
if (tryMount)
this._ensureMountAndLaunch(context, false).catch(logError);
this._ensureMountAndLaunch(context, false);
} catch (e) {
if (!e.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.FAILED_HANDLED))
Main.notifyError(_('Failed to mount volume for “%s”').format(this.name), e.message);
@@ -80,7 +81,7 @@ class PlaceInfo extends EventEmitter {
launch(timestamp) {
let launchContext = global.create_app_launch_context(timestamp, -1);
this._ensureMountAndLaunch(launchContext, true).catch(logError);
this._ensureMountAndLaunch(launchContext, true);
}
getIcon() {

View File

@@ -5,6 +5,9 @@
//
// SPDX-License-Identifier: GPL-2.0-or-later
// -*- mode: js2; indent-tabs-mode: nil; js2-basic-offset: 4 -*-
// Load shell theme from ~/.local/share/themes/name/gnome-shell
import Gio from 'gi://Gio';
import {Extension} from 'resource:///org/gnome/shell/extensions/extension.js';

View File

@@ -2,6 +2,8 @@
//
// SPDX-License-Identifier: GPL-2.0-or-later
// -*- mode: js2; indent-tabs-mode: nil; js2-basic-offset: 4 -*-
// we use async/await here to not block the mainloop, not to parallelize
/* eslint-disable no-await-in-loop */

View File

@@ -19,15 +19,13 @@ import {Extension, gettext as _} from 'resource:///org/gnome/shell/extensions/ex
import * as DND from 'resource:///org/gnome/shell/ui/dnd.js';
import * as Main from 'resource:///org/gnome/shell/ui/main.js';
import * as PopupMenu from 'resource:///org/gnome/shell/ui/popupMenu.js';
import {DashItemContainer} from 'resource:///org/gnome/shell/ui/dash.js';
import {WorkspaceIndicator} from './workspaceIndicator.js';
const ICON_TEXTURE_SIZE = 24;
const DND_ACTIVATE_TIMEOUT = 500;
const TOOLTIP_OFFSET = 6;
const TOOLTIP_ANIMATION_TIME = 150;
const GroupingMode = {
NEVER: 0,
AUTO: 1,
@@ -79,7 +77,7 @@ class WindowContextMenu extends PopupMenu.PopupMenu {
'notify::minimized', this._updateMinimizeItem.bind(this),
'notify::maximized-horizontally', this._updateMaximizeItem.bind(this),
'notify::maximized-vertically', this._updateMaximizeItem.bind(this),
this.actor);
this);
this._updateMinimizeItem();
this._updateMaximizeItem();
@@ -165,14 +163,14 @@ class WindowTitle extends St.BoxLayout {
this._icon.child = app.create_icon_texture(ICON_TEXTURE_SIZE);
} else {
this._icon.child = new St.Icon({
icon_name: 'icon-missing',
icon_name: 'application-x-executable',
icon_size: ICON_TEXTURE_SIZE,
});
}
}
}
class BaseButton extends St.Button {
class BaseButton extends DashItemContainer {
static {
GObject.registerClass({
GTypeFlags: GObject.TypeFlags.ABSTRACT,
@@ -186,12 +184,22 @@ class BaseButton extends St.Button {
}
constructor(perMonitor, monitorIndex) {
super({
super();
this._button = new St.Button({
style_class: 'window-button',
can_focus: true,
x_expand: true,
button_mask: St.ButtonMask.ONE | St.ButtonMask.THREE,
});
this.setChild(this._button);
this._button.connect('notify::hover', () => {
if (this._button.hover)
this.showLabel();
else
this.hideLabel();
});
this._perMonitor = perMonitor;
this._monitorIndex = monitorIndex;
@@ -199,7 +207,7 @@ class BaseButton extends St.Button {
this.connect('notify::allocation',
this._updateIconGeometry.bind(this));
this.connect('clicked', this._onClicked.bind(this));
this._button.connect('clicked', this._onClicked.bind(this));
this.connect('destroy', this._onDestroy.bind(this));
this.connect('popup-menu', this._onPopupMenu.bind(this));
@@ -216,12 +224,6 @@ class BaseButton extends St.Button {
this._windowEnteredOrLeftMonitor.bind(this),
this);
}
this._tooltip = new Tooltip(this, {
style_class: 'dash-label',
visible: false,
});
Main.uiGroup.add_child(this._tooltip);
}
get active() {
@@ -244,6 +246,18 @@ class BaseButton extends St.Button {
this._updateVisibility();
}
showLabel() {
const [, , preferredTitleWidth] = this.label_actor.get_preferred_size();
const maxTitleWidth = this.label_actor.allocation.get_width();
const isTitleFullyShown = preferredTitleWidth <= maxTitleWidth;
const labelText = isTitleFullyShown
? '' : this.label_actor.text;
this.setLabelText(labelText);
super.showLabel();
}
_setLongPressTimeout() {
if (this._longPressTimeoutId)
return;
@@ -382,7 +396,6 @@ class BaseButton extends St.Button {
}
_onDestroy() {
this._tooltip.destroy();
}
}
@@ -395,15 +408,17 @@ class WindowButton extends BaseButton {
super(perMonitor, monitorIndex);
this.metaWindow = metaWindow;
this._unmanaging = false;
metaWindow.connectObject(
'notify::skip-taskbar', () => this._updateVisibility(),
'workspace-changed', () => this._updateVisibility(),
'unmanaging', () => (this._unmanaging = true),
this);
this._updateVisibility();
this._windowTitle = new WindowTitle(this.metaWindow);
this.set_child(this._windowTitle);
this._button.set_child(this._windowTitle);
this.label_actor = this._windowTitle.label_actor;
this._contextMenu = new WindowContextMenu(this, this.metaWindow);
@@ -449,6 +464,9 @@ class WindowButton extends BaseButton {
}
_updateVisibility() {
if (this._unmanaging)
return;
this.visible = this._isWindowVisible(this.metaWindow);
}
@@ -532,7 +550,7 @@ class AppButton extends BaseButton {
this._updateVisibility();
let stack = new St.Widget({layout_manager: new Clutter.BinLayout()});
this.set_child(stack);
this._button.set_child(stack);
this._singleWindowTitle = new St.Bin({
x_expand: true,
@@ -729,28 +747,24 @@ class WindowList extends St.Widget {
let box = new St.BoxLayout({x_expand: true, y_expand: true});
this.add_child(box);
let layout = new Clutter.BoxLayout({homogeneous: true});
this._windowList = new St.Widget({
this._windowList = new St.BoxLayout({
style_class: 'window-list',
reactive: true,
layout_manager: layout,
x_align: Clutter.ActorAlign.START,
x_expand: true,
y_expand: true,
});
box.add_child(this._windowList);
this._windowList.connect('style-changed', () => {
let node = this._windowList.get_theme_node();
let spacing = node.get_length('spacing');
this._windowList.layout_manager.spacing = spacing;
});
this._windowList.connect('scroll-event', this._onScrollEvent.bind(this));
let indicatorsBox = new St.BoxLayout({x_align: Clutter.ActorAlign.END});
box.add_child(indicatorsBox);
this._workspaceIndicator = new WorkspaceIndicator();
this._workspaceIndicator = new BottomWorkspaceIndicator({
baseStyleClass: 'window-list-workspace-indicator',
settings,
});
indicatorsBox.add_child(this._workspaceIndicator.container);
this._mutterSettings = new Gio.Settings({schema_id: 'org.gnome.mutter'});
@@ -763,13 +777,14 @@ class WindowList extends St.Widget {
this._updateWorkspaceIndicatorVisibility();
this._menuManager = new PopupMenu.PopupMenuManager(this);
this._menuManager.addMenu(this._workspaceIndicator.menu);
this._workspaceIndicator.connectObject('menu-set',
() => this._onWorkspaceMenuSet(), this);
this._onWorkspaceMenuSet();
const chromeOptions = {
Main.layoutManager.addChrome(this, {
affectsStruts: true,
trackFullscreen: true,
};
Main.layoutManager.addChrome(this, chromeOptions);
});
Main.uiGroup.set_child_above_sibling(this, Main.layoutManager.panelBox);
Main.ctrlAltTabManager.addGroup(this, _('Window List'), 'start-here-symbolic');
@@ -806,12 +821,10 @@ class WindowList extends St.Widget {
Main.overview.connectObject(
'showing', () => {
Main.layoutManager.untrackChrome(this);
this.hide();
this._updateKeyboardAnchor();
},
'hidden', () => {
Main.layoutManager.trackChrome(this);
this.visible = !this._monitor.inFullscreen;
this._updateKeyboardAnchor();
}, this);
@@ -825,7 +838,7 @@ class WindowList extends St.Widget {
this._windowSignals = new Map();
global.display.connectObject(
'window-created', (dsp, win) => this._addWindow(win), this);
'window-created', (dsp, win) => this._addWindow(win, true), this);
Main.xdndHandler.connectObject(
'drag-begin', () => this._monitorDrag(),
@@ -863,6 +876,11 @@ class WindowList extends St.Widget {
children[newActive].activate();
}
_onWorkspaceMenuSet() {
if (this._workspaceIndicator.menu)
this._menuManager.addMenu(this._workspaceIndicator.menu);
}
_updatePosition() {
this.set_position(
this._monitor.x,
@@ -937,14 +955,14 @@ class WindowList extends St.Widget {
w2.metaWindow.get_stable_sequence();
});
for (let i = 0; i < windows.length; i++)
this._addWindow(windows[i].metaWindow);
this._addWindow(windows[i].metaWindow, false);
} else {
let apps = this._appSystem.get_running().sort((a1, a2) => {
return _getAppStableSequence(a1) -
_getAppStableSequence(a2);
});
for (let i = 0; i < apps.length; i++)
this._addApp(apps[i]);
this._addApp(apps[i], false);
}
}
@@ -958,26 +976,26 @@ class WindowList extends St.Widget {
return;
if (app.state === Shell.AppState.RUNNING)
this._addApp(app);
this._addApp(app, true);
else if (app.state === Shell.AppState.STOPPED)
this._removeApp(app);
}
_addApp(app) {
_addApp(app, animate) {
let button = new AppButton(app, this._perMonitor, this._monitor.index);
this._settings.bind('display-all-workspaces',
button, 'ignore-workspace', Gio.SettingsBindFlags.GET);
this._windowList.add_child(button);
button.show(animate);
}
_removeApp(app) {
let children = this._windowList.get_children();
let child = children.find(c => c.app === app);
if (child)
child.destroy();
child?.animateOutAndDestroy();
}
_addWindow(win) {
_addWindow(win, animate) {
if (!this._grouped)
this._checkGrouping();
@@ -995,6 +1013,7 @@ class WindowList extends St.Widget {
this._settings.bind('display-all-workspaces',
button, 'ignore-workspace', Gio.SettingsBindFlags.GET);
this._windowList.add_child(button);
button.show(animate);
}
_removeWindow(win) {
@@ -1011,8 +1030,7 @@ class WindowList extends St.Widget {
let children = this._windowList.get_children();
let child = children.find(c => c.metaWindow === win);
if (child)
child.destroy();
child?.animateOutAndDestroy();
}
_monitorDrag() {
@@ -1083,6 +1101,28 @@ class WindowList extends St.Widget {
}
}
class BottomWorkspaceIndicator extends WorkspaceIndicator {
static {
GObject.registerClass(this);
}
constructor(params) {
super(params);
this.remove_style_class_name('panel-button');
}
setMenu(menu) {
super.setMenu(menu);
if (!menu)
return;
this.menu.actor.updateArrowSide(St.Side.BOTTOM);
this.menu.actor.remove_style_class_name('panel-menu');
}
}
export default class WindowListExtension extends Extension {
constructor(metadata) {
super(metadata);
@@ -1134,67 +1174,3 @@ export default class WindowListExtension extends Extension {
return this._windowLists.some(list => list.contains(actor));
}
}
class Tooltip extends St.Label {
static {
GObject.registerClass(this);
}
constructor(widget, params) {
super(params);
this._widget = widget;
this._widget.connect('notify::hover', () => {
if (this._widget.hover)
this.open();
else
this.close();
});
}
open() {
const buttonTitleWidget = this._widget.label_actor;
const [, , preferredTitleWidth] = buttonTitleWidget.get_preferred_size();
const maxTitleWidth = buttonTitleWidget.allocation.get_width();
const isTitleFullyShown = preferredTitleWidth <= maxTitleWidth;
if (isTitleFullyShown)
return;
this.set({
text: this._widget.label_actor.get_text(),
visible: true,
opacity: 0,
});
const [stageX, stageY] = this._widget.get_transformed_position();
const thumbWidth = this._widget.allocation.get_width();
const tipWidth = this.width;
const tipHeight = this.height;
const xOffset = Math.floor((thumbWidth - tipWidth) / 2);
const monitor = Main.layoutManager.findMonitorForActor(this);
const x = Math.clamp(
stageX + xOffset,
monitor.x,
monitor.x + monitor.width - tipWidth);
const y = stageY - tipHeight - TOOLTIP_OFFSET;
this.set_position(x, y);
this.ease({
opacity: 255,
duration: TOOLTIP_ANIMATION_TIME,
mode: Clutter.AnimationMode.EASE_OUT_QUAD,
onComplete: () => (this.visible = this._widget.hover),
});
}
close() {
this.ease({
opacity: 0,
duration: TOOLTIP_ANIMATION_TIME,
mode: Clutter.AnimationMode.EASE_OUT_QUAD,
onComplete: () => (this.visible = this._widget.hover),
});
}
}

View File

@@ -12,5 +12,32 @@ extension_data += files(
'stylesheet-light.css'
)
extension_sources += files('prefs.js', 'workspaceIndicator.js')
transform_stylesheet = [
'sed', '-E',
'-e', 's:^\.(workspace-indicator):.window-list-\\1:',
'-e', '/^@import/d',
'@INPUT@',
]
workspaceIndicatorSources = [
configure_file(
input: '../workspace-indicator/workspaceIndicator.js',
output: '@PLAINNAME@',
copy: true,
),
configure_file(
input: '../workspace-indicator/stylesheet-dark.css',
output: 'stylesheet-workspace-switcher-dark.css',
command: transform_stylesheet,
capture: true,
),
configure_file(
input: '../workspace-indicator/stylesheet-light.css',
output: 'stylesheet-workspace-switcher-light.css',
command: transform_stylesheet,
capture: true,
),
]
extension_sources += files('prefs.js') + workspaceIndicatorSources
extension_schemas += files(metadata_conf.get('gschemaname') + '.gschema.xml')

View File

@@ -36,5 +36,9 @@ SPDX-License-Identifier: GPL-2.0-or-later
only on the primary one.
</description>
</key>
<key name="embed-previews" type="b">
<default>true</default>
<summary>Show workspace previews in window list</summary>
</key>
</schema>
</schemalist>

View File

@@ -3,6 +3,7 @@
//
// SPDX-License-Identifier: GPL-2.0-or-later
// -*- mode: js2; indent-tabs-mode: nil; js2-basic-offset: 4 -*-
import Adw from 'gi://Adw';
import Gio from 'gi://Gio';
import GLib from 'gi://GLib';
@@ -80,6 +81,19 @@ class WindowListPrefsWidget extends Adw.PreferencesPage {
});
row.add_suffix(toggle);
miscGroup.add(row);
toggle = new Gtk.Switch({
action_name: 'window-list.embed-previews',
valign: Gtk.Align.CENTER,
});
this._settings.bind('embed-previews',
toggle, 'active', Gio.SettingsBindFlags.DEFAULT);
row = new Adw.ActionRow({
title: _('Show workspace previews'),
activatable_widget: toggle,
});
row.add_suffix(toggle);
miscGroup.add(row);
}
}

View File

@@ -4,6 +4,7 @@
*
* SPDX-License-Identifier: GPL-2.0-or-later
*/
@import url("stylesheet-workspace-switcher-dark.css");
.window-list {
spacing: 2px;
@@ -81,36 +82,6 @@
height: 24px;
}
.window-list-workspace-indicator .status-label-bin {
background-color: rgba(200, 200, 200, 0.3);
padding: 5px;
margin: 3px;
}
.window-list-workspace-indicator .workspaces-box {
spacing: 3px;
padding: 5px;
}
.window-list-workspace-indicator .workspace {
width: 52px;
border-radius: 4px;
background-color: #1e1e1e;
}
.window-list-workspace-indicator .workspace.active {
background-color: #3f3f3f;
}
.window-list-window-preview {
background-color: #bebebe;
border-radius: 1px;
}
.window-list-window-preview.active {
background-color: #d4d4d4;
}
.notification {
font-weight: normal;
}

View File

@@ -6,6 +6,7 @@
*/
@import url("stylesheet-dark.css");
@import url("stylesheet-workspace-switcher-light.css");
#panel.bottom-panel {
border-top-width: 1px;
@@ -50,22 +51,3 @@
color: #888;
box-shadow: none;
}
/* workspace switcher */
.window-list-workspace-indicator .workspace {
border: 2px solid #f6f5f4;
background-color: #ccc;
}
.window-list-workspace-indicator .workspace.active {
border-color: #888;
}
.window-list-window-preview {
background-color: #ededed;
border: 1px solid #ccc;
}
.window-list-window-preview.active {
background-color: #f6f5f4;
}

View File

@@ -6,6 +6,7 @@
//
// SPDX-License-Identifier: GPL-2.0-or-later
/* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */
import Clutter from 'gi://Clutter';
import Graphene from 'gi://Graphene';
import St from 'gi://St';

View File

@@ -4,442 +4,17 @@
//
// SPDX-License-Identifier: GPL-2.0-or-later
import Clutter from 'gi://Clutter';
import Gio from 'gi://Gio';
import GObject from 'gi://GObject';
import Meta from 'gi://Meta';
import St from 'gi://St';
import {Extension} from 'resource:///org/gnome/shell/extensions/extension.js';
import {Extension, gettext as _} from 'resource:///org/gnome/shell/extensions/extension.js';
import * as DND from 'resource:///org/gnome/shell/ui/dnd.js';
import * as Main from 'resource:///org/gnome/shell/ui/main.js';
import * as PanelMenu from 'resource:///org/gnome/shell/ui/panelMenu.js';
import * as PopupMenu from 'resource:///org/gnome/shell/ui/popupMenu.js';
const WORKSPACE_SCHEMA = 'org.gnome.desktop.wm.preferences';
const WORKSPACE_KEY = 'workspace-names';
const TOOLTIP_OFFSET = 6;
const TOOLTIP_ANIMATION_TIME = 150;
const MAX_THUMBNAILS = 6;
class WindowPreview extends St.Button {
static {
GObject.registerClass(this);
}
constructor(window) {
super({
style_class: 'workspace-indicator-window-preview',
});
this._delegate = this;
DND.makeDraggable(this, {restoreOnSuccess: true});
this._window = window;
this._window.connectObject(
'size-changed', () => this._checkRelayout(),
'position-changed', () => this._checkRelayout(),
'notify::minimized', this._updateVisible.bind(this),
'notify::window-type', this._updateVisible.bind(this),
this);
this._updateVisible();
global.display.connectObject('notify::focus-window',
this._onFocusChanged.bind(this), this);
this._onFocusChanged();
}
// needed for DND
get metaWindow() {
return this._window;
}
_onFocusChanged() {
if (global.display.focus_window === this._window)
this.add_style_class_name('active');
else
this.remove_style_class_name('active');
}
_checkRelayout() {
const monitor = Main.layoutManager.findIndexForActor(this);
const workArea = Main.layoutManager.getWorkAreaForMonitor(monitor);
if (this._window.get_frame_rect().overlap(workArea))
this.queue_relayout();
}
_updateVisible() {
this.visible = this._window.window_type !== Meta.WindowType.DESKTOP &&
this._window.showing_on_its_workspace();
}
}
class WorkspaceLayout extends Clutter.LayoutManager {
static {
GObject.registerClass(this);
}
vfunc_get_preferred_width() {
return [0, 0];
}
vfunc_get_preferred_height() {
return [0, 0];
}
vfunc_allocate(container, box) {
const monitor = Main.layoutManager.findIndexForActor(container);
const workArea = Main.layoutManager.getWorkAreaForMonitor(monitor);
const hscale = box.get_width() / workArea.width;
const vscale = box.get_height() / workArea.height;
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);
}
}
}
class WorkspaceThumbnail extends St.Button {
static {
GObject.registerClass(this);
}
constructor(index) {
super({
style_class: 'workspace',
child: new Clutter.Actor({
layout_manager: new WorkspaceLayout(),
clip_to_allocation: true,
x_expand: true,
y_expand: 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('notify::hover', this._syncTooltip.bind(this));
this._index = index;
this._delegate = this; // needed for DND
this._windowPreviews = new Map();
let workspaceManager = global.workspace_manager;
this._workspace = workspaceManager.get_workspace_by_index(index);
this._workspace.connectObject(
'window-added', (ws, window) => this._addWindow(window),
'window-removed', (ws, window) => this._removeWindow(window),
this);
global.display.connectObject('restacked',
this._onRestacked.bind(this), this);
this._workspace.list_windows().forEach(w => this._addWindow(w));
this._onRestacked();
}
acceptDrop(source) {
if (!source.metaWindow)
return false;
this._moveWindow(source.metaWindow);
return true;
}
handleDragOver(source) {
if (source.metaWindow)
return DND.DragMotionResult.MOVE_DROP;
else
return DND.DragMotionResult.CONTINUE;
}
_addWindow(window) {
if (this._windowPreviews.has(window))
return;
let preview = new WindowPreview(window);
preview.connect('clicked', (a, btn) => this.emit('clicked', btn));
this._windowPreviews.set(window, preview);
this.child.add_child(preview);
}
_removeWindow(window) {
let preview = this._windowPreviews.get(window);
if (!preview)
return;
this._windowPreviews.delete(window);
preview.destroy();
}
_onRestacked() {
let lastPreview = null;
let windows = global.get_window_actors().map(a => a.meta_window);
for (let i = 0; i < windows.length; i++) {
let preview = this._windowPreviews.get(windows[i]);
if (!preview)
continue;
this.child.set_child_above_sibling(preview, lastPreview);
lastPreview = preview;
}
}
_moveWindow(window) {
let monitorIndex = Main.layoutManager.findIndexForActor(this);
if (monitorIndex !== window.get_monitor())
window.move_to_monitor(monitorIndex);
window.change_workspace_by_index(this._index, false);
}
on_clicked() {
let ws = global.workspace_manager.get_workspace_by_index(this._index);
if (ws)
ws.activate(global.get_current_time());
}
_syncTooltip() {
if (this.hover) {
this._tooltip.set({
text: Meta.prefs_get_workspace_name(this._index),
visible: true,
opacity: 0,
});
const [stageX, stageY] = this.get_transformed_position();
const thumbWidth = this.allocation.get_width();
const thumbHeight = this.allocation.get_height();
const tipWidth = this._tooltip.width;
const xOffset = Math.floor((thumbWidth - tipWidth) / 2);
const monitor = Main.layoutManager.findMonitorForActor(this);
const x = Math.clamp(
stageX + xOffset,
monitor.x,
monitor.x + monitor.width - tipWidth);
const y = stageY + thumbHeight + TOOLTIP_OFFSET;
this._tooltip.set_position(x, y);
}
this._tooltip.ease({
opacity: this.hover ? 255 : 0,
duration: TOOLTIP_ANIMATION_TIME,
mode: Clutter.AnimationMode.EASE_OUT_QUAD,
onComplete: () => (this._tooltip.visible = this.hover),
});
}
_onDestroy() {
this._tooltip.destroy();
}
}
class WorkspaceIndicator extends PanelMenu.Button {
static {
GObject.registerClass(this);
}
constructor() {
super(0.5, _('Workspace Indicator'));
let container = new St.Widget({
layout_manager: new Clutter.BinLayout(),
x_expand: true,
y_expand: true,
});
this.add_child(container);
let workspaceManager = global.workspace_manager;
this._currentWorkspace = workspaceManager.get_active_workspace_index();
this._statusLabel = new St.Label({
style_class: 'panel-workspace-indicator',
y_align: Clutter.ActorAlign.CENTER,
text: this._labelText(),
});
container.add_child(this._statusLabel);
this._thumbnailsBox = new St.BoxLayout({
style_class: 'panel-workspace-indicator-box',
y_expand: true,
reactive: true,
});
container.add_child(this._thumbnailsBox);
this._workspacesItems = [];
this._workspaceSection = new PopupMenu.PopupMenuSection();
this.menu.addMenuItem(this._workspaceSection);
workspaceManager.connectObject(
'notify::n-workspaces', this._nWorkspacesChanged.bind(this), GObject.ConnectFlags.AFTER,
'workspace-switched', this._onWorkspaceSwitched.bind(this), GObject.ConnectFlags.AFTER,
'notify::layout-rows', this._updateThumbnailVisibility.bind(this),
this);
this.connect('scroll-event', this._onScrollEvent.bind(this));
this._thumbnailsBox.connect('scroll-event', this._onScrollEvent.bind(this));
this._createWorkspacesSection();
this._updateThumbnails();
this._updateThumbnailVisibility();
this._settings = new Gio.Settings({schema_id: WORKSPACE_SCHEMA});
this._settings.connectObject(`changed::${WORKSPACE_KEY}`,
this._updateMenuLabels.bind(this), this);
}
_onDestroy() {
Main.panel.set_offscreen_redirect(Clutter.OffscreenRedirect.ALWAYS);
super._onDestroy();
}
_updateThumbnailVisibility() {
const {workspaceManager} = global;
const vertical = workspaceManager.layout_rows === -1;
const useMenu =
vertical || workspaceManager.n_workspaces > MAX_THUMBNAILS;
this.reactive = useMenu;
this._statusLabel.visible = useMenu;
this._thumbnailsBox.visible = !useMenu;
// Disable offscreen-redirect when showing the workspace switcher
// so that clip-to-allocation works
Main.panel.set_offscreen_redirect(useMenu
? Clutter.OffscreenRedirect.ALWAYS
: Clutter.OffscreenRedirect.AUTOMATIC_FOR_OPACITY);
}
_onWorkspaceSwitched() {
this._currentWorkspace = global.workspace_manager.get_active_workspace_index();
this._updateMenuOrnament();
this._updateActiveThumbnail();
this._statusLabel.set_text(this._labelText());
}
_nWorkspacesChanged() {
this._createWorkspacesSection();
this._updateThumbnails();
this._updateThumbnailVisibility();
}
_updateMenuOrnament() {
for (let i = 0; i < this._workspacesItems.length; i++) {
this._workspacesItems[i].setOrnament(i === this._currentWorkspace
? PopupMenu.Ornament.DOT
: PopupMenu.Ornament.NO_DOT);
}
}
_updateActiveThumbnail() {
let thumbs = this._thumbnailsBox.get_children();
for (let i = 0; i < thumbs.length; i++) {
if (i === this._currentWorkspace)
thumbs[i].add_style_class_name('active');
else
thumbs[i].remove_style_class_name('active');
}
}
_labelText(workspaceIndex) {
if (workspaceIndex === undefined) {
workspaceIndex = this._currentWorkspace;
return (workspaceIndex + 1).toString();
}
return Meta.prefs_get_workspace_name(workspaceIndex);
}
_updateMenuLabels() {
for (let i = 0; i < this._workspacesItems.length; i++)
this._workspacesItems[i].label.text = this._labelText(i);
}
_createWorkspacesSection() {
let workspaceManager = global.workspace_manager;
this._workspaceSection.removeAll();
this._workspacesItems = [];
this._currentWorkspace = workspaceManager.get_active_workspace_index();
let i = 0;
for (; i < workspaceManager.n_workspaces; i++) {
this._workspacesItems[i] = new PopupMenu.PopupMenuItem(this._labelText(i));
this._workspaceSection.addMenuItem(this._workspacesItems[i]);
this._workspacesItems[i].workspaceId = i;
this._workspacesItems[i].label_actor = this._statusLabel;
this._workspacesItems[i].connect('activate', (actor, _event) => {
this._activate(actor.workspaceId);
});
this._workspacesItems[i].setOrnament(i === this._currentWorkspace
? PopupMenu.Ornament.DOT
: PopupMenu.Ornament.NO_DOT);
}
this._statusLabel.set_text(this._labelText());
}
_updateThumbnails() {
let workspaceManager = global.workspace_manager;
this._thumbnailsBox.destroy_all_children();
for (let i = 0; i < workspaceManager.n_workspaces; i++) {
let thumb = new WorkspaceThumbnail(i);
this._thumbnailsBox.add_child(thumb);
}
this._updateActiveThumbnail();
}
_activate(index) {
let workspaceManager = global.workspace_manager;
if (index >= 0 && index < workspaceManager.n_workspaces) {
let metaWorkspace = workspaceManager.get_workspace_by_index(index);
metaWorkspace.activate(global.get_current_time());
}
}
_onScrollEvent(actor, event) {
let direction = event.get_scroll_direction();
let diff = 0;
if (direction === Clutter.ScrollDirection.DOWN)
diff = 1;
else if (direction === Clutter.ScrollDirection.UP)
diff = -1;
else
return;
let newIndex = global.workspace_manager.get_active_workspace_index() + diff;
this._activate(newIndex);
}
}
import {WorkspaceIndicator} from './workspaceIndicator.js';
export default class WorkspaceIndicatorExtension extends Extension {
enable() {
this._indicator = new WorkspaceIndicator();
this._indicator = new WorkspaceIndicator({
settings: this.getSettings(),
});
Main.panel.addToStatusArea('workspace-indicator', this._indicator);
}

View File

@@ -7,6 +7,10 @@ extension_data += configure_file(
output: metadata_name,
configuration: metadata_conf
)
extension_data += files('stylesheet.css')
extension_data += files(
'stylesheet-dark.css',
'stylesheet-light.css',
)
extension_schemas += files('schemas/' + metadata_conf.get('gschemaname') + '.gschema.xml')
extension_sources += files('prefs.js')
extension_sources += files('prefs.js', 'workspaceIndicator.js')

View File

@@ -3,6 +3,7 @@
//
// SPDX-License-Identifier: GPL-2.0-or-later
// -*- mode: js2; indent-tabs-mode: nil; js2-basic-offset: 4 -*-
import Adw from 'gi://Adw';
import Gio from 'gi://Gio';
import GLib from 'gi://GLib';
@@ -17,6 +18,25 @@ const N_ = e => e;
const WORKSPACE_SCHEMA = 'org.gnome.desktop.wm.preferences';
const WORKSPACE_KEY = 'workspace-names';
class GeneralGroup extends Adw.PreferencesGroup {
static {
GObject.registerClass(this);
}
constructor(settings) {
super();
const row = new Adw.SwitchRow({
title: _('Show Previews In Top Bar'),
});
this.add(row);
settings.bind('embed-previews',
row, 'active',
Gio.SettingsBindFlags.DEFAULT);
}
}
class NewItem extends GObject.Object {}
GObject.registerClass(NewItem);
@@ -118,7 +138,7 @@ class WorkspacesList extends GObject.Object {
}
}
class WorkspaceSettingsWidget extends Adw.PreferencesGroup {
class WorkspacesGroup extends Adw.PreferencesGroup {
static {
GObject.registerClass(this);
@@ -264,6 +284,9 @@ class NewWorkspaceRow extends Adw.PreferencesRow {
export default class WorkspaceIndicatorPrefs extends ExtensionPreferences {
getPreferencesWidget() {
return new WorkspaceSettingsWidget();
const page = new Adw.PreferencesPage();
page.add(new GeneralGroup(this.getSettings()));
page.add(new WorkspacesGroup());
return page;
}
}

View File

@@ -0,0 +1,15 @@
<!--
SPDX-FileCopyrightText: 2024 Florian Müllner <fmuellner@gnome.org>
SPDX-License-Identifier: GPL-2.0-or-later
-->
<schemalist gettext-domain="gnome-shell-extensions">
<schema id="org.gnome.shell.extensions.workspace-indicator"
path="/org/gnome/shell/extensions/workspace-indicator/">
<key name="embed-previews" type="b">
<default>true</default>
<summary>Show workspace previews in top bar</summary>
</key>
</schema>
</schemalist>

View File

@@ -0,0 +1,63 @@
/*
* SPDX-FileCopyrightText: 2011 Erick Pérez Castellanos <erick.red@gmail.com>
* SPDX-FileCopyrightText: 2019 Florian Müllner <fmuellner@gnome.org>
*
* SPDX-License-Identifier: GPL-2.0-or-later
*/
.workspace-indicator .status-label {
padding: 0 8px;
}
.workspace-indicator .workspaces-view.hfade {
-st-hfade-offset: 20px;
}
.workspace-indicator-menu .workspaces-view {
max-width: 480px;
}
.workspace-indicator .workspaces-box {
padding: 5px;
spacing: 3px;
}
.workspace-indicator-menu .workspaces-box {
padding: 5px;
spacing: 6px;
}
.workspace-indicator-menu .workspace-box {
spacing: 6px;
}
.workspace-indicator-menu .workspace,
.workspace-indicator .workspace {
border: 2px solid transparent;
border-radius: 4px;
background-color: #3f3f3f;
}
.workspace-indicator .workspace {
width: 52px;
}
.workspace-indicator-menu .workspace {
height: 80px;
width: 160px;
}
.workspace-indicator-menu .workspace.active,
.workspace-indicator .workspace.active {
border-color: #9f9f9f;
}
.workspace-indicator-window-preview {
background-color: #bebebe;
border: 1px solid #828282;
border-radius: 1px;
}
.workspace-indicator-window-preview.active {
background-color: #d4d4d4;
}

View File

@@ -0,0 +1,25 @@
/*
* SPDX-FileCopyrightText: 2013 Florian Müllner <fmuellner@gnome.org>
* SPDX-FileCopyrightText: 2015 Jakub Steiner <jimmac@gmail.com>
*
* SPDX-License-Identifier: GPL-2.0-or-later
*/
@import url("stylesheet-dark.css");
.workspace-indicator .workspace {
background-color: #ccc;
}
.workspace-indicator .workspace.active {
border-color: #888;
}
.workspace-indicator-window-preview {
background-color: #ededed;
border: 1px solid #ccc;
}
.workspace-indicator-window-preview.active {
background-color: #f6f5f4;
}

View File

@@ -1,35 +0,0 @@
/*
* SPDX-FileCopyrightText: 2011 Erick Pérez Castellanos <erick.red@gmail.com>
* SPDX-FileCopyrightText: 2019 Florian Müllner <fmuellner@gnome.org>
*
* SPDX-License-Identifier: GPL-2.0-or-later
*/
.panel-workspace-indicator {
padding: 0 8px;
}
.panel-workspace-indicator-box {
padding: 4px 0;
spacing: 4px;
}
.panel-workspace-indicator-box .workspace {
width: 40px;
border: 2px solid #000;
border-radius: 2px;
background-color: #595959;
}
.panel-workspace-indicator-box .workspace.active {
border-color: #fff;
}
.workspace-indicator-window-preview {
background-color: #bebebe;
border: 1px solid #828282;
}
.workspace-indicator-window-preview.active {
background-color: #d4d4d4;
}

View File

@@ -1,4 +1,6 @@
// SPDX-FileCopyrightText: 2019 Florian Müllner <fmuellner@gnome.org>
// SPDX-FileCopyrightText: 2011 Erick Pérez Castellanos <erick.red@gmail.com>
// SPDX-FileCopyrightText: 2011 Giovanni Campagna <gcampagna@src.gnome.org>
// SPDX-FileCopyrightText: 2017 Florian Müllner <fmuellner@gnome.org>
//
// SPDX-License-Identifier: GPL-2.0-or-later
@@ -18,7 +20,9 @@ import * as PopupMenu from 'resource:///org/gnome/shell/ui/popupMenu.js';
const TOOLTIP_OFFSET = 6;
const TOOLTIP_ANIMATION_TIME = 150;
const MAX_THUMBNAILS = 6;
const SCROLL_TIME = 100;
let baseStyleClassName = '';
class WindowPreview extends St.Button {
static {
@@ -27,7 +31,7 @@ class WindowPreview extends St.Button {
constructor(window) {
super({
style_class: 'window-list-window-preview',
style_class: `${baseStyleClassName}-window-preview`,
});
this._delegate = this;
@@ -39,7 +43,7 @@ class WindowPreview extends St.Button {
'size-changed', () => this._checkRelayout(),
'position-changed', () => this._checkRelayout(),
'notify::minimized', this._updateVisible.bind(this),
'notify::skip-taskbar', this._updateVisible.bind(this),
'notify::window-type', this._updateVisible.bind(this),
this);
this._updateVisible();
@@ -68,7 +72,7 @@ class WindowPreview extends St.Button {
}
_updateVisible() {
this.visible = !this._window.skip_taskbar &&
this.visible = this._window.window_type !== Meta.WindowType.DESKTOP &&
this._window.showing_on_its_workspace();
}
}
@@ -100,19 +104,39 @@ class WorkspaceLayout extends Clutter.LayoutManager {
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));
Math.round((frameRect.y - workArea.y) * vscale));
child.allocate(childBox);
}
}
}
class WorkspaceThumbnail extends St.Button {
static [GObject.properties] = {
'active': GObject.ParamSpec.boolean(
'active', '', '',
GObject.ParamFlags.READWRITE,
false),
'show-label': GObject.ParamSpec.boolean(
'show-label', '', '',
GObject.ParamFlags.READWRITE,
false),
};
static {
GObject.registerClass(this);
}
constructor(index) {
super({
super();
const box = new St.BoxLayout({
style_class: 'workspace-box',
y_expand: true,
vertical: true,
});
this.set_child(box);
this._preview = new St.Bin({
style_class: 'workspace',
child: new Clutter.Actor({
layout_manager: new WorkspaceLayout(),
@@ -120,7 +144,15 @@ class WorkspaceThumbnail extends St.Button {
x_expand: true,
y_expand: true,
}),
y_expand: true,
});
box.add_child(this._preview);
this._label = new St.Label({
x_align: Clutter.ActorAlign.CENTER,
text: Meta.prefs_get_workspace_name(index),
});
box.add_child(this._label);
this._tooltip = new St.Label({
style_class: 'dash-label',
@@ -128,9 +160,19 @@ class WorkspaceThumbnail extends St.Button {
});
Main.uiGroup.add_child(this._tooltip);
this.bind_property('show-label',
this._label, 'visible',
GObject.BindingFlags.SYNC_CREATE);
this.connect('destroy', this._onDestroy.bind(this));
this.connect('notify::hover', this._syncTooltip.bind(this));
const desktopSettings =
new Gio.Settings({schema_id: 'org.gnome.desktop.wm.preferences'});
desktopSettings.connectObject('changed::workspace-names', () => {
this._label.text = Meta.prefs_get_workspace_name(index);
}, this);
this._index = index;
this._delegate = this; // needed for DND
@@ -139,6 +181,10 @@ class WorkspaceThumbnail extends St.Button {
let workspaceManager = global.workspace_manager;
this._workspace = workspaceManager.get_workspace_by_index(index);
this._workspace.bind_property('active',
this, 'active',
GObject.BindingFlags.SYNC_CREATE);
this._workspace.connectObject(
'window-added', (ws, window) => this._addWindow(window),
'window-removed', (ws, window) => this._removeWindow(window),
@@ -151,6 +197,18 @@ class WorkspaceThumbnail extends St.Button {
this._onRestacked();
}
get active() {
return this._preview.has_style_class_name('active');
}
set active(active) {
if (active)
this._preview.add_style_class_name('active');
else
this._preview.remove_style_class_name('active');
this.notify('active');
}
acceptDrop(source) {
if (!source.metaWindow)
return false;
@@ -173,7 +231,7 @@ class WorkspaceThumbnail extends St.Button {
let preview = new WindowPreview(window);
preview.connect('clicked', (a, btn) => this.emit('clicked', btn));
this._windowPreviews.set(window, preview);
this.child.add_child(preview);
this._preview.child.add_child(preview);
}
_removeWindow(window) {
@@ -193,7 +251,7 @@ class WorkspaceThumbnail extends St.Button {
if (!preview)
continue;
this.child.set_child_above_sibling(preview, lastPreview);
this._preview.child.set_child_above_sibling(preview, lastPreview);
lastPreview = preview;
}
}
@@ -212,6 +270,9 @@ class WorkspaceThumbnail extends St.Button {
}
_syncTooltip() {
if (this.showLabel)
return;
if (this.hover) {
this._tooltip.set({
text: Meta.prefs_get_workspace_name(this._index),
@@ -220,16 +281,17 @@ class WorkspaceThumbnail extends St.Button {
});
const [stageX, stageY] = this.get_transformed_position();
const thumbWidth = this.allocation.get_width();
const tipWidth = this._tooltip.width;
const tipHeight = this._tooltip.height;
const [thumbWidth, thumbHeight] = this.allocation.get_size();
const [tipWidth, tipHeight] = this._tooltip.get_size();
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;
const y = stageY - monitor.y > thumbHeight + TOOLTIP_OFFSET
? stageY - tipHeight - TOOLTIP_OFFSET // show above
: stageY + thumbHeight + TOOLTIP_OFFSET; // show below
this._tooltip.set_position(x, y);
}
@@ -246,17 +308,136 @@ class WorkspaceThumbnail extends St.Button {
}
}
class WorkspacePreviews extends Clutter.Actor {
static [GObject.properties] = {
'show-labels': GObject.ParamSpec.boolean(
'show-labels', '', '',
GObject.ParamFlags.READWRITE | GObject.ParamFlags.CONSTRUCT_ONLY,
false),
};
static {
GObject.registerClass(this);
}
constructor(params) {
super({
...params,
layout_manager: new Clutter.BinLayout(),
reactive: true,
y_expand: true,
});
this.connect('scroll-event',
(a, event) => Main.wm.handleWorkspaceScroll(event));
const {workspaceManager} = global;
workspaceManager.connectObject(
'notify::n-workspaces', () => this._updateThumbnails(), GObject.ConnectFlags.AFTER,
'workspace-switched', () => this._updateScrollPosition(),
this);
this.connect('notify::mapped', () => {
if (this.mapped)
this._updateScrollPosition();
});
this._thumbnailsBox = new St.BoxLayout({
style_class: 'workspaces-box',
y_expand: true,
});
this._scrollView = new St.ScrollView({
style_class: 'workspaces-view hfade',
enable_mouse_scrolling: false,
hscrollbar_policy: St.PolicyType.EXTERNAL,
vscrollbar_policy: St.PolicyType.NEVER,
y_expand: true,
child: this._thumbnailsBox,
});
this.add_child(this._scrollView);
this._updateThumbnails();
}
_updateThumbnails() {
const {nWorkspaces} = global.workspace_manager;
this._thumbnailsBox.destroy_all_children();
for (let i = 0; i < nWorkspaces; i++) {
const thumb = new WorkspaceThumbnail(i);
this.bind_property('show-labels',
thumb, 'show-label',
GObject.BindingFlags.SYNC_CREATE);
this._thumbnailsBox.add_child(thumb);
}
if (this.mapped)
this._updateScrollPosition();
}
_updateScrollPosition() {
const adjustment = this._scrollView.hadjustment;
const {upper, pageSize} = adjustment;
let {value} = adjustment;
const activeWorkspace =
[...this._thumbnailsBox].find(a => a.active);
if (!activeWorkspace)
return;
let offset = 0;
const hfade = this._scrollView.get_effect('fade');
if (hfade)
offset = hfade.fade_margins.left;
let {x1, x2} = activeWorkspace.get_allocation_box();
let parent = activeWorkspace.get_parent();
while (parent !== this._scrollView) {
if (!parent)
throw new Error('actor not in scroll view');
const box = parent.get_allocation_box();
x1 += box.x1;
x2 += box.x1;
parent = parent.get_parent();
}
if (x1 < value + offset)
value = Math.max(0, x1 - offset);
else if (x2 > value + pageSize - offset)
value = Math.min(upper, x2 + offset - pageSize);
else
return;
adjustment.ease(value, {
mode: Clutter.AnimationMode.EASE_OUT_QUAD,
duration: SCROLL_TIME,
});
}
}
export class WorkspaceIndicator extends PanelMenu.Button {
static {
GObject.registerClass(this);
}
constructor() {
constructor(params = {}) {
super(0.5, _('Workspace Indicator'), true);
this.setMenu(new PopupMenu.PopupMenu(this, 0.0, St.Side.BOTTOM));
this.add_style_class_name('window-list-workspace-indicator');
this.remove_style_class_name('panel-button');
this.menu.actor.remove_style_class_name('panel-menu');
const {
baseStyleClass = 'workspace-indicator',
settings,
} = params;
this._settings = settings;
baseStyleClassName = baseStyleClass;
this.add_style_class_name(baseStyleClassName);
let container = new St.Widget({
layout_manager: new Clutter.BinLayout(),
@@ -268,163 +449,89 @@ export class WorkspaceIndicator extends PanelMenu.Button {
let workspaceManager = global.workspace_manager;
this._currentWorkspace = workspaceManager.get_active_workspace_index();
this._statusLabel = new St.Label({text: this._getStatusText()});
this._statusBin = new St.Bin({
style_class: 'status-label-bin',
x_expand: true,
y_expand: true,
child: this._statusLabel,
this._statusLabel = new St.Label({
style_class: 'status-label',
y_align: Clutter.ActorAlign.CENTER,
text: this._getStatusText(),
});
container.add_child(this._statusBin);
container.add_child(this._statusLabel);
this._thumbnailsBox = new St.BoxLayout({
style_class: 'workspaces-box',
y_expand: true,
reactive: true,
});
this._thumbnailsBox.connect('scroll-event',
this._onScrollEvent.bind(this));
container.add_child(this._thumbnailsBox);
this._thumbnails = new WorkspacePreviews();
container.add_child(this._thumbnails);
this._workspacesItems = [];
workspaceManager.connectObject(
'notify::n-workspaces', this._nWorkspacesChanged.bind(this), GObject.ConnectFlags.AFTER,
'workspace-switched', this._onWorkspaceSwitched.bind(this), GObject.ConnectFlags.AFTER,
'notify::layout-rows', this._updateThumbnailVisibility.bind(this),
this);
this.connect('scroll-event', this._onScrollEvent.bind(this));
this._updateMenu();
this._updateThumbnails();
this._updateThumbnailVisibility();
this.connect('scroll-event',
(a, event) => Main.wm.handleWorkspaceScroll(event));
this._settings = new Gio.Settings({schema_id: 'org.gnome.desktop.wm.preferences'});
this._settings.connectObject('changed::workspace-names',
() => this._updateMenuLabels(), this);
this._inTopBar = false;
this.connect('notify::realized', () => {
if (!this.realized)
return;
this._inTopBar = Main.panel.contains(this);
this._updateTopBarRedirect();
});
this._settings.connect('changed::embed-previews',
() => this._updateThumbnailVisibility());
this._updateThumbnailVisibility();
}
_onDestroy() {
if (this._inTopBar)
Main.panel.set_offscreen_redirect(Clutter.OffscreenRedirect.ALWAYS);
this._inTopBar = false;
super._onDestroy();
}
_updateThumbnailVisibility() {
const {workspaceManager} = global;
const vertical = workspaceManager.layout_rows === -1;
const useMenu =
vertical || workspaceManager.n_workspaces > MAX_THUMBNAILS;
const useMenu = !this._settings.get_boolean('embed-previews');
this.reactive = useMenu;
this._statusBin.visible = useMenu;
this._thumbnailsBox.visible = !useMenu;
this._statusLabel.visible = useMenu;
this._thumbnails.visible = !useMenu;
this.setMenu(useMenu
? this._createPreviewMenu()
: null);
this._updateTopBarRedirect();
}
_updateTopBarRedirect() {
if (!this._inTopBar)
return;
// Disable offscreen-redirect when showing the workspace switcher
// so that clip-to-allocation works
Main.panel.set_offscreen_redirect(this._thumbnails.visible
? Clutter.OffscreenRedirect.ALWAYS
: Clutter.OffscreenRedirect.AUTOMATIC_FOR_OPACITY);
}
_onWorkspaceSwitched() {
let workspaceManager = global.workspace_manager;
this._currentWorkspace = workspaceManager.get_active_workspace_index();
this._updateMenuOrnament();
this._updateActiveThumbnail();
this._currentWorkspace = global.workspace_manager.get_active_workspace_index();
this._statusLabel.set_text(this._getStatusText());
}
_nWorkspacesChanged() {
this._updateMenu();
this._updateThumbnails();
this._updateThumbnailVisibility();
}
_updateMenuOrnament() {
for (let i = 0; i < this._workspacesItems.length; i++) {
this._workspacesItems[i].setOrnament(i === this._currentWorkspace
? PopupMenu.Ornament.DOT
: PopupMenu.Ornament.NO_DOT);
}
}
_updateActiveThumbnail() {
let thumbs = this._thumbnailsBox.get_children();
for (let i = 0; i < thumbs.length; i++) {
if (i === this._currentWorkspace)
thumbs[i].add_style_class_name('active');
else
thumbs[i].remove_style_class_name('active');
}
}
_getStatusText() {
let workspaceManager = global.workspace_manager;
let current = workspaceManager.get_active_workspace_index();
let total = workspaceManager.n_workspaces;
return '%d / %d'.format(current + 1, total);
const {nWorkspaces} = global.workspace_manager;
const current = this._currentWorkspace + 1;
return `${current} / ${nWorkspaces}`;
}
_updateMenuLabels() {
for (let i = 0; i < this._workspacesItems.length; i++) {
let item = this._workspacesItems[i];
let name = Meta.prefs_get_workspace_name(i);
item.label.text = name;
}
}
_createPreviewMenu() {
const menu = new PopupMenu.PopupMenu(this, 0.5, St.Side.TOP);
_updateMenu() {
let workspaceManager = global.workspace_manager;
this.menu.removeAll();
this._workspacesItems = [];
this._currentWorkspace = workspaceManager.get_active_workspace_index();
for (let i = 0; i < workspaceManager.n_workspaces; i++) {
let name = Meta.prefs_get_workspace_name(i);
let item = new PopupMenu.PopupMenuItem(name);
item.workspaceId = i;
item.connect('activate', () => {
this._activate(item.workspaceId);
});
item.setOrnament(i === this._currentWorkspace
? PopupMenu.Ornament.DOT
: PopupMenu.Ornament.NO_DOT);
this.menu.addMenuItem(item);
this._workspacesItems[i] = item;
}
this._statusLabel.set_text(this._getStatusText());
}
_updateThumbnails() {
let workspaceManager = global.workspace_manager;
this._thumbnailsBox.destroy_all_children();
for (let i = 0; i < workspaceManager.n_workspaces; i++) {
let thumb = new WorkspaceThumbnail(i);
this._thumbnailsBox.add_child(thumb);
}
this._updateActiveThumbnail();
}
_activate(index) {
let workspaceManager = global.workspace_manager;
if (index >= 0 && index < workspaceManager.n_workspaces) {
let metaWorkspace = workspaceManager.get_workspace_by_index(index);
metaWorkspace.activate(global.get_current_time());
}
}
_onScrollEvent(actor, event) {
let direction = event.get_scroll_direction();
let diff = 0;
if (direction === Clutter.ScrollDirection.DOWN)
diff = 1;
else if (direction === Clutter.ScrollDirection.UP)
diff = -1;
else
return;
let newIndex = this._currentWorkspace + diff;
this._activate(newIndex);
const previews = new WorkspacePreviews({show_labels: true});
menu.box.add_child(previews);
menu.actor.add_style_class_name(`${baseStyleClassName}-menu`);
return menu;
}
}

View File

@@ -2,11 +2,10 @@
#
# SPDX-License-Identifier: GPL-2.0-or-later
project(
'gnome-shell-extensions',
version: '46.4',
project('gnome-shell-extensions',
version: '47.alpha',
meson_version: '>= 0.58.0',
license: 'GPL-2.0-or-later',
license: 'GPL2+'
)
gettext_domain = meson.project_name()
@@ -35,7 +34,7 @@ classic_extensions = [
'apps-menu',
'places-menu',
'launch-new-instance',
'window-list',
'window-list'
]
default_extensions = classic_extensions
@@ -45,11 +44,15 @@ default_extensions += [
'screenshot-window-sizer',
'system-monitor',
'windowsNavigator',
'workspace-indicator',
'workspace-indicator'
]
all_extensions = default_extensions
all_extensions += ['auto-move-windows', 'native-window-placement', 'user-theme']
all_extensions += [
'auto-move-windows',
'native-window-placement',
'user-theme'
]
enabled_extensions = get_option('enable_extensions')
@@ -68,10 +71,11 @@ endif
classic_mode_enabled = get_option('classic_mode')
if classic_mode_enabled
# Sanity check: Make sure all classic extensions are enabled
# Sanity check: Make sure all classic extensions are enabled
foreach e : classic_extensions
if not enabled_extensions.contains(e)
error(f'Classic mode is enabled, but the required extension @e@ is not')
error('Classic mode is enabled, ' +
'but the required extension @0@ is not.'.format(e))
endif
endforeach
endif
@@ -79,7 +83,7 @@ endif
# Sanity check: Make sure enabled extensions are valid
foreach e : enabled_extensions
if not all_extensions.contains(e)
error(f'Invalid extension @e@.')
error('Invalid extension @0@.'.format(e))
endif
endforeach
@@ -87,20 +91,24 @@ if classic_mode_enabled
subdir('data')
meson.add_install_script(
'meson/session-post-install.py',
join_paths(get_option('prefix'), datadir),
join_paths(get_option('prefix'), datadir)
)
endif
subdir('extensions')
subdir('po')
gnome.post_install(glib_compile_schemas: true)
gnome.post_install(
glib_compile_schemas: true,
)
meson.add_dist_script('meson/check-version.py', meson.project_version(), 'NEWS')
meson.add_dist_script('meson/check-version.py',
meson.project_version(),
'NEWS')
summary_options = {
'extensions': enabled_extensions,
'classic_mode': get_option('classic_mode'),
'extensions': enabled_extensions,
'classic_mode': get_option('classic_mode'),
}
summary_dirs = {

View File

@@ -6,8 +6,7 @@
import os, sys
from pathlib import Path
from xml.etree.ElementTree import ElementTree
import argparse
import argparse, subprocess
def check_version(version, file, type='news'):
if type == 'news':
@@ -17,11 +16,8 @@ def check_version(version, file, type='news'):
if not ok:
raise Exception("{} does not start with {}".format(file, version))
elif type == 'metainfo':
query = './releases/release[@version="{}"]'.format(version)
ok = ElementTree(file=file).find(query) is not None
print("{}: {}".format(file, "OK" if ok else "FAILED"))
if not ok:
raise Exception("{} does not contain release {}".format(file, version))
subprocess.run(['appstream-util', 'validate-version', file, version],
check=True)
else:
raise Exception('Not implemented')

View File

@@ -17,7 +17,7 @@ extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml
extensions/window-list/extension.js
extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml
extensions/window-list/prefs.js
extensions/window-list/workspaceIndicator.js
extensions/windowsNavigator/extension.js
extensions/workspace-indicator/extension.js
extensions/workspace-indicator/prefs.js
extensions/workspace-indicator/schemas/org.gnome.shell.extensions.workspace-indicator.gschema.xml
extensions/workspace-indicator/workspaceIndicator.js

205
po/bg.po
View File

@@ -1,28 +1,24 @@
# Bulgarian translation for gnome-shell-extensions po-file.
# Copyright (C) 2014, 2015, 2017 Free Software Foundation, Inc.
# Copyright (C) 2021, 2022 Alexander Shopov <ash@kambanaria.org>.
# Copyright (C) 2024 twlvnn kraftwerk <kraft_werk@tutanota.com>.
# This file is distributed under the same license as the gnome-shell-extensions package.
# Ivaylo Valkov <ivaylo@e-valkov.org>, 2014.
# Alexander Shopov <ash@kambanaria.org>, 2014, 2015, 2021, 2022.
# Lyubomir Vasilev <lyubomirv@abv.bg>, 2017.
# twlvnn kraftwerk <kraft_werk@tutanota.com>, 2024.
#
msgid ""
msgstr ""
"Project-Id-Version: gnome-shell-extensions main\n"
"Project-Id-Version: gnome-shell-extensions master\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell-extensions/"
"issues\n"
"POT-Creation-Date: 2024-08-12 20:30+0000\n"
"PO-Revision-Date: 2024-09-02 10:45+0200\n"
"Last-Translator: twlvnn kraftwerk <kraft_werk@tutanota.com>\n"
"Language-Team: Bulgarian <dict@ludost.net>\n"
"POT-Creation-Date: 2022-02-12 20:25+0000\n"
"PO-Revision-Date: 2022-02-13 11:40+0100\n"
"Last-Translator: Alexander Shopov <ash@kambanaria.org>\n"
"Language-Team: Bulgarian <dict@fsa-bg.org>\n"
"Language: bg\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
"X-Generator: Gtranslator 46.1\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: data/gnome-classic.desktop.in:3
msgid "GNOME Classic"
@@ -41,19 +37,19 @@ msgstr "Класически GNOME в Wayland"
msgid "GNOME Classic on Xorg"
msgstr "Класически GNOME в Xorg"
#: extensions/apps-menu/extension.js:126
#: extensions/apps-menu/extension.js:112
msgid "Favorites"
msgstr "Любими"
#: extensions/apps-menu/extension.js:400
msgid "Apps"
#: extensions/apps-menu/extension.js:370
msgid "Applications"
msgstr "Програми"
#: extensions/auto-move-windows/org.gnome.shell.extensions.auto-move-windows.gschema.xml:12
#: 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:13
#: 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"
@@ -61,34 +57,34 @@ msgstr ""
"Списък от низове. Всеки съдържа идентификатор на програма (име на файл „."
"desktop“), следван от знака „:“ и номер на работен плот"
#: extensions/auto-move-windows/prefs.js:159
#: extensions/auto-move-windows/prefs.js:19
msgid "Workspace Rules"
msgstr "Правила за работните плотове"
#: extensions/auto-move-windows/prefs.js:314
#: 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:218
#: extensions/places-menu/placeDisplay.js:210
#, javascript-format
msgid "Ejecting drive “%s” failed:"
msgstr "Неуспешно изваждане на устройство „%s“:"
#: extensions/drive-menu/extension.js:142
#: extensions/drive-menu/extension.js:139
msgid "Removable devices"
msgstr "Преносими медии"
#: extensions/drive-menu/extension.js:164
#: extensions/drive-menu/extension.js:161
msgid "Open Files"
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:5
msgid "Use more screen for windows"
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: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. "
@@ -99,11 +95,11 @@ msgstr ""
"смаляване на обхващащия ги правоъгълник. Тази настройка се прилага само при "
"естествената стратегия за поставяне на прозорците."
#: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:17
#: 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:18
#: 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 "
@@ -113,119 +109,47 @@ msgstr ""
"им, а не както е стандартно — отдолу. За прилагане на промяната на "
"настройката трябва да рестартирате обвивката на GNOME."
#: extensions/places-menu/extension.js:88
#: extensions/places-menu/extension.js:91
#: extensions/places-menu/extension.js:94
msgid "Places"
msgstr "Места"
#: extensions/places-menu/placeDisplay.js:60
#: extensions/places-menu/placeDisplay.js:49
#, javascript-format
msgid "Failed to launch “%s”"
msgstr "Неуспешно стартиране на „%s“"
#: extensions/places-menu/placeDisplay.js:75
#: extensions/places-menu/placeDisplay.js:64
#, javascript-format
msgid "Failed to mount volume for “%s”"
msgstr "Неуспешно монтиране на тома „%s“"
#: extensions/places-menu/placeDisplay.js:135
#: extensions/places-menu/placeDisplay.js:158
#: extensions/places-menu/placeDisplay.js:125
#: extensions/places-menu/placeDisplay.js:148
msgid "Computer"
msgstr "Компютър"
#: extensions/places-menu/placeDisplay.js:333
#: extensions/places-menu/placeDisplay.js:336
msgid "Home"
msgstr "Домашна папка"
#: extensions/places-menu/placeDisplay.js:378
#: extensions/places-menu/placeDisplay.js:381
msgid "Browse Network"
msgstr "Мрежа"
#: extensions/screenshot-window-sizer/org.gnome.shell.extensions.screenshot-window-sizer.gschema.xml:14
#: 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:18
#: extensions/screenshot-window-sizer/org.gnome.shell.extensions.screenshot-window-sizer.gschema.xml:11
msgid "Cycle Screenshot Sizes Backward"
msgstr "Смяна на размерите на снимката на екрана наобратно"
#: extensions/system-monitor/extension.js:135
msgid "CPU stats"
msgstr "Статистика на ЦП"
#: extensions/system-monitor/extension.js:159
msgid "Memory stats"
msgstr "Статистика на паметта"
#: extensions/system-monitor/extension.js:177
msgid "Swap stats"
msgstr "Статистика на виртуалната памет"
#: extensions/system-monitor/extension.js:336
msgid "Upload stats"
msgstr "Статистика на качване"
#: extensions/system-monitor/extension.js:350
msgid "Download stats"
msgstr "Статистика на изтегляне"
#: extensions/system-monitor/extension.js:364
msgid "System stats"
msgstr "Статистика на системата"
#: extensions/system-monitor/extension.js:412
msgid "Show"
msgstr "Показване"
#: extensions/system-monitor/extension.js:414
msgid "CPU"
msgstr "ЦП"
#: extensions/system-monitor/extension.js:416
msgid "Memory"
msgstr "Памет"
#: extensions/system-monitor/extension.js:418
msgid "Swap"
msgstr "Виртуалната памет"
#: extensions/system-monitor/extension.js:420
msgid "Upload"
msgstr "Качване"
#: extensions/system-monitor/extension.js:422
msgid "Download"
msgstr "Изтегляне"
#: extensions/system-monitor/extension.js:427
msgid "Open System Monitor"
msgstr "Отваряне на „Наблюдение на системата“"
#: extensions/system-monitor/schemas/org.gnome.shell.extensions.system-monitor.gschema.xml:12
msgid "Show CPU usage"
msgstr "Показване на ползван ЦП"
#: extensions/system-monitor/schemas/org.gnome.shell.extensions.system-monitor.gschema.xml:16
msgid "Show memory usage"
msgstr "Показване на ползвана памет"
#: extensions/system-monitor/schemas/org.gnome.shell.extensions.system-monitor.gschema.xml:20
msgid "Show swap usage"
msgstr "Показване на ползвана виртуалната памет"
#: extensions/system-monitor/schemas/org.gnome.shell.extensions.system-monitor.gschema.xml:24
msgid "Show upload"
msgstr "Показване на качването"
#: extensions/system-monitor/schemas/org.gnome.shell.extensions.system-monitor.gschema.xml:28
msgid "Show download"
msgstr "Показване на изтеглянето"
#: extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml:11
#: 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:12
#: 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“"
@@ -234,74 +158,74 @@ msgstr ""
msgid "Close"
msgstr "Затваряне"
#: extensions/window-list/extension.js:99
#: extensions/window-list/extension.js:92
msgid "Unminimize"
msgstr "Деминимизиране"
#: extensions/window-list/extension.js:99
#: extensions/window-list/extension.js:92
msgid "Minimize"
msgstr "Минимизиране"
#: extensions/window-list/extension.js:106
#: extensions/window-list/extension.js:99
msgid "Unmaximize"
msgstr "Демаксимизиране"
#: extensions/window-list/extension.js:106
#: extensions/window-list/extension.js:99
msgid "Maximize"
msgstr "Максимизиране"
#: extensions/window-list/extension.js:471
#: extensions/window-list/extension.js:434
msgid "Minimize all"
msgstr "Минимизиране на всички"
#: extensions/window-list/extension.js:477
#: extensions/window-list/extension.js:440
msgid "Unminimize all"
msgstr "Деминимизиране на всички"
#: extensions/window-list/extension.js:483
#: extensions/window-list/extension.js:446
msgid "Maximize all"
msgstr "Максимизиране на всички"
#: extensions/window-list/extension.js:491
#: extensions/window-list/extension.js:454
msgid "Unmaximize all"
msgstr "Демаксимизиране на всички"
#: extensions/window-list/extension.js:499
#: extensions/window-list/extension.js:462
msgid "Close all"
msgstr "Затваряне на всички"
#: extensions/window-list/extension.js:773
#: extensions/window-list/extension.js:741
msgid "Window List"
msgstr "Списък на прозорците"
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:18
#: 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:19
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:13
msgid ""
"Decides when to group windows from the same application on the window list. "
"Possible values are “never”, “auto” and “always”."
msgstr ""
"Кога прозорците на една програма да се групират в списъка с прозорците. "
"Възможните стойности са „never“ (никога), „auto“ (автоматично) и „always“ "
"(винаги)."
"Възможните стойности са „never“ (никога), „auto“ (автоматично) и "
"„always“ (винаги)."
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:26
#: extensions/window-list/prefs.js:79
#: 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:27
#: 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:33
#: 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:34
#: 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."
@@ -309,43 +233,40 @@ msgstr ""
"Дали списъкът с прозорци да се извежда на всички монитори или само на "
"основния"
#: extensions/window-list/prefs.js:35
#: extensions/window-list/prefs.js:32
msgid "Window Grouping"
msgstr "Групиране на прозорци"
#: extensions/window-list/prefs.js:40
#: extensions/window-list/prefs.js:37
msgid "Never group windows"
msgstr "Никога да не се групират"
#: extensions/window-list/prefs.js:41
#: extensions/window-list/prefs.js:38
msgid "Group windows when space is limited"
msgstr "Групиране при ограничено място"
#: extensions/window-list/prefs.js:42
#: extensions/window-list/prefs.js:39
msgid "Always group windows"
msgstr "Винаги да се групират"
#: extensions/window-list/prefs.js:66
#: extensions/window-list/prefs.js:63
msgid "Show on all monitors"
msgstr "На всички монитори"
#: extensions/window-list/workspaceIndicator.js:255
#: extensions/workspace-indicator/extension.js:261
#: extensions/window-list/workspaceIndicator.js:249
#: extensions/workspace-indicator/extension.js:254
msgid "Workspace Indicator"
msgstr "Индикатор на работните плотове"
#: extensions/workspace-indicator/prefs.js:69
#: 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:136
msgid "Workspace Names"
msgstr "Имена на работните плотове"
#: extensions/workspace-indicator/prefs.js:262
#: extensions/workspace-indicator/prefs.js:184
msgid "Add Workspace"
msgstr "Добавяне на работен плот"
#~ msgid "Applications"
#~ msgstr "Програми"

109
po/ca.po
View File

@@ -1,22 +1,25 @@
# Catalan translation for gnome-shell-extensions.
# Copyright (C) 2011 gnome-shell-extensions's COPYRIGHT HOLDER
# This file is distributed under the same license as the gnome-shell-extensions package.
# Jordi Mas i Hernàndez <jmas@softcatala.org>, 2011, 2024
# Jordi Mas i Hernandez <jmas@softcatala.org>, 2011.
# Gil Forcada <gilforcada@guifi.net>, 2012, 2013, 2014.
#
msgid ""
msgstr ""
"Project-Id-Version: gnome-shell-extensions\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell-extensions/issues\n"
"POT-Creation-Date: 2024-05-23 16:39+0000\n"
"PO-Revision-Date: 2024-05-23 13:29+0100\n"
"Last-Translator: Jordi Mas i Hernàndez <jmas@softcatala.org>\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell-extensions/"
"issues\n"
"POT-Creation-Date: 2024-02-06 18:43+0000\n"
"PO-Revision-Date: 2024-04-24 22:52+0200\n"
"Last-Translator: Jordi Mas <jmas@softcatala.org>\n"
"Language-Team: Catalan <tradgnome@softcatala.org>\n"
"Language: ca\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-DamnedLies-Scope: partial\n"
"X-Generator: Poedit 2.4.2\n"
#: data/gnome-classic.desktop.in:3
msgid "GNOME Classic"
@@ -39,7 +42,7 @@ msgstr "GNOME clàssic amb Xorg"
msgid "Favorites"
msgstr "Preferides"
#: extensions/apps-menu/extension.js:400
#: extensions/apps-menu/extension.js:397
msgid "Apps"
msgstr "Aplicacions"
@@ -106,9 +109,9 @@ msgid ""
"restarting the shell to have any effect."
msgstr ""
"Si és «true» (cert), posiciona el títol de la finestra damunt de la "
"miniatura corresponent, substituint el comportament per defecte del Shell de"
" posicionar-lo a baix. Cal reiniciar el Shell per tal que aquest canvi "
"tingui efecte."
"miniatura corresponent, substituint el comportament per defecte del Shell de "
"posicionar-lo a baix. Cal reiniciar el Shell per tal que aquest canvi tingui "
"efecte."
#: extensions/places-menu/extension.js:91
#: extensions/places-menu/extension.js:94
@@ -148,7 +151,7 @@ msgstr "Mostra cíclicament cap enrere mides de captura de pantalla"
#: extensions/system-monitor/extension.js:135
msgid "CPU stats"
msgstr "Estadístiques de la CPU"
msgstr "Estadístiques de processador"
#: extensions/system-monitor/extension.js:159
msgid "Memory stats"
@@ -156,67 +159,47 @@ msgstr "Estadístiques de memòria"
#: extensions/system-monitor/extension.js:177
msgid "Swap stats"
msgstr "Estadístiques de l'intercanvi"
msgstr "Estadístiques del «swap»"
#: extensions/system-monitor/extension.js:336
#: extensions/system-monitor/extension.js:327
msgid "Upload stats"
msgstr "Estadístiques de pujada"
#: extensions/system-monitor/extension.js:350
#: extensions/system-monitor/extension.js:341
msgid "Download stats"
msgstr "Estadístiques de baixada"
msgstr "Estadístiques de descàrrega"
#: extensions/system-monitor/extension.js:364
#: extensions/system-monitor/extension.js:355
msgid "System stats"
msgstr "Estadístiques del sistema"
#: extensions/system-monitor/extension.js:412
#: extensions/system-monitor/extension.js:403
msgid "Show"
msgstr "Mostra"
#: extensions/system-monitor/extension.js:414
#: extensions/system-monitor/extension.js:405
msgid "CPU"
msgstr "CPU"
msgstr "Processador"
#: extensions/system-monitor/extension.js:416
#: extensions/system-monitor/extension.js:407
msgid "Memory"
msgstr "Memòria"
#: extensions/system-monitor/extension.js:418
#: extensions/system-monitor/extension.js:409
msgid "Swap"
msgstr "Intercanvi"
msgstr ""
#: extensions/system-monitor/extension.js:420
#: extensions/system-monitor/extension.js:411
msgid "Upload"
msgstr "Pujada"
msgstr "Pujades"
#: extensions/system-monitor/extension.js:422
#: extensions/system-monitor/extension.js:413
msgid "Download"
msgstr "Baixada"
msgstr "Descàrregues"
#: extensions/system-monitor/extension.js:427
#: extensions/system-monitor/extension.js:418
msgid "Open System Monitor"
msgstr "Obre el monitor del sistema"
#: extensions/system-monitor/schemas/org.gnome.shell.extensions.system-monitor.gschema.xml:12
msgid "Show CPU usage"
msgstr "Mostra l'ús de la CPU"
#: extensions/system-monitor/schemas/org.gnome.shell.extensions.system-monitor.gschema.xml:16
msgid "Show memory usage"
msgstr "Mostra l'ús de la memòria"
#: extensions/system-monitor/schemas/org.gnome.shell.extensions.system-monitor.gschema.xml:20
msgid "Show swap usage"
msgstr "Mostra l'ús d'intercanvi"
#: extensions/system-monitor/schemas/org.gnome.shell.extensions.system-monitor.gschema.xml:24
msgid "Show upload"
msgstr "Mostra la pujada"
#: extensions/system-monitor/schemas/org.gnome.shell.extensions.system-monitor.gschema.xml:28
msgid "Show download"
msgstr "Mostra la baixada"
msgstr ""
#: extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml:11
msgid "Theme name"
@@ -226,47 +209,47 @@ msgstr "Nom del tema"
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"
#: extensions/window-list/extension.js:72
#: extensions/window-list/extension.js:71
msgid "Close"
msgstr "Tanca"
#: extensions/window-list/extension.js:99
#: extensions/window-list/extension.js:98
msgid "Unminimize"
msgstr "Desminimitza"
#: extensions/window-list/extension.js:99
#: extensions/window-list/extension.js:98
msgid "Minimize"
msgstr "Minimitza"
#: extensions/window-list/extension.js:106
#: extensions/window-list/extension.js:105
msgid "Unmaximize"
msgstr "Desmaximitza"
#: extensions/window-list/extension.js:106
#: extensions/window-list/extension.js:105
msgid "Maximize"
msgstr "Maximitza"
#: extensions/window-list/extension.js:471
#: extensions/window-list/extension.js:470
msgid "Minimize all"
msgstr "Minimitza-ho tot"
#: extensions/window-list/extension.js:477
#: extensions/window-list/extension.js:476
msgid "Unminimize all"
msgstr "Desminimitza-ho tot"
#: extensions/window-list/extension.js:483
#: extensions/window-list/extension.js:482
msgid "Maximize all"
msgstr "Maximitza-ho tot"
#: extensions/window-list/extension.js:491
#: extensions/window-list/extension.js:490
msgid "Unmaximize all"
msgstr "Desmaximitza-ho tot"
#: extensions/window-list/extension.js:499
#: extensions/window-list/extension.js:498
msgid "Close all"
msgstr "Tanca-ho tot"
#: extensions/window-list/extension.js:773
#: extensions/window-list/extension.js:772
msgid "Window List"
msgstr "Llista de finestres"
@@ -280,8 +263,8 @@ msgid ""
"Possible values are “never”, “auto” and “always”."
msgstr ""
"Decideix quan s'han d'agrupar les finestres de la mateixa aplicació a la "
"llista de finestres. Els valors possibles són: «never» (mai), «auto» "
"(automàticament) i «always» (sempre)."
"llista de finestres. Els valors possibles són: «never» (mai), "
"«auto» (automàticament) i «always» (sempre)."
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:26
#: extensions/window-list/prefs.js:79
@@ -326,8 +309,8 @@ msgstr "Agrupa les finestres sempre"
msgid "Show on all monitors"
msgstr "Mostra a tots els monitors"
#: extensions/window-list/workspaceIndicator.js:255
#: extensions/workspace-indicator/extension.js:261
#: extensions/window-list/workspaceIndicator.js:253
#: extensions/workspace-indicator/extension.js:259
msgid "Workspace Indicator"
msgstr "Indicador de l'espai de treball"
@@ -344,3 +327,5 @@ msgstr "Noms dels espais de treball"
msgid "Add Workspace"
msgstr "Afegeix un espai de treball"
#~ msgid "Applications"
#~ msgstr "Aplicacions"

187
po/el.po
View File

@@ -12,8 +12,8 @@ msgstr ""
"Project-Id-Version: gnome-shell-extensions master\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell-extensions/"
"issues\n"
"POT-Creation-Date: 2024-07-24 10:26+0000\n"
"PO-Revision-Date: 2024-08-12 23:29+0300\n"
"POT-Creation-Date: 2023-02-18 15:10+0000\n"
"PO-Revision-Date: 2023-08-01 23:41+0300\n"
"Last-Translator: Efstathios Iosifidis <eiosifidis@gnome.org>\n"
"Language-Team: Greek, Modern (1453-) <gnome-el-list@gnome.org>\n"
"Language: el\n"
@@ -21,7 +21,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Poedit 3.4.4\n"
"X-Generator: Poedit 3.3.2\n"
"X-Project-Style: gnome\n"
#: data/gnome-classic.desktop.in:3
@@ -31,7 +31,7 @@ msgstr "GNOME Classic"
#: 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 Classic"
msgstr "Αυτή η συνεδρία σας συνδέει στο GNOME Classic"
#: data/gnome-classic-wayland.desktop.in:3
msgid "GNOME Classic on Wayland"
@@ -41,19 +41,19 @@ msgstr "GNOME Classic σε Wayland"
msgid "GNOME Classic on Xorg"
msgstr "GNOME Classic σε Xorg"
#: extensions/apps-menu/extension.js:126
#: extensions/apps-menu/extension.js:118
msgid "Favorites"
msgstr "Αγαπημένα"
#: extensions/apps-menu/extension.js:400
msgid "Apps"
#: extensions/apps-menu/extension.js:380
msgid "Applications"
msgstr "Εφαρμογές"
#: extensions/auto-move-windows/org.gnome.shell.extensions.auto-move-windows.gschema.xml:12
#: 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:13
#: 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"
@@ -62,34 +62,34 @@ msgstr ""
"(όνομα αρχείου επιφάνειας εργασίας), ακολουθούμενη από άνω-κάτω τελεία και "
"τον αριθμό του χώρου εργασίας"
#: extensions/auto-move-windows/prefs.js:159
#: extensions/auto-move-windows/prefs.js:152
msgid "Workspace Rules"
msgstr "Κανόνες χώρων εργασίας"
#: extensions/auto-move-windows/prefs.js:314
#: extensions/auto-move-windows/prefs.js:306
msgid "Add Rule"
msgstr "Προσθήκη κανόνα"
#. TRANSLATORS: %s is the filesystem name
#: extensions/drive-menu/extension.js:123
#: extensions/places-menu/placeDisplay.js:218
#: extensions/drive-menu/extension.js:126
#: extensions/places-menu/placeDisplay.js:212
#, javascript-format
msgid "Ejecting drive “%s” failed:"
msgstr "Αποτυχία εξαγωγής του δίσκου «%s»:"
#: extensions/drive-menu/extension.js:142
#: extensions/drive-menu/extension.js:145
msgid "Removable devices"
msgstr "Αφαιρούμενες συσκευές"
#: extensions/drive-menu/extension.js:164
#: extensions/drive-menu/extension.js:167
msgid "Open Files"
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:5
msgid "Use more screen for windows"
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: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. "
@@ -100,11 +100,11 @@ msgstr ""
"εδραιώνοντας τους περαιτέρω για να μειώσετε το πλαίσιο οριοθέτησης. Αυτή η "
"ρύθμιση ισχύει μόνο με την στρατηγική φυσικής τοποθέτησης."
#: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:17
#: 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:18
#: 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 "
@@ -115,119 +115,47 @@ msgstr ""
"στο κάτω μέρος. Η αλλαγή αυτής της ρύθμισης απαιτεί επανεκκίνηση του "
"κελύφους για να υπάρξει κάποιο αποτέλεσμα."
#: extensions/places-menu/extension.js:91
#: extensions/places-menu/extension.js:94
#: extensions/places-menu/extension.js:97
msgid "Places"
msgstr "Τοποθεσίες"
#: extensions/places-menu/placeDisplay.js:60
#: extensions/places-menu/placeDisplay.js:52
#, javascript-format
msgid "Failed to launch “%s”"
msgstr "Αποτυχία εκκίνησης «%s»"
#: extensions/places-menu/placeDisplay.js:75
#: extensions/places-menu/placeDisplay.js:67
#, javascript-format
msgid "Failed to mount volume for “%s”"
msgstr "Αποτυχία προσάρτησης τόμου για «%s»"
#: extensions/places-menu/placeDisplay.js:135
#: extensions/places-menu/placeDisplay.js:158
#: extensions/places-menu/placeDisplay.js:127
#: extensions/places-menu/placeDisplay.js:150
msgid "Computer"
msgstr "Υπολογιστής"
#: extensions/places-menu/placeDisplay.js:333
#: extensions/places-menu/placeDisplay.js:340
msgid "Home"
msgstr "Προσωπικός φάκελος"
#: extensions/places-menu/placeDisplay.js:378
#: extensions/places-menu/placeDisplay.js:385
msgid "Browse Network"
msgstr "Περιήγηση δικτύου"
#: extensions/screenshot-window-sizer/org.gnome.shell.extensions.screenshot-window-sizer.gschema.xml:14
#: 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:18
#: extensions/screenshot-window-sizer/org.gnome.shell.extensions.screenshot-window-sizer.gschema.xml:11
msgid "Cycle Screenshot Sizes Backward"
msgstr "Μεγέθη κυκλικών στιγμιοτύπων προς τα πίσω"
#: extensions/system-monitor/extension.js:135
msgid "CPU stats"
msgstr "Στατιστικά CPU"
#: extensions/system-monitor/extension.js:159
msgid "Memory stats"
msgstr "Στατιστικά μνήμης"
#: extensions/system-monitor/extension.js:177
msgid "Swap stats"
msgstr "Στατιστικά swap"
#: extensions/system-monitor/extension.js:336
msgid "Upload stats"
msgstr "Στατιστικά μεταφόρτωσης"
#: extensions/system-monitor/extension.js:350
msgid "Download stats"
msgstr "Στατιστικά λήψης"
#: extensions/system-monitor/extension.js:364
msgid "System stats"
msgstr "Στατιστικά συστήματος"
#: extensions/system-monitor/extension.js:412
msgid "Show"
msgstr "Εμφάνιση"
#: extensions/system-monitor/extension.js:414
msgid "CPU"
msgstr "CPU"
#: extensions/system-monitor/extension.js:416
msgid "Memory"
msgstr "Μνήμη"
#: extensions/system-monitor/extension.js:418
msgid "Swap"
msgstr "Swap"
#: extensions/system-monitor/extension.js:420
msgid "Upload"
msgstr "Μεταφόρτωση"
#: extensions/system-monitor/extension.js:422
msgid "Download"
msgstr "Λήψη"
#: extensions/system-monitor/extension.js:427
msgid "Open System Monitor"
msgstr "Άνοιγμα επόπτη συστήματος"
#: extensions/system-monitor/schemas/org.gnome.shell.extensions.system-monitor.gschema.xml:12
msgid "Show CPU usage"
msgstr "Εμφάνιση χρήσης CPU"
#: extensions/system-monitor/schemas/org.gnome.shell.extensions.system-monitor.gschema.xml:16
msgid "Show memory usage"
msgstr "Εμφάνιση χρήσης μνήμης"
#: extensions/system-monitor/schemas/org.gnome.shell.extensions.system-monitor.gschema.xml:20
msgid "Show swap usage"
msgstr "Εμφάνιση χρήσης swap"
#: extensions/system-monitor/schemas/org.gnome.shell.extensions.system-monitor.gschema.xml:24
msgid "Show upload"
msgstr "Εμφάνιση μεταφόρτωσης"
#: extensions/system-monitor/schemas/org.gnome.shell.extensions.system-monitor.gschema.xml:28
msgid "Show download"
msgstr "Εμφάνιση λήψης"
#: extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml:11
#: 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:12
#: 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"
@@ -236,51 +164,51 @@ msgstr ""
msgid "Close"
msgstr "Κλείσιμο"
#: extensions/window-list/extension.js:99
#: extensions/window-list/extension.js:92
msgid "Unminimize"
msgstr "Αποελαχιστοποίηση"
#: extensions/window-list/extension.js:99
#: extensions/window-list/extension.js:92
msgid "Minimize"
msgstr "Ελαχιστοποίηση"
#: extensions/window-list/extension.js:106
#: extensions/window-list/extension.js:99
msgid "Unmaximize"
msgstr "Απομεγιστοποίηση"
#: extensions/window-list/extension.js:106
#: extensions/window-list/extension.js:99
msgid "Maximize"
msgstr "Μεγιστοποίηση"
#: extensions/window-list/extension.js:471
#: extensions/window-list/extension.js:483
msgid "Minimize all"
msgstr "Ελαχιστοποίηση όλων"
#: extensions/window-list/extension.js:477
#: extensions/window-list/extension.js:489
msgid "Unminimize all"
msgstr "Αποελαχιστοποίηση όλων"
#: extensions/window-list/extension.js:483
#: extensions/window-list/extension.js:495
msgid "Maximize all"
msgstr "Μεγιστοποίηση όλων"
#: extensions/window-list/extension.js:491
#: extensions/window-list/extension.js:503
msgid "Unmaximize all"
msgstr "Απομεγιστοποίηση όλων"
#: extensions/window-list/extension.js:499
#: extensions/window-list/extension.js:511
msgid "Close all"
msgstr "Κλείσιμο όλων"
#: extensions/window-list/extension.js:773
#: extensions/window-list/extension.js:795
msgid "Window List"
msgstr "Λίστα παραθύρου"
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:18
#: 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:19
#: 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”."
@@ -289,21 +217,21 @@ msgstr ""
"παραθύρου. Δυνατές τιμές είναι «never» (ποτέ), «auto» (αυτόματα) και "
"«always» (πάντα)."
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:26
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:20
#: extensions/window-list/prefs.js:79
msgid "Show windows from all workspaces"
msgstr "Εμφάνιση των παραθύρων από όλους τους χώρους εργασίας"
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:27
#: 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:33
#: 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:34
#: 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."
@@ -331,27 +259,24 @@ msgstr "Να γίνεται πάντα ομαδοποίηση παραθύρων
msgid "Show on all monitors"
msgstr "Να εμφανίζεται σε όλες τις οθόνες"
#: extensions/window-list/workspaceIndicator.js:255
#: extensions/workspace-indicator/extension.js:261
#: extensions/window-list/workspaceIndicator.js:261
#: extensions/workspace-indicator/extension.js:266
msgid "Workspace Indicator"
msgstr "Δείκτης χώρου εργασίας"
#: extensions/workspace-indicator/prefs.js:69
#: extensions/workspace-indicator/prefs.js:62
#, javascript-format
msgid "Workspace %d"
msgstr "Χώρος εργασίας %d"
#: extensions/workspace-indicator/prefs.js:136
#: extensions/workspace-indicator/prefs.js:129
msgid "Workspace Names"
msgstr "Ονόματα χώρων εργασίας"
#: extensions/workspace-indicator/prefs.js:262
#: extensions/workspace-indicator/prefs.js:255
msgid "Add Workspace"
msgstr "Προσθήκη χώρου εργασίας"
#~ msgid "Applications"
#~ msgstr "Εφαρμογές"
#~ msgid "Application"
#~ msgstr "Εφαρμογή"
@@ -437,6 +362,12 @@ msgstr "Προσθήκη χώρου εργασίας"
#~ "λειτουργικότητα από μόνο του.\n"
#~ "Παρ' όλα αυτά είναι δυνατό να προσαρμόσετε το μήνυμα χαιρετισμού."
#~ msgid "CPU"
#~ msgstr "CPU"
#~ msgid "Memory"
#~ msgstr "Μνήμη"
#~ msgid "GNOME Shell Classic"
#~ msgstr "GNOME Shell Classic"
@@ -487,8 +418,8 @@ msgstr "Προσθήκη χώρου εργασίας"
#~ msgid ""
#~ "Configures how the windows are shown in the switcher. Valid possibilities "
#~ "are 'thumbnail-only' (shows a thumbnail of the window), 'app-icon-only' "
#~ "(shows only the application icon) or 'both'."
#~ "are 'thumbnail-only' (shows a thumbnail of the window), 'app-icon-"
#~ "only' (shows only the application icon) or 'both'."
#~ msgstr ""
#~ "Διαμορφώνει πως τα παράθυρα θα εμφανίζονται στν εναλλαγή των παραθύρων. "
#~ "Έγκυρες ρυθμίσεις είναι 'thumbnail-only' (εμφανίζει μια μικρογραφία του "

View File

@@ -9,17 +9,17 @@ msgstr ""
"Project-Id-Version: gnome-shell-extensions\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell-extensions/"
"issues\n"
"POT-Creation-Date: 2024-02-06 18:43+0000\n"
"PO-Revision-Date: 2024-02-17 00:11+0200\n"
"Last-Translator: Yaron Shahrabani <sh.yaron@gmail.com>\n"
"POT-Creation-Date: 2024-04-29 15:27+0000\n"
"PO-Revision-Date: 2024-06-28 10:34+0300\n"
"Last-Translator: Yosef Or Boczko <yoseforb@gmail.com>\n"
"Language-Team: Hebrew <yoseforb@gmail.com>\n"
"Language: he\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=n==1 ? 0 : (n>2||n==0) ? 1 : 2;\n"
"Plural-Forms: nplurals=3; plural=n==1 ? 0 : (n>2||n==0) ? 1 : 2\n"
"X-Poedit-SourceCharset: UTF-8\n"
"X-Generator: Poedit 3.4.1\n"
"X-Generator: Gtranslator 46.1\n"
#: data/gnome-classic.desktop.in:3
msgid "GNOME Classic"
@@ -42,7 +42,7 @@ msgstr "GNOME קלסי על גבי Xorg"
msgid "Favorites"
msgstr "מועדפים"
#: extensions/apps-menu/extension.js:397
#: extensions/apps-menu/extension.js:400
msgid "Apps"
msgstr "יישומים"
@@ -157,43 +157,43 @@ msgstr "סטטיסטיקת זיכרון"
msgid "Swap stats"
msgstr "סטטיסטיקת תחלופה"
#: extensions/system-monitor/extension.js:327
#: extensions/system-monitor/extension.js:336
msgid "Upload stats"
msgstr "סטטיסטיקת העלאה"
#: extensions/system-monitor/extension.js:341
#: extensions/system-monitor/extension.js:350
msgid "Download stats"
msgstr "סטטיסטיקת הורדה"
#: extensions/system-monitor/extension.js:355
#: extensions/system-monitor/extension.js:364
msgid "System stats"
msgstr "סטטיסטיקת מערכת"
#: extensions/system-monitor/extension.js:403
#: extensions/system-monitor/extension.js:412
msgid "Show"
msgstr "הצגה"
#: extensions/system-monitor/extension.js:405
#: extensions/system-monitor/extension.js:414
msgid "CPU"
msgstr "מעבד"
#: extensions/system-monitor/extension.js:407
#: extensions/system-monitor/extension.js:416
msgid "Memory"
msgstr "זיכרון"
#: extensions/system-monitor/extension.js:409
#: extensions/system-monitor/extension.js:418
msgid "Swap"
msgstr "תחלופה"
#: extensions/system-monitor/extension.js:411
#: extensions/system-monitor/extension.js:420
msgid "Upload"
msgstr "העלאה"
#: extensions/system-monitor/extension.js:413
#: extensions/system-monitor/extension.js:422
msgid "Download"
msgstr "הורדה"
#: extensions/system-monitor/extension.js:418
#: extensions/system-monitor/extension.js:427
msgid "Open System Monitor"
msgstr "פתיחת צג המערכת"
@@ -225,47 +225,47 @@ msgstr "Theme name"
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"
#: extensions/window-list/extension.js:71
#: extensions/window-list/extension.js:72
msgid "Close"
msgstr "סגירה"
#: extensions/window-list/extension.js:98
#: extensions/window-list/extension.js:99
msgid "Unminimize"
msgstr "ביטול המזעור"
#: extensions/window-list/extension.js:98
#: extensions/window-list/extension.js:99
msgid "Minimize"
msgstr "מזעור"
#: extensions/window-list/extension.js:105
#: extensions/window-list/extension.js:106
msgid "Unmaximize"
msgstr "ביטול ההגדלה"
#: extensions/window-list/extension.js:105
#: extensions/window-list/extension.js:106
msgid "Maximize"
msgstr "הגדלה"
#: extensions/window-list/extension.js:470
#: extensions/window-list/extension.js:471
msgid "Minimize all"
msgstr "מזעור הכל"
#: extensions/window-list/extension.js:476
#: extensions/window-list/extension.js:477
msgid "Unminimize all"
msgstr "ביטול מזעור הכל"
#: extensions/window-list/extension.js:482
#: extensions/window-list/extension.js:483
msgid "Maximize all"
msgstr "הגדלת הכל"
#: extensions/window-list/extension.js:490
#: extensions/window-list/extension.js:491
msgid "Unmaximize all"
msgstr "ביטול הגדלת הכל"
#: extensions/window-list/extension.js:498
#: extensions/window-list/extension.js:499
msgid "Close all"
msgstr "סגירת הכל"
#: extensions/window-list/extension.js:772
#: extensions/window-list/extension.js:778
msgid "Window List"
msgstr "רשימת חלונות"
@@ -302,6 +302,10 @@ msgstr ""
"Whether to show the window list on all connected monitors or only on the "
"primary one."
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:41
msgid "Show workspace previews in window list"
msgstr "הצגת תצוגה מקדימה של מרחבי העבודה ברשימת החלונות"
#: extensions/window-list/prefs.js:35
msgid "Window Grouping"
msgstr "קיבוץ חלונות"
@@ -322,24 +326,35 @@ msgstr "תמיד לקבץ חלונות"
msgid "Show on all monitors"
msgstr "הצגה בכל הצגים"
#: extensions/window-list/workspaceIndicator.js:253
#: extensions/workspace-indicator/extension.js:259
msgid "Workspace Indicator"
msgstr "מחוון מרחבי עבודה"
#: extensions/window-list/prefs.js:92
msgid "Show workspace previews"
msgstr "הצגת תצוגה מקדימה של מרחבי העבודה"
#: extensions/workspace-indicator/prefs.js:69
#: extensions/workspace-indicator/prefs.js:30
msgid "Show Previews In Top Bar"
msgstr "הצגת תצוגה מקדימה בלוח העליון"
#: extensions/workspace-indicator/prefs.js:88
#, javascript-format
msgid "Workspace %d"
msgstr "מרחב עבודה %d"
#: extensions/workspace-indicator/prefs.js:136
#: extensions/workspace-indicator/prefs.js:155
msgid "Workspace Names"
msgstr "שם מרחב העבודה"
#: extensions/workspace-indicator/prefs.js:262
#: extensions/workspace-indicator/prefs.js:281
msgid "Add Workspace"
msgstr "הוספת מרחב עבודה"
#: extensions/workspace-indicator/schemas/org.gnome.shell.extensions.workspace-indicator.gschema.xml:12
msgid "Show workspace previews in top bar"
msgstr "הצגת תצוגה מקדימה של מרחבי העבודה בלוח העליון"
#: extensions/workspace-indicator/workspaceIndicator.js:430
msgid "Workspace Indicator"
msgstr "מחוון מרחבי עבודה"
#~ msgid "Applications"
#~ msgstr "יישומים"

View File

@@ -10,8 +10,8 @@ msgstr ""
"Project-Id-Version: gnome-shell-extensions master\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell-extensions/"
"issues\n"
"POT-Creation-Date: 2024-04-29 14:28+0000\n"
"PO-Revision-Date: 2024-05-14 15:40+0530\n"
"POT-Creation-Date: 2024-05-12 13:45+0000\n"
"PO-Revision-Date: 2024-05-14 15:33+0530\n"
"Last-Translator: Scrambled777 <weblate.scrambled777@simplelogin.com>\n"
"Language-Team: Hindi <indlinux-hindi@lists.sourceforge.net>\n"
"Language: hi\n"
@@ -42,7 +42,7 @@ msgstr "Xorg पर GNOME क्लासिक"
msgid "Favorites"
msgstr "पसंदीदा"
#: extensions/apps-menu/extension.js:397
#: extensions/apps-menu/extension.js:400
msgid "Apps"
msgstr "ऐप्स"
@@ -264,7 +264,7 @@ msgstr "अधिकतम खत्म करें"
msgid "Close all"
msgstr "सभी बंद करें"
#: extensions/window-list/extension.js:773
#: extensions/window-list/extension.js:778
msgid "Window List"
msgstr "विंडो सूची"
@@ -300,6 +300,10 @@ msgid ""
msgstr ""
"क्या विंडो सूची को सभी जुड़े हुए मॉनिटरों पर दिखाना है या केवल प्राथमिक मॉनिटर पर।"
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:41
msgid "Show workspace previews in window list"
msgstr "विंडो सूची में कार्यस्थान पूर्वावलोकन दिखाएं"
#: extensions/window-list/prefs.js:35
msgid "Window Grouping"
msgstr "विंडो समूहबद्धता"
@@ -320,20 +324,31 @@ msgstr "हमेशा विंडोज समूहित करें"
msgid "Show on all monitors"
msgstr "सभी मॉनिटरों पर दिखाएं"
#: extensions/window-list/workspaceIndicator.js:255
#: extensions/workspace-indicator/extension.js:261
msgid "Workspace Indicator"
msgstr "कार्यस्थान सूचक"
#: extensions/window-list/prefs.js:92
msgid "Show workspace previews"
msgstr "कार्यस्थान पूर्वावलोकन दिखाएं"
#: extensions/workspace-indicator/prefs.js:69
#: extensions/workspace-indicator/prefs.js:30
msgid "Show Previews In Top Bar"
msgstr "शीर्षपट्टी में पूर्वावलोकन दिखाएं"
#: extensions/workspace-indicator/prefs.js:88
#, javascript-format
msgid "Workspace %d"
msgstr "कार्यस्थान %d"
#: extensions/workspace-indicator/prefs.js:136
#: extensions/workspace-indicator/prefs.js:155
msgid "Workspace Names"
msgstr "कार्यस्थान नाम"
#: extensions/workspace-indicator/prefs.js:262
#: extensions/workspace-indicator/prefs.js:281
msgid "Add Workspace"
msgstr "कार्यस्थान जोड़ें"
#: extensions/workspace-indicator/schemas/org.gnome.shell.extensions.workspace-indicator.gschema.xml:12
msgid "Show workspace previews in top bar"
msgstr "शीर्षपट्टी में कार्यस्थान पूर्वावलोकन दिखाएं"
#: extensions/workspace-indicator/workspaceIndicator.js:430
msgid "Workspace Indicator"
msgstr "कार्यस्थान सूचक"

View File

@@ -11,8 +11,8 @@ msgstr ""
"Project-Id-Version: gnome-shell-extensions master\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell-extensions/is"
"sues\n"
"POT-Creation-Date: 2024-02-06 18:43+0000\n"
"PO-Revision-Date: 2024-03-04 12:30+0100\n"
"POT-Creation-Date: 2024-04-29 15:27+0000\n"
"PO-Revision-Date: 2024-06-28 16:24+0200\n"
"Last-Translator: Balázs Úr <ur.balazs at fsf dot hu>\n"
"Language-Team: Hungarian <openscope at fsf dot hu>\n"
"Language: hu\n"
@@ -43,7 +43,7 @@ msgstr "Klasszikus GNOME Xorgon"
msgid "Favorites"
msgstr "Kedvencek"
#: extensions/apps-menu/extension.js:397
#: extensions/apps-menu/extension.js:400
msgid "Apps"
msgstr "Alkalmazások"
@@ -159,43 +159,43 @@ msgstr "Memóriastatisztikák"
msgid "Swap stats"
msgstr "Cserehely-statisztikák"
#: extensions/system-monitor/extension.js:327
#: extensions/system-monitor/extension.js:336
msgid "Upload stats"
msgstr "Feltöltési statisztikák"
#: extensions/system-monitor/extension.js:341
#: extensions/system-monitor/extension.js:350
msgid "Download stats"
msgstr "Letöltési statisztikák"
#: extensions/system-monitor/extension.js:355
#: extensions/system-monitor/extension.js:364
msgid "System stats"
msgstr "Rendszerstatisztikák"
#: extensions/system-monitor/extension.js:403
#: extensions/system-monitor/extension.js:412
msgid "Show"
msgstr "Megjelenítés"
#: extensions/system-monitor/extension.js:405
#: extensions/system-monitor/extension.js:414
msgid "CPU"
msgstr "Processzor"
#: extensions/system-monitor/extension.js:407
#: extensions/system-monitor/extension.js:416
msgid "Memory"
msgstr "Memória"
#: extensions/system-monitor/extension.js:409
#: extensions/system-monitor/extension.js:418
msgid "Swap"
msgstr "Cserehely"
#: extensions/system-monitor/extension.js:411
#: extensions/system-monitor/extension.js:420
msgid "Upload"
msgstr "Feltöltés"
#: extensions/system-monitor/extension.js:413
#: extensions/system-monitor/extension.js:422
msgid "Download"
msgstr "Letöltés"
#: extensions/system-monitor/extension.js:418
#: extensions/system-monitor/extension.js:427
msgid "Open System Monitor"
msgstr "Rendszerfigyelő megnyitása"
@@ -227,47 +227,47 @@ msgstr "Témanév"
msgid "The name of the theme, to be loaded from ~/.themes/name/gnome-shell"
msgstr "A ~/.themes/név/gnome-shell alól betöltendő téma neve"
#: extensions/window-list/extension.js:71
#: extensions/window-list/extension.js:72
msgid "Close"
msgstr "Bezárás"
#: extensions/window-list/extension.js:98
#: extensions/window-list/extension.js:99
msgid "Unminimize"
msgstr "Minimalizálás megszüntetése"
#: extensions/window-list/extension.js:98
#: extensions/window-list/extension.js:99
msgid "Minimize"
msgstr "Minimalizálás"
#: extensions/window-list/extension.js:105
#: extensions/window-list/extension.js:106
msgid "Unmaximize"
msgstr "Maximalizálás megszüntetése"
#: extensions/window-list/extension.js:105
#: extensions/window-list/extension.js:106
msgid "Maximize"
msgstr "Maximalizálás"
#: extensions/window-list/extension.js:470
#: extensions/window-list/extension.js:471
msgid "Minimize all"
msgstr "Minden minimalizálása"
#: extensions/window-list/extension.js:476
#: extensions/window-list/extension.js:477
msgid "Unminimize all"
msgstr "Minden minimalizálásának megszüntetése"
#: extensions/window-list/extension.js:482
#: extensions/window-list/extension.js:483
msgid "Maximize all"
msgstr "Minden maximalizálása"
#: extensions/window-list/extension.js:490
#: extensions/window-list/extension.js:491
msgid "Unmaximize all"
msgstr "Minden maximalizálásának megszüntetése"
#: extensions/window-list/extension.js:498
#: extensions/window-list/extension.js:499
msgid "Close all"
msgstr "Minden bezárása"
#: extensions/window-list/extension.js:772
#: extensions/window-list/extension.js:778
msgid "Window List"
msgstr "Ablaklista"
@@ -307,6 +307,10 @@ msgstr ""
"Megjelenjen-e az ablaklista minden csatlakoztatott monitoron vagy csak az "
"elsődlegesen."
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:41
msgid "Show workspace previews in window list"
msgstr "Munkaterület-előnézetek megjelenítése az ablaklistában"
#: extensions/window-list/prefs.js:35
msgid "Window Grouping"
msgstr "Ablakcsoportosítás"
@@ -327,20 +331,32 @@ msgstr "Mindig csoportosítsa az ablakokat"
msgid "Show on all monitors"
msgstr "Megjelenítés minden monitoron"
#: extensions/window-list/workspaceIndicator.js:253
#: extensions/workspace-indicator/extension.js:259
msgid "Workspace Indicator"
msgstr "Munkaterület-indikátor"
#: extensions/window-list/prefs.js:92
msgid "Show workspace previews"
msgstr "Munkaterület-előnézetek megjelenítése"
#: extensions/workspace-indicator/prefs.js:69
#: extensions/workspace-indicator/prefs.js:30
msgid "Show Previews In Top Bar"
msgstr "Előnézetek megjelenítése a felső sávon"
#: extensions/workspace-indicator/prefs.js:88
#, javascript-format
msgid "Workspace %d"
msgstr "%d. munkaterület"
#: extensions/workspace-indicator/prefs.js:136
#: extensions/workspace-indicator/prefs.js:155
msgid "Workspace Names"
msgstr "Munkaterületnevek"
#: extensions/workspace-indicator/prefs.js:262
#: extensions/workspace-indicator/prefs.js:281
msgid "Add Workspace"
msgstr "Munkaterület hozzáadása"
#: extensions/workspace-indicator/schemas/org.gnome.shell.extensions.workspace-indicator.gschema.xml:12
msgid "Show workspace previews in top bar"
msgstr "Munkaterület-előnézetek megjelenítése a felső sávon"
#: extensions/workspace-indicator/workspaceIndicator.js:430
msgid "Workspace Indicator"
msgstr "Munkaterület-indikátor"

181
po/ro.po
View File

@@ -8,8 +8,8 @@ msgstr ""
"Project-Id-Version: gnome-shell-extensions master\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell-extensions/"
"issues\n"
"POT-Creation-Date: 2024-04-29 14:28+0000\n"
"PO-Revision-Date: 2024-08-04 13:22+0300\n"
"POT-Creation-Date: 2023-02-18 15:10+0000\n"
"PO-Revision-Date: 2023-07-29 13:49+0300\n"
"Last-Translator: Florentina Mușat <florentina [dot] musat [dot] 28 [at] "
"gmail [dot] com>\n"
"Language-Team: Gnome Romanian Translation Team\n"
@@ -19,7 +19,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < "
"20)) ? 1 : 2);;\n"
"X-Generator: Poedit 3.4.4\n"
"X-Generator: Poedit 3.3.2\n"
"X-Project-Style: gnome\n"
#: data/gnome-classic.desktop.in:3
@@ -39,19 +39,19 @@ msgstr "GNOME Clasic pe Wayland"
msgid "GNOME Classic on Xorg"
msgstr "GNOME Clasic pe Xorg"
#: extensions/apps-menu/extension.js:126
#: extensions/apps-menu/extension.js:118
msgid "Favorites"
msgstr "Favorite"
#: extensions/apps-menu/extension.js:397
msgid "Apps"
#: extensions/apps-menu/extension.js:380
msgid "Applications"
msgstr "Aplicații"
#: extensions/auto-move-windows/org.gnome.shell.extensions.auto-move-windows.gschema.xml:12
#: extensions/auto-move-windows/org.gnome.shell.extensions.auto-move-windows.gschema.xml:6
msgid "Application and workspace list"
msgstr "Lista de aplicații și spații de lucru"
#: extensions/auto-move-windows/org.gnome.shell.extensions.auto-move-windows.gschema.xml:13
#: 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"
@@ -60,34 +60,34 @@ msgstr ""
"fișierului de birou) urmat de simbolul „două puncte” și un număr al "
"spațiului de lucru"
#: extensions/auto-move-windows/prefs.js:159
#: extensions/auto-move-windows/prefs.js:152
msgid "Workspace Rules"
msgstr "Regulile spațiilor de lucru"
#: extensions/auto-move-windows/prefs.js:314
#: extensions/auto-move-windows/prefs.js:306
msgid "Add Rule"
msgstr "Adaugă o regulă"
#. TRANSLATORS: %s is the filesystem name
#: extensions/drive-menu/extension.js:123
#: extensions/places-menu/placeDisplay.js:218
#: extensions/drive-menu/extension.js:126
#: extensions/places-menu/placeDisplay.js:212
#, javascript-format
msgid "Ejecting drive “%s” failed:"
msgstr "Scoaterea unității „%s” a eșuat:"
#: extensions/drive-menu/extension.js:142
#: extensions/drive-menu/extension.js:145
msgid "Removable devices"
msgstr "Dispozitive detașabile"
#: extensions/drive-menu/extension.js:164
#: extensions/drive-menu/extension.js:167
msgid "Open Files"
msgstr "Deschide fișiere"
#: 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:5
msgid "Use more screen for windows"
msgstr "Folosește mai mult din ecran pentru ferestre"
#: 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: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. "
@@ -98,11 +98,11 @@ msgstr ""
"cadrul înconjurător. Această configurare este valabilă numai pentru "
"strategia de plasare naturală."
#: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:17
#: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:11
msgid "Place window captions on top"
msgstr "Plasează titlul ferestrelor deasupra"
#: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:18
#: 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 "
@@ -113,119 +113,47 @@ msgstr ""
"Schimbând această configurare necesită repornire shell-ului pentru a avea "
"efect."
#: extensions/places-menu/extension.js:91
#: extensions/places-menu/extension.js:94
#: extensions/places-menu/extension.js:97
msgid "Places"
msgstr "Locații"
#: extensions/places-menu/placeDisplay.js:60
#: extensions/places-menu/placeDisplay.js:52
#, javascript-format
msgid "Failed to launch “%s”"
msgstr "Eșec la lansarea „%s”"
#: extensions/places-menu/placeDisplay.js:75
#: extensions/places-menu/placeDisplay.js:67
#, javascript-format
msgid "Failed to mount volume for “%s”"
msgstr "Eșec la montarea volumului pentru „%s”"
#: extensions/places-menu/placeDisplay.js:135
#: extensions/places-menu/placeDisplay.js:158
#: extensions/places-menu/placeDisplay.js:127
#: extensions/places-menu/placeDisplay.js:150
msgid "Computer"
msgstr "Calculator"
#: extensions/places-menu/placeDisplay.js:333
#: extensions/places-menu/placeDisplay.js:340
msgid "Home"
msgstr "Acasă"
#: extensions/places-menu/placeDisplay.js:378
#: extensions/places-menu/placeDisplay.js:385
msgid "Browse Network"
msgstr "Navighează rețeaua"
#: extensions/screenshot-window-sizer/org.gnome.shell.extensions.screenshot-window-sizer.gschema.xml:14
#: extensions/screenshot-window-sizer/org.gnome.shell.extensions.screenshot-window-sizer.gschema.xml:7
msgid "Cycle Screenshot Sizes"
msgstr "Ciclează dimensiunile capturilor de ecran"
#: extensions/screenshot-window-sizer/org.gnome.shell.extensions.screenshot-window-sizer.gschema.xml:18
#: extensions/screenshot-window-sizer/org.gnome.shell.extensions.screenshot-window-sizer.gschema.xml:11
msgid "Cycle Screenshot Sizes Backward"
msgstr "Ciclează dimensiunile capturilor de ecran în sens invers"
#: extensions/system-monitor/extension.js:135
msgid "CPU stats"
msgstr "Statistici CPU"
#: extensions/system-monitor/extension.js:159
msgid "Memory stats"
msgstr "Statistici memorie"
#: extensions/system-monitor/extension.js:177
msgid "Swap stats"
msgstr "Statistici swap"
#: extensions/system-monitor/extension.js:336
msgid "Upload stats"
msgstr "Statistici încărcări"
#: extensions/system-monitor/extension.js:350
msgid "Download stats"
msgstr "Statistici descărcări"
#: extensions/system-monitor/extension.js:364
msgid "System stats"
msgstr "Statistici sistem"
#: extensions/system-monitor/extension.js:412
msgid "Show"
msgstr "Arată"
#: extensions/system-monitor/extension.js:414
msgid "CPU"
msgstr "CPU"
#: extensions/system-monitor/extension.js:416
msgid "Memory"
msgstr "Memorie"
#: extensions/system-monitor/extension.js:418
msgid "Swap"
msgstr "Swap"
#: extensions/system-monitor/extension.js:420
msgid "Upload"
msgstr "Încărcare"
#: extensions/system-monitor/extension.js:422
msgid "Download"
msgstr "Descărcare"
#: extensions/system-monitor/extension.js:427
msgid "Open System Monitor"
msgstr "Deschide monitorul de sistem"
#: extensions/system-monitor/schemas/org.gnome.shell.extensions.system-monitor.gschema.xml:12
msgid "Show CPU usage"
msgstr "Arată utilizarea CPU"
#: extensions/system-monitor/schemas/org.gnome.shell.extensions.system-monitor.gschema.xml:16
msgid "Show memory usage"
msgstr "Arată utilizarea memoriei"
#: extensions/system-monitor/schemas/org.gnome.shell.extensions.system-monitor.gschema.xml:20
msgid "Show swap usage"
msgstr "Arată utilizarea swap"
#: extensions/system-monitor/schemas/org.gnome.shell.extensions.system-monitor.gschema.xml:24
msgid "Show upload"
msgstr "Arată încărcările"
#: extensions/system-monitor/schemas/org.gnome.shell.extensions.system-monitor.gschema.xml:28
msgid "Show download"
msgstr "Arată descărcările"
#: extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml:11
#: extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml:5
msgid "Theme name"
msgstr "Numele temei"
#: extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml:12
#: 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 "Numele temei, ce va fi încărcată din ~/.themes/name/gnome-shell"
@@ -233,51 +161,51 @@ msgstr "Numele temei, ce va fi încărcată din ~/.themes/name/gnome-shell"
msgid "Close"
msgstr "Închide"
#: extensions/window-list/extension.js:99
#: extensions/window-list/extension.js:92
msgid "Unminimize"
msgstr "Deminimizează"
#: extensions/window-list/extension.js:99
#: extensions/window-list/extension.js:92
msgid "Minimize"
msgstr "Minimizează"
#: extensions/window-list/extension.js:106
#: extensions/window-list/extension.js:99
msgid "Unmaximize"
msgstr "Demaximizează"
#: extensions/window-list/extension.js:106
#: extensions/window-list/extension.js:99
msgid "Maximize"
msgstr "Maximizează"
#: extensions/window-list/extension.js:471
#: extensions/window-list/extension.js:483
msgid "Minimize all"
msgstr "Minimizează tot"
#: extensions/window-list/extension.js:477
#: extensions/window-list/extension.js:489
msgid "Unminimize all"
msgstr "Deminimizează tot"
#: extensions/window-list/extension.js:483
#: extensions/window-list/extension.js:495
msgid "Maximize all"
msgstr "Maximizează tot"
#: extensions/window-list/extension.js:491
#: extensions/window-list/extension.js:503
msgid "Unmaximize all"
msgstr "Demaximizează tot"
#: extensions/window-list/extension.js:499
#: extensions/window-list/extension.js:511
msgid "Close all"
msgstr "Închide tot"
#: extensions/window-list/extension.js:773
#: extensions/window-list/extension.js:795
msgid "Window List"
msgstr "Lista ferestrelor"
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:18
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:12
msgid "When to group windows"
msgstr "Când să fie grupate ferestrele"
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:19
#: 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”."
@@ -285,22 +213,22 @@ msgstr ""
"Decide când să fie grupate ferestrele aceleiași aplicații în lista "
"ferestrei. Valorile posibile sunt „niciodată”, „auto” și „întotdeauna”."
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:26
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:20
#: extensions/window-list/prefs.js:79
msgid "Show windows from all workspaces"
msgstr "Arată ferestrele din toate spațiile de lucru"
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:27
#: 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 ""
"Dacă să se arate ferestrele din toate spațiile de lucru sau doar din cel "
"curent."
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:33
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:27
msgid "Show the window list on all monitors"
msgstr "Afișează lista ferestrelor pe toate monitoarele"
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:34
#: 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."
@@ -328,27 +256,24 @@ msgstr "Grupează ferestrele întotdeauna"
msgid "Show on all monitors"
msgstr "Arată pe toate monitoarele"
#: extensions/window-list/workspaceIndicator.js:255
#: extensions/workspace-indicator/extension.js:261
#: extensions/window-list/workspaceIndicator.js:261
#: extensions/workspace-indicator/extension.js:266
msgid "Workspace Indicator"
msgstr "Indicator al spațiului de lucru"
#: extensions/workspace-indicator/prefs.js:69
#: extensions/workspace-indicator/prefs.js:62
#, javascript-format
msgid "Workspace %d"
msgstr "Spațiu de lucru %d"
#: extensions/workspace-indicator/prefs.js:136
#: extensions/workspace-indicator/prefs.js:129
msgid "Workspace Names"
msgstr "Numele spațiilor de lucru"
#: extensions/workspace-indicator/prefs.js:262
#: extensions/workspace-indicator/prefs.js:255
msgid "Add Workspace"
msgstr "Adaugă un spațiu de lucru"
#~ msgid "Applications"
#~ msgstr "Aplicații"
#~ msgid "Application"
#~ msgstr "Aplicație"
@@ -443,3 +368,9 @@ msgstr "Adaugă un spațiu de lucru"
#~ msgid "Window management and application launching"
#~ msgstr "Gestionarea ferestrei și lansarea aplicației"
#~ msgid "CPU"
#~ msgstr "CPU"
#~ msgid "Memory"
#~ msgstr "Memorie"

View File

@@ -9,8 +9,8 @@ msgstr ""
"Project-Id-Version: gnome-shell-extensions\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell-extensions/"
"issues\n"
"POT-Creation-Date: 2024-02-06 18:43+0000\n"
"PO-Revision-Date: 2024-02-11 18:21+0300\n"
"POT-Creation-Date: 2024-04-29 15:27+0000\n"
"PO-Revision-Date: 2024-05-25 14:46+0300\n"
"Last-Translator: Artur So <arturios2005@mail.ru>\n"
"Language-Team: Русский <gnome-cyr@gnome.org>\n"
"Language: ru\n"
@@ -19,7 +19,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
"X-Generator: Poedit 3.4.2\n"
"X-Generator: Poedit 3.4.4\n"
#: data/gnome-classic.desktop.in:3
msgid "GNOME Classic"
@@ -42,7 +42,7 @@ msgstr "Классический GNOME на Xorg"
msgid "Favorites"
msgstr "Избранное"
#: extensions/apps-menu/extension.js:397
#: extensions/apps-menu/extension.js:400
msgid "Apps"
msgstr "Приложения"
@@ -158,43 +158,43 @@ msgstr "Статистика памяти"
msgid "Swap stats"
msgstr "Статистика подкачки"
#: extensions/system-monitor/extension.js:327
#: extensions/system-monitor/extension.js:336
msgid "Upload stats"
msgstr "Статистика отдачи"
#: extensions/system-monitor/extension.js:341
#: extensions/system-monitor/extension.js:350
msgid "Download stats"
msgstr "Статистика загрузки"
#: extensions/system-monitor/extension.js:355
#: extensions/system-monitor/extension.js:364
msgid "System stats"
msgstr "Статистика системы"
#: extensions/system-monitor/extension.js:403
#: extensions/system-monitor/extension.js:412
msgid "Show"
msgstr "Показать"
#: extensions/system-monitor/extension.js:405
#: extensions/system-monitor/extension.js:414
msgid "CPU"
msgstr "ЦП"
#: extensions/system-monitor/extension.js:407
#: extensions/system-monitor/extension.js:416
msgid "Memory"
msgstr "Память"
#: extensions/system-monitor/extension.js:409
#: extensions/system-monitor/extension.js:418
msgid "Swap"
msgstr "Подкачка"
#: extensions/system-monitor/extension.js:411
#: extensions/system-monitor/extension.js:420
msgid "Upload"
msgstr "Отдача"
#: extensions/system-monitor/extension.js:413
#: extensions/system-monitor/extension.js:422
msgid "Download"
msgstr "Загрузка"
#: extensions/system-monitor/extension.js:418
#: extensions/system-monitor/extension.js:427
msgid "Open System Monitor"
msgstr "Открыть системный монитор"
@@ -226,49 +226,49 @@ msgstr "Название темы"
msgid "The name of the theme, to be loaded from ~/.themes/name/gnome-shell"
msgstr "Название темы, загружаемой из ~/.themes/name/gnome-shell"
#: extensions/window-list/extension.js:71
#: extensions/window-list/extension.js:72
msgid "Close"
msgstr "Закрыть"
# ну или "восстановить", правда тогда появляется неоднозначный повтор (unmaximize)
#: extensions/window-list/extension.js:98
#: extensions/window-list/extension.js:99
msgid "Unminimize"
msgstr "Вернуть"
#: extensions/window-list/extension.js:98
#: extensions/window-list/extension.js:99
msgid "Minimize"
msgstr "Свернуть"
#: extensions/window-list/extension.js:105
#: extensions/window-list/extension.js:106
msgid "Unmaximize"
msgstr "Восстановить"
#: extensions/window-list/extension.js:105
#: extensions/window-list/extension.js:106
msgid "Maximize"
msgstr "Развернуть"
#: extensions/window-list/extension.js:470
#: extensions/window-list/extension.js:471
msgid "Minimize all"
msgstr "Свернуть все"
# ну или "восстановить", правда тогда появляется неоднозначный повтор (unmaximize)
#: extensions/window-list/extension.js:476
#: extensions/window-list/extension.js:477
msgid "Unminimize all"
msgstr "Вернуть все"
#: extensions/window-list/extension.js:482
#: extensions/window-list/extension.js:483
msgid "Maximize all"
msgstr "Развернуть все"
#: extensions/window-list/extension.js:490
#: extensions/window-list/extension.js:491
msgid "Unmaximize all"
msgstr "Восстановить все"
#: extensions/window-list/extension.js:498
#: extensions/window-list/extension.js:499
msgid "Close all"
msgstr "Закрыть все"
#: extensions/window-list/extension.js:772
#: extensions/window-list/extension.js:778
msgid "Window List"
msgstr "Список окон"
@@ -288,7 +288,7 @@ msgstr ""
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:26
#: extensions/window-list/prefs.js:79
msgid "Show windows from all workspaces"
msgstr "Отображать окна со всех рабочих столов"
msgstr "Показывать окна со всех рабочих столов"
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:27
msgid "Whether to show windows from all workspaces or only the current one."
@@ -307,6 +307,10 @@ msgstr ""
"Показывать ли список окон на всех подключенных мониторах или только на "
"основном."
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:41
msgid "Show workspace previews in window list"
msgstr "Показывать предпросмотры рабочих столов в списке окон"
#: extensions/window-list/prefs.js:35
msgid "Window Grouping"
msgstr "Группировка окон"
@@ -327,23 +331,34 @@ msgstr "Всегда группировать окна"
msgid "Show on all monitors"
msgstr "Показывать на всех мониторах"
#: extensions/window-list/workspaceIndicator.js:253
#: extensions/workspace-indicator/extension.js:259
msgid "Workspace Indicator"
msgstr "Индикатор рабочих столов"
#: extensions/window-list/prefs.js:92
msgid "Show workspace previews"
msgstr "Показывать предпросмотры рабочих столов"
#: extensions/workspace-indicator/prefs.js:69
#: extensions/workspace-indicator/prefs.js:30
msgid "Show Previews In Top Bar"
msgstr "Показывать предпросмотры в верхней панели"
#: extensions/workspace-indicator/prefs.js:88
#, javascript-format
msgid "Workspace %d"
msgstr "Рабочий стол %d"
#: extensions/workspace-indicator/prefs.js:136
#: extensions/workspace-indicator/prefs.js:155
msgid "Workspace Names"
msgstr "Названия рабочих столов"
#: extensions/workspace-indicator/prefs.js:262
#: extensions/workspace-indicator/prefs.js:281
msgid "Add Workspace"
msgstr "Добавить рабочий стол"
#: extensions/workspace-indicator/schemas/org.gnome.shell.extensions.workspace-indicator.gschema.xml:12
msgid "Show workspace previews in top bar"
msgstr "Показывать предпросмотры рабочих столов в верхней панели"
#: extensions/workspace-indicator/workspaceIndicator.js:430
msgid "Workspace Indicator"
msgstr "Индикатор рабочих столов"
#~ msgid "Applications"
#~ msgstr "Приложения"

3740
po/sk.po

File diff suppressed because it is too large Load Diff

350
po/sl.po
View File

@@ -9,18 +9,18 @@ msgstr ""
"Project-Id-Version: gnome-shell-extensions\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell-extensions/"
"issues\n"
"POT-Creation-Date: 2024-02-15 05:28+0000\n"
"PO-Revision-Date: 2024-02-19 11:07+0100\n"
"Last-Translator: Matej Urbančič <mateju@src.gnome.org>\n"
"POT-Creation-Date: 2024-04-29 15:27+0000\n"
"PO-Revision-Date: 2024-05-02 00:11+0200\n"
"Last-Translator: Martin Srebotnjak <miles@filmsi.net>\n"
"Language-Team: Slovenian GNOME Translation Team <gnome-si@googlegroups.com>\n"
"Language: sl_SI\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=4; plural=(n%100==1 ? 1 : n%100==2 ? 2 : n%100==3 || "
"n%100==4 ? 3 : 0);\n"
"Plural-Forms: nplurals=4; plural=(n%100==1 ? 1 : n%100==2 ? 2 : n%100==3 || n"
"%100==4 ? 3 : 0);\n"
"X-Poedit-SourceCharset: utf-8\n"
"X-Generator: Poedit 3.4.2\n"
"X-Generator: Poedit 2.2.1\n"
#: data/gnome-classic.desktop.in:3
msgid "GNOME Classic"
@@ -43,7 +43,7 @@ msgstr "Klasično namizje GNOME na sistemu Xorg"
msgid "Favorites"
msgstr "Priljubljeno"
#: extensions/apps-menu/extension.js:397
#: extensions/apps-menu/extension.js:400
msgid "Apps"
msgstr "Programi"
@@ -158,43 +158,43 @@ msgstr "Delovanje pomnilnika"
msgid "Swap stats"
msgstr "Podatki izmenjevalnega prostora"
#: extensions/system-monitor/extension.js:327
#: extensions/system-monitor/extension.js:336
msgid "Upload stats"
msgstr "Podatki pošiljanja"
#: extensions/system-monitor/extension.js:341
#: extensions/system-monitor/extension.js:350
msgid "Download stats"
msgstr "Podatki prejema"
#: extensions/system-monitor/extension.js:355
#: extensions/system-monitor/extension.js:364
msgid "System stats"
msgstr "Podrobnosti sistema"
#: extensions/system-monitor/extension.js:403
#: extensions/system-monitor/extension.js:412
msgid "Show"
msgstr "Pokaži"
#: extensions/system-monitor/extension.js:405
#: extensions/system-monitor/extension.js:414
msgid "CPU"
msgstr "CPE"
#: extensions/system-monitor/extension.js:407
#: extensions/system-monitor/extension.js:416
msgid "Memory"
msgstr "Pomnilnik"
#: extensions/system-monitor/extension.js:409
#: extensions/system-monitor/extension.js:418
msgid "Swap"
msgstr "Izmenjevalni razdelek"
#: extensions/system-monitor/extension.js:411
#: extensions/system-monitor/extension.js:420
msgid "Upload"
msgstr "Poslano"
#: extensions/system-monitor/extension.js:413
#: extensions/system-monitor/extension.js:422
msgid "Download"
msgstr "Prejeto"
#: extensions/system-monitor/extension.js:418
#: extensions/system-monitor/extension.js:427
msgid "Open System Monitor"
msgstr "_Odpri nadzornika sistema"
@@ -226,47 +226,47 @@ msgstr "Ime teme"
msgid "The name of the theme, to be loaded from ~/.themes/name/gnome-shell"
msgstr "Ime teme, ki bo naložena iz ~/.themes/name/gnome-shell"
#: extensions/window-list/extension.js:71
#: extensions/window-list/extension.js:72
msgid "Close"
msgstr "Zapri"
#: extensions/window-list/extension.js:98
#: extensions/window-list/extension.js:99
msgid "Unminimize"
msgstr "Povečaj"
#: extensions/window-list/extension.js:98
#: extensions/window-list/extension.js:99
msgid "Minimize"
msgstr "Skrči"
#: extensions/window-list/extension.js:105
#: extensions/window-list/extension.js:106
msgid "Unmaximize"
msgstr "Pomanjšaj"
#: extensions/window-list/extension.js:105
#: extensions/window-list/extension.js:106
msgid "Maximize"
msgstr "Razpni"
#: extensions/window-list/extension.js:470
#: extensions/window-list/extension.js:471
msgid "Minimize all"
msgstr "Skrči vse"
#: extensions/window-list/extension.js:476
#: extensions/window-list/extension.js:477
msgid "Unminimize all"
msgstr "Pomanjšaj vse"
#: extensions/window-list/extension.js:482
#: extensions/window-list/extension.js:483
msgid "Maximize all"
msgstr "Razpni vse"
#: extensions/window-list/extension.js:490
#: extensions/window-list/extension.js:491
msgid "Unmaximize all"
msgstr "Pomanjšaj vse"
#: extensions/window-list/extension.js:498
#: extensions/window-list/extension.js:499
msgid "Close all"
msgstr "Zapri vse"
#: extensions/window-list/extension.js:772
#: extensions/window-list/extension.js:778
msgid "Window List"
msgstr "Seznam oken"
@@ -303,6 +303,10 @@ msgid ""
msgstr ""
"Ali naj bo prikazan seznam oken na vseh povezanih zasloni ali le na osnovnem."
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:41
msgid "Show workspace previews in window list"
msgstr "Pokaži predoglede delovne površine na seznamu oken"
#: extensions/window-list/prefs.js:35
msgid "Window Grouping"
msgstr "Združevanje oken"
@@ -323,289 +327,31 @@ msgstr "Okna vedno združuj"
msgid "Show on all monitors"
msgstr "Pokaži na vseh zaslonih"
#: extensions/window-list/workspaceIndicator.js:253
#: extensions/workspace-indicator/extension.js:259
msgid "Workspace Indicator"
msgstr "Kazalnik delovnih površin"
#: extensions/window-list/prefs.js:92
msgid "Show workspace previews"
msgstr "Pokaži predoglede delovne površine"
#: extensions/workspace-indicator/prefs.js:69
#: extensions/workspace-indicator/prefs.js:30
msgid "Show Previews In Top Bar"
msgstr "Pokaži predoglede v zgornji vrstici"
#: extensions/workspace-indicator/prefs.js:88
#, javascript-format
msgid "Workspace %d"
msgstr "Delovna površina %d"
#: extensions/workspace-indicator/prefs.js:136
#: extensions/workspace-indicator/prefs.js:155
msgid "Workspace Names"
msgstr "Imena delovnih površin"
#: extensions/workspace-indicator/prefs.js:262
#: extensions/workspace-indicator/prefs.js:281
msgid "Add Workspace"
msgstr "Dodaj delovno površino"
#~ msgid "Applications"
#~ msgstr "Programi"
#: extensions/workspace-indicator/schemas/org.gnome.shell.extensions.workspace-indicator.gschema.xml:12
msgid "Show workspace previews in top bar"
msgstr "Pokaži predoglede delovne površine v zgornji vrstici"
#~ msgid "Username or email"
#~ msgstr "Uporabniško ime ali elektronski naslov"
#~ msgid "Username"
#~ msgstr "Uporabniško ime"
#~ msgid ""
#~ "Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only."
#~ msgstr ""
#~ "Zahtevan je vpis do 30 znakov, uporabiti pa je mogoče le črke, številke "
#~ "in znake @/./+/-/_."
#~ msgid ""
#~ "This value may contain only letters, numbers and @/./+/-/_ characters."
#~ msgstr "Vrednost lahko vsebuje le črke, številke, vezaj in znake @/./+/-/_."
#~ msgid "Email"
#~ msgstr "Elektronski naslov"
#~ msgid "You should not use email as username"
#~ msgstr "Za uporabniško ime ni priporočljivo uporabiti elektronskega naslova"
#~ msgid "Forgot your password?"
#~ msgstr "Ali ste pozabili geslo?"
#~ msgid "Log in"
#~ msgstr "Prijava"
#~ msgid "Don't have an account?"
#~ msgstr "Še nimate računa za dostop?"
#~ msgid "Register"
#~ msgstr "Vpisnik"
#~ msgid "User Login"
#~ msgstr "Prijava uporabnika"
#~ msgid "Reset your password"
#~ msgstr "Ponastavi geslo"
#~ msgid ""
#~ "The token for the password reset is incorrect. Please check your link and "
#~ "try again."
#~ msgstr ""
#~ "Žeton za ponastavitev gesla ni pravi. Preverite povezavo in poskusite "
#~ "znova."
#~ msgid "Password reset"
#~ msgstr "Ponovna nastavitev gesla"
#~ msgid ""
#~ "Forgot your password? Enter your e-mail address below, and well e-mail "
#~ "instructions for setting a new one."
#~ msgstr ""
#~ "Ali ste pozabili geslo? Vpišite elektronski naslov in poslali vam bomo "
#~ "navodila za nastavitev novega."
#~ msgid "Installed extensions"
#~ msgstr "Nameščene razširitve"
#~ msgid "About"
#~ msgstr "O programu"
#~ msgid "Extensions"
#~ msgstr "Razširitve"
#, python-format
#~ msgid ""
#~ "Unfortunately, to help prevent spam, we require that you <a "
#~ "href=\"%(login_url)s\">log in to GNOME Shell Extensions</a> in order to "
#~ "post a comment or report an error. You understand, right?"
#~ msgstr ""
#~ "Za preprečevanje neželenih objav se je treba najprej <a "
#~ "href=\"%(login_url)s\">prijaviti na spletno stran</a>. Prijava omogoča "
#~ "poročanje o napakah in objavljanje ocen in mnenj."
#~ msgid "User Reviews"
#~ msgstr "Mnenja uporabnikov"
#~ msgid "Loading reviews…"
#~ msgstr "Poteka nalaganje mnenj uporabnikov …"
#~ msgid "Your opinion"
#~ msgstr "Vaše mnenje"
#~ msgid "Leave a…"
#~ msgstr "Objavite …"
#~ msgid "Comment"
#~ msgstr "Opombo"
#~ msgid "Rating"
#~ msgstr "Oceno"
#~ msgid "Bug report"
#~ msgstr "Poročilo o hrošču"
#~ msgid "Upgrade this extension"
#~ msgstr "Posodobi razširitev"
#~ msgid "Configure this extension"
#~ msgstr "Nastavi razširitev"
#~ msgid "Uninstall this extension"
#~ msgstr "Odstrani razširitev"
#~ msgid "Extension Homepage"
#~ msgstr "Spletna stran razširitev"
#~ msgid "Shell version…"
#~ msgstr "različica lupine …"
#~ msgid "Extension version…"
#~ msgstr "Različica razširitve …"
#~ msgid ""
#~ "A reviewer will review the extension you submitted to make sure there's "
#~ "nothing too dangerous. You'll be emailed the result of the review."
#~ msgstr ""
#~ "Pregledovalec bo preveril objavljeno razširitev za morebitno neželeno "
#~ "delovanje. Odziv boste prejeli na elektronski naslov."
#~ msgid "Search for extensions…"
#~ msgstr "Poišči razširitve …"
#~ msgid "Installed Extensions"
#~ msgstr "Nameščene razširitve"
#~ msgid "Shell settings"
#~ msgstr "Nastavitve lupine"
#~ msgid "Content"
#~ msgstr "Vsebina"
#~ msgid "Metadata"
#~ msgstr "Metapodatki"
#~ msgid "Post"
#~ msgstr "Po"
#~ msgid "Preview"
#~ msgstr "Predogled"
#~ msgid "What do you think about this GNOME extension?"
#~ msgstr "Kakšno je vaše mnenje o tej razširitvi GNOME?"
#~ msgid "Please correct the error below"
#~ msgid_plural "Please correct the errors below"
#~ msgstr[0] "Razrešiti je treba spodnje napake"
#~ msgstr[1] "Razrešiti je treba spodnjo napako"
#~ msgstr[2] "Razrešiti je treba spodnji napaki"
#~ msgstr[3] "Razrešiti je treba spodnje napake"
#~ msgid "Preview your comment"
#~ msgstr "Predogled opombe"
#~ msgid "Post Comment"
#~ msgstr "Objavi mnenje"
#~ msgid "Edit your comment"
#~ msgstr "Uredi mnenje"
#~ msgid "Latest extensions in GNOME Shell Extensions"
#~ msgstr "Najnovejše razširitve Lupine GNOME"
#~ msgid "GNOME Shell Extensions"
#~ msgstr "Razširitve Lupine Gnome"
#~ msgid "User Profile"
#~ msgstr "Uporabniški profil"
#~ msgid "User Settings"
#~ msgstr "Uporabniške nastavitve"
#~ msgid "Log out"
#~ msgstr "Odjava"
#~ msgid ""
#~ "To control GNOME Shell extensions using this site you must install GNOME "
#~ "Shell integration that consists of two parts: browser extension and "
#~ "native host messaging application"
#~ msgstr ""
#~ "Za nadzor razširitev Lupine GNOME prek te spletne strani je treba "
#~ "namestiti program, ki vključuje dva dela: razširitev za brskalnik in "
#~ "gostiteljski program za sporočanje."
#~ msgid "Install GNOME Shell integration browser extension"
#~ msgstr "Namesti razširitev Lupine GNOM za spletni brskalnik"
#~ msgid "Click here to install browser extension"
#~ msgstr "Kliknite za namestitev razširitve za brskalnik"
#, javascript-format
#~ msgid ""
#~ "See %swiki page%s for native host connector installation instructions"
#~ msgstr ""
#~ "Oglejte si %sstrani Wiki%s za nastavitev povezovalnega gostiteljskega "
#~ "namiznega programa."
#~ msgid ""
#~ "We cannot detect a running copy of GNOME on this system, so some parts of "
#~ "the interface may be disabled. See <a href=\"/about/#no-detection\">our "
#~ "troubleshooting entry</a> for more information."
#~ msgstr ""
#~ "Ni mogoče zaznati zagnane različice namizja GNOME na tem sistemu, zato so "
#~ "nekateri deli vmesnika morda onemogočeni. Za več podrobnosti si oglejte "
#~ "možnosti <a href=\"/about/#no-detection\">odpravljanja napak</a>."
#~ msgid "GNOME Shell Extensions cannot list your installed extensions."
#~ msgstr "Ni mogoče izpisati nameščenih razširitev Lupine GNOME."
#~ msgid "Compatible with"
#~ msgstr "Skladno z"
#~ msgid "Name"
#~ msgstr "Ime"
#~ msgid "Recent"
#~ msgstr "Nedavno"
#~ msgid "Popularity"
#~ msgstr "Priljubljenost"
#~ msgid "Sort by"
#~ msgstr "Razvrsti po"
#~ msgid "Show more reviews"
#~ msgstr "Pokaži več ocen"
#~ msgid "There are no comments. Be the first!"
#~ msgstr "Ni še vpisane nobene opombe. Bodite prvi!"
#~ msgid "Author"
#~ msgstr "Avtor"
#~ msgid "What's wrong?"
#~ msgstr "Kaj ne narobe?"
#~ msgid ""
#~ "GNOME Shell Extensions did not detect any errors with this extension."
#~ msgstr "Ni zaznanih napak pri tej razširitvi Lupine GNOME."
#~ msgid "Version information"
#~ msgstr "Podrobnosti različice"
#~ msgid "Shell version"
#~ msgstr "Različica lupine"
#~ msgid "Extension version"
#~ msgstr "Različica razširitve"
#~ msgid "Unknown"
#~ msgstr "Neznano"
#~ msgid "What have you tried?"
#~ msgstr "Kaj ste že poskusili?"
#~ msgid "Automatically detected errors"
#~ msgstr "Samodejno zaznaj napake"
#~ msgid "You uninstalled"
#~ msgstr "Odstranili ste"
#~ msgid "Password"
#~ msgstr "Geslo"
#: extensions/workspace-indicator/workspaceIndicator.js:430
msgid "Workspace Indicator"
msgstr "Kazalnik delovnih površin"

View File

@@ -9,17 +9,16 @@ msgstr ""
"Project-Id-Version: gnome-shell-extensions gnome-3-0\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell-extensions/"
"issues\n"
"POT-Creation-Date: 2024-04-29 14:28+0000\n"
"PO-Revision-Date: 2024-07-24 10:25+0000\n"
"Last-Translator: Chao-Hsiung Liao <pesder@mail.edu.tw>\n"
"Language-Team: Chinese (Traditional) <http://darkbear.mercusysddns.com/"
"projects/gnome-45/gnome-shell-extensions-po-ui-gnome-46-zh_tw/zh_Hant/>\n"
"POT-Creation-Date: 2022-05-06 11:44+0000\n"
"PO-Revision-Date: 2022-05-12 00:01+0800\n"
"Last-Translator: Cheng-Chia Tseng <pswo10680@gmail.com>\n"
"Language-Team: Chinese <zh-l10n@linux.org.tw>\n"
"Language: zh_TW\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: Weblate 5.6.2\n"
"X-Generator: Poedit 3.0.1\n"
#: data/gnome-classic.desktop.in:3
msgid "GNOME Classic"
@@ -38,19 +37,19 @@ msgstr "GNOME Classic 採行 Wayland"
msgid "GNOME Classic on Xorg"
msgstr "GNOME Classic 採行 Xorg"
#: extensions/apps-menu/extension.js:126
#: extensions/apps-menu/extension.js:118
msgid "Favorites"
msgstr "喜愛"
#: extensions/apps-menu/extension.js:397
msgid "Apps"
msgstr "程式"
#: extensions/apps-menu/extension.js:379
msgid "Applications"
msgstr "應用程式"
#: extensions/auto-move-windows/org.gnome.shell.extensions.auto-move-windows.gschema.xml:12
#: 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:13
#: 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"
@@ -58,34 +57,34 @@ msgstr ""
"字串的列表,每個都包含一個應用程式 id (桌面檔名稱),後面接著半形分號 \";\" 與"
"工作區號碼"
#: extensions/auto-move-windows/prefs.js:159
#: extensions/auto-move-windows/prefs.js:152
msgid "Workspace Rules"
msgstr "工作區規則"
#: extensions/auto-move-windows/prefs.js:314
#: extensions/auto-move-windows/prefs.js:306
msgid "Add Rule"
msgstr "加入規則"
#. TRANSLATORS: %s is the filesystem name
#: extensions/drive-menu/extension.js:123
#: extensions/places-menu/placeDisplay.js:218
#: extensions/drive-menu/extension.js:126
#: extensions/places-menu/placeDisplay.js:210
#, javascript-format
msgid "Ejecting drive “%s” failed:"
msgstr "裝置「%s」退出失敗"
#: extensions/drive-menu/extension.js:142
#: extensions/drive-menu/extension.js:145
msgid "Removable devices"
msgstr "可移除式裝置"
#: extensions/drive-menu/extension.js:164
#: extensions/drive-menu/extension.js:167
msgid "Open Files"
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:5
msgid "Use more screen for windows"
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: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. "
@@ -94,11 +93,11 @@ msgstr ""
"藉由適應螢幕長寬比來試著使用更多螢幕空間放置視窗縮圖,進一步聯合它們來減少邊"
"界盒。這個設定僅適用於自然放置策略。"
#: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:17
#: 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:18
#: 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 "
@@ -107,119 +106,47 @@ msgstr ""
"如果為真,在對映的縮圖頂端放置視窗說明標題,凌駕 Shell 將它放置在底部的預設"
"值。變更這個設定值需要重新啟動 Shell 來套用效果。"
#: extensions/places-menu/extension.js:91
#: extensions/places-menu/extension.js:94
#: extensions/places-menu/extension.js:97
msgid "Places"
msgstr "位置"
#: extensions/places-menu/placeDisplay.js:60
#: extensions/places-menu/placeDisplay.js:49
#, javascript-format
msgid "Failed to launch “%s”"
msgstr "無法啟動「%s」"
#: extensions/places-menu/placeDisplay.js:75
#: extensions/places-menu/placeDisplay.js:64
#, javascript-format
msgid "Failed to mount volume for “%s”"
msgstr "無法掛載儲存區「%s」"
#: extensions/places-menu/placeDisplay.js:135
#: extensions/places-menu/placeDisplay.js:158
#: extensions/places-menu/placeDisplay.js:125
#: extensions/places-menu/placeDisplay.js:148
msgid "Computer"
msgstr "電腦"
#: extensions/places-menu/placeDisplay.js:333
#: extensions/places-menu/placeDisplay.js:336
msgid "Home"
msgstr "家目錄"
#: extensions/places-menu/placeDisplay.js:378
#: extensions/places-menu/placeDisplay.js:381
msgid "Browse Network"
msgstr "瀏覽網路"
#: extensions/screenshot-window-sizer/org.gnome.shell.extensions.screenshot-window-sizer.gschema.xml:14
#: 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:18
#: extensions/screenshot-window-sizer/org.gnome.shell.extensions.screenshot-window-sizer.gschema.xml:11
msgid "Cycle Screenshot Sizes Backward"
msgstr "往回循環螢幕擷圖大小"
#: extensions/system-monitor/extension.js:135
msgid "CPU stats"
msgstr "CPU 狀態"
#: extensions/system-monitor/extension.js:159
msgid "Memory stats"
msgstr "記憶體狀態"
#: extensions/system-monitor/extension.js:177
msgid "Swap stats"
msgstr "置換區狀態"
#: extensions/system-monitor/extension.js:336
msgid "Upload stats"
msgstr "上傳狀態"
#: extensions/system-monitor/extension.js:350
msgid "Download stats"
msgstr "下載狀態"
#: extensions/system-monitor/extension.js:364
msgid "System stats"
msgstr "系統狀態"
#: extensions/system-monitor/extension.js:412
msgid "Show"
msgstr "顯示"
#: extensions/system-monitor/extension.js:414
msgid "CPU"
msgstr "CPU"
#: extensions/system-monitor/extension.js:416
msgid "Memory"
msgstr "記憶體"
#: extensions/system-monitor/extension.js:418
msgid "Swap"
msgstr "置換區"
#: extensions/system-monitor/extension.js:420
msgid "Upload"
msgstr "上傳"
#: extensions/system-monitor/extension.js:422
msgid "Download"
msgstr "下載"
#: extensions/system-monitor/extension.js:427
msgid "Open System Monitor"
msgstr "開啟系統監視器"
#: extensions/system-monitor/schemas/org.gnome.shell.extensions.system-monitor.gschema.xml:12
msgid "Show CPU usage"
msgstr "顯示 CPU 使用率"
#: extensions/system-monitor/schemas/org.gnome.shell.extensions.system-monitor.gschema.xml:16
msgid "Show memory usage"
msgstr "顯示記憶體使用率"
#: extensions/system-monitor/schemas/org.gnome.shell.extensions.system-monitor.gschema.xml:20
msgid "Show swap usage"
msgstr "顯示置換區使用率"
#: extensions/system-monitor/schemas/org.gnome.shell.extensions.system-monitor.gschema.xml:24
msgid "Show upload"
msgstr "顯示上傳"
#: extensions/system-monitor/schemas/org.gnome.shell.extensions.system-monitor.gschema.xml:28
msgid "Show download"
msgstr "顯示下載"
#: extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml:11
#: 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:12
#: 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 載入"
@@ -227,71 +154,71 @@ msgstr "主題的名稱,要從 ~/.themes/name/gnome-shell 載入"
msgid "Close"
msgstr "關閉"
#: extensions/window-list/extension.js:99
#: extensions/window-list/extension.js:92
msgid "Unminimize"
msgstr "取消最小化"
#: extensions/window-list/extension.js:99
#: extensions/window-list/extension.js:92
msgid "Minimize"
msgstr "最小化"
#: extensions/window-list/extension.js:106
#: extensions/window-list/extension.js:99
msgid "Unmaximize"
msgstr "取消最大化"
#: extensions/window-list/extension.js:106
#: extensions/window-list/extension.js:99
msgid "Maximize"
msgstr "最大化"
#: extensions/window-list/extension.js:471
#: extensions/window-list/extension.js:441
msgid "Minimize all"
msgstr "全部最小化"
#: extensions/window-list/extension.js:477
#: extensions/window-list/extension.js:447
msgid "Unminimize all"
msgstr "全部取消最小化"
#: extensions/window-list/extension.js:483
#: extensions/window-list/extension.js:453
msgid "Maximize all"
msgstr "全部最大化"
#: extensions/window-list/extension.js:491
#: extensions/window-list/extension.js:461
msgid "Unmaximize all"
msgstr "全部取消最大化"
#: extensions/window-list/extension.js:499
#: extensions/window-list/extension.js:469
msgid "Close all"
msgstr "全部關閉"
#: extensions/window-list/extension.js:773
#: extensions/window-list/extension.js:753
msgid "Window List"
msgstr "視窗列表"
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:18
#: 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:19
#: 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:26
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:20
#: extensions/window-list/prefs.js:79
msgid "Show windows from all workspaces"
msgstr "顯示所有工作區的視窗"
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:27
#: 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:33
#: 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:34
#: 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."
@@ -317,27 +244,24 @@ msgstr "永遠群組視窗"
msgid "Show on all monitors"
msgstr "顯示於所有螢幕"
#: extensions/window-list/workspaceIndicator.js:255
#: extensions/workspace-indicator/extension.js:261
#: extensions/window-list/workspaceIndicator.js:261
#: extensions/workspace-indicator/extension.js:266
msgid "Workspace Indicator"
msgstr "工作區指示器"
#: extensions/workspace-indicator/prefs.js:69
#: extensions/workspace-indicator/prefs.js:62
#, javascript-format
msgid "Workspace %d"
msgstr "工作區 %d"
#: extensions/workspace-indicator/prefs.js:136
#: extensions/workspace-indicator/prefs.js:129
msgid "Workspace Names"
msgstr "工作區名稱"
#: extensions/workspace-indicator/prefs.js:262
#: extensions/workspace-indicator/prefs.js:255
msgid "Add Workspace"
msgstr "新增工作區"
#~ msgid "Applications"
#~ msgstr "應用程式"
#~ msgid "Application"
#~ msgstr "應用程式"
@@ -418,6 +342,12 @@ msgstr "新增工作區"
#~ "功能。\n"
#~ "不過,它可以讓您自訂歡迎訊息。"
#~ msgid "CPU"
#~ msgstr "CPU"
#~ msgid "Memory"
#~ msgstr "記憶體"
#~ msgid "GNOME Shell Classic"
#~ msgstr "GNOME Shell Classic"