New upstream version 48~beta

This commit is contained in:
Jeremy Bícha
2025-02-05 06:28:22 -05:00
34 changed files with 2192 additions and 1021 deletions

View File

@@ -0,0 +1,72 @@
<!--
Please read https://handbook.gnome.org/issues/reporting.html
first to ensure that you create a clear and specific issue.
-->
### Which extension
<!--
Which extension is the issue about?
See the project README for a complete list of extensions:
https://gitlab.gnome.org/GNOME/gnome-shell-extensions#extensions
Do not report issues for any other extensions here.
Report general issues about gnome-shell's extension support to
https://gitlab.gnome.org/GNOME/gnome-shell.
Report issues with the extensions.gnome.org website to
https://gitlab.gnome.org/Infrastructure/extensions-web/
-->
### Affected version
<!--
Provide at least the following information:
* Your OS and version
* Extension version
* Affected GNOME Shell version
-->
### Bug summary
<!--
Provide a short summary of the bug you encountered.
-->
### Steps to reproduce
<!--
1. Step one
2. Step two
3. ...
-->
### What happened
<!--
What did the extension do that was unexpected?
-->
### What did you expect to happen
<!--
What did you expect the extension to do?
-->
### Relevant logs, screenshots, screencasts etc.
<!--
If you have further information, such as technical documentation, logs,
screenshots or screencasts related, please provide them here.
If the bug is a crash, please obtain a stack trace with installed debug
symbols (at least for GNOME Shell and Mutter) and attach it to
this issue following the instructions on
https://handbook.gnome.org/issues/stack-traces.html.
-->
<!-- Do not remove the following line. -->
/label ~"1. Bug"

View File

@@ -0,0 +1,2 @@
SPDX-FileCopyrightText: 2024 Florian Müllner <fmuellner@gnome.org>
SPDX-License-Identifier: CC-BY-SA-4.0

View File

@@ -0,0 +1,47 @@
<!--
Please read https://handbook.gnome.org/issues/reporting.html
first to ensure that you create a clear and specific issue.
-->
### Which extension
<!--
Which extension is the issue about?
See the project README for a complete list of extensions:
https://gitlab.gnome.org/GNOME/gnome-shell-extensions#extensions
Do not report issues for any other extensions here.
Report general issues about gnome-shell's extension support to
https://gitlab.gnome.org/GNOME/gnome-shell.
Report issues with the extensions.gnome.org website to
https://gitlab.gnome.org/Infrastructure/extensions-web/
-->
### Feature summary
<!--
Describe what you would like to be able to do with the extension
that you currently cannot do.
-->
### How would you like it to work
<!--
If you can think of a way the extension might be able to do this,
let us know here.
-->
### Relevant links, screenshots, screencasts etc.
<!--
If you have further information, such as technical documentation,
code, mockups or a similar feature in another desktop environments,
please provide them here.
-->
<!-- Do not remove the following line. -->
/label ~"1. Feature"

View File

@@ -0,0 +1,3 @@
SPDX-FileCopyrightText: 2024 Florian Müllner <fmuellner@gnome.org>
SPDX-License-Identifier: CC-BY-SA-4.0

View File

