New upstream version 48~beta
This commit is contained in:
72
.gitlab/issue_templates/Default.md
Normal file
72
.gitlab/issue_templates/Default.md
Normal 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"
|
||||
2
.gitlab/issue_templates/Default.md.license
Normal file
2
.gitlab/issue_templates/Default.md.license
Normal file
@@ -0,0 +1,2 @@
|
||||
SPDX-FileCopyrightText: 2024 Florian Müllner <fmuellner@gnome.org>
|
||||
SPDX-License-Identifier: CC-BY-SA-4.0
|
||||
47
.gitlab/issue_templates/Feature.md
Normal file
47
.gitlab/issue_templates/Feature.md
Normal 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"
|
||||
3
.gitlab/issue_templates/Feature.md.license
Normal file
3
.gitlab/issue_templates/Feature.md.license
Normal file
@@ -0,0 +1,3 @@
|
||||
SPDX-FileCopyrightText: 2024 Florian Müllner <fmuellner@gnome.org>
|
||||
SPDX-License-Identifier: CC-BY-SA-4.0
|
||||
|
||||
22
.reuse/dep5
22
.reuse/dep5
@@ -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
|
||||
@@ -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
170
LICENSES/CC-BY-SA-4.0.txt
Normal 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 licensor’s permission is not necessary for any reason–for example, because of any applicable exception or limitation to copyright–then 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 Adapter’s 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 Adapter’s 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
55
NEWS
@@ -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
108
README.md
@@ -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
31
REUSE.toml
Normal 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"
|
||||
@@ -1,2 +0,0 @@
|
||||
To update the gnome-shell-sass submodule to latest upstream commit:
|
||||
git submodule update --rebase
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -37,6 +37,7 @@ workspaceIndicatorSources = [
|
||||
command: transform_stylesheet,
|
||||
capture: true,
|
||||
),
|
||||
files('../workspace-indicator/workspacePrefs.js'),
|
||||
]
|
||||
|
||||
extension_sources += files('prefs.js') + workspaceIndicatorSources
|
||||
|
||||
@@ -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));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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')
|
||||
|
||||
@@ -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());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
232
extensions/workspace-indicator/workspacePrefs.js
Normal file
232
extensions/workspace-indicator/workspacePrefs.js
Normal 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());
|
||||
}
|
||||
}
|
||||
@@ -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',
|
||||
)
|
||||
|
||||
@@ -29,6 +29,7 @@ he
|
||||
hi
|
||||
hr
|
||||
hu
|
||||
ia
|
||||
id
|
||||
is
|
||||
it
|
||||
|
||||
@@ -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
123
po/be.po
@@ -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
121
po/ca.po
@@ -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
121
po/fur.po
@@ -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
127
po/he.po
@@ -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
365
po/ia.po
Normal 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"
|
||||
145
po/pt_BR.po
145
po/pt_BR.po
@@ -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
123
po/ru.po
@@ -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
115
po/sl.po
@@ -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
133
po/tr.po
@@ -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ı"
|
||||
|
||||
Reference in New Issue
Block a user