@@ -1,22 +0,0 @@
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
Upstream-Name: gnome-shell-extensions
Upstream-Contact: Florian Müllner <fmuellner@gnome.org>
Source: https://gitlab.gnome.org/GNOME/gnome-shell-extensions
Files: NEWS README.md HACKING.md data/HACKING
Copyright: No rights reserved
License: CC0-1.0
Files: *.json.in *.desktop.in *.gschema.override
Copyright: Florian Müllner <fmuellner@gnome.org>
License: GPL-2.0-or-later
# managed by translation teams
Files: po/*.po
Copyright: GNOME Translation Teams <i18n@gnome.org>
License: GPL-2.0-or-later
# managed by translation teams
Files: po/LINGUAS po/POTFILES.in
Copyright: No rights reserved
License: CC0-1.0

View File

@@ -1,3 +1,9 @@
<!--
SPDX-FileCopyrightText: 2011 Giovanni Campagna <gcampagna@src.gnome.org>
SPDX-FileCopyrightText: 2017 Florian Müllner <fmuellner@gnome.org>"""
SPDX-License-Identifier: CC-BY-SA-4.0
-->
## Creating a New Extension
To create a new extension, add a subdirectory in extensions. Then create

170
LICENSES/CC-BY-SA-4.0.txt Normal file
View File

@@ -0,0 +1,170 @@
Creative Commons Attribution-ShareAlike 4.0 International
Creative Commons Corporation (“Creative Commons”) is not a law firm and does not provide legal services or legal advice. Distribution of Creative Commons public licenses does not create a lawyer-client or other relationship. Creative Commons makes its licenses and related information available on an “as-is” basis. Creative Commons gives no warranties regarding its licenses, any material licensed under their terms and conditions, or any related information. Creative Commons disclaims all liability for damages resulting from their use to the fullest extent possible.
Using Creative Commons Public Licenses
Creative Commons public licenses provide a standard set of terms and conditions that creators and other rights holders may use to share original works of authorship and other material subject to copyright and certain other rights specified in the public license below. The following considerations are for informational purposes only, are not exhaustive, and do not form part of our licenses.
Considerations for licensors: Our public licenses are intended for use by those authorized to give the public permission to use material in ways otherwise restricted by copyright and certain other rights. Our licenses are irrevocable. Licensors should read and understand the terms and conditions of the license they choose before applying it. Licensors should also secure all rights necessary before applying our licenses so that the public can reuse the material as expected. Licensors should clearly mark any material not subject to the license. This includes other CC-licensed material, or material used under an exception or limitation to copyright. More considerations for licensors.
Considerations for the public: By using one of our public licenses, a licensor grants the public permission to use the licensed material under specified terms and conditions. If the licensors permission is not necessary for any reasonfor example, because of any applicable exception or limitation to copyrightthen that use is not regulated by the license. Our licenses grant only permissions under copyright and certain other rights that a licensor has authority to grant. Use of the licensed material may still be restricted for other reasons, including because others have copyright or other rights in the material. A licensor may make special requests, such as asking that all changes be marked or described.
Although not required by our licenses, you are encouraged to respect those requests where reasonable. More considerations for the public.
Creative Commons Attribution-ShareAlike 4.0 International Public License
By exercising the Licensed Rights (defined below), You accept and agree to be bound by the terms and conditions of this Creative Commons Attribution-ShareAlike 4.0 International Public License ("Public License"). To the extent this Public License may be interpreted as a contract, You are granted the Licensed Rights in consideration of Your acceptance of these terms and conditions, and the Licensor grants You such rights in consideration of benefits the Licensor receives from making the Licensed Material available under these terms and conditions.
Section 1 Definitions.
a. Adapted Material means material subject to Copyright and Similar Rights that is derived from or based upon the Licensed Material and in which the Licensed Material is translated, altered, arranged, transformed, or otherwise modified in a manner requiring permission under the Copyright and Similar Rights held by the Licensor. For purposes of this Public License, where the Licensed Material is a musical work, performance, or sound recording, Adapted Material is always produced where the Licensed Material is synched in timed relation with a moving image.
b. Adapter's License means the license You apply to Your Copyright and Similar Rights in Your contributions to Adapted Material in accordance with the terms and conditions of this Public License.
c. BY-SA Compatible License means a license listed at creativecommons.org/compatiblelicenses, approved by Creative Commons as essentially the equivalent of this Public License.
d. Copyright and Similar Rights means copyright and/or similar rights closely related to copyright including, without limitation, performance, broadcast, sound recording, and Sui Generis Database Rights, without regard to how the rights are labeled or categorized. For purposes of this Public License, the rights specified in Section 2(b)(1)-(2) are not Copyright and Similar Rights.
e. Effective Technological Measures means those measures that, in the absence of proper authority, may not be circumvented under laws fulfilling obligations under Article 11 of the WIPO Copyright Treaty adopted on December 20, 1996, and/or similar international agreements.
f. Exceptions and Limitations means fair use, fair dealing, and/or any other exception or limitation to Copyright and Similar Rights that applies to Your use of the Licensed Material.
g. License Elements means the license attributes listed in the name of a Creative Commons Public License. The License Elements of this Public License are Attribution and ShareAlike.
h. Licensed Material means the artistic or literary work, database, or other material to which the Licensor applied this Public License.
i. Licensed Rights means the rights granted to You subject to the terms and conditions of this Public License, which are limited to all Copyright and Similar Rights that apply to Your use of the Licensed Material and that the Licensor has authority to license.
j. Licensor means the individual(s) or entity(ies) granting rights under this Public License.
k. Share means to provide material to the public by any means or process that requires permission under the Licensed Rights, such as reproduction, public display, public performance, distribution, dissemination, communication, or importation, and to make material available to the public including in ways that members of the public may access the material from a place and at a time individually chosen by them.
l. Sui Generis Database Rights means rights other than copyright resulting from Directive 96/9/EC of the European Parliament and of the Council of 11 March 1996 on the legal protection of databases, as amended and/or succeeded, as well as other essentially equivalent rights anywhere in the world.
m. You means the individual or entity exercising the Licensed Rights under this Public License. Your has a corresponding meaning.
Section 2 Scope.
a. License grant.
1. Subject to the terms and conditions of this Public License, the Licensor hereby grants You a worldwide, royalty-free, non-sublicensable, non-exclusive, irrevocable license to exercise the Licensed Rights in the Licensed Material to:
A. reproduce and Share the Licensed Material, in whole or in part; and
B. produce, reproduce, and Share Adapted Material.
2. Exceptions and Limitations. For the avoidance of doubt, where Exceptions and Limitations apply to Your use, this Public License does not apply, and You do not need to comply with its terms and conditions.
3. Term. The term of this Public License is specified in Section 6(a).
4. Media and formats; technical modifications allowed. The Licensor authorizes You to exercise the Licensed Rights in all media and formats whether now known or hereafter created, and to make technical modifications necessary to do so. The Licensor waives and/or agrees not to assert any right or authority to forbid You from making technical modifications necessary to exercise the Licensed Rights, including technical modifications necessary to circumvent Effective Technological Measures. For purposes of this Public License, simply making modifications authorized by this Section 2(a)(4) never produces Adapted Material.
5. Downstream recipients.
A. Offer from the Licensor Licensed Material. Every recipient of the Licensed Material automatically receives an offer from the Licensor to exercise the Licensed Rights under the terms and conditions of this Public License.
B. Additional offer from the Licensor Adapted Material. Every recipient of Adapted Material from You automatically receives an offer from the Licensor to exercise the Licensed Rights in the Adapted Material under the conditions of the Adapters License You apply.
C. No downstream restrictions. You may not offer or impose any additional or different terms or conditions on, or apply any Effective Technological Measures to, the Licensed Material if doing so restricts exercise of the Licensed Rights by any recipient of the Licensed Material.
6. No endorsement. Nothing in this Public License constitutes or may be construed as permission to assert or imply that You are, or that Your use of the Licensed Material is, connected with, or sponsored, endorsed, or granted official status by, the Licensor or others designated to receive attribution as provided in Section 3(a)(1)(A)(i).
b. Other rights.
1. Moral rights, such as the right of integrity, are not licensed under this Public License, nor are publicity, privacy, and/or other similar personality rights; however, to the extent possible, the Licensor waives and/or agrees not to assert any such rights held by the Licensor to the limited extent necessary to allow You to exercise the Licensed Rights, but not otherwise.
2. Patent and trademark rights are not licensed under this Public License.
3. To the extent possible, the Licensor waives any right to collect royalties from You for the exercise of the Licensed Rights, whether directly or through a collecting society under any voluntary or waivable statutory or compulsory licensing scheme. In all other cases the Licensor expressly reserves any right to collect such royalties.
Section 3 License Conditions.
Your exercise of the Licensed Rights is expressly made subject to the following conditions.
a. Attribution.
1. If You Share the Licensed Material (including in modified form), You must:
A. retain the following if it is supplied by the Licensor with the Licensed Material:
i. identification of the creator(s) of the Licensed Material and any others designated to receive attribution, in any reasonable manner requested by the Licensor (including by pseudonym if designated);
ii. a copyright notice;
iii. a notice that refers to this Public License;
iv. a notice that refers to the disclaimer of warranties;
v. a URI or hyperlink to the Licensed Material to the extent reasonably practicable;
B. indicate if You modified the Licensed Material and retain an indication of any previous modifications; and
C. indicate the Licensed Material is licensed under this Public License, and include the text of, or the URI or hyperlink to, this Public License.
2. You may satisfy the conditions in Section 3(a)(1) in any reasonable manner based on the medium, means, and context in which You Share the Licensed Material. For example, it may be reasonable to satisfy the conditions by providing a URI or hyperlink to a resource that includes the required information.
3. If requested by the Licensor, You must remove any of the information required by Section 3(a)(1)(A) to the extent reasonably practicable.
b. ShareAlike.In addition to the conditions in Section 3(a), if You Share Adapted Material You produce, the following conditions also apply.
1. The Adapters License You apply must be a Creative Commons license with the same License Elements, this version or later, or a BY-SA Compatible License.
2. You must include the text of, or the URI or hyperlink to, the Adapter's License You apply. You may satisfy this condition in any reasonable manner based on the medium, means, and context in which You Share Adapted Material.
3. You may not offer or impose any additional or different terms or conditions on, or apply any Effective Technological Measures to, Adapted Material that restrict exercise of the rights granted under the Adapter's License You apply.
Section 4 Sui Generis Database Rights.
Where the Licensed Rights include Sui Generis Database Rights that apply to Your use of the Licensed Material:
a. for the avoidance of doubt, Section 2(a)(1) grants You the right to extract, reuse, reproduce, and Share all or a substantial portion of the contents of the database;
b. if You include all or a substantial portion of the database contents in a database in which You have Sui Generis Database Rights, then the database in which You have Sui Generis Database Rights (but not its individual contents) is Adapted Material, including for purposes of Section 3(b); and
c. You must comply with the conditions in Section 3(a) if You Share all or a substantial portion of the contents of the database.
For the avoidance of doubt, this Section 4 supplements and does not replace Your obligations under this Public License where the Licensed Rights include other Copyright and Similar Rights.
Section 5 Disclaimer of Warranties and Limitation of Liability.
a. Unless otherwise separately undertaken by the Licensor, to the extent possible, the Licensor offers the Licensed Material as-is and as-available, and makes no representations or warranties of any kind concerning the Licensed Material, whether express, implied, statutory, or other. This includes, without limitation, warranties of title, merchantability, fitness for a particular purpose, non-infringement, absence of latent or other defects, accuracy, or the presence or absence of errors, whether or not known or discoverable. Where disclaimers of warranties are not allowed in full or in part, this disclaimer may not apply to You.
b. To the extent possible, in no event will the Licensor be liable to You on any legal theory (including, without limitation, negligence) or otherwise for any direct, special, indirect, incidental, consequential, punitive, exemplary, or other losses, costs, expenses, or damages arising out of this Public License or use of the Licensed Material, even if the Licensor has been advised of the possibility of such losses, costs, expenses, or damages. Where a limitation of liability is not allowed in full or in part, this limitation may not apply to You.
c. The disclaimer of warranties and limitation of liability provided above shall be interpreted in a manner that, to the extent possible, most closely approximates an absolute disclaimer and waiver of all liability.
Section 6 Term and Termination.
a. This Public License applies for the term of the Copyright and Similar Rights licensed here. However, if You fail to comply with this Public License, then Your rights under this Public License terminate automatically.
b. Where Your right to use the Licensed Material has terminated under Section 6(a), it reinstates:
1. automatically as of the date the violation is cured, provided it is cured within 30 days of Your discovery of the violation; or
2. upon express reinstatement by the Licensor.
c. For the avoidance of doubt, this Section 6(b) does not affect any right the Licensor may have to seek remedies for Your violations of this Public License.
d. For the avoidance of doubt, the Licensor may also offer the Licensed Material under separate terms or conditions or stop distributing the Licensed Material at any time; however, doing so will not terminate this Public License.
e. Sections 1, 5, 6, 7, and 8 survive termination of this Public License.
Section 7 Other Terms and Conditions.
a. The Licensor shall not be bound by any additional or different terms or conditions communicated by You unless expressly agreed.
b. Any arrangements, understandings, or agreements regarding the Licensed Material not stated herein are separate from and independent of the terms and conditions of this Public License.
Section 8 Interpretation.
a. For the avoidance of doubt, this Public License does not, and shall not be interpreted to, reduce, limit, restrict, or impose conditions on any use of the Licensed Material that could lawfully be made without permission under this Public License.
b. To the extent possible, if any provision of this Public License is deemed unenforceable, it shall be automatically reformed to the minimum extent necessary to make it enforceable. If the provision cannot be reformed, it shall be severed from this Public License without affecting the enforceability of the remaining terms and conditions.
c. No term or condition of this Public License will be waived and no failure to comply consented to unless expressly agreed to by the Licensor.
d. Nothing in this Public License constitutes or may be interpreted as a limitation upon, or waiver of, any privileges and immunities that apply to the Licensor or You, including from the legal processes of any jurisdiction or authority.
Creative Commons is not a party to its public licenses. Notwithstanding, Creative Commons may elect to apply one of its public licenses to material it publishes and in those instances will be considered the “Licensor.” Except for the limited purpose of indicating that material is shared under a Creative Commons public license or as otherwise permitted by the Creative Commons policies published at creativecommons.org/policies, Creative Commons does not authorize the use of the trademark “Creative Commons” or any other trademark or logo of Creative Commons without its prior written consent including, without limitation, in connection with any unauthorized modifications to any of its public licenses or any other arrangements, understandings, or agreements concerning use of licensed material. For the avoidance of doubt, this paragraph does not form part of the public licenses.
Creative Commons may be contacted at creativecommons.org.

55
NEWS
View File

@@ -1,46 +1,37 @@
47.4
====
48.beta
=======
* window-list: Fix regression in chrome tracking [Florian; !379]
* Misc. bug fixes and cleanups [Florian; !376]
* Misc. bug fixes and cleanups [Florian; !380]
Contributors:
Florian Müllner
47.3
====
* 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; !362, !365, !367,
!368, !370]
Contributors:
Florian Müllner, Bartłomiej Piotrowski
Florian Müllner, Emilio Sepúlveda
Translators:
Yi-Jyun Pan [zh_TW]
Rafael Fontenelle [pt_BR], Emilio Sepúlveda [ia]
47.2
====
* places-menu: Fix a11y labelling [Florian; #542]
* screenshot-window-sizer: Mention shortcut in description [Florian; !358]
* Misc. bug fixes and cleanups [Florian; !353, !354]
Contributors:
Florian Müllner
Translators:
Fabio Tomat [fur], Nathan Follens [nl], Марко Костић [sr]
47.1
====
48.alpha
========
* classic: Add missing top-bar indicators [Florian; !339]
* window-list: Fix window state styling [Florian; !342]
* window-list: Fix "ignore-workspace" setting getting reset [Florian; !341]
* Misc. bug fixes and cleanups [Florian; !337, !338, !345, !347, !349]
* window-list: Allow rearranging window buttons [Florian, Jakub; !338]
* window-list: Add workspaces page to preference dialog [Florian; !344]
* places-menu: Sync list of places with nautilus [Florian; !340]
* 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]
* window-list: Add attention indicator [Florian; !366]
* Misc. bug fixes and cleanups [Florian, Bartłomiej; !337, !343, !345, !347,
!348, !349, !351, !352, !353, !354, !358, !362, !365, !367, !368, !370, !375]
Contributors:
Florian Müllner
Florian Müllner, Bartłomiej Piotrowski, Jakub Steiner
Translators:
Fabio Tomat [fur], Martin [sl], Jordi Mas i Hernandez [ca], Vasil Pupkin [be],
Nathan Follens [nl], Artur S0 [ru], Марко Костић [sr],
Yaron Shahrabani [he], Sabri Ünal [tr], Yi-Jyun Pan [zh_TW]
47.0
====

108
README.md
View File

@@ -1,25 +1,34 @@
<!--
SPDX-FileCopyrightText: 2011 Giovanni Campagna <gcampagna@src.gnome.org>
SPDX-FileCopyrightText: 2011 Adam Dingle <adam@yorba.org>
SPDX-FileCopyrightText: 2011 Vamsi Krishna Brahmajosyula <vamsikrishna.brahmajosyula@gmail.com>
SPDX-FileCopyrightText: 2014 Michael Catanzaro <mcatanzaro@gnome.org>
SPDX-FileCopyrightText: 2015 Florian Müllner <fmuellner@gnome.org>
SPDX-FileCopyrightText: 2019 Fabian P. Schmidt <kerel-fs@gmx.de>
SPDX-FileCopyrightText: 2024 Aral Balkan <aral@aralbalkan.com>"""
SPDX-License-Identifier: CC-BY-SA-4.0
-->
# GNOME Shell Extensions
GNOME Shell Extensions is a collection of extensions providing additional
and optional functionality to GNOME Shell.
Since GNOME Shell is not API stable, extensions work only against a very
specific version of the shell, usually the same as this package (see
"configure --version"). The extensions in this package are supported by GNOME
and will be updated to reflect future API changes in GNOME Shell.
The extensions in this package are supported by GNOME and will be updated
to reflect future API changes in GNOME Shell.
The GNOME wiki has more information about [GNOME Shell Extensions][project-page],
as well as some general information about [GNOME Shell][shell-page].
Both the most recent stable release and the previous stable release of
GNOME Shell are actively supported, as well as the current development
branch.
Bugs should be reported to the GNOME [bug tracking system][bug-tracker].
Please refer to the [schedule] to see when a new version will be released.
[schedule]: https://release.gnome.org/calendar
## Extensions
* alternate-tab (**OBSOLETE**)
Lets you use classic Alt+Tab (window-based instead of app-based) in GNOME Shell.
This extension is obsolete since GNOME 3.30, see [this blogpost][alternatetab-post]
for further details.
The following is a complete list of extensions that are provided by this
project.
* apps-menu
@@ -28,8 +37,7 @@ Bugs should be reported to the GNOME [bug tracking system][bug-tracker].
* auto-move-windows
Lets you manage your workspaces more easily, assigning a specific workspace to
each application as soon as it creates a window, in a manner configurable with a
GSettings key.
each application as soon as it creates a window.
* drive-menu
@@ -40,6 +48,11 @@ GSettings key.
Changes application icons to always launch a new instance when activated.
* light-style
Changes the default shell style to "light", while still following the
system-wide "dark" preference.
* native-window-placement
An alternative algorithm for layouting the thumbnails in the windows overview, that
@@ -53,9 +66,17 @@ GSettings key.
Adds a shortcut for resizing the focus window to a size that is suitable for GNOME Software screenshots. Ctrl + Alt + s cycles forwards through the available sizes and Ctrl + Alt + Shift + s cycles backwards.
* status-icons
Show (XEmbed) status icons in the top bar.
* system-monitor
Shows system usage information in the top bar.
* user-theme
Loads a shell theme from ~/.themes/<name>/gnome-shell.
Loads a shell theme from `$XDG_DATA_HOME/themes/<name>/gnome-shell`.
* window-list
@@ -69,18 +90,49 @@ GSettings key.
Adds a simple workspace switcher to the top bar.
## Default branch
### Ex-Extensions
The default development branch is `main`. If you still have a local
checkout under the old name, use:
```sh
git checkout master
git branch -m master main
git fetch
git branch --unset-upstream
git branch -u origin/master
git symbolic-ref refs/remotes/origin/HEAD refs/remotes/origin/main
```
Occasionally over the years, some extensions were removed.
The following list is not complete, but limited to cases that
are notable for some reason; either the removal happened
relatively recently, or the extension used to be particularly
popular in the past.
* alternate-tab
Lets you use classic Alt+Tab (window-based instead of app-based) in GNOME Shell.
This extension is obsolete since GNOME 3.30, see [this blogpost][alternatetab-post]
for further details.
[alternatetab-post]: https://blogs.gnome.org/fmuellner/2018/10/11/the-future-of-alternatetab-and-why-you-need-not-worry/
## Reporting bugs
Bugs should be reported to the [issue tracking system][bug-tracker].
The [GNOME handbook][bug-handbook] has useful information for creating
effective issue reports.
Please note that the issue tracker is meant to be used for
actionable issues only.
For support questions, feedback on changes or general discussions,
you can use:
- the [#gnome-shell matrix room][matrix-room]
- the `Desktop` category or `extensions` and `shell` tags on [GNOME Discourse][discourse]
[bug-tracker]: https://gitlab.gnome.org/GNOME/gnome-shell-extensions/issues
[bug-handbook]: https://handbook.gnome.org/issues/reporting.html
[matrix-room]: https://matrix.to/#/#gnome-shell:gnome.org
[discourse]: https://discourse.gnome.org
## Code of Conduct
All interactions with the project should follow the [Code of Conduct][conduct].
[conduct]: https://conduct.gnome.org/
## License
@@ -89,8 +141,4 @@ Public License, version 2 or later. See the [COPYING file][license] for details.
Individual extensions may be licensed under different terms, see each source
file for details.
[project-page]: https://wiki.gnome.org/Projects/GnomeShell/Extensions
[shell-page]: https://wiki.gnome.org/Projects/GnomeShell
[bug-tracker]: https://gitlab.gnome.org/GNOME/gnome-shell-extensions/issues
[license]: COPYING
[alternatetab-post]: https://blogs.gnome.org/fmuellner/2018/10/11/the-future-of-alternatetab-and-why-you-need-not-worry/

31
REUSE.toml Normal file
View File

@@ -0,0 +1,31 @@
# SPDX-FileCopyrightText: 2024 Florian Müllner <fmuellner@gnome.org>
# SPDX-License-Identifier: CC0-1.0
version = 1
SPDX-PackageName = "gnome-shell-extensions"
SPDX-PackageSupplier = "Florian Müllner <fmuellner@gnome.org>"
SPDX-PackageDownloadLocation = "https://gitlab.gnome.org/GNOME/gnome-shell-extensions"
[[annotations]]
path = "NEWS"
SPDX-FileCopyrightText = """
2011 Giovanni Campagna <gcampagna@src.gnome.org>
2013 Florian Müllner <fmuellner@gnome.org>"""
SPDX-License-Identifier = "CC-BY-SA-4.0"
[[annotations]]
path = ["**.json.in", "**.desktop.in", "**.gschema.override"]
SPDX-FileCopyrightText = "Florian Müllner <fmuellner@gnome.org>"
SPDX-License-Identifier = "GPL-2.0-or-later"
[[annotations]]
# managed by translation teams
path = "po/**.po"
SPDX-FileCopyrightText = "GNOME Translation Teams <i18n@gnome.org>"
SPDX-License-Identifier = "GPL-2.0-or-later"
[[annotations]]
# managed by translation teams
path = ["po/LINGUAS", "po/POTFILES.in"]
SPDX-FileCopyrightText = "No rights reserved"
SPDX-License-Identifier = "CC0-1.0"

View File

@@ -1,2 +0,0 @@
To update the gnome-shell-sass submodule to latest upstream commit:
git submodule update --rebase

View File

@@ -547,7 +547,9 @@ class ApplicationsButton extends PanelMenu.Button {
let section = new PopupMenu.PopupMenuSection();
this.menu.addMenuItem(section);
this.mainBox = new St.BoxLayout({layoutManager: new MainLayout()});
this.leftBox = new St.BoxLayout({vertical: true});
this.leftBox = new St.BoxLayout({
orientation: Clutter.Orientation.VERTICAL,
});
this.applicationsScrollBox = new St.ScrollView({
style_class: 'apps-menu vfade',
x_expand: true,
@@ -557,9 +559,13 @@ class ApplicationsButton extends PanelMenu.Button {
});
this.leftBox.add_child(this.categoriesScrollBox);
this.applicationsBox = new St.BoxLayout({vertical: true});
this.applicationsBox = new St.BoxLayout({
orientation: Clutter.Orientation.VERTICAL,
});
this.applicationsScrollBox.set_child(this.applicationsBox);
this.categoriesBox = new St.BoxLayout({vertical: true});
this.categoriesBox = new St.BoxLayout({
orientation: Clutter.Orientation.VERTICAL,
});
this.categoriesScrollBox.set_child(this.categoriesBox);
this.mainBox.add_child(this.leftBox);

View File

@@ -23,13 +23,6 @@ Gio._promisify(Gio.File.prototype, 'mount_enclosing_volume');
const BACKGROUND_SCHEMA = 'org.gnome.desktop.background';
const Hostname1Iface = '<node> \
<interface name="org.freedesktop.hostname1"> \
<property name="PrettyHostname" type="s" access="read" /> \
</interface> \
</node>';
const Hostname1 = Gio.DBusProxy.makeProxyWrapper(Hostname1Iface);
class PlaceInfo extends EventEmitter {
constructor(...params) {
super();
@@ -129,44 +122,20 @@ class PlaceInfo extends EventEmitter {
}
}
class RootInfo extends PlaceInfo {
_init() {
super._init('devices', Gio.File.new_for_path('/'), _('Computer'));
class NautilusSpecialInfo extends PlaceInfo {
constructor(file, name, icon) {
super('special', file, name, icon);
let busName = 'org.freedesktop.hostname1';
let objPath = '/org/freedesktop/hostname1';
new Hostname1(Gio.DBus.system, busName, objPath, (obj, error) => {
if (error)
return;
this._proxy = obj;
this._proxy.connectObject('g-properties-changed',
this._propertiesChanged.bind(this), this);
this._propertiesChanged(obj);
});
const appSystem = Shell.AppSystem.get_default();
this._app = appSystem.lookup_app('org.gnome.Nautilus.desktop');
}
getIcon() {
return new Gio.ThemedIcon({name: 'drive-harddisk-symbolic'});
}
_propertiesChanged(proxy) {
// GDBusProxy will emit a g-properties-changed when hostname1 goes down
// ignore it
if (proxy.g_name_owner) {
this.name = proxy.PrettyHostname || _('Computer');
this.emit('changed');
}
}
destroy() {
this._proxy?.disconnectObject(this);
this._proxy = null;
super.destroy();
launch(timestamp) {
const launchContext = global.create_app_launch_context(timestamp, -1);
this._app.appInfo.launch([this.file], launchContext);
}
}
class PlaceDeviceInfo extends PlaceInfo {
_init(kind, mount) {
this._mount = mount;
@@ -245,14 +214,6 @@ class PlaceVolumeInfo extends PlaceInfo {
}
}
const DEFAULT_DIRECTORIES = [
GLib.UserDirectory.DIRECTORY_DOCUMENTS,
GLib.UserDirectory.DIRECTORY_PICTURES,
GLib.UserDirectory.DIRECTORY_MUSIC,
GLib.UserDirectory.DIRECTORY_DOWNLOAD,
GLib.UserDirectory.DIRECTORY_VIDEOS,
];
export class PlacesManager extends EventEmitter {
constructor() {
super();
@@ -267,6 +228,12 @@ export class PlacesManager extends EventEmitter {
this._settings = new Gio.Settings({schema_id: BACKGROUND_SCHEMA});
this._settings.connectObject('changed::show-desktop-icons',
() => this._updateSpecials(), this);
this._privacySettings = new Gio.Settings({
schema_id: 'org.gnome.desktop.privacy',
});
this._privacySettings.connectObject('changed::remember-recent-files',
() => this._updateSpecials(), this);
this._updateSpecials();
/*
@@ -312,6 +279,9 @@ export class PlacesManager extends EventEmitter {
this._settings?.disconnectObject(this);
this._settings = null;
this._privacySettings.disconnectObject(this);
this._privacySettings = null;
this._volumeMonitor.disconnectObject(this);
if (this._monitor)
@@ -320,42 +290,68 @@ export class PlacesManager extends EventEmitter {
GLib.source_remove(this._bookmarkTimeoutId);
}
_shouldShowRecent() {
const vfs = Gio.Vfs.get_default();
const schemes = vfs.get_supported_uri_schemes();
return this._privacySettings.get_boolean('remember-recent-files') &&
schemes.includes('recent');
}
_updateSpecials() {
this._places.special.forEach(p => p.destroy());
this._places.special = [];
let homePath = GLib.get_home_dir();
const appSystem = Shell.AppSystem.get_default();
const nautilusApp = appSystem.lookup_app('org.gnome.Nautilus.desktop');
const defaultFm = Gio.AppInfo.get_default_for_type('inode/directory', true);
const showNautilusSpecials =
nautilusApp && defaultFm && nautilusApp.appInfo.equal(defaultFm);
const homeFile = Gio.File.new_for_path(GLib.get_home_dir());
this._places.special.push(new PlaceInfo(
'special',
Gio.File.new_for_path(homePath),
homeFile,
_('Home')));
let specials = [];
let dirs = DEFAULT_DIRECTORIES.slice();
if (this._settings.get_boolean('show-desktop-icons'))
dirs.push(GLib.UserDirectory.DIRECTORY_DESKTOP);
for (let i = 0; i < dirs.length; i++) {
let specialPath = GLib.get_user_special_dir(dirs[i]);
if (!specialPath || specialPath === homePath)
continue;
let file = Gio.File.new_for_path(specialPath), info;
try {
info = new PlaceInfo('special', file);
} catch (e) {
if (e.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.NOT_FOUND))
continue;
throw e;
}
specials.push(info);
if (this._shouldShowRecent()) {
this._places.special.push(new PlaceInfo(
'special',
Gio.File.new_for_uri('recent:///'),
_('Recent')));
}
specials.sort((a, b) => GLib.utf8_collate(a.name, b.name));
this._places.special = this._places.special.concat(specials);
if (showNautilusSpecials) {
this._places.special.push(new NautilusSpecialInfo(
Gio.File.new_for_uri('starred:///'),
_('Starred'),
'starred-symbolic'));
}
if (this._settings.get_boolean('show-desktop-icons')) {
const desktopPath = GLib.get_user_special_dir(
GLib.UserDirectory.DIRECTORY_DESKTOP);
const desktopFile = desktopPath
? Gio.File.new_for_path(desktopPath)
: null;
if (desktopFile && !desktopFile.equal(homeFile)) {
this._places.special.push(
new PlaceInfo('special', desktopFile));
}
}
if (showNautilusSpecials) {
this._places.special.push(new NautilusSpecialInfo(
Gio.File.new_for_uri('x-network-view:///'),
_('Network'),
'network-workgroup-symbolic'));
}
this._places.special.push(new PlaceInfo(
'special',
Gio.File.new_for_uri('trash:///'),
_('Trash')));
this.emit('special-updated');
}
@@ -369,14 +365,6 @@ export class PlacesManager extends EventEmitter {
this._places.network.forEach(p => p.destroy());
this._places.network = [];
/* Add standard places */
this._places.devices.push(new RootInfo());
this._places.network.push(new PlaceInfo(
'network',
Gio.File.new_for_uri('network:///'),
_('Browse Network'),
'network-workgroup-symbolic'));
/* first go through all connected drives */
let drives = this._volumeMonitor.get_connected_drives();
for (let i = 0; i < drives.length; i++) {
@@ -508,30 +496,12 @@ export class PlacesManager extends EventEmitter {
}
_addMount(kind, mount) {
let devItem;
try {
devItem = new PlaceDeviceInfo(kind, mount);
} catch (e) {
if (e.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.NOT_FOUND))
return;
throw e;
}
const devItem = new PlaceDeviceInfo(kind, mount);
this._places[kind].push(devItem);
}
_addVolume(kind, volume) {
let volItem;
try {
volItem = new PlaceVolumeInfo(kind, volume);
} catch (e) {
if (e.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.NOT_FOUND))
return;
throw e;
}
const volItem = new PlaceVolumeInfo(kind, volume);
this._places[kind].push(volItem);
}

View File

@@ -26,12 +26,37 @@ import {WorkspaceIndicator} from './workspaceIndicator.js';
const ICON_TEXTURE_SIZE = 24;
const DND_ACTIVATE_TIMEOUT = 500;
const MIN_DRAG_UPDATE_INTERVAL = 500 * GLib.TIME_SPAN_MILLISECOND;
const DRAG_OPACITY = 0.3;
const DRAG_FADE_DURATION = 200;
const DRAG_RESIZE_DURATION = 400;
const DRAG_PROXIMITY_THRESHOLD = 30;
const SAVED_POSITIONS_KEY = 'window-list-positions';
const ATTENTION_INDICATOR_MAX_SCALE = 0.4;
const ATTENTION_INDICATOR_TRANSITION_DURATION = 300;
const GroupingMode = {
NEVER: 0,
AUTO: 1,
ALWAYS: 2,
};
class DragPlaceholderItem extends DashItemContainer {
static {
GObject.registerClass(this);
}
constructor() {
super();
this.setChild(new St.Bin({style_class: 'placeholder'}));
}
}
/**
* @param {Shell.App} app - an app
* @returns {number} - the smallest stable sequence of the app's windows
@@ -105,26 +130,89 @@ class WindowContextMenu extends PopupMenu.PopupMenu {
}
}
class WindowTitle extends St.BoxLayout {
class TitleWidget extends St.Widget {
static {
GObject.registerClass({
GTypeFlags: GObject.TypeFlags.ABSTRACT,
Properties: {
'abstract-label': GObject.ParamSpec.boolean(
'abstract-label', null, null,
GObject.ParamFlags.READWRITE,
false),
},
}, this);
}
constructor() {
super({
layout_manager: new Clutter.BinLayout(),
x_expand: true,
y_expand: true,
});
const hbox = new St.BoxLayout({
style_class: 'window-button-box',
x_expand: true,
y_expand: true,
});
this.add_child(hbox);
this._icon = new St.Bin({
style_class: 'window-button-icon',
});
hbox.add_child(this._icon);
this._label = new St.Label({
y_align: Clutter.ActorAlign.CENTER,
});
hbox.add_child(this._label);
this.label_actor = this._label;
this.bind_property('abstract-label',
this._label, 'visible',
GObject.BindingFlags.SYNC_CREATE |
GObject.BindingFlags.INVERT_BOOLEAN);
this._abstractLabel = new St.Widget({
style_class: 'window-button-abstract-label',
x_expand: true,
y_expand: true,
});
hbox.add_child(this._abstractLabel);
this.bind_property('abstract-label',
this._abstractLabel, 'visible',
GObject.BindingFlags.SYNC_CREATE);
this._attentionIndicator = new St.Widget({
style_class: 'window-button-attention-indicator',
x_expand: true,
y_expand: true,
y_align: Clutter.ActorAlign.END,
scale_x: 0,
});
this._attentionIndicator.set_pivot_point(0.5, 0.5);
this.add_child(this._attentionIndicator);
}
setNeedsAttention(enable) {
this._attentionIndicator.ease({
scaleX: enable ? ATTENTION_INDICATOR_MAX_SCALE : 0,
duration: ATTENTION_INDICATOR_TRANSITION_DURATION,
});
}
}
class WindowTitle extends TitleWidget {
static {
GObject.registerClass(this);
}
constructor(metaWindow) {
super({
style_class: 'window-button-box',
x_expand: true,
y_expand: true,
});
super();
this._metaWindow = metaWindow;
this._icon = new St.Bin({style_class: 'window-button-icon'});
this.add_child(this._icon);
this.label_actor = new St.Label({y_align: Clutter.ActorAlign.CENTER});
this.label_actor.clutter_text.single_line_mode = true;
this.add_child(this.label_actor);
this._metaWindow.connectObject(
'notify::wm-class',
() => this._updateIcon(), GObject.ConnectFlags.AFTER,
@@ -132,10 +220,13 @@ class WindowTitle extends St.BoxLayout {
() => this._updateIcon(), GObject.ConnectFlags.AFTER,
'notify::title', () => this._updateTitle(),
'notify::minimized', () => this._minimizedChanged(),
'notify::demands-attention', () => this._updateNeedsAttention(),
'notify::urgent', () => this._updateNeedsAttention(),
this);
this._updateIcon();
this._minimizedChanged();
this._updateNeedsAttention();
}
_minimizedChanged() {
@@ -143,14 +234,19 @@ class WindowTitle extends St.BoxLayout {
this._updateTitle();
}
_updateNeedsAttention() {
const {urgent, demandsAttention} = this._metaWindow;
this.setNeedsAttention(urgent || demandsAttention);
}
_updateTitle() {
if (!this._metaWindow.title)
return;
if (this._metaWindow.minimized)
this.label_actor.text = '[%s]'.format(this._metaWindow.title);
this._label.text = '[%s]'.format(this._metaWindow.title);
else
this.label_actor.text = this._metaWindow.title;
this._label.text = this._metaWindow.title;
}
_updateIcon() {
@@ -166,6 +262,100 @@ class WindowTitle extends St.BoxLayout {
}
}
class AppTitle extends TitleWidget {
static {
GObject.registerClass(this);
}
constructor(app) {
super();
this._app = app;
this._windows = new Set();
this._icon.child = app.create_icon_texture(ICON_TEXTURE_SIZE);
this._label.text = app.get_name();
this._app.connectObject(
'windows-changed', () => this._onWindowsChanged(),
this);
this._onWindowsChanged();
this.connect('destroy', () => {
console.debug(`Clearing windows of app ${this._app.id}`);
this._windows.clear();
});
}
_onWindowsChanged() {
const windows = this._app.get_windows();
const removed = [...this._windows].filter(w => !windows.includes(w));
removed.forEach(w => this._untrackWindow(w));
windows.forEach(w => this._trackWindow(w));
this._updateNeedsAttention();
}
_trackWindow(window) {
if (this._windows.has(window))
return;
console.debug(`Tracking window ${window} for app ${this._app.id}`);
window.connectObject(
'notify::urgent', () => this._updateNeedsAttention(),
'notify::demands-attention', () => this._updateNeedsAttention(),
this);
this._windows.add(window);
}
_untrackWindow(window) {
if (!this._windows.delete(window))
return;
console.debug(`Untracking window ${window} for app ${this._app.id}`);
window.disconnectObject(this);
}
_updateNeedsAttention() {
const needsAttention =
[...this._windows].some(w => w.urgent || w.demandsAttention);
this.setNeedsAttention(needsAttention);
}
}
class DragActor extends St.Bin {
static {
GObject.registerClass(this);
}
constructor(source, titleActor) {
super({
style_class: 'window-button-drag-actor',
child: titleActor,
width: source.width,
});
this.source = source;
}
setTargetWidth(width) {
const currentWidth = this.width;
// set width immediately so shell's DND code uses correct values
this.set({width});
// then transition from the original to the new width
const laters = global.compositor.get_laters();
laters.add(Meta.LaterType.BEFORE_REDRAW, () => {
this.set({width: currentWidth});
this.ease({
width,
duration: DRAG_RESIZE_DURATION,
});
return GLib.SOURCE_REMOVE;
});
}
}
class BaseButton extends DashItemContainer {
static {
GObject.registerClass({
@@ -176,6 +366,10 @@ class BaseButton extends DashItemContainer {
GObject.ParamFlags.READWRITE,
false),
},
Signals: {
'drag-begin': {},
'drag-end': {},
},
}, this);
}
@@ -220,6 +414,18 @@ class BaseButton extends DashItemContainer {
this._windowEnteredOrLeftMonitor.bind(this),
this);
}
this._button._delegate = this;
this._draggable = DND.makeDraggable(this._button);
this._draggable.connect('drag-begin', () => {
this._removeLongPressTimeout();
this.emit('drag-begin');
});
this._draggable.connect('drag-cancelled', () => {
this._draggable._dragActor?.setTargetWidth(this.width);
this.emit('drag-end');
});
this._draggable.connect('drag-end', () => this.emit('drag-end'));
}
get active() {
@@ -303,6 +509,28 @@ class BaseButton extends DashItemContainer {
this._onClicked(this, 1);
}
getDragActor() {
const titleActor = this._createTitleActor();
titleActor.set({abstractLabel: true});
const dragActor = new DragActor(this, titleActor);
const [, natWidth] = this.get_preferred_width(-1);
const targetWidth = Math.min(natWidth / 2, this.width);
dragActor.setTargetWidth(targetWidth);
return dragActor;
}
getDragActorSource() {
return this;
}
_createTitleActor() {
throw new GObject.NotImplementedError(
`_createTitleActor in ${this.constructor.name}`);
}
_onClicked(_actor, _button) {
throw new GObject.NotImplementedError(
`_onClicked in ${this.constructor.name}`);
@@ -413,7 +641,7 @@ class WindowButton extends BaseButton {
this._updateVisibility();
this._windowTitle = new WindowTitle(this.metaWindow);
this._windowTitle = this._createTitleActor();
this._button.set_child(this._windowTitle);
this.label_actor = this._windowTitle.label_actor;
@@ -429,6 +657,14 @@ class WindowButton extends BaseButton {
this._updateStyle();
}
get id() {
return `window:${this.metaWindow.get_id()}`;
}
_createTitleActor() {
return new WindowTitle(this.metaWindow);
}
_onClicked(actor, button) {
if (this._contextMenu.isOpen) {
this._contextMenu.close();
@@ -545,33 +781,6 @@ class AppButton extends BaseButton {
this.app = app;
this._updateVisibility();
let stack = new St.Widget({layout_manager: new Clutter.BinLayout()});
this._button.set_child(stack);
this._singleWindowTitle = new St.Bin({
x_expand: true,
});
stack.add_child(this._singleWindowTitle);
this._multiWindowTitle = new St.BoxLayout({
style_class: 'window-button-box',
x_expand: true,
});
stack.add_child(this._multiWindowTitle);
this._icon = new St.Bin({
style_class: 'window-button-icon',
child: app.create_icon_texture(ICON_TEXTURE_SIZE),
});
this._multiWindowTitle.add_child(this._icon);
let label = new St.Label({
text: app.get_name(),
y_align: Clutter.ActorAlign.CENTER,
});
this._multiWindowTitle.add_child(label);
this._multiWindowTitle.label_actor = label;
this._menuManager = new PopupMenu.PopupMenuManager(this);
this._menu = new PopupMenu.PopupMenu(this, 0.5, St.Side.BOTTOM);
this._menu.connect('open-state-changed',
@@ -581,12 +790,6 @@ class AppButton extends BaseButton {
this._menuManager.addMenu(this._menu);
Main.uiGroup.add_child(this._menu.actor);
this._appContextMenu = new AppContextMenu(this);
this._appContextMenu.connect('open-state-changed',
this._onMenuStateChanged.bind(this));
this._appContextMenu.actor.hide();
Main.uiGroup.add_child(this._appContextMenu.actor);
this.app.connectObject('windows-changed',
() => this._windowsChanged(), this);
this._windowsChanged();
@@ -597,6 +800,10 @@ class AppButton extends BaseButton {
this._updateStyle();
}
get id() {
return `app:${this.app.get_id()}`;
}
_windowEnteredOrLeftMonitor(metaDisplay, monitorIndex, metaWindow) {
if (this._windowTracker.get_window_app(metaWindow) === this.app &&
monitorIndex === this._monitorIndex) {
@@ -633,36 +840,40 @@ class AppButton extends BaseButton {
}
_windowsChanged() {
let windows = this.getWindowList();
this._singleWindowTitle.visible = windows.length === 1;
this._multiWindowTitle.visible = !this._singleWindowTitle.visible;
const windows = this.getWindowList();
const singleWindowMode = windows.length === 1;
if (this._singleWindowTitle.visible) {
if (!this._windowTitle) {
this.metaWindow = windows[0];
this._windowTitle = new WindowTitle(this.metaWindow);
this._singleWindowTitle.child = this._windowTitle;
this._windowContextMenu = new WindowContextMenu(this, this.metaWindow);
this._windowContextMenu.connect(
'open-state-changed', this._onMenuStateChanged.bind(this));
Main.uiGroup.add_child(this._windowContextMenu.actor);
this._windowContextMenu.actor.hide();
this._contextMenuManager.addMenu(this._windowContextMenu);
}
this._contextMenuManager.removeMenu(this._appContextMenu);
this._contextMenu = this._windowContextMenu;
this.label_actor = this._windowTitle.label_actor;
if (this._singleWindowMode === singleWindowMode)
return;
this._singleWindowMode = singleWindowMode;
this._button.child?.destroy();
this._contextMenu?.destroy();
if (this._singleWindowMode) {
const [window] = windows;
this._contextMenu = new WindowContextMenu(this, window);
} else {
if (this._windowTitle) {
this.metaWindow = null;
this._singleWindowTitle.child = null;
this._windowTitle = null;
this._windowContextMenu.destroy();
this._windowContextMenu = null;
}
this._contextMenu = this._appContextMenu;
this._contextMenuManager.addMenu(this._appContextMenu);
this.label_actor = this._multiWindowTitle.label_actor;
this._contextMenu = new AppContextMenu(this);
}
this._button.child = this._createTitleActor();
this.label_actor = this._button.child.label_actor;
this._contextMenu.connect(
'open-state-changed', this._onMenuStateChanged.bind(this));
Main.uiGroup.add_child(this._contextMenu.actor);
this._contextMenu.actor.hide();
this._contextMenuManager.addMenu(this._contextMenu);
}
_createTitleActor() {
if (this._singleWindowMode) {
const [window] = this.getWindowList();
return new WindowTitle(window);
} else {
return new AppTitle(this.app);
}
}
@@ -835,17 +1046,28 @@ class WindowList extends St.Widget {
'window-created', (dsp, win) => this._addWindow(win, true), this);
Main.xdndHandler.connectObject(
'drag-begin', () => this._monitorDrag(),
'drag-end', () => this._stopMonitoringDrag(),
'drag-begin', () => this._monitorXdndDrag(),
'drag-end', () => this._stopMonitoringXdndDrag(),
this);
this._dragMonitor = {
dragMotion: this._onDragMotion.bind(this),
this._xdndDragMonitor = {
dragMotion: this._onXdndDragMotion.bind(this),
};
this._itemDragMonitor = {
dragMotion: this._onItemDragMotion.bind(this),
dragDrop: this._onItemDragDrop.bind(this),
};
this._dndTimeoutId = 0;
this._dndWindow = null;
this._dragPlaceholder = null;
this._dragPlaceholderPos = -1;
this._lastPlaceholderUpdate = 0;
this._delegate = this;
this._settings = settings;
this._settings.connectObject('changed::grouping-mode',
() => this._groupingModeChanged(), this);
@@ -958,6 +1180,8 @@ class WindowList extends St.Widget {
for (let i = 0; i < apps.length; i++)
this._addApp(apps[i], false);
}
this._restorePositions();
}
_updateKeyboardAnchor() {
@@ -975,14 +1199,37 @@ class WindowList extends St.Widget {
this._removeApp(app);
}
_addApp(app, animate) {
let button = new AppButton(app, this._perMonitor, this._monitor.index);
_addButton(button, animate) {
this._settings.bind('display-all-workspaces',
button, 'ignore-workspace', Gio.SettingsBindFlags.GET);
button.connect('drag-begin', () => {
button.ease({
opacity: 255 * DRAG_OPACITY,
duration: DRAG_FADE_DURATION,
});
this._monitorItemDrag();
});
button.connect('drag-end', () => {
button.ease({
opacity: 255,
duration: DRAG_FADE_DURATION,
});
this._stopMonitoringItemDrag();
this._clearDragPlaceholder();
});
this._windowList.add_child(button);
button.show(animate);
}
_addApp(app, animate) {
const button = new AppButton(app, this._perMonitor, this._monitor.index);
this._addButton(button, animate);
}
_removeApp(app) {
let children = this._windowList.get_children();
let child = children.find(c => c.app === app);
@@ -1003,11 +1250,8 @@ class WindowList extends St.Widget {
this._windowSignals.set(
win, win.connect('unmanaged', () => this._removeWindow(win)));
let button = new WindowButton(win, this._perMonitor, this._monitor.index);
this._settings.bind('display-all-workspaces',
button, 'ignore-workspace', Gio.SettingsBindFlags.GET);
this._windowList.add_child(button);
button.show(animate);
const button = new WindowButton(win, this._perMonitor, this._monitor.index);
this._addButton(button, animate);
}
_removeWindow(win) {
@@ -1027,16 +1271,135 @@ class WindowList extends St.Widget {
child?.animateOutAndDestroy();
}
_monitorDrag() {
DND.addDragMonitor(this._dragMonitor);
_clearDragPlaceholder() {
this._dragPlaceholder?.animateOutAndDestroy();
this._dragPlaceholder = null;
this._dragPlaceholderPos = -1;
}
_stopMonitoringDrag() {
DND.removeDragMonitor(this._dragMonitor);
handleDragOver(source, _actor, x, _y, _time) {
if (!(source instanceof BaseButton))
return DND.DragMotionResult.NO_DROP;
const buttons = this._windowList.get_children().filter(c => c instanceof BaseButton);
const buttonPos = buttons.indexOf(source);
const numButtons = buttons.length;
let boxWidth = this._windowList.width;
// Transform to window list coordinates for index calculation
// (mostly relevant for RTL to discard workspace indicator etc.)
x -= this._windowList.x;
const rtl = this.text_direction === Clutter.TextDirection.RTL;
let pos = rtl
? numButtons - Math.round(x * numButtons / boxWidth)
: Math.round(x * numButtons / boxWidth);
pos = Math.clamp(pos, 0, numButtons);
const timeDelta =
GLib.get_monotonic_time() - this._lastPlaceholderUpdate;
if (pos !== this._dragPlaceholderPos && timeDelta >= MIN_DRAG_UPDATE_INTERVAL) {
this._clearDragPlaceholder();
this._dragPlaceholderPos = pos;
this._lastPlaceholderUpdate = GLib.get_monotonic_time();
// Don't allow positioning before or after self
if (pos === buttonPos || pos === buttonPos + 1)
return DND.DragMotionResult.CONTINUE;
this._dragPlaceholder = new DragPlaceholderItem();
const sibling = buttons[pos] ?? null;
if (sibling)
this._windowList.insert_child_below(this._dragPlaceholder, sibling);
else
this._windowList.insert_child_above(this._dragPlaceholder, null);
this._dragPlaceholder.show(true);
}
return this._dragPlaceholder
? DND.DragMotionResult.MOVE_DROP
: DND.DragMotionResult.NO_DROP;
}
acceptDrop(source, _actor, _x, _y, _time) {
if (this._dragPlaceholderPos >= 0)
this._windowList.set_child_at_index(source, this._dragPlaceholderPos);
this._clearDragPlaceholder();
this._savePositions();
return true;
}
_getPositionStateKey() {
return `${SAVED_POSITIONS_KEY}:${this._monitor.index}`;
}
_savePositions() {
const buttons = this._windowList.get_children()
.filter(b => b instanceof BaseButton);
global.set_runtime_state(this._getPositionStateKey(),
new GLib.Variant('as', buttons.map(b => b.id)));
}
_restorePositions() {
const positions = global.get_runtime_state('as',
this._getPositionStateKey())?.deepUnpack() ?? [];
for (const button of this._windowList.get_children()) {
const pos = positions.indexOf(button.id);
if (pos > -1)
this._windowList.set_child_at_index(button, pos);
}
}
_monitorItemDrag() {
DND.addDragMonitor(this._itemDragMonitor);
}
_stopMonitoringItemDrag() {
DND.removeDragMonitor(this._itemDragMonitor);
}
_onItemDragMotion(dragEvent) {
const {source, targetActor, dragActor, x, y} = dragEvent;
const hasTarget = this._windowList.contains(targetActor);
const isNear = Math.abs(y - this.y) < DRAG_PROXIMITY_THRESHOLD;
if (hasTarget || isNear)
return this.handleDragOver(source, dragActor, x, y);
this._clearDragPlaceholder();
return DND.DragMotionResult.CONTINUE;
}
_onItemDragDrop(dropEvent) {
if (this._dragPlaceholderPos < 0)
return DND.DragDropResult.CONTINUE;
const {source} = dropEvent.dropActor;
this.acceptDrop(source);
dropEvent.dropActor.destroy();
// HACK: SUCESS would make more sense, but results in gnome-shell
// skipping all drag-end code
return DND.DragDropResult.CONTINUE;
}
_monitorXdndDrag() {
DND.addDragMonitor(this._xdndDragMonitor);
}
_stopMonitoringXdndDrag() {
DND.removeDragMonitor(this._xdndDragMonitor);
this._removeActivateTimeout();
}
_onDragMotion(dragEvent) {
_onXdndDragMotion(dragEvent) {
if (Main.overview.visible ||
!this.contains(dragEvent.targetActor)) {
this._removeActivateTimeout();
@@ -1084,7 +1447,7 @@ class WindowList extends St.Widget {
this._windowSignals.forEach((id, win) => win.disconnect(id));
this._windowSignals.clear();
this._stopMonitoringDrag();
this._stopMonitoringXdndDrag();
this._settings.disconnectObject();
this._settings = null;

View File

@@ -37,6 +37,7 @@ workspaceIndicatorSources = [
command: transform_stylesheet,
capture: true,
),
files('../workspace-indicator/workspacePrefs.js'),
]
extension_sources += files('prefs.js') + workspaceIndicatorSources

View File

@@ -11,13 +11,18 @@ import Gtk from 'gi://Gtk';
import {ExtensionPreferences, gettext as _} from 'resource:///org/gnome/Shell/Extensions/js/extensions/prefs.js';
class WindowListPrefsWidget extends Adw.PreferencesPage {
import {WorkspacesPage} from './workspacePrefs.js';
class WindowListPage extends Adw.PreferencesPage {
static {
GObject.registerClass(this);
}
constructor(settings) {
super();
super({
title: _('Window List'),
icon_name: 'focus-windows-symbolic',
});
this._actionGroup = new Gio.SimpleActionGroup();
this.insert_action_group('window-list', this._actionGroup);
@@ -70,17 +75,13 @@ class WindowListPrefsWidget extends Adw.PreferencesPage {
action_name: 'window-list.display-all-workspaces',
});
miscGroup.add(row);
row = new Adw.SwitchRow({
title: _('Show workspace previews'),
action_name: 'window-list.embed-previews',
});
miscGroup.add(row);
}
}
export default class WindowListPrefs extends ExtensionPreferences {
getPreferencesWidget() {
return new WindowListPrefsWidget(this.getSettings());
fillPreferencesWindow(window) {
const settings = this.getSettings();
window.add(new WindowListPage(settings));
window.add(new WorkspacesPage(settings));
}
}

View File

@@ -17,10 +17,19 @@
height: 2.45em;
}
.window-button {
.window-button,
.window-button-drag-actor {
padding: 4px, 3px;
}
.window-button-drag-actor {
background-color: #444;
border-radius: 7px;
border-width: 2px;
border-color: #fff;
box-shadow: 0 1px 2px rgba(0,0,0,0.1);
}
.window-button:first-child:ltr {
padding-left: 2px;
}
@@ -41,11 +50,18 @@
transition: 100ms ease;
}
.window-button > StWidget {
.window-button > StWidget,
.window-list .placeholder {
-st-natural-width: 18.75em;
max-width: 18.75em;
}
.window-list .placeholder {
border: 1px solid rgba(255,255,255,0.4);
border-radius: 7px;
margin: 4px;
}
.window-button:hover > StWidget {
background-color: #303030;
}
@@ -81,3 +97,18 @@
width: 24px;
height: 24px;
}
.window-button-abstract-label {
background-color: #888;
border-radius: 99px;
margin: 6px;
}
.window-button-attention-indicator {
background-color: -st-accent-color;
height: 2px;
}
.window-button.minimized .window-button-attention-indicator {
background-color: st-transparentize(-st-accent-color, 0.4);
}

View File

@@ -23,7 +23,6 @@
.window-button > StWidget {
color: #000;
background-color: transparent;
}
.window-button:hover > StWidget {
@@ -56,3 +55,12 @@
color: #aaa;
background-color: #f9f9f9;
}
.window-button-drag-actor {
background-color: #ddd;
border-color: #888;
}
.window-list .placeholder {
border-color: rgba(0,0,0,0.5);
}

View File

@@ -13,4 +13,4 @@ extension_data += files(
)
extension_schemas += files('schemas/' + metadata_conf.get('gschemaname') + '.gschema.xml')
extension_sources += files('prefs.js', 'workspaceIndicator.js')
extension_sources += files('prefs.js', 'workspaceIndicator.js', 'workspacePrefs.js')

View File

@@ -3,289 +3,12 @@
//
// SPDX-License-Identifier: GPL-2.0-or-later
import Adw from 'gi://Adw';
import Gio from 'gi://Gio';
import GLib from 'gi://GLib';
import GObject from 'gi://GObject';
import Gtk from 'gi://Gtk';
import Pango from 'gi://Pango';
import {ExtensionPreferences} from 'resource:///org/gnome/Shell/Extensions/js/extensions/prefs.js';
import {ExtensionPreferences, gettext as _} from 'resource:///org/gnome/Shell/Extensions/js/extensions/prefs.js';
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);
class NewItemModel extends GObject.Object {
static [GObject.interfaces] = [Gio.ListModel];
static {
GObject.registerClass(this);
}
#item = new NewItem();
vfunc_get_item_type() {
return NewItem;
}
vfunc_get_n_items() {
return 1;
}
vfunc_get_item(_pos) {
return this.#item;
}
}
class WorkspacesList extends GObject.Object {
static [GObject.interfaces] = [Gio.ListModel];
static {
GObject.registerClass(this);
}
#settings = new Gio.Settings({schema_id: WORKSPACE_SCHEMA});
#names = this.#settings.get_strv(WORKSPACE_KEY);
#items = Gtk.StringList.new(this.#names);
#changedId;
constructor() {
super();
this.#changedId =
this.#settings.connect(`changed::${WORKSPACE_KEY}`, () => {
const removed = this.#names.length;
this.#names = this.#settings.get_strv(WORKSPACE_KEY);
this.#items.splice(0, removed, this.#names);
this.items_changed(0, removed, this.#names.length);
});
}
append() {
const name = _('Workspace %d').format(this.#names.length + 1);
this.#names.push(name);
this.#settings.block_signal_handler(this.#changedId);
this.#settings.set_strv(WORKSPACE_KEY, this.#names);
this.#settings.unblock_signal_handler(this.#changedId);
const pos = this.#items.get_n_items();
this.#items.append(name);
this.items_changed(pos, 0, 1);
}
remove(name) {
const pos = this.#names.indexOf(name);
if (pos < 0)
return;
this.#names.splice(pos, 1);
this.#settings.block_signal_handler(this.#changedId);
this.#settings.set_strv(WORKSPACE_KEY, this.#names);
this.#settings.unblock_signal_handler(this.#changedId);
this.#items.remove(pos);
this.items_changed(pos, 1, 0);
}
rename(oldName, newName) {
const pos = this.#names.indexOf(oldName);
if (pos < 0)
return;
this.#names.splice(pos, 1, newName);
this.#items.splice(pos, 1, [newName]);
this.#settings.block_signal_handler(this.#changedId);
this.#settings.set_strv(WORKSPACE_KEY, this.#names);
this.#settings.unblock_signal_handler(this.#changedId);
}
vfunc_get_item_type() {
return Gtk.StringObject;
}
vfunc_get_n_items() {
return this.#items.get_n_items();
}
vfunc_get_item(pos) {
return this.#items.get_item(pos);
}
}
class WorkspacesGroup extends Adw.PreferencesGroup {
static {
GObject.registerClass(this);
this.install_action('workspaces.add', null,
self => self._workspaces.append());
this.install_action('workspaces.remove', 's',
(self, name, param) => self._workspaces.remove(param.unpack()));
this.install_action('workspaces.rename', '(ss)',
(self, name, param) => self._workspaces.rename(...param.deepUnpack()));
}
constructor() {
super({
title: _('Workspace Names'),
});
this._workspaces = new WorkspacesList();
const store = new Gio.ListStore({item_type: Gio.ListModel});
const listModel = new Gtk.FlattenListModel({model: store});
store.append(this._workspaces);
store.append(new NewItemModel());
this._list = new Gtk.ListBox({
selection_mode: Gtk.SelectionMode.NONE,
css_classes: ['boxed-list'],
});
this._list.connect('row-activated', (l, row) => row.edit());
this.add(this._list);
this._list.bind_model(listModel, item => {
return item instanceof NewItem
? new NewWorkspaceRow()
: new WorkspaceRow(item.string);
});
}
}
class WorkspaceRow extends Adw.PreferencesRow {
static {
GObject.registerClass(this);
}
constructor(name) {
super({name});
const box = new Gtk.Box({
spacing: 12,
margin_top: 6,
margin_bottom: 6,
margin_start: 6,
margin_end: 6,
});
const label = new Gtk.Label({
hexpand: true,
xalign: 0,
max_width_chars: 25,
ellipsize: Pango.EllipsizeMode.END,
});
this.bind_property('name', label, 'label',
GObject.BindingFlags.SYNC_CREATE);
box.append(label);
const button = new Gtk.Button({
action_name: 'workspaces.remove',
icon_name: 'edit-delete-symbolic',
has_frame: false,
});
box.append(button);
this.bind_property_full('name',
button, 'action-target',
GObject.BindingFlags.SYNC_CREATE,
(bind, target) => [true, new GLib.Variant('s', target)],
null);
this._entry = new Gtk.Entry({
max_width_chars: 25,
});
const controller = new Gtk.ShortcutController();
controller.add_shortcut(new Gtk.Shortcut({
trigger: Gtk.ShortcutTrigger.parse_string('Escape'),
action: Gtk.CallbackAction.new(() => {
this._stopEdit();
return true;
}),
}));
this._entry.add_controller(controller);
this._stack = new Gtk.Stack();
this._stack.add_named(box, 'display');
this._stack.add_named(this._entry, 'edit');
this.child = this._stack;
this._entry.connect('activate', () => {
this.activate_action('workspaces.rename',
new GLib.Variant('(ss)', [this.name, this._entry.text]));
this.name = this._entry.text;
this._stopEdit();
});
this._entry.connect('notify::has-focus', () => {
if (this._entry.has_focus)
return;
this._stopEdit();
});
}
edit() {
this._entry.text = this.name;
this._entry.grab_focus();
this._stack.visible_child_name = 'edit';
}
_stopEdit() {
this.grab_focus();
this._stack.visible_child_name = 'display';
}
}
class NewWorkspaceRow extends Adw.PreferencesRow {
static {
GObject.registerClass(this);
}
constructor() {
super({
action_name: 'workspaces.add',
child: new Gtk.Image({
icon_name: 'list-add-symbolic',
pixel_size: 16,
margin_top: 12,
margin_bottom: 12,
margin_start: 12,
margin_end: 12,
}),
});
this.update_property(
[Gtk.AccessibleProperty.LABEL], [_('Add Workspace')]);
}
}
import {WorkspacesPage} from './workspacePrefs.js';
export default class WorkspaceIndicatorPrefs extends ExtensionPreferences {
getPreferencesWidget() {
const page = new Adw.PreferencesPage();
page.add(new GeneralGroup(this.getSettings()));
page.add(new WorkspacesGroup());
return page;
return new WorkspacesPage(this.getSettings());
}
}

View File

@@ -132,7 +132,7 @@ class WorkspaceThumbnail extends St.Button {
const box = new St.BoxLayout({
style_class: 'workspace-box',
y_expand: true,
vertical: true,
orientation: Clutter.Orientation.VERTICAL,
});
this.set_child(box);

View File

@@ -0,0 +1,232 @@
// SPDX-FileCopyrightText: 2012 Giovanni Campagna <gcampagna@src.gnome.org>
// SPDX-FileCopyrightText: 2014 Florian Müllner <fmuellner@gnome.org>
//
// SPDX-License-Identifier: GPL-2.0-or-later
import Adw from 'gi://Adw';
import Gio from 'gi://Gio';
import GLib from 'gi://GLib';
import GObject from 'gi://GObject';
import Gtk from 'gi://Gtk';
import {gettext as _} from 'resource:///org/gnome/Shell/Extensions/js/extensions/prefs.js';
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'),
});
this.add(row);
settings.bind('embed-previews',
row, 'active',
Gio.SettingsBindFlags.DEFAULT);
}
}
class NewItem extends GObject.Object {}
GObject.registerClass(NewItem);
class NewItemModel extends GObject.Object {
static [GObject.interfaces] = [Gio.ListModel];
static {
GObject.registerClass(this);
}
#item = new NewItem();
vfunc_get_item_type() {
return NewItem;
}
vfunc_get_n_items() {
return 1;
}
vfunc_get_item(_pos) {
return this.#item;
}
}
class WorkspacesList extends GObject.Object {
static [GObject.interfaces] = [Gio.ListModel];
static {
GObject.registerClass(this);
}
#settings = new Gio.Settings({schema_id: WORKSPACE_SCHEMA});
#names = this.#settings.get_strv(WORKSPACE_KEY);
#items = Gtk.StringList.new(this.#names);
#changedId;
constructor() {
super();
this.#changedId =
this.#settings.connect(`changed::${WORKSPACE_KEY}`, () => {
const removed = this.#names.length;
this.#names = this.#settings.get_strv(WORKSPACE_KEY);
this.#items.splice(0, removed, this.#names);
this.items_changed(0, removed, this.#names.length);
});
}
append() {
const name = _('Workspace %d').format(this.#names.length + 1);
this.#names.push(name);
this.#settings.block_signal_handler(this.#changedId);
this.#settings.set_strv(WORKSPACE_KEY, this.#names);
this.#settings.unblock_signal_handler(this.#changedId);
const pos = this.#items.get_n_items();
this.#items.append(name);
this.items_changed(pos, 0, 1);
}
remove(name) {
const pos = this.#names.indexOf(name);
if (pos < 0)
return;
this.#names.splice(pos, 1);
this.#settings.block_signal_handler(this.#changedId);
this.#settings.set_strv(WORKSPACE_KEY, this.#names);
this.#settings.unblock_signal_handler(this.#changedId);
this.#items.remove(pos);
this.items_changed(pos, 1, 0);
}
rename(oldName, newName) {
const pos = this.#names.indexOf(oldName);
if (pos < 0)
return;
this.#names.splice(pos, 1, newName);
this.#items.splice(pos, 1, [newName]);
this.#settings.block_signal_handler(this.#changedId);
this.#settings.set_strv(WORKSPACE_KEY, this.#names);
this.#settings.unblock_signal_handler(this.#changedId);
}
vfunc_get_item_type() {
return Gtk.StringObject;
}
vfunc_get_n_items() {
return this.#items.get_n_items();
}
vfunc_get_item(pos) {
return this.#items.get_item(pos);
}
}
class WorkspacesGroup extends Adw.PreferencesGroup {
static {
GObject.registerClass(this);
this.install_action('workspaces.add', null,
self => self._workspaces.append());
this.install_action('workspaces.remove', 's',
(self, name, param) => self._workspaces.remove(param.unpack()));
this.install_action('workspaces.rename', '(ss)',
(self, name, param) => self._workspaces.rename(...param.deepUnpack()));
}
constructor() {
super({
title: _('Workspace Names'),
});
this._workspaces = new WorkspacesList();
const store = new Gio.ListStore({item_type: Gio.ListModel});
const listModel = new Gtk.FlattenListModel({model: store});
store.append(this._workspaces);
store.append(new NewItemModel());
this._list = new Gtk.ListBox({
selection_mode: Gtk.SelectionMode.NONE,
css_classes: ['boxed-list'],
});
this.add(this._list);
const newRowProps = {
title: _('Add Workspace'),
action_name: 'workspaces.add',
start_icon_name: 'list-add-symbolic',
};
this._list.bind_model(listModel, item => {
return item instanceof NewItem
? new Adw.ButtonRow({...newRowProps})
: new WorkspaceRow(item.string);
});
}
}
class WorkspaceRow extends Adw.EntryRow {
static {
GObject.registerClass(this);
}
constructor(name) {
super({
name,
text: name,
});
const button = new Gtk.Button({
tooltip_text: _('Remove'),
action_name: 'workspaces.remove',
icon_name: 'edit-delete-symbolic',
has_frame: false,
halign: Gtk.Align.CENTER,
valign: Gtk.Align.CENTER,
});
this.add_suffix(button);
this.bind_property_full('name',
button, 'action-target',
GObject.BindingFlags.SYNC_CREATE,
(bind, target) => [true, new GLib.Variant('s', target)],
null);
this.connect('changed', () => {
this.activate_action('workspaces.rename',
new GLib.Variant('(ss)', [this.name, this.text]));
this.name = this.text;
});
}
}
export class WorkspacesPage extends Adw.PreferencesPage {
static {
GObject.registerClass(this);
}
constructor(settings) {
super({
title: _('Workspaces'),
icon_name: 'view-grid-symbolic',
});
this.add(new GeneralGroup(settings));
this.add(new WorkspacesGroup());
}
}

View File

@@ -4,7 +4,7 @@
project(
'gnome-shell-extensions',
version: '47.4',
version: '48.beta',
meson_version: '>= 1.1.0',
license: 'GPL-2.0-or-later',
)

View File

@@ -29,6 +29,7 @@ he
hi
hr
hu
ia
id
is
it

View File

@@ -18,6 +18,6 @@ extensions/window-list/extension.js
extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml
extensions/window-list/prefs.js
extensions/windowsNavigator/extension.js
extensions/workspace-indicator/prefs.js
extensions/workspace-indicator/schemas/org.gnome.shell.extensions.workspace-indicator.gschema.xml
extensions/workspace-indicator/workspaceIndicator.js
extensions/workspace-indicator/workspacePrefs.js

123
po/be.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 15:27+0000\n"
"PO-Revision-Date: 2024-08-23 16:00+0300\n"
"POT-Creation-Date: 2024-10-16 14:41+0000\n"
"PO-Revision-Date: 2024-10-22 16:27+0300\n"
"Last-Translator: Yuras Shumovich <shumovichy@gmail.com>\n"
"Language-Team: Belarusian <i18n-bel-gnome@googlegroups.com>\n"
"Language: be\n"
@@ -18,7 +18,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.4\n"
"X-Generator: Poedit 3.5\n"
#: data/gnome-classic.desktop.in:3
msgid "GNOME Classic"
@@ -67,7 +67,7 @@ msgstr "Дадаць правіла"
#. TRANSLATORS: %s is the filesystem name
#: extensions/drive-menu/extension.js:123
#: extensions/places-menu/placeDisplay.js:218
#: extensions/places-menu/placeDisplay.js:187
#, javascript-format
msgid "Ejecting drive “%s” failed:"
msgstr "Не ўдалося выняць дыск «%s»:"
@@ -114,28 +114,35 @@ msgstr ""
msgid "Places"
msgstr "Месцы"
#: extensions/places-menu/placeDisplay.js:60
#: extensions/places-menu/placeDisplay.js:53
#, javascript-format
msgid "Failed to launch “%s”"
msgstr "Не ўдалося запусціць «%s»"
#: extensions/places-menu/placeDisplay.js:75
#: extensions/places-menu/placeDisplay.js:68
#, javascript-format
msgid "Failed to mount volume for “%s”"
msgstr "Не ўдалося прымацаваць том для «%s»."
#: extensions/places-menu/placeDisplay.js:135
#: extensions/places-menu/placeDisplay.js:158
msgid "Computer"
msgstr "Камп'ютар"
#: extensions/places-menu/placeDisplay.js:333
#: extensions/places-menu/placeDisplay.js:316
msgid "Home"
msgstr "Хатняя папка"
#: extensions/places-menu/placeDisplay.js:378
msgid "Browse Network"
msgstr "Агляд сеткі"
#: extensions/places-menu/placeDisplay.js:322
msgid "Recent"
msgstr "Нядаўнія"
#: extensions/places-menu/placeDisplay.js:328
msgid "Starred"
msgstr "Абраныя"
#: extensions/places-menu/placeDisplay.js:348
msgid "Network"
msgstr "Сетка"
#: extensions/places-menu/placeDisplay.js:355
msgid "Trash"
msgstr "Сметніца"
#: extensions/screenshot-window-sizer/org.gnome.shell.extensions.screenshot-window-sizer.gschema.xml:14
msgid "Cycle Screenshot Sizes"
@@ -225,47 +232,47 @@ 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:72
#: extensions/window-list/extension.js:92
msgid "Close"
msgstr "Закрыць"
#: extensions/window-list/extension.js:99
#: extensions/window-list/extension.js:119
msgid "Unminimize"
msgstr "Скасаваць згортванне"
#: extensions/window-list/extension.js:99
#: extensions/window-list/extension.js:119
msgid "Minimize"
msgstr "Згарнуць"
#: extensions/window-list/extension.js:106
#: extensions/window-list/extension.js:126
msgid "Unmaximize"
msgstr "Скасаваць разгортванне"
#: extensions/window-list/extension.js:106
#: extensions/window-list/extension.js:126
msgid "Maximize"
msgstr "Разгарнуць"
#: extensions/window-list/extension.js:471
#: extensions/window-list/extension.js:641
msgid "Minimize all"
msgstr "Згарнуць усе"
#: extensions/window-list/extension.js:477
#: extensions/window-list/extension.js:647
msgid "Unminimize all"
msgstr "Скасаваць згортванне для ўсіх"
#: extensions/window-list/extension.js:483
#: extensions/window-list/extension.js:653
msgid "Maximize all"
msgstr "Разгарнуць усе"
#: extensions/window-list/extension.js:491
#: extensions/window-list/extension.js:661
msgid "Unmaximize all"
msgstr "Скасаваць разгортванне для ўсіх"
#: extensions/window-list/extension.js:499
#: extensions/window-list/extension.js:669
msgid "Close all"
msgstr "Закрыць усе"
#: extensions/window-list/extension.js:778
#: extensions/window-list/extension.js:911 extensions/window-list/prefs.js:24
msgid "Window List"
msgstr "Спіс вокнаў"
@@ -282,7 +289,7 @@ msgstr ""
"значэнні: «never» (ніколі), «auto» (аўтаматычна), «always» (заўсёды)."
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:26
#: extensions/window-list/prefs.js:79
#: extensions/window-list/prefs.js:75
msgid "Show windows from all workspaces"
msgstr "Паказваць вокны з усіх працоўных прастор"
@@ -305,47 +312,26 @@ msgstr ""
msgid "Show workspace previews in window list"
msgstr "Паказваць папярэдні прагляд працоўных прастор у спісе акон"
#: extensions/window-list/prefs.js:35
#: extensions/window-list/prefs.js:42
msgid "Window Grouping"
msgstr "Групаванне вокнаў"
#: extensions/window-list/prefs.js:40
#: extensions/window-list/prefs.js:47
msgid "Never group windows"
msgstr "Ніколі не групаваць вокны"
#: extensions/window-list/prefs.js:41
#: extensions/window-list/prefs.js:48
msgid "Group windows when space is limited"
msgstr "Групаваць вокны калі не хапае месца"
#: extensions/window-list/prefs.js:42
#: extensions/window-list/prefs.js:49
msgid "Always group windows"
msgstr "Заўсёды групаваць вокны"
#: extensions/window-list/prefs.js:66
#: extensions/window-list/prefs.js:69
msgid "Show on all monitors"
msgstr "Паказваць на ўсіх маніторах"
#: extensions/window-list/prefs.js:92
msgid "Show workspace previews"
msgstr "Паказваць папярэдні прагляд працоўных прастор"
#: 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:155
msgid "Workspace Names"
msgstr "Назвы працоўных прастор"
#: 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 "Паказваць папярэдні прагляд працоўных прастор у верхняй панэлі"
@@ -354,6 +340,37 @@ msgstr "Паказваць папярэдні прагляд працоўных
msgid "Workspace Indicator"
msgstr "Індыкатар працоўнай прасторы"
#: extensions/workspace-indicator/workspacePrefs.js:29
msgid "Show Previews"
msgstr "Паказваць папярэдні прагляд"
#: extensions/workspace-indicator/workspacePrefs.js:87
#, javascript-format
msgid "Workspace %d"
msgstr "Працоўная прастора %d"
#: extensions/workspace-indicator/workspacePrefs.js:154
msgid "Workspace Names"
msgstr "Назвы працоўных прастор"
#: extensions/workspace-indicator/workspacePrefs.js:171
msgid "Add Workspace"
msgstr "Дадаць працоўную прастору"
#: extensions/workspace-indicator/workspacePrefs.js:196
msgid "Remove"
msgstr "Выдаліць"
#: extensions/workspace-indicator/workspacePrefs.js:226
msgid "Workspaces"
msgstr "Працоўныя прасторы"
#~ msgid "Computer"
#~ msgstr "Камп'ютар"
#~ msgid "Show workspace previews"
#~ msgstr "Паказваць папярэдні прагляд працоўных прастор"
#~ msgid "Applications"
#~ msgstr "Праграмы"

121
po/ca.po
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-08-12 20:31+0000\n"
"PO-Revision-Date: 2024-08-19 23:26+0200\n"
"POT-Creation-Date: 2024-10-16 14:41+0000\n"
"PO-Revision-Date: 2024-10-20 21:54+0200\n"
"Last-Translator: Jordi Mas <jmas@softcatala.org>\n"
"Language-Team: Catalan <tradgnome@softcatala.org>\n"
"Language: ca\n"
@@ -69,7 +69,7 @@ msgstr "Afegeix una regla"
#. TRANSLATORS: %s is the filesystem name
#: extensions/drive-menu/extension.js:123
#: extensions/places-menu/placeDisplay.js:218
#: extensions/places-menu/placeDisplay.js:187
#, javascript-format
msgid "Ejecting drive “%s” failed:"
msgstr "Ha fallat l'expulsió de la unitat «%s»:"
@@ -118,28 +118,35 @@ msgstr ""
msgid "Places"
msgstr "Llocs"
#: extensions/places-menu/placeDisplay.js:60
#: extensions/places-menu/placeDisplay.js:53
#, javascript-format
msgid "Failed to launch “%s”"
msgstr "No s'ha pogut iniciar «%s»"
#: extensions/places-menu/placeDisplay.js:75
#: extensions/places-menu/placeDisplay.js:68
#, javascript-format
msgid "Failed to mount volume for “%s”"
msgstr "No s'ha pogut muntar el volum «%s»"
#: extensions/places-menu/placeDisplay.js:135
#: extensions/places-menu/placeDisplay.js:158
msgid "Computer"
msgstr "Ordinador"
#: extensions/places-menu/placeDisplay.js:333
#: extensions/places-menu/placeDisplay.js:316
msgid "Home"
msgstr "Inici"
#: extensions/places-menu/placeDisplay.js:378
msgid "Browse Network"
msgstr "Navega per la xarxa"
#: extensions/places-menu/placeDisplay.js:322
msgid "Recent"
msgstr "Recent"
#: extensions/places-menu/placeDisplay.js:328
msgid "Starred"
msgstr "Destacat"
#: extensions/places-menu/placeDisplay.js:348
msgid "Network"
msgstr "Xarxa"
#: extensions/places-menu/placeDisplay.js:355
msgid "Trash"
msgstr "Paperera"
#: extensions/screenshot-window-sizer/org.gnome.shell.extensions.screenshot-window-sizer.gschema.xml:14
msgid "Cycle Screenshot Sizes"
@@ -229,47 +236,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:70
#: extensions/window-list/extension.js:92
msgid "Close"
msgstr "Tanca"
#: extensions/window-list/extension.js:97
#: extensions/window-list/extension.js:119
msgid "Unminimize"
msgstr "Desminimitza"
#: extensions/window-list/extension.js:97
#: extensions/window-list/extension.js:119
msgid "Minimize"
msgstr "Minimitza"
#: extensions/window-list/extension.js:104
#: extensions/window-list/extension.js:126
msgid "Unmaximize"
msgstr "Desmaximitza"
#: extensions/window-list/extension.js:104
#: extensions/window-list/extension.js:126
msgid "Maximize"
msgstr "Maximitza"
#: extensions/window-list/extension.js:489
#: extensions/window-list/extension.js:641
msgid "Minimize all"
msgstr "Minimitza-ho tot"
#: extensions/window-list/extension.js:495
#: extensions/window-list/extension.js:647
msgid "Unminimize all"
msgstr "Desminimitza-ho tot"
#: extensions/window-list/extension.js:501
#: extensions/window-list/extension.js:653
msgid "Maximize all"
msgstr "Maximitza-ho tot"
#: extensions/window-list/extension.js:509
#: extensions/window-list/extension.js:661
msgid "Unmaximize all"
msgstr "Desmaximitza-ho tot"
#: extensions/window-list/extension.js:517
#: extensions/window-list/extension.js:669
msgid "Close all"
msgstr "Tanca-ho tot"
#: extensions/window-list/extension.js:789
#: extensions/window-list/extension.js:911 extensions/window-list/prefs.js:24
msgid "Window List"
msgstr "Llista de finestres"
@@ -287,7 +294,7 @@ msgstr ""
"«auto» (automàticament) i «always» (sempre)."
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:26
#: extensions/window-list/prefs.js:79
#: extensions/window-list/prefs.js:75
msgid "Show windows from all workspaces"
msgstr "Mostra les finestres de tots els espais de treball"
@@ -314,47 +321,26 @@ msgid "Show workspace previews in window list"
msgstr ""
"Mostra les previsualitzacions dels espais de treball a la llista de finestres"
#: extensions/window-list/prefs.js:35
#: extensions/window-list/prefs.js:42
msgid "Window Grouping"
msgstr "Agrupació de finestres"
#: extensions/window-list/prefs.js:40
#: extensions/window-list/prefs.js:47
msgid "Never group windows"
msgstr "Mai agrupis les finestres"
#: extensions/window-list/prefs.js:41
#: extensions/window-list/prefs.js:48
msgid "Group windows when space is limited"
msgstr "Agrupa les finestres quan l'espai estigui limitat"
#: extensions/window-list/prefs.js:42
#: extensions/window-list/prefs.js:49
msgid "Always group windows"
msgstr "Agrupa les finestres sempre"
#: extensions/window-list/prefs.js:66
#: extensions/window-list/prefs.js:69
msgid "Show on all monitors"
msgstr "Mostra a tots els monitors"
#: extensions/window-list/prefs.js:92
msgid "Show workspace previews"
msgstr "Mostra les previsualitzacions dels espais de treball"
#: extensions/workspace-indicator/prefs.js:30
msgid "Show Previews In Top Bar"
msgstr "Mostra previsualitzacions a la barra superior"
#: extensions/workspace-indicator/prefs.js:88
#, javascript-format
msgid "Workspace %d"
msgstr "Espai de treball %d"
#: extensions/workspace-indicator/prefs.js:155
msgid "Workspace Names"
msgstr "Noms dels espais de treball"
#: extensions/workspace-indicator/prefs.js:281
msgid "Add Workspace"
msgstr "Afegeix un espai de treball"
#: extensions/workspace-indicator/schemas/org.gnome.shell.extensions.workspace-indicator.gschema.xml:12
msgid "Show workspace previews in top bar"
msgstr ""
@@ -364,5 +350,36 @@ msgstr ""
msgid "Workspace Indicator"
msgstr "Indicador de l'espai de treball"
#: extensions/workspace-indicator/workspacePrefs.js:29
msgid "Show Previews"
msgstr "Mostra previsualitzacions"
#: extensions/workspace-indicator/workspacePrefs.js:87
#, javascript-format
msgid "Workspace %d"
msgstr "Espai de treball %d"
#: extensions/workspace-indicator/workspacePrefs.js:154
msgid "Workspace Names"
msgstr "Noms dels espais de treball"
#: extensions/workspace-indicator/workspacePrefs.js:171
msgid "Add Workspace"
msgstr "Afegeix un espai de treball"
#: extensions/workspace-indicator/workspacePrefs.js:196
msgid "Remove"
msgstr "Suprimeix"
#: extensions/workspace-indicator/workspacePrefs.js:226
msgid "Workspaces"
msgstr "Espais de treball"
#~ msgid "Computer"
#~ msgstr "Ordinador"
#~ msgid "Show workspace previews"
#~ msgstr "Mostra les previsualitzacions dels espais de treball"
#~ msgid "Applications"
#~ msgstr "Aplicacions"

121
po/fur.po
View File

@@ -7,8 +7,8 @@ msgid ""
msgstr ""
"Project-Id-Version: gnome-shell-extensions master\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell-extensions/issues\n"
"POT-Creation-Date: 2024-10-18 19:45+0000\n"
"PO-Revision-Date: 2024-10-20 20:01+0000\n"
"POT-Creation-Date: 2024-10-19 02:53+0000\n"
"PO-Revision-Date: 2024-10-20 20:04+0000\n"
"Last-Translator: Fabio Tomat <f.t.public@gmail.com>\n"
"Language-Team: Friulian <f.t.public@gmail.com>\n"
"Language: fur\n"
@@ -65,7 +65,7 @@ msgstr "Zonte regule"
#. TRANSLATORS: %s is the filesystem name
#: extensions/drive-menu/extension.js:123
#: extensions/places-menu/placeDisplay.js:218
#: extensions/places-menu/placeDisplay.js:187
#, javascript-format
msgid "Ejecting drive “%s” failed:"
msgstr "No si è rivâts a parâ fûr la unitât “%s”»:"
@@ -112,28 +112,35 @@ msgstr ""
msgid "Places"
msgstr "Puescj"
#: extensions/places-menu/placeDisplay.js:60
#: extensions/places-menu/placeDisplay.js:53
#, javascript-format
msgid "Failed to launch “%s”"
msgstr "No si è rivâts a inviâ “%s”"
#: extensions/places-menu/placeDisplay.js:75
#: extensions/places-menu/placeDisplay.js:68
#, javascript-format
msgid "Failed to mount volume for “%s”"
msgstr "No si è rivâts a montâ il volum par “%s”"
#: extensions/places-menu/placeDisplay.js:135
#: extensions/places-menu/placeDisplay.js:158
msgid "Computer"
msgstr "Computer"
#: extensions/places-menu/placeDisplay.js:333
#: extensions/places-menu/placeDisplay.js:316
msgid "Home"
msgstr "Home"
#: extensions/places-menu/placeDisplay.js:378
msgid "Browse Network"
msgstr "Esplore rêt"
#: extensions/places-menu/placeDisplay.js:322
msgid "Recent"
msgstr "Resint"
#: extensions/places-menu/placeDisplay.js:328
msgid "Starred"
msgstr "Preferît"
#: extensions/places-menu/placeDisplay.js:348
msgid "Network"
msgstr "Rêt"
#: extensions/places-menu/placeDisplay.js:355
msgid "Trash"
msgstr "Scovacere"
#: extensions/screenshot-window-sizer/org.gnome.shell.extensions.screenshot-window-sizer.gschema.xml:14
msgid "Cycle Screenshot Sizes"
@@ -223,47 +230,47 @@ msgstr "Non dal teme"
msgid "The name of the theme, to be loaded from ~/.themes/name/gnome-shell"
msgstr "Il non dal teme, che si cjame da ~/.themes/name/gnome-shell"
#: extensions/window-list/extension.js:70
#: extensions/window-list/extension.js:92
msgid "Close"
msgstr "Siere"
#: extensions/window-list/extension.js:97
#: extensions/window-list/extension.js:119
msgid "Unminimize"
msgstr "Gjave minimizazion"
#: extensions/window-list/extension.js:97
#: extensions/window-list/extension.js:119
msgid "Minimize"
msgstr "Minimize"
#: extensions/window-list/extension.js:104
#: extensions/window-list/extension.js:126
msgid "Unmaximize"
msgstr "Gjave massimizazion"
#: extensions/window-list/extension.js:104
#: extensions/window-list/extension.js:126
msgid "Maximize"
msgstr "Massimize"
#: extensions/window-list/extension.js:485
#: extensions/window-list/extension.js:641
msgid "Minimize all"
msgstr "Minimize ducj"
#: extensions/window-list/extension.js:491
#: extensions/window-list/extension.js:647
msgid "Unminimize all"
msgstr "Gjave a ducj la minimizazion"
#: extensions/window-list/extension.js:497
#: extensions/window-list/extension.js:653
msgid "Maximize all"
msgstr "Massimize ducj"
#: extensions/window-list/extension.js:505
#: extensions/window-list/extension.js:661
msgid "Unmaximize all"
msgstr "Gjave a ducj la massimizazion"
#: extensions/window-list/extension.js:513
#: extensions/window-list/extension.js:669
msgid "Close all"
msgstr "Siere ducj"
#: extensions/window-list/extension.js:780
#: extensions/window-list/extension.js:911 extensions/window-list/prefs.js:24
msgid "Window List"
msgstr "Liste barcons"
@@ -280,7 +287,7 @@ msgstr ""
"barcons. I valôrs pussibii a son “never”, “auto” e “always”."
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:26
#: extensions/window-list/prefs.js:70
#: extensions/window-list/prefs.js:75
msgid "Show windows from all workspaces"
msgstr "Mostre i barcons di ducj i spazis di lavôr"
@@ -305,47 +312,26 @@ msgstr ""
msgid "Show workspace previews in window list"
msgstr "Mostre lis anteprimis dai spazis di lavôr te liste dai barcons"
#: extensions/window-list/prefs.js:37
#: extensions/window-list/prefs.js:42
msgid "Window Grouping"
msgstr "Intropament di barcons"
#: extensions/window-list/prefs.js:42
#: extensions/window-list/prefs.js:47
msgid "Never group windows"
msgstr "No sta meti mai in grup i barcons"
#: extensions/window-list/prefs.js:43
#: extensions/window-list/prefs.js:48
msgid "Group windows when space is limited"
msgstr "Met dongje i barcons cuant che il spazi al è limitât"
#: extensions/window-list/prefs.js:44
#: extensions/window-list/prefs.js:49
msgid "Always group windows"
msgstr "Met simpri in grup i barcons"
#: extensions/window-list/prefs.js:64
#: extensions/window-list/prefs.js:69
msgid "Show on all monitors"
msgstr "Mostre su ducj i visôrs"
#: extensions/window-list/prefs.js:76
msgid "Show workspace previews"
msgstr "Mostre anteprimis dai spazis di lavôr"
#: extensions/workspace-indicator/prefs.js:30
msgid "Show Previews In Top Bar"
msgstr "Mostre anteprimis te sbare superiôr"
#: extensions/workspace-indicator/prefs.js:88
#, javascript-format
msgid "Workspace %d"
msgstr "Spazi di lavôr %d"
#: extensions/workspace-indicator/prefs.js:155
msgid "Workspace Names"
msgstr "Nons dai spazis di lavôr"
#: extensions/workspace-indicator/prefs.js:281
msgid "Add Workspace"
msgstr "Zonte spazi di lavôr"
#: extensions/workspace-indicator/schemas/org.gnome.shell.extensions.workspace-indicator.gschema.xml:12
msgid "Show workspace previews in top bar"
msgstr "Mostre anteprimis dai spazis di lavôr te sbare superiôr"
@@ -354,6 +340,37 @@ msgstr "Mostre anteprimis dai spazis di lavôr te sbare superiôr"
msgid "Workspace Indicator"
msgstr "Indicadôr spazi di lavôr"
#: extensions/workspace-indicator/workspacePrefs.js:29
msgid "Show Previews"
msgstr "Mostre anteprimis"
#: extensions/workspace-indicator/workspacePrefs.js:87
#, javascript-format
msgid "Workspace %d"
msgstr "Spazi di lavôr %d"
#: extensions/workspace-indicator/workspacePrefs.js:154
msgid "Workspace Names"
msgstr "Nons dai spazis di lavôr"
#: extensions/workspace-indicator/workspacePrefs.js:171
msgid "Add Workspace"
msgstr "Zonte spazi di lavôr"
#: extensions/workspace-indicator/workspacePrefs.js:196
msgid "Remove"
msgstr "Gjave"
#: extensions/workspace-indicator/workspacePrefs.js:226
msgid "Workspaces"
msgstr "Spazis di lavôr"
#~ msgid "Computer"
#~ msgstr "Computer"
#~ msgid "Show workspace previews"
#~ msgstr "Mostre anteprimis dai spazis di lavôr"
#~ msgid "Applications"
#~ msgstr "Aplicazions"

127
po/he.po
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-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"
"POT-Creation-Date: 2024-10-16 14:41+0000\n"
"PO-Revision-Date: 2024-11-25 10:45+0200\n"
"Last-Translator: Yaron Shahrabani <sh.yaron@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: Gtranslator 46.1\n"
"X-Generator: Poedit 3.4.2\n"
#: data/gnome-classic.desktop.in:3
msgid "GNOME Classic"
@@ -68,7 +68,7 @@ msgstr "הוספת כלל"
#. TRANSLATORS: %s is the filesystem name
#: extensions/drive-menu/extension.js:123
#: extensions/places-menu/placeDisplay.js:218
#: extensions/places-menu/placeDisplay.js:187
#, javascript-format
msgid "Ejecting drive “%s” failed:"
msgstr "שליפת הכונן „%s” נכשלה:"
@@ -114,28 +114,35 @@ msgstr ""
msgid "Places"
msgstr "מקומות"
#: extensions/places-menu/placeDisplay.js:60
#: extensions/places-menu/placeDisplay.js:53
#, javascript-format
msgid "Failed to launch “%s”"
msgstr "הרצת „%s” נכשלה"
#: extensions/places-menu/placeDisplay.js:75
#: extensions/places-menu/placeDisplay.js:68
#, javascript-format
msgid "Failed to mount volume for “%s”"
msgstr "עיגון הכרך „%s” נכשל"
#: extensions/places-menu/placeDisplay.js:135
#: extensions/places-menu/placeDisplay.js:158
msgid "Computer"
msgstr "מחשב"
#: extensions/places-menu/placeDisplay.js:333
#: extensions/places-menu/placeDisplay.js:316
msgid "Home"
msgstr "בית"
#: extensions/places-menu/placeDisplay.js:378
msgid "Browse Network"
msgstr "עיון ברשת"
#: extensions/places-menu/placeDisplay.js:322
msgid "Recent"
msgstr "אחרונים"
#: extensions/places-menu/placeDisplay.js:328
msgid "Starred"
msgstr "מסומנים בכוכב"
#: extensions/places-menu/placeDisplay.js:348
msgid "Network"
msgstr "רשת"
#: extensions/places-menu/placeDisplay.js:355
msgid "Trash"
msgstr "אשפה"
#: extensions/screenshot-window-sizer/org.gnome.shell.extensions.screenshot-window-sizer.gschema.xml:14
msgid "Cycle Screenshot Sizes"
@@ -225,47 +232,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:72
#: extensions/window-list/extension.js:92
msgid "Close"
msgstr "סגירה"
#: extensions/window-list/extension.js:99
#: extensions/window-list/extension.js:119
msgid "Unminimize"
msgstr "ביטול המזעור"
#: extensions/window-list/extension.js:99
#: extensions/window-list/extension.js:119
msgid "Minimize"
msgstr "מזעור"
#: extensions/window-list/extension.js:106
#: extensions/window-list/extension.js:126
msgid "Unmaximize"
msgstr "ביטול ההגדלה"
#: extensions/window-list/extension.js:106
#: extensions/window-list/extension.js:126
msgid "Maximize"
msgstr "הגדלה"
#: extensions/window-list/extension.js:471
#: extensions/window-list/extension.js:641
msgid "Minimize all"
msgstr "מזעור הכל"
#: extensions/window-list/extension.js:477
#: extensions/window-list/extension.js:647
msgid "Unminimize all"
msgstr "ביטול מזעור הכל"
#: extensions/window-list/extension.js:483
#: extensions/window-list/extension.js:653
msgid "Maximize all"
msgstr "הגדלת הכל"
#: extensions/window-list/extension.js:491
#: extensions/window-list/extension.js:661
msgid "Unmaximize all"
msgstr "ביטול הגדלת הכל"
#: extensions/window-list/extension.js:499
#: extensions/window-list/extension.js:669
msgid "Close all"
msgstr "סגירת הכל"
#: extensions/window-list/extension.js:778
#: extensions/window-list/extension.js:911 extensions/window-list/prefs.js:24
msgid "Window List"
msgstr "רשימת חלונות"
@@ -282,7 +289,7 @@ msgstr ""
"Possible values are “never”, “auto” and “always”."
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:26
#: extensions/window-list/prefs.js:79
#: extensions/window-list/prefs.js:75
msgid "Show windows from all workspaces"
msgstr "הצגת חלונות מכל מרחבי העבודה"
@@ -306,47 +313,26 @@ msgstr ""
msgid "Show workspace previews in window list"
msgstr "הצגת תצוגה מקדימה של מרחבי העבודה ברשימת החלונות"
#: extensions/window-list/prefs.js:35
#: extensions/window-list/prefs.js:42
msgid "Window Grouping"
msgstr "קיבוץ חלונות"
#: extensions/window-list/prefs.js:40
#: extensions/window-list/prefs.js:47
msgid "Never group windows"
msgstr "לעולם לא לקבץ חלונות"
#: extensions/window-list/prefs.js:41
#: extensions/window-list/prefs.js:48
msgid "Group windows when space is limited"
msgstr "קיבוץ חלונות כאשר המקום מוגבל"
#: extensions/window-list/prefs.js:42
#: extensions/window-list/prefs.js:49
msgid "Always group windows"
msgstr "תמיד לקבץ חלונות"
#: extensions/window-list/prefs.js:66
#: extensions/window-list/prefs.js:69
msgid "Show on all monitors"
msgstr "הצגה בכל הצגים"
#: extensions/window-list/prefs.js:92
msgid "Show workspace previews"
msgstr "הצגת תצוגה מקדימה של מרחבי העבודה"
#: 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:155
msgid "Workspace Names"
msgstr "שם מרחב העבודה"
#: 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 "הצגת תצוגה מקדימה של מרחבי העבודה בלוח העליון"
@@ -355,6 +341,37 @@ msgstr "הצגת תצוגה מקדימה של מרחבי העבודה בלוח
msgid "Workspace Indicator"
msgstr "מחוון מרחבי עבודה"
#: extensions/workspace-indicator/workspacePrefs.js:29
msgid "Show Previews"
msgstr "הצגת תצוגות מקדימות"
#: extensions/workspace-indicator/workspacePrefs.js:87
#, javascript-format
msgid "Workspace %d"
msgstr "מרחב עבודה %d"
#: extensions/workspace-indicator/workspacePrefs.js:154
msgid "Workspace Names"
msgstr "שם מרחב העבודה"
#: extensions/workspace-indicator/workspacePrefs.js:171
msgid "Add Workspace"
msgstr "הוספת מרחב עבודה"
#: extensions/workspace-indicator/workspacePrefs.js:196
msgid "Remove"
msgstr "הסרה"
#: extensions/workspace-indicator/workspacePrefs.js:226
msgid "Workspaces"
msgstr "מרחבי עבודה"
#~ msgid "Computer"
#~ msgstr "מחשב"
#~ msgid "Show workspace previews"
#~ msgstr "הצגת תצוגה מקדימה של מרחבי העבודה"
#~ msgid "Applications"
#~ msgstr "יישומים"

365
po/ia.po Normal file
View File

@@ -0,0 +1,365 @@
# Interlingua translation for gnome-shell-extensions.
# Copyright (C) 2025 gnome-shell-extensions's COPYRIGHT HOLDER
# This file is distributed under the same license as the gnome-shell-extensions package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
# Emilio Sepúlveda <emism.translations@gmail.com>, 2025.
#
msgid ""
msgstr ""
"Project-Id-Version: gnome-shell-extensions main\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell-extensions/"
"issues\n"
"POT-Creation-Date: 2025-01-20 00:13+0000\n"
"PO-Revision-Date: 2025-01-20 18:36-0300\n"
"Last-Translator: Emilio Sepúlveda <emism.translations@gmail.com>\n"
"Language-Team: Interlingua\n"
"Language: ia\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-DL-Lang: ia\n"
"X-DL-Module: gnome-shell-extensions\n"
"X-DL-Branch: main\n"
"X-DL-Domain: po\n"
"X-DL-State: Translating\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
"X-Generator: Gtranslator 47.1\n"
#: data/gnome-classic.desktop.in:3
msgid "GNOME Classic"
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 "Iste session es initiate in GNOME Classic"
#: data/gnome-classic-wayland.desktop.in:3
msgid "GNOME Classic on Wayland"
msgstr "GNOME Classic sur Wayland"
#: data/gnome-classic-xorg.desktop.in:3
msgid "GNOME Classic on Xorg"
msgstr "GNOME Classic sur Xorg"
#: extensions/apps-menu/extension.js:125
msgid "Favorites"
msgstr "Favoritos"
#: extensions/apps-menu/extension.js:399
msgid "Apps"
msgstr "Applicationes"
#: extensions/auto-move-windows/org.gnome.shell.extensions.auto-move-windows.gschema.xml:12
msgid "Application and workspace list"
msgstr "Lista de applicationes e spatios de travalio"
#: extensions/auto-move-windows/org.gnome.shell.extensions.auto-move-windows.gschema.xml:13
msgid ""
"A list of strings, each containing an application id (desktop file name), "
"followed by a colon and the workspace number"
msgstr ""
#: extensions/auto-move-windows/prefs.js:156
msgid "Workspace Rules"
msgstr "Regulas de spatio de travalio"
#: extensions/auto-move-windows/prefs.js:311
msgid "Add Rule"
msgstr "Adder regula"
#. TRANSLATORS: %s is the filesystem name
#: extensions/drive-menu/extension.js:123
#: extensions/places-menu/placeDisplay.js:186
#, javascript-format
msgid "Ejecting drive “%s” failed:"
msgstr "Falleva le ejection del unitate “%s”:"
#: extensions/drive-menu/extension.js:142
msgid "Removable devices"
msgstr "Dispositivos removibile"
#: extensions/drive-menu/extension.js:164
msgid "Open Files"
msgstr "Aperir files"
#: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:11
msgid "Use more screen for windows"
msgstr "Usar plus schermo pro fenestras"
#: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:12
msgid ""
"Try to use more screen for placing window thumbnails by adapting to screen "
"aspect ratio, and consolidating them further to reduce the bounding box. "
"This setting applies only with the natural placement strategy."
msgstr ""
"Tenta de usar plus schermo pro localisar miniaturas de fenestra con le "
"adaptation al ration de aspecto del schermo, e consolidar lo ulteriormente "
"pro reducer le area occupate. Iste configuration applica solmente con le "
"strategia de placiamento natural."
#: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:17
msgid "Place window captions on top"
msgstr "Localisar le subtitulos del fenestras in alto"
#: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:18
msgid ""
"If true, place window captions on top the respective thumbnail, overriding "
"shell default of placing it at the bottom. Changing this setting requires "
"restarting the shell to have any effect."
msgstr ""
#: extensions/places-menu/extension.js:75
#: extensions/places-menu/extension.js:78
msgid "Places"
msgstr "Locos"
#: extensions/places-menu/placeDisplay.js:52
#, javascript-format
msgid "Failed to launch “%s”"
msgstr "Falleva le lanceamento de “%s”"
#: extensions/places-menu/placeDisplay.js:67
#, javascript-format
msgid "Failed to mount volume for “%s”"
msgstr "Falleva le montage de volumine “%s”"
#: extensions/places-menu/placeDisplay.js:315
msgid "Home"
msgstr "Initio"
#: extensions/places-menu/placeDisplay.js:321
msgid "Recent"
msgstr "Recente"
#: extensions/places-menu/placeDisplay.js:327
msgid "Starred"
msgstr ""
#: extensions/places-menu/placeDisplay.js:347
msgid "Network"
msgstr "Rete"
#: extensions/places-menu/placeDisplay.js:354
msgid "Trash"
msgstr "Immunditia"
#: extensions/screenshot-window-sizer/org.gnome.shell.extensions.screenshot-window-sizer.gschema.xml:14
msgid "Cycle Screenshot Sizes"
msgstr ""
#: extensions/screenshot-window-sizer/org.gnome.shell.extensions.screenshot-window-sizer.gschema.xml:18
msgid "Cycle Screenshot Sizes Backward"
msgstr ""
#: extensions/system-monitor/extension.js:135
msgid "CPU stats"
msgstr "Statos de CPU "
#: extensions/system-monitor/extension.js:159
msgid "Memory stats"
msgstr "Statisticas de memoria"
#: extensions/system-monitor/extension.js:177
msgid "Swap stats"
msgstr ""
#: extensions/system-monitor/extension.js:336
msgid "Upload stats"
msgstr "Statisticas de carga"
#: extensions/system-monitor/extension.js:350
msgid "Download stats"
msgstr "Statisticas de discarga"
#: extensions/system-monitor/extension.js:364
msgid "System stats"
msgstr "Statisticas de systema"
#: extensions/system-monitor/extension.js:412
msgid "Show"
msgstr "Monstrar"
#: extensions/system-monitor/extension.js:414
msgid "CPU"
msgstr "CPU"
#: extensions/system-monitor/extension.js:416
msgid "Memory"
msgstr "Memoria"
#: extensions/system-monitor/extension.js:418
msgid "Swap"
msgstr ""
#: extensions/system-monitor/extension.js:420
msgid "Upload"
msgstr "Carga"
#: extensions/system-monitor/extension.js:422
msgid "Download"
msgstr "Discarga"
#: extensions/system-monitor/extension.js:427
msgid "Open System Monitor"
msgstr "Aperir monitor de systema"
#: extensions/system-monitor/schemas/org.gnome.shell.extensions.system-monitor.gschema.xml:12
msgid "Show CPU usage"
msgstr "Monstrar uso de CPU"
#: extensions/system-monitor/schemas/org.gnome.shell.extensions.system-monitor.gschema.xml:16
msgid "Show memory usage"
msgstr "Monstrar uso de memoria"
#: 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 "Monstrar carga"
#: extensions/system-monitor/schemas/org.gnome.shell.extensions.system-monitor.gschema.xml:28
msgid "Show download"
msgstr "Monstrar discarga"
#: extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml:11
msgid "Theme name"
msgstr "Nomine de thema"
#: extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml:12
msgid "The name of the theme, to be loaded from ~/.themes/name/gnome-shell"
msgstr "Le nomine del thema a cargar desde ~/.themes/nomine/gnome-shell"
#: extensions/window-list/extension.js:95
msgid "Close"
msgstr "Clauder"
#: extensions/window-list/extension.js:122
msgid "Unminimize"
msgstr "Disminimisar"
#: extensions/window-list/extension.js:122
msgid "Minimize"
msgstr "Minimisar"
#: extensions/window-list/extension.js:129
msgid "Unmaximize"
msgstr "Dismaximisar"
#: extensions/window-list/extension.js:129
msgid "Maximize"
msgstr "Maximisar"
#: extensions/window-list/extension.js:721
msgid "Minimize all"
msgstr "Minimisar toto"
#: extensions/window-list/extension.js:727
msgid "Unminimize all"
msgstr "Disminimisar toto"
#: extensions/window-list/extension.js:733
msgid "Maximize all"
msgstr "Maximisar toto"
#: extensions/window-list/extension.js:741
msgid "Unmaximize all"
msgstr "Dismaximisar toto"
#: extensions/window-list/extension.js:749
msgid "Close all"
msgstr "Clauder toto"
#: extensions/window-list/extension.js:992 extensions/window-list/prefs.js:23
msgid "Window List"
msgstr "Lista de fenestras"
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:18
msgid "When to group windows"
msgstr "Quando gruppar le fenestras"
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:19
msgid ""
"Decides when to group windows from the same application on the window list. "
"Possible values are “never”, “auto” and “always”."
msgstr ""
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:26
#: extensions/window-list/prefs.js:74
msgid "Show windows from all workspaces"
msgstr "Monstrar fenestras de tote le spatios de travalio"
#: 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."
msgstr ""
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:33
msgid "Show the window list on all monitors"
msgstr "Monstrar le lista de fenestras sur tote le monitores"
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:34
msgid ""
"Whether to show the window list on all connected monitors or only on the "
"primary one."
msgstr ""
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:41
msgid "Show workspace previews in window list"
msgstr ""
"Monstrar previsualisationes de spatios de travalio in le lista de fenestras"
#: extensions/window-list/prefs.js:41
msgid "Window Grouping"
msgstr "Gruppamento de fenestras"
#: extensions/window-list/prefs.js:46
msgid "Never group windows"
msgstr "Nunquam gruppar fenestras"
#: extensions/window-list/prefs.js:47
msgid "Group windows when space is limited"
msgstr "Gruppar fenestras quando le spatio es limitate"
#: extensions/window-list/prefs.js:48
msgid "Always group windows"
msgstr "Sempre gruppar fenestras"
#: extensions/window-list/prefs.js:68
msgid "Show on all monitors"
msgstr "Monstrar sur tote le monitores"
#: extensions/workspace-indicator/schemas/org.gnome.shell.extensions.workspace-indicator.gschema.xml:12
msgid "Show workspace previews in top bar"
msgstr ""
"Monstra le previsualisationes de spatios de travalio in le barra superior"
#: extensions/workspace-indicator/workspaceIndicator.js:430
msgid "Workspace Indicator"
msgstr "Indicator de spatios de travalio"
#: extensions/workspace-indicator/workspacePrefs.js:28
msgid "Show Previews"
msgstr "Monstrar previsualisationes"
#: extensions/workspace-indicator/workspacePrefs.js:86
#, javascript-format
msgid "Workspace %d"
msgstr "Spatio de travalio %d"
#: extensions/workspace-indicator/workspacePrefs.js:153
msgid "Workspace Names"
msgstr "Nomines de spatio de travalio"
#: extensions/workspace-indicator/workspacePrefs.js:170
msgid "Add Workspace"
msgstr "Adder spatio de travalio"
#: extensions/workspace-indicator/workspacePrefs.js:195
msgid "Remove"
msgstr "Remover"
#: extensions/workspace-indicator/workspacePrefs.js:225
msgid "Workspaces"
msgstr "Spatios de travalio"

View File

@@ -1,5 +1,5 @@
# Brazilian Portuguese translation for gnome-shell-extensions.
# Copyright (C) 2022 gnome-shell-extensions's COPYRIGHT HOLDER
# Copyright (C) 2025 gnome-shell-extensions's COPYRIGHT HOLDER
# This file is distributed under the same license as the gnome-shell-extensions package.
# Felipe Borges <felipe10borges@gmail.com>, 2011.
# Rodrigo Padula <contato@rodrigopadula.com>, 2011.
@@ -9,15 +9,15 @@
# Og Maciel <ogmaciel@gnome.org>, 2012.
# Enrico Nicoletto <liverig@gmail.com>, 2013, 2014.
# Matheus Polkorny <mpolkorny@ipt.br>, 2024.
# Rafael Fontenelle <rafaelff@gnome.org>, 2013-2024.
# Rafael Fontenelle <rafaelff@gnome.org>, 2013-2025.
#
msgid ""
msgstr ""
"Project-Id-Version: gnome-shell-extensions master\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell-extensions/"
"issues\n"
"POT-Creation-Date: 2024-04-29 15:27+0000\n"
"PO-Revision-Date: 2024-08-25 23:48-0300\n"
"POT-Creation-Date: 2025-01-13 16:23+0000\n"
"PO-Revision-Date: 2025-01-19 21:11-0300\n"
"Last-Translator: Rafael Fontenelle <rafaelff@gnome.org>\n"
"Language-Team: Brazilian Portuguese <https://br.gnome.org/traducao>\n"
"Language: pt_BR\n"
@@ -25,7 +25,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: Gtranslator 46.1\n"
"X-Generator: Gtranslator 47.1\n"
"X-Project-Style: gnome\n"
#: data/gnome-classic.desktop.in:3
@@ -45,11 +45,11 @@ msgstr "GNOME Clássico no Wayland"
msgid "GNOME Classic on Xorg"
msgstr "GNOME Clássico no Xorg"
#: extensions/apps-menu/extension.js:126
#: extensions/apps-menu/extension.js:125
msgid "Favorites"
msgstr "Favoritos"
#: extensions/apps-menu/extension.js:400
#: extensions/apps-menu/extension.js:399
msgid "Apps"
msgstr "Aplicativos"
@@ -65,17 +65,17 @@ msgstr ""
"Uma lista de strings, cada uma contendo um id de aplicativo (nome de arquivo "
"desktop), seguido por dois pontos e o número do espaço de trabalho"
#: extensions/auto-move-windows/prefs.js:159
#: extensions/auto-move-windows/prefs.js:156
msgid "Workspace Rules"
msgstr "Regras de espaços de trabalho"
#: extensions/auto-move-windows/prefs.js:314
#: extensions/auto-move-windows/prefs.js:311
msgid "Add Rule"
msgstr "Adicionar regra"
#. TRANSLATORS: %s is the filesystem name
#: extensions/drive-menu/extension.js:123
#: extensions/places-menu/placeDisplay.js:218
#: extensions/places-menu/placeDisplay.js:186
#, javascript-format
msgid "Ejecting drive “%s” failed:"
msgstr "Falha ao ejetar a unidade “%s”:"
@@ -117,33 +117,40 @@ msgstr ""
"sobrescrevendo o padrão do shell de colocá-lo na parte inferior. A alteração "
"dessa configuração requer o reinício do shell para ter algum efeito."
#: extensions/places-menu/extension.js:91
#: extensions/places-menu/extension.js:94
#: extensions/places-menu/extension.js:75
#: extensions/places-menu/extension.js:78
msgid "Places"
msgstr "Locais"
#: extensions/places-menu/placeDisplay.js:60
#: extensions/places-menu/placeDisplay.js:52
#, javascript-format
msgid "Failed to launch “%s”"
msgstr "Falha ao iniciar “%s”"
#: extensions/places-menu/placeDisplay.js:75
#: extensions/places-menu/placeDisplay.js:67
#, javascript-format
msgid "Failed to mount volume for “%s”"
msgstr "Falha ao montar volume para “%s”"
#: extensions/places-menu/placeDisplay.js:135
#: extensions/places-menu/placeDisplay.js:158
msgid "Computer"
msgstr "Computador"
#: extensions/places-menu/placeDisplay.js:333
#: extensions/places-menu/placeDisplay.js:315
msgid "Home"
msgstr "Pasta pessoal"
#: extensions/places-menu/placeDisplay.js:378
msgid "Browse Network"
msgstr "Navegar na rede"
#: extensions/places-menu/placeDisplay.js:321
msgid "Recent"
msgstr "Recentes"
#: extensions/places-menu/placeDisplay.js:327
msgid "Starred"
msgstr "Favoritos"
#: extensions/places-menu/placeDisplay.js:347
msgid "Network"
msgstr "Rede"
#: extensions/places-menu/placeDisplay.js:354
msgid "Trash"
msgstr "Lixeira"
#: extensions/screenshot-window-sizer/org.gnome.shell.extensions.screenshot-window-sizer.gschema.xml:14
msgid "Cycle Screenshot Sizes"
@@ -233,47 +240,47 @@ msgstr "Nome do tema"
msgid "The name of the theme, to be loaded from ~/.themes/name/gnome-shell"
msgstr "O nome do tema, para ser carregado de ~/.themes/nome/gnome-shell"
#: extensions/window-list/extension.js:72
#: extensions/window-list/extension.js:95
msgid "Close"
msgstr "Fechar"
#: extensions/window-list/extension.js:99
#: extensions/window-list/extension.js:122
msgid "Unminimize"
msgstr "Desfazer janelas minimizadas"
#: extensions/window-list/extension.js:99
#: extensions/window-list/extension.js:122
msgid "Minimize"
msgstr "Minimizar"
#: extensions/window-list/extension.js:106
#: extensions/window-list/extension.js:129
msgid "Unmaximize"
msgstr "Desfazer janelas maximizadas"
#: extensions/window-list/extension.js:106
#: extensions/window-list/extension.js:129
msgid "Maximize"
msgstr "Maximizar"
#: extensions/window-list/extension.js:471
#: extensions/window-list/extension.js:721
msgid "Minimize all"
msgstr "Minimizar todas"
#: extensions/window-list/extension.js:477
#: extensions/window-list/extension.js:727
msgid "Unminimize all"
msgstr "Desfazer todas as janelas minimizadas"
#: extensions/window-list/extension.js:483
#: extensions/window-list/extension.js:733
msgid "Maximize all"
msgstr "Maximizar todas"
#: extensions/window-list/extension.js:491
#: extensions/window-list/extension.js:741
msgid "Unmaximize all"
msgstr "Desfazer todas as janelas maximizadas"
#: extensions/window-list/extension.js:499
#: extensions/window-list/extension.js:749
msgid "Close all"
msgstr "Fechar todas"
#: extensions/window-list/extension.js:778
#: extensions/window-list/extension.js:992 extensions/window-list/prefs.js:23
msgid "Window List"
msgstr "Lista de janelas"
@@ -290,7 +297,7 @@ msgstr ""
"Valores possíveis são “nunca”, “auto” e “sempre”."
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:26
#: extensions/window-list/prefs.js:79
#: extensions/window-list/prefs.js:74
msgid "Show windows from all workspaces"
msgstr "Mostrar janelas de todos espaços de trabalho"
@@ -316,47 +323,26 @@ msgstr ""
msgid "Show workspace previews in window list"
msgstr "Mostra prévias do espaço de trabalho na lista de janelas"
#: extensions/window-list/prefs.js:35
#: extensions/window-list/prefs.js:41
msgid "Window Grouping"
msgstr "Agrupamento de janelas"
#: extensions/window-list/prefs.js:40
#: extensions/window-list/prefs.js:46
msgid "Never group windows"
msgstr "Nunca agrupar janelas"
#: extensions/window-list/prefs.js:41
#: extensions/window-list/prefs.js:47
msgid "Group windows when space is limited"
msgstr "Agrupar janelas quando o espaço estiver limitado"
#: extensions/window-list/prefs.js:42
#: extensions/window-list/prefs.js:48
msgid "Always group windows"
msgstr "Sempre agrupar janelas"
#: extensions/window-list/prefs.js:66
#: extensions/window-list/prefs.js:68
msgid "Show on all monitors"
msgstr "Mostrar em todos os monitores"
#: extensions/window-list/prefs.js:92
msgid "Show workspace previews"
msgstr "Mostra prévias do espaço de trabalho"
#: extensions/workspace-indicator/prefs.js:30
msgid "Show Previews In Top Bar"
msgstr "Mostra prévias na barra superior"
#: extensions/workspace-indicator/prefs.js:88
#, javascript-format
msgid "Workspace %d"
msgstr "Espaço de trabalho %d"
#: extensions/workspace-indicator/prefs.js:155
msgid "Workspace Names"
msgstr "Nomes de espaços de trabalho"
#: extensions/workspace-indicator/prefs.js:281
msgid "Add Workspace"
msgstr "Adicionar espaço de trabalho"
#: extensions/workspace-indicator/schemas/org.gnome.shell.extensions.workspace-indicator.gschema.xml:12
msgid "Show workspace previews in top bar"
msgstr "Mostra prévias do espaço de trabalho na barra superior"
@@ -365,6 +351,40 @@ msgstr "Mostra prévias do espaço de trabalho na barra superior"
msgid "Workspace Indicator"
msgstr "Indicador de espaços de trabalho"
#: extensions/workspace-indicator/workspacePrefs.js:28
msgid "Show Previews"
msgstr "Mostrar prévias"
#: extensions/workspace-indicator/workspacePrefs.js:86
#, javascript-format
msgid "Workspace %d"
msgstr "Espaço de trabalho %d"
#: extensions/workspace-indicator/workspacePrefs.js:153
msgid "Workspace Names"
msgstr "Nomes de espaços de trabalho"
#: extensions/workspace-indicator/workspacePrefs.js:170
msgid "Add Workspace"
msgstr "Adicionar espaço de trabalho"
#: extensions/workspace-indicator/workspacePrefs.js:195
msgid "Remove"
msgstr "Remove"
#: extensions/workspace-indicator/workspacePrefs.js:225
msgid "Workspaces"
msgstr "Espaços de trabalho"
#~ msgid "Computer"
#~ msgstr "Computador"
#~ msgid "Browse Network"
#~ msgstr "Navegar na rede"
#~ msgid "Show workspace previews"
#~ msgstr "Mostra prévias do espaço de trabalho"
#~ msgid "Applications"
#~ msgstr "Aplicativos"
@@ -583,9 +603,6 @@ msgstr "Indicador de espaços de trabalho"
#~ msgid "Bookmarks"
#~ msgstr "Marcadores"
#~ msgid "Network"
#~ msgstr "Rede"
#~ msgid "File System"
#~ msgstr "Sistema de arquivos"

123
po/ru.po
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-04-29 15:27+0000\n"
"PO-Revision-Date: 2024-05-25 14:46+0300\n"
"POT-Creation-Date: 2024-10-16 14:41+0000\n"
"PO-Revision-Date: 2024-10-27 14:01+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.4\n"
"X-Generator: Poedit 3.5\n"
#: data/gnome-classic.desktop.in:3
msgid "GNOME Classic"
@@ -68,7 +68,7 @@ msgstr "Добавить правило"
#. TRANSLATORS: %s is the filesystem name
#: extensions/drive-menu/extension.js:123
#: extensions/places-menu/placeDisplay.js:218
#: extensions/places-menu/placeDisplay.js:187
#, javascript-format
msgid "Ejecting drive “%s” failed:"
msgstr "Не удалось извлечь диск «%s»:"
@@ -115,28 +115,35 @@ msgstr ""
msgid "Places"
msgstr "Места"
#: extensions/places-menu/placeDisplay.js:60
#: extensions/places-menu/placeDisplay.js:53
#, javascript-format
msgid "Failed to launch “%s”"
msgstr "Не удалось запустить «%s»"
#: extensions/places-menu/placeDisplay.js:75
#: extensions/places-menu/placeDisplay.js:68
#, javascript-format
msgid "Failed to mount volume for “%s”"
msgstr "Не удалось смонтировать том для «%s»"
#: extensions/places-menu/placeDisplay.js:135
#: extensions/places-menu/placeDisplay.js:158
msgid "Computer"
msgstr "Компьютер"
#: extensions/places-menu/placeDisplay.js:333
#: extensions/places-menu/placeDisplay.js:316
msgid "Home"
msgstr "Домашняя папка"
#: extensions/places-menu/placeDisplay.js:378
msgid "Browse Network"
msgstr "Обзор сети"
#: extensions/places-menu/placeDisplay.js:322
msgid "Recent"
msgstr "Недавние"
#: extensions/places-menu/placeDisplay.js:328
msgid "Starred"
msgstr "Избранные"
#: extensions/places-menu/placeDisplay.js:348
msgid "Network"
msgstr "Сеть"
#: extensions/places-menu/placeDisplay.js:355
msgid "Trash"
msgstr "Корзина"
#: extensions/screenshot-window-sizer/org.gnome.shell.extensions.screenshot-window-sizer.gschema.xml:14
msgid "Cycle Screenshot Sizes"
@@ -226,49 +233,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:72
#: extensions/window-list/extension.js:92
msgid "Close"
msgstr "Закрыть"
# ну или "восстановить", правда тогда появляется неоднозначный повтор (unmaximize)
#: extensions/window-list/extension.js:99
#: extensions/window-list/extension.js:119
msgid "Unminimize"
msgstr "Вернуть"
#: extensions/window-list/extension.js:99
#: extensions/window-list/extension.js:119
msgid "Minimize"
msgstr "Свернуть"
#: extensions/window-list/extension.js:106
#: extensions/window-list/extension.js:126
msgid "Unmaximize"
msgstr "Восстановить"
#: extensions/window-list/extension.js:106
#: extensions/window-list/extension.js:126
msgid "Maximize"
msgstr "Развернуть"
#: extensions/window-list/extension.js:471
#: extensions/window-list/extension.js:641
msgid "Minimize all"
msgstr "Свернуть все"
# ну или "восстановить", правда тогда появляется неоднозначный повтор (unmaximize)
#: extensions/window-list/extension.js:477
#: extensions/window-list/extension.js:647
msgid "Unminimize all"
msgstr "Вернуть все"
#: extensions/window-list/extension.js:483
#: extensions/window-list/extension.js:653
msgid "Maximize all"
msgstr "Развернуть все"
#: extensions/window-list/extension.js:491
#: extensions/window-list/extension.js:661
msgid "Unmaximize all"
msgstr "Восстановить все"
#: extensions/window-list/extension.js:499
#: extensions/window-list/extension.js:669
msgid "Close all"
msgstr "Закрыть все"
#: extensions/window-list/extension.js:778
#: extensions/window-list/extension.js:911 extensions/window-list/prefs.js:24
msgid "Window List"
msgstr "Список окон"
@@ -286,7 +293,7 @@ msgstr ""
"«always» — всегда."
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:26
#: extensions/window-list/prefs.js:79
#: extensions/window-list/prefs.js:75
msgid "Show windows from all workspaces"
msgstr "Показывать окна со всех рабочих столов"
@@ -311,47 +318,26 @@ msgstr ""
msgid "Show workspace previews in window list"
msgstr "Показывать предпросмотры рабочих столов в списке окон"
#: extensions/window-list/prefs.js:35
#: extensions/window-list/prefs.js:42
msgid "Window Grouping"
msgstr "Группировка окон"
#: extensions/window-list/prefs.js:40
#: extensions/window-list/prefs.js:47
msgid "Never group windows"
msgstr "Никогда не группировать окна"
#: extensions/window-list/prefs.js:41
#: extensions/window-list/prefs.js:48
msgid "Group windows when space is limited"
msgstr "Группировать окна, если место ограничено"
#: extensions/window-list/prefs.js:42
#: extensions/window-list/prefs.js:49
msgid "Always group windows"
msgstr "Всегда группировать окна"
#: extensions/window-list/prefs.js:66
#: extensions/window-list/prefs.js:69
msgid "Show on all monitors"
msgstr "Показывать на всех мониторах"
#: extensions/window-list/prefs.js:92
msgid "Show workspace previews"
msgstr "Показывать предпросмотры рабочих столов"
#: 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:155
msgid "Workspace Names"
msgstr "Названия рабочих столов"
#: 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 "Показывать предпросмотры рабочих столов в верхней панели"
@@ -360,5 +346,36 @@ msgstr "Показывать предпросмотры рабочих стол
msgid "Workspace Indicator"
msgstr "Индикатор рабочих столов"
#: extensions/workspace-indicator/workspacePrefs.js:29
msgid "Show Previews"
msgstr "Показывать предпросмотры"
#: extensions/workspace-indicator/workspacePrefs.js:87
#, javascript-format
msgid "Workspace %d"
msgstr "Рабочий стол %d"
#: extensions/workspace-indicator/workspacePrefs.js:154
msgid "Workspace Names"
msgstr "Названия рабочих столов"
#: extensions/workspace-indicator/workspacePrefs.js:171
msgid "Add Workspace"
msgstr "Добавить рабочий стол"
#: extensions/workspace-indicator/workspacePrefs.js:196
msgid "Remove"
msgstr "Удалить"
#: extensions/workspace-indicator/workspacePrefs.js:226
msgid "Workspaces"
msgstr "Рабочие столы"
#~ msgid "Computer"
#~ msgstr "Компьютер"
#~ msgid "Show workspace previews"
#~ msgstr "Показывать предпросмотры рабочих столов"
#~ msgid "Applications"
#~ msgstr "Приложения"

115
po/sl.po
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-04-29 15:27+0000\n"
"PO-Revision-Date: 2024-05-02 00:11+0200\n"
"POT-Creation-Date: 2024-10-16 14:41+0000\n"
"PO-Revision-Date: 2024-10-16 23:41+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"
@@ -69,7 +69,7 @@ msgstr "Dodaj pravilo"
#. TRANSLATORS: %s is the filesystem name
#: extensions/drive-menu/extension.js:123
#: extensions/places-menu/placeDisplay.js:218
#: extensions/places-menu/placeDisplay.js:187
#, javascript-format
msgid "Ejecting drive “%s” failed:"
msgstr "Izmetavanje pogona »%s« je spodletelo:"
@@ -115,28 +115,35 @@ msgstr ""
msgid "Places"
msgstr "Mesta"
#: extensions/places-menu/placeDisplay.js:60
#: extensions/places-menu/placeDisplay.js:53
#, javascript-format
msgid "Failed to launch “%s”"
msgstr "Zaganjanje »%s« je spodletelo."
#: extensions/places-menu/placeDisplay.js:75
#: extensions/places-menu/placeDisplay.js:68
#, javascript-format
msgid "Failed to mount volume for “%s”"
msgstr "Priklapljanje nosilca za »%s« je spodletelo"
#: extensions/places-menu/placeDisplay.js:135
#: extensions/places-menu/placeDisplay.js:158
msgid "Computer"
msgstr "Računalnik"
#: extensions/places-menu/placeDisplay.js:333
#: extensions/places-menu/placeDisplay.js:316
msgid "Home"
msgstr "Osebna mapa"
#: extensions/places-menu/placeDisplay.js:378
msgid "Browse Network"
msgstr "Prebrskaj omrežje"
#: extensions/places-menu/placeDisplay.js:322
msgid "Recent"
msgstr "Nedavno"
#: extensions/places-menu/placeDisplay.js:328
msgid "Starred"
msgstr "Z zvezdico"
#: extensions/places-menu/placeDisplay.js:348
msgid "Network"
msgstr "Omrežje"
#: extensions/places-menu/placeDisplay.js:355
msgid "Trash"
msgstr "Koš"
#: extensions/screenshot-window-sizer/org.gnome.shell.extensions.screenshot-window-sizer.gschema.xml:14
msgid "Cycle Screenshot Sizes"
@@ -226,47 +233,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:72
#: extensions/window-list/extension.js:92
msgid "Close"
msgstr "Zapri"
#: extensions/window-list/extension.js:99
#: extensions/window-list/extension.js:119
msgid "Unminimize"
msgstr "Povečaj"
#: extensions/window-list/extension.js:99
#: extensions/window-list/extension.js:119
msgid "Minimize"
msgstr "Skrči"
#: extensions/window-list/extension.js:106
#: extensions/window-list/extension.js:126
msgid "Unmaximize"
msgstr "Pomanjšaj"
#: extensions/window-list/extension.js:106
#: extensions/window-list/extension.js:126
msgid "Maximize"
msgstr "Razpni"
#: extensions/window-list/extension.js:471
#: extensions/window-list/extension.js:641
msgid "Minimize all"
msgstr "Skrči vse"
#: extensions/window-list/extension.js:477
#: extensions/window-list/extension.js:647
msgid "Unminimize all"
msgstr "Pomanjšaj vse"
#: extensions/window-list/extension.js:483
#: extensions/window-list/extension.js:653
msgid "Maximize all"
msgstr "Razpni vse"
#: extensions/window-list/extension.js:491
#: extensions/window-list/extension.js:661
msgid "Unmaximize all"
msgstr "Pomanjšaj vse"
#: extensions/window-list/extension.js:499
#: extensions/window-list/extension.js:669
msgid "Close all"
msgstr "Zapri vse"
#: extensions/window-list/extension.js:778
#: extensions/window-list/extension.js:911 extensions/window-list/prefs.js:24
msgid "Window List"
msgstr "Seznam oken"
@@ -283,7 +290,7 @@ msgstr ""
"Veljavne vrednosti so »nikoli«, »samodejno« in »vedno«."
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:26
#: extensions/window-list/prefs.js:79
#: extensions/window-list/prefs.js:75
msgid "Show windows from all workspaces"
msgstr "Pokaži okna vseh delovnih površin"
@@ -307,47 +314,26 @@ msgstr ""
msgid "Show workspace previews in window list"
msgstr "Pokaži predoglede delovne površine na seznamu oken"
#: extensions/window-list/prefs.js:35
#: extensions/window-list/prefs.js:42
msgid "Window Grouping"
msgstr "Združevanje oken"
#: extensions/window-list/prefs.js:40
#: extensions/window-list/prefs.js:47
msgid "Never group windows"
msgstr "Nikoli ne združuj oken"
#: extensions/window-list/prefs.js:41
#: extensions/window-list/prefs.js:48
msgid "Group windows when space is limited"
msgstr "Združi okna, ko je prostor omejen"
#: extensions/window-list/prefs.js:42
#: extensions/window-list/prefs.js:49
msgid "Always group windows"
msgstr "Okna vedno združuj"
#: extensions/window-list/prefs.js:66
#: extensions/window-list/prefs.js:69
msgid "Show on all monitors"
msgstr "Pokaži na vseh zaslonih"
#: extensions/window-list/prefs.js:92
msgid "Show workspace previews"
msgstr "Pokaži predoglede delovne površine"
#: 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:155
msgid "Workspace Names"
msgstr "Imena delovnih površin"
#: extensions/workspace-indicator/prefs.js:281
msgid "Add Workspace"
msgstr "Dodaj delovno površino"
#: 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"
@@ -355,3 +341,28 @@ msgstr "Pokaži predoglede delovne površine v zgornji vrstici"
#: extensions/workspace-indicator/workspaceIndicator.js:430
msgid "Workspace Indicator"
msgstr "Kazalnik delovnih površin"
#: extensions/workspace-indicator/workspacePrefs.js:29
msgid "Show Previews"
msgstr "Pokaži predoglede"
#: extensions/workspace-indicator/workspacePrefs.js:87
#, javascript-format
msgid "Workspace %d"
msgstr "Delovna površina %d"
#: extensions/workspace-indicator/workspacePrefs.js:154
msgid "Workspace Names"
msgstr "Imena delovnih površin"
#: extensions/workspace-indicator/workspacePrefs.js:171
msgid "Add Workspace"
msgstr "Dodaj delovno površino"
#: extensions/workspace-indicator/workspacePrefs.js:196
msgid "Remove"
msgstr "Odstrani"
#: extensions/workspace-indicator/workspacePrefs.js:226
msgid "Workspaces"
msgstr "Delovne površine"

133
po/tr.po
View File

@@ -14,8 +14,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-08-12 20:31+0000\n"
"PO-Revision-Date: 2024-05-06 05:17+0300\n"
"POT-Creation-Date: 2024-11-25 08:47+0000\n"
"PO-Revision-Date: 2024-11-30 23:58+0300\n"
"Last-Translator: Sabri Ünal <yakushabb@gmail.com>\n"
"Language-Team: Turkish <takim@gnome.org.tr>\n"
"Language: tr\n"
@@ -23,7 +23,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: Poedit 3.4.2\n"
"X-Generator: Poedit 3.5\n"
#: data/gnome-classic.desktop.in:3
msgid "GNOME Classic"
@@ -42,11 +42,11 @@ msgstr "Wayland üstünde GNOME Klasik"
msgid "GNOME Classic on Xorg"
msgstr "Xorg üstünde GNOME Klasik"
#: extensions/apps-menu/extension.js:126
#: extensions/apps-menu/extension.js:125
msgid "Favorites"
msgstr "Gözdeler"
#: extensions/apps-menu/extension.js:400
#: extensions/apps-menu/extension.js:399
msgid "Apps"
msgstr "Uygulamalar"
@@ -62,17 +62,17 @@ msgstr ""
"Her biri, bir uygulama kimliği (masaüstü dosya adı) ardından gelen iki nokta "
"üst üste ve çalışma alanı numarasını içeren dizgeler listesi"
#: extensions/auto-move-windows/prefs.js:159
#: extensions/auto-move-windows/prefs.js:156
msgid "Workspace Rules"
msgstr "Çalışma Alanı Kuralları"
#: extensions/auto-move-windows/prefs.js:314
#: extensions/auto-move-windows/prefs.js:311
msgid "Add Rule"
msgstr "Kural Ekle"
#. TRANSLATORS: %s is the filesystem name
#: extensions/drive-menu/extension.js:123
#: extensions/places-menu/placeDisplay.js:218
#: extensions/places-menu/placeDisplay.js:187
#, javascript-format
msgid "Ejecting drive “%s” failed:"
msgstr "“%s” sürücüsü çıkarılamadı:"
@@ -115,33 +115,40 @@ msgstr ""
"Yapılan değişikliklerin etkili olması için kabuğun yeniden başlatılması "
"gerekir."
#: extensions/places-menu/extension.js:91
#: extensions/places-menu/extension.js:94
#: extensions/places-menu/extension.js:75
#: extensions/places-menu/extension.js:78
msgid "Places"
msgstr "Yerler"
#: extensions/places-menu/placeDisplay.js:60
#: extensions/places-menu/placeDisplay.js:53
#, javascript-format
msgid "Failed to launch “%s”"
msgstr "“%s” başlatılamadı"
#: extensions/places-menu/placeDisplay.js:75
#: extensions/places-menu/placeDisplay.js:68
#, javascript-format
msgid "Failed to mount volume for “%s”"
msgstr "“%s” için birim bağlanamadı"
#: extensions/places-menu/placeDisplay.js:135
#: extensions/places-menu/placeDisplay.js:158
msgid "Computer"
msgstr "Bilgisayar"
#: extensions/places-menu/placeDisplay.js:333
#: extensions/places-menu/placeDisplay.js:316
msgid "Home"
msgstr "Ev"
#: extensions/places-menu/placeDisplay.js:378
msgid "Browse Network"
msgstr "Ağa Gözat"
#: extensions/places-menu/placeDisplay.js:322
msgid "Recent"
msgstr "Son"
#: extensions/places-menu/placeDisplay.js:328
msgid "Starred"
msgstr "Yıldızlı"
#: extensions/places-menu/placeDisplay.js:348
msgid "Network"
msgstr "Ağ"
#: extensions/places-menu/placeDisplay.js:355
msgid "Trash"
msgstr "Çöp"
#: extensions/screenshot-window-sizer/org.gnome.shell.extensions.screenshot-window-sizer.gschema.xml:14
msgid "Cycle Screenshot Sizes"
@@ -231,47 +238,47 @@ msgstr "Tema adı"
msgid "The name of the theme, to be loaded from ~/.themes/name/gnome-shell"
msgstr "~/.themes/name/gnome-shell konumundan edinilen tema adı"
#: extensions/window-list/extension.js:70
#: extensions/window-list/extension.js:92
msgid "Close"
msgstr "Kapat"
#: extensions/window-list/extension.js:97
#: extensions/window-list/extension.js:119
msgid "Unminimize"
msgstr "Önceki duruma getir"
#: extensions/window-list/extension.js:97
#: extensions/window-list/extension.js:119
msgid "Minimize"
msgstr "Simge durumuna küçült"
#: extensions/window-list/extension.js:104
#: extensions/window-list/extension.js:126
msgid "Unmaximize"
msgstr "Önceki duruma getir"
#: extensions/window-list/extension.js:104
#: extensions/window-list/extension.js:126
msgid "Maximize"
msgstr "En büyük duruma getir"
#: extensions/window-list/extension.js:489
#: extensions/window-list/extension.js:641
msgid "Minimize all"
msgstr "Tümünü simge durumuna küçült"
#: extensions/window-list/extension.js:495
#: extensions/window-list/extension.js:647
msgid "Unminimize all"
msgstr "Tümünü önceki duruma getir"
#: extensions/window-list/extension.js:501
#: extensions/window-list/extension.js:653
msgid "Maximize all"
msgstr "Tümünü en büyük duruma getir"
#: extensions/window-list/extension.js:509
#: extensions/window-list/extension.js:661
msgid "Unmaximize all"
msgstr "Tümünü önceki duruma getir"
#: extensions/window-list/extension.js:517
#: extensions/window-list/extension.js:669
msgid "Close all"
msgstr "Tümünü kapat"
#: extensions/window-list/extension.js:789
#: extensions/window-list/extension.js:911 extensions/window-list/prefs.js:23
msgid "Window List"
msgstr "Pencere Listesi"
@@ -285,11 +292,11 @@ msgid ""
"Possible values are “never”, “auto” and “always”."
msgstr ""
"Pencere listesinde aynı uygulamaların ne zaman kümeleneceğine karar verir. "
"Olası değerler: “never” (hiçbir zaman), “auto” (kendiliğinden) ve “always” "
"(her zaman)."
"Olası değerler: “never” (hiçbir zaman), “auto” (kendiliğinden) ve "
"“always” (her zaman)."
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:26
#: extensions/window-list/prefs.js:79
#: extensions/window-list/prefs.js:74
msgid "Show windows from all workspaces"
msgstr "Tüm çalışma alanlarındaki pencereleri göster"
@@ -315,47 +322,26 @@ msgstr ""
msgid "Show workspace previews in window list"
msgstr "Pencere listesinde çalışma alanı ön izlemelerini göster"
#: extensions/window-list/prefs.js:35
#: extensions/window-list/prefs.js:41
msgid "Window Grouping"
msgstr "Pencere Kümeleme"
#: extensions/window-list/prefs.js:40
#: extensions/window-list/prefs.js:46
msgid "Never group windows"
msgstr "Pencereleri asla kümeleme"
#: extensions/window-list/prefs.js:41
#: extensions/window-list/prefs.js:47
msgid "Group windows when space is limited"
msgstr "Yer kısıtlıyken pencereleri kümele"
#: extensions/window-list/prefs.js:42
#: extensions/window-list/prefs.js:48
msgid "Always group windows"
msgstr "Pencereleri her zaman kümele"
#: extensions/window-list/prefs.js:66
#: extensions/window-list/prefs.js:68
msgid "Show on all monitors"
msgstr "Tüm monitörlerde göster"
#: extensions/window-list/prefs.js:92
msgid "Show workspace previews"
msgstr "Çalışma alanı ön izlemelerini göster"
#: extensions/workspace-indicator/prefs.js:30
msgid "Show Previews In Top Bar"
msgstr "Ön İzlemeleri Üst Çubukta Göster"
#: extensions/workspace-indicator/prefs.js:88
#, javascript-format
msgid "Workspace %d"
msgstr "Çalışma Alanı %d"
#: extensions/workspace-indicator/prefs.js:155
msgid "Workspace Names"
msgstr "Çalışma Alanı Adları"
#: extensions/workspace-indicator/prefs.js:281
msgid "Add Workspace"
msgstr "Çalışma Alanı Ekle"
#: extensions/workspace-indicator/schemas/org.gnome.shell.extensions.workspace-indicator.gschema.xml:12
msgid "Show workspace previews in top bar"
msgstr "Çalışma alanı ön izlemelerini üst çubukta göster"
@@ -363,3 +349,28 @@ msgstr "Çalışma alanı ön izlemelerini üst çubukta göster"
#: extensions/workspace-indicator/workspaceIndicator.js:430
msgid "Workspace Indicator"
msgstr "Çalışma Alanı Belirteci"
#: extensions/workspace-indicator/workspacePrefs.js:28
msgid "Show Previews"
msgstr "Ön İzlemeleri Göster"
#: extensions/workspace-indicator/workspacePrefs.js:86
#, javascript-format
msgid "Workspace %d"
msgstr "Çalışma Alanı %d"
#: extensions/workspace-indicator/workspacePrefs.js:153
msgid "Workspace Names"
msgstr "Çalışma Alanı Adları"
#: extensions/workspace-indicator/workspacePrefs.js:170
msgid "Add Workspace"
msgstr "Çalışma Alanı Ekle"
#: extensions/workspace-indicator/workspacePrefs.js:195
msgid "Remove"
msgstr "Kaldır"
#: extensions/workspace-indicator/workspacePrefs.js:225
msgid "Workspaces"
msgstr "Çalışma Alanları"