pax_global_header 0000666 0000000 0000000 00000000064 15064747536 0014533 g ustar 00root root 0000000 0000000 52 comment=c32667693d0831c29e3ab3f7bfeb675ea1531a00
desktop-icons-ng-49.0.5-c32667693d0831c29e3ab3f7bfeb675ea1531a00/ 0000775 0000000 0000000 00000000000 15064747536 0022363 5 ustar 00root root 0000000 0000000 desktop-icons-ng-49.0.5-c32667693d0831c29e3ab3f7bfeb675ea1531a00/COPYING 0000664 0000000 0000000 00000104513 15064747536 0023422 0 ustar 00root root 0000000 0000000 GNU GENERAL PUBLIC LICENSE
Version 3, 29 June 2007
Copyright (C) 2007 Free Software Foundation, Inc.
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The GNU General Public License is a free, copyleft license for
software and other kinds of works.
The licenses for most software and other practical works are designed
to take away your freedom to share and change the works. By contrast,
the GNU General Public License is intended to guarantee your freedom to
share and change all versions of a program--to make sure it remains free
software for all its users. We, the Free Software Foundation, use the
GNU General Public License for most of our software; it applies also to
any other work released this way by its authors. You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
them if you wish), that you receive source code or can get it if you
want it, that you can change the software or use pieces of it in new
free programs, and that you know you can do these things.
To protect your rights, we need to prevent others from denying you
these rights or asking you to surrender the rights. Therefore, you have
certain responsibilities if you distribute copies of the software, or if
you modify it: responsibilities to respect the freedom of others.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must pass on to the recipients the same
freedoms that you received. You must make sure that they, too, receive
or can get the source code. And you must show them these terms so they
know their rights.
Developers that use the GNU GPL protect your rights with two steps:
(1) assert copyright on the software, and (2) offer you this License
giving you legal permission to copy, distribute and/or modify it.
For the developers' and authors' protection, the GPL clearly explains
that there is no warranty for this free software. For both users' and
authors' sake, the GPL requires that modified versions be marked as
changed, so that their problems will not be attributed erroneously to
authors of previous versions.
Some devices are designed to deny users access to install or run
modified versions of the software inside them, although the manufacturer
can do so. This is fundamentally incompatible with the aim of
protecting users' freedom to change the software. The systematic
pattern of such abuse occurs in the area of products for individuals to
use, which is precisely where it is most unacceptable. Therefore, we
have designed this version of the GPL to prohibit the practice for those
products. If such problems arise substantially in other domains, we
stand ready to extend this provision to those domains in future versions
of the GPL, as needed to protect the freedom of users.
Finally, every program is threatened constantly by software patents.
States should not allow patents to restrict development and use of
software on general-purpose computers, but in those that do, we wish to
avoid the special danger that patents applied to a free program could
make it effectively proprietary. To prevent this, the GPL assures that
patents cannot be used to render the program non-free.
The precise terms and conditions for copying, distribution and
modification follow.
TERMS AND CONDITIONS
0. Definitions.
"This License" refers to version 3 of the GNU General Public License.
"Copyright" also means copyright-like laws that apply to other kinds of
works, such as semiconductor masks.
"The Program" refers to any copyrightable work licensed under this
License. Each licensee is addressed as "you". "Licensees" and
"recipients" may be individuals or organizations.
To "modify" a work means to copy from or adapt all or part of the work
in a fashion requiring copyright permission, other than the making of an
exact copy. The resulting work is called a "modified version" of the
earlier work or a work "based on" the earlier work.
A "covered work" means either the unmodified Program or a work based
on the Program.
To "propagate" a work means to do anything with it that, without
permission, would make you directly or secondarily liable for
infringement under applicable copyright law, except executing it on a
computer or modifying a private copy. Propagation includes copying,
distribution (with or without modification), making available to the
public, and in some countries other activities as well.
To "convey" a work means any kind of propagation that enables other
parties to make or receive copies. Mere interaction with a user through
a computer network, with no transfer of a copy, is not conveying.
An interactive user interface displays "Appropriate Legal Notices"
to the extent that it includes a convenient and prominently visible
feature that (1) displays an appropriate copyright notice, and (2)
tells the user that there is no warranty for the work (except to the
extent that warranties are provided), that licensees may convey the
work under this License, and how to view a copy of this License. If
the interface presents a list of user commands or options, such as a
menu, a prominent item in the list meets this criterion.
1. Source Code.
The "source code" for a work means the preferred form of the work
for making modifications to it. "Object code" means any non-source
form of a work.
A "Standard Interface" means an interface that either is an official
standard defined by a recognized standards body, or, in the case of
interfaces specified for a particular programming language, one that
is widely used among developers working in that language.
The "System Libraries" of an executable work include anything, other
than the work as a whole, that (a) is included in the normal form of
packaging a Major Component, but which is not part of that Major
Component, and (b) serves only to enable use of the work with that
Major Component, or to implement a Standard Interface for which an
implementation is available to the public in source code form. A
"Major Component", in this context, means a major essential component
(kernel, window system, and so on) of the specific operating system
(if any) on which the executable work runs, or a compiler used to
produce the work, or an object code interpreter used to run it.
The "Corresponding Source" for a work in object code form means all
the source code needed to generate, install, and (for an executable
work) run the object code and to modify the work, including scripts to
control those activities. However, it does not include the work's
System Libraries, or general-purpose tools or generally available free
programs which are used unmodified in performing those activities but
which are not part of the work. For example, Corresponding Source
includes interface definition files associated with source files for
the work, and the source code for shared libraries and dynamically
linked subprograms that the work is specifically designed to require,
such as by intimate data communication or control flow between those
subprograms and other parts of the work.
The Corresponding Source need not include anything that users
can regenerate automatically from other parts of the Corresponding
Source.
The Corresponding Source for a work in source code form is that
same work.
2. Basic Permissions.
All rights granted under this License are granted for the term of
copyright on the Program, and are irrevocable provided the stated
conditions are met. This License explicitly affirms your unlimited
permission to run the unmodified Program. The output from running a
covered work is covered by this License only if the output, given its
content, constitutes a covered work. This License acknowledges your
rights of fair use or other equivalent, as provided by copyright law.
You may make, run and propagate covered works that you do not
convey, without conditions so long as your license otherwise remains
in force. You may convey covered works to others for the sole purpose
of having them make modifications exclusively for you, or provide you
with facilities for running those works, provided that you comply with
the terms of this License in conveying all material for which you do
not control copyright. Those thus making or running the covered works
for you must do so exclusively on your behalf, under your direction
and control, on terms that prohibit them from making any copies of
your copyrighted material outside their relationship with you.
Conveying under any other circumstances is permitted solely under
the conditions stated below. Sublicensing is not allowed; section 10
makes it unnecessary.
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
No covered work shall be deemed part of an effective technological
measure under any applicable law fulfilling obligations under article
11 of the WIPO copyright treaty adopted on 20 December 1996, or
similar laws prohibiting or restricting circumvention of such
measures.
When you convey a covered work, you waive any legal power to forbid
circumvention of technological measures to the extent such circumvention
is effected by exercising rights under this License with respect to
the covered work, and you disclaim any intention to limit operation or
modification of the work as a means of enforcing, against the work's
users, your or third parties' legal rights to forbid circumvention of
technological measures.
4. Conveying Verbatim Copies.
You may convey verbatim copies of the Program's source code as you
receive it, in any medium, provided that you conspicuously and
appropriately publish on each copy an appropriate copyright notice;
keep intact all notices stating that this License and any
non-permissive terms added in accord with section 7 apply to the code;
keep intact all notices of the absence of any warranty; and give all
recipients a copy of this License along with the Program.
You may charge any price or no price for each copy that you convey,
and you may offer support or warranty protection for a fee.
5. Conveying Modified Source Versions.
You may convey a work based on the Program, or the modifications to
produce it from the Program, in the form of source code under the
terms of section 4, provided that you also meet all of these conditions:
a) The work must carry prominent notices stating that you modified
it, and giving a relevant date.
b) The work must carry prominent notices stating that it is
released under this License and any conditions added under section
7. This requirement modifies the requirement in section 4 to
"keep intact all notices".
c) You must license the entire work, as a whole, under this
License to anyone who comes into possession of a copy. This
License will therefore apply, along with any applicable section 7
additional terms, to the whole of the work, and all its parts,
regardless of how they are packaged. This License gives no
permission to license the work in any other way, but it does not
invalidate such permission if you have separately received it.
d) If the work has interactive user interfaces, each must display
Appropriate Legal Notices; however, if the Program has interactive
interfaces that do not display Appropriate Legal Notices, your
work need not make them do so.
A compilation of a covered work with other separate and independent
works, which are not by their nature extensions of the covered work,
and which are not combined with it such as to form a larger program,
in or on a volume of a storage or distribution medium, is called an
"aggregate" if the compilation and its resulting copyright are not
used to limit the access or legal rights of the compilation's users
beyond what the individual works permit. Inclusion of a covered work
in an aggregate does not cause this License to apply to the other
parts of the aggregate.
6. Conveying Non-Source Forms.
You may convey a covered work in object code form under the terms
of sections 4 and 5, provided that you also convey the
machine-readable Corresponding Source under the terms of this License,
in one of these ways:
a) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by the
Corresponding Source fixed on a durable physical medium
customarily used for software interchange.
b) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by a
written offer, valid for at least three years and valid for as
long as you offer spare parts or customer support for that product
model, to give anyone who possesses the object code either (1) a
copy of the Corresponding Source for all the software in the
product that is covered by this License, on a durable physical
medium customarily used for software interchange, for a price no
more than your reasonable cost of physically performing this
conveying of source, or (2) access to copy the
Corresponding Source from a network server at no charge.
c) Convey individual copies of the object code with a copy of the
written offer to provide the Corresponding Source. This
alternative is allowed only occasionally and noncommercially, and
only if you received the object code with such an offer, in accord
with subsection 6b.
d) Convey the object code by offering access from a designated
place (gratis or for a charge), and offer equivalent access to the
Corresponding Source in the same way through the same place at no
further charge. You need not require recipients to copy the
Corresponding Source along with the object code. If the place to
copy the object code is a network server, the Corresponding Source
may be on a different server (operated by you or a third party)
that supports equivalent copying facilities, provided you maintain
clear directions next to the object code saying where to find the
Corresponding Source. Regardless of what server hosts the
Corresponding Source, you remain obligated to ensure that it is
available for as long as needed to satisfy these requirements.
e) Convey the object code using peer-to-peer transmission, provided
you inform other peers where the object code and Corresponding
Source of the work are being offered to the general public at no
charge under subsection 6d.
A separable portion of the object code, whose source code is excluded
from the Corresponding Source as a System Library, need not be
included in conveying the object code work.
A "User Product" is either (1) a "consumer product", which means any
tangible personal property which is normally used for personal, family,
or household purposes, or (2) anything designed or sold for incorporation
into a dwelling. In determining whether a product is a consumer product,
doubtful cases shall be resolved in favor of coverage. For a particular
product received by a particular user, "normally used" refers to a
typical or common use of that class of product, regardless of the status
of the particular user or of the way in which the particular user
actually uses, or expects or is expected to use, the product. A product
is a consumer product regardless of whether the product has substantial
commercial, industrial or non-consumer uses, unless such uses represent
the only significant mode of use of the product.
"Installation Information" for a User Product means any methods,
procedures, authorization keys, or other information required to install
and execute modified versions of a covered work in that User Product from
a modified version of its Corresponding Source. The information must
suffice to ensure that the continued functioning of the modified object
code is in no case prevented or interfered with solely because
modification has been made.
If you convey an object code work under this section in, or with, or
specifically for use in, a User Product, and the conveying occurs as
part of a transaction in which the right of possession and use of the
User Product is transferred to the recipient in perpetuity or for a
fixed term (regardless of how the transaction is characterized), the
Corresponding Source conveyed under this section must be accompanied
by the Installation Information. But this requirement does not apply
if neither you nor any third party retains the ability to install
modified object code on the User Product (for example, the work has
been installed in ROM).
The requirement to provide Installation Information does not include a
requirement to continue to provide support service, warranty, or updates
for a work that has been modified or installed by the recipient, or for
the User Product in which it has been modified or installed. Access to a
network may be denied when the modification itself materially and
adversely affects the operation of the network or violates the rules and
protocols for communication across the network.
Corresponding Source conveyed, and Installation Information provided,
in accord with this section must be in a format that is publicly
documented (and with an implementation available to the public in
source code form), and must require no special password or key for
unpacking, reading or copying.
7. Additional Terms.
"Additional permissions" are terms that supplement the terms of this
License by making exceptions from one or more of its conditions.
Additional permissions that are applicable to the entire Program shall
be treated as though they were included in this License, to the extent
that they are valid under applicable law. If additional permissions
apply only to part of the Program, that part may be used separately
under those permissions, but the entire Program remains governed by
this License without regard to the additional permissions.
When you convey a copy of a covered work, you may at your option
remove any additional permissions from that copy, or from any part of
it. (Additional permissions may be written to require their own
removal in certain cases when you modify the work.) You may place
additional permissions on material, added by you to a covered work,
for which you have or can give appropriate copyright permission.
Notwithstanding any other provision of this License, for material you
add to a covered work, you may (if authorized by the copyright holders of
that material) supplement the terms of this License with terms:
a) Disclaiming warranty or limiting liability differently from the
terms of sections 15 and 16 of this License; or
b) Requiring preservation of specified reasonable legal notices or
author attributions in that material or in the Appropriate Legal
Notices displayed by works containing it; or
c) Prohibiting misrepresentation of the origin of that material, or
requiring that modified versions of such material be marked in
reasonable ways as different from the original version; or
d) Limiting the use for publicity purposes of names of licensors or
authors of the material; or
e) Declining to grant rights under trademark law for use of some
trade names, trademarks, or service marks; or
f) Requiring indemnification of licensors and authors of that
material by anyone who conveys the material (or modified versions of
it) with contractual assumptions of liability to the recipient, for
any liability that these contractual assumptions directly impose on
those licensors and authors.
All other non-permissive additional terms are considered "further
restrictions" within the meaning of section 10. If the Program as you
received it, or any part of it, contains a notice stating that it is
governed by this License along with a term that is a further
restriction, you may remove that term. If a license document contains
a further restriction but permits relicensing or conveying under this
License, you may add to a covered work material governed by the terms
of that license document, provided that the further restriction does
not survive such relicensing or conveying.
If you add terms to a covered work in accord with this section, you
must place, in the relevant source files, a statement of the
additional terms that apply to those files, or a notice indicating
where to find the applicable terms.
Additional terms, permissive or non-permissive, may be stated in the
form of a separately written license, or stated as exceptions;
the above requirements apply either way.
8. Termination.
You may not propagate or modify a covered work except as expressly
provided under this License. Any attempt otherwise to propagate or
modify it is void, and will automatically terminate your rights under
this License (including any patent licenses granted under the third
paragraph of section 11).
However, if you cease all violation of this License, then your
license from a particular copyright holder is reinstated (a)
provisionally, unless and until the copyright holder explicitly and
finally terminates your license, and (b) permanently, if the copyright
holder fails to notify you of the violation by some reasonable means
prior to 60 days after the cessation.
Moreover, your license from a particular copyright holder is
reinstated permanently if the copyright holder notifies you of the
violation by some reasonable means, this is the first time you have
received notice of violation of this License (for any work) from that
copyright holder, and you cure the violation prior to 30 days after
your receipt of the notice.
Termination of your rights under this section does not terminate the
licenses of parties who have received copies or rights from you under
this License. If your rights have been terminated and not permanently
reinstated, you do not qualify to receive new licenses for the same
material under section 10.
9. Acceptance Not Required for Having Copies.
You are not required to accept this License in order to receive or
run a copy of the Program. Ancillary propagation of a covered work
occurring solely as a consequence of using peer-to-peer transmission
to receive a copy likewise does not require acceptance. However,
nothing other than this License grants you permission to propagate or
modify any covered work. These actions infringe copyright if you do
not accept this License. Therefore, by modifying or propagating a
covered work, you indicate your acceptance of this License to do so.
10. Automatic Licensing of Downstream Recipients.
Each time you convey a covered work, the recipient automatically
receives a license from the original licensors, to run, modify and
propagate that work, subject to this License. You are not responsible
for enforcing compliance by third parties with this License.
An "entity transaction" is a transaction transferring control of an
organization, or substantially all assets of one, or subdividing an
organization, or merging organizations. If propagation of a covered
work results from an entity transaction, each party to that
transaction who receives a copy of the work also receives whatever
licenses to the work the party's predecessor in interest had or could
give under the previous paragraph, plus a right to possession of the
Corresponding Source of the work from the predecessor in interest, if
the predecessor has it or can get it with reasonable efforts.
You may not impose any further restrictions on the exercise of the
rights granted or affirmed under this License. For example, you may
not impose a license fee, royalty, or other charge for exercise of
rights granted under this License, and you may not initiate litigation
(including a cross-claim or counterclaim in a lawsuit) alleging that
any patent claim is infringed by making, using, selling, offering for
sale, or importing the Program or any portion of it.
11. Patents.
A "contributor" is a copyright holder who authorizes use under this
License of the Program or a work on which the Program is based. The
work thus licensed is called the contributor's "contributor version".
A contributor's "essential patent claims" are all patent claims
owned or controlled by the contributor, whether already acquired or
hereafter acquired, that would be infringed by some manner, permitted
by this License, of making, using, or selling its contributor version,
but do not include claims that would be infringed only as a
consequence of further modification of the contributor version. For
purposes of this definition, "control" includes the right to grant
patent sublicenses in a manner consistent with the requirements of
this License.
Each contributor grants you a non-exclusive, worldwide, royalty-free
patent license under the contributor's essential patent claims, to
make, use, sell, offer for sale, import and otherwise run, modify and
propagate the contents of its contributor version.
In the following three paragraphs, a "patent license" is any express
agreement or commitment, however denominated, not to enforce a patent
(such as an express permission to practice a patent or covenant not to
sue for patent infringement). To "grant" such a patent license to a
party means to make such an agreement or commitment not to enforce a
patent against the party.
If you convey a covered work, knowingly relying on a patent license,
and the Corresponding Source of the work is not available for anyone
to copy, free of charge and under the terms of this License, through a
publicly available network server or other readily accessible means,
then you must either (1) cause the Corresponding Source to be so
available, or (2) arrange to deprive yourself of the benefit of the
patent license for this particular work, or (3) arrange, in a manner
consistent with the requirements of this License, to extend the patent
license to downstream recipients. "Knowingly relying" means you have
actual knowledge that, but for the patent license, your conveying the
covered work in a country, or your recipient's use of the covered work
in a country, would infringe one or more identifiable patents in that
country that you have reason to believe are valid.
If, pursuant to or in connection with a single transaction or
arrangement, you convey, or propagate by procuring conveyance of, a
covered work, and grant a patent license to some of the parties
receiving the covered work authorizing them to use, propagate, modify
or convey a specific copy of the covered work, then the patent license
you grant is automatically extended to all recipients of the covered
work and works based on it.
A patent license is "discriminatory" if it does not include within
the scope of its coverage, prohibits the exercise of, or is
conditioned on the non-exercise of one or more of the rights that are
specifically granted under this License. You may not convey a covered
work if you are a party to an arrangement with a third party that is
in the business of distributing software, under which you make payment
to the third party based on the extent of your activity of conveying
the work, and under which the third party grants, to any of the
parties who would receive the covered work from you, a discriminatory
patent license (a) in connection with copies of the covered work
conveyed by you (or copies made from those copies), or (b) primarily
for and in connection with specific products or compilations that
contain the covered work, unless you entered into that arrangement,
or that patent license was granted, prior to 28 March 2007.
Nothing in this License shall be construed as excluding or limiting
any implied license or other defenses to infringement that may
otherwise be available to you under applicable patent law.
12. No Surrender of Others' Freedom.
If conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot convey a
covered work so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you may
not convey it at all. For example, if you agree to terms that obligate you
to collect a royalty for further conveying from those to whom you convey
the Program, the only way you could satisfy both those terms and this
License would be to refrain entirely from conveying the Program.
13. Use with the GNU Affero General Public License.
Notwithstanding any other provision of this License, you have
permission to link or combine any covered work with a work licensed
under version 3 of the GNU Affero General Public License into a single
combined work, and to convey the resulting work. The terms of this
License will continue to apply to the part which is the covered work,
but the special requirements of the GNU Affero General Public License,
section 13, concerning interaction through a network will apply to the
combination as such.
14. Revised Versions of this License.
The Free Software Foundation may publish revised and/or new versions of
the GNU General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the
Program specifies that a certain numbered version of the GNU General
Public License "or any later version" applies to it, you have the
option of following the terms and conditions either of that numbered
version or of any later version published by the Free Software
Foundation. If the Program does not specify a version number of the
GNU General Public License, you may choose any version ever published
by the Free Software Foundation.
If the Program specifies that a proxy can decide which future
versions of the GNU General Public License can be used, that proxy's
public statement of acceptance of a version permanently authorizes you
to choose that version for the Program.
Later license versions may give you additional or different
permissions. However, no additional obligations are imposed on any
author or copyright holder as a result of your choosing to follow a
later version.
15. Disclaimer of Warranty.
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
16. Limitation of Liability.
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
SUCH DAMAGES.
17. Interpretation of Sections 15 and 16.
If the disclaimer of warranty and limitation of liability provided
above cannot be given local legal effect according to their terms,
reviewing courts shall apply local law that most closely approximates
an absolute waiver of all civil liability in connection with the
Program, unless a warranty or assumption of liability accompanies a
copy of the Program in return for a fee.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
state the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
Copyright (C)
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see .
Also add information on how to contact you by electronic and paper mail.
If the program does terminal interaction, make it output a short
notice like this when it starts in an interactive mode:
Copyright (C)
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, your program's commands
might be different; for a GUI interface, you would use an "about box".
You should also get your employer (if you work as a programmer) or school,
if any, to sign a "copyright disclaimer" for the program, if necessary.
For more information on this, and how to apply and follow the GNU GPL, see
.
The GNU General Public License does not permit incorporating your program
into proprietary programs. If your program is a subroutine library, you
may consider it more useful to permit linking proprietary applications with
the library. If this is what you want to do, use the GNU Lesser General
Public License instead of this License. But first, please read
.
desktop-icons-ng-49.0.5-c32667693d0831c29e3ab3f7bfeb675ea1531a00/HISTORY.md 0000664 0000000 0000000 00000037652 15064747536 0024063 0 ustar 00root root 0000000 0000000 # History of versions #
* Version 49.0.5 (2025-09-24)
* Updated Simplified and Traditional chinese translation
* Added full support for Ptyxis
* Version 49.0.4 (2025-08-28)
* Show a notification if a GIR file is missing
* Version 49.0.3 (2025-07-31)
* Fixed `maximize` API changes in Gnome Shell 49
* Version 49.0.2
* Added arabic translation (thanks to Ahmed Najmawi)
* Fixed gnome shell version in debian control file (thanks to Daniel van Vugt)
* Version 49.0.1
* Updated version in Meson
* Version 49.0.0
* Add support for Gnome Shell 49
* Fix Glib.unix_signal_add() warning
* Fix accessibility in the rename popup
* Fix the icon name being said twice with screen readers
* Use dh-armor when creating a debian package (thanks to Alessandro Astone)
* Support selection using Shift+cursor keys
* Allow to select and unselect files with Ctrl+Space
* HOME moves to the top-left icon
* END moves to the bottom-right icon
* Better a11y
* Version 48.2.0
* Don't show odd name when using Ctrl+Alt+TAB
* Version 48.1.0
* Fixed DnD placement (thanks to M.B.)
* Fix icons position after changing zoom
* Version 48.0.0
* Added support for Gnome Shell 48
* Limit the number of templates to avoid crashing
* Use a signal manager to keep track of all the signals
* Version 47.0.13
* Reworked apparmor installation
* Added support for Gnome 47
* Changed the order for screen readers: now it says the file name first
* Updated Occitan translation
* Fixed stacked mode
* Use gnome-ubuntu-panel for settings when in ubuntu desktop
* Version 47.0.12
* Allows to "Open with..." for folders
* Fixed some error messages
* Added apparmor rules for Ubuntu
* Version 47.0.11
* Fix cursor keys when renaming a file
* Updated several translations
* Fixed History file
* Version 47.0.10
* Fix error message when opening the preferences from gnome-extensions-app
* Version 47.0.9
* Added support for Gnome 46
* Now shows popup errors when it fails to open a file (Emin Fedar)
* Now shows popup errors when trying to open a broken symlink (Emin Fedar)
* Now shows popup errors when it fails to set execution flag (Emin Fedar)
* Now shows popup errors when there is an error with switcheroo (Emin Fedar)
* Now shows popup errors when fails to set metadata (Emin Fedar)
* Now uses nautilus if nemo is selected but not installed (Sergio Costas)
* Now uses xdg-terminal-exec to launch a terminal (Torben)
* Now shows an error message if a terminal can't be shown (Torben)
* Version 47.0.8
* Added accessibility support
* Updated turkish, russian and ukranian translations
* Version 47.0.7
* Fix integration with other extensions
* Version 47.0.6
* Migration to Gnome45
* Version 47.0.5
* Fixed creating a folder with several files (Sergio Costas)
* Version 47.0.4
* Fixed focus on X11 when switching between workspaces (Sergio Costas)
* Version 47.0.3
* Fixed not returning if Nemo fails to launch
* Version 47.0.2
* Added support for dark themes (Sundeep Mediratta)
* Reformatted all the code using Eslint (Sergio Costas)
* Fixed thumbnails generation when using the external program (Sergio Costas)
* Fixed some extra little bugs (Sergio Costas)
* Version 47.0.1
* New version scheme
* Cleaned the code (Sergio Costas and Sundeep Mediratta)
* DBus proxy creation is now asynchronous, speeding up the start (Sergio Costas, based on code from Sundeep Mediratta)
* Now it can show the thumbnails for XCF (Gimp) files (Sergio Costas)
* Fixed rubber band initiation (Sundeep Mediratta)
* Fixed window displacement when dragging from the top bar (Sergio Costas)
* Make the extract folder for "Extract here" (Sundeep Mediratta)
* Checks if it runs under XWayland
* Version 47
* Pass the primary monitor index through DBus (Sergio Costas)
* Added keyboard navigation support (Sergio Costas)
* Code cleanups (Sergio Costas)
* Removed File-Roller dependency (Sergio Costas and Marco Trevisan)
* Added an Ubuntu installer (Sergio Costas)
* Fixed rubberband bug in the borders when there is a dock or bar (Sergio Costas and Sundeep Mediratta)
* Now doesn't fail the desktop detection when returning from lock screen (Sergio Costas)
* Version 46
* Fix the relaunching of the desktop process to avoid high CPU usage if it fails (Sergio Costas)
* Don't launch twice the desktop process if the extension is disabled and enabled too fast (Sergio Costas)
* Don't fail if there are zero monitors (Sergio Costas)
* Fix icons appearing over other windows when a dialog was shown (Sergio Costas)
* Version 45
* Fix 'GDK_IS_MONITOR (monitor)' failed message (Sergio Costas)
* Ensure that the desktop is refreshed periodically when a file is constantly being modified (Sundeep Mediratta)
* Keep selected files when the desktop is repainted (Sergio Costas)
* Version 44
* Fixed some sentences not being translated
* Fully removed the 'size-changed' signal to avoid 100% CPU usage in some situations
* Version 43
* Fixed another syntax mistake (Sergio Costas)
* Unified syntax for DbusTimeoutId (Sergio Costas)
* Version 42
* Fixed a bug due to the autocompletion (Sergio Costas)
* Version 41
* Remove signals timeout when the extension is disabled (Sergio Costas)
* Version 40
* Copy instead of Move if Shift or Control is pressed (Sergio Costas)
* Redirect output to the logger in real time (Marco Trevisan)
* Pass timestamps to avoid focus stealing (Marco Trevisan)
* Now shows an emblem when a .desktop file is invalid (Sundeep Mediratta)
* Use correct scaling factor during Drag'n'Drop (Daniel van Vugt)
* Fixed rubberband after hot-change of the zoom value (Sergio Costas)
* Added support for asynchronous thumbnail API (Sergio Costas)
* Allows to disable the emblems in icons (Sergio Costas)
* Now the icons won't disappear when minimizing all windows (Sergio Costas)
* Better DBus management (Sundeep Mediratta)
* Now shows a message when trying to use a feature that requires an external program (Sergio Costas)
* Show a dialog when a .desktop file can't be launched (Sundeep Mediratta)
* Allows to theme the menus (Marco Trevisan)
* Fixed passing undefined classname (Daniel van Vugt)
* Show preferences also in gnome-extensions-app (Sergio Costas)
* Fixed high-CPU usage when moving windows on Ubuntu (Sergio Costas)
* Added support for the new ActivatableServicesChanged signal in DBus (Sergio Costas)
* Version 39
* Fixed "Allow launching" when the file doesn't have executable flag (Sergio Costas)
* Ignore SPACE key to start a search (Laurentiu-Andrei Postole)
* Use CSS to make the window transparent (Sundeep Mediratta)
* Removed "ask to execute" dialog; now shows "Run as a program" (Sergio Costas)
* Removed "run" mode for dialogs (Sundeep Mediratta)
* Fix volume names (Sergio Costas)
* Added support for Nemo file manager (Sergio Costas)
* Fix transparency bug in the properties window (Sergio Costas)
* Version 38
* Fixed Paste in Gnome Shell 3.38 (Sergio Costas)
* Version 37
* Fixed DnD into folders of the desktop (Sergio Costas)
* Version 36
* Fixed 'icon resize' when using stacked icons (Sundeep Mediratta)
* Fixed typo (Davy Defaud)
* Version 35
* Now Ctrl+Shift+N creates a folder, like in Nautilus (Sergio Costas)
* Fixed bug when the extension was disabled (Sergio Costas)
* Version 34
* Fix error popup when pressing arrow keys (Sundeep Mediratta)
* Fix icons appearing during desktop change animation (Sundeep Mediratta)
* Avoid relaunching DING when updating the window size (Sundeep Mediratta)
* Fix scripts by passing file list as parameters (Sergio Costas)
* Show extensions in Nautilus scripts (Sergio Costas)
* Added support for "stacking" files, grouping files of the same type (Sundeep Mediratta)
* Fix clipboard support for last version of Nautilus (Sergio Costas)
* Version 33
* Synchronized version number with the one in Gnome Extensions
* Fixed failure when TEMPLATES folder is not configured (Sergio Costas)
* Other extensions can notify the usable work area (Sergio Costas)
* Fix exception if File-Roller is not installed (Sergio Costas)
* Version 24
* Fixed "Open in terminal" option in right-click menu (Sergio Costas)
* Version 23
* Use the system bell sound instead of GSound (Sergio Costas)
* Transformed DING into a Gtk.Application (Sergio Costas)
* Code cleaning (Sundeep Mediratta and Sergio Costas)
* Fixed loss of focus when an application goes full screen (Sergio Costas)
* Fixed translation problems when installed system-wide (Sergio Costas)
* Fixed pictures preview (Sundeep Mediratta)
* Removed some warnings in the log (Sergio Costas)
* Don't reload the desktop when a window changes to FullScreen (Daniel van Vugt)
* Catch Gio exceptions from extra folders (Daniel van Vugt)
* Version 22
* GSound is now optional (Sergio Costas)
* Version 21
* New folders get a default name and, then, are renamed if the user wants (Sundeep Mediratta)
* Several fixes for DnD (Sergio Costas and Sundeep Mediratta)
* Removed odd symbols from windows title (Sergio Costas)
* Added support for search files in the desktop (Sundeep Mediratta)
* Support nested folders in scripts and templates (Sergio Costas)
* Fixed a crash if a file is created and deleted too quickly (Sundeep Mediratta)
* The desktop now receives the focus when there are no other windows in the current workspace (Sergio Costas)
* Better error management in several places (Sundeep Mediratta and Sergio Costas)
* Version 20
* Removed gir1.2-clutter dependency (Sergio Costas)
* Added compatibility with Gnome Shell 41 (Daniel van Vugt)
* Version 19
* Alt+Enter shows properties like Nautilus (Sundeep Mediratta)
* Hide error windows, new folder window, dialog window and preferences from taskbar and pager (Sundeep Mediratta)
* "Extract" menu item (Sundeep Mediratta)
* Ignore distance in double-clicks, needed for touch screens (Kai-Heng Feng)
* Dont draw green highlight around desktop when dragging and dropping files on it (Sundeep Mediratta)
* Global rubberband (Sundeep Mediratta)
* Smaller icon targets to allow more usable space for right click, and extra padding around rendered icons (Sundeep Mediratta)
* Allows to arrange and sort icons (Sundeep Mediratta)
* Don't unselect the icons after moving them (Sergio Costas)
* Fixed the default location in network mounts (Juha Erkkilä)
* Use the new Nautilus.FileOperations2 API (Marco Trevisan)
* Version 0.18.0
* Pretty selection (Daniel Van Vugt)
* Don't draw green rectangle on screen (Sundeep Mediratta)
* Support for High DPI rendering of icons (Daniel Van Vugt)
* Added "Extract" and "Extract to" options (Sundeep Mediratta)
* Update desktop via DBus metadata change notification (Sundeep Mediratta)
* Version 0.17.0
* Now the preferences are shown in Gnome Shell 40 (Sergio Costas)
* Version 0.16.0
* Simple shadow to improve appearance (Daniel van Vugt)
* Compatibility with Gnome Shell 40 (Sergio Costas)
* Don't show "Email" option if a folder is selected (Sundeep Mediratta)
* Changed the text for "Preferences", to make easier to identify it as "Desktop icons preferences"
* Make new folders near the place where the user did right click (Sundeep Mediratta)
* Version 0.15.0
* Allow to create a folder from a selection of files (Sundeep Mediratta)
* Allow to compress a selection of files (Sundeep Mediratta)
* Allow to send by mail a selection of files (Sundeep Mediratta)
* Allow to show properties of a selection of files (Sundeep Mediratta)
* Added support for scripts (Sundeep Mediratta)
* Updates the desktop icons when the icon theme has changed (Artyom Zorin)
* Now adds new icons to the main screen (Sergio Costas)
* Added hotkey to show/hide hidden files in the desktop (Sergio Costas)
* Added support for dual GPUs (Sergio Costas)
* Improved readability (Ivailo Iliev)
* Now doesn't maximize a minimized window when closing a popup menu (Sergio Costas)
* Keep selected a new file created from templates (Sergio Costas)
* Version 0.14.0
* Now RETURN key in "New folder" and "Rename" only works when the "OK" button is enabled
* Now doesn't use 100% of CPU when an external drive has been mounted by another user
* Version 0.13.0
* added support for fractional zoom
* fixed bug when closing Gedit without saving
* ensures that new icons are added in the right corner always
* shows the destination of a DnD operation
* fix bug when showing drives
* don't show an error when aborting a DnD operation
* Version 0.12.0
* Don't fail if there is no TEMPLATES folder
* Support Ctrl+A for 'select all'
* Use "Home" as the name of the user's personal folder
* Show mounted drives in the desktop
* Re-read the desktop on error
* Custom icons support
* Detect changes in the size of the working area
* Preserves the drop place for remote places
* Better detection for focus loss
* Version 0.11.0 (2020/04/17)
* Copy files instead of move when using DnD into another drive
* Removed flicker when a file is created or removed
* Fix DnD for Chrome and other programs
* Template support
* Allow to choose the align corner for the icons
* Added "Select all" option
* Added support for preview
* Creates folders in the place where the mouse cursor is
* Version 0.10.0 (2020/02/22)
* Added 'tiny' icon size
* Doesn't allow to use an existing name when renaming or creating a new folder
* Fixed the DnD positioning (finally)
* Version 0.9.1 (2020/02/06)
* Now "Delete permanently" works again
* Version 0.9.0 (2020/01/31)
* Fix bug that prevented it to work with Gnome Shell 3.30
* Version 0.8.0 (2020/01/19)
* Fix memory leak when using the rubber band too fast
* Add finally full support for multimonitor and HiDPI combined
* Better precision in DnD
* Version 0.7.0 (2019/12/09)
* Don't show ".desktop" in enabled .desktop files
* Appearance more consistent with Nautilus
* Allows to permanently delete files
* When clicking on a text script, honors "executable-text-activation" setting and, if set, asks what to do
* Honors "show-image-thumbnails" setting
* .desktop files are now launched with the $HOME folder as the current folder
* Allows to run script files with blank spaces in the file name
* Shows an error if Nautilus is not available in the system
* Shows an error if a file or folder can't be permanently deleted
* Added note about configuration
* Version 0.6.0 (2019/10/29)
* Fix icon distribution in the desktop
* Show the "Name" field in the .desktop files
* Better wrap of the names
* Show a tooltip with the filename
* Show a hand mouse cursor on "single click" policy
* Add "delete permanently" option
* Shift + Delete do "delete permanently"
* Better detection of screen size change
* Show symlink emblem also in .desktop files and in files with preview
* Fix "symlink in all icons" bug
* Ensure that all the emblems fit in the icon
* Version 0.5.0 (2019/10/15)
* Fix right-click menu in trash not showing sometimes
* Fix opening a file during New folder operation
* Changed license to GPLv3 only
* Version 0.4.0 (2019/10/04)
* Fix Drag'n'Drop in some special cases
* Don't relaunch the desktop process when disabling and enabling fast
* Temporary fix for X11 size
* Version 0.3.0 (2019/09/17)
* Separate Wayland and X11 paths
* When a file is dropped from another window, it is done at the cursor
* Fixed bug when dragging several files into a Nautilus window
* Version 0.2.0 (2019/08/19)
* Shows the full filename if selected
* Use theme color for selections
* Sends debug info to the journal
* Now kills fine old, unneeded processes
* Allows to launch the desktop app as standalone
* Ensures that the desktop is kept at background when switching workspaces
* Honors the Scale value (for retina-like monitors)
* Hotkeys
* Check if the desktop folder is writable by others
* Now the settings window doesn't block the icons
* Don't show hidden files
* Version 0.1.0 (2019/08/13)
* First semi-working version version
* Has everything supported by Desktop Icons, plus Drag'n'Drop
desktop-icons-ng-49.0.5-c32667693d0831c29e3ab3f7bfeb675ea1531a00/README.md 0000664 0000000 0000000 00000016770 15064747536 0023655 0 ustar 00root root 0000000 0000000 # DING Desktop Icons New Generation
## What is it
Desktop Icons NG for GNOME Shell. It is a fork/rewrite of the official 'Desktop Icons' extension,
with these advantages:
* Drag'n'Drop, both inside the desktop, between desktop and applications, and nautilus windows
* Allows to use "Open with..." option with several files
* When hovering or clicking on an icon with a name too large to fit, it shows the full name
* Doesn't hang the compositor when there is too much activity in the desktop folder
* And much more...
## Requirements
* GNOME Shell >= 3.38
* Nautilus >= 3.38
* File-roller >= 3.38 or Gnome AutoAr (including gir1.2 files)
* Desktop folder already created
## Manual installation
The easiest way of installing DING is to run the `local_install.sh` script. It performs the build steps
specified in the next section.
In Ubuntu, unfortunately, it is not possible to use it directly because the internal desktop-icons-ng
extension interferes. Fortunately, you can find .deb packages for Ubuntu in the oficial page:
If you still want to use the extension from source code, the only way is to install the
package "gnome-session" to be able to use the standard gnome shell session, and there install the
following extensions from extensions.gnome.org:
* Desktop icons ng
* Dash to dock
* Appindicator and KstatusNotifierItem support
* Tiling assistant
That will allow to have the same experience than the original Ubuntu desktop, but with the most recent
versions of the extensions.
## Internal architecture
The code is divided in two parts: a classic Gtk3 program that manages the whole desktop, and a little
extension (comprised only by the files 'extension.js', 'gnomeShellOverride.js', 'visibleArea.js' and
'emulateX11WindowType.js') that have these roles:
* Launch the desktop program at startup, relaunch it if it dies, and kill it if the extension is disabled
* Identify the desktop windows and keep it at the bottom of the windows stack, in all desktops
* Detect changes in the desktop/monitors geometry and notify the main desktop program of them
These two last items are paramount in Wayland systems, because there an application can neither set its
role as freely as in X11, nor get that information.
Of course, to avoid breaking the security model of Wayland, it is paramount to ensure that no other
program can pose as DING. In old versions, the process for identifying the window was quite convoluted,
passing an UUID through STDIN and putting it in the window title. But since Gnome Shell 3.38 there is
a new API that allows to check whether a window belongs to an specific process launched from an
extension, which makes the code much cleaner and straightforward.
The extension monitors all 'map' signals, and when a window from the DING process previously
launched is mapped, it knows that it is the desktop window. It stores that window object, sends it to
the bottom of the stack, and connects to three signals:
* raised: it is called every time the window is sent to the front, so in the callback, the extension
sends it again to the bottom.
* position-changed: although the window doesn't have titlebar, it still is possible to move it using
Alt+F7, or pressing Super and dragging it with the mouse, so this callback returns the window to the
right possition every time the user tries to move it.
* unmanaged: called when the window disappears. It deletes the UUID, and waits for the desktop program
to be killed (it will be relaunched again by the extension, and, of course, a new UUID will be used).
It also monitors other signals to ensure that the desktop receives the focus only when there are no
other windows in the current desktop, and to keep the icons in the right screen, no matter if the
user changes to another virtual desktop.
The extension also intercepts three Gnome Shell system calls, in order to hide the desktop windows
from the tab switcher and the Activities mode. These are 'Meta.Display.get_tab_list()',
'Shell.Global.get_window_actors()', and 'Meta.Workspace.list_windows()'.
## Launching the Desktop Icons application stand-alone
It is possible to launch the desktop icons application in stand-alone mode to do debugging and
testing, but, of course, it will behave as a classic Gtk program: there will be a window with its
titlebar, and the background won't be transparent (it could be, but since the idea is to do debug,
it is better this way). To do so, just launch './ding.js' from the repository directory. If it can't
find the schemas file, just enter the 'schemas' folder and type 'glib-compile-schemas .', and retry.
It accepts the following command line parameters:
* -P: specifies the working path. If not set, it will default to './', which means that all the other
files must be in the current path.
* -D: specifies a monitor. It is followed by another parameter in the form: X:Y:W:H:Z being each letter
a number with, respectively:
* X: the X coordinate of this monitor
* Y: the Y coordinate of this monitor
* W: the width in pixels of this monitor
* H: the height in pixels of this monitor
* Z: the zoom value for this monitor
you can set several -D parameters in the same command line, one for each monitor. A single window
will be created for each monitor. If no -D parameter is specified, it will create a single monitor
with a size of 1280x720 pixels.
* -M: specifies which monitor is the primary index, to add there any new file icon.
## Build with Meson
The project uses a build system called [Meson](https://mesonbuild.com/). You can install
in most Linux distributions as "meson". You also need "ninja" and xgettext.
It's possible to read more information in the Meson docs to tweak the configuration if needed.
For a regular use and local development these are the steps to build the
project and install it:
```bash
meson --prefix=$HOME/.local/ --localedir=share/gnome-shell/extensions/ding@rastersoft.com/locale .build
ninja -C .build install
```
It is strongly recommended to delete the destination folder
($HOME/.local/share/gnome-shell/extensions/ding@rastersoft.com) before doing this, to ensure that no old
data is kept.
## Installing with Puppet
If you want to install it in several machines using puppet, you must first create an installation folder
in your local machine using:
```bash
mkdir install_folder
meson --prefix=`pwd`/install_folder --localedir=share/locale .build
ninja -C .build
ninja -C .build install
rm -f install_folder/share/glib-2.0/schemas/gschemas.compiled
```
The content of the `install_folder` folder is what you must copy in the destination computers at /usr. After
doing that, you must run in each computer `sudo glib-compile-schemas /usr/share/glib-2.0/schemas` to update
the schemas in the system.
## Export extension ZIP file for extensions.gnome.org
To create a ZIP file with the extension, just run:
```bash
./export-zip.sh
```
This will create the file `ding@rastersoft.com.zip` with the extension, following the rules for publishing at extensions.gnome.org.
## .desktop files limitations
To guarantee security, .desktop files can only be launched when several requisites are fullfilled:
* the desktop folder (the folder that contains the desktop files) is writable ONLY by the user
* the .desktop file (the launcher) is writable ONLY by the user
* the .desktop file has been manually enabled by right-clicking on it and selecting "Allow Launching"
If any of these items is false, .desktop files won't work.
## Source code and contacting the author
Sergio Costas
rastersoft@gmail.com
desktop-icons-ng-49.0.5-c32667693d0831c29e3ab3f7bfeb675ea1531a00/app/ 0000775 0000000 0000000 00000000000 15064747536 0023143 5 ustar 00root root 0000000 0000000 desktop-icons-ng-49.0.5-c32667693d0831c29e3ab3f7bfeb675ea1531a00/app/askRenamePopup.js 0000664 0000000 0000000 00000011436 15064747536 0026440 0 ustar 00root root 0000000 0000000 /* DING: Desktop Icons New Generation for GNOME Shell
*
* Copyright (C) 2019 Sergio Costas (rastersoft@gmail.com)
* Based on code original (C) Carlos Soriano
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, version 3 of the License.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
/* exported AskRenamePopup */
'use strict';
const Atk = imports.gi.Atk;
const Gtk = imports.gi.Gtk;
const Gio = imports.gi.Gio;
const GLib = imports.gi.GLib;
const DBusUtils = imports.dbusUtils;
const DesktopIconsUtil = imports.desktopIconsUtil;
const Gettext = imports.gettext.domain('ding');
const SignalManager = imports.signalManager;
const _ = Gettext.gettext;
var AskRenamePopup = class extends SignalManager.SignalManager {
constructor(extensionManager, fileItem, allowReturnOnSameName, closeCB) {
super();
this._extensionManager = extensionManager
this._closeCB = closeCB;
this._allowReturnOnSameName = allowReturnOnSameName;
this._desktopPath = GLib.get_user_special_dir(GLib.UserDirectory.DIRECTORY_DESKTOP);
this._fileItem = fileItem;
this._popover = new Gtk.Popover({
relative_to: fileItem._iconContainer,
modal: true,
});
let contentBox = new Gtk.Grid({
row_spacing: 6,
column_spacing: 6,
margin: 10,
});
this._popover.add(contentBox);
let label = new Gtk.Label({
label: fileItem.isDirectory ? _('Folder name') : _('File name'),
justify: Gtk.Justification.LEFT,
halign: Gtk.Align.START,
});
contentBox.attach(label, 0, 0, 2, 1);
contentBox.get_accessible().add_relationship(Atk.RelationType.LABELLED_BY, label.get_accessible());
this._textArea = new Gtk.Entry();
this._textArea.text = fileItem.fileName;
contentBox.attach(this._textArea, 0, 1, 1, 1);
this._button = new Gtk.Button({label: allowReturnOnSameName ? _('OK') : _('Rename')});
contentBox.attach(this._button, 1, 1, 1, 1);
this.connectSignal(this._button, 'clicked', this._do_rename.bind(this));
this.connectSignal(this._textArea, 'changed', this._validate.bind(this));
this.connectSignal(this._textArea, 'activate', this._do_rename.bind(this));
this.connectSignal(this._popover, 'closed', this._cleanAll.bind(this));
this._extensionManager.showPopup();
this._textArea.set_can_default(true);
this._popover.set_default_widget(this._textArea);
this._button.get_style_context().add_class('suggested-action');
contentBox.show_all();
this._popover.popup();
this._validate();
this._textArea.grab_focus_without_selecting();
this._textArea.select_region(0, DesktopIconsUtil.getFileExtensionOffset(fileItem.fileName, {'isDirectory': fileItem.isDirectory}).offset);
}
_cleanAll() {
this.disconnectAllSignals();
this._extensionManager.hidePopup();
this._closeCB();
}
updateFileItem(fileItem) {
this._fileItem = fileItem;
if (fileItem) {
this._popover.set_relative_to(this._fileItem._iconContainer);
this._popover.modal = true;
this._textArea.set_position(this._cursorPosition);
} else {
this._cursorPosition = this._textArea.get_position();
this._popover.modal = false;
this._popover.set_relative_to(null);
}
}
_validate() {
let text = this._textArea.text;
let finalPath = `${this._desktopPath}/${text}`;
let finalFile = Gio.File.new_for_commandline_arg(finalPath);
if ((text == '') || (text.indexOf('/') !== -1) ||
((text == this._fileItem.fileName) && !this._allowReturnOnSameName) ||
(finalFile.query_exists(null) && (text !== this._fileItem.fileName))) {
this._button.sensitive = false;
} else {
this._button.sensitive = true;
}
}
_do_rename() {
if (!this._button.sensitive) {
return;
}
this._popover.popdown();
if (this._fileItem.fileName == this._textArea.text) {
return;
}
DBusUtils.RemoteFileOperations.RenameURIRemote(
this._fileItem.file.get_uri(), this._textArea.text
);
}
closeWindow() {
this._popover.popdown();
}
};
desktop-icons-ng-49.0.5-c32667693d0831c29e3ab3f7bfeb675ea1531a00/app/autoAr.js 0000664 0000000 0000000 00000072044 15064747536 0024743 0 ustar 00root root 0000000 0000000 /* DING: Desktop Icons New Generation for GNOME Shell
*
* Copyright (C) 2022 Sergio Costas (sergio.costas@canonical.com)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, version 3 of the License.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
'use strict';
const GLib = imports.gi.GLib;
const Gio = imports.gi.Gio;
const Gtk = imports.gi.Gtk;
var GnomeAutoar = null;
try {
GnomeAutoar = imports.gi.GnomeAutoar;
} catch (e) {
}
const Enums = imports.enums;
const FileUtils = imports.fileUtils;
const Prefs = imports.preferences;
const Signals = imports.signals;
const Gettext = imports.gettext.domain('ding');
const _ = Gettext.gettext;
var AutoAr = class {
constructor(desktopManager) {
this._desktopManager = desktopManager;
this._progressWindow = new Gtk.Window({
title: 'Archives Operations',
resizable: false,
deletable: false,
modal: false,
default_height: 100,
window_position: Gtk.WindowPosition.CENTER_ALWAYS,
});
this._progressWindow.connect('delete-event', () => {
return true;
});
this._progressContainer = new Gtk.Box({
spacing: 12,
margin_top: 15,
margin_bottom: 15,
margin_start: 30,
margin_end: 30,
halign: Gtk.Align.CENTER,
orientation: Gtk.Orientation.VERTICAL,
});
this._inhibitCookie = null;
this._progressContainer.connect('remove', () => {
this._progressElements--;
if (this._progressElements == 0) {
this._progressWindow.hide();
if (this._inhibitCookie !== null) {
this._desktopManager.mainApp.uninhibit(this._inhibitCookie);
this._inhibitCookie = null;
}
}
this.emit('progress-elements-changed', this._progressElements);
});
this._progressElements = 0;
const scroll = new Gtk.ScrolledWindow({
propagate_natural_width: true,
min_content_height: 300,
});
scroll.hscrollbar_policy = Gtk.PolicyType.NEVER;
scroll.vscrollbar_policy = Gtk.PolicyType.AUTOMATIC;
this._progressWindow.add(scroll);
const viewport = new Gtk.Viewport();
scroll.add(viewport);
viewport.add(this._progressContainer);
this._refreshExtensions();
}
checkAutoAr() {
if (GnomeAutoar === null) {
this._desktopManager.dbusManager.doNotify(_('AutoAr is not installed'),
_('To be able to work with compressed files, install file-roller and/or gir-1.2-gnomeAutoAr'));
}
return GnomeAutoar !== null;
}
_refreshExtensions() {
this._formats = [];
this._filters = [];
this._extensions = {};
this._combinedExtensions = {};
if (!GnomeAutoar) {
return;
}
const lastFormat = GnomeAutoar.format_last();
const lastFilter = GnomeAutoar.filter_last();
for (let format = 0; format <= lastFormat; format++) {
try {
if (!GnomeAutoar.format_is_valid(format)) {
continue;
}
} catch (e) {
continue;
}
this._formats.push(format);
const extension = GnomeAutoar.format_get_extension(format);
if (!extension) {
continue;
}
this._extensions[extension] = {
extension,
format,
filter: null,
};
}
for (let filter = 0; filter <= lastFilter; filter++) {
try {
if (!GnomeAutoar.filter_is_valid(filter)) {
continue;
}
} catch (e) {
continue;
}
this._filters.push(filter);
const extension = GnomeAutoar.filter_get_extension(filter);
if (!extension) {
continue;
}
this._extensions[extension] = {
extension,
format: null,
filter,
};
}
for (let format of this._formats) {
for (let filter of this._filters) {
const extension = GnomeAutoar.format_filter_get_extension(format, filter);
if (!extension) {
continue;
}
this._combinedExtensions[extension] = {
extension,
format,
filter,
};
}
}
}
extensionIsAvailable(extension) {
return (extension in this._extensions) || (extension in this._combinedExtensions);
}
getFormatAndFilterForExtension(extension) {
if (extension in this._extensions) {
return this._extensions[extension];
}
if (extension in this._combinedExtensions) {
return this._combinedExtensions[extension];
}
return null;
}
_getFormatAndFilterForFilename(fileName) {
for (let extension in this._combinedExtensions) {
if (fileName.endsWith(`.${extension}`)) {
return this._combinedExtensions[extension];
}
}
for (let extension in this._extensions) {
if (fileName.endsWith(`.${extension}`)) {
return this._extensions[extension];
}
}
return null;
}
fileIsCompressed(fileName) {
return this._getFormatAndFilterForFilename(fileName) !== null;
}
runToolAsync(autoArTool, cancellable) {
return new Promise((resolve, reject) => {
const connections = [];
connections.push(autoArTool.connect('cancelled', () => {
connections.forEach(c => autoArTool.disconnect(c));
reject(new GLib.Error(Gio.IOErrorEnum,
Gio.IOErrorEnum.CANCELLED,
'Operation was cancelled'));
}));
connections.push(autoArTool.connect('error', (w, error) => {
connections.forEach(c => autoArTool.disconnect(c));
reject(error);
}));
connections.push(autoArTool.connect('completed', () => {
connections.forEach(c => autoArTool.disconnect(c));
resolve();
}));
autoArTool.start_async(cancellable);
});
}
extractFile(fileName) {
if (!this.checkAutoAr()) {
return;
}
const fullPath = GLib.build_filenamev([GLib.get_user_special_dir(GLib.UserDirectory.DIRECTORY_DESKTOP), fileName]);
const formatFilter = this._getFormatAndFilterForFilename(fileName);
const extSize = formatFilter.extension.length;
const total = fullPath.length;
const folderName = fullPath.substring(0, total - extSize);
const folder = Gio.File.new_for_path(folderName);
const doExtract = new progressDialog(this, _('Extracting files'));
this._password = null;
doExtract.doExtractFile(fullPath, folder, folderName).catch(
e => console.error(e));
}
compressFileItems(fileList, destinationFolder) {
if (!this.checkAutoAr()) {
return;
}
new CompressDialog(this._desktopManager, fileList, destinationFolder);
}
compressFiles(fileList, outputFile, format, filter, password = null) {
if (!this.checkAutoAr()) {
return;
}
const doCompress = new progressDialog(this, _('Compressing files'));
doCompress.doCompressFiles(fileList, outputFile, format, filter, password).catch(
e => console.error(e));
}
notify(title, text) {
this._desktopManager.dbusManager.doNotify(title, text);
}
getProgressElements() {
return this._progressContainer.get_children();
}
addProgress(progressElement, message) {
this._progressContainer.pack_start(progressElement, false, true, 0);
if (this._progressElements == 0) {
this._inhibitCookie = this._desktopManager.mainApp.inhibit(null,
Gtk.ApplicationInhibitFlags.LOGOUT | Gtk.ApplicationInhibitFlags.SUSPEND,
message);
}
this._progressElements++;
this._progressWindow.show_all();
this._progressWindow.present();
this.emit('progress-elements-changed', this._progressElements);
}
};
Signals.addSignalMethods(AutoAr.prototype);
const progressDialog = class {
constructor(autoArClass, message) {
this._autoAr = autoArClass;
this._waitingForPassword = false;
this._currentPassword = null;
this._buttonPromiseAccept = null;
this._container = new Gtk.Box({
spacing: 0,
halign: Gtk.Align.END,
orientation: Gtk.Orientation.VERTICAL,
});
this._processLabel = new Gtk.Label();
this._processBar = new Gtk.ProgressBar();
const container2 = new Gtk.Box({
spacing: 12,
margin_top: 15,
margin_bottom: 15,
margin_start: 30,
margin_end: 30,
halign: Gtk.Align.CENTER,
orientation: Gtk.Orientation.HORIZONTAL,
});
const container3 = new Gtk.Box({
spacing: 10,
halign: Gtk.Align.END,
orientation: Gtk.Orientation.VERTICAL,
});
this._cancelButton = new Gtk.Button({label: _('Cancel')});
this._cancelButton.connect('clicked', () => {
if (this._buttonPromiseAccept) {
this._buttonPromiseAccept(false);
return;
}
this._cancellable.cancel();
});
this._passOkButton = new Gtk.Button({label: _('OK')});
this._passOkButton.get_style_context().add_class('suggested-action');
const passOKfunc = function () {
this._processBar.show();
this._passEntry.hide();
this._passOkButton.hide();
this._currentPassword = this._passEntry.get_text();
if (this._buttonPromiseAccept) {
this._buttonPromiseAccept(true);
}
}.bind(this);
this._passOkButton.connect('clicked', passOKfunc);
this._passEntry = new Gtk.Entry({
placeholder_text: _('Enter a password here'),
input_purpose: Gtk.InputPurpose.PASSWORD,
visibility: false,
secondary_icon_name: 'view-conceal',
secondary_icon_activatable: true,
secondary_icon_sensitive: true,
});
container3.pack_start(this._processLabel, false, true, 0);
container3.pack_start(this._processBar, false, true, 0);
container3.pack_start(this._passEntry, false, true, 0);
container2.pack_start(container3, false, true, 0);
container2.pack_start(this._passOkButton, false, false, 0);
container2.pack_start(this._cancelButton, false, false, 0);
this._container.pack_start(container2, false, false, 0);
this._passEntry.connect('icon-release', () => {
this._passEntry.visibility = !this._passEntry.visibility;
});
this._passEntry.connect('activate', passOKfunc);
const separator = new Gtk.Separator({orientation: Gtk.Orientation.HORIZONTAL});
this._container.pack_start(separator, false, true, 4);
const updateSeparatorVisibility = () => {
const progressElements = this._autoAr.getProgressElements();
separator.visible = progressElements.length &&
this._container != progressElements[progressElements.length - 1];
};
updateSeparatorVisibility();
this._elementsChangedId = this._autoAr.connect('progress-elements-changed',
updateSeparatorVisibility);
this._cancellable = new Gio.Cancellable();
this._autoAr.addProgress(this._container, message);
this._passEntry.hide();
this._passOkButton.hide();
}
async _cleanupFile(file, cancellable) {
if (!file.query_exists(null)) {
return;
}
this._processBar.set_fraction(0);
this._processLabel.set_label(_("Removing partial file '${outputFile}'").replace(
'${outputFile}', file.get_basename()));
this._removeTimer();
this._timer = GLib.timeout_add(GLib.PRIORITY_DEFAULT, 250, () => {
this._processBar.pulse();
return true;
});
try {
await FileUtils.deleteFile(file, null, cancellable);
} catch (e) {
console.error(e, `Failed to remove ${file.get_path()}: ${e.message}`);
} finally {
this._removeTimer();
}
}
async doExtractFile(fullPath, folder, folderName, counter = 1) {
this._processLabel.set_label(_('Creating destination folder'));
this._processBar.pulse();
try {
await folder.make_directory_async_promise(GLib.PRIORITY_DEFAULT, this._cancellable);
const info = new Gio.FileInfo();
info.set_attribute_uint32(Gio.FILE_ATTRIBUTE_UNIX_MODE, 0o700);
try {
await folder.set_attributes_async_promise(info,
Gio.FileQueryInfoFlags.NONE,
GLib.PRIORITY_DEFAULT,
this._cancellable);
} catch (e) {
console.error(e, `Failed to set attributes to ${folder.get_path()}`);
}
} catch (e) {
if (e.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.CANCELLED)) {
this._destroy();
return;
}
if (e.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.EXISTS)) {
const newFolder = Gio.File.new_for_path(`${folderName} (${counter})`);
await this.doExtractFile(fullPath, newFolder, folderName, counter + 1);
return;
}
throw e;
}
this._processLabel.set_label(_("Extracting files into '${outputPath}'").replace(
'${outputPath}', folder.get_basename()));
const fullPathFile = Gio.File.new_for_path(fullPath);
const extractor = GnomeAutoar.Extractor.new(fullPathFile, folder);
extractor.set_output_is_dest(true);
if (extractor.set_passphrase && (this._currentPassword !== null)) {
extractor.set_passphrase(this._currentPassword);
}
this._removeTimer();
this._timer = GLib.timeout_add(GLib.PRIORITY_DEFAULT, 250, () => {
this._processBar.pulse();
return true;
});
let progressTotal = -1;
const progressID = extractor.connect('progress', (w, completedSize) => {
this._removeTimer();
if (progressTotal <= 0) {
progressTotal = extractor.get_total_size();
}
if (progressTotal > 0) {
this._processBar.set_fraction(completedSize / progressTotal);
}
});
try {
await this._autoAr.runToolAsync(extractor, this._cancellable);
this._autoAr.notify(_('Extraction completed'),
_("Extracting '${fullPathFile}' has been completed.").replace(
'${fullPathFile}', fullPathFile.get_basename()));
} catch (e) {
if (e.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.CANCELLED)) {
this._cancellable = new Gio.Cancellable();
await this._cleanupFile(folder, this._cancellable);
this._autoAr.notify(_('Extraction cancelled'),
_("Extracting '${fullPathFile}' has been cancelled by the user.").replace(
'${fullPathFile}', fullPathFile.get_basename()));
} else {
if ((e.code == GnomeAutoar.PASSPHRASE_REQUIRED_ERRNO) && (e.domain == GnomeAutoar.Extractor.quark())) {
this._waitingForPassword = true;
this._processBar.hide();
this._passEntry.show();
this._passOkButton.show();
this._passOkButton.set_receives_default(true);
const tmpfile = Gio.File.new_for_path(fullPath);
this._processLabel.set_label(_('Passphrase required for ${filename}').replace('${filename}', tmpfile.get_basename()));
} else {
this._waitingForPassword = false;
this._autoAr.notify(_('Error during extraction'), e.message);
}
await this._cleanupFile(folder, this._cancellable);
}
} finally {
this._removeTimer();
extractor.disconnect(progressID);
if (!this._waitingForPassword) {
this._destroy();
}
}
if (this._waitingForPassword) {
const retval = await this._waitButtons();
this._buttonPromiseAccept = null;
this._waitingForPassword = false;
if (retval) {
await this.doExtractFile(fullPath, folder, folderName);
}
}
}
_waitButtons() {
return new Promise(accept => {
this._buttonPromiseAccept = accept;
});
}
async doCompressFiles(fileList, outputFile, format, filter, password = null) {
const output = Gio.File.new_for_path(outputFile);
this._processLabel.set_label(_("Compressing files into '${outputFile}'").replace(
'${outputFile}', output.get_basename()));
const compressor = GnomeAutoar.Compressor.new(fileList, output, format, filter, false);
compressor.set_output_is_dest(true);
if (password) {
compressor.set_passphrase(password);
}
const progressID = compressor.connect('progress', () => this._processBar.pulse());
try {
await this._autoAr.runToolAsync(compressor, this._cancellable);
this._autoAr.notify(_('Compression completed'),
_("Compressing files into '${outputFile}' has been completed.").replace(
'${outputFile}', output.get_basename()));
} catch (e) {
if (e.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.EXISTS)) {
this._autoAr.notify(_('Cancelled compression'),
_("The output file '${outputFile}' already exists.").replace(
'${outputFile}', output.get_basename()));
} else {
this._cancellable = new Gio.Cancellable();
await this._cleanupFile(output, this._cancellable);
if (e.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.CANCELLED)) {
this._autoAr.notify(_('Cancelled compression'),
_("Compressing files into '${outputFile}' has been cancelled by the user.").replace(
'${outputFile}', output.get_basename()));
} else {
this._autoAr.notify(_('Error during compression'), e.message);
}
}
} finally {
compressor.disconnect(progressID);
this._destroy();
}
}
_removeTimer() {
if (this._timer) {
GLib.source_remove(this._timer);
this._timer = 0;
}
}
_destroy() {
this._autoAr.disconnect(this._elementsChangedId);
this._cancellable.cancel();
this._container.destroy();
}
};
const CompressDialog = class {
constructor(desktopManager, fileList, destinationFolder) {
this._fileList = [];
for (let file of fileList) {
this._fileList.push(file.file);
}
this._desktopManager = desktopManager;
this._destinationFolder = destinationFolder;
this._dialog = new Gtk.Dialog({
title: _('Create archive'),
resizable: false,
modal: true,
use_header_bar: true,
default_width: 500,
default_height: 210,
window_position: Gtk.WindowPosition.CENTER_ALWAYS,
});
const container = this._dialog.get_content_area();
container.orientation = Gtk.Orientation.VERTICAL;
container.margin_top = 30;
container.margin_bottom = 30;
container.margin_start = 30;
container.margin_end = 30;
container.width_request = 390;
container.halign = Gtk.Align.CENTER;
container.spacing = 6;
if (Prefs.nautilusCompression) {
this._selectedType = Prefs.nautilusCompression.get_enum('default-compression-format');
} else {
this._selectedType = Enums.CompressionType.ZIP;
}
const archiveLabel = new Gtk.Label({
label: `${_('Archive name')}`,
xalign: 0,
use_markup: true,
});
container.pack_start(archiveLabel, false, true, 0);
const box1 = new Gtk.Box({
spacing: 12,
orientation: Gtk.Orientation.HORIZONTAL,
});
this._nameEntry = new Gtk.Entry({
hexpand: true,
width_chars: 30,
});
this._extensionDropdown = new Gtk.Button();
const extensionContainer = new Gtk.Box({
spacing: 2,
orientation: Gtk.Orientation.HORIZONTAL,
});
this._extensionLabel = new Gtk.Label();
this._extensionLock = new Gtk.Image({icon_name: 'dialog-password'});
extensionContainer.pack_start(this._extensionLabel, false, false, 0);
extensionContainer.pack_start(this._extensionLock, false, false, 5);
this._extensionDropdown.add(extensionContainer);
this._extensionPopover = new Gtk.Popover({
relative_to: this._extensionDropdown,
border_width: 8,
});
this._extensionPopoverContainer = new Gtk.Box({
spacing: 4,
orientation: Gtk.Orientation.VERTICAL,
});
this._extensionPopover.add(this._extensionPopoverContainer);
this._passLabel = new Gtk.Label({
label: _('Password'),
margin_top: 6,
xalign: 0,
});
this._passEntry = new Gtk.Entry({
placeholder_text: _('Enter a password here'),
input_purpose: Gtk.InputPurpose.PASSWORD,
visibility: false,
secondary_icon_name: 'view-conceal',
secondary_icon_activatable: true,
secondary_icon_sensitive: true,
});
container.pack_start(box1, false, true, 0);
box1.pack_start(this._nameEntry, false, true, 0);
box1.pack_start(this._extensionDropdown, false, false, 0);
container.pack_start(this._passLabel, false, false, 0);
container.pack_start(this._passEntry, false, false, 0);
this._okButton = this._dialog.add_button(_('Create'), Gtk.ResponseType.ACCEPT);
this._okButton.get_style_context().add_class('suggested-action');
this._okButton.set_receives_default(true);
this._cancelButton = this._dialog.add_button(_('Cancel'), Gtk.ResponseType.CANCEL);
this._cancelButton.set_receives_default(true);
this._fillComboBox();
this._dialog.show_all();
this._updateStatus();
this._extensionDropdown.connect('clicked', () => {
this._extensionPopover.connect('closed', ()=>{
this._desktopManager.hidePopup();
});
this._desktopManager.showPopup();
this._extensionPopoverContainer.show_all();
this._extensionPopover.popup();
for (let index in this._compressOptions) {
const data = this._compressOptions[index];
data.selected_icon.visible = index == this._selectedType;
}
});
this._nameEntry.connect('changed', () => this._updateStatus());
this._passEntry.connect('changed', () => this._updateStatus());
this._nameEntry.connect('activate', () => this._entryActivated());
this._passEntry.connect('activate', () => this._entryActivated());
this._passEntry.connect('icon-release', () => {
this._passEntry.visibility = !this._passEntry.visibility;
});
this._dialog.connect('response', (dialog, id) => {
if (id === Gtk.ResponseType.ACCEPT) {
const data = this._desktopManager.autoAr.getFormatAndFilterForExtension(this._compressOptions[this._selectedType].extension);
const outputFile = GLib.build_filenamev([this._destinationFolder, this._nameEntry.get_text() + data.extension]);
const password = this._passEntry.get_text();
this._desktopManager.autoAr.compressFiles(this._fileList, outputFile, data.format, data.filter, password);
}
this._dialog.close();
});
}
_entryActivated() {
this._updateStatus();
if (this._okButton.sensitive) {
this._dialog.response(Gtk.ResponseType.ACCEPT);
}
}
_updateStatus() {
if (Prefs.nautilusCompression) {
Prefs.nautilusCompression.set_enum('default-compression-format', this._selectedType);
}
const label = this._compressOptions[this._selectedType].extension;
this._extensionLabel.label = label;
this._extensionLock.visible = this._compressOptions[this._selectedType].password;
const password = this._compressOptions[this._selectedType].password;
const outputfile = this._nameEntry.get_text() + label;
this._passLabel.visible = password;
this._passEntry.visible = password;
let context = this._nameEntry.get_style_context();
this._okButton.sensitive = true;
if (this._desktopManager._fileList.map(f => f.fileName).includes(outputfile)) {
this._okButton.sensitive = false;
if (!context.has_class('not-found')) {
context.add_class('not-found');
}
} else if (context.has_class('not-found')) {
context.remove_class('not-found');
}
if (password && (this._passEntry.get_text_length() == 0)) {
this._okButton.sensitive = false;
}
if (this._nameEntry.get_text_length() == 0) {
this._okButton.sensitive = false;
}
}
_fillComboBox() {
this._compressOptions = {};
this._addComboEntry(Enums.CompressionType.ZIP, {
extension: '.zip',
id: 'zip',
description: _('Compatible with all operating systems.'),
password: false,
});
this._addComboEntry(Enums.CompressionType.ENCRYPTED_ZIP, {
extension: '.zip',
id: 'encryptedzip',
description: _('Password protected .zip, must be installed on Windows and Mac.'),
password: true,
});
this._addComboEntry(Enums.CompressionType.TAR_XZ, {
extension: '.tar.xz',
id: 'tar.xz',
description: _('Smaller archives but Linux and Mac only.'),
password: false,
});
this._addComboEntry(Enums.CompressionType.SEVEN_ZIP, {
extension: '.7z',
id: '7z',
description: _('Smaller archives but must be installed on Windows and Mac.'),
password: false,
});
}
_addComboEntry(type, data) {
this._compressOptions[type] = data;
if (!this._desktopManager.autoAr.extensionIsAvailable(data.extension)) {
return;
}
const container = new Gtk.Box({orientation: Gtk.Orientation.VERTICAL});
const container2 = new Gtk.Box({orientation: Gtk.Orientation.HORIZONTAL});
const container3 = new Gtk.Box({orientation: Gtk.Orientation.HORIZONTAL});
container3.pack_start(new Gtk.Label({
label: data.extension,
justify: Gtk.Justification.LEFT,
xalign: 0,
}),
false,
false,
0);
if (data.password) {
container3.pack_start(new Gtk.Image({icon_name: 'dialog-password'}),
false,
false,
5);
}
container.pack_start(container3, false, false, 0);
container.pack_start(new Gtk.Label({
label: data.description,
justify: Gtk.Justification.LEFT,
xalign: 0,
}),
false,
false,
0);
const button = new Gtk.Button();
container2.pack_start(container, true, true, 0);
data.selected_icon = new Gtk.Image({icon_name: 'emblem-default'});
container2.pack_start(data.selected_icon, false, false, 0);
button.add(container2);
this._extensionPopoverContainer.pack_start(button, false, true, 0);
button.connect('clicked', () => {
this._selectedType = type;
this._extensionPopover.popdown();
this._updateStatus();
});
}
};
desktop-icons-ng-49.0.5-c32667693d0831c29e3ab3f7bfeb675ea1531a00/app/createThumbnail.js 0000775 0000000 0000000 00000004560 15064747536 0026620 0 ustar 00root root 0000000 0000000 #!/usr/bin/gjs
/* DING: Desktop Icons New Generation for GNOME Shell
*
* Copyright (C) 2019 Sergio Costas (rastersoft@gmail.com)
* Based on code original (C) Carlos Soriano
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, version 3 of the License.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
'use strict';
imports.gi.versions.GnomeDesktop = '3.0';
const GnomeDesktop = imports.gi.GnomeDesktop;
const Gio = imports.gi.Gio;
/**
*
*/
function CreateThumbnail() {
let thumbnailFactoryNormal = GnomeDesktop.DesktopThumbnailFactory.new(GnomeDesktop.DesktopThumbnailSize.NORMAL);
let thumbnailFactoryLarge = GnomeDesktop.DesktopThumbnailFactory.new(GnomeDesktop.DesktopThumbnailSize.LARGE);
let file = Gio.File.new_for_path(ARGV[0]);
if (!file.query_exists(null)) {
return 1;
}
let fileUri = file.get_uri();
let fileInfo = file.query_info('standard::content-type,time::modified', Gio.FileQueryInfoFlags.NONE, null);
let modifiedTime = fileInfo.get_attribute_uint64('time::modified');
// check if the thumbnail has been already created in the meantime by another program
let thumbnailLarge = thumbnailFactoryLarge.lookup(fileUri, modifiedTime);
if (thumbnailLarge != null) {
return 3;
}
let thumbnailNormal = thumbnailFactoryNormal.lookup(fileUri, modifiedTime);
if (thumbnailNormal != null) {
return 3;
}
if (thumbnailFactoryNormal.has_valid_failed_thumbnail(fileUri, modifiedTime)) {
return 4;
}
// now, generate the file
let thumbnailPixbuf = thumbnailFactoryLarge.generate_thumbnail(fileUri, fileInfo.get_content_type(), null);
if (thumbnailPixbuf == null) {
thumbnailFactoryLarge.create_failed_thumbnail(fileUri, modifiedTime, null);
return 2;
} else {
thumbnailFactoryLarge.save_thumbnail(thumbnailPixbuf, fileUri, modifiedTime, null);
return 0;
}
}
CreateThumbnail();
desktop-icons-ng-49.0.5-c32667693d0831c29e3ab3f7bfeb675ea1531a00/app/dbusInterfaces.js 0000664 0000000 0000000 00000017550 15064747536 0026452 0 ustar 00root root 0000000 0000000 /* DING: Desktop Icons New Generation for GNOME Shell
*
* Copyright (C) 2022 Sergio Costas (rastersoft@gmail.com)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, version 3 of the License.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
/* exported DBusInterfaces */
'use strict';
var DBusInterfaces = {
// net.haddes.SwitcherooControl
'net.hadess.SwitcherooControl': `
`,
// org.freedesktop.FileManager1
'org.freedesktop.FileManager1': `
`,
// org.gnome.ArchiveManager1
'org.gnome.ArchiveManager1': `
`,
// org.gnome.Nautilus.FileOperations2
'org.gnome.Nautilus.FileOperations2': `
`,
// org.gnome.NautilusPreviewer
'org.gnome.NautilusPreviewer': `
`,
// org.gtk.vfs.Metadata
'org.gtk.vfs.Metadata': `
`,
// org.freedesktop.DBus.Introspectable
'org.freedesktop.DBus.Introspectable': `
`,
// org.freedesktop.Notifications
'org.freedesktop.Notifications': `
`,
};
desktop-icons-ng-49.0.5-c32667693d0831c29e3ab3f7bfeb675ea1531a00/app/dbusUtils.js 0000664 0000000 0000000 00000103612 15064747536 0025462 0 ustar 00root root 0000000 0000000 /* DING: Desktop Icons New Generation for GNOME Shell
*
* Copyright (C) 2019-2022 Sergio Costas (rastersoft@gmail.com)
* Based on code original (C) Carlos Soriano
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, version 3 of the License.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
/* exported GtkVfsMetadata, extensionControl, discreteGpuAvailable, RemoteFileOperations, init */
'use strict';
const {Gio, GLib, Gdk, Gtk} = imports.gi;
const Signals = imports.signals;
const DBusInterfaces = imports.dbusInterfaces;
const DesktopIconsUtil = imports.desktopIconsUtil;
const Enums = imports.enums;
var NautilusFileOperations2 = null;
var FreeDesktopFileManager = null;
var GnomeNautilusPreview = null;
var SwitcherooControl = null;
var GnomeArchiveManager = null;
var GtkVfsMetadata = null;
var extensionControl = null;
var discreteGpuAvailable = false;
var dbusManagerObject;
var RemoteFileOperations;
const Gettext = imports.gettext.domain('ding');
const _ = Gettext.gettext;
class ProxyManager {
/*
* This class manages a DBus object through a DBusProxy. Any access to the proxy when the
* object isn't available results in a notification specifying that an specific program
* is needed to run that option.
*
* The proxy itself is accessed through the 'proxy' property (read-only). Any access to
* it will check the availability and show the notification if it isn't available. To get
* access to it without triggering this, it is possible to use the 'proxyNoCheck' property.
*
* Whether the object is or not available can be checked with the 'isAvailable' property.
* Also, every time the availability changes, the signal 'changed-status' is emitted.
*/
constructor(dbusManager, serviceName, objectName, interfaceName, inSystemBus, programNeeded) {
this._dbusManager = dbusManager;
this._serviceName = serviceName;
this._objectName = objectName;
this._interfaceName = interfaceName;
this._inSystemBus = inSystemBus;
this._signals = {};
this._signalsIDs = {};
this._connectSignals = {};
this._connectSignalsIDs = {};
this._beingLaunched = false;
if (typeof programNeeded == 'string') {
// if 'programNeeded' is a string, create a generic message for the notification.
this._programNeeded = [
_('"${programName}" is needed for Desktop Icons').replace('${programName}', programNeeded),
_('For this functionality to work in Desktop Icons, you must install "${programName}" in your system.').replace('${programName}', programNeeded),
programNeeded,
];
} else {
// instead, if it's not, it is presumed to be an array with two sentences, one for the notification title and another for the main text.
this._programNeeded = programNeeded;
}
this._timeout = 0;
this._available = false;
this._proxy = null;
if (this._dbusManager.checkIsAvailable(this._serviceName, this._inSystemBus)) {
this.makeNewProxy();
}
dbusManager.connect(inSystemBus ? 'changed-availability-system' : 'changed-availability-local', () => {
const newAvailability = this._dbusManager.checkIsAvailable(this._serviceName, this._inSystemBus);
if (newAvailability != this._available) {
if (newAvailability) {
this.makeNewProxy();
} else {
this._available = false;
this._proxy = null;
this.emit('changed-status', false);
}
}
});
}
connectSignalToProxy(signal, cb) {
this._connectSignals[signal] = cb;
if (this._proxy) {
this._connectSignalsIDs[signal] = this._proxy.connectSignal(signal, cb);
}
}
connectToProxy(signal, cb) {
this._signals[signal] = cb;
if (this._proxy) {
this._signalsIDs[signal] = this._proxy.connect(signal, cb);
}
}
disconnectFromProxy(signal) {
if (signal in this._signalsIDs) {
if (this._proxy) {
this._proxy.disconnect(this._signalsIDs[signal]);
}
delete this._signalsIDs[signal];
}
}
disconnectSignalFromProxy(signal) {
if (signal in this._connectSignalsIDs) {
if (this._proxy) {
this._proxy.disconnectSignal(this._connectSignalsIDs[signal]);
}
delete this._connectSignalsIDs[signal];
}
}
async makeNewProxy(delay = 0) {
if (delay !== 0) {
await DesktopIconsUtil.waitDelayMs(delay);
if (!this._dbusManager.checkIsAvailable(this._serviceName, this._inSystemBus)) {
return;
}
}
if (this._beingLaunched) {
return;
}
this._interfaceXML = this._dbusManager.getInterface(this._serviceName, this._objectName, this._interfaceName, this._inSystemBus, false);
if (this._interfaceXML) {
this._beingLaunched = true;
try {
new Gio.DBusProxy.makeProxyWrapper(this._interfaceXML)(
this._inSystemBus ? Gio.DBus.system : Gio.DBus.session,
this._serviceName,
this._objectName,
(proxy, error) => {
this._beingLaunched = false;
if (error === null) {
for (let signal in this._signals) {
this._signalsIDs[signal] = proxy.connect(signal, this._signals[signal]);
}
for (let signal in this._connectSignals) {
this._connectSignalsIDs[signal] = proxy.connectSignal(signal, this._connectSignals[signal]);
}
this._available = true;
this._proxy = proxy;
print(`DBus interface for ${this._programNeeded[2]} (${this._interfaceName}) is now available.`);
this.emit('changed-status', true);
} else {
console.error(error, `Error creating proxy, ${this._programNeeded[2]} (${this._interfaceName}); relaunching.\n`);
this.makeNewProxy(1000);
}
}
);
} catch (e) {
console.error(e, `Error creating proxy, ${this._programNeeded[0]}`);
this._beingLaunched = false;
this.makeNewProxy(1000);
}
}
}
get isAvailable() {
return this._available;
}
get proxyNoCheck() {
return this._proxy;
}
get proxy() {
if (!this._available) {
if (this._programNeeded && (this._timeout == 0)) {
print(this._programNeeded[0]);
print(this._programNeeded[1]);
this._dbusManager.doNotify(this._programNeeded[0], this._programNeeded[1]);
this._timeout = GLib.timeout_add(
GLib.PRIORITY_DEFAULT,
1000,
() => {
this._timeout = 0;
return false;
}
);
}
}
return this._proxy;
}
}
Signals.addSignalMethods(ProxyManager.prototype);
class DBusManager {
/*
* This class manages all the DBus operations. A ProxyManager() class can subscribe to this to be notified
* whenever a change in the bus has occurred (like a server has been added or removed). It also can ask
* for a DBus interface, either getting it from the dbusInterfaces.js file or using DBus Introspection (which
* allows to get the currently available interface and, that way, know if an object implements an specific
* method, property or signal).
*
* ProxyManager() classes subscribe to the 'changed-availability-system' or 'changed-availability-local' signals,
* which are emitted every time a change in the bus or in the configuration files happen. Then, it can use
* checkIsAvailable() to determine if the desired service is available in the system or not.
*/
constructor() {
this._availableInSystemBus = [];
this._availableInLocalBus = [];
this._pendingLocalSignal = false;
this._pendingSystemSignal = false;
this._signalTimerID = 0;
let interfaceXML = this.getInterface(
'org.freedesktop.DBus',
'/org/freedesktop/DBus',
'org.freedesktop.DBus',
Enums.DBusBus.SYSTEM, // system bus
true); // use DBus Introspection
this._dbusSystemProxy = new Gio.DBusProxy.makeProxyWrapper(interfaceXML)(
Gio.DBus.system,
'org.freedesktop.DBus',
'/org/freedesktop/DBus',
null
);
let ASCinSystemBus = interfaceXML.includes('ActivatableServicesChanged');
// Don't presume that both system and local have the same interface (just in case)
interfaceXML = this.getInterface(
'org.freedesktop.DBus',
'/org/freedesktop/DBus',
'org.freedesktop.DBus',
Enums.DBusBus.SESSION,
true); // use DBus Introspection
this._dbusLocalProxy = new Gio.DBusProxy.makeProxyWrapper(interfaceXML)(
Gio.DBus.session,
'org.freedesktop.DBus',
'/org/freedesktop/DBus',
null
);
let ASCinLocalBus = interfaceXML.includes('ActivatableServicesChanged');
this._updateAllAvailabilities();
this._dbusLocalProxy.connectSignal('NameOwnerChanged', () => {
this._emitChangedSignal(true);
});
if (ASCinLocalBus) {
this._dbusLocalProxy.connectSignal('ActivatableServicesChanged', () => {
this._emitChangedSignal(true);
});
}
this._dbusSystemProxy.connectSignal('NameOwnerChanged', () => {
this._emitChangedSignal(false);
});
if (ASCinSystemBus) {
this._dbusSystemProxy.connectSignal('ActivatableServicesChanged', () => {
this._emitChangedSignal(false);
});
}
interfaceXML = this.getInterface(
'org.freedesktop.Notifications',
'/org/freedesktop/Notifications',
'org.freedesktop.Notifications',
Enums.DBusBus.SESSION,
false); // get interface from local code
this._notifyProxy = new Gio.DBusProxy.makeProxyWrapper(interfaceXML)(
Gio.DBus.session,
'org.freedesktop.Notifications',
'/org/freedesktop/Notifications',
null
);
}
_emitChangedSignal(localDBus) {
if (localDBus) {
this._pendingLocalSignal = true;
} else {
this._pendingSystemSignal = true;
}
if (this._signalTimerID) {
GLib.source_remove(this._signalTimerID);
}
this._signalTimerID = GLib.timeout_add(GLib.PRIORITY_DEFAULT, 1000, () => {
this._signalTimerID = 0;
this._updateAllAvailabilities();
if (this._pendingLocalSignal) {
this.emit('changed-availability-local');
}
if (this._pendingSystemSignal) {
this.emit('changed-availability-system');
}
this._pendingLocalSignal = false;
this._pendingSystemSignal = false;
return false;
});
}
checkIsAvailable(serviceName, inSystemBus) {
if (inSystemBus) {
return this._availableInSystemBus.includes(serviceName);
} else {
return this._availableInLocalBus.includes(serviceName);
}
}
_updateAllAvailabilities() {
this._availableInLocalBus = this._updateAvailability(this._dbusLocalProxy);
this._availableInSystemBus = this._updateAvailability(this._dbusSystemProxy);
}
_updateAvailability(proxy) {
// We read both the well-known names actually running and those available as activatables,
// and generate a single list with both. Thus a service will be "enabled" if it is running
// or if it is activatable.
let availableNames = [];
let names = proxy.ListNamesSync();
for (let n of names[0]) {
if (n.startsWith(':')) {
continue;
}
if (!(n in availableNames)) {
availableNames.push(n);
}
}
let names2 = proxy.ListActivatableNamesSync();
for (let n of names2[0]) {
if (n.startsWith(':')) {
continue;
}
if (!(n in availableNames)) {
availableNames.push(n);
}
}
return availableNames;
}
_getNextTag() {
this._xmlIndex++;
let pos = this._xmlData.indexOf('<', this._xmlIndex);
if (pos == -1) {
return null;
}
let pos2 = this._xmlData.indexOf('>', pos);
if (pos2 == -1) {
return null;
}
this._xmlIndex = pos;
return this._xmlData.substring(pos + 1, pos2).trim();
}
/*
* Extracts the XML definition for an interface from the raw data returned by DBus Introspection.
* This is needed because DBus Introspection returns a single XML file with all the interfaces
* supported by an object, while DBusProxyWrapper requires an XML with only the desired interface.
*/
_parseXML(data, interfaceName) {
this._xmlIndex = -1;
this._xmlData = data;
let tag;
while (true) {
tag = this._getNextTag();
if (tag === null) {
return null;
}
if (!tag.startsWith('interface ')) {
continue;
}
if (tag.includes(interfaceName)) {
break;
}
}
let start = this._xmlIndex;
while (true) {
tag = this._getNextTag();
if (tag === null) {
return null;
}
if (!tag.startsWith('/interface')) {
continue;
}
break;
}
return `\n ${data.substring(start, 1 + data.indexOf('>', this._xmlIndex))}\n`;
}
getInterface(serviceName, objectName, interfaceName, inSystemBus, forceIntrospection) {
if ((interfaceName in DBusInterfaces.DBusInterfaces) && !forceIntrospection) {
return DBusInterfaces.DBusInterfaces[interfaceName];
} else {
let data = this.getIntrospectionData(serviceName, objectName, inSystemBus);
if (data == null) {
return null;
} else {
return this._parseXML(data, interfaceName);
}
}
}
getIntrospectionData(serviceName, objectName, inSystemBus) {
let wraper = new Gio.DBusProxy.makeProxyWrapper(DBusInterfaces.DBusInterfaces['org.freedesktop.DBus.Introspectable'])(
inSystemBus ? Gio.DBus.system : Gio.DBus.session,
serviceName,
objectName,
null
);
let data = null;
try {
data = wraper.IntrospectSync()[0];
} catch (e) {
console.error(e, 'Error getting introspection data over Dbus.');
}
if (data == null) {
return null;
}
if (!data.includes('interface')) {
return null; // if it doesn't exist, return null
}
return data;
}
doNotify(header, text) {
/*
* The notification interface in GLib.Application requires a .desktop file, which
* we can't have, so we must use directly the Notification DBus interface
*/
this._notifyProxy.NotifyRemote('Desktop Icons', 0, '', header, text, [], {}, -1, () => {});
}
}
Signals.addSignalMethods(DBusManager.prototype);
class DbusOperationsManager {
constructor(freeDesktopFileManager, gnomeNautilusPreview, gnomeArchiveManager) {
this.freeDesktopFileManager = freeDesktopFileManager;
this.gnomeNautilusPreviewManager = gnomeNautilusPreview;
this.gnomeArchiveManager = gnomeArchiveManager;
}
_sendNoProxyError(callback) {
if (callback) {
GLib.idle_add(GLib.PRIORITY_LOW, () => {
callback(null, 'noProxy');
return false;
});
}
}
ShowItemPropertiesRemote(selection, timestamp, callback) {
if (!this.freeDesktopFileManager.proxy) {
this._sendNoProxyError(callback);
return;
}
this.freeDesktopFileManager.proxy.ShowItemPropertiesRemote(selection,
this._getStartupId(selection, timestamp),
(result, error) => {
if (callback) {
callback(result, error);
}
if (error) {
console.log(`Error showing properties: ${error.message}`);
}
}
);
}
ShowItemsRemote(showInFilesList, timestamp, callback) {
if (!this.freeDesktopFileManager.proxy) {
this._sendNoProxyError(callback);
return;
}
this.freeDesktopFileManager.proxy.ShowItemsRemote(showInFilesList,
this._getStartupId(showInFilesList, timestamp),
(result, error) => {
if (callback) {
callback(result, error);
}
if (error) {
console.log(`Error showing file on desktop: ${error.message}`);
}
}
);
}
ShowFileRemote(uri, integer, boolean, callback) {
if (!this.gnomeNautilusPreviewManager.proxy) {
this._sendNoProxyError(callback);
return;
}
this.gnomeNautilusPreviewManager.proxy.ShowFileRemote(uri, integer, boolean,
(result, error) => {
if (callback) {
callback(result, error);
}
if (error) {
console.log(`Error previewing file: ${error.message}`);
}
});
}
ExtractRemote(extractFileItem, folder, boolean, callback) {
if (!this.gnomeArchiveManager.proxy) {
this._sendNoProxyError(callback);
return;
}
this.gnomeArchiveManager.proxy.ExtractRemote(extractFileItem, folder, true,
(result, error) => {
if (callback) {
callback(result, error);
}
if (error) {
console.log(`Error extracting files: ${error.message}`);
}
});
}
CompressRemote(compressFileItems, folder, boolean, callback) {
if (!this.gnomeArchiveManager.proxy) {
this._sendNoProxyError(callback);
return;
}
this.gnomeArchiveManager.proxy.CompressRemote(compressFileItems, folder, boolean,
(result, error) => {
if (callback) {
callback(result, error);
}
if (error) {
console.log(`Error compressing files: ${error.message}`);
}
}
);
}
_getStartupId(fileUris, timestamp) {
if (!timestamp) {
return '';
}
const context = Gdk.Display.get_default().get_app_launch_context();
context.set_timestamp(timestamp);
if (!this._fileManager) {
this._fileManager = Gio.File.new_for_path('/').query_default_handler(null);
}
return context.get_startup_notify_id(this._fileManager,
fileUris.map(uri => Gio.File.new_for_uri(uri)));
}
}
class RemoteFileOperationsManager extends DbusOperationsManager {
constructor(fileOperationsManager, freeDesktopFileManager, gnomeNautilusPreview, gnomeArchiveManager) {
super(freeDesktopFileManager, gnomeNautilusPreview, gnomeArchiveManager);
this.fileOperationsManager = fileOperationsManager;
this._createPlatformData();
}
_createPlatformData() {
this.platformData = this.fileOperationsManager.platformData = () => {
let parentWindow = Gtk.get_current_event()?.get_window();
let parentHandle = '';
if (parentWindow) {
try {
imports.gi.versions.GdkX11 = '3.0';
const {GdkX11} = imports.gi;
const topLevel = parentWindow.get_effective_toplevel();
if (topLevel.constructor.$gtype === GdkX11.X11Window.$gtype) {
const xid = GdkX11.X11Window.prototype.get_xid.call(topLevel);
parentHandle = `x11:${xid}`;
} /* else if (topLevel instanceof GdkWayland.Toplevel) {
FIXME: Need Gtk4 to use GdkWayland
const handle = GdkWayland.Toplevel.prototype.export_handle.call(topLevel);
parentHandle = `wayland:${handle}`;
} */
} catch (e) {
console.error(e, 'Impossible to determine the parent window');
}
}
return {
'parent-handle': new GLib.Variant('s', parentHandle),
'timestamp': new GLib.Variant('u', Gtk.get_current_event_time()),
'window-position': new GLib.Variant('s', 'center'),
};
};
}
MoveURIsRemote(fileList, uri, callback) {
if (!this.fileOperationsManager.proxy) {
this._sendNoProxyError(callback);
return;
}
this.fileOperationsManager.proxy.MoveURIsRemote(
fileList,
uri,
this.platformData(),
(result, error) => {
if (callback) {
callback(result, error);
}
if (error) {
console.log(`Error moving files: ${error.message}`);
}
}
);
}
CopyURIsRemote(fileList, uri, callback) {
if (!this.fileOperationsManager.proxy) {
this._sendNoProxyError(callback);
return;
}
this.fileOperationsManager.proxy.CopyURIsRemote(
fileList,
uri,
this.platformData(),
(result, error) => {
if (callback) {
callback(result, error);
}
if (error) {
console.log(`Error copying files: ${error.message}`);
}
}
);
}
RenameURIRemote(fileList, uri, callback) {
if (!this.fileOperationsManager.proxy) {
this._sendNoProxyError(callback);
return;
}
this.fileOperationsManager.proxy.RenameURIRemote(
fileList,
uri,
this.platformData(),
(result, error) => {
if (callback) {
callback(result, error);
}
if (error) {
console.log(`Error copying files: ${error.message}`);
}
}
);
}
TrashURIsRemote(fileList, callback) {
if (!this.fileOperationsManager.proxy) {
this._sendNoProxyError(callback);
return;
}
this.fileOperationsManager.proxy.TrashURIsRemote(
fileList,
this.platformData(),
(result, error) => {
if (callback) {
callback(result, error);
}
if (error) {
console.log(`Error moving files: ${error.message}`);
}
}
);
}
DeleteURIsRemote(fileList, callback) {
if (!this.fileOperationsManager.proxy) {
this._sendNoProxyError(callback);
return;
}
this.fileOperationsManager.proxy.DeleteURIsRemote(
fileList,
this.platformData(),
(source, error) => {
if (callback) {
callback(source, error);
}
if (error) {
console.log(`Error deleting files on the desktop: ${error.message}`);
}
}
);
}
EmptyTrashRemote(askConfirmation, callback) {
if (!this.fileOperationsManager.proxy) {
this._sendNoProxyError(callback);
return;
}
this.fileOperationsManager.proxy.EmptyTrashRemote(
askConfirmation,
this.platformData(),
(source, error) => {
if (callback) {
callback(source, error);
}
if (error) {
console.log(`Error trashing files on the desktop: ${error.message}`);
}
}
);
}
UndoRemote(callback) {
if (!this.fileOperationsManager.proxy) {
this._sendNoProxyError(callback);
return;
}
this.fileOperationsManager.proxy.UndoRemote(
this.platformData(),
(result, error) => {
if (callback) {
callback(result, error);
}
if (error) {
console.log(`Error performing undo: ${error.message}`);
}
}
);
}
RedoRemote(callback) {
if (!this.fileOperationsManager.proxy) {
this._sendNoProxyError(callback);
return;
}
this.fileOperationsManager.proxy.RedoRemote(
this.platformData(),
(result, error) => {
if (callback) {
callback(result, error);
}
if (error) {
console.log(`Error performing redo: ${error.message}`);
}
}
);
}
UndoStatus() {
return this.fileOperationsManager.proxy.UndoStatus;
}
}
class LegacyRemoteFileOperationsManager extends DbusOperationsManager {
constructor(fileOperationsManager, freeDesktopFileManager, gnomeNautilusPreview, gnomeArchiveManager) {
super(freeDesktopFileManager, gnomeNautilusPreview, gnomeArchiveManager);
this.fileOperationsManager = fileOperationsManager;
}
MoveURIsRemote(fileList, uri, callback) {
if (!this.fileOperationsManager.proxy) {
this._sendNoProxyError(callback);
return;
}
this.fileOperationsManager.proxy.MoveURIsRemote(
fileList,
uri,
(result, error) => {
if (callback) {
callback(result, error);
}
if (error) {
console.log(`Error moving files: ${error.message}`);
}
}
);
}
CopyURIsRemote(fileList, uri, callback) {
if (!this.fileOperationsManager.proxy) {
this._sendNoProxyError(callback);
return;
}
this.fileOperationsManager.proxy.CopyURIsRemote(
fileList,
uri,
(result, error) => {
if (callback) {
callback(result, error);
}
if (error) {
console.log(`Error copying files: ${error.message}`);
}
}
);
}
RenameURIRemote(fileList, uri, callback) {
if (!this.fileOperationsManager.proxy) {
this._sendNoProxyError(callback);
return;
}
this.fileOperationsManager.proxy.RenameFileRemote(
fileList,
uri,
(result, error) => {
if (callback) {
callback(result, error);
}
if (error) {
console.log(`Error renaming files: ${error.message}`);
}
}
);
}
TrashURIsRemote(fileList, callback) {
if (!this.fileOperationsManager.proxy) {
this._sendNoProxyError(callback);
return;
}
this.fileOperationsManager.proxy.TrashFilesRemote(
fileList,
(result, error) => {
if (callback) {
callback(result, error);
}
if (error) {
console.log(`Error moving files: ${error.message}`);
}
}
);
}
DeleteURIsRemote(fileList, callback) {
if (!this.fileOperationsManager.proxy) {
this._sendNoProxyError(callback);
return;
}
this.fileOperationsManager.proxy.TrashFilesRemote(
fileList,
(source, error) => {
this.EmptyTrashRemote();
if (callback) {
callback(source, error);
}
if (error) {
console.log(`Error deleting files on the desktop: ${error.message}`);
}
}
);
}
EmptyTrashRemote(callback) {
if (!this.fileOperationsManager.proxy) {
this._sendNoProxyError(callback);
return;
}
this.fileOperationsManager.proxy.EmptyTrashRemote(
(source, error) => {
if (callback) {
callback(source, error);
}
if (error) {
console.log(`Error trashing files on the desktop: ${error.message}`);
}
}
);
}
UndoRemote(callback) {
if (!this.fileOperationsManager.proxy) {
this._sendNoProxyError(callback);
return;
}
this.fileOperationsManager.proxy.UndoRemote(
(result, error) => {
if (callback) {
callback(result, error);
}
if (error) {
console.log(`Error performing undo: ${error.message}`);
}
}
);
}
RedoRemote(callback) {
if (!this.fileOperationsManager.proxy) {
this._sendNoProxyError(callback);
return;
}
this.fileOperationsManager.proxy.RedoRemote(
(result, error) => {
if (callback) {
callback(result, error);
}
if (error) {
console.log(`Error performing redo: ${error.message}`);
}
}
);
}
UndoStatus() {
return this.fileOperationsManager.proxy.UndoStatus;
}
}
/**
*
*/
function init() {
dbusManagerObject = new DBusManager();
let data = dbusManagerObject.getIntrospectionData(
'org.gnome.Nautilus',
'/org/gnome/Nautilus/FileOperations2',
Enums.DBusBus.SESSION);
if (data) {
// NautilusFileOperations2
NautilusFileOperations2 = new ProxyManager(
dbusManagerObject,
'org.gnome.Nautilus',
'/org/gnome/Nautilus/FileOperations2',
'org.gnome.Nautilus.FileOperations2',
Enums.DBusBus.SESSION,
'Nautilus'
);
} else {
print('Emulating NautilusFileOperations2 with the old NautilusFileOperations interface');
// Emulate NautilusFileOperations2 with the old interface
NautilusFileOperations2 = new ProxyManager(
dbusManagerObject,
'org.gnome.Nautilus',
'/org/gnome/Nautilus',
'org.gnome.Nautilus.FileOperations',
Enums.DBusBus.SESSION,
'Nautilus'
);
}
FreeDesktopFileManager = new ProxyManager(
dbusManagerObject,
'org.freedesktop.FileManager1',
'/org/freedesktop/FileManager1',
'org.freedesktop.FileManager1',
Enums.DBusBus.SESSION,
'Nautilus'
);
GnomeNautilusPreview = new ProxyManager(
dbusManagerObject,
'org.gnome.NautilusPreviewer',
'/org/gnome/NautilusPreviewer',
'org.gnome.NautilusPreviewer',
Enums.DBusBus.SESSION,
'Nautilus-Sushi'
);
GnomeArchiveManager = new ProxyManager(
dbusManagerObject,
'org.gnome.ArchiveManager1',
'/org/gnome/ArchiveManager1',
'org.gnome.ArchiveManager1',
Enums.DBusBus.SESSION,
'File-roller'
);
GtkVfsMetadata = new ProxyManager(
dbusManagerObject,
'org.gtk.vfs.Metadata',
'/org/gtk/vfs/metadata',
'org.gtk.vfs.Metadata',
Enums.DBusBus.SESSION,
'Gvfs daemon'
);
SwitcherooControl = new ProxyManager(
dbusManagerObject,
'net.hadess.SwitcherooControl',
'/net/hadess/SwitcherooControl',
'net.hadess.SwitcherooControl',
Enums.DBusBus.SYSTEM,
'Switcheroo control'
);
discreteGpuAvailable = SwitcherooControl.isAvailable;
SwitcherooControl.connect('changed-status', (obj, newStatus) => {
discreteGpuAvailable = newStatus;
});
if (data) {
RemoteFileOperations = new RemoteFileOperationsManager(NautilusFileOperations2, FreeDesktopFileManager, GnomeNautilusPreview, GnomeArchiveManager);
} else {
RemoteFileOperations = new LegacyRemoteFileOperationsManager(NautilusFileOperations2, FreeDesktopFileManager, GnomeNautilusPreview, GnomeArchiveManager);
}
extensionControl = Gio.DBusActionGroup.get(
Gio.DBus.session,
'com.rastersoft.dingextension',
'/com/rastersoft/dingextension/control'
);
return dbusManagerObject;
}
desktop-icons-ng-49.0.5-c32667693d0831c29e3ab3f7bfeb675ea1531a00/app/desktopGrid.js 0000664 0000000 0000000 00000055514 15064747536 0025772 0 ustar 00root root 0000000 0000000 /* DING: Desktop Icons New Generation for GNOME Shell
*
* Copyright (C) 2019 Sergio Costas (rastersoft@gmail.com)
* Based on code original (C) Carlos Soriano
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, version 3 of the License.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
/* exported DesktopGrid */
'use strict';
const Gtk = imports.gi.Gtk;
const Gdk = imports.gi.Gdk;
const Prefs = imports.preferences;
const Enums = imports.enums;
const DesktopIconsUtil = imports.desktopIconsUtil;
const SignalManager = imports.signalManager;
const Gettext = imports.gettext.domain('ding');
const _ = Gettext.gettext;
var elementSpacing = 2;
var DesktopGrid = class extends SignalManager.SignalManager{
constructor(desktopManager, desktopName, desktopDescription, asDesktop, premultiplied) {
super();
this._signalIds = [];
this._destroying = false;
this._desktopManager = desktopManager;
this._desktopName = desktopName;
this._premultiplied = premultiplied;
this._asDesktop = asDesktop;
this._desktopDescription = desktopDescription;
this.updateWindowGeometry();
this.updateUnscaledHeightWidthMargins();
this.createGrids();
this._window = new Gtk.ApplicationWindow({application: desktopManager.mainApp, 'title': desktopName});
this._windowContext = this._window.get_style_context();
if (this._asDesktop) {
this._window.set_decorated(false);
this._window.set_deletable(false);
// For Wayland Transparent background, but only if this instance is working as desktop
this._windowContext.add_class('desktopwindow');
// If we are under X11, Transparent background and everything else from here as well
if (this._desktopManager.using_X11) {
let screen = this._window.get_screen();
let visual = screen.get_rgba_visual();
if (visual && screen.is_composited()) {
this._window.set_visual(visual);
} else {
print('Unable to set Transparency under X11!');
}
this._window.set_type_hint(Gdk.WindowTypeHint.DESKTOP);
this._window.stick();
this._window.move(this._x / this._size_divisor, this._y / this._size_divisor);
} else { // Wayland
this._window.maximize();
}
} else {
// Opaque black test window
this._windowContext.add_class('testwindow');
}
this._window.set_resizable(false);
this.connectSignal(this._window, 'delete-event', () => {
if (this._destroying) {
return false;
}
if (this._asDesktop) {
// Do not destroy window when closing if the instance is working as desktop
return true;
} else {
// Exit if this instance is working as an stand-alone window
return false;
}
});
this._eventBox = new Gtk.EventBox({visible: true});
this.sizeEventBox();
this._window.add(this._eventBox);
this._container = new Gtk.Fixed();
this._eventBox.add(this._container);
this.gridGlobalRectangle = new Gdk.Rectangle();
this.setDropDestination(this._eventBox);
this._selectedList = null;
this.connectSignal(this._container, 'draw', (widget, cr) => {
this._doDrawRubberBand(cr);
cr.$dispose();
});
this.setGridStatus();
this._window.show_all();
this._window.set_size_request(this._windowWidth, this._windowHeight);
this._window.resize(this._windowWidth, this._windowHeight);
this._eventBox.add_events(Gdk.EventMask.BUTTON_MOTION_MASK |
Gdk.EventMask.BUTTON_PRESS_MASK |
Gdk.EventMask.BUTTON_RELEASE_MASK |
Gdk.EventMask.KEY_RELEASE_MASK);
this.connectSignal(this._eventBox, 'button-press-event', (actor, event) => {
let [a, x, y] = event.get_coords();
[x, y] = this.coordinatesLocalToGlobal(x, y);
this._desktopManager.onPressButton(x, y, event, this);
return false;
});
this.connectSignal(this._eventBox, 'motion-notify-event', (actor, event) => {
let [a, x, y] = event.get_coords();
[x, y] = this.coordinatesLocalToGlobal(x, y);
this._desktopManager.onMotion(x, y);
});
this.connectSignal(this._eventBox, 'button-release-event', (actor, event) => {
this._desktopManager.onReleaseButton(this);
});
this.connectSignal(this._window, 'key-press-event', (actor, event) => {
this._desktopManager.onKeyPress(event, this);
});
// key-release-event must be used for the arrow keys to avoid conflicts
// with assistive technologies.
this.connectSignal(this._window, 'key-release-event', (actor, event) => {
this._desktopManager.onKeyRelease(event, this);
});
this.updateGridRectangle();
}
updateGridDescription(desktopDescription) {
this._desktopDescription = desktopDescription;
}
updateWindowGeometry() {
this._zoom = this._desktopDescription.zoom;
this._x = this._desktopDescription.x;
this._y = this._desktopDescription.y;
this._monitor = this._desktopDescription.monitorIndex;
this._size_divisor = this._zoom;
if (this._asDesktop) {
if (this._desktopManager.using_X11) {
this._size_divisor = Math.ceil(this._zoom);
} else if (this._premultiplied) {
this._size_divisor = 1;
}
}
this._windowWidth = Math.floor(this._desktopDescription.width / this._size_divisor);
this._windowHeight = Math.floor(this._desktopDescription.height / this._size_divisor);
}
resizeWindow() {
this.updateWindowGeometry();
this._desktopName = `@!${this._x},${this._y};BDHF`;
if (this._desktopManager.using_X11) {
this._window.move(this._x / this._size_divisor, this._y / this._size_divisor);
}
this._window.set_title(this._desktopName);
this._window.set_size_request(this._windowWidth, this._windowHeight);
this._window.resize(this._windowWidth, this._windowHeight);
}
updateUnscaledHeightWidthMargins() {
this._marginTop = this._desktopDescription.marginTop;
this._marginBottom = this._desktopDescription.marginBottom;
this._marginLeft = this._desktopDescription.marginLeft;
this._marginRight = this._desktopDescription.marginRight;
this._width = this._desktopDescription.width - this._marginLeft - this._marginRight;
this._height = this._desktopDescription.height - this._marginTop - this._marginBottom;
}
createGrids() {
this._width = Math.floor(this._width / this._size_divisor);
this._height = Math.floor(this._height / this._size_divisor);
this._marginTop = Math.floor(this._marginTop / this._size_divisor);
this._marginBottom = Math.floor(this._marginBottom / this._size_divisor);
this._marginLeft = Math.floor(this._marginLeft / this._size_divisor);
this._marginRight = Math.floor(this._marginRight / this._size_divisor);
this._maxColumns = Math.floor(this._width / (Prefs.get_desired_width() + 4 * elementSpacing));
this._maxRows = Math.floor(this._height / (Prefs.get_desired_height() + 4 * elementSpacing));
this._elementWidth = Math.floor(this._width / this._maxColumns);
this._elementHeight = Math.floor(this._height / this._maxRows);
}
updateGridRectangle() {
this.gridGlobalRectangle.x = this._x + this._marginLeft;
this.gridGlobalRectangle.y = this._y + this._marginTop;
this.gridGlobalRectangle.width = this._width;
this.gridGlobalRectangle.height = this._height;
}
sizeEventBox() {
this._eventBox.margin_top = this._marginTop;
this._eventBox.margin_bottom = this._marginBottom;
this._eventBox.margin_start = this._marginLeft;
this._eventBox.margin_end = this._marginRight;
}
setGridStatus() {
this._fileItems = {};
this._gridStatus = {};
for (let y = 0; y < this._maxRows; y++) {
for (let x = 0; x < this._maxColumns; x++) {
this._setGridUse(x, y, false);
}
}
}
resizeGrid() {
this.updateUnscaledHeightWidthMargins();
this.createGrids();
this.updateGridRectangle();
this.sizeEventBox();
this.setGridStatus();
}
destroy() {
this._destroying = true;
this.disconnectAllSignals();
this._window.destroy();
}
setDropDestination(dropDestination) {
dropDestination.drag_dest_set(Gtk.DestDefaults.MOTION | Gtk.DestDefaults.DROP, null, Gdk.DragAction.MOVE | Gdk.DragAction.COPY | Gdk.DragAction.DEFAULT);
let targets = new Gtk.TargetList(null);
targets.add(Gdk.atom_intern('x-special/ding-icon-list', false), Gtk.TargetFlags.SAME_APP,
Enums.DndTargetInfo.DING_ICON_LIST);
targets.add(Gdk.atom_intern('x-special/gnome-icon-list', false), 0,
Enums.DndTargetInfo.GNOME_ICON_LIST);
targets.add(Gdk.atom_intern('text/uri-list', false), 0,
Enums.DndTargetInfo.URI_LIST);
targets.add(Gdk.atom_intern('text/plain', false), 0,
Enums.DndTargetInfo.TEXT_PLAIN);
dropDestination.drag_dest_set_target_list(targets);
targets = undefined; // to avoid memory leaks
this.connectSignal(dropDestination, 'drag-motion', (widget, context, x, y, time) => {
this.receiveMotion(x, y);
if (DesktopIconsUtil.getModifiersInDnD(context, Gdk.ModifierType.CONTROL_MASK)) {
Gdk.drag_status(context, Gdk.DragAction.COPY, time);
} else {
Gdk.drag_status(context, Gdk.DragAction.MOVE, time);
}
});
this.connectSignal(this._eventBox, 'drag-leave', (widget, context, time) => {
this.receiveLeave();
});
this.connectSignal(dropDestination, 'drag-data-received', (widget, context, x, y, selection, info, time) => {
const forceCopy = context.get_selected_action() === Gdk.DragAction.COPY;
this.receiveDrop(context, x, y, selection, info, false, forceCopy);
});
}
receiveLeave() {
this._desktopManager.onDragLeave();
}
receiveMotion(x, y, global) {
if (!global) {
x = this._elementWidth * Math.floor(x / this._elementWidth);
y = this._elementHeight * Math.floor(y / this._elementHeight);
[x, y] = this.coordinatesLocalToGlobal(x, y);
}
this._desktopManager.onDragMotion(x, y);
}
receiveDrop(context, x, y, selection, info, forceLocal, forceCopy) {
if (!forceLocal) {
x = this._elementWidth * Math.floor(x / this._elementWidth);
y = this._elementHeight * Math.floor(y / this._elementHeight);
[x, y] = this.coordinatesLocalToGlobal(x, y);
}
this._desktopManager.onDragDataReceived(context, x, y, selection, info, forceLocal, forceCopy);
this._window.queue_draw();
}
highLightGridAt(x, y) {
let selected = this.getGridAt(x, y, false);
this._selectedList = [selected];
this._window.queue_draw();
}
unHighLightGrids() {
this._selectedList = null;
this._window.queue_draw();
}
_getGridCoordinates(x, y) {
let placeX = Math.floor(x / this._elementWidth);
let placeY = Math.floor(y / this._elementHeight);
placeX = DesktopIconsUtil.clamp(placeX, 0, this._maxColumns - 1);
placeY = DesktopIconsUtil.clamp(placeY, 0, this._maxRows - 1);
return [placeX, placeY];
}
gridInUse(x, y) {
let [placeX, placeY] = this._getGridCoordinates(x, y);
return !this._isEmptyAt(placeX, placeY);
}
getGridLocalCoordinates(x, y) {
let [column, row] = this._getGridCoordinates(x, y);
let localX = Math.floor(this._width * column / this._maxColumns);
let localY = Math.floor(this._height * row / this._maxRows);
return [localX, localY];
}
_fileAt(x, y) {
let [placeX, placeY] = this._getGridCoordinates(x, y);
return this._gridStatus[placeY * this._maxColumns + placeX];
}
refreshDrag(selectedList, ox, oy) {
if (selectedList === null) {
this._selectedList = null;
this._window.queue_draw();
return;
}
let newSelectedList = [];
for (let [x, y] of selectedList) {
x += this._elementWidth / 2;
y += this._elementHeight / 2;
x += ox;
y += oy;
let r = this.getGridAt(x, y);
if (r && !isNaN(r[0]) && !isNaN(r[1]) && (!this.gridInUse(r[0], r[1]) || this._fileAt(r[0], r[1]).isSelected)) {
newSelectedList.push(r);
}
}
if (newSelectedList.length == 0) {
if (this._selectedList !== null) {
this._selectedList = null;
this._window.queue_draw();
}
return;
}
if (this._selectedList !== null) {
if ((newSelectedList[0][0] == this._selectedList[0][0]) && (newSelectedList[0][1] == this._selectedList[0][1])) {
return;
}
}
this._selectedList = newSelectedList;
this._window.queue_draw();
}
queue_draw() {
this._window.queue_draw();
}
_doDrawRubberBand(cr) {
if (this._desktopManager.rubberBand && this._desktopManager.selectionRectangle) {
if (!this.gridGlobalRectangle.intersect(this._desktopManager.selectionRectangle)[0]) {
return;
}
let [xInit, yInit] = this.coordinatesGlobalToLocal(this._desktopManager.x1, this._desktopManager.y1);
let [xFin, yFin] = this.coordinatesGlobalToLocal(this._desktopManager.x2, this._desktopManager.y2);
cr.rectangle(xInit + 0.5, yInit + 0.5, xFin - xInit, yFin - yInit);
Gdk.cairo_set_source_rgba(cr, new Gdk.RGBA({
red: this._desktopManager.selectColor.red,
green: this._desktopManager.selectColor.green,
blue: this._desktopManager.selectColor.blue,
alpha: 0.6,
})
);
cr.fill();
cr.setLineWidth(1);
cr.rectangle(xInit + 0.5, yInit + 0.5, xFin - xInit, yFin - yInit);
Gdk.cairo_set_source_rgba(cr, new Gdk.RGBA({
red: this._desktopManager.selectColor.red,
green: this._desktopManager.selectColor.green,
blue: this._desktopManager.selectColor.blue,
alpha: 1.0,
})
);
cr.stroke();
}
if (this._desktopManager.showDropPlace && (this._selectedList !== null)) {
for (let [x, y] of this._selectedList) {
cr.rectangle(x + 0.5, y + 0.5, this._elementWidth, this._elementHeight);
Gdk.cairo_set_source_rgba(cr, new Gdk.RGBA({
red: 1.0 - this._desktopManager.selectColor.red,
green: 1.0 - this._desktopManager.selectColor.green,
blue: 1.0 - this._desktopManager.selectColor.blue,
alpha: 0.4,
})
);
cr.fill();
cr.setLineWidth(0.5);
cr.rectangle(x + 0.5, y + 0.5, this._elementWidth, this._elementHeight);
Gdk.cairo_set_source_rgba(cr, new Gdk.RGBA({
red: 1.0 - this._desktopManager.selectColor.red,
green: 1.0 - this._desktopManager.selectColor.green,
blue: 1.0 - this._desktopManager.selectColor.blue,
alpha: 1.0,
})
);
cr.stroke();
}
}
}
getDistance(x, y) {
/**
* Checks if these coordinates belong to this grid.
*
* @returns -1 if there is no free space for new icons;
* 0 if the coordinates are inside this grid;
* or the distance to the middle point, if none of the previous
*/
let isFree = false;
for (let element in this._gridStatus) {
if (!this._gridStatus[element]) {
isFree = true;
break;
}
}
if (!isFree) {
return -1;
}
if (this._coordinatesBelongToThisGrid(x, y)) {
return 0;
}
return Math.pow(x - (this._x + this._windowWidth * this._zoom / 2), 2) + Math.pow(x - (this._y + this._windowHeight * this._zoom / 2), 2);
}
coordinatesGlobalToLocal(X, Y, widget = null) {
X -= this._x;
Y -= this._y;
if (!widget) {
widget = this._eventBox;
}
let [belong, x, y] = this._window.translate_coordinates(widget, X, Y);
return [x, y];
}
coordinatesLocalToGlobal(x, y, widget = null) {
if (!widget) {
widget = this._eventBox;
}
let [belongs, X, Y] = widget.translate_coordinates(this._window, x, y);
return [X + this._x, Y + this._y];
}
_addFileItemTo(fileItem, column, row, coordinatesAction) {
if (this._destroying) {
return;
}
let localX = Math.floor(this._width * column / this._maxColumns);
let localY = Math.floor(this._height * row / this._maxRows);
this._container.put(fileItem.container, localX + elementSpacing, localY + elementSpacing);
this._setGridUse(column, row, fileItem);
this._fileItems[fileItem.uri] = [column, row, fileItem];
let [x, y] = this.coordinatesLocalToGlobal(localX + elementSpacing, localY + elementSpacing);
fileItem.setCoordinates(x,
y,
this._elementWidth - 2 * elementSpacing,
this._elementHeight - 2 * elementSpacing,
elementSpacing,
this);
/* If this file is new in the Desktop and hasn't yet
* fixed coordinates, store the new possition to ensure
* that the next time it will be shown in the same possition.
* Also store the new possition if it has been moved by the user,
* and not triggered by a screen change.
*/
if ((fileItem.savedCoordinates == null) || (coordinatesAction == Enums.StoredCoordinates.OVERWRITE)) {
fileItem.savedCoordinates = [x, y];
}
}
removeItem(fileItem) {
if (fileItem.uri in this._fileItems) {
let [column, row, tmp] = this._fileItems[fileItem.uri];
this._setGridUse(column, row, false);
this._container.remove(fileItem.container);
delete this._fileItems[fileItem.uri];
}
}
addFileItemCloseTo(fileItem, x, y, coordinatesAction) {
let addVolumesOpposite = Prefs.desktopSettings.get_boolean('add-volumes-opposite');
let [column, row] = this._getEmptyPlaceClosestTo(x,
y,
coordinatesAction,
fileItem.isDrive && addVolumesOpposite);
this._addFileItemTo(fileItem, column, row, coordinatesAction);
}
_isEmptyAt(x, y) {
return this._gridStatus[y * this._maxColumns + x] === false;
}
_setGridUse(x, y, inUse) {
this._gridStatus[y * this._maxColumns + x] = inUse;
}
getGridAt(x, y, globalCoordinates = false) {
if (this._coordinatesBelongToThisGrid(x, y)) {
[x, y] = this.coordinatesGlobalToLocal(x, y);
if (globalCoordinates) {
x = this._elementWidth * Math.floor(x / this._elementWidth);
y = this._elementHeight * Math.floor(y / this._elementHeight);
[x, y] = this.coordinatesLocalToGlobal(x, y);
return [x, y];
} else {
return this.getGridLocalCoordinates(x, y);
}
} else {
return null;
}
}
_coordinatesBelongToThisGrid(X, Y) {
let checkRectangle = new Gdk.Rectangle({x: X, y: Y, width: 1, height: 1});
return this.gridGlobalRectangle.intersect(checkRectangle)[0];
}
_getEmptyPlaceClosestTo(x, y, coordinatesAction, reverseHorizontal) {
[x, y] = this.coordinatesGlobalToLocal(x, y);
let placeX = Math.floor(x / this._elementWidth);
let placeY = Math.floor(y / this._elementHeight);
let cornerInversion = Prefs.get_start_corner();
if (reverseHorizontal) {
cornerInversion[0] = !cornerInversion[0];
}
placeX = DesktopIconsUtil.clamp(placeX, 0, this._maxColumns - 1);
placeY = DesktopIconsUtil.clamp(placeY, 0, this._maxRows - 1);
if (this._isEmptyAt(placeX, placeY) && (coordinatesAction != Enums.StoredCoordinates.ASSIGN)) {
return [placeX, placeY];
}
let found = false;
let resColumn = null;
let resRow = null;
let minDistance = Infinity;
let column, row;
for (let tmpColumn = 0; tmpColumn < this._maxColumns; tmpColumn++) {
if (cornerInversion[0]) {
column = this._maxColumns - tmpColumn - 1;
} else {
column = tmpColumn;
}
for (let tmpRow = 0; tmpRow < this._maxRows; tmpRow++) {
if (cornerInversion[1]) {
row = this._maxRows - tmpRow - 1;
} else {
row = tmpRow;
}
if (!this._isEmptyAt(column, row)) {
continue;
}
let proposedX = column * this._elementWidth;
let proposedY = row * this._elementHeight;
if (coordinatesAction == Enums.StoredCoordinates.ASSIGN) {
return [column, row];
}
let distance = DesktopIconsUtil.distanceBetweenPoints(proposedX, proposedY, x, y);
if (distance < minDistance) {
found = true;
minDistance = distance;
resColumn = column;
resRow = row;
}
}
}
if (!found) {
throw new Error('Not enough place at monitor');
}
return [resColumn, resRow];
}
};
desktop-icons-ng-49.0.5-c32667693d0831c29e3ab3f7bfeb675ea1531a00/app/desktopIconItem.js 0000664 0000000 0000000 00000077222 15064747536 0026614 0 ustar 00root root 0000000 0000000
/* DING: Desktop Icons New Generation for GNOME Shell
*
* Copyright (C) 2021 Sundeep Mediratta (smedius@gmail.com)
* Copyright (C) 2019 Sergio Costas (rastersoft@gmail.com)
* Based on code original (C) Carlos Soriano
* SwitcherooControl code based on code original from Marsch84
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, version 3 of the License.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
/* exported dropDestination */
'use strict';
const Gtk = imports.gi.Gtk;
const Gdk = imports.gi.Gdk;
const Gio = imports.gi.Gio;
const Atk = imports.gi.Atk;
const GLib = imports.gi.GLib;
const GObject = imports.gi.GObject;
const Pango = imports.gi.Pango;
const GdkPixbuf = imports.gi.GdkPixbuf;
const Cairo = imports.gi.cairo;
const DesktopIconsUtil = imports.desktopIconsUtil;
const Prefs = imports.preferences;
const Enums = imports.enums;
const SignalManager = imports.signalManager;
const ByteArray = imports.byteArray;
const Signals = imports.signals;
const Gettext = imports.gettext.domain('ding');
const _ = Gettext.gettext;
var desktopIconItem = class desktopIconItem extends SignalManager.SignalManager {
constructor(desktopManager, fileExtra) {
super();
this._desktopManager = desktopManager;
this._fileExtra = fileExtra;
this._loadThumbnailDataCancellable = null;
this._queryFileInfoCancellable = null;
this._grid = null;
this._lastClickTime = 0;
this._lastClickButton = 0;
this._clickCount = 0;
this._isSelected = false;
this._isKeyboardSelected = false;
this._isSpecial = false;
this._primaryButtonPressed = false;
this._savedCoordinates = null;
this._dropCoordinates = null;
this._destroyed = false;
}
/** *********************
* Destroyers *
***********************/
removeFromGrid(callOnDestroy) {
if (this._grid) {
this._grid.removeItem(this);
this._grid = null;
}
if (callOnDestroy) {
this._onDestroy();
}
}
_destroy() {
this._destroyed = true;
/* Regular file data */
if (this._queryFileInfoCancellable) {
this._queryFileInfoCancellable.cancel();
this._queryFileInfoCancellable = null;
}
/* Thumbnailing */
if (this._loadThumbnailDataCancellable) {
this._loadThumbnailDataCancellable.cancel();
this._loadThumbnailDataCancellable = null;
}
/* Disconnect signals */
this.disconnectAllSignals();
this.container.destroy();
this.container = null;
this._eventBox = null;
this._shieldEventBox = null;
this._labelEventBox = null;
this._shieldLabelEventBox = null;
this._icon = null;
this._iconContainer = null;
this._label = null;
this._labelContainer = null;
this.iconRectangle = null;
if (this._grid) {
this._grid.removeItem(this);
this._grid = null;
}
this._desktopManager = null;
this._fileExtra = null;
this._savedCoordinates = null;
this._dropCoordinates = null;
}
_onDestroy() {
if (!this._destroyed) {
this._destroy();
}
}
/** *********************
* Creators *
***********************/
_createIconActor() {
this.container = new Gtk.Box({orientation: Gtk.Orientation.VERTICAL, halign: Gtk.Align.CENTER});
this._eventBox = new Gtk.EventBox({visible: true, halign: Gtk.Align.CENTER});
this._shieldEventBox = new Gtk.EventBox({visible: true, halign: Gtk.Align.CENTER});
this._labelEventBox = new Gtk.EventBox({visible: true, halign: Gtk.Align.CENTER});
this._shieldLabelEventBox = new Gtk.EventBox({visible: true, halign: Gtk.Align.CENTER});
this._icon = new Gtk.Image();
this._iconContainer = new Gtk.Box({orientation: Gtk.Orientation.VERTICAL});
this._iconContainer.pack_start(this._icon, true, true, 0);
this._iconContainer.set_baseline_position(Gtk.BaselinePosition.CENTER);
this._eventBox.add(this._iconContainer);
this._shieldEventBox.add(this._eventBox);
this._label = new Gtk.Label();
this._containerAccessibility = this.container;
this._containerAccessibility.set_can_focus(true);
this._labelContainer = new Gtk.Box({orientation: Gtk.Orientation.VERTICAL, halign: Gtk.Align.CENTER});
let labelStyleContext = this._label.get_style_context();
if (this._desktopManager.darkText) {
labelStyleContext.add_class('file-label-dark');
} else {
labelStyleContext.add_class('file-label');
}
labelStyleContext = undefined; // prevent memory leaks
this._label.set_ellipsize(Pango.EllipsizeMode.END);
this._label.set_line_wrap(true);
this._label.set_line_wrap_mode(Pango.WrapMode.WORD_CHAR);
this._label.set_yalign(0.0);
this._label.set_justify(Gtk.Justification.CENTER);
this._label.set_lines(2);
this._labelContainer.pack_start(this._label, false, true, 0);
this._labelEventBox.add(this._labelContainer);
this._shieldLabelEventBox.add(this._labelEventBox);
this.container.pack_start(this._shieldEventBox, false, false, 0);
this.container.pack_start(this._shieldLabelEventBox, false, false, 0);
this._fullStyleContext = this.container.get_style_context();
this._styleContext = this._iconContainer.get_style_context();
this._labelStyleContext = this._labelContainer.get_style_context();
this._styleContext.add_class('file-item');
this._labelStyleContext.add_class('file-item');
this.iconRectangle = new Gdk.Rectangle();
this.labelRectangle = new Gdk.Rectangle();
/* We need to allow the "button-press" event to pass through the callbacks, to allow the DnD to work
* But we must avoid them to reach the main window.
* The solution is to allow them to pass in a EventBox, used both for detecting the events and the DnD, and block them
* in a second EventBox, located outside.
*/
this.connectSignal(this._shieldEventBox, 'button-press-event', (actor, event) => {
return true;
});
this.connectSignal(this._shieldLabelEventBox, 'button-press-event', (actor, event) => {
return true;
});
this.connectSignal(this._eventBox, 'button-press-event', (actor, event) => this._onPressButton(actor, event));
this.connectSignal(this._eventBox, 'enter-notify-event', (actor, event) => this._onEnter(this._eventBox));
this.connectSignal(this._eventBox, 'leave-notify-event', (actor, event) => this._onLeave(this._eventBox));
this.connectSignal(this._eventBox, 'button-release-event', (actor, event) => this._onReleaseButton(actor, event));
this.connectSignal(this._eventBox, 'drag-motion', (widget, context, x, y, time) => {
this.highLightDropTarget(x, y);
this._updateDragStatus(context, time);
});
this.connectSignal(this._eventBox, 'drag-leave', () => {
this.unHighLightDropTarget();
});
this.connectSignal(this._eventBox, 'size-allocate', () => this._calculateIconRectangle());
this.connectSignal(this._labelEventBox, 'button-press-event', (actor, event) => this._onPressButton(actor, event));
this.connectSignal(this._labelEventBox, 'enter-notify-event', (actor, event) => this._onEnter(this._labelEventBox));
this.connectSignal(this._labelEventBox, 'leave-notify-event', (actor, event) => this._onLeave(this._labelEventBox));
this.connectSignal(this._labelEventBox, 'button-release-event', (actor, event) => this._onReleaseButton(actor, event));
this.connectSignal(this._labelEventBox, 'drag-motion', (widget, context, x, y, time) => {
this.highLightDropTarget(x, y);
this._updateDragStatus(context, time);
});
this.connectSignal(this._labelEventBox, 'drag-leave', () => {
this.unHighLightDropTarget();
});
this.connectSignal(this._labelEventBox, 'size-allocate', () => {
this._doLabelSizeAllocated();
});
this.connectSignal(this.container, 'drag-motion', (widget, context, x, y, time) => {
this.highLightDropTarget(x, y);
this._updateDragStatus(context, time);
});
this.connectSignal(this.container, 'drag-leave', () => {
this.unHighLightDropTarget();
});
if (this._desktopManager.showDropPlace) {
this._setDropDestination(this.container);
} else {
this._setDropDestination(this._eventBox);
this._setDropDestination(this._labelEventBox);
}
this._setDragSource(this._eventBox);
this._setDragSource(this._labelEventBox);
this.container.show_all();
}
_doLabelSizeAllocated() {
this._calculateLabelRectangle();
}
_calculateIconRectangle() {
this.iconwidth = this._iconContainer.get_allocated_width();
this.iconheight = this._iconContainer.get_allocated_height();
let [x, y] = this._grid.coordinatesLocalToGlobal(0, 0, this._iconContainer);
this.iconRectangle.x = x;
this.iconRectangle.y = y;
this.iconRectangle.width = this.iconwidth;
this.iconRectangle.height = this.iconheight;
}
_calculateLabelRectangle() {
this.labelwidth = this._labelContainer.get_allocated_width();
this.labelheight = this._labelContainer.get_allocated_height();
let [x, y] = this._grid.coordinatesLocalToGlobal(0, 0, this._labelContainer);
this.labelRectangle.x = x;
this.labelRectangle.y = y;
this.labelRectangle.width = this.labelwidth;
this.labelRectangle.height = this.labelheight;
}
setCoordinates(x, y, width, height, margin, grid) {
this._x1 = x;
this._y1 = y;
this.width = width;
this.height = height;
this._grid = grid;
this.container.set_size_request(width, height);
this._label.margin_start = margin;
this._label.margin_end = margin;
this._label.margin_bottom = margin;
this._iconContainer.margin_top = margin;
this._calculateIconRectangle();
this._calculateLabelRectangle();
}
getCoordinates() {
this._x2 = this._x1 + this.container.get_allocated_width() - 1;
this._y2 = this._y1 + this.container.get_allocated_height() - 1;
return [this._x1, this._y1, this._x2, this._y2, this._grid];
}
_setLabelName(text) {
this._currentFileName = text;
this._eventBox.set_tooltip_text(text);
let lastCutPos = -1;
let newText = '';
for (let pos = 0; pos < text.length; pos++) {
let character = text[pos];
newText += character;
if (pos < (text.length - 1)) {
var nextChar = text[pos + 1];
} else {
var nextChar = '';
}
if (character == ' ') {
lastCutPos = pos;
}
if (['.', ',', '-', '_', '@', ':'].includes(character)) {
/* if the next character is already an space or this is the last
* character, the string will be naturally cut here, so we do
* nothing.
*/
if ((nextChar == ' ') || (nextChar == '')) {
continue;
}
/* if there is a cut element in the last four previous characters,
* do not add a new cut element.
*/
if ((lastCutPos > -1) && ((pos - lastCutPos) < 4)) {
continue;
}
newText += '\u200B';
}
}
this._label.label = newText;
}
/** *********************
* Button Clicks *
***********************/
_updateClickState(event) {
let settings = Gtk.Settings.get_default();
if ((event.get_button()[1] == this._lastClickButton) &&
((event.get_time() - this._lastClickTime) < settings.gtk_double_click_time)) {
this._clickCount++;
} else {
this._clickCount = 1;
}
this._lastClickTime = event.get_time();
this._lastClickButton = event.get_button()[1];
}
getClickCount() {
return this._clickCount;
}
_onPressButton(actor, event) {
this._updateClickState(event);
let button = event.get_button()[1];
let [a, x, y] = event.get_coords();
let state = event.get_state()[1];
this._buttonPressInitialX = x;
this._buttonPressInitialY = y;
let shiftPressed = !!(state & Gdk.ModifierType.SHIFT_MASK);
let controlPressed = !!(state & Gdk.ModifierType.CONTROL_MASK);
if (button == 3) {
this._doButtonThreePressed(event, shiftPressed, controlPressed);
} else if (button == 1) {
this._doButtonOnePressed(event, shiftPressed, controlPressed);
}
return false;
}
_onReleaseButton(actor, event) {
let button = event.get_button()[1];
if (button == 1) {
this._doButtonOneReleased(event);
}
return false;
}
_doButtonThreePressed(event) {
if (!this._isSelected) {
this._desktopManager.selected(this, Enums.Selection.RIGHT_BUTTON);
}
this._desktopManager.fileItemMenu.showMenu(this, event);
}
_doButtonOnePressed(event, shiftPressed, controlPressed) {
if (this.getClickCount() == 1) {
this._primaryButtonPressed = true;
if (shiftPressed || controlPressed) {
this._desktopManager.selected(this, Enums.Selection.WITH_SHIFT);
} else {
this._desktopManager.selected(this, Enums.Selection.ALONE);
}
}
}
_doButtonOneReleased(event) {
}
/** *********************
* Drag and Drop *
***********************/
_onEnter(element) {
if (!this._styleContext.has_class('file-item-hover')) {
this._styleContext.add_class('file-item-hover');
this._labelStyleContext.add_class('file-item-hover');
}
if (Prefs.CLICK_POLICY_SINGLE) {
let window = element.get_window();
if (window) {
window.set_cursor(Gdk.Cursor.new_from_name(Gdk.Display.get_default(), 'hand'));
}
}
return false;
}
_onLeave(element) {
this._primaryButtonPressed = false;
if (this._styleContext.has_class('file-item-hover')) {
this._styleContext.remove_class('file-item-hover');
this._labelStyleContext.remove_class('file-item-hover');
}
if (Prefs.CLICK_POLICY_SINGLE) {
let window = element.get_window();
if (window) {
window.set_cursor(Gdk.Cursor.new_from_name(Gdk.Display.get_default(), 'default'));
}
}
return false;
}
_hasToRouteDragToGrid() {
if (this._grid) {
return true;
}
return false;
}
_updateDragStatus(context, time) {
if (DesktopIconsUtil.getModifiersInDnD(context, Gdk.ModifierType.CONTROL_MASK)) {
Gdk.drag_status(context, Gdk.DragAction.COPY, time);
} else {
Gdk.drag_status(context, Gdk.DragAction.MOVE, time);
}
}
highLightDropTarget() {
if (this._hasToRouteDragToGrid()) {
this._grid.receiveMotion(this._x1, this._y1, true);
return;
}
if (!this._styleContext.has_class('desktop-icons-selected')) {
this._styleContext.add_class('desktop-icons-selected');
this._labelStyleContext.add_class('desktop-icons-selected');
}
this._grid.highLightGridAt(this._x1, this._y1);
}
unHighLightDropTarget() {
if (this._hasToRouteDragToGrid()) {
this._grid.receiveLeave();
return;
}
if (!this._isSelected && this._styleContext.has_class('desktop-icons-selected')) {
this._styleContext.remove_class('desktop-icons-selected');
this._labelStyleContext.remove_class('desktop-icons-selected');
}
this._grid.unHighLightGrids();
}
setSelected() {
this._isSelected = true;
this._setSelectedStatus();
}
unsetSelected() {
this._isSelected = false;
this._setSelectedStatus();
}
toggleSelected() {
this._isSelected = !this._isSelected;
this._setSelectedStatus();
}
_setSelectedStatus() {
if (this._isSelected && !this._styleContext.has_class('desktop-icons-selected')) {
this._styleContext.add_class('desktop-icons-selected');
this._labelStyleContext.add_class('desktop-icons-selected');
if (!this._isKeyboardSelected) {
this._containerAccessibility.grab_focus();
}
}
if (!this._isSelected && this._styleContext.has_class('desktop-icons-selected')) {
this._styleContext.remove_class('desktop-icons-selected');
this._labelStyleContext.remove_class('desktop-icons-selected');
}
if (this._isKeyboardSelected && !this._fullStyleContext.has_class('desktop-icons-selected')) {
this._fullStyleContext.add_class('desktop-icons-selected');
this._containerAccessibility.grab_focus();
}
if (!this._isKeyboardSelected && this._fullStyleContext.has_class('desktop-icons-selected')) {
this._fullStyleContext.remove_class('desktop-icons-selected');
}
this.setAccessibleName();
}
setAccessibleName() {}
_setDragSource(widget) {
widget.drag_source_set(Gdk.ModifierType.BUTTON1_MASK, null, Gdk.DragAction.MOVE | Gdk.DragAction.COPY);
let targets = new Gtk.TargetList(null);
targets.add(Gdk.atom_intern('x-special/ding-icon-list', false),
Gtk.TargetFlags.SAME_APP, Enums.DndTargetInfo.DING_ICON_LIST);
if ((this._fileExtra != Enums.FileType.USER_DIRECTORY_TRASH) &&
(this._fileExtra != Enums.FileType.USER_DIRECTORY_HOME) &&
(this._fileExtra != Enums.FileType.EXTERNAL_DRIVE)) {
targets.add(Gdk.atom_intern('x-special/gnome-icon-list', false), 0,
Enums.DndTargetInfo.GNOME_ICON_LIST);
targets.add(Gdk.atom_intern('text/uri-list', false), 0,
Enums.DndTargetInfo.URI_LIST);
}
widget.drag_source_set_target_list(targets);
targets = undefined; // prevent memory leaks
this.connectSignal(widget, 'drag-begin', (w, context) => {
const scale = this._icon.get_scale_factor();
let surf = new Cairo.ImageSurface(Cairo.SurfaceType.IMAGE, this.container.get_allocated_width() * scale, this.container.get_allocated_height() * scale);
// setDeviceScale was introduced to GJS in version 1.69.2
if (scale != 1.0 && surf.setDeviceScale !== undefined) {
surf.setDeviceScale(scale, scale);
}
let cr = new Cairo.Context(surf);
this.container.draw(cr);
let itemnumber = this._desktopManager.getNumberOfSelectedItems();
if (itemnumber > 1) {
Gdk.cairo_set_source_rgba(cr, new Gdk.RGBA({
red: this._desktopManager.selectColor.red,
green: this._desktopManager.selectColor.green,
blue: this._desktopManager.selectColor.blue,
alpha: 0.6,
})
);
itemnumber -= 1;
switch (itemnumber.toString().length) {
case 1:
cr.rectangle(1, 1, 30, 20);
break;
case 2:
cr.rectangle(1, 1, 40, 20);
break;
default:
cr.rectangle(1, 1, 50, 20);
break;
}
cr.fill();
cr.setFontSize(18);
Gdk.cairo_set_source_rgba(cr, new Gdk.RGBA({red: 1.0, green: 1.0, blue: 1.0, alpha: 1}));
cr.moveTo(1, 17);
cr.showText(`+${itemnumber}`);
}
Gtk.drag_set_icon_surface(context, surf);
let [x, y] = this._calculateOffset(widget);
context.set_hotspot(x, y);
this._desktopManager.onDragBegin(this);
cr.$dispose();
});
this.connectSignal(widget, 'drag-data-get', (w, context, data, info, time) => {
let dragData = this._desktopManager.fillDragDataGet(info);
if (dragData != null) {
let list = ByteArray.fromString(dragData[1]);
data.set(dragData[0], 8, list);
}
});
this.connectSignal(widget, 'drag-end', (w, context) => {
this._desktopManager.onDragEnd();
});
}
_calculateOffset(widget) {
if (widget == this._eventBox) {
return [((this.width - this.iconwidth) / 2) + this._buttonPressInitialX, this._buttonPressInitialY];
} else {
return [((this.width - this.labelwidth) / 2) + this._buttonPressInitialX, (this.iconheight + 2) + this._buttonPressInitialY];
}
}
_setDropDestination(dropDestination) {
}
/** *********************
* Icon Rendering *
***********************/
updateIcon() {
return this._updateIcon();
}
async _updateIcon() {
if (this._destroyed) {
return;
}
this._icon.set_padding(0, 0);
try {
let customIcon = this._fileInfo.get_attribute_as_string('metadata::custom-icon');
if (customIcon && (customIcon != '')) {
let customIconFile = Gio.File.new_for_uri(customIcon);
if (customIconFile.query_exists(null)) {
let loadedImage = await this._loadImageAsIcon(customIconFile);
if (loadedImage | this._destroyed) {
return;
}
}
}
} catch (error) {
print(`Error while updating icon: ${error.message}.\n${error.stack}`);
}
if (this._fileExtra == Enums.FileType.USER_DIRECTORY_TRASH) {
let pixbuf = this._createEmblemedIcon(this._fileInfo.get_icon(), null);
const scale = this._icon.get_scale_factor();
let surface = Gdk.cairo_surface_create_from_pixbuf(pixbuf, scale, null);
this._icon.set_from_surface(surface);
return;
}
let iconSet = false;
if (Prefs.nautilusSettings.get_string('show-image-thumbnails') != 'never') {
let thumbnail = this._desktopManager.thumbnailLoader.getThumbnail(this, this._updateIcon.bind(this));
if (thumbnail != null) {
let thumbnailFile = Gio.File.new_for_path(thumbnail);
iconSet = await this._loadImageAsIcon(thumbnailFile);
if (this._destroyed) {
return;
}
}
}
if (!iconSet) {
let pixbuf;
if (this._isBrokenSymlink) {
pixbuf = this._createEmblemedIcon(null, 'text-x-generic');
} else if (this._desktopFile && this._desktopFile.has_key('Icon')) {
pixbuf = this._createEmblemedIcon(null, this._desktopFile.get_string('Icon'));
} else {
pixbuf = this._createEmblemedIcon(this._getDefaultIcon(), null);
}
const scale = this._icon.get_scale_factor();
let surface = Gdk.cairo_surface_create_from_pixbuf(pixbuf, scale, null);
this._icon.set_from_surface(surface);
}
}
_getDefaultIcon() {
if (this._fileExtra == Enums.FileType.EXTERNAL_DRIVE) {
return this._custom.get_icon();
}
return this._fileInfo.get_icon();
}
_loadImageAsIcon(imageFile) {
if (this._loadThumbnailDataCancellable) {
this._loadThumbnailDataCancellable.cancel();
}
this._loadThumbnailDataCancellable = new Gio.Cancellable();
return new Promise((resolve, reject) => {
imageFile.load_bytes_async(this._loadThumbnailDataCancellable, (source, result) => {
this._loadThumbnailDataCancellable = null;
try {
let [thumbnailData, etagOut] = source.load_bytes_finish(result);
let thumbnailStream = Gio.MemoryInputStream.new_from_bytes(thumbnailData);
let thumbnailPixbuf = GdkPixbuf.Pixbuf.new_from_stream(thumbnailStream, null);
if (thumbnailPixbuf != null) {
let width = Prefs.get_desired_width() - 8;
let height = Prefs.get_icon_size() - 8;
let aspectRatio = thumbnailPixbuf.width / thumbnailPixbuf.height;
if ((width / height) > aspectRatio) {
width = height * aspectRatio;
} else {
height = width / aspectRatio;
}
const scale = this._icon.get_scale_factor();
width *= scale;
height *= scale;
let pixbuf = thumbnailPixbuf.scale_simple(Math.floor(width), Math.floor(height), GdkPixbuf.InterpType.BILINEAR);
pixbuf = this._addEmblemsToPixbufIfNeeded(pixbuf);
let surface = Gdk.cairo_surface_create_from_pixbuf(pixbuf, scale, null);
this._icon.set_from_surface(surface);
this._icon.set_padding(4, 4);
resolve(true);
}
resolve(false);
} catch (e) {
resolve(false);
}
});
});
}
_copyAndResizeIfNeeded(pixbuf) {
/**
* If the pixbuf is the original from the theme, copies it into a new one, to be able
* to paint the emblems without altering the cached pixbuf in the theme object.
* Also, ensures that the copied pixbuf is, at least, as big as the desired icon size,
* to ensure that the emblems fit.
*/
if (this._copiedPixbuf) {
return pixbuf;
}
this._copiedPixbuf = true;
let minsize = Prefs.get_icon_size();
if ((pixbuf.width < minsize) || (pixbuf.height < minsize)) {
let width = pixbuf.width < minsize ? minsize : pixbuf.width;
let height = pixbuf.height < minsize ? minsize : pixbuf.height;
let newpixbuf = GdkPixbuf.Pixbuf.new(pixbuf.colorspace, true, pixbuf.bits_per_sample, width, height);
newpixbuf.fill(0);
let x = Math.floor((width - pixbuf.width) / 2);
let y = Math.floor((height - pixbuf.height) / 2);
pixbuf.composite(newpixbuf, x, y, pixbuf.width, pixbuf.height, x, y, 1, 1, GdkPixbuf.InterpType.NEAREST, 255);
return newpixbuf;
} else {
return pixbuf.copy();
}
}
_addEmblemsToPixbufIfNeeded(pixbuf) {
const scale = this._icon.get_scale_factor();
this._copiedPixbuf = false;
let emblem = null;
let finalSize = Math.floor(Prefs.get_icon_size() / 3) * scale;
if (this._isDesktopFile && (!this._isValidDesktopFile || !this.trustedDesktopFile)) {
pixbuf = this._copyAndResizeIfNeeded(pixbuf);
pixbuf.saturate_and_pixelate(pixbuf, 0.5, true);
emblem = Gio.ThemedIcon.new('emblem-unreadable');
pixbuf = this._copyAndResizeIfNeeded(pixbuf);
let theme = Gtk.IconTheme.get_default();
let emblemIcon = theme.lookup_by_gicon_for_scale(emblem, finalSize / scale, scale, Gtk.IconLookupFlags.FORCE_SIZE).load_icon();
emblemIcon.composite(pixbuf, pixbuf.width - finalSize, pixbuf.height - finalSize, finalSize, finalSize, pixbuf.width - finalSize, pixbuf.height - finalSize, 1, 1, GdkPixbuf.InterpType.BILINEAR, 255);
}
if (this._isSymlink && (this._desktopManager.showLinkEmblem || this._isBrokenSymlink)) {
if (this._isBrokenSymlink) {
emblem = Gio.ThemedIcon.new('emblem-unreadable');
} else {
emblem = Gio.ThemedIcon.new('emblem-symbolic-link');
}
pixbuf = this._copyAndResizeIfNeeded(pixbuf);
let theme = Gtk.IconTheme.get_default();
let emblemIcon = theme.lookup_by_gicon_for_scale(emblem, finalSize / scale, scale, Gtk.IconLookupFlags.FORCE_SIZE).load_icon();
emblemIcon.composite(pixbuf, pixbuf.width - finalSize, pixbuf.height - finalSize, finalSize, finalSize, pixbuf.width - finalSize, pixbuf.height - finalSize, 1, 1, GdkPixbuf.InterpType.BILINEAR, 255);
}
if (this.isStackTop && !this.stackUnique) {
pixbuf = this._copyAndResizeIfNeeded(pixbuf);
let theme = Gtk.IconTheme.get_default();
emblem = Gio.ThemedIcon.new('emblem-downloads');
let emblemIcon = theme.lookup_by_gicon_for_scale(emblem, finalSize / scale, scale, Gtk.IconLookupFlags.FORCE_SIZE).load_icon();
emblemIcon.composite(pixbuf, 0, 0, finalSize, finalSize, 0, 0, 1, 1, GdkPixbuf.InterpType.BILINEAR, 255);
}
return pixbuf;
}
_createEmblemedIcon(icon, iconName) {
if (icon == null) {
if (GLib.path_is_absolute(iconName)) {
try {
let iconFile = Gio.File.new_for_commandline_arg(iconName);
icon = new Gio.FileIcon({file: iconFile});
} catch (e) {
icon = Gio.ThemedIcon.new_with_default_fallbacks(iconName);
}
} else {
icon = Gio.ThemedIcon.new_with_default_fallbacks(iconName);
}
}
let theme = Gtk.IconTheme.get_default();
const scale = this._icon.get_scale_factor();
let itemIcon = null;
try {
itemIcon = theme.lookup_by_gicon_for_scale(icon, Prefs.get_icon_size(), scale, Gtk.IconLookupFlags.FORCE_SIZE).load_icon();
} catch (e) {
itemIcon = theme.load_icon_for_scale('text-x-generic', Prefs.get_icon_size(), scale, Gtk.IconLookupFlags.FORCE_SIZE);
}
itemIcon = this._addEmblemsToPixbufIfNeeded(itemIcon);
return itemIcon;
}
/** *********************
* Getters and setters *
***********************/
get state() {
return this._state;
}
set state(state) {
if (state == this._state) {
return;
}
this._state = state;
}
get isDrive() {
return this._fileExtra == Enums.FileType.EXTERNAL_DRIVE;
}
get isSelected() {
return this._isSelected;
}
get isKeyboardSelected() {
return this._isKeyboardSelected;
}
set isKeyboardSelected(status) {
this._isKeyboardSelected = status;
this._setSelectedStatus();
}
get isSpecial() {
return this._isSpecial;
}
get dropCoordinates() {
return this._dropCoordinates;
}
set dropCoordinates(pos) {
this._dropCoordinates = pos;
}
};
Signals.addSignalMethods(desktopIconItem.prototype);
desktop-icons-ng-49.0.5-c32667693d0831c29e3ab3f7bfeb675ea1531a00/app/desktopIconsIntegration.js 0000664 0000000 0000000 00000014133 15064747536 0030354 0 ustar 00root root 0000000 0000000 /*
* The code in this file is distributed under a "1-clause BSD license",
* which makes it compatible with GPLv2 and GPLv3 too, and others.
*
* License text:
*
* Copyright (C) 2021 Sergio Costas (rastersoft@gmail.com)
*
* Redistribution and use in source and binary forms, with or without modification,
* are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*/
/*******************************************************************************
* Integration class
*
* This class must be added to other extensions in order to integrate
* them with Desktop Icons NG. It allows an extension to notify how much margin
* it uses in each side of each monitor.
*
* DON'T SEND PATCHES TO THIS FILE TO THE EXTENSION MAINTAINER. SEND THEM TO
* DESKTOP ICONS NG MAINTAINER: https://gitlab.com/rastersoft/desktop-icons-ng
*
* In the *enable()* function, create a *DesktopIconsUsableAreaClass()*
* object with
*
* new DesktopIconsIntegration.DesktopIconsUsableAreaClass(object);
*
* Now, in the *disable()* function just call to the *destroy()* method before
* nullifying the pointer. You must create a new object in enable() the next
* time the extension is enabled.
*
* In your code, every time you change the margins, you should call first to
* *resetMargins()* method to clear the current margins, and then call to
* *setMargins(...)* method as many times as you need to set the margins in each
* monitor. You don't need to call it for all the monitors, only for those where
* you are painting something. If you don't set values for a monitor, they will
* be considered zero.
*
* The margins values are relative to the monitor border.
*
*******************************************************************************/
'use strict';
const GLib = imports.gi.GLib;
const Main = imports.ui.main;
const ExtensionUtils = imports.misc.extensionUtils;
const Me = ExtensionUtils.getCurrentExtension();
const IDENTIFIER_UUID = "130cbc66-235c-4bd6-8571-98d2d8bba5e2";
var DesktopIconsUsableAreaClass = class {
constructor() {
this._extensionManager = Main.extensionManager;
this._timedMarginsID = 0;
this._margins = {};
this._emID = this._extensionManager.connect('extension-state-changed', (_obj, extension) => {
if (!extension)
return;
// If an extension is being enabled and lacks the DesktopIconsUsableArea object, we can avoid launching a refresh
if (extension.state === ExtensionUtils.ExtensionState.ENABLED) {
this._sendMarginsToExtension(extension);
return;
}
// if the extension is being disabled, we must do a full refresh, because if there were other extensions originally
// loaded after that extension, those extensions will be disabled and enabled again without notification
this._changedMargins();
});
}
/**
* Sets or updates the top, bottom, left and right margins for a
* monitor. Values are measured from the monitor border (and NOT from
* the workspace border).
*
* @param {int} monitor Monitor number to which set the margins.
* A negative value means "the primary monitor".
* @param {int} top Top margin in pixels
* @param {int} bottom Bottom margin in pixels
* @param {int} left Left margin in pixels
* @param {int} right Right margin in pixels
*/
setMargins(monitor, top, bottom, left, right) {
this._margins[monitor] = {
'top': top,
'bottom': bottom,
'left': left,
'right': right
};
this._changedMargins();
}
/**
* Clears the current margins. Must be called before configuring the monitors
* margins with setMargins().
*/
resetMargins() {
this._margins = {};
this._changedMargins();
}
/**
* Disconnects all the signals and removes the margins.
*/
destroy() {
if (this._emID) {
this._extensionManager.disconnect(this._emID);
this._emID = 0;
}
if (this._timedMarginsID) {
GLib.source_remove(this._timedMarginsID);
this._timedMarginsID = 0;
}
this._margins = null;
this._changedMargins();
}
_changedMargins() {
if (this._timedMarginsID) {
GLib.source_remove(this._timedMarginsID);
}
this._timedMarginsID = GLib.timeout_add(GLib.PRIORITY_DEFAULT, 100, ()=> {
this._sendMarginsToAll();
this._timedMarginsID = 0;
return GLib.SOURCE_REMOVE;
});
}
_sendMarginsToAll() {
this._extensionManager.getUuids().forEach(uuid =>
this._sendMarginsToExtension(this._extensionManager.lookup(uuid)));
}
_sendMarginsToExtension(extension) {
// check that the extension is an extension that has the logic to accept
// working margins
if (extension?.state !== ExtensionUtils.ExtensionState.ENABLED)
return;
const usableArea = extension?.stateObj?.DesktopIconsUsableArea;
if (usableArea?.uuid === IDENTIFIER_UUID)
usableArea.setMarginsForExtension(Me.uuid, this._margins);
}
}
desktop-icons-ng-49.0.5-c32667693d0831c29e3ab3f7bfeb675ea1531a00/app/desktopIconsUtil.js 0000664 0000000 0000000 00000025767 15064747536 0027025 0 ustar 00root root 0000000 0000000 /* DING: Desktop Icons New Generation for GNOME Shell
*
* Copyright (C) 2019 Sergio Costas (rastersoft@gmail.com)
* Based on code original (C) Carlos Soriano
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, version 3 of the License.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
/* exported getModifiersInDnD, getDesktopDir, getScriptsDir, getTemplatesDir, clamp,
spawnCommandLine, launchTerminal, getFilteredEnviron, distanceBetweenPoints, getExtraFolders,
getMounts, getFileExtensionOffset, getFilesFromNautilusDnD, writeTextFileToDesktop,
windowHidePagerTaskbarModal, waitDelayMs */
'use strict';
const Gio = imports.gi.Gio;
const GLib = imports.gi.GLib;
const Gdk = imports.gi.Gdk;
const Prefs = imports.preferences;
const Enums = imports.enums;
const Gettext = imports.gettext.domain('ding');
const ShowErrorPopup = imports.showErrorPopup;
const _ = Gettext.gettext;
/**
*
* @param context
* @param modifiersToCheck
*/
function getModifiersInDnD(context, modifiersToCheck) {
let device = context.get_device();
let display = device.get_display();
let keymap = Gdk.Keymap.get_for_display(display);
let modifiers = keymap.get_modifier_state();
return (modifiers & modifiersToCheck) != 0;
}
/**
*
*/
function getDesktopDir() {
let desktopPath = GLib.get_user_special_dir(GLib.UserDirectory.DIRECTORY_DESKTOP);
return Gio.File.new_for_commandline_arg(desktopPath);
}
/**
*
*/
function getScriptsDir() {
let scriptsDir = GLib.build_filenamev([GLib.get_home_dir(), Enums.NAUTILUS_SCRIPTS_DIR]);
return Gio.File.new_for_commandline_arg(scriptsDir);
}
/**
*
*/
function getTemplatesDir() {
let templatesDir = GLib.get_user_special_dir(GLib.UserDirectory.DIRECTORY_TEMPLATES);
if ((templatesDir == GLib.get_home_dir()) || (templatesDir == null)) {
return null;
}
return Gio.File.new_for_commandline_arg(templatesDir);
}
/**
*
* @param value
* @param min
* @param max
*/
function clamp(value, min, max) {
return Math.max(Math.min(value, max), min);
}
/**
*
* @param commandLine
* @param environ
*/
function spawnCommandLine(commandLine, environ = null) {
try {
let [success, argv] = GLib.shell_parse_argv(commandLine);
trySpawn(null, argv, environ);
} catch (err) {
print(`${commandLine} failed with ${err}`);
}
}
/**
*
* @param workdir
* @param command
*/
function launchTerminal(workdir, command) {
const settings = new Gio.Settings({schema_id: Enums.TERMINAL_SCHEMA});
const settingsExec = settings.get_string(Enums.EXEC_KEY);
const terminals = ['xdg-terminal-exec', settingsExec, 'kgx', 'gnome-terminal'];
for (const name of terminals) {
const exec = GLib.find_program_in_path(name);
if (exec !== null) {
const argv = [exec];
if (workdir && (name === 'xdg-terminal-exec')) {
argv.push(`--dir=${workdir}`);
}
if (command) {
argv.push('-e');
argv.push(command);
}
try {
trySpawn(workdir, argv, null);
return;
}
catch (err) {
print(`Starting ${exec} failed with ${err}`);
}
}
}
new ShowErrorPopup.ShowErrorPopup(
'No Terminal',
'Cannot open a terminal, because none is installed or configured properly.',
true
);
}
/**
*
* @param workdir
* @param argv
* @param environ
*/
function trySpawn(workdir, argv, environ = null) {
/* The following code has been extracted from GNOME Shell's
* source code in Misc.Util.trySpawn function and modified to
* set the working directory.
*
* https://gitlab.gnome.org/GNOME/gnome-shell/blob/gnome-3-30/js/misc/util.js
*/
var success, pid;
try {
[success, pid] = GLib.spawn_async(workdir, argv, environ,
GLib.SpawnFlags.SEARCH_PATH | GLib.SpawnFlags.DO_NOT_REAP_CHILD,
null);
} catch (err) {
/* Rewrite the error in case of ENOENT */
if (err.matches(GLib.SpawnError, GLib.SpawnError.NOENT)) {
throw new GLib.SpawnError({
code: GLib.SpawnError.NOENT,
message: _('Command not found'),
});
} else if (err instanceof GLib.Error) {
// The exception from gjs contains an error string like:
// Error invoking GLib.spawn_command_line_async: Failed to
// execute child process "foo" (No such file or directory)
// We are only interested in the part in the parentheses. (And
// we can't pattern match the text, since it gets localized.)
let message = err.message.replace(/.*\((.+)\)/, '$1');
throw new err.constructor({
code: err.code,
message,
});
} else {
throw err;
}
}
// Dummy child watch; we don't want to double-fork internally
// because then we lose the parent-child relationship, which
// can break polkit. See https://bugzilla.redhat.com//show_bug.cgi?id=819275
GLib.child_watch_add(GLib.PRIORITY_DEFAULT, pid, () => {});
}
/**
*
*/
function getFilteredEnviron() {
let environ = [];
for (let env of GLib.get_environ()) {
/* It's a must to remove the WAYLAND_SOCKET environment variable
because, under Wayland, DING uses an specific socket to allow the
extension to detect its windows. But the scripts must run under
the normal socket */
if (env.startsWith('WAYLAND_SOCKET=')) {
continue;
}
environ.push(env);
}
return environ;
}
/**
*
* @param x
* @param y
* @param x2
* @param y2
*/
function distanceBetweenPoints(x, y, x2, y2) {
return Math.pow(x - x2, 2) + Math.pow(y - y2, 2);
}
/**
*
*/
function getExtraFolders() {
let extraFolders = [];
if (Prefs.desktopSettings.get_boolean('show-home')) {
extraFolders.push([Gio.File.new_for_commandline_arg(GLib.get_home_dir()), Enums.FileType.USER_DIRECTORY_HOME]);
}
if (Prefs.desktopSettings.get_boolean('show-trash')) {
extraFolders.push([Gio.File.new_for_uri('trash:///'), Enums.FileType.USER_DIRECTORY_TRASH]);
}
return extraFolders;
}
/**
*
* @param volumeMonitor
*/
function getMounts(volumeMonitor) {
let showVolumes = Prefs.desktopSettings.get_boolean('show-volumes');
let showNetwork = Prefs.desktopSettings.get_boolean('show-network-volumes');
try {
var mounts = volumeMonitor.get_mounts();
} catch (e) {
print(`Failed to get the list of mounts with ${e}`);
return [];
}
let result = [];
let uris = [];
for (let mount of mounts) {
try {
let isDrive = (mount.get_drive() != null) || (mount.get_volume() != null);
let uri = mount.get_default_location().get_uri();
if (((isDrive && showVolumes) || (!isDrive && showNetwork)) && !uris.includes(uri)) {
result.push([mount.get_default_location(), Enums.FileType.EXTERNAL_DRIVE, mount]);
uris.push(uri);
}
} catch (e) {
print(`Failed with ${e} while getting volume`);
}
}
return result;
}
/**
*
* @param filename
* @param opts
*/
function getFileExtensionOffset(filename, opts = {'isDirectory': false}) {
let offset = filename.length;
let extension = '';
if (!opts.isDirectory) {
const doubleExtensions = ['.gz', '.bz2', '.sit', '.Z', '.bz', '.xz'];
for (const item of doubleExtensions) {
if (filename.endsWith(item)) {
offset -= item.length;
extension = filename.substring(offset);
filename = filename.substring(0, offset);
break;
}
}
let lastDot = filename.lastIndexOf('.');
if (lastDot > 0) {
offset = lastDot;
extension = filename.substring(offset) + extension;
filename = filename.substring(0, offset);
}
}
return {offset, 'basename': filename, extension};
}
/**
*
* @param selection
* @param type
*/
function getFilesFromNautilusDnD(selection, type) {
let data = String.fromCharCode.apply(null, selection.get_data());
let retval = [];
let elements = data.split('\r\n');
for (let item of elements) {
if (item.length == 0) {
continue;
}
if (type == 1) {
// x-special/gnome-icon-list
let entry = item.split('\r');
retval.push(entry[0]);
} else {
// text/uri-list
if (item[0] == '#') {
continue;
}
retval.push(item);
}
}
return retval;
}
/**
*
* @param text
* @param filename
* @param dropCoordinates
*/
function writeTextFileToDesktop(text, filename, dropCoordinates) {
let path = GLib.build_filenamev([GLib.get_user_special_dir(GLib.UserDirectory.DIRECTORY_DESKTOP), filename]);
let file = Gio.File.new_for_path(path);
const PERMISSIONS_MODE = 0o744;
if (GLib.mkdir_with_parents(file.get_parent().get_path(), PERMISSIONS_MODE) === 0) {
let [success, tag] = file.replace_contents(text, null, false, Gio.FileCreateFlags.REPLACE_DESTINATION, null);
}
if (dropCoordinates != null) {
let info = new Gio.FileInfo();
info.set_attribute_string('metadata::nautilus-drop-position', `${dropCoordinates[0]},${dropCoordinates[1]}`);
try {
file.set_attributes_from_info(info, Gio.FileQueryInfoFlags.NONE, null);
} catch (e) {}
}
}
/**
*
* @param window
* @param modal
*/
function windowHidePagerTaskbarModal(window, modal) {
let usingX11 = Gdk.Display.get_default().constructor.$gtype.name === 'GdkX11Display';
if (usingX11) {
window.set_type_hint(Gdk.WindowTypeHint.NORMAL);
window.set_skip_taskbar_hint(true);
window.set_skip_pager_hint(true);
} else {
let title = window.get_title();
if (title == null) {
title = '';
}
if (modal) {
title += ' ';
} else {
title += ' ';
}
window.set_title(title);
}
if (modal) {
window.connect('focus-out-event', () => {
window.set_keep_above(true);
window.stick();
window.grab_focus();
});
window.grab_focus();
}
}
/**
*
* @param ms
*/
function waitDelayMs(ms) {
return new Promise((resolve, reject) => {
GLib.timeout_add(GLib.PRIORITY_DEFAULT, ms, () => {
resolve();
return false;
});
});
}
desktop-icons-ng-49.0.5-c32667693d0831c29e3ab3f7bfeb675ea1531a00/app/desktopManager.js 0000664 0000000 0000000 00000273777 15064747536 0026474 0 ustar 00root root 0000000 0000000 /* DING: Desktop Icons New Generation for GNOME Shell
*
* Copyright (C) 2019 Sergio Costas (rastersoft@gmail.com)
* Based on code original (C) Carlos Soriano
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, version 3 of the License.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
/* exported DesktopManager */
'use strict';
const GLib = imports.gi.GLib;
var GLibUnix = null;
try {
GLibUnix = imports.gi.GLibUnix;
} catch(e) {}
const Gtk = imports.gi.Gtk;
const Gdk = imports.gi.Gdk;
const Gio = imports.gi.Gio;
const ByteArray = imports.byteArray;
const FileItem = imports.fileItem;
const stackItem = imports.stackItem;
const DesktopGrid = imports.desktopGrid;
const DesktopIconsUtil = imports.desktopIconsUtil;
const Prefs = imports.preferences;
const Enums = imports.enums;
const NotifyX11UnderWayland = imports.notifyX11UnderWayland;
const DBusUtils = imports.dbusUtils;
const AskRenamePopup = imports.askRenamePopup;
const ShowErrorPopup = imports.showErrorPopup;
const TemplatesScriptsManager = imports.templatesScriptsManager;
const Thumbnails = imports.thumbnails;
const FileItemMenu = imports.fileItemMenu;
const AutoAr = imports.autoAr;
const SignalManager = imports.signalManager;
const Gettext = imports.gettext.domain('ding');
const _ = Gettext.gettext;
var DesktopManager = class {
constructor(mainApp, dbusManager, desktopList, codePath, asDesktop, primaryIndex) {
this.mainApp = mainApp;
this._lastSelected = null;
this.using_X11 = Gdk.Display.get_default().constructor.$gtype.name === 'GdkX11Display';
if (asDesktop) {
this.mainApp.hold(); // Don't close the application if there are no desktops
this._hold_active = true;
if (this.using_X11) {
let usingWayland = GLib.getenv('XDG_SESSION_TYPE') == 'wayland';
if (usingWayland) {
// the system is using Wayland, but GTK is using X11!!!!!!
DBusUtils.extensionControl.activate_action('disableTimer', null);
if (Prefs.desktopSettings.get_boolean('check-x11wayland')) {
this._notifyX11UnderWayland = new NotifyX11UnderWayland.NotifyX11UnderWayland(doNotShowAnymore => {
this._notifyX11UnderWayland = null;
if (doNotShowAnymore) {
Prefs.desktopSettings.set_boolean('check-x11wayland', false);
}
});
}
}
} else {
// if the problem is fixed and appears again, DING should show the message
Prefs.desktopSettings.set_boolean('check-x11wayland', true);
}
}
this._selectedFiles = null;
this._popupCounter = 0;
this._premultiplied = false;
try {
for (let f of Prefs.mutterSettings.get_strv('experimental-features')) {
if (f == 'scale-monitor-framebuffer') {
this._premultiplied = true;
break;
}
}
} catch (e) {
}
this.dbusManager = dbusManager;
this.autoAr = new AutoAr.AutoAr(this);
this.templatesMonitor = new TemplatesScriptsManager.TemplatesScriptsManager(
DesktopIconsUtil.getTemplatesDir(),
TemplatesScriptsManager.TemplatesScriptsManagerFlags.HIDE_EXTENSIONS,
this._newDocument.bind(this)
);
this._primaryIndex = primaryIndex;
if (primaryIndex < desktopList.length) {
this._primaryScreen = desktopList[primaryIndex];
} else {
this._primaryScreen = null;
}
this._clickX = 0;
this._clickY = 0;
this._dragList = null;
this.dragItem = null;
this.thumbnailLoader = new Thumbnails.ThumbnailLoader(this, codePath);
this._codePath = codePath;
this._asDesktop = asDesktop;
this._desktopList = desktopList;
this._desktops = [];
this._desktopFilesChanged = false;
this._readingDesktopFiles = false;
this._desktopDir = DesktopIconsUtil.getDesktopDir();
this.desktopFsId = this._desktopDir.query_info('id::filesystem', Gio.FileQueryInfoFlags.NONE, null).get_attribute_string('id::filesystem');
this._updateWritableByOthers();
this._monitorDesktopDir = this._desktopDir.monitor_directory(Gio.FileMonitorFlags.WATCH_MOVES, null);
this._monitorDesktopDir.set_rate_limit(1000);
this._monitorDesktopDir.connect('changed', (obj, file, otherFile, eventType) => this._updateDesktopIfChanged(file, otherFile, eventType));
this.fileItemMenu = new FileItemMenu.FileItemMenu(this);
if (Prefs.schemaGnomeDarkSettings) {
if (this._checkApplyDarkModeSetting()) {
Prefs.schemaGnomeDarkSettings.connect('changed', (obj, key) => {
if (key === 'color-scheme') {
this._checkApplyDarkModeSetting();
}
});
}
}
this._showHidden = Prefs.gtkSettings.get_boolean('show-hidden');
this.showDropPlace = Prefs.desktopSettings.get_boolean('show-drop-place');
this.useNemo = Prefs.desktopSettings.get_boolean('use-nemo');
this.showLinkEmblem = Prefs.desktopSettings.get_boolean('show-link-emblem');
this.darkText = Prefs.desktopSettings.get_boolean('dark-text-in-labels');
this._settingsId = Prefs.desktopSettings.connect('changed', (obj, key) => {
if (key == 'dark-text-in-labels') {
this.darkText = Prefs.desktopSettings.get_boolean('dark-text-in-labels');
this._updateDesktop().catch(e => {
print(`Exception while updating Desktop after Dark Text changed: ${e.message}\n${e.stack}`);
});
return;
}
if (key == 'show-link-emblem') {
this.showLinkEmblem = Prefs.desktopSettings.get_boolean('show-link-emblem');
this._updateDesktop().catch(e => {
print(`Exception while updating Desktop after Show Emblems changed: ${e.message}\n${e.stack}`);
});
return;
}
if (key == 'use-nemo') {
this.useNemo = Prefs.desktopSettings.get_boolean('use-nemo');
return;
}
if (key == 'icon-size') {
this._fileList.forEach(x => x.removeFromGrid(false));
for (let desktop of this._desktops) {
desktop.resizeGrid();
}
this._fileList.forEach(x => x.updateIcon());
this._placeAllFilesOnGrids(true);
return;
}
if (key == Enums.SortOrder.ORDER) {
this.doArrangeRadioButtons();
if (this.keepStacked) {
this.doStacks(true);
} else {
this.doSorts(true);
}
return;
}
if (key == 'unstackedtypes') {
if (this.keepStacked) {
this.doStacks(true);
}
return;
}
if (key == 'keep-stacked') {
this.keepStacked = Prefs.desktopSettings.get_boolean('keep-stacked');
if (!this.keepStacked) {
this._unstack();
} else {
this.doStacks(true);
}
return;
}
if (key == 'keep-arranged') {
this.keepArranged = Prefs.desktopSettings.get_boolean('keep-arranged');
if (this.keepArranged) {
this.doSorts(true);
}
return;
}
this.showDropPlace = Prefs.desktopSettings.get_boolean('show-drop-place');
this._updateDesktop().catch(e => {
print(`Exception while updating Desktop after Settings Changed: ${e.message}\n${e.stack}`);
});
});
Prefs.gtkSettings.connect('changed', (obj, key) => {
if (key == 'show-hidden') {
this._showHidden = Prefs.gtkSettings.get_boolean('show-hidden');
this._updateDesktop().catch(e => {
print(`Exception while updating Desktop after Hidden Settings Changed: ${e.message}\n${e.stack}`);
});
}
});
Prefs.nautilusSettings.connect('changed', (obj, key) => {
if (key == 'show-image-thumbnails') {
this._updateDesktop().catch(e => {
print(`Exception while updating Desktop after Nautilus Settings Changed: ${e.message}\n${e.stack}`);
});
}
});
this._gtkIconTheme = Gtk.IconTheme.get_default();
this._gtkIconTheme.connect('changed', () => {
this._updateDesktop().catch(e => {
print(`Exception while updating Desktop after Gtk Icon Theme Change: ${e.message}\n${e.stack}`);
});
});
this._volumeMonitor = Gio.VolumeMonitor.get();
this._volumeMonitor.connect('mount-added', () => {
this._updateDesktop().catch(e => {
print(`Exception while updating Desktop after mount added: ${e.message}\n${e.stack}`);
});
});
this._volumeMonitor.connect('mount-removed', () => {
this._updateDesktop().catch(e => {
print(`Exception while updating Desktop after mount removed: ${e.message}\n${e.stack}`);
});
});
this.rubberBand = false;
let cssProvider = new Gtk.CssProvider();
cssProvider.load_from_file(Gio.File.new_for_path(GLib.build_filenamev([codePath, 'stylesheet.css'])));
Gtk.StyleContext.add_provider_for_screen(Gdk.Screen.get_default(), cssProvider, Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION);
cssProvider = undefined;
this._configureSelectionColor();
this._createDesktopBackgroundMenu();
this._createGridWindows();
DBusUtils.NautilusFileOperations2.connectToProxy('g-properties-changed', this._undoStatusChanged.bind(this));
DBusUtils.GtkVfsMetadata.connectSignalToProxy('AttributeChanged', this._metadataChanged.bind(this));
this._allFileList = null;
this._fileList = [];
this._forcedExit = false;
this._updateDesktop().catch(e => {
print(`Exception while Initiating Desktop: ${e.message}\n${e.stack}`);
});
this._scriptsList = [];
this.ignoreKeys = [Gdk.KEY_space, Gdk.KEY_Shift_L, Gdk.KEY_Shift_R, Gdk.KEY_Control_L, Gdk.KEY_Control_R, Gdk.KEY_Caps_Lock, Gdk.KEY_Shift_Lock, Gdk.KEY_Meta_L, Gdk.KEY_Meta_R, Gdk.KEY_Alt_L, Gdk.KEY_Alt_R, Gdk.KEY_Super_L, Gdk.KEY_Super_R, Gdk.KEY_ISO_Level3_Shift, Gdk.KEY_ISO_Level5_Shift];
// Check if Nautilus is available
try {
DesktopIconsUtil.trySpawn(null, ['nautilus', '--version']);
} catch (e) {
this._errorWindow = new ShowErrorPopup.ShowErrorPopup(_('Nautilus File Manager not found'),
_('The Nautilus File Manager is mandatory to work with Desktop Icons NG.'),
true);
}
this._pendingDropFiles = {};
if (this._asDesktop) {
if (!GLibUnix) {
this.dbusManager.doNotify(_('GLibUnix GIR file not found'),
_('GLibUnix-2.0.gir file is missing. Please, install the required package in your system.'));
} else {
this._sigtermID = GLibUnix.signal_add_full(GLib.PRIORITY_DEFAULT, 15, () => {
GLib.source_remove(this._sigtermID);
for (let desktop of this._desktops) {
desktop.destroy();
}
this._desktops = [];
this._forcedExit = true;
if (this._desktopEnumerateCancellable) {
this._desktopEnumerateCancellable.cancel();
}
if (this._hold_active) {
this.mainApp.release();
this._hold_active = false;
}
return false;
});
}
}
if (this._asDesktop) {
this._dbusAdvertiseUpdate();
}
let changeDesktopIconSettings = Gio.SimpleAction.new('changeDesktopIconSettings', null);
changeDesktopIconSettings.connect('activate', () => Prefs.showPreferences());
this.mainApp.add_action(changeDesktopIconSettings);
}
_metadataChanged(proxy, nameOwner, args) {
let filepath = GLib.build_filenamev([GLib.get_home_dir(), args[1]]);
if (this._desktopDir.get_path() === GLib.path_get_dirname(filepath)) {
for (let fileItem of this.updateFileList()) {
if (fileItem.path == filepath) {
fileItem.updatedMetadata();
break;
}
}
}
}
updateFileList() {
let updateFileList;
if (this._allFileList && (this._allFileList.length > 0)) {
updateFileList = this._allFileList;
} else {
updateFileList = this._fileList;
}
return updateFileList;
}
_dbusAdvertiseUpdate() {
DBusUtils.extensionControl.connect('action-state-changed', (actionGroup, actionName, data) => {
if (actionName == 'desktopGeometry') {
this.updateGridWindows(data.recursiveUnpack());
}
});
DBusUtils.extensionControl.connect('action-added', (actionGroup, actionName) => {
// this signal allows us to know when the action is available and we can read the initial value
if (actionName == 'desktopGeometry') {
let data = DBusUtils.extensionControl.get_action_state('desktopGeometry');
this.updateGridWindows(data.recursiveUnpack());
}
});
// This is required to trigger the 'action-added' signal
DBusUtils.extensionControl.list_actions();
}
updateGridWindows(newdesktoplist) {
if ((newdesktoplist.length > 0) && ('primaryMonitor' in newdesktoplist[0])) {
this._primaryIndex = newdesktoplist[0].primaryMonitor;
}
if (newdesktoplist.length != this._desktopList.length) {
this._fileList.forEach(x => x.removeFromGrid(false));
this._desktopList = newdesktoplist;
if (this._primaryIndex < this._desktopList.length) {
this._primaryScreen = this._desktopList[this._primaryIndex];
} else {
this._primaryScreen = null;
}
this._createGridWindows();
this._placeAllFilesOnGrids(true);
return;
}
let monitorschanged = [];
let gridschanged = [];
for (let index = 0; index < newdesktoplist.length; index++) {
let area = newdesktoplist[index];
let area2 = this._desktopList[index];
if ((area.x != area2.x) ||
(area.y != area2.y) ||
(area.width != area2.width) ||
(area.height != area2.height) ||
(area.zoom != area2.zoom) ||
(area.monitorIndex != area2.monitorIndex)) {
monitorschanged.push(index);
gridschanged.push(index);
continue;
}
if ((area.marginTop != area2.marginTop) ||
(area.marginBottom != area2.marginBottom) ||
(area.marginLeft != area2.marginLeft) ||
(area.marginRight != area2.marginRight)) {
if (!gridschanged.includes(index)) {
gridschanged.push(index);
}
}
}
if (gridschanged.length > 0) {
this._fileList.forEach(x => x.removeFromGrid(false));
for (let gridindex of gridschanged) {
let desktop = this._desktops[gridindex];
desktop.updateGridDescription(newdesktoplist[gridindex]);
if (monitorschanged.includes(gridindex)) {
desktop.resizeWindow();
}
desktop.resizeGrid();
}
this._desktopList = newdesktoplist;
this._placeAllFilesOnGrids(true);
}
if (this._primaryIndex < this._desktopList.length) {
this._primaryScreen = this._desktopList[this._primaryIndex];
} else {
this._primaryScreen = null;
}
}
_createGridWindows() {
for (let desktop of this._desktops) {
desktop.destroy();
}
this._desktops = [];
for (let desktopIndex in this._desktopList) {
let desktop = this._desktopList[desktopIndex];
let desktopName;
if (this._asDesktop) {
// this name must match the one used in emulateX11WindowType
desktopName = `Desktop Icons ${desktop.monitorIndex + 1}`;
} else {
desktopName = `DING ${desktop.monitorIndex + 1}`;
}
this._desktops.push(new DesktopGrid.DesktopGrid(this, desktopName, desktop, this._asDesktop, this._premultiplied));
}
}
_configureSelectionColor() {
this._contextWidget = new Gtk.WidgetPath();
this._contextWidget.append_type(Gtk.Widget);
this._styleContext = new Gtk.StyleContext();
this._styleContext.set_path(this._contextWidget);
this._styleContext.add_class('view');
this._cssProviderSelection = new Gtk.CssProvider();
this._styleContext.connect('changed', () => {
Gtk.StyleContext.remove_provider_for_screen(Gdk.Screen.get_default(), this._cssProviderSelection);
this._setSelectionColor();
});
this._setSelectionColor();
}
_setSelectionColor() {
this.selectColor = this._styleContext.get_background_color(Gtk.StateFlags.SELECTED);
let style = `.desktop-icons-selected {
background-color: rgba(${this.selectColor.red * 255},${this.selectColor.green * 255}, ${this.selectColor.blue * 255}, 0.6);
}`;
this._cssProviderSelection.load_from_data(style);
Gtk.StyleContext.add_provider_for_screen(Gdk.Screen.get_default(), this._cssProviderSelection, 600);
}
_checkApplyDarkModeSetting() {
try {
let displayGtkSettings = Gtk.Settings.get_for_screen(Gdk.Screen.get_default());
displayGtkSettings.gtk_application_prefer_dark_theme = Prefs.schemaGnomeDarkSettings.get_string('color-scheme') === 'prefer-dark';
return true;
} catch (e) {
return false;
}
}
clearFileCoordinates(fileList, dropCoordinates) {
for (let element of fileList) {
let file = Gio.File.new_for_uri(element);
if (!file.is_native() || !file.query_exists(null)) {
if (dropCoordinates != null) {
this._pendingDropFiles[file.get_basename()] = dropCoordinates;
}
continue;
}
let info = new Gio.FileInfo();
info.set_attribute_string('metadata::nautilus-icon-position', '');
if (dropCoordinates != null) {
info.set_attribute_string('metadata::nautilus-drop-position', `${dropCoordinates[0]},${dropCoordinates[1]}`);
}
try {
file.set_attributes_from_info(info, Gio.FileQueryInfoFlags.NONE, null);
} catch (e) {}
}
}
doMoveWithDragAndDrop(xOrigin, yOrigin, xDestination, yDestination) {
let keepArranged = this.keepArranged || this.keepStacked;
if (this.sortSpecialFolders && keepArranged) {
return;
}
// Find the grid where the destination lies and aim towards the positive side, middle of grid to ensure drop in the grid
for (let desktop of this._desktops) {
let grid = desktop.getGridAt(xDestination, yDestination, true);
if (grid !== null) {
xDestination = grid[0] + desktop._elementWidth / 2;
yDestination = grid[1] + desktop._elementHeight / 2;
break;
}
}
let deltaX = xDestination - xOrigin;
let deltaY = yDestination - yOrigin;
let fileItems = [];
for (let item of this._fileList) {
if (item.isSelected) {
if (keepArranged) {
if (item.isSpecial) {
fileItems.push(item);
item.removeFromGrid(false);
let [x, y, a, b, c] = item.getCoordinates();
item.savedCoordinates = [x + deltaX, y + deltaY];
} else {
continue;
}
} else {
fileItems.push(item);
item.removeFromGrid(false);
let [x, y, a, b, c] = item.getCoordinates();
item.savedCoordinates = [x + deltaX, y + deltaY];
}
}
}
// force to store the new coordinates
this._addFilesToDesktop(fileItems, Enums.StoredCoordinates.OVERWRITE);
fileItems = undefined;
if (this.keepArranged) {
this._updateDesktop().catch(e => {
print(`Exception while doing move with drag and drop and keeping arranged: ${e.message}\n${e.stack}`);
});
}
}
onDragBegin(item) {
this.dragItem = item;
}
onDragMotion(x, y) {
if (this.dragItem === null) {
for (let desktop of this._desktops) {
desktop.refreshDrag([[0, 0]], x, y);
}
return;
}
if (this._dragList === null) {
let itemList = this.getCurrentSelection(false);
if (!itemList) {
return;
}
let [x1, y1, x2, y2, c] = this.dragItem.getCoordinates();
let oX = x1;
let oY = y1;
this._dragList = [];
for (let item of itemList) {
[x1, y1, x2, y2, c] = item.getCoordinates();
this._dragList.push([x1 - oX, y1 - oY]);
}
}
for (let desktop of this._desktops) {
desktop.refreshDrag(this._dragList, x, y);
}
}
onDragLeave() {
this._dragList = null;
for (let desktop of this._desktops) {
desktop.refreshDrag(null, 0, 0);
}
}
onDragEnd() {
this.dragItem = null;
}
onDragDataReceived(context, xDestination, yDestination, selection, info, forceLocal, forceCopy) {
this.onDragLeave();
let fileList = DesktopIconsUtil.getFilesFromNautilusDnD(selection, info);
if (forceLocal) {
info = Enums.DndTargetInfo.DING_ICON_LIST;
}
switch (info) {
case Enums.DndTargetInfo.DING_ICON_LIST:
if (fileList.length != 0) {
let [xOrigin, yOrigin, a, b, c] = this.dragItem.getCoordinates();
this.doMoveWithDragAndDrop(xOrigin, yOrigin, xDestination, yDestination);
Gtk.drag_finish(context, true, true, Gtk.get_current_event_time());
}
break;
case Enums.DndTargetInfo.GNOME_ICON_LIST:
case Enums.DndTargetInfo.URI_LIST:
if (fileList.length != 0) {
this.clearFileCoordinates(fileList, [xDestination, yDestination]);
let data = Gio.File.new_for_uri(fileList[0]).query_info('id::filesystem', Gio.FileQueryInfoFlags.NONE, null);
let idFS = data.get_attribute_string('id::filesystem');
if ((this.desktopFsId == idFS) && !forceCopy) {
DBusUtils.RemoteFileOperations.MoveURIsRemote(fileList, `file://${GLib.get_user_special_dir(GLib.UserDirectory.DIRECTORY_DESKTOP)}`);
Gtk.drag_finish(context, true, true, Gtk.get_current_event_time());
} else {
DBusUtils.RemoteFileOperations.CopyURIsRemote(fileList, `file://${GLib.get_user_special_dir(GLib.UserDirectory.DIRECTORY_DESKTOP)}`);
Gtk.drag_finish(context, true, false, Gtk.get_current_event_time());
}
} else {
Gtk.drag_finish(context, false, false, Gtk.get_current_event_time());
}
break;
case Enums.DndTargetInfo.TEXT_PLAIN:
if (fileList.length != 0) {
let dropCoordinates = [xDestination, yDestination];
this.detectURLorText(fileList, dropCoordinates);
Gtk.drag_finish(context, true, false, Gtk.get_current_event_time());
} else {
Gtk.drag_finish(context, false, false, Gtk.get_current_event_time());
}
break;
default:
Gtk.drag_finish(context, false, false, Gtk.get_current_event_time());
break;
}
}
detectURLorText(fileList, dropCoordinates) {
/**
*
* @param str
*/
function isValidURL(str) {
var pattern = new RegExp('^(https|http|ftp|rtsp|mms)?:\\/\\/?' +
'((([a-z\\d]([a-z\\d-]*[a-z\\d])*)\\.)+[a-z]{2,}|' +
'((\\d{1,3}\\.){3}\\d{1,3}))' +
'(\\:\\d+)?(\\/[-a-z\\d%_.~+]*)*' +
'(\\?[;&a-z\\d%_.~+=-]*)?' +
'(\\#[-a-z\\d_]*)?$', 'i');
return !!pattern.test(str);
}
let text = fileList.toString();
if (isValidURL(text)) {
this.writeURLlinktoDesktop(text, dropCoordinates);
} else {
let filename = 'Dragged Text';
let now = Date().valueOf().split(' ').join('').replace(/:/g, '-');
filename = `${filename}-${now}`;
DesktopIconsUtil.writeTextFileToDesktop(text, filename, dropCoordinates);
}
}
writeURLlinktoDesktop(link, dropCoordinates) {
let filename = link.split('?')[0];
filename = filename.split('//')[1];
filename = filename.split('/')[0];
let now = Date().valueOf().split(' ').join('').replace(/:/g, '-');
filename = `${filename}-${now}`;
this.writeHTMLTypeLink(filename, link, dropCoordinates);
}
writeHTMLTypeLink(filename, link, dropCoordinates) {
filename += '.html';
let body = ['', '', ``, '', '', '', ''];
body = body.join('\n');
DesktopIconsUtil.writeTextFileToDesktop(body, filename, dropCoordinates);
}
fillDragDataGet(info) {
let fileList = this.getCurrentSelection(false);
if (fileList == null) {
return null;
}
let atom;
switch (info) {
case Enums.DndTargetInfo.DING_ICON_LIST:
atom = Gdk.atom_intern('x-special/ding-icon-list', false);
break;
case Enums.DndTargetInfo.GNOME_ICON_LIST:
atom = Gdk.atom_intern('x-special/gnome-icon-list', false);
break;
case Enums.DndTargetInfo.URI_LIST:
atom = Gdk.atom_intern('text/uri-list', false);
break;
default:
return null;
}
let data = '';
for (let fileItem of fileList) {
data += fileItem.uri;
if (info === Enums.DndTargetInfo.GNOME_ICON_LIST) {
let coordinates = fileItem.getCoordinates();
if (coordinates != null) {
data += `\r${coordinates[0]}:${coordinates[1]}:${coordinates[2] - coordinates[0] + 1}:${coordinates[3] - coordinates[1] + 1}`;
}
}
data += '\r\n';
}
return [atom, data];
}
onPressButton(x, y, event, grid) {
this._clickX = Math.floor(x);
this._clickY = Math.floor(y);
let button = event.get_button()[1];
let state = event.get_state()[1];
if (button == 1) {
let shiftPressed = !!(state & Gdk.ModifierType.SHIFT_MASK);
let controlPressed = !!(state & Gdk.ModifierType.CONTROL_MASK);
if (!shiftPressed && !controlPressed) {
// clear selection
this.unselectAll();
}
this._startRubberband(x, y);
}
if (button == 3) {
this._prepareMenu();
this._menu.popup_at_pointer(event);
}
}
_prepareMenu() {
let templates = this.templatesMonitor.createMenu();
if (templates === null) {
this._newDocumentItem.hide();
} else {
this._newDocumentItem.set_submenu(templates);
this._newDocumentItem.show_all();
}
this._pasteMenuItem.set_sensitive(false);
this._syncUndoRedo();
this._updateClipBoard();
}
_updateClipBoard() {
let atom = Gdk.Atom.intern('CLIPBOARD', false);
let atom2 = Gdk.Atom.intern('x-special/gnome-copied-files', false);
let clipboard = Gtk.Clipboard.get(atom);
this._isCut = false;
this._clipboardFiles = null;
let text = null;
/*
* Before Gnome Shell 40, St API couldn't access binary data in the clipboard, only text data. Also, the
* original Desktop Icons was a pure extension, so it was limited to what Clutter and St offered. That was
* the reason why Nautilus accepted a text format for CUT and COPY operations in the form
*
* x-special/nautilus-clipboard
* OPERATION
* FILE_URI
* [FILE_URI]
* [...]
*
* In Gnome Shell 40, St was enhanced and now it supports binary data; that's why Nautilus migrated to a
* binary format identified by the atom 'x-special/gnome-copied-files', where the CUT or COPY operation is
* shared.
*
* To maintain compatibility, we first check if there's binary data in that atom, and if not, we check if
* there is text data in the old format.
*/
if (clipboard.wait_is_target_available(atom2)) {
let data = clipboard.wait_for_contents(atom2);
text = `x-special/nautilus-clipboard\n${ByteArray.toString(data.get_data())}\n`;
} else {
text = clipboard.wait_for_text();
if (text && !text.endsWith('\n')) {
text += '\n';
}
}
this._setClipboardContent(text);
}
_setClipboardContent(text) {
let [valid, isCut, files] = this._parseClipboardText(text);
if (valid) {
this._isCut = isCut;
this._clipboardFiles = files;
}
this._pasteMenuItem.set_sensitive(valid);
}
_syncUndoRedo() {
if (!DBusUtils.RemoteFileOperations.isAvailable) {
this._undoMenuItem.hide();
this._redoMenuItem.hide();
return;
}
switch (DBusUtils.RemoteFileOperations.UndoStatus()) {
case Enums.UndoStatus.UNDO:
this._undoMenuItem.show();
this._redoMenuItem.hide();
break;
case Enums.UndoStatus.REDO:
this._undoMenuItem.hide();
this._redoMenuItem.show();
break;
default:
this._undoMenuItem.hide();
this._redoMenuItem.hide();
break;
}
}
_undoStatusChanged(proxy, properties, test) {
if ('UndoStatus' in properties.deep_unpack()) {
this._syncUndoRedo();
}
}
_doUndo() {
DBusUtils.RemoteFileOperations.UndoRemote();
}
_doRedo() {
DBusUtils.RemoteFileOperations.RedoRemote();
}
showPopup() {
this._popupCounter++;
}
hidePopup() {
if (this._popupCounter > 0)
this._popupCounter--;
else
console.log("Mismatched hidePopup() and showPopup() calls");
}
_getTopLeftIcon() {
if (this._fileList.length == 0) {
return null;
}
let currentCoords = null;
let currentItem = null;
for (let item of this._fileList) {
const newCoords = item.getCoordinates();
if ((currentCoords === null) || (newCoords[0] < currentCoords[0]) || (newCoords[1] < currentCoords[1])) {
currentCoords = newCoords;
currentItem = item;
}
}
return currentItem;
}
_getBottomRightIcon() {
if (this._fileList.length == 0) {
return null;
}
let currentCoords = null;
let currentItem = null;
for (let item of this._fileList) {
const newCoords = item.getCoordinates();
if ((currentCoords === null) || (newCoords[0] > currentCoords[0]) || (newCoords[1] > currentCoords[1])) {
currentCoords = newCoords;
currentItem = item;
}
}
return currentItem;
}
_setIconAsSelected(icon) {
this._fileList.forEach(fileItem => fileItem.isKeyboardSelected = fileItem === icon);
}
_getLastKeyboardIcon() {
if ((this._lastSelected !== null) && this._fileList.includes(this._lastSelected)) {
this._setIconAsSelected(this._lastSelected);
return this._lastSelected;
}
return null;
}
_getCurrentKeyboardIcon() {
let currentKeyboardIcon = null;
for (let fileItem of this._fileList) {
if ((currentKeyboardIcon === null) && (fileItem.isKeyboardSelected)) {
currentKeyboardIcon = fileItem;
} else {
if (fileItem.isKeyboardSelected) {
fileItem.isKeyboardSelected = false;
}
}
}
return currentKeyboardIcon;
}
onKeyRelease(event, grid) {
if (this._popupCounter != 0)
return false;
const isCtrl = (event.get_state()[1] & Gdk.ModifierType.CONTROL_MASK) != 0;
const isShift = (event.get_state()[1] & Gdk.ModifierType.SHIFT_MASK) != 0;
const symbol = event.get_keyval()[1];
if ((symbol == Gdk.KEY_Left) || (symbol == Gdk.KEY_Right) ||
(symbol == Gdk.KEY_Up) || (symbol == Gdk.KEY_Down)) {
let selected = this._getCurrentKeyboardIcon();
// if there is no selected icon, select the last selected icon
if (!selected) {
selected = this._getLastKeyboardIcon();
if (selected) {
return false;
}
}
// if there is no last selected, or the last selected isn't in the desktop
// (for example, because it was deleted), select the top-left icon.
if (!selected) {
selected = this._getTopLeftIcon();
if (selected) {
selected.isKeyboardSelected = true;
}
this._lastSelected = selected;
return false;
}
let selectedCoordinates = selected.getCoordinates();
let index;
let multiplier;
switch (symbol) {
case Gdk.KEY_Left:
index = 0;
multiplier = -1;
break;
case Gdk.KEY_Right:
index = 0;
multiplier = 1;
break;
case Gdk.KEY_Up:
index = 1;
multiplier = -1;
break;
case Gdk.KEY_Down:
index = 1;
multiplier = 1;
break;
}
let newDistance = null;
let newItem = null;
for (let item of this._fileList) {
let itemCoordinates = item.getCoordinates();
if ((selectedCoordinates[index] * multiplier) >= (itemCoordinates[index] * multiplier)) {
continue;
}
let distance = Math.pow(selectedCoordinates[0] - itemCoordinates[0], 2) + Math.pow(selectedCoordinates[1] - itemCoordinates[1], 2);
if ((newDistance === null) || (newDistance > distance)) {
newDistance = distance;
newItem = item;
}
}
if (newItem === null) {
newItem = selected;
} else {
selected.isKeyboardSelected = false;
if (isCtrl || isShift) {
selected.setSelected();
}
}
newItem.isKeyboardSelected = true;
this._lastSelected = newItem;
return false;
}
return false;
}
onKeyPress(event, grid) {
if (this._popupCounter != 0) {
return false;
}
const symbol = event.get_keyval()[1];
const isCtrl = (event.get_state()[1] & Gdk.ModifierType.CONTROL_MASK) != 0;
const isShift = (event.get_state()[1] & Gdk.ModifierType.SHIFT_MASK) != 0;
const isAlt = (event.get_state()[1] & Gdk.ModifierType.MOD1_MASK) != 0;
const selection = this.getCurrentSelection(false);
if (symbol == Gdk.KEY_Home) {
this._setIconAsSelected(this._getTopLeftIcon());
return true;
} else if (symbol == Gdk.KEY_End) {
this._setIconAsSelected(this._getBottomRightIcon());
return true;
} else if (isCtrl && (symbol === Gdk.KEY_space)) {
const selected = this._getCurrentKeyboardIcon();
if (selected !== null) {
selected.toggleSelected();
return true;
}
} else if (isCtrl && isShift && ((symbol == Gdk.KEY_Z) || (symbol == Gdk.KEY_z))) {
this._doRedo();
return true;
} else if (isCtrl && ((symbol == Gdk.KEY_Z) || (symbol == Gdk.KEY_z))) {
this._doUndo();
return true;
} else if (isCtrl && ((symbol == Gdk.KEY_C) || (symbol == Gdk.KEY_c))) {
this.doCopy();
return true;
} else if (isCtrl && ((symbol == Gdk.KEY_X) || (symbol == Gdk.KEY_x))) {
this.doCut();
return true;
} else if (isCtrl && ((symbol == Gdk.KEY_V) || (symbol == Gdk.KEY_v))) {
this._updateClipBoard();
this._doPaste();
return true;
} else if (isAlt && (symbol == Gdk.KEY_Return)) {
let currentSelection = this.getCurrentSelection(true);
DBusUtils.RemoteFileOperations.ShowItemPropertiesRemote(currentSelection, event.get_time());
return true;
} else if (symbol == Gdk.KEY_Return) {
if (selection && (selection.length == 1)) {
selection[0].doOpen();
return true;
}
} else if (symbol == Gdk.KEY_Delete) {
if (isShift) {
this.doDeletePermanently();
} else {
this.doTrash();
}
return true;
} else if (symbol == Gdk.KEY_F2) {
if (selection && (selection.length == 1)) {
// Support renaming other grids file items.
this.doRename(selection[0], false);
return true;
}
} else if (selection && symbol == Gdk.KEY_space) {
// Support previewing other grids file items.
DBusUtils.RemoteFileOperations.ShowFileRemote(selection[0].uri, 0, true);
return true;
} else if (isCtrl && ((symbol == Gdk.KEY_A) || (symbol == Gdk.KEY_a))) {
this._selectAll();
return true;
} else if (symbol == Gdk.KEY_F5) {
this._updateDesktop().catch(e => {
print(`Exception while updating Desktop after pressing F5: ${e.message}\n${e.stack}`);
});
return true;
} else if (isCtrl && ((symbol == Gdk.KEY_H) || (symbol == Gdk.KEY_h))) {
Prefs.gtkSettings.set_boolean('show-hidden', !this._showHidden);
return true;
} else if (isCtrl && ((symbol == Gdk.KEY_F) || (symbol == Gdk.KEY_f))) {
this.findFiles();
return true;
} else if (symbol == Gdk.KEY_Escape) {
this.unselectAll();
if (this.searchString) {
this.searchString = null;
}
return true;
} else if (isCtrl && isShift && ((symbol == Gdk.KEY_N) || (symbol == Gdk.KEY_n))) {
this.doNewFolder();
return true;
} else if ((symbol == Gdk.KEY_Menu) || ((symbol == Gdk.KEY_F10) && (isShift))) {
if (selection) {
this.fileItemMenu.showMenu(selection[0], event, true);
} else {
this._prepareMenu();
this._menu.popup_at_pointer(event);
}
return true;
} else {
if (this.ignoreKeys.includes(symbol)) {
return false;
}
let key = String.fromCharCode(Gdk.keyval_to_unicode(symbol));
if (this.keypressTimeoutID && this.searchString) {
this.searchString = this.searchString.concat(key);
} else {
this.searchString = key;
}
if (this.searchString != '') {
let found = this.scanForFiles(this.searchString, false);
if (found) {
if ((this.getNumberOfSelectedItems() >= 1) && !this.keypressTimeoutID) {
let windowError = new ShowErrorPopup.ShowErrorPopup(
_('Clear Current Selection before New Search'),
null,
true);
windowError.timeoutClose(2000);
return true;
}
this.searchEventTime = GLib.get_monotonic_time();
if (!this.keypressTimeoutID) {
this.keypressTimeoutID = GLib.timeout_add(GLib.PRIORITY_DEFAULT, 1000, () => {
if (GLib.get_monotonic_time() - this.searchEventTime < 1500000) {
return true;
}
this.searchString = null;
this.keypressTimeoutID = null;
if (this._findFileWindow) {
this._findFileWindow.response(Gtk.ResponseType.OK);
}
return false;
});
}
this.findFiles(this.searchString);
}
}
return true;
}
return false;
}
unselectAll() {
this._fileList.map(f => {
f.unsetSelected();
f.isKeyboardSelected = false;
});
}
findFiles(text) {
this._findFileWindow = new Gtk.Dialog({
use_header_bar: true,
window_position: Gtk.WindowPosition.CENTER_ON_PARENT,
resizable: false,
});
this._findFileButton = this._findFileWindow.add_button(_('OK'), Gtk.ResponseType.OK);
this._findFileButton.sensitive = false;
this._findFileWindow.add_button(_('Cancel'), Gtk.ResponseType.CANCEL);
this._findFileWindow.set_modal(true);
this._findFileWindow.set_title(_('Find Files on Desktop'));
DesktopIconsUtil.windowHidePagerTaskbarModal(this._findFileWindow, true);
let contentArea = this._findFileWindow.get_content_area();
this._findFileTextArea = new Gtk.Entry();
contentArea.pack_start(this._findFileTextArea, true, true, 5);
contentArea = undefined;
this._findFileSignalManager = new SignalManager.SignalManager();
this._findFileSignalManager.connectSignal(this._findFileTextArea, 'activate', () => {
if (this._findFileButton.sensitive) {
this._findFileWindow.response(Gtk.ResponseType.OK);
}
});
this._findFileSignalManager.connectSignal(this._findFileTextArea, 'changed', () => {
let context = this._findFileTextArea.get_style_context();
if (this.scanForFiles(this._findFileTextArea.text, true)) {
this._findFileButton.sensitive = true;
if (context.has_class('not-found')) {
context.remove_class('not-found');
}
} else {
this._findFileButton.sensitive = false;
this._findFileTextArea.error_bell();
if (!context.has_class('not-found')) {
context.add_class('not-found');
}
}
this.searchEventTime = GLib.get_monotonic_time();
});
this._findFileTextArea.grab_focus_without_selecting();
if (text) {
this._findFileTextArea.set_text(text);
this._findFileTextArea.set_position(text.length);
} else {
this.scanForFiles(null);
}
this._findFileWindow.show_all();
this._findFileSignalManager.connectSignal(this._findFileWindow, 'close', () => {
this._findFileWindow.response(Gtk.ResponseType.CANCEL);
});
this._findFileSignalManager.connectSignal(this._findFileWindow, 'response', (actor, retval) => {
if (retval == Gtk.ResponseType.CANCEL) {
this.unselectAll();
}
this._findFileSignalManager.disconnectAllSignals();
this._findFileWindow.destroy();
this._findFileWindow = null;
});
}
scanForFiles(text, setselected) {
let found = [];
if (text && (text != '')) {
found = this._fileList.filter(f => f.fileName.toLowerCase().includes(text.toLowerCase()) || f._label.get_text().toLowerCase().includes(text.toLowerCase()));
}
if (found.length != 0) {
if (setselected) {
this.unselectAll();
found.map(f => f.setSelected());
}
return true;
} else {
return false;
}
}
_createDesktopBackgroundMenu() {
this._menu = new Gtk.Menu();
this._menu.get_style_context().add_class('desktopmenu');
let newFolder = new Gtk.MenuItem({label: _('New Folder')});
newFolder.connect('activate', () => this.doNewFolder());
this._menu.add(newFolder);
this._newDocumentItem = new Gtk.MenuItem({label: _('New Document')});
this._menu.add(this._newDocumentItem);
this._menu.add(new Gtk.SeparatorMenuItem());
this._pasteMenuItem = new Gtk.MenuItem({label: _('Paste')});
this._pasteMenuItem.connect('activate', () => this._doPaste());
this._menu.add(this._pasteMenuItem);
this._undoMenuItem = new Gtk.MenuItem({label: _('Undo')});
this._undoMenuItem.connect('activate', () => this._doUndo());
this._menu.add(this._undoMenuItem);
this._redoMenuItem = new Gtk.MenuItem({label: _('Redo')});
this._redoMenuItem.connect('activate', () => this._doRedo());
this._menu.add(this._redoMenuItem);
this._menu.add(new Gtk.SeparatorMenuItem());
let selectAll = new Gtk.MenuItem({label: _('Select All')});
selectAll.connect('activate', () => this._selectAll());
this._menu.add(selectAll);
this._addSortingMenu();
this._menu.add(new Gtk.SeparatorMenuItem());
this._showDesktopInFilesMenuItem = new Gtk.MenuItem({label: _('Show Desktop in Files')});
this._showDesktopInFilesMenuItem.connect('activate', () => this._onOpenDesktopInFilesClicked());
this._menu.add(this._showDesktopInFilesMenuItem);
this._openTerminalMenuItem = new Gtk.MenuItem({label: _('Open in Terminal')});
this._openTerminalMenuItem.connect('activate', () => this._onOpenTerminalClicked());
this._menu.add(this._openTerminalMenuItem);
this._menu.add(new Gtk.SeparatorMenuItem());
this._changeBackgroundMenuItem = new Gtk.MenuItem({label: _('Change Background…')});
this._changeBackgroundMenuItem.connect('activate', () => {
const desktopFile = Gio.DesktopAppInfo.new('gnome-background-panel.desktop');
const context = Gdk.Display.get_default().get_app_launch_context();
context.set_timestamp(Gtk.get_current_event_time());
desktopFile.launch([], context);
});
this._menu.add(this._changeBackgroundMenuItem);
this._menu.add(new Gtk.SeparatorMenuItem());
this._settingsMenuItem = new Gtk.MenuItem({label: _('Desktop Icons Settings')});
if (GLib.getenv('XDG_CURRENT_DESKTOP').split(':').includes('ubuntu')) {
this._settingsMenuItem.connect("activate", () => {
const desktopFile = Gio.DesktopAppInfo.new('gnome-ubuntu-panel.desktop');
const context = Gdk.Display.get_default().get_app_launch_context();
context.set_timestamp(Gtk.get_current_event_time());
desktopFile.launch([], context);
});
} else {
this._settingsMenuItem.connect("activate", () => Prefs.showPreferences());
}
this._menu.add(this._settingsMenuItem);
this._displaySettingsMenuItem = new Gtk.MenuItem({label: _('Display Settings')});
this._displaySettingsMenuItem.connect('activate', () => {
const desktopFile = Gio.DesktopAppInfo.new('gnome-display-panel.desktop');
const context = Gdk.Display.get_default().get_app_launch_context();
context.set_timestamp(Gtk.get_current_event_time());
desktopFile.launch([], context);
});
this._menu.add(this._displaySettingsMenuItem);
this._menu.show_all();
}
_selectAll() {
for (let fileItem of this._fileList) {
if (fileItem.isAllSelectable) {
fileItem.setSelected();
}
}
}
_onOpenDesktopInFilesClicked() {
const context = Gdk.Display.get_default().get_app_launch_context();
context.set_timestamp(Gtk.get_current_event_time());
Gio.AppInfo.launch_default_for_uri_async(this._desktopDir.get_uri(),
context, null,
(source, result) => {
try {
Gio.AppInfo.launch_default_for_uri_finish(result);
} catch (e) {
console.log(`Error opening Desktop in Files: ${e.message}`);
}
}
);
}
_onOpenTerminalClicked() {
let desktopPath = this._desktopDir.get_path();
DesktopIconsUtil.launchTerminal(desktopPath, null);
}
_doPaste() {
if (this._clipboardFiles === null) {
return;
}
let desktopDir = this._desktopDir.get_uri();
if (this._isCut) {
DBusUtils.RemoteFileOperations.MoveURIsRemote(this._clipboardFiles, desktopDir);
} else {
DBusUtils.RemoteFileOperations.CopyURIsRemote(this._clipboardFiles, desktopDir);
}
}
_parseClipboardText(text) {
if (text === null) {
return [false, false, null];
}
let lines = text.split('\n');
let [mime, action, ...files] = lines;
if (mime != 'x-special/nautilus-clipboard') {
return [false, false, null];
}
if (!['copy', 'cut'].includes(action)) {
return [false, false, null];
}
let isCut = action == 'cut';
/* Last line is empty due to the split */
if (files.length <= 1) {
return [false, false, null];
}
/* Remove last line */
files.pop();
return [true, isCut, files];
}
onMotion(x, y) {
if (this.rubberBand) {
this.x1 = Math.min(x, this.rubberBandInitX);
this.x2 = Math.max(x, this.rubberBandInitX);
this.y1 = Math.min(y, this.rubberBandInitY);
this.y2 = Math.max(y, this.rubberBandInitY);
this.selectionRectangle = new Gdk.Rectangle({'x': this.x1, 'y': this.y1, 'width': this.x2 - this.x1, 'height': this.y2 - this.y1});
for (let grid of this._desktops) {
grid.queue_draw();
}
for (let item of this._fileList) {
let labelintersect = item.labelRectangle.intersect(this.selectionRectangle)[0];
let iconintersect = item.iconRectangle.intersect(this.selectionRectangle)[0];
if (labelintersect || iconintersect) {
item.setSelected();
item.touchedByRubberband = true;
} else if (item.touchedByRubberband) {
item.unsetSelected();
}
}
}
return false;
}
onReleaseButton() {
if (this.rubberBand) {
this.rubberBand = false;
this.selectionRectangle = null;
}
for (let grid of this._desktops) {
grid.queue_draw();
}
return false;
}
_startRubberband(x, y) {
this.rubberBandInitX = x;
this.rubberBandInitY = y;
this.rubberBand = true;
for (let item of this._fileList) {
item.touchedByRubberband = false;
}
}
selected(fileItem, action) {
switch (action) {
case Enums.Selection.ALONE:
if (!fileItem.isSelected) {
for (let item of this._fileList) {
if (item === fileItem) {
item.setSelected();
} else {
item.unsetSelected();
}
}
}
break;
case Enums.Selection.WITH_SHIFT:
fileItem.toggleSelected();
break;
case Enums.Selection.RIGHT_BUTTON:
if (!fileItem.isSelected) {
for (let item of this._fileList) {
if (item === fileItem) {
item.setSelected();
} else {
item.unsetSelected();
}
}
}
break;
case Enums.Selection.ENTER:
if (this.rubberBand) {
fileItem.setSelected();
}
break;
case Enums.Selection.RELEASE:
for (let item of this._fileList) {
if (item === fileItem) {
item.setSelected();
} else {
item.unsetSelected();
}
}
break;
}
}
_removeAllFilesFromGrids() {
for (let fileItem of this._fileList) {
fileItem.removeFromGrid(true);
}
this._fileList = [];
}
async _updateDesktop() {
if (this._readingDesktopFiles) {
// just notify that the files changed while being read from the disk.
this._desktopFilesChanged = true;
if (this._desktopEnumerateCancellable && !this._forceDraw) {
this._desktopEnumerateCancellable.cancel();
this._desktopEnumerateCancellable = null;
}
return;
}
this._readingDesktopFiles = true;
this._forceDraw = false;
this._lastDesktopUpdateRequest = GLib.get_monotonic_time();
let fileList = [];
/* eslint-disable no-await-in-loop */
while (true) {
this._desktopFilesChanged = false;
if (!this._desktopDir.query_exists(null)) {
fileList = [];
break;
}
fileList = await this._doReadAsync();
if (this._forcedExit) {
return;
}
if (fileList !== null) {
if (!this._desktopFilesChanged) {
break;
}
if (this._forceDraw) {
this._drawDesktop(fileList);
this._lastDesktopUpdateRequest = GLib.get_monotonic_time();
}
}
await DesktopIconsUtil.waitDelayMs(500);
if ((GLib.get_monotonic_time() - this._lastDesktopUpdateRequest) > 1000000) {
this._forceDraw = true;
} else {
this._forceDraw = false;
}
}
this._readingDesktopFiles = false;
this._forceDraw = false;
this._drawDesktop(fileList);
}
_doReadAsync() {
if (this._desktopEnumerateCancellable) {
this._desktopEnumerateCancellable.cancel();
}
this._desktopEnumerateCancellable = new Gio.Cancellable();
return new Promise((resolve, reject) => {
this._desktopDir.enumerate_children_async(
Enums.DEFAULT_ATTRIBUTES,
Gio.FileQueryInfoFlags.NONE,
GLib.PRIORITY_DEFAULT,
this._desktopEnumerateCancellable,
(source, result) => {
this._desktopEnumerateCancellable = null;
try {
let fileEnum = source.enumerate_children_finish(result);
if (this._desktopFilesChanged && !this._forceDraw) {
resolve(null);
return;
}
let fileList = [];
for (let [newFolder, extras] of DesktopIconsUtil.getExtraFolders()) {
try {
fileList.push(new FileItem.FileItem(this,
newFolder,
newFolder.query_info(Enums.DEFAULT_ATTRIBUTES, Gio.FileQueryInfoFlags.NONE, null),
extras,
null));
} catch (e) {
print(`Failed with ${e.message} while adding extra folder ${newFolder.get_uri()}\n${e.stack}`);
}
}
let info;
while ((info = fileEnum.next_file(null))) {
let fileItem = new FileItem.FileItem(this,
fileEnum.get_child(info),
info,
Enums.FileType.NONE,
null);
if (fileItem.isHidden && !this._showHidden) {
/* if there are hidden files in the desktop and the user doesn't want to
show them, remove the coordinates. This ensures that if the user enables
showing them, they won't fight with other icons for the same place
*/
if (fileItem.savedCoordinates) {
// only overwrite them if needed
fileItem.savedCoordinates = null;
}
continue;
}
fileList.push(fileItem);
if (fileItem.dropCoordinates == null) {
let basename = fileItem.file.get_basename();
if (basename in this._pendingDropFiles) {
fileItem.dropCoordinates = this._pendingDropFiles[basename];
delete this._pendingDropFiles[basename];
}
}
}
for (let [newFolder, extras, volume] of DesktopIconsUtil.getMounts(this._volumeMonitor)) {
try {
fileList.push(new FileItem.FileItem(this,
newFolder,
newFolder.query_info(Enums.DEFAULT_ATTRIBUTES, Gio.FileQueryInfoFlags.NONE, null),
extras,
volume));
} catch (e) {
print(`Failed with ${e} while adding volume ${newFolder}`);
}
}
resolve(fileList);
return;
} catch (e) {
resolve(null);
}
}
);
});
}
_drawDesktop(fileList) {
this._selectedFiles = this.getCurrentSelection(true);
if (this._renameWindow) {
// disconnect the popup from the fileItem to avoid it being
// destroyed when the fileItem is removed from the desktop
this._renameWindow.updateFileItem(null);
}
this._removeAllFilesFromGrids();
this._fileList = fileList;
// Select the files that were selected before the repaint
if (this._selectedFiles) {
for (let fileItem of fileList) {
if (this._selectedFiles.includes(fileItem.uri)) {
fileItem.setSelected();
}
}
}
if (this._renameWindow) {
// assign the popover to the new fileItem
let file = fileList.filter(f => f.fileName == this._renamingFile)[0];
if (file) {
file.setRenamePopup(this._renameWindow);
} else {
this._renameWindow.closeWindow();
}
}
this._placeAllFilesOnGrids();
this.fileItemMenu.refreshedIcons();
this._selectedFiles = null;
}
_placeAllFilesOnGrids(redisplay = false) {
this.keepStacked = Prefs.desktopSettings.get_boolean('keep-stacked');
this.keepArranged = Prefs.desktopSettings.get_boolean('keep-arranged');
this.sortSpecialFolders = Prefs.desktopSettings.get_boolean('sort-special-folders');
if (this.keepStacked) {
this.doStacks(redisplay);
} else if (this.keepArranged) {
this.doSorts();
} else {
this._addFilesToDesktop(this._fileList, Enums.StoredCoordinates.PRESERVE);
}
}
_addFilesToDesktop(fileList, storeMode) {
if (this._desktops.length == 0) {
return;
}
let outOfDesktops = [];
let notAssignedYet = [];
// First, add those icons that fit in the current desktops
for (let fileItem of fileList) {
if (fileItem.savedCoordinates == null) {
notAssignedYet.push(fileItem);
continue;
}
if (fileItem.dropCoordinates != null) {
fileItem.dropCoordinates = null;
}
let [itemX, itemY] = fileItem.savedCoordinates;
let addedToDesktop = false;
for (let desktop of this._desktops) {
if (desktop.getDistance(itemX, itemY) == 0) {
addedToDesktop = true;
desktop.addFileItemCloseTo(fileItem, itemX, itemY, storeMode);
break;
}
}
if (!addedToDesktop) {
outOfDesktops.push(fileItem);
}
}
// Now, assign those icons that are outside the current desktops,
// but have assigned coordinates
for (let fileItem of outOfDesktops) {
let minDistance = -1;
let [itemX, itemY] = fileItem.savedCoordinates;
let newDesktop = null;
for (let desktop of this._desktops) {
let distance = desktop.getDistance(itemX, itemY);
if (distance == -1) {
continue;
}
if ((minDistance == -1) || (distance < minDistance)) {
minDistance = distance;
newDesktop = desktop;
}
}
if (newDesktop == null) {
print('Not enough space to add icons');
break;
} else {
newDesktop.addFileItemCloseTo(fileItem, itemX, itemY, storeMode);
}
}
// Finally, assign those icons that still don't have coordinates
for (let fileItem of notAssignedYet) {
let x, y;
if (fileItem.dropCoordinates == null) {
if (this._primaryScreen !== null) {
x = this._primaryScreen.x;
y = this._primaryScreen.y;
} else {
x = 0;
y = 0;
}
storeMode = Enums.StoredCoordinates.ASSIGN;
} else {
[x, y] = fileItem.dropCoordinates;
fileItem.dropCoordinates = null;
storeMode = Enums.StoredCoordinates.OVERWRITE;
}
// try first in the designated desktop
let assigned = false;
for (let desktop of this._desktops) {
if (desktop.getDistance(x, y) == 0) {
desktop.addFileItemCloseTo(fileItem, x, y, storeMode);
assigned = true;
break;
}
}
if (assigned) {
continue;
}
// if there is no space in the designated desktop, try in another
for (let desktop of this._desktops) {
if (desktop.getDistance(x, y) != -1) {
desktop.addFileItemCloseTo(fileItem, x, y, storeMode);
break;
}
}
}
}
_updateWritableByOthers() {
let info = this._desktopDir.query_info(Gio.FILE_ATTRIBUTE_UNIX_MODE,
Gio.FileQueryInfoFlags.NONE,
null);
this.unixMode = info.get_attribute_uint32(Gio.FILE_ATTRIBUTE_UNIX_MODE);
let writableByOthers = (this.unixMode & Enums.S_IWOTH) != 0;
if (writableByOthers != this.writableByOthers) {
this.writableByOthers = writableByOthers;
if (this.writableByOthers) {
print('desktop-icons: Desktop is writable by others - will not allow launching any desktop files');
}
return true;
} else {
return false;
}
}
_updateDesktopIfChanged(file, otherFile, eventType) {
if (eventType == Gio.FileMonitorEvent.CHANGED) {
// use only CHANGES_DONE_HINT
return;
}
if (!this._showHidden && (file.get_basename()[0] == '.')) {
// If the file is not visible, we don't need to refresh the desktop
// Unless it is a hidden file being renamed to visible
if (!otherFile || (otherFile.get_basename()[0] == '.')) {
return;
}
}
switch (eventType) {
case Gio.FileMonitorEvent.MOVED_IN:
case Gio.FileMonitorEvent.MOVED_CREATED:
/* Remove the coordinates that could exist to avoid conflicts between
files that are already in the desktop and the new one
*/
try {
let info = new Gio.FileInfo();
info.set_attribute_string('metadata::nautilus-icon-position', '');
file.set_attributes_from_info(info, Gio.FileQueryInfoFlags.NONE, null);
} catch (e) {} // can happen if a file is created and deleted very fast
break;
case Gio.FileMonitorEvent.ATTRIBUTE_CHANGED:
/* The desktop is what changed, and not a file inside it */
if (file.get_uri() == this._desktopDir.get_uri()) {
if (this._updateWritableByOthers()) {
this._updateDesktop().catch(e => {
print(`Exception while updating Desktop from Directory Monitor Attribute Change: ${e.message}\n${e.stack}`);
});
}
return;
}
break;
}
this._updateDesktop().catch(e => {
print(`Exception while updating Desktop from Directory Monitor: ${e.message}\n${e.stack}`);
});
}
_getClipboardText() {
let selection = this.getCurrentSelection(true);
if (selection) {
return new GLib.Variant('as', selection);
} else {
return new GLib.Variant('as', []);
}
}
/*
* Due to a problem in the Clipboard API in Gtk3, it is not possible to do the CUT/COPY operation from
* dynamic languages like Javascript, because one of the methods needed is marked as NOT INTROSPECTABLE
*
* https://discourse.gnome.org/t/missing-gtk-clipboard-set-with-data-in-gtk-3/6920
*
* The right solution is to migrate DING to Gtk4, where the whole API is available, but that is a very
* big task, so in the meantime, we take advantage of the fact that the St API, in Gnome Shell, can put
* binary contents in the clipboard, so we use DBus to notify that we want to do a CUT or a COPY operation,
* passing the URIs as parameters, and delegate that to the DING Gnome Shell extension. This is easily done
* with a GLib.SimpleAction.
*/
doCopy() {
DBusUtils.extensionControl.activate_action('doCopy', this._getClipboardText());
}
doCut() {
DBusUtils.extensionControl.activate_action('doCut', this._getClipboardText());
}
doTrash() {
const selection = this._fileList.filter(i => (i.isSelected || i.isKeyboardSelected) && !i.isSpecial).map(i =>
i.file.get_uri());
if (selection.length) {
DBusUtils.RemoteFileOperations.TrashURIsRemote(selection);
}
}
doDeletePermanently() {
const toDelete = this._fileList.filter(i => (i.isSelected || i.isKeyboardSelected) && !i.isSpecial).map(i =>
i.file.get_uri());
if (!toDelete.length) {
if (this._fileList.some(i => (i.isSelected || i.isKeyboardSelected) && i.isTrash)) {
this.doEmptyTrash();
}
return;
}
DBusUtils.RemoteFileOperations.DeleteURIsRemote(toDelete);
}
doEmptyTrash(askConfirmation = true) {
DBusUtils.RemoteFileOperations.EmptyTrashRemote(askConfirmation);
}
checkIfSpecialFilesAreSelected() {
for (let item of this._fileList) {
if (item.isSelected && item.isSpecial) {
return true;
}
}
return false;
}
checkIfDirectoryIsSelected() {
for (let item of this._fileList) {
if ((item.isSelected || item.isKeyboardSelected) && item.isDirectory) {
return true;
}
}
return false;
}
getCurrentSelection(getUri) {
let listToTrash = [];
for (let fileItem of this._fileList) {
if ((fileItem.isSelected) || (fileItem.isKeyboardSelected)) {
if (getUri) {
listToTrash.push(fileItem.file.get_uri());
} else {
listToTrash.push(fileItem);
}
}
}
if (listToTrash.length != 0) {
return listToTrash;
} else {
return null;
}
}
getNumberOfSelectedItems() {
let count = 0;
for (let item of this._fileList) {
if ((item.isSelected) || (item.isKeyboardSelected)) {
count++;
}
}
return count;
}
getFileItemFromURI(uri) {
for (let item of this._fileList) {
if (uri == item.uri) {
return item;
}
}
return null;
}
doRename(fileItem, allowReturnOnSameName) {
if (!fileItem || !fileItem.canRename) {
return;
}
this.unselectAll();
if (!this._renameWindow) {
this._renamingFile = fileItem.fileName;
this._renameWindow = new AskRenamePopup.AskRenamePopup(this, fileItem, allowReturnOnSameName, () => {
this._renameWindow = null;
this.newFolderDoRename = null;
this._renamingFile = null;
});
}
}
fileExistsOnDesktop(searchName) {
const listOfFileNamesOnDesktop = this.updateFileList().map(f => f.fileName);
if (listOfFileNamesOnDesktop.includes(searchName)) {
return true;
} else {
return false;
}
}
getDesktopUniqueFileName(fileName) {
let fileParts = DesktopIconsUtil.getFileExtensionOffset(fileName);
let i = 0;
let newName = fileName;
while (this.fileExistsOnDesktop(newName)) {
i += 1;
newName = `${fileParts.basename} ${i}${fileParts.extension}`;
}
return newName;
}
doNewFolder(position = null, suggestedName = null, opts = {rename: true}) {
this.unselectAll();
if (!position) {
position = [this._clickX, this._clickY];
}
const baseName = suggestedName ? suggestedName : _('New Folder');
let newName = this.getDesktopUniqueFileName(baseName);
if (newName) {
let dir = DesktopIconsUtil.getDesktopDir().get_child(newName);
try {
dir.make_directory(null);
const info = new Gio.FileInfo();
info.set_attribute_string('metadata::nautilus-drop-position', `${position.join(',')}`);
info.set_attribute_string('metadata::nautilus-icon-position', '');
dir.set_attributes_from_info(info, Gio.FileQueryInfoFlags.NONE, null);
} catch (e) {
console.error(e, 'Failed to create folder');
const header = _('Folder Creation Failed');
const text = _('Error while trying to create a Folder');
this.dbusManager.doNotify(header, text);
if (position || suggestedName) {
return null;
}
return null;
}
if (opts.rename) {
this.newFolderDoRename = newName;
}
if (position || suggestedName) {
return dir.get_uri();
}
}
return null;
}
_newDocument(template) {
const file = Gio.File.new_for_path(template);
if ((file == null) || !file.query_exists(null)) {
return;
}
const fullName = file.get_basename();
const finalName = this.getDesktopUniqueFileName(fullName);
let destination = Gio.File.new_for_path(GLib.build_filenamev([GLib.get_user_special_dir(GLib.UserDirectory.DIRECTORY_DESKTOP), finalName]));
try {
file.copy(destination, Gio.FileCopyFlags.NONE, null, null);
const info = new Gio.FileInfo();
info.set_attribute_string('metadata::nautilus-drop-position', `${this._clickX},${this._clickY}`);
info.set_attribute_string('metadata::nautilus-icon-position', '');
destination.set_attributes_from_info(info, Gio.FileQueryInfoFlags.NONE, null);
} catch (e) {
console.error(e, `Failed to create template ${e.message}`);
const header = _('Template Creation Failed');
const text = _('Error while trying to create a Document');
this.dbusManager.doNotify(header, text);
}
}
_addSortingMenu() {
this._menu.add(new Gtk.SeparatorMenuItem());
this._cleanUpMenuItem = new Gtk.MenuItem({label: _('Arrange Icons')});
this._cleanUpMenuItem.connect('activate', () => this._sortAllFilesFromGridsByPosition());
this._menu.add(this._cleanUpMenuItem);
this._ArrangeByMenuItem = new Gtk.MenuItem({label: _('Arrange By...')});
this._menu.add(this._ArrangeByMenuItem);
this._addSortingSubMenu();
}
_addSortingSubMenu() {
this._arrangeSubMenu = new Gtk.Menu();
this._ArrangeByMenuItem.set_submenu(this._arrangeSubMenu);
this._keepArrangedMenuItem = new Gtk.CheckMenuItem({label: _('Keep Arranged...')});
Prefs.desktopSettings.bind('keep-arranged', this._keepArrangedMenuItem, 'active', 3);
this._arrangeSubMenu.add(this._keepArrangedMenuItem);
this._keepStackedMenuItem = new Gtk.CheckMenuItem({label: _('Keep Stacked by type...')});
Prefs.desktopSettings.bind('keep-stacked', this._keepStackedMenuItem, 'active', 3);
this._arrangeSubMenu.add(this._keepStackedMenuItem);
this._keepArrangedMenuItem.bind_property('active', this._cleanUpMenuItem, 'sensitive', 6);
this._sortSpecialFilesMenuItem = new Gtk.CheckMenuItem({label: _('Sort Home/Drives/Trash...')});
Prefs.desktopSettings.bind('sort-special-folders', this._sortSpecialFilesMenuItem, 'active', 3);
this._arrangeSubMenu.add(this._sortSpecialFilesMenuItem);
this._arrangeSubMenu.add(new Gtk.SeparatorMenuItem());
this._radioName = new Gtk.RadioMenuItem({label: _('Sort by Name')});
this._arrangeSubMenu.add(this._radioName);
this._radioDescName = new Gtk.RadioMenuItem({label: _('Sort by Name Descending')});
this._radioDescName.join_group(this._radioName);
this._arrangeSubMenu.add(this._radioDescName);
this._radioTimeName = new Gtk.RadioMenuItem({label: _('Sort by Modified Time')});
this._radioTimeName.join_group(this._radioName);
this._arrangeSubMenu.add(this._radioTimeName);
this._radioKindName = new Gtk.RadioMenuItem({label: _('Sort by Type')});
this._radioKindName.join_group(this._radioName);
this._arrangeSubMenu.add(this._radioKindName);
this._radioSizeName = new Gtk.RadioMenuItem({label: _('Sort by Size')});
this._radioSizeName.join_group(this._radioName);
this._arrangeSubMenu.add(this._radioSizeName);
this.doArrangeRadioButtons();
this._radioName.connect('activate', () => {
this.setIfActive(this._radioName, Enums.SortOrder.NAME);
});
this._radioDescName.connect('activate', () => {
this.setIfActive(this._radioDescName, Enums.SortOrder.DESCENDINGNAME);
});
this._radioTimeName.connect('activate', () => {
this.setIfActive(this._radioTimeName, Enums.SortOrder.MODIFIEDTIME);
});
this._radioKindName.connect('activate', () => {
this.setIfActive(this._radioKindName, Enums.SortOrder.KIND);
});
this._radioSizeName.connect('activate', () => {
this.setIfActive(this._radioSizeName, Enums.SortOrder.SIZE);
});
this._arrangeSubMenu.show_all();
}
onToggleStackUnstackThisTypeClicked(type, typeInList, unstackList) {
if (!unstackList) {
unstackList = Prefs.getUnstackList();
typeInList = unstackList.includes(type);
}
if (typeInList) {
let index = unstackList.indexOf(type);
unstackList.splice(index, 1);
} else {
unstackList.push(type);
}
Prefs.setUnstackList(unstackList);
}
doStacks(restack) {
if (restack) {
for (let fileItem of this._fileList) {
fileItem.removeFromGrid(false);
}
}
if (!this.stackInitialCoordinates && !this._allFileList) {
this._allFileList = [];
this._saveStackInitialCoordinates();
this._keepArrangedMenuItem.hide();
this._cleanUpMenuItem.hide();
restack = false;
}
this._sortAllFilesFromGridsByKindStacked(restack);
this._reassignFilesToDesktop();
}
_unstack() {
if (this.stackInitialCoordinates && this._allFileList) {
this._fileList.forEach(f => f.removeFromGrid(false));
this._restoreStackInitialCoordinates();
this._fileList = this._allFileList;
this._allFileList = null;
this._keepArrangedMenuItem.show();
this._cleanUpMenuItem.show();
if (this.keepArranged) {
this.doSorts();
} else {
this._addFilesToDesktop(this._fileList, Enums.StoredCoordinates.PRESERVE);
}
}
}
_saveStackInitialCoordinates() {
this.stackInitialCoordinates = [];
for (let fileItem of this._fileList) {
this.stackInitialCoordinates.push([fileItem.fileName, fileItem.savedCoordinates]);
}
}
_restoreStackInitialCoordinates() {
if (this.stackInitialCoordinates && this.stackInitialCoordinates.length != 0) {
this._allFileList.forEach(fileItem => {
this.stackInitialCoordinates.forEach(savedItem => {
if (savedItem[0] == fileItem.fileName) {
fileItem.savedCoordinates = savedItem[1];
}
});
});
}
this.stackInitialCoordinates = null;
}
_makeStackTopMarkerFolder(type, list) {
let stackAttribute = type.split('/')[1];
let fileItem = new stackItem.stackItem(
this,
stackAttribute,
type,
Enums.FileType.STACK_TOP
);
list.push(fileItem);
}
_sortAllFilesFromGridsByKindStacked(restack) {
/**
*
*/
function determineStackTopSizeOrTime() {
for (let item of otherFiles) {
if (item.isStackMarker) {
for (let unstackitem of stackedFiles) {
if (item.attributeContentType == unstackitem.attributeContentType) {
item.size = unstackitem.fileSize;
item.time = unstackitem.modifiedTime;
break;
}
}
}
}
}
let specialFiles = [];
let directoryFiles = [];
let validDesktopFiles = [];
let otherFiles = [];
let stackedFiles = [];
let newFileList = [];
let stackTopMarkerFolderList = [];
let unstackList = Prefs.getUnstackList();
if (this._allFileList && restack) {
this._fileList = this._allFileList;
}
this._sortByName(this._fileList);
for (let fileItem of this._fileList) {
if (fileItem.isSpecial) {
specialFiles.push(fileItem);
continue;
}
if (fileItem.isDirectory) {
directoryFiles.push(fileItem);
continue;
}
if (fileItem._isValidDesktopFile) {
validDesktopFiles.push(fileItem);
continue;
} else {
let type = fileItem.attributeContentType;
let stacked = false;
for (let item of otherFiles) {
if (type == item.attributeContentType) {
stackedFiles.push(fileItem);
stacked = true;
}
}
if (!stacked) {
fileItem.isStackTop = true;
otherFiles.push(fileItem);
}
continue;
}
}
for (let a of otherFiles) {
let instack = false;
for (let c of stackedFiles) {
if (c.attributeContentType == a.attributeContentType) {
instack = true;
break;
}
}
if (!instack) {
a.stackUnique = true;
}
continue;
}
for (let item of otherFiles) {
if (!item.stackUnique) {
this._makeStackTopMarkerFolder(item.attributeContentType, stackTopMarkerFolderList);
item.isStackTop = false;
stackedFiles.push(item);
}
if (item.stackUnique) {
stackTopMarkerFolderList.push(item);
}
item.updateIcon().catch(e => {
print(`Exception while updating an icon: ${e.message}\n${e.stack}`);
});
}
otherFiles = [];
this._sortByName(specialFiles);
this._sortByName(directoryFiles);
this._sortByName(validDesktopFiles);
this._sortByKindByName(stackedFiles);
this._sortByKindByName(stackTopMarkerFolderList);
otherFiles.push(...specialFiles);
otherFiles.push(...validDesktopFiles);
otherFiles.push(...directoryFiles);
otherFiles.push(...stackTopMarkerFolderList);
/**
*
* @param a
* @param b
*/
function bySize(a, b) {
return a.fileSize - b.fileSize;
}
/**
*
* @param a
* @param b
*/
function byTime(a, b) {
return a._modifiedTime - b._modifiedTime;
}
switch (Prefs.getSortOrder()) {
case Enums.SortOrder.NAME:
this._sortByName(otherFiles);
break;
case Enums.SortOrder.DESCENDINGNAME:
this._sortByName(otherFiles);
otherFiles.reverse();
this._sortByName(stackedFiles);
stackedFiles.reverse();
break;
case Enums.SortOrder.MODIFIEDTIME:
stackedFiles.sort(byTime);
determineStackTopSizeOrTime();
otherFiles.sort(byTime);
break;
case Enums.SortOrder.KIND:
break;
case Enums.SortOrder.SIZE:
stackedFiles.sort(bySize);
determineStackTopSizeOrTime();
otherFiles.sort(bySize);
break;
default:
break;
}
for (let item of otherFiles) {
newFileList.push(item);
let itemtype = item.attributeContentType;
for (let unstackitem of stackedFiles) {
if (unstackList.includes(unstackitem.attributeContentType) && (unstackitem.attributeContentType == itemtype)) {
newFileList.push(unstackitem);
}
}
}
if (this._allFileList) {
this._allFileList = this._fileList;
}
this._fileList = newFileList;
}
setIfActive(buttonname, choice) {
if (buttonname.get_active()) {
Prefs.setSortOrder(choice);
}
}
_sortByName(fileList) {
/**
*
* @param a
* @param b
*/
function byName(a, b) {
// sort by label name instead of the the fileName or displayName so that the "Home" folder is sorted in the correct order
// alphabetical sort taking into account accent characters & locale, natural language sort for numbers, ie 10.etc before 2.etc
// other options for locale are best fit, or by specifying directly in function below for translators
return a._label.get_text().localeCompare(b._label.get_text(), {sensitivity: 'accent', numeric: 'true', localeMatcher: 'lookup'});
}
fileList.sort(byName);
}
_sortByKindByName(fileList) {
/**
*
* @param a
* @param b
*/
function byKindByName(a, b) {
return a.attributeContentType.localeCompare(b.attributeContentType) ||
a._label.get_text().localeCompare(b._label.get_text(), {sensitivity: 'accent', numeric: 'true', localeMatcher: 'lookup'});
}
fileList.sort(byKindByName);
}
_sortAllFilesFromGridsByName(order) {
this._sortByName(this._fileList);
if (order == Enums.SortOrder.DESCENDINGNAME) {
this._fileList.reverse();
}
this._reassignFilesToDesktop();
}
_sortAllFilesFromGridsByPosition() {
if (this.keepArranged) {
return;
}
this._fileList.map(f => f.removeFromGrid(false));
let cornerInversion = Prefs.get_start_corner();
if (!cornerInversion[0] && !cornerInversion[1]) {
this._fileList.sort((a, b) => {
if (a._x1 < b._x1) {
return -1;
}
if (a._x1 > b._x1) {
return 1;
}
if (a._y1 < b._y1) {
return -1;
}
if (a._y1 > b._y1) {
return 1;
}
return 0;
});
}
if (cornerInversion[0] && cornerInversion[1]) {
this._fileList.sort((a, b) => {
if (a._x1 < b._x1) {
return 1;
}
if (a._x1 > b._x1) {
return -1;
}
if (a._y1 < b._y1) {
return 1;
}
if (a._y1 > b._y1) {
return -1;
}
return 0;
});
}
if (cornerInversion[0] && !cornerInversion[1]) {
this._fileList.sort((a, b) => {
if (a._x1 < b._x1) {
return 1;
}
if (a._x1 > b._x1) {
return -1;
}
if (a._y1 < b._y1) {
return -1;
}
if (a._y1 > b._y1) {
return 1;
}
return 0;
});
}
if (!cornerInversion[0] && cornerInversion[1]) {
this._fileList.sort((a, b) => {
if (a._x1 < b._x1) {
return -1;
}
if (a._x1 > b._x1) {
return 1;
}
if (a._y1 < b._y1) {
return 1;
}
if (a._y1 > b._y1) {
return -1;
}
return 0;
});
}
this._reassignFilesToDesktop();
}
_sortAllFilesFromGridsByModifiedTime() {
/**
*
* @param a
* @param b
*/
function byTime(a, b) {
return a._modifiedTime - b._modifiedTime;
}
this._fileList.sort(byTime);
this._reassignFilesToDesktop();
}
_sortAllFilesFromGridsBySize() {
/**
*
* @param a
* @param b
*/
function bySize(a, b) {
return a.fileSize - b.fileSize;
}
this._fileList.sort(bySize);
this._reassignFilesToDesktop();
}
_sortAllFilesFromGridsByKind() {
let specialFiles = [];
let directoryFiles = [];
let validDesktopFiles = [];
let otherFiles = [];
let newFileList = [];
for (let fileItem of this._fileList) {
if (fileItem._isSpecial) {
specialFiles.push(fileItem);
continue;
}
if (fileItem._isDirectory) {
directoryFiles.push(fileItem);
continue;
}
if (fileItem._isValidDesktopFile) {
validDesktopFiles.push(fileItem);
continue;
} else {
otherFiles.push(fileItem);
continue;
}
}
this._sortByName(specialFiles);
this._sortByName(directoryFiles);
this._sortByName(validDesktopFiles);
this._sortByKindByName(otherFiles);
newFileList.push(...specialFiles);
newFileList.push(...validDesktopFiles);
newFileList.push(...directoryFiles);
newFileList.push(...otherFiles);
if (this._fileList.length == newFileList.length) {
this._fileList = newFileList;
}
this._reassignFilesToDesktop();
}
_reassignFilesToDesktop() {
if (!this.sortSpecialFolders) {
this._reassignFilesToDesktopPreserveSpecialFiles();
return;
}
for (let fileItem of this._fileList) {
fileItem.savedCoordinates = null;
fileItem.dropCoordinates = null;
}
this._addFilesToDesktop(this._fileList, Enums.StoredCoordinates.ASSIGN);
}
_reassignFilesToDesktopPreserveSpecialFiles() {
let specialFiles = [];
let otherFiles = [];
let newFileList = [];
for (let fileItem of this._fileList) {
if (fileItem._isSpecial) {
specialFiles.push(fileItem);
continue;
}
if (!fileItem._isSpecial) {
otherFiles.push(fileItem);
fileItem.savedCoordinates = null;
fileItem.dropCoordinates = null;
continue;
}
}
newFileList.push(...specialFiles);
newFileList.push(...otherFiles);
if (this._fileList.length == newFileList.length) {
this._fileList = newFileList;
}
this._addFilesToDesktop(this._fileList, Enums.StoredCoordinates.PRESERVE);
}
doArrangeRadioButtons() {
switch (Prefs.getSortOrder()) {
case Enums.SortOrder.NAME:
this._radioName.set_active(true);
break;
case Enums.SortOrder.DESCENDINGNAME:
this._radioDescName.set_active(true);
break;
case Enums.SortOrder.MODIFIEDTIME:
this._radioTimeName.set_active(true);
break;
case Enums.SortOrder.KIND:
this._radioKindName.set_active(true);
break;
case Enums.SortOrder.SIZE:
this._radioSizeName.set_active(true);
break;
default:
this._radioName.set_active(true);
Prefs.setSortOrder(Enums.SortOrder.NAME);
break;
}
}
doSorts(cleargrids) {
if (cleargrids) {
this._fileList.map(f => f.removeFromGrid(false));
}
switch (Prefs.getSortOrder()) {
case Enums.SortOrder.NAME:
this._sortAllFilesFromGridsByName();
break;
case Enums.SortOrder.DESCENDINGNAME:
this._sortAllFilesFromGridsByName(Enums.SortOrder.DESCENDINGNAME);
break;
case Enums.SortOrder.MODIFIEDTIME:
this._sortAllFilesFromGridsByModifiedTime();
break;
case Enums.SortOrder.KIND:
this._sortAllFilesFromGridsByKind();
break;
case Enums.SortOrder.SIZE:
this._sortAllFilesFromGridsBySize();
break;
default:
this._addFilesToDesktop(this._fileList, Enums.StoredCoordinates.PRESERVE);
break;
}
}
};
desktop-icons-ng-49.0.5-c32667693d0831c29e3ab3f7bfeb675ea1531a00/app/ding.js 0000775 0000000 0000000 00000015566 15064747536 0024442 0 ustar 00root root 0000000 0000000 #!/usr/bin/env gjs
/* DING: Desktop Icons New Generation for GNOME Shell
*
* Copyright (C) 2019 Sergio Costas (rastersoft@gmail.com)
* Based on code original (C) Carlos Soriano
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, version 3 of the License.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
'use strict';
imports.gi.versions.Gtk = '3.0';
const Gtk = imports.gi.Gtk;
const Gio = imports.gi.Gio;
const GLib = imports.gi.GLib;
let desktops = [];
let lastCommand = null;
let codePath = '.';
let errorFound = false;
let asDesktop = false;
let primaryIndex = 0;
/**
*
*/
function printUsage() {
print('Desktop Icons NG');
print('Usage:');
print(' -h : show this help');
print(' -E : run as desktop (with transparent window, reading data from the extension...)');
print(' -P code path : set the path where the code is stored');
print(' -M index : index of the primary monitor');
print(' -D x:y:w:h:z:t:b:l:r:i : monitor data');
print(' x: X coordinate');
print(' y: Y coordinate');
print(' w: width in pixels');
print(' h: height in pixels');
print(' z: zoom value (must be greater than or equal to one)');
print(' t: top margin in pixels');
print(' b: bottom margin in pixels');
print(' l: left margin in pixels');
print(' r: right margin in pixels');
print(' i: monitor index (0, 1...)');
}
/**
*
* @param argv
*/
function parseCommandLine(argv) {
desktops = [];
let data;
for (let arg of argv) {
if (lastCommand == null) {
switch (arg) {
case '-h':
case '-H':
printUsage();
errorFound = true;
break;
case '-E':
// run it as a true desktop (transparent window and so on)
asDesktop = true;
break;
case '-P': // Code path
case '-D': // Desktop definition: X:Y:WIDTH:HEIGHT:ZOOM:MARGINTOP:MARGINBOTTOM:MARGINLEFT:MARGINRIGHT:MONITORINDEX
case '-M': // Primary monitor
lastCommand = arg;
break;
default:
print(`Parameter ${arg} not recognized. Aborting.`);
errorFound = true;
break;
}
continue;
}
if (errorFound) {
break;
}
switch (lastCommand) {
case '-P':
codePath = arg;
break;
case '-D':
data = arg.split(':');
if (data.length != 10) {
print('Incorrect number of parameters for -D\n');
printUsage();
errorFound = true;
break;
}
if (parseFloat(data[4]) < 1.0) {
print("Error: ZOOM value can't be less than one\n");
printUsage();
errorFound = true;
break;
}
desktops.push({
x: parseInt(data[0]),
y: parseInt(data[1]),
width: parseInt(data[2]),
height: parseInt(data[3]),
zoom: parseFloat(data[4]),
marginTop: parseInt(data[5]),
marginBottom: parseInt(data[6]),
marginLeft: parseInt(data[7]),
marginRight: parseInt(data[8]),
monitorIndex: parseInt(data[9]),
});
break;
case '-M':
primaryIndex = parseInt(arg);
break;
}
lastCommand = null;
}
if ((desktops.length == 0) && !asDesktop) {
/* if no desktop list is provided, like when launching the program in stand-alone mode,
* configure a 1280x720 desktop
*/
desktops.push({x: 0, y: 0, width: 1280, height: 720, zoom: 1, marginTop: 0, marginBottom: 0, marginLeft: 0, marginRight: 0, monitorIndex: 0});
}
for (let desktop of desktops) {
desktop.primaryMonitor = primaryIndex;
}
}
parseCommandLine(ARGV);
// this allows to import files from the current folder
imports.searchPath.unshift(codePath);
const DBusUtils = imports.dbusUtils;
const Prefs = imports.preferences;
const Gettext = imports.gettext;
const PromiseUtils = imports.promiseUtils;
PromiseUtils._promisify({keepOriginal: true}, Gio.FileEnumerator.prototype, 'close_async');
PromiseUtils._promisify({keepOriginal: true}, Gio.FileEnumerator.prototype, 'next_files_async');
PromiseUtils._promisify({keepOriginal: true}, Gio._LocalFilePrototype, 'delete_async');
PromiseUtils._promisify({keepOriginal: true}, Gio._LocalFilePrototype, 'enumerate_children_async');
PromiseUtils._promisify({keepOriginal: true}, Gio._LocalFilePrototype, 'make_directory_async');
PromiseUtils._promisify({keepOriginal: true}, Gio._LocalFilePrototype, 'query_info_async');
PromiseUtils._promisify({keepOriginal: true}, Gio._LocalFilePrototype, 'set_attributes_async');
let localePath = GLib.build_filenamev([codePath, '..', 'locale']);
if (Gio.File.new_for_path(localePath).query_exists(null)) {
Gettext.bindtextdomain('ding', localePath);
}
const DesktopManager = imports.desktopManager;
var desktopManager = null;
var dbusManager = null;
// Use different AppIDs to allow to test it from a command line while the main desktop is also running from the extension
const dingApp = new Gtk.Application({
application_id: asDesktop ? 'com.rastersoft.ding' : 'com.rastersoft.dingtest',
flags: Gio.ApplicationFlags.HANDLES_COMMAND_LINE | Gio.ApplicationFlags.REPLACE,
});
dingApp.connect('startup', () => {
Prefs.init(codePath);
dbusManager = DBusUtils.init();
});
dingApp.connect('activate', () => {
if (!desktopManager) {
desktopManager = new DesktopManager.DesktopManager(dingApp,
dbusManager,
desktops,
codePath,
asDesktop,
primaryIndex);
}
});
dingApp.connect('command-line', (app, commandLine) => {
let argv = [];
argv = commandLine.get_arguments();
parseCommandLine(argv);
if (!errorFound) {
if (commandLine.get_is_remote()) {
desktopManager.updateGridWindows(desktops);
} else {
dingApp.activate();
}
commandLine.set_exit_status(0);
} else {
commandLine.set_exit_status(1);
}
});
if (!errorFound) {
dingApp.run(ARGV);
}
if (!errorFound) {
0;
} else {
1;
}
desktop-icons-ng-49.0.5-c32667693d0831c29e3ab3f7bfeb675ea1531a00/app/enums.js 0000664 0000000 0000000 00000005511 15064747536 0024632 0 ustar 00root root 0000000 0000000 /* DING: Desktop Icons New Generation for GNOME Shell
*
* Copyright (C) 2019 Sergio Costas (rastersoft@gmail.com)
* Based on code original (C) Carlos Soriano
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, version 3 of the License.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
'use strict';
var ICON_SIZE = {'tiny': 36, 'small': 48, 'standard': 64, 'large': 96};
var ICON_WIDTH = {'tiny': 70, 'small': 90, 'standard': 120, 'large': 130};
var ICON_HEIGHT = {'tiny': 80, 'small': 90, 'standard': 106, 'large': 138};
var START_CORNER = {
'top-left': [false, false],
'top-right': [true, false],
'bottom-left': [false, true],
'bottom-right': [true, true],
};
var FileType = {
NONE: null,
USER_DIRECTORY_HOME: 'show-home',
USER_DIRECTORY_TRASH: 'show-trash',
EXTERNAL_DRIVE: 'external-drive',
STACK_TOP: 'stack-top',
};
var StoredCoordinates = {
PRESERVE: 0,
OVERWRITE: 1,
ASSIGN: 2,
};
var Selection = {
ALONE: 0,
WITH_SHIFT: 1,
RIGHT_BUTTON: 2,
ENTER: 3,
LEAVE: 4,
RELEASE: 5,
};
var DBusBus = {
SYSTEM: true,
SESSION: false,
};
/* From NautilusFileUndoManagerState */
var UndoStatus = {
NONE: 0,
UNDO: 1,
REDO: 2,
};
var FileExistOperation = {
ASK: 0,
OVERWRITE: 1,
RENAME: 2,
SKIP: 3,
};
var WhatToDoWithExecutable = {
EXECUTE: 0,
EXECUTE_IN_TERMINAL: 1,
DISPLAY: 2,
CANCEL: 3,
};
var SortOrder = {
ORDER: 'arrangeorder',
NAME: 'name',
DESCENDINGNAME: 'descendingname',
MODIFIEDTIME: 'modifiedtime',
KIND: 'kind',
SIZE: 'size',
};
var CompressionType = {
ZIP: 0,
TAR_XZ: 1,
SEVEN_ZIP: 2,
ENCRYPTED_ZIP: 3,
};
var DndTargetInfo = {
DING_ICON_LIST: 0,
GNOME_ICON_LIST: 1,
URI_LIST: 2,
TEXT_PLAIN: 3,
};
var DEFAULT_ATTRIBUTES = 'metadata::*,standard::*,access::*,time::modified,unix::mode';
var TERMINAL_SCHEMA = 'org.gnome.desktop.default-applications.terminal';
var SCHEMA_NAUTILUS = 'org.gnome.nautilus.preferences';
var SCHEMA_NAUTILUS_COMPRESSION = 'org.gnome.nautilus.compression';
var SCHEMA_GTK = 'org.gtk.Settings.FileChooser';
var SCHEMA = 'org.gnome.shell.extensions.ding';
var SCHEMA_MUTTER = 'org.gnome.mutter';
var EXEC_KEY = 'exec';
var NAUTILUS_SCRIPTS_DIR = '.local/share/nautilus/scripts';
var SCHEMA_DARK_SETTINGS = 'org.gnome.desktop.interface';
var S_IXUSR = 0o00100;
var S_IWOTH = 0o00002;
desktop-icons-ng-49.0.5-c32667693d0831c29e3ab3f7bfeb675ea1531a00/app/fileItem.js 0000664 0000000 0000000 00000100275 15064747536 0025244 0 ustar 00root root 0000000 0000000 /* DING: Desktop Icons New Generation for GNOME Shell
*
* Copyright (C) 2019 Sergio Costas (rastersoft@gmail.com)
* Based on code original (C) Carlos Soriano
* SwitcherooControl code based on code original from Marsch84
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, version 3 of the License.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
'use strict';
const Gtk = imports.gi.Gtk;
const Atk = imports.gi.Atk;
const Gdk = imports.gi.Gdk;
const Gio = imports.gi.Gio;
const GLib = imports.gi.GLib;
const DesktopIconsUtil = imports.desktopIconsUtil;
const desktopIconItem = imports.desktopIconItem;
const ShowErrorPopup = imports.showErrorPopup;
const Prefs = imports.preferences;
const Enums = imports.enums;
const DBusUtils = imports.dbusUtils;
const Signals = imports.signals;
const Gettext = imports.gettext.domain('ding');
const _ = Gettext.gettext;
var FileItem = class extends desktopIconItem.desktopIconItem {
constructor(desktopManager, file, fileInfo, fileExtra, custom) {
super(desktopManager, fileExtra);
this._fileInfo = fileInfo;
this._custom = custom;
this._isSpecial = this._fileExtra != Enums.FileType.NONE;
this._file = file;
this.isStackTop = false;
this.stackUnique = false;
this._realizeId = 0;
this._savedCoordinates = this._readCoordinatesFromAttribute(fileInfo, 'metadata::nautilus-icon-position');
this._dropCoordinates = this._readCoordinatesFromAttribute(fileInfo, 'metadata::nautilus-drop-position');
this._createIconActor();
this._setFileName(this._getVisibleName());
/* Set the metadata and update relevant UI */
this._updateMetadataFromFileInfo(fileInfo);
this.setAccessibleName();
this._updateIcon().catch(e => {
print(`Exception while updating an icon: ${e.message}\n${e.stack}`);
});
if (this._attributeCanExecute && !this._isValidDesktopFile) {
this._execLine = this.file.get_path();
} else {
this._execLine = null;
}
if (fileExtra == Enums.FileType.USER_DIRECTORY_TRASH) {
// if this icon is the trash, monitor the state of the directory to update the icon
this._trashChanged = false;
this._queryTrashInfoCancellable = null;
this._scheduleTrashRefreshId = 0;
this._monitorTrashDir = this._file.monitor_directory(Gio.FileMonitorFlags.WATCH_MOVES, null);
this.connectSignal(this._monitorTrashDir, 'changed', (obj, file, otherFile, eventType) => {
switch (eventType) {
case Gio.FileMonitorEvent.DELETED:
case Gio.FileMonitorEvent.MOVED_OUT:
case Gio.FileMonitorEvent.CREATED:
case Gio.FileMonitorEvent.MOVED_IN:
if (this._queryTrashInfoCancellable || this._scheduleTrashRefreshId) {
if (this._scheduleTrashRefreshId) {
GLib.source_remove(this._scheduleTrashRefreshId);
}
if (this._queryTrashInfoCancellable) {
this._queryTrashInfoCancellable.cancel();
this._queryTrashInfoCancellable = null;
}
this._scheduleTrashRefreshId = GLib.timeout_add(GLib.PRIORITY_DEFAULT, 200, () => {
this._refreshTrashIcon();
this._scheduleTrashRefreshId = 0;
return GLib.SOURCE_REMOVE;
});
} else {
this._refreshTrashIcon();
// after a refresh, don't allow more refreshes until 200ms after, to coalesce extra events
this._scheduleTrashRefreshId = GLib.timeout_add(GLib.PRIORITY_DEFAULT, 200, () => {
this._scheduleTrashRefreshId = 0;
return GLib.SOURCE_REMOVE;
});
}
break;
}
}, {destroyCb: () => {
this._monitorTrashDir.cancel();
}});
} else {
this._monitorTrashId = 0;
}
this._updateName();
if (this._dropCoordinates) {
this.setSelected();
}
}
setAccessibleName() {
let name = "";
switch (this._fileExtra) {
default:
if (this._isDirectory) {
/** TRANSLATORS: when using a screen reader, this is the text read when a folder is
highlighted. Example: if a folder named "things" is highlighted, it will say "things Folder" */
name = _("${VisibleName} Folder");
} else {
/** TRANSLATORS: when using a screen reader, this is the text read when a normal file is
highlighted. Example: if a file named "my_picture.jpg" is highlighted, it will say "my_picture.jpg File" */
name = _("${VisibleName} File");
}
break;
case Enums.FileType.USER_DIRECTORY_HOME:
name = _("Home");
break;
case Enums.FileType.USER_DIRECTORY_TRASH:
/** TRANSLATORS: when using a screen reader, this is the text read when the trash folder is
highlighted. */
name = _("Trash");
break;
case Enums.FileType.EXTERNAL_DRIVE:
/** TRANSLATORS: when using a screen reader, this is the text read when an external drive is
highlighted. Example: if a USB stick named "my_portable" is highlighted, it will say "my_portable Drive" */
name = _("${VisibleName} Drive");
break;
case Enums.FileType.STACK_TOP:
/** TRANSLATORS: when using a screen reader, this is the text read when a stack is
selected. Example: if a stack named "pictures" is selected, it will say "pictures Stack" */
name = _("${VisibleName} Stack");
break;
}
const accessible = this._containerAccessibility.get_accessible();
/** TRANSLATORS: the "selected" string is for screen readers. It is added at the end of the speaked sentence when the icon
is selected. */
accessible.set_name(name.replace("${VisibleName}", this._getVisibleName()) + (this._isSelected ? _(" Selected") : ""));
}
setRenamePopup(renameWindow) {
if (this._realizeId) {
this.container.disconnect(this._realizeId);
}
this._realizeId = this.container.connect_after('realize', () => {
renameWindow.updateFileItem(this);
this.container.disconnect(this._realizeId);
this._realizeId = 0;
});
}
/** *********************
* Destroyers *
***********************/
_destroy() {
if (this._queryTrashInfoCancellable) {
this._queryTrashInfoCancellable.cancel();
this._queryFileInfoCancellable = null;
}
if (this._scheduleTrashRefreshId) {
GLib.source_remove(this._scheduleTrashRefreshId);
this._scheduleTrashRefreshId = 0;
}
/* Metadata */
if (this._setMetadataTrustedCancellable) {
this._setMetadataTrustedCancellable.cancel();
this._setMetadataTrustedCancellable = null;
}
if (this._realizeId && this.container) {
this.container.disconnect(this._realizeId);
this._realizeId = 0;
}
// call super() after disconnecting everything, because it destroys
// the top widget, and that will destroy also all the other widgets.
super._destroy();
}
/** *********************
* Creators *
***********************/
_getVisibleName(useAttributes) {
if (this._fileExtra == Enums.FileType.EXTERNAL_DRIVE) {
return this._custom.get_name();
} else {
return this._fileInfo.get_display_name();
}
}
_setFileName(text) {
if (this._fileExtra == Enums.FileType.USER_DIRECTORY_HOME) {
// TRANSLATORS: "Home" is the text that will be shown in the user's personal folder
text = _('Home');
}
this._setLabelName(text);
}
_readCoordinatesFromAttribute(fileInfo, attribute) {
let savedCoordinates = fileInfo.get_attribute_as_string(attribute);
if ((savedCoordinates != null) && (savedCoordinates != '')) {
savedCoordinates = savedCoordinates.split(',');
if (savedCoordinates.length >= 2) {
if (!isNaN(savedCoordinates[0]) && !isNaN(savedCoordinates[1])) {
return [Number(savedCoordinates[0]), Number(savedCoordinates[1])];
}
}
}
return null;
}
_doLabelSizeAllocated() {
super._doLabelSizeAllocated();
this._checkForRename();
}
_checkForRename() {
if (this._desktopManager.newFolderDoRename) {
if (this._desktopManager.newFolderDoRename == this.fileName) {
this._desktopManager.doRename(this, true);
}
}
}
_refreshMetadataAsync(rebuild) {
if (this._destroyed) {
return;
}
if (this._queryFileInfoCancellable) {
this._queryFileInfoCancellable.cancel();
}
this._queryFileInfoCancellable = new Gio.Cancellable();
this._file.query_info_async(Enums.DEFAULT_ATTRIBUTES,
Gio.FileQueryInfoFlags.NONE,
GLib.PRIORITY_DEFAULT,
this._queryFileInfoCancellable,
(source, result) => {
try {
this._queryFileInfoCancellable = null;
let newFileInfo = source.query_info_finish(result);
this._updateMetadataFromFileInfo(newFileInfo);
newFileInfo = undefined;
if (rebuild) {
this._updateIcon().catch(e => {
print(`Exception while updating the icon after a metadata update: ${e.message}\n${e.stack}`);
});
}
this._updateName();
} catch (error) {
if (!error.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.CANCELLED)) {
print(`Error getting the file info: ${error}`);
}
}
}
);
}
_updateMetadataFromFileInfo(fileInfo) {
this._fileInfo = fileInfo;
let oldLabelText = this._currentFileName;
this._displayName = this._getVisibleName();
this._attributeCanExecute = fileInfo.get_attribute_boolean('access::can-execute');
this._unixmode = fileInfo.get_attribute_uint32('unix::mode');
this._writableByOthers = (this._unixmode & Enums.S_IWOTH) != 0;
this._trusted = fileInfo.get_attribute_as_string('metadata::trusted') == 'true';
this._attributeContentType = fileInfo.get_content_type();
this._isDesktopFile = this._attributeContentType == 'application/x-desktop';
if (this._isDesktopFile && this._writableByOthers) {
console.log(`desktop-icons: File ${this._displayName} is writable by others - will not allow launching`);
}
if (this._isDesktopFile) {
try {
this._desktopFile = Gio.DesktopAppInfo.new_from_filename(this._file.get_path());
if (!this._desktopFile) {
console.log(`Couldn’t parse ${this._displayName} as a desktop file, will treat it as a regular file.`);
this._isValidDesktopFile = false;
} else {
this._isValidDesktopFile = true;
}
} catch (e) {
let title = _("Error while reading Desktop file");
let error = `${this.uri}: ${e}`;
this._logAndPopupError(title, error, `${title}: ${error}`);
}
} else {
this._isValidDesktopFile = false;
}
if (this.displayName != oldLabelText) {
this._setFileName(this.displayName);
}
this._fileType = fileInfo.get_file_type();
this._isDirectory = this._fileType == Gio.FileType.DIRECTORY;
this._isSpecial = this._fileExtra != Enums.FileType.NONE;
if (this._fileExtra == Enums.FileType.USER_DIRECTORY_TRASH) {
this._isHidden = false;
this._isSymlink = false;
} else {
this._isHidden = fileInfo.get_is_hidden() | fileInfo.get_is_backup();
this._isSymlink = fileInfo.get_is_symlink();
}
this._modifiedTime = fileInfo.get_attribute_uint64('time::modified');
/*
* This is a glib trick to detect broken symlinks. If a file is a symlink, the filetype
* points to the final file, unless it is broken; thus if the file type is SYMBOLIC_LINK,
* it must be a broken link.
* https://developer.gnome.org/gio/stable/GFile.html#g-file-query-info
*/
this._isBrokenSymlink = this._isSymlink && this._fileType == Gio.FileType.SYMBOLIC_LINK;
}
_logAndPopupError(title, error, logError) {
log(`Error: ${logError}`);
this._showerrorpopup(title, error);
}
_doOpenContext(context, fileList) {
if (!fileList) {
fileList = [];
}
if (this._isBrokenSymlink) {
let title = _('Broken Link');
let error = _('Can not open this File because it is a Broken Symlink');
let logError = `Error: Can’t open ${this.file.get_uri()} because it is a broken symlink.`;
this._logAndPopupError(title, error, logError);
return;
}
if (this._isDesktopFile) {
this._launchDesktopFile(context, fileList);
return;
}
if (this._isDirectory && this._desktopManager.useNemo) {
try {
DesktopIconsUtil.trySpawn(GLib.get_home_dir(), ['nemo', this.file.get_uri()], DesktopIconsUtil.getFilteredEnviron());
return;
} catch (err) {
console.log(`Couldn't launch Nemo: ${err.message}\n${err}`);
}
}
if (!DBusUtils.GnomeArchiveManager.isAvailable &&
this._fileType === Gio.FileType.REGULAR &&
this._desktopManager.autoAr.fileIsCompressed(this.fileName)) {
this._desktopManager.autoAr.extractFile(this.fileName);
return;
}
Gio.AppInfo.launch_default_for_uri_async(this.file.get_uri(),
null, null,
(source, result) => {
try {
Gio.AppInfo.launch_default_for_uri_finish(result);
} catch (e) {
let title = _("Can't open the file");
let error = `${e.message}`;
let logError = `while opening file ${this.file.get_uri()}: ${e.message}`;
this._logAndPopupError(title, error, logError);
}
}
);
}
_showerrorpopup(title, error) {
new ShowErrorPopup.ShowErrorPopup(
title,
error,
true
);
}
_launchDesktopFile(context, fileList) {
if (this.trustedDesktopFile) {
this._desktopFile.launch_uris_as_manager(fileList, context, GLib.SpawnFlags.SEARCH_PATH, null, null);
return;
}
let error;
if (!this._isValidDesktopFile) {
let title = _('Broken Desktop File');
let error = _('This .desktop file has errors or points to a program without permissions. It can not be executed.\n\n\tEdit the file to set the correct executable Program.');
this._showerrorpopup(title, error);
return;
}
if (this._writableByOthers || !this._attributeCanExecute) {
let title = _('Invalid Permissions on Desktop File');
let error = _('This .desktop File has incorrect Permissions. Right Click to edit Properties, then:\n');
if (this._writableByOthers) {
error += _('\nSet Permissions, in "Others Access", "Read Only" or "None"');
}
if (!this._attributeCanExecute) {
error += _('\nEnable option, "Allow Executing File as a Program"');
}
this._showerrorpopup(title, error);
return;
}
if (!this.trustedDesktopFile) {
let title = 'Untrusted Desktop File';
let error = _('This .desktop file is not trusted, it can not be launched. To enable launching, right-click, then:\n\nEnable "Allow Launching"');
this._showerrorpopup(title, error);
}
}
_updateName() {
if (this._isValidDesktopFile && !this._desktopManager.writableByOthers && !this._writableByOthers && this.trustedDesktopFile) {
this._setFileName(this._desktopFile.get_locale_string('Name'));
} else {
this._setFileName(this._getVisibleName());
}
}
/** *********************
* Button Clicks *
***********************/
_doButtonOnePressed(event, shiftPressed, controlPressed) {
super._doButtonOnePressed(event, shiftPressed, controlPressed);
if (this.getClickCount() == 2 && !Prefs.CLICK_POLICY_SINGLE) {
this.doOpen();
}
}
_doButtonOneReleased(event) {
// primaryButtonPressed is TRUE only if the user has pressed the button
// over an icon, and if (s)he has not started a drag&drop operation
if (this._primaryButtonPressed) {
this._primaryButtonPressed = false;
let shiftPressed = !!(event.get_state()[1] & Gdk.ModifierType.SHIFT_MASK);
let controlPressed = !!(event.get_state()[1] & Gdk.ModifierType.CONTROL_MASK);
if (!shiftPressed && !controlPressed) {
this._desktopManager.selected(this, Enums.Selection.RELEASE);
if (Prefs.CLICK_POLICY_SINGLE) {
this.doOpen();
}
}
}
}
/** *********************
* Drag and Drop *
***********************/
_setDropDestination(dropDestination) {
dropDestination.drag_dest_set(Gtk.DestDefaults.MOTION | Gtk.DestDefaults.DROP, null,
Gdk.DragAction.MOVE | Gdk.DragAction.COPY | Gdk.DragAction.DEFAULT);
if ((this._fileExtra == Enums.FileType.USER_DIRECTORY_TRASH) ||
(this._fileExtra == Enums.FileType.USER_DIRECTORY_HOME) ||
(this._fileExtra != Enums.FileType.EXTERNAL_DRIVE) ||
this._isDirectory) {
let targets = new Gtk.TargetList(null);
targets.add(Gdk.atom_intern('x-special/gnome-icon-list', false), 0, 1);
targets.add(Gdk.atom_intern('text/uri-list', false), 0, 2);
dropDestination.drag_dest_set_target_list(targets);
targets = undefined;
this.connectSignal(dropDestination, 'drag-data-received', (widget, context, x, y, selection, info, time) => {
const forceCopy = context.get_selected_action() === Gdk.DragAction.COPY;
if (info === Enums.DndTargetInfo.GNOME_ICON_LIST ||
info === Enums.DndTargetInfo.URI_LIST) {
let fileList = DesktopIconsUtil.getFilesFromNautilusDnD(selection, info);
if (fileList.length != 0) {
if (this._hasToRouteDragToGrid()) {
this._grid.receiveDrop(context, this._x1 + x, this._y1 + y, selection, info, true, forceCopy);
return;
}
if (this._desktopManager.dragItem && ((this._desktopManager.dragItem.uri == this._file.get_uri()) || !(this._isValidDesktopFile || this.isDirectory))) {
// Dragging a file/folder over itself or over another file will do nothing, allow drag to directory or validdesktop file
Gtk.drag_finish(context, false, false, time);
return;
}
if (this._isValidDesktopFile) {
// open the desktopfile with these dropped files as the arguments
this.doOpen(fileList);
Gtk.drag_finish(context, true, false, time);
return;
}
if (this._fileExtra != Enums.FileType.USER_DIRECTORY_TRASH) {
let data = Gio.File.new_for_uri(fileList[0]).query_info('id::filesystem', Gio.FileQueryInfoFlags.NONE, null);
let idFS = data.get_attribute_string('id::filesystem');
if ((this._desktopManager.desktopFsId == idFS) && !forceCopy) {
DBusUtils.RemoteFileOperations.MoveURIsRemote(fileList, this._file.get_uri());
Gtk.drag_finish(context, true, true, time);
} else {
DBusUtils.RemoteFileOperations.CopyURIsRemote(fileList, this._file.get_uri());
Gtk.drag_finish(context, true, false, time);
}
} else {
DBusUtils.RemoteFileOperations.TrashURIsRemote(fileList);
Gtk.drag_finish(context, true, true, time);
}
}
} else {
Gtk.drag_finish(context, false, false, time);
}
});
}
}
_hasToRouteDragToGrid() {
return this._isSelected && (this._desktopManager.dragItem !== null) && (this._desktopManager.dragItem.uri !== this._file.get_uri());
}
/** *********************
* Icon Rendering *
***********************/
_refreshTrashIcon() {
if (this._queryTrashInfoCancellable) {
this._queryTrashInfoCancellable.cancel();
this._queryTrashInfoCancellable = null;
}
if (!this._file.query_exists(null)) {
return false;
}
this._queryTrashInfoCancellable = new Gio.Cancellable();
this._file.query_info_async(Enums.DEFAULT_ATTRIBUTES,
Gio.FileQueryInfoFlags.NONE,
GLib.PRIORITY_DEFAULT,
this._queryTrashInfoCancellable,
(source, result) => {
try {
this._queryTrashInfoCancellable = null;
this._fileInfo = source.query_info_finish(result);
this._updateIcon().catch(e => {
print(`Exception while updating the trash icon: ${e.message}\n${e.stack}`);
});
} catch (error) {
if (!error.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.CANCELLED)) {
print(`Error getting the number of files in the trash: ${error.message}\n${error.stack}`);
}
}
});
return false;
}
/** *********************
* Class Methods *
***********************/
onAttributeChanged() {
if (this._destroyed) {
return;
}
if (this._isDesktopFile) {
this._refreshMetadataAsync(true);
}
}
updatedMetadata() {
this._refreshMetadataAsync(true);
}
onFileRenamed(file) {
this._file = file;
this._refreshMetadataAsync(false);
}
eject() {
if (this._custom) {
this._custom.eject_with_operation(Gio.MountUnmountFlags.NONE, null, null, (obj, res) => {
obj.eject_with_operation_finish(res);
});
}
}
unmount() {
if (this._custom) {
this._custom.unmount_with_operation(Gio.MountUnmountFlags.NONE, null, null, (obj, res) => {
obj.unmount_with_operation_finish(res);
});
}
}
doOpen(fileList) {
if (!fileList) {
fileList = [];
}
this._doOpenContext(null, fileList);
}
onAllowDisallowLaunchingClicked() {
this.metadataTrusted = !this.trustedDesktopFile;
/*
* we're marking as trusted, make the file executable too. Note that we
* do not ever remove the executable bit, since we don't know who set
* it.
*/
if (this.metadataTrusted && !this._attributeCanExecute) {
let info = new Gio.FileInfo();
let newUnixMode = this._unixmode | Enums.S_IXUSR;
info.set_attribute_uint32(Gio.FILE_ATTRIBUTE_UNIX_MODE, newUnixMode);
this._file.set_attributes_async(info,
Gio.FileQueryInfoFlags.NONE,
GLib.PRIORITY_LOW,
null,
(source, result) => {
try {
source.set_attributes_finish(result);
} catch (error) {
let title = _('Failed to set execution flag');
let err = error.message;
let logError = `${title}: ${err}`;
this._logAndPopupError(title, err, logError);
}
});
}
this._updateName();
}
doDiscreteGpu() {
if (!DBusUtils.discreteGpuAvailable) {
let title = _('Could not apply discrete GPU environment');
let error = 'switcheroo-control not available';
this._logAndPopupError(title, error, `${title}: ${error}`);
return;
}
let gpus = DBusUtils.SwitcherooControl.proxy.GPUs;
if (!gpus) {
let title = _('Could not apply discrete GPU environment');
let error = 'No GPUs in list.';
this._logAndPopupError(title, error, `${title}: ${error}`);
return;
}
for (let gpu in gpus) {
if (!gpus[gpu]) {
continue;
}
let default_variant = gpus[gpu]['Default'];
if (!default_variant || default_variant.get_boolean()) {
continue;
}
let env = gpus[gpu]['Environment'];
if (!env) {
continue;
}
let envS = env.get_strv();
let context = new Gio.AppLaunchContext();
for (let i = 0; i < envS.length; i += 2) {
context.setenv(envS[i], envS[i + 1]);
}
this._doOpenContext(context, null);
return;
}
let title = _('Could not find discrete GPU data');
let error = 'Could not find discrete GPU data in switcheroo-control';
this._logAndPopupError(title, error, error);
}
_onOpenTerminalClicked() {
DesktopIconsUtil.launchTerminal(this.file.get_path(), null);
}
/** *********************
* Getters and setters *
***********************/
get attributeContentType() {
return this._attributeContentType;
}
get attributeCanExecute() {
return this._attributeCanExecute;
}
get canEject() {
if (this._custom) {
return this._custom.can_eject();
} else {
return false;
}
}
get canRename() {
return !this.trustedDesktopFile && (this._fileExtra == Enums.FileType.NONE);
}
get canUnmount() {
if (this._custom) {
return this._custom.can_unmount();
} else {
return false;
}
}
get displayName() {
if (this.trustedDesktopFile) {
return this._desktopFile.get_name();
}
return this._displayName || null;
}
get dropCoordinates() {
return this._dropCoordinates;
}
set dropCoordinates(pos) {
try {
let info = new Gio.FileInfo();
if (pos != null) {
this._dropCoordinates = [pos[0], pos[1]];
info.set_attribute_string('metadata::nautilus-drop-position', `${pos[0]},${pos[1]}`);
} else {
this._dropCoordinates = null;
info.set_attribute_string('metadata::nautilus-drop-position', '');
}
this.file.set_attributes_from_info(info, Gio.FileQueryInfoFlags.NONE, null);
} catch (e) {
print(`Failed to store the desktop coordinates for ${this.uri}: ${e}`);
}
}
get execLine() {
return this._execLine;
}
get file() {
return this._file;
}
get fileName() {
return this._fileInfo.get_name();
}
get fileSize() {
return this._fileInfo.get_size();
}
get isAllSelectable() {
return this._fileExtra == Enums.FileType.NONE;
}
get isDirectory() {
return this._isDirectory;
}
get isHidden() {
return this._isHidden;
}
get isTrash() {
return this._fileExtra === Enums.FileType.USER_DIRECTORY_TRASH;
}
get metadataTrusted() {
return this._trusted;
}
set metadataTrusted(value) {
this._trusted = value;
if (this._setMetadataTrustedCancellable) {
this._setMetadataTrustedCancellable.cancel();
}
this._setMetadataTrustedCancellable = new Gio.Cancellable();
let info = new Gio.FileInfo();
info.set_attribute_string('metadata::trusted',
value ? 'true' : 'false');
this._file.set_attributes_async(info,
Gio.FileQueryInfoFlags.NONE,
GLib.PRIORITY_LOW,
this._setMetadataTrustedCancellable,
(source, result) => {
try {
this._setMetadataTrustedCancellable = null;
source.set_attributes_finish(result);
this._refreshMetadataAsync(true);
} catch (error) {
if (!error.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.CANCELLED)) {
let title = _('Failed to set metadata::trusted flag');
let err = error.message;
let logError = `${title}: ${err}`;
this._logAndPopupError(title, err, logError);
}
}
});
}
get modifiedTime() {
return this._modifiedTime;
}
get path() {
return this._file.get_path();
}
get savedCoordinates() {
return this._savedCoordinates;
}
set savedCoordinates(pos) {
try {
let info = new Gio.FileInfo();
if (pos != null) {
this._savedCoordinates = [pos[0], pos[1]];
info.set_attribute_string('metadata::nautilus-icon-position', `${pos[0]},${pos[1]}`);
} else {
this._savedCoordinates = null;
info.set_attribute_string('metadata::nautilus-icon-position', '');
}
this.file.set_attributes_from_info(info, Gio.FileQueryInfoFlags.NONE, null);
} catch (e) {
print(`Failed to store the desktop coordinates for ${this.uri}: ${e}`);
}
}
get trustedDesktopFile() {
return this._isValidDesktopFile &&
this._attributeCanExecute &&
this.metadataTrusted &&
!this._desktopManager.writableByOthers &&
!this._writableByOthers;
}
get uri() {
return this._file.get_uri();
}
get isValidDesktopFile() {
return this._isValidDesktopFile;
}
get writableByOthers() {
return this._writableByOthers;
}
get isStackMarker() {
if (this.isStackTop && !this.stackUnique) {
return true;
} else {
return false;
}
}
};
Signals.addSignalMethods(FileItem.prototype);
desktop-icons-ng-49.0.5-c32667693d0831c29e3ab3f7bfeb675ea1531a00/app/fileItemMenu.js 0000664 0000000 0000000 00000051671 15064747536 0026076 0 ustar 00root root 0000000 0000000 /* DING: Desktop Icons New Generation for GNOME Shell
*
* Copyright (C) 2021 Sergio Costas (rastersoft@gmail.com)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, version 3 of the License.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
'use strict';
const DBusUtils = imports.dbusUtils;
const GLib = imports.gi.GLib;
const Gdk = imports.gi.Gdk;
const Gtk = imports.gi.Gtk;
const Gio = imports.gi.Gio;
const TemplatesScriptsManager = imports.templatesScriptsManager;
const DesktopIconsUtil = imports.desktopIconsUtil;
const Prefs = imports.preferences;
const ShowErrorPopup = imports.showErrorPopup;
const SignalManager = imports.signalManager;
const Gettext = imports.gettext.domain('ding');
const _ = Gettext.gettext;
var FileItemMenu = class {
constructor(desktopManager) {
this._currentFileItem = null;
this._menu = null;
this._menuSignals = new SignalManager.SignalManager();
this._desktopManager = desktopManager;
DBusUtils.GnomeArchiveManager.connect('changed-status', () => {
// wait a second to ensure that everything has settled
GLib.timeout_add(GLib.PRIORITY_DEFAULT, 1000, () => {
this._getExtractionSupportedTypes();
return false;
});
});
this._askedSupportedTypes = false;
this._scriptsMonitor = new TemplatesScriptsManager.TemplatesScriptsManager(
DesktopIconsUtil.getScriptsDir(),
TemplatesScriptsManager.TemplatesScriptsManagerFlags.ONLY_EXECUTABLE,
this._onScriptClicked.bind(this));
}
_getExtractionSupportedTypes() {
this._decompressibleTypes = [];
try {
if (DBusUtils.GnomeArchiveManager.isAvailable) {
DBusUtils.GnomeArchiveManager.proxy.GetSupportedTypesRemote('extract',
(result, error) => {
if (error) {
console.error(error, "Can't get the extractable types; ensure that File-Roller is installed.\n");
return;
}
for (let key of result.values()) {
for (let type of key.values()) {
this._decompressibleTypes.push(Object.values(type)[0]);
}
}
}
);
}
this._askedSupportedTypes = true;
} catch (e) {
console.error(e, 'Error while getting supported types.');
}
}
_onScriptClicked(menuItemPath) {
let pathList = 'NAUTILUS_SCRIPT_SELECTED_FILE_PATHS=';
let uriList = 'NAUTILUS_SCRIPT_SELECTED_URIS=';
let currentUri = `NAUTILUS_SCRIPT_CURRENT_URI=${DesktopIconsUtil.getDesktopDir().get_uri()}`;
let params = [menuItemPath];
for (let item of this._desktopManager.getCurrentSelection(false)) {
if (!item.isSpecial) {
pathList += `${item.file.get_path()}\n`;
uriList += `${item.file.get_uri()}\n`;
params.push(item.file.get_path());
}
}
let environ = DesktopIconsUtil.getFilteredEnviron();
environ.push(pathList);
environ.push(uriList);
environ.push(currentUri);
DesktopIconsUtil.trySpawn(null, params, environ);
}
refreshedIcons() {
if (!this._menu) {
return;
}
this._currentFileItem = this._desktopManager.getFileItemFromURI(this._currentFileItem.uri);
if (!this._currentFileItem) {
this._menuSignals.disconnectAllSignals();
this._menu.destroy();
this._menu = null;
}
}
_addSeparator() {
this._menu.add(new Gtk.SeparatorMenuItem());
}
_addElementToMenu(label, action = null) {
let element = new Gtk.MenuItem({label});
this._menu.add(element);
if (action) {
this._menuSignals.connectSignal(element, 'activate', action);
}
return element;
}
showMenu(fileItem, event, atWidget = false) {
if (!this._askedSupportedTypes) {
this._getExtractionSupportedTypes();
}
this._currentFileItem = fileItem;
let selectedItemsNum = this._desktopManager.getNumberOfSelectedItems();
if (this._menu) {
this._menuSignals.disconnectAllSignals();
this._menu.destroy();
}
this._menu = new Gtk.Menu();
const menuStyleContext = this._menu.get_style_context();
menuStyleContext.add_class('desktopmenu');
menuStyleContext.add_class('fileitemmenu');
if (!fileItem.isStackMarker) {
this._addElementToMenu(
selectedItemsNum > 1 ? _('Open All...') : _('Open'),
this._doMultiOpen.bind(this)
);
}
this._menuSignals.connectSignal(this._menu, 'selection-done', () => {
this._menuSignals.disconnectAllSignals();
this._menu.destroy();
this._menu = null;
}, {after: true});
let keepStacked = Prefs.desktopSettings.get_boolean('keep-stacked');
if (keepStacked && !fileItem.stackUnique) {
if (!fileItem.isSpecial && !fileItem.isDirectory && !fileItem.isValidDesktopFile) {
let unstackList = Prefs.getUnstackList();
let typeInList = unstackList.includes(fileItem.attributeContentType);
this._addElementToMenu(
typeInList ? _('Stack This Type') : _('Unstack This Type'),
() => {
this._desktopManager.onToggleStackUnstackThisTypeClicked(this._currentFileItem.attributeContentType, typeInList, unstackList);
}
);
}
}
// fileExtra == NONE
if (fileItem.isAllSelectable && !fileItem.isStackMarker) {
let submenu = this._scriptsMonitor.createMenu();
if (submenu !== null) {
this._addElementToMenu(_('Scripts')).set_submenu(submenu);
this._addSeparator();
}
this._addElementToMenu(
selectedItemsNum > 1 ? _('Open All With Other Application...') : _('Open With Other Application'),
this._doOpenWith.bind(this)
).set_sensitive(selectedItemsNum > 0);
if (DBusUtils.discreteGpuAvailable && fileItem.trustedDesktopFile && (selectedItemsNum == 1)) {
this._addElementToMenu(
_('Launch using Dedicated Graphics Card'),
() => {
this._currentFileItem.doDiscreteGpu();
}
);
}
this._addSeparator();
if (fileItem.attributeCanExecute && !fileItem.isDirectory && !fileItem.isValidDesktopFile && fileItem.execLine && Gio.content_type_can_be_executable(fileItem.attributeContentType)) {
let execLine = fileItem.execLine;
this._addElementToMenu(_('Run as a program'), () => {
DesktopIconsUtil.spawnCommandLine(`"${execLine}"`);
});
this._addSeparator();
}
let allowCutCopyTrash = this._desktopManager.checkIfSpecialFilesAreSelected();
this._addElementToMenu(
_('Cut'),
() => {
this._desktopManager.doCut();
}
).set_sensitive(!allowCutCopyTrash);
this._addElementToMenu(
_('Copy'),
() => {
this._desktopManager.doCopy();
}
).set_sensitive(!allowCutCopyTrash);
if (fileItem.canRename && (selectedItemsNum == 1)) {
this._addElementToMenu(
_('Rename…'),
() => {
this._desktopManager.doRename(this._currentFileItem, false);
}
);
}
this._addSeparator();
this._addElementToMenu(
_('Move to Trash'),
() => {
this._desktopManager.doTrash();
}
).set_sensitive(!allowCutCopyTrash);
if (Prefs.nautilusSettings.get_boolean('show-delete-permanently')) {
this._addElementToMenu(
_('Delete permanently'),
() => {
this._desktopManager.doDeletePermanently();
}
).set_sensitive(!allowCutCopyTrash);
}
if (fileItem.isValidDesktopFile && !this._desktopManager.writableByOthers && !fileItem.writableByOthers && (selectedItemsNum == 1)) {
this._addSeparator();
this._addElementToMenu(
fileItem.trustedDesktopFile ? _("Don't Allow Launching") : _('Allow Launching'),
() => {
this._currentFileItem.onAllowDisallowLaunchingClicked();
}
);
}
}
// fileExtra == TRASH
if (fileItem.isTrash) {
this._addSeparator();
this._addElementToMenu(
_('Empty Trash'),
() => {
this._desktopManager.doEmptyTrash();
}
);
}
// fileExtra == EXTERNAL_DRIVE
if (fileItem.isDrive) {
this._addSeparator();
if (fileItem.canEject) {
this._addElementToMenu(
_('Eject'),
() => {
this._currentFileItem.eject();
}
);
}
if (fileItem.canUnmount) {
this._addElementToMenu(
_('Unmount'),
() => {
this._currentFileItem.unmount();
}
);
}
}
if (fileItem.isAllSelectable && !this._desktopManager.checkIfSpecialFilesAreSelected() && (selectedItemsNum >= 1)) {
this._addSeparator();
let addedExtractHere = false;
if (this._getExtractableAutoAr()) {
addedExtractHere = true;
this._addElementToMenu(
_('Extract Here'),
() => this._desktopManager.getCurrentSelection(false).forEach(f =>
this._desktopManager.autoAr.extractFile(f.fileName)));
}
if (selectedItemsNum == 1 && this._getExtractable()) {
if (!addedExtractHere) {
this._addElementToMenu(
_('Extract Here'),
() => {
this._extractFileFromSelection(true);
}
);
}
this._addElementToMenu(
_('Extract To...'),
() => {
this._extractFileFromSelection(false);
}
);
}
if (!fileItem.isDirectory) {
this._addElementToMenu(
_('Send to...'),
this._mailFilesFromSelection.bind(this)
);
}
if (this._desktopManager.getCurrentSelection().every(f => f.isDirectory)) {
this._addElementToMenu(
Gettext.ngettext(
'Compress {0} folder', 'Compress {0} folders', selectedItemsNum).replace(
'{0}', selectedItemsNum),
() => this._doCompressFilesFromSelection()
);
} else {
this._addElementToMenu(
Gettext.ngettext(
'Compress {0} file', 'Compress {0} files', selectedItemsNum).replace(
'{0}', selectedItemsNum),
() => this._doCompressFilesFromSelection()
);
}
this._addElementToMenu(
Gettext.ngettext('New Folder with {0} item', 'New Folder with {0} items', selectedItemsNum).replace('{0}', selectedItemsNum),
() => {
this._doNewFolderFromSelection(this._currentFileItem);
}
);
this._addSeparator();
}
if (!fileItem.isStackMarker) {
this._addElementToMenu(
selectedItemsNum > 1 ? _('Common Properties') : _('Properties'),
this._onPropertiesClicked.bind(this)
);
this._addSeparator();
this._addElementToMenu(
selectedItemsNum > 1 ? _('Show All in Files') : _('Show in Files'),
this._onShowInFilesClicked.bind(this)
);
}
if (fileItem.isDirectory && (fileItem.path != null) && (selectedItemsNum == 1)) {
this._addElementToMenu(
_('Open in Terminal'),
() => {
DesktopIconsUtil.launchTerminal(this._currentFileItem.path, null);
}
);
}
this._menu.show_all();
if (atWidget) {
this._menu.popup_at_widget(fileItem.container, Gdk.Gravity.CENTER, Gdk.Gravity.NORTH_WEST, event);
} else {
this._menu.popup_at_pointer(event);
}
}
_onPropertiesClicked() {
let propertiesFileList = this._desktopManager.getCurrentSelection(true);
const timestamp = Gtk.get_current_event_time();
DBusUtils.RemoteFileOperations.ShowItemPropertiesRemote(propertiesFileList, timestamp);
}
_onShowInFilesClicked() {
let showInFilesList = this._desktopManager.getCurrentSelection(true);
if (this._desktopManager.useNemo) {
try {
for (let element of showInFilesList) {
DesktopIconsUtil.trySpawn(GLib.get_home_dir(), ['nemo', element], DesktopIconsUtil.getFilteredEnviron());
}
return;
} catch (err) {
console.error(err, 'Error trying to launch Nemo.');
}
}
const timestamp = Gtk.get_current_event_time();
DBusUtils.RemoteFileOperations.ShowItemsRemote(showInFilesList, timestamp);
}
_doMultiOpen() {
for (let fileItem of this._desktopManager.getCurrentSelection(false)) {
fileItem.unsetSelected();
fileItem.doOpen();
}
}
_doOpenWith() {
let fileItems = this._desktopManager.getCurrentSelection(false);
if (fileItems) {
const context = Gdk.Display.get_default().get_app_launch_context();
context.set_timestamp(Gtk.get_current_event_time());
let mimetype = Gio.content_type_guess(fileItems[0].fileName, null)[0];
if (fileItems[0].isDirectory) {
mimetype = 'inode/directory';
}
let chooser = Gtk.AppChooserDialog.new_for_content_type(null,
Gtk.DialogFlags.MODAL + Gtk.DialogFlags.USE_HEADER_BAR,
mimetype);
let signals = new SignalManager.SignalManager();
chooser.show_all();
signals.connectSignal(chooser, 'close', () => {
chooser.response(Gtk.ResponseType.CANCEL);
});
signals.connectSignal(chooser, 'response', (actor, retval) => {
if (retval == Gtk.ResponseType.OK) {
let appInfo = chooser.get_app_info();
if (appInfo) {
let fileList = [];
for (let item of fileItems) {
fileList.push(item.file);
}
appInfo.launch(fileList, context);
}
}
chooser.hide();
signals.disconnectAllSignals();
chooser = null;
signals = null;
});
}
}
_extractFileFromSelection(extractHere) {
let extractFileItemURI;
let extractFolderName;
let position;
const header = _('No Extraction Folder');
const text = _('Unable to extract File, extraction Folder Does not Exist');
for (let fileItem of this._desktopManager.getCurrentSelection(false)) {
extractFileItemURI = fileItem.file.get_uri();
extractFolderName = fileItem.fileName;
position = fileItem.getCoordinates().slice(0, 2);
fileItem.unsetSelected();
}
if (extractHere) {
extractFolderName = DesktopIconsUtil.getFileExtensionOffset(extractFolderName).basename;
const targetURI = this._desktopManager.doNewFolder(position, extractFolderName, {rename: false});
if (targetURI) {
DBusUtils.RemoteFileOperations.ExtractRemote(extractFileItemURI, targetURI, true);
} else {
this._desktopManager.DBusManager.doNotify(header, text);
}
return;
}
const dialog = new Gtk.FileChooserDialog({title: _('Select Extract Destination')});
dialog.set_action(Gtk.FileChooserAction.SELECT_FOLDER);
dialog.set_create_folders(true);
dialog.set_current_folder_uri(DesktopIconsUtil.getDesktopDir().get_uri());
dialog.add_button(_('Cancel'), Gtk.ResponseType.CANCEL);
dialog.add_button(_('Select'), Gtk.ResponseType.ACCEPT);
DesktopIconsUtil.windowHidePagerTaskbarModal(dialog, true);
dialog.show_all();
dialog.connect('close', () => {
dialog.response(Gtk.ResponseType.CANCEL);
});
dialog.connect('response', (actor, response) => {
if (response === Gtk.ResponseType.ACCEPT) {
const folder = dialog.get_uri();
if (folder) {
DBusUtils.RemoteFileOperations.ExtractRemote(extractFileItemURI, folder, true);
} else {
this._desktopManager.DBusManager.doNotify(header, text);
}
}
dialog.destroy();
});
}
_getExtractableAutoAr() {
let fileList = this._desktopManager.getCurrentSelection(false);
if (DBusUtils.GnomeArchiveManager.isAvailable && (fileList.length == 1)) {
return false;
}
for (let item of fileList) {
if (!this._desktopManager.autoAr.fileIsCompressed(item.fileName)) {
return false;
}
}
return true;
}
_getExtractable() {
for (let item of this._desktopManager.getCurrentSelection(false)) {
return this._decompressibleTypes.includes(item.attributeContentType);
}
return false;
}
_mailFilesFromSelection() {
if (this._desktopManager.checkIfDirectoryIsSelected()) {
let WindowError = new ShowErrorPopup.ShowErrorPopup(_('Can not email a Directory'),
_('Selection includes a Directory, compress the directory to a file first.'),
false);
WindowError.run();
return;
}
let xdgEmailCommand = [];
xdgEmailCommand.push('xdg-email');
for (let fileItem of this._desktopManager.getCurrentSelection(false)) {
fileItem.unsetSelected();
xdgEmailCommand.push('--attach');
xdgEmailCommand.push(fileItem.file.get_path());
}
DesktopIconsUtil.trySpawn(null, xdgEmailCommand);
}
_doCompressFilesFromSelection() {
let desktopFolder = DesktopIconsUtil.getDesktopDir();
if (desktopFolder) {
if (DBusUtils.GnomeArchiveManager.isAvailable) {
const toCompress = this._desktopManager.getCurrentSelection(true);
DBusUtils.RemoteFileOperations.CompressRemote(toCompress, desktopFolder.get_uri(), true);
} else {
const toCompress = this._desktopManager.getCurrentSelection(false);
this._desktopManager.autoAr.compressFileItems(toCompress, desktopFolder.get_path());
}
}
this._desktopManager.unselectAll();
}
_doNewFolderFromSelection(clickedItem) {
if (!clickedItem) {
return;
}
let position = clickedItem.savedCoordinates;
let newFolderFileItems = this._desktopManager.getCurrentSelection(true);
this._desktopManager.unselectAll();
clickedItem.removeFromGrid(true);
let newFolder = this._desktopManager.doNewFolder(position);
if (newFolder) {
DBusUtils.RemoteFileOperations.MoveURIsRemote(newFolderFileItems, newFolder);
}
}
};
desktop-icons-ng-49.0.5-c32667693d0831c29e3ab3f7bfeb675ea1531a00/app/fileUtils.js 0000664 0000000 0000000 00000006644 15064747536 0025453 0 ustar 00root root 0000000 0000000 /* DING: Desktop Icons New Generation for GNOME Shell
*
* Copyright (C) 2022 Marco Trevisan
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, version 3 of the License.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
'use strict';
const {GLib, Gio} = imports.gi;
const DEFAULT_ENUMERATE_BATCH_SIZE = 100;
const DEFAULT_QUERY_ATTRIBUTES = [
Gio.FILE_ATTRIBUTE_STANDARD_NAME,
Gio.FILE_ATTRIBUTE_STANDARD_TYPE,
].join(',');
/**
*
* @param dir
* @param cancellable
* @param priority
* @param queryAttributes
*/
async function enumerateDir(dir, cancellable = null, priority = GLib.PRIORITY_DEFAULT,
queryAttributes = DEFAULT_QUERY_ATTRIBUTES) {
const childrenEnumerator = await dir.enumerate_children_async_promise(queryAttributes,
Gio.FileQueryInfoFlags.NONE, priority, cancellable);
try {
const children = [];
while (true) {
// The enumerator doesn't support multiple async calls, nor
// we can predict how many they will be, so using Promise.all
// isn't an option here, thus we just need to await each batch
// eslint-disable-next-line no-await-in-loop
const batch = await childrenEnumerator.next_files_async_promise(
DEFAULT_ENUMERATE_BATCH_SIZE, priority, cancellable);
if (!batch.length) {
return children;
}
children.push(...batch);
}
} finally {
if (!childrenEnumerator.is_closed()) {
await childrenEnumerator.close_async_promise(priority, null);
}
}
}
/**
*
* @param dir
* @param deleteParent
* @param cancellable
* @param priority
*/
async function recursivelyDeleteDir(dir, deleteParent, cancellable = null,
priority = GLib.PRIORITY_DEFAULT) {
const children = await enumerateDir(dir, cancellable, priority);
/* eslint-disable no-await-in-loop */
for (let info of children) {
await deleteFile(dir.get_child(info.get_name()), info, cancellable, priority);
}
if (deleteParent) {
await dir.delete_async_promise(priority, cancellable);
}
}
/**
*
* @param file
* @param info
* @param cancellable
* @param priority
*/
async function deleteFile(file, info = null, cancellable = null,
priority = GLib.PRIORITY_DEFAULT) {
if (!info) {
info = await file.query_info_async_promise(
Gio.FILE_ATTRIBUTE_STANDARD_TYPE, Gio.FileQueryInfoFlags.NONE,
priority, cancellable);
}
const type = info.get_file_type();
if (type === Gio.FileType.REGULAR || type === Gio.FileType.SYMBOLIC_LINK) {
await file.delete_async_promise(priority, cancellable);
} else if (type === Gio.FileType.DIRECTORY) {
await recursivelyDeleteDir(file, true, cancellable, priority);
} else {
throw new GLib.Error(Gio.IOErrorEnum,
Gio.IOErrorEnum.NOT_SUPPORTED,
`${file.get_path()} of type ${type} cannot be removed`);
}
}
desktop-icons-ng-49.0.5-c32667693d0831c29e3ab3f7bfeb675ea1531a00/app/meson.build 0000664 0000000 0000000 00000001343 15064747536 0025306 0 ustar 00root root 0000000 0000000 prefix = get_option('prefix')
extensions_dir = join_paths(prefix, 'share', 'gnome-shell', 'extensions', 'ding@rastersoft.com', 'app')
install_data([
'autoAr.js',
'askRenamePopup.js',
'createThumbnail.js',
'dbusInterfaces.js',
'dbusUtils.js',
'desktopGrid.js',
'desktopIconItem.js',
'desktopIconsUtil.js',
'desktopManager.js',
'ding.js',
'enums.js',
'fileItem.js',
'fileItemMenu.js',
'fileUtils.js',
'notifyX11UnderWayland.js',
'preferences.js',
'prefswindow.js',
'promiseUtils.js',
'stackItem.js',
'showErrorPopup.js',
'signalManager.js',
'stylesheet.css',
'templatesScriptsManager.js',
'thumbnails.js',
],
install_dir: extensions_dir
)
desktop-icons-ng-49.0.5-c32667693d0831c29e3ab3f7bfeb675ea1531a00/app/notifyX11UnderWayland.js 0000664 0000000 0000000 00000004571 15064747536 0027630 0 ustar 00root root 0000000 0000000 /* DING: Desktop Icons New Generation for GNOME Shell
*
* Copyright (C) 2019 Sergio Costas (rastersoft@gmail.com)
* Based on code original (C) Carlos Soriano
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, version 3 of the License.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
/* exported NotifyX11UnderWayland */
'use strict';
const Gtk = imports.gi.Gtk;
const Gettext = imports.gettext.domain('ding');
const _ = Gettext.gettext;
var NotifyX11UnderWayland = class {
constructor(closeCB) {
this._window = new Gtk.MessageDialog({
window_position: Gtk.WindowPosition.CENTER_ON_PARENT,
transient_for: null,
message_type: Gtk.MessageType.WARNING,
buttons: Gtk.ButtonsType.NONE,
});
let area = this._window.get_message_area();
let labels = area.get_children();
labels[1].set_justify(Gtk.Justification.CENTER);
this._window.secondary_use_markup = true;
this._window.text = _('Desktop Icons NG is running under X11Wayland');
this._window.secondary_text = _("It seems that you have your system configured to force GTK to use X11. This works, but it's suboptimal. You should check your system configuration to fix this.");
this.deleteButton = this._window.add_button(_('Close'), Gtk.ResponseType.OK);
this.deleteButton.connect('clicked', () => {
this._destroy(closeCB);
});
this._window.connect('delete-event', () => {
this._destroy(closeCB);
});
this.deleteButton.get_style_context().add_class('suggested-action');
this._stopShowing = new Gtk.CheckButton({label: _("Don't show this message anymore.")});
area.add(this._stopShowing);
this._window.show_all();
}
_destroy(closeCB) {
this._window.hide();
this._window.destroy();
this._window = null;
closeCB(this._stopShowing.active);
}
};
desktop-icons-ng-49.0.5-c32667693d0831c29e3ab3f7bfeb675ea1531a00/app/preferences.js 0000664 0000000 0000000 00000010340 15064747536 0026000 0 ustar 00root root 0000000 0000000 /* DING: Desktop Icons New Generation for GNOME Shell
*
* Copyright (C) 2019 Sergio Costas (rastersoft@gmail.com)
* Based on code original (C) Carlos Soriano
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, version 3 of the License.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
'use strict';
imports.gi.versions.Gtk = '3.0';
const Gtk = imports.gi.Gtk;
const Gio = imports.gi.Gio;
const GioSSS = Gio.SettingsSchemaSource;
const DesktopIconsUtil = imports.desktopIconsUtil;
const Enums = imports.enums;
const PrefsWindow = imports.prefswindow;
const Gettext = imports.gettext;
var _ = Gettext.domain('ding').gettext;
var nautilusSettings;
var nautilusCompression;
var gtkSettings;
var desktopSettings;
var mutterSettings = null;
// This is already in Nautilus settings, so it should not be made tweakable here
var CLICK_POLICY_SINGLE = false;
var prefsWindow;
var prefsWindow;
/**
*
* @param path
*/
function init(path) {
let schemaSource = GioSSS.get_default();
let schemaGtk = schemaSource.lookup(Enums.SCHEMA_GTK, true);
gtkSettings = new Gio.Settings({settings_schema: schemaGtk});
let schemaObj = schemaSource.lookup(Enums.SCHEMA_NAUTILUS, true);
if (!schemaObj) {
nautilusSettings = null;
} else {
nautilusSettings = new Gio.Settings({settings_schema: schemaObj});
nautilusSettings.connect('changed', _onNautilusSettingsChanged);
_onNautilusSettingsChanged();
}
const compressionSchema = schemaSource.lookup(Enums.SCHEMA_NAUTILUS_COMPRESSION, true);
if (!compressionSchema) {
nautilusCompression = null;
} else {
nautilusCompression = new Gio.Settings({settings_schema: compressionSchema});
}
let schemaDarkSettings = schemaSource.lookup(Enums.SCHEMA_DARK_SETTINGS, true);
if (schemaDarkSettings) {
this.schemaGnomeDarkSettings = new Gio.Settings({ settings_schema: schemaDarkSettings });
}
desktopSettings = PrefsWindow.get_schema(path, Enums.SCHEMA);
let schemaMutter = schemaSource.lookup(Enums.SCHEMA_MUTTER, true);
if (schemaMutter) {
mutterSettings = new Gio.Settings({settings_schema: schemaMutter});
}
}
/**
*
*/
function showPreferences() {
if (prefsWindow) {
return;
}
prefsWindow = new Gtk.Window({
resizable: false,
window_position: Gtk.WindowPosition.CENTER,
});
prefsWindow.connect('destroy', () => {
prefsWindow = null;
});
prefsWindow.set_title(_('Settings'));
DesktopIconsUtil.windowHidePagerTaskbarModal(prefsWindow, true);
let frame = PrefsWindow.preferencesFrame(Gtk, desktopSettings, nautilusSettings, gtkSettings);
prefsWindow.add(frame);
prefsWindow.show_all();
}
/**
*
*/
function _onNautilusSettingsChanged() {
CLICK_POLICY_SINGLE = nautilusSettings.get_string('click-policy') == 'single';
}
/**
*
*/
function get_icon_size() {
return Enums.ICON_SIZE[desktopSettings.get_string('icon-size')];
}
/**
*
*/
function get_desired_width() {
return Enums.ICON_WIDTH[desktopSettings.get_string('icon-size')];
}
/**
*
*/
function get_desired_height() {
return Enums.ICON_HEIGHT[desktopSettings.get_string('icon-size')];
}
/**
*
*/
function get_start_corner() {
return Enums.START_CORNER[desktopSettings.get_string('start-corner')].slice();
}
/**
*
*/
function getSortOrder() {
return Enums.SortOrder[desktopSettings.get_string(Enums.SortOrder.ORDER)];
}
/**
*
* @param order
*/
function setSortOrder(order) {
let x = Object.values(Enums.SortOrder).indexOf(order);
desktopSettings.set_enum(Enums.SortOrder.ORDER, x);
}
/**
*
*/
function getUnstackList() {
return desktopSettings.get_strv('unstackedtypes');
}
/**
*
* @param array
*/
function setUnstackList(array) {
desktopSettings.set_strv('unstackedtypes', array);
}
desktop-icons-ng-49.0.5-c32667693d0831c29e3ab3f7bfeb675ea1531a00/app/prefswindow.js 0000664 0000000 0000000 00000017013 15064747536 0026052 0 ustar 00root root 0000000 0000000 'use strict';
const GObject = imports.gi.GObject;
const Gettext = imports.gettext;
const Gio = imports.gi.Gio;
const GioSSS = Gio.SettingsSchemaSource;
const GLib = imports.gi.GLib;
var _ = Gettext.domain('ding').gettext;
var Gtk;
/**
*
* @param path
* @param schema
*/
function get_schema(path, schema) {
// check if this extension was built with "make zip-file", and thus
// has the schema files in a subfolder
// otherwise assume that extension has been installed in the
// same prefix as gnome-shell (and therefore schemas are available
// in the standard folders)
let schemaSource;
let schemaFile = Gio.File.new_for_path(GLib.build_filenamev([path, 'schemas', 'gschemas.compiled']));
if (schemaFile.query_exists(null)) {
schemaSource = GioSSS.new_from_directory(GLib.build_filenamev([path, 'schemas']), GioSSS.get_default(), false);
} else {
schemaFile = Gio.File.new_for_path(GLib.build_filenamev([path, '..', 'schemas', 'gschemas.compiled']));
if (schemaFile.query_exists(null)) {
schemaSource = GioSSS.new_from_directory(GLib.build_filenamev([path, '..', 'schemas']), GioSSS.get_default(), false);
} else {
schemaSource = GioSSS.get_default();
}
}
let schemaObj = schemaSource.lookup(schema, true);
if (!schemaObj) {
throw new Error(`Schema ${schema} could not be found for extension ` + '. Please check your installation.');
}
return new Gio.Settings({settings_schema: schemaObj});
}
/**
*
* @param _Gtk
* @param desktopSettings
* @param nautilusSettings
* @param gtkSettings
*/
function preferencesFrame(_Gtk, desktopSettings, nautilusSettings, gtkSettings) {
Gtk = _Gtk;
let frame = new Gtk.Box({
orientation: Gtk.Orientation.VERTICAL,
spacing: 10,
margin_top: 10,
margin_bottom: 10,
margin_start: 10,
margin_end: 10,
});
if (!frame.add) {
frame.add = frame.append;
}
frame.add(buildSelector(desktopSettings, 'icon-size', _('Size for the desktop icons'), {'tiny': _('Tiny'), 'small': _('Small'), 'standard': _('Standard'), 'large': _('Large')}));
frame.add(buildSwitcher(desktopSettings, 'show-home', _('Show the personal folder in the desktop')));
frame.add(buildSwitcher(desktopSettings, 'show-trash', _('Show the trash icon in the desktop')));
frame.add(buildSwitcher(desktopSettings, 'show-volumes', _('Show external drives in the desktop')));
frame.add(buildSwitcher(desktopSettings, 'show-network-volumes', _('Show network drives in the desktop')));
frame.add(buildSelector(desktopSettings,
'start-corner',
_('New icons alignment'),
{
'top-left': _('Top-left corner'),
'top-right': _('Top-right corner'),
'bottom-left': _('Bottom-left corner'),
'bottom-right': _('Bottom-right corner'),
}));
frame.add(buildSwitcher(desktopSettings, 'add-volumes-opposite', _('Add new drives to the opposite side of the screen')));
frame.add(buildSwitcher(desktopSettings, 'show-drop-place', _("Highlight the drop place during Drag'n'Drop")));
frame.add(buildSwitcher(desktopSettings, 'use-nemo', _('Use Nemo to open folders')));
frame.add(buildSwitcher(desktopSettings, 'show-link-emblem', _('Add an emblem to soft links')));
frame.add(buildSwitcher(desktopSettings, 'dark-text-in-labels', _('Use dark text in icon labels')));
frame.add(new Gtk.Separator({orientation: Gtk.Orientation.HORIZONTAL}));
// Nautilus options
let frameLabel = new Gtk.Label({
label: `${_('Settings shared with Nautilus')}`,
use_markup: true,
});
let nautilusFrame = new Gtk.Frame({label_widget: frameLabel});
let nautilusBox = new Gtk.Box({
orientation: Gtk.Orientation.VERTICAL,
margin_top: 5,
margin_bottom: 5,
margin_start: 5,
margin_end: 5,
spacing: 10,
});
if (nautilusFrame.add) {
nautilusFrame.add(nautilusBox);
} else {
nautilusFrame.set_child(nautilusBox);
}
frame.add(nautilusFrame);
if (!nautilusBox.add) {
nautilusBox.add = nautilusBox.append;
}
nautilusBox.add(buildSelector(nautilusSettings, 'click-policy', _('Click type for open files'), {'single': _('Single click'), 'double': _('Double click')}));
nautilusBox.add(buildSwitcher(gtkSettings, 'show-hidden', _('Show hidden files')));
nautilusBox.add(buildSwitcher(nautilusSettings, 'show-delete-permanently', _('Show a context menu item to delete permanently')));
// Gnome Shell 40 removed this option
try {
nautilusBox.add(buildSelector(nautilusSettings,
'executable-text-activation',
_('Action to do when launching a program from the desktop'), {
'display': _('Display the content of the file'),
'launch': _('Launch the file'),
'ask': _('Ask what to do'),
}));
} catch (e) {
}
nautilusBox.add(buildSelector(nautilusSettings,
'show-image-thumbnails',
_('Show image thumbnails'), {
'never': _('Never'),
'local-only': _('Local files only'),
'always': _('Always'),
}));
return frame;
}
/**
*
* @param settings
* @param key
* @param labelText
*/
function buildSwitcher(settings, key, labelText) {
let hbox = new Gtk.Box({orientation: Gtk.Orientation.HORIZONTAL, spacing: 10});
let label = new Gtk.Label({label: labelText, xalign: 0});
if (settings) {
var status = settings.get_boolean(key);
} else {
var status = false;
}
let switcher = new Gtk.Switch({active: status});
label.set_hexpand(true);
switcher.set_hexpand(false);
switcher.set_halign(Gtk.Align.END);
if (settings) {
settings.bind(key, switcher, 'active', 3);
} else {
switcher.sensitive = false;
}
if (hbox.pack_start) {
hbox.pack_start(label, true, true, 0);
hbox.add(switcher);
} else {
hbox.append(label);
hbox.append(switcher);
}
return hbox;
}
/**
*
* @param settings
* @param key
* @param labelText
* @param elements
*/
function buildSelector(settings, key, labelText, elements) {
let listStore = new Gtk.ListStore();
listStore.set_column_types([GObject.TYPE_STRING, GObject.TYPE_STRING]);
if (settings) {
let schemaKey = settings.settings_schema.get_key(key);
let values = schemaKey.get_range().get_child_value(1).get_child_value(0).get_strv();
for (let val of values) {
let iter = listStore.append();
let visibleText = val;
if (visibleText in elements) {
visibleText = elements[visibleText];
}
listStore.set(iter, [0, 1], [visibleText, val]);
}
}
let hbox = new Gtk.Box({orientation: Gtk.Orientation.HORIZONTAL, spacing: 10});
let label = new Gtk.Label({label: labelText, xalign: 0});
let combo = new Gtk.ComboBox({model: listStore});
let rendererText = new Gtk.CellRendererText();
combo.pack_start(rendererText, false);
combo.add_attribute(rendererText, 'text', 0);
combo.set_id_column(1);
label.set_hexpand(true);
combo.set_hexpand(false);
combo.set_halign(Gtk.Align.END);
if (settings) {
settings.bind(key, combo, 'active-id', 3);
} else {
combo.sensitive = false;
}
if (hbox.pack_start) {
hbox.pack_start(label, true, true, 0);
hbox.add(combo);
} else {
hbox.append(label);
hbox.append(combo);
}
return hbox;
}
desktop-icons-ng-49.0.5-c32667693d0831c29e3ab3f7bfeb675ea1531a00/app/promiseUtils.js 0000664 0000000 0000000 00000006042 15064747536 0026202 0 ustar 00root root 0000000 0000000 /* DING: Desktop Icons New Generation for GNOME Shell
*
* Copyright (C) 2022 Marco Trevisan
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, version 3 of the License.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
'use strict';
/* This is coming from gjs 1.72, adding options to allow not to replace the
* original method, in case we want to avoid clashes with already used async
* methods. This can be dropped when such requirements are not needed */
/**
*
* @param options
* @param proto
* @param asyncFunc
* @param finishFunc
*/
function _promisify(options, proto, asyncFunc,
finishFunc = `${asyncFunc.replace(/_(begin|async)$/, '')}_finish`) {
if (proto[asyncFunc] === undefined) {
throw new Error(`${proto} has no method named ${asyncFunc}`);
}
if (proto[finishFunc] === undefined) {
throw new Error(`${proto} has no method named ${finishFunc}`);
}
if (proto[`_original_${asyncFunc}`] !== undefined) {
if (options.keepOriginal && proto[`${asyncFunc}_promise`] === undefined) {
proto[`${asyncFunc}_promise`] = proto[asyncFunc];
}
return;
}
if (!options) {
options = {};
}
proto[`_original_${asyncFunc}`] = proto[asyncFunc];
proto[options.keepOriginal ? `${asyncFunc}_promise` : asyncFunc] = function (...args) {
if (!args.every(arg => typeof arg !== 'function')) {
return this[`_original_${asyncFunc}`](...args);
}
return new Promise((resolve, reject) => {
const callStack = new Error().stack.split('\n').filter(line => !line.match(/promisify/)).join('\n');
this[`_original_${asyncFunc}`](...args, (source, res) => {
try {
const result = source !== null && source[finishFunc] !== undefined
? source[finishFunc](res)
: proto[finishFunc](res);
if (Array.isArray(result) && result.length > 1 && result[0] === true) {
result.shift();
}
resolve(result);
} catch (error) {
if (error.stack) {
error.stack += `### Promise created here: ###\n${callStack}`;
} else {
error.stack = callStack;
}
reject(error);
}
});
});
};
if (!options.keepOriginal && proto[`${asyncFunc}_promise`] === undefined) {
proto[`${asyncFunc}_promise`] = proto[asyncFunc];
}
}
desktop-icons-ng-49.0.5-c32667693d0831c29e3ab3f7bfeb675ea1531a00/app/showErrorPopup.js 0000664 0000000 0000000 00000004402 15064747536 0026517 0 ustar 00root root 0000000 0000000 /* DING: Desktop Icons New Generation for GNOME Shell
*
* Copyright (C) 2019 Sergio Costas (rastersoft@gmail.com)
* Based on code original (C) Carlos Soriano
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, version 3 of the License.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
'use strict';
const Gtk = imports.gi.Gtk;
const DesktopIconsUtil = imports.desktopIconsUtil;
const Gettext = imports.gettext.domain('ding');
const _ = Gettext.gettext;
var ShowErrorPopup = class {
constructor(text, secondaryText, modal) {
this._window = new Gtk.MessageDialog({
window_position: Gtk.WindowPosition.CENTER_ON_PARENT,
transient_for: null,
message_type: Gtk.MessageType.ERROR,
buttons: Gtk.ButtonsType.NONE,
});
let labels = this._window.get_message_area().get_children();
labels[1].set_justify(Gtk.Justification.CENTER);
this._window.secondary_use_markup = true;
this._window.text = text;
this._window.secondary_text = secondaryText;
DesktopIconsUtil.windowHidePagerTaskbarModal(this._window, true);
this.deleteButton = this._window.add_button(_('Close'), Gtk.ResponseType.OK);
this.deleteButton.connect('clicked', () => {
this._window.hide();
this._window.destroy();
this._window = null;
});
this._window.connect('delete-event', () => {
this._window.destroy();
this._window = null;
});
if (modal) {
this._window.show();
}
}
run() {
this._window.show();
this.timeoutClose(3000);
}
async timeoutClose(time) {
await DesktopIconsUtil.waitDelayMs(time);
if (this._window) {
this.deleteButton.activate();
}
}
};
desktop-icons-ng-49.0.5-c32667693d0831c29e3ab3f7bfeb675ea1531a00/app/signalManager.js 0000664 0000000 0000000 00000003354 15064747536 0026256 0 ustar 00root root 0000000 0000000 /* DING: Desktop Icons New Generation for GNOME Shell
*
* Copyright (C) 2024 Sergio Costas (rastersoft@gmail.com)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, version 3 of the License.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
'use strict';
var SignalManager = class {
constructor() {
this._signal_list = [];
}
connectSignal(obj, signal_name, cb, {destroyCb, after}={destroyCb:null, after: false}) {
if (after)
var signal_id = obj.connect_after(signal_name, cb);
else
var signal_id = obj.connect(signal_name, cb);
let handler = {
signal_id,
obj,
destroyCb
}
this._signal_list.push(handler);
return handler;
}
disconnectAllSignals() {
this._signal_list.forEach((item) => {
item.obj.disconnect(item.signal_id);
if (item.destroyCb)
item.destroyCb();
});
this._signal_list = [];
}
disconnectSignal(handler) {
const idx = this._signal_list.indexOf(handler);
if (idx == -1)
return;
delete this._signal_list[idx];
handler.obj.disconnect(handler.signal_id);
if (handler.destroyCb)
handler.destroyCb();
}
}
desktop-icons-ng-49.0.5-c32667693d0831c29e3ab3f7bfeb675ea1531a00/app/stackItem.js 0000664 0000000 0000000 00000006245 15064747536 0025434 0 ustar 00root root 0000000 0000000
/* DING: Desktop Icons New Generation for GNOME Shell
*
* Copyright (C) 2021 Sundeep Mediratta (smedius@gmail.com)
* Copyright (C) 2019 Sergio Costas (rastersoft@gmail.com)
* Based on code original (C) Carlos Soriano
* SwitcherooControl code based on code original from Marsch84
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, version 3 of the License.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
'use strict';
const Gdk = imports.gi.Gdk;
const desktopIconItem = imports.desktopIconItem;
const Prefs = imports.preferences;
const Signals = imports.signals;
const Gettext = imports.gettext.domain('ding');
const _ = Gettext.gettext;
var stackItem = class extends desktopIconItem.desktopIconItem {
constructor(desktopManager, file, attributeContentType, fileExtra) {
super(desktopManager, fileExtra);
this._isSpecial = false;
this._file = file;
this.isStackTop = true;
this.stackUnique = false;
this._size = null;
this._modifiedTime = null;
this._attributeContentType = attributeContentType;
this._createIconActor();
this._createStackTopIcon();
this._setLabelName(this._file);
}
_createStackTopIcon() {
const scale = this._icon.get_scale_factor();
let pixbuf;
let folder = 'folder';
if (Prefs.getUnstackList().includes(this._attributeContentType)) {
folder = 'folder-open';
}
pixbuf = this._createEmblemedIcon(null, `${folder}`);
let surface = Gdk.cairo_surface_create_from_pixbuf(pixbuf, scale, null);
this._icon.set_from_surface(surface);
}
_doButtonOnePressed(event, shiftPressed, controlPressed) {
this._desktopManager.onToggleStackUnstackThisTypeClicked(this.attributeContentType);
}
setSelected() {
}
updateIcon() {
this._createStackTopIcon();
}
/** *********************
* Getters and setters *
***********************/
get attributeContentType() {
return this._attributeContentType;
}
get displayName() {
return this._file;
}
get file() {
return this._file;
}
get fileName() {
return this._file;
}
get fileSize() {
return this._size;
}
get isAllSelectable() {
return false;
}
get modifiedTime() {
return this._modifiedTime;
}
get path() {
return `/tmp/${this._file}`;
}
get uri() {
return `file:///tmp/${this._file}`;
}
get isStackMarker() {
return true;
}
set size(size) {
this._size = size;
}
set time(time) {
this._modifiedTime = time;
}
};
Signals.addSignalMethods(stackItem.prototype);
desktop-icons-ng-49.0.5-c32667693d0831c29e3ab3f7bfeb675ea1531a00/app/stylesheet.css 0000664 0000000 0000000 00000000772 15064747536 0026054 0 ustar 00root root 0000000 0000000 .file-label, label.file-label:backdrop {
text-shadow: 0px 0px 3px black;
color: white;
}
.file-label-dark, label.file-label-dark:backdrop {
text-shadow: 0px 0px 3px white;
color: black;
}
.file-item {
padding: 2px;
border-radius: 5px;
}
.file-item-hover {
background-color: rgba(238, 238, 238, 0.2);
}
.not-found {
color: rgb(255, 0, 0);
}
window.desktopwindow {
background-color: rgba(0, 0, 0, 0);
}
window.testwindow {
background-color: rgba(0, 0, 0, 100);
}
desktop-icons-ng-49.0.5-c32667693d0831c29e3ab3f7bfeb675ea1531a00/app/templatesScriptsManager.js 0000664 0000000 0000000 00000021255 15064747536 0030347 0 ustar 00root root 0000000 0000000 /* DING: Desktop Icons New Generation for GNOME Shell
*
* Copyright (C) 2020 Sergio Costas (rastersoft@gmail.com)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, version 3 of the License.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
'use strict';
const Gio = imports.gi.Gio;
const GLib = imports.gi.GLib;
const Gtk = imports.gi.Gtk;
const Enums = imports.enums;
const DesktopIconsUtil = imports.desktopIconsUtil;
const SignalManager = imports.signalManager;
var TemplatesScriptsManagerFlags = {
'NONE': 0,
'ONLY_EXECUTABLE': 1,
'HIDE_EXTENSIONS': 2,
};
var TemplatesScriptsManager = class extends SignalManager.SignalManager {
constructor(baseFolder, flags, activatedCB) {
super();
// Too many templates can result in resource exhaustion, crashing
// the desktop. To avoid this, we limit the number of templates to 100.
// It can happen if the Templates folder points to the wrong folder,
// or if there is a loop due to a symlink to an already added folder.
this._maxNumberOfTemplates = 100;
this._activatedCB = activatedCB;
this._entries = [];
this._entriesEnumerateCancellable = null;
this._readingEntries = false;
this._entriesDir = baseFolder;
this._entriesFolderChanged = false;
this._flags = flags;
this._entriesDirSignals = new SignalManager.SignalManager();
if (this._entriesDir == GLib.get_home_dir()) {
this._entriesDir = null;
}
if (this._entriesDir !== null) {
this._monitorDir = baseFolder.monitor_directory(Gio.FileMonitorFlags.WATCH_MOVES, null);
this._monitorDir.set_rate_limit(1000);
this.connectSignal(this._monitorDir, 'changed', (obj, file, otherFile, eventType) => {
this._updateEntries().catch(e => {
print(`Exception while updating entries in monitor: ${e.message}\n${e.stack}`);
});
});
this._updateEntries().catch(e => {
print(`Exception while updating entries: ${e.message}\n${e.stack}`);
});
}
}
destroy() {
this._entriesDirSignals.disconnectAllSignals();
this.disconnectAllSignals();
}
async _updateEntries() {
if (this._readingEntries) {
this._entriesFolderChanged = true;
if (this._entriesEnumerateCancellable) {
this._entriesEnumerateCancellable.cancel();
this._entriesEnumerateCancellable = null;
}
return;
}
this._readingEntries = true;
let entriesList = null;
this._processedEntries = 0;
do {
this._entriesDirSignals.disconnectAllSignals();
this._entriesFolderChanged = false;
if (!this._entriesDir.query_exists(null)) {
entriesList = null;
break;
}
entriesList = await this._processDirectory(this._entriesDir);
} while ((entriesList === null) || this._entriesFolderChanged);
this._entries = entriesList;
this._readingEntries = false;
}
async _processDirectory(directory) {
this._processedEntries++;
if (this._processedEntries >= this._maxNumberOfTemplates) {
return [];
}
if (directory !== this._entriesDir) {
let monitorDir = directory.monitor_directory(Gio.FileMonitorFlags.WATCH_MOVES, null);
monitorDir.set_rate_limit(1000);
this._entriesDirSignals.connectSignal(monitorDir, 'changed', (obj, file, otherFile, eventType) => {
this._updateEntries();
});
}
try {
var files = await this._readDirectory(directory);
} catch (e) {
return null;
}
if (files === null) {
return null;
}
let output = [];
for (let file of files) {
if (file[2] === null) {
output.push(file);
continue;
}
file[2] = await this._processDirectory(file[1]);
if (file[2] === null) {
return null;
}
if (file[2].length != 0) {
output.push(file);
}
}
return output;
}
_readDirectory(directory) {
return new Promise((resolve, reject) => {
if (this._entriesEnumerateCancellable) {
this._entriesEnumerateCancellable.cancel();
}
this._entriesEnumerateCancellable = new Gio.Cancellable();
directory.enumerate_children_async(
Enums.DEFAULT_ATTRIBUTES,
Gio.FileQueryInfoFlags.NONE,
GLib.PRIORITY_DEFAULT,
this._entriesEnumerateCancellable,
(source, result) => {
this._entriesEnumerateCancellable = null;
let fileList = [];
try {
let fileEnum = source.enumerate_children_finish(result);
if (this._entriesFolderChanged) {
resolve(null);
return;
}
let info;
while ((info = fileEnum.next_file(null))) {
let isDir = info.get_file_type() == Gio.FileType.DIRECTORY;
if ((this._flags & TemplatesScriptsManagerFlags.ONLY_EXECUTABLE) &&
!isDir &&
!info.get_attribute_boolean('access::can-execute')) {
continue;
}
let child = fileEnum.get_child(info);
fileList.push([info.get_name(), isDir ? child : child.get_path(), isDir ? [] : null]);
this._processedEntries++;
if (this._processedEntries >= this._maxNumberOfTemplates) {
break;
}
}
} catch (e) {
if (e.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.CANCELLED)) {
resolve(null);
} else {
reject(new GLib.Error(Gio.IOErrorEnum,
Gio.IOErrorEnum.FAILED,
'file-read-error'));
}
return;
}
fileList.sort((a, b) => {
return a[0].localeCompare(b[0], {
sensitivity: 'accent',
numeric: 'true',
localeMatcher: 'lookup',
});
});
resolve(fileList);
}
);
});
}
createMenu() {
return this._createTemplatesScriptsSubMenu(this._entries);
}
_createTemplatesScriptsSubMenu(scriptsList) {
if ((scriptsList == null) || (scriptsList.length == 0)) {
return null;
}
let scriptSubMenu = new Gtk.Menu();
for (let fileItem of scriptsList) {
let menuItemName = fileItem[0];
if (this._flags & TemplatesScriptsManagerFlags.HIDE_EXTENSIONS) {
menuItemName = DesktopIconsUtil.getFileExtensionOffset(menuItemName, false).basename;
}
let menuItemPath = fileItem[1];
let subDirs = fileItem[2];
if (subDirs === null) {
let menuItem = new Gtk.MenuItem({label: menuItemName});
this.connectSignal(menuItem, 'activate', () => {
this._activatedCB(menuItemPath);
});
scriptSubMenu.add(menuItem);
} else {
let subMenu = this._createTemplatesScriptsSubMenu(subDirs);
if (subMenu !== null) {
let menuItem = new Gtk.MenuItem({label: menuItemName});
menuItem.set_submenu(subMenu);
scriptSubMenu.add(menuItem);
}
}
}
scriptSubMenu.show_all();
return scriptSubMenu;
}
};
desktop-icons-ng-49.0.5-c32667693d0831c29e3ab3f7bfeb675ea1531a00/app/thumbnails.js 0000664 0000000 0000000 00000017255 15064747536 0025661 0 ustar 00root root 0000000 0000000 /* DING: Desktop Icons New Generation for GNOME Shell
*
* Copyright (C) 2021 Sergio Costas (rastersoft@gmail.com)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, version 3 of the License.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
'use strict';
var GnomeDesktop = null;
const ShowErrorPopup = imports.showErrorPopup;
try {
imports.gi.versions.GnomeDesktop = '3.0';
GnomeDesktop = imports.gi.GnomeDesktop;
} catch(e) {}
const GLib = imports.gi.GLib;
const Gio = imports.gi.Gio;
const Gettext = imports.gettext.domain('ding');
const _ = Gettext.gettext;
var ThumbnailLoader = class {
constructor(desktopManager, codePath) {
this._timeoutValue = 5000;
this._codePath = codePath;
this._thumbList = [];
this._thumbnailScriptWatch = null;
this._running = false;
if (!GnomeDesktop) {
desktopManager.dbusManager.doNotify(_('GnomeDesktop-3.0 GIR file not found'),
_('GnomeDesktop-3.0.gir file is missing. Please, install the required package in your system.'));
} else {
this._thumbnailFactoryNormal = GnomeDesktop.DesktopThumbnailFactory.new(GnomeDesktop.DesktopThumbnailSize.NORMAL);
this._thumbnailFactoryLarge = GnomeDesktop.DesktopThumbnailFactory.new(GnomeDesktop.DesktopThumbnailSize.LARGE);
if (this._thumbnailFactoryLarge.generate_thumbnail_async) {
this._useAsyncAPI = true;
print('Detected async api for thumbnails');
} else {
this._useAsyncAPI = false;
print('Failed to detected async api for thumbnails');
}
}
}
_generateThumbnail(file, callback) {
this._thumbList.push([file, callback]);
if (!this._running) {
this._launchNewBuild();
}
}
_launchNewBuild() {
let file, callback;
do {
if (this._thumbList.length == 0) {
this._running = false;
return;
}
// if the file disappeared while waiting in the queue, don't refresh the thumbnail
[file, callback] = this._thumbList.shift();
if (file.file.query_exists(null)) {
if (this._thumbnailFactoryLarge.has_valid_failed_thumbnail(file.uri, file.modifiedTime)) {
if (callback) {
callback();
}
continue;
} else {
break;
}
}
} while (true);
this._running = true;
if (this._useAsyncAPI) {
this._createThumbnailAsync(file, callback);
} else {
this._createThumbnailSubprocess(file, callback);
}
}
_createThumbnailAsync(file, callback) {
let fileInfo = file.file.query_info('standard::content-type,time::modified', Gio.FileQueryInfoFlags.NONE, null);
this._doCancel = new Gio.Cancellable();
let modifiedTime = fileInfo.get_attribute_uint64('time::modified');
this._thumbnailFactoryLarge.generate_thumbnail_async(file.uri, fileInfo.get_content_type(), this._doCancel, (obj, res) => {
this._removeTimeout();
try {
let thumbnailPixbuf = obj.generate_thumbnail_finish(res);
this._thumbnailFactoryLarge.save_thumbnail_async(thumbnailPixbuf, file.uri, modifiedTime, this._doCancel, (obj, res) => {
obj.save_thumbnail_finish(res);
if (callback) {
callback();
}
this._launchNewBuild();
});
} catch (e) {
print(`Error while creating thumbnail: ${e.message}\n${e.stack}`);
this._createFailedThumbnailAsync(file, modifiedTime, callback);
}
});
this._timeoutID = GLib.timeout_add(GLib.PRIORITY_DEFAULT, this._timeoutValue, () => {
print(`Timeout while generating thumbnail for ${file.displayName}`);
this._timeoutID = 0;
this._doCancel.cancel();
this._createFailedThumbnailAsync(file, modifiedTime, callback);
return false;
});
}
_createFailedThumbnailAsync(file, modifiedTime, callback) {
this._doCancel = new Gio.Cancellable();
this._thumbnailFactoryLarge.create_failed_thumbnail_async(file.uri, modifiedTime, this._doCancel, (obj, res) => {
try {
obj.create_failed_thumbnail_finish(res);
} catch (e) {
print(`Error while creating failed thumbnail: ${e.message}\n${e.stack}`);
}
if (callback) {
callback();
}
this._launchNewBuild();
});
}
_createThumbnailSubprocess(file, callback) {
let args = [];
args.push(GLib.build_filenamev([this._codePath, 'createThumbnail.js']));
args.push(file.path);
this._proc = new Gio.Subprocess({argv: args});
this._proc.init(null);
this._proc.wait_check_async(null, (source, result) => {
this._removeTimeout();
try {
let result2 = source.wait_check_finish(result);
if (result2) {
let status = source.get_status();
if (status == 0) {
if (callback) {
callback();
}
}
} else {
print(`Failed to generate thumbnail for ${file.displayName}`);
}
} catch (error) {
print(`Exception when generating thumbnail for ${file.displayName}: ${error}`);
}
this._launchNewBuild();
});
this._timeoutID = GLib.timeout_add(GLib.PRIORITY_DEFAULT, this._timeoutValue, () => {
print(`Timeout while generating thumbnail for ${file.displayName}`);
this._timeoutID = 0;
this._proc.force_exit();
this._thumbnailFactoryLarge.create_failed_thumbnail(file.uri, file.modifiedTime);
return false;
});
}
_removeTimeout() {
if (this._timeoutID != 0) {
GLib.source_remove(this._timeoutID);
this._timeoutID = 0;
}
}
getThumbnail(file, callback) {
if (!this._thumbnailFactoryLarge && !this._thumbnailFactoryNormal) {
return null;
}
try {
let thumbnail = this._thumbnailFactoryLarge.lookup(file.uri, file.modifiedTime);
if (thumbnail == null) {
thumbnail = this._thumbnailFactoryNormal.lookup(file.uri, file.modifiedTime);
if ((thumbnail == null) &&
!this._thumbnailFactoryLarge.has_valid_failed_thumbnail(file.uri, file.modifiedTime) &&
this._thumbnailFactoryLarge.can_thumbnail(file.uri, file.attributeContentType, file.modifiedTime)) {
this._generateThumbnail(file, callback);
}
}
return thumbnail;
} catch (error) {
print(`Error when asking for a thumbnail for ${file.displayName}: ${error.message}\n${error.stack}`);
}
return null;
}
};
desktop-icons-ng-49.0.5-c32667693d0831c29e3ab3f7bfeb675ea1531a00/apparmor/ 0000775 0000000 0000000 00000000000 15064747536 0024204 5 ustar 00root root 0000000 0000000 desktop-icons-ng-49.0.5-c32667693d0831c29e3ab3f7bfeb675ea1531a00/apparmor/desktop-icons-ng.in 0000664 0000000 0000000 00000000657 15064747536 0027730 0 ustar 00root root 0000000 0000000 # This profile allows everything and only exists to give the
# application a name instead of having the label "unconfined"
abi ,
include
profile desktop-icons-ng @PREFIX@/share/gnome-shell/extensions/ding@rastersoft.com/app/{ding,createThumbnail}.js flags=(unconfined) {
userns,
# Site-specific additions and overrides. See local/README for details.
include if exists
}
desktop-icons-ng-49.0.5-c32667693d0831c29e3ab3f7bfeb675ea1531a00/apparmor/meson.build 0000664 0000000 0000000 00000000574 15064747536 0026354 0 ustar 00root root 0000000 0000000 prefix = get_option('prefix')
if prefix.startswith('/usr')
apparmor_file = configure_file(input: 'desktop-icons-ng.in',
output: 'desktop-icons-ng',
configuration: {'PREFIX': prefix},
install: true,
install_dir: '/etc/apparmor.d')
endif desktop-icons-ng-49.0.5-c32667693d0831c29e3ab3f7bfeb675ea1531a00/debian/ 0000775 0000000 0000000 00000000000 15064747536 0023605 5 ustar 00root root 0000000 0000000 desktop-icons-ng-49.0.5-c32667693d0831c29e3ab3f7bfeb675ea1531a00/debian/control 0000664 0000000 0000000 00000002136 15064747536 0025212 0 ustar 00root root 0000000 0000000 Source: gnome-shell-extension-desktop-icons-ng
Section: gnome
Priority: optional
Maintainer: Sergio Costas Rodriguez
Build-Depends: debhelper-compat (= 13),
dh-sequence-gnome,
dh-apparmor,
libglib2.0-bin,
meson,
cmake,
libglib2.0-dev,
pkgconf
Standards-Version: 4.7.0
Homepage: https://www.rastersoft.com/programas/ding.html
Vcs-Git: https://gitlab.com/rastersoft/desktop-icons-ng.git
Vcs-Browser: https://gitlab.com/rastersoft/desktop-icons-ng
Rules-Requires-Root: no
Package: gnome-shell-extension-desktop-icons-ng
Architecture: all
Depends: gir1.2-gnomeautoar-0.1,
gir1.2-gnomedesktop-3.0,
gnome-shell (>= 45~),
gnome-shell (<< 50~),
gjs,
nautilus (>= 3.38)
Description: desktop icon support for GNOME Shell
This package provides a GNOME Shell extension for showing the contents
of ~/Desktop on the desktop of the Shell. Common file management
operations such as launching, copy/paste, rename and deleting are
supported.
Version: 49.0.3
desktop-icons-ng-49.0.5-c32667693d0831c29e3ab3f7bfeb675ea1531a00/debian/copyright 0000664 0000000 0000000 00000001002 15064747536 0025531 0 ustar 00root root 0000000 0000000 Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
Upstream-Name: desktop-icons-ng
Source: https://gitlab.com/rastersoft/desktop-icons-ng
Files: *
Copyright:
© 2019-2024 Sergio Costas
Based on code original (C) Carlos Soriano
License: GPL-3
Files: debian/*
Copyright:
© 2021-2022 Canonical Ltd
License: GPL-3
License: GPL-3
On Debian systems, the complete text of the GNU General Public License
version 3 can be found in `/usr/share/common-licenses/GPL-3'.
desktop-icons-ng-49.0.5-c32667693d0831c29e3ab3f7bfeb675ea1531a00/debian/rules 0000664 0000000 0000000 00000000303 15064747536 0024656 0 ustar 00root root 0000000 0000000 #!/usr/bin/make -f
%:
dh $@
execute_after_dh_install:
dh_apparmor --profile-name=desktop-icons-ng
override_dh_fixperms:
dh_fixperms -XcreateThumbnail.js -Xding.js
override_dh_gnome_clean:
desktop-icons-ng-49.0.5-c32667693d0831c29e3ab3f7bfeb675ea1531a00/emulateX11WindowType.js 0000664 0000000 0000000 00000036664 15064747536 0026720 0 ustar 00root root 0000000 0000000 /* Emulate X11WindowType
*
* Copyright (C) 2020 Sergio Costas (rastersoft@gmail.com)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, version 3 of the License.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
/* exported EmulateX11WindowType */
'use strict';
import GLib from 'gi://GLib'
import Meta from 'gi://Meta'
import * as Main from 'resource:///org/gnome/shell/ui/main.js'
class ManageWindow {
/* This class is added to each managed window, and it's used to
make it behave like an X11 Desktop window.
Trusted windows will set in the title the characters @!, followed
by the coordinates where to put the window separated by a colon, and
ended in semicolon. After that, it can have one or more of these letters
* B : put this window at the bottom of the screen
* T : put this window at the top of the screen
* D : show this window in all desktops
* H : hide this window from window list
Using the title is generally not a problem because the desktop windows
doesn't have a tittle. But some other windows may have and still need to
take advantage of this, so adding a single blank space at the end of the
title is equivalent to @!H, and having two blank spaces at the end of the
title is equivalent to @!HTD. This allows to take advantage of these flags
even to decorated windows.
*/
constructor(window, waylandClient, X11Emulator, changedStatusCB) {
this._waylandClient = waylandClient;
this._X11Emulator = X11Emulator;
this._window = window;
this._signalIDs = [];
this._changedStatusCB = changedStatusCB;
this._signalIDs.push(window.connect_after('raised', () => {
if (this._keepAtBottom && !this._keepAtTop) {
this._window.lower();
}
}));
this._signalIDs.push(window.connect('position-changed', () => {
if (this._fixed && (this._x !== null) && (this._y !== null)) {
this._window.move_frame(true, this._x, this._y);
}
}));
this._signalIDs.push(window.connect('notify::title', () => {
this._parseTitle();
}));
this._signalIDs.push(window.connect('notify::above', () => {
if (this._keepAtBottom && this._window.above) {
this._window.unmake_above();
}
}));
this._signalIDs.push(window.connect('notify::minimized', () => {
this._window.unminimize();
}));
this._signalIDs.push(window.connect('notify::maximized-vertically', () => {
if (window.is_maximized) {
// Gnome Shell >= 49 API
if (!window.is_maximized()) {
window.maximize();
}
} else {
// Gnome Shell < 49 API
if (!window.maximized_vertically) {
window.maximize(Meta.MaximizeFlags.VERTICAL);
}
}
this._moveIntoPlace();
}));
this._signalIDs.push(window.connect('notify::maximized-horizontally', () => {
if (window.is_maximized) {
// Gnome Shell >= 49 API
if (!window.is_maximized()) {
window.maximize();
}
} else {
// Gnome Shell < 49 API
if (!window.maximized_horizontally) {
window.maximize(Meta.MaximizeFlags.HORIZONTAL);
}
}
this._moveIntoPlace();
}));
this._parseTitle();
}
_moveIntoPlace() {
if (this._moveIntoPlaceID) {
GLib.source_remove(this._moveIntoPlaceID);
}
this._moveIntoPlaceID = GLib.timeout_add(GLib.PRIORITY_LOW, 250, () => {
if (this._fixed && (this._x !== null) && (this._y !== null)) {
this._window.move_frame(true, this._x, this._y);
}
this._moveIntoPlaceID = 0;
return GLib.SOURCE_REMOVE;
});
}
refreshWindowPosition() {
this._moveIntoPlace();
}
disconnect() {
for (let signalID of this._signalIDs) {
this._window.disconnect(signalID);
}
if (this._moveIntoPlaceID) {
GLib.source_remove(this._moveIntoPlaceID);
}
if (this._keepAtTop) {
this._window.unmake_above();
}
this._window = null;
this._waylandClient = null;
}
setWaylandClient(client) {
this._waylandClient = client;
}
_parseTitle() {
this._x = null;
this._y = null;
this._keepAtBottom = false;
let keepAtTop = this._keepAtTop;
this._keepAtTop = false;
this._showInAllDesktops = false;
this._hideFromWindowList = false;
this._fixed = false;
let title = this._window.get_title();
if (title != null) {
if ((title.length > 0) && (title[title.length - 1] == ' ')) {
if ((title.length > 1) && (title[title.length - 2] == ' ')) {
title = '@!HTD';
} else {
title = '@!H';
}
}
let pos = title.search('@!');
if (pos != -1) {
let pos2 = title.search(';', pos);
let coords;
if (pos2 != -1) {
coords = title.substring(pos + 2, pos2).trim().split(',');
} else {
coords = title.substring(pos + 2).trim().split(',');
}
try {
this._x = parseInt(coords[0]);
this._y = parseInt(coords[1]);
} catch (e) {
console.log(`Exception ${e.message}.\n${e.stack}`);
}
try {
let extraChars = title.substring(pos + 2).trim().toUpperCase();
for (let char of extraChars) {
switch (char) {
case 'B':
this._keepAtBottom = true;
this._keepAtTop = false;
break;
case 'T':
this._keepAtTop = true;
this._keepAtBottom = false;
break;
case 'D':
this._showInAllDesktops = true;
break;
case 'H':
this._hideFromWindowList = true;
break;
case 'F':
this._fixed = true;
break;
}
}
} catch (e) {
console.log(`Exception ${e.message}.\n${e.stack}`);
}
}
// This string must match the one at desktopManager.js
if (title.startsWith("Desktop Icons ")) {
this._keepAtBottom = true;
this._keepAtTop = false;
this._showInAllDesktops = true;
this._hideFromWindowList = true;
this._fixed = true;
try {
const desktopIndex = parseInt(title.substring(14).trim());
const desktopData = this._X11Emulator.getMonitorData(desktopIndex - 1);
this._x = desktopData.x;
this._y = desktopData.y;
} catch (e) {
console.log(`Exception ${e.message}.\n${e.stack}`);
}
}
if (this._waylandClient) {
if (this._hideFromWindowList) {
this._waylandClient.hide_from_window_list(this._window);
} else {
this._waylandClient.show_in_window_list(this._window);
}
}
if (this._keepAtTop != keepAtTop) {
if (this._keepAtTop) {
this._window.make_above();
} else {
this._window.unmake_above();
}
}
if (this._keepAtBottom) {
this._window.lower();
}
if (this._fixed && (this._x !== null) && (this._y !== null)) {
this._window.move_frame(true, this._x, this._y);
}
this._changedStatusCB(this);
}
}
refreshState(checkWorkspace) {
if (checkWorkspace && this._showInAllDesktops) {
let currentWorkspace = global.workspace_manager.get_active_workspace();
if (!this._window.located_on_workspace(currentWorkspace)) {
this._window.change_workspace(currentWorkspace);
}
}
if (this._keepAtBottom) {
this._window.lower();
}
}
get hideFromWindowList() {
return this._hideFromWindowList;
}
get keepAtBottom() {
return this._keepAtBottom;
}
}
export class EmulateX11WindowType {
/*
This class makes all the heavy lifting for emulating WindowType.
Just make one instance of it, call enable(), and whenever a window
that you want to give "superpowers" is mapped, add it with the
"addWindow" method. That's all.
*/
constructor() {
this._isX11 = !Meta.is_wayland_compositor();
this._windowList = [];
this._enableRefresh = true;
this._waylandClient = null;
this._monitorData = [];
}
setMonitorData(data) {
this._monitorData = data;
}
getMonitorData(idx) {
if (idx >= this._monitorData.length) {
return null;
}
return this._monitorData[idx];
}
setWaylandClient(client) {
this._waylandClient = client;
for (let window of this._windowList) {
if (window.customJS_ding) {
window.customJS_ding.setWaylandClient(this._waylandClient);
}
}
}
enable() {
if (this._isX11) {
return;
}
this._idMap = global.window_manager.connect_after('map', (obj, windowActor) => {
let window = windowActor.get_meta_window();
if (this._waylandClient && this._waylandClient.query_window_belongs_to(window)) {
this.addWindow(window);
}
this._refreshWindows(false);
});
this._idDestroy = global.window_manager.connect_after('destroy', (wm, windowActor) => {
// if a window is closed, ensure that the desktop doesn't receive the focus
let window = windowActor.get_meta_window();
if (window && (window.get_window_type() >= Meta.WindowType.DROPDOWN_MENU)) {
return;
}
this._refreshWindows(true);
});
/* Something odd happens with "stick" when using popup submenus, so
this implements the same functionality
*/
this._switchWorkspaceId = global.window_manager.connect('switch-workspace', () => {
this._refreshWindows(true);
});
/* But in Overview mode it is paramount to not change the workspace to emulate
"stick", or the windows will appear
*/
this._showingId = Main.overview.connect('showing', () => {
this._enableRefresh = false;
});
this._hidingId = Main.overview.connect('hiding', () => {
this._enableRefresh = true;
this._refreshWindows(true);
});
}
disable() {
if (this._isX11) {
return;
}
if (this._activate_window_ID) {
GLib.source_remove(this._activate_window_ID);
this._activate_window_ID = null;
}
for (let window of this._windowList) {
this._clearWindow(window);
}
this._windowList = [];
// disconnect signals
if (this._idMap) {
global.window_manager.disconnect(this._idMap);
this._idMap = null;
}
if (this._idDestroy) {
global.window_manager.disconnect(this._idDestroy);
this._idDestroy = null;
}
if (this._switchWorkspaceId) {
global.window_manager.disconnect(this._switchWorkspaceId);
this._switchWorkspaceId = null;
}
if (this._showingId) {
Main.overview.disconnect(this._showingId);
this._showingId = null;
}
if (this._hidingId) {
Main.overview.disconnect(this._hidingId);
this._hidingId = null;
}
}
addWindow(window) {
if (this._isX11) {
return;
}
if (window.get_meta_window) { // it is a MetaWindowActor
window = window.get_meta_window();
}
window.customJS_ding = new ManageWindow(window, this._waylandClient, this, () => {
this._refreshWindows(true);
});
this._windowList.push(window);
window.customJS_ding.unmanagedID = window.connect('unmanaged', window => {
this._clearWindow(window);
this._windowList = this._windowList.filter(item => item !== window);
});
}
refreshWindowsPosition() {
this._windowList.forEach(window => {window.customJS_ding.refreshWindowPosition();});
}
_clearWindow(window) {
window.disconnect(window.customJS_ding.unmanagedID);
window.customJS_ding.disconnect();
window.customJS_ding = null;
}
_refreshWindows(checkWorkspace) {
if (!this._activate_window_ID) {
this._activate_window_ID = GLib.idle_add(GLib.PRIORITY_LOW, () => {
if (this._enableRefresh) {
for (let window of this._windowList) {
window.customJS_ding.refreshState(checkWorkspace);
}
if (checkWorkspace) {
// activate the top-most window
let windows = global.display.get_tab_list(Meta.TabList.NORMAL_ALL, global.workspace_manager.get_active_workspace());
let anyActive = false;
for (let window of windows) {
if ((!window.customJS_ding || !window.customJS_ding._keepAtBottom) && !window.minimized) {
Main.activateWindow(window);
anyActive = true;
break;
}
}
if (!anyActive) {
for (let window of this._windowList) {
if (window.customJS_ding && window.customJS_ding._keepAtBottom && !window.minimized) {
Main.activateWindow(window);
break;
}
}
}
}
}
this._activate_window_ID = null;
return GLib.SOURCE_REMOVE;
});
}
}
};
desktop-icons-ng-49.0.5-c32667693d0831c29e3ab3f7bfeb675ea1531a00/export-zip.sh 0000775 0000000 0000000 00000003120 15064747536 0025037 0 ustar 00root root 0000000 0000000 #!/usr/bin/env bash
# Export extension as zip file for extensions.gnome.org
# ----------------------------------------------------
#
# Usage:
# ./export-zip.sh - builds extension & create zip inside repository
set -e
REPO_DIR="$(pwd)"
BUILD_DIR="${REPO_DIR}/builddir"
UUID="ding@rastersoft.com"
LOCAL_PREFIX="${REPO_DIR}/${UUID}"
EXTENSIONS_DIR="${LOCAL_PREFIX}/share/gnome-shell/extensions/${UUID}"
SCHEMADIR="${LOCAL_PREFIX}/share/glib-2.0/schemas"
# Check old builddir
if [ -d "${PWD}/${BUILD_DIR}" ]; then
echo "A current build directory already exists. Would you like to remove it?"
select yn in "Yes" "No"; do
case $yn in
Yes )
rm -rf "${PWD:?}/${BUILD_DIR}"
echo "Build directory was removed succesfuly"
break;;
No )
echo "The old build directory must be removed first. Exiting"
exit;;
esac
done
fi
# Meson build
echo "# -------------------"
echo "# Buiding with meson"
echo "# -------------------"
meson setup --prefix="${LOCAL_PREFIX}" --localedir=locale "${BUILD_DIR}" "${REPO_DIR}"
ninja -C "${BUILD_DIR}" install
# Create distribution ZIP file
echo -e "\\n# --------------------------"
echo "# Create extension ZIP file"
echo "# --------------------------"
rm -rf "${REPO_DIR}/${UUID}.zip" "${LOCAL_PREFIX}/${UUID}.zip"
cd "${LOCAL_PREFIX}" || exit
mkdir schemas
cp "${SCHEMADIR}"/*.xml schemas/
glib-compile-schemas schemas/
cp -r "${EXTENSIONS_DIR}"/* .
zip -qr "${UUID}.zip" ./*.js ./*.css ./*.json ./locale ./schemas ./app
mv -f "${UUID}.zip" "${REPO_DIR}/"
cd "${REPO_DIR}" || exit
# Clean
rm -rf "${BUILD_DIR}" "${LOCAL_PREFIX}"
desktop-icons-ng-49.0.5-c32667693d0831c29e3ab3f7bfeb675ea1531a00/extension.js 0000664 0000000 0000000 00000062173 15064747536 0024746 0 ustar 00root root 0000000 0000000 /* DING: Desktop Icons New Generation for GNOME Shell
*
* Copyright (C) 2019 Sergio Costas (rastersoft@gmail.com)
* Based on code original (C) Carlos Soriano
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, version 3 of the License.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
'use strict';
import Clutter from 'gi://Clutter'
import GLib from 'gi://GLib'
import Gio from 'gi://Gio'
import Meta from 'gi://Meta'
import St from 'gi://St'
import {Extension} from 'resource:///org/gnome/shell/extensions/extension.js';
import * as Main from 'resource:///org/gnome/shell/ui/main.js'
import * as EmulateX11 from './emulateX11WindowType.js';
import * as VisibleArea from './visibleArea.js';
import * as GnomeShellOverride from './gnomeShellOverride.js';
const Clipboard = St.Clipboard.get_default();
const CLIPBOARD_TYPE = St.ClipboardType.CLIPBOARD;
export default class DING extends Extension {
constructor(metadata) {
super(metadata);
this.DesktopIconsUsableArea = null;
this.data = {};
this.data.isEnabled = false;
this.data.launchDesktopId = 0;
this.data.currentProcess = null;
this.data.dbusTimeoutId = 0;
this.data.switchWorkspaceId = 0;
this.data.GnomeShellOverride = null;
/* The constructor of the EmulateX11 class only initializes some
* internal properties, but nothing else. In fact, it has its own
* enable() and disable() methods. That's why it could have been
* created here, in init(). But since the rule seems to be NO CLASS
* CREATION IN INIT UNDER NO CIRCUMSTANCES...
*/
this.data.x11Manager = null;
this.data.visibleArea = null;
/* Ensures that there aren't "rogue" processes.
* This is a safeguard measure for the case of Gnome Shell being
* relaunched (for example, under X11, with Alt+F2 and R), to kill
* any old DING instance. That's why it must be here, in init(),
* and not in enable() or disable() (disable already guarantees that
* the current instance is killed).
*/
this.doKillAllOldDesktopProcesses();
}
enable() {
if (!this.data.GnomeShellOverride) {
this.data.GnomeShellOverride = new GnomeShellOverride.GnomeShellOverride();
}
if (!this.data.x11Manager) {
this.data.x11Manager = new EmulateX11.EmulateX11WindowType();
}
if (!this.DesktopIconsUsableArea) {
this.DesktopIconsUsableArea = new VisibleArea.VisibleArea();
this.data.visibleArea = this.DesktopIconsUsableArea;
}
// If the desktop is still starting up, we wait until it is ready
if (Main.layoutManager._startingUp) {
this.data.startupPreparedId = Main.layoutManager.connect('startup-complete', () => this.innerEnable());
} else {
this.data.startupPreparedId = null;
this.innerEnable();
}
}
disable() {
this.DesktopIconsUsableArea = null;
this.data.isEnabled = false;
this.killCurrentProcess();
this.data.GnomeShellOverride.disable();
this.data.x11Manager.disable();
this.data.visibleArea.disable();
if (this.data.doCopyId) {
this.data.doCopy.disconnect(this.data.doCopyId);
this.data.doCopyId = 0;
this.data.doCopy = undefined;
}
if (this.data.switchWorkspaceId) {
global.window_manager.disconnect(this.data.switchWorkspaceId);
this.data.switchWorkspaceId = 0;
}
if (this.data.doCutId) {
this.data.doCut.disconnect(this.data.doCutId);
this.data.doCutId = 0;
this.data.doCut = undefined;
}
if (this.data.disableTimerId) {
this.data.disableTimer.disconnect(this.data.disableTimerId);
this.data.disableTimerId = 0;
this.data.disableTimer = undefined;
}
this.data.desktopGeometry = undefined;
// disconnect signals only if connected
if (this.data.dbusConnectionGroupId) {
this.data.dbusConnection.unexport_action_group(this.data.dbusConnectionGroupId);
this.data.dbusConnectionGroupId = 0;
this.data.dbusConnection = undefined;
}
if (this.data.dbusConnectionId) {
Gio.bus_unown_name(this.data.dbusConnectionId);
this.data.dbusConnectionId = 0;
}
this.data.actionGroup = undefined;
if (this.data.visibleAreaId) {
this.data.visibleArea.disconnect(this.data.visibleAreaId);
this.data.visibleAreaId = 0;
}
if (this.data.startupPreparedId) {
Main.layoutManager.disconnect(this.data.startupPreparedId);
this.data.startupPreparedId = 0;
}
if (this.data.monitorsChangedId) {
Main.layoutManager.disconnect(this.data.monitorsChangedId);
this.data.monitorsChangedId = 0;
}
if (this.data.workareasChangedId) {
global.display.disconnect(this.data.workareasChangedId);
this.data.workareasChangedId = 0;
}
if (this.data.sizeChangedId) {
global.window_manager.disconnect(this.data.sizeChangedId);
this.data.sizeChangedId = 0;
}
if (this.data.dbusTimeoutId) {
GLib.source_remove(this.data.dbusTimeoutId);
this.data.dbusTimeoutId = 0;
}
}
/**
* The true code that configures everything and launches the desktop program
*/
innerEnable() {
if (this.data.startupPreparedId !== null) {
Main.layoutManager.disconnect(this.data.startupPreparedId);
this.data.startupPreparedId = null;
}
this.data.GnomeShellOverride.enable();
// under X11 we don't need to cheat, so only do all this under wayland
if (Meta.is_wayland_compositor()) {
this.data.x11Manager.enable();
} else {
this.data.switchWorkspaceId = global.window_manager.connect('switch-workspace', () => {
let windows = global.display.get_tab_list(Meta.TabList.NORMAL_ALL, global.workspace_manager.get_active_workspace());
windows = global.display.sort_windows_by_stacking(windows);
if (windows.length) {
let topWindow = windows[windows.length - 1];
topWindow.focus(Clutter.CURRENT_TIME);
}
});
}
/*
* If the desktop geometry changes (because a new monitor has been added, for example),
* we kill the desktop program. It will be relaunched automatically with the new geometry,
* thus adapting to it on-the-fly.
*/
this.data.monitorsChangedId = Main.layoutManager.connect('monitors-changed', () => this.updateDesktopGeometry());
/*
* Any change in the workareas must be detected too, for example if the used size
* changes.
*/
this.data.workareasChangedId = global.display.connect('workareas-changed', () => this.updateDesktopGeometry());
/*
* This callback allows to detect a change in the working area (like when changing the Scale value)
*/
this.data.visibleAreaId = this.data.visibleArea.connect('updated-usable-area', () => this.updateDesktopGeometry());
this.data.isEnabled = true;
if (this.data.launchDesktopId) {
GLib.source_remove(this.data.launchDesktopId);
}
/*
* Due to a problem in the Clipboard API in Gtk3, it is not possible to do the CUT/COPY operation from
* dynamic languages like Javascript, because one of the methods needed is marked as NOT INTROSPECTABLE
*
* https://discourse.gnome.org/t/missing-gtk-clipboard-set-with-data-in-gtk-3/6920
*
* The right solution is to migrate DING to Gtk4, where the whole API is available, but that is a very
* big task, so in the meantime, we take advantage of the fact that the St API, in Gnome Shell, can put
* binary contents in the clipboard, so we use DBus to notify that we want to do a CUT or a COPY operation,
* passing the URIs as parameters, and delegate that to the DING Gnome Shell extension. This is easily done
* with a GLib.SimpleAction.
*/
this.data.dbusConnectionId = Gio.bus_own_name(Gio.BusType.SESSION, 'com.rastersoft.dingextension', Gio.BusNameOwnerFlags.NONE, null, (connection, name) => {
this.data.dbusConnection = connection;
this.data.doCopy = new Gio.SimpleAction({
name: 'doCopy',
parameter_type: new GLib.VariantType('as'),
});
this.data.doCut = new Gio.SimpleAction({
name: 'doCut',
parameter_type: new GLib.VariantType('as'),
});
this.data.disableTimer = new Gio.SimpleAction({
name: 'disableTimer',
});
this.data.desktopGeometry = Gio.SimpleAction.new_stateful('desktopGeometry', new GLib.VariantType('av'), this.getDesktopGeometry());
this.data.desktopGeometry.set_enabled(true);
this.data.doCopyId = this.data.doCopy.connect('activate', (action, parameters) => this.manageCutCopy(action, parameters));
this.data.doCutId = this.data.doCut.connect('activate', (action, parameters) => this.manageCutCopy(action, parameters));
this.data.disableTimerId = this.data.disableTimer.connect('activate', () => {
if (this.data.currentProcess && this.data.currentProcess.subprocess) {
this.data.currentProcess.cancel_timer();
}
});
this.data.actionGroup = new Gio.SimpleActionGroup();
this.data.actionGroup.add_action(this.data.doCopy);
this.data.actionGroup.add_action(this.data.doCut);
this.data.actionGroup.add_action(this.data.disableTimer);
this.data.actionGroup.add_action(this.data.desktopGeometry);
this.data.dbusConnectionGroupId = this.data.dbusConnection.export_action_group(
'/com/rastersoft/dingextension/control',
this.data.actionGroup
);
this.launchDesktop();
}, null);
}
/*
* Before Gnome Shell 40, St API couldn't access binary data in the clipboard, only text data. Also, the
* original Desktop Icons was a pure extension, so it was limited to what Clutter and St offered. That was
* the reason why Nautilus accepted a text format for CUT and COPY operations in the form
*
* x-special/nautilus-clipboard
* OPERATION
* FILE_URI
* [FILE_URI]
* [...]
*
* In Gnome Shell 40, St was enhanced and now it supports binary data; that's why Nautilus migrated to a
* binary format identified by the atom 'x-special/gnome-copied-files', where the CUT or COPY operation is
* shared.
*
*/
/**
*
* @param action
* @param parameters
*/
manageCutCopy(action, parameters) {
let content = '';
if (action.name == 'doCut') {
content += 'cut\n';
} else {
content += 'copy\n';
}
let first = true;
for (let file of parameters.recursiveUnpack()) {
if (!first) {
content += '\n';
}
first = false;
content += file;
}
let obj = new TextEncoder();
Clipboard.set_content(CLIPBOARD_TYPE, 'x-special/gnome-copied-files', new GLib.Bytes(obj.encode(content)));
}
/**
* Kills the current desktop program
*/
killCurrentProcess() {
if (this.data.launchDesktopId) {
GLib.source_remove(this.data.launchDesktopId);
this.data.launchDesktopId = 0;
}
// kill the desktop program. It will be reloaded automatically.
if (this.data.currentProcess && this.data.currentProcess.subprocess) {
this.data.currentProcess.cancel_timer();
this.data.currentProcess.cancellable.cancel();
this.data.currentProcess.subprocess.send_signal(15);
}
this.data.currentProcess = null;
this.data.x11Manager.setWaylandClient(null);
}
/**
*
*/
updateDesktopGeometry() {
if (this.data.actionGroup && (Main.layoutManager.monitors.length != 0)) {
this.data.actionGroup.change_action_state('desktopGeometry', this.getDesktopGeometry());
this.data.x11Manager.refreshWindowsPosition();
}
}
/**
*
*/
getDesktopGeometry() {
let desktopVariantList = [];
let desktopList = [];
let ws = global.workspace_manager.get_workspace_by_index(0);
for (let monitorIndex = 0; monitorIndex < Main.layoutManager.monitors.length; monitorIndex++) {
let area = this.data.visibleArea.getMonitorGeometry(ws, monitorIndex);
let monitorData = {
'x': area.x,
'y': area.y,
'width': area.width,
'height': area.height,
'zoom': area.scale,
'marginTop': area.marginTop,
'marginBottom': area.marginBottom,
'marginLeft': area.marginLeft,
'marginRight': area.marginRight,
monitorIndex,
'primaryMonitor': Main.layoutManager.primaryIndex,
};
let desktopListElement = new GLib.Variant('a{sd}', monitorData);
desktopVariantList.push(desktopListElement);
desktopList.push(monitorData);
}
this.data.x11Manager.setMonitorData(desktopList);
return new GLib.Variant('av', desktopVariantList);
}
/**
* This function checks all the processes in the system and kills those
* that are a desktop manager from the current user (but not others).
* This allows to avoid having several ones in case gnome shell resets,
* or other odd cases. It requires the /proc virtual filesystem, but
* doesn't fail if it doesn't exist.
*/
/**
*
*/
doKillAllOldDesktopProcesses() {
let procFolder = Gio.File.new_for_path('/proc');
if (!procFolder.query_exists(null)) {
return;
}
let fileEnum = procFolder.enumerate_children('standard::*', Gio.FileQueryInfoFlags.NONE, null);
let info;
while ((info = fileEnum.next_file(null))) {
let filename = info.get_name();
if (!filename) {
break;
}
let processPath = GLib.build_filenamev(['/proc', filename, 'cmdline']);
let processUser = Gio.File.new_for_path(processPath);
if (!processUser.query_exists(null)) {
continue;
}
let [binaryData, etag] = processUser.load_bytes(null);
let contents = '';
let readData = binaryData.get_data();
for (let i = 0; i < readData.length; i++) {
if (readData[i] < 32) {
contents += ' ';
} else {
contents += String.fromCharCode(readData[i]);
}
}
let path = `gjs ${GLib.build_filenamev([this.path, 'app', 'ding.js'])}`;
if (contents.startsWith(path)) {
let proc = new Gio.Subprocess({argv: ['/bin/kill', filename]});
proc.init(null);
proc.wait(null);
}
}
}
/**
*
* @param reloadTime
*/
doRelaunch(reloadTime) {
this.data.currentProcess = null;
this.data.x11Manager.setWaylandClient(null);
if (this.data.isEnabled) {
if (this.data.launchDesktopId) {
GLib.source_remove(this.data.launchDesktopId);
}
this.data.launchDesktopId = GLib.timeout_add(GLib.PRIORITY_DEFAULT, reloadTime, () => {
this.data.launchDesktopId = 0;
this.launchDesktop();
return false;
});
}
}
/**
* Launches the desktop program, passing to it the current desktop geometry for each monitor
* and the path where it is stored. It also monitors it, to relaunch it in case it dies or is
* killed. Finally, it reads STDOUT and STDERR and redirects them to the journal, to help to
* debug it.
*/
launchDesktop() {
console.log('Launching DING process');
let argv = [];
argv.push(GLib.build_filenamev([this.path, 'app', 'ding.js']));
// Specify that it must work as true desktop
argv.push('-E');
// The path. Allows the program to find translations, settings and modules.
argv.push('-P');
argv.push(GLib.build_filenamev([this.path, 'app']));
this.data.currentProcess = new LaunchSubprocess(0, 'DING');
this.data.currentProcess.set_cwd(GLib.get_home_dir());
if (this.data.currentProcess.spawnv(argv) === null) {
this.doRelaunch(1000);
return;
}
this.data.x11Manager.setWaylandClient(this.data.currentProcess);
this.data.launchTime = GLib.get_monotonic_time();
/*
* If the desktop process dies, wait 100ms and relaunch it, unless the exit status is different than
* zero, in which case it will wait one second. This is done this way to avoid relaunching the desktop
* too fast if it has a bug that makes it fail continuously, avoiding filling the journal too fast.
*/
this.data.currentProcess.subprocess.wait_async(null, (obj, res) => {
let delta = GLib.get_monotonic_time() - this.data.launchTime;
if (delta < 1000000) {
// If the process is dying over and over again, ensure that it isn't respawn faster than once per second
var reloadTime = 1000;
} else {
// but if the process just died after having run for at least one second, reload it ASAP
var reloadTime = 1;
}
obj.wait_finish(res);
if (!this.data.currentProcess || obj !== this.data.currentProcess.subprocess) {
return;
}
if (obj.get_if_exited()) {
obj.get_exit_status();
}
this.doRelaunch(reloadTime);
});
}
}
/**
* This class encapsulates the code to launch a subprocess that can detect whether a window belongs to it
* It only accepts to do it under Wayland, because under X11 there is no need to do these tricks
*
* It is compatible with https://gitlab.gnome.org/GNOME/mutter/merge_requests/754 to simplify the code
*
* @param {int} flags Flags for the SubprocessLauncher class
* @param {string} process_id An string id for the debug output
*/
class LaunchSubprocess {
constructor(flags, process_id) {
this._process_id = process_id;
this.cancellable = new Gio.Cancellable();
this._launcher = new Gio.SubprocessLauncher({flags: flags | Gio.SubprocessFlags.STDOUT_PIPE | Gio.SubprocessFlags.STDERR_MERGE});
this.subprocess = null;
this.process_running = false;
this._launch_timer = 0;
this._waiting_for_windows = 0;
}
spawnv(argv) {
try {
if (Meta.is_wayland_compositor()) {
if (Meta.WaylandClient.new_subprocess) {
// New API introduced in https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4491
this._waylandClient = Meta.WaylandClient.new_subprocess (global.context, this._launcher, argv);
this.subprocess = this._waylandClient.get_subprocess();
} else {
// Old APIs
try {
// Oldest API
this._waylandClient = Meta.WaylandClient.new(this._launcher);
} catch (e) {
// Not-so-old API
this._waylandClient = Meta.WaylandClient.new(global.context,
this._launcher);
}
this.subprocess = this._waylandClient.spawnv(global.display, argv);
}
} else {
this.subprocess = this._launcher.spawnv(argv);
}
} catch (e) {
this.subprocess = null;
console.log(`Error while trying to launch DING process: ${e.message}\n${e.stack}`);
}
// This is for GLib 2.68 or greater
if (this._launcher.close) {
this._launcher.close();
}
this._launcher = null;
if (this.subprocess) {
/*
* It reads STDOUT and STDERR and sends it to the journal using console.log(). This allows to
* have any error from the desktop app in the same journal than other extensions. Every line from
* the desktop program is prepended with the "process_id" parameter sent in the constructor.
*/
this._dataInputStream = Gio.DataInputStream.new(this.subprocess.get_stdout_pipe());
this.read_output();
this.subprocess.wait_async(this.cancellable, () => {
this.process_running = false;
this._dataInputStream = null;
this.cancellable = null;
if (this._launch_timer != 0) {
GLib.source_remove(this._launch_timer);
this._launch_timer = 0;
this._waiting_for_windows = 0;
}
});
this.process_running = true;
if (Meta.is_wayland_compositor() && (Main.layoutManager.monitors.length != 0)) {
// This ensures that, if the DING window isn't detected in three seconds
// after launch, the desktop will be killed and, thus, relaunched again.
this._waiting_for_windows = Main.layoutManager.monitors.length;
this._launch_timer = GLib.timeout_add(GLib.PRIORITY_DEFAULT, 3000, () => {
this._launch_timer = 0;
this.subprocess.force_exit();
return false;
});
}
}
return this.subprocess;
}
cancel_timer() {
if (this._launch_timer != 0) {
GLib.source_remove(this._launch_timer);
this._launch_timer = 0;
this._waiting_for_windows = 0;
}
}
set_cwd(cwd) {
this._launcher.set_cwd(cwd);
}
read_output() {
if (!this._dataInputStream) {
return;
}
this._dataInputStream.read_line_async(GLib.PRIORITY_DEFAULT, this.cancellable, (object, res) => {
try {
const [output, length] = object.read_line_finish_utf8(res);
if (length) {
print(`${this._process_id}: ${output}`);
}
} catch (e) {
if (e.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.CANCELLED)) {
return;
}
console.error(e, `${this._process_id}_Error`);
}
this.read_output();
});
}
/**
* Queries whether the passed window belongs to the launched subprocess or not.
*
* @param {MetaWindow} window The window to check.
*/
query_window_belongs_to(window) {
if (!Meta.is_wayland_compositor()) {
return false;
}
if (!this.process_running) {
return false;
}
try {
let ownsWindow = this._waylandClient.owns_window(window);
if (ownsWindow && (this._launch_timer != 0) && (this._waiting_for_windows != 0)) {
console.log(`Received notification for window. ${this._waiting_for_windows - 1} notifications remaining.`);
this._waiting_for_windows--;
if (this._waiting_for_windows == 0) {
GLib.source_remove(this._launch_timer);
this._launch_timer = 0;
}
}
return ownsWindow;
} catch (error) {
console.log(`Exception error: ${error.message}\n${error.stack}`);
return false;
}
}
show_in_window_list(window) {
if (Meta.is_wayland_compositor() && this.process_running) {
if (window.show_in_window_list) {
window.show_in_window_list();
} else {
this._waylandClient.show_in_window_list(window);
}
}
}
hide_from_window_list(window) {
if (Meta.is_wayland_compositor() && this.process_running) {
if (window.hide_from_window_list) {
window.hide_from_window_list();
} else {
this._waylandClient.hide_from_window_list(window);
}
}
}
};
desktop-icons-ng-49.0.5-c32667693d0831c29e3ab3f7bfeb675ea1531a00/global_install.sh 0000775 0000000 0000000 00000000337 15064747536 0025713 0 ustar 00root root 0000000 0000000 #!/bin/bash
PREFIX=/usr
sudo rm -rf ${PREFIX}/share/gnome-shell/extensions/ding@rastersoft.com/*
rm -rf .build
mkdir .build
meson setup --prefix=${PREFIX} .build
ninja -C .build
sudo ninja -C .build install
rm -rf .build
desktop-icons-ng-49.0.5-c32667693d0831c29e3ab3f7bfeb675ea1531a00/gnomeShellOverride.js 0000664 0000000 0000000 00000011570 15064747536 0026522 0 ustar 00root root 0000000 0000000 /* Gnome Shell Override
*
* Copyright (C) 2021 Sundeep Mediratta (smedius@gmail.com)
* Copyright (C) 2020 Sergio Costas (rastersoft@gmail.com)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, version 3 of the License.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
/* exported GnomeShellOverride */
'use strict';
import Shell from 'gi://Shell'
import Meta from 'gi://Meta'
import * as WorkspaceAnimation from 'resource:///org/gnome/shell/ui/workspaceAnimation.js'
var replaceData = {};
/*
* This class overrides methods in the Gnome Shell. The new methods
* need to be defined below the class as seperate functions.
* The old methods that are overriden can be accesed by relpacedata.old_'name-of-replaced-method'
* in the new functions
*/
export class GnomeShellOverride {
constructor() {
this._isX11 = !Meta.is_wayland_compositor();
}
enable() {
if (this._isX11) { // ** X11 Methods only
if (WorkspaceAnimation &&
WorkspaceAnimation.WorkspaceGroup !== undefined) {
this.replaceMethod(WorkspaceAnimation.WorkspaceGroup, '_shouldShowWindow', newShouldShowWindow);
}
} else { // ** Wayland replace methods below this
this.replaceMethod(Shell.Global, 'get_window_actors', newGetWindowActors);
}
}
// restore external methods only if have been intercepted
disable() {
for (let value of Object.values(replaceData)) {
if (value[0]) {
value[1].prototype[value[2]] = value[0];
}
}
replaceData = {};
}
/**
* Replaces a method in a class with our own method, and stores the original
* one in 'replaceData' using 'old_XXXX' (being XXXX the name of the original method),
* or 'old_classId_XXXX' if 'classId' is defined. This is done this way for the
* case that two methods with the same name must be replaced in two different
* classes
*
* @param {class} className The class where to replace the method
* @param {string} methodName The method to replace
* @param {Function} functionToCall The function to call as the replaced method
* @param {string} [classId] an extra ID to identify the stored method when two
* methods with the same name are replaced in
* two different classes
*/
replaceMethod(className, methodName, functionToCall, classId) {
if (className.prototype[methodName] === functionToCall) {
return;
}
if (classId) {
replaceData[`old_${classId}_${methodName}`] = [className.prototype[methodName], className, methodName, classId];
} else {
replaceData[`old_${methodName}`] = [className.prototype[methodName], className, methodName];
}
className.prototype[methodName] = functionToCall;
}
};
/**
* New Functions used to replace the gnome shell functions are defined below.
*/
/**
* Receives a list of metaWindow or metaWindowActor objects, and remove from it
* our desktop window
*
* @param {GList} windowList A list of metaWindow or metaWindowActor objects
* @returns {GList} The same list, but with the desktop window removed
*/
/**
*
* @param windowList
*/
function removeDesktopWindowFromList(windowList) {
let returnVal = [];
for (let element of windowList) {
let window = element;
if (window.get_meta_window) { // it is a MetaWindowActor
window = window.get_meta_window();
}
if (!window.customJS_ding || !window.customJS_ding.hideFromWindowList) {
returnVal.push(element);
}
}
return returnVal;
}
/**
* Method replacement for Shell.Global.get_window_actors
* It removes the desktop window from the list of windows in the Activities mode
*/
/**
*
*/
function newGetWindowActors() {
/* eslint-disable no-invalid-this */
let windowList = replaceData.old_get_window_actors[0].apply(this, []);
return removeDesktopWindowFromList(windowList);
}
/**
* Method replacement under X11 for should show window
* It removes the desktop window from the window animation
*/
/**
*
* @param window
*/
function newShouldShowWindow(window) {
if (window.get_window_type() === Meta.WindowType.DESKTOP) {
return false;
}
/* eslint-disable no-invalid-this */
return replaceData.old__shouldShowWindow[0].apply(this, [window]);
}
desktop-icons-ng-49.0.5-c32667693d0831c29e3ab3f7bfeb675ea1531a00/kill.py 0000775 0000000 0000000 00000000451 15064747536 0023673 0 ustar 00root root 0000000 0000000 #!/usr/bin/env python3
import subprocess
sp = subprocess.run(['ps', '-ax'], capture_output = True)
for linea in sp.stdout.decode('utf-8').split('\n'):
if -1 == linea.find("ding.js"):
continue
linea = linea.strip();
pid = linea.split(" ")[0]
subprocess.run(['kill', pid])
desktop-icons-ng-49.0.5-c32667693d0831c29e3ab3f7bfeb675ea1531a00/local_install.sh 0000775 0000000 0000000 00000000377 15064747536 0025551 0 ustar 00root root 0000000 0000000 #!/bin/bash
rm -rf ~/.local/share/gnome-shell/extensions/ding@rastersoft.com/*
rm -rf .build
mkdir .build
meson setup --prefix=$HOME/.local/ --localedir=share/gnome-shell/extensions/ding@rastersoft.com/locale .build
ninja -C .build install
rm -rf .build
desktop-icons-ng-49.0.5-c32667693d0831c29e3ab3f7bfeb675ea1531a00/meson.build 0000664 0000000 0000000 00000001226 15064747536 0024526 0 ustar 00root root 0000000 0000000 project('ding',
version: '49',
license: 'GPL3'
)
gnome = import ('gnome')
i18n = import('i18n')
prefix = get_option('prefix')
datadir = join_paths (prefix, get_option('datadir'))
schema_dir = join_paths(datadir, 'glib-2.0', 'schemas')
extensions_dir = join_paths(prefix, 'share', 'gnome-shell', 'extensions', 'ding@rastersoft.com')
install_data([
'emulateX11WindowType.js',
'extension.js',
'gnomeShellOverride.js',
'metadata.json',
'prefs.js',
'visibleArea.js'
],
install_dir: extensions_dir
)
subdir(
'app'
)
subdir(
'po'
)
subdir(
'schemas'
)
subdir(
'apparmor'
)
meson.add_install_script('meson_post_install.py')
desktop-icons-ng-49.0.5-c32667693d0831c29e3ab3f7bfeb675ea1531a00/meson_post_install.py 0000664 0000000 0000000 00000000767 15064747536 0026663 0 ustar 00root root 0000000 0000000 #!/usr/bin/python3
import os
import subprocess
prefix = os.environ['MESON_INSTALL_DESTDIR_PREFIX']
schemadir = os.path.join(prefix, 'share', 'glib-2.0', 'schemas')
# Packaging tools define DESTDIR and this isn't needed for them
if 'DESTDIR' not in os.environ:
print('Compiling GSettings schemas...')
subprocess.call(['glib-compile-schemas', schemadir])
if prefix.startswith('/usr'):
print('Reloading apparmor rules...')
subprocess.call(['systemctl', 'reload', 'apparmor']) desktop-icons-ng-49.0.5-c32667693d0831c29e3ab3f7bfeb675ea1531a00/metadata.json 0000664 0000000 0000000 00000000464 15064747536 0025042 0 ustar 00root root 0000000 0000000 {
"description": "Adds icons to the desktop. Fork of the original Desktop Icons extension, with several enhancements .",
"name": "Desktop Icons NG (DING)",
"shell-version": ["46", "47", "48", "49"],
"uuid": "ding@rastersoft.com",
"url": "https://gitlab.com/rastersoft/desktop-icons-ng"
}
desktop-icons-ng-49.0.5-c32667693d0831c29e3ab3f7bfeb675ea1531a00/po/ 0000775 0000000 0000000 00000000000 15064747536 0023001 5 ustar 00root root 0000000 0000000 desktop-icons-ng-49.0.5-c32667693d0831c29e3ab3f7bfeb675ea1531a00/po/LINGUAS 0000664 0000000 0000000 00000000141 15064747536 0024022 0 ustar 00root root 0000000 0000000 ar
be
ca
cs
da
de
es
fi
fr
fur
he
hr
hu
id
it
ja
ko
nl
oc
pl
pt_BR
ro
ru
sk
sv
tr
uk
zh_CN
zh_TW
desktop-icons-ng-49.0.5-c32667693d0831c29e3ab3f7bfeb675ea1531a00/po/POTFILES.in 0000664 0000000 0000000 00000001035 15064747536 0024555 0 ustar 00root root 0000000 0000000 app/askRenamePopup.js
app/autoAr.js
app/createThumbnail.js
app/dbusUtils.js
app/desktopGrid.js
app/desktopIconItem.js
app/desktopIconsIntegration.js
app/desktopIconsUtil.js
app/desktopManager.js
app/ding.js
emulateX11WindowType.js
app/enums.js
extension.js
app/fileItem.js
app/fileItemMenu.js
app/fileUtils.js
app/notifyX11UnderWayland.js
app/preferences.js
prefs.js
app/prefswindow.js
app/showErrorPopup.js
app/stackItem.js
app/templatesScriptsManager.js
app/thumbnails.js
visibleArea.js
schemas/org.gnome.shell.extensions.ding.gschema.xml
desktop-icons-ng-49.0.5-c32667693d0831c29e3ab3f7bfeb675ea1531a00/po/ar.po 0000664 0000000 0000000 00000066625 15064747536 0023762 0 ustar 00root root 0000000 0000000 # Arabic translation for ding.
# Copyright (C) 2025 ding's COPYRIGHT HOLDER
# This file is distributed under the same license as the ding package.
# Ahmed Najmawi , 2025.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: ding\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-06-29 16:52+0200\n"
"PO-Revision-Date: 2025-07-08 02:36+0300\n"
"Last-Translator: Ahmed Najmawi \n"
"Language-Team: \n"
"Language: ar\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=6; plural=(n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 "
"&& n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5);\n"
"X-Generator: Poedit 3.6\n"
#: app/askRenamePopup.js:49
msgid "Folder name"
msgstr "اسم المجلَّد"
#: app/askRenamePopup.js:49
msgid "File name"
msgstr "اسم الملف"
#: app/askRenamePopup.js:57 app/autoAr.js:305 app/desktopManager.js:1002
msgid "OK"
msgstr "حسنًا"
#: app/askRenamePopup.js:57
msgid "Rename"
msgstr "أعِد التسمية"
#: app/autoAr.js:88
msgid "AutoAr is not installed"
msgstr "الأداة AutoAr غير منصَّبة"
#: app/autoAr.js:89
msgid ""
"To be able to work with compressed files, install file-roller and/or gir-1.2-"
"gnomeAutoAr"
msgstr ""
"لتتمكن من التعامل مع الملفات المضغوطة، نصِّب file-roller و/أو gir-1.2-"
"gnomeAutoAr"
#: app/autoAr.js:224
msgid "Extracting files"
msgstr "تُستخرج الملفات"
#: app/autoAr.js:241
msgid "Compressing files"
msgstr "تُضغط الملفات"
#: app/autoAr.js:297 app/autoAr.js:636 app/desktopManager.js:1004
#: app/fileItemMenu.js:474
msgid "Cancel"
msgstr "ألغِ"
#: app/autoAr.js:318 app/autoAr.js:619
msgid "Enter a password here"
msgstr "أدخل كلمة السر هنا"
#: app/autoAr.js:359
msgid "Removing partial file '${outputFile}'"
msgstr "تُزال بقايا الملف '${outputFile}'"
#: app/autoAr.js:378
msgid "Creating destination folder"
msgstr "يُنشئ مجلَّد الوجهة"
#: app/autoAr.js:410
msgid "Extracting files into '${outputPath}'"
msgstr "تُستخرج الملفات إلى '${outputPath}'"
#: app/autoAr.js:442
msgid "Extraction completed"
msgstr "اكتمل الاستخراج"
#: app/autoAr.js:443
msgid "Extracting '${fullPathFile}' has been completed."
msgstr "اكتمل استخراج '${fullPathFile}'."
#: app/autoAr.js:449
msgid "Extraction cancelled"
msgstr "أُلغي الاستخراج"
#: app/autoAr.js:450
msgid "Extracting '${fullPathFile}' has been cancelled by the user."
msgstr "ألغى المستخدم استخراج '${fullPathFile}'."
#: app/autoAr.js:460
msgid "Passphrase required for ${filename}"
msgstr "كلمة السر مطلوبة لِـ${filename}"
#: app/autoAr.js:463
msgid "Error during extraction"
msgstr "خطأ أثناء الاستخراج"
#: app/autoAr.js:492
msgid "Compressing files into '${outputFile}'"
msgstr "تُضغط الملفات في '${outputFile}'"
#: app/autoAr.js:505
msgid "Compression completed"
msgstr "اكتمل الضغط"
#: app/autoAr.js:506
msgid "Compressing files into '${outputFile}' has been completed."
msgstr "اكتمل ضغط الملفات في '${outputFile}'."
#: app/autoAr.js:510 app/autoAr.js:517
msgid "Cancelled compression"
msgstr "أُلغي الضغط"
#: app/autoAr.js:511
msgid "The output file '${outputFile}' already exists."
msgstr "الملف الناتج '${outputFile}' موجود بالفعل."
#: app/autoAr.js:518
msgid "Compressing files into '${outputFile}' has been cancelled by the user."
msgstr "ألغى المستخدم ضغط الملفات في '${outputFile}'."
#: app/autoAr.js:521
msgid "Error during compression"
msgstr "خطأ أثناء الضغط"
#: app/autoAr.js:554
msgid "Create archive"
msgstr "أنشئ أرشيفًا"
#: app/autoAr.js:579
msgid "Archive name"
msgstr "اسم الأرشيف"
#: app/autoAr.js:614
msgid "Password"
msgstr "كلمة السر"
#: app/autoAr.js:633
msgid "Create"
msgstr "أنشئ"
#: app/autoAr.js:712
msgid "Compatible with all operating systems."
msgstr "متوافق مع جميع أنظمة التشغيل."
#: app/autoAr.js:718
msgid "Password protected .zip, must be installed on Windows and Mac."
msgstr "ملف .zip محمي بكلمة سر، ويجب تنصيبه على ويندوز وماك."
#: app/autoAr.js:724
msgid "Smaller archives but Linux and Mac only."
msgstr "أراشيف أصغر حجمًا ولكن للينكس وماك فقط."
#: app/autoAr.js:730
msgid "Smaller archives but must be installed on Windows and Mac."
msgstr "أراشيف أصغر حجمًا ولكن يجب تنصيبها على ويندوز وماك."
#: app/dbusUtils.js:69
msgid "\"${programName}\" is needed for Desktop Icons"
msgstr "أيقونات سطح المكتب بحاجة إلى \"${programName}\""
#: app/dbusUtils.js:70
msgid ""
"For this functionality to work in Desktop Icons, you must install \"$"
"{programName}\" in your system."
msgstr ""
"لكي تعمل هذه الوظيفة في أيقونات سطح المكتب، يجب أن تنصِّب \"${programName}\" "
"على نظامك."
#: app/desktopIconsUtil.js:154
msgid "Command not found"
msgstr "الأمر غير موجود"
#: app/desktopManager.js:259
msgid "Nautilus File Manager not found"
msgstr "مدير الملفات نوتلس غير موجود"
#: app/desktopManager.js:260
msgid "The Nautilus File Manager is mandatory to work with Desktop Icons NG."
msgstr "مدير الملفات نوتلس إلزامي لعمل امتداد «أيقونات سطح المكتب NG»."
#: app/desktopManager.js:964
msgid "Clear Current Selection before New Search"
msgstr "امحُ التحديد الحالي قبل البحث الجديد"
#: app/desktopManager.js:1006
msgid "Find Files on Desktop"
msgstr "ابحث عن ملفات على سطح المكتب"
#: app/desktopManager.js:1074 app/desktopManager.js:1786
msgid "New Folder"
msgstr "مجلَّد جديد"
#: app/desktopManager.js:1078
msgid "New Document"
msgstr "مستند جديد"
#: app/desktopManager.js:1083
msgid "Paste"
msgstr "ألصِق"
#: app/desktopManager.js:1087
msgid "Undo"
msgstr "تراجع"
#: app/desktopManager.js:1091
msgid "Redo"
msgstr "أعِد"
#: app/desktopManager.js:1097
msgid "Select All"
msgstr "حدِّد الكل"
#: app/desktopManager.js:1105
msgid "Show Desktop in Files"
msgstr "اعرض سطح المكتب في مدير الملفات"
#: app/desktopManager.js:1109 app/fileItemMenu.js:365
msgid "Open in Terminal"
msgstr "افتح في الطرفية"
#: app/desktopManager.js:1115
msgid "Change Background…"
msgstr "غيِّر الخلفية…"
#: app/desktopManager.js:1126
msgid "Desktop Icons Settings"
msgstr "إعدادات أيقونات سطح المكتب"
#: app/desktopManager.js:1139
msgid "Display Settings"
msgstr "إعدادات العرض"
#: app/desktopManager.js:1799
msgid "Folder Creation Failed"
msgstr "تعذَّر إنشاء المجلَّد"
#: app/desktopManager.js:1800
msgid "Error while trying to create a Folder"
msgstr "خطأ أثناء محاولة إنشاء مجلَّد"
#: app/desktopManager.js:1836
msgid "Template Creation Failed"
msgstr "تعذَّر إنشاء القالب"
#: app/desktopManager.js:1837
msgid "Error while trying to create a Document"
msgstr "خطأ أثناء محاولة إنشاء مستند"
#: app/desktopManager.js:1845
msgid "Arrange Icons"
msgstr "رتِّب الأيقونات"
#: app/desktopManager.js:1849
msgid "Arrange By..."
msgstr "رتِّب حسب..."
#: app/desktopManager.js:1858
msgid "Keep Arranged..."
msgstr "أبقِها مرتَّبة..."
#: app/desktopManager.js:1862
msgid "Keep Stacked by type..."
msgstr "أبقِها مكدَّسة حسب النوع..."
#: app/desktopManager.js:1867
msgid "Sort Home/Drives/Trash..."
msgstr "افرز المنزل\\محركات الأقراص\\المهملات..."
#: app/desktopManager.js:1873
msgid "Sort by Name"
msgstr "افرز حسب الاسم"
#: app/desktopManager.js:1875
msgid "Sort by Name Descending"
msgstr "افرز حسب الاسم (تنازليًا)"
#: app/desktopManager.js:1878
msgid "Sort by Modified Time"
msgstr "افرز حسب تاريخ التعديل"
#: app/desktopManager.js:1881
msgid "Sort by Type"
msgstr "افرز حسب النوع"
#: app/desktopManager.js:1884
msgid "Sort by Size"
msgstr "افرز حسب الحجم"
#. * TRANSLATORS: when using a screen reader, this is the text read when a folder is
#. selected. Example: if a folder named "things" is selected, it will say "things Folder"
#: app/fileItem.js:64
msgid "${VisibleName} Folder"
msgstr "مجلَّد ${VisibleName}"
#. * TRANSLATORS: when using a screen reader, this is the text read when a normal file is
#. selected. Example: if a file named "my_picture.jpg" is selected, it will say "my_picture.jpg File"
#: app/fileItem.js:68
msgid "${VisibleName} File"
msgstr "ملف ${VisibleName}"
#. TRANSLATORS: "Home" is the text that will be shown in the user's personal folder
#: app/fileItem.js:72 app/fileItem.js:203
msgid "Home"
msgstr "المنزل"
#. * TRANSLATORS: when using a screen reader, this is the text read when the trash folder is
#. selected.
#: app/fileItem.js:77
msgid "Trash"
msgstr "المهملات"
#. * TRANSLATORS: when using a screen reader, this is the text read when an external drive is
#. selected. Example: if a USB stick named "my_portable" is selected, it will say "my_portable Drive"
#: app/fileItem.js:82
msgid "${VisibleName} Drive"
msgstr "محرك أقراص ${VisibleName}"
#. * TRANSLATORS: when using a screen reader, this is the text read when a stack is
#. selected. Example: if a stack named "pictures" is selected, it will say "pictures Stack"
#: app/fileItem.js:87
msgid "${VisibleName} Stack"
msgstr "كدسة ${VisibleName}"
#: app/fileItem.js:295
msgid "Error while reading Desktop file"
msgstr "خطأ أثناء قراءة ملف سطح المكتب"
#: app/fileItem.js:337
msgid "Broken Link"
msgstr "وصلة معطوبة"
#: app/fileItem.js:338
msgid "Can not open this File because it is a Broken Symlink"
msgstr "لا يمكن فتح هذا الملف لأنه وصلة رمزية معطوبة"
#: app/fileItem.js:370
msgid "Can't open the file"
msgstr "لا يمكن فتح الملف"
#: app/fileItem.js:396
msgid "Broken Desktop File"
msgstr "ملف سطح مكتب معطوب"
#: app/fileItem.js:397
msgid ""
"This .desktop file has errors or points to a program without permissions. It "
"can not be executed.\n"
"\n"
"\tEdit the file to set the correct executable Program."
msgstr ""
"ملف .desktop هذا به أخطاء أو يشير إلى برنامج لا يمكن تشغيله دون صلاحيات.\n"
"\n"
"\tحرِّر الملف لتعيين البرنامج التنفيذي الصحيح."
#: app/fileItem.js:403
msgid "Invalid Permissions on Desktop File"
msgstr "صلاحيات ملف سطح المكتب غير صالحة"
#: app/fileItem.js:404
msgid ""
"This .desktop File has incorrect Permissions. Right Click to edit Properties, "
"then:\n"
msgstr ""
"ملف .desktop هذا لديه صلاحيات خاطئة. انقر بالزر الأيمن لتعديل الخصائص، ثم:\n"
#: app/fileItem.js:406
msgid ""
"\n"
"Set Permissions, in \"Others Access\", \"Read Only\" or \"None\""
msgstr ""
"\n"
"اضبط الصلاحيات في «وصول الآخرين»على «قراءة فقط» أو «لا شيء»"
#: app/fileItem.js:409
msgid ""
"\n"
"Enable option, \"Allow Executing File as a Program\""
msgstr ""
"\n"
"فعِّل خيار «السماح بتنفيذ الملف كبرنامج»"
#: app/fileItem.js:417
msgid ""
"This .desktop file is not trusted, it can not be launched. To enable "
"launching, right-click, then:\n"
"\n"
"Enable \"Allow Launching\""
msgstr ""
"ملف .desktop هذا غير موثوق، ولا يمكن إطلاقه. لتمكين إطلاقه، انقر بالزر "
"الأيمن، ثم:\n"
"\n"
"فعِّل «السماح بالإطلاق»"
#: app/fileItem.js:620
msgid "Failed to set execution flag"
msgstr "تعذَّر تعيين راية التنفيذ"
#: app/fileItem.js:632 app/fileItem.js:639
msgid "Could not apply discrete GPU environment"
msgstr "تعذَّر تطبيق بيئة معالج الرسوميات المنفصل"
#: app/fileItem.js:668
msgid "Could not find discrete GPU data"
msgstr "تعذَّر العثور على بيانات معالج الرسوميات المنفصل"
#: app/fileItem.js:793
msgid "Failed to set metadata::trusted flag"
msgstr "تعذَّر تعيين راية الوثوق في البيانات الوصفية"
#: app/fileItemMenu.js:143
msgid "Open All..."
msgstr "افتح الكل..."
#: app/fileItemMenu.js:143
msgid "Open"
msgstr "افتح"
#: app/fileItemMenu.js:160
msgid "Stack This Type"
msgstr "كدِّس هذا النوع"
#: app/fileItemMenu.js:160
msgid "Unstack This Type"
msgstr "فك تكديس هذا النوع"
#: app/fileItemMenu.js:173
msgid "Scripts"
msgstr "إخطاطات"
#: app/fileItemMenu.js:178
msgid "Open All With Other Application..."
msgstr "افتح الكل بواسطة تطبيق آخر..."
#: app/fileItemMenu.js:178
msgid "Open With Other Application"
msgstr "افتح بواسطة تطبيق آخر"
#: app/fileItemMenu.js:184
msgid "Launch using Dedicated Graphics Card"
msgstr "شغِّل باستخدام بطاقة الرسوميات المخصصة"
#: app/fileItemMenu.js:195
msgid "Run as a program"
msgstr "شغِّل كبرنامج"
#: app/fileItemMenu.js:203
msgid "Cut"
msgstr "قص"
#: app/fileItemMenu.js:210
msgid "Copy"
msgstr "انسخ"
#: app/fileItemMenu.js:218
msgid "Rename…"
msgstr "أعِد التسمية…"
#: app/fileItemMenu.js:228
msgid "Move to Trash"
msgstr "انقل إلى المهملات"
#: app/fileItemMenu.js:236
msgid "Delete permanently"
msgstr "احذف نهائيًا"
#: app/fileItemMenu.js:246
msgid "Don't Allow Launching"
msgstr "لا تسمح بالإطلاق"
#: app/fileItemMenu.js:246
msgid "Allow Launching"
msgstr "اسمح بالإطلاق"
#: app/fileItemMenu.js:259
msgid "Empty Trash"
msgstr "أفرغ المهملات"
#: app/fileItemMenu.js:272
msgid "Eject"
msgstr "أخرِج"
#: app/fileItemMenu.js:280
msgid "Unmount"
msgstr "فك الوصل"
#: app/fileItemMenu.js:294 app/fileItemMenu.js:301
msgid "Extract Here"
msgstr "استخرج هنا"
#: app/fileItemMenu.js:308
msgid "Extract To..."
msgstr "استخرج إلى..."
#: app/fileItemMenu.js:317
msgid "Send to..."
msgstr "أرسل إلى..."
#: app/fileItemMenu.js:325
msgid "Compress {0} folder"
msgid_plural "Compress {0} folders"
msgstr[0] "لم يُضغط مجلَّد"
msgstr[1] "ضُغط مجلَّد"
msgstr[2] "ضُغط مجلَّدان"
msgstr[3] "ضُغطت {0} مجلَّدات"
msgstr[4] "ضُغط {0} مجلَّدًا"
msgstr[5] "ضُغط {0} مجلّّد"
#: app/fileItemMenu.js:332
msgid "Compress {0} file"
msgid_plural "Compress {0} files"
msgstr[0] "لم يُضغط ملف"
msgstr[1] "ضُغط ملف"
msgstr[2] "ضُغط ملفان"
msgstr[3] "ضُغطت {0} ملفات"
msgstr[4] "ضُغط {0} ملفًا"
msgstr[5] "ضُغط {0} ملف"
#: app/fileItemMenu.js:340
msgid "New Folder with {0} item"
msgid_plural "New Folder with {0} items"
msgstr[0] "مجلَّد جديد دون عناصر"
msgstr[1] "مجلَّد جديد بعنصر واحد"
msgstr[2] "مجلَّد جديد بعنصرين"
msgstr[3] "مجلَّد جديد بـ{0} عناصر"
msgstr[4] "مجلَّد جديد بـ{0} عنصرًا"
msgstr[5] "مجلَّد جديد بـ{0} عنصر"
#: app/fileItemMenu.js:351
msgid "Common Properties"
msgstr "الخصائص المشتركة"
#: app/fileItemMenu.js:351
msgid "Properties"
msgstr "الخصائص"
#: app/fileItemMenu.js:358
msgid "Show All in Files"
msgstr "اعرض الكل في تطبيق الملفات"
#: app/fileItemMenu.js:358
msgid "Show in Files"
msgstr "اعرض في تطبيق الملفات"
#: app/fileItemMenu.js:449
msgid "No Extraction Folder"
msgstr "لا مجلَّد للاستخراج"
#: app/fileItemMenu.js:450
msgid "Unable to extract File, extraction Folder Does not Exist"
msgstr "تعذَّر استخراج الملف، فمجلَّد الاستخراج غير موجود"
#: app/fileItemMenu.js:470
msgid "Select Extract Destination"
msgstr "حدِّد وجهة الاستخراج"
#: app/fileItemMenu.js:475
msgid "Select"
msgstr "حدِّد"
#: app/fileItemMenu.js:516
msgid "Can not email a Directory"
msgstr "لا يمكن إرسال مجلَّد بالبريد"
#: app/fileItemMenu.js:517
msgid "Selection includes a Directory, compress the directory to a file first."
msgstr "التحديد يتضمَّن مجلَّدًا. اضغط المجلَّد في ملف أولًا."
#: app/notifyX11UnderWayland.js:37
msgid "Desktop Icons NG is running under X11Wayland"
msgstr "امتداد «أيقونات سطح المكتب NG» يعمل تحت X11Wayland"
#: app/notifyX11UnderWayland.js:38
msgid ""
"It seems that you have your system configured to force GTK to use X11. This "
"works, but it's suboptimal. You should check your system configuration to fix "
"this."
msgstr ""
"يبدو أن نظامك مهيَّأ لإجبار جتك على استخدام إكس11. هذا يعمل، ولكنه ليس الوضع "
"الأمثل. يجدر بك مراجعة إعدادات نظامك لإصلاح ذلك."
#: app/notifyX11UnderWayland.js:39 app/showErrorPopup.js:39
msgid "Close"
msgstr "أغلِق"
#: app/notifyX11UnderWayland.js:47
msgid "Don't show this message anymore."
msgstr "لا تُظهر هذه الرسالة مجددًا."
#: app/preferences.js:91
msgid "Settings"
msgstr "الإعدادات"
#: app/prefswindow.js:64
msgid "Size for the desktop icons"
msgstr "حجم أيقونات سطح المكتب"
#: app/prefswindow.js:64
msgid "Tiny"
msgstr "ضئيل"
#: app/prefswindow.js:64
msgid "Small"
msgstr "صغير"
#: app/prefswindow.js:64
msgid "Standard"
msgstr "قياسي"
#: app/prefswindow.js:64
msgid "Large"
msgstr "كبير"
#: app/prefswindow.js:65
msgid "Show the personal folder in the desktop"
msgstr "أظهِر المجلَّد الشخصي على سطح المكتب"
#: app/prefswindow.js:66
msgid "Show the trash icon in the desktop"
msgstr "أظهِر أيقونة المهملات على سطح المكتب"
#: app/prefswindow.js:67 schemas/org.gnome.shell.extensions.ding.gschema.xml:45
msgid "Show external drives in the desktop"
msgstr "أظهِر محرِّكات الأقراص الخارجية على سطح المكتب"
#: app/prefswindow.js:68 schemas/org.gnome.shell.extensions.ding.gschema.xml:50
msgid "Show network drives in the desktop"
msgstr "أظهِر سواقات الشبكة على سطح المكتب"
#: app/prefswindow.js:71
msgid "New icons alignment"
msgstr "محاذاة الأيقونات الجديدة"
#: app/prefswindow.js:73
msgid "Top-left corner"
msgstr "الركن العلوي الأيسر"
#: app/prefswindow.js:74
msgid "Top-right corner"
msgstr "الركن العلوي الأيمن"
#: app/prefswindow.js:75
msgid "Bottom-left corner"
msgstr "الركن السفلي الأيسر"
#: app/prefswindow.js:76
msgid "Bottom-right corner"
msgstr "الركن السفلي الأيمن"
#: app/prefswindow.js:78 schemas/org.gnome.shell.extensions.ding.gschema.xml:55
msgid "Add new drives to the opposite side of the screen"
msgstr "أضف محرِّكات الأقراص الجديدة إلى الجانب المقابل من الشاشة"
#: app/prefswindow.js:79
msgid "Highlight the drop place during Drag'n'Drop"
msgstr "ميِّز مكان الإسقاط أثناء السحب والإفلات"
#: app/prefswindow.js:80 schemas/org.gnome.shell.extensions.ding.gschema.xml:90
msgid "Use Nemo to open folders"
msgstr "استخدم «نيمو» لفتح المجلَّدات"
#: app/prefswindow.js:82
msgid "Add an emblem to soft links"
msgstr "أضِف شارة إلى الوصلات اللينة"
#: app/prefswindow.js:84
msgid "Use dark text in icon labels"
msgstr "استخدم نصًا داكنًا في تسميات الأيقونات"
#: app/prefswindow.js:91
msgid "Settings shared with Nautilus"
msgstr "إعدادات مشتركة مع نوتلس"
#: app/prefswindow.js:113
msgid "Click type for open files"
msgstr "نوع النقر لفتح الملفات"
#: app/prefswindow.js:113
msgid "Single click"
msgstr "نقرة واحدة"
#: app/prefswindow.js:113
msgid "Double click"
msgstr "نقرتان"
#: app/prefswindow.js:114
msgid "Show hidden files"
msgstr "أظهِر الملفات المخفية"
#: app/prefswindow.js:115
msgid "Show a context menu item to delete permanently"
msgstr "أظهِر عنصرًا للحذف النهائي في قائمة السياق"
#: app/prefswindow.js:120
msgid "Action to do when launching a program from the desktop"
msgstr "الإجراء المتخذ عند إطلاق برنامج من سطح المكتب"
#: app/prefswindow.js:121
msgid "Display the content of the file"
msgstr "اعرض محتوى الملف"
#: app/prefswindow.js:122
msgid "Launch the file"
msgstr "أطلِق الملف"
#: app/prefswindow.js:123
msgid "Ask what to do"
msgstr "اسأل ما يجب فعله"
#: app/prefswindow.js:129
msgid "Show image thumbnails"
msgstr "أظهِر مصغَّرات الصور"
#: app/prefswindow.js:130
msgid "Never"
msgstr "أبدًا"
#: app/prefswindow.js:131
msgid "Local files only"
msgstr "الملفات المحليَّة فقط"
#: app/prefswindow.js:132
msgid "Always"
msgstr "دائمًا"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:25
msgid "Icon size"
msgstr "حجم الأيقونة"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:26
msgid "Set the size for the desktop icons."
msgstr "عيِّن حجم أيقونات سطح المكتب."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:30
msgid "Show personal folder"
msgstr "أظهِر المجلَّد الشخصي"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:31
msgid "Show the personal folder in the desktop."
msgstr "أظهِر المجلَّد الشخصي على سطح المكتب."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:35
msgid "Show trash icon"
msgstr "أظهِر أيقونة المهملات"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:36
msgid "Show the trash icon in the desktop."
msgstr "أظهِر أيقونة المهملات على سطح المكتب."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:40
msgid "New icons start corner"
msgstr "ركن بدء الأيقونات الجديدة"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:41
msgid "Set the corner from where the icons will start to be placed."
msgstr "عيِّن الركن الذي سيبدأ منه وضع الأيقونات."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:46
msgid "Show the disk drives connected to the computer."
msgstr "أظهر محرِّكات الأقراص المتصلة بالحاسوب."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:51
msgid "Show mounted network volumes in the desktop."
msgstr "أظهِر وحدات تخزين الشبكة الموصولة على سطح المكتب."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:56
msgid ""
"When adding drives and volumes to the desktop, add them to the opposite side "
"of the screen."
msgstr ""
"عند إضافة محرِّكات الأقراص ووحدات التخزين إلى سطح المكتب، أضفها إلى الجانب "
"المقابل من الشاشة."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:60
msgid "Shows a rectangle in the destination place during DnD"
msgstr "أظهِر مستطيلًا في مكان الوجهة أثناء السحب والإفلات"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:61
msgid ""
"When doing a Drag'n'Drop operation, marks the place in the grid where the "
"icon will be put with a semitransparent rectangle."
msgstr ""
"عند تنفيذ عملية سحب وإفلات، فسيعلَّم مكان الأيقونة على الشبكة بمستطيل شبه شفاف."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:65
msgid "Sort Special Folders - Home/Trash Drives."
msgstr "افرز المجلَّدات الخاصة - المنزل\\المهملات\\محرِّكات الأقراص."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:66
msgid ""
"When arranging Icons on desktop, to sort and change the position of the Home, "
"Trash and mounted Network or External Drives"
msgstr ""
"عند ترتيب الأيقونات على سطح المكتب، لفرز وتغيير موضع المنزل والمهملات ومحرِّكات "
"أقراص الشبكة أو محرِّكات الأقراص الخارجية الموصولة"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:70
msgid "Keep Icons Arranged"
msgstr "أبقِ الأيقونات مرتَّبة"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:71
msgid "Always keep Icons Arranged by the last arranged order"
msgstr "أبقِ الأيقونات مرتَّبة دائمًا حسب آخر ترتيب استُخدم"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:75
msgid "Arrange Order"
msgstr "ترتيب الفرز"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:76
msgid "Icons Arranged by this property"
msgstr "تُرتَّب الأيقونات وفق هذه الخاصية"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:80
msgid "Keep Icons Stacked"
msgstr "أبقِ الأيقونات مكدَّسة"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:81
msgid "Always keep Icons Stacked, Similar types are grouped"
msgstr "أبقِ الأيقونات مكدَّسة دائمًا، حيث تُجمَّع الأنواع المتشابهة"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:85
msgid "Type of Files to not Stack"
msgstr "أنواع الملفات التي لا يجب تكديسها"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:86
msgid "An Array of strings types, Don't Stack these types of files"
msgstr "مصفوفة من سلاسل نصية للأنواع، لا تكدَّس هذه الأنواع من الملفات"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:91
msgid "Use Nemo instead of Nautilus to open folders."
msgstr "استخدم نيمو بدلًا من نوتلس لفتح المجلَّدات."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:95
msgid "Add an emblem to links"
msgstr "أضِف شارة إلى الوصلات"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:96
msgid "Add an emblem to allow to identify soft links."
msgstr "أضِف شارة للتمكين من تمييز الوصلات اللينة."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:100
msgid "Use black for label text"
msgstr "استخدم اللون الأسود لنص التسمية"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:101
msgid ""
"Paint the label text in black instead of white. Useful when using light "
"backgrounds."
msgstr "لوِّن نص التسمية بالأسود بدلًا من الأبيض. مفيد عند استخدام خلفيات فاتحة."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:105
msgid "Show a popup if running on X11Wayland"
msgstr "أظهر منبثقة عند التشغيل على X11Wayland"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:106
msgid ""
"Whether DING should show a popup if it is running on X11Wayland, or the user "
"decided to not show it anymore."
msgstr ""
"يحدد فيما إذا كان على الامتداد إظهار نافذة منبثقة عند تشغيلها على X11Wayland، "
"أو إذا قرَّر المستخدم عدم إظهارها مجددًا." desktop-icons-ng-49.0.5-c32667693d0831c29e3ab3f7bfeb675ea1531a00/po/be.po 0000664 0000000 0000000 00000071163 15064747536 0023737 0 ustar 00root root 0000000 0000000 # Black Beard (blackbeardboy), 2021
# p k (pkuhto), 2021
# Heorhi Puhachou , 2021
msgid ""
msgstr ""
"Project-Id-Version: ding\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-06-29 16:52+0200\n"
"PO-Revision-Date: 2022-11-26 04:58+0300\n"
"Last-Translator: Launchpad translators\n"
"Language-Team: Belarusian\n"
"Language: be\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%10==1 && n%100!=11 ? 0 : n%10>=2 && "
"n%10<=4 && (n%100<12 || n%100>14) ? 1 : 2);\n"
"X-Launchpad-Export-Date: 2022-01-23 10:58+0000\n"
"X-Generator: Poedit 3.2\n"
#: app/askRenamePopup.js:49
msgid "Folder name"
msgstr "Назва папкі"
#: app/askRenamePopup.js:49
msgid "File name"
msgstr "Назва файла"
#: app/askRenamePopup.js:57 app/autoAr.js:305 app/desktopManager.js:1002
msgid "OK"
msgstr "ОК"
#: app/askRenamePopup.js:57
msgid "Rename"
msgstr "Перайменаваць"
#: app/autoAr.js:88
msgid "AutoAr is not installed"
msgstr "Не ўсталявана AutoAr"
#: app/autoAr.js:89
msgid ""
"To be able to work with compressed files, install file-roller and/or gir-1.2-"
"gnomeAutoAr"
msgstr ""
"Каб працаваць са сціснутымі файламі, усталюйце file-roller і/або gir-1.2-"
"gnomeAutoAr"
#: app/autoAr.js:224
msgid "Extracting files"
msgstr "Выманне файлаў"
#: app/autoAr.js:241
msgid "Compressing files"
msgstr "Сцісканне файлаў"
#: app/autoAr.js:297 app/autoAr.js:636 app/desktopManager.js:1004
#: app/fileItemMenu.js:474
msgid "Cancel"
msgstr "Скасаваць"
#: app/autoAr.js:318 app/autoAr.js:619
msgid "Enter a password here"
msgstr "Увядзіце пароль сюды"
#: app/autoAr.js:359
msgid "Removing partial file '${outputFile}'"
msgstr "Выдаленне частковага файла '${outputFile}'"
#: app/autoAr.js:378
msgid "Creating destination folder"
msgstr "Стварэнне папкі прызначэння"
#: app/autoAr.js:410
msgid "Extracting files into '${outputPath}'"
msgstr "Выманне файлаў у '${outputPath}'"
#: app/autoAr.js:442
msgid "Extraction completed"
msgstr "Выманне завершана"
#: app/autoAr.js:443
msgid "Extracting '${fullPathFile}' has been completed."
msgstr "Выманне '${fullPathFile}' завершана."
#: app/autoAr.js:449
msgid "Extraction cancelled"
msgstr "Выманне скасавана"
#: app/autoAr.js:450
msgid "Extracting '${fullPathFile}' has been cancelled by the user."
msgstr "Выманне '${fullPathFile}' скасавана карыстальнікам."
#: app/autoAr.js:460
msgid "Passphrase required for ${filename}"
msgstr "Патрабуецца парольная фраза для ${filename}"
#: app/autoAr.js:463
msgid "Error during extraction"
msgstr "Падчас вымання ўзнікла памылка"
#: app/autoAr.js:492
msgid "Compressing files into '${outputFile}'"
msgstr "Сцісканне файлаў у '${outputFile}'"
#: app/autoAr.js:505
msgid "Compression completed"
msgstr "Сцісканне завершана"
#: app/autoAr.js:506
msgid "Compressing files into '${outputFile}' has been completed."
msgstr "Сцісканне файлаў у '${outputFile}' завершана."
#: app/autoAr.js:510 app/autoAr.js:517
msgid "Cancelled compression"
msgstr "Сцісканне скасавана"
#: app/autoAr.js:511
msgid "The output file '${outputFile}' already exists."
msgstr "Выхадны файл '${outputFile}' ужо існуе."
#: app/autoAr.js:518
msgid "Compressing files into '${outputFile}' has been cancelled by the user."
msgstr "Сцісканне файлаў у '${outputFile}' скасавана карыстальнікам."
#: app/autoAr.js:521
msgid "Error during compression"
msgstr "Падчас сціскання ўзнікла памылка"
#: app/autoAr.js:554
msgid "Create archive"
msgstr "Стварыць архіў"
#: app/autoAr.js:579
msgid "Archive name"
msgstr "Назва архіва"
#: app/autoAr.js:614
msgid "Password"
msgstr "Пароль"
#: app/autoAr.js:633
msgid "Create"
msgstr "Стварыць"
#: app/autoAr.js:712
msgid "Compatible with all operating systems."
msgstr "Сумяшчальна з усімі аперацыйнымі сістэмамі."
#: app/autoAr.js:718
msgid "Password protected .zip, must be installed on Windows and Mac."
msgstr ""
"Абаронены паролем .zip, на Windows і Mac патрабуецца ўсталяванне праграмы."
#: app/autoAr.js:724
msgid "Smaller archives but Linux and Mac only."
msgstr "Архівы меншага памеру, але падтрымліваюцца толькі ў Linux і Mac."
#: app/autoAr.js:730
msgid "Smaller archives but must be installed on Windows and Mac."
msgstr ""
"Архівы меншага памеру, але на Windows і Mac патрабуецца ўсталяванне праграмы."
#: app/dbusUtils.js:69
msgid "\"${programName}\" is needed for Desktop Icons"
msgstr "Для Desktop Icons патрабуецца «${programName}»"
#: app/dbusUtils.js:70
msgid ""
"For this functionality to work in Desktop Icons, you must install \"$"
"{programName}\" in your system."
msgstr ""
"Каб гэта функцыя Desktop Icons працавала, вы павінны ўсталяваць «$"
"{programName}»."
#: app/desktopIconsUtil.js:154
msgid "Command not found"
msgstr "Каманда не знойдзена"
#: app/desktopManager.js:259
msgid "Nautilus File Manager not found"
msgstr "Файлавы менеджар Nautilus не знойдзены"
#: app/desktopManager.js:260
msgid "The Nautilus File Manager is mandatory to work with Desktop Icons NG."
msgstr "Файлавы менеджар Nautilus абавязковы для працы Desktop Icons NG."
#: app/desktopManager.js:964
msgid "Clear Current Selection before New Search"
msgstr "Ачысціць бягучае вылучэнне перад новым пошукам"
#: app/desktopManager.js:1006
msgid "Find Files on Desktop"
msgstr "Знайсці файлы на працоўным стале"
#: app/desktopManager.js:1074 app/desktopManager.js:1786
msgid "New Folder"
msgstr "Новая папка"
#: app/desktopManager.js:1078
msgid "New Document"
msgstr "Новы дакумент"
#: app/desktopManager.js:1083
msgid "Paste"
msgstr "Уставіць"
#: app/desktopManager.js:1087
msgid "Undo"
msgstr "Адрабіць"
#: app/desktopManager.js:1091
msgid "Redo"
msgstr "Паўтарыць"
#: app/desktopManager.js:1097
msgid "Select All"
msgstr "Вылучыць усе"
#: app/desktopManager.js:1105
msgid "Show Desktop in Files"
msgstr "Паказаць працоўны стол праз «Файлы»"
#: app/desktopManager.js:1109 app/fileItemMenu.js:365
msgid "Open in Terminal"
msgstr "Адкрыць у тэрмінале"
#: app/desktopManager.js:1115
msgid "Change Background…"
msgstr "Змяніць фон…"
#: app/desktopManager.js:1126
msgid "Desktop Icons Settings"
msgstr "Налады значкоў працоўнага стала"
#: app/desktopManager.js:1139
msgid "Display Settings"
msgstr "Налады дысплэя"
#: app/desktopManager.js:1799
#, fuzzy
msgid "Folder Creation Failed"
msgstr "Назва папкі"
#: app/desktopManager.js:1800
msgid "Error while trying to create a Folder"
msgstr ""
#: app/desktopManager.js:1836
msgid "Template Creation Failed"
msgstr ""
#: app/desktopManager.js:1837
msgid "Error while trying to create a Document"
msgstr ""
#: app/desktopManager.js:1845
msgid "Arrange Icons"
msgstr "Упарадкаваць значкі"
#: app/desktopManager.js:1849
msgid "Arrange By..."
msgstr "Упарадкаваць па..."
#: app/desktopManager.js:1858
msgid "Keep Arranged..."
msgstr "Захоўваць упарадкаванне..."
#: app/desktopManager.js:1862
msgid "Keep Stacked by type..."
msgstr "Згрупоўваць па тыпу..."
#: app/desktopManager.js:1867
msgid "Sort Home/Drives/Trash..."
msgstr "Сартаваць Дыскі/Сметніцу/Хатнюю папку..."
#: app/desktopManager.js:1873
msgid "Sort by Name"
msgstr "Сартаваць па назве"
#: app/desktopManager.js:1875
msgid "Sort by Name Descending"
msgstr "Сартаваць па назве (я->а)"
#: app/desktopManager.js:1878
msgid "Sort by Modified Time"
msgstr "Сартаваць па часу змянення"
#: app/desktopManager.js:1881
msgid "Sort by Type"
msgstr "Сартаваць па тыпу"
#: app/desktopManager.js:1884
msgid "Sort by Size"
msgstr "Сартаваць па памеру"
#. * TRANSLATORS: when using a screen reader, this is the text read when a folder is
#. selected. Example: if a folder named "things" is selected, it will say "things Folder"
#: app/fileItem.js:64
msgid "${VisibleName} Folder"
msgstr ""
#. * TRANSLATORS: when using a screen reader, this is the text read when a normal file is
#. selected. Example: if a file named "my_picture.jpg" is selected, it will say "my_picture.jpg File"
#: app/fileItem.js:68
msgid "${VisibleName} File"
msgstr ""
#. TRANSLATORS: "Home" is the text that will be shown in the user's personal folder
#: app/fileItem.js:72 app/fileItem.js:203
msgid "Home"
msgstr "Хатняя папка"
#. * TRANSLATORS: when using a screen reader, this is the text read when the trash folder is
#. selected.
#: app/fileItem.js:77
#, fuzzy
msgid "Trash"
msgstr "Ачысціць сметніцу"
#. * TRANSLATORS: when using a screen reader, this is the text read when an external drive is
#. selected. Example: if a USB stick named "my_portable" is selected, it will say "my_portable Drive"
#: app/fileItem.js:82
msgid "${VisibleName} Drive"
msgstr ""
#. * TRANSLATORS: when using a screen reader, this is the text read when a stack is
#. selected. Example: if a stack named "pictures" is selected, it will say "pictures Stack"
#: app/fileItem.js:87
msgid "${VisibleName} Stack"
msgstr ""
#: app/fileItem.js:295
#, fuzzy
msgid "Error while reading Desktop file"
msgstr "Няспраўны файл .desktop"
#: app/fileItem.js:337
msgid "Broken Link"
msgstr "Няспраўная спасылка"
#: app/fileItem.js:338
msgid "Can not open this File because it is a Broken Symlink"
msgstr "Немагчыма адкрыць гэты файл, бо няспраўная сімвальная спасылка"
#: app/fileItem.js:370
#, fuzzy
msgid "Can't open the file"
msgstr "Запусціць файл"
#: app/fileItem.js:396
msgid "Broken Desktop File"
msgstr "Няспраўны файл .desktop"
#: app/fileItem.js:397
msgid ""
"This .desktop file has errors or points to a program without permissions. It "
"can not be executed.\n"
"\n"
"\tEdit the file to set the correct executable Program."
msgstr ""
"Гэты файл .desktop змяшчае памылкі або ўказвае на праграму без неабходных "
"дазволаў. Немагчыма выканаць.\n"
"\n"
"\tАдрэдагуйце файл, каб задаць правільную выконвальную праграму."
#: app/fileItem.js:403
msgid "Invalid Permissions on Desktop File"
msgstr "Няправільныя дазволы файла .desktop"
#: app/fileItem.js:404
msgid ""
"This .desktop File has incorrect Permissions. Right Click to edit "
"Properties, then:\n"
msgstr ""
"Гэты файл .desktop мае няправільныя дазволы. Націсніце правай кнопкай мышы, "
"каб змяніць уласцівасці, затым:\n"
#: app/fileItem.js:406
msgid ""
"\n"
"Set Permissions, in \"Others Access\", \"Read Only\" or \"None\""
msgstr ""
"\n"
"Задайце дазволы ў раздзеле «Астатнія» на «Толькі чытанне» або «Няма»"
#: app/fileItem.js:409
msgid ""
"\n"
"Enable option, \"Allow Executing File as a Program\""
msgstr ""
"\n"
"Уключыце параметр, «Дазволіць выкананне файла як праграмы»"
#: app/fileItem.js:417
msgid ""
"This .desktop file is not trusted, it can not be launched. To enable "
"launching, right-click, then:\n"
"\n"
"Enable \"Allow Launching\""
msgstr ""
"Гэты ненадзейны файл .desktop, яго нельга выканаць. Каб уключыць выкананне, "
"націсніце правай кнопкай мышы, затым:\n"
"\n"
"Уключыце «Дазволіць выкананне»"
#: app/fileItem.js:620
msgid "Failed to set execution flag"
msgstr ""
#: app/fileItem.js:632 app/fileItem.js:639
msgid "Could not apply discrete GPU environment"
msgstr ""
#: app/fileItem.js:668
msgid "Could not find discrete GPU data"
msgstr ""
#: app/fileItem.js:793
msgid "Failed to set metadata::trusted flag"
msgstr ""
#: app/fileItemMenu.js:143
msgid "Open All..."
msgstr "Адкрыць усе..."
#: app/fileItemMenu.js:143
msgid "Open"
msgstr "Адкрыць"
#: app/fileItemMenu.js:160
msgid "Stack This Type"
msgstr "Згрупаваць гэты тып"
#: app/fileItemMenu.js:160
msgid "Unstack This Type"
msgstr "Разгрупаваць гэты тып"
#: app/fileItemMenu.js:173
msgid "Scripts"
msgstr "Сцэнарыі"
#: app/fileItemMenu.js:178
msgid "Open All With Other Application..."
msgstr "Адкрыць усе праз іншую праграму..."
#: app/fileItemMenu.js:178
msgid "Open With Other Application"
msgstr "Адкрыць праз іншую праграму"
#: app/fileItemMenu.js:184
msgid "Launch using Dedicated Graphics Card"
msgstr "Запусціць з дапамогай дыскрэтнай відэакарты"
#: app/fileItemMenu.js:195
msgid "Run as a program"
msgstr "Запусціць як праграму"
#: app/fileItemMenu.js:203
msgid "Cut"
msgstr "Выразаць"
#: app/fileItemMenu.js:210
msgid "Copy"
msgstr "Капіяваць"
#: app/fileItemMenu.js:218
msgid "Rename…"
msgstr "Перайменаваць…"
#: app/fileItemMenu.js:228
msgid "Move to Trash"
msgstr "Перамясціць у сметніцу"
#: app/fileItemMenu.js:236
msgid "Delete permanently"
msgstr "Выдаліць незваротна"
#: app/fileItemMenu.js:246
msgid "Don't Allow Launching"
msgstr "Не дазваляць выкананне"
#: app/fileItemMenu.js:246
msgid "Allow Launching"
msgstr "Дазволіць выкананне"
#: app/fileItemMenu.js:259
msgid "Empty Trash"
msgstr "Ачысціць сметніцу"
#: app/fileItemMenu.js:272
msgid "Eject"
msgstr "Выняць"
#: app/fileItemMenu.js:280
msgid "Unmount"
msgstr "Адмантаваць"
#: app/fileItemMenu.js:294 app/fileItemMenu.js:301
msgid "Extract Here"
msgstr "Вынуць сюды"
#: app/fileItemMenu.js:308
msgid "Extract To..."
msgstr "Вынуць у..."
#: app/fileItemMenu.js:317
msgid "Send to..."
msgstr "Адправіць..."
#: app/fileItemMenu.js:325
msgid "Compress {0} folder"
msgid_plural "Compress {0} folders"
msgstr[0] "Сціснуць {0} папку"
msgstr[1] "Сціснуць {0} папкі"
msgstr[2] "Сціснуць {0} папак"
#: app/fileItemMenu.js:332
msgid "Compress {0} file"
msgid_plural "Compress {0} files"
msgstr[0] "Сціснуць {0} файл"
msgstr[1] "Сціснуць {0} файлы"
msgstr[2] "Сціснуць {0} файлаў"
#: app/fileItemMenu.js:340
msgid "New Folder with {0} item"
msgid_plural "New Folder with {0} items"
msgstr[0] "Новая папка з {0} элементам"
msgstr[1] "Новая папка з {0} элементамі"
msgstr[2] "Новая папка з {0} элементамі"
#: app/fileItemMenu.js:351
msgid "Common Properties"
msgstr "Агульныя ўласцівасці"
#: app/fileItemMenu.js:351
msgid "Properties"
msgstr "Уласцівасці"
#: app/fileItemMenu.js:358
msgid "Show All in Files"
msgstr "Паказаць усе праз «Файлы»"
#: app/fileItemMenu.js:358
msgid "Show in Files"
msgstr "Паказаць праз «Файлы»"
#: app/fileItemMenu.js:449
#, fuzzy
msgid "No Extraction Folder"
msgstr "Выманне завершана"
#: app/fileItemMenu.js:450
msgid "Unable to extract File, extraction Folder Does not Exist"
msgstr ""
#: app/fileItemMenu.js:470
msgid "Select Extract Destination"
msgstr "Абраць куды выняць змесціва"
#: app/fileItemMenu.js:475
msgid "Select"
msgstr "Вылучыць"
#: app/fileItemMenu.js:516
msgid "Can not email a Directory"
msgstr "Немагчыма даслаць папку"
#: app/fileItemMenu.js:517
msgid "Selection includes a Directory, compress the directory to a file first."
msgstr "Сярод вылучанага ёсць папка, спачатку сцісніце папку ў файл."
#: app/notifyX11UnderWayland.js:37
msgid "Desktop Icons NG is running under X11Wayland"
msgstr ""
#: app/notifyX11UnderWayland.js:38
msgid ""
"It seems that you have your system configured to force GTK to use X11. This "
"works, but it's suboptimal. You should check your system configuration to "
"fix this."
msgstr ""
#: app/notifyX11UnderWayland.js:39 app/showErrorPopup.js:39
msgid "Close"
msgstr "Закрыць"
#: app/notifyX11UnderWayland.js:47
msgid "Don't show this message anymore."
msgstr ""
#: app/preferences.js:91
msgid "Settings"
msgstr "Налады"
#: app/prefswindow.js:64
msgid "Size for the desktop icons"
msgstr "Памер значкоў працоўнага стала"
#: app/prefswindow.js:64
msgid "Tiny"
msgstr "Маленькі"
#: app/prefswindow.js:64
msgid "Small"
msgstr "Малы"
#: app/prefswindow.js:64
msgid "Standard"
msgstr "Звычайны"
#: app/prefswindow.js:64
msgid "Large"
msgstr "Вялікі"
#: app/prefswindow.js:65
msgid "Show the personal folder in the desktop"
msgstr "Паказваць на працоўным стале асабістую папку"
#: app/prefswindow.js:66
msgid "Show the trash icon in the desktop"
msgstr "Паказваць на працоўным стале значок сметніцы"
#: app/prefswindow.js:67 schemas/org.gnome.shell.extensions.ding.gschema.xml:45
msgid "Show external drives in the desktop"
msgstr "Паказваць на працоўным стале знешнія дыскі"
#: app/prefswindow.js:68 schemas/org.gnome.shell.extensions.ding.gschema.xml:50
msgid "Show network drives in the desktop"
msgstr "Паказваць на працоўным стале сеткавыя дыскі"
#: app/prefswindow.js:71
msgid "New icons alignment"
msgstr "Выраўноўванне для новых значкоў"
#: app/prefswindow.js:73
msgid "Top-left corner"
msgstr "Верхні левы вугал"
#: app/prefswindow.js:74
msgid "Top-right corner"
msgstr "Верхні правы вугал"
#: app/prefswindow.js:75
msgid "Bottom-left corner"
msgstr "Ніжні левы вугал"
#: app/prefswindow.js:76
msgid "Bottom-right corner"
msgstr "Ніжні правы вугал"
#: app/prefswindow.js:78 schemas/org.gnome.shell.extensions.ding.gschema.xml:55
msgid "Add new drives to the opposite side of the screen"
msgstr "Дадаваць новыя дыскі на супрацьлеглы бок экрана"
#: app/prefswindow.js:79
msgid "Highlight the drop place during Drag'n'Drop"
msgstr "Падсвечваць месца прызначэння пры перацягванні"
#: app/prefswindow.js:80 schemas/org.gnome.shell.extensions.ding.gschema.xml:90
msgid "Use Nemo to open folders"
msgstr "Выкарыстоўваць Nemo, каб адкрываць папкі"
#: app/prefswindow.js:82
msgid "Add an emblem to soft links"
msgstr "Дадаваць эмблему да сімвалічных спасылак"
#: app/prefswindow.js:84
msgid "Use dark text in icon labels"
msgstr "Выкарыстоўваць цёмны тэкст у подпісах да значкоў"
#: app/prefswindow.js:91
msgid "Settings shared with Nautilus"
msgstr "Налады звязаныя з Nautilus"
#: app/prefswindow.js:113
msgid "Click type for open files"
msgstr "Тып націскання для адкрывання файлаў"
#: app/prefswindow.js:113
msgid "Single click"
msgstr "Адзінарнае націсканне"
#: app/prefswindow.js:113
msgid "Double click"
msgstr "Падвойнае націсканне"
#: app/prefswindow.js:114
msgid "Show hidden files"
msgstr "Паказваць схаваныя файлы"
#: app/prefswindow.js:115
msgid "Show a context menu item to delete permanently"
msgstr "Паказваць у кантэкстным меню пункт «выдаліць незваротна»"
#: app/prefswindow.js:120
msgid "Action to do when launching a program from the desktop"
msgstr "Дзеянне пры запуску праграмы з працоўнага стала"
#: app/prefswindow.js:121
msgid "Display the content of the file"
msgstr "Паказаць змесціва файла"
#: app/prefswindow.js:122
msgid "Launch the file"
msgstr "Запусціць файл"
#: app/prefswindow.js:123
msgid "Ask what to do"
msgstr "Спытаць, што рабіць"
#: app/prefswindow.js:129
msgid "Show image thumbnails"
msgstr "Паказваць мініяцюры"
#: app/prefswindow.js:130
msgid "Never"
msgstr "Ніколі"
#: app/prefswindow.js:131
msgid "Local files only"
msgstr "Толькі для лакальных файлаў"
#: app/prefswindow.js:132
msgid "Always"
msgstr "Заўсёды"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:25
msgid "Icon size"
msgstr "Памер значкоў"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:26
msgid "Set the size for the desktop icons."
msgstr "Наладзіць памер значкоў працоўнага стала."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:30
msgid "Show personal folder"
msgstr "Паказваць асабістую папку"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:31
msgid "Show the personal folder in the desktop."
msgstr "Паказваць на працоўным стале асабістую папку."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:35
msgid "Show trash icon"
msgstr "Паказваць значок сметніцы"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:36
msgid "Show the trash icon in the desktop."
msgstr "Паказваць значок сметніцы на працоўным стале."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:40
msgid "New icons start corner"
msgstr "Вугал экрана для новых значкоў"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:41
msgid "Set the corner from where the icons will start to be placed."
msgstr "Наладзіць вугал з якога будзе пачынацца размяшчэнне значкоў."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:46
msgid "Show the disk drives connected to the computer."
msgstr "Паказваць падлучаныя да камп'ютара дыскі."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:51
msgid "Show mounted network volumes in the desktop."
msgstr "Паказваць на працоўным стале падключаныя сеткавыя дыскі."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:56
msgid ""
"When adding drives and volumes to the desktop, add them to the opposite side "
"of the screen."
msgstr ""
"Пры дадаванні носьбітаў і тамоў на стол, размяшчаць іх на супрацьлеглым баку "
"экрана."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:60
msgid "Shows a rectangle in the destination place during DnD"
msgstr "Пры перацягванні паказваць на месцы прызначэння прамавугольнік"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:61
msgid ""
"When doing a Drag'n'Drop operation, marks the place in the grid where the "
"icon will be put with a semitransparent rectangle."
msgstr ""
"Падчас аперацыі Drag'n'Drop пазначае месца ў сетцы, у якое будзе перамешчаны "
"элемент, паўпразрыстым прамавугольнікам."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:65
msgid "Sort Special Folders - Home/Trash Drives."
msgstr "Сартаваць спецыяльныя папкі - Дыскі/Сметніцу/Хатнюю папку."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:66
msgid ""
"When arranging Icons on desktop, to sort and change the position of the "
"Home, Trash and mounted Network or External Drives"
msgstr ""
"Пры сартаванні значкоў на працоўным стале, сартаваць і змяніць пазіцыю "
"Хатняй папкі, Сметніцы і прымантаваных сеткавых або знешніх дыскаў"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:70
msgid "Keep Icons Arranged"
msgstr "Пакінуць парадак значкоў"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:71
msgid "Always keep Icons Arranged by the last arranged order"
msgstr "Заўжды сартаваць значкі па апошняму парадку"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:75
msgid "Arrange Order"
msgstr "Упарадкаванне"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:76
msgid "Icons Arranged by this property"
msgstr "Значкі ўпарадкаваныя па гэтай уласцівасці"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:80
msgid "Keep Icons Stacked"
msgstr "Згрупоўванне значкоў"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:81
msgid "Always keep Icons Stacked, Similar types are grouped"
msgstr "Значкі аднаго тыпу заўсёды згрупаваныя"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:85
msgid "Type of Files to not Stack"
msgstr "Тыпы файлаў, якія не згрупоўваюцца"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:86
msgid "An Array of strings types, Don't Stack these types of files"
msgstr "Масіў тэкставых радкоў з тыпамі файлаў, які не будуць згрупоўвацца"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:91
msgid "Use Nemo instead of Nautilus to open folders."
msgstr "Выкарыстоўваць Nemo замест Nautilus, каб адкрываць папкі."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:95
msgid "Add an emblem to links"
msgstr "Дадаваць эмблему да спасылак"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:96
msgid "Add an emblem to allow to identify soft links."
msgstr "Дадаваць эмблему, каб вызначаць сімвалічныя спасылкі."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:100
msgid "Use black for label text"
msgstr "Выкарыстоўваць чорны тэкст для подпісаў"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:101
msgid ""
"Paint the label text in black instead of white. Useful when using light "
"backgrounds."
msgstr ""
"Робіць колер тэксту ў подпісе чорным замест белага. Карысна пры выкарыстанні "
"светлага фону."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:105
msgid "Show a popup if running on X11Wayland"
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:106
msgid ""
"Whether DING should show a popup if it is running on X11Wayland, or the user "
"decided to not show it anymore."
msgstr ""
#, fuzzy
#~ msgid "Desktop icons"
#~ msgstr "Налады значкоў працоўнага стала"
#~ msgid "Do you want to run “{0}”, or display its contents?"
#~ msgstr "Вы хочаце выканаць “{0}” ці паказаць яго змесціва?"
#~ msgid "“{0}” is an executable text file."
#~ msgstr "“{0}” гэта выконвальны тэкставы файл."
#~ msgid "Execute in a terminal"
#~ msgstr "Выканаць у тэрмінале"
#~ msgid "Show"
#~ msgstr "Паказаць"
#~ msgid "Execute"
#~ msgstr "Выканаць"
#~ msgid ""
#~ "To configure Desktop Icons NG, do right-click in the desktop and choose "
#~ "the last item: 'Desktop Icons settings'"
#~ msgstr ""
#~ "Каб наладзіць Desktop Icons NG, націсніце правую кнопку мышы на працоўным "
#~ "стале і выберыце апошні элемент меню «Налады значкоў працоўнага стала»"
#~ msgid "Select all"
#~ msgstr "Вылучыць усе"
#~ msgid "Desktop Icons settings"
#~ msgstr "Настройкі значкоў Стала"
#~ msgid "New folder"
#~ msgstr "Новая папка"
desktop-icons-ng-49.0.5-c32667693d0831c29e3ab3f7bfeb675ea1531a00/po/ca.po 0000664 0000000 0000000 00000060461 15064747536 0023733 0 ustar 00root root 0000000 0000000 # Jordi Mas i Hernàndez , 2019-2025
#
msgid ""
msgstr ""
"Project-Id-Version: 1.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-06-29 16:52+0200\n"
"PO-Revision-Date: 2025-03-08 10:24+0200\n"
"Last-Translator: Jordi Mas i Hernàndez \n"
"Language-Team: Catalan \n"
"Language: ca\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Poedit 2.2.1\n"
#: app/askRenamePopup.js:49
msgid "Folder name"
msgstr "Nom de la carpeta"
#: app/askRenamePopup.js:49
msgid "File name"
msgstr "Nom del fitxer"
#: app/askRenamePopup.js:57 app/autoAr.js:305 app/desktopManager.js:1002
msgid "OK"
msgstr "D'acord"
#: app/askRenamePopup.js:57
msgid "Rename"
msgstr "Canvia el nom"
#: app/autoAr.js:88
msgid "AutoAr is not installed"
msgstr "L'AutoAr no està instal·lat"
#: app/autoAr.js:89
msgid ""
"To be able to work with compressed files, install file-roller and/or gir-1.2-"
"gnomeAutoAr"
msgstr ""
"Per a poder treballar amb fitxers comprimits, instal·leu file-roller i/o "
"gir-1.2-gnomeAutoAr"
#: app/autoAr.js:224
msgid "Extracting files"
msgstr "S'estan extraient els fitxers"
#: app/autoAr.js:241
msgid "Compressing files"
msgstr "S'estan comprimint els fitxers"
#: app/autoAr.js:297 app/autoAr.js:636 app/desktopManager.js:1004
#: app/fileItemMenu.js:474
msgid "Cancel"
msgstr "Cancel·la"
#: app/autoAr.js:318 app/autoAr.js:619
msgid "Enter a password here"
msgstr "Introduïu una contrasenya aquí"
#: app/autoAr.js:359
msgid "Removing partial file '${outputFile}'"
msgstr "S'està suprimint el fitxer parcial «${outputFile}»"
#: app/autoAr.js:378
msgid "Creating destination folder"
msgstr "S'està creant la carpeta de destinació"
#: app/autoAr.js:410
msgid "Extracting files into '${outputPath}'"
msgstr "S'estan extraient els fitxers a «${outputPath}»"
#: app/autoAr.js:442
msgid "Extraction completed"
msgstr "Extracció completada"
#: app/autoAr.js:443
msgid "Extracting '${fullPathFile}' has been completed."
msgstr "S'ha completat l'extracció de «${fullPathFile}»."
#: app/autoAr.js:449
msgid "Extraction cancelled"
msgstr "S'ha cancel·lat l'extracció"
#: app/autoAr.js:450
msgid "Extracting '${fullPathFile}' has been cancelled by the user."
msgstr "L'usuari ha cancel·lat l'extracció de «${fullPathFile}»."
#: app/autoAr.js:460
msgid "Passphrase required for ${filename}"
msgstr "Cal una contrasenya per a ${filename}"
#: app/autoAr.js:463
msgid "Error during extraction"
msgstr "Error durant l'extracció"
#: app/autoAr.js:492
msgid "Compressing files into '${outputFile}'"
msgstr "S'estan comprimint els fitxers a «${outputFile}»"
#: app/autoAr.js:505
msgid "Compression completed"
msgstr "Compressió completada"
#: app/autoAr.js:506
msgid "Compressing files into '${outputFile}' has been completed."
msgstr "S'ha completat la compressió dels fitxers a «${outputFile}»."
#: app/autoAr.js:510 app/autoAr.js:517
msgid "Cancelled compression"
msgstr "Compressió cancel·lada"
#: app/autoAr.js:511
msgid "The output file '${outputFile}' already exists."
msgstr "El fitxer de sortida «${outputFile}» ja existeix."
#: app/autoAr.js:518
msgid "Compressing files into '${outputFile}' has been cancelled by the user."
msgstr "L'usuari ha cancel·lat la compressió de fitxers a «${outputFile}»."
#: app/autoAr.js:521
msgid "Error during compression"
msgstr "Error durant la compressió"
#: app/autoAr.js:554
msgid "Create archive"
msgstr "Crea un arxiu"
#: app/autoAr.js:579
msgid "Archive name"
msgstr "Nom de l'arxiu"
#: app/autoAr.js:614
msgid "Password"
msgstr "Contrasenya"
#: app/autoAr.js:633
msgid "Create"
msgstr "Crea"
#: app/autoAr.js:712
msgid "Compatible with all operating systems."
msgstr "Compatible amb tots els sistemes operatius."
#: app/autoAr.js:718
msgid "Password protected .zip, must be installed on Windows and Mac."
msgstr ""
"S'ha d'instal·lar el .zip protegit amb contrasenya al Windows i al Mac."
#: app/autoAr.js:724
msgid "Smaller archives but Linux and Mac only."
msgstr "Arxius més petits però només a Linux i Mac."
#: app/autoAr.js:730
msgid "Smaller archives but must be installed on Windows and Mac."
msgstr "Arxius més petits però s'han d'instal·lar al Windows i al Mac."
#: app/dbusUtils.js:69
msgid "\"${programName}\" is needed for Desktop Icons"
msgstr "\"${programName}\" és necessari per a les icones d'escriptori"
#: app/dbusUtils.js:70
msgid ""
"For this functionality to work in Desktop Icons, you must install \"$"
"{programName}\" in your system."
msgstr ""
"Perquè aquesta funcionalitat funcioni en icones d'escriptori, heu "
"d'instal·lar \"${programName}\" al vostre sistema."
#: app/desktopIconsUtil.js:154
msgid "Command not found"
msgstr "No s'ha trobat l'ordre"
#: app/desktopManager.js:259
msgid "Nautilus File Manager not found"
msgstr "No s'ha trobat el gestor de fitxers del Nautilus"
#: app/desktopManager.js:260
msgid "The Nautilus File Manager is mandatory to work with Desktop Icons NG."
msgstr ""
"El gestor de fitxers Nautilus és obligatori per a treballar amb les icones "
"de l'escriptori NG."
#: app/desktopManager.js:964
msgid "Clear Current Selection before New Search"
msgstr "Neteja la selecció actual abans de la cerca nova"
#: app/desktopManager.js:1006
msgid "Find Files on Desktop"
msgstr "Cerca fitxers a l'escriptori"
#: app/desktopManager.js:1074 app/desktopManager.js:1786
msgid "New Folder"
msgstr "Carpeta nova"
#: app/desktopManager.js:1078
msgid "New Document"
msgstr "Document nou"
#: app/desktopManager.js:1083
msgid "Paste"
msgstr "Enganxa"
#: app/desktopManager.js:1087
msgid "Undo"
msgstr "Desfés"
#: app/desktopManager.js:1091
msgid "Redo"
msgstr "Refés"
#: app/desktopManager.js:1097
msgid "Select All"
msgstr "Selecciona-ho tot"
#: app/desktopManager.js:1105
msgid "Show Desktop in Files"
msgstr "Mostra l'escriptori al Fitxers"
#: app/desktopManager.js:1109 app/fileItemMenu.js:365
msgid "Open in Terminal"
msgstr "Obre al Terminal"
#: app/desktopManager.js:1115
msgid "Change Background…"
msgstr "Canvia el fons de l'escriptori…"
#: app/desktopManager.js:1126
msgid "Desktop Icons Settings"
msgstr "Paràmetres de les icones de l'escriptori"
#: app/desktopManager.js:1139
msgid "Display Settings"
msgstr "Paràmetres de la pantalla"
#: app/desktopManager.js:1799
msgid "Folder Creation Failed"
msgstr "Ha fallat la creació de la carpeta"
#: app/desktopManager.js:1800
msgid "Error while trying to create a Folder"
msgstr "Error en intentar crear una carpeta"
#: app/desktopManager.js:1836
msgid "Template Creation Failed"
msgstr "Ha fallat la creació de la plantilla"
#: app/desktopManager.js:1837
msgid "Error while trying to create a Document"
msgstr "Error en intentar crear un document"
#: app/desktopManager.js:1845
msgid "Arrange Icons"
msgstr "Organitza les icones"
#: app/desktopManager.js:1849
msgid "Arrange By..."
msgstr "Organitza per..."
#: app/desktopManager.js:1858
msgid "Keep Arranged..."
msgstr "Mantén-les organitzades..."
#: app/desktopManager.js:1862
msgid "Keep Stacked by type..."
msgstr "Mantén apilat pel tipus..."
#: app/desktopManager.js:1867
msgid "Sort Home/Drives/Trash..."
msgstr "Ordena Inici/Discs/Paperera..."
#: app/desktopManager.js:1873
msgid "Sort by Name"
msgstr "Ordena per nom"
#: app/desktopManager.js:1875
msgid "Sort by Name Descending"
msgstr "Ordena per nom descendentment"
#: app/desktopManager.js:1878
msgid "Sort by Modified Time"
msgstr "Ordena per temps modificat"
#: app/desktopManager.js:1881
msgid "Sort by Type"
msgstr "Ordena per tipus"
#: app/desktopManager.js:1884
msgid "Sort by Size"
msgstr "Ordena per mida"
#. * TRANSLATORS: when using a screen reader, this is the text read when a folder is
#. selected. Example: if a folder named "things" is selected, it will say "things Folder"
#: app/fileItem.js:64
msgid "${VisibleName} Folder"
msgstr "Carpeta ${VisibleName}"
#. * TRANSLATORS: when using a screen reader, this is the text read when a normal file is
#. selected. Example: if a file named "my_picture.jpg" is selected, it will say "my_picture.jpg File"
#: app/fileItem.js:68
msgid "${VisibleName} File"
msgstr "Fitxer ${VisibleName}"
#. TRANSLATORS: "Home" is the text that will be shown in the user's personal folder
#: app/fileItem.js:72 app/fileItem.js:203
msgid "Home"
msgstr "Inici"
#. * TRANSLATORS: when using a screen reader, this is the text read when the trash folder is
#. selected.
#: app/fileItem.js:77
msgid "Trash"
msgstr "Paperera"
#. * TRANSLATORS: when using a screen reader, this is the text read when an external drive is
#. selected. Example: if a USB stick named "my_portable" is selected, it will say "my_portable Drive"
#: app/fileItem.js:82
msgid "${VisibleName} Drive"
msgstr "Unitat {VisibleName}"
#. * TRANSLATORS: when using a screen reader, this is the text read when a stack is
#. selected. Example: if a stack named "pictures" is selected, it will say "pictures Stack"
#: app/fileItem.js:87
msgid "${VisibleName} Stack"
msgstr "Pila ${VisibleName}"
#: app/fileItem.js:295
msgid "Error while reading Desktop file"
msgstr "S'ha produït un error en llegir el fitxer d'escriptori"
#: app/fileItem.js:337
msgid "Broken Link"
msgstr "Enllaç trencat"
#: app/fileItem.js:338
msgid "Can not open this File because it is a Broken Symlink"
msgstr "No es pot obrir aquest fitxer perquè és un enllaç simbòlic trencat"
#: app/fileItem.js:370
msgid "Can't open the file"
msgstr "No es pot obrir el fitxer"
#: app/fileItem.js:396
msgid "Broken Desktop File"
msgstr "Fitxer d'escriptori trencat"
#: app/fileItem.js:397
msgid ""
"This .desktop file has errors or points to a program without permissions. It "
"can not be executed.\n"
"\n"
"\tEdit the file to set the correct executable Program."
msgstr ""
"Aquest fitxer .desktop té errors o apunta a un programa sense permisos. No "
"es pot executar.\n"
"\n"
"\tEdita el fitxer per a establir el programa executable correcte."
#: app/fileItem.js:403
msgid "Invalid Permissions on Desktop File"
msgstr "Permisos no vàlids per al fitxer d'escriptori"
#: app/fileItem.js:404
msgid ""
"This .desktop File has incorrect Permissions. Right Click to edit "
"Properties, then:\n"
msgstr ""
"Aquest fitxer .desktop té permisos incorrectes. Feu clic dret per a editar "
"les propietats, després:\n"
#: app/fileItem.js:406
msgid ""
"\n"
"Set Permissions, in \"Others Access\", \"Read Only\" or \"None\""
msgstr ""
"\n"
"Estableix permisos, a «Accés d'altres», «Només lectura» o «Cap»"
#: app/fileItem.js:409
msgid ""
"\n"
"Enable option, \"Allow Executing File as a Program\""
msgstr ""
"\n"
"Activa l'opció, «Permet l'execució del fitxer com a programa»"
#: app/fileItem.js:417
msgid ""
"This .desktop file is not trusted, it can not be launched. To enable "
"launching, right-click, then:\n"
"\n"
"Enable \"Allow Launching\""
msgstr ""
"Aquest fitxer .desktop no és de confiança, no es pot llançar. Per a "
"habilitar el llançament,\n"
"feu clic amb el botó dret i, a continuació:\n"
"\n"
"Activeu «Permet el llançament»"
#: app/fileItem.js:620
msgid "Failed to set execution flag"
msgstr "No s'ha pogut establir l'indicador d'execució"
#: app/fileItem.js:632 app/fileItem.js:639
msgid "Could not apply discrete GPU environment"
msgstr "No s'ha pogut aplicar l'entorn GPU separat"
#: app/fileItem.js:668
msgid "Could not find discrete GPU data"
msgstr "No s'han pogut trobar dades de la GPU separada"
#: app/fileItem.js:793
msgid "Failed to set metadata::trusted flag"
msgstr "No s'ha pogut establir l'indicador de metadata::trusted"
#: app/fileItemMenu.js:143
msgid "Open All..."
msgstr "Obre-ho tot..."
#: app/fileItemMenu.js:143
msgid "Open"
msgstr "Obre"
#: app/fileItemMenu.js:160
msgid "Stack This Type"
msgstr "Apila aquest tipus"
#: app/fileItemMenu.js:160
msgid "Unstack This Type"
msgstr "Treu de la pila aquest tipus"
#: app/fileItemMenu.js:173
msgid "Scripts"
msgstr "Scripts"
#: app/fileItemMenu.js:178
msgid "Open All With Other Application..."
msgstr "Obre amb una altra aplicació..."
#: app/fileItemMenu.js:178
msgid "Open With Other Application"
msgstr "Obre amb una altra aplicació"
#: app/fileItemMenu.js:184
msgid "Launch using Dedicated Graphics Card"
msgstr "Llança usant targeta gràfica dedicada"
#: app/fileItemMenu.js:195
msgid "Run as a program"
msgstr "Executa com a programa"
#: app/fileItemMenu.js:203
msgid "Cut"
msgstr "Retalla"
#: app/fileItemMenu.js:210
msgid "Copy"
msgstr "Copia"
#: app/fileItemMenu.js:218
msgid "Rename…"
msgstr "Canvia el nom…"
#: app/fileItemMenu.js:228
msgid "Move to Trash"
msgstr "Mou a la paperera"
#: app/fileItemMenu.js:236
msgid "Delete permanently"
msgstr "Suprimeix permanentment"
#: app/fileItemMenu.js:246
msgid "Don't Allow Launching"
msgstr "No permetis que s'iniciï"
#: app/fileItemMenu.js:246
msgid "Allow Launching"
msgstr "Permet que s'iniciï"
#: app/fileItemMenu.js:259
msgid "Empty Trash"
msgstr "Buida la paperera"
#: app/fileItemMenu.js:272
msgid "Eject"
msgstr "Expulsa"
#: app/fileItemMenu.js:280
msgid "Unmount"
msgstr "Desmunta"
#: app/fileItemMenu.js:294 app/fileItemMenu.js:301
msgid "Extract Here"
msgstr "Extreu aquí"
#: app/fileItemMenu.js:308
msgid "Extract To..."
msgstr "Extreu a..."
#: app/fileItemMenu.js:317
msgid "Send to..."
msgstr "Envia a..."
#: app/fileItemMenu.js:325
msgid "Compress {0} folder"
msgid_plural "Compress {0} folders"
msgstr[0] "Comprimeix {0} carpeta"
msgstr[1] "Comprimeix {0} carpetes"
#: app/fileItemMenu.js:332
msgid "Compress {0} file"
msgid_plural "Compress {0} files"
msgstr[0] "Comprimeix {0} fitxer"
msgstr[1] "Comprimeix {0} fitxers"
#: app/fileItemMenu.js:340
msgid "New Folder with {0} item"
msgid_plural "New Folder with {0} items"
msgstr[0] "Carpeta nova amb {0} element"
msgstr[1] "Carpeta nova amb {0} elements"
#: app/fileItemMenu.js:351
msgid "Common Properties"
msgstr "Propietats comunes"
#: app/fileItemMenu.js:351
msgid "Properties"
msgstr "Propietats"
#: app/fileItemMenu.js:358
msgid "Show All in Files"
msgstr "Mostra-ho tot al Fitxers"
#: app/fileItemMenu.js:358
msgid "Show in Files"
msgstr "Mostra al Fitxers"
#: app/fileItemMenu.js:449
msgid "No Extraction Folder"
msgstr "Sense carpeta d'extracció"
#: app/fileItemMenu.js:450
msgid "Unable to extract File, extraction Folder Does not Exist"
msgstr "No s'ha pogut extreure el fitxer, la carpeta d'extracció no existeix"
#: app/fileItemMenu.js:470
msgid "Select Extract Destination"
msgstr "Selecciona la destinació de l'extracció"
#: app/fileItemMenu.js:475
msgid "Select"
msgstr "Selecciona"
#: app/fileItemMenu.js:516
msgid "Can not email a Directory"
msgstr "No es pot enviar un directori per correu electrònic"
#: app/fileItemMenu.js:517
msgid "Selection includes a Directory, compress the directory to a file first."
msgstr ""
"La selecció inclou un directori, comprimeix primer el directori en un fitxer."
#: app/notifyX11UnderWayland.js:37
msgid "Desktop Icons NG is running under X11Wayland"
msgstr "Les icones d'escriptori NG s'estan executant sota X11Wayland"
#: app/notifyX11UnderWayland.js:38
msgid ""
"It seems that you have your system configured to force GTK to use X11. This "
"works, but it's suboptimal. You should check your system configuration to "
"fix this."
msgstr ""
"Sembla que teniu el vostre sistema configurat per a forçar GTK a utilitzar "
"X11. Això funciona, però és subòptim. Comproveu-ho la configuració del "
"sistema per a corregir-ho."
#: app/notifyX11UnderWayland.js:39 app/showErrorPopup.js:39
msgid "Close"
msgstr "Tanca"
#: app/notifyX11UnderWayland.js:47
msgid "Don't show this message anymore."
msgstr "Ja no mostris aquest missatge."
#: app/preferences.js:91
msgid "Settings"
msgstr "Paràmetres"
#: app/prefswindow.js:64
msgid "Size for the desktop icons"
msgstr "Mida de les icones d'escriptori"
#: app/prefswindow.js:64
msgid "Tiny"
msgstr "Diminuta"
#: app/prefswindow.js:64
msgid "Small"
msgstr "Petita"
#: app/prefswindow.js:64
msgid "Standard"
msgstr "Estàndard"
#: app/prefswindow.js:64
msgid "Large"
msgstr "Gran"
#: app/prefswindow.js:65
msgid "Show the personal folder in the desktop"
msgstr "Mostra la carpeta personal a l'escriptori"
#: app/prefswindow.js:66
msgid "Show the trash icon in the desktop"
msgstr "Mostra la icona de la paperera a l'escriptori"
#: app/prefswindow.js:67 schemas/org.gnome.shell.extensions.ding.gschema.xml:45
msgid "Show external drives in the desktop"
msgstr "Mostra les unitats externes a l'escriptori"
#: app/prefswindow.js:68 schemas/org.gnome.shell.extensions.ding.gschema.xml:50
msgid "Show network drives in the desktop"
msgstr "Mostra les unitats de xarxa a l'escriptori"
#: app/prefswindow.js:71
msgid "New icons alignment"
msgstr "Alineació de les icones noves"
#: app/prefswindow.js:73
msgid "Top-left corner"
msgstr "Cantonada superior esquerra"
#: app/prefswindow.js:74
msgid "Top-right corner"
msgstr "Cantonada superior dreta"
#: app/prefswindow.js:75
msgid "Bottom-left corner"
msgstr "Cantonada inferior esquerra"
#: app/prefswindow.js:76
msgid "Bottom-right corner"
msgstr "Cantonada inferior dreta"
#: app/prefswindow.js:78 schemas/org.gnome.shell.extensions.ding.gschema.xml:55
msgid "Add new drives to the opposite side of the screen"
msgstr "Afegeix noves unitats al costat oposat de la pantalla"
#: app/prefswindow.js:79
msgid "Highlight the drop place during Drag'n'Drop"
msgstr "Ressalta el lloc on es deixarà durant l'arrossegament"
#: app/prefswindow.js:80 schemas/org.gnome.shell.extensions.ding.gschema.xml:90
msgid "Use Nemo to open folders"
msgstr "Utilitza Nemo per a obrir carpetes"
#: app/prefswindow.js:82
msgid "Add an emblem to soft links"
msgstr "Afegeix un emblema als enllaços tous"
#: app/prefswindow.js:84
msgid "Use dark text in icon labels"
msgstr "Usa el text fosc a les etiquetes de les icones"
#: app/prefswindow.js:91
msgid "Settings shared with Nautilus"
msgstr "Paràmetres compartits amb el Nautilus"
#: app/prefswindow.js:113
msgid "Click type for open files"
msgstr "Feu clic al tipus per a obrir fitxers"
#: app/prefswindow.js:113
msgid "Single click"
msgstr "Un sol clic"
#: app/prefswindow.js:113
msgid "Double click"
msgstr "Doble clic"
#: app/prefswindow.js:114
msgid "Show hidden files"
msgstr "Mostra els fitxers ocults"
#: app/prefswindow.js:115
msgid "Show a context menu item to delete permanently"
msgstr "Mostra un element de menú contextual per a suprimir-lo permanentment"
#: app/prefswindow.js:120
msgid "Action to do when launching a program from the desktop"
msgstr "Acció a fer quan s'iniciï un programa des de l'escriptori"
#: app/prefswindow.js:121
msgid "Display the content of the file"
msgstr "Mostra el contingut del fitxer"
#: app/prefswindow.js:122
msgid "Launch the file"
msgstr "Executa el fitxer"
#: app/prefswindow.js:123
msgid "Ask what to do"
msgstr "Preguntar què fer"
#: app/prefswindow.js:129
msgid "Show image thumbnails"
msgstr "Mostra les miniatures de les imatges"
#: app/prefswindow.js:130
msgid "Never"
msgstr "Mai"
#: app/prefswindow.js:131
msgid "Local files only"
msgstr "Només fitxers locals"
#: app/prefswindow.js:132
msgid "Always"
msgstr "Sempre"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:25
msgid "Icon size"
msgstr "Mida d'icona"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:26
msgid "Set the size for the desktop icons."
msgstr "Estableix la mida per les icones de l'escriptori."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:30
msgid "Show personal folder"
msgstr "Mostra la carpeta personal"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:31
msgid "Show the personal folder in the desktop."
msgstr "Mostra la carpeta personal a l'escriptori."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:35
msgid "Show trash icon"
msgstr "Mostra la icona de la paperera"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:36
msgid "Show the trash icon in the desktop."
msgstr "Mostra la icona de la paperera a l'escriptori."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:40
msgid "New icons start corner"
msgstr "Angle d'inici de les icones noves"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:41
msgid "Set the corner from where the icons will start to be placed."
msgstr "Estableix la cantonada des d'on s'iniciaran les icones."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:46
msgid "Show the disk drives connected to the computer."
msgstr "Mostra les unitats de disc connectades a l'ordinador."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:51
msgid "Show mounted network volumes in the desktop."
msgstr "Mostra els volums de xarxa muntats a l'escriptori."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:56
msgid ""
"When adding drives and volumes to the desktop, add them to the opposite side "
"of the screen."
msgstr ""
"Quan s'afegeixin unitats i volums a l'escriptori, afegiu-los a la part "
"oposada de la pantalla."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:60
msgid "Shows a rectangle in the destination place during DnD"
msgstr "Mostra un rectangle al lloc de destinació durant el DnD"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:61
msgid ""
"When doing a Drag'n'Drop operation, marks the place in the grid where the "
"icon will be put with a semitransparent rectangle."
msgstr ""
"En fer una operació d'arrossegar i deixar anar, marca el lloc a la graella "
"on la icona es posarà amb un rectangle semitransparent."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:65
msgid "Sort Special Folders - Home/Trash Drives."
msgstr "Ordena les carpetes especials - Inici/Paperera/Discs."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:66
msgid ""
"When arranging Icons on desktop, to sort and change the position of the "
"Home, Trash and mounted Network or External Drives"
msgstr ""
"En organitzar les icones a l'escriptori, per a ordenar i canviar la posició "
"de l'Inici, la Paperera i o unitats externes"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:70
msgid "Keep Icons Arranged"
msgstr "Mantén les icones organitzades"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:71
msgid "Always keep Icons Arranged by the last arranged order"
msgstr "Mantén sempre les icones organitzades per l'últim ordre organitzat"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:75
msgid "Arrange Order"
msgstr "Organitza l'ordre"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:76
msgid "Icons Arranged by this property"
msgstr "Icones organitzades per aquesta propietat"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:80
msgid "Keep Icons Stacked"
msgstr "Mantén les icones apilades"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:81
msgid "Always keep Icons Stacked, Similar types are grouped"
msgstr "Mantén sempre les icones apilades, els tipus similars s'agrupen"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:85
msgid "Type of Files to not Stack"
msgstr "Tipus de fitxers que no s'han d'apilar"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:86
msgid "An Array of strings types, Don't Stack these types of files"
msgstr "Una matriu de tipus de cadenes, no s'apilen aquests tipus de fitxers"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:91
msgid "Use Nemo instead of Nautilus to open folders."
msgstr "Utilitzeu Nemo en lloc de Nautilus per a obrir carpetes."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:95
msgid "Add an emblem to links"
msgstr "Afegeix un emblema als enllaços"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:96
msgid "Add an emblem to allow to identify soft links."
msgstr "Afegeix un emblema per a permetre identificar els enllaços tous."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:100
msgid "Use black for label text"
msgstr "Utilitza el negre per al text de l'etiqueta"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:101
msgid ""
"Paint the label text in black instead of white. Useful when using light "
"backgrounds."
msgstr ""
"Pinta el text de l'etiqueta en negre en lloc de blanc. Útil quan s'utilitzen "
"fons clars."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:105
msgid "Show a popup if running on X11Wayland"
msgstr "Mostra una finestra emergent si s'executa a X11Wayland"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:106
msgid ""
"Whether DING should show a popup if it is running on X11Wayland, or the user "
"decided to not show it anymore."
msgstr ""
"Si DING hauria de mostrar una finestra emergent si s'està executant a "
"X11Wayland, o l'usuari ha decidit no mostrar-la més."
#~ msgid "Desktop icons"
#~ msgstr "Icones de l'escriptori"
desktop-icons-ng-49.0.5-c32667693d0831c29e3ab3f7bfeb675ea1531a00/po/cs.po 0000664 0000000 0000000 00000062665 15064747536 0023765 0 ustar 00root root 0000000 0000000 # Czech translation for desktop-icons.
# Copyright (C) 2018 desktop-icons's COPYRIGHT HOLDER
# This file is distributed under the same license as the desktop-icons package.
# Marek Černocký , 2018.
# Milan Zink , 2018.
# panmourovaty , 2021.
#
msgid ""
msgstr ""
"Project-Id-Version: desktop-icons master\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-06-29 16:52+0200\n"
"PO-Revision-Date: 2023-07-25 17:56+0200\n"
"Last-Translator: Daniel Rusek \n"
"Language-Team: Czech \n"
"Language: cs\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<=4) ? 1 : 2;\n"
"X-Generator: Poedit 3.3.2\n"
#: app/askRenamePopup.js:49
msgid "Folder name"
msgstr "Název nové složky"
#: app/askRenamePopup.js:49
msgid "File name"
msgstr "Přejmenovat soubor"
#: app/askRenamePopup.js:57 app/autoAr.js:305 app/desktopManager.js:1002
msgid "OK"
msgstr "Budiž"
#: app/askRenamePopup.js:57
msgid "Rename"
msgstr "Přejmenovat"
#: app/autoAr.js:88
msgid "AutoAr is not installed"
msgstr "AutoAr není nainstalováno"
#: app/autoAr.js:89
msgid ""
"To be able to work with compressed files, install file-roller and/or gir-1.2-"
"gnomeAutoAr"
msgstr ""
"Aby jste mohli pracovat s archivy, nainstalujte file-roller a/nebo gir-1.2-"
"gnomeAutoAr"
#: app/autoAr.js:224
msgid "Extracting files"
msgstr "Rozbaluji soubory"
#: app/autoAr.js:241
msgid "Compressing files"
msgstr "Zabaluji soubory"
#: app/autoAr.js:297 app/autoAr.js:636 app/desktopManager.js:1004
#: app/fileItemMenu.js:474
msgid "Cancel"
msgstr "Zrušit"
#: app/autoAr.js:318 app/autoAr.js:619
msgid "Enter a password here"
msgstr "Sem vložte heslo"
#: app/autoAr.js:359
msgid "Removing partial file '${outputFile}'"
msgstr "Odstraňuji dílčí soubor '${outputFile}'"
#: app/autoAr.js:378
msgid "Creating destination folder"
msgstr "Vytvářím cílovou složku"
#: app/autoAr.js:410
msgid "Extracting files into '${outputPath}'"
msgstr "Rozbaluji soubory do '${outputPath}'"
#: app/autoAr.js:442
msgid "Extraction completed"
msgstr "Rozbalování bylo dokončeno"
#: app/autoAr.js:443
msgid "Extracting '${fullPathFile}' has been completed."
msgstr "Rozbalování '${fullPathFile}' bylo dokončeno."
#: app/autoAr.js:449
msgid "Extraction cancelled"
msgstr "Rozbalování zrušeno"
#: app/autoAr.js:450
msgid "Extracting '${fullPathFile}' has been cancelled by the user."
msgstr "Rozbalování '${fullPathFile}' bylo zrušeno uživatelem."
#: app/autoAr.js:460
msgid "Passphrase required for ${filename}"
msgstr "Heslo je vyžadováno pro ${filename}"
#: app/autoAr.js:463
msgid "Error during extraction"
msgstr "Během rozbalování se vyskytla chyba"
#: app/autoAr.js:492
msgid "Compressing files into '${outputFile}'"
msgstr "Zabaluji soubory do '${outputFile}'"
#: app/autoAr.js:505
msgid "Compression completed"
msgstr "Zabalení dokončeno"
#: app/autoAr.js:506
msgid "Compressing files into '${outputFile}' has been completed."
msgstr "Zabalení souboru do '${outputFile}' bylo dokončeno."
#: app/autoAr.js:510 app/autoAr.js:517
msgid "Cancelled compression"
msgstr "Zabalení přerušeno"
#: app/autoAr.js:511
msgid "The output file '${outputFile}' already exists."
msgstr "Soubor '${outputFile}' již existuje."
#: app/autoAr.js:518
msgid "Compressing files into '${outputFile}' has been cancelled by the user."
msgstr "Zabalení souborů do '${outputFile}' bylo zrušeno uživatelem."
#: app/autoAr.js:521
msgid "Error during compression"
msgstr "Při zabalování se vyskytla chyba"
#: app/autoAr.js:554
msgid "Create archive"
msgstr "Vytvořit archiv"
#: app/autoAr.js:579
msgid "Archive name"
msgstr "Jméno archivu"
#: app/autoAr.js:614
msgid "Password"
msgstr "Heslo"
#: app/autoAr.js:633
msgid "Create"
msgstr "Vytvořit"
#: app/autoAr.js:712
msgid "Compatible with all operating systems."
msgstr "Kompatibilní se všemi operačními systémy."
#: app/autoAr.js:718
msgid "Password protected .zip, must be installed on Windows and Mac."
msgstr "Heslem chráněný .zip, musí být nainstalován na Windows a Mac."
#: app/autoAr.js:724
msgid "Smaller archives but Linux and Mac only."
msgstr "Menší archivy ale pouze pro Linux a Mac."
#: app/autoAr.js:730
msgid "Smaller archives but must be installed on Windows and Mac."
msgstr "Menší archivy ale musí být nainstalovány na Windows a Mac."
#: app/dbusUtils.js:69
msgid "\"${programName}\" is needed for Desktop Icons"
msgstr "\"${programName}\" je potřeba pro ikony na ploše"
#: app/dbusUtils.js:70
msgid ""
"For this functionality to work in Desktop Icons, you must install \"$"
"{programName}\" in your system."
msgstr "Aby tato funkce fungovala musíte nainstalovat \"${programName}\"."
#: app/desktopIconsUtil.js:154
msgid "Command not found"
msgstr "Příkaz nebyl nalezen"
#: app/desktopManager.js:259
msgid "Nautilus File Manager not found"
msgstr "Správce souborů Nautilus nebyl nalezen"
#: app/desktopManager.js:260
msgid "The Nautilus File Manager is mandatory to work with Desktop Icons NG."
msgstr "Správce Souborů Nautilus je nezbytný pro práci s Desktop Icons NG."
#: app/desktopManager.js:964
msgid "Clear Current Selection before New Search"
msgstr "Vymazat aktuální výběr před novým hledáním"
#: app/desktopManager.js:1006
msgid "Find Files on Desktop"
msgstr "Najít soubory na Ploše"
#: app/desktopManager.js:1074 app/desktopManager.js:1786
msgid "New Folder"
msgstr "Nová složka"
#: app/desktopManager.js:1078
msgid "New Document"
msgstr "Nový Dokument"
#: app/desktopManager.js:1083
msgid "Paste"
msgstr "Vložit"
#: app/desktopManager.js:1087
msgid "Undo"
msgstr "Zpět"
#: app/desktopManager.js:1091
msgid "Redo"
msgstr "Znovu"
#: app/desktopManager.js:1097
msgid "Select All"
msgstr "Vybrat vše"
#: app/desktopManager.js:1105
msgid "Show Desktop in Files"
msgstr "Zobrazit plochu v Souborech"
#: app/desktopManager.js:1109 app/fileItemMenu.js:365
msgid "Open in Terminal"
msgstr "Otevřít v terminálu"
#: app/desktopManager.js:1115
msgid "Change Background…"
msgstr "Změnit pozadí…"
#: app/desktopManager.js:1126
msgid "Desktop Icons Settings"
msgstr "Nastavení ikon na ploše"
#: app/desktopManager.js:1139
msgid "Display Settings"
msgstr "Zobrazit nastavení"
#: app/desktopManager.js:1799
#, fuzzy
msgid "Folder Creation Failed"
msgstr "Název nové složky"
#: app/desktopManager.js:1800
#, fuzzy
msgid "Error while trying to create a Folder"
msgstr "Při odstraňování souborů se vyskytla chyba"
#: app/desktopManager.js:1836
msgid "Template Creation Failed"
msgstr ""
#: app/desktopManager.js:1837
msgid "Error while trying to create a Document"
msgstr ""
#: app/desktopManager.js:1845
msgid "Arrange Icons"
msgstr "Uspořádat ikony"
#: app/desktopManager.js:1849
msgid "Arrange By..."
msgstr "Uspořádat podle..."
#: app/desktopManager.js:1858
msgid "Keep Arranged..."
msgstr "Nechat uspořádané..."
#: app/desktopManager.js:1862
msgid "Keep Stacked by type..."
msgstr "Nechat seskupené podle typu..."
#: app/desktopManager.js:1867
msgid "Sort Home/Drives/Trash..."
msgstr "Seřadit Domovská složka/Jednotky/Koš..."
#: app/desktopManager.js:1873
msgid "Sort by Name"
msgstr "Seřadit podle Jména"
#: app/desktopManager.js:1875
msgid "Sort by Name Descending"
msgstr "Seřadit podle Jména sestupně"
#: app/desktopManager.js:1878
msgid "Sort by Modified Time"
msgstr "Seřadit podle Času úpravy"
#: app/desktopManager.js:1881
msgid "Sort by Type"
msgstr "Seřadit podle Typu"
#: app/desktopManager.js:1884
msgid "Sort by Size"
msgstr "Seřadit podle Velikosti"
#. * TRANSLATORS: when using a screen reader, this is the text read when a folder is
#. selected. Example: if a folder named "things" is selected, it will say "things Folder"
#: app/fileItem.js:64
msgid "${VisibleName} Folder"
msgstr ""
#. * TRANSLATORS: when using a screen reader, this is the text read when a normal file is
#. selected. Example: if a file named "my_picture.jpg" is selected, it will say "my_picture.jpg File"
#: app/fileItem.js:68
msgid "${VisibleName} File"
msgstr ""
#. TRANSLATORS: "Home" is the text that will be shown in the user's personal folder
#: app/fileItem.js:72 app/fileItem.js:203
msgid "Home"
msgstr "Domovská složka"
#. * TRANSLATORS: when using a screen reader, this is the text read when the trash folder is
#. selected.
#: app/fileItem.js:77
#, fuzzy
msgid "Trash"
msgstr "Vyprázdnit koš"
#. * TRANSLATORS: when using a screen reader, this is the text read when an external drive is
#. selected. Example: if a USB stick named "my_portable" is selected, it will say "my_portable Drive"
#: app/fileItem.js:82
msgid "${VisibleName} Drive"
msgstr ""
#. * TRANSLATORS: when using a screen reader, this is the text read when a stack is
#. selected. Example: if a stack named "pictures" is selected, it will say "pictures Stack"
#: app/fileItem.js:87
msgid "${VisibleName} Stack"
msgstr ""
#: app/fileItem.js:295
#, fuzzy
msgid "Error while reading Desktop file"
msgstr "Při odstraňování souborů se vyskytla chyba"
#: app/fileItem.js:337
msgid "Broken Link"
msgstr "Neplatný odkaz"
#: app/fileItem.js:338
msgid "Can not open this File because it is a Broken Symlink"
msgstr "Není možné otevřít tento soubor jelikož se jedná o neplatný Symlink"
#: app/fileItem.js:370
#, fuzzy
msgid "Can't open the file"
msgstr "Spustit soubor"
#: app/fileItem.js:396
msgid "Broken Desktop File"
msgstr "Rozbitý Desktop soubor"
#: app/fileItem.js:397
msgid ""
"This .desktop file has errors or points to a program without permissions. It "
"can not be executed.\n"
"\n"
"\tEdit the file to set the correct executable Program."
msgstr ""
"Tento .desktop soubor obsahuje chyby nebo odkazuje na nespustitelný program. "
"Nemůže být spuštěn.\n"
"\n"
"\tUpravte soubor nebo nastavte správné oprávnění programu"
#: app/fileItem.js:403
msgid "Invalid Permissions on Desktop File"
msgstr "Neplatné oprávnění k Souboru Desktop"
#: app/fileItem.js:404
msgid ""
"This .desktop File has incorrect Permissions. Right Click to edit "
"Properties, then:\n"
msgstr ""
"Tento .desktop soubor má neplatné oprávnění. Klikněte pravým tlačítkem a "
"vyberte položku Vlastnosti, potom:\n"
#: app/fileItem.js:406
msgid ""
"\n"
"Set Permissions, in \"Others Access\", \"Read Only\" or \"None\""
msgstr ""
"\n"
"Nastavte oprávnění v \"Ostatní\" na \"Pouze čtení\" nebo \"Nic\""
#: app/fileItem.js:409
msgid ""
"\n"
"Enable option, \"Allow Executing File as a Program\""
msgstr ""
"\n"
"Povolte možnost \"Spustitelný jako program\""
#: app/fileItem.js:417
msgid ""
"This .desktop file is not trusted, it can not be launched. To enable "
"launching, right-click, then:\n"
"\n"
"Enable \"Allow Launching\""
msgstr ""
"Tento .desktop soubor je nedůvěryhodný, nemůže být spuštěn. K povolení "
"spouštění klikněte pravým tlačítkem, potom:\n"
"\n"
"Klikněte na \"Povolit spouštění\""
#: app/fileItem.js:620
msgid "Failed to set execution flag"
msgstr ""
#: app/fileItem.js:632 app/fileItem.js:639
msgid "Could not apply discrete GPU environment"
msgstr ""
#: app/fileItem.js:668
msgid "Could not find discrete GPU data"
msgstr ""
#: app/fileItem.js:793
msgid "Failed to set metadata::trusted flag"
msgstr ""
#: app/fileItemMenu.js:143
msgid "Open All..."
msgstr "Otevřít vše..."
#: app/fileItemMenu.js:143
msgid "Open"
msgstr "Otevřít"
#: app/fileItemMenu.js:160
msgid "Stack This Type"
msgstr "Seskupovat tento typ"
#: app/fileItemMenu.js:160
msgid "Unstack This Type"
msgstr "Neseskupovat tento typ"
#: app/fileItemMenu.js:173
msgid "Scripts"
msgstr "Skripty"
#: app/fileItemMenu.js:178
msgid "Open All With Other Application..."
msgstr "Otevřít vše v jiné aplikaci..."
#: app/fileItemMenu.js:178
msgid "Open With Other Application"
msgstr "Otevřít pomocí jiné aplikace"
#: app/fileItemMenu.js:184
msgid "Launch using Dedicated Graphics Card"
msgstr "Spustit pomocí dedikované grafické karty"
#: app/fileItemMenu.js:195
msgid "Run as a program"
msgstr "Spustit jako program"
#: app/fileItemMenu.js:203
msgid "Cut"
msgstr "Vyjmout"
#: app/fileItemMenu.js:210
msgid "Copy"
msgstr "Kopírovat"
#: app/fileItemMenu.js:218
msgid "Rename…"
msgstr "Přejmenovat…"
#: app/fileItemMenu.js:228
msgid "Move to Trash"
msgstr "Přesunout do koše"
#: app/fileItemMenu.js:236
msgid "Delete permanently"
msgstr "Odstranit nadobro"
#: app/fileItemMenu.js:246
msgid "Don't Allow Launching"
msgstr "Nepovolit spouštění"
#: app/fileItemMenu.js:246
msgid "Allow Launching"
msgstr "Povolit spouštění"
#: app/fileItemMenu.js:259
msgid "Empty Trash"
msgstr "Vyprázdnit koš"
#: app/fileItemMenu.js:272
msgid "Eject"
msgstr "Vysunout"
#: app/fileItemMenu.js:280
msgid "Unmount"
msgstr "Odpojit"
#: app/fileItemMenu.js:294 app/fileItemMenu.js:301
msgid "Extract Here"
msgstr "Rozbalit sem"
#: app/fileItemMenu.js:308
msgid "Extract To..."
msgstr "Rozbalit do…"
#: app/fileItemMenu.js:317
msgid "Send to..."
msgstr "Poslat..."
#: app/fileItemMenu.js:325
msgid "Compress {0} folder"
msgid_plural "Compress {0} folders"
msgstr[0] "Zabalit {0} soubor"
msgstr[1] ""
"Z\n"
"Zabalit {0} soubory"
msgstr[2] "Zabalit {0} souborů"
#: app/fileItemMenu.js:332
msgid "Compress {0} file"
msgid_plural "Compress {0} files"
msgstr[0] "Zabalit {0} soubor"
msgstr[1] "Zabalit {0} soubory"
msgstr[2] "Zabalit {0} souborů"
#: app/fileItemMenu.js:340
msgid "New Folder with {0} item"
msgid_plural "New Folder with {0} items"
msgstr[0] "Nová složka s {0} položkou"
msgstr[1] "Nová složka s {0} položkami"
msgstr[2] "Nová složka s {0} položkami"
#: app/fileItemMenu.js:351
msgid "Common Properties"
msgstr "Vlastnosti"
#: app/fileItemMenu.js:351
msgid "Properties"
msgstr "Vlastnosti"
#: app/fileItemMenu.js:358
msgid "Show All in Files"
msgstr "Zobrazit vše v Souborech"
#: app/fileItemMenu.js:358
msgid "Show in Files"
msgstr "Zobrazit v Souborech"
#: app/fileItemMenu.js:449
#, fuzzy
msgid "No Extraction Folder"
msgstr "Rozbalování bylo dokončeno"
#: app/fileItemMenu.js:450
msgid "Unable to extract File, extraction Folder Does not Exist"
msgstr ""
#: app/fileItemMenu.js:470
msgid "Select Extract Destination"
msgstr "Vybrat místo k extrahování"
#: app/fileItemMenu.js:475
msgid "Select"
msgstr "Vybrat vše"
#: app/fileItemMenu.js:516
msgid "Can not email a Directory"
msgstr "Nemůžete poslat složku emailem"
#: app/fileItemMenu.js:517
msgid "Selection includes a Directory, compress the directory to a file first."
msgstr "Výběr obsahuje Složku, nejdříve musíte zabalit složku do archivu."
#: app/notifyX11UnderWayland.js:37
msgid "Desktop Icons NG is running under X11Wayland"
msgstr ""
#: app/notifyX11UnderWayland.js:38
msgid ""
"It seems that you have your system configured to force GTK to use X11. This "
"works, but it's suboptimal. You should check your system configuration to "
"fix this."
msgstr ""
#: app/notifyX11UnderWayland.js:39 app/showErrorPopup.js:39
msgid "Close"
msgstr "Zavřít"
#: app/notifyX11UnderWayland.js:47
msgid "Don't show this message anymore."
msgstr ""
#: app/preferences.js:91
msgid "Settings"
msgstr "Nastavení ikon na ploše"
#: app/prefswindow.js:64
msgid "Size for the desktop icons"
msgstr "Velikost ikon na pracovní ploše"
#: app/prefswindow.js:64
msgid "Tiny"
msgstr "Drobný"
#: app/prefswindow.js:64
msgid "Small"
msgstr "Malé"
#: app/prefswindow.js:64
msgid "Standard"
msgstr "Standardní"
#: app/prefswindow.js:64
msgid "Large"
msgstr "Velké"
#: app/prefswindow.js:65
msgid "Show the personal folder in the desktop"
msgstr "Zobrazovat osobní složku na pracovní ploše"
#: app/prefswindow.js:66
msgid "Show the trash icon in the desktop"
msgstr "Zobrazovat ikonu koše na pracovní ploše"
#: app/prefswindow.js:67 schemas/org.gnome.shell.extensions.ding.gschema.xml:45
msgid "Show external drives in the desktop"
msgstr "Zobrazovat disky připojené k počítači"
#: app/prefswindow.js:68 schemas/org.gnome.shell.extensions.ding.gschema.xml:50
msgid "Show network drives in the desktop"
msgstr "Zobrazovat síťové disky připojené k počítači"
#: app/prefswindow.js:71
msgid "New icons alignment"
msgstr "Zarovnání nových ikon"
#: app/prefswindow.js:73
msgid "Top-left corner"
msgstr "Levý horní roh"
#: app/prefswindow.js:74
msgid "Top-right corner"
msgstr "Pravý horní roh"
#: app/prefswindow.js:75
msgid "Bottom-left corner"
msgstr "Spodní levý roh"
#: app/prefswindow.js:76
msgid "Bottom-right corner"
msgstr "Spodní pravý roh"
#: app/prefswindow.js:78 schemas/org.gnome.shell.extensions.ding.gschema.xml:55
msgid "Add new drives to the opposite side of the screen"
msgstr "Dávat nové disky na opačnou stranu obrazovky"
#: app/prefswindow.js:79
msgid "Highlight the drop place during Drag'n'Drop"
msgstr "Zvýraznit místo k položení při přetahování souborů"
#: app/prefswindow.js:80 schemas/org.gnome.shell.extensions.ding.gschema.xml:90
msgid "Use Nemo to open folders"
msgstr "Použít Nemo k otevírání složek"
#: app/prefswindow.js:82
msgid "Add an emblem to soft links"
msgstr "Přidat emblém k soft linkům"
#: app/prefswindow.js:84
msgid "Use dark text in icon labels"
msgstr "Použít tmavý text pro popisky ikon"
#: app/prefswindow.js:91
msgid "Settings shared with Nautilus"
msgstr "Nastavení sdílená s Nautilem"
#: app/prefswindow.js:113
msgid "Click type for open files"
msgstr "Typ kliknutí požadovaný pro otevření souboru"
#: app/prefswindow.js:113
msgid "Single click"
msgstr "Jeden klik"
#: app/prefswindow.js:113
msgid "Double click"
msgstr "Dvojklik"
#: app/prefswindow.js:114
msgid "Show hidden files"
msgstr "Zobrazit skryté soubory"
#: app/prefswindow.js:115
msgid "Show a context menu item to delete permanently"
msgstr "Zobrazit položku kontextové nabídky, kterou chcete trvale smazat"
#: app/prefswindow.js:120
msgid "Action to do when launching a program from the desktop"
msgstr "Co se má stát když spouštíte spustitelný soubor z plochy"
#: app/prefswindow.js:121
msgid "Display the content of the file"
msgstr "Zobrazit obsah souboru"
#: app/prefswindow.js:122
msgid "Launch the file"
msgstr "Spustit soubor"
#: app/prefswindow.js:123
msgid "Ask what to do"
msgstr "Zeptat se co se má stát"
#: app/prefswindow.js:129
msgid "Show image thumbnails"
msgstr "Zobrazit náhledové obrázky"
#: app/prefswindow.js:130
msgid "Never"
msgstr "Nikdy"
#: app/prefswindow.js:131
msgid "Local files only"
msgstr "Pouze pro místní soubory"
#: app/prefswindow.js:132
msgid "Always"
msgstr "Vždy"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:25
msgid "Icon size"
msgstr "Velikost ikon"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:26
msgid "Set the size for the desktop icons."
msgstr "Nastavit velikost pro ikony na pracovní ploše."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:30
msgid "Show personal folder"
msgstr "Zobrazovat osobní složku"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:31
msgid "Show the personal folder in the desktop."
msgstr "Zobrazovat osobní složku na pracovní ploše."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:35
msgid "Show trash icon"
msgstr "Zobrazovat koš"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:36
msgid "Show the trash icon in the desktop."
msgstr "Zobrazovat ikonu koše na pracovní ploše."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:40
msgid "New icons start corner"
msgstr "Místo kam se přidávají nové ikony"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:41
msgid "Set the corner from where the icons will start to be placed."
msgstr "Vyberte roh do kterého budou ikony pokládány."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:46
msgid "Show the disk drives connected to the computer."
msgstr "Zobrazovat disky připojené k počítači."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:51
msgid "Show mounted network volumes in the desktop."
msgstr "Zobrazovat připojené síťové disky připojené k počítači."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:56
msgid ""
"When adding drives and volumes to the desktop, add them to the opposite side "
"of the screen."
msgstr ""
"Při připojení nových disků se jejich ikony budou zobrazovat na opačné straně "
"obrazovky."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:60
msgid "Shows a rectangle in the destination place during DnD"
msgstr "Zobrazit čtverec při přetahování ikon"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:61
msgid ""
"When doing a Drag'n'Drop operation, marks the place in the grid where the "
"icon will be put with a semitransparent rectangle."
msgstr ""
"Při přetahování ikon se místo kam bude ikona dána obarví poloprůhledným "
"čtvercem."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:65
msgid "Sort Special Folders - Home/Trash Drives."
msgstr "Seřadit speciální složky - Domovská složka/Jednotky/Koš."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:66
msgid ""
"When arranging Icons on desktop, to sort and change the position of the "
"Home, Trash and mounted Network or External Drives"
msgstr ""
"Při uspořádání ikon na ploše můžete třídit a měnit polohu Domácí složky, "
"koše a připojených síťových nebo externích jednotek"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:70
msgid "Keep Icons Arranged"
msgstr "Nechat Ikony uspořádané"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:71
msgid "Always keep Icons Arranged by the last arranged order"
msgstr "Vždy nechat Ikony seřazené podle posledního řazení"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:75
msgid "Arrange Order"
msgstr "Pořadí seřazené"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:76
msgid "Icons Arranged by this property"
msgstr "Ikony seřazené podle této vlastnosti"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:80
msgid "Keep Icons Stacked"
msgstr "Nechat Ikony seskupené"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:81
msgid "Always keep Icons Stacked, Similar types are grouped"
msgstr "Vždy nechat Ikony seskupené, podobné typy jsou seskupeny"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:85
msgid "Type of Files to not Stack"
msgstr "Typ souboru co neseskupovat"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:86
msgid "An Array of strings types, Don't Stack these types of files"
msgstr "Pole typu stringů, Neseskupovat tyto typy souborů"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:91
msgid "Use Nemo instead of Nautilus to open folders."
msgstr "Použít Nemo místo Nautilu k otevírání složek."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:95
msgid "Add an emblem to links"
msgstr "Přidat emblémy k odkazům"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:96
msgid "Add an emblem to allow to identify soft links."
msgstr "Přidat emblém k umožnění identifikace soft linků."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:100
msgid "Use black for label text"
msgstr "Použít černý text pro popisky"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:101
msgid ""
"Paint the label text in black instead of white. Useful when using light "
"backgrounds."
msgstr "Zobrazovat text popisků v černé místo bílé. Vhodné pro světlé pozadí."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:105
msgid "Show a popup if running on X11Wayland"
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:106
msgid ""
"Whether DING should show a popup if it is running on X11Wayland, or the user "
"decided to not show it anymore."
msgstr ""
#, fuzzy
#~ msgid "Desktop icons"
#~ msgstr "Nastavení ikon na ploše"
#~ msgid ""
#~ "To configure Desktop Icons NG, do right-click in the desktop and choose "
#~ "the last item: 'Desktop Icons settings'"
#~ msgstr ""
#~ "Chcete-li nakonfigurovat Desktop Icons NG, klikněte pravým tlačítkem na "
#~ "plochu a vyberte poslední položku: 'Nastavení ikon na ploše'"
#~ msgid "Do you want to run “{0}”, or display its contents?"
#~ msgstr "Chcete spustit “{0}” nebo chcete zobrazit obsah?"
#~ msgid "“{0}” is an executable text file."
#~ msgstr "“{0}” je spustitelný soubor."
#~ msgid "Execute in a terminal"
#~ msgstr "Spustit v terminálu"
#~ msgid "Show"
#~ msgstr "Zobrazit"
#~ msgid "Execute"
#~ msgstr "Spustit"
#~ msgid "New folder"
#~ msgstr "Nová složka"
#~ msgid "Delete"
#~ msgstr "Odstranit"
#~ msgid "Are you sure you want to permanently delete these items?"
#~ msgstr "Jste si jisti že chcete odstranit tyto soubory?"
#~ msgid "If you delete an item, it will be permanently lost."
#~ msgstr "Pokud odstraníte soubor bude navždy ztracen."
#, fuzzy
#~ msgid "Show external disk drives in the desktop"
#~ msgstr "Zobrazovat osobní složku na pracovní ploše"
#, fuzzy
#~ msgid "Show the external drives"
#~ msgstr "Zobrazovat osobní složku na pracovní ploše"
#, fuzzy
#~ msgid "Show network volumes"
#~ msgstr "Zobrazit v Souborech"
#~ msgid "Enter file name…"
#~ msgstr "Zadejte název souboru…"
#~ msgid "Folder names cannot contain “/”."
#~ msgstr "Názvy složek nesmí obsahovat „/“."
#~ msgid "A folder cannot be called “.”."
#~ msgstr "Složka se nemůže jmenovat „.“."
#~ msgid "A folder cannot be called “..”."
#~ msgstr "Složka se nemůže jmenovat „..“."
#~ msgid "Folders with “.” at the beginning of their name are hidden."
#~ msgstr "Složky s „.“ na začátku jejich názvu jsou skryty."
#~ msgid "There is already a file or folder with that name."
#~ msgstr "Soubor nebo složka s tímto názvem již existuje."
#~ msgid "Huge"
#~ msgstr "Obrovské"
#~ msgid "Ok"
#~ msgstr "Ok"
desktop-icons-ng-49.0.5-c32667693d0831c29e3ab3f7bfeb675ea1531a00/po/da.po 0000664 0000000 0000000 00000050034 15064747536 0023727 0 ustar 00root root 0000000 0000000 # Danish translation for desktop-icons.
# Copyright (C) 2018 desktop-icons's COPYRIGHT HOLDER
# This file is distributed under the same license as the desktop-icons package.
# Alan Mortensen , 2018.
#
msgid ""
msgstr ""
"Project-Id-Version: desktop-icons master\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-06-29 16:52+0200\n"
"PO-Revision-Date: 2019-03-04 14:55+0200\n"
"Last-Translator: scootergrisen\n"
"Language-Team: Danish \n"
"Language: da\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: app/askRenamePopup.js:49
#, fuzzy
msgid "Folder name"
msgstr "Nyt mappenavn"
#: app/askRenamePopup.js:49
#, fuzzy
msgid "File name"
msgstr "Omdøb …"
#: app/askRenamePopup.js:57 app/autoAr.js:305 app/desktopManager.js:1002
msgid "OK"
msgstr "OK"
#: app/askRenamePopup.js:57
#, fuzzy
msgid "Rename"
msgstr "Omdøb …"
#: app/autoAr.js:88
msgid "AutoAr is not installed"
msgstr ""
#: app/autoAr.js:89
msgid ""
"To be able to work with compressed files, install file-roller and/or gir-1.2-"
"gnomeAutoAr"
msgstr ""
#: app/autoAr.js:224
#, fuzzy
msgid "Extracting files"
msgstr "Pak ud her"
#: app/autoAr.js:241
msgid "Compressing files"
msgstr ""
#: app/autoAr.js:297 app/autoAr.js:636 app/desktopManager.js:1004
#: app/fileItemMenu.js:474
msgid "Cancel"
msgstr "Annullér"
#: app/autoAr.js:318 app/autoAr.js:619
msgid "Enter a password here"
msgstr ""
#: app/autoAr.js:359
msgid "Removing partial file '${outputFile}'"
msgstr ""
#: app/autoAr.js:378
msgid "Creating destination folder"
msgstr ""
#: app/autoAr.js:410
msgid "Extracting files into '${outputPath}'"
msgstr ""
#: app/autoAr.js:442
#, fuzzy
msgid "Extraction completed"
msgstr "Pak ud her"
#: app/autoAr.js:443
msgid "Extracting '${fullPathFile}' has been completed."
msgstr ""
#: app/autoAr.js:449
#, fuzzy
msgid "Extraction cancelled"
msgstr "Pak ud her"
#: app/autoAr.js:450
msgid "Extracting '${fullPathFile}' has been cancelled by the user."
msgstr ""
#: app/autoAr.js:460
msgid "Passphrase required for ${filename}"
msgstr ""
#: app/autoAr.js:463
msgid "Error during extraction"
msgstr ""
#: app/autoAr.js:492
msgid "Compressing files into '${outputFile}'"
msgstr ""
#: app/autoAr.js:505
msgid "Compression completed"
msgstr ""
#: app/autoAr.js:506
msgid "Compressing files into '${outputFile}' has been completed."
msgstr ""
#: app/autoAr.js:510 app/autoAr.js:517
msgid "Cancelled compression"
msgstr ""
#: app/autoAr.js:511
msgid "The output file '${outputFile}' already exists."
msgstr ""
#: app/autoAr.js:518
msgid "Compressing files into '${outputFile}' has been cancelled by the user."
msgstr ""
#: app/autoAr.js:521
msgid "Error during compression"
msgstr ""
#: app/autoAr.js:554
#, fuzzy
msgid "Create archive"
msgstr "Opret"
#: app/autoAr.js:579
#, fuzzy
msgid "Archive name"
msgstr "Omdøb …"
#: app/autoAr.js:614
msgid "Password"
msgstr ""
#: app/autoAr.js:633
msgid "Create"
msgstr "Opret"
#: app/autoAr.js:712
msgid "Compatible with all operating systems."
msgstr ""
#: app/autoAr.js:718
msgid "Password protected .zip, must be installed on Windows and Mac."
msgstr ""
#: app/autoAr.js:724
msgid "Smaller archives but Linux and Mac only."
msgstr ""
#: app/autoAr.js:730
msgid "Smaller archives but must be installed on Windows and Mac."
msgstr ""
#: app/dbusUtils.js:69
msgid "\"${programName}\" is needed for Desktop Icons"
msgstr ""
#: app/dbusUtils.js:70
msgid ""
"For this functionality to work in Desktop Icons, you must install \"$"
"{programName}\" in your system."
msgstr ""
#: app/desktopIconsUtil.js:154
msgid "Command not found"
msgstr ""
#: app/desktopManager.js:259
msgid "Nautilus File Manager not found"
msgstr ""
#: app/desktopManager.js:260
msgid "The Nautilus File Manager is mandatory to work with Desktop Icons NG."
msgstr ""
#: app/desktopManager.js:964
msgid "Clear Current Selection before New Search"
msgstr ""
#: app/desktopManager.js:1006
msgid "Find Files on Desktop"
msgstr ""
#: app/desktopManager.js:1074 app/desktopManager.js:1786
msgid "New Folder"
msgstr "Ny mappe"
#: app/desktopManager.js:1078
msgid "New Document"
msgstr "Nyt dokument"
#: app/desktopManager.js:1083
msgid "Paste"
msgstr "Indsæt"
#: app/desktopManager.js:1087
msgid "Undo"
msgstr "Fortryd"
#: app/desktopManager.js:1091
msgid "Redo"
msgstr "Omgør"
#: app/desktopManager.js:1097
#, fuzzy
msgid "Select All"
msgstr "Vælg alt"
#: app/desktopManager.js:1105
msgid "Show Desktop in Files"
msgstr "Vis skrivebordet i Filer"
#: app/desktopManager.js:1109 app/fileItemMenu.js:365
msgid "Open in Terminal"
msgstr "Åbn i terminal"
#: app/desktopManager.js:1115
msgid "Change Background…"
msgstr "Skift baggrund …"
#: app/desktopManager.js:1126
#, fuzzy
msgid "Desktop Icons Settings"
msgstr "Skærmindstillinger"
#: app/desktopManager.js:1139
msgid "Display Settings"
msgstr "Skærmindstillinger"
#: app/desktopManager.js:1799
#, fuzzy
msgid "Folder Creation Failed"
msgstr "Nyt mappenavn"
#: app/desktopManager.js:1800
msgid "Error while trying to create a Folder"
msgstr ""
#: app/desktopManager.js:1836
msgid "Template Creation Failed"
msgstr ""
#: app/desktopManager.js:1837
msgid "Error while trying to create a Document"
msgstr ""
#: app/desktopManager.js:1845
msgid "Arrange Icons"
msgstr ""
#: app/desktopManager.js:1849
msgid "Arrange By..."
msgstr ""
#: app/desktopManager.js:1858
msgid "Keep Arranged..."
msgstr ""
#: app/desktopManager.js:1862
msgid "Keep Stacked by type..."
msgstr ""
#: app/desktopManager.js:1867
msgid "Sort Home/Drives/Trash..."
msgstr ""
#: app/desktopManager.js:1873
msgid "Sort by Name"
msgstr ""
#: app/desktopManager.js:1875
msgid "Sort by Name Descending"
msgstr ""
#: app/desktopManager.js:1878
msgid "Sort by Modified Time"
msgstr ""
#: app/desktopManager.js:1881
msgid "Sort by Type"
msgstr ""
#: app/desktopManager.js:1884
msgid "Sort by Size"
msgstr ""
#. * TRANSLATORS: when using a screen reader, this is the text read when a folder is
#. selected. Example: if a folder named "things" is selected, it will say "things Folder"
#: app/fileItem.js:64
msgid "${VisibleName} Folder"
msgstr ""
#. * TRANSLATORS: when using a screen reader, this is the text read when a normal file is
#. selected. Example: if a file named "my_picture.jpg" is selected, it will say "my_picture.jpg File"
#: app/fileItem.js:68
msgid "${VisibleName} File"
msgstr ""
#. TRANSLATORS: "Home" is the text that will be shown in the user's personal folder
#: app/fileItem.js:72 app/fileItem.js:203
msgid "Home"
msgstr "Hjem"
#. * TRANSLATORS: when using a screen reader, this is the text read when the trash folder is
#. selected.
#: app/fileItem.js:77
#, fuzzy
msgid "Trash"
msgstr "Tøm papirkurven"
#. * TRANSLATORS: when using a screen reader, this is the text read when an external drive is
#. selected. Example: if a USB stick named "my_portable" is selected, it will say "my_portable Drive"
#: app/fileItem.js:82
msgid "${VisibleName} Drive"
msgstr ""
#. * TRANSLATORS: when using a screen reader, this is the text read when a stack is
#. selected. Example: if a stack named "pictures" is selected, it will say "pictures Stack"
#: app/fileItem.js:87
msgid "${VisibleName} Stack"
msgstr ""
#: app/fileItem.js:295
#, fuzzy
msgid "Error while reading Desktop file"
msgstr "Vis skrivebordet i Filer"
#: app/fileItem.js:337
msgid "Broken Link"
msgstr ""
#: app/fileItem.js:338
msgid "Can not open this File because it is a Broken Symlink"
msgstr ""
#: app/fileItem.js:370
msgid "Can't open the file"
msgstr ""
#: app/fileItem.js:396
#, fuzzy
msgid "Broken Desktop File"
msgstr "Vis skrivebordet i Filer"
#: app/fileItem.js:397
msgid ""
"This .desktop file has errors or points to a program without permissions. It "
"can not be executed.\n"
"\n"
"\tEdit the file to set the correct executable Program."
msgstr ""
#: app/fileItem.js:403
msgid "Invalid Permissions on Desktop File"
msgstr ""
#: app/fileItem.js:404
msgid ""
"This .desktop File has incorrect Permissions. Right Click to edit "
"Properties, then:\n"
msgstr ""
#: app/fileItem.js:406
msgid ""
"\n"
"Set Permissions, in \"Others Access\", \"Read Only\" or \"None\""
msgstr ""
#: app/fileItem.js:409
msgid ""
"\n"
"Enable option, \"Allow Executing File as a Program\""
msgstr ""
#: app/fileItem.js:417
msgid ""
"This .desktop file is not trusted, it can not be launched. To enable "
"launching, right-click, then:\n"
"\n"
"Enable \"Allow Launching\""
msgstr ""
#: app/fileItem.js:620
msgid "Failed to set execution flag"
msgstr ""
#: app/fileItem.js:632 app/fileItem.js:639
msgid "Could not apply discrete GPU environment"
msgstr ""
#: app/fileItem.js:668
msgid "Could not find discrete GPU data"
msgstr ""
#: app/fileItem.js:793
msgid "Failed to set metadata::trusted flag"
msgstr ""
#: app/fileItemMenu.js:143
msgid "Open All..."
msgstr ""
#: app/fileItemMenu.js:143
msgid "Open"
msgstr "Åbn"
#: app/fileItemMenu.js:160
msgid "Stack This Type"
msgstr ""
#: app/fileItemMenu.js:160
msgid "Unstack This Type"
msgstr ""
#: app/fileItemMenu.js:173
msgid "Scripts"
msgstr "Programmer"
#: app/fileItemMenu.js:178
#, fuzzy
msgid "Open All With Other Application..."
msgstr "Åbn med et andet program"
#: app/fileItemMenu.js:178
msgid "Open With Other Application"
msgstr "Åbn med et andet program"
#: app/fileItemMenu.js:184
msgid "Launch using Dedicated Graphics Card"
msgstr ""
#: app/fileItemMenu.js:195
msgid "Run as a program"
msgstr ""
#: app/fileItemMenu.js:203
msgid "Cut"
msgstr "Klip"
#: app/fileItemMenu.js:210
msgid "Copy"
msgstr "Kopiér"
#: app/fileItemMenu.js:218
msgid "Rename…"
msgstr "Omdøb …"
#: app/fileItemMenu.js:228
msgid "Move to Trash"
msgstr "Flyt til papirkurven"
#: app/fileItemMenu.js:236
msgid "Delete permanently"
msgstr "Slet permanent"
#: app/fileItemMenu.js:246
#, fuzzy
msgid "Don't Allow Launching"
msgstr "Tillad ikke opstart"
#: app/fileItemMenu.js:246
msgid "Allow Launching"
msgstr "Tillad opstart"
#: app/fileItemMenu.js:259
msgid "Empty Trash"
msgstr "Tøm papirkurven"
#: app/fileItemMenu.js:272
msgid "Eject"
msgstr "Skub ud"
#: app/fileItemMenu.js:280
msgid "Unmount"
msgstr "Afmontér"
#: app/fileItemMenu.js:294 app/fileItemMenu.js:301
msgid "Extract Here"
msgstr "Pak ud her"
#: app/fileItemMenu.js:308
msgid "Extract To..."
msgstr "Pak ud i …"
#: app/fileItemMenu.js:317
msgid "Send to..."
msgstr "Send til …"
#: app/fileItemMenu.js:325
msgid "Compress {0} folder"
msgid_plural "Compress {0} folders"
msgstr[0] ""
msgstr[1] ""
#: app/fileItemMenu.js:332
msgid "Compress {0} file"
msgid_plural "Compress {0} files"
msgstr[0] ""
msgstr[1] ""
#: app/fileItemMenu.js:340
msgid "New Folder with {0} item"
msgid_plural "New Folder with {0} items"
msgstr[0] ""
msgstr[1] ""
#: app/fileItemMenu.js:351
#, fuzzy
msgid "Common Properties"
msgstr "Egenskaber"
#: app/fileItemMenu.js:351
msgid "Properties"
msgstr "Egenskaber"
#: app/fileItemMenu.js:358
#, fuzzy
msgid "Show All in Files"
msgstr "Vis i Filer"
#: app/fileItemMenu.js:358
msgid "Show in Files"
msgstr "Vis i Filer"
#: app/fileItemMenu.js:449
#, fuzzy
msgid "No Extraction Folder"
msgstr "Pak ud her"
#: app/fileItemMenu.js:450
msgid "Unable to extract File, extraction Folder Does not Exist"
msgstr ""
#: app/fileItemMenu.js:470
msgid "Select Extract Destination"
msgstr ""
#: app/fileItemMenu.js:475
msgid "Select"
msgstr "Vælg"
#: app/fileItemMenu.js:516
msgid "Can not email a Directory"
msgstr ""
#: app/fileItemMenu.js:517
msgid "Selection includes a Directory, compress the directory to a file first."
msgstr ""
#: app/notifyX11UnderWayland.js:37
msgid "Desktop Icons NG is running under X11Wayland"
msgstr ""
#: app/notifyX11UnderWayland.js:38
msgid ""
"It seems that you have your system configured to force GTK to use X11. This "
"works, but it's suboptimal. You should check your system configuration to "
"fix this."
msgstr ""
#: app/notifyX11UnderWayland.js:39 app/showErrorPopup.js:39
msgid "Close"
msgstr ""
#: app/notifyX11UnderWayland.js:47
msgid "Don't show this message anymore."
msgstr ""
#: app/preferences.js:91
msgid "Settings"
msgstr "Indstillinger"
#: app/prefswindow.js:64
msgid "Size for the desktop icons"
msgstr "Størrelsen på skrivebordsikoner"
#: app/prefswindow.js:64
msgid "Tiny"
msgstr ""
#: app/prefswindow.js:64
msgid "Small"
msgstr "Små"
#: app/prefswindow.js:64
msgid "Standard"
msgstr "Standard"
#: app/prefswindow.js:64
msgid "Large"
msgstr "Store"
#: app/prefswindow.js:65
msgid "Show the personal folder in the desktop"
msgstr "Vis den personlige mappe på skrivebordet"
#: app/prefswindow.js:66
msgid "Show the trash icon in the desktop"
msgstr "Vis papirkurvsikonet på skrivebordet"
#: app/prefswindow.js:67 schemas/org.gnome.shell.extensions.ding.gschema.xml:45
#, fuzzy
msgid "Show external drives in the desktop"
msgstr "Vis den personlige mappe på skrivebordet"
#: app/prefswindow.js:68 schemas/org.gnome.shell.extensions.ding.gschema.xml:50
#, fuzzy
msgid "Show network drives in the desktop"
msgstr "Vis den personlige mappe på skrivebordet."
#: app/prefswindow.js:71
#, fuzzy
msgid "New icons alignment"
msgstr "Ikonstørrelse"
#: app/prefswindow.js:73
msgid "Top-left corner"
msgstr ""
#: app/prefswindow.js:74
msgid "Top-right corner"
msgstr ""
#: app/prefswindow.js:75
msgid "Bottom-left corner"
msgstr ""
#: app/prefswindow.js:76
msgid "Bottom-right corner"
msgstr ""
#: app/prefswindow.js:78 schemas/org.gnome.shell.extensions.ding.gschema.xml:55
msgid "Add new drives to the opposite side of the screen"
msgstr ""
#: app/prefswindow.js:79
msgid "Highlight the drop place during Drag'n'Drop"
msgstr ""
#: app/prefswindow.js:80 schemas/org.gnome.shell.extensions.ding.gschema.xml:90
msgid "Use Nemo to open folders"
msgstr ""
#: app/prefswindow.js:82
msgid "Add an emblem to soft links"
msgstr ""
#: app/prefswindow.js:84
msgid "Use dark text in icon labels"
msgstr ""
#: app/prefswindow.js:91
msgid "Settings shared with Nautilus"
msgstr ""
#: app/prefswindow.js:113
msgid "Click type for open files"
msgstr ""
#: app/prefswindow.js:113
msgid "Single click"
msgstr ""
#: app/prefswindow.js:113
msgid "Double click"
msgstr ""
#: app/prefswindow.js:114
#, fuzzy
msgid "Show hidden files"
msgstr "Vis i Filer"
#: app/prefswindow.js:115
msgid "Show a context menu item to delete permanently"
msgstr ""
#: app/prefswindow.js:120
msgid "Action to do when launching a program from the desktop"
msgstr ""
#: app/prefswindow.js:121
msgid "Display the content of the file"
msgstr ""
#: app/prefswindow.js:122
msgid "Launch the file"
msgstr ""
#: app/prefswindow.js:123
msgid "Ask what to do"
msgstr ""
#: app/prefswindow.js:129
msgid "Show image thumbnails"
msgstr ""
#: app/prefswindow.js:130
msgid "Never"
msgstr ""
#: app/prefswindow.js:131
msgid "Local files only"
msgstr ""
#: app/prefswindow.js:132
msgid "Always"
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:25
msgid "Icon size"
msgstr "Ikonstørrelse"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:26
msgid "Set the size for the desktop icons."
msgstr "Angiv størrelsen på skrivebordsikoner."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:30
msgid "Show personal folder"
msgstr "Vis personlig mappe"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:31
msgid "Show the personal folder in the desktop."
msgstr "Vis den personlige mappe på skrivebordet."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:35
msgid "Show trash icon"
msgstr "Vis papirkurvsikon"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:36
msgid "Show the trash icon in the desktop."
msgstr "Vis papirkurvsikonet på skrivebordet."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:40
#, fuzzy
msgid "New icons start corner"
msgstr "Ikonstørrelse"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:41
msgid "Set the corner from where the icons will start to be placed."
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:46
msgid "Show the disk drives connected to the computer."
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:51
#, fuzzy
msgid "Show mounted network volumes in the desktop."
msgstr "Vis den personlige mappe på skrivebordet."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:56
msgid ""
"When adding drives and volumes to the desktop, add them to the opposite side "
"of the screen."
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:60
msgid "Shows a rectangle in the destination place during DnD"
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:61
msgid ""
"When doing a Drag'n'Drop operation, marks the place in the grid where the "
"icon will be put with a semitransparent rectangle."
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:65
msgid "Sort Special Folders - Home/Trash Drives."
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:66
msgid ""
"When arranging Icons on desktop, to sort and change the position of the "
"Home, Trash and mounted Network or External Drives"
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:70
msgid "Keep Icons Arranged"
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:71
msgid "Always keep Icons Arranged by the last arranged order"
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:75
msgid "Arrange Order"
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:76
msgid "Icons Arranged by this property"
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:80
msgid "Keep Icons Stacked"
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:81
msgid "Always keep Icons Stacked, Similar types are grouped"
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:85
msgid "Type of Files to not Stack"
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:86
msgid "An Array of strings types, Don't Stack these types of files"
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:91
msgid "Use Nemo instead of Nautilus to open folders."
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:95
msgid "Add an emblem to links"
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:96
msgid "Add an emblem to allow to identify soft links."
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:100
msgid "Use black for label text"
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:101
msgid ""
"Paint the label text in black instead of white. Useful when using light "
"backgrounds."
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:105
msgid "Show a popup if running on X11Wayland"
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:106
msgid ""
"Whether DING should show a popup if it is running on X11Wayland, or the user "
"decided to not show it anymore."
msgstr ""
#, fuzzy
#~ msgid "Desktop icons"
#~ msgstr "Skærmindstillinger"
#~ msgid "Do you want to run “{0}”, or display its contents?"
#~ msgstr "Vil du køre “{0}” eller vise dens indhold?"
#~ msgid "“{0}” is an executable text file."
#~ msgstr "“{0}” er en eksekverbar tekstfil."
#, fuzzy
#~ msgid "Execute in a terminal"
#~ msgstr "Åbn i terminal"
#, fuzzy
#~ msgid "New folder"
#~ msgstr "Ny mappe"
#~ msgid "If you delete an item, it will be permanently lost."
#~ msgstr "Hvis du sletter et objekt, vil det gå tabt permanent."
#, fuzzy
#~ msgid "Show external disk drives in the desktop"
#~ msgstr "Vis den personlige mappe på skrivebordet"
#, fuzzy
#~ msgid "Show the external drives"
#~ msgstr "Vis den personlige mappe på skrivebordet"
#, fuzzy
#~ msgid "Show network volumes"
#~ msgstr "Vis i Filer"
#~ msgid "Enter file name…"
#~ msgstr "Indtast filnavn …"
#~ msgid "Folder names cannot contain “/”."
#~ msgstr "Mappenavne må ikke indeholde “/”."
#~ msgid "A folder cannot be called “.”."
#~ msgstr "En mappe må ikke kaldes “.”."
#~ msgid "A folder cannot be called “..”."
#~ msgstr "En mappe må ikke kaldes “..”."
#~ msgid "Folders with “.” at the beginning of their name are hidden."
#~ msgstr "Mapper med “.” i begyndelsen af deres navn er skjulte."
#~ msgid "There is already a file or folder with that name."
#~ msgstr "Der findes allerede en fil eller mappe med det navn."
#~ msgid "Huge"
#~ msgstr "Enorme"
desktop-icons-ng-49.0.5-c32667693d0831c29e3ab3f7bfeb675ea1531a00/po/de.po 0000664 0000000 0000000 00000054066 15064747536 0023744 0 ustar 00root root 0000000 0000000 # SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the ding package.
# FIRST AUTHOR , YEAR.
# Tim Hofstede , 2021.
#
msgid ""
msgstr ""
"Project-Id-Version: ding\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-06-29 16:52+0200\n"
"PO-Revision-Date: 2021-12-12 18:32+0100\n"
"Last-Translator: Tim Hofstede \n"
"Language-Team: German - Germany <->\n"
"Language: de_DE\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
"X-Generator: Gtranslator 41.0\n"
#: app/askRenamePopup.js:49
msgid "Folder name"
msgstr "Ordnername"
#: app/askRenamePopup.js:49
msgid "File name"
msgstr "Dateiname"
#: app/askRenamePopup.js:57 app/autoAr.js:305 app/desktopManager.js:1002
msgid "OK"
msgstr "OK"
#: app/askRenamePopup.js:57
msgid "Rename"
msgstr "Umbenennen ..."
#: app/autoAr.js:88
msgid "AutoAr is not installed"
msgstr ""
#: app/autoAr.js:89
msgid ""
"To be able to work with compressed files, install file-roller and/or gir-1.2-"
"gnomeAutoAr"
msgstr ""
#: app/autoAr.js:224
#, fuzzy
msgid "Extracting files"
msgstr "Hier entpacken"
#: app/autoAr.js:241
#, fuzzy
msgid "Compressing files"
msgstr "Komprimiere {0} Datei"
#: app/autoAr.js:297 app/autoAr.js:636 app/desktopManager.js:1004
#: app/fileItemMenu.js:474
msgid "Cancel"
msgstr "Abbrechen"
#: app/autoAr.js:318 app/autoAr.js:619
msgid "Enter a password here"
msgstr ""
#: app/autoAr.js:359
msgid "Removing partial file '${outputFile}'"
msgstr ""
#: app/autoAr.js:378
msgid "Creating destination folder"
msgstr ""
#: app/autoAr.js:410
msgid "Extracting files into '${outputPath}'"
msgstr ""
#: app/autoAr.js:442
#, fuzzy
msgid "Extraction completed"
msgstr "Hier entpacken"
#: app/autoAr.js:443
msgid "Extracting '${fullPathFile}' has been completed."
msgstr ""
#: app/autoAr.js:449
#, fuzzy
msgid "Extraction cancelled"
msgstr "Hier entpacken"
#: app/autoAr.js:450
msgid "Extracting '${fullPathFile}' has been cancelled by the user."
msgstr ""
#: app/autoAr.js:460
msgid "Passphrase required for ${filename}"
msgstr ""
#: app/autoAr.js:463
msgid "Error during extraction"
msgstr ""
#: app/autoAr.js:492
msgid "Compressing files into '${outputFile}'"
msgstr ""
#: app/autoAr.js:505
msgid "Compression completed"
msgstr ""
#: app/autoAr.js:506
msgid "Compressing files into '${outputFile}' has been completed."
msgstr ""
#: app/autoAr.js:510 app/autoAr.js:517
msgid "Cancelled compression"
msgstr ""
#: app/autoAr.js:511
msgid "The output file '${outputFile}' already exists."
msgstr ""
#: app/autoAr.js:518
msgid "Compressing files into '${outputFile}' has been cancelled by the user."
msgstr ""
#: app/autoAr.js:521
msgid "Error during compression"
msgstr ""
#: app/autoAr.js:554
msgid "Create archive"
msgstr ""
#: app/autoAr.js:579
#, fuzzy
msgid "Archive name"
msgstr "Dateiname"
#: app/autoAr.js:614
msgid "Password"
msgstr ""
#: app/autoAr.js:633
msgid "Create"
msgstr ""
#: app/autoAr.js:712
msgid "Compatible with all operating systems."
msgstr ""
#: app/autoAr.js:718
msgid "Password protected .zip, must be installed on Windows and Mac."
msgstr ""
#: app/autoAr.js:724
msgid "Smaller archives but Linux and Mac only."
msgstr ""
#: app/autoAr.js:730
msgid "Smaller archives but must be installed on Windows and Mac."
msgstr ""
#: app/dbusUtils.js:69
msgid "\"${programName}\" is needed for Desktop Icons"
msgstr ""
#: app/dbusUtils.js:70
msgid ""
"For this functionality to work in Desktop Icons, you must install \"$"
"{programName}\" in your system."
msgstr ""
#: app/desktopIconsUtil.js:154
msgid "Command not found"
msgstr "Kommando nicht gefunden"
#: app/desktopManager.js:259
msgid "Nautilus File Manager not found"
msgstr "Nautilus-Dateiverwaltung nicht gefunden"
#: app/desktopManager.js:260
msgid "The Nautilus File Manager is mandatory to work with Desktop Icons NG."
msgstr "Die Nautilus-Dateiverwaltung wird für Desktop Icons NG benötigt."
#: app/desktopManager.js:964
msgid "Clear Current Selection before New Search"
msgstr "Aktuelle Auswahl vor neuer Suche löschen"
#: app/desktopManager.js:1006
msgid "Find Files on Desktop"
msgstr "Dateien auf dem Schreibtisch finden"
#: app/desktopManager.js:1074 app/desktopManager.js:1786
msgid "New Folder"
msgstr "Neuer Ordner"
#: app/desktopManager.js:1078
msgid "New Document"
msgstr "Neues Dokument"
#: app/desktopManager.js:1083
msgid "Paste"
msgstr "Einfügen"
#: app/desktopManager.js:1087
msgid "Undo"
msgstr "Rückgängig"
#: app/desktopManager.js:1091
msgid "Redo"
msgstr "Wiederholen"
#: app/desktopManager.js:1097
msgid "Select All"
msgstr "Alles auswählen"
#: app/desktopManager.js:1105
msgid "Show Desktop in Files"
msgstr "Schreibtisch in Dateien anzeigen"
#: app/desktopManager.js:1109 app/fileItemMenu.js:365
msgid "Open in Terminal"
msgstr "Im Terminal öffnen"
#: app/desktopManager.js:1115
msgid "Change Background…"
msgstr "Hintergrund ändern …"
#: app/desktopManager.js:1126
msgid "Desktop Icons Settings"
msgstr "Arbeitsfläche-Einstellungen"
#: app/desktopManager.js:1139
msgid "Display Settings"
msgstr "Anzeigeeinstellungen"
#: app/desktopManager.js:1799
#, fuzzy
msgid "Folder Creation Failed"
msgstr "Ordnername"
#: app/desktopManager.js:1800
#, fuzzy
msgid "Error while trying to create a Folder"
msgstr "Fehler beim Löschen der Dateien"
#: app/desktopManager.js:1836
msgid "Template Creation Failed"
msgstr ""
#: app/desktopManager.js:1837
msgid "Error while trying to create a Document"
msgstr ""
#: app/desktopManager.js:1845
msgid "Arrange Icons"
msgstr "Symbole anordnen"
#: app/desktopManager.js:1849
msgid "Arrange By..."
msgstr "Anordnen nach..."
#: app/desktopManager.js:1858
msgid "Keep Arranged..."
msgstr "Angeordnet lassen..."
#: app/desktopManager.js:1862
msgid "Keep Stacked by type..."
msgstr ""
#: app/desktopManager.js:1867
msgid "Sort Home/Drives/Trash..."
msgstr "Sortiere Home/Laufwerke/Papierkorb..."
#: app/desktopManager.js:1873
msgid "Sort by Name"
msgstr "Sortiere nach Name"
#: app/desktopManager.js:1875
msgid "Sort by Name Descending"
msgstr "Sortiere nach Name (absteigend)"
#: app/desktopManager.js:1878
msgid "Sort by Modified Time"
msgstr "Sortiere nach Änderungsdatum"
#: app/desktopManager.js:1881
msgid "Sort by Type"
msgstr "Sortiere nach Dateityp"
#: app/desktopManager.js:1884
msgid "Sort by Size"
msgstr "Sortiere nach Dateigröße"
#. * TRANSLATORS: when using a screen reader, this is the text read when a folder is
#. selected. Example: if a folder named "things" is selected, it will say "things Folder"
#: app/fileItem.js:64
msgid "${VisibleName} Folder"
msgstr ""
#. * TRANSLATORS: when using a screen reader, this is the text read when a normal file is
#. selected. Example: if a file named "my_picture.jpg" is selected, it will say "my_picture.jpg File"
#: app/fileItem.js:68
msgid "${VisibleName} File"
msgstr ""
#. TRANSLATORS: "Home" is the text that will be shown in the user's personal folder
#: app/fileItem.js:72 app/fileItem.js:203
msgid "Home"
msgstr "Persönlicher Ordner"
#. * TRANSLATORS: when using a screen reader, this is the text read when the trash folder is
#. selected.
#: app/fileItem.js:77
#, fuzzy
msgid "Trash"
msgstr "Papierkorb leeren"
#. * TRANSLATORS: when using a screen reader, this is the text read when an external drive is
#. selected. Example: if a USB stick named "my_portable" is selected, it will say "my_portable Drive"
#: app/fileItem.js:82
msgid "${VisibleName} Drive"
msgstr ""
#. * TRANSLATORS: when using a screen reader, this is the text read when a stack is
#. selected. Example: if a stack named "pictures" is selected, it will say "pictures Stack"
#: app/fileItem.js:87
msgid "${VisibleName} Stack"
msgstr ""
#: app/fileItem.js:295
#, fuzzy
msgid "Error while reading Desktop file"
msgstr "Fehler beim Löschen der Dateien"
#: app/fileItem.js:337
msgid "Broken Link"
msgstr ""
#: app/fileItem.js:338
msgid "Can not open this File because it is a Broken Symlink"
msgstr ""
#: app/fileItem.js:370
#, fuzzy
msgid "Can't open the file"
msgstr "Ausführen"
#: app/fileItem.js:396
#, fuzzy
msgid "Broken Desktop File"
msgstr "Schreibtisch in Dateien anzeigen"
#: app/fileItem.js:397
msgid ""
"This .desktop file has errors or points to a program without permissions. It "
"can not be executed.\n"
"\n"
"\tEdit the file to set the correct executable Program."
msgstr ""
#: app/fileItem.js:403
msgid "Invalid Permissions on Desktop File"
msgstr ""
#: app/fileItem.js:404
msgid ""
"This .desktop File has incorrect Permissions. Right Click to edit "
"Properties, then:\n"
msgstr ""
#: app/fileItem.js:406
msgid ""
"\n"
"Set Permissions, in \"Others Access\", \"Read Only\" or \"None\""
msgstr ""
#: app/fileItem.js:409
msgid ""
"\n"
"Enable option, \"Allow Executing File as a Program\""
msgstr ""
#: app/fileItem.js:417
msgid ""
"This .desktop file is not trusted, it can not be launched. To enable "
"launching, right-click, then:\n"
"\n"
"Enable \"Allow Launching\""
msgstr ""
#: app/fileItem.js:620
msgid "Failed to set execution flag"
msgstr ""
#: app/fileItem.js:632 app/fileItem.js:639
msgid "Could not apply discrete GPU environment"
msgstr ""
#: app/fileItem.js:668
msgid "Could not find discrete GPU data"
msgstr ""
#: app/fileItem.js:793
msgid "Failed to set metadata::trusted flag"
msgstr ""
#: app/fileItemMenu.js:143
msgid "Open All..."
msgstr "Alle öffnen ..."
#: app/fileItemMenu.js:143
msgid "Open"
msgstr "Öffnen"
#: app/fileItemMenu.js:160
msgid "Stack This Type"
msgstr ""
#: app/fileItemMenu.js:160
msgid "Unstack This Type"
msgstr ""
#: app/fileItemMenu.js:173
msgid "Scripts"
msgstr "Skripte"
#: app/fileItemMenu.js:178
msgid "Open All With Other Application..."
msgstr "Alle mit anderer Anwendung öffnen."
#: app/fileItemMenu.js:178
msgid "Open With Other Application"
msgstr "Mit anderer Anwendung öffnen"
#: app/fileItemMenu.js:184
msgid "Launch using Dedicated Graphics Card"
msgstr "Mit dedizierter Grafikkarte starten"
#: app/fileItemMenu.js:195
msgid "Run as a program"
msgstr ""
#: app/fileItemMenu.js:203
msgid "Cut"
msgstr "Ausschneiden"
#: app/fileItemMenu.js:210
msgid "Copy"
msgstr "Kopieren"
#: app/fileItemMenu.js:218
msgid "Rename…"
msgstr "Umbenennen …"
#: app/fileItemMenu.js:228
msgid "Move to Trash"
msgstr "In den Papierkorb verschieben"
#: app/fileItemMenu.js:236
msgid "Delete permanently"
msgstr "Dauerhaft löschen"
#: app/fileItemMenu.js:246
msgid "Don't Allow Launching"
msgstr "Start nicht erlauben"
#: app/fileItemMenu.js:246
msgid "Allow Launching"
msgstr "Start erlauben"
#: app/fileItemMenu.js:259
msgid "Empty Trash"
msgstr "Papierkorb leeren"
#: app/fileItemMenu.js:272
msgid "Eject"
msgstr "Auswerfen"
#: app/fileItemMenu.js:280
msgid "Unmount"
msgstr "Aushängen"
#: app/fileItemMenu.js:294 app/fileItemMenu.js:301
msgid "Extract Here"
msgstr "Hier entpacken"
#: app/fileItemMenu.js:308
msgid "Extract To..."
msgstr "Entpacken nach ..."
#: app/fileItemMenu.js:317
msgid "Send to..."
msgstr "Senden an ..."
#: app/fileItemMenu.js:325
#, fuzzy
msgid "Compress {0} folder"
msgid_plural "Compress {0} folders"
msgstr[0] "Komprimiere {0} Datei"
msgstr[1] "Komprimiere {0} Dateien"
#: app/fileItemMenu.js:332
msgid "Compress {0} file"
msgid_plural "Compress {0} files"
msgstr[0] "Komprimiere {0} Datei"
msgstr[1] "Komprimiere {0} Dateien"
#: app/fileItemMenu.js:340
msgid "New Folder with {0} item"
msgid_plural "New Folder with {0} items"
msgstr[0] "Neuer Ordner mit {0} Datei"
msgstr[1] "Neuer Ordner mit {0} Dateien"
#: app/fileItemMenu.js:351
msgid "Common Properties"
msgstr "Eigenschaften"
#: app/fileItemMenu.js:351
msgid "Properties"
msgstr "Eigenschaften"
#: app/fileItemMenu.js:358
msgid "Show All in Files"
msgstr "Alle in Dateiverwaltung anzeigen"
#: app/fileItemMenu.js:358
msgid "Show in Files"
msgstr "In Dateiverwaltung anzeigen"
#: app/fileItemMenu.js:449
#, fuzzy
msgid "No Extraction Folder"
msgstr "Hier entpacken"
#: app/fileItemMenu.js:450
msgid "Unable to extract File, extraction Folder Does not Exist"
msgstr ""
#: app/fileItemMenu.js:470
msgid "Select Extract Destination"
msgstr "Ziel für die Entpackung auswählen"
#: app/fileItemMenu.js:475
msgid "Select"
msgstr "Auswählen"
#: app/fileItemMenu.js:516
msgid "Can not email a Directory"
msgstr "Kann Verzeichnis nicht per E-Mail verschicken"
#: app/fileItemMenu.js:517
msgid "Selection includes a Directory, compress the directory to a file first."
msgstr ""
"Auswahl beinhaltet ein Verzeichnis, komprimiere zunächst Verzeichnis zu "
"einer Datei."
#: app/notifyX11UnderWayland.js:37
msgid "Desktop Icons NG is running under X11Wayland"
msgstr ""
#: app/notifyX11UnderWayland.js:38
msgid ""
"It seems that you have your system configured to force GTK to use X11. This "
"works, but it's suboptimal. You should check your system configuration to "
"fix this."
msgstr ""
#: app/notifyX11UnderWayland.js:39 app/showErrorPopup.js:39
msgid "Close"
msgstr "Schließen"
#: app/notifyX11UnderWayland.js:47
msgid "Don't show this message anymore."
msgstr ""
#: app/preferences.js:91
msgid "Settings"
msgstr "Einstellungen"
#: app/prefswindow.js:64
msgid "Size for the desktop icons"
msgstr "Größe der Arbeitsflächensymbole"
#: app/prefswindow.js:64
msgid "Tiny"
msgstr "Winzig"
#: app/prefswindow.js:64
msgid "Small"
msgstr "Klein"
#: app/prefswindow.js:64
msgid "Standard"
msgstr "Standard"
#: app/prefswindow.js:64
msgid "Large"
msgstr "Groß"
#: app/prefswindow.js:65
msgid "Show the personal folder in the desktop"
msgstr "Den persönlichen Ordner auf der Arbeitsfläche anzeigen"
#: app/prefswindow.js:66
msgid "Show the trash icon in the desktop"
msgstr "Papierkorb-Symbol auf der Arbeitsfläche anzeigen"
#: app/prefswindow.js:67 schemas/org.gnome.shell.extensions.ding.gschema.xml:45
msgid "Show external drives in the desktop"
msgstr "Externe Laufwerke auf der Arbeitsfläche anzeigen"
#: app/prefswindow.js:68 schemas/org.gnome.shell.extensions.ding.gschema.xml:50
msgid "Show network drives in the desktop"
msgstr "Netzwerk-Laufwerke auf der Arbeitsfläche anzeigen"
#: app/prefswindow.js:71
msgid "New icons alignment"
msgstr "Ausrichtung der Arbeitsflächensymbole"
#: app/prefswindow.js:73
msgid "Top-left corner"
msgstr "Ecke oben links"
#: app/prefswindow.js:74
msgid "Top-right corner"
msgstr "Ecke oben rechts"
#: app/prefswindow.js:75
msgid "Bottom-left corner"
msgstr "Ecke unten links"
#: app/prefswindow.js:76
msgid "Bottom-right corner"
msgstr "Ecke unten rechts"
#: app/prefswindow.js:78 schemas/org.gnome.shell.extensions.ding.gschema.xml:55
msgid "Add new drives to the opposite side of the screen"
msgstr "Neue Laufwerke gegenüber auf dem Bildschirm hinzufügen"
#: app/prefswindow.js:79
msgid "Highlight the drop place during Drag'n'Drop"
msgstr "Zielposition bei Drag'n'Drop hervorheben"
#: app/prefswindow.js:80 schemas/org.gnome.shell.extensions.ding.gschema.xml:90
msgid "Use Nemo to open folders"
msgstr ""
#: app/prefswindow.js:82
msgid "Add an emblem to soft links"
msgstr ""
#: app/prefswindow.js:84
msgid "Use dark text in icon labels"
msgstr ""
#: app/prefswindow.js:91
msgid "Settings shared with Nautilus"
msgstr "Anpassung an Nautilus-Dateiverwaltung"
#: app/prefswindow.js:113
msgid "Click type for open files"
msgstr "Öffnen-Aktion"
#: app/prefswindow.js:113
msgid "Single click"
msgstr "Einfacher Klick"
#: app/prefswindow.js:113
msgid "Double click"
msgstr "Doppelklick"
#: app/prefswindow.js:114
msgid "Show hidden files"
msgstr "Verborgene Dateien anzeigen"
#: app/prefswindow.js:115
msgid "Show a context menu item to delete permanently"
msgstr "Aktion zum dauerhaften Löschen anzeigen"
#: app/prefswindow.js:120
msgid "Action to do when launching a program from the desktop"
msgstr "Ausführbare Textdateien auf dem Schreibtisch"
#: app/prefswindow.js:121
msgid "Display the content of the file"
msgstr "Anzeigen"
#: app/prefswindow.js:122
msgid "Launch the file"
msgstr "Ausführen"
#: app/prefswindow.js:123
msgid "Ask what to do"
msgstr "Nachfragen, was geschehen soll"
#: app/prefswindow.js:129
msgid "Show image thumbnails"
msgstr "Miniatur-Vorschaubilder anzeigen"
#: app/prefswindow.js:130
msgid "Never"
msgstr "Nie"
#: app/prefswindow.js:131
msgid "Local files only"
msgstr "Nur Dateien auf diesem Rechner"
#: app/prefswindow.js:132
msgid "Always"
msgstr "Alle Dateien"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:25
msgid "Icon size"
msgstr "Symbolgröße"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:26
msgid "Set the size for the desktop icons."
msgstr "Die Größe der Arbeitsflächensymbole festlegen."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:30
msgid "Show personal folder"
msgstr "Persönlichen Ordner anzeigen"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:31
msgid "Show the personal folder in the desktop."
msgstr "Den persönlichen Ordner auf der Arbeitsfläche anzeigen."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:35
msgid "Show trash icon"
msgstr "Papierkorb-Symbol anzeigen"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:36
msgid "Show the trash icon in the desktop."
msgstr "Das Papierkorb-Symbol auf der Arbeitsfläche anzeigen."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:40
msgid "New icons start corner"
msgstr "Ecke für neue Arbeitsflächensymbole"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:41
msgid "Set the corner from where the icons will start to be placed."
msgstr ""
"Lege die Ecke fest, von der aus neue Arbeitsflächensymbole platziert werden."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:46
msgid "Show the disk drives connected to the computer."
msgstr "Mit dem PC verbundene Festplattenlaufwerke anzeigen."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:51
msgid "Show mounted network volumes in the desktop."
msgstr "Eingehängte Netzwerk-Datenträger auf der Arbeitsfläche anzeigen."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:56
msgid ""
"When adding drives and volumes to the desktop, add them to the opposite side "
"of the screen."
msgstr ""
"Laufwerke und Datenträger auf gegenüberliegender Seite der Arbeitsfläche "
"hinzufügen."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:60
msgid "Shows a rectangle in the destination place during DnD"
msgstr "Zeigt ein Rechteck in der Zielposition bei DnD an"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:61
msgid ""
"When doing a Drag'n'Drop operation, marks the place in the grid where the "
"icon will be put with a semitransparent rectangle."
msgstr ""
"Bei einer Drag'n'Drop-Operation wird die Position im Raster, wohin das "
"Symbol gelegt werden soll, durch ein semitransparentes Rechteck angezeigt."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:65
msgid "Sort Special Folders - Home/Trash Drives."
msgstr "Sortieren besonderer Ordner - Home/Papierkorb"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:66
msgid ""
"When arranging Icons on desktop, to sort and change the position of the "
"Home, Trash and mounted Network or External Drives"
msgstr ""
"Beim Anordnen der Schreibtischsymbole: Zum Sortieren und Ändern der Position "
"von Home, Papierkorb und eingehängten/externen Laufwerken "
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:70
msgid "Keep Icons Arranged"
msgstr "Symbole angeordnet halten"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:71
msgid "Always keep Icons Arranged by the last arranged order"
msgstr "Behalte immer zuletzt eingestellte Anordnung der Symbole"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:75
msgid "Arrange Order"
msgstr "Anordungsweise"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:76
msgid "Icons Arranged by this property"
msgstr "Nach diesem Schlüssel angeordnete Symbole"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:80
#, fuzzy
msgid "Keep Icons Stacked"
msgstr "Symbole angeordnet halten"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:81
#, fuzzy
msgid "Always keep Icons Stacked, Similar types are grouped"
msgstr "Behalte immer zuletzt eingestellte Anordnung der Symbole"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:85
msgid "Type of Files to not Stack"
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:86
msgid "An Array of strings types, Don't Stack these types of files"
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:91
msgid "Use Nemo instead of Nautilus to open folders."
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:95
msgid "Add an emblem to links"
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:96
msgid "Add an emblem to allow to identify soft links."
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:100
msgid "Use black for label text"
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:101
msgid ""
"Paint the label text in black instead of white. Useful when using light "
"backgrounds."
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:105
msgid "Show a popup if running on X11Wayland"
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:106
msgid ""
"Whether DING should show a popup if it is running on X11Wayland, or the user "
"decided to not show it anymore."
msgstr ""
#, fuzzy
#~ msgid "Desktop icons"
#~ msgstr "Arbeitsfläche-Einstellungen"
#~ msgid ""
#~ "To configure Desktop Icons NG, do right-click in the desktop and choose "
#~ "the last item: 'Desktop Icons settings'"
#~ msgstr ""
#~ "Um Desktop Icons NG zu konfigurieren, Rechtsklick auf die Arbeitsfläche "
#~ "und 'Einstellungen' wählen"
#~ msgid "Do you want to run “{0}”, or display its contents?"
#~ msgstr "Möchten Sie “{0}” ausführen oder dessen Inhalt anzeigen lassen?"
#~ msgid "“{0}” is an executable text file."
#~ msgstr "“{0}” ist eine ausführbare Textdatei."
#~ msgid "Execute in a terminal"
#~ msgstr "Im Terminal öffnen"
#~ msgid "Show"
#~ msgstr "Anzeigen"
#~ msgid "Execute"
#~ msgstr "Ausführen"
#~ msgid "New folder"
#~ msgstr "Neuer Ordner"
#~ msgid "Delete"
#~ msgstr "Löschen"
#~ msgid "Are you sure you want to permanently delete these items?"
#~ msgstr "Sind Sie sicher, dass Sie diese Dateien dauerhaft löschen wollen?"
#~ msgid "If you delete an item, it will be permanently lost."
#~ msgstr "Sobald Sie ein Objekt löschen, geht es dauerhaft verloren."
desktop-icons-ng-49.0.5-c32667693d0831c29e3ab3f7bfeb675ea1531a00/po/ding.pot 0000664 0000000 0000000 00000042421 15064747536 0024451 0 ustar 00root root 0000000 0000000 # SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the ding package.
# FIRST AUTHOR , YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: ding\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-06-29 16:52+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME \n"
"Language-Team: LANGUAGE \n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
#: app/askRenamePopup.js:49
msgid "Folder name"
msgstr ""
#: app/askRenamePopup.js:49
msgid "File name"
msgstr ""
#: app/askRenamePopup.js:57 app/autoAr.js:305 app/desktopManager.js:1002
msgid "OK"
msgstr ""
#: app/askRenamePopup.js:57
msgid "Rename"
msgstr ""
#: app/autoAr.js:88
msgid "AutoAr is not installed"
msgstr ""
#: app/autoAr.js:89
msgid ""
"To be able to work with compressed files, install file-roller and/or gir-1.2-"
"gnomeAutoAr"
msgstr ""
#: app/autoAr.js:224
msgid "Extracting files"
msgstr ""
#: app/autoAr.js:241
msgid "Compressing files"
msgstr ""
#: app/autoAr.js:297 app/autoAr.js:636 app/desktopManager.js:1004
#: app/fileItemMenu.js:474
msgid "Cancel"
msgstr ""
#: app/autoAr.js:318 app/autoAr.js:619
msgid "Enter a password here"
msgstr ""
#: app/autoAr.js:359
msgid "Removing partial file '${outputFile}'"
msgstr ""
#: app/autoAr.js:378
msgid "Creating destination folder"
msgstr ""
#: app/autoAr.js:410
msgid "Extracting files into '${outputPath}'"
msgstr ""
#: app/autoAr.js:442
msgid "Extraction completed"
msgstr ""
#: app/autoAr.js:443
msgid "Extracting '${fullPathFile}' has been completed."
msgstr ""
#: app/autoAr.js:449
msgid "Extraction cancelled"
msgstr ""
#: app/autoAr.js:450
msgid "Extracting '${fullPathFile}' has been cancelled by the user."
msgstr ""
#: app/autoAr.js:460
msgid "Passphrase required for ${filename}"
msgstr ""
#: app/autoAr.js:463
msgid "Error during extraction"
msgstr ""
#: app/autoAr.js:492
msgid "Compressing files into '${outputFile}'"
msgstr ""
#: app/autoAr.js:505
msgid "Compression completed"
msgstr ""
#: app/autoAr.js:506
msgid "Compressing files into '${outputFile}' has been completed."
msgstr ""
#: app/autoAr.js:510 app/autoAr.js:517
msgid "Cancelled compression"
msgstr ""
#: app/autoAr.js:511
msgid "The output file '${outputFile}' already exists."
msgstr ""
#: app/autoAr.js:518
msgid "Compressing files into '${outputFile}' has been cancelled by the user."
msgstr ""
#: app/autoAr.js:521
msgid "Error during compression"
msgstr ""
#: app/autoAr.js:554
msgid "Create archive"
msgstr ""
#: app/autoAr.js:579
msgid "Archive name"
msgstr ""
#: app/autoAr.js:614
msgid "Password"
msgstr ""
#: app/autoAr.js:633
msgid "Create"
msgstr ""
#: app/autoAr.js:712
msgid "Compatible with all operating systems."
msgstr ""
#: app/autoAr.js:718
msgid "Password protected .zip, must be installed on Windows and Mac."
msgstr ""
#: app/autoAr.js:724
msgid "Smaller archives but Linux and Mac only."
msgstr ""
#: app/autoAr.js:730
msgid "Smaller archives but must be installed on Windows and Mac."
msgstr ""
#: app/dbusUtils.js:69
msgid "\"${programName}\" is needed for Desktop Icons"
msgstr ""
#: app/dbusUtils.js:70
msgid ""
"For this functionality to work in Desktop Icons, you must install \"$"
"{programName}\" in your system."
msgstr ""
#: app/desktopIconsUtil.js:154
msgid "Command not found"
msgstr ""
#: app/desktopManager.js:259
msgid "Nautilus File Manager not found"
msgstr ""
#: app/desktopManager.js:260
msgid "The Nautilus File Manager is mandatory to work with Desktop Icons NG."
msgstr ""
#: app/desktopManager.js:964
msgid "Clear Current Selection before New Search"
msgstr ""
#: app/desktopManager.js:1006
msgid "Find Files on Desktop"
msgstr ""
#: app/desktopManager.js:1074 app/desktopManager.js:1786
msgid "New Folder"
msgstr ""
#: app/desktopManager.js:1078
msgid "New Document"
msgstr ""
#: app/desktopManager.js:1083
msgid "Paste"
msgstr ""
#: app/desktopManager.js:1087
msgid "Undo"
msgstr ""
#: app/desktopManager.js:1091
msgid "Redo"
msgstr ""
#: app/desktopManager.js:1097
msgid "Select All"
msgstr ""
#: app/desktopManager.js:1105
msgid "Show Desktop in Files"
msgstr ""
#: app/desktopManager.js:1109 app/fileItemMenu.js:365
msgid "Open in Terminal"
msgstr ""
#: app/desktopManager.js:1115
msgid "Change Background…"
msgstr ""
#: app/desktopManager.js:1126
msgid "Desktop Icons Settings"
msgstr ""
#: app/desktopManager.js:1139
msgid "Display Settings"
msgstr ""
#: app/desktopManager.js:1799
msgid "Folder Creation Failed"
msgstr ""
#: app/desktopManager.js:1800
msgid "Error while trying to create a Folder"
msgstr ""
#: app/desktopManager.js:1836
msgid "Template Creation Failed"
msgstr ""
#: app/desktopManager.js:1837
msgid "Error while trying to create a Document"
msgstr ""
#: app/desktopManager.js:1845
msgid "Arrange Icons"
msgstr ""
#: app/desktopManager.js:1849
msgid "Arrange By..."
msgstr ""
#: app/desktopManager.js:1858
msgid "Keep Arranged..."
msgstr ""
#: app/desktopManager.js:1862
msgid "Keep Stacked by type..."
msgstr ""
#: app/desktopManager.js:1867
msgid "Sort Home/Drives/Trash..."
msgstr ""
#: app/desktopManager.js:1873
msgid "Sort by Name"
msgstr ""
#: app/desktopManager.js:1875
msgid "Sort by Name Descending"
msgstr ""
#: app/desktopManager.js:1878
msgid "Sort by Modified Time"
msgstr ""
#: app/desktopManager.js:1881
msgid "Sort by Type"
msgstr ""
#: app/desktopManager.js:1884
msgid "Sort by Size"
msgstr ""
#. * TRANSLATORS: when using a screen reader, this is the text read when a folder is
#. selected. Example: if a folder named "things" is selected, it will say "things Folder"
#: app/fileItem.js:64
msgid "${VisibleName} Folder"
msgstr ""
#. * TRANSLATORS: when using a screen reader, this is the text read when a normal file is
#. selected. Example: if a file named "my_picture.jpg" is selected, it will say "my_picture.jpg File"
#: app/fileItem.js:68
msgid "${VisibleName} File"
msgstr ""
#. TRANSLATORS: "Home" is the text that will be shown in the user's personal folder
#: app/fileItem.js:72 app/fileItem.js:203
msgid "Home"
msgstr ""
#. * TRANSLATORS: when using a screen reader, this is the text read when the trash folder is
#. selected.
#: app/fileItem.js:77
msgid "Trash"
msgstr ""
#. * TRANSLATORS: when using a screen reader, this is the text read when an external drive is
#. selected. Example: if a USB stick named "my_portable" is selected, it will say "my_portable Drive"
#: app/fileItem.js:82
msgid "${VisibleName} Drive"
msgstr ""
#. * TRANSLATORS: when using a screen reader, this is the text read when a stack is
#. selected. Example: if a stack named "pictures" is selected, it will say "pictures Stack"
#: app/fileItem.js:87
msgid "${VisibleName} Stack"
msgstr ""
#: app/fileItem.js:295
msgid "Error while reading Desktop file"
msgstr ""
#: app/fileItem.js:337
msgid "Broken Link"
msgstr ""
#: app/fileItem.js:338
msgid "Can not open this File because it is a Broken Symlink"
msgstr ""
#: app/fileItem.js:370
msgid "Can't open the file"
msgstr ""
#: app/fileItem.js:396
msgid "Broken Desktop File"
msgstr ""
#: app/fileItem.js:397
msgid ""
"This .desktop file has errors or points to a program without permissions. It "
"can not be executed.\n"
"\n"
"\tEdit the file to set the correct executable Program."
msgstr ""
#: app/fileItem.js:403
msgid "Invalid Permissions on Desktop File"
msgstr ""
#: app/fileItem.js:404
msgid ""
"This .desktop File has incorrect Permissions. Right Click to edit "
"Properties, then:\n"
msgstr ""
#: app/fileItem.js:406
msgid ""
"\n"
"Set Permissions, in \"Others Access\", \"Read Only\" or \"None\""
msgstr ""
#: app/fileItem.js:409
msgid ""
"\n"
"Enable option, \"Allow Executing File as a Program\""
msgstr ""
#: app/fileItem.js:417
msgid ""
"This .desktop file is not trusted, it can not be launched. To enable "
"launching, right-click, then:\n"
"\n"
"Enable \"Allow Launching\""
msgstr ""
#: app/fileItem.js:620
msgid "Failed to set execution flag"
msgstr ""
#: app/fileItem.js:632 app/fileItem.js:639
msgid "Could not apply discrete GPU environment"
msgstr ""
#: app/fileItem.js:668
msgid "Could not find discrete GPU data"
msgstr ""
#: app/fileItem.js:793
msgid "Failed to set metadata::trusted flag"
msgstr ""
#: app/fileItemMenu.js:143
msgid "Open All..."
msgstr ""
#: app/fileItemMenu.js:143
msgid "Open"
msgstr ""
#: app/fileItemMenu.js:160
msgid "Stack This Type"
msgstr ""
#: app/fileItemMenu.js:160
msgid "Unstack This Type"
msgstr ""
#: app/fileItemMenu.js:173
msgid "Scripts"
msgstr ""
#: app/fileItemMenu.js:178
msgid "Open All With Other Application..."
msgstr ""
#: app/fileItemMenu.js:178
msgid "Open With Other Application"
msgstr ""
#: app/fileItemMenu.js:184
msgid "Launch using Dedicated Graphics Card"
msgstr ""
#: app/fileItemMenu.js:195
msgid "Run as a program"
msgstr ""
#: app/fileItemMenu.js:203
msgid "Cut"
msgstr ""
#: app/fileItemMenu.js:210
msgid "Copy"
msgstr ""
#: app/fileItemMenu.js:218
msgid "Rename…"
msgstr ""
#: app/fileItemMenu.js:228
msgid "Move to Trash"
msgstr ""
#: app/fileItemMenu.js:236
msgid "Delete permanently"
msgstr ""
#: app/fileItemMenu.js:246
msgid "Don't Allow Launching"
msgstr ""
#: app/fileItemMenu.js:246
msgid "Allow Launching"
msgstr ""
#: app/fileItemMenu.js:259
msgid "Empty Trash"
msgstr ""
#: app/fileItemMenu.js:272
msgid "Eject"
msgstr ""
#: app/fileItemMenu.js:280
msgid "Unmount"
msgstr ""
#: app/fileItemMenu.js:294 app/fileItemMenu.js:301
msgid "Extract Here"
msgstr ""
#: app/fileItemMenu.js:308
msgid "Extract To..."
msgstr ""
#: app/fileItemMenu.js:317
msgid "Send to..."
msgstr ""
#: app/fileItemMenu.js:325
msgid "Compress {0} folder"
msgid_plural "Compress {0} folders"
msgstr[0] ""
msgstr[1] ""
#: app/fileItemMenu.js:332
msgid "Compress {0} file"
msgid_plural "Compress {0} files"
msgstr[0] ""
msgstr[1] ""
#: app/fileItemMenu.js:340
msgid "New Folder with {0} item"
msgid_plural "New Folder with {0} items"
msgstr[0] ""
msgstr[1] ""
#: app/fileItemMenu.js:351
msgid "Common Properties"
msgstr ""
#: app/fileItemMenu.js:351
msgid "Properties"
msgstr ""
#: app/fileItemMenu.js:358
msgid "Show All in Files"
msgstr ""
#: app/fileItemMenu.js:358
msgid "Show in Files"
msgstr ""
#: app/fileItemMenu.js:449
msgid "No Extraction Folder"
msgstr ""
#: app/fileItemMenu.js:450
msgid "Unable to extract File, extraction Folder Does not Exist"
msgstr ""
#: app/fileItemMenu.js:470
msgid "Select Extract Destination"
msgstr ""
#: app/fileItemMenu.js:475
msgid "Select"
msgstr ""
#: app/fileItemMenu.js:516
msgid "Can not email a Directory"
msgstr ""
#: app/fileItemMenu.js:517
msgid "Selection includes a Directory, compress the directory to a file first."
msgstr ""
#: app/notifyX11UnderWayland.js:37
msgid "Desktop Icons NG is running under X11Wayland"
msgstr ""
#: app/notifyX11UnderWayland.js:38
msgid ""
"It seems that you have your system configured to force GTK to use X11. This "
"works, but it's suboptimal. You should check your system configuration to "
"fix this."
msgstr ""
#: app/notifyX11UnderWayland.js:39 app/showErrorPopup.js:39
msgid "Close"
msgstr ""
#: app/notifyX11UnderWayland.js:47
msgid "Don't show this message anymore."
msgstr ""
#: app/preferences.js:91
msgid "Settings"
msgstr ""
#: app/prefswindow.js:64
msgid "Size for the desktop icons"
msgstr ""
#: app/prefswindow.js:64
msgid "Tiny"
msgstr ""
#: app/prefswindow.js:64
msgid "Small"
msgstr ""
#: app/prefswindow.js:64
msgid "Standard"
msgstr ""
#: app/prefswindow.js:64
msgid "Large"
msgstr ""
#: app/prefswindow.js:65
msgid "Show the personal folder in the desktop"
msgstr ""
#: app/prefswindow.js:66
msgid "Show the trash icon in the desktop"
msgstr ""
#: app/prefswindow.js:67 schemas/org.gnome.shell.extensions.ding.gschema.xml:45
msgid "Show external drives in the desktop"
msgstr ""
#: app/prefswindow.js:68 schemas/org.gnome.shell.extensions.ding.gschema.xml:50
msgid "Show network drives in the desktop"
msgstr ""
#: app/prefswindow.js:71
msgid "New icons alignment"
msgstr ""
#: app/prefswindow.js:73
msgid "Top-left corner"
msgstr ""
#: app/prefswindow.js:74
msgid "Top-right corner"
msgstr ""
#: app/prefswindow.js:75
msgid "Bottom-left corner"
msgstr ""
#: app/prefswindow.js:76
msgid "Bottom-right corner"
msgstr ""
#: app/prefswindow.js:78 schemas/org.gnome.shell.extensions.ding.gschema.xml:55
msgid "Add new drives to the opposite side of the screen"
msgstr ""
#: app/prefswindow.js:79
msgid "Highlight the drop place during Drag'n'Drop"
msgstr ""
#: app/prefswindow.js:80 schemas/org.gnome.shell.extensions.ding.gschema.xml:90
msgid "Use Nemo to open folders"
msgstr ""
#: app/prefswindow.js:82
msgid "Add an emblem to soft links"
msgstr ""
#: app/prefswindow.js:84
msgid "Use dark text in icon labels"
msgstr ""
#: app/prefswindow.js:91
msgid "Settings shared with Nautilus"
msgstr ""
#: app/prefswindow.js:113
msgid "Click type for open files"
msgstr ""
#: app/prefswindow.js:113
msgid "Single click"
msgstr ""
#: app/prefswindow.js:113
msgid "Double click"
msgstr ""
#: app/prefswindow.js:114
msgid "Show hidden files"
msgstr ""
#: app/prefswindow.js:115
msgid "Show a context menu item to delete permanently"
msgstr ""
#: app/prefswindow.js:120
msgid "Action to do when launching a program from the desktop"
msgstr ""
#: app/prefswindow.js:121
msgid "Display the content of the file"
msgstr ""
#: app/prefswindow.js:122
msgid "Launch the file"
msgstr ""
#: app/prefswindow.js:123
msgid "Ask what to do"
msgstr ""
#: app/prefswindow.js:129
msgid "Show image thumbnails"
msgstr ""
#: app/prefswindow.js:130
msgid "Never"
msgstr ""
#: app/prefswindow.js:131
msgid "Local files only"
msgstr ""
#: app/prefswindow.js:132
msgid "Always"
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:25
msgid "Icon size"
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:26
msgid "Set the size for the desktop icons."
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:30
msgid "Show personal folder"
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:31
msgid "Show the personal folder in the desktop."
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:35
msgid "Show trash icon"
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:36
msgid "Show the trash icon in the desktop."
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:40
msgid "New icons start corner"
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:41
msgid "Set the corner from where the icons will start to be placed."
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:46
msgid "Show the disk drives connected to the computer."
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:51
msgid "Show mounted network volumes in the desktop."
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:56
msgid ""
"When adding drives and volumes to the desktop, add them to the opposite side "
"of the screen."
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:60
msgid "Shows a rectangle in the destination place during DnD"
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:61
msgid ""
"When doing a Drag'n'Drop operation, marks the place in the grid where the "
"icon will be put with a semitransparent rectangle."
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:65
msgid "Sort Special Folders - Home/Trash Drives."
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:66
msgid ""
"When arranging Icons on desktop, to sort and change the position of the "
"Home, Trash and mounted Network or External Drives"
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:70
msgid "Keep Icons Arranged"
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:71
msgid "Always keep Icons Arranged by the last arranged order"
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:75
msgid "Arrange Order"
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:76
msgid "Icons Arranged by this property"
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:80
msgid "Keep Icons Stacked"
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:81
msgid "Always keep Icons Stacked, Similar types are grouped"
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:85
msgid "Type of Files to not Stack"
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:86
msgid "An Array of strings types, Don't Stack these types of files"
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:91
msgid "Use Nemo instead of Nautilus to open folders."
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:95
msgid "Add an emblem to links"
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:96
msgid "Add an emblem to allow to identify soft links."
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:100
msgid "Use black for label text"
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:101
msgid ""
"Paint the label text in black instead of white. Useful when using light "
"backgrounds."
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:105
msgid "Show a popup if running on X11Wayland"
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:106
msgid ""
"Whether DING should show a popup if it is running on X11Wayland, or the user "
"decided to not show it anymore."
msgstr ""
desktop-icons-ng-49.0.5-c32667693d0831c29e3ab3f7bfeb675ea1531a00/po/es.po 0000664 0000000 0000000 00000067205 15064747536 0023762 0 ustar 00root root 0000000 0000000 # SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR , YEAR.
# Daniel Mustieles , 2018-2019.
# Sergio Costas , 2018-2024.
#
msgid ""
msgstr ""
"Project-Id-Version: 1.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-06-29 16:52+0200\n"
"PO-Revision-Date: 2024-12-11 23:04+0100\n"
"Last-Translator: Sergio Costas \n"
"Language-Team: Español; Castellano \n"
"Language: es\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Gtranslator 47.0\n"
#: app/askRenamePopup.js:49
msgid "Folder name"
msgstr "Nombre de la carpeta"
#: app/askRenamePopup.js:49
msgid "File name"
msgstr "Nombre de archivo"
#: app/askRenamePopup.js:57 app/autoAr.js:305 app/desktopManager.js:1002
msgid "OK"
msgstr "Aceptar"
#: app/askRenamePopup.js:57
msgid "Rename"
msgstr "Renombrar…"
#: app/autoAr.js:88
msgid "AutoAr is not installed"
msgstr "AutoAr no está instalado"
#: app/autoAr.js:89
msgid ""
"To be able to work with compressed files, install file-roller and/or gir-1.2-"
"gnomeAutoAr"
msgstr ""
"Para poder trabajar con ficheros comprimidos, instale file-roller y/o "
"gir-1.2-gnomeAutoAr"
#: app/autoAr.js:224
msgid "Extracting files"
msgstr "Extrayendo ficheros"
#: app/autoAr.js:241
msgid "Compressing files"
msgstr "Comprimiendo ficheros"
#: app/autoAr.js:297 app/autoAr.js:636 app/desktopManager.js:1004
#: app/fileItemMenu.js:474
msgid "Cancel"
msgstr "Cancelar"
#: app/autoAr.js:318 app/autoAr.js:619
msgid "Enter a password here"
msgstr "Escriba una clave aquí"
#: app/autoAr.js:359
msgid "Removing partial file '${outputFile}'"
msgstr "Borrando fichero parcial '${outputFile}'"
#: app/autoAr.js:378
msgid "Creating destination folder"
msgstr "Creando carpeta de destino"
#: app/autoAr.js:410
msgid "Extracting files into '${outputPath}'"
msgstr "Extrayendo ficheros en '${outputPath}'"
#: app/autoAr.js:442
msgid "Extraction completed"
msgstr "Extracción completada"
#: app/autoAr.js:443
msgid "Extracting '${fullPathFile}' has been completed."
msgstr "Terminada la extracción de '${fullPathFile}'."
#: app/autoAr.js:449
msgid "Extraction cancelled"
msgstr "Extracción cancelada"
#: app/autoAr.js:450
msgid "Extracting '${fullPathFile}' has been cancelled by the user."
msgstr "La extracción de '${fullPathFile}' ha sido cancelada por el usuario."
#: app/autoAr.js:460
msgid "Passphrase required for ${filename}"
msgstr "Se necesita una clave para ${filename}"
#: app/autoAr.js:463
msgid "Error during extraction"
msgstr "Se ha producido un error durante la extracción"
#: app/autoAr.js:492
msgid "Compressing files into '${outputFile}'"
msgstr "Comprimiendo ficheros en '${outputFile}'"
#: app/autoAr.js:505
msgid "Compression completed"
msgstr "Compresión completada"
#: app/autoAr.js:506
msgid "Compressing files into '${outputFile}' has been completed."
msgstr "La compresión en '${outputFile}' se ha completado."
#: app/autoAr.js:510 app/autoAr.js:517
msgid "Cancelled compression"
msgstr "Compresión cancelada"
#: app/autoAr.js:511
msgid "The output file '${outputFile}' already exists."
msgstr "El fichero '${outputFile}' ya existe."
#: app/autoAr.js:518
msgid "Compressing files into '${outputFile}' has been cancelled by the user."
msgstr ""
"La compresión de ficheros en'${outputFile}' ha sido cancelada por el usuario."
#: app/autoAr.js:521
msgid "Error during compression"
msgstr "Error durante la compresión"
#: app/autoAr.js:554
msgid "Create archive"
msgstr "Crear archivo"
#: app/autoAr.js:579
msgid "Archive name"
msgstr "Nombre de archivo"
#: app/autoAr.js:614
msgid "Password"
msgstr "Clave"
#: app/autoAr.js:633
msgid "Create"
msgstr "Crear"
#: app/autoAr.js:712
msgid "Compatible with all operating systems."
msgstr "Compatible con todos los sistemas operativos."
#: app/autoAr.js:718
msgid "Password protected .zip, must be installed on Windows and Mac."
msgstr "Zip protegido con clave, compatible con Windows y Mac."
#: app/autoAr.js:724
msgid "Smaller archives but Linux and Mac only."
msgstr "Archivos más pequeños, pero válidos sólo para Linux y Mac."
#: app/autoAr.js:730
msgid "Smaller archives but must be installed on Windows and Mac."
msgstr "Ficheros más pequeños, pero sólo se pueden instalar en Windows y Mac."
#: app/dbusUtils.js:69
msgid "\"${programName}\" is needed for Desktop Icons"
msgstr "Desktop Icons necesita el programa \"${programName}\""
#: app/dbusUtils.js:70
msgid ""
"For this functionality to work in Desktop Icons, you must install \"$"
"{programName}\" in your system."
msgstr ""
"Para disponer de esta funcionalidad en Desktop Icons, es necesario que "
"instales \"${programName}\" en tu sistema."
#: app/desktopIconsUtil.js:154
msgid "Command not found"
msgstr "Comando no encontrado"
#: app/desktopManager.js:259
msgid "Nautilus File Manager not found"
msgstr "No se encontró el Gestor de ficheros Nautilus"
#: app/desktopManager.js:260
msgid "The Nautilus File Manager is mandatory to work with Desktop Icons NG."
msgstr ""
"El gestor de ficheros Nautilus es necesario para que Desktop Icons NG "
"funcione."
#: app/desktopManager.js:964
msgid "Clear Current Selection before New Search"
msgstr "Limpiar la selección actual para nueva búsqueda"
#: app/desktopManager.js:1006
msgid "Find Files on Desktop"
msgstr "Buscar ficheros en el Escritorio"
#: app/desktopManager.js:1074 app/desktopManager.js:1786
msgid "New Folder"
msgstr "Nueva carpeta"
#: app/desktopManager.js:1078
msgid "New Document"
msgstr "Documento nuevo"
#: app/desktopManager.js:1083
msgid "Paste"
msgstr "Pegar"
#: app/desktopManager.js:1087
msgid "Undo"
msgstr "Deshacer"
#: app/desktopManager.js:1091
msgid "Redo"
msgstr "Rehacer"
#: app/desktopManager.js:1097
msgid "Select All"
msgstr "Seleccionar Todo"
#: app/desktopManager.js:1105
msgid "Show Desktop in Files"
msgstr "Mostrar el escritorio en Archivos"
#: app/desktopManager.js:1109 app/fileItemMenu.js:365
msgid "Open in Terminal"
msgstr "Abrir en una terminal"
#: app/desktopManager.js:1115
msgid "Change Background…"
msgstr "Cambiar el fondo..."
#: app/desktopManager.js:1126
msgid "Desktop Icons Settings"
msgstr "Preferencias de Iconos en el Escritorio"
#: app/desktopManager.js:1139
msgid "Display Settings"
msgstr "Preferencias de pantalla"
#: app/desktopManager.js:1799
msgid "Folder Creation Failed"
msgstr "Falló la creación de la carpeta"
#: app/desktopManager.js:1800
msgid "Error while trying to create a Folder"
msgstr "Se produjo un error al intentar crear la carpeta {:}."
#: app/desktopManager.js:1836
msgid "Template Creation Failed"
msgstr "Ha fallado la creación de la plantilla"
#: app/desktopManager.js:1837
msgid "Error while trying to create a Document"
msgstr "Error al intentar crear un Documento"
#: app/desktopManager.js:1845
msgid "Arrange Icons"
msgstr "Ordenar Iconos"
#: app/desktopManager.js:1849
msgid "Arrange By..."
msgstr "Ordenar por..."
#: app/desktopManager.js:1858
msgid "Keep Arranged..."
msgstr "Mantener ordenados"
#: app/desktopManager.js:1862
msgid "Keep Stacked by type..."
msgstr "Mantener agrupados por tipo..."
#: app/desktopManager.js:1867
msgid "Sort Home/Drives/Trash..."
msgstr "Ordenar Home/Unidades/Papelera..."
#: app/desktopManager.js:1873
msgid "Sort by Name"
msgstr "Ordenar por nombre"
#: app/desktopManager.js:1875
msgid "Sort by Name Descending"
msgstr "Ordenar por nombre inverso"
#: app/desktopManager.js:1878
msgid "Sort by Modified Time"
msgstr "Ordenar por fecha de modificación"
#: app/desktopManager.js:1881
msgid "Sort by Type"
msgstr "Ordenar por tipo"
#: app/desktopManager.js:1884
msgid "Sort by Size"
msgstr "Ordenar por tamaño"
#. * TRANSLATORS: when using a screen reader, this is the text read when a folder is
#. selected. Example: if a folder named "things" is selected, it will say "things Folder"
#: app/fileItem.js:64
msgid "${VisibleName} Folder"
msgstr "${VisibleName} Carpeta"
#. * TRANSLATORS: when using a screen reader, this is the text read when a normal file is
#. selected. Example: if a file named "my_picture.jpg" is selected, it will say "my_picture.jpg File"
#: app/fileItem.js:68
msgid "${VisibleName} File"
msgstr "${VisibleName} Fichero"
#. TRANSLATORS: "Home" is the text that will be shown in the user's personal folder
#: app/fileItem.js:72 app/fileItem.js:203
msgid "Home"
msgstr "Carpeta personal"
#. * TRANSLATORS: when using a screen reader, this is the text read when the trash folder is
#. selected.
#: app/fileItem.js:77
msgid "Trash"
msgstr "Papelera"
#. * TRANSLATORS: when using a screen reader, this is the text read when an external drive is
#. selected. Example: if a USB stick named "my_portable" is selected, it will say "my_portable Drive"
#: app/fileItem.js:82
msgid "${VisibleName} Drive"
msgstr "${VisibleName} Unidad"
#. * TRANSLATORS: when using a screen reader, this is the text read when a stack is
#. selected. Example: if a stack named "pictures" is selected, it will say "pictures Stack"
#: app/fileItem.js:87
msgid "${VisibleName} Stack"
msgstr "${VisibleName} Grupo"
#: app/fileItem.js:295
msgid "Error while reading Desktop file"
msgstr "Error al leer el fichero Desktop"
#: app/fileItem.js:337
msgid "Broken Link"
msgstr "Enlace roto"
#: app/fileItem.js:338
msgid "Can not open this File because it is a Broken Symlink"
msgstr "No se puede abrir este fichero porque es un enlace roto"
#: app/fileItem.js:370
msgid "Can't open the file"
msgstr "No se puede abrir el fichero"
#: app/fileItem.js:396
msgid "Broken Desktop File"
msgstr "Fichero .desktop dañado"
#: app/fileItem.js:397
msgid ""
"This .desktop file has errors or points to a program without permissions. It "
"can not be executed.\n"
"\n"
"\tEdit the file to set the correct executable Program."
msgstr ""
"Este fichero .desktop tiene errores o apunta a un programa sin los permisos "
"necesarios. No se puede lanzar.\n"
"\n"
"\tEdita el fichero para que apunte al ejecutable correcto."
#: app/fileItem.js:403
msgid "Invalid Permissions on Desktop File"
msgstr "Permisos no válidos en el fichero .desktop"
#: app/fileItem.js:404
msgid ""
"This .desktop File has incorrect Permissions. Right Click to edit "
"Properties, then:\n"
msgstr ""
"Este fichero .desktop tiene permisos incorrectos. Haz click con el botón "
"derecho para editar la Propiedades, y luego:\n"
#: app/fileItem.js:406
msgid ""
"\n"
"Set Permissions, in \"Others Access\", \"Read Only\" or \"None\""
msgstr ""
"\n"
"Cambiar los permisos, en \"Otros accesos\", a \"Sólo lectura\" o "
"\"Ninguno\""
#: app/fileItem.js:409
msgid ""
"\n"
"Enable option, \"Allow Executing File as a Program\""
msgstr ""
"\n"
"Activa la opción \"Permitir ejecutar el archivo como un programa\""
#: app/fileItem.js:417
msgid ""
"This .desktop file is not trusted, it can not be launched. To enable "
"launching, right-click, then:\n"
"\n"
"Enable \"Allow Launching\""
msgstr ""
"Este fichero .desktop no es confiable, por lo que no se puede lanzar. Para "
"permitirlo, haz click con el botón derecho, y luego:\n"
"\n"
"Escoge \"Permitir lanzar\""
#: app/fileItem.js:620
msgid "Failed to set execution flag"
msgstr "No se ha podido activar el flag de ejecución"
#: app/fileItem.js:632 app/fileItem.js:639
msgid "Could not apply discrete GPU environment"
msgstr "No se ha podido aplicar el entorno para GPU discreta"
#: app/fileItem.js:668
msgid "Could not find discrete GPU data"
msgstr "No se ha podido encontrar datos de la GPU discreta"
#: app/fileItem.js:793
msgid "Failed to set metadata::trusted flag"
msgstr "No se ha podido activar el flag metadata::trusted"
#: app/fileItemMenu.js:143
msgid "Open All..."
msgstr "Abrir todo..."
#: app/fileItemMenu.js:143
msgid "Open"
msgstr "Abrir"
#: app/fileItemMenu.js:160
msgid "Stack This Type"
msgstr "Agrupar este tipo"
#: app/fileItemMenu.js:160
msgid "Unstack This Type"
msgstr "Desagrupar este tipo"
#: app/fileItemMenu.js:173
msgid "Scripts"
msgstr "Scripts"
#: app/fileItemMenu.js:178
msgid "Open All With Other Application..."
msgstr "Abrir todo con otra aplicación"
#: app/fileItemMenu.js:178
msgid "Open With Other Application"
msgstr "Abrir con otra aplicación"
#: app/fileItemMenu.js:184
msgid "Launch using Dedicated Graphics Card"
msgstr "Lanzar con la Tarjeta Gráfica Dedicada"
#: app/fileItemMenu.js:195
msgid "Run as a program"
msgstr "Ejecutar como un programa"
#: app/fileItemMenu.js:203
msgid "Cut"
msgstr "Cortar"
#: app/fileItemMenu.js:210
msgid "Copy"
msgstr "Copiar"
#: app/fileItemMenu.js:218
msgid "Rename…"
msgstr "Renombrar…"
#: app/fileItemMenu.js:228
msgid "Move to Trash"
msgstr "Mover a la papelera"
#: app/fileItemMenu.js:236
msgid "Delete permanently"
msgstr "Borrar permanentemente"
#: app/fileItemMenu.js:246
msgid "Don't Allow Launching"
msgstr "No permitir lanzar"
#: app/fileItemMenu.js:246
msgid "Allow Launching"
msgstr "Permitir lanzar"
#: app/fileItemMenu.js:259
msgid "Empty Trash"
msgstr "Vaciar la papelera"
#: app/fileItemMenu.js:272
msgid "Eject"
msgstr "Expulsar"
#: app/fileItemMenu.js:280
msgid "Unmount"
msgstr "Desmontar"
#: app/fileItemMenu.js:294 app/fileItemMenu.js:301
msgid "Extract Here"
msgstr "Extraer aquí"
#: app/fileItemMenu.js:308
msgid "Extract To..."
msgstr "Extraer a..."
#: app/fileItemMenu.js:317
msgid "Send to..."
msgstr "Enviar a..."
#: app/fileItemMenu.js:325
msgid "Compress {0} folder"
msgid_plural "Compress {0} folders"
msgstr[0] "Comprimir {0} carpetas"
msgstr[1] "Comprimir {0} archivos"
#: app/fileItemMenu.js:332
msgid "Compress {0} file"
msgid_plural "Compress {0} files"
msgstr[0] "Comprimir {0} archivo"
msgstr[1] "Comprimir {0} archivos"
#: app/fileItemMenu.js:340
msgid "New Folder with {0} item"
msgid_plural "New Folder with {0} items"
msgstr[0] "Nueva carpeta con {0} elemento"
msgstr[1] "Nueva carpeta con {0} elementos"
#: app/fileItemMenu.js:351
msgid "Common Properties"
msgstr "Propiedades Comunes"
#: app/fileItemMenu.js:351
msgid "Properties"
msgstr "Propiedades"
#: app/fileItemMenu.js:358
msgid "Show All in Files"
msgstr "Mostrar todo en Files"
#: app/fileItemMenu.js:358
msgid "Show in Files"
msgstr "Mostrar en Files"
#: app/fileItemMenu.js:449
msgid "No Extraction Folder"
msgstr "No existe la carpeta de destino"
#: app/fileItemMenu.js:450
msgid "Unable to extract File, extraction Folder Does not Exist"
msgstr "No se puede extraer el fichero, no existe la carpeta de destino"
#: app/fileItemMenu.js:470
msgid "Select Extract Destination"
msgstr "Seleccionar el destino para extraer"
#: app/fileItemMenu.js:475
msgid "Select"
msgstr "Seleccionar"
#: app/fileItemMenu.js:516
msgid "Can not email a Directory"
msgstr "No se puede enviar un directorio"
#: app/fileItemMenu.js:517
msgid "Selection includes a Directory, compress the directory to a file first."
msgstr ""
"La selección incluye un directorio. Debe comprimirse a un fichero primero."
#: app/notifyX11UnderWayland.js:37
msgid "Desktop Icons NG is running under X11Wayland"
msgstr "Desktop Icons NG está funcionando con X11Wayland"
#: app/notifyX11UnderWayland.js:38
msgid ""
"It seems that you have your system configured to force GTK to use X11. This "
"works, but it's suboptimal. You should check your system configuration to "
"fix this."
msgstr ""
"Parece que este sistema está configurado para forzar a GTK a usar X11.Aunque "
"esto funciona, es subóptimo. Revise la configuración para corregir esto."
#: app/notifyX11UnderWayland.js:39 app/showErrorPopup.js:39
msgid "Close"
msgstr "Cerrar"
#: app/notifyX11UnderWayland.js:47
msgid "Don't show this message anymore."
msgstr "No volver a mostrar este mensaje."
#: app/preferences.js:91
msgid "Settings"
msgstr "Preferencias"
#: app/prefswindow.js:64
msgid "Size for the desktop icons"
msgstr "Tamaño de los iconos del escritorio"
#: app/prefswindow.js:64
msgid "Tiny"
msgstr "Diminuto"
#: app/prefswindow.js:64
msgid "Small"
msgstr "Pequeño"
#: app/prefswindow.js:64
msgid "Standard"
msgstr "Estándar"
#: app/prefswindow.js:64
msgid "Large"
msgstr "Grande"
#: app/prefswindow.js:65
msgid "Show the personal folder in the desktop"
msgstr "Mostrar la carpeta personal en el escritorio"
#: app/prefswindow.js:66
msgid "Show the trash icon in the desktop"
msgstr "Mostrar la papelera en el escritorio"
#: app/prefswindow.js:67 schemas/org.gnome.shell.extensions.ding.gschema.xml:45
msgid "Show external drives in the desktop"
msgstr "Mostrar unidades externas en el escritorio"
#: app/prefswindow.js:68 schemas/org.gnome.shell.extensions.ding.gschema.xml:50
msgid "Show network drives in the desktop"
msgstr "Mostrar unidades de red en el escritorio"
#: app/prefswindow.js:71
msgid "New icons alignment"
msgstr "Alineamiento de nuevos iconos"
#: app/prefswindow.js:73
msgid "Top-left corner"
msgstr "Esquina superior-izquierda"
#: app/prefswindow.js:74
msgid "Top-right corner"
msgstr "Esquina superior-derecha"
#: app/prefswindow.js:75
msgid "Bottom-left corner"
msgstr "Esquina inferior-izquierda"
#: app/prefswindow.js:76
msgid "Bottom-right corner"
msgstr "Esquina inferior-derecha"
#: app/prefswindow.js:78 schemas/org.gnome.shell.extensions.ding.gschema.xml:55
msgid "Add new drives to the opposite side of the screen"
msgstr "Añadir nuevas unidades en el lado opuesto de la pantalla"
#: app/prefswindow.js:79
msgid "Highlight the drop place during Drag'n'Drop"
msgstr "Resaltar el lugar de destino durante Drag'n'Drop"
#: app/prefswindow.js:80 schemas/org.gnome.shell.extensions.ding.gschema.xml:90
msgid "Use Nemo to open folders"
msgstr "Usar Nemo para abrir las carpetas"
#: app/prefswindow.js:82
msgid "Add an emblem to soft links"
msgstr "Añadir un emblema a los enlaces simbólicos"
#: app/prefswindow.js:84
msgid "Use dark text in icon labels"
msgstr "Utilizar texto oscuro en las etiquetas de los iconos"
#: app/prefswindow.js:91
msgid "Settings shared with Nautilus"
msgstr "Configuración compartida con Nautilus"
#: app/prefswindow.js:113
msgid "Click type for open files"
msgstr "Tipo de click para abrir ficheros"
#: app/prefswindow.js:113
msgid "Single click"
msgstr "Click simple"
#: app/prefswindow.js:113
msgid "Double click"
msgstr "Click doble"
#: app/prefswindow.js:114
msgid "Show hidden files"
msgstr "Mostrar archivos ocultos"
#: app/prefswindow.js:115
msgid "Show a context menu item to delete permanently"
msgstr "Permitir borrar permanentemente desde el menú contextual"
#: app/prefswindow.js:120
msgid "Action to do when launching a program from the desktop"
msgstr "Acción a realizar al lanzar un programa desde el escritorio"
#: app/prefswindow.js:121
msgid "Display the content of the file"
msgstr "Mostrar el contenido del fichero"
#: app/prefswindow.js:122
msgid "Launch the file"
msgstr "Ejecutar el fichero"
#: app/prefswindow.js:123
msgid "Ask what to do"
msgstr "Preguntar qué hacer"
#: app/prefswindow.js:129
msgid "Show image thumbnails"
msgstr "Mostrar miniaturas de imágenes"
#: app/prefswindow.js:130
msgid "Never"
msgstr "Nunca"
#: app/prefswindow.js:131
msgid "Local files only"
msgstr "Sólo ficheros locales"
#: app/prefswindow.js:132
msgid "Always"
msgstr "Siempre"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:25
msgid "Icon size"
msgstr "Tamaño de los iconos"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:26
msgid "Set the size for the desktop icons."
msgstr "Establece el tamaño de los iconos del escritorio."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:30
msgid "Show personal folder"
msgstr "Mostrar la carpeta personal"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:31
msgid "Show the personal folder in the desktop."
msgstr "Mostrar la carpeta personal en el escritorio."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:35
msgid "Show trash icon"
msgstr "Mostrar la papelera"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:36
msgid "Show the trash icon in the desktop."
msgstr "Mostrar la papelera en el escritorio."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:40
msgid "New icons start corner"
msgstr "Esquina para los nuevos iconos"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:41
msgid "Set the corner from where the icons will start to be placed."
msgstr ""
"Establece la esquina a partir de la cual los nuevos iconos se irán añadiendo."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:46
msgid "Show the disk drives connected to the computer."
msgstr "Mostrar los discos duros conectados al ordenador."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:51
msgid "Show mounted network volumes in the desktop."
msgstr "Muestra en el escritorio las unidades de red montadas."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:56
msgid ""
"When adding drives and volumes to the desktop, add them to the opposite side "
"of the screen."
msgstr ""
"Al añadir unidades y volúmenes al escritorio, añadirlos en el lado opuesto "
"de la pantalla."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:60
msgid "Shows a rectangle in the destination place during DnD"
msgstr "Mostrar un rectángulo en el punto de destino durante DnD"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:61
msgid ""
"When doing a Drag'n'Drop operation, marks the place in the grid where the "
"icon will be put with a semitransparent rectangle."
msgstr ""
"Durante una operación de Arrastrar'y'Soltar, muestra en qué lugar se "
"depositará el icono."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:65
msgid "Sort Special Folders - Home/Trash Drives."
msgstr "Ordenar carpetas especiales - Home/Papelera/Unidades"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:66
msgid ""
"When arranging Icons on desktop, to sort and change the position of the "
"Home, Trash and mounted Network or External Drives"
msgstr ""
"Al ordenar los iconos en el escritorio, cambiar la posición de Home, "
"papelera y unidades externas y de red"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:70
msgid "Keep Icons Arranged"
msgstr "Mantener los iconos ordenados"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:71
msgid "Always keep Icons Arranged by the last arranged order"
msgstr "Mantener los iconos ordenados según la última opción utilizada"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:75
msgid "Arrange Order"
msgstr "Orden para los iconos"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:76
msgid "Icons Arranged by this property"
msgstr "Ordenar los iconos en base a esta propiedad"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:80
msgid "Keep Icons Stacked"
msgstr "Mantener los iconos apilados"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:81
msgid "Always keep Icons Stacked, Similar types are grouped"
msgstr "Mantener los iconos apilados, tipos similares se agruparán"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:85
msgid "Type of Files to not Stack"
msgstr "Tipos de ficheros que no se deben apilar"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:86
msgid "An Array of strings types, Don't Stack these types of files"
msgstr ""
"Un array de cadenas con tipos de fichero, No apilar estos tipos de fichero"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:91
msgid "Use Nemo instead of Nautilus to open folders."
msgstr "Usar Nemo en lugar de Nautilus para abrir carpetas."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:95
msgid "Add an emblem to links"
msgstr "Añadir un emblema a los enlaces"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:96
msgid "Add an emblem to allow to identify soft links."
msgstr "Añadir un emblema para identificar los enlaces simbólicos."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:100
msgid "Use black for label text"
msgstr "Utilizar negro para el texto de las etiquetas"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:101
msgid ""
"Paint the label text in black instead of white. Useful when using light "
"backgrounds."
msgstr ""
"Pintar el texto de las etiquetas en negro en lugar de blanco. Útil cuando se "
"utilizan fondos de color claro."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:105
msgid "Show a popup if running on X11Wayland"
msgstr "Mostrar un popup si Ding se ejecuta en X11Wayland"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:106
msgid ""
"Whether DING should show a popup if it is running on X11Wayland, or the user "
"decided to not show it anymore."
msgstr ""
"Si DING debe mostrar un popup indicando que está corriendo en X11Wayland,o "
"si el usuario ha decidido no mostrarlo nunca más."
#~ msgid "Desktop icons"
#~ msgstr "Iconos del Escritorio"
#~ msgid "Add an emblem to .desktop files"
#~ msgstr "Añadir un emblema a los ficheros .desktop"
#~ msgid ""
#~ "To configure Desktop Icons NG, do right-click in the desktop and choose "
#~ "the last item: 'Desktop Icons settings'"
#~ msgstr ""
#~ "Para configurar Desktop Icons NG, hacer click derecho en el escritorio y "
#~ "escoger la última opción: 'Preferencias de iconos en el escritorio'"
#~ msgid "Add an emblem to executable .desktop files"
#~ msgstr "Añadir un emblema a los ficheros .desktop ejecutables"
#~ msgid "Add an emblem to .desktop files that have permission to be launched."
#~ msgstr ""
#~ "Añadir un emblema a los ficheros .desktop que tienen permisos de "
#~ "ejecución."
#~ msgid "Do you want to run “{0}”, or display its contents?"
#~ msgstr "¿Quiere ejecutar “{0}” o mostrar su contenido?"
#~ msgid "“{0}” is an executable text file."
#~ msgstr "“{0}” es un archivo de texto ejecutable."
#~ msgid "Execute in a terminal"
#~ msgstr "Ejecutar en una terminal"
#~ msgid "Show"
#~ msgstr "Mostrar"
#~ msgid "Execute"
#~ msgstr "Ejecutar"
#~ msgid "New folder"
#~ msgstr "Nueva carpeta"
#~ msgid "Delete"
#~ msgstr "Borrar"
#~ msgid "Are you sure you want to permanently delete these items?"
#~ msgstr "¿Borrar estos elementos de manera permanente?"
#~ msgid "If you delete an item, it will be permanently lost."
#~ msgstr "Si borra un elemento, éste se perderá para siempre."
#~ msgid "Don’t Allow Launching"
#~ msgstr "No permitir lanzar"
#~ msgid "There was an error while trying to permanently delete the file {:}."
#~ msgstr "Se produjo un error al intentar borrar el archivo {:}."
#~ msgid "Show external disk drives in the desktop"
#~ msgstr "Mostrar unidades externas en el escritorio"
#~ msgid "Show the external drives"
#~ msgstr "Mostrar unidades externas"
#~ msgid "Show network mounts"
#~ msgstr "Mostrar unidades de red"
#~ msgid "Show network volumes"
#~ msgstr "Mostrar unidades de red"
#~ msgid "Enter file name…"
#~ msgstr "Introduzca el nombre del archivo…"
#~ msgid "New folder name"
#~ msgstr "Nombre de la nueva carpeta"
#~ msgid "Folder names cannot contain “/”."
#~ msgstr "Los nombres de carpetas no pueden contener «/»."
#~ msgid "A folder cannot be called “.”."
#~ msgstr "Una carpeta no se puede llamar «.»."
#~ msgid "A folder cannot be called “..”."
#~ msgstr "Una carpeta no se puede llamar «..»."
#~ msgid "Folders with “.” at the beginning of their name are hidden."
#~ msgstr "Las carpetas cuyo nombre empieza por «.» están ocultas."
#~ msgid "There is already a file or folder with that name."
#~ msgstr "Ya hay un archivo o carpeta con ese nombre."
#~ msgid "Huge"
#~ msgstr "Inmenso"
#~ msgid "Ok"
#~ msgstr "Aceptar"
#~ msgid "huge"
#~ msgstr "inmenso"
#~ msgid "Maximum width for the icons and filename."
#~ msgstr "Ancho máximo de los iconos y el nombre de fichero."
#~ msgid "Shows the Documents folder in the desktop."
#~ msgstr "Muestra la carpeta Documentos en el escritorio."
#~ msgid "Shows the Downloads folder in the desktop."
#~ msgstr "Muestra la carpeta Descargas en el escritorio."
#~ msgid "Shows the Music folder in the desktop."
#~ msgstr "Muestra la carpeta Música en el escritorio."
#~ msgid "Shows the Pictures folder in the desktop."
#~ msgstr "Muestra la carpeta Imágenes en el escritorio."
desktop-icons-ng-49.0.5-c32667693d0831c29e3ab3f7bfeb675ea1531a00/po/fi.po 0000664 0000000 0000000 00000057212 15064747536 0023746 0 ustar 00root root 0000000 0000000 # Finnish translation for desktop-icons.
# Copyright (C) 2018-2022 desktop-icons's COPYRIGHT HOLDER
# This file is distributed under the same license as the desktop-icons package.
#
# Jiri Grönroos , 2018.
# Timo Jyrinki , 2021.
# Tuomas Nurmi , 2022.
msgid ""
msgstr ""
"Project-Id-Version: desktop-icons master\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-06-29 16:52+0200\n"
"PO-Revision-Date: 2022-04-13 16:28+0300\n"
"Last-Translator: Tuomas Nurmi \n"
"Language-Team: Finnish <>\n"
"Language: fi\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Launchpad-Export-Date: 2021-04-08 06:16+0000\n"
"X-Generator: Lokalize 20.12.0\n"
#: app/askRenamePopup.js:49
msgid "Folder name"
msgstr "Kansion nimi"
#: app/askRenamePopup.js:49
msgid "File name"
msgstr "Tiedoston nimi"
#: app/askRenamePopup.js:57 app/autoAr.js:305 app/desktopManager.js:1002
msgid "OK"
msgstr "OK"
#: app/askRenamePopup.js:57
msgid "Rename"
msgstr "Nimeä uudelleen"
#: app/autoAr.js:88
msgid "AutoAr is not installed"
msgstr ""
#: app/autoAr.js:89
msgid ""
"To be able to work with compressed files, install file-roller and/or gir-1.2-"
"gnomeAutoAr"
msgstr ""
#: app/autoAr.js:224
#, fuzzy
msgid "Extracting files"
msgstr "Pura tänne"
#: app/autoAr.js:241
#, fuzzy
msgid "Compressing files"
msgstr "Pakkaa {0} tiedosto"
#: app/autoAr.js:297 app/autoAr.js:636 app/desktopManager.js:1004
#: app/fileItemMenu.js:474
msgid "Cancel"
msgstr "Peru"
#: app/autoAr.js:318 app/autoAr.js:619
msgid "Enter a password here"
msgstr ""
#: app/autoAr.js:359
msgid "Removing partial file '${outputFile}'"
msgstr ""
#: app/autoAr.js:378
msgid "Creating destination folder"
msgstr ""
#: app/autoAr.js:410
msgid "Extracting files into '${outputPath}'"
msgstr ""
#: app/autoAr.js:442
#, fuzzy
msgid "Extraction completed"
msgstr "Pura tänne"
#: app/autoAr.js:443
msgid "Extracting '${fullPathFile}' has been completed."
msgstr ""
#: app/autoAr.js:449
#, fuzzy
msgid "Extraction cancelled"
msgstr "Pura tänne"
#: app/autoAr.js:450
msgid "Extracting '${fullPathFile}' has been cancelled by the user."
msgstr ""
#: app/autoAr.js:460
msgid "Passphrase required for ${filename}"
msgstr ""
#: app/autoAr.js:463
msgid "Error during extraction"
msgstr ""
#: app/autoAr.js:492
msgid "Compressing files into '${outputFile}'"
msgstr ""
#: app/autoAr.js:505
msgid "Compression completed"
msgstr ""
#: app/autoAr.js:506
msgid "Compressing files into '${outputFile}' has been completed."
msgstr ""
#: app/autoAr.js:510 app/autoAr.js:517
msgid "Cancelled compression"
msgstr ""
#: app/autoAr.js:511
msgid "The output file '${outputFile}' already exists."
msgstr ""
#: app/autoAr.js:518
msgid "Compressing files into '${outputFile}' has been cancelled by the user."
msgstr ""
#: app/autoAr.js:521
msgid "Error during compression"
msgstr ""
#: app/autoAr.js:554
msgid "Create archive"
msgstr ""
#: app/autoAr.js:579
#, fuzzy
msgid "Archive name"
msgstr "Tiedoston nimi"
#: app/autoAr.js:614
msgid "Password"
msgstr ""
#: app/autoAr.js:633
msgid "Create"
msgstr ""
#: app/autoAr.js:712
msgid "Compatible with all operating systems."
msgstr ""
#: app/autoAr.js:718
msgid "Password protected .zip, must be installed on Windows and Mac."
msgstr ""
#: app/autoAr.js:724
msgid "Smaller archives but Linux and Mac only."
msgstr ""
#: app/autoAr.js:730
msgid "Smaller archives but must be installed on Windows and Mac."
msgstr ""
#: app/dbusUtils.js:69
msgid "\"${programName}\" is needed for Desktop Icons"
msgstr "\"${programName}\" tarvitaan työpöytäkuvakkeisiin"
#: app/dbusUtils.js:70
msgid ""
"For this functionality to work in Desktop Icons, you must install \"$"
"{programName}\" in your system."
msgstr ""
"Tämä työpöytäkuvakkeiden toiminnallisuus vaatii ohjelman\"${programName}\" "
"asentamisen järjestelmään."
#: app/desktopIconsUtil.js:154
msgid "Command not found"
msgstr "Komentoa ei löydy"
#: app/desktopManager.js:259
msgid "Nautilus File Manager not found"
msgstr "Nautilus-tiedostonhallintaa ei löydy"
#: app/desktopManager.js:260
msgid "The Nautilus File Manager is mandatory to work with Desktop Icons NG."
msgstr "Nautilus-tiedostonhallinta vaaditaan tämän laajennuksen käyttämiseen."
#: app/desktopManager.js:964
msgid "Clear Current Selection before New Search"
msgstr "Tyhjennä nykyinen valinta ennen uutta hakua"
#: app/desktopManager.js:1006
msgid "Find Files on Desktop"
msgstr "Etsi tiedostoja työpöydällä"
#: app/desktopManager.js:1074 app/desktopManager.js:1786
msgid "New Folder"
msgstr "Uusi kansio"
#: app/desktopManager.js:1078
msgid "New Document"
msgstr "Uusi asiakirja"
#: app/desktopManager.js:1083
msgid "Paste"
msgstr "Liitä"
#: app/desktopManager.js:1087
msgid "Undo"
msgstr "Kumoa"
#: app/desktopManager.js:1091
msgid "Redo"
msgstr "Tee uudelleen"
#: app/desktopManager.js:1097
msgid "Select All"
msgstr "Valitse kaikki"
#: app/desktopManager.js:1105
msgid "Show Desktop in Files"
msgstr "Näytä työpöytä tiedostonhallinnassa"
#: app/desktopManager.js:1109 app/fileItemMenu.js:365
msgid "Open in Terminal"
msgstr "Avaa päätteessä"
#: app/desktopManager.js:1115
msgid "Change Background…"
msgstr "Vaihda taustakuvaa…"
#: app/desktopManager.js:1126
msgid "Desktop Icons Settings"
msgstr "Työpöytäkuvakkeiden asetukset"
#: app/desktopManager.js:1139
msgid "Display Settings"
msgstr "Näytön asetukset"
#: app/desktopManager.js:1799
#, fuzzy
msgid "Folder Creation Failed"
msgstr "Kansion nimi"
#: app/desktopManager.js:1800
#, fuzzy
msgid "Error while trying to create a Folder"
msgstr "Virhe poistettaessa tiedostoja"
#: app/desktopManager.js:1836
msgid "Template Creation Failed"
msgstr ""
#: app/desktopManager.js:1837
msgid "Error while trying to create a Document"
msgstr ""
#: app/desktopManager.js:1845
msgid "Arrange Icons"
msgstr "Järjestä kuvakkeet"
#: app/desktopManager.js:1849
msgid "Arrange By..."
msgstr "Järjestä..."
#: app/desktopManager.js:1858
msgid "Keep Arranged..."
msgstr "Pidä järjestettynä..."
#: app/desktopManager.js:1862
msgid "Keep Stacked by type..."
msgstr "Pidä pinottuna tyypin mukaan..."
#: app/desktopManager.js:1867
msgid "Sort Home/Drives/Trash..."
msgstr "Järjestä koti/asemat/roskakori..."
#: app/desktopManager.js:1873
msgid "Sort by Name"
msgstr "Järjestä nimen mukaan"
#: app/desktopManager.js:1875
msgid "Sort by Name Descending"
msgstr "Järjestä nimen mukaan laskevasti"
#: app/desktopManager.js:1878
msgid "Sort by Modified Time"
msgstr "Järjestä muokkausajan mukaan"
#: app/desktopManager.js:1881
msgid "Sort by Type"
msgstr "Järjestä tyypin mukaan"
#: app/desktopManager.js:1884
msgid "Sort by Size"
msgstr "Järjestä koon mukaan"
#. * TRANSLATORS: when using a screen reader, this is the text read when a folder is
#. selected. Example: if a folder named "things" is selected, it will say "things Folder"
#: app/fileItem.js:64
msgid "${VisibleName} Folder"
msgstr ""
#. * TRANSLATORS: when using a screen reader, this is the text read when a normal file is
#. selected. Example: if a file named "my_picture.jpg" is selected, it will say "my_picture.jpg File"
#: app/fileItem.js:68
msgid "${VisibleName} File"
msgstr ""
#. TRANSLATORS: "Home" is the text that will be shown in the user's personal folder
#: app/fileItem.js:72 app/fileItem.js:203
msgid "Home"
msgstr "Koti"
#. * TRANSLATORS: when using a screen reader, this is the text read when the trash folder is
#. selected.
#: app/fileItem.js:77
#, fuzzy
msgid "Trash"
msgstr "Tyhjennä roskakori"
#. * TRANSLATORS: when using a screen reader, this is the text read when an external drive is
#. selected. Example: if a USB stick named "my_portable" is selected, it will say "my_portable Drive"
#: app/fileItem.js:82
msgid "${VisibleName} Drive"
msgstr ""
#. * TRANSLATORS: when using a screen reader, this is the text read when a stack is
#. selected. Example: if a stack named "pictures" is selected, it will say "pictures Stack"
#: app/fileItem.js:87
msgid "${VisibleName} Stack"
msgstr ""
#: app/fileItem.js:295
#, fuzzy
msgid "Error while reading Desktop file"
msgstr "Virhe poistettaessa tiedostoja"
#: app/fileItem.js:337
msgid "Broken Link"
msgstr "Rikkinäinen linkki"
#: app/fileItem.js:338
msgid "Can not open this File because it is a Broken Symlink"
msgstr "Tiedostoa ei voitu avata, sillä se on rikkinäinen linkki"
#: app/fileItem.js:370
#, fuzzy
msgid "Can't open the file"
msgstr "Käynnistä tiedosto"
#: app/fileItem.js:396
msgid "Broken Desktop File"
msgstr "Rikkinäinen työpöytätiedosto"
#: app/fileItem.js:397
msgid ""
"This .desktop file has errors or points to a program without permissions. It "
"can not be executed.\n"
"\n"
"\tEdit the file to set the correct executable Program."
msgstr ""
"Tässä .desktop-tiedostossa on virheitä, tai se osoittaa ohjelmaan, jolla on "
"puutteelliset oikeudet. Sitä ei voi suorittaa.\n"
"\n"
"\tMuokkaa tiedostoa asettaaksesi oikea suoritettava ohjelma."
#: app/fileItem.js:403
msgid "Invalid Permissions on Desktop File"
msgstr "Vialliset oikeudet työpöytätiedostossa"
#: app/fileItem.js:404
msgid ""
"This .desktop File has incorrect Permissions. Right Click to edit "
"Properties, then:\n"
msgstr ""
"Tällä .desktop-tiedostolla on väärät oikeudet. Naksauta oikealla hiiren "
"napilla ja valitse Ominaisuudet, sitten:\n"
#: app/fileItem.js:406
msgid ""
"\n"
"Set Permissions, in \"Others Access\", \"Read Only\" or \"None\""
msgstr ""
"\n"
"Aseta oikeudet kohdassa \"Muut oikeudet\", joko \"Vain luku\" tai \"Ei "
"mikään\""
#: app/fileItem.js:409
msgid ""
"\n"
"Enable option, \"Allow Executing File as a Program\""
msgstr ""
"\n"
"Kytke päälle valinta \"Salli tiedoston suoritus ohjelmana\""
#: app/fileItem.js:417
msgid ""
"This .desktop file is not trusted, it can not be launched. To enable "
"launching, right-click, then:\n"
"\n"
"Enable \"Allow Launching\""
msgstr ""
"Tämä .desktop-tiedosto ei ole luotettu, ja sitä ei voi käynnistää. "
"Salliakseksi käynnistämisen naksauta hiiren oikealla napilla, sitten:\n"
"\n"
"Valitse \"Salli käynnistäminen\""
#: app/fileItem.js:620
msgid "Failed to set execution flag"
msgstr ""
#: app/fileItem.js:632 app/fileItem.js:639
msgid "Could not apply discrete GPU environment"
msgstr ""
#: app/fileItem.js:668
msgid "Could not find discrete GPU data"
msgstr ""
#: app/fileItem.js:793
msgid "Failed to set metadata::trusted flag"
msgstr ""
#: app/fileItemMenu.js:143
msgid "Open All..."
msgstr "Avaa kaikki..."
#: app/fileItemMenu.js:143
msgid "Open"
msgstr "Avaa"
#: app/fileItemMenu.js:160
msgid "Stack This Type"
msgstr "Pinoa tämäntyyppiset"
#: app/fileItemMenu.js:160
msgid "Unstack This Type"
msgstr "Älä pinoa tämäntyyppisiä"
#: app/fileItemMenu.js:173
msgid "Scripts"
msgstr "Komentosarjat"
#: app/fileItemMenu.js:178
msgid "Open All With Other Application..."
msgstr "Avaa kaikki toisella sovelluksella..."
#: app/fileItemMenu.js:178
msgid "Open With Other Application"
msgstr "Avaa toisella sovelluksella"
#: app/fileItemMenu.js:184
msgid "Launch using Dedicated Graphics Card"
msgstr "Käynnistä erillisnäytönohjainta käyttäen"
#: app/fileItemMenu.js:195
msgid "Run as a program"
msgstr "Suorita ohjelmana"
#: app/fileItemMenu.js:203
msgid "Cut"
msgstr "Leikkaa"
#: app/fileItemMenu.js:210
msgid "Copy"
msgstr "Kopioi"
#: app/fileItemMenu.js:218
msgid "Rename…"
msgstr "Nimeä uudelleen…"
#: app/fileItemMenu.js:228
msgid "Move to Trash"
msgstr "Siirrä roskakoriin"
#: app/fileItemMenu.js:236
msgid "Delete permanently"
msgstr "Poista pysyvästi"
#: app/fileItemMenu.js:246
msgid "Don't Allow Launching"
msgstr "Älä salli käynnistämistä"
#: app/fileItemMenu.js:246
msgid "Allow Launching"
msgstr "Salli käynnistäminen"
#: app/fileItemMenu.js:259
msgid "Empty Trash"
msgstr "Tyhjennä roskakori"
#: app/fileItemMenu.js:272
msgid "Eject"
msgstr "Irrota"
#: app/fileItemMenu.js:280
msgid "Unmount"
msgstr "Irrota osio"
#: app/fileItemMenu.js:294 app/fileItemMenu.js:301
msgid "Extract Here"
msgstr "Pura tänne"
#: app/fileItemMenu.js:308
msgid "Extract To..."
msgstr "Pura…"
#: app/fileItemMenu.js:317
msgid "Send to..."
msgstr "Lähetä…"
#: app/fileItemMenu.js:325
#, fuzzy
msgid "Compress {0} folder"
msgid_plural "Compress {0} folders"
msgstr[0] "Pakkaa {0} tiedosto"
msgstr[1] "Pakkaa {0} tiedostoa"
#: app/fileItemMenu.js:332
msgid "Compress {0} file"
msgid_plural "Compress {0} files"
msgstr[0] "Pakkaa {0} tiedosto"
msgstr[1] "Pakkaa {0} tiedostoa"
#: app/fileItemMenu.js:340
msgid "New Folder with {0} item"
msgid_plural "New Folder with {0} items"
msgstr[0] "Uusi kansio jossa {0} kohde"
msgstr[1] "Uusi kansio jossa {0} kohdetta"
#: app/fileItemMenu.js:351
msgid "Common Properties"
msgstr "Yhteiset ominaisuudet"
#: app/fileItemMenu.js:351
msgid "Properties"
msgstr "Ominaisuudet"
#: app/fileItemMenu.js:358
msgid "Show All in Files"
msgstr "Näytä kaikki Tiedostot-sovelluksessa"
#: app/fileItemMenu.js:358
msgid "Show in Files"
msgstr "Näytä tiedostonhallinnassa"
#: app/fileItemMenu.js:449
#, fuzzy
msgid "No Extraction Folder"
msgstr "Pura tänne"
#: app/fileItemMenu.js:450
msgid "Unable to extract File, extraction Folder Does not Exist"
msgstr ""
#: app/fileItemMenu.js:470
msgid "Select Extract Destination"
msgstr "Valitse purkamiskohde"
#: app/fileItemMenu.js:475
msgid "Select"
msgstr "Valitse"
#: app/fileItemMenu.js:516
msgid "Can not email a Directory"
msgstr "Kansiota ei voi lähettää sähköpostitse"
#: app/fileItemMenu.js:517
msgid "Selection includes a Directory, compress the directory to a file first."
msgstr "Valinta sisältää kansion, pakkaa kansio tiedostoksi ensin."
#: app/notifyX11UnderWayland.js:37
msgid "Desktop Icons NG is running under X11Wayland"
msgstr ""
#: app/notifyX11UnderWayland.js:38
msgid ""
"It seems that you have your system configured to force GTK to use X11. This "
"works, but it's suboptimal. You should check your system configuration to "
"fix this."
msgstr ""
#: app/notifyX11UnderWayland.js:39 app/showErrorPopup.js:39
msgid "Close"
msgstr "Sulje"
#: app/notifyX11UnderWayland.js:47
msgid "Don't show this message anymore."
msgstr ""
#: app/preferences.js:91
msgid "Settings"
msgstr "Asetukset"
#: app/prefswindow.js:64
msgid "Size for the desktop icons"
msgstr "Työpöytäkuvakkeiden koko"
#: app/prefswindow.js:64
msgid "Tiny"
msgstr "Erittäin pieni"
#: app/prefswindow.js:64
msgid "Small"
msgstr "Pieni"
#: app/prefswindow.js:64
msgid "Standard"
msgstr "Tavallinen"
#: app/prefswindow.js:64
msgid "Large"
msgstr "Suuri"
#: app/prefswindow.js:65
msgid "Show the personal folder in the desktop"
msgstr "Näytä kotikansio työpöydällä"
#: app/prefswindow.js:66
msgid "Show the trash icon in the desktop"
msgstr "Näytä roskakorin kuvake työpöydällä"
#: app/prefswindow.js:67 schemas/org.gnome.shell.extensions.ding.gschema.xml:45
msgid "Show external drives in the desktop"
msgstr "Näytä erilliset tallennusvälineet työpöydällä"
#: app/prefswindow.js:68 schemas/org.gnome.shell.extensions.ding.gschema.xml:50
msgid "Show network drives in the desktop"
msgstr "Näytä verkkoasemat työpöydällä"
#: app/prefswindow.js:71
msgid "New icons alignment"
msgstr "Uusien kuvakkeiden asettelu"
#: app/prefswindow.js:73
msgid "Top-left corner"
msgstr "Vasen yläkulma"
#: app/prefswindow.js:74
msgid "Top-right corner"
msgstr "Oikea yläkulma"
#: app/prefswindow.js:75
msgid "Bottom-left corner"
msgstr "Vasen alakulma"
#: app/prefswindow.js:76
msgid "Bottom-right corner"
msgstr "Oikea alakulma"
#: app/prefswindow.js:78 schemas/org.gnome.shell.extensions.ding.gschema.xml:55
msgid "Add new drives to the opposite side of the screen"
msgstr "Lisää uudet tallennusvälineet näytön toiselle puolelle"
#: app/prefswindow.js:79
msgid "Highlight the drop place during Drag'n'Drop"
msgstr "Korosta pudotuspaikka vedettäessä ja pudotettaessa"
#: app/prefswindow.js:80 schemas/org.gnome.shell.extensions.ding.gschema.xml:90
msgid "Use Nemo to open folders"
msgstr "Käytä Nemoa kansioiden avaamiseen"
#: app/prefswindow.js:82
msgid "Add an emblem to soft links"
msgstr "Merkitse linkit tiedostoihin symbolilla"
#: app/prefswindow.js:84
msgid "Use dark text in icon labels"
msgstr "Käytä tummaa tekstiä kuvakkeiden selitteissä"
#: app/prefswindow.js:91
msgid "Settings shared with Nautilus"
msgstr "Jaa asetukset Nautilus-tiedostonhallinnan kanssa"
#: app/prefswindow.js:113
msgid "Click type for open files"
msgstr "Napsautustapa tiedostojen avaamiselle"
#: app/prefswindow.js:113
msgid "Single click"
msgstr "Yksi napsautus"
#: app/prefswindow.js:113
msgid "Double click"
msgstr "Kaksoisnapsautus"
#: app/prefswindow.js:114
msgid "Show hidden files"
msgstr "Näytä piilotiedostot"
#: app/prefswindow.js:115
msgid "Show a context menu item to delete permanently"
msgstr "Näytä valikkokohde pysyvästi poistamiselle"
#: app/prefswindow.js:120
msgid "Action to do when launching a program from the desktop"
msgstr "Toiminta käynnistettäessä ohjelmaa työpöydältä"
#: app/prefswindow.js:121
msgid "Display the content of the file"
msgstr "Näytä tiedoston sisältö"
#: app/prefswindow.js:122
msgid "Launch the file"
msgstr "Käynnistä tiedosto"
#: app/prefswindow.js:123
msgid "Ask what to do"
msgstr "Kysy mitä tehdään"
#: app/prefswindow.js:129
msgid "Show image thumbnails"
msgstr "Näytä pienoiskuvat"
#: app/prefswindow.js:130
msgid "Never"
msgstr "Ei koskaan"
#: app/prefswindow.js:131
msgid "Local files only"
msgstr "Vain paikalliset tiedostot"
#: app/prefswindow.js:132
msgid "Always"
msgstr "Aina"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:25
msgid "Icon size"
msgstr "Kuvakekoko"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:26
msgid "Set the size for the desktop icons."
msgstr "Aseta työpöytäkuvakkeiden koko."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:30
msgid "Show personal folder"
msgstr "Näytä kotikansio"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:31
msgid "Show the personal folder in the desktop."
msgstr "Näytä kotikansio työpöydällä."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:35
msgid "Show trash icon"
msgstr "Näytä roskakorin kuvake"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:36
msgid "Show the trash icon in the desktop."
msgstr "Näytä roskakorin kuvake työpöydällä."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:40
msgid "New icons start corner"
msgstr "Uusien kuvakkeiden aloituskulma"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:41
msgid "Set the corner from where the icons will start to be placed."
msgstr "Aseta kulma jonne kuvakkeet sijoitetaan."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:46
msgid "Show the disk drives connected to the computer."
msgstr "Näytä tietokoneeseen liitetyt tallennusvälineet."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:51
msgid "Show mounted network volumes in the desktop."
msgstr "Näytä liitetyt verkkoasemat työpöydällä."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:56
msgid ""
"When adding drives and volumes to the desktop, add them to the opposite side "
"of the screen."
msgstr ""
"Näytä lisätyt tallennusvälineet ja asemat työpöydän vastakkaisella puolella."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:60
msgid "Shows a rectangle in the destination place during DnD"
msgstr "Näyttää suorakulmio kohteen kohdalla vetämisen ja pudottamisen aikana"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:61
msgid ""
"When doing a Drag'n'Drop operation, marks the place in the grid where the "
"icon will be put with a semitransparent rectangle."
msgstr ""
"Merkitsee kuvakkeen tulevan paikan ruudukossa osittain läpinäkyvällä "
"suorakulmiolla vetämisen ja pudottamisen aikana."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:65
msgid "Sort Special Folders - Home/Trash Drives."
msgstr "Järjestä erikoishakemistot - Koti/Roskakori/Asemat."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:66
msgid ""
"When arranging Icons on desktop, to sort and change the position of the "
"Home, Trash and mounted Network or External Drives"
msgstr ""
"Kodin, Roskakorin ja liitettyjen verkko- ja ulkoisten asemien sijainnin "
"muuttamiseksi järjestäessä kuvakkeita työpöydällä"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:70
msgid "Keep Icons Arranged"
msgstr "Pidä kuvakkeet järjestettynä"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:71
msgid "Always keep Icons Arranged by the last arranged order"
msgstr "Pidä kuvakkeet aina viimeksi valitun järjestyksen mukaisesti"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:75
msgid "Arrange Order"
msgstr "Kuvakkeiden järjestys"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:76
msgid "Icons Arranged by this property"
msgstr "Kuvakkeet järjestetään tämän ominaisuuden mukaan"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:80
msgid "Keep Icons Stacked"
msgstr "Pidä kuvakkeet pinottuina"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:81
msgid "Always keep Icons Stacked, Similar types are grouped"
msgstr "Pidä aina kuvakkeet pinottuina, samantyyppiset ryhmissään"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:85
msgid "Type of Files to not Stack"
msgstr "Tiedostotyypit, joita ei pinota"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:86
msgid "An Array of strings types, Don't Stack these types of files"
msgstr "Taulukko merkkijonoja tiedostotyypeistä, joita ei pinota"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:91
msgid "Use Nemo instead of Nautilus to open folders."
msgstr "Käytä Nemoa Nautiluksen sijaan kansioiden avaamiseen."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:95
msgid "Add an emblem to links"
msgstr "Merkitse tiedostolinkit symbolilla"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:96
msgid "Add an emblem to allow to identify soft links."
msgstr "Lisää symboli tiedostolinkkien tunnistamisen helpottamiseksi."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:100
msgid "Use black for label text"
msgstr "Käytä mustaa seliteteksteissä"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:101
msgid ""
"Paint the label text in black instead of white. Useful when using light "
"backgrounds."
msgstr ""
"Piirrä seliteteksti mustalla valkoisen sijaan. Hyödyllinen vaaleita "
"taustakuvia käyttäessä."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:105
msgid "Show a popup if running on X11Wayland"
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:106
msgid ""
"Whether DING should show a popup if it is running on X11Wayland, or the user "
"decided to not show it anymore."
msgstr ""
#, fuzzy
#~ msgid "Desktop icons"
#~ msgstr "Työpöytäkuvakkeiden asetukset"
#~ msgid ""
#~ "To configure Desktop Icons NG, do right-click in the desktop and choose "
#~ "the last item: 'Desktop Icons settings'"
#~ msgstr ""
#~ "Muuttaaksesi työpöytäkuvakkeiden asetuksia, napsauta työpöytää hiiren "
#~ "oikealla painikkeella ja valitse viimeinen kohde ”Työpöytäkuvakkeiden "
#~ "asetukset”"
#~ msgid "Do you want to run “{0}”, or display its contents?"
#~ msgstr "Haluatko suorittaa tiedoston “{0}” vai näyttää sen sisällön?"
#~ msgid "“{0}” is an executable text file."
#~ msgstr "“{0}” on suoritettava oleva tekstitiedosto."
#~ msgid "Execute in a terminal"
#~ msgstr "Suorita päätteessä"
#~ msgid "Show"
#~ msgstr "Näytä"
#~ msgid "Execute"
#~ msgstr "Suorita"
#~ msgid "New folder"
#~ msgstr "Uusi kansio"
#~ msgid "Delete"
#~ msgstr "Poista"
#~ msgid "Are you sure you want to permanently delete these items?"
#~ msgstr "Haluatko varmasti poistaa nämä kohteet pysyvästi?"
#~ msgid "If you delete an item, it will be permanently lost."
#~ msgstr "Jos poistat kohteen, se häviää pysyvästi."
desktop-icons-ng-49.0.5-c32667693d0831c29e3ab3f7bfeb675ea1531a00/po/fr.po 0000664 0000000 0000000 00000063111 15064747536 0023752 0 ustar 00root root 0000000 0000000 # French translation for desktop-icons.
# Copyright (C) 2018 desktop-icons's COPYRIGHT HOLDER
# This file is distributed under the same license as the desktop-icons package.
# ghentdebian , 2018.
# Charles Monzat , 2018.
#
msgid ""
msgstr ""
"Project-Id-Version: desktop-icons master\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-06-29 16:52+0200\n"
"PO-Revision-Date: 2022-10-03 18:57+0200\n"
"Last-Translator: Davy Defaud \n"
"Language-Team: GNOME French Team \n"
"Language: fr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n >= 2);\n"
"X-Generator: Poedit 2.4.2\n"
#: app/askRenamePopup.js:49
msgid "Folder name"
msgstr "Nom du dossier"
#: app/askRenamePopup.js:49
msgid "File name"
msgstr "Nom du fichier"
#: app/askRenamePopup.js:57 app/autoAr.js:305 app/desktopManager.js:1002
msgid "OK"
msgstr "Valider"
#: app/askRenamePopup.js:57
msgid "Rename"
msgstr "Renommer"
#: app/autoAr.js:88
msgid "AutoAr is not installed"
msgstr "AutoAr n’est pas installé"
#: app/autoAr.js:89
msgid ""
"To be able to work with compressed files, install file-roller and/or gir-1.2-"
"gnomeAutoAr"
msgstr ""
"Afin de pouvoir manipuler les fichiers compressés, veuillez installer file-"
"roller ou gir-1.2-gnomeAutoAr"
#: app/autoAr.js:224
msgid "Extracting files"
msgstr "Extraction des fichiers en cours"
#: app/autoAr.js:241
msgid "Compressing files"
msgstr "Compression des fichiers en cours"
#: app/autoAr.js:297 app/autoAr.js:636 app/desktopManager.js:1004
#: app/fileItemMenu.js:474
msgid "Cancel"
msgstr "Annuler"
#: app/autoAr.js:318 app/autoAr.js:619
msgid "Enter a password here"
msgstr "Veuillez saisir un mot de passe"
#: app/autoAr.js:359
msgid "Removing partial file '${outputFile}'"
msgstr "Suppression du fichier « ${outputFile} »"
#: app/autoAr.js:378
msgid "Creating destination folder"
msgstr "Création du dossier de destination"
#: app/autoAr.js:410
msgid "Extracting files into '${outputPath}'"
msgstr "Extraction des fichiers dans « ${outputPath} »"
#: app/autoAr.js:442
msgid "Extraction completed"
msgstr "Extraction terminée"
#: app/autoAr.js:443
msgid "Extracting '${fullPathFile}' has been completed."
msgstr "L’extraction de l’archive « ${fullPathFile} » est terminée."
#: app/autoAr.js:449
msgid "Extraction cancelled"
msgstr "Extraction annulée"
#: app/autoAr.js:450
msgid "Extracting '${fullPathFile}' has been cancelled by the user."
msgstr ""
"L’extraction de l’archive « ${fullPathFile} » a été annulée par "
"l’utilisateur."
#: app/autoAr.js:460
msgid "Passphrase required for ${filename}"
msgstr "L’ouverture de ${filename} requiert un mot de passe"
#: app/autoAr.js:463
msgid "Error during extraction"
msgstr "Erreur durant l’extraction"
#: app/autoAr.js:492
msgid "Compressing files into '${outputFile}'"
msgstr "Compression des fichiers dans « ${outputFile} »"
#: app/autoAr.js:505
msgid "Compression completed"
msgstr "Compression terminée"
#: app/autoAr.js:506
msgid "Compressing files into '${outputFile}' has been completed."
msgstr "La compression des fichiers dans « ${outputFile} » est terminée."
#: app/autoAr.js:510 app/autoAr.js:517
msgid "Cancelled compression"
msgstr "Compression annulée"
#: app/autoAr.js:511
msgid "The output file '${outputFile}' already exists."
msgstr "Il existe déjà un fichier « ${outputFile} »."
#: app/autoAr.js:518
msgid "Compressing files into '${outputFile}' has been cancelled by the user."
msgstr ""
"La compression des fichiers dans « ${outputFile} » a été annulée par "
"l’utilisateur."
#: app/autoAr.js:521
msgid "Error during compression"
msgstr "Erreur durant la compression"
#: app/autoAr.js:554
msgid "Create archive"
msgstr "Créer une archive"
#: app/autoAr.js:579
msgid "Archive name"
msgstr "Nom de l’archive"
#: app/autoAr.js:614
msgid "Password"
msgstr "Mot de passe"
#: app/autoAr.js:633
msgid "Create"
msgstr "Créer"
#: app/autoAr.js:712
msgid "Compatible with all operating systems."
msgstr "Compatible avec tous les systèmes d’exploitation."
#: app/autoAr.js:718
msgid "Password protected .zip, must be installed on Windows and Mac."
msgstr ""
"Archive ZIP protégée par mot de passe ; nécessite une installation sur "
"Windows et macOS."
#: app/autoAr.js:724
msgid "Smaller archives but Linux and Mac only."
msgstr ""
"Archives davantage compressées mais uniquement compatibles GNU/Linux et "
"macOS."
#: app/autoAr.js:730
msgid "Smaller archives but must be installed on Windows and Mac."
msgstr ""
"Archives davantage compressées mais nécessitant une installation sur Windows "
"et macOS."
#: app/dbusUtils.js:69
msgid "\"${programName}\" is needed for Desktop Icons"
msgstr "L’extension Desktop Icons requiert l’application « ${programName} »"
#: app/dbusUtils.js:70
msgid ""
"For this functionality to work in Desktop Icons, you must install \"$"
"{programName}\" in your system."
msgstr ""
"Cette fonctionnalité de l’extension Desktop Icons nécessite l’installation "
"de « ${programName} » sur votre système."
#: app/desktopIconsUtil.js:154
msgid "Command not found"
msgstr "Commande introuvable"
#: app/desktopManager.js:259
msgid "Nautilus File Manager not found"
msgstr "Gestionnaire de fichiers Nautilus introuvable"
#: app/desktopManager.js:260
msgid "The Nautilus File Manager is mandatory to work with Desktop Icons NG."
msgstr ""
"Le gestionnaire de fichiers Nautilus est indispensable au fonctionnement de "
"Desktop Icons NG."
#: app/desktopManager.js:964
msgid "Clear Current Selection before New Search"
msgstr "Supprimer la sélection courante avant une nouvelle recherche"
#: app/desktopManager.js:1006
msgid "Find Files on Desktop"
msgstr "Rechercher des fichiers sur le bureau"
#: app/desktopManager.js:1074 app/desktopManager.js:1786
msgid "New Folder"
msgstr "Nouveau dossier"
#: app/desktopManager.js:1078
msgid "New Document"
msgstr "Nouveau document"
#: app/desktopManager.js:1083
msgid "Paste"
msgstr "Coller"
#: app/desktopManager.js:1087
msgid "Undo"
msgstr "Annuler"
#: app/desktopManager.js:1091
msgid "Redo"
msgstr "Refaire"
#: app/desktopManager.js:1097
msgid "Select All"
msgstr "Tout sélectionner"
#: app/desktopManager.js:1105
msgid "Show Desktop in Files"
msgstr "Ouvrir le bureau dans Fichiers"
#: app/desktopManager.js:1109 app/fileItemMenu.js:365
msgid "Open in Terminal"
msgstr "Ouvrir un terminal"
#: app/desktopManager.js:1115
msgid "Change Background…"
msgstr "Changer l’arrière‑plan…"
#: app/desktopManager.js:1126
msgid "Desktop Icons Settings"
msgstr "Préférences des icônes du bureau"
#: app/desktopManager.js:1139
msgid "Display Settings"
msgstr "Paramètres d’affichage"
#: app/desktopManager.js:1799
#, fuzzy
msgid "Folder Creation Failed"
msgstr "Nom du dossier"
#: app/desktopManager.js:1800
#, fuzzy
msgid "Error while trying to create a Folder"
msgstr "Erreur lors de la suppression des fichiers"
#: app/desktopManager.js:1836
msgid "Template Creation Failed"
msgstr ""
#: app/desktopManager.js:1837
msgid "Error while trying to create a Document"
msgstr ""
#: app/desktopManager.js:1845
msgid "Arrange Icons"
msgstr "Ordonner les icônes"
#: app/desktopManager.js:1849
msgid "Arrange By..."
msgstr "Ordonner par…"
#: app/desktopManager.js:1858
msgid "Keep Arranged..."
msgstr "Conserver l’ordre…"
#: app/desktopManager.js:1862
msgid "Keep Stacked by type..."
msgstr "Conserver les icônes regoupées par type…"
#: app/desktopManager.js:1867
msgid "Sort Home/Drives/Trash..."
msgstr "Trier Dossier personnel, Corbeille et volumes…"
#: app/desktopManager.js:1873
msgid "Sort by Name"
msgstr "Tri par nom"
#: app/desktopManager.js:1875
msgid "Sort by Name Descending"
msgstr "Tri par nom décroissant"
#: app/desktopManager.js:1878
msgid "Sort by Modified Time"
msgstr "Tri par date de modification"
#: app/desktopManager.js:1881
msgid "Sort by Type"
msgstr "Tri par type"
#: app/desktopManager.js:1884
msgid "Sort by Size"
msgstr "Tri par taille"
#. * TRANSLATORS: when using a screen reader, this is the text read when a folder is
#. selected. Example: if a folder named "things" is selected, it will say "things Folder"
#: app/fileItem.js:64
msgid "${VisibleName} Folder"
msgstr ""
#. * TRANSLATORS: when using a screen reader, this is the text read when a normal file is
#. selected. Example: if a file named "my_picture.jpg" is selected, it will say "my_picture.jpg File"
#: app/fileItem.js:68
msgid "${VisibleName} File"
msgstr ""
#. TRANSLATORS: "Home" is the text that will be shown in the user's personal folder
#: app/fileItem.js:72 app/fileItem.js:203
msgid "Home"
msgstr "Dossier personnel"
#. * TRANSLATORS: when using a screen reader, this is the text read when the trash folder is
#. selected.
#: app/fileItem.js:77
#, fuzzy
msgid "Trash"
msgstr "Vider la corbeille"
#. * TRANSLATORS: when using a screen reader, this is the text read when an external drive is
#. selected. Example: if a USB stick named "my_portable" is selected, it will say "my_portable Drive"
#: app/fileItem.js:82
msgid "${VisibleName} Drive"
msgstr ""
#. * TRANSLATORS: when using a screen reader, this is the text read when a stack is
#. selected. Example: if a stack named "pictures" is selected, it will say "pictures Stack"
#: app/fileItem.js:87
msgid "${VisibleName} Stack"
msgstr ""
#: app/fileItem.js:295
#, fuzzy
msgid "Error while reading Desktop file"
msgstr "Erreur lors de la suppression des fichiers"
#: app/fileItem.js:337
msgid "Broken Link"
msgstr "Lien brisé"
#: app/fileItem.js:338
msgid "Can not open this File because it is a Broken Symlink"
msgstr ""
"Impossible d’ouvrir ce fichier car il s’agit d’un lien symbolique dont la "
"cible n’existe plus"
#: app/fileItem.js:370
#, fuzzy
msgid "Can't open the file"
msgstr "Exécuter le fichier"
#: app/fileItem.js:396
msgid "Broken Desktop File"
msgstr "Fichier XDG Desktop incorrect"
#: app/fileItem.js:397
msgid ""
"This .desktop file has errors or points to a program without permissions. It "
"can not be executed.\n"
"\n"
"\tEdit the file to set the correct executable Program."
msgstr ""
"Ce fichier XDG Desktop contient des erreurs ou pointe vers un programme "
"n’ayant pas la permission d’être exécuté.\n"
"\n"
"\tVeuillez corriger le nom et le chemin d’accès du programme à exécuter "
"qui est indiqué dans ce fichier XDG Desktop."
#: app/fileItem.js:403
msgid "Invalid Permissions on Desktop File"
msgstr "Permissions du fichier XDG Desktop incorrectes"
#: app/fileItem.js:404
msgid ""
"This .desktop File has incorrect Permissions. Right Click to edit "
"Properties, then:\n"
msgstr ""
"Ce fichier XDG Desktop a des permissions incorrectes. Veuillez modifier ses "
"propriétés en cliquant sur le bouton droit, puis :\n"
#: app/fileItem.js:406
msgid ""
"\n"
"Set Permissions, in \"Others Access\", \"Read Only\" or \"None\""
msgstr ""
"\n"
"- définissez le droit d’accès dans les permissions pour « autres » à "
"« lecture seule » ou « aucun » ;"
#: app/fileItem.js:409
msgid ""
"\n"
"Enable option, \"Allow Executing File as a Program\""
msgstr ""
"\n"
"- activez l’option, « Autoriser l’exécution du fichier comme un "
"programme »."
#: app/fileItem.js:417
msgid ""
"This .desktop file is not trusted, it can not be launched. To enable "
"launching, right-click, then:\n"
"\n"
"Enable \"Allow Launching\""
msgstr ""
"Ce fichier XDG Desktop n’a pas l’autorisation d’être exécuté. Afin de le "
"rendre exécutable, cliquez sur le bouton droit, puis :\n"
"\n"
"Activez « Autoriser l’exécution »"
#: app/fileItem.js:620
msgid "Failed to set execution flag"
msgstr ""
#: app/fileItem.js:632 app/fileItem.js:639
msgid "Could not apply discrete GPU environment"
msgstr ""
#: app/fileItem.js:668
msgid "Could not find discrete GPU data"
msgstr ""
#: app/fileItem.js:793
msgid "Failed to set metadata::trusted flag"
msgstr ""
#: app/fileItemMenu.js:143
msgid "Open All..."
msgstr "Ouvrir tout…"
#: app/fileItemMenu.js:143
msgid "Open"
msgstr "Ouvrir"
#: app/fileItemMenu.js:160
msgid "Stack This Type"
msgstr "Regrouper ce type"
#: app/fileItemMenu.js:160
msgid "Unstack This Type"
msgstr "Dégrouper ce type"
#: app/fileItemMenu.js:173
msgid "Scripts"
msgstr "Scripts"
#: app/fileItemMenu.js:178
msgid "Open All With Other Application..."
msgstr "Tout ouvrir avec une autre application…"
#: app/fileItemMenu.js:178
msgid "Open With Other Application"
msgstr "Ouvrir avec une autre application"
#: app/fileItemMenu.js:184
msgid "Launch using Dedicated Graphics Card"
msgstr "Lancer avec la carte graphique dédiée"
#: app/fileItemMenu.js:195
msgid "Run as a program"
msgstr "Exécuter en tant que programme"
#: app/fileItemMenu.js:203
msgid "Cut"
msgstr "Couper"
#: app/fileItemMenu.js:210
msgid "Copy"
msgstr "Copier"
#: app/fileItemMenu.js:218
msgid "Rename…"
msgstr "Renommer…"
#: app/fileItemMenu.js:228
msgid "Move to Trash"
msgstr "Mettre à la corbeille"
#: app/fileItemMenu.js:236
msgid "Delete permanently"
msgstr "Supprimer définitivement"
#: app/fileItemMenu.js:246
msgid "Don't Allow Launching"
msgstr "Interdire l’exécution"
#: app/fileItemMenu.js:246
msgid "Allow Launching"
msgstr "Autoriser l’exécution"
#: app/fileItemMenu.js:259
msgid "Empty Trash"
msgstr "Vider la corbeille"
#: app/fileItemMenu.js:272
msgid "Eject"
msgstr "Éjecter"
#: app/fileItemMenu.js:280
msgid "Unmount"
msgstr "Démonter"
#: app/fileItemMenu.js:294 app/fileItemMenu.js:301
msgid "Extract Here"
msgstr "Extraire ici"
#: app/fileItemMenu.js:308
msgid "Extract To..."
msgstr "Extraire vers…"
#: app/fileItemMenu.js:317
msgid "Send to..."
msgstr "Envoyer vers…"
#: app/fileItemMenu.js:325
msgid "Compress {0} folder"
msgid_plural "Compress {0} folders"
msgstr[0] "Compresser {0} fichier"
msgstr[1] "Compresser {0} fichiers"
#: app/fileItemMenu.js:332
msgid "Compress {0} file"
msgid_plural "Compress {0} files"
msgstr[0] "Compresser {0} fichier"
msgstr[1] "Compresser {0} fichiers"
#: app/fileItemMenu.js:340
msgid "New Folder with {0} item"
msgid_plural "New Folder with {0} items"
msgstr[0] "Nouveau dossier avec {0} élément"
msgstr[1] "Nouveau dossier avec {0} éléments"
#: app/fileItemMenu.js:351
msgid "Common Properties"
msgstr "Préférences"
#: app/fileItemMenu.js:351
msgid "Properties"
msgstr "Propriétés"
#: app/fileItemMenu.js:358
msgid "Show All in Files"
msgstr "Afficher dans Fichiers"
#: app/fileItemMenu.js:358
msgid "Show in Files"
msgstr "Montrer dans Fichiers"
#: app/fileItemMenu.js:449
#, fuzzy
msgid "No Extraction Folder"
msgstr "Extraction terminée"
#: app/fileItemMenu.js:450
msgid "Unable to extract File, extraction Folder Does not Exist"
msgstr ""
#: app/fileItemMenu.js:470
msgid "Select Extract Destination"
msgstr "Sélectionnez le dossier d’extraction"
#: app/fileItemMenu.js:475
msgid "Select"
msgstr "Sélectionner"
#: app/fileItemMenu.js:516
msgid "Can not email a Directory"
msgstr "Impossible d’envoyer un dossier par courriel"
#: app/fileItemMenu.js:517
msgid "Selection includes a Directory, compress the directory to a file first."
msgstr ""
"La sélection contient un dossier, créez d’abord une archive du dossier."
#: app/notifyX11UnderWayland.js:37
msgid "Desktop Icons NG is running under X11Wayland"
msgstr ""
#: app/notifyX11UnderWayland.js:38
msgid ""
"It seems that you have your system configured to force GTK to use X11. This "
"works, but it's suboptimal. You should check your system configuration to "
"fix this."
msgstr ""
#: app/notifyX11UnderWayland.js:39 app/showErrorPopup.js:39
msgid "Close"
msgstr "Fermer"
#: app/notifyX11UnderWayland.js:47
msgid "Don't show this message anymore."
msgstr ""
#: app/preferences.js:91
msgid "Settings"
msgstr "Paramètres"
#: app/prefswindow.js:64
msgid "Size for the desktop icons"
msgstr "Taille des icônes du bureau"
#: app/prefswindow.js:64
msgid "Tiny"
msgstr "Minuscule"
#: app/prefswindow.js:64
msgid "Small"
msgstr "Petite"
#: app/prefswindow.js:64
msgid "Standard"
msgstr "Normale"
#: app/prefswindow.js:64
msgid "Large"
msgstr "Grande"
#: app/prefswindow.js:65
msgid "Show the personal folder in the desktop"
msgstr "Afficher le dossier personnel sur le bureau"
#: app/prefswindow.js:66
msgid "Show the trash icon in the desktop"
msgstr "Afficher la corbeille sur le bureau"
#: app/prefswindow.js:67 schemas/org.gnome.shell.extensions.ding.gschema.xml:45
msgid "Show external drives in the desktop"
msgstr "Afficher les volumes de stockage externes sur le bureau"
#: app/prefswindow.js:68 schemas/org.gnome.shell.extensions.ding.gschema.xml:50
msgid "Show network drives in the desktop"
msgstr "Afficher les volumes réseau sur le bureau"
#: app/prefswindow.js:71
msgid "New icons alignment"
msgstr "Nouvel alignement des icônes"
#: app/prefswindow.js:73
msgid "Top-left corner"
msgstr "Coin supérieur gauche"
#: app/prefswindow.js:74
msgid "Top-right corner"
msgstr "Coin supérieur droit"
#: app/prefswindow.js:75
msgid "Bottom-left corner"
msgstr "Coin inférieur gauche"
#: app/prefswindow.js:76
msgid "Bottom-right corner"
msgstr "Coin inférieur droit"
#: app/prefswindow.js:78 schemas/org.gnome.shell.extensions.ding.gschema.xml:55
msgid "Add new drives to the opposite side of the screen"
msgstr "Ajouter les nouveaux volumes de stockage sur le côté opposé de l’écran"
#: app/prefswindow.js:79
msgid "Highlight the drop place during Drag'n'Drop"
msgstr "Mettre en évidence la destination lors d’un glisser‑déposer"
#: app/prefswindow.js:80 schemas/org.gnome.shell.extensions.ding.gschema.xml:90
msgid "Use Nemo to open folders"
msgstr "Utiliser Nemo pour ouvrir les dossiers"
#: app/prefswindow.js:82
msgid "Add an emblem to soft links"
msgstr "Ajouter un emblème aux liens symboliques"
#: app/prefswindow.js:84
msgid "Use dark text in icon labels"
msgstr "Utiliser un texte sombre pour les libellés des icônes"
#: app/prefswindow.js:91
msgid "Settings shared with Nautilus"
msgstr "Paramètres partagés avec Nautilus"
#: app/prefswindow.js:113
msgid "Click type for open files"
msgstr "Type de clic pour ouvrir les fichiers"
#: app/prefswindow.js:113
msgid "Single click"
msgstr "Simple clic"
#: app/prefswindow.js:113
msgid "Double click"
msgstr "Double clic"
#: app/prefswindow.js:114
msgid "Show hidden files"
msgstr "Afficher les fichiers cachés"
#: app/prefswindow.js:115
msgid "Show a context menu item to delete permanently"
msgstr ""
"Afficher un élément « Supprimer définitivement » dans le menu contextuel"
#: app/prefswindow.js:120
msgid "Action to do when launching a program from the desktop"
msgstr "Action à effectuer lors du lancement d’un programme depuis le bureau"
#: app/prefswindow.js:121
msgid "Display the content of the file"
msgstr "Afficher le contenu du fichier"
#: app/prefswindow.js:122
msgid "Launch the file"
msgstr "Exécuter le fichier"
#: app/prefswindow.js:123
msgid "Ask what to do"
msgstr "Demander quoi faire"
#: app/prefswindow.js:129
msgid "Show image thumbnails"
msgstr "Afficher les imagettes"
#: app/prefswindow.js:130
msgid "Never"
msgstr "Jamais"
#: app/prefswindow.js:131
msgid "Local files only"
msgstr "Fichiers locaux uniquement"
#: app/prefswindow.js:132
msgid "Always"
msgstr "Toujours"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:25
msgid "Icon size"
msgstr "Taille des icônes"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:26
msgid "Set the size for the desktop icons."
msgstr "Définit la taille des icônes du bureau."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:30
msgid "Show personal folder"
msgstr "Afficher le dossier personnel"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:31
msgid "Show the personal folder in the desktop."
msgstr "Affiche le dossier personnel sur le bureau."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:35
msgid "Show trash icon"
msgstr "Afficher la corbeille"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:36
msgid "Show the trash icon in the desktop."
msgstr "Affiche l’icône de la corbeille sur le bureau."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:40
msgid "New icons start corner"
msgstr "Coin de référence des nouvelles icônes"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:41
msgid "Set the corner from where the icons will start to be placed."
msgstr ""
"Définit le coin à partir duquel les icônes commenceront à être placées."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:46
msgid "Show the disk drives connected to the computer."
msgstr "Affiche les volumes de stockage connectées à l’ordinateur."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:51
msgid "Show mounted network volumes in the desktop."
msgstr "Affiche sur le bureau les volumes réseau montés."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:56
msgid ""
"When adding drives and volumes to the desktop, add them to the opposite side "
"of the screen."
msgstr ""
"Lorsque des volumes de stockage sont ajoutés sur le bureau, les afficher sur "
"le côté opposé de l’écran."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:60
msgid "Shows a rectangle in the destination place during DnD"
msgstr ""
"Affiche un rectangle sur l’emplacement de destination lors d’un "
"glisser‑déposer"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:61
msgid ""
"When doing a Drag'n'Drop operation, marks the place in the grid where the "
"icon will be put with a semitransparent rectangle."
msgstr ""
"Lors d’un glisser‑déposer, affiche un rectangle semi‑transparent à "
"l’emplacement de la grille où l’icône sera déposée."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:65
msgid "Sort Special Folders - Home/Trash Drives."
msgstr "Trier les dossiers spéciaux — Dossier personnel, Corbeille et médias."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:66
msgid ""
"When arranging Icons on desktop, to sort and change the position of the "
"Home, Trash and mounted Network or External Drives"
msgstr ""
"Lorsque les icônes sont réorganisées sur le bureau, trie et réorganise le "
"dossier personnel, la corbeille et les médias amovibles de manière spécifique"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:70
msgid "Keep Icons Arranged"
msgstr "Conserver les icônes ordonnées"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:71
msgid "Always keep Icons Arranged by the last arranged order"
msgstr "Conserver le dernier ordre de tri des icônes"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:75
msgid "Arrange Order"
msgstr "Ordre de tri"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:76
msgid "Icons Arranged by this property"
msgstr "Icônes triées avec cette propriété"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:80
msgid "Keep Icons Stacked"
msgstr "Conserver les icônes ordonnées"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:81
msgid "Always keep Icons Stacked, Similar types are grouped"
msgstr ""
"Toujours conserver les icônes ordonnées, les types identiques sont regroupés"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:85
msgid "Type of Files to not Stack"
msgstr "Types de fichiers à ne pas regrouper"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:86
msgid "An Array of strings types, Don't Stack these types of files"
msgstr ""
"Un tableau de chaînes de caractères contenant les types de fichiers à ne pas "
"regrouper"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:91
msgid "Use Nemo instead of Nautilus to open folders."
msgstr ""
"Utilise Nemo à la place de Nautilus (« Fichiers ») pour ouvrir les dossiers."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:95
msgid "Add an emblem to links"
msgstr "Ajouter un emblème aux liens symboliques"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:96
msgid "Add an emblem to allow to identify soft links."
msgstr "Ajoute un emblème permettant d’identifier les liens symboliques."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:100
msgid "Use black for label text"
msgstr "Utiliser le noir pour le texte des libellés"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:101
msgid ""
"Paint the label text in black instead of white. Useful when using light "
"backgrounds."
msgstr ""
"Écrit le texte des libellés en noir au lieu de blanc. Ceci est utile avec "
"des arrière‑plans clairs."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:105
msgid "Show a popup if running on X11Wayland"
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:106
msgid ""
"Whether DING should show a popup if it is running on X11Wayland, or the user "
"decided to not show it anymore."
msgstr ""
#, fuzzy
#~ msgid "Desktop icons"
#~ msgstr "Préférences des icônes du bureau"
#~ msgid ""
#~ "To configure Desktop Icons NG, do right-click in the desktop and choose "
#~ "the last item: 'Desktop Icons settings'"
#~ msgstr ""
#~ "Pour configurer Desktop Icons NG, faites un clic droit sur le bureau et "
#~ "choisissez le dernier élément : « Préférences »"
#~ msgid "Do you want to run “{0}”, or display its contents?"
#~ msgstr "Voulez‐vous exécuter « {0} » ou afficher son contenu ?"
#~ msgid "“{0}” is an executable text file."
#~ msgstr "« {0} » est un fichier texte exécutable."
#~ msgid "Execute in a terminal"
#~ msgstr "Exécuter dans un terminal"
#~ msgid "Show"
#~ msgstr "Afficher"
#~ msgid "Execute"
#~ msgstr "Exécuter"
#~ msgid "New folder"
#~ msgstr "Nouveau dossier"
#~ msgid "Delete"
#~ msgstr "Supprimer"
#~ msgid "Are you sure you want to permanently delete these items?"
#~ msgstr "Êtes‑vous sûr de vouloir supprimer définitivement ces éléments ?"
#~ msgid "If you delete an item, it will be permanently lost."
#~ msgstr "Si vous supprimez un élément, il sera définitivement perdu."
desktop-icons-ng-49.0.5-c32667693d0831c29e3ab3f7bfeb675ea1531a00/po/fur.po 0000664 0000000 0000000 00000050332 15064747536 0024140 0 ustar 00root root 0000000 0000000 # Friulian translation for desktop-icons.
# Copyright (C) 2019 desktop-icons's COPYRIGHT HOLDER
# This file is distributed under the same license as the desktop-icons package.
# Fabio Tomat , 2019.
#
msgid ""
msgstr ""
"Project-Id-Version: desktop-icons master\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-06-29 16:52+0200\n"
"PO-Revision-Date: 2019-03-05 22:20+0100\n"
"Last-Translator: Fabio Tomat \n"
"Language-Team: Friulian \n"
"Language: fur\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 2.2.1\n"
#: app/askRenamePopup.js:49
#, fuzzy
msgid "Folder name"
msgstr "Gnûf non de cartele"
#: app/askRenamePopup.js:49
#, fuzzy
msgid "File name"
msgstr "Cambie non..."
#: app/askRenamePopup.js:57 app/autoAr.js:305 app/desktopManager.js:1002
msgid "OK"
msgstr "Va ben"
#: app/askRenamePopup.js:57
#, fuzzy
msgid "Rename"
msgstr "Cambie non..."
#: app/autoAr.js:88
msgid "AutoAr is not installed"
msgstr ""
#: app/autoAr.js:89
msgid ""
"To be able to work with compressed files, install file-roller and/or gir-1.2-"
"gnomeAutoAr"
msgstr ""
#: app/autoAr.js:224
#, fuzzy
msgid "Extracting files"
msgstr "Tire fûr ca"
#: app/autoAr.js:241
msgid "Compressing files"
msgstr ""
#: app/autoAr.js:297 app/autoAr.js:636 app/desktopManager.js:1004
#: app/fileItemMenu.js:474
msgid "Cancel"
msgstr "Anule"
#: app/autoAr.js:318 app/autoAr.js:619
msgid "Enter a password here"
msgstr ""
#: app/autoAr.js:359
msgid "Removing partial file '${outputFile}'"
msgstr ""
#: app/autoAr.js:378
msgid "Creating destination folder"
msgstr ""
#: app/autoAr.js:410
msgid "Extracting files into '${outputPath}'"
msgstr ""
#: app/autoAr.js:442
#, fuzzy
msgid "Extraction completed"
msgstr "Tire fûr ca"
#: app/autoAr.js:443
msgid "Extracting '${fullPathFile}' has been completed."
msgstr ""
#: app/autoAr.js:449
#, fuzzy
msgid "Extraction cancelled"
msgstr "Tire fûr ca"
#: app/autoAr.js:450
msgid "Extracting '${fullPathFile}' has been cancelled by the user."
msgstr ""
#: app/autoAr.js:460
msgid "Passphrase required for ${filename}"
msgstr ""
#: app/autoAr.js:463
msgid "Error during extraction"
msgstr ""
#: app/autoAr.js:492
msgid "Compressing files into '${outputFile}'"
msgstr ""
#: app/autoAr.js:505
msgid "Compression completed"
msgstr ""
#: app/autoAr.js:506
msgid "Compressing files into '${outputFile}' has been completed."
msgstr ""
#: app/autoAr.js:510 app/autoAr.js:517
msgid "Cancelled compression"
msgstr ""
#: app/autoAr.js:511
msgid "The output file '${outputFile}' already exists."
msgstr ""
#: app/autoAr.js:518
msgid "Compressing files into '${outputFile}' has been cancelled by the user."
msgstr ""
#: app/autoAr.js:521
msgid "Error during compression"
msgstr ""
#: app/autoAr.js:554
#, fuzzy
msgid "Create archive"
msgstr "Cree"
#: app/autoAr.js:579
#, fuzzy
msgid "Archive name"
msgstr "Cambie non..."
#: app/autoAr.js:614
msgid "Password"
msgstr ""
#: app/autoAr.js:633
msgid "Create"
msgstr "Cree"
#: app/autoAr.js:712
msgid "Compatible with all operating systems."
msgstr ""
#: app/autoAr.js:718
msgid "Password protected .zip, must be installed on Windows and Mac."
msgstr ""
#: app/autoAr.js:724
msgid "Smaller archives but Linux and Mac only."
msgstr ""
#: app/autoAr.js:730
msgid "Smaller archives but must be installed on Windows and Mac."
msgstr ""
#: app/dbusUtils.js:69
msgid "\"${programName}\" is needed for Desktop Icons"
msgstr ""
#: app/dbusUtils.js:70
msgid ""
"For this functionality to work in Desktop Icons, you must install \"$"
"{programName}\" in your system."
msgstr ""
#: app/desktopIconsUtil.js:154
msgid "Command not found"
msgstr ""
#: app/desktopManager.js:259
msgid "Nautilus File Manager not found"
msgstr ""
#: app/desktopManager.js:260
msgid "The Nautilus File Manager is mandatory to work with Desktop Icons NG."
msgstr ""
#: app/desktopManager.js:964
msgid "Clear Current Selection before New Search"
msgstr ""
#: app/desktopManager.js:1006
msgid "Find Files on Desktop"
msgstr ""
#: app/desktopManager.js:1074 app/desktopManager.js:1786
msgid "New Folder"
msgstr "Gnove cartele"
#: app/desktopManager.js:1078
msgid "New Document"
msgstr "Gnûf Document"
#: app/desktopManager.js:1083
msgid "Paste"
msgstr "Tache"
#: app/desktopManager.js:1087
msgid "Undo"
msgstr "Anule"
#: app/desktopManager.js:1091
msgid "Redo"
msgstr "Torne fâ"
#: app/desktopManager.js:1097
#, fuzzy
msgid "Select All"
msgstr "Selezione dut"
#: app/desktopManager.js:1105
msgid "Show Desktop in Files"
msgstr "Mostre Scritori in File"
#: app/desktopManager.js:1109 app/fileItemMenu.js:365
msgid "Open in Terminal"
msgstr "Vierç in Terminâl"
#: app/desktopManager.js:1115
msgid "Change Background…"
msgstr "Cambie sfont…"
#: app/desktopManager.js:1126
#, fuzzy
msgid "Desktop Icons Settings"
msgstr "Impostazions visôr"
#: app/desktopManager.js:1139
msgid "Display Settings"
msgstr "Impostazions visôr"
#: app/desktopManager.js:1799
#, fuzzy
msgid "Folder Creation Failed"
msgstr "Gnûf non de cartele"
#: app/desktopManager.js:1800
msgid "Error while trying to create a Folder"
msgstr ""
#: app/desktopManager.js:1836
msgid "Template Creation Failed"
msgstr ""
#: app/desktopManager.js:1837
msgid "Error while trying to create a Document"
msgstr ""
#: app/desktopManager.js:1845
msgid "Arrange Icons"
msgstr ""
#: app/desktopManager.js:1849
msgid "Arrange By..."
msgstr ""
#: app/desktopManager.js:1858
msgid "Keep Arranged..."
msgstr ""
#: app/desktopManager.js:1862
msgid "Keep Stacked by type..."
msgstr ""
#: app/desktopManager.js:1867
msgid "Sort Home/Drives/Trash..."
msgstr ""
#: app/desktopManager.js:1873
msgid "Sort by Name"
msgstr ""
#: app/desktopManager.js:1875
msgid "Sort by Name Descending"
msgstr ""
#: app/desktopManager.js:1878
msgid "Sort by Modified Time"
msgstr ""
#: app/desktopManager.js:1881
msgid "Sort by Type"
msgstr ""
#: app/desktopManager.js:1884
msgid "Sort by Size"
msgstr ""
#. * TRANSLATORS: when using a screen reader, this is the text read when a folder is
#. selected. Example: if a folder named "things" is selected, it will say "things Folder"
#: app/fileItem.js:64
msgid "${VisibleName} Folder"
msgstr ""
#. * TRANSLATORS: when using a screen reader, this is the text read when a normal file is
#. selected. Example: if a file named "my_picture.jpg" is selected, it will say "my_picture.jpg File"
#: app/fileItem.js:68
msgid "${VisibleName} File"
msgstr ""
#. TRANSLATORS: "Home" is the text that will be shown in the user's personal folder
#: app/fileItem.js:72 app/fileItem.js:203
msgid "Home"
msgstr "Cjase"
#. * TRANSLATORS: when using a screen reader, this is the text read when the trash folder is
#. selected.
#: app/fileItem.js:77
#, fuzzy
msgid "Trash"
msgstr "Disvuede scovacere"
#. * TRANSLATORS: when using a screen reader, this is the text read when an external drive is
#. selected. Example: if a USB stick named "my_portable" is selected, it will say "my_portable Drive"
#: app/fileItem.js:82
msgid "${VisibleName} Drive"
msgstr ""
#. * TRANSLATORS: when using a screen reader, this is the text read when a stack is
#. selected. Example: if a stack named "pictures" is selected, it will say "pictures Stack"
#: app/fileItem.js:87
msgid "${VisibleName} Stack"
msgstr ""
#: app/fileItem.js:295
#, fuzzy
msgid "Error while reading Desktop file"
msgstr "Mostre Scritori in File"
#: app/fileItem.js:337
msgid "Broken Link"
msgstr ""
#: app/fileItem.js:338
msgid "Can not open this File because it is a Broken Symlink"
msgstr ""
#: app/fileItem.js:370
msgid "Can't open the file"
msgstr ""
#: app/fileItem.js:396
#, fuzzy
msgid "Broken Desktop File"
msgstr "Mostre Scritori in File"
#: app/fileItem.js:397
msgid ""
"This .desktop file has errors or points to a program without permissions. It "
"can not be executed.\n"
"\n"
"\tEdit the file to set the correct executable Program."
msgstr ""
#: app/fileItem.js:403
msgid "Invalid Permissions on Desktop File"
msgstr ""
#: app/fileItem.js:404
msgid ""
"This .desktop File has incorrect Permissions. Right Click to edit "
"Properties, then:\n"
msgstr ""
#: app/fileItem.js:406
msgid ""
"\n"
"Set Permissions, in \"Others Access\", \"Read Only\" or \"None\""
msgstr ""
#: app/fileItem.js:409
msgid ""
"\n"
"Enable option, \"Allow Executing File as a Program\""
msgstr ""
#: app/fileItem.js:417
msgid ""
"This .desktop file is not trusted, it can not be launched. To enable "
"launching, right-click, then:\n"
"\n"
"Enable \"Allow Launching\""
msgstr ""
#: app/fileItem.js:620
msgid "Failed to set execution flag"
msgstr ""
#: app/fileItem.js:632 app/fileItem.js:639
msgid "Could not apply discrete GPU environment"
msgstr ""
#: app/fileItem.js:668
msgid "Could not find discrete GPU data"
msgstr ""
#: app/fileItem.js:793
msgid "Failed to set metadata::trusted flag"
msgstr ""
#: app/fileItemMenu.js:143
msgid "Open All..."
msgstr ""
#: app/fileItemMenu.js:143
msgid "Open"
msgstr "Vierç"
#: app/fileItemMenu.js:160
msgid "Stack This Type"
msgstr ""
#: app/fileItemMenu.js:160
msgid "Unstack This Type"
msgstr ""
#: app/fileItemMenu.js:173
msgid "Scripts"
msgstr "Script"
#: app/fileItemMenu.js:178
#, fuzzy
msgid "Open All With Other Application..."
msgstr "Vierç cuntune altre aplicazion"
#: app/fileItemMenu.js:178
msgid "Open With Other Application"
msgstr "Vierç cuntune altre aplicazion"
#: app/fileItemMenu.js:184
msgid "Launch using Dedicated Graphics Card"
msgstr ""
#: app/fileItemMenu.js:195
msgid "Run as a program"
msgstr ""
#: app/fileItemMenu.js:203
msgid "Cut"
msgstr "Taie"
#: app/fileItemMenu.js:210
msgid "Copy"
msgstr "Copie"
#: app/fileItemMenu.js:218
msgid "Rename…"
msgstr "Cambie non..."
#: app/fileItemMenu.js:228
msgid "Move to Trash"
msgstr "Sposte te scovacere"
#: app/fileItemMenu.js:236
msgid "Delete permanently"
msgstr "Elimine par simpri"
#: app/fileItemMenu.js:246
#, fuzzy
msgid "Don't Allow Launching"
msgstr "No sta permeti inviament"
#: app/fileItemMenu.js:246
msgid "Allow Launching"
msgstr "Permet inviament"
#: app/fileItemMenu.js:259
msgid "Empty Trash"
msgstr "Disvuede scovacere"
#: app/fileItemMenu.js:272
msgid "Eject"
msgstr "Pare fûr"
#: app/fileItemMenu.js:280
msgid "Unmount"
msgstr "Dismonte"
#: app/fileItemMenu.js:294 app/fileItemMenu.js:301
msgid "Extract Here"
msgstr "Tire fûr ca"
#: app/fileItemMenu.js:308
msgid "Extract To..."
msgstr "Tire fûr su…"
#: app/fileItemMenu.js:317
msgid "Send to..."
msgstr "Invie a…"
#: app/fileItemMenu.js:325
msgid "Compress {0} folder"
msgid_plural "Compress {0} folders"
msgstr[0] ""
msgstr[1] ""
#: app/fileItemMenu.js:332
msgid "Compress {0} file"
msgid_plural "Compress {0} files"
msgstr[0] ""
msgstr[1] ""
#: app/fileItemMenu.js:340
msgid "New Folder with {0} item"
msgid_plural "New Folder with {0} items"
msgstr[0] ""
msgstr[1] ""
#: app/fileItemMenu.js:351
#, fuzzy
msgid "Common Properties"
msgstr "Propietâts"
#: app/fileItemMenu.js:351
msgid "Properties"
msgstr "Propietâts"
#: app/fileItemMenu.js:358
#, fuzzy
msgid "Show All in Files"
msgstr "Mostre in File"
#: app/fileItemMenu.js:358
msgid "Show in Files"
msgstr "Mostre in File"
#: app/fileItemMenu.js:449
#, fuzzy
msgid "No Extraction Folder"
msgstr "Tire fûr ca"
#: app/fileItemMenu.js:450
msgid "Unable to extract File, extraction Folder Does not Exist"
msgstr ""
#: app/fileItemMenu.js:470
msgid "Select Extract Destination"
msgstr ""
#: app/fileItemMenu.js:475
msgid "Select"
msgstr "Selezione"
#: app/fileItemMenu.js:516
msgid "Can not email a Directory"
msgstr ""
#: app/fileItemMenu.js:517
msgid "Selection includes a Directory, compress the directory to a file first."
msgstr ""
#: app/notifyX11UnderWayland.js:37
msgid "Desktop Icons NG is running under X11Wayland"
msgstr ""
#: app/notifyX11UnderWayland.js:38
msgid ""
"It seems that you have your system configured to force GTK to use X11. This "
"works, but it's suboptimal. You should check your system configuration to "
"fix this."
msgstr ""
#: app/notifyX11UnderWayland.js:39 app/showErrorPopup.js:39
msgid "Close"
msgstr ""
#: app/notifyX11UnderWayland.js:47
msgid "Don't show this message anymore."
msgstr ""
#: app/preferences.js:91
msgid "Settings"
msgstr "Impostazions"
#: app/prefswindow.js:64
msgid "Size for the desktop icons"
msgstr "Dimension pes iconis dal scritori"
#: app/prefswindow.js:64
msgid "Tiny"
msgstr ""
#: app/prefswindow.js:64
msgid "Small"
msgstr "Piçule"
#: app/prefswindow.js:64
msgid "Standard"
msgstr "Standard"
#: app/prefswindow.js:64
msgid "Large"
msgstr "Largje"
#: app/prefswindow.js:65
msgid "Show the personal folder in the desktop"
msgstr "Mostre la cartele personâl intal scritori"
#: app/prefswindow.js:66
msgid "Show the trash icon in the desktop"
msgstr "Mostre la icone de scovacere intal scritori"
#: app/prefswindow.js:67 schemas/org.gnome.shell.extensions.ding.gschema.xml:45
#, fuzzy
msgid "Show external drives in the desktop"
msgstr "Mostre la cartele personâl intal scritori"
#: app/prefswindow.js:68 schemas/org.gnome.shell.extensions.ding.gschema.xml:50
#, fuzzy
msgid "Show network drives in the desktop"
msgstr "Mostre la cartele personâl intal scritori."
#: app/prefswindow.js:71
#, fuzzy
msgid "New icons alignment"
msgstr "Dimension icone"
#: app/prefswindow.js:73
msgid "Top-left corner"
msgstr ""
#: app/prefswindow.js:74
msgid "Top-right corner"
msgstr ""
#: app/prefswindow.js:75
msgid "Bottom-left corner"
msgstr ""
#: app/prefswindow.js:76
msgid "Bottom-right corner"
msgstr ""
#: app/prefswindow.js:78 schemas/org.gnome.shell.extensions.ding.gschema.xml:55
msgid "Add new drives to the opposite side of the screen"
msgstr ""
#: app/prefswindow.js:79
msgid "Highlight the drop place during Drag'n'Drop"
msgstr ""
#: app/prefswindow.js:80 schemas/org.gnome.shell.extensions.ding.gschema.xml:90
msgid "Use Nemo to open folders"
msgstr ""
#: app/prefswindow.js:82
msgid "Add an emblem to soft links"
msgstr ""
#: app/prefswindow.js:84
msgid "Use dark text in icon labels"
msgstr ""
#: app/prefswindow.js:91
msgid "Settings shared with Nautilus"
msgstr ""
#: app/prefswindow.js:113
msgid "Click type for open files"
msgstr ""
#: app/prefswindow.js:113
msgid "Single click"
msgstr ""
#: app/prefswindow.js:113
msgid "Double click"
msgstr ""
#: app/prefswindow.js:114
#, fuzzy
msgid "Show hidden files"
msgstr "Mostre in File"
#: app/prefswindow.js:115
msgid "Show a context menu item to delete permanently"
msgstr ""
#: app/prefswindow.js:120
msgid "Action to do when launching a program from the desktop"
msgstr ""
#: app/prefswindow.js:121
msgid "Display the content of the file"
msgstr ""
#: app/prefswindow.js:122
msgid "Launch the file"
msgstr ""
#: app/prefswindow.js:123
msgid "Ask what to do"
msgstr ""
#: app/prefswindow.js:129
msgid "Show image thumbnails"
msgstr ""
#: app/prefswindow.js:130
msgid "Never"
msgstr ""
#: app/prefswindow.js:131
msgid "Local files only"
msgstr ""
#: app/prefswindow.js:132
msgid "Always"
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:25
msgid "Icon size"
msgstr "Dimension icone"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:26
msgid "Set the size for the desktop icons."
msgstr "Stabilìs la dimension pes iconis dal scritori."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:30
msgid "Show personal folder"
msgstr "Mostre cartele personâl"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:31
msgid "Show the personal folder in the desktop."
msgstr "Mostre la cartele personâl intal scritori."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:35
msgid "Show trash icon"
msgstr "Mostre la icone de scovacere"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:36
msgid "Show the trash icon in the desktop."
msgstr "Mostre la icone de scovacere intal scritori."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:40
#, fuzzy
msgid "New icons start corner"
msgstr "Dimension icone"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:41
msgid "Set the corner from where the icons will start to be placed."
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:46
msgid "Show the disk drives connected to the computer."
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:51
#, fuzzy
msgid "Show mounted network volumes in the desktop."
msgstr "Mostre la cartele personâl intal scritori."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:56
msgid ""
"When adding drives and volumes to the desktop, add them to the opposite side "
"of the screen."
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:60
msgid "Shows a rectangle in the destination place during DnD"
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:61
msgid ""
"When doing a Drag'n'Drop operation, marks the place in the grid where the "
"icon will be put with a semitransparent rectangle."
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:65
msgid "Sort Special Folders - Home/Trash Drives."
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:66
msgid ""
"When arranging Icons on desktop, to sort and change the position of the "
"Home, Trash and mounted Network or External Drives"
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:70
msgid "Keep Icons Arranged"
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:71
msgid "Always keep Icons Arranged by the last arranged order"
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:75
msgid "Arrange Order"
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:76
msgid "Icons Arranged by this property"
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:80
msgid "Keep Icons Stacked"
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:81
msgid "Always keep Icons Stacked, Similar types are grouped"
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:85
msgid "Type of Files to not Stack"
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:86
msgid "An Array of strings types, Don't Stack these types of files"
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:91
msgid "Use Nemo instead of Nautilus to open folders."
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:95
msgid "Add an emblem to links"
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:96
msgid "Add an emblem to allow to identify soft links."
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:100
msgid "Use black for label text"
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:101
msgid ""
"Paint the label text in black instead of white. Useful when using light "
"backgrounds."
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:105
msgid "Show a popup if running on X11Wayland"
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:106
msgid ""
"Whether DING should show a popup if it is running on X11Wayland, or the user "
"decided to not show it anymore."
msgstr ""
#, fuzzy
#~ msgid "Desktop icons"
#~ msgstr "Impostazions visôr"
#~ msgid "Do you want to run “{0}”, or display its contents?"
#~ msgstr "Vuelistu eseguî “{0}” o mostrâ il so contignût?"
#~ msgid "“{0}” is an executable text file."
#~ msgstr "“{0}” al è un file di test eseguibil."
#, fuzzy
#~ msgid "Execute in a terminal"
#~ msgstr "Vierç in Terminâl"
#, fuzzy
#~ msgid "New folder"
#~ msgstr "Gnove cartele"
#~ msgid "Delete"
#~ msgstr "Elimine"
#~ msgid "If you delete an item, it will be permanently lost."
#~ msgstr "Se tu eliminis un element, al sarà pierdût par simpri."
#, fuzzy
#~ msgid "Show external disk drives in the desktop"
#~ msgstr "Mostre la cartele personâl intal scritori"
#, fuzzy
#~ msgid "Show the external drives"
#~ msgstr "Mostre la cartele personâl intal scritori"
#, fuzzy
#~ msgid "Show network volumes"
#~ msgstr "Mostre in File"
#~ msgid "Enter file name…"
#~ msgstr "Inserìs il non dal file…"
#~ msgid "Folder names cannot contain “/”."
#~ msgstr "I nons des cartelis no puedin contignî il caratar “/”"
#~ msgid "A folder cannot be called “.”."
#~ msgstr "Une cartele no pues jessi clamade “.”."
#~ msgid "A folder cannot be called “..”."
#~ msgstr "Une cartele no pues jessi clamade “..”."
#~ msgid "Folders with “.” at the beginning of their name are hidden."
#~ msgstr "Lis cartelis cul “.” al inizi dal lôr non a son platadis."
#~ msgid "There is already a file or folder with that name."
#~ msgstr "Un file o une cartele cul stes non e esist za."
desktop-icons-ng-49.0.5-c32667693d0831c29e3ab3f7bfeb675ea1531a00/po/he.po 0000664 0000000 0000000 00000050010 15064747536 0023731 0 ustar 00root root 0000000 0000000 # SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# Omer I.S. , 2021.
#
msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-06-29 16:52+0200\n"
"PO-Revision-Date: 2021-02-17 17:57+0200\n"
"Last-Translator: Omer I.S. \n"
"Language-Team: \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=4; plural=(n==1 ? 0 : n==2 ? 1 : n>10 && n%10==0 ? "
"2 : 3);\n"
"X-Generator: Poedit 2.4.2\n"
#: app/askRenamePopup.js:49
msgid "Folder name"
msgstr "שם התיקייה"
#: app/askRenamePopup.js:49
msgid "File name"
msgstr "שם הקובץ"
#: app/askRenamePopup.js:57 app/autoAr.js:305 app/desktopManager.js:1002
msgid "OK"
msgstr "אישור"
#: app/askRenamePopup.js:57
msgid "Rename"
msgstr "שינוי שם"
#: app/autoAr.js:88
msgid "AutoAr is not installed"
msgstr ""
#: app/autoAr.js:89
msgid ""
"To be able to work with compressed files, install file-roller and/or gir-1.2-"
"gnomeAutoAr"
msgstr ""
#: app/autoAr.js:224
msgid "Extracting files"
msgstr ""
#: app/autoAr.js:241
#, fuzzy
msgid "Compressing files"
msgstr "דחיסת קובץ {0}"
#: app/autoAr.js:297 app/autoAr.js:636 app/desktopManager.js:1004
#: app/fileItemMenu.js:474
msgid "Cancel"
msgstr "ביטול"
#: app/autoAr.js:318 app/autoAr.js:619
msgid "Enter a password here"
msgstr ""
#: app/autoAr.js:359
msgid "Removing partial file '${outputFile}'"
msgstr ""
#: app/autoAr.js:378
msgid "Creating destination folder"
msgstr ""
#: app/autoAr.js:410
msgid "Extracting files into '${outputPath}'"
msgstr ""
#: app/autoAr.js:442
msgid "Extraction completed"
msgstr ""
#: app/autoAr.js:443
msgid "Extracting '${fullPathFile}' has been completed."
msgstr ""
#: app/autoAr.js:449
msgid "Extraction cancelled"
msgstr ""
#: app/autoAr.js:450
msgid "Extracting '${fullPathFile}' has been cancelled by the user."
msgstr ""
#: app/autoAr.js:460
msgid "Passphrase required for ${filename}"
msgstr ""
#: app/autoAr.js:463
msgid "Error during extraction"
msgstr ""
#: app/autoAr.js:492
msgid "Compressing files into '${outputFile}'"
msgstr ""
#: app/autoAr.js:505
msgid "Compression completed"
msgstr ""
#: app/autoAr.js:506
msgid "Compressing files into '${outputFile}' has been completed."
msgstr ""
#: app/autoAr.js:510 app/autoAr.js:517
msgid "Cancelled compression"
msgstr ""
#: app/autoAr.js:511
msgid "The output file '${outputFile}' already exists."
msgstr ""
#: app/autoAr.js:518
msgid "Compressing files into '${outputFile}' has been cancelled by the user."
msgstr ""
#: app/autoAr.js:521
msgid "Error during compression"
msgstr ""
#: app/autoAr.js:554
msgid "Create archive"
msgstr ""
#: app/autoAr.js:579
#, fuzzy
msgid "Archive name"
msgstr "שם הקובץ"
#: app/autoAr.js:614
msgid "Password"
msgstr ""
#: app/autoAr.js:633
msgid "Create"
msgstr ""
#: app/autoAr.js:712
msgid "Compatible with all operating systems."
msgstr ""
#: app/autoAr.js:718
msgid "Password protected .zip, must be installed on Windows and Mac."
msgstr ""
#: app/autoAr.js:724
msgid "Smaller archives but Linux and Mac only."
msgstr ""
#: app/autoAr.js:730
msgid "Smaller archives but must be installed on Windows and Mac."
msgstr ""
#: app/dbusUtils.js:69
msgid "\"${programName}\" is needed for Desktop Icons"
msgstr ""
#: app/dbusUtils.js:70
msgid ""
"For this functionality to work in Desktop Icons, you must install \"$"
"{programName}\" in your system."
msgstr ""
#: app/desktopIconsUtil.js:154
msgid "Command not found"
msgstr "הפקודה לא נמצאה"
#: app/desktopManager.js:259
msgid "Nautilus File Manager not found"
msgstr "מנהל הקבצים Nautilus לא נמצא"
#: app/desktopManager.js:260
msgid "The Nautilus File Manager is mandatory to work with Desktop Icons NG."
msgstr ""
#: app/desktopManager.js:964
msgid "Clear Current Selection before New Search"
msgstr ""
#: app/desktopManager.js:1006
msgid "Find Files on Desktop"
msgstr ""
#: app/desktopManager.js:1074 app/desktopManager.js:1786
msgid "New Folder"
msgstr "תיקיה חדשה"
#: app/desktopManager.js:1078
msgid "New Document"
msgstr "מסמך חדש"
#: app/desktopManager.js:1083
msgid "Paste"
msgstr "הדבקה"
#: app/desktopManager.js:1087
msgid "Undo"
msgstr "ביטול פעולה"
#: app/desktopManager.js:1091
msgid "Redo"
msgstr "ביצוע חוזר"
#: app/desktopManager.js:1097
#, fuzzy
msgid "Select All"
msgstr "לבחור הכול"
#: app/desktopManager.js:1105
msgid "Show Desktop in Files"
msgstr ""
#: app/desktopManager.js:1109 app/fileItemMenu.js:365
msgid "Open in Terminal"
msgstr "פתיחה במסוף"
#: app/desktopManager.js:1115
msgid "Change Background…"
msgstr "שינוי הרקע…"
#: app/desktopManager.js:1126
#, fuzzy
msgid "Desktop Icons Settings"
msgstr "הגדרות תצוגה"
#: app/desktopManager.js:1139
msgid "Display Settings"
msgstr "הגדרות תצוגה"
#: app/desktopManager.js:1799
#, fuzzy
msgid "Folder Creation Failed"
msgstr "שם התיקייה"
#: app/desktopManager.js:1800
#, fuzzy
msgid "Error while trying to create a Folder"
msgstr "שגיאה במחיקת הקבצים"
#: app/desktopManager.js:1836
msgid "Template Creation Failed"
msgstr ""
#: app/desktopManager.js:1837
msgid "Error while trying to create a Document"
msgstr ""
#: app/desktopManager.js:1845
msgid "Arrange Icons"
msgstr ""
#: app/desktopManager.js:1849
msgid "Arrange By..."
msgstr ""
#: app/desktopManager.js:1858
msgid "Keep Arranged..."
msgstr ""
#: app/desktopManager.js:1862
msgid "Keep Stacked by type..."
msgstr ""
#: app/desktopManager.js:1867
msgid "Sort Home/Drives/Trash..."
msgstr ""
#: app/desktopManager.js:1873
msgid "Sort by Name"
msgstr ""
#: app/desktopManager.js:1875
msgid "Sort by Name Descending"
msgstr ""
#: app/desktopManager.js:1878
msgid "Sort by Modified Time"
msgstr ""
#: app/desktopManager.js:1881
msgid "Sort by Type"
msgstr ""
#: app/desktopManager.js:1884
msgid "Sort by Size"
msgstr ""
#. * TRANSLATORS: when using a screen reader, this is the text read when a folder is
#. selected. Example: if a folder named "things" is selected, it will say "things Folder"
#: app/fileItem.js:64
msgid "${VisibleName} Folder"
msgstr ""
#. * TRANSLATORS: when using a screen reader, this is the text read when a normal file is
#. selected. Example: if a file named "my_picture.jpg" is selected, it will say "my_picture.jpg File"
#: app/fileItem.js:68
msgid "${VisibleName} File"
msgstr ""
#. TRANSLATORS: "Home" is the text that will be shown in the user's personal folder
#: app/fileItem.js:72 app/fileItem.js:203
msgid "Home"
msgstr "בית"
#. * TRANSLATORS: when using a screen reader, this is the text read when the trash folder is
#. selected.
#: app/fileItem.js:77
#, fuzzy
msgid "Trash"
msgstr "פינוי האשפה"
#. * TRANSLATORS: when using a screen reader, this is the text read when an external drive is
#. selected. Example: if a USB stick named "my_portable" is selected, it will say "my_portable Drive"
#: app/fileItem.js:82
msgid "${VisibleName} Drive"
msgstr ""
#. * TRANSLATORS: when using a screen reader, this is the text read when a stack is
#. selected. Example: if a stack named "pictures" is selected, it will say "pictures Stack"
#: app/fileItem.js:87
msgid "${VisibleName} Stack"
msgstr ""
#: app/fileItem.js:295
#, fuzzy
msgid "Error while reading Desktop file"
msgstr "שגיאה במחיקת הקבצים"
#: app/fileItem.js:337
msgid "Broken Link"
msgstr ""
#: app/fileItem.js:338
msgid "Can not open this File because it is a Broken Symlink"
msgstr ""
#: app/fileItem.js:370
#, fuzzy
msgid "Can't open the file"
msgstr "הפעלת הקובץ"
#: app/fileItem.js:396
msgid "Broken Desktop File"
msgstr ""
#: app/fileItem.js:397
msgid ""
"This .desktop file has errors or points to a program without permissions. It "
"can not be executed.\n"
"\n"
"\tEdit the file to set the correct executable Program."
msgstr ""
#: app/fileItem.js:403
msgid "Invalid Permissions on Desktop File"
msgstr ""
#: app/fileItem.js:404
msgid ""
"This .desktop File has incorrect Permissions. Right Click to edit "
"Properties, then:\n"
msgstr ""
#: app/fileItem.js:406
msgid ""
"\n"
"Set Permissions, in \"Others Access\", \"Read Only\" or \"None\""
msgstr ""
#: app/fileItem.js:409
msgid ""
"\n"
"Enable option, \"Allow Executing File as a Program\""
msgstr ""
#: app/fileItem.js:417
msgid ""
"This .desktop file is not trusted, it can not be launched. To enable "
"launching, right-click, then:\n"
"\n"
"Enable \"Allow Launching\""
msgstr ""
#: app/fileItem.js:620
msgid "Failed to set execution flag"
msgstr ""
#: app/fileItem.js:632 app/fileItem.js:639
msgid "Could not apply discrete GPU environment"
msgstr ""
#: app/fileItem.js:668
msgid "Could not find discrete GPU data"
msgstr ""
#: app/fileItem.js:793
msgid "Failed to set metadata::trusted flag"
msgstr ""
#: app/fileItemMenu.js:143
msgid "Open All..."
msgstr "לפתוח הכול..."
#: app/fileItemMenu.js:143
msgid "Open"
msgstr "פתיחה"
#: app/fileItemMenu.js:160
msgid "Stack This Type"
msgstr ""
#: app/fileItemMenu.js:160
msgid "Unstack This Type"
msgstr ""
#: app/fileItemMenu.js:173
msgid "Scripts"
msgstr "תסריטים"
#: app/fileItemMenu.js:178
msgid "Open All With Other Application..."
msgstr "לפתוח הכול באמצעות יישום אחר..."
#: app/fileItemMenu.js:178
msgid "Open With Other Application"
msgstr "פתיחה באמצעות יישום אחר"
#: app/fileItemMenu.js:184
msgid "Launch using Dedicated Graphics Card"
msgstr ""
#: app/fileItemMenu.js:195
msgid "Run as a program"
msgstr ""
#: app/fileItemMenu.js:203
msgid "Cut"
msgstr "גזירה"
#: app/fileItemMenu.js:210
msgid "Copy"
msgstr "העתקה"
#: app/fileItemMenu.js:218
msgid "Rename…"
msgstr "שינוי שם…"
#: app/fileItemMenu.js:228
msgid "Move to Trash"
msgstr "העברה לאשפה"
#: app/fileItemMenu.js:236
msgid "Delete permanently"
msgstr "מחיקה לצמיתות"
#: app/fileItemMenu.js:246
msgid "Don't Allow Launching"
msgstr "לא לאפשר הפעלה"
#: app/fileItemMenu.js:246
msgid "Allow Launching"
msgstr "לאפשר הפעלה"
#: app/fileItemMenu.js:259
msgid "Empty Trash"
msgstr "פינוי האשפה"
#: app/fileItemMenu.js:272
msgid "Eject"
msgstr "שליפה"
#: app/fileItemMenu.js:280
msgid "Unmount"
msgstr "ניתוק"
#: app/fileItemMenu.js:294 app/fileItemMenu.js:301
msgid "Extract Here"
msgstr ""
#: app/fileItemMenu.js:308
msgid "Extract To..."
msgstr ""
#: app/fileItemMenu.js:317
msgid "Send to..."
msgstr "שליחה אל..."
#: app/fileItemMenu.js:325
#, fuzzy
msgid "Compress {0} folder"
msgid_plural "Compress {0} folders"
msgstr[0] "דחיסת קובץ {0}"
msgstr[1] "דחיסת {0} קבצים"
msgstr[2] "דחיסת {0} קבצים"
msgstr[3] "דחיסת {0} קבצים"
#: app/fileItemMenu.js:332
msgid "Compress {0} file"
msgid_plural "Compress {0} files"
msgstr[0] "דחיסת קובץ {0}"
msgstr[1] "דחיסת {0} קבצים"
msgstr[2] "דחיסת {0} קבצים"
msgstr[3] "דחיסת {0} קבצים"
#: app/fileItemMenu.js:340
msgid "New Folder with {0} item"
msgid_plural "New Folder with {0} items"
msgstr[0] "תיקיה חדשה עם פריט {0}"
msgstr[1] "תיקיה חדשה עם {0} פריטים"
msgstr[2] "תיקיה חדשה עם {0} פריטים"
msgstr[3] "תיקיה חדשה עם {0} פריטים"
#: app/fileItemMenu.js:351
msgid "Common Properties"
msgstr ""
#: app/fileItemMenu.js:351
msgid "Properties"
msgstr "מאפיינים"
#: app/fileItemMenu.js:358
msgid "Show All in Files"
msgstr ""
#: app/fileItemMenu.js:358
msgid "Show in Files"
msgstr ""
#: app/fileItemMenu.js:449
msgid "No Extraction Folder"
msgstr ""
#: app/fileItemMenu.js:450
msgid "Unable to extract File, extraction Folder Does not Exist"
msgstr ""
#: app/fileItemMenu.js:470
msgid "Select Extract Destination"
msgstr ""
#: app/fileItemMenu.js:475
#, fuzzy
msgid "Select"
msgstr "לבחור הכול"
#: app/fileItemMenu.js:516
msgid "Can not email a Directory"
msgstr ""
#: app/fileItemMenu.js:517
msgid "Selection includes a Directory, compress the directory to a file first."
msgstr ""
#: app/notifyX11UnderWayland.js:37
msgid "Desktop Icons NG is running under X11Wayland"
msgstr ""
#: app/notifyX11UnderWayland.js:38
msgid ""
"It seems that you have your system configured to force GTK to use X11. This "
"works, but it's suboptimal. You should check your system configuration to "
"fix this."
msgstr ""
#: app/notifyX11UnderWayland.js:39 app/showErrorPopup.js:39
msgid "Close"
msgstr ""
#: app/notifyX11UnderWayland.js:47
msgid "Don't show this message anymore."
msgstr ""
#: app/preferences.js:91
msgid "Settings"
msgstr "הגדרות"
#: app/prefswindow.js:64
msgid "Size for the desktop icons"
msgstr "גודל הסמלים בשולחן העבודה"
#: app/prefswindow.js:64
msgid "Tiny"
msgstr "פצפון"
#: app/prefswindow.js:64
msgid "Small"
msgstr "קטן"
#: app/prefswindow.js:64
msgid "Standard"
msgstr "רגיל"
#: app/prefswindow.js:64
msgid "Large"
msgstr "גדול"
#: app/prefswindow.js:65
#, fuzzy
msgid "Show the personal folder in the desktop"
msgstr "הצגת התיקייה האישית"
#: app/prefswindow.js:66
#, fuzzy
msgid "Show the trash icon in the desktop"
msgstr "הצגת סמל האשפה"
#: app/prefswindow.js:67 schemas/org.gnome.shell.extensions.ding.gschema.xml:45
msgid "Show external drives in the desktop"
msgstr ""
#: app/prefswindow.js:68 schemas/org.gnome.shell.extensions.ding.gschema.xml:50
msgid "Show network drives in the desktop"
msgstr ""
#: app/prefswindow.js:71
msgid "New icons alignment"
msgstr ""
#: app/prefswindow.js:73
msgid "Top-left corner"
msgstr ""
#: app/prefswindow.js:74
msgid "Top-right corner"
msgstr ""
#: app/prefswindow.js:75
msgid "Bottom-left corner"
msgstr ""
#: app/prefswindow.js:76
msgid "Bottom-right corner"
msgstr ""
#: app/prefswindow.js:78 schemas/org.gnome.shell.extensions.ding.gschema.xml:55
msgid "Add new drives to the opposite side of the screen"
msgstr ""
#: app/prefswindow.js:79
msgid "Highlight the drop place during Drag'n'Drop"
msgstr ""
#: app/prefswindow.js:80 schemas/org.gnome.shell.extensions.ding.gschema.xml:90
msgid "Use Nemo to open folders"
msgstr ""
#: app/prefswindow.js:82
msgid "Add an emblem to soft links"
msgstr ""
#: app/prefswindow.js:84
msgid "Use dark text in icon labels"
msgstr ""
#: app/prefswindow.js:91
msgid "Settings shared with Nautilus"
msgstr ""
#: app/prefswindow.js:113
msgid "Click type for open files"
msgstr ""
#: app/prefswindow.js:113
msgid "Single click"
msgstr "לחיצה יחידה"
#: app/prefswindow.js:113
msgid "Double click"
msgstr "לחיצה כפולה"
#: app/prefswindow.js:114
msgid "Show hidden files"
msgstr "הצגת קבצים מוסתרים"
#: app/prefswindow.js:115
msgid "Show a context menu item to delete permanently"
msgstr ""
#: app/prefswindow.js:120
msgid "Action to do when launching a program from the desktop"
msgstr ""
#: app/prefswindow.js:121
msgid "Display the content of the file"
msgstr ""
#: app/prefswindow.js:122
msgid "Launch the file"
msgstr "הפעלת הקובץ"
#: app/prefswindow.js:123
msgid "Ask what to do"
msgstr "לשאול מה לעשות"
#: app/prefswindow.js:129
msgid "Show image thumbnails"
msgstr "הצגת תמונות מממוזערות"
#: app/prefswindow.js:130
msgid "Never"
msgstr "אף פעם"
#: app/prefswindow.js:131
msgid "Local files only"
msgstr "לקבצים מקומיים בלבד"
#: app/prefswindow.js:132
msgid "Always"
msgstr "תמיד"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:25
msgid "Icon size"
msgstr "גודל הסמלים"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:26
msgid "Set the size for the desktop icons."
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:30
msgid "Show personal folder"
msgstr "הצגת התיקייה האישית"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:31
msgid "Show the personal folder in the desktop."
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:35
msgid "Show trash icon"
msgstr "הצגת סמל האשפה"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:36
msgid "Show the trash icon in the desktop."
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:40
msgid "New icons start corner"
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:41
msgid "Set the corner from where the icons will start to be placed."
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:46
msgid "Show the disk drives connected to the computer."
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:51
msgid "Show mounted network volumes in the desktop."
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:56
msgid ""
"When adding drives and volumes to the desktop, add them to the opposite side "
"of the screen."
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:60
msgid "Shows a rectangle in the destination place during DnD"
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:61
msgid ""
"When doing a Drag'n'Drop operation, marks the place in the grid where the "
"icon will be put with a semitransparent rectangle."
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:65
msgid "Sort Special Folders - Home/Trash Drives."
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:66
msgid ""
"When arranging Icons on desktop, to sort and change the position of the "
"Home, Trash and mounted Network or External Drives"
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:70
msgid "Keep Icons Arranged"
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:71
msgid "Always keep Icons Arranged by the last arranged order"
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:75
msgid "Arrange Order"
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:76
msgid "Icons Arranged by this property"
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:80
msgid "Keep Icons Stacked"
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:81
msgid "Always keep Icons Stacked, Similar types are grouped"
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:85
msgid "Type of Files to not Stack"
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:86
msgid "An Array of strings types, Don't Stack these types of files"
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:91
msgid "Use Nemo instead of Nautilus to open folders."
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:95
msgid "Add an emblem to links"
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:96
msgid "Add an emblem to allow to identify soft links."
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:100
msgid "Use black for label text"
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:101
msgid ""
"Paint the label text in black instead of white. Useful when using light "
"backgrounds."
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:105
msgid "Show a popup if running on X11Wayland"
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:106
msgid ""
"Whether DING should show a popup if it is running on X11Wayland, or the user "
"decided to not show it anymore."
msgstr ""
#, fuzzy
#~ msgid "Desktop icons"
#~ msgstr "הגדרות תצוגה"
#~ msgid "Do you want to run “{0}”, or display its contents?"
#~ msgstr "האם ברצונך להריץ את \"{0}\", או להציג את תוכנו?"
#~ msgid "“{0}” is an executable text file."
#~ msgstr "„{0}” הוא קובץ טקסט הניתן להפעלה."
#~ msgid "Execute in a terminal"
#~ msgstr "הרצה במסוף"
#~ msgid "Show"
#~ msgstr "הצגה"
#~ msgid "Execute"
#~ msgstr "הרצה"
#~ msgid "Delete"
#~ msgstr "מחיקה"
#~ msgid "Are you sure you want to permanently delete these items?"
#~ msgstr "האם אכן ברצונך למחוק פריטים אלו לצמיתות?"
#~ msgid "If you delete an item, it will be permanently lost."
#~ msgstr "פריט שימחק יאבד לנצח."
#~ msgid "New folder"
#~ msgstr "תיקיה חדשה"
desktop-icons-ng-49.0.5-c32667693d0831c29e3ab3f7bfeb675ea1531a00/po/hr.po 0000664 0000000 0000000 00000050463 15064747536 0023762 0 ustar 00root root 0000000 0000000 # Croatian translation for gnome-shell-extension-desktop-icons
# Copyright (c) 2019 Rosetta Contributors and Canonical Ltd 2019
# This file is distributed under the same license as the gnome-shell-extension-desktop-icons package.
# FIRST AUTHOR , 2019.
#
msgid ""
msgstr ""
"Project-Id-Version: gnome-shell-extension-desktop-icons\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-06-29 16:52+0200\n"
"PO-Revision-Date: 2019-06-22 18:52+0200\n"
"Last-Translator: gogo \n"
"Language-Team: Croatian
\n"
"Language: hr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2019-03-27 09:36+0000\n"
"X-Generator: Poedit 2.2.1\n"
#: app/askRenamePopup.js:49
#, fuzzy
msgid "Folder name"
msgstr "Novi naziv mape"
#: app/askRenamePopup.js:49
#, fuzzy
msgid "File name"
msgstr "Preimenuj…"
#: app/askRenamePopup.js:57 app/autoAr.js:305 app/desktopManager.js:1002
msgid "OK"
msgstr "U redu"
#: app/askRenamePopup.js:57
#, fuzzy
msgid "Rename"
msgstr "Preimenuj…"
#: app/autoAr.js:88
msgid "AutoAr is not installed"
msgstr ""
#: app/autoAr.js:89
msgid ""
"To be able to work with compressed files, install file-roller and/or gir-1.2-"
"gnomeAutoAr"
msgstr ""
#: app/autoAr.js:224
#, fuzzy
msgid "Extracting files"
msgstr "Raspakiraj ovdje"
#: app/autoAr.js:241
msgid "Compressing files"
msgstr ""
#: app/autoAr.js:297 app/autoAr.js:636 app/desktopManager.js:1004
#: app/fileItemMenu.js:474
msgid "Cancel"
msgstr "Odustani"
#: app/autoAr.js:318 app/autoAr.js:619
msgid "Enter a password here"
msgstr ""
#: app/autoAr.js:359
msgid "Removing partial file '${outputFile}'"
msgstr ""
#: app/autoAr.js:378
msgid "Creating destination folder"
msgstr ""
#: app/autoAr.js:410
msgid "Extracting files into '${outputPath}'"
msgstr ""
#: app/autoAr.js:442
#, fuzzy
msgid "Extraction completed"
msgstr "Raspakiraj ovdje"
#: app/autoAr.js:443
msgid "Extracting '${fullPathFile}' has been completed."
msgstr ""
#: app/autoAr.js:449
#, fuzzy
msgid "Extraction cancelled"
msgstr "Raspakiraj ovdje"
#: app/autoAr.js:450
msgid "Extracting '${fullPathFile}' has been cancelled by the user."
msgstr ""
#: app/autoAr.js:460
msgid "Passphrase required for ${filename}"
msgstr ""
#: app/autoAr.js:463
msgid "Error during extraction"
msgstr ""
#: app/autoAr.js:492
msgid "Compressing files into '${outputFile}'"
msgstr ""
#: app/autoAr.js:505
msgid "Compression completed"
msgstr ""
#: app/autoAr.js:506
msgid "Compressing files into '${outputFile}' has been completed."
msgstr ""
#: app/autoAr.js:510 app/autoAr.js:517
msgid "Cancelled compression"
msgstr ""
#: app/autoAr.js:511
msgid "The output file '${outputFile}' already exists."
msgstr ""
#: app/autoAr.js:518
msgid "Compressing files into '${outputFile}' has been cancelled by the user."
msgstr ""
#: app/autoAr.js:521
msgid "Error during compression"
msgstr ""
#: app/autoAr.js:554
#, fuzzy
msgid "Create archive"
msgstr "Stvori"
#: app/autoAr.js:579
#, fuzzy
msgid "Archive name"
msgstr "Preimenuj…"
#: app/autoAr.js:614
msgid "Password"
msgstr ""
#: app/autoAr.js:633
msgid "Create"
msgstr "Stvori"
#: app/autoAr.js:712
msgid "Compatible with all operating systems."
msgstr ""
#: app/autoAr.js:718
msgid "Password protected .zip, must be installed on Windows and Mac."
msgstr ""
#: app/autoAr.js:724
msgid "Smaller archives but Linux and Mac only."
msgstr ""
#: app/autoAr.js:730
msgid "Smaller archives but must be installed on Windows and Mac."
msgstr ""
#: app/dbusUtils.js:69
msgid "\"${programName}\" is needed for Desktop Icons"
msgstr ""
#: app/dbusUtils.js:70
msgid ""
"For this functionality to work in Desktop Icons, you must install \"$"
"{programName}\" in your system."
msgstr ""
#: app/desktopIconsUtil.js:154
msgid "Command not found"
msgstr "Naredba nije pronađena"
#: app/desktopManager.js:259
msgid "Nautilus File Manager not found"
msgstr ""
#: app/desktopManager.js:260
msgid "The Nautilus File Manager is mandatory to work with Desktop Icons NG."
msgstr ""
#: app/desktopManager.js:964
msgid "Clear Current Selection before New Search"
msgstr ""
#: app/desktopManager.js:1006
msgid "Find Files on Desktop"
msgstr ""
#: app/desktopManager.js:1074 app/desktopManager.js:1786
msgid "New Folder"
msgstr "Nova mapa"
#: app/desktopManager.js:1078
msgid "New Document"
msgstr "Novi dokument"
#: app/desktopManager.js:1083
msgid "Paste"
msgstr "Zalijepi"
#: app/desktopManager.js:1087
msgid "Undo"
msgstr "Poništi"
#: app/desktopManager.js:1091
msgid "Redo"
msgstr "Ponovi"
#: app/desktopManager.js:1097
#, fuzzy
msgid "Select All"
msgstr "Odaberi sve"
#: app/desktopManager.js:1105
msgid "Show Desktop in Files"
msgstr "Prikaži radnu površinu u Datotekama"
#: app/desktopManager.js:1109 app/fileItemMenu.js:365
msgid "Open in Terminal"
msgstr "Otvori u Terminalu"
#: app/desktopManager.js:1115
msgid "Change Background…"
msgstr "Promijeni pozadinu…"
#: app/desktopManager.js:1126
#, fuzzy
msgid "Desktop Icons Settings"
msgstr "Postavke zaslona"
#: app/desktopManager.js:1139
msgid "Display Settings"
msgstr "Postavke zaslona"
#: app/desktopManager.js:1799
#, fuzzy
msgid "Folder Creation Failed"
msgstr "Novi naziv mape"
#: app/desktopManager.js:1800
msgid "Error while trying to create a Folder"
msgstr ""
#: app/desktopManager.js:1836
msgid "Template Creation Failed"
msgstr ""
#: app/desktopManager.js:1837
msgid "Error while trying to create a Document"
msgstr ""
#: app/desktopManager.js:1845
msgid "Arrange Icons"
msgstr ""
#: app/desktopManager.js:1849
msgid "Arrange By..."
msgstr ""
#: app/desktopManager.js:1858
msgid "Keep Arranged..."
msgstr ""
#: app/desktopManager.js:1862
msgid "Keep Stacked by type..."
msgstr ""
#: app/desktopManager.js:1867
msgid "Sort Home/Drives/Trash..."
msgstr ""
#: app/desktopManager.js:1873
msgid "Sort by Name"
msgstr ""
#: app/desktopManager.js:1875
msgid "Sort by Name Descending"
msgstr ""
#: app/desktopManager.js:1878
msgid "Sort by Modified Time"
msgstr ""
#: app/desktopManager.js:1881
msgid "Sort by Type"
msgstr ""
#: app/desktopManager.js:1884
msgid "Sort by Size"
msgstr ""
#. * TRANSLATORS: when using a screen reader, this is the text read when a folder is
#. selected. Example: if a folder named "things" is selected, it will say "things Folder"
#: app/fileItem.js:64
msgid "${VisibleName} Folder"
msgstr ""
#. * TRANSLATORS: when using a screen reader, this is the text read when a normal file is
#. selected. Example: if a file named "my_picture.jpg" is selected, it will say "my_picture.jpg File"
#: app/fileItem.js:68
msgid "${VisibleName} File"
msgstr ""
#. TRANSLATORS: "Home" is the text that will be shown in the user's personal folder
#: app/fileItem.js:72 app/fileItem.js:203
msgid "Home"
msgstr "Osobna mapa"
#. * TRANSLATORS: when using a screen reader, this is the text read when the trash folder is
#. selected.
#: app/fileItem.js:77
#, fuzzy
msgid "Trash"
msgstr "Isprazni smeće"
#. * TRANSLATORS: when using a screen reader, this is the text read when an external drive is
#. selected. Example: if a USB stick named "my_portable" is selected, it will say "my_portable Drive"
#: app/fileItem.js:82
msgid "${VisibleName} Drive"
msgstr ""
#. * TRANSLATORS: when using a screen reader, this is the text read when a stack is
#. selected. Example: if a stack named "pictures" is selected, it will say "pictures Stack"
#: app/fileItem.js:87
msgid "${VisibleName} Stack"
msgstr ""
#: app/fileItem.js:295
#, fuzzy
msgid "Error while reading Desktop file"
msgstr "Prikaži radnu površinu u Datotekama"
#: app/fileItem.js:337
msgid "Broken Link"
msgstr ""
#: app/fileItem.js:338
msgid "Can not open this File because it is a Broken Symlink"
msgstr ""
#: app/fileItem.js:370
msgid "Can't open the file"
msgstr ""
#: app/fileItem.js:396
#, fuzzy
msgid "Broken Desktop File"
msgstr "Prikaži radnu površinu u Datotekama"
#: app/fileItem.js:397
msgid ""
"This .desktop file has errors or points to a program without permissions. It "
"can not be executed.\n"
"\n"
"\tEdit the file to set the correct executable Program."
msgstr ""
#: app/fileItem.js:403
msgid "Invalid Permissions on Desktop File"
msgstr ""
#: app/fileItem.js:404
msgid ""
"This .desktop File has incorrect Permissions. Right Click to edit "
"Properties, then:\n"
msgstr ""
#: app/fileItem.js:406
msgid ""
"\n"
"Set Permissions, in \"Others Access\", \"Read Only\" or \"None\""
msgstr ""
#: app/fileItem.js:409
msgid ""
"\n"
"Enable option, \"Allow Executing File as a Program\""
msgstr ""
#: app/fileItem.js:417
msgid ""
"This .desktop file is not trusted, it can not be launched. To enable "
"launching, right-click, then:\n"
"\n"
"Enable \"Allow Launching\""
msgstr ""
#: app/fileItem.js:620
msgid "Failed to set execution flag"
msgstr ""
#: app/fileItem.js:632 app/fileItem.js:639
msgid "Could not apply discrete GPU environment"
msgstr ""
#: app/fileItem.js:668
msgid "Could not find discrete GPU data"
msgstr ""
#: app/fileItem.js:793
msgid "Failed to set metadata::trusted flag"
msgstr ""
#: app/fileItemMenu.js:143
msgid "Open All..."
msgstr ""
#: app/fileItemMenu.js:143
msgid "Open"
msgstr "Otvori"
#: app/fileItemMenu.js:160
msgid "Stack This Type"
msgstr ""
#: app/fileItemMenu.js:160
msgid "Unstack This Type"
msgstr ""
#: app/fileItemMenu.js:173
msgid "Scripts"
msgstr ""
#: app/fileItemMenu.js:178
#, fuzzy
msgid "Open All With Other Application..."
msgstr "Otvori s drugom aplikacijom"
#: app/fileItemMenu.js:178
msgid "Open With Other Application"
msgstr "Otvori s drugom aplikacijom"
#: app/fileItemMenu.js:184
msgid "Launch using Dedicated Graphics Card"
msgstr ""
#: app/fileItemMenu.js:195
msgid "Run as a program"
msgstr ""
#: app/fileItemMenu.js:203
msgid "Cut"
msgstr "Izreži"
#: app/fileItemMenu.js:210
msgid "Copy"
msgstr "Kopiraj"
#: app/fileItemMenu.js:218
msgid "Rename…"
msgstr "Preimenuj…"
#: app/fileItemMenu.js:228
msgid "Move to Trash"
msgstr "Premjesti u smeće"
#: app/fileItemMenu.js:236
msgid "Delete permanently"
msgstr "Obriši trajno"
#: app/fileItemMenu.js:246
#, fuzzy
msgid "Don't Allow Launching"
msgstr "Ne dopuštaj pokretanje"
#: app/fileItemMenu.js:246
msgid "Allow Launching"
msgstr "Dopusti pokretanje"
#: app/fileItemMenu.js:259
msgid "Empty Trash"
msgstr "Isprazni smeće"
#: app/fileItemMenu.js:272
msgid "Eject"
msgstr "Izbaci"
#: app/fileItemMenu.js:280
msgid "Unmount"
msgstr "Odmontiraj"
#: app/fileItemMenu.js:294 app/fileItemMenu.js:301
msgid "Extract Here"
msgstr "Raspakiraj ovdje"
#: app/fileItemMenu.js:308
msgid "Extract To..."
msgstr "Raspakiraj u…"
#: app/fileItemMenu.js:317
msgid "Send to..."
msgstr "Pošalji u…"
#: app/fileItemMenu.js:325
msgid "Compress {0} folder"
msgid_plural "Compress {0} folders"
msgstr[0] ""
msgstr[1] ""
#: app/fileItemMenu.js:332
msgid "Compress {0} file"
msgid_plural "Compress {0} files"
msgstr[0] ""
msgstr[1] ""
#: app/fileItemMenu.js:340
msgid "New Folder with {0} item"
msgid_plural "New Folder with {0} items"
msgstr[0] ""
msgstr[1] ""
#: app/fileItemMenu.js:351
#, fuzzy
msgid "Common Properties"
msgstr "Svojstva"
#: app/fileItemMenu.js:351
msgid "Properties"
msgstr "Svojstva"
#: app/fileItemMenu.js:358
#, fuzzy
msgid "Show All in Files"
msgstr "Prikaži u Datotekama"
#: app/fileItemMenu.js:358
msgid "Show in Files"
msgstr "Prikaži u Datotekama"
#: app/fileItemMenu.js:449
#, fuzzy
msgid "No Extraction Folder"
msgstr "Raspakiraj ovdje"
#: app/fileItemMenu.js:450
msgid "Unable to extract File, extraction Folder Does not Exist"
msgstr ""
#: app/fileItemMenu.js:470
msgid "Select Extract Destination"
msgstr ""
#: app/fileItemMenu.js:475
msgid "Select"
msgstr "Odaberi"
#: app/fileItemMenu.js:516
msgid "Can not email a Directory"
msgstr ""
#: app/fileItemMenu.js:517
msgid "Selection includes a Directory, compress the directory to a file first."
msgstr ""
#: app/notifyX11UnderWayland.js:37
msgid "Desktop Icons NG is running under X11Wayland"
msgstr ""
#: app/notifyX11UnderWayland.js:38
msgid ""
"It seems that you have your system configured to force GTK to use X11. This "
"works, but it's suboptimal. You should check your system configuration to "
"fix this."
msgstr ""
#: app/notifyX11UnderWayland.js:39 app/showErrorPopup.js:39
msgid "Close"
msgstr ""
#: app/notifyX11UnderWayland.js:47
msgid "Don't show this message anymore."
msgstr ""
#: app/preferences.js:91
msgid "Settings"
msgstr "Postavke"
#: app/prefswindow.js:64
msgid "Size for the desktop icons"
msgstr "Veličina ikona radne površine"
#: app/prefswindow.js:64
msgid "Tiny"
msgstr ""
#: app/prefswindow.js:64
msgid "Small"
msgstr "Male"
#: app/prefswindow.js:64
msgid "Standard"
msgstr "Standardne"
#: app/prefswindow.js:64
msgid "Large"
msgstr "Velike"
#: app/prefswindow.js:65
msgid "Show the personal folder in the desktop"
msgstr "Prikaži osobnu mapu na radnoj površini"
#: app/prefswindow.js:66
msgid "Show the trash icon in the desktop"
msgstr "Prikaži mapu smeća na radnoj površini"
#: app/prefswindow.js:67 schemas/org.gnome.shell.extensions.ding.gschema.xml:45
#, fuzzy
msgid "Show external drives in the desktop"
msgstr "Prikaži osobnu mapu na radnoj površini"
#: app/prefswindow.js:68 schemas/org.gnome.shell.extensions.ding.gschema.xml:50
#, fuzzy
msgid "Show network drives in the desktop"
msgstr "Prikaži osobnu mapu na radnoj površini."
#: app/prefswindow.js:71
#, fuzzy
msgid "New icons alignment"
msgstr "Veličina ikona"
#: app/prefswindow.js:73
msgid "Top-left corner"
msgstr ""
#: app/prefswindow.js:74
msgid "Top-right corner"
msgstr ""
#: app/prefswindow.js:75
msgid "Bottom-left corner"
msgstr ""
#: app/prefswindow.js:76
msgid "Bottom-right corner"
msgstr ""
#: app/prefswindow.js:78 schemas/org.gnome.shell.extensions.ding.gschema.xml:55
msgid "Add new drives to the opposite side of the screen"
msgstr ""
#: app/prefswindow.js:79
msgid "Highlight the drop place during Drag'n'Drop"
msgstr ""
#: app/prefswindow.js:80 schemas/org.gnome.shell.extensions.ding.gschema.xml:90
msgid "Use Nemo to open folders"
msgstr ""
#: app/prefswindow.js:82
msgid "Add an emblem to soft links"
msgstr ""
#: app/prefswindow.js:84
msgid "Use dark text in icon labels"
msgstr ""
#: app/prefswindow.js:91
msgid "Settings shared with Nautilus"
msgstr ""
#: app/prefswindow.js:113
msgid "Click type for open files"
msgstr ""
#: app/prefswindow.js:113
msgid "Single click"
msgstr ""
#: app/prefswindow.js:113
msgid "Double click"
msgstr ""
#: app/prefswindow.js:114
#, fuzzy
msgid "Show hidden files"
msgstr "Prikaži u Datotekama"
#: app/prefswindow.js:115
msgid "Show a context menu item to delete permanently"
msgstr ""
#: app/prefswindow.js:120
msgid "Action to do when launching a program from the desktop"
msgstr ""
#: app/prefswindow.js:121
msgid "Display the content of the file"
msgstr ""
#: app/prefswindow.js:122
msgid "Launch the file"
msgstr ""
#: app/prefswindow.js:123
msgid "Ask what to do"
msgstr ""
#: app/prefswindow.js:129
msgid "Show image thumbnails"
msgstr ""
#: app/prefswindow.js:130
msgid "Never"
msgstr ""
#: app/prefswindow.js:131
msgid "Local files only"
msgstr ""
#: app/prefswindow.js:132
msgid "Always"
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:25
msgid "Icon size"
msgstr "Veličina ikona"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:26
msgid "Set the size for the desktop icons."
msgstr "Postavi veličinu ikona radne površine."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:30
msgid "Show personal folder"
msgstr "Prikaži osobnu mapu"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:31
msgid "Show the personal folder in the desktop."
msgstr "Prikaži osobnu mapu na radnoj površini."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:35
msgid "Show trash icon"
msgstr "Prikaži ikonu smeća"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:36
msgid "Show the trash icon in the desktop."
msgstr "Prikaži ikonu smeća na radnoj površini."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:40
#, fuzzy
msgid "New icons start corner"
msgstr "Veličina ikona"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:41
msgid "Set the corner from where the icons will start to be placed."
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:46
msgid "Show the disk drives connected to the computer."
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:51
#, fuzzy
msgid "Show mounted network volumes in the desktop."
msgstr "Prikaži osobnu mapu na radnoj površini."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:56
msgid ""
"When adding drives and volumes to the desktop, add them to the opposite side "
"of the screen."
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:60
msgid "Shows a rectangle in the destination place during DnD"
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:61
msgid ""
"When doing a Drag'n'Drop operation, marks the place in the grid where the "
"icon will be put with a semitransparent rectangle."
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:65
msgid "Sort Special Folders - Home/Trash Drives."
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:66
msgid ""
"When arranging Icons on desktop, to sort and change the position of the "
"Home, Trash and mounted Network or External Drives"
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:70
msgid "Keep Icons Arranged"
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:71
msgid "Always keep Icons Arranged by the last arranged order"
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:75
msgid "Arrange Order"
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:76
msgid "Icons Arranged by this property"
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:80
msgid "Keep Icons Stacked"
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:81
msgid "Always keep Icons Stacked, Similar types are grouped"
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:85
msgid "Type of Files to not Stack"
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:86
msgid "An Array of strings types, Don't Stack these types of files"
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:91
msgid "Use Nemo instead of Nautilus to open folders."
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:95
msgid "Add an emblem to links"
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:96
msgid "Add an emblem to allow to identify soft links."
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:100
msgid "Use black for label text"
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:101
msgid ""
"Paint the label text in black instead of white. Useful when using light "
"backgrounds."
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:105
msgid "Show a popup if running on X11Wayland"
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:106
msgid ""
"Whether DING should show a popup if it is running on X11Wayland, or the user "
"decided to not show it anymore."
msgstr ""
#, fuzzy
#~ msgid "Desktop icons"
#~ msgstr "Postavke zaslona"
#~ msgid "Do you want to run “{0}”, or display its contents?"
#~ msgstr "Želite li pokrenuti “{0}”, ili prikazati njezin sadržaj?"
#~ msgid "“{0}” is an executable text file."
#~ msgstr "“{0}” je izvršna tekstovna datoteka."
#, fuzzy
#~ msgid "Execute in a terminal"
#~ msgstr "Otvori u Terminalu"
#, fuzzy
#~ msgid "New folder"
#~ msgstr "Nova mapa"
#~ msgid "Delete"
#~ msgstr "Obriši"
#~ msgid "If you delete an item, it will be permanently lost."
#~ msgstr "Ako obrišete stavku, trajno će biti izgubljena."
#, fuzzy
#~ msgid "Show external disk drives in the desktop"
#~ msgstr "Prikaži osobnu mapu na radnoj površini"
#, fuzzy
#~ msgid "Show the external drives"
#~ msgstr "Prikaži osobnu mapu na radnoj površini"
#, fuzzy
#~ msgid "Show network volumes"
#~ msgstr "Prikaži u Datotekama"
#~ msgid "Enter file name…"
#~ msgstr "Upiši naziv datoteke…"
#~ msgid "Folder names cannot contain “/”."
#~ msgstr "Naziv mape ne može sadržavati “/”."
#~ msgid "A folder cannot be called “.”."
#~ msgstr "Mapa se ne može nazvati “.”."
#~ msgid "A folder cannot be called “..”."
#~ msgstr "Mapa se ne može nazvati “..”."
#~ msgid "Folders with “.” at the beginning of their name are hidden."
#~ msgstr "Mape sa “.” na početku njihovih naziva su skrivene."
#~ msgid "There is already a file or folder with that name."
#~ msgstr "Već postoji datoteka ili mapa s tim nazivom."
desktop-icons-ng-49.0.5-c32667693d0831c29e3ab3f7bfeb675ea1531a00/po/hu.po 0000664 0000000 0000000 00000053073 15064747536 0023765 0 ustar 00root root 0000000 0000000 # Hungarian translation for desktop-icons.
# Copyright (C) 2019 The Free Software Foundation, inc.
# This file is distributed under the same license as the desktop-icons package.
#
# Meskó Balázs , 2021.
# Balázs Úr , 2019.
msgid ""
msgstr ""
"Project-Id-Version: desktop-icons master\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-06-29 16:52+0200\n"
"PO-Revision-Date: 2021-04-28 20:12+0200\n"
"Last-Translator: Meskó Balázs \n"
"Language-Team: Hungarian \n"
"Language: hu\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Poedit 2.4.2\n"
#: app/askRenamePopup.js:49
msgid "Folder name"
msgstr "Mappanév"
#: app/askRenamePopup.js:49
msgid "File name"
msgstr "Fájlnév"
#: app/askRenamePopup.js:57 app/autoAr.js:305 app/desktopManager.js:1002
msgid "OK"
msgstr "Rendben"
#: app/askRenamePopup.js:57
msgid "Rename"
msgstr "Átnevezés"
#: app/autoAr.js:88
msgid "AutoAr is not installed"
msgstr ""
#: app/autoAr.js:89
msgid ""
"To be able to work with compressed files, install file-roller and/or gir-1.2-"
"gnomeAutoAr"
msgstr ""
#: app/autoAr.js:224
#, fuzzy
msgid "Extracting files"
msgstr "Kibontás ide"
#: app/autoAr.js:241
#, fuzzy
msgid "Compressing files"
msgstr "{0} fájl tömörítése"
#: app/autoAr.js:297 app/autoAr.js:636 app/desktopManager.js:1004
#: app/fileItemMenu.js:474
msgid "Cancel"
msgstr "Mégse"
#: app/autoAr.js:318 app/autoAr.js:619
msgid "Enter a password here"
msgstr ""
#: app/autoAr.js:359
msgid "Removing partial file '${outputFile}'"
msgstr ""
#: app/autoAr.js:378
msgid "Creating destination folder"
msgstr ""
#: app/autoAr.js:410
msgid "Extracting files into '${outputPath}'"
msgstr ""
#: app/autoAr.js:442
#, fuzzy
msgid "Extraction completed"
msgstr "Kibontás ide"
#: app/autoAr.js:443
msgid "Extracting '${fullPathFile}' has been completed."
msgstr ""
#: app/autoAr.js:449
#, fuzzy
msgid "Extraction cancelled"
msgstr "Kibontás ide"
#: app/autoAr.js:450
msgid "Extracting '${fullPathFile}' has been cancelled by the user."
msgstr ""
#: app/autoAr.js:460
msgid "Passphrase required for ${filename}"
msgstr ""
#: app/autoAr.js:463
msgid "Error during extraction"
msgstr ""
#: app/autoAr.js:492
msgid "Compressing files into '${outputFile}'"
msgstr ""
#: app/autoAr.js:505
msgid "Compression completed"
msgstr ""
#: app/autoAr.js:506
msgid "Compressing files into '${outputFile}' has been completed."
msgstr ""
#: app/autoAr.js:510 app/autoAr.js:517
msgid "Cancelled compression"
msgstr ""
#: app/autoAr.js:511
msgid "The output file '${outputFile}' already exists."
msgstr ""
#: app/autoAr.js:518
msgid "Compressing files into '${outputFile}' has been cancelled by the user."
msgstr ""
#: app/autoAr.js:521
msgid "Error during compression"
msgstr ""
#: app/autoAr.js:554
msgid "Create archive"
msgstr ""
#: app/autoAr.js:579
#, fuzzy
msgid "Archive name"
msgstr "Fájlnév"
#: app/autoAr.js:614
msgid "Password"
msgstr ""
#: app/autoAr.js:633
msgid "Create"
msgstr ""
#: app/autoAr.js:712
msgid "Compatible with all operating systems."
msgstr ""
#: app/autoAr.js:718
msgid "Password protected .zip, must be installed on Windows and Mac."
msgstr ""
#: app/autoAr.js:724
msgid "Smaller archives but Linux and Mac only."
msgstr ""
#: app/autoAr.js:730
msgid "Smaller archives but must be installed on Windows and Mac."
msgstr ""
#: app/dbusUtils.js:69
msgid "\"${programName}\" is needed for Desktop Icons"
msgstr ""
#: app/dbusUtils.js:70
msgid ""
"For this functionality to work in Desktop Icons, you must install \"$"
"{programName}\" in your system."
msgstr ""
#: app/desktopIconsUtil.js:154
msgid "Command not found"
msgstr "A parancs nem található"
#: app/desktopManager.js:259
msgid "Nautilus File Manager not found"
msgstr "A Nautilus fájlkezelő nem található"
#: app/desktopManager.js:260
msgid "The Nautilus File Manager is mandatory to work with Desktop Icons NG."
msgstr "A Nautilus fájlkezelő szükséges a Desktop Icons NG működéséhez."
#: app/desktopManager.js:964
msgid "Clear Current Selection before New Search"
msgstr ""
#: app/desktopManager.js:1006
msgid "Find Files on Desktop"
msgstr ""
#: app/desktopManager.js:1074 app/desktopManager.js:1786
msgid "New Folder"
msgstr "Új mappa"
#: app/desktopManager.js:1078
msgid "New Document"
msgstr "Új dokumentum"
#: app/desktopManager.js:1083
msgid "Paste"
msgstr "Beillesztés"
#: app/desktopManager.js:1087
msgid "Undo"
msgstr "Visszavonás"
#: app/desktopManager.js:1091
msgid "Redo"
msgstr "Újra"
#: app/desktopManager.js:1097
#, fuzzy
msgid "Select All"
msgstr "Összes kijelölése"
#: app/desktopManager.js:1105
msgid "Show Desktop in Files"
msgstr "Asztal megjelenítése a Fájlokban"
#: app/desktopManager.js:1109 app/fileItemMenu.js:365
msgid "Open in Terminal"
msgstr "Megnyitás terminálban"
#: app/desktopManager.js:1115
msgid "Change Background…"
msgstr "Háttér megváltoztatása…"
#: app/desktopManager.js:1126
#, fuzzy
msgid "Desktop Icons Settings"
msgstr "Asztali ikonok beállítása"
#: app/desktopManager.js:1139
msgid "Display Settings"
msgstr "Megjelenítés beállításai"
#: app/desktopManager.js:1799
#, fuzzy
msgid "Folder Creation Failed"
msgstr "Mappanév"
#: app/desktopManager.js:1800
#, fuzzy
msgid "Error while trying to create a Folder"
msgstr "Hiba történt a fájlok törlésekor"
#: app/desktopManager.js:1836
msgid "Template Creation Failed"
msgstr ""
#: app/desktopManager.js:1837
msgid "Error while trying to create a Document"
msgstr ""
#: app/desktopManager.js:1845
msgid "Arrange Icons"
msgstr ""
#: app/desktopManager.js:1849
msgid "Arrange By..."
msgstr ""
#: app/desktopManager.js:1858
msgid "Keep Arranged..."
msgstr ""
#: app/desktopManager.js:1862
msgid "Keep Stacked by type..."
msgstr ""
#: app/desktopManager.js:1867
msgid "Sort Home/Drives/Trash..."
msgstr ""
#: app/desktopManager.js:1873
msgid "Sort by Name"
msgstr ""
#: app/desktopManager.js:1875
msgid "Sort by Name Descending"
msgstr ""
#: app/desktopManager.js:1878
msgid "Sort by Modified Time"
msgstr ""
#: app/desktopManager.js:1881
msgid "Sort by Type"
msgstr ""
#: app/desktopManager.js:1884
msgid "Sort by Size"
msgstr ""
#. * TRANSLATORS: when using a screen reader, this is the text read when a folder is
#. selected. Example: if a folder named "things" is selected, it will say "things Folder"
#: app/fileItem.js:64
msgid "${VisibleName} Folder"
msgstr ""
#. * TRANSLATORS: when using a screen reader, this is the text read when a normal file is
#. selected. Example: if a file named "my_picture.jpg" is selected, it will say "my_picture.jpg File"
#: app/fileItem.js:68
msgid "${VisibleName} File"
msgstr ""
#. TRANSLATORS: "Home" is the text that will be shown in the user's personal folder
#: app/fileItem.js:72 app/fileItem.js:203
msgid "Home"
msgstr "Saját mappa"
#. * TRANSLATORS: when using a screen reader, this is the text read when the trash folder is
#. selected.
#: app/fileItem.js:77
#, fuzzy
msgid "Trash"
msgstr "Kuka ürítése"
#. * TRANSLATORS: when using a screen reader, this is the text read when an external drive is
#. selected. Example: if a USB stick named "my_portable" is selected, it will say "my_portable Drive"
#: app/fileItem.js:82
msgid "${VisibleName} Drive"
msgstr ""
#. * TRANSLATORS: when using a screen reader, this is the text read when a stack is
#. selected. Example: if a stack named "pictures" is selected, it will say "pictures Stack"
#: app/fileItem.js:87
msgid "${VisibleName} Stack"
msgstr ""
#: app/fileItem.js:295
#, fuzzy
msgid "Error while reading Desktop file"
msgstr "Hiba történt a fájlok törlésekor"
#: app/fileItem.js:337
msgid "Broken Link"
msgstr ""
#: app/fileItem.js:338
msgid "Can not open this File because it is a Broken Symlink"
msgstr ""
#: app/fileItem.js:370
#, fuzzy
msgid "Can't open the file"
msgstr "A fájl futtatása"
#: app/fileItem.js:396
#, fuzzy
msgid "Broken Desktop File"
msgstr "Asztal megjelenítése a Fájlokban"
#: app/fileItem.js:397
msgid ""
"This .desktop file has errors or points to a program without permissions. It "
"can not be executed.\n"
"\n"
"\tEdit the file to set the correct executable Program."
msgstr ""
#: app/fileItem.js:403
msgid "Invalid Permissions on Desktop File"
msgstr ""
#: app/fileItem.js:404
msgid ""
"This .desktop File has incorrect Permissions. Right Click to edit "
"Properties, then:\n"
msgstr ""
#: app/fileItem.js:406
msgid ""
"\n"
"Set Permissions, in \"Others Access\", \"Read Only\" or \"None\""
msgstr ""
#: app/fileItem.js:409
msgid ""
"\n"
"Enable option, \"Allow Executing File as a Program\""
msgstr ""
#: app/fileItem.js:417
msgid ""
"This .desktop file is not trusted, it can not be launched. To enable "
"launching, right-click, then:\n"
"\n"
"Enable \"Allow Launching\""
msgstr ""
#: app/fileItem.js:620
msgid "Failed to set execution flag"
msgstr ""
#: app/fileItem.js:632 app/fileItem.js:639
msgid "Could not apply discrete GPU environment"
msgstr ""
#: app/fileItem.js:668
msgid "Could not find discrete GPU data"
msgstr ""
#: app/fileItem.js:793
msgid "Failed to set metadata::trusted flag"
msgstr ""
#: app/fileItemMenu.js:143
msgid "Open All..."
msgstr "Összes megnyitása…"
#: app/fileItemMenu.js:143
msgid "Open"
msgstr "Megnyitás"
#: app/fileItemMenu.js:160
msgid "Stack This Type"
msgstr ""
#: app/fileItemMenu.js:160
msgid "Unstack This Type"
msgstr ""
#: app/fileItemMenu.js:173
msgid "Scripts"
msgstr "Parancsfájlok"
#: app/fileItemMenu.js:178
msgid "Open All With Other Application..."
msgstr "Összes megnyitása egyéb alkalmazással…"
#: app/fileItemMenu.js:178
msgid "Open With Other Application"
msgstr "Megnyitás egyéb alkalmazással"
#: app/fileItemMenu.js:184
msgid "Launch using Dedicated Graphics Card"
msgstr "Futtatás a dedikált videokártyával"
#: app/fileItemMenu.js:195
msgid "Run as a program"
msgstr ""
#: app/fileItemMenu.js:203
msgid "Cut"
msgstr "Kivágás"
#: app/fileItemMenu.js:210
msgid "Copy"
msgstr "Másolás"
#: app/fileItemMenu.js:218
msgid "Rename…"
msgstr "Átnevezés…"
#: app/fileItemMenu.js:228
msgid "Move to Trash"
msgstr "Áthelyezés a Kukába"
#: app/fileItemMenu.js:236
msgid "Delete permanently"
msgstr "Végleges törlés"
#: app/fileItemMenu.js:246
msgid "Don't Allow Launching"
msgstr "Ne engedélyezze az indítást"
#: app/fileItemMenu.js:246
msgid "Allow Launching"
msgstr "Indítás engedélyezése"
#: app/fileItemMenu.js:259
msgid "Empty Trash"
msgstr "Kuka ürítése"
#: app/fileItemMenu.js:272
msgid "Eject"
msgstr "Kiadás"
#: app/fileItemMenu.js:280
msgid "Unmount"
msgstr "Leválasztás"
#: app/fileItemMenu.js:294 app/fileItemMenu.js:301
msgid "Extract Here"
msgstr "Kibontás ide"
#: app/fileItemMenu.js:308
msgid "Extract To..."
msgstr "Kibontás…"
#: app/fileItemMenu.js:317
msgid "Send to..."
msgstr "Küldés…"
#: app/fileItemMenu.js:325
#, fuzzy
msgid "Compress {0} folder"
msgid_plural "Compress {0} folders"
msgstr[0] "{0} fájl tömörítése"
msgstr[1] "{0} fájl tömörítése"
#: app/fileItemMenu.js:332
msgid "Compress {0} file"
msgid_plural "Compress {0} files"
msgstr[0] "{0} fájl tömörítése"
msgstr[1] "{0} fájl tömörítése"
#: app/fileItemMenu.js:340
msgid "New Folder with {0} item"
msgid_plural "New Folder with {0} items"
msgstr[0] "Új mappa {0} elemmel"
msgstr[1] "Új mappa {0} elemmel"
#: app/fileItemMenu.js:351
msgid "Common Properties"
msgstr "Gyakori tulajdonságok"
#: app/fileItemMenu.js:351
msgid "Properties"
msgstr "Tulajdonságok"
#: app/fileItemMenu.js:358
msgid "Show All in Files"
msgstr "Összes megjelenítése a Fájlokban"
#: app/fileItemMenu.js:358
msgid "Show in Files"
msgstr "Megjelenítés a Fájlokban"
#: app/fileItemMenu.js:449
#, fuzzy
msgid "No Extraction Folder"
msgstr "Kibontás ide"
#: app/fileItemMenu.js:450
msgid "Unable to extract File, extraction Folder Does not Exist"
msgstr ""
#: app/fileItemMenu.js:470
msgid "Select Extract Destination"
msgstr ""
#: app/fileItemMenu.js:475
#, fuzzy
msgid "Select"
msgstr "Összes kijelölése"
#: app/fileItemMenu.js:516
msgid "Can not email a Directory"
msgstr "Könyvtár nem küldhető el e-mailben"
#: app/fileItemMenu.js:517
msgid "Selection includes a Directory, compress the directory to a file first."
msgstr "A kijelölés könyvtárat tartalmaz, előbb tömörítse egy fájlba."
#: app/notifyX11UnderWayland.js:37
msgid "Desktop Icons NG is running under X11Wayland"
msgstr ""
#: app/notifyX11UnderWayland.js:38
msgid ""
"It seems that you have your system configured to force GTK to use X11. This "
"works, but it's suboptimal. You should check your system configuration to "
"fix this."
msgstr ""
#: app/notifyX11UnderWayland.js:39 app/showErrorPopup.js:39
msgid "Close"
msgstr ""
#: app/notifyX11UnderWayland.js:47
msgid "Don't show this message anymore."
msgstr ""
#: app/preferences.js:91
msgid "Settings"
msgstr "Beállítások"
#: app/prefswindow.js:64
msgid "Size for the desktop icons"
msgstr "Az asztali ikonok mérete"
#: app/prefswindow.js:64
msgid "Tiny"
msgstr "Apró"
#: app/prefswindow.js:64
msgid "Small"
msgstr "Kicsi"
#: app/prefswindow.js:64
msgid "Standard"
msgstr "Szokásos"
#: app/prefswindow.js:64
msgid "Large"
msgstr "Nagy"
#: app/prefswindow.js:65
msgid "Show the personal folder in the desktop"
msgstr "A személyes mappa megjelenítése az asztalon"
#: app/prefswindow.js:66
msgid "Show the trash icon in the desktop"
msgstr "A kuka ikon megjelenítése az asztalon"
#: app/prefswindow.js:67 schemas/org.gnome.shell.extensions.ding.gschema.xml:45
msgid "Show external drives in the desktop"
msgstr "A külső meghajtók megjelenítése az asztalon"
#: app/prefswindow.js:68 schemas/org.gnome.shell.extensions.ding.gschema.xml:50
msgid "Show network drives in the desktop"
msgstr "A hálózati meghajtók megjelenítése az asztalon."
#: app/prefswindow.js:71
msgid "New icons alignment"
msgstr "Új ikonok elrendezése"
#: app/prefswindow.js:73
msgid "Top-left corner"
msgstr "Bal felső sarok"
#: app/prefswindow.js:74
msgid "Top-right corner"
msgstr "Jobb felső sarok"
#: app/prefswindow.js:75
msgid "Bottom-left corner"
msgstr "Bal alsó sarok"
#: app/prefswindow.js:76
msgid "Bottom-right corner"
msgstr "Jobb alsó sarok"
#: app/prefswindow.js:78 schemas/org.gnome.shell.extensions.ding.gschema.xml:55
msgid "Add new drives to the opposite side of the screen"
msgstr "Új meghajtók hozzáadása a képernyő ellentétes oldalán"
#: app/prefswindow.js:79
msgid "Highlight the drop place during Drag'n'Drop"
msgstr "Az ejtés helyének kiemelése fogd és vidd műveletkor"
#: app/prefswindow.js:80 schemas/org.gnome.shell.extensions.ding.gschema.xml:90
msgid "Use Nemo to open folders"
msgstr ""
#: app/prefswindow.js:82
msgid "Add an emblem to soft links"
msgstr ""
#: app/prefswindow.js:84
msgid "Use dark text in icon labels"
msgstr ""
#: app/prefswindow.js:91
msgid "Settings shared with Nautilus"
msgstr "A Nautilussal megosztott beállítások"
#: app/prefswindow.js:113
msgid "Click type for open files"
msgstr "A fájlok megnyitásához használandó kattintás típusa"
#: app/prefswindow.js:113
msgid "Single click"
msgstr "Egyszeres kattintás"
#: app/prefswindow.js:113
msgid "Double click"
msgstr "Dupla kattintás"
#: app/prefswindow.js:114
msgid "Show hidden files"
msgstr "Rejtett fájlok megjelenítése"
#: app/prefswindow.js:115
msgid "Show a context menu item to delete permanently"
msgstr "Helyi menü-elem megjelenítése a végleges törléshez"
#: app/prefswindow.js:120
msgid "Action to do when launching a program from the desktop"
msgstr "Program asztalról történő indításakor végrehajtandó művelet"
#: app/prefswindow.js:121
msgid "Display the content of the file"
msgstr "A fájl tartalmának megjelenítése"
#: app/prefswindow.js:122
msgid "Launch the file"
msgstr "A fájl futtatása"
#: app/prefswindow.js:123
msgid "Ask what to do"
msgstr "Kérdezze meg, mi a teendő"
#: app/prefswindow.js:129
msgid "Show image thumbnails"
msgstr "Bélyegképek megjelenítése"
#: app/prefswindow.js:130
msgid "Never"
msgstr "Soha"
#: app/prefswindow.js:131
msgid "Local files only"
msgstr "Csak helyi fájlok esetén"
#: app/prefswindow.js:132
msgid "Always"
msgstr "Mindig"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:25
msgid "Icon size"
msgstr "Ikonméret"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:26
msgid "Set the size for the desktop icons."
msgstr "Az asztali ikonok méretének beállítása."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:30
msgid "Show personal folder"
msgstr "Személyes mappa megjelenítése"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:31
msgid "Show the personal folder in the desktop."
msgstr "A személyes mappa megjelenítése az asztalon."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:35
msgid "Show trash icon"
msgstr "Kuka ikon megjelenítése"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:36
msgid "Show the trash icon in the desktop."
msgstr "A kuka ikon megjelenítése az asztalon."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:40
msgid "New icons start corner"
msgstr "Új ikonok kezdősarka"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:41
msgid "Set the corner from where the icons will start to be placed."
msgstr "Beállítja a sarkot, ahová az ikonok helyezve lesznek."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:46
msgid "Show the disk drives connected to the computer."
msgstr "A számítógéphez csatlakoztatott lemezmeghajtók megjelenítése."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:51
msgid "Show mounted network volumes in the desktop."
msgstr "Csatolt hálózati kötetek megjelenítése az asztalon."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:56
msgid ""
"When adding drives and volumes to the desktop, add them to the opposite side "
"of the screen."
msgstr ""
"Ha lemezeket és köteteket ad az asztalhoz, akkor a képernyő ellentétes "
"oldalán teszi."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:60
msgid "Shows a rectangle in the destination place during DnD"
msgstr "Egy négyzetet jelenít meg a célhelyen fogd és vidd művelet esetén"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:61
msgid ""
"When doing a Drag'n'Drop operation, marks the place in the grid where the "
"icon will be put with a semitransparent rectangle."
msgstr ""
"Amikor fogd és vidd művelet végez, akkor a rácshelyen egy ikont fog "
"megjeleníteni egy félig áttetsző négyzetben."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:65
msgid "Sort Special Folders - Home/Trash Drives."
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:66
msgid ""
"When arranging Icons on desktop, to sort and change the position of the "
"Home, Trash and mounted Network or External Drives"
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:70
msgid "Keep Icons Arranged"
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:71
msgid "Always keep Icons Arranged by the last arranged order"
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:75
msgid "Arrange Order"
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:76
msgid "Icons Arranged by this property"
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:80
msgid "Keep Icons Stacked"
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:81
msgid "Always keep Icons Stacked, Similar types are grouped"
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:85
msgid "Type of Files to not Stack"
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:86
msgid "An Array of strings types, Don't Stack these types of files"
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:91
msgid "Use Nemo instead of Nautilus to open folders."
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:95
msgid "Add an emblem to links"
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:96
msgid "Add an emblem to allow to identify soft links."
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:100
msgid "Use black for label text"
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:101
msgid ""
"Paint the label text in black instead of white. Useful when using light "
"backgrounds."
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:105
msgid "Show a popup if running on X11Wayland"
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:106
msgid ""
"Whether DING should show a popup if it is running on X11Wayland, or the user "
"decided to not show it anymore."
msgstr ""
#, fuzzy
#~ msgid "Desktop icons"
#~ msgstr "Asztali ikonok beállítása"
#~ msgid ""
#~ "To configure Desktop Icons NG, do right-click in the desktop and choose "
#~ "the last item: 'Desktop Icons settings'"
#~ msgstr ""
#~ "A Desktop Icons NG beállításához kattintson jobb gombbal az asztalon, és "
#~ "válassza az utolsó elemet: „Asztali ikonok beállítása”"
#~ msgid "Do you want to run “{0}”, or display its contents?"
#~ msgstr "Futtatja a(z) „{0}” elemet, vagy megjeleníti a tartalmát?"
#~ msgid "“{0}” is an executable text file."
#~ msgstr "A(z) „{0}” egy végrehajtható szöveges fájl."
#~ msgid "Execute in a terminal"
#~ msgstr "Végrehajtás terminálban"
#~ msgid "Show"
#~ msgstr "Megjelenítés"
#~ msgid "Execute"
#~ msgstr "Végrehajtás"
#~ msgid "New folder"
#~ msgstr "Új mappa"
#~ msgid "Delete"
#~ msgstr "Törlés"
#~ msgid "Are you sure you want to permanently delete these items?"
#~ msgstr "Biztos, hogy végleg törölni akarja ezeket elemet?"
#~ msgid "If you delete an item, it will be permanently lost."
#~ msgstr "Ha töröl egy elemet, akkor az véglegesen elvész."
desktop-icons-ng-49.0.5-c32667693d0831c29e3ab3f7bfeb675ea1531a00/po/id.po 0000664 0000000 0000000 00000050267 15064747536 0023747 0 ustar 00root root 0000000 0000000 # Indonesian translation for desktop-icons.
# Copyright (C) 2018 desktop-icons's COPYRIGHT HOLDER
# This file is distributed under the same license as the desktop-icons package.
# Kukuh Syafaat , 2018, 2019.
#
msgid ""
msgstr ""
"Project-Id-Version: desktop-icons master\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-06-29 16:52+0200\n"
"PO-Revision-Date: 2019-07-11 13:57+0700\n"
"Last-Translator: Kukuh Syafaat \n"
"Language-Team: Indonesian \n"
"Language: id\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 2.2.3\n"
#: app/askRenamePopup.js:49
#, fuzzy
msgid "Folder name"
msgstr "Nama folder baru"
#: app/askRenamePopup.js:49
#, fuzzy
msgid "File name"
msgstr "Ganti Nama…"
#: app/askRenamePopup.js:57 app/autoAr.js:305 app/desktopManager.js:1002
msgid "OK"
msgstr "OK"
#: app/askRenamePopup.js:57
#, fuzzy
msgid "Rename"
msgstr "Ganti Nama…"
#: app/autoAr.js:88
msgid "AutoAr is not installed"
msgstr ""
#: app/autoAr.js:89
msgid ""
"To be able to work with compressed files, install file-roller and/or gir-1.2-"
"gnomeAutoAr"
msgstr ""
#: app/autoAr.js:224
#, fuzzy
msgid "Extracting files"
msgstr "Ekstrak Di Sini"
#: app/autoAr.js:241
msgid "Compressing files"
msgstr ""
#: app/autoAr.js:297 app/autoAr.js:636 app/desktopManager.js:1004
#: app/fileItemMenu.js:474
msgid "Cancel"
msgstr "Batal"
#: app/autoAr.js:318 app/autoAr.js:619
msgid "Enter a password here"
msgstr ""
#: app/autoAr.js:359
msgid "Removing partial file '${outputFile}'"
msgstr ""
#: app/autoAr.js:378
msgid "Creating destination folder"
msgstr ""
#: app/autoAr.js:410
msgid "Extracting files into '${outputPath}'"
msgstr ""
#: app/autoAr.js:442
#, fuzzy
msgid "Extraction completed"
msgstr "Ekstrak Di Sini"
#: app/autoAr.js:443
msgid "Extracting '${fullPathFile}' has been completed."
msgstr ""
#: app/autoAr.js:449
#, fuzzy
msgid "Extraction cancelled"
msgstr "Ekstrak Di Sini"
#: app/autoAr.js:450
msgid "Extracting '${fullPathFile}' has been cancelled by the user."
msgstr ""
#: app/autoAr.js:460
msgid "Passphrase required for ${filename}"
msgstr ""
#: app/autoAr.js:463
msgid "Error during extraction"
msgstr ""
#: app/autoAr.js:492
msgid "Compressing files into '${outputFile}'"
msgstr ""
#: app/autoAr.js:505
msgid "Compression completed"
msgstr ""
#: app/autoAr.js:506
msgid "Compressing files into '${outputFile}' has been completed."
msgstr ""
#: app/autoAr.js:510 app/autoAr.js:517
msgid "Cancelled compression"
msgstr ""
#: app/autoAr.js:511
msgid "The output file '${outputFile}' already exists."
msgstr ""
#: app/autoAr.js:518
msgid "Compressing files into '${outputFile}' has been cancelled by the user."
msgstr ""
#: app/autoAr.js:521
msgid "Error during compression"
msgstr ""
#: app/autoAr.js:554
#, fuzzy
msgid "Create archive"
msgstr "Buat"
#: app/autoAr.js:579
#, fuzzy
msgid "Archive name"
msgstr "Ganti Nama…"
#: app/autoAr.js:614
msgid "Password"
msgstr ""
#: app/autoAr.js:633
msgid "Create"
msgstr "Buat"
#: app/autoAr.js:712
msgid "Compatible with all operating systems."
msgstr ""
#: app/autoAr.js:718
msgid "Password protected .zip, must be installed on Windows and Mac."
msgstr ""
#: app/autoAr.js:724
msgid "Smaller archives but Linux and Mac only."
msgstr ""
#: app/autoAr.js:730
msgid "Smaller archives but must be installed on Windows and Mac."
msgstr ""
#: app/dbusUtils.js:69
msgid "\"${programName}\" is needed for Desktop Icons"
msgstr ""
#: app/dbusUtils.js:70
msgid ""
"For this functionality to work in Desktop Icons, you must install \"$"
"{programName}\" in your system."
msgstr ""
#: app/desktopIconsUtil.js:154
msgid "Command not found"
msgstr "Perintah tidak ditemukan"
#: app/desktopManager.js:259
msgid "Nautilus File Manager not found"
msgstr ""
#: app/desktopManager.js:260
msgid "The Nautilus File Manager is mandatory to work with Desktop Icons NG."
msgstr ""
#: app/desktopManager.js:964
msgid "Clear Current Selection before New Search"
msgstr ""
#: app/desktopManager.js:1006
msgid "Find Files on Desktop"
msgstr ""
#: app/desktopManager.js:1074 app/desktopManager.js:1786
msgid "New Folder"
msgstr "Folder Baru"
#: app/desktopManager.js:1078
msgid "New Document"
msgstr "Dokumen Baru"
#: app/desktopManager.js:1083
msgid "Paste"
msgstr "Tempel"
#: app/desktopManager.js:1087
msgid "Undo"
msgstr "Tak Jadi"
#: app/desktopManager.js:1091
msgid "Redo"
msgstr "Jadi Lagi"
#: app/desktopManager.js:1097
#, fuzzy
msgid "Select All"
msgstr "Pilih semua"
#: app/desktopManager.js:1105
msgid "Show Desktop in Files"
msgstr "Tampilkan Destop pada Berkas"
#: app/desktopManager.js:1109 app/fileItemMenu.js:365
msgid "Open in Terminal"
msgstr "Buka dalam Terminal"
#: app/desktopManager.js:1115
msgid "Change Background…"
msgstr "Ubah Latar Belakang…"
#: app/desktopManager.js:1126
#, fuzzy
msgid "Desktop Icons Settings"
msgstr "Pengaturan Tampilan"
#: app/desktopManager.js:1139
msgid "Display Settings"
msgstr "Pengaturan Tampilan"
#: app/desktopManager.js:1799
#, fuzzy
msgid "Folder Creation Failed"
msgstr "Nama folder baru"
#: app/desktopManager.js:1800
msgid "Error while trying to create a Folder"
msgstr ""
#: app/desktopManager.js:1836
msgid "Template Creation Failed"
msgstr ""
#: app/desktopManager.js:1837
msgid "Error while trying to create a Document"
msgstr ""
#: app/desktopManager.js:1845
msgid "Arrange Icons"
msgstr ""
#: app/desktopManager.js:1849
msgid "Arrange By..."
msgstr ""
#: app/desktopManager.js:1858
msgid "Keep Arranged..."
msgstr ""
#: app/desktopManager.js:1862
msgid "Keep Stacked by type..."
msgstr ""
#: app/desktopManager.js:1867
msgid "Sort Home/Drives/Trash..."
msgstr ""
#: app/desktopManager.js:1873
msgid "Sort by Name"
msgstr ""
#: app/desktopManager.js:1875
msgid "Sort by Name Descending"
msgstr ""
#: app/desktopManager.js:1878
msgid "Sort by Modified Time"
msgstr ""
#: app/desktopManager.js:1881
msgid "Sort by Type"
msgstr ""
#: app/desktopManager.js:1884
msgid "Sort by Size"
msgstr ""
#. * TRANSLATORS: when using a screen reader, this is the text read when a folder is
#. selected. Example: if a folder named "things" is selected, it will say "things Folder"
#: app/fileItem.js:64
msgid "${VisibleName} Folder"
msgstr ""
#. * TRANSLATORS: when using a screen reader, this is the text read when a normal file is
#. selected. Example: if a file named "my_picture.jpg" is selected, it will say "my_picture.jpg File"
#: app/fileItem.js:68
msgid "${VisibleName} File"
msgstr ""
#. TRANSLATORS: "Home" is the text that will be shown in the user's personal folder
#: app/fileItem.js:72 app/fileItem.js:203
msgid "Home"
msgstr "Rumah"
#. * TRANSLATORS: when using a screen reader, this is the text read when the trash folder is
#. selected.
#: app/fileItem.js:77
#, fuzzy
msgid "Trash"
msgstr "Kosongkan Tong Sampah"
#. * TRANSLATORS: when using a screen reader, this is the text read when an external drive is
#. selected. Example: if a USB stick named "my_portable" is selected, it will say "my_portable Drive"
#: app/fileItem.js:82
msgid "${VisibleName} Drive"
msgstr ""
#. * TRANSLATORS: when using a screen reader, this is the text read when a stack is
#. selected. Example: if a stack named "pictures" is selected, it will say "pictures Stack"
#: app/fileItem.js:87
msgid "${VisibleName} Stack"
msgstr ""
#: app/fileItem.js:295
#, fuzzy
msgid "Error while reading Desktop file"
msgstr "Tampilkan Destop pada Berkas"
#: app/fileItem.js:337
msgid "Broken Link"
msgstr ""
#: app/fileItem.js:338
msgid "Can not open this File because it is a Broken Symlink"
msgstr ""
#: app/fileItem.js:370
msgid "Can't open the file"
msgstr ""
#: app/fileItem.js:396
#, fuzzy
msgid "Broken Desktop File"
msgstr "Tampilkan Destop pada Berkas"
#: app/fileItem.js:397
msgid ""
"This .desktop file has errors or points to a program without permissions. It "
"can not be executed.\n"
"\n"
"\tEdit the file to set the correct executable Program."
msgstr ""
#: app/fileItem.js:403
msgid "Invalid Permissions on Desktop File"
msgstr ""
#: app/fileItem.js:404
msgid ""
"This .desktop File has incorrect Permissions. Right Click to edit "
"Properties, then:\n"
msgstr ""
#: app/fileItem.js:406
msgid ""
"\n"
"Set Permissions, in \"Others Access\", \"Read Only\" or \"None\""
msgstr ""
#: app/fileItem.js:409
msgid ""
"\n"
"Enable option, \"Allow Executing File as a Program\""
msgstr ""
#: app/fileItem.js:417
msgid ""
"This .desktop file is not trusted, it can not be launched. To enable "
"launching, right-click, then:\n"
"\n"
"Enable \"Allow Launching\""
msgstr ""
#: app/fileItem.js:620
msgid "Failed to set execution flag"
msgstr ""
#: app/fileItem.js:632 app/fileItem.js:639
msgid "Could not apply discrete GPU environment"
msgstr ""
#: app/fileItem.js:668
msgid "Could not find discrete GPU data"
msgstr ""
#: app/fileItem.js:793
msgid "Failed to set metadata::trusted flag"
msgstr ""
#: app/fileItemMenu.js:143
msgid "Open All..."
msgstr ""
#: app/fileItemMenu.js:143
msgid "Open"
msgstr "Buka"
#: app/fileItemMenu.js:160
msgid "Stack This Type"
msgstr ""
#: app/fileItemMenu.js:160
msgid "Unstack This Type"
msgstr ""
#: app/fileItemMenu.js:173
msgid "Scripts"
msgstr ""
#: app/fileItemMenu.js:178
#, fuzzy
msgid "Open All With Other Application..."
msgstr "Buka Dengan Aplikasi Lain"
#: app/fileItemMenu.js:178
msgid "Open With Other Application"
msgstr "Buka Dengan Aplikasi Lain"
#: app/fileItemMenu.js:184
msgid "Launch using Dedicated Graphics Card"
msgstr ""
#: app/fileItemMenu.js:195
msgid "Run as a program"
msgstr ""
#: app/fileItemMenu.js:203
msgid "Cut"
msgstr "Potong"
#: app/fileItemMenu.js:210
msgid "Copy"
msgstr "Salin"
#: app/fileItemMenu.js:218
msgid "Rename…"
msgstr "Ganti Nama…"
#: app/fileItemMenu.js:228
msgid "Move to Trash"
msgstr "Pindahkan ke Tong Sampah"
#: app/fileItemMenu.js:236
msgid "Delete permanently"
msgstr "Hapus permanen"
#: app/fileItemMenu.js:246
#, fuzzy
msgid "Don't Allow Launching"
msgstr "Jangan Izinkan Peluncuran"
#: app/fileItemMenu.js:246
msgid "Allow Launching"
msgstr "Izinkan Peluncuran"
#: app/fileItemMenu.js:259
msgid "Empty Trash"
msgstr "Kosongkan Tong Sampah"
#: app/fileItemMenu.js:272
msgid "Eject"
msgstr "Keluarkan Media"
#: app/fileItemMenu.js:280
msgid "Unmount"
msgstr "Lepas Kaitan"
#: app/fileItemMenu.js:294 app/fileItemMenu.js:301
msgid "Extract Here"
msgstr "Ekstrak Di Sini"
#: app/fileItemMenu.js:308
msgid "Extract To..."
msgstr "Ekstrak ke…"
#: app/fileItemMenu.js:317
msgid "Send to..."
msgstr "Kirim ke…"
#: app/fileItemMenu.js:325
msgid "Compress {0} folder"
msgid_plural "Compress {0} folders"
msgstr[0] ""
msgstr[1] ""
#: app/fileItemMenu.js:332
msgid "Compress {0} file"
msgid_plural "Compress {0} files"
msgstr[0] ""
msgstr[1] ""
#: app/fileItemMenu.js:340
msgid "New Folder with {0} item"
msgid_plural "New Folder with {0} items"
msgstr[0] ""
msgstr[1] ""
#: app/fileItemMenu.js:351
#, fuzzy
msgid "Common Properties"
msgstr "Properti"
#: app/fileItemMenu.js:351
msgid "Properties"
msgstr "Properti"
#: app/fileItemMenu.js:358
#, fuzzy
msgid "Show All in Files"
msgstr "Tampilkan pada Berkas"
#: app/fileItemMenu.js:358
msgid "Show in Files"
msgstr "Tampilkan pada Berkas"
#: app/fileItemMenu.js:449
#, fuzzy
msgid "No Extraction Folder"
msgstr "Ekstrak Di Sini"
#: app/fileItemMenu.js:450
msgid "Unable to extract File, extraction Folder Does not Exist"
msgstr ""
#: app/fileItemMenu.js:470
msgid "Select Extract Destination"
msgstr ""
#: app/fileItemMenu.js:475
msgid "Select"
msgstr "Pilih"
#: app/fileItemMenu.js:516
msgid "Can not email a Directory"
msgstr ""
#: app/fileItemMenu.js:517
msgid "Selection includes a Directory, compress the directory to a file first."
msgstr ""
#: app/notifyX11UnderWayland.js:37
msgid "Desktop Icons NG is running under X11Wayland"
msgstr ""
#: app/notifyX11UnderWayland.js:38
msgid ""
"It seems that you have your system configured to force GTK to use X11. This "
"works, but it's suboptimal. You should check your system configuration to "
"fix this."
msgstr ""
#: app/notifyX11UnderWayland.js:39 app/showErrorPopup.js:39
msgid "Close"
msgstr ""
#: app/notifyX11UnderWayland.js:47
msgid "Don't show this message anymore."
msgstr ""
#: app/preferences.js:91
msgid "Settings"
msgstr "Pengaturan"
#: app/prefswindow.js:64
msgid "Size for the desktop icons"
msgstr "Ukuran untuk ikon destop"
#: app/prefswindow.js:64
msgid "Tiny"
msgstr ""
#: app/prefswindow.js:64
msgid "Small"
msgstr "Kecil"
#: app/prefswindow.js:64
msgid "Standard"
msgstr "Standar"
#: app/prefswindow.js:64
msgid "Large"
msgstr "Besar"
#: app/prefswindow.js:65
msgid "Show the personal folder in the desktop"
msgstr "Tampilkan folder pribadi di destop"
#: app/prefswindow.js:66
msgid "Show the trash icon in the desktop"
msgstr "Tampilkan ikon tong sampah di destop"
#: app/prefswindow.js:67 schemas/org.gnome.shell.extensions.ding.gschema.xml:45
#, fuzzy
msgid "Show external drives in the desktop"
msgstr "Tampilkan folder pribadi di destop"
#: app/prefswindow.js:68 schemas/org.gnome.shell.extensions.ding.gschema.xml:50
#, fuzzy
msgid "Show network drives in the desktop"
msgstr "Tampilkan folder pribadi di destop."
#: app/prefswindow.js:71
#, fuzzy
msgid "New icons alignment"
msgstr "Ukuran ikon"
#: app/prefswindow.js:73
msgid "Top-left corner"
msgstr ""
#: app/prefswindow.js:74
msgid "Top-right corner"
msgstr ""
#: app/prefswindow.js:75
msgid "Bottom-left corner"
msgstr ""
#: app/prefswindow.js:76
msgid "Bottom-right corner"
msgstr ""
#: app/prefswindow.js:78 schemas/org.gnome.shell.extensions.ding.gschema.xml:55
msgid "Add new drives to the opposite side of the screen"
msgstr ""
#: app/prefswindow.js:79
msgid "Highlight the drop place during Drag'n'Drop"
msgstr ""
#: app/prefswindow.js:80 schemas/org.gnome.shell.extensions.ding.gschema.xml:90
msgid "Use Nemo to open folders"
msgstr ""
#: app/prefswindow.js:82
msgid "Add an emblem to soft links"
msgstr ""
#: app/prefswindow.js:84
msgid "Use dark text in icon labels"
msgstr ""
#: app/prefswindow.js:91
msgid "Settings shared with Nautilus"
msgstr ""
#: app/prefswindow.js:113
msgid "Click type for open files"
msgstr ""
#: app/prefswindow.js:113
msgid "Single click"
msgstr ""
#: app/prefswindow.js:113
msgid "Double click"
msgstr ""
#: app/prefswindow.js:114
#, fuzzy
msgid "Show hidden files"
msgstr "Tampilkan pada Berkas"
#: app/prefswindow.js:115
msgid "Show a context menu item to delete permanently"
msgstr ""
#: app/prefswindow.js:120
msgid "Action to do when launching a program from the desktop"
msgstr ""
#: app/prefswindow.js:121
msgid "Display the content of the file"
msgstr ""
#: app/prefswindow.js:122
msgid "Launch the file"
msgstr ""
#: app/prefswindow.js:123
msgid "Ask what to do"
msgstr ""
#: app/prefswindow.js:129
msgid "Show image thumbnails"
msgstr ""
#: app/prefswindow.js:130
msgid "Never"
msgstr ""
#: app/prefswindow.js:131
msgid "Local files only"
msgstr ""
#: app/prefswindow.js:132
msgid "Always"
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:25
msgid "Icon size"
msgstr "Ukuran ikon"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:26
msgid "Set the size for the desktop icons."
msgstr "Set ukuran untuk ikon destop."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:30
msgid "Show personal folder"
msgstr "Tampilkan folder pribadi"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:31
msgid "Show the personal folder in the desktop."
msgstr "Tampilkan folder pribadi di destop."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:35
msgid "Show trash icon"
msgstr "Tampilkan ikon tong sampah"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:36
msgid "Show the trash icon in the desktop."
msgstr "Tampilkan ikon tong sampah di destop."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:40
#, fuzzy
msgid "New icons start corner"
msgstr "Ukuran ikon"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:41
msgid "Set the corner from where the icons will start to be placed."
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:46
msgid "Show the disk drives connected to the computer."
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:51
#, fuzzy
msgid "Show mounted network volumes in the desktop."
msgstr "Tampilkan folder pribadi di destop."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:56
msgid ""
"When adding drives and volumes to the desktop, add them to the opposite side "
"of the screen."
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:60
msgid "Shows a rectangle in the destination place during DnD"
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:61
msgid ""
"When doing a Drag'n'Drop operation, marks the place in the grid where the "
"icon will be put with a semitransparent rectangle."
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:65
msgid "Sort Special Folders - Home/Trash Drives."
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:66
msgid ""
"When arranging Icons on desktop, to sort and change the position of the "
"Home, Trash and mounted Network or External Drives"
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:70
msgid "Keep Icons Arranged"
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:71
msgid "Always keep Icons Arranged by the last arranged order"
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:75
msgid "Arrange Order"
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:76
msgid "Icons Arranged by this property"
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:80
msgid "Keep Icons Stacked"
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:81
msgid "Always keep Icons Stacked, Similar types are grouped"
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:85
msgid "Type of Files to not Stack"
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:86
msgid "An Array of strings types, Don't Stack these types of files"
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:91
msgid "Use Nemo instead of Nautilus to open folders."
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:95
msgid "Add an emblem to links"
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:96
msgid "Add an emblem to allow to identify soft links."
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:100
msgid "Use black for label text"
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:101
msgid ""
"Paint the label text in black instead of white. Useful when using light "
"backgrounds."
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:105
msgid "Show a popup if running on X11Wayland"
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:106
msgid ""
"Whether DING should show a popup if it is running on X11Wayland, or the user "
"decided to not show it anymore."
msgstr ""
#, fuzzy
#~ msgid "Desktop icons"
#~ msgstr "Pengaturan Tampilan"
#~ msgid "Do you want to run “{0}”, or display its contents?"
#~ msgstr "Anda ingin menjalankan “{0}” atau hanya melihat isinya?"
#~ msgid "“{0}” is an executable text file."
#~ msgstr "“{0}” adalah berkas teks yang dapat dieksekusi."
#, fuzzy
#~ msgid "Execute in a terminal"
#~ msgstr "Buka dalam Terminal"
#, fuzzy
#~ msgid "New folder"
#~ msgstr "Folder Baru"
#~ msgid "Delete"
#~ msgstr "Hapus"
#~ msgid "If you delete an item, it will be permanently lost."
#~ msgstr "Jika dihapus, maka akan dihapus permanen."
#, fuzzy
#~ msgid "Show external disk drives in the desktop"
#~ msgstr "Tampilkan folder pribadi di destop"
#, fuzzy
#~ msgid "Show the external drives"
#~ msgstr "Tampilkan folder pribadi di destop"
#, fuzzy
#~ msgid "Show network volumes"
#~ msgstr "Tampilkan pada Berkas"
#~ msgid "Enter file name…"
#~ msgstr "Masukkan nama berkas…"
#~ msgid "Folder names cannot contain “/”."
#~ msgstr "Nama folder tak boleh memuat \"/\"."
#~ msgid "A folder cannot be called “.”."
#~ msgstr "Sebuah folder tak bisa dinamai \".\"."
#~ msgid "A folder cannot be called “..”."
#~ msgstr "Sebuah folder tak bisa dinamai \"..\"."
#~ msgid "Folders with “.” at the beginning of their name are hidden."
#~ msgstr "Folder dengan \".\" di awal nama mereka disembunyikan."
#~ msgid "There is already a file or folder with that name."
#~ msgstr "Folder dengan nama itu sudah ada."
#~ msgid "Huge"
#~ msgstr "Sangat besar"
desktop-icons-ng-49.0.5-c32667693d0831c29e3ab3f7bfeb675ea1531a00/po/it.po 0000664 0000000 0000000 00000056227 15064747536 0023771 0 ustar 00root root 0000000 0000000 # Italian translation for desktop-icons.
# Copyright (C) 2019 desktop-icons's COPYRIGHT HOLDER
# This file is distributed under the same license as the desktop-icons package.
# Massimo Branchini , 2019.
# Milo Casagrande , 2019.
# Albano Battistella , 2022.
#
msgid ""
msgstr ""
"Project-Id-Version: desktop-icons master\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-06-29 16:52+0200\n"
"PO-Revision-Date: 2022-01-10 18:51+0100\n"
"Last-Translator: Milo Casagrande \n"
"Language-Team: Italian \n"
"Language: it\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Poedit 2.2.1\n"
#: app/askRenamePopup.js:49
msgid "Folder name"
msgstr "Nome della cartella"
#: app/askRenamePopup.js:49
msgid "File name"
msgstr "Nome del file"
#: app/askRenamePopup.js:57 app/autoAr.js:305 app/desktopManager.js:1002
msgid "OK"
msgstr "Ok"
#: app/askRenamePopup.js:57
msgid "Rename"
msgstr "Rinomina"
#: app/autoAr.js:88
msgid "AutoAr is not installed"
msgstr ""
#: app/autoAr.js:89
msgid ""
"To be able to work with compressed files, install file-roller and/or gir-1.2-"
"gnomeAutoAr"
msgstr ""
#: app/autoAr.js:224
#, fuzzy
msgid "Extracting files"
msgstr "Estrai qui"
#: app/autoAr.js:241
#, fuzzy
msgid "Compressing files"
msgstr "Comprimi {0} file"
#: app/autoAr.js:297 app/autoAr.js:636 app/desktopManager.js:1004
#: app/fileItemMenu.js:474
msgid "Cancel"
msgstr "Annulla"
#: app/autoAr.js:318 app/autoAr.js:619
msgid "Enter a password here"
msgstr ""
#: app/autoAr.js:359
msgid "Removing partial file '${outputFile}'"
msgstr ""
#: app/autoAr.js:378
msgid "Creating destination folder"
msgstr ""
#: app/autoAr.js:410
msgid "Extracting files into '${outputPath}'"
msgstr ""
#: app/autoAr.js:442
#, fuzzy
msgid "Extraction completed"
msgstr "Estrai qui"
#: app/autoAr.js:443
msgid "Extracting '${fullPathFile}' has been completed."
msgstr ""
#: app/autoAr.js:449
#, fuzzy
msgid "Extraction cancelled"
msgstr "Estrai qui"
#: app/autoAr.js:450
msgid "Extracting '${fullPathFile}' has been cancelled by the user."
msgstr ""
#: app/autoAr.js:460
msgid "Passphrase required for ${filename}"
msgstr ""
#: app/autoAr.js:463
msgid "Error during extraction"
msgstr ""
#: app/autoAr.js:492
msgid "Compressing files into '${outputFile}'"
msgstr ""
#: app/autoAr.js:505
msgid "Compression completed"
msgstr ""
#: app/autoAr.js:506
msgid "Compressing files into '${outputFile}' has been completed."
msgstr ""
#: app/autoAr.js:510 app/autoAr.js:517
msgid "Cancelled compression"
msgstr ""
#: app/autoAr.js:511
msgid "The output file '${outputFile}' already exists."
msgstr ""
#: app/autoAr.js:518
msgid "Compressing files into '${outputFile}' has been cancelled by the user."
msgstr ""
#: app/autoAr.js:521
msgid "Error during compression"
msgstr ""
#: app/autoAr.js:554
#, fuzzy
msgid "Create archive"
msgstr "Crea"
#: app/autoAr.js:579
#, fuzzy
msgid "Archive name"
msgstr "Nome del file"
#: app/autoAr.js:614
msgid "Password"
msgstr ""
#: app/autoAr.js:633
msgid "Create"
msgstr "Crea"
#: app/autoAr.js:712
msgid "Compatible with all operating systems."
msgstr ""
#: app/autoAr.js:718
msgid "Password protected .zip, must be installed on Windows and Mac."
msgstr ""
#: app/autoAr.js:724
msgid "Smaller archives but Linux and Mac only."
msgstr ""
#: app/autoAr.js:730
msgid "Smaller archives but must be installed on Windows and Mac."
msgstr ""
#: app/dbusUtils.js:69
msgid "\"${programName}\" is needed for Desktop Icons"
msgstr ""
#: app/dbusUtils.js:70
msgid ""
"For this functionality to work in Desktop Icons, you must install \"$"
"{programName}\" in your system."
msgstr ""
#: app/desktopIconsUtil.js:154
msgid "Command not found"
msgstr "Comando non trovato"
#: app/desktopManager.js:259
msgid "Nautilus File Manager not found"
msgstr "File Manager Nautilus non trovato"
#: app/desktopManager.js:260
msgid "The Nautilus File Manager is mandatory to work with Desktop Icons NG."
msgstr ""
"Il File Manager Nautilus è necessario per funzionare con Desktop Icons NG."
#: app/desktopManager.js:964
msgid "Clear Current Selection before New Search"
msgstr "Cancella la selezione corrente prima di una nuova ricerca"
#: app/desktopManager.js:1006
msgid "Find Files on Desktop"
msgstr "Trova i file sul desktop"
#: app/desktopManager.js:1074 app/desktopManager.js:1786
msgid "New Folder"
msgstr "Nuova cartella"
#: app/desktopManager.js:1078
msgid "New Document"
msgstr "Nuovo documento"
#: app/desktopManager.js:1083
msgid "Paste"
msgstr "Incolla"
#: app/desktopManager.js:1087
msgid "Undo"
msgstr "Annulla"
#: app/desktopManager.js:1091
msgid "Redo"
msgstr "Ripeti"
#: app/desktopManager.js:1097
msgid "Select All"
msgstr "Seleziona tutto"
#: app/desktopManager.js:1105
msgid "Show Desktop in Files"
msgstr "Mostra la scrivania in File"
#: app/desktopManager.js:1109 app/fileItemMenu.js:365
msgid "Open in Terminal"
msgstr "Apri in Terminale"
#: app/desktopManager.js:1115
msgid "Change Background…"
msgstr "Cambia lo sfondo…"
#: app/desktopManager.js:1126
msgid "Desktop Icons Settings"
msgstr "Impostazioni di Desktop Icons"
#: app/desktopManager.js:1139
msgid "Display Settings"
msgstr "Impostazioni dello schermo"
#: app/desktopManager.js:1799
#, fuzzy
msgid "Folder Creation Failed"
msgstr "Nome della cartella"
#: app/desktopManager.js:1800
#, fuzzy
msgid "Error while trying to create a Folder"
msgstr "Errore durante l'eliminazione dei file"
#: app/desktopManager.js:1836
msgid "Template Creation Failed"
msgstr ""
#: app/desktopManager.js:1837
msgid "Error while trying to create a Document"
msgstr ""
#: app/desktopManager.js:1845
msgid "Arrange Icons"
msgstr "Disponi icone"
#: app/desktopManager.js:1849
msgid "Arrange By..."
msgstr "Disponi per..."
#: app/desktopManager.js:1858
msgid "Keep Arranged..."
msgstr "Disposizione automatica..."
#: app/desktopManager.js:1862
msgid "Keep Stacked by type..."
msgstr "Mantieni inpilato per tipo..."
#: app/desktopManager.js:1867
msgid "Sort Home/Drives/Trash..."
msgstr "Ordina Home/Drives/Cestino..."
#: app/desktopManager.js:1873
msgid "Sort by Name"
msgstr "Ordina per Nome"
#: app/desktopManager.js:1875
msgid "Sort by Name Descending"
msgstr "Ordina per Nome discendente"
#: app/desktopManager.js:1878
msgid "Sort by Modified Time"
msgstr "Ordina per ora di modifica"
#: app/desktopManager.js:1881
msgid "Sort by Type"
msgstr "Dordina per tipo"
#: app/desktopManager.js:1884
msgid "Sort by Size"
msgstr "Ordina per dimensione"
#. * TRANSLATORS: when using a screen reader, this is the text read when a folder is
#. selected. Example: if a folder named "things" is selected, it will say "things Folder"
#: app/fileItem.js:64
msgid "${VisibleName} Folder"
msgstr ""
#. * TRANSLATORS: when using a screen reader, this is the text read when a normal file is
#. selected. Example: if a file named "my_picture.jpg" is selected, it will say "my_picture.jpg File"
#: app/fileItem.js:68
msgid "${VisibleName} File"
msgstr ""
#. TRANSLATORS: "Home" is the text that will be shown in the user's personal folder
#: app/fileItem.js:72 app/fileItem.js:203
msgid "Home"
msgstr "Home"
#. * TRANSLATORS: when using a screen reader, this is the text read when the trash folder is
#. selected.
#: app/fileItem.js:77
#, fuzzy
msgid "Trash"
msgstr "Svuota il cestino"
#. * TRANSLATORS: when using a screen reader, this is the text read when an external drive is
#. selected. Example: if a USB stick named "my_portable" is selected, it will say "my_portable Drive"
#: app/fileItem.js:82
msgid "${VisibleName} Drive"
msgstr ""
#. * TRANSLATORS: when using a screen reader, this is the text read when a stack is
#. selected. Example: if a stack named "pictures" is selected, it will say "pictures Stack"
#: app/fileItem.js:87
msgid "${VisibleName} Stack"
msgstr ""
#: app/fileItem.js:295
#, fuzzy
msgid "Error while reading Desktop file"
msgstr "Errore durante l'eliminazione dei file"
#: app/fileItem.js:337
msgid "Broken Link"
msgstr ""
#: app/fileItem.js:338
msgid "Can not open this File because it is a Broken Symlink"
msgstr ""
#: app/fileItem.js:370
#, fuzzy
msgid "Can't open the file"
msgstr "Esegui il file"
#: app/fileItem.js:396
#, fuzzy
msgid "Broken Desktop File"
msgstr "Mostra la scrivania in File"
#: app/fileItem.js:397
msgid ""
"This .desktop file has errors or points to a program without permissions. It "
"can not be executed.\n"
"\n"
"\tEdit the file to set the correct executable Program."
msgstr ""
#: app/fileItem.js:403
msgid "Invalid Permissions on Desktop File"
msgstr ""
#: app/fileItem.js:404
msgid ""
"This .desktop File has incorrect Permissions. Right Click to edit "
"Properties, then:\n"
msgstr ""
#: app/fileItem.js:406
msgid ""
"\n"
"Set Permissions, in \"Others Access\", \"Read Only\" or \"None\""
msgstr ""
#: app/fileItem.js:409
msgid ""
"\n"
"Enable option, \"Allow Executing File as a Program\""
msgstr ""
#: app/fileItem.js:417
msgid ""
"This .desktop file is not trusted, it can not be launched. To enable "
"launching, right-click, then:\n"
"\n"
"Enable \"Allow Launching\""
msgstr ""
#: app/fileItem.js:620
msgid "Failed to set execution flag"
msgstr ""
#: app/fileItem.js:632 app/fileItem.js:639
msgid "Could not apply discrete GPU environment"
msgstr ""
#: app/fileItem.js:668
msgid "Could not find discrete GPU data"
msgstr ""
#: app/fileItem.js:793
msgid "Failed to set metadata::trusted flag"
msgstr ""
#: app/fileItemMenu.js:143
msgid "Open All..."
msgstr "Apri tutto..."
#: app/fileItemMenu.js:143
msgid "Open"
msgstr "Apri"
#: app/fileItemMenu.js:160
msgid "Stack This Type"
msgstr "Impila questo tipo"
#: app/fileItemMenu.js:160
msgid "Unstack This Type"
msgstr "Disimpila questo tipo"
#: app/fileItemMenu.js:173
msgid "Scripts"
msgstr "Script"
#: app/fileItemMenu.js:178
msgid "Open All With Other Application..."
msgstr "Apri tutto con un'altra applicazione"
#: app/fileItemMenu.js:178
msgid "Open With Other Application"
msgstr "Apri con un'altra applicazione"
#: app/fileItemMenu.js:184
msgid "Launch using Dedicated Graphics Card"
msgstr "Esegui con la scheda grafica dedicata"
#: app/fileItemMenu.js:195
msgid "Run as a program"
msgstr ""
#: app/fileItemMenu.js:203
msgid "Cut"
msgstr "Taglia"
#: app/fileItemMenu.js:210
msgid "Copy"
msgstr "Copia"
#: app/fileItemMenu.js:218
msgid "Rename…"
msgstr "Rinomina…"
#: app/fileItemMenu.js:228
msgid "Move to Trash"
msgstr "Sposta nel cestino"
#: app/fileItemMenu.js:236
msgid "Delete permanently"
msgstr "Elimina definitivamente"
#: app/fileItemMenu.js:246
msgid "Don't Allow Launching"
msgstr "Non permettere l'esecuzione"
#: app/fileItemMenu.js:246
msgid "Allow Launching"
msgstr "Permetti l'esecuzione"
#: app/fileItemMenu.js:259
msgid "Empty Trash"
msgstr "Svuota il cestino"
#: app/fileItemMenu.js:272
msgid "Eject"
msgstr "Espelli"
#: app/fileItemMenu.js:280
msgid "Unmount"
msgstr "Smonta"
#: app/fileItemMenu.js:294 app/fileItemMenu.js:301
msgid "Extract Here"
msgstr "Estrai qui"
#: app/fileItemMenu.js:308
msgid "Extract To..."
msgstr "Estrai in..."
#: app/fileItemMenu.js:317
msgid "Send to..."
msgstr "Invia a..."
#: app/fileItemMenu.js:325
#, fuzzy
msgid "Compress {0} folder"
msgid_plural "Compress {0} folders"
msgstr[0] "Comprimi {0} file"
msgstr[1] "Comprimi {0} files"
#: app/fileItemMenu.js:332
msgid "Compress {0} file"
msgid_plural "Compress {0} files"
msgstr[0] "Comprimi {0} file"
msgstr[1] "Comprimi {0} files"
#: app/fileItemMenu.js:340
msgid "New Folder with {0} item"
msgid_plural "New Folder with {0} items"
msgstr[0] "Nuova cartella con {0} elemento"
msgstr[1] "Nuova cartella con {0} elementi"
#: app/fileItemMenu.js:351
msgid "Common Properties"
msgstr "Proprietà generali"
#: app/fileItemMenu.js:351
msgid "Properties"
msgstr "Proprietà"
#: app/fileItemMenu.js:358
msgid "Show All in Files"
msgstr "Mostra tutto in File"
#: app/fileItemMenu.js:358
msgid "Show in Files"
msgstr "Mostra in File"
#: app/fileItemMenu.js:449
#, fuzzy
msgid "No Extraction Folder"
msgstr "Estrai qui"
#: app/fileItemMenu.js:450
msgid "Unable to extract File, extraction Folder Does not Exist"
msgstr ""
#: app/fileItemMenu.js:470
msgid "Select Extract Destination"
msgstr "Seleziona la destinazione per l'estrazione"
#: app/fileItemMenu.js:475
msgid "Select"
msgstr "Seleziona"
#: app/fileItemMenu.js:516
msgid "Can not email a Directory"
msgstr "Non è possibile spedire per email una cartella"
#: app/fileItemMenu.js:517
msgid "Selection includes a Directory, compress the directory to a file first."
msgstr ""
"La selezione include una cartella, comprimere prima la cartella in un file."
#: app/notifyX11UnderWayland.js:37
msgid "Desktop Icons NG is running under X11Wayland"
msgstr ""
#: app/notifyX11UnderWayland.js:38
msgid ""
"It seems that you have your system configured to force GTK to use X11. This "
"works, but it's suboptimal. You should check your system configuration to "
"fix this."
msgstr ""
#: app/notifyX11UnderWayland.js:39 app/showErrorPopup.js:39
msgid "Close"
msgstr "Chiudi"
#: app/notifyX11UnderWayland.js:47
msgid "Don't show this message anymore."
msgstr ""
#: app/preferences.js:91
msgid "Settings"
msgstr "Impostazioni"
#: app/prefswindow.js:64
msgid "Size for the desktop icons"
msgstr "Dimensione delle icone della scrivania"
#: app/prefswindow.js:64
msgid "Tiny"
msgstr "Minuscola"
#: app/prefswindow.js:64
msgid "Small"
msgstr "Piccola"
#: app/prefswindow.js:64
msgid "Standard"
msgstr "Normale"
#: app/prefswindow.js:64
msgid "Large"
msgstr "Grande"
#: app/prefswindow.js:65
msgid "Show the personal folder in the desktop"
msgstr "Mostra la cartella personale sulla scrivania"
#: app/prefswindow.js:66
msgid "Show the trash icon in the desktop"
msgstr "Mostra il cestino sulla scrivania"
#: app/prefswindow.js:67 schemas/org.gnome.shell.extensions.ding.gschema.xml:45
msgid "Show external drives in the desktop"
msgstr "Mostra le periferiche esterne sulla scrivania"
#: app/prefswindow.js:68 schemas/org.gnome.shell.extensions.ding.gschema.xml:50
msgid "Show network drives in the desktop"
msgstr "Mostra le periferiche di rete sulla scrivania."
#: app/prefswindow.js:71
msgid "New icons alignment"
msgstr "Allineamento delle nuove icone"
#: app/prefswindow.js:73
msgid "Top-left corner"
msgstr "Angolo in alto a sinistra"
#: app/prefswindow.js:74
msgid "Top-right corner"
msgstr "Angolo in alto a destra"
#: app/prefswindow.js:75
msgid "Bottom-left corner"
msgstr "Angolo in basso a sinistra"
#: app/prefswindow.js:76
msgid "Bottom-right corner"
msgstr "Angolo in basso a destra"
#: app/prefswindow.js:78 schemas/org.gnome.shell.extensions.ding.gschema.xml:55
msgid "Add new drives to the opposite side of the screen"
msgstr "Aggiungi le nuove periferiche sul lato opposto dello schermo"
#: app/prefswindow.js:79
msgid "Highlight the drop place during Drag'n'Drop"
msgstr "Evidenzia il punto di rilascio durante il trascinamento"
#: app/prefswindow.js:80 schemas/org.gnome.shell.extensions.ding.gschema.xml:90
msgid "Use Nemo to open folders"
msgstr ""
#: app/prefswindow.js:82
msgid "Add an emblem to soft links"
msgstr ""
#: app/prefswindow.js:84
msgid "Use dark text in icon labels"
msgstr ""
#: app/prefswindow.js:91
msgid "Settings shared with Nautilus"
msgstr "Impostazioni condivise con Nautilus"
#: app/prefswindow.js:113
msgid "Click type for open files"
msgstr "Tipo di click per aprire i file"
#: app/prefswindow.js:113
msgid "Single click"
msgstr "Click singolo"
#: app/prefswindow.js:113
msgid "Double click"
msgstr "Doppio click"
#: app/prefswindow.js:114
msgid "Show hidden files"
msgstr "Mostra i file nascosti"
#: app/prefswindow.js:115
msgid "Show a context menu item to delete permanently"
msgstr "Mostra un elemento del menù contestuale per eliminare definitivamente"
#: app/prefswindow.js:120
msgid "Action to do when launching a program from the desktop"
msgstr "Azione da eseguire avviando un programma dalla scrivania"
#: app/prefswindow.js:121
msgid "Display the content of the file"
msgstr "Mostra il contenuto del file"
#: app/prefswindow.js:122
msgid "Launch the file"
msgstr "Esegui il file"
#: app/prefswindow.js:123
msgid "Ask what to do"
msgstr "Chiedi cosa fare"
#: app/prefswindow.js:129
msgid "Show image thumbnails"
msgstr "Mostra le anteprime delle immagini"
#: app/prefswindow.js:130
msgid "Never"
msgstr "Mai"
#: app/prefswindow.js:131
msgid "Local files only"
msgstr "Solo i file locali"
#: app/prefswindow.js:132
msgid "Always"
msgstr "Sempre"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:25
msgid "Icon size"
msgstr "Dimensione dell'icona"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:26
msgid "Set the size for the desktop icons."
msgstr "Imposta la dimensione delle icone della scrivania."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:30
msgid "Show personal folder"
msgstr "Mostra la cartella personale"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:31
msgid "Show the personal folder in the desktop."
msgstr "Mostra la cartella personale sulla scrivania."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:35
msgid "Show trash icon"
msgstr "Mostra il cestino"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:36
msgid "Show the trash icon in the desktop."
msgstr "Mostra il cestino sulla scrivania."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:40
msgid "New icons start corner"
msgstr "Angolo iniziale delle nuove icone"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:41
msgid "Set the corner from where the icons will start to be placed."
msgstr "Imposta l'angolo da cui le icone inizieranno ad essere posizionate"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:46
msgid "Show the disk drives connected to the computer."
msgstr "Mostra le periferiche connesse al computer"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:51
msgid "Show mounted network volumes in the desktop."
msgstr "Mostra i volumi di rete montati nella scrivania"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:56
msgid ""
"When adding drives and volumes to the desktop, add them to the opposite side "
"of the screen."
msgstr ""
"Aggiungendo periferiche e volumi alla scrivania, aggiungili sul lato opposto "
"dello schermo."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:60
msgid "Shows a rectangle in the destination place during DnD"
msgstr ""
"Mostra un rettangolo nel punto di destinazione durante il trascinamento"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:61
msgid ""
"When doing a Drag'n'Drop operation, marks the place in the grid where the "
"icon will be put with a semitransparent rectangle."
msgstr ""
"Durante un'operazione di trascinamento, segna il posto nella griglia dove "
"l'icona verrà ubicata con un rettangolo semitrasparente."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:65
msgid "Sort Special Folders - Home/Trash Drives."
msgstr "Ordina cartelle speciali - Home/Cestino."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:66
msgid ""
"When arranging Icons on desktop, to sort and change the position of the "
"Home, Trash and mounted Network or External Drives"
msgstr ""
"Quando si sistemano le icone sul desktop, ordina e cambia la posizione delle "
"cartelle Home, cestino e unità esterne o di rete montate"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:70
msgid "Keep Icons Arranged"
msgstr "Mantieni le icone disposte"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:71
msgid "Always keep Icons Arranged by the last arranged order"
msgstr "Mantieni sempre le icone disposte secondo l'ultimo ordine"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:75
msgid "Arrange Order"
msgstr "Disponi ordinamento"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:76
msgid "Icons Arranged by this property"
msgstr "Icone ordinate per questa proprietà"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:80
#, fuzzy
msgid "Keep Icons Stacked"
msgstr "Mantieni le icone disposte"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:81
msgid "Always keep Icons Stacked, Similar types are grouped"
msgstr "Mantieni sempre le icone impilate, i tipi simili sono raggruppati"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:85
msgid "Type of Files to not Stack"
msgstr "Tipo di file da non impilare"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:86
msgid "An Array of strings types, Don't Stack these types of files"
msgstr "Un array di tipi di stringhe, non impilare questi tipi di file"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:91
msgid "Use Nemo instead of Nautilus to open folders."
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:95
msgid "Add an emblem to links"
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:96
msgid "Add an emblem to allow to identify soft links."
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:100
msgid "Use black for label text"
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:101
msgid ""
"Paint the label text in black instead of white. Useful when using light "
"backgrounds."
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:105
msgid "Show a popup if running on X11Wayland"
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:106
msgid ""
"Whether DING should show a popup if it is running on X11Wayland, or the user "
"decided to not show it anymore."
msgstr ""
#, fuzzy
#~ msgid "Desktop icons"
#~ msgstr "Impostazioni di Desktop Icons"
#~ msgid ""
#~ "To configure Desktop Icons NG, do right-click in the desktop and choose "
#~ "the last item: 'Desktop Icons settings'"
#~ msgstr ""
#~ "Per configurare Desktop Icons NG, fai un click destro sulla scrivania e "
#~ "seleziona l'ultimo elemento: 'Impostazioni di Desktop Icons'"
#~ msgid "Do you want to run “{0}”, or display its contents?"
#~ msgstr "Vuoi eseguire “{0}”, o visualizzare il suo contenuto?"
#~ msgid "“{0}” is an executable text file."
#~ msgstr "“{0}” è un file di testo eseguibile."
#~ msgid "Execute in a terminal"
#~ msgstr "Esegui nel Terminale"
#~ msgid "Show"
#~ msgstr "Mostra"
#~ msgid "Execute"
#~ msgstr "Esegui"
#~ msgid "New folder"
#~ msgstr "Nuova cartella"
#~ msgid "Delete"
#~ msgstr "Elimina"
#~ msgid "Are you sure you want to permanently delete these items?"
#~ msgstr "Sei sicuro di voler eliminare definitivamente questi elementi?"
#~ msgid "If you delete an item, it will be permanently lost."
#~ msgstr "Se elimini un elemento, esso sarà perduto definitivamente."
#~ msgid "Show external disk drives in the desktop"
#~ msgstr "Mostra le periferiche esterne sulla scrivania"
#~ msgid "Show the external drives"
#~ msgstr "Mostra le periferiche esterne"
#~ msgid "Show network volumes"
#~ msgstr "Mostra i volumi di rete"
#~ msgid "Enter file name..."
#~ msgstr "Indicare un nome per il file..."
#~ msgid "Folder names cannot contain “/”."
#~ msgstr "I nomi di cartelle non possono contenere il carattere «/»"
#~ msgid "A folder cannot be called “.”."
#~ msgstr "Una cartella non può essere chiamata «.»."
#~ msgid "A folder cannot be called “..”."
#~ msgstr "Una cartella non può essere chiamata «..»."
#~ msgid "Folders with “.” at the beginning of their name are hidden."
#~ msgstr "Cartelle il cui nome inizia con «.» sono nascoste."
#~ msgid "There is already a file or folder with that name."
#~ msgstr "Esiste già un file o una cartella con quel nome."
desktop-icons-ng-49.0.5-c32667693d0831c29e3ab3f7bfeb675ea1531a00/po/ja.po 0000664 0000000 0000000 00000067077 15064747536 0023754 0 ustar 00root root 0000000 0000000 # Japanese translation for desktop-icons-ng.
# Copyright (C) 2021-2022 Desktop Icons NG's COPYRIGHT HOLDER
# This file is distributed under the same license as the desktop-icons-ng package.
# Hayao Yamada , 2021.
# Mitsuya Shibata , 2021.
# sicklylife , 2021-2022.
#
msgid ""
msgstr ""
"Project-Id-Version: desktop-icons master\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-06-29 16:52+0200\n"
"PO-Revision-Date: 2022-12-14 20:15+0900\n"
"Last-Translator: Yamada Hayao \n"
"Language-Team: Japanese\n"
"Language: ja\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
#: app/askRenamePopup.js:49
msgid "Folder name"
msgstr "フォルダー名"
#: app/askRenamePopup.js:49
msgid "File name"
msgstr "ファイル名"
#: app/askRenamePopup.js:57 app/autoAr.js:305 app/desktopManager.js:1002
msgid "OK"
msgstr "OK"
#: app/askRenamePopup.js:57
msgid "Rename"
msgstr "名前の変更"
#: app/autoAr.js:88
msgid "AutoAr is not installed"
msgstr "AutoArがインストールされていません"
#: app/autoAr.js:89
msgid ""
"To be able to work with compressed files, install file-roller and/or gir-1.2-"
"gnomeAutoAr"
msgstr ""
"圧縮ファイル上で動作させるには file rollerとgir-1.2-gnomeAutoArをインストール"
"してください"
#: app/autoAr.js:224
msgid "Extracting files"
msgstr "ファイルを展開しています"
#: app/autoAr.js:241
msgid "Compressing files"
msgstr "ファイルを圧縮しています"
#: app/autoAr.js:297 app/autoAr.js:636 app/desktopManager.js:1004
#: app/fileItemMenu.js:474
msgid "Cancel"
msgstr "キャンセル"
#: app/autoAr.js:318 app/autoAr.js:619
msgid "Enter a password here"
msgstr "パスワードを入力してください"
#: app/autoAr.js:359
#, fuzzy
msgid "Removing partial file '${outputFile}'"
msgstr "'${outputFile}' の一部を削除しています"
#: app/autoAr.js:378
msgid "Creating destination folder"
msgstr "行き先のフォルダを作成しています"
#: app/autoAr.js:410
msgid "Extracting files into '${outputPath}'"
msgstr "'${outputPath}' にファイルを展開しています"
#: app/autoAr.js:442
msgid "Extraction completed"
msgstr "展開が完了しました"
#: app/autoAr.js:443
msgid "Extracting '${fullPathFile}' has been completed."
msgstr "'${fullPathFile}' の展開が完了しました"
#: app/autoAr.js:449
msgid "Extraction cancelled"
msgstr "展開がキャンセルされました"
#: app/autoAr.js:450
msgid "Extracting '${fullPathFile}' has been cancelled by the user."
msgstr "'${fullPathFile}' の展開はユーザーによってキャンセルされました"
#: app/autoAr.js:460
msgid "Passphrase required for ${filename}"
msgstr "${filename} はパスワードが必要です"
#: app/autoAr.js:463
msgid "Error during extraction"
msgstr "展開中にエラーが発生しました"
#: app/autoAr.js:492
msgid "Compressing files into '${outputFile}'"
msgstr "ファイルを'${outputFile}'に圧縮しています"
#: app/autoAr.js:505
msgid "Compression completed"
msgstr "圧縮が完了しました"
#: app/autoAr.js:506
msgid "Compressing files into '${outputFile}' has been completed."
msgstr "'${outputFile}' への圧縮がキャンセルされました"
#: app/autoAr.js:510 app/autoAr.js:517
msgid "Cancelled compression"
msgstr "圧縮がキャンセルされました"
#: app/autoAr.js:511
msgid "The output file '${outputFile}' already exists."
msgstr "'${outputFile}' はすでに存在しています"
#: app/autoAr.js:518
msgid "Compressing files into '${outputFile}' has been cancelled by the user."
msgstr "'${outputFile}' への圧縮はユーザーによってキャンセルされました"
#: app/autoAr.js:521
msgid "Error during compression"
msgstr "圧縮中にエラーが発生しました"
#: app/autoAr.js:554
msgid "Create archive"
msgstr "アーカイブを作成"
#: app/autoAr.js:579
#, fuzzy
msgid "Archive name"
msgstr "ファイル名"
#: app/autoAr.js:614
msgid "Password"
msgstr "パスワード"
#: app/autoAr.js:633
msgid "Create"
msgstr "作成"
#: app/autoAr.js:712
msgid "Compatible with all operating systems."
msgstr "すべてのオペレーティングシステムとの互換性。"
#: app/autoAr.js:718
msgid "Password protected .zip, must be installed on Windows and Mac."
msgstr ""
#: app/autoAr.js:724
msgid "Smaller archives but Linux and Mac only."
msgstr "LinuxやMac専用のより小さいアーカイブ"
#: app/autoAr.js:730
msgid "Smaller archives but must be installed on Windows and Mac."
msgstr "WindowsやMac専用のより小さいアーカイブ"
#: app/dbusUtils.js:69
msgid "\"${programName}\" is needed for Desktop Icons"
msgstr "Desktop Icons には \"${programName}\" が必要です"
#: app/dbusUtils.js:70
msgid ""
"For this functionality to work in Desktop Icons, you must install \"$"
"{programName}\" in your system."
msgstr ""
"この機能を Desktop Icons で動作させるには、システムに \"${programName}\" をイ"
"ンストールする必要があります。"
#: app/desktopIconsUtil.js:154
msgid "Command not found"
msgstr "コマンドが見つかりません"
#: app/desktopManager.js:259
msgid "Nautilus File Manager not found"
msgstr "Nautilus ファイルマネージャーが見つかりません"
#: app/desktopManager.js:260
msgid "The Nautilus File Manager is mandatory to work with Desktop Icons NG."
msgstr "Desktop Icons NG の動作には Nautilus ファイルマネージャーが必要です。"
#: app/desktopManager.js:964
msgid "Clear Current Selection before New Search"
msgstr "新しく検索する前に現在の選択を解除してください"
#: app/desktopManager.js:1006
msgid "Find Files on Desktop"
msgstr "デスクトップ上のファイルを検索"
#: app/desktopManager.js:1074 app/desktopManager.js:1786
msgid "New Folder"
msgstr "新しいフォルダー"
#: app/desktopManager.js:1078
msgid "New Document"
msgstr "新しいドキュメント"
#: app/desktopManager.js:1083
msgid "Paste"
msgstr "貼り付け"
#: app/desktopManager.js:1087
msgid "Undo"
msgstr "元に戻す"
#: app/desktopManager.js:1091
msgid "Redo"
msgstr "やり直す"
#: app/desktopManager.js:1097
msgid "Select All"
msgstr "すべて選択"
#: app/desktopManager.js:1105
msgid "Show Desktop in Files"
msgstr "“ファイル”でデスクトップを表示する"
#: app/desktopManager.js:1109 app/fileItemMenu.js:365
msgid "Open in Terminal"
msgstr "端末で開く"
#: app/desktopManager.js:1115
msgid "Change Background…"
msgstr "背景を変更…"
#: app/desktopManager.js:1126
msgid "Desktop Icons Settings"
msgstr "Desktop Icons の設定"
#: app/desktopManager.js:1139
msgid "Display Settings"
msgstr "ディスプレイの設定"
#: app/desktopManager.js:1799
#, fuzzy
msgid "Folder Creation Failed"
msgstr "フォルダー名"
#: app/desktopManager.js:1800
#, fuzzy
msgid "Error while trying to create a Folder"
msgstr "ファイルの削除中にエラーが発生しました"
#: app/desktopManager.js:1836
msgid "Template Creation Failed"
msgstr ""
#: app/desktopManager.js:1837
msgid "Error while trying to create a Document"
msgstr ""
#: app/desktopManager.js:1845
msgid "Arrange Icons"
msgstr "アイコンを整列"
#: app/desktopManager.js:1849
msgid "Arrange By..."
msgstr "指定して整列..."
#: app/desktopManager.js:1858
msgid "Keep Arranged..."
msgstr "整列を維持..."
# デスクトップにあるファイルを疑似フォルダーにまとめる (グループ化する)
#: app/desktopManager.js:1862
msgid "Keep Stacked by type..."
msgstr "種類ごとに束ねる..."
#: app/desktopManager.js:1867
msgid "Sort Home/Drives/Trash..."
msgstr "ホーム/ドライブ/ゴミ箱を並べ替え..."
#: app/desktopManager.js:1873
msgid "Sort by Name"
msgstr "名前で並べ替え"
#: app/desktopManager.js:1875
msgid "Sort by Name Descending"
msgstr "名前で並べ替え (降順)"
#: app/desktopManager.js:1878
msgid "Sort by Modified Time"
msgstr "更新日で並べ替え"
#: app/desktopManager.js:1881
msgid "Sort by Type"
msgstr "種類で並べ替え"
#: app/desktopManager.js:1884
msgid "Sort by Size"
msgstr "サイズで並べ替え"
#. * TRANSLATORS: when using a screen reader, this is the text read when a folder is
#. selected. Example: if a folder named "things" is selected, it will say "things Folder"
#: app/fileItem.js:64
msgid "${VisibleName} Folder"
msgstr ""
#. * TRANSLATORS: when using a screen reader, this is the text read when a normal file is
#. selected. Example: if a file named "my_picture.jpg" is selected, it will say "my_picture.jpg File"
#: app/fileItem.js:68
msgid "${VisibleName} File"
msgstr ""
#. TRANSLATORS: "Home" is the text that will be shown in the user's personal folder
#: app/fileItem.js:72 app/fileItem.js:203
msgid "Home"
msgstr "ホーム"
#. * TRANSLATORS: when using a screen reader, this is the text read when the trash folder is
#. selected.
#: app/fileItem.js:77
#, fuzzy
msgid "Trash"
msgstr "ゴミ箱を空にする"
#. * TRANSLATORS: when using a screen reader, this is the text read when an external drive is
#. selected. Example: if a USB stick named "my_portable" is selected, it will say "my_portable Drive"
#: app/fileItem.js:82
msgid "${VisibleName} Drive"
msgstr ""
#. * TRANSLATORS: when using a screen reader, this is the text read when a stack is
#. selected. Example: if a stack named "pictures" is selected, it will say "pictures Stack"
#: app/fileItem.js:87
msgid "${VisibleName} Stack"
msgstr ""
#: app/fileItem.js:295
#, fuzzy
msgid "Error while reading Desktop file"
msgstr "ファイルの削除中にエラーが発生しました"
#: app/fileItem.js:337
msgid "Broken Link"
msgstr "壊れたリンク"
#: app/fileItem.js:338
msgid "Can not open this File because it is a Broken Symlink"
msgstr "シンボリックリンクのリンク先が存在しないためファイルを開けません"
#: app/fileItem.js:370
#, fuzzy
msgid "Can't open the file"
msgstr "ファイルを実行"
#: app/fileItem.js:396
msgid "Broken Desktop File"
msgstr "壊れたデスクトップファイル"
#: app/fileItem.js:397
msgid ""
"This .desktop file has errors or points to a program without permissions. It "
"can not be executed.\n"
"\n"
"\tEdit the file to set the correct executable Program."
msgstr ""
"エラーがある、または権限がないプログラムを参照する .desktop ファイルです。\n"
"\n"
"\tファイルを開いて正しい実行可能プログラムを設定してください。"
#: app/fileItem.js:403
msgid "Invalid Permissions on Desktop File"
msgstr "無効な権限のデスクトップファイル"
#: app/fileItem.js:404
msgid ""
"This .desktop File has incorrect Permissions. Right Click to edit "
"Properties, then:\n"
msgstr ""
"この .desktop ファイルの権限が正しくありません。右クリックしてプロパティを開"
"き、次のように変更してください:\n"
#: app/fileItem.js:406
msgid ""
"\n"
"Set Permissions, in \"Others Access\", \"Read Only\" or \"None\""
msgstr ""
"\n"
"\"その他のアクセス権\" を \"読み取り専用\" または \"なし\" に設定する"
#: app/fileItem.js:409
msgid ""
"\n"
"Enable option, \"Allow Executing File as a Program\""
msgstr ""
"\n"
"\"プログラムとして実行可能\" オプションを有効にする"
#: app/fileItem.js:417
msgid ""
"This .desktop file is not trusted, it can not be launched. To enable "
"launching, right-click, then:\n"
"\n"
"Enable \"Allow Launching\""
msgstr ""
"この .desktop ファイルを信用していないため起動できません。右クリックして次の"
"ように設定を変更してください:\n"
"\n"
"\"起動を許可する\" を有効にする"
#: app/fileItem.js:620
msgid "Failed to set execution flag"
msgstr ""
#: app/fileItem.js:632 app/fileItem.js:639
msgid "Could not apply discrete GPU environment"
msgstr ""
#: app/fileItem.js:668
msgid "Could not find discrete GPU data"
msgstr ""
#: app/fileItem.js:793
msgid "Failed to set metadata::trusted flag"
msgstr ""
#: app/fileItemMenu.js:143
msgid "Open All..."
msgstr "すべて開く..."
#: app/fileItemMenu.js:143
msgid "Open"
msgstr "開く"
# 疑似フォルダーの右クリックメニュー
#: app/fileItemMenu.js:160
msgid "Stack This Type"
msgstr "この種類を束ねる"
# 疑似フォルダーの右クリックメニュー
#: app/fileItemMenu.js:160
msgid "Unstack This Type"
msgstr "この種類を並べる"
#: app/fileItemMenu.js:173
msgid "Scripts"
msgstr "スクリプト"
#: app/fileItemMenu.js:178
msgid "Open All With Other Application..."
msgstr "別のアプリケーションですべて開く..."
#: app/fileItemMenu.js:178
msgid "Open With Other Application"
msgstr "別のアプリケーションで開く"
#: app/fileItemMenu.js:184
msgid "Launch using Dedicated Graphics Card"
msgstr "特定のグラフィックカードを使用して起動"
#: app/fileItemMenu.js:195
msgid "Run as a program"
msgstr "プログラムとして実行"
#: app/fileItemMenu.js:203
msgid "Cut"
msgstr "切り取り"
#: app/fileItemMenu.js:210
msgid "Copy"
msgstr "コピー"
#: app/fileItemMenu.js:218
msgid "Rename…"
msgstr "名前を変更…"
#: app/fileItemMenu.js:228
msgid "Move to Trash"
msgstr "ゴミ箱へ移動する"
#: app/fileItemMenu.js:236
msgid "Delete permanently"
msgstr "完全に削除"
#: app/fileItemMenu.js:246
msgid "Don't Allow Launching"
msgstr "起動を許可しない"
#: app/fileItemMenu.js:246
msgid "Allow Launching"
msgstr "起動を許可する"
#: app/fileItemMenu.js:259
msgid "Empty Trash"
msgstr "ゴミ箱を空にする"
#: app/fileItemMenu.js:272
msgid "Eject"
msgstr "取り出す"
#: app/fileItemMenu.js:280
msgid "Unmount"
msgstr "アンマウント"
#: app/fileItemMenu.js:294 app/fileItemMenu.js:301
msgid "Extract Here"
msgstr "ここで展開"
#: app/fileItemMenu.js:308
msgid "Extract To..."
msgstr "展開先..."
#: app/fileItemMenu.js:317
msgid "Send to..."
msgstr "送る..."
#: app/fileItemMenu.js:325
#, fuzzy
msgid "Compress {0} folder"
msgid_plural "Compress {0} folders"
msgstr[0] "{0} 個のファイルを圧縮"
#: app/fileItemMenu.js:332
msgid "Compress {0} file"
msgid_plural "Compress {0} files"
msgstr[0] "{0} 個のファイルを圧縮"
#: app/fileItemMenu.js:340
msgid "New Folder with {0} item"
msgid_plural "New Folder with {0} items"
msgstr[0] "{0} 個のアイテムを新しいフォルダーへ移動する"
#: app/fileItemMenu.js:351
msgid "Common Properties"
msgstr "共通のプロパティ"
#: app/fileItemMenu.js:351
msgid "Properties"
msgstr "プロパティ"
#: app/fileItemMenu.js:358
msgid "Show All in Files"
msgstr "“ファイル”ですべて表示する"
#: app/fileItemMenu.js:358
msgid "Show in Files"
msgstr "“ファイル”で表示する"
#: app/fileItemMenu.js:449
#, fuzzy
msgid "No Extraction Folder"
msgstr "展開が完了しました"
#: app/fileItemMenu.js:450
msgid "Unable to extract File, extraction Folder Does not Exist"
msgstr ""
#: app/fileItemMenu.js:470
msgid "Select Extract Destination"
msgstr "展開する宛先を選択"
#: app/fileItemMenu.js:475
msgid "Select"
msgstr "選択"
#: app/fileItemMenu.js:516
msgid "Can not email a Directory"
msgstr "ディレクトリをメールで送ることはできません"
#: app/fileItemMenu.js:517
msgid "Selection includes a Directory, compress the directory to a file first."
msgstr ""
"ディレクトリが選択されています。ディレクトリはファイルに圧縮してください。"
#: app/notifyX11UnderWayland.js:37
msgid "Desktop Icons NG is running under X11Wayland"
msgstr ""
#: app/notifyX11UnderWayland.js:38
msgid ""
"It seems that you have your system configured to force GTK to use X11. This "
"works, but it's suboptimal. You should check your system configuration to "
"fix this."
msgstr ""
#: app/notifyX11UnderWayland.js:39 app/showErrorPopup.js:39
msgid "Close"
msgstr "閉じる"
#: app/notifyX11UnderWayland.js:47
msgid "Don't show this message anymore."
msgstr ""
#: app/preferences.js:91
msgid "Settings"
msgstr "設定"
#: app/prefswindow.js:64
msgid "Size for the desktop icons"
msgstr "デスクトップアイコンのサイズ"
#: app/prefswindow.js:64
msgid "Tiny"
msgstr "とても小さい"
#: app/prefswindow.js:64
msgid "Small"
msgstr "小さい"
#: app/prefswindow.js:64
msgid "Standard"
msgstr "標準"
#: app/prefswindow.js:64
msgid "Large"
msgstr "大きい"
#: app/prefswindow.js:65
msgid "Show the personal folder in the desktop"
msgstr "デスクトップにホームフォルダーを表示する"
#: app/prefswindow.js:66
msgid "Show the trash icon in the desktop"
msgstr "デスクトップにゴミ箱を表示する"
#: app/prefswindow.js:67 schemas/org.gnome.shell.extensions.ding.gschema.xml:45
msgid "Show external drives in the desktop"
msgstr "デスクトップに外付けドライブを表示する"
#: app/prefswindow.js:68 schemas/org.gnome.shell.extensions.ding.gschema.xml:50
msgid "Show network drives in the desktop"
msgstr "デスクトップにネットワークドライブを表示する"
#: app/prefswindow.js:71
msgid "New icons alignment"
msgstr "新しいアイコンの配置位置"
#: app/prefswindow.js:73
msgid "Top-left corner"
msgstr "左上"
#: app/prefswindow.js:74
msgid "Top-right corner"
msgstr "右上"
#: app/prefswindow.js:75
msgid "Bottom-left corner"
msgstr "左下"
#: app/prefswindow.js:76
msgid "Bottom-right corner"
msgstr "右下"
#: app/prefswindow.js:78 schemas/org.gnome.shell.extensions.ding.gschema.xml:55
msgid "Add new drives to the opposite side of the screen"
msgstr "新しいドライブのアイコンは反対側に配置する"
#: app/prefswindow.js:79
msgid "Highlight the drop place during Drag'n'Drop"
msgstr "ドラッグアンドドロップ中にドロップ先を強調表示する"
#: app/prefswindow.js:80 schemas/org.gnome.shell.extensions.ding.gschema.xml:90
msgid "Use Nemo to open folders"
msgstr "Nemo を使用してフォルダーを開く"
#: app/prefswindow.js:82
msgid "Add an emblem to soft links"
msgstr "ソフトリンクにエンブレムを追加する"
#: app/prefswindow.js:84
msgid "Use dark text in icon labels"
msgstr "アイコンのラベルの文字を暗くする"
#: app/prefswindow.js:91
msgid "Settings shared with Nautilus"
msgstr "Nautilus と共有される設定"
#: app/prefswindow.js:113
msgid "Click type for open files"
msgstr "ファイルを開くときのクリック形式"
#: app/prefswindow.js:113
msgid "Single click"
msgstr "シングルクリック"
#: app/prefswindow.js:113
msgid "Double click"
msgstr "ダブルクリック"
#: app/prefswindow.js:114
msgid "Show hidden files"
msgstr "隠しファイルを表示する"
#: app/prefswindow.js:115
msgid "Show a context menu item to delete permanently"
msgstr "コンテキストメニューに“完全に削除”を表示する"
#: app/prefswindow.js:120
msgid "Action to do when launching a program from the desktop"
msgstr "デスクトップからプログラムを起動するときに実行するアクション"
#: app/prefswindow.js:121
msgid "Display the content of the file"
msgstr "ファイルの内容を表示"
#: app/prefswindow.js:122
msgid "Launch the file"
msgstr "ファイルを実行"
#: app/prefswindow.js:123
msgid "Ask what to do"
msgstr "どうするか確認"
#: app/prefswindow.js:129
msgid "Show image thumbnails"
msgstr "画像のサムネイルの表示"
#: app/prefswindow.js:130
msgid "Never"
msgstr "しない"
#: app/prefswindow.js:131
msgid "Local files only"
msgstr "ローカルファイルのみ"
#: app/prefswindow.js:132
msgid "Always"
msgstr "常に"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:25
msgid "Icon size"
msgstr "アイコンサイズ"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:26
msgid "Set the size for the desktop icons."
msgstr "デスクトップのアイコンサイズを設定します。"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:30
msgid "Show personal folder"
msgstr "ホームフォルダーを表示する"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:31
msgid "Show the personal folder in the desktop."
msgstr "デスクトップにホームフォルダーを表示します。"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:35
msgid "Show trash icon"
msgstr "ゴミ箱アイコンを表示する"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:36
msgid "Show the trash icon in the desktop."
msgstr "デスクトップにゴミ箱のアイコンを表示します。"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:40
msgid "New icons start corner"
msgstr "新しいアイコンの配置位置"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:41
msgid "Set the corner from where the icons will start to be placed."
msgstr "アイコンの配置の基準になるコーナーを設定します。"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:46
msgid "Show the disk drives connected to the computer."
msgstr "コンピューターに接続されているディスクドライブを表示します。"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:51
msgid "Show mounted network volumes in the desktop."
msgstr "マウント済みのネットワークボリュームをデスクトップに表示します。"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:56
msgid ""
"When adding drives and volumes to the desktop, add them to the opposite side "
"of the screen."
msgstr ""
"ドライブやボリュームのアイコンをデスクトップに追加する場合、通常の配置位置の"
"反対側に追加します。"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:60
msgid "Shows a rectangle in the destination place during DnD"
msgstr "ドラッグアンドドロップ中にドロップ先を枠で囲って強調する"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:61
msgid ""
"When doing a Drag'n'Drop operation, marks the place in the grid where the "
"icon will be put with a semitransparent rectangle."
msgstr ""
"ドラッグアンドドロップするときに、アイコンが配置されるドロップ先の場所を半透"
"明の四角形で強調表示します。"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:65
msgid "Sort Special Folders - Home/Trash Drives."
msgstr "ホームフォルダー/ゴミ箱/外付けドライブなどの特殊なフォルダーを並べ替え"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:66
msgid ""
"When arranging Icons on desktop, to sort and change the position of the "
"Home, Trash and mounted Network or External Drives"
msgstr ""
"デスクトップ上のアイコンを整列するときに、ホームフォルダー、ゴミ箱、マウント"
"されたネットワーク/外付けドライブのアイコンも整列の対象にします。"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:70
msgid "Keep Icons Arranged"
msgstr "アイコンの整列を維持する"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:71
msgid "Always keep Icons Arranged by the last arranged order"
msgstr "常に最後に選択した並び順でアイコンが整列されるようにします"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:75
msgid "Arrange Order"
msgstr "整列順"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:76
msgid "Icons Arranged by this property"
msgstr "このプロパティでアイコンを整列させます"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:80
msgid "Keep Icons Stacked"
msgstr "アイコンを束ねる"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:81
msgid "Always keep Icons Stacked, Similar types are grouped"
msgstr "常に同じ種類のアイコンを 1 つにまとめてグループ化します"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:85
msgid "Type of Files to not Stack"
msgstr "束ねないファイルの種類"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:86
msgid "An Array of strings types, Don't Stack these types of files"
msgstr "グループ化しない種類の文字列配列です"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:91
msgid "Use Nemo instead of Nautilus to open folders."
msgstr "Nautilus の代わりに Nemo でフォルダーを開きます。"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:95
msgid "Add an emblem to links"
msgstr "リンクにエンブレムを追加する"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:96
msgid "Add an emblem to allow to identify soft links."
msgstr "ソフトリンクにエンブレムを追加して判別しやすくします。"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:100
msgid "Use black for label text"
msgstr "ラベルのテキストの色に黒を使用する"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:101
msgid ""
"Paint the label text in black instead of white. Useful when using light "
"backgrounds."
msgstr ""
"ラベルのテキストを白色の代わりに黒色で描画します。明るい背景を使用している場"
"合に有用です。"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:105
msgid "Show a popup if running on X11Wayland"
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:106
msgid ""
"Whether DING should show a popup if it is running on X11Wayland, or the user "
"decided to not show it anymore."
msgstr ""
#, fuzzy
#~ msgid "Desktop icons"
#~ msgstr "Desktop Icons の設定"
#~ msgid "Add an emblem to .desktop files"
#~ msgstr ".desktop ファイルにエンブレムを追加する"
#~ msgid ""
#~ "To configure Desktop Icons NG, do right-click in the desktop and choose "
#~ "the last item: 'Desktop Icons settings'"
#~ msgstr ""
#~ "Desktop Icons NG を設定するには、デスクトップを右クリックし、メニューの末"
#~ "尾にある“Desktop Icons の設定”をクリックしてください"
#~ msgid "Add an emblem to executable .desktop files"
#~ msgstr "実行可能な .desktop ファイルにエンブレムを追加する"
#~ msgid "Add an emblem to .desktop files that have permission to be launched."
#~ msgstr "起動する権限のある .desktop ファイルにエンブレムを追加します。"
#~ msgid "Do you want to run “{0}”, or display its contents?"
#~ msgstr "“{0}”を実行するか内容を表示するか選択してください"
#~ msgid "“{0}” is an executable text file."
#~ msgstr "“{0}”は実行可能なテキストファイルです。"
#~ msgid "Execute in a terminal"
#~ msgstr "端末で実行"
#~ msgid "Show"
#~ msgstr "表示"
#~ msgid "Execute"
#~ msgstr "実行"
#~ msgid "New folder"
#~ msgstr "新しいフォルダー"
#~ msgid "Delete"
#~ msgstr "削除"
#~ msgid "Are you sure you want to permanently delete these items?"
#~ msgstr "これらのアイテムを完全に削除しますか?"
#~ msgid "If you delete an item, it will be permanently lost."
#~ msgstr "ここでアイテムを削除すると元に戻すことはできません。"
#~ msgid "Enter file name…"
#~ msgstr "ファイル名を入力してください…"
#~ msgid "Folder names cannot contain “/”."
#~ msgstr "“/”は、フォルダー名に含められません。"
#~ msgid "A folder cannot be called “.”."
#~ msgstr "“.”という名前をフォルダーに付けられません。"
#~ msgid "A folder cannot be called “..”."
#~ msgstr "“..”という名前をフォルダーに付けられません。"
#~ msgid "Folders with “.” at the beginning of their name are hidden."
#~ msgstr "名前が“.”で始まるフォルダーは、隠しフォルダーになります。"
#~ msgid "There is already a file or folder with that name."
#~ msgstr "その名前のファイルかフォルダーがすでに存在します。"
desktop-icons-ng-49.0.5-c32667693d0831c29e3ab3f7bfeb675ea1531a00/po/ko.po 0000664 0000000 0000000 00000057534 15064747536 0023770 0 ustar 00root root 0000000 0000000 # Korean translation for desktop-icons.
# Copyright (C) 2021 desktop-icons's COPYRIGHT HOLDER
# This file is distributed under the same license as the desktop-icons package.
# JGJeong , 2021.
# Junghee Lee , 2022.
#
msgid ""
msgstr ""
"Project-Id-Version: desktop-icons master\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-06-29 16:52+0200\n"
"PO-Revision-Date: 2022-04-23 10:08+0900\n"
"Last-Translator: 이정희 \n"
"Language-Team: Korean \n"
"Language: ko\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: Poedit 3.0.1\n"
#: app/askRenamePopup.js:49
msgid "Folder name"
msgstr "폴더 이름"
#: app/askRenamePopup.js:49
msgid "File name"
msgstr "파일 이름"
#: app/askRenamePopup.js:57 app/autoAr.js:305 app/desktopManager.js:1002
msgid "OK"
msgstr "확인"
#: app/askRenamePopup.js:57
msgid "Rename"
msgstr "이름 바꾸기"
#: app/autoAr.js:88
msgid "AutoAr is not installed"
msgstr ""
#: app/autoAr.js:89
msgid ""
"To be able to work with compressed files, install file-roller and/or gir-1.2-"
"gnomeAutoAr"
msgstr ""
#: app/autoAr.js:224
#, fuzzy
msgid "Extracting files"
msgstr "여기 풀기"
#: app/autoAr.js:241
#, fuzzy
msgid "Compressing files"
msgstr "{0}개 파일 압축하기"
#: app/autoAr.js:297 app/autoAr.js:636 app/desktopManager.js:1004
#: app/fileItemMenu.js:474
msgid "Cancel"
msgstr "취소"
#: app/autoAr.js:318 app/autoAr.js:619
msgid "Enter a password here"
msgstr ""
#: app/autoAr.js:359
msgid "Removing partial file '${outputFile}'"
msgstr ""
#: app/autoAr.js:378
msgid "Creating destination folder"
msgstr ""
#: app/autoAr.js:410
msgid "Extracting files into '${outputPath}'"
msgstr ""
#: app/autoAr.js:442
#, fuzzy
msgid "Extraction completed"
msgstr "여기 풀기"
#: app/autoAr.js:443
msgid "Extracting '${fullPathFile}' has been completed."
msgstr ""
#: app/autoAr.js:449
#, fuzzy
msgid "Extraction cancelled"
msgstr "여기 풀기"
#: app/autoAr.js:450
msgid "Extracting '${fullPathFile}' has been cancelled by the user."
msgstr ""
#: app/autoAr.js:460
msgid "Passphrase required for ${filename}"
msgstr ""
#: app/autoAr.js:463
msgid "Error during extraction"
msgstr ""
#: app/autoAr.js:492
msgid "Compressing files into '${outputFile}'"
msgstr ""
#: app/autoAr.js:505
msgid "Compression completed"
msgstr ""
#: app/autoAr.js:506
msgid "Compressing files into '${outputFile}' has been completed."
msgstr ""
#: app/autoAr.js:510 app/autoAr.js:517
msgid "Cancelled compression"
msgstr ""
#: app/autoAr.js:511
msgid "The output file '${outputFile}' already exists."
msgstr ""
#: app/autoAr.js:518
msgid "Compressing files into '${outputFile}' has been cancelled by the user."
msgstr ""
#: app/autoAr.js:521
msgid "Error during compression"
msgstr ""
#: app/autoAr.js:554
msgid "Create archive"
msgstr ""
#: app/autoAr.js:579
#, fuzzy
msgid "Archive name"
msgstr "파일 이름"
#: app/autoAr.js:614
msgid "Password"
msgstr ""
#: app/autoAr.js:633
msgid "Create"
msgstr ""
#: app/autoAr.js:712
msgid "Compatible with all operating systems."
msgstr ""
#: app/autoAr.js:718
msgid "Password protected .zip, must be installed on Windows and Mac."
msgstr ""
#: app/autoAr.js:724
msgid "Smaller archives but Linux and Mac only."
msgstr ""
#: app/autoAr.js:730
msgid "Smaller archives but must be installed on Windows and Mac."
msgstr ""
#: app/dbusUtils.js:69
msgid "\"${programName}\" is needed for Desktop Icons"
msgstr "\"${programName}\"은(는) 바탕 화면 아이콘에 필요합니다"
#: app/dbusUtils.js:70
msgid ""
"For this functionality to work in Desktop Icons, you must install \"$"
"{programName}\" in your system."
msgstr ""
"이 기능이 바탕 화면 아이콘에서 작동하려면 시스템에 \"${programName}\"을(를) "
"설치해야 합니다."
#: app/desktopIconsUtil.js:154
msgid "Command not found"
msgstr "명령을 찾을 수 없습니다"
#: app/desktopManager.js:259
msgid "Nautilus File Manager not found"
msgstr "노틸러스 파일 관리자를 찾을 수 없습니다"
#: app/desktopManager.js:260
msgid "The Nautilus File Manager is mandatory to work with Desktop Icons NG."
msgstr "노틸러스 파일 관리자는 Desktop Icons NG로 작업하는 데 필수입니다."
#: app/desktopManager.js:964
msgid "Clear Current Selection before New Search"
msgstr "새 검색 전에 현재 선택 지우기"
#: app/desktopManager.js:1006
msgid "Find Files on Desktop"
msgstr "데스크탑에서 파일 찾기"
#: app/desktopManager.js:1074 app/desktopManager.js:1786
msgid "New Folder"
msgstr "새 폴더"
#: app/desktopManager.js:1078
msgid "New Document"
msgstr "새 문서"
#: app/desktopManager.js:1083
msgid "Paste"
msgstr "붙여넣기"
#: app/desktopManager.js:1087
msgid "Undo"
msgstr "실행 취소"
#: app/desktopManager.js:1091
msgid "Redo"
msgstr "다시 실행"
#: app/desktopManager.js:1097
msgid "Select All"
msgstr "모두 선택"
#: app/desktopManager.js:1105
msgid "Show Desktop in Files"
msgstr "파일에 바탕화면 표시"
#: app/desktopManager.js:1109 app/fileItemMenu.js:365
msgid "Open in Terminal"
msgstr "터미널로 열기"
#: app/desktopManager.js:1115
msgid "Change Background…"
msgstr "배경화면 변경…"
#: app/desktopManager.js:1126
msgid "Desktop Icons Settings"
msgstr "바탕화면 아이콘 설정"
#: app/desktopManager.js:1139
msgid "Display Settings"
msgstr "화면 설정"
#: app/desktopManager.js:1799
#, fuzzy
msgid "Folder Creation Failed"
msgstr "폴더 이름"
#: app/desktopManager.js:1800
#, fuzzy
msgid "Error while trying to create a Folder"
msgstr "파일 삭제 중 오류가 발생하였습니다."
#: app/desktopManager.js:1836
msgid "Template Creation Failed"
msgstr ""
#: app/desktopManager.js:1837
msgid "Error while trying to create a Document"
msgstr ""
#: app/desktopManager.js:1845
msgid "Arrange Icons"
msgstr "아이콘 정렬"
#: app/desktopManager.js:1849
msgid "Arrange By..."
msgstr "정렬 기준..."
#: app/desktopManager.js:1858
msgid "Keep Arranged..."
msgstr "정렬 유지..."
#: app/desktopManager.js:1862
msgid "Keep Stacked by type..."
msgstr "유형별로 스택됨 유지..."
#: app/desktopManager.js:1867
msgid "Sort Home/Drives/Trash..."
msgstr "집/드라이브/휴지통 정렬..."
#: app/desktopManager.js:1873
msgid "Sort by Name"
msgstr "이름순으로 정렬"
#: app/desktopManager.js:1875
msgid "Sort by Name Descending"
msgstr "이름 내림차순으로 정렬"
#: app/desktopManager.js:1878
msgid "Sort by Modified Time"
msgstr "수정된 시간순으로 정렬"
#: app/desktopManager.js:1881
msgid "Sort by Type"
msgstr "유형순으로 정렬"
#: app/desktopManager.js:1884
msgid "Sort by Size"
msgstr "크기순으로 정렬"
#. * TRANSLATORS: when using a screen reader, this is the text read when a folder is
#. selected. Example: if a folder named "things" is selected, it will say "things Folder"
#: app/fileItem.js:64
msgid "${VisibleName} Folder"
msgstr ""
#. * TRANSLATORS: when using a screen reader, this is the text read when a normal file is
#. selected. Example: if a file named "my_picture.jpg" is selected, it will say "my_picture.jpg File"
#: app/fileItem.js:68
msgid "${VisibleName} File"
msgstr ""
#. TRANSLATORS: "Home" is the text that will be shown in the user's personal folder
#: app/fileItem.js:72 app/fileItem.js:203
msgid "Home"
msgstr "홈"
#. * TRANSLATORS: when using a screen reader, this is the text read when the trash folder is
#. selected.
#: app/fileItem.js:77
#, fuzzy
msgid "Trash"
msgstr "휴지통 비우기"
#. * TRANSLATORS: when using a screen reader, this is the text read when an external drive is
#. selected. Example: if a USB stick named "my_portable" is selected, it will say "my_portable Drive"
#: app/fileItem.js:82
msgid "${VisibleName} Drive"
msgstr ""
#. * TRANSLATORS: when using a screen reader, this is the text read when a stack is
#. selected. Example: if a stack named "pictures" is selected, it will say "pictures Stack"
#: app/fileItem.js:87
msgid "${VisibleName} Stack"
msgstr ""
#: app/fileItem.js:295
#, fuzzy
msgid "Error while reading Desktop file"
msgstr "파일 삭제 중 오류가 발생하였습니다."
#: app/fileItem.js:337
msgid "Broken Link"
msgstr "깨진 링크"
#: app/fileItem.js:338
msgid "Can not open this File because it is a Broken Symlink"
msgstr "이 파일은 손상된 심볼릭링크이므로 열 수 없습니다"
#: app/fileItem.js:370
#, fuzzy
msgid "Can't open the file"
msgstr "파일 실행"
#: app/fileItem.js:396
msgid "Broken Desktop File"
msgstr "깨진 바탕화면 파일"
#: app/fileItem.js:397
msgid ""
"This .desktop file has errors or points to a program without permissions. It "
"can not be executed.\n"
"\n"
"\tEdit the file to set the correct executable Program."
msgstr ""
"이 .desktop 파일에 오류가 있거나 권한이 없는 프로그램이 있습니다. 실행할 수 "
"없습니다.\n"
"\n"
"파일을 편집하여 올바른 실행 프로그램을 설정합니다."
#: app/fileItem.js:403
msgid "Invalid Permissions on Desktop File"
msgstr "바탕화면 파일에 대한 잘못된 권한"
#: app/fileItem.js:404
msgid ""
"This .desktop File has incorrect Permissions. Right Click to edit "
"Properties, then:\n"
msgstr ""
"이 .desktop 파일에 잘못된 권한이 있습니다. 마우스 오른쪽 버튼을 클릭하여 속성"
"을 편집 한 다음:\n"
#: app/fileItem.js:406
msgid ""
"\n"
"Set Permissions, in \"Others Access\", \"Read Only\" or \"None\""
msgstr ""
"\n"
"\"다른 접근\", \"읽기 전용\" 또는 \"없음\"에서 권한 설정"
#: app/fileItem.js:409
msgid ""
"\n"
"Enable option, \"Allow Executing File as a Program\""
msgstr ""
"\n"
"활성화 옵션, \"파일을 프로그램으로 실행하기 허용\""
#: app/fileItem.js:417
msgid ""
"This .desktop file is not trusted, it can not be launched. To enable "
"launching, right-click, then:\n"
"\n"
"Enable \"Allow Launching\""
msgstr ""
"이 .desktop 파일은 신뢰할 수 없으며 실행할 수 없습니다. 시작을 활성화하려면 "
"마우스 오른쪽 버튼을 클릭하고 다음을 수행합니다.\n"
"\n"
"\"시작하기 허용\" 활성화"
#: app/fileItem.js:620
msgid "Failed to set execution flag"
msgstr ""
#: app/fileItem.js:632 app/fileItem.js:639
msgid "Could not apply discrete GPU environment"
msgstr ""
#: app/fileItem.js:668
msgid "Could not find discrete GPU data"
msgstr ""
#: app/fileItem.js:793
msgid "Failed to set metadata::trusted flag"
msgstr ""
#: app/fileItemMenu.js:143
msgid "Open All..."
msgstr "모두 열기…"
#: app/fileItemMenu.js:143
msgid "Open"
msgstr "열기"
#: app/fileItemMenu.js:160
msgid "Stack This Type"
msgstr "이 유형 스택"
#: app/fileItemMenu.js:160
msgid "Unstack This Type"
msgstr "이 유형 스택 해제"
#: app/fileItemMenu.js:173
msgid "Scripts"
msgstr "스크립트"
#: app/fileItemMenu.js:178
msgid "Open All With Other Application..."
msgstr "다른 프로그램으로 모두 열기…"
#: app/fileItemMenu.js:178
msgid "Open With Other Application"
msgstr "다른 프로그램으로 열기"
#: app/fileItemMenu.js:184
msgid "Launch using Dedicated Graphics Card"
msgstr "전용 그래픽 카드를 사용하여 실행"
#: app/fileItemMenu.js:195
msgid "Run as a program"
msgstr "프로그램으로 실행"
#: app/fileItemMenu.js:203
msgid "Cut"
msgstr "잘라내기"
#: app/fileItemMenu.js:210
msgid "Copy"
msgstr "복사하기"
#: app/fileItemMenu.js:218
msgid "Rename…"
msgstr "이름 바꾸기…"
#: app/fileItemMenu.js:228
msgid "Move to Trash"
msgstr "휴지통으로 옮기기"
#: app/fileItemMenu.js:236
msgid "Delete permanently"
msgstr "영구 삭제"
#: app/fileItemMenu.js:246
msgid "Don't Allow Launching"
msgstr "실행을 허용하지 않음"
#: app/fileItemMenu.js:246
msgid "Allow Launching"
msgstr "실행 허용"
#: app/fileItemMenu.js:259
msgid "Empty Trash"
msgstr "휴지통 비우기"
#: app/fileItemMenu.js:272
msgid "Eject"
msgstr "꺼내기"
#: app/fileItemMenu.js:280
msgid "Unmount"
msgstr "마운트 해제"
#: app/fileItemMenu.js:294 app/fileItemMenu.js:301
msgid "Extract Here"
msgstr "여기 풀기"
#: app/fileItemMenu.js:308
msgid "Extract To..."
msgstr "다른 위치에 풀기…"
#: app/fileItemMenu.js:317
msgid "Send to..."
msgstr "다음으로 보내기…"
#: app/fileItemMenu.js:325
#, fuzzy
msgid "Compress {0} folder"
msgid_plural "Compress {0} folders"
msgstr[0] "{0}개 파일 압축하기"
#: app/fileItemMenu.js:332
msgid "Compress {0} file"
msgid_plural "Compress {0} files"
msgstr[0] "{0}개 파일 압축하기"
#: app/fileItemMenu.js:340
msgid "New Folder with {0} item"
msgid_plural "New Folder with {0} items"
msgstr[0] "{0}개 파일 새 폴더로 이동"
#: app/fileItemMenu.js:351
msgid "Common Properties"
msgstr "공통 속성"
#: app/fileItemMenu.js:351
msgid "Properties"
msgstr "속성"
#: app/fileItemMenu.js:358
msgid "Show All in Files"
msgstr "파일에 모두 표시"
#: app/fileItemMenu.js:358
msgid "Show in Files"
msgstr "파일로 표시"
#: app/fileItemMenu.js:449
#, fuzzy
msgid "No Extraction Folder"
msgstr "여기 풀기"
#: app/fileItemMenu.js:450
msgid "Unable to extract File, extraction Folder Does not Exist"
msgstr ""
#: app/fileItemMenu.js:470
msgid "Select Extract Destination"
msgstr "대상 압축풀기 선택"
#: app/fileItemMenu.js:475
msgid "Select"
msgstr "선택"
#: app/fileItemMenu.js:516
msgid "Can not email a Directory"
msgstr "디렉터리는 이메일로 보낼 수 없습니다"
#: app/fileItemMenu.js:517
msgid "Selection includes a Directory, compress the directory to a file first."
msgstr "선택 파일 중 디렉터리가 포함되어 있어, 먼저 파일로 압축이 필요합니다."
#: app/notifyX11UnderWayland.js:37
msgid "Desktop Icons NG is running under X11Wayland"
msgstr ""
#: app/notifyX11UnderWayland.js:38
msgid ""
"It seems that you have your system configured to force GTK to use X11. This "
"works, but it's suboptimal. You should check your system configuration to "
"fix this."
msgstr ""
#: app/notifyX11UnderWayland.js:39 app/showErrorPopup.js:39
msgid "Close"
msgstr "닫기"
#: app/notifyX11UnderWayland.js:47
msgid "Don't show this message anymore."
msgstr ""
#: app/preferences.js:91
msgid "Settings"
msgstr "설정"
#: app/prefswindow.js:64
msgid "Size for the desktop icons"
msgstr "바탕화면 아이콘 크기"
#: app/prefswindow.js:64
msgid "Tiny"
msgstr "매우 작은 아이콘"
#: app/prefswindow.js:64
msgid "Small"
msgstr "작은 아이콘"
#: app/prefswindow.js:64
msgid "Standard"
msgstr "중간 아이콘"
#: app/prefswindow.js:64
msgid "Large"
msgstr "큰 아이콘"
#: app/prefswindow.js:65
msgid "Show the personal folder in the desktop"
msgstr "바탕화면에 개인 폴더 표시"
#: app/prefswindow.js:66
msgid "Show the trash icon in the desktop"
msgstr "바탕화면에 휴지통 표시"
#: app/prefswindow.js:67 schemas/org.gnome.shell.extensions.ding.gschema.xml:45
msgid "Show external drives in the desktop"
msgstr "바탕화면에 외장 드라이브 표시"
#: app/prefswindow.js:68 schemas/org.gnome.shell.extensions.ding.gschema.xml:50
msgid "Show network drives in the desktop"
msgstr "바탕화면에 네트워크 드라이브 표시"
#: app/prefswindow.js:71
msgid "New icons alignment"
msgstr "새 아이콘 정렬 방식"
#: app/prefswindow.js:73
msgid "Top-left corner"
msgstr "좌측 상단부터"
#: app/prefswindow.js:74
msgid "Top-right corner"
msgstr "우측 상단부터"
#: app/prefswindow.js:75
msgid "Bottom-left corner"
msgstr "좌측 하단부터"
#: app/prefswindow.js:76
msgid "Bottom-right corner"
msgstr "우측 하단부터"
#: app/prefswindow.js:78 schemas/org.gnome.shell.extensions.ding.gschema.xml:55
msgid "Add new drives to the opposite side of the screen"
msgstr "새 드라이브를 스크린 반대편에 추가"
#: app/prefswindow.js:79
msgid "Highlight the drop place during Drag'n'Drop"
msgstr "드래그 앤 드랍 시 드랍 위치 강조 효과"
#: app/prefswindow.js:80 schemas/org.gnome.shell.extensions.ding.gschema.xml:90
msgid "Use Nemo to open folders"
msgstr "폴더를 여는 Nemo 사용"
#: app/prefswindow.js:82
msgid "Add an emblem to soft links"
msgstr "소프트 링크에 엠블럼 추가"
#: app/prefswindow.js:84
msgid "Use dark text in icon labels"
msgstr "아이콘 레이블에 어두운 텍스트 사용"
#: app/prefswindow.js:91
msgid "Settings shared with Nautilus"
msgstr "노틸러스와 설정 공유"
#: app/prefswindow.js:113
msgid "Click type for open files"
msgstr "파일 열기 시 클릭 유형"
#: app/prefswindow.js:113
msgid "Single click"
msgstr "한 번 클릭"
#: app/prefswindow.js:113
msgid "Double click"
msgstr "두 번 클릭"
#: app/prefswindow.js:114
msgid "Show hidden files"
msgstr "숨김 파일 표시"
#: app/prefswindow.js:115
msgid "Show a context menu item to delete permanently"
msgstr "영구적으로 삭제할 컨텍스트 메뉴 항목 표시"
#: app/prefswindow.js:120
msgid "Action to do when launching a program from the desktop"
msgstr "바탕화면에서 프로그램을 실행할 때 수행할 작업"
#: app/prefswindow.js:121
msgid "Display the content of the file"
msgstr "파일의 내용 표시"
#: app/prefswindow.js:122
msgid "Launch the file"
msgstr "파일 실행"
#: app/prefswindow.js:123
msgid "Ask what to do"
msgstr "어떤 작업 수행할 지 선택"
#: app/prefswindow.js:129
msgid "Show image thumbnails"
msgstr "이미지 마중그림 표시"
#: app/prefswindow.js:130
msgid "Never"
msgstr "보지 않음"
#: app/prefswindow.js:131
msgid "Local files only"
msgstr "로컬 파일만"
#: app/prefswindow.js:132
msgid "Always"
msgstr "항상"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:25
msgid "Icon size"
msgstr "아이콘 크기"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:26
msgid "Set the size for the desktop icons."
msgstr "바탕 화면 아이콘의 크기를 지정합니다."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:30
msgid "Show personal folder"
msgstr "개인 폴더 표시"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:31
msgid "Show the personal folder in the desktop."
msgstr "바탕화면에 개인 폴더를 표시합니다."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:35
msgid "Show trash icon"
msgstr "휴지통 아이콘 표시"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:36
msgid "Show the trash icon in the desktop."
msgstr "바탕화면에 휴지통 아이콘을 표시합니다."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:40
msgid "New icons start corner"
msgstr "새 아이콘 배치할 코너"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:41
msgid "Set the corner from where the icons will start to be placed."
msgstr "아이콘 배치를 시작할 모서리를 설정합니다."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:46
msgid "Show the disk drives connected to the computer."
msgstr "컴퓨터에 연결된 디스크 드라이브를 표시합니다."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:51
msgid "Show mounted network volumes in the desktop."
msgstr "데스크탑에 탑재된 네트워크 볼륨을 표시합니다."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:56
msgid ""
"When adding drives and volumes to the desktop, add them to the opposite side "
"of the screen."
msgstr "바탕화면에 드라이브 및 볼륨을 추가할 때 화면의 반대쪽에 추가합니다."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:60
msgid "Shows a rectangle in the destination place during DnD"
msgstr "끌어서 놓는 동안 대상 위치에 사격형 표시"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:61
msgid ""
"When doing a Drag'n'Drop operation, marks the place in the grid where the "
"icon will be put with a semitransparent rectangle."
msgstr ""
"끌어서 놓기 작업을 수행할 때, 격자에서 아이콘이 배치될 위치를 반투명 사각형"
"을 표시합니다."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:65
msgid "Sort Special Folders - Home/Trash Drives."
msgstr "특수 폴더 정렬 - 홈/휴지통 드라이브 입니다."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:66
msgid ""
"When arranging Icons on desktop, to sort and change the position of the "
"Home, Trash and mounted Network or External Drives"
msgstr ""
"바탕화면에 아이콘을 정렬할 때 홈, 휴지통 및 마운트된 네트워크 또는 외장 드라"
"이브의 위치를 정렬하고 변경합니다"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:70
msgid "Keep Icons Arranged"
msgstr "아이콘 정렬 유지"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:71
msgid "Always keep Icons Arranged by the last arranged order"
msgstr "항상 마지막 정렬 순서로 아이콘 정렬 유지"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:75
msgid "Arrange Order"
msgstr "순서 정렬"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:76
msgid "Icons Arranged by this property"
msgstr "이 속성으로 정렬된 아이콘"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:80
msgid "Keep Icons Stacked"
msgstr "아이콘 스택됨 유지"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:81
msgid "Always keep Icons Stacked, Similar types are grouped"
msgstr "항상 아이콘 스택됨 유지, 유사한 유형이 그룹화됩니다"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:85
msgid "Type of Files to not Stack"
msgstr "스택하지 않을 파일 유형"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:86
msgid "An Array of strings types, Don't Stack these types of files"
msgstr "문자열 유형의 배열, 이러한 유형의 파일을 스택하지 않습니다"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:91
msgid "Use Nemo instead of Nautilus to open folders."
msgstr "노틸러스 대신 Nemo를 사용하여 폴더를 엽니다."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:95
msgid "Add an emblem to links"
msgstr "링크에 엠블럼 추가"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:96
msgid "Add an emblem to allow to identify soft links."
msgstr "소프트 링크를 식별할 수 있도록 엠블럼을 추가합니다."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:100
msgid "Use black for label text"
msgstr "레이블 텍스트에 검정색 사용"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:101
msgid ""
"Paint the label text in black instead of white. Useful when using light "
"backgrounds."
msgstr ""
"레이블 텍스트를 흰색 대신 검정색으로 칠합니다. 밝은 배경을 사용할 때 유용합니"
"다."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:105
msgid "Show a popup if running on X11Wayland"
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:106
msgid ""
"Whether DING should show a popup if it is running on X11Wayland, or the user "
"decided to not show it anymore."
msgstr ""
#, fuzzy
#~ msgid "Desktop icons"
#~ msgstr "바탕화면 아이콘 설정"
#~ msgid ""
#~ "To configure Desktop Icons NG, do right-click in the desktop and choose "
#~ "the last item: 'Desktop Icons settings'"
#~ msgstr ""
#~ "Desktop Icons NG 설정을 보려면 바탕화면에서 우클릭하여 마지막 아이템 '바탕"
#~ "화면 아이콘 설정'을 선택하세요."
#~ msgid "Do you want to run “{0}”, or display its contents?"
#~ msgstr "“{0}”을 실행하시겠습니까? 혹은 내용을 표시하겠습니까?"
#~ msgid "“{0}” is an executable text file."
#~ msgstr "“{0}”는 실행가능한 텍스트 파일입니다."
#~ msgid "Execute in a terminal"
#~ msgstr "터미널로 실행"
#~ msgid "Show"
#~ msgstr "보기"
#~ msgid "Execute"
#~ msgstr "실행"
#~ msgid "New folder"
#~ msgstr "새 폴더"
#~ msgid "Delete"
#~ msgstr "삭제"
#~ msgid "Are you sure you want to permanently delete these items?"
#~ msgstr "파일들을 영구 삭제하시겠습니까?"
#~ msgid "If you delete an item, it will be permanently lost."
#~ msgstr "파일을 삭제하면, 영구적으로 잃게 될 것입니다."
desktop-icons-ng-49.0.5-c32667693d0831c29e3ab3f7bfeb675ea1531a00/po/meson.build 0000664 0000000 0000000 00000000065 15064747536 0025144 0 ustar 00root root 0000000 0000000 i18n.gettext (meson.project_name (), preset: 'glib')
desktop-icons-ng-49.0.5-c32667693d0831c29e3ab3f7bfeb675ea1531a00/po/nl.po 0000664 0000000 0000000 00000050625 15064747536 0023762 0 ustar 00root root 0000000 0000000 # Dutch translation for desktop-icons.
# Copyright (C) 2019 desktop-icons's COPYRIGHT HOLDER
# This file is distributed under the same license as the desktop-icons package.
# Nathan Follens , 2019.
#
msgid ""
msgstr ""
"Project-Id-Version: desktop-icons master\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-06-29 16:52+0200\n"
"PO-Revision-Date: 2019-03-04 19:46+0100\n"
"Last-Translator: Nathan Follens \n"
"Language-Team: Dutch \n"
"Language: nl\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Poedit 2.2.1\n"
#: app/askRenamePopup.js:49
#, fuzzy
msgid "Folder name"
msgstr "Nieuwe mapnaam"
#: app/askRenamePopup.js:49
#, fuzzy
msgid "File name"
msgstr "Hernoemen…"
#: app/askRenamePopup.js:57 app/autoAr.js:305 app/desktopManager.js:1002
msgid "OK"
msgstr "Oké"
#: app/askRenamePopup.js:57
#, fuzzy
msgid "Rename"
msgstr "Hernoemen…"
#: app/autoAr.js:88
msgid "AutoAr is not installed"
msgstr ""
#: app/autoAr.js:89
msgid ""
"To be able to work with compressed files, install file-roller and/or gir-1.2-"
"gnomeAutoAr"
msgstr ""
#: app/autoAr.js:224
#, fuzzy
msgid "Extracting files"
msgstr "Hier uitpakken"
#: app/autoAr.js:241
msgid "Compressing files"
msgstr ""
#: app/autoAr.js:297 app/autoAr.js:636 app/desktopManager.js:1004
#: app/fileItemMenu.js:474
msgid "Cancel"
msgstr "Annuleren"
#: app/autoAr.js:318 app/autoAr.js:619
msgid "Enter a password here"
msgstr ""
#: app/autoAr.js:359
msgid "Removing partial file '${outputFile}'"
msgstr ""
#: app/autoAr.js:378
msgid "Creating destination folder"
msgstr ""
#: app/autoAr.js:410
msgid "Extracting files into '${outputPath}'"
msgstr ""
#: app/autoAr.js:442
#, fuzzy
msgid "Extraction completed"
msgstr "Hier uitpakken"
#: app/autoAr.js:443
msgid "Extracting '${fullPathFile}' has been completed."
msgstr ""
#: app/autoAr.js:449
#, fuzzy
msgid "Extraction cancelled"
msgstr "Hier uitpakken"
#: app/autoAr.js:450
msgid "Extracting '${fullPathFile}' has been cancelled by the user."
msgstr ""
#: app/autoAr.js:460
msgid "Passphrase required for ${filename}"
msgstr ""
#: app/autoAr.js:463
msgid "Error during extraction"
msgstr ""
#: app/autoAr.js:492
msgid "Compressing files into '${outputFile}'"
msgstr ""
#: app/autoAr.js:505
msgid "Compression completed"
msgstr ""
#: app/autoAr.js:506
msgid "Compressing files into '${outputFile}' has been completed."
msgstr ""
#: app/autoAr.js:510 app/autoAr.js:517
msgid "Cancelled compression"
msgstr ""
#: app/autoAr.js:511
msgid "The output file '${outputFile}' already exists."
msgstr ""
#: app/autoAr.js:518
msgid "Compressing files into '${outputFile}' has been cancelled by the user."
msgstr ""
#: app/autoAr.js:521
msgid "Error during compression"
msgstr ""
#: app/autoAr.js:554
#, fuzzy
msgid "Create archive"
msgstr "Aanmaken"
#: app/autoAr.js:579
#, fuzzy
msgid "Archive name"
msgstr "Hernoemen…"
#: app/autoAr.js:614
msgid "Password"
msgstr ""
#: app/autoAr.js:633
msgid "Create"
msgstr "Aanmaken"
#: app/autoAr.js:712
msgid "Compatible with all operating systems."
msgstr ""
#: app/autoAr.js:718
msgid "Password protected .zip, must be installed on Windows and Mac."
msgstr ""
#: app/autoAr.js:724
msgid "Smaller archives but Linux and Mac only."
msgstr ""
#: app/autoAr.js:730
msgid "Smaller archives but must be installed on Windows and Mac."
msgstr ""
#: app/dbusUtils.js:69
msgid "\"${programName}\" is needed for Desktop Icons"
msgstr ""
#: app/dbusUtils.js:70
msgid ""
"For this functionality to work in Desktop Icons, you must install \"$"
"{programName}\" in your system."
msgstr ""
#: app/desktopIconsUtil.js:154
msgid "Command not found"
msgstr ""
#: app/desktopManager.js:259
msgid "Nautilus File Manager not found"
msgstr ""
#: app/desktopManager.js:260
msgid "The Nautilus File Manager is mandatory to work with Desktop Icons NG."
msgstr ""
#: app/desktopManager.js:964
msgid "Clear Current Selection before New Search"
msgstr ""
#: app/desktopManager.js:1006
msgid "Find Files on Desktop"
msgstr ""
#: app/desktopManager.js:1074 app/desktopManager.js:1786
msgid "New Folder"
msgstr "Nieuwe map"
#: app/desktopManager.js:1078
msgid "New Document"
msgstr "Nieuw document"
#: app/desktopManager.js:1083
msgid "Paste"
msgstr "Plakken"
#: app/desktopManager.js:1087
msgid "Undo"
msgstr "Ongedaan maken"
#: app/desktopManager.js:1091
msgid "Redo"
msgstr "Opnieuw"
#: app/desktopManager.js:1097
#, fuzzy
msgid "Select All"
msgstr "Alles selecteren"
#: app/desktopManager.js:1105
msgid "Show Desktop in Files"
msgstr "Bureaublad tonen in Bestanden"
#: app/desktopManager.js:1109 app/fileItemMenu.js:365
msgid "Open in Terminal"
msgstr "Openen in terminalvenster"
#: app/desktopManager.js:1115
msgid "Change Background…"
msgstr "Achtergrond aanpassen…"
#: app/desktopManager.js:1126
#, fuzzy
msgid "Desktop Icons Settings"
msgstr "Scherminstellingen"
#: app/desktopManager.js:1139
msgid "Display Settings"
msgstr "Scherminstellingen"
#: app/desktopManager.js:1799
#, fuzzy
msgid "Folder Creation Failed"
msgstr "Nieuwe mapnaam"
#: app/desktopManager.js:1800
#, fuzzy
msgid "Error while trying to create a Folder"
msgstr "Fout tijdens het verwijderen"
#: app/desktopManager.js:1836
msgid "Template Creation Failed"
msgstr ""
#: app/desktopManager.js:1837
msgid "Error while trying to create a Document"
msgstr ""
#: app/desktopManager.js:1845
msgid "Arrange Icons"
msgstr ""
#: app/desktopManager.js:1849
msgid "Arrange By..."
msgstr ""
#: app/desktopManager.js:1858
msgid "Keep Arranged..."
msgstr ""
#: app/desktopManager.js:1862
msgid "Keep Stacked by type..."
msgstr ""
#: app/desktopManager.js:1867
msgid "Sort Home/Drives/Trash..."
msgstr ""
#: app/desktopManager.js:1873
msgid "Sort by Name"
msgstr ""
#: app/desktopManager.js:1875
msgid "Sort by Name Descending"
msgstr ""
#: app/desktopManager.js:1878
msgid "Sort by Modified Time"
msgstr ""
#: app/desktopManager.js:1881
msgid "Sort by Type"
msgstr ""
#: app/desktopManager.js:1884
msgid "Sort by Size"
msgstr ""
#. * TRANSLATORS: when using a screen reader, this is the text read when a folder is
#. selected. Example: if a folder named "things" is selected, it will say "things Folder"
#: app/fileItem.js:64
msgid "${VisibleName} Folder"
msgstr ""
#. * TRANSLATORS: when using a screen reader, this is the text read when a normal file is
#. selected. Example: if a file named "my_picture.jpg" is selected, it will say "my_picture.jpg File"
#: app/fileItem.js:68
msgid "${VisibleName} File"
msgstr ""
#. TRANSLATORS: "Home" is the text that will be shown in the user's personal folder
#: app/fileItem.js:72 app/fileItem.js:203
msgid "Home"
msgstr "Persoonlijke map"
#. * TRANSLATORS: when using a screen reader, this is the text read when the trash folder is
#. selected.
#: app/fileItem.js:77
#, fuzzy
msgid "Trash"
msgstr "Prullenbak legen"
#. * TRANSLATORS: when using a screen reader, this is the text read when an external drive is
#. selected. Example: if a USB stick named "my_portable" is selected, it will say "my_portable Drive"
#: app/fileItem.js:82
msgid "${VisibleName} Drive"
msgstr ""
#. * TRANSLATORS: when using a screen reader, this is the text read when a stack is
#. selected. Example: if a stack named "pictures" is selected, it will say "pictures Stack"
#: app/fileItem.js:87
msgid "${VisibleName} Stack"
msgstr ""
#: app/fileItem.js:295
#, fuzzy
msgid "Error while reading Desktop file"
msgstr "Fout tijdens het verwijderen"
#: app/fileItem.js:337
msgid "Broken Link"
msgstr ""
#: app/fileItem.js:338
msgid "Can not open this File because it is a Broken Symlink"
msgstr ""
#: app/fileItem.js:370
msgid "Can't open the file"
msgstr ""
#: app/fileItem.js:396
#, fuzzy
msgid "Broken Desktop File"
msgstr "Bureaublad tonen in Bestanden"
#: app/fileItem.js:397
msgid ""
"This .desktop file has errors or points to a program without permissions. It "
"can not be executed.\n"
"\n"
"\tEdit the file to set the correct executable Program."
msgstr ""
#: app/fileItem.js:403
msgid "Invalid Permissions on Desktop File"
msgstr ""
#: app/fileItem.js:404
msgid ""
"This .desktop File has incorrect Permissions. Right Click to edit "
"Properties, then:\n"
msgstr ""
#: app/fileItem.js:406
msgid ""
"\n"
"Set Permissions, in \"Others Access\", \"Read Only\" or \"None\""
msgstr ""
#: app/fileItem.js:409
msgid ""
"\n"
"Enable option, \"Allow Executing File as a Program\""
msgstr ""
#: app/fileItem.js:417
msgid ""
"This .desktop file is not trusted, it can not be launched. To enable "
"launching, right-click, then:\n"
"\n"
"Enable \"Allow Launching\""
msgstr ""
#: app/fileItem.js:620
msgid "Failed to set execution flag"
msgstr ""
#: app/fileItem.js:632 app/fileItem.js:639
msgid "Could not apply discrete GPU environment"
msgstr ""
#: app/fileItem.js:668
msgid "Could not find discrete GPU data"
msgstr ""
#: app/fileItem.js:793
msgid "Failed to set metadata::trusted flag"
msgstr ""
#: app/fileItemMenu.js:143
msgid "Open All..."
msgstr ""
#: app/fileItemMenu.js:143
msgid "Open"
msgstr "Openen"
#: app/fileItemMenu.js:160
msgid "Stack This Type"
msgstr ""
#: app/fileItemMenu.js:160
msgid "Unstack This Type"
msgstr ""
#: app/fileItemMenu.js:173
msgid "Scripts"
msgstr "Scripts"
#: app/fileItemMenu.js:178
#, fuzzy
msgid "Open All With Other Application..."
msgstr "Met andere toepassing openen"
#: app/fileItemMenu.js:178
msgid "Open With Other Application"
msgstr "Met andere toepassing openen"
#: app/fileItemMenu.js:184
msgid "Launch using Dedicated Graphics Card"
msgstr ""
#: app/fileItemMenu.js:195
msgid "Run as a program"
msgstr ""
#: app/fileItemMenu.js:203
msgid "Cut"
msgstr "Knippen"
#: app/fileItemMenu.js:210
msgid "Copy"
msgstr "Kopiëren"
#: app/fileItemMenu.js:218
msgid "Rename…"
msgstr "Hernoemen…"
#: app/fileItemMenu.js:228
msgid "Move to Trash"
msgstr "Verplaatsen naar prullenbak"
#: app/fileItemMenu.js:236
msgid "Delete permanently"
msgstr "Definitief verwijderen"
#: app/fileItemMenu.js:246
#, fuzzy
msgid "Don't Allow Launching"
msgstr "Toepassingen starten niet toestaan"
#: app/fileItemMenu.js:246
msgid "Allow Launching"
msgstr "Toepassingen starten toestaan"
#: app/fileItemMenu.js:259
msgid "Empty Trash"
msgstr "Prullenbak legen"
#: app/fileItemMenu.js:272
msgid "Eject"
msgstr "Uitwerpen"
#: app/fileItemMenu.js:280
msgid "Unmount"
msgstr "Ontkoppelen"
#: app/fileItemMenu.js:294 app/fileItemMenu.js:301
msgid "Extract Here"
msgstr "Hier uitpakken"
#: app/fileItemMenu.js:308
msgid "Extract To..."
msgstr "Uitpakken naar…"
#: app/fileItemMenu.js:317
msgid "Send to..."
msgstr "Versturen naar…"
#: app/fileItemMenu.js:325
msgid "Compress {0} folder"
msgid_plural "Compress {0} folders"
msgstr[0] ""
msgstr[1] ""
#: app/fileItemMenu.js:332
msgid "Compress {0} file"
msgid_plural "Compress {0} files"
msgstr[0] ""
msgstr[1] ""
#: app/fileItemMenu.js:340
msgid "New Folder with {0} item"
msgid_plural "New Folder with {0} items"
msgstr[0] ""
msgstr[1] ""
#: app/fileItemMenu.js:351
#, fuzzy
msgid "Common Properties"
msgstr "Eigenschappen"
#: app/fileItemMenu.js:351
msgid "Properties"
msgstr "Eigenschappen"
#: app/fileItemMenu.js:358
#, fuzzy
msgid "Show All in Files"
msgstr "Tonen in Bestanden"
#: app/fileItemMenu.js:358
msgid "Show in Files"
msgstr "Tonen in Bestanden"
#: app/fileItemMenu.js:449
#, fuzzy
msgid "No Extraction Folder"
msgstr "Hier uitpakken"
#: app/fileItemMenu.js:450
msgid "Unable to extract File, extraction Folder Does not Exist"
msgstr ""
#: app/fileItemMenu.js:470
msgid "Select Extract Destination"
msgstr ""
#: app/fileItemMenu.js:475
msgid "Select"
msgstr "Selecteren"
#: app/fileItemMenu.js:516
msgid "Can not email a Directory"
msgstr ""
#: app/fileItemMenu.js:517
msgid "Selection includes a Directory, compress the directory to a file first."
msgstr ""
#: app/notifyX11UnderWayland.js:37
msgid "Desktop Icons NG is running under X11Wayland"
msgstr ""
#: app/notifyX11UnderWayland.js:38
msgid ""
"It seems that you have your system configured to force GTK to use X11. This "
"works, but it's suboptimal. You should check your system configuration to "
"fix this."
msgstr ""
#: app/notifyX11UnderWayland.js:39 app/showErrorPopup.js:39
msgid "Close"
msgstr ""
#: app/notifyX11UnderWayland.js:47
msgid "Don't show this message anymore."
msgstr ""
#: app/preferences.js:91
msgid "Settings"
msgstr "Instellingen"
#: app/prefswindow.js:64
msgid "Size for the desktop icons"
msgstr "Grootte van bureaubladpictogrammen"
#: app/prefswindow.js:64
msgid "Tiny"
msgstr ""
#: app/prefswindow.js:64
msgid "Small"
msgstr "Klein"
#: app/prefswindow.js:64
msgid "Standard"
msgstr "Standaard"
#: app/prefswindow.js:64
msgid "Large"
msgstr "Groot"
#: app/prefswindow.js:65
msgid "Show the personal folder in the desktop"
msgstr "Toon de persoonlijke map op het bureaublad"
#: app/prefswindow.js:66
msgid "Show the trash icon in the desktop"
msgstr "Toon het prullenbakpictogram op het bureaublad"
#: app/prefswindow.js:67 schemas/org.gnome.shell.extensions.ding.gschema.xml:45
#, fuzzy
msgid "Show external drives in the desktop"
msgstr "Toon de persoonlijke map op het bureaublad"
#: app/prefswindow.js:68 schemas/org.gnome.shell.extensions.ding.gschema.xml:50
#, fuzzy
msgid "Show network drives in the desktop"
msgstr "Toon de persoonlijke map op het bureaublad."
#: app/prefswindow.js:71
#, fuzzy
msgid "New icons alignment"
msgstr "Pictogramgrootte"
#: app/prefswindow.js:73
msgid "Top-left corner"
msgstr ""
#: app/prefswindow.js:74
msgid "Top-right corner"
msgstr ""
#: app/prefswindow.js:75
msgid "Bottom-left corner"
msgstr ""
#: app/prefswindow.js:76
msgid "Bottom-right corner"
msgstr ""
#: app/prefswindow.js:78 schemas/org.gnome.shell.extensions.ding.gschema.xml:55
msgid "Add new drives to the opposite side of the screen"
msgstr ""
#: app/prefswindow.js:79
msgid "Highlight the drop place during Drag'n'Drop"
msgstr ""
#: app/prefswindow.js:80 schemas/org.gnome.shell.extensions.ding.gschema.xml:90
msgid "Use Nemo to open folders"
msgstr ""
#: app/prefswindow.js:82
msgid "Add an emblem to soft links"
msgstr ""
#: app/prefswindow.js:84
msgid "Use dark text in icon labels"
msgstr ""
#: app/prefswindow.js:91
msgid "Settings shared with Nautilus"
msgstr ""
#: app/prefswindow.js:113
msgid "Click type for open files"
msgstr ""
#: app/prefswindow.js:113
msgid "Single click"
msgstr ""
#: app/prefswindow.js:113
msgid "Double click"
msgstr ""
#: app/prefswindow.js:114
#, fuzzy
msgid "Show hidden files"
msgstr "Tonen in Bestanden"
#: app/prefswindow.js:115
msgid "Show a context menu item to delete permanently"
msgstr ""
#: app/prefswindow.js:120
msgid "Action to do when launching a program from the desktop"
msgstr ""
#: app/prefswindow.js:121
msgid "Display the content of the file"
msgstr ""
#: app/prefswindow.js:122
msgid "Launch the file"
msgstr ""
#: app/prefswindow.js:123
msgid "Ask what to do"
msgstr ""
#: app/prefswindow.js:129
msgid "Show image thumbnails"
msgstr ""
#: app/prefswindow.js:130
msgid "Never"
msgstr ""
#: app/prefswindow.js:131
msgid "Local files only"
msgstr ""
#: app/prefswindow.js:132
msgid "Always"
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:25
msgid "Icon size"
msgstr "Pictogramgrootte"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:26
msgid "Set the size for the desktop icons."
msgstr "Stel de grootte van de bureaubladpictogrammen in."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:30
msgid "Show personal folder"
msgstr "Persoonlijke map tonen"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:31
msgid "Show the personal folder in the desktop."
msgstr "Toon de persoonlijke map op het bureaublad."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:35
msgid "Show trash icon"
msgstr "Prullenbakpictogram tonen"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:36
msgid "Show the trash icon in the desktop."
msgstr "Toon het prullenbakpictogram op het bureaublad."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:40
#, fuzzy
msgid "New icons start corner"
msgstr "Pictogramgrootte"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:41
msgid "Set the corner from where the icons will start to be placed."
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:46
msgid "Show the disk drives connected to the computer."
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:51
#, fuzzy
msgid "Show mounted network volumes in the desktop."
msgstr "Toon de persoonlijke map op het bureaublad."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:56
msgid ""
"When adding drives and volumes to the desktop, add them to the opposite side "
"of the screen."
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:60
msgid "Shows a rectangle in the destination place during DnD"
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:61
msgid ""
"When doing a Drag'n'Drop operation, marks the place in the grid where the "
"icon will be put with a semitransparent rectangle."
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:65
msgid "Sort Special Folders - Home/Trash Drives."
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:66
msgid ""
"When arranging Icons on desktop, to sort and change the position of the "
"Home, Trash and mounted Network or External Drives"
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:70
msgid "Keep Icons Arranged"
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:71
msgid "Always keep Icons Arranged by the last arranged order"
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:75
msgid "Arrange Order"
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:76
msgid "Icons Arranged by this property"
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:80
msgid "Keep Icons Stacked"
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:81
msgid "Always keep Icons Stacked, Similar types are grouped"
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:85
msgid "Type of Files to not Stack"
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:86
msgid "An Array of strings types, Don't Stack these types of files"
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:91
msgid "Use Nemo instead of Nautilus to open folders."
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:95
msgid "Add an emblem to links"
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:96
msgid "Add an emblem to allow to identify soft links."
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:100
msgid "Use black for label text"
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:101
msgid ""
"Paint the label text in black instead of white. Useful when using light "
"backgrounds."
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:105
msgid "Show a popup if running on X11Wayland"
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:106
msgid ""
"Whether DING should show a popup if it is running on X11Wayland, or the user "
"decided to not show it anymore."
msgstr ""
#, fuzzy
#~ msgid "Desktop icons"
#~ msgstr "Scherminstellingen"
#~ msgid "Do you want to run “{0}”, or display its contents?"
#~ msgstr "Wilt u ‘{0}‘ uitvoeren of de inhoud ervan bekijken?"
#~ msgid "“{0}” is an executable text file."
#~ msgstr "‘{0}‘ is een uitvoerbaar tekstbestand."
#, fuzzy
#~ msgid "Execute in a terminal"
#~ msgstr "Openen in terminalvenster"
#, fuzzy
#~ msgid "New folder"
#~ msgstr "Nieuwe map"
#~ msgid "Delete"
#~ msgstr "Verwijderen"
#~ msgid "If you delete an item, it will be permanently lost."
#~ msgstr "Als u een item verwijdert, zal het definitief verloren gaan."
#, fuzzy
#~ msgid "Show external disk drives in the desktop"
#~ msgstr "Toon de persoonlijke map op het bureaublad"
#, fuzzy
#~ msgid "Show the external drives"
#~ msgstr "Toon de persoonlijke map op het bureaublad"
#, fuzzy
#~ msgid "Show network volumes"
#~ msgstr "Tonen in Bestanden"
#~ msgid "Enter file name…"
#~ msgstr "Voer bestandsnaam in…"
#~ msgid "Folder names cannot contain “/”."
#~ msgstr "Mapnamen kunnen geen ‘/’ bevatten."
#~ msgid "A folder cannot be called “.”."
#~ msgstr "Een map kan niet ‘.’ worden genoemd."
#~ msgid "A folder cannot be called “..”."
#~ msgstr "Een map kan niet ‘..’ worden genoemd."
#~ msgid "Folders with “.” at the beginning of their name are hidden."
#~ msgstr "Mappen waarvan de naam begint met ‘.’ zijn verborgen."
#~ msgid "There is already a file or folder with that name."
#~ msgstr "Er bestaat al een bestand of map met die naam."
desktop-icons-ng-49.0.5-c32667693d0831c29e3ab3f7bfeb675ea1531a00/po/oc.po 0000664 0000000 0000000 00000062444 15064747536 0023754 0 ustar 00root root 0000000 0000000 # Occitan translation file.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the ding package.
# Quentin PAGÈS, 2024.
#
msgid ""
msgstr ""
"Project-Id-Version: ding\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-06-29 16:52+0200\n"
"PO-Revision-Date: 2024-12-20 20:19+0100\n"
"Last-Translator: Quentin PAGÈS\n"
"Language-Team: \n"
"Language: oc\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
"X-Generator: Poedit 3.5\n"
#: app/askRenamePopup.js:49
msgid "Folder name"
msgstr "Nom del dossièr"
#: app/askRenamePopup.js:49
msgid "File name"
msgstr "Nom de fichièr"
#: app/askRenamePopup.js:57 app/autoAr.js:305 app/desktopManager.js:1002
msgid "OK"
msgstr "D’acordi"
#: app/askRenamePopup.js:57
msgid "Rename"
msgstr "Renomenar"
#: app/autoAr.js:88
msgid "AutoAr is not installed"
msgstr "AutoAr es pas installat"
#: app/autoAr.js:89
msgid ""
"To be able to work with compressed files, install file-roller and/or gir-1.2-"
"gnomeAutoAr"
msgstr ""
"Per poder trabalhar amb de fichièrs compressats, installatz file-roller e/o "
"gir-1.2-gnomeAutoAr"
#: app/autoAr.js:224
msgid "Extracting files"
msgstr "Extraccion dels fichièrs"
#: app/autoAr.js:241
msgid "Compressing files"
msgstr "Compression dels fichièrs"
#: app/autoAr.js:297 app/autoAr.js:636 app/desktopManager.js:1004
#: app/fileItemMenu.js:474
msgid "Cancel"
msgstr "Anullar"
#: app/autoAr.js:318 app/autoAr.js:619
msgid "Enter a password here"
msgstr "Picatz un senhal aicí"
#: app/autoAr.js:359
msgid "Removing partial file '${outputFile}'"
msgstr "Supression de fichièr parcial « ${outputFile} »"
#: app/autoAr.js:378
msgid "Creating destination folder"
msgstr "Creacion d’un dossièr de destinacion"
#: app/autoAr.js:410
msgid "Extracting files into '${outputPath}'"
msgstr "Extraccion dels fichièrs dins « ${outputPath} »"
#: app/autoAr.js:442
msgid "Extraction completed"
msgstr "Extraccion acabada"
#: app/autoAr.js:443
msgid "Extracting '${fullPathFile}' has been completed."
msgstr "L’extraccion de « ${fullPathFile} » es acabada."
#: app/autoAr.js:449
msgid "Extraction cancelled"
msgstr "Extraccion anullada"
#: app/autoAr.js:450
msgid "Extracting '${fullPathFile}' has been cancelled by the user."
msgstr "L’utilizaire a anullat l’extraccion de « ${fullPathFile} »."
#: app/autoAr.js:460
msgid "Passphrase required for ${filename}"
msgstr "Frasa secreta requesida per ${filename}"
#: app/autoAr.js:463
msgid "Error during extraction"
msgstr "Error pendent l’extraccion"
#: app/autoAr.js:492
msgid "Compressing files into '${outputFile}'"
msgstr "Compression dels fichièrs dins « ${outputFile} »"
#: app/autoAr.js:505
msgid "Compression completed"
msgstr "Compression acabada"
#: app/autoAr.js:506
msgid "Compressing files into '${outputFile}' has been completed."
msgstr "La compression des fichièrs dins « ${outputFile} » es acabada."
#: app/autoAr.js:510 app/autoAr.js:517
msgid "Cancelled compression"
msgstr "Compression anullada"
#: app/autoAr.js:511
msgid "The output file '${outputFile}' already exists."
msgstr "Lo fichièr en sortida « ${outputFile} » existís ja."
#: app/autoAr.js:518
msgid "Compressing files into '${outputFile}' has been cancelled by the user."
msgstr ""
"L’utilizaire a anullat la compression des fichièrs dins « ${outputFile} »."
#: app/autoAr.js:521
msgid "Error during compression"
msgstr "Error pendent la compression"
#: app/autoAr.js:554
msgid "Create archive"
msgstr "Crear un archiu"
#: app/autoAr.js:579
msgid "Archive name"
msgstr "Nom de l’archiu"
#: app/autoAr.js:614
msgid "Password"
msgstr "Senhal"
#: app/autoAr.js:633
msgid "Create"
msgstr "Crear"
#: app/autoAr.js:712
msgid "Compatible with all operating systems."
msgstr "Compatible amb totes los sistèmas operatius."
#: app/autoAr.js:718
msgid "Password protected .zip, must be installed on Windows and Mac."
msgstr ".zip protegit per senhal, deu èsser installat sus Windows e Mac."
#: app/autoAr.js:724
msgid "Smaller archives but Linux and Mac only."
msgstr "Archius mai pichons mas Linux e Mac sonque."
#: app/autoAr.js:730
msgid "Smaller archives but must be installed on Windows and Mac."
msgstr "Archius mai pichons mas devon èsser installats sus Windows e Mac."
#: app/dbusUtils.js:69
msgid "\"${programName}\" is needed for Desktop Icons"
msgstr "« ${programName} » es requerit per Desktop Icons"
#: app/dbusUtils.js:70
msgid ""
"For this functionality to work in Desktop Icons, you must install \"$"
"{programName}\" in your system."
msgstr ""
"Per que foncione aquesta foncionalitat dins Desktop Icons, devètz installar "
"« ${programName} » dins vòstre sistèma."
#: app/desktopIconsUtil.js:154
msgid "Command not found"
msgstr "Comanda pas trobada"
#: app/desktopManager.js:259
msgid "Nautilus File Manager not found"
msgstr "Gestionari de fichièrs Nautilus pas trobat"
#: app/desktopManager.js:260
msgid "The Nautilus File Manager is mandatory to work with Desktop Icons NG."
msgstr ""
"Gestionari de fichièrs Nautilus es obligatòri per foncionar amb Desktop "
"Icons NG."
#: app/desktopManager.js:964
msgid "Clear Current Selection before New Search"
msgstr "Escafar la seleccion actuala abans una recèrca novèla"
#: app/desktopManager.js:1006
msgid "Find Files on Desktop"
msgstr "Recercar de fichièrs al burèu"
#: app/desktopManager.js:1074 app/desktopManager.js:1786
msgid "New Folder"
msgstr "Dossièr novèl"
#: app/desktopManager.js:1078
msgid "New Document"
msgstr "Document novèl"
#: app/desktopManager.js:1083
msgid "Paste"
msgstr "Pegar"
#: app/desktopManager.js:1087
msgid "Undo"
msgstr "Desfar"
#: app/desktopManager.js:1091
msgid "Redo"
msgstr "Refar"
#: app/desktopManager.js:1097
msgid "Select All"
msgstr "Tot seleccionar"
#: app/desktopManager.js:1105
msgid "Show Desktop in Files"
msgstr "Mostrar lo burèu dins Fichièrs"
#: app/desktopManager.js:1109 app/fileItemMenu.js:365
msgid "Open in Terminal"
msgstr "Dobrir dins un terminal"
#: app/desktopManager.js:1115
msgid "Change Background…"
msgstr "Modificar lo rèireplan…"
#: app/desktopManager.js:1126
msgid "Desktop Icons Settings"
msgstr "Paramètres icònas de burèu"
#: app/desktopManager.js:1139
msgid "Display Settings"
msgstr "Paramètres d'afichatge"
#: app/desktopManager.js:1799
msgid "Folder Creation Failed"
msgstr "Fracàs de la creacion del dossièr"
#: app/desktopManager.js:1800
msgid "Error while trying to create a Folder"
msgstr "Error en ensajant de crear un dossièr"
#: app/desktopManager.js:1836
msgid "Template Creation Failed"
msgstr "Fracàs del modèl de creacion"
#: app/desktopManager.js:1837
msgid "Error while trying to create a Document"
msgstr "Fracàs en ensajant de crear un document"
#: app/desktopManager.js:1845
msgid "Arrange Icons"
msgstr "Arrengar las icònas"
#: app/desktopManager.js:1849
msgid "Arrange By..."
msgstr "Arrengar per..."
#: app/desktopManager.js:1858
msgid "Keep Arranged..."
msgstr "Gardar arrengat..."
#: app/desktopManager.js:1862
msgid "Keep Stacked by type..."
msgstr "Gardar l’empilament per tipe..."
#: app/desktopManager.js:1867
msgid "Sort Home/Drives/Trash..."
msgstr "Triar Repertòri personal/disques/escobilhièr..."
#: app/desktopManager.js:1873
msgid "Sort by Name"
msgstr "Triar per nom"
#: app/desktopManager.js:1875
msgid "Sort by Name Descending"
msgstr "Triar per nom descendent"
#: app/desktopManager.js:1878
msgid "Sort by Modified Time"
msgstr "Triar per data de modificacion"
#: app/desktopManager.js:1881
msgid "Sort by Type"
msgstr "Triar per tipe"
#: app/desktopManager.js:1884
msgid "Sort by Size"
msgstr "Triar per talha"
#. * TRANSLATORS: when using a screen reader, this is the text read when a folder is
#. selected. Example: if a folder named "things" is selected, it will say "things Folder"
#: app/fileItem.js:64
msgid "${VisibleName} Folder"
msgstr "Dossièr ${VisibleName}"
#. * TRANSLATORS: when using a screen reader, this is the text read when a normal file is
#. selected. Example: if a file named "my_picture.jpg" is selected, it will say "my_picture.jpg File"
#: app/fileItem.js:68
msgid "${VisibleName} File"
msgstr "Fichièr ${VisibleName}"
#. TRANSLATORS: "Home" is the text that will be shown in the user's personal folder
#: app/fileItem.js:72 app/fileItem.js:203
msgid "Home"
msgstr "Dossièr personal"
#. * TRANSLATORS: when using a screen reader, this is the text read when the trash folder is
#. selected.
#: app/fileItem.js:77
msgid "Trash"
msgstr "Escobilhièr"
#. * TRANSLATORS: when using a screen reader, this is the text read when an external drive is
#. selected. Example: if a USB stick named "my_portable" is selected, it will say "my_portable Drive"
#: app/fileItem.js:82
msgid "${VisibleName} Drive"
msgstr "Lector ${VisibleName}"
#. * TRANSLATORS: when using a screen reader, this is the text read when a stack is
#. selected. Example: if a stack named "pictures" is selected, it will say "pictures Stack"
#: app/fileItem.js:87
msgid "${VisibleName} Stack"
msgstr "Lòt ${VisibleName}"
#: app/fileItem.js:295
msgid "Error while reading Desktop file"
msgstr "Error en legissent lo fichièr de burèu"
#: app/fileItem.js:337
msgid "Broken Link"
msgstr "Ligam copat"
#: app/fileItem.js:338
msgid "Can not open this File because it is a Broken Symlink"
msgstr ""
"Dubertura d'aqueste fichièr impossibla pr’amor qu’es un ligam simbolic copat"
#: app/fileItem.js:370
msgid "Can't open the file"
msgstr "Impossible de dobrir lo fichièr"
#: app/fileItem.js:396
msgid "Broken Desktop File"
msgstr "Mostrar lo burèu dins Fichièrs"
#: app/fileItem.js:397
msgid ""
"This .desktop file has errors or points to a program without permissions. It "
"can not be executed.\n"
"\n"
"\tEdit the file to set the correct executable Program."
msgstr ""
"Aqueste fichièr .desktop a d’errors o mena a un programa sens autorizacion. "
"Pòt pas èsser executat.\n"
"\n"
"\tModificatz lo fichièr per definir un programa executable corrèct."
#: app/fileItem.js:403
msgid "Invalid Permissions on Desktop File"
msgstr "Autorizacion invalida sul fichièr de burèu"
#: app/fileItem.js:404
msgid ""
"This .desktop File has incorrect Permissions. Right Click to edit "
"Properties, then:\n"
msgstr ""
"Aqueste fichièr .desktop a d’autorizacions incorrèctas. Fasètz clicatz drech "
"per modificar las proprietats, puèi :\n"
#: app/fileItem.js:406
msgid ""
"\n"
"Set Permissions, in \"Others Access\", \"Read Only\" or \"None\""
msgstr ""
"\n"
"Definir las autorizacions, dins « Autres accèsses », « Lectura sola » o "
"« Cap »"
#: app/fileItem.js:409
msgid ""
"\n"
"Enable option, \"Allow Executing File as a Program\""
msgstr ""
"\n"
"Activar l’opcion, « Permetre d’executar lo fichièr coma programa »"
#: app/fileItem.js:417
msgid ""
"This .desktop file is not trusted, it can not be launched. To enable "
"launching, right-click, then:\n"
"\n"
"Enable \"Allow Launching\""
msgstr ""
"Aqueste fichièr .desktop es pas fisable, se pòt pas lançar. Per autorizar "
"son lançament, fasètz clic drech puèi :\n"
"\n"
"Activar « Autorizar lo lançament »"
#: app/fileItem.js:620
msgid "Failed to set execution flag"
msgstr "Fracàs de la definicion del flag d’execucion"
#: app/fileItem.js:632 app/fileItem.js:639
msgid "Could not apply discrete GPU environment"
msgstr "Aplicacion impossibla de l’environament GPU discrèt"
#: app/fileItem.js:668
msgid "Could not find discrete GPU data"
msgstr "Impossible de trobar las donadas de GPU discrèt"
#: app/fileItem.js:793
msgid "Failed to set metadata::trusted flag"
msgstr "Fracàs de la definicion del flag metadata::trusted"
#: app/fileItemMenu.js:143
msgid "Open All..."
msgstr "Dobrir tot..."
#: app/fileItemMenu.js:143
msgid "Open"
msgstr "Dobrir"
#: app/fileItemMenu.js:160
msgid "Stack This Type"
msgstr "Apilar aqueste tipe"
#: app/fileItemMenu.js:160
msgid "Unstack This Type"
msgstr "Desplegar aqueste tipe"
#: app/fileItemMenu.js:173
msgid "Scripts"
msgstr "Scripts"
#: app/fileItemMenu.js:178
msgid "Open All With Other Application..."
msgstr "Dobrir tot amb una autra aplicacion..."
#: app/fileItemMenu.js:178
msgid "Open With Other Application"
msgstr "Dobrir amb una autra aplicacion"
#: app/fileItemMenu.js:184
msgid "Launch using Dedicated Graphics Card"
msgstr "Aviar en utilizant la carta grafica dedicada"
#: app/fileItemMenu.js:195
msgid "Run as a program"
msgstr "Executar coma un programa"
#: app/fileItemMenu.js:203
msgid "Cut"
msgstr "Copar"
#: app/fileItemMenu.js:210
msgid "Copy"
msgstr "Copiar"
#: app/fileItemMenu.js:218
msgid "Rename…"
msgstr "Renomenar…"
#: app/fileItemMenu.js:228
msgid "Move to Trash"
msgstr "Desplaçar dins l'escobilhièr"
#: app/fileItemMenu.js:236
msgid "Delete permanently"
msgstr "Suprimir definitivament"
#: app/fileItemMenu.js:246
msgid "Don't Allow Launching"
msgstr "Permetre pas l’aviada"
#: app/fileItemMenu.js:246
msgid "Allow Launching"
msgstr "Permetre l'aviada"
#: app/fileItemMenu.js:259
msgid "Empty Trash"
msgstr "Voidar l'escobilièr"
#: app/fileItemMenu.js:272
msgid "Eject"
msgstr "Ejectar"
#: app/fileItemMenu.js:280
msgid "Unmount"
msgstr "Desmontar"
#: app/fileItemMenu.js:294 app/fileItemMenu.js:301
msgid "Extract Here"
msgstr "Traire aicí"
#: app/fileItemMenu.js:308
msgid "Extract To..."
msgstr "Extraire dins..."
#: app/fileItemMenu.js:317
msgid "Send to..."
msgstr "Mandar a..."
#: app/fileItemMenu.js:325
msgid "Compress {0} folder"
msgid_plural "Compress {0} folders"
msgstr[0] "Compressar {0} dossièr"
msgstr[1] "Compressar {0} dossièrs"
#: app/fileItemMenu.js:332
msgid "Compress {0} file"
msgid_plural "Compress {0} files"
msgstr[0] "Compressar {0} fichièr"
msgstr[1] "Compressar {0} fichièrs"
#: app/fileItemMenu.js:340
msgid "New Folder with {0} item"
msgid_plural "New Folder with {0} items"
msgstr[0] "Dossièr novèl amb {0} element"
msgstr[1] "Dossièr novèl amb {0} elements"
#: app/fileItemMenu.js:351
msgid "Common Properties"
msgstr "Proprietats comunas"
#: app/fileItemMenu.js:351
msgid "Properties"
msgstr "Proprietats"
#: app/fileItemMenu.js:358
msgid "Show All in Files"
msgstr "Tot mostrar dins Fichièrs"
#: app/fileItemMenu.js:358
msgid "Show in Files"
msgstr "Mostrar dins Fichièrs"
#: app/fileItemMenu.js:449
msgid "No Extraction Folder"
msgstr "Cap de dossièr d’extraccion"
#: app/fileItemMenu.js:450
msgid "Unable to extract File, extraction Folder Does not Exist"
msgstr "Extraccion del fichièr impossibla, lo dossièr d’extraccion existís pas"
#: app/fileItemMenu.js:470
msgid "Select Extract Destination"
msgstr "Seleccionar una destinacion per l'extraccion"
#: app/fileItemMenu.js:475
msgid "Select"
msgstr "Causir"
#: app/fileItemMenu.js:516
msgid "Can not email a Directory"
msgstr "Impossible d’enviar un email a un Repertòri"
#: app/fileItemMenu.js:517
msgid "Selection includes a Directory, compress the directory to a file first."
msgstr ""
"La seleccion inclutz un repertòri, compressatz lo repertòri d'en primièr."
#: app/notifyX11UnderWayland.js:37
msgid "Desktop Icons NG is running under X11Wayland"
msgstr "Desktop Icons NG s’executa jos X11Wayland"
#: app/notifyX11UnderWayland.js:38
msgid ""
"It seems that you have your system configured to force GTK to use X11. This "
"works, but it's suboptimal. You should check your system configuration to "
"fix this."
msgstr ""
"Sembla que'l sistèma es configurat per forçar GTK a utilizar X11. Fonciona, "
"mas es suboptimal. Deuriatz verificar la configuracion sistèma per reglar "
"aquò."
#: app/notifyX11UnderWayland.js:39 app/showErrorPopup.js:39
msgid "Close"
msgstr "Tancar"
#: app/notifyX11UnderWayland.js:47
msgid "Don't show this message anymore."
msgstr "Mostrar pas pus aqueste messatge."
#: app/preferences.js:91
msgid "Settings"
msgstr "Paramètres"
#: app/prefswindow.js:64
msgid "Size for the desktop icons"
msgstr "Talha de las icònas burèu"
#: app/prefswindow.js:64
msgid "Tiny"
msgstr "Minuscula"
#: app/prefswindow.js:64
msgid "Small"
msgstr "Pichona"
#: app/prefswindow.js:64
msgid "Standard"
msgstr "Estandarda"
#: app/prefswindow.js:64
msgid "Large"
msgstr "Granda"
#: app/prefswindow.js:65
msgid "Show the personal folder in the desktop"
msgstr "Mostrar lo dossièr personal pel burèu"
#: app/prefswindow.js:66
msgid "Show the trash icon in the desktop"
msgstr "Mostrar l'icòna de l'escobilhièr pel burèu"
#: app/prefswindow.js:67 schemas/org.gnome.shell.extensions.ding.gschema.xml:45
msgid "Show external drives in the desktop"
msgstr "Mostrar los lector extèrns montats pel burèu"
#: app/prefswindow.js:68 schemas/org.gnome.shell.extensions.ding.gschema.xml:50
msgid "Show network drives in the desktop"
msgstr "Mostrar los lectors ret montats pel burèu"
#: app/prefswindow.js:71
msgid "New icons alignment"
msgstr "Alinhament de las icònas novèlas"
#: app/prefswindow.js:73
msgid "Top-left corner"
msgstr "Caire en naut a esquèrra"
#: app/prefswindow.js:74
msgid "Top-right corner"
msgstr "Caire en naut a drecha"
#: app/prefswindow.js:75
msgid "Bottom-left corner"
msgstr "Caire en bas a esquèrra"
#: app/prefswindow.js:76
msgid "Bottom-right corner"
msgstr "Caire en bas a drecha"
#: app/prefswindow.js:78 schemas/org.gnome.shell.extensions.ding.gschema.xml:55
msgid "Add new drives to the opposite side of the screen"
msgstr "Apondre los lectors novèls al costat opausat de l’ecran"
#: app/prefswindow.js:79
msgid "Highlight the drop place during Drag'n'Drop"
msgstr "Enlusir la zòna de depaus pendent un lisar-depausar"
#: app/prefswindow.js:80 schemas/org.gnome.shell.extensions.ding.gschema.xml:90
msgid "Use Nemo to open folders"
msgstr "Utilizar Nemo per dobrir los dossièrs"
#: app/prefswindow.js:82
msgid "Add an emblem to soft links"
msgstr "Apondre una emblèma als ligams leugièrs"
#: app/prefswindow.js:84
msgid "Use dark text in icon labels"
msgstr "Utilizar un tèxte escur pels labèls d’icòna"
#: app/prefswindow.js:91
msgid "Settings shared with Nautilus"
msgstr "Paramètres partejats amb Nautilus"
#: app/prefswindow.js:113
msgid "Click type for open files"
msgstr "Tipe de clic utilizat per dobrir de fichièrs"
#: app/prefswindow.js:113
msgid "Single click"
msgstr "Clic simple"
#: app/prefswindow.js:113
msgid "Double click"
msgstr "Clic doble"
#: app/prefswindow.js:114
msgid "Show hidden files"
msgstr "Visualizar los fichièrs amagats"
#: app/prefswindow.js:115
msgid "Show a context menu item to delete permanently"
msgstr "Mostrar un element de menú contextual per suprimir definitivament"
#: app/prefswindow.js:120
msgid "Action to do when launching a program from the desktop"
msgstr "Accion de realizar pendent l’aviada d’un programa a partir del burèu"
#: app/prefswindow.js:121
msgid "Display the content of the file"
msgstr "Afichar lo contengut del fichièr"
#: app/prefswindow.js:122
msgid "Launch the file"
msgstr "Executar lo fichièr"
#: app/prefswindow.js:123
msgid "Ask what to do"
msgstr "Demandar de qué far"
#: app/prefswindow.js:129
msgid "Show image thumbnails"
msgstr "Mostrar las miniaturas d'imatge"
#: app/prefswindow.js:130
msgid "Never"
msgstr "Jamai"
#: app/prefswindow.js:131
msgid "Local files only"
msgstr "Unicament los fichièrs locals"
#: app/prefswindow.js:132
msgid "Always"
msgstr "Totjorn"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:25
msgid "Icon size"
msgstr "Talha de l'icòna"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:26
msgid "Set the size for the desktop icons."
msgstr "Definir la talha de las icònas burèu."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:30
msgid "Show personal folder"
msgstr "Mostrar lo repertòri personal"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:31
msgid "Show the personal folder in the desktop."
msgstr "Mostrar lo dossièr personal pel burèu."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:35
msgid "Show trash icon"
msgstr "Mostrar l'icòna de l'escobilhièr"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:36
msgid "Show the trash icon in the desktop."
msgstr "Mostrar l'icòna de l'escobilhièr pel burèu."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:40
msgid "New icons start corner"
msgstr "Caire per las icònas novèlas"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:41
msgid "Set the corner from where the icons will start to be placed."
msgstr "Definir lo caire ont seràn plaças las icònas en primièr."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:46
msgid "Show the disk drives connected to the computer."
msgstr "Mostrar los lectors connectats a l'ordenador."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:51
msgid "Show mounted network volumes in the desktop."
msgstr "Mostrar los volums montats ret pel burèu."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:56
msgid ""
"When adding drives and volumes to the desktop, add them to the opposite side "
"of the screen."
msgstr ""
"Pendent l’apondon de lectors e volums pel burèu, los plaçar al costat "
"opausat de l’ecran."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:60
msgid "Shows a rectangle in the destination place during DnD"
msgstr "Fa veire un rectangle al lòc de destinacion pendent un lisar-depausar"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:61
msgid ""
"When doing a Drag'n'Drop operation, marks the place in the grid where the "
"icon will be put with a semitransparent rectangle."
msgstr ""
"Pendent una operacion de lisar-depausar, marca lo lòc per la grasilha ont "
"l’icòna serà plaçada amb un rectangle semi-transparent."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:65
msgid "Sort Special Folders - Home/Trash Drives."
msgstr "Triar los dossièr especial - Repertòri personal/Escobilhièr."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:66
msgid ""
"When arranging Icons on desktop, to sort and change the position of the "
"Home, Trash and mounted Network or External Drives"
msgstr ""
"En arrengar las icònas del burèu, per triar e cambiar la posicion del "
"repertòri personal, l’escobilhièr, los volums montats e ret"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:70
msgid "Keep Icons Arranged"
msgstr "Gardar las icònas arrengadas"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:71
msgid "Always keep Icons Arranged by the last arranged order"
msgstr "Totjorn gardar las icònas arrengadas pel darrièr òrdre causit"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:75
msgid "Arrange Order"
msgstr "Òrdre d’arrengament"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:76
msgid "Icons Arranged by this property"
msgstr "Icònas arrengadas per aquesta proprietat"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:80
msgid "Keep Icons Stacked"
msgstr "Gardar las icònas arrengadas"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:81
msgid "Always keep Icons Stacked, Similar types are grouped"
msgstr "Totjorn gardar las icònas arrengadas pel darrièr òrdre causit"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:85
msgid "Type of Files to not Stack"
msgstr "Tipe de fichièrs d’apilar pas"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:86
msgid "An Array of strings types, Don't Stack these types of files"
msgstr ""
"Un tablèu amb de cadenas de tèxte de tipes, apilar pas aquestes tipes de "
"fichièrs"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:91
msgid "Use Nemo instead of Nautilus to open folders."
msgstr "Utilizar Nemo allòc de Nautilus per dobrir los dossièrs."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:95
msgid "Add an emblem to links"
msgstr "Apondre una emblèma als ligams"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:96
msgid "Add an emblem to allow to identify soft links."
msgstr ""
"Apondre una emblèma per vos permetre d’identificar los ligams leugièrs."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:100
msgid "Use black for label text"
msgstr "Utilizar lo negre pel tèxt de labèl"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:101
msgid ""
"Paint the label text in black instead of white. Useful when using light "
"backgrounds."
msgstr ""
"Emplega lo negre pels tèxtes de labèl a la plaça del blanc. Util pendent "
"l’utilizacion de fonzes clars."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:105
msgid "Show a popup if running on X11Wayland"
msgstr "Afichar una fenèstra surgissenta en execucion sus X11Wayland"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:106
msgid ""
"Whether DING should show a popup if it is running on X11Wayland, or the user "
"decided to not show it anymore."
msgstr ""
"Indica se DING deu afichar una fenèstra surgissenta s'es en execucion jos "
"X11Wayland, o se l'utilizaire a decidit de l'afichar pas pus."
#~ msgid "Desktop icons"
#~ msgstr "Icònas de burèu"
#~ msgid ""
#~ "To configure Desktop Icons NG, do right-click in the desktop and choose "
#~ "the last item: 'Desktop Icons settings'"
#~ msgstr ""
#~ "Per configurar Desktop Icons NG, clicatz a drech pel burèu e causissètz "
#~ "« Paramètres icònas de burèu »"
#~ msgid "Do you want to run “{0}”, or display its contents?"
#~ msgstr "Volètz executar « 0 » o afichar son contengut ?"
#~ msgid "“{0}” is an executable text file."
#~ msgstr "« {0} » es un fichièr tèxte executable."
#~ msgid "Execute in a terminal"
#~ msgstr "Executar dins un terminal"
#~ msgid "Show"
#~ msgstr "Visualizar"
#~ msgid "Execute"
#~ msgstr "Executar"
#~ msgid "New folder"
#~ msgstr "Repertòri novèl"
desktop-icons-ng-49.0.5-c32667693d0831c29e3ab3f7bfeb675ea1531a00/po/pl.po 0000664 0000000 0000000 00000057043 15064747536 0023765 0 ustar 00root root 0000000 0000000 # Polish translation for desktop-icons.
# Copyright © 2018-2019 the desktop-icons authors.
# This file is distributed under the same license as the desktop-icons package.
# Maciej Karpiński , 2023"
# Paweł Piasek , 2022
# Piotr Drąg , 2018-2019.
# Aviary.pl , 2018-2019.
#
msgid ""
msgstr ""
"Project-Id-Version: desktop-icons\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-06-29 16:52+0200\n"
"PO-Revision-Date: 2023-06-15 21:45+0200\n"
"Last-Translator: Maciej Karpiński \n"
"Language-Team: \n"
"Language: pl\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%10>=2 && n%10<=4 && (n%100<10 "
"|| n%100>=20) ? 1 : 2);\n"
"X-Generator: Poedit 3.3.1\n"
#: app/askRenamePopup.js:49
msgid "Folder name"
msgstr "Nazwa katalogu"
#: app/askRenamePopup.js:49
msgid "File name"
msgstr "Nazwa pliku"
#: app/askRenamePopup.js:57 app/autoAr.js:305 app/desktopManager.js:1002
msgid "OK"
msgstr "OK"
#: app/askRenamePopup.js:57
msgid "Rename"
msgstr "Zmień nazwę"
#: app/autoAr.js:88
msgid "AutoAr is not installed"
msgstr "AutoAr jest nie zainstalowany"
#: app/autoAr.js:89
msgid ""
"To be able to work with compressed files, install file-roller and/or gir-1.2-"
"gnomeAutoAr"
msgstr ""
"Aby móc pracować z plikami skompresowanymi, zainstaluj file-roller lub gnome-"
"autoar"
#: app/autoAr.js:224
msgid "Extracting files"
msgstr "Rozpakuj pliki"
#: app/autoAr.js:241
msgid "Compressing files"
msgstr "Skompresuj pliki"
#: app/autoAr.js:297 app/autoAr.js:636 app/desktopManager.js:1004
#: app/fileItemMenu.js:474
msgid "Cancel"
msgstr "Anuluj"
#: app/autoAr.js:318 app/autoAr.js:619
msgid "Enter a password here"
msgstr "Wprowadź hasło"
#: app/autoAr.js:359
msgid "Removing partial file '${outputFile}'"
msgstr "Usuwanie częściowego pliku „${outputFile}”"
#: app/autoAr.js:378
msgid "Creating destination folder"
msgstr "Tworzenie katalogu docelowego"
#: app/autoAr.js:410
msgid "Extracting files into '${outputPath}'"
msgstr "Rozpakowanie plików do '${outputPath}'"
#: app/autoAr.js:442
msgid "Extraction completed"
msgstr "Rozpakowywanie zakończone"
#: app/autoAr.js:443
msgid "Extracting '${fullPathFile}' has been completed."
msgstr "Rozpakowywanie '${fullPathFile}' zostało zakończone."
# autoAr.js:443
#: app/autoAr.js:449
msgid "Extraction cancelled"
msgstr "Rozpakowywanie anulowane"
#: app/autoAr.js:450
msgid "Extracting '${fullPathFile}' has been cancelled by the user."
msgstr "Rozpakowanie '${fullPathFile}' zostało anulowane przez użytkownika."
#: app/autoAr.js:460
msgid "Passphrase required for ${filename}"
msgstr "Wymagane hasło dla ${filename}"
#: app/autoAr.js:463
msgid "Error during extraction"
msgstr "Błąd podczas rozpakowywania"
#: app/autoAr.js:492
msgid "Compressing files into '${outputFile}'"
msgstr "Kompresowanie plików do '${outputFile}'"
#: app/autoAr.js:505
msgid "Compression completed"
msgstr "Kompresja zakończona"
#: app/autoAr.js:506
msgid "Compressing files into '${outputFile}' has been completed."
msgstr "Kompresja plików do '${outputFile}' została zakończona."
#: app/autoAr.js:510 app/autoAr.js:517
msgid "Cancelled compression"
msgstr "Anulowano kompresje"
#: app/autoAr.js:511
msgid "The output file '${outputFile}' already exists."
msgstr "Plik wyjściowy '${outputFile}' już istnieje."
#: app/autoAr.js:518
msgid "Compressing files into '${outputFile}' has been cancelled by the user."
msgstr ""
"Kompresja plików do '${outputFile}' została anulowana przez użytkownika."
#: app/autoAr.js:521
msgid "Error during compression"
msgstr "Błąd podczas kompresji"
#: app/autoAr.js:554
msgid "Create archive"
msgstr "Utwórz archiwum"
#: app/autoAr.js:579
msgid "Archive name"
msgstr "Nazwa archiwum"
#: app/autoAr.js:614
msgid "Password"
msgstr "Hasło"
#: app/autoAr.js:633
msgid "Create"
msgstr "Utwórz"
#: app/autoAr.js:712
msgid "Compatible with all operating systems."
msgstr "Kompatybilne ze wszystkimi systemami operacyjnymi."
#: app/autoAr.js:718
msgid "Password protected .zip, must be installed on Windows and Mac."
msgstr ".zip zabezpieczony hasłem musi być zainstalowany na Windows i Mac."
#: app/autoAr.js:724
msgid "Smaller archives but Linux and Mac only."
msgstr "Bardziej skompresowane archiwa, tylko dla Linux'a i Mac'a."
#: app/autoAr.js:730
msgid "Smaller archives but must be installed on Windows and Mac."
msgstr ""
"Bardziej skompresowane archiwa, ale muszą być zainstalowane na Windows lub "
"Mac."
#: app/dbusUtils.js:69
msgid "\"${programName}\" is needed for Desktop Icons"
msgstr "\"${programName}\" jest potrzebny do działania Ikon Pulpitu"
#: app/dbusUtils.js:70
msgid ""
"For this functionality to work in Desktop Icons, you must install \"$"
"{programName}\" in your system."
msgstr ""
"Dla tej funkcjonalności musisz zainstalować\"${programName}\" w swoim "
"systemie."
#: app/desktopIconsUtil.js:154
msgid "Command not found"
msgstr "Nie odnaleziono polecenia"
#: app/desktopManager.js:259
msgid "Nautilus File Manager not found"
msgstr "Menedżer plików Nautilus nie został odnaleziony"
#: app/desktopManager.js:260
msgid "The Nautilus File Manager is mandatory to work with Desktop Icons NG."
msgstr "Menedżer plików Nautilus jest obowiązkowy do pracy z Desktop Icons NG."
#: app/desktopManager.js:964
msgid "Clear Current Selection before New Search"
msgstr ""
"Obecne zaznaczenie uniemożliwia nowe wyszukiwanie, odznacz obecne zaznaczenie"
#: app/desktopManager.js:1006
msgid "Find Files on Desktop"
msgstr "Znajdź pliki na Pulpicie"
#: app/desktopManager.js:1074 app/desktopManager.js:1786
msgid "New Folder"
msgstr "Nowy katalog"
#: app/desktopManager.js:1078
msgid "New Document"
msgstr "Nowy dokument"
#: app/desktopManager.js:1083
msgid "Paste"
msgstr "Wklej"
#: app/desktopManager.js:1087
msgid "Undo"
msgstr "Cofnij"
#: app/desktopManager.js:1091
msgid "Redo"
msgstr "Ponów"
#: app/desktopManager.js:1097
msgid "Select All"
msgstr "Zaznacz wszystko"
#: app/desktopManager.js:1105
msgid "Show Desktop in Files"
msgstr "Wyświetl pulpit w menedżerze plików"
#: app/desktopManager.js:1109 app/fileItemMenu.js:365
msgid "Open in Terminal"
msgstr "Otwórz w terminalu"
#: app/desktopManager.js:1115
msgid "Change Background…"
msgstr "Zmień tło…"
#: app/desktopManager.js:1126
msgid "Desktop Icons Settings"
msgstr "Ustawienia ikon na pulpicie"
#: app/desktopManager.js:1139
msgid "Display Settings"
msgstr "Ustawienia ekranu"
#: app/desktopManager.js:1799
#, fuzzy
msgid "Folder Creation Failed"
msgstr "Nazwa katalogu"
#: app/desktopManager.js:1800
msgid "Error while trying to create a Folder"
msgstr ""
#: app/desktopManager.js:1836
msgid "Template Creation Failed"
msgstr ""
#: app/desktopManager.js:1837
msgid "Error while trying to create a Document"
msgstr ""
#: app/desktopManager.js:1845
msgid "Arrange Icons"
msgstr "Rozmieść ikony"
#: app/desktopManager.js:1849
msgid "Arrange By..."
msgstr "Sortuj według..."
#: app/desktopManager.js:1858
msgid "Keep Arranged..."
msgstr "Auto rozmieszczanie..."
#: app/desktopManager.js:1862
msgid "Keep Stacked by type..."
msgstr "Grupuj wg. typu..."
#: app/desktopManager.js:1867
msgid "Sort Home/Drives/Trash..."
msgstr "Sortuj katalog domowy/Napędy/Kosz..."
#: app/desktopManager.js:1873
msgid "Sort by Name"
msgstr "Nazwa"
#: app/desktopManager.js:1875
msgid "Sort by Name Descending"
msgstr "Nazwa (malejąco)"
#: app/desktopManager.js:1878
msgid "Sort by Modified Time"
msgstr "Data modyfikacji"
#: app/desktopManager.js:1881
msgid "Sort by Type"
msgstr "Typ elementu"
#: app/desktopManager.js:1884
msgid "Sort by Size"
msgstr "Rozmiar"
#. * TRANSLATORS: when using a screen reader, this is the text read when a folder is
#. selected. Example: if a folder named "things" is selected, it will say "things Folder"
#: app/fileItem.js:64
msgid "${VisibleName} Folder"
msgstr ""
#. * TRANSLATORS: when using a screen reader, this is the text read when a normal file is
#. selected. Example: if a file named "my_picture.jpg" is selected, it will say "my_picture.jpg File"
#: app/fileItem.js:68
msgid "${VisibleName} File"
msgstr ""
#. TRANSLATORS: "Home" is the text that will be shown in the user's personal folder
#: app/fileItem.js:72 app/fileItem.js:203
msgid "Home"
msgstr "Katalog domowy"
#. * TRANSLATORS: when using a screen reader, this is the text read when the trash folder is
#. selected.
#: app/fileItem.js:77
#, fuzzy
msgid "Trash"
msgstr "Opróżnij kosz"
#. * TRANSLATORS: when using a screen reader, this is the text read when an external drive is
#. selected. Example: if a USB stick named "my_portable" is selected, it will say "my_portable Drive"
#: app/fileItem.js:82
msgid "${VisibleName} Drive"
msgstr ""
#. * TRANSLATORS: when using a screen reader, this is the text read when a stack is
#. selected. Example: if a stack named "pictures" is selected, it will say "pictures Stack"
#: app/fileItem.js:87
msgid "${VisibleName} Stack"
msgstr ""
#: app/fileItem.js:295
#, fuzzy
msgid "Error while reading Desktop file"
msgstr "Uszkodzony plik pulpitu"
#: app/fileItem.js:337
msgid "Broken Link"
msgstr "Wadliwy link (skrót)"
#: app/fileItem.js:338
msgid "Can not open this File because it is a Broken Symlink"
msgstr "Nie można otworzyć pliku ponieważ jest to uszkodzony link symboliczny"
#: app/fileItem.js:370
#, fuzzy
msgid "Can't open the file"
msgstr "Uruchom plik"
#: app/fileItem.js:396
msgid "Broken Desktop File"
msgstr "Uszkodzony plik pulpitu"
#: app/fileItem.js:397
msgid ""
"This .desktop file has errors or points to a program without permissions. It "
"can not be executed.\n"
"\n"
"\tEdit the file to set the correct executable Program."
msgstr ""
"Ten plik .desktop zawiera błędy lub wskazuje na program, który nie ma "
"odpowiednich praw dostępu. Nie może zostać wykonany.\n"
"\n"
"\tEdytuj plik, by ustawić poprawny wykonywalny program"
#: app/fileItem.js:403
msgid "Invalid Permissions on Desktop File"
msgstr "Nieprawidłowe uprawnienia pliku pulpitu"
#: app/fileItem.js:404
msgid ""
"This .desktop File has incorrect Permissions. Right Click to edit "
"Properties, then:\n"
msgstr ""
"Ten plik .desktop ma nieprawidłowe uprawnienia. Kliknij prawym przyciskiem "
"myszy, aby edytować Właściwości, a następnie:\n"
#: app/fileItem.js:406
msgid ""
"\n"
"Set Permissions, in \"Others Access\", \"Read Only\" or \"None\""
msgstr ""
"\n"
"Ustaw Uprawnienia, „Inni Dostęp”, „Tylko do odczytu” lub „Brak”"
#: app/fileItem.js:409
msgid ""
"\n"
"Enable option, \"Allow Executing File as a Program\""
msgstr ""
"\n"
"Włącz opcję „Plik wykonywalny jako program”"
#: app/fileItem.js:417
msgid ""
"This .desktop file is not trusted, it can not be launched. To enable "
"launching, right-click, then:\n"
"\n"
"Enable \"Allow Launching\""
msgstr ""
"Ten plik .desktop nie jest zaufany, nie można go uruchomić. Aby włączyć "
"uruchamianie, kliknij prawym przyciskiem myszy, a następnie:\n"
"\n"
"Włącz opcję „Zezwalaj na uruchamianie”"
#: app/fileItem.js:620
msgid "Failed to set execution flag"
msgstr ""
#: app/fileItem.js:632 app/fileItem.js:639
msgid "Could not apply discrete GPU environment"
msgstr ""
#: app/fileItem.js:668
msgid "Could not find discrete GPU data"
msgstr ""
#: app/fileItem.js:793
msgid "Failed to set metadata::trusted flag"
msgstr ""
#: app/fileItemMenu.js:143
msgid "Open All..."
msgstr "Otwórz wiele..."
#: app/fileItemMenu.js:143
msgid "Open"
msgstr "Otwórz"
#: app/fileItemMenu.js:160
msgid "Stack This Type"
msgstr "Zwiń ten typ pliku"
#: app/fileItemMenu.js:160
msgid "Unstack This Type"
msgstr "Rozwiń ten typ pliku"
#: app/fileItemMenu.js:173
msgid "Scripts"
msgstr "Skrypty"
#: app/fileItemMenu.js:178
msgid "Open All With Other Application..."
msgstr "Otwórz za pomocą innego programu..."
#: app/fileItemMenu.js:178
msgid "Open With Other Application"
msgstr "Otwórz za pomocą innego programu"
#: app/fileItemMenu.js:184
msgid "Launch using Dedicated Graphics Card"
msgstr "Uruchom za pomocą dedykowanej karty graficznej"
#: app/fileItemMenu.js:195
msgid "Run as a program"
msgstr "Uruchom jako program"
#: app/fileItemMenu.js:203
msgid "Cut"
msgstr "Wytnij"
#: app/fileItemMenu.js:210
msgid "Copy"
msgstr "Skopiuj"
#: app/fileItemMenu.js:218
msgid "Rename…"
msgstr "Zmień nazwę…"
#: app/fileItemMenu.js:228
msgid "Move to Trash"
msgstr "Przenieś do kosza"
#: app/fileItemMenu.js:236
msgid "Delete permanently"
msgstr "Usuń trwale"
#: app/fileItemMenu.js:246
msgid "Don't Allow Launching"
msgstr "Nie zezwalaj na uruchamianie"
#: app/fileItemMenu.js:246
msgid "Allow Launching"
msgstr "Zezwól na uruchamianie"
#: app/fileItemMenu.js:259
msgid "Empty Trash"
msgstr "Opróżnij kosz"
#: app/fileItemMenu.js:272
msgid "Eject"
msgstr "Wysuń"
#: app/fileItemMenu.js:280
msgid "Unmount"
msgstr "Odmontuj"
#: app/fileItemMenu.js:294 app/fileItemMenu.js:301
msgid "Extract Here"
msgstr "Rozpakuj tutaj"
#: app/fileItemMenu.js:308
msgid "Extract To..."
msgstr "Rozpakuj do…"
#: app/fileItemMenu.js:317
msgid "Send to..."
msgstr "Wyślij do…"
#: app/fileItemMenu.js:325
msgid "Compress {0} folder"
msgid_plural "Compress {0} folders"
msgstr[0] "Kompresuj {0} katalog"
msgstr[1] "Kompresuj {0} katalogi"
msgstr[2] "Kompresuj {0} katalogów"
#: app/fileItemMenu.js:332
msgid "Compress {0} file"
msgid_plural "Compress {0} files"
msgstr[0] "Kompresuj {0} plik"
msgstr[1] "Kompresuj {0} pliki"
msgstr[2] "Kompresuj {0} plików"
#: app/fileItemMenu.js:340
msgid "New Folder with {0} item"
msgid_plural "New Folder with {0} items"
msgstr[0] "Nowy folder zawierający {0} element"
msgstr[1] "Nowy folder zawierający {0} elementy"
msgstr[2] "Nowy folder zawierający {0} elementów"
#: app/fileItemMenu.js:351
msgid "Common Properties"
msgstr "Właściwości"
#: app/fileItemMenu.js:351
msgid "Properties"
msgstr "Właściwości"
#: app/fileItemMenu.js:358
msgid "Show All in Files"
msgstr "Wyświetl w menedżerze plików"
#: app/fileItemMenu.js:358
msgid "Show in Files"
msgstr "Wyświetl w menedżerze plików"
#: app/fileItemMenu.js:449
#, fuzzy
msgid "No Extraction Folder"
msgstr "Rozpakowywanie zakończone"
#: app/fileItemMenu.js:450
msgid "Unable to extract File, extraction Folder Does not Exist"
msgstr ""
#: app/fileItemMenu.js:470
msgid "Select Extract Destination"
msgstr "Wybierz miejsce rozpakowania archiwum"
#: app/fileItemMenu.js:475
msgid "Select"
msgstr "Wybierz"
#: app/fileItemMenu.js:516
msgid "Can not email a Directory"
msgstr "Nie można wysłać Katalogu"
#: app/fileItemMenu.js:517
msgid "Selection includes a Directory, compress the directory to a file first."
msgstr "Zaznaczenie zawiera Katalog, najpierw skompresuj Katalog do pliku."
#: app/notifyX11UnderWayland.js:37
msgid "Desktop Icons NG is running under X11Wayland"
msgstr ""
#: app/notifyX11UnderWayland.js:38
msgid ""
"It seems that you have your system configured to force GTK to use X11. This "
"works, but it's suboptimal. You should check your system configuration to "
"fix this."
msgstr ""
#: app/notifyX11UnderWayland.js:39 app/showErrorPopup.js:39
msgid "Close"
msgstr "Zamknij"
#: app/notifyX11UnderWayland.js:47
msgid "Don't show this message anymore."
msgstr ""
#: app/preferences.js:91
msgid "Settings"
msgstr "Ustawienia"
#: app/prefswindow.js:64
msgid "Size for the desktop icons"
msgstr "Rozmiar ikon na pulpicie"
#: app/prefswindow.js:64
msgid "Tiny"
msgstr "Malutki"
#: app/prefswindow.js:64
msgid "Small"
msgstr "Mały"
#: app/prefswindow.js:64
msgid "Standard"
msgstr "Standardowy"
#: app/prefswindow.js:64
msgid "Large"
msgstr "Duży"
#: app/prefswindow.js:65
msgid "Show the personal folder in the desktop"
msgstr "Katalog domowy na pulpicie"
#: app/prefswindow.js:66
msgid "Show the trash icon in the desktop"
msgstr "Kosz na pulpicie"
#: app/prefswindow.js:67 schemas/org.gnome.shell.extensions.ding.gschema.xml:45
msgid "Show external drives in the desktop"
msgstr "Pokaż dyski zewnętrzne na pulpicie"
#: app/prefswindow.js:68 schemas/org.gnome.shell.extensions.ding.gschema.xml:50
msgid "Show network drives in the desktop"
msgstr "Pokaż dyski sieciowe na pulpicie"
#: app/prefswindow.js:71
msgid "New icons alignment"
msgstr "Wyrównanie nowych ikon"
#: app/prefswindow.js:73
msgid "Top-left corner"
msgstr "Do lewego górnego rogu"
#: app/prefswindow.js:74
msgid "Top-right corner"
msgstr "Do prawego górnego rogu"
#: app/prefswindow.js:75
msgid "Bottom-left corner"
msgstr "Do lewego dolnego rogu"
#: app/prefswindow.js:76
msgid "Bottom-right corner"
msgstr "Do prawego dolnego rogu"
#: app/prefswindow.js:78 schemas/org.gnome.shell.extensions.ding.gschema.xml:55
msgid "Add new drives to the opposite side of the screen"
msgstr "Dodaj nowe dyski po przeciwnej stronie ekranu"
#: app/prefswindow.js:79
msgid "Highlight the drop place during Drag'n'Drop"
msgstr "Podświetl miejsce upuszczenia pliku podczas przeciągania"
#: app/prefswindow.js:80 schemas/org.gnome.shell.extensions.ding.gschema.xml:90
msgid "Use Nemo to open folders"
msgstr "Użyj Nemo do otwierania katalogów"
#: app/prefswindow.js:82
msgid "Add an emblem to soft links"
msgstr "Dodaj emblemat do miękkich linków"
#: app/prefswindow.js:84
msgid "Use dark text in icon labels"
msgstr "Używaj ciemnego tekstu w etykietach ikon"
#: app/prefswindow.js:91
msgid "Settings shared with Nautilus"
msgstr "Ustawienia współdzielone z Nautilus"
#: app/prefswindow.js:113
msgid "Click type for open files"
msgstr "Wybierz sposób otwierania elementów"
#: app/prefswindow.js:113
msgid "Single click"
msgstr "Pojedyncze kliknięcie"
#: app/prefswindow.js:113
msgid "Double click"
msgstr "Podwójne kliknięcie"
#: app/prefswindow.js:114
msgid "Show hidden files"
msgstr "Pokaż ukryte pliki"
#: app/prefswindow.js:115
msgid "Show a context menu item to delete permanently"
msgstr "Pokaż element usuń trwale w menu kontekstowym"
#: app/prefswindow.js:120
msgid "Action to do when launching a program from the desktop"
msgstr "Czynność do wykonania podczas uruchamiania programu z pulpitu"
#: app/prefswindow.js:121
msgid "Display the content of the file"
msgstr "Pokaż zawartość pliku"
#: app/prefswindow.js:122
msgid "Launch the file"
msgstr "Uruchom plik"
#: app/prefswindow.js:123
msgid "Ask what to do"
msgstr "Zapytaj co zrobić"
#: app/prefswindow.js:129
msgid "Show image thumbnails"
msgstr "Pokazuj podgląd obrazów"
#: app/prefswindow.js:130
msgid "Never"
msgstr "Nigdy"
#: app/prefswindow.js:131
msgid "Local files only"
msgstr "Tylko dla lokalnych plików"
#: app/prefswindow.js:132
msgid "Always"
msgstr "Zawsze"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:25
msgid "Icon size"
msgstr "Rozmiar ikon"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:26
msgid "Set the size for the desktop icons."
msgstr "Ustawia rozmiar ikon na pulpicie."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:30
msgid "Show personal folder"
msgstr "Katalog domowy"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:31
msgid "Show the personal folder in the desktop."
msgstr "Wyświetla katalog domowy na pulpicie."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:35
msgid "Show trash icon"
msgstr "Kosz"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:36
msgid "Show the trash icon in the desktop."
msgstr "Wyświetla kosz na pulpicie."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:40
msgid "New icons start corner"
msgstr "Wyrównanie ikon"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:41
msgid "Set the corner from where the icons will start to be placed."
msgstr "Ustaw róg od którego zaczną być umieszczane ikony."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:46
msgid "Show the disk drives connected to the computer."
msgstr "Pokaż dyski podłączone do komputera."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:51
msgid "Show mounted network volumes in the desktop."
msgstr "Pokaż zamontowane woluminy sieciowe na pulpicie."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:56
msgid ""
"When adding drives and volumes to the desktop, add them to the opposite side "
"of the screen."
msgstr ""
"Dodając dyski i woluminy do pulpitu, dodaj je po przeciwnej stronie ekranu."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:60
msgid "Shows a rectangle in the destination place during DnD"
msgstr ""
"Pokarz prostokąt w miejscu docelowym podczas Przeciągania i Upuszczania"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:61
msgid ""
"When doing a Drag'n'Drop operation, marks the place in the grid where the "
"icon will be put with a semitransparent rectangle."
msgstr ""
"Kiedy Przeciągasz i Upuszczasz, oznacz miejsce w siatce ikon,gdzie ikona "
"zostanie upuszczana za pomocą półprzeźroczystego prostokąta."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:65
msgid "Sort Special Folders - Home/Trash Drives."
msgstr "Sortuj Katalogi Specjalne - Katalog domowy/Kosz/Dyski."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:66
msgid ""
"When arranging Icons on desktop, to sort and change the position of the "
"Home, Trash and mounted Network or External Drives"
msgstr ""
"Kiedy porządkujesz Ikony na pulpicie, sortuj i zmień pozycję:Katalogu "
"domowego, Kosza oraz Pamięci Sieciowych i Zewnętrznych"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:70
msgid "Keep Icons Arranged"
msgstr "Zachowaj autorozmieszczanie ikon"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:71
msgid "Always keep Icons Arranged by the last arranged order"
msgstr "Zawsze zachowaj autorozmieszczanie ikon wg. ostatniego porządku"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:75
msgid "Arrange Order"
msgstr "Porządek autorozmieszczania"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:76
msgid "Icons Arranged by this property"
msgstr "Ikony autorozmieszczane są na podstawie tej właściwości"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:80
msgid "Keep Icons Stacked"
msgstr "Zachowaj Grupowanie Ikon"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:81
msgid "Always keep Icons Stacked, Similar types are grouped"
msgstr "Zawsze zachowuj grupowanie ikon, podobne typy są grupowane"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:85
msgid "Type of Files to not Stack"
msgstr "Typ plików, którego nie grupować"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:86
msgid "An Array of strings types, Don't Stack these types of files"
msgstr "Tablica napisów-typów, nie grupuj tych typów"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:91
msgid "Use Nemo instead of Nautilus to open folders."
msgstr "Użyj Nemo zamiast Nautilus'a do otwierania katalogów."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:95
msgid "Add an emblem to links"
msgstr "Dodaj emblemat do linków"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:96
msgid "Add an emblem to allow to identify soft links."
msgstr "Dodaj emblemat, aby umożliwić identyfikację miękkich linków."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:100
msgid "Use black for label text"
msgstr "Użyj czarnego tekstu etykiety"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:101
msgid ""
"Paint the label text in black instead of white. Useful when using light "
"backgrounds."
msgstr ""
"Ustaw tekst etykiety na czarno zamiast na biało. Przydatne przy korzystaniu "
"z jasnego tła."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:105
msgid "Show a popup if running on X11Wayland"
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:106
msgid ""
"Whether DING should show a popup if it is running on X11Wayland, or the user "
"decided to not show it anymore."
msgstr ""
#, fuzzy
#~ msgid "Desktop icons"
#~ msgstr "Ustawienia ikon na pulpicie"
desktop-icons-ng-49.0.5-c32667693d0831c29e3ab3f7bfeb675ea1531a00/po/pt_BR.po 0000664 0000000 0000000 00000056613 15064747536 0024362 0 ustar 00root root 0000000 0000000 # Brazilian Portuguese translation for desktop-icons.
# Copyright (C) 2019 desktop-icons's COPYRIGHT HOLDER
# This file is distributed under the same license as the desktop-icons package.
# Enrico Nicoletto , 2018.
# Rafael Fontenelle , 2018-2019.
# Fernando Alves , 2020.
# Diolinux , 2021.
#
msgid ""
msgstr ""
"Project-Id-Version: desktop-icons master\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-06-29 16:52+0200\n"
"PO-Revision-Date: 2019-04-29 17:35-0300\n"
"Last-Translator: Rafael Fontenelle \n"
"Language-Team: Brazilian Portuguese \n"
"Language: pt_BR\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n > 1)\n"
"X-Generator: Gtranslator 3.32.0\n"
#: app/askRenamePopup.js:49
#, fuzzy
msgid "Folder name"
msgstr "Nome da nova pasta"
#: app/askRenamePopup.js:49
#, fuzzy
msgid "File name"
msgstr "Renomear…"
#: app/askRenamePopup.js:57 app/autoAr.js:305 app/desktopManager.js:1002
msgid "OK"
msgstr "OK"
#: app/askRenamePopup.js:57
#, fuzzy
msgid "Rename"
msgstr "Renomear…"
#: app/autoAr.js:88
msgid "AutoAr is not installed"
msgstr ""
#: app/autoAr.js:89
msgid ""
"To be able to work with compressed files, install file-roller and/or gir-1.2-"
"gnomeAutoAr"
msgstr ""
#: app/autoAr.js:224
#, fuzzy
msgid "Extracting files"
msgstr "Extrair aqui"
#: app/autoAr.js:241
#, fuzzy
msgid "Compressing files"
msgstr "Comprimir {0} arquivo"
#: app/autoAr.js:297 app/autoAr.js:636 app/desktopManager.js:1004
#: app/fileItemMenu.js:474
msgid "Cancel"
msgstr "Cancelar"
#: app/autoAr.js:318 app/autoAr.js:619
msgid "Enter a password here"
msgstr ""
#: app/autoAr.js:359
msgid "Removing partial file '${outputFile}'"
msgstr ""
#: app/autoAr.js:378
msgid "Creating destination folder"
msgstr ""
#: app/autoAr.js:410
msgid "Extracting files into '${outputPath}'"
msgstr ""
#: app/autoAr.js:442
#, fuzzy
msgid "Extraction completed"
msgstr "Extrair aqui"
#: app/autoAr.js:443
msgid "Extracting '${fullPathFile}' has been completed."
msgstr ""
#: app/autoAr.js:449
#, fuzzy
msgid "Extraction cancelled"
msgstr "Extrair aqui"
#: app/autoAr.js:450
msgid "Extracting '${fullPathFile}' has been cancelled by the user."
msgstr ""
#: app/autoAr.js:460
msgid "Passphrase required for ${filename}"
msgstr ""
#: app/autoAr.js:463
msgid "Error during extraction"
msgstr ""
#: app/autoAr.js:492
msgid "Compressing files into '${outputFile}'"
msgstr ""
#: app/autoAr.js:505
msgid "Compression completed"
msgstr ""
#: app/autoAr.js:506
msgid "Compressing files into '${outputFile}' has been completed."
msgstr ""
#: app/autoAr.js:510 app/autoAr.js:517
msgid "Cancelled compression"
msgstr ""
#: app/autoAr.js:511
msgid "The output file '${outputFile}' already exists."
msgstr ""
#: app/autoAr.js:518
msgid "Compressing files into '${outputFile}' has been cancelled by the user."
msgstr ""
#: app/autoAr.js:521
msgid "Error during compression"
msgstr ""
#: app/autoAr.js:554
#, fuzzy
msgid "Create archive"
msgstr "Criar"
#: app/autoAr.js:579
#, fuzzy
msgid "Archive name"
msgstr "Renomear…"
#: app/autoAr.js:614
msgid "Password"
msgstr ""
#: app/autoAr.js:633
msgid "Create"
msgstr "Criar"
#: app/autoAr.js:712
msgid "Compatible with all operating systems."
msgstr ""
#: app/autoAr.js:718
msgid "Password protected .zip, must be installed on Windows and Mac."
msgstr ""
#: app/autoAr.js:724
msgid "Smaller archives but Linux and Mac only."
msgstr ""
#: app/autoAr.js:730
msgid "Smaller archives but must be installed on Windows and Mac."
msgstr ""
#: app/dbusUtils.js:69
msgid "\"${programName}\" is needed for Desktop Icons"
msgstr ""
#: app/dbusUtils.js:70
msgid ""
"For this functionality to work in Desktop Icons, you must install \"$"
"{programName}\" in your system."
msgstr ""
#: app/desktopIconsUtil.js:154
msgid "Command not found"
msgstr "Comando não encontrado"
#: app/desktopManager.js:259
msgid "Nautilus File Manager not found"
msgstr "Gerenciador de arquivos Nautilus não encontrado"
#: app/desktopManager.js:260
msgid "The Nautilus File Manager is mandatory to work with Desktop Icons NG."
msgstr ""
"O gerenciador de arquivos Nautilus é um requisito para a extensão Desktop "
"Icons NG funcionar."
#: app/desktopManager.js:964
msgid "Clear Current Selection before New Search"
msgstr ""
#: app/desktopManager.js:1006
msgid "Find Files on Desktop"
msgstr ""
#: app/desktopManager.js:1074 app/desktopManager.js:1786
msgid "New Folder"
msgstr "Nova pasta"
#: app/desktopManager.js:1078
msgid "New Document"
msgstr "Novo documento"
#: app/desktopManager.js:1083
msgid "Paste"
msgstr "Colar"
#: app/desktopManager.js:1087
msgid "Undo"
msgstr "Desfazer"
#: app/desktopManager.js:1091
msgid "Redo"
msgstr "Refazer"
#: app/desktopManager.js:1097
#, fuzzy
msgid "Select All"
msgstr "Selecionar todos"
#: app/desktopManager.js:1105
msgid "Show Desktop in Files"
msgstr "Mostrar a área de trabalho nos Arquivos"
#: app/desktopManager.js:1109 app/fileItemMenu.js:365
msgid "Open in Terminal"
msgstr "Abrir no terminal"
#: app/desktopManager.js:1115
msgid "Change Background…"
msgstr "Alterar plano de fundo…"
#: app/desktopManager.js:1126
#, fuzzy
msgid "Desktop Icons Settings"
msgstr "Configurações dos ícones no Desktop"
#: app/desktopManager.js:1139
msgid "Display Settings"
msgstr "Configurações de exibição"
#: app/desktopManager.js:1799
#, fuzzy
msgid "Folder Creation Failed"
msgstr "Nome da nova pasta"
#: app/desktopManager.js:1800
#, fuzzy
msgid "Error while trying to create a Folder"
msgstr "Erro ao excluir os arquivos"
#: app/desktopManager.js:1836
msgid "Template Creation Failed"
msgstr ""
#: app/desktopManager.js:1837
msgid "Error while trying to create a Document"
msgstr ""
#: app/desktopManager.js:1845
msgid "Arrange Icons"
msgstr "Ordenar Ícones"
#: app/desktopManager.js:1849
msgid "Arrange By..."
msgstr "Ordenar por..."
#: app/desktopManager.js:1858
msgid "Keep Arranged..."
msgstr "Manter Ordenado..."
#: app/desktopManager.js:1862
msgid "Keep Stacked by type..."
msgstr ""
#: app/desktopManager.js:1867
msgid "Sort Home/Drives/Trash..."
msgstr "Ordenar Home/Drives/Lixeira..."
#: app/desktopManager.js:1873
msgid "Sort by Name"
msgstr "Ordenar por Nome"
#: app/desktopManager.js:1875
msgid "Sort by Name Descending"
msgstr "Ordenar por Nome de forma descendente"
#: app/desktopManager.js:1878
msgid "Sort by Modified Time"
msgstr "Ordenar por data de modificação"
#: app/desktopManager.js:1881
msgid "Sort by Type"
msgstr "Ordenar por Tipo"
#: app/desktopManager.js:1884
msgid "Sort by Size"
msgstr "Ordenar por Tamanho"
#. * TRANSLATORS: when using a screen reader, this is the text read when a folder is
#. selected. Example: if a folder named "things" is selected, it will say "things Folder"
#: app/fileItem.js:64
msgid "${VisibleName} Folder"
msgstr ""
#. * TRANSLATORS: when using a screen reader, this is the text read when a normal file is
#. selected. Example: if a file named "my_picture.jpg" is selected, it will say "my_picture.jpg File"
#: app/fileItem.js:68
msgid "${VisibleName} File"
msgstr ""
#. TRANSLATORS: "Home" is the text that will be shown in the user's personal folder
#: app/fileItem.js:72 app/fileItem.js:203
msgid "Home"
msgstr "Pasta pessoal"
#. * TRANSLATORS: when using a screen reader, this is the text read when the trash folder is
#. selected.
#: app/fileItem.js:77
#, fuzzy
msgid "Trash"
msgstr "Esvaziar lixeira"
#. * TRANSLATORS: when using a screen reader, this is the text read when an external drive is
#. selected. Example: if a USB stick named "my_portable" is selected, it will say "my_portable Drive"
#: app/fileItem.js:82
msgid "${VisibleName} Drive"
msgstr ""
#. * TRANSLATORS: when using a screen reader, this is the text read when a stack is
#. selected. Example: if a stack named "pictures" is selected, it will say "pictures Stack"
#: app/fileItem.js:87
msgid "${VisibleName} Stack"
msgstr ""
#: app/fileItem.js:295
#, fuzzy
msgid "Error while reading Desktop file"
msgstr "Erro ao excluir os arquivos"
#: app/fileItem.js:337
msgid "Broken Link"
msgstr ""
#: app/fileItem.js:338
msgid "Can not open this File because it is a Broken Symlink"
msgstr ""
#: app/fileItem.js:370
#, fuzzy
msgid "Can't open the file"
msgstr "Executar o arquivo"
#: app/fileItem.js:396
#, fuzzy
msgid "Broken Desktop File"
msgstr "Mostrar a área de trabalho nos Arquivos"
#: app/fileItem.js:397
msgid ""
"This .desktop file has errors or points to a program without permissions. It "
"can not be executed.\n"
"\n"
"\tEdit the file to set the correct executable Program."
msgstr ""
#: app/fileItem.js:403
msgid "Invalid Permissions on Desktop File"
msgstr ""
#: app/fileItem.js:404
msgid ""
"This .desktop File has incorrect Permissions. Right Click to edit "
"Properties, then:\n"
msgstr ""
#: app/fileItem.js:406
msgid ""
"\n"
"Set Permissions, in \"Others Access\", \"Read Only\" or \"None\""
msgstr ""
#: app/fileItem.js:409
msgid ""
"\n"
"Enable option, \"Allow Executing File as a Program\""
msgstr ""
#: app/fileItem.js:417
msgid ""
"This .desktop file is not trusted, it can not be launched. To enable "
"launching, right-click, then:\n"
"\n"
"Enable \"Allow Launching\""
msgstr ""
#: app/fileItem.js:620
msgid "Failed to set execution flag"
msgstr ""
#: app/fileItem.js:632 app/fileItem.js:639
msgid "Could not apply discrete GPU environment"
msgstr ""
#: app/fileItem.js:668
msgid "Could not find discrete GPU data"
msgstr ""
#: app/fileItem.js:793
msgid "Failed to set metadata::trusted flag"
msgstr ""
#: app/fileItemMenu.js:143
msgid "Open All..."
msgstr "Abrir todos..."
#: app/fileItemMenu.js:143
msgid "Open"
msgstr "Abrir"
#: app/fileItemMenu.js:160
msgid "Stack This Type"
msgstr ""
#: app/fileItemMenu.js:160
msgid "Unstack This Type"
msgstr ""
#: app/fileItemMenu.js:173
msgid "Scripts"
msgstr "Scripts"
#: app/fileItemMenu.js:178
#, fuzzy
msgid "Open All With Other Application..."
msgstr "Abrir com outro aplicativo"
#: app/fileItemMenu.js:178
msgid "Open With Other Application"
msgstr "Abrir com outro aplicativo"
#: app/fileItemMenu.js:184
msgid "Launch using Dedicated Graphics Card"
msgstr "Abrir usando placa de vídeo dedicada"
#: app/fileItemMenu.js:195
msgid "Run as a program"
msgstr ""
#: app/fileItemMenu.js:203
msgid "Cut"
msgstr "Recortar"
#: app/fileItemMenu.js:210
msgid "Copy"
msgstr "Copiar"
#: app/fileItemMenu.js:218
msgid "Rename…"
msgstr "Renomear…"
#: app/fileItemMenu.js:228
msgid "Move to Trash"
msgstr "Mover para a lixeira"
#: app/fileItemMenu.js:236
msgid "Delete permanently"
msgstr "Excluir permanentemente"
#: app/fileItemMenu.js:246
#, fuzzy
msgid "Don't Allow Launching"
msgstr "Não permitir iniciar"
#: app/fileItemMenu.js:246
msgid "Allow Launching"
msgstr "Permitir iniciar"
#: app/fileItemMenu.js:259
msgid "Empty Trash"
msgstr "Esvaziar lixeira"
#: app/fileItemMenu.js:272
msgid "Eject"
msgstr "Ejetar"
#: app/fileItemMenu.js:280
msgid "Unmount"
msgstr "Desmontar"
#: app/fileItemMenu.js:294 app/fileItemMenu.js:301
msgid "Extract Here"
msgstr "Extrair aqui"
#: app/fileItemMenu.js:308
msgid "Extract To..."
msgstr "Extrair para…"
#: app/fileItemMenu.js:317
msgid "Send to..."
msgstr "Enviar para..."
#: app/fileItemMenu.js:325
#, fuzzy
msgid "Compress {0} folder"
msgid_plural "Compress {0} folders"
msgstr[0] "Comprimir {0} arquivo"
msgstr[1] "Comprimir {0} arquivos"
#: app/fileItemMenu.js:332
msgid "Compress {0} file"
msgid_plural "Compress {0} files"
msgstr[0] "Comprimir {0} arquivo"
msgstr[1] "Comprimir {0} arquivos"
#: app/fileItemMenu.js:340
msgid "New Folder with {0} item"
msgid_plural "New Folder with {0} items"
msgstr[0] "Nova pasta com {0} item"
msgstr[1] "Nova pasta com {0} itens"
#: app/fileItemMenu.js:351
#, fuzzy
msgid "Common Properties"
msgstr "Propriedades"
#: app/fileItemMenu.js:351
msgid "Properties"
msgstr "Propriedades"
#: app/fileItemMenu.js:358
#, fuzzy
msgid "Show All in Files"
msgstr "Mostrar todos no gestor de arquivos"
#: app/fileItemMenu.js:358
msgid "Show in Files"
msgstr "Mostrar no gestor de arquivos"
#: app/fileItemMenu.js:449
#, fuzzy
msgid "No Extraction Folder"
msgstr "Extrair aqui"
#: app/fileItemMenu.js:450
msgid "Unable to extract File, extraction Folder Does not Exist"
msgstr ""
#: app/fileItemMenu.js:470
msgid "Select Extract Destination"
msgstr "Selecionar destino da extração"
#: app/fileItemMenu.js:475
#, fuzzy
msgid "Select"
msgstr "Selecionar todos"
#: app/fileItemMenu.js:516
msgid "Can not email a Directory"
msgstr "Não é possível enviar um diretório por email"
#: app/fileItemMenu.js:517
msgid "Selection includes a Directory, compress the directory to a file first."
msgstr ""
"Seleção inclui um diretório, comprima o diretório em um arquivo primeiro"
#: app/notifyX11UnderWayland.js:37
msgid "Desktop Icons NG is running under X11Wayland"
msgstr ""
#: app/notifyX11UnderWayland.js:38
msgid ""
"It seems that you have your system configured to force GTK to use X11. This "
"works, but it's suboptimal. You should check your system configuration to "
"fix this."
msgstr ""
#: app/notifyX11UnderWayland.js:39 app/showErrorPopup.js:39
msgid "Close"
msgstr "Fechar"
#: app/notifyX11UnderWayland.js:47
msgid "Don't show this message anymore."
msgstr ""
#: app/preferences.js:91
msgid "Settings"
msgstr "Configurações"
#: app/prefswindow.js:64
msgid "Size for the desktop icons"
msgstr "Tamanho para os ícones da área de trabalho"
#: app/prefswindow.js:64
msgid "Tiny"
msgstr "Muito pequeno"
#: app/prefswindow.js:64
msgid "Small"
msgstr "Pequeno"
#: app/prefswindow.js:64
msgid "Standard"
msgstr "Padrão"
#: app/prefswindow.js:64
msgid "Large"
msgstr "Grande"
#: app/prefswindow.js:65
msgid "Show the personal folder in the desktop"
msgstr "Mostrar a pasta pessoal na área de trabalho"
#: app/prefswindow.js:66
msgid "Show the trash icon in the desktop"
msgstr "Mostrar o ícone da lixeira na área de trabalho"
#: app/prefswindow.js:67 schemas/org.gnome.shell.extensions.ding.gschema.xml:45
#, fuzzy
msgid "Show external drives in the desktop"
msgstr "Mostrar dispositivos externos na área de trabalho"
#: app/prefswindow.js:68 schemas/org.gnome.shell.extensions.ding.gschema.xml:50
#, fuzzy
msgid "Show network drives in the desktop"
msgstr "Mostrar dispositivos da rede na área de trabalho."
#: app/prefswindow.js:71
#, fuzzy
msgid "New icons alignment"
msgstr "Posição dos ícones novos"
#: app/prefswindow.js:73
msgid "Top-left corner"
msgstr "Canto superior esquerdo"
#: app/prefswindow.js:74
msgid "Top-right corner"
msgstr "Canto superior direito"
#: app/prefswindow.js:75
msgid "Bottom-left corner"
msgstr "Canto inferior esquerdo"
#: app/prefswindow.js:76
msgid "Bottom-right corner"
msgstr "Canto inferior direito"
#: app/prefswindow.js:78 schemas/org.gnome.shell.extensions.ding.gschema.xml:55
msgid "Add new drives to the opposite side of the screen"
msgstr "Mostrar novos dispositivos no lado oposto da tela"
#: app/prefswindow.js:79
msgid "Highlight the drop place during Drag'n'Drop"
msgstr "Destacar o local onde o ícone será alocado ao arrastar e soltar"
#: app/prefswindow.js:80 schemas/org.gnome.shell.extensions.ding.gschema.xml:90
msgid "Use Nemo to open folders"
msgstr ""
#: app/prefswindow.js:82
msgid "Add an emblem to soft links"
msgstr ""
#: app/prefswindow.js:84
msgid "Use dark text in icon labels"
msgstr ""
#: app/prefswindow.js:91
msgid "Settings shared with Nautilus"
msgstr "Configurações compartilhadas com Nautilus"
#: app/prefswindow.js:113
msgid "Click type for open files"
msgstr "Tipo de clique para abrir arquivos"
#: app/prefswindow.js:113
msgid "Single click"
msgstr "Clique único"
#: app/prefswindow.js:113
msgid "Double click"
msgstr "Clique duplo"
#: app/prefswindow.js:114
#, fuzzy
msgid "Show hidden files"
msgstr "Mostrar arquivos ocultos"
#: app/prefswindow.js:115
msgid "Show a context menu item to delete permanently"
msgstr "Mostrar a opção de excluir permanentemente no menu de contexto"
#: app/prefswindow.js:120
msgid "Action to do when launching a program from the desktop"
msgstr "O que fazer ao clicar num programa na área de trabalho"
#: app/prefswindow.js:121
msgid "Display the content of the file"
msgstr "Mostrar o conteúdo do arquivo"
#: app/prefswindow.js:122
msgid "Launch the file"
msgstr "Executar o arquivo"
#: app/prefswindow.js:123
msgid "Ask what to do"
msgstr "Perguntar o que fazer"
#: app/prefswindow.js:129
msgid "Show image thumbnails"
msgstr "Mostrar miniaturas"
#: app/prefswindow.js:130
msgid "Never"
msgstr "Nunca"
#: app/prefswindow.js:131
msgid "Local files only"
msgstr "Apenas arquivos locais"
#: app/prefswindow.js:132
msgid "Always"
msgstr "Sempre"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:25
msgid "Icon size"
msgstr "Tamanho do ícone"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:26
msgid "Set the size for the desktop icons."
msgstr "Define o tamanho para os ícones da área de trabalho."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:30
msgid "Show personal folder"
msgstr "Mostrar pasta pessoal"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:31
msgid "Show the personal folder in the desktop."
msgstr "Mostra a pasta pessoal na área de trabalho."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:35
msgid "Show trash icon"
msgstr "Mostrar ícone da lixeira"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:36
msgid "Show the trash icon in the desktop."
msgstr "Mostra o ícone da lixeira na área de trabalho."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:40
#, fuzzy
msgid "New icons start corner"
msgstr "Tamanho do ícone"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:41
msgid "Set the corner from where the icons will start to be placed."
msgstr "Escolha o canto da tela onde os ícones ficarão inicialmente"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:46
msgid "Show the disk drives connected to the computer."
msgstr "Mostrar as unidades de discos conectadas ao computador."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:51
#, fuzzy
msgid "Show mounted network volumes in the desktop."
msgstr "Mostra a pasta pessoal na área de trabalho."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:56
msgid ""
"When adding drives and volumes to the desktop, add them to the opposite side "
"of the screen."
msgstr ""
"Ao mostrar os discos e volumes montados, posicioná-los no lado oposto da "
"tela."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:60
msgid "Shows a rectangle in the destination place during DnD"
msgstr ""
"Mostrar um retângulo na pasta de destino ao arrastar e soltar um arquivo"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:61
msgid ""
"When doing a Drag'n'Drop operation, marks the place in the grid where the "
"icon will be put with a semitransparent rectangle."
msgstr ""
"Ao arrastar, destacar com um retângulo semitransparente o local onde o ícone "
"ficará alocado."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:65
msgid "Sort Special Folders - Home/Trash Drives."
msgstr "Ordenar pastas especiais - Home/Lixeira/Drives."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:66
msgid ""
"When arranging Icons on desktop, to sort and change the position of the "
"Home, Trash and mounted Network or External Drives"
msgstr ""
"Quando organizando ícones no desktop, ordene e modifique a posição de Home, "
"LIxeira e redes montadas ou Drives externos"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:70
msgid "Keep Icons Arranged"
msgstr "Manter Ícones Ordenados"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:71
msgid "Always keep Icons Arranged by the last arranged order"
msgstr ""
"Sempre mantenha ícone ordenados de acordo com a última forma de organizar"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:75
msgid "Arrange Order"
msgstr "Organizar ordem"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:76
msgid "Icons Arranged by this property"
msgstr "Ícones ordenados por esta propriedade"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:80
#, fuzzy
msgid "Keep Icons Stacked"
msgstr "Manter Ícones Ordenados"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:81
#, fuzzy
msgid "Always keep Icons Stacked, Similar types are grouped"
msgstr ""
"Sempre mantenha ícone ordenados de acordo com a última forma de organizar"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:85
msgid "Type of Files to not Stack"
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:86
msgid "An Array of strings types, Don't Stack these types of files"
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:91
msgid "Use Nemo instead of Nautilus to open folders."
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:95
msgid "Add an emblem to links"
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:96
msgid "Add an emblem to allow to identify soft links."
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:100
msgid "Use black for label text"
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:101
msgid ""
"Paint the label text in black instead of white. Useful when using light "
"backgrounds."
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:105
msgid "Show a popup if running on X11Wayland"
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:106
msgid ""
"Whether DING should show a popup if it is running on X11Wayland, or the user "
"decided to not show it anymore."
msgstr ""
#, fuzzy
#~ msgid "Desktop icons"
#~ msgstr "Configurações dos ícones no Desktop"
#, fuzzy
#~ msgid ""
#~ "To configure Desktop Icons NG, do right-click in the desktop and choose "
#~ "the last item: 'Desktop Icons settings'"
#~ msgstr ""
#~ "Para configurar Desktop Icons NG clique com o botão direito do mouse na "
#~ "área de trabalho e clique na última opção: 'Configurações'"
#~ msgid "Do you want to run “{0}”, or display its contents?"
#~ msgstr "Você deseja executar “{0}” ou exibir seu conteúdo?"
#~ msgid "“{0}” is an executable text file."
#~ msgstr "“{0}” é um arquivo executável."
#, fuzzy
#~ msgid "Execute in a terminal"
#~ msgstr "Abrir no terminal"
#~ msgid "Show"
#~ msgstr "Exibir"
#~ msgid "Execute"
#~ msgstr "Executar"
#, fuzzy
#~ msgid "New folder"
#~ msgstr "Nova pasta"
#~ msgid "Delete"
#~ msgstr "Excluir"
#~ msgid "Are you sure you want to permanently delete these items?"
#~ msgstr "Você tem certeza que deseja excluir permanentemente esses arquivos?"
#~ msgid "If you delete an item, it will be permanently lost."
#~ msgstr "Se você excluir um item, ele será perdido permanentemente."
#, fuzzy
#~ msgid "Show external disk drives in the desktop"
#~ msgstr "Mostrar dispositivos externos na área de trabalho"
#, fuzzy
#~ msgid "Show the external drives"
#~ msgstr "Mostrar dispositivos externos"
#, fuzzy
#~ msgid "Show network volumes"
#~ msgstr "Mostrar dispositivos da rede"
#~ msgid "Enter file name…"
#~ msgstr "Insira um nome de arquivo…"
#~ msgid "Folder names cannot contain “/”."
#~ msgstr "Nomes de pastas não podem conter “/”."
#~ msgid "A folder cannot be called “.”."
#~ msgstr "Uma pasta não pode ser chamada “.”."
#~ msgid "A folder cannot be called “..”."
#~ msgstr "Uma pasta não pode ser chamada “..”."
#~ msgid "Folders with “.” at the beginning of their name are hidden."
#~ msgstr "Pastas com “.” no começo de seus nomes são ocultas."
#~ msgid "There is already a file or folder with that name."
#~ msgstr "Já existe um arquivo ou uma pasta com esse nome."
#~ msgid "Huge"
#~ msgstr "Enorme"
#~ msgid "Ok"
#~ msgstr "Ok"
desktop-icons-ng-49.0.5-c32667693d0831c29e3ab3f7bfeb675ea1531a00/po/ro.po 0000664 0000000 0000000 00000055767 15064747536 0024005 0 ustar 00root root 0000000 0000000 # Romanian translation for desktop-icons.
# Copyright (C) 2019 desktop-icons's COPYRIGHT HOLDER
# This file is distributed under the same license as the desktop-icons package.
# Olteanu Laurențiu , 2021.
#
msgid ""
msgstr ""
"Project-Id-Version: desktop-icons master\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-06-29 16:52+0200\n"
"PO-Revision-Date: 2019-03-12 09:51+0100\n"
"Last-Translator: Olteanu Laurențiu \n"
"Language-Team: \n"
"Language: ro\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Poedit 2.2.1\n"
#: app/askRenamePopup.js:49
msgid "Folder name"
msgstr "Nume dosar"
#: app/askRenamePopup.js:49
msgid "File name"
msgstr "Nume fișier"
#: app/askRenamePopup.js:57 app/autoAr.js:305 app/desktopManager.js:1002
msgid "OK"
msgstr "Ok"
#: app/askRenamePopup.js:57
msgid "Rename"
msgstr "Redenumește"
#: app/autoAr.js:88
msgid "AutoAr is not installed"
msgstr ""
#: app/autoAr.js:89
msgid ""
"To be able to work with compressed files, install file-roller and/or gir-1.2-"
"gnomeAutoAr"
msgstr ""
#: app/autoAr.js:224
#, fuzzy
msgid "Extracting files"
msgstr "Extrage aici"
#: app/autoAr.js:241
#, fuzzy
msgid "Compressing files"
msgstr "Comprimă {0} fișier"
#: app/autoAr.js:297 app/autoAr.js:636 app/desktopManager.js:1004
#: app/fileItemMenu.js:474
msgid "Cancel"
msgstr "Anulează"
#: app/autoAr.js:318 app/autoAr.js:619
msgid "Enter a password here"
msgstr ""
#: app/autoAr.js:359
msgid "Removing partial file '${outputFile}'"
msgstr ""
#: app/autoAr.js:378
msgid "Creating destination folder"
msgstr ""
#: app/autoAr.js:410
msgid "Extracting files into '${outputPath}'"
msgstr ""
#: app/autoAr.js:442
#, fuzzy
msgid "Extraction completed"
msgstr "Extrage aici"
#: app/autoAr.js:443
msgid "Extracting '${fullPathFile}' has been completed."
msgstr ""
#: app/autoAr.js:449
#, fuzzy
msgid "Extraction cancelled"
msgstr "Extrage aici"
#: app/autoAr.js:450
msgid "Extracting '${fullPathFile}' has been cancelled by the user."
msgstr ""
#: app/autoAr.js:460
msgid "Passphrase required for ${filename}"
msgstr ""
#: app/autoAr.js:463
msgid "Error during extraction"
msgstr ""
#: app/autoAr.js:492
msgid "Compressing files into '${outputFile}'"
msgstr ""
#: app/autoAr.js:505
msgid "Compression completed"
msgstr ""
#: app/autoAr.js:506
msgid "Compressing files into '${outputFile}' has been completed."
msgstr ""
#: app/autoAr.js:510 app/autoAr.js:517
msgid "Cancelled compression"
msgstr ""
#: app/autoAr.js:511
msgid "The output file '${outputFile}' already exists."
msgstr ""
#: app/autoAr.js:518
msgid "Compressing files into '${outputFile}' has been cancelled by the user."
msgstr ""
#: app/autoAr.js:521
msgid "Error during compression"
msgstr ""
#: app/autoAr.js:554
#, fuzzy
msgid "Create archive"
msgstr "Creează"
#: app/autoAr.js:579
#, fuzzy
msgid "Archive name"
msgstr "Nume fișier"
#: app/autoAr.js:614
msgid "Password"
msgstr ""
#: app/autoAr.js:633
msgid "Create"
msgstr "Creează"
#: app/autoAr.js:712
msgid "Compatible with all operating systems."
msgstr ""
#: app/autoAr.js:718
msgid "Password protected .zip, must be installed on Windows and Mac."
msgstr ""
#: app/autoAr.js:724
msgid "Smaller archives but Linux and Mac only."
msgstr ""
#: app/autoAr.js:730
msgid "Smaller archives but must be installed on Windows and Mac."
msgstr ""
#: app/dbusUtils.js:69
msgid "\"${programName}\" is needed for Desktop Icons"
msgstr ""
#: app/dbusUtils.js:70
msgid ""
"For this functionality to work in Desktop Icons, you must install \"$"
"{programName}\" in your system."
msgstr ""
#: app/desktopIconsUtil.js:154
msgid "Command not found"
msgstr "Comanda nu a fost găsită"
#: app/desktopManager.js:259
msgid "Nautilus File Manager not found"
msgstr "Managerul de fișiere Nautilus nu a fost"
#: app/desktopManager.js:260
msgid "The Nautilus File Manager is mandatory to work with Desktop Icons NG."
msgstr ""
"Managerul de fișiere Nautilus este obligatoriu pentru a utiliza Desktop "
"Icons NG."
#: app/desktopManager.js:964
msgid "Clear Current Selection before New Search"
msgstr "Șterge selecția curentă înainte de o Căutare Nouă"
#: app/desktopManager.js:1006
msgid "Find Files on Desktop"
msgstr "Caută fișiere pe Desktop"
#: app/desktopManager.js:1074 app/desktopManager.js:1786
msgid "New Folder"
msgstr "Director nou"
#: app/desktopManager.js:1078
msgid "New Document"
msgstr "Document nou"
#: app/desktopManager.js:1083
msgid "Paste"
msgstr "Lipește"
#: app/desktopManager.js:1087
msgid "Undo"
msgstr "Anulează"
#: app/desktopManager.js:1091
msgid "Redo"
msgstr "Refă"
#: app/desktopManager.js:1097
msgid "Select All"
msgstr "Selectează tot"
#: app/desktopManager.js:1105
msgid "Show Desktop in Files"
msgstr "Arată Desktop în Fișiere"
#: app/desktopManager.js:1109 app/fileItemMenu.js:365
msgid "Open in Terminal"
msgstr "Deschide în terminal"
#: app/desktopManager.js:1115
msgid "Change Background…"
msgstr "Schimbă fundalul..."
#: app/desktopManager.js:1126
msgid "Desktop Icons Settings"
msgstr "Setări Pictograme Desktop"
#: app/desktopManager.js:1139
msgid "Display Settings"
msgstr "Setări afișaj"
#: app/desktopManager.js:1799
#, fuzzy
msgid "Folder Creation Failed"
msgstr "Nume dosar"
#: app/desktopManager.js:1800
#, fuzzy
msgid "Error while trying to create a Folder"
msgstr "Eroare la ștergerea fișierelor"
#: app/desktopManager.js:1836
msgid "Template Creation Failed"
msgstr ""
#: app/desktopManager.js:1837
msgid "Error while trying to create a Document"
msgstr ""
#: app/desktopManager.js:1845
msgid "Arrange Icons"
msgstr "Aranjează pictogramele"
#: app/desktopManager.js:1849
msgid "Arrange By..."
msgstr "Aranjează după..."
#: app/desktopManager.js:1858
msgid "Keep Arranged..."
msgstr "Aranjează automat..."
#: app/desktopManager.js:1862
msgid "Keep Stacked by type..."
msgstr ""
#: app/desktopManager.js:1867
msgid "Sort Home/Drives/Trash..."
msgstr "Sortează Acasă/Unități/Coș de gunoi..."
#: app/desktopManager.js:1873
msgid "Sort by Name"
msgstr "Sortează după nume"
#: app/desktopManager.js:1875
msgid "Sort by Name Descending"
msgstr "Sortează după nume Descendent"
#: app/desktopManager.js:1878
msgid "Sort by Modified Time"
msgstr "Sortează dupa data modificării"
#: app/desktopManager.js:1881
msgid "Sort by Type"
msgstr "Sortează după tip"
#: app/desktopManager.js:1884
msgid "Sort by Size"
msgstr "Sortează după dimensiune"
#. * TRANSLATORS: when using a screen reader, this is the text read when a folder is
#. selected. Example: if a folder named "things" is selected, it will say "things Folder"
#: app/fileItem.js:64
msgid "${VisibleName} Folder"
msgstr ""
#. * TRANSLATORS: when using a screen reader, this is the text read when a normal file is
#. selected. Example: if a file named "my_picture.jpg" is selected, it will say "my_picture.jpg File"
#: app/fileItem.js:68
msgid "${VisibleName} File"
msgstr ""
#. TRANSLATORS: "Home" is the text that will be shown in the user's personal folder
#: app/fileItem.js:72 app/fileItem.js:203
msgid "Home"
msgstr "Acasă"
#. * TRANSLATORS: when using a screen reader, this is the text read when the trash folder is
#. selected.
#: app/fileItem.js:77
#, fuzzy
msgid "Trash"
msgstr "Golește coșul de gunoi"
#. * TRANSLATORS: when using a screen reader, this is the text read when an external drive is
#. selected. Example: if a USB stick named "my_portable" is selected, it will say "my_portable Drive"
#: app/fileItem.js:82
msgid "${VisibleName} Drive"
msgstr ""
#. * TRANSLATORS: when using a screen reader, this is the text read when a stack is
#. selected. Example: if a stack named "pictures" is selected, it will say "pictures Stack"
#: app/fileItem.js:87
msgid "${VisibleName} Stack"
msgstr ""
#: app/fileItem.js:295
#, fuzzy
msgid "Error while reading Desktop file"
msgstr "Eroare la ștergerea fișierelor"
#: app/fileItem.js:337
msgid "Broken Link"
msgstr ""
#: app/fileItem.js:338
msgid "Can not open this File because it is a Broken Symlink"
msgstr ""
#: app/fileItem.js:370
#, fuzzy
msgid "Can't open the file"
msgstr "Lansează fișierul"
#: app/fileItem.js:396
#, fuzzy
msgid "Broken Desktop File"
msgstr "Arată Desktop în Fișiere"
#: app/fileItem.js:397
msgid ""
"This .desktop file has errors or points to a program without permissions. It "
"can not be executed.\n"
"\n"
"\tEdit the file to set the correct executable Program."
msgstr ""
#: app/fileItem.js:403
msgid "Invalid Permissions on Desktop File"
msgstr ""
#: app/fileItem.js:404
msgid ""
"This .desktop File has incorrect Permissions. Right Click to edit "
"Properties, then:\n"
msgstr ""
#: app/fileItem.js:406
msgid ""
"\n"
"Set Permissions, in \"Others Access\", \"Read Only\" or \"None\""
msgstr ""
#: app/fileItem.js:409
msgid ""
"\n"
"Enable option, \"Allow Executing File as a Program\""
msgstr ""
#: app/fileItem.js:417
msgid ""
"This .desktop file is not trusted, it can not be launched. To enable "
"launching, right-click, then:\n"
"\n"
"Enable \"Allow Launching\""
msgstr ""
#: app/fileItem.js:620
msgid "Failed to set execution flag"
msgstr ""
#: app/fileItem.js:632 app/fileItem.js:639
msgid "Could not apply discrete GPU environment"
msgstr ""
#: app/fileItem.js:668
msgid "Could not find discrete GPU data"
msgstr ""
#: app/fileItem.js:793
msgid "Failed to set metadata::trusted flag"
msgstr ""
#: app/fileItemMenu.js:143
msgid "Open All..."
msgstr "Deschide tot..."
#: app/fileItemMenu.js:143
msgid "Open"
msgstr "Deschide"
#: app/fileItemMenu.js:160
msgid "Stack This Type"
msgstr ""
#: app/fileItemMenu.js:160
msgid "Unstack This Type"
msgstr ""
#: app/fileItemMenu.js:173
msgid "Scripts"
msgstr "Scripturi"
#: app/fileItemMenu.js:178
msgid "Open All With Other Application..."
msgstr "Deschide tot cu altă aplicație..."
#: app/fileItemMenu.js:178
msgid "Open With Other Application"
msgstr "Deschide cu altă aplicație"
#: app/fileItemMenu.js:184
msgid "Launch using Dedicated Graphics Card"
msgstr "Lanseaza folosind Placă Video Dedicată"
#: app/fileItemMenu.js:195
msgid "Run as a program"
msgstr ""
#: app/fileItemMenu.js:203
msgid "Cut"
msgstr "Taie"
#: app/fileItemMenu.js:210
msgid "Copy"
msgstr "Copiază"
#: app/fileItemMenu.js:218
msgid "Rename…"
msgstr "Redenumește…"
#: app/fileItemMenu.js:228
msgid "Move to Trash"
msgstr "Mută la coșul de gunoi"
#: app/fileItemMenu.js:236
msgid "Delete permanently"
msgstr "Șterge definitiv"
#: app/fileItemMenu.js:246
msgid "Don't Allow Launching"
msgstr "Nu permite lansarea"
#: app/fileItemMenu.js:246
msgid "Allow Launching"
msgstr "Permite lansarea"
#: app/fileItemMenu.js:259
msgid "Empty Trash"
msgstr "Golește coșul de gunoi"
#: app/fileItemMenu.js:272
msgid "Eject"
msgstr "Scoate"
#: app/fileItemMenu.js:280
msgid "Unmount"
msgstr "Demontează"
#: app/fileItemMenu.js:294 app/fileItemMenu.js:301
msgid "Extract Here"
msgstr "Extrage aici"
#: app/fileItemMenu.js:308
msgid "Extract To..."
msgstr "Extrage în..."
#: app/fileItemMenu.js:317
msgid "Send to..."
msgstr "Trimite la..."
#: app/fileItemMenu.js:325
#, fuzzy
msgid "Compress {0} folder"
msgid_plural "Compress {0} folders"
msgstr[0] "Comprimă {0} fișier"
msgstr[1] "Comprimă {0} fișiere"
#: app/fileItemMenu.js:332
msgid "Compress {0} file"
msgid_plural "Compress {0} files"
msgstr[0] "Comprimă {0} fișier"
msgstr[1] "Comprimă {0} fișiere"
#: app/fileItemMenu.js:340
msgid "New Folder with {0} item"
msgid_plural "New Folder with {0} items"
msgstr[0] "Dosar nou cu {0} element"
msgstr[1] "Dosar nou cu {0} elemente"
#: app/fileItemMenu.js:351
msgid "Common Properties"
msgstr "Proprietăți generale"
#: app/fileItemMenu.js:351
msgid "Properties"
msgstr "Proprietăți"
#: app/fileItemMenu.js:358
msgid "Show All in Files"
msgstr "Arată toate fișierele"
#: app/fileItemMenu.js:358
msgid "Show in Files"
msgstr "Arată în fișiere"
#: app/fileItemMenu.js:449
#, fuzzy
msgid "No Extraction Folder"
msgstr "Extrage aici"
#: app/fileItemMenu.js:450
msgid "Unable to extract File, extraction Folder Does not Exist"
msgstr ""
#: app/fileItemMenu.js:470
msgid "Select Extract Destination"
msgstr "Selectează destinația pentru extragere"
#: app/fileItemMenu.js:475
msgid "Select"
msgstr "Selectează"
#: app/fileItemMenu.js:516
msgid "Can not email a Directory"
msgstr "Nu se poate trimite un dosar prin email"
#: app/fileItemMenu.js:517
msgid "Selection includes a Directory, compress the directory to a file first."
msgstr "Selecția include un dosar, mai întâi arhiveză-l într-un fișier"
#: app/notifyX11UnderWayland.js:37
msgid "Desktop Icons NG is running under X11Wayland"
msgstr ""
#: app/notifyX11UnderWayland.js:38
msgid ""
"It seems that you have your system configured to force GTK to use X11. This "
"works, but it's suboptimal. You should check your system configuration to "
"fix this."
msgstr ""
#: app/notifyX11UnderWayland.js:39 app/showErrorPopup.js:39
msgid "Close"
msgstr "Închide"
#: app/notifyX11UnderWayland.js:47
msgid "Don't show this message anymore."
msgstr ""
#: app/preferences.js:91
msgid "Settings"
msgstr "Setări"
#: app/prefswindow.js:64
msgid "Size for the desktop icons"
msgstr "Dimensiune pictograme desktop"
#: app/prefswindow.js:64
msgid "Tiny"
msgstr "Minuscule"
#: app/prefswindow.js:64
msgid "Small"
msgstr "Mici"
#: app/prefswindow.js:64
msgid "Standard"
msgstr "Normale"
#: app/prefswindow.js:64
msgid "Large"
msgstr "Mari"
#: app/prefswindow.js:65
msgid "Show the personal folder in the desktop"
msgstr "Afișează dosarul personal pe desktop"
#: app/prefswindow.js:66
msgid "Show the trash icon in the desktop"
msgstr "Arată coșul de gunoi pe desktop"
#: app/prefswindow.js:67 schemas/org.gnome.shell.extensions.ding.gschema.xml:45
msgid "Show external drives in the desktop"
msgstr "Arată unitățile externe pe desktop"
#: app/prefswindow.js:68 schemas/org.gnome.shell.extensions.ding.gschema.xml:50
msgid "Show network drives in the desktop"
msgstr "Arată unitățile de rețea pe desktop"
#: app/prefswindow.js:71
msgid "New icons alignment"
msgstr "Aliniere pictograme noi"
#: app/prefswindow.js:73
msgid "Top-left corner"
msgstr "Colțul stânga-sus"
#: app/prefswindow.js:74
msgid "Top-right corner"
msgstr "Colțul dreapta-sus"
#: app/prefswindow.js:75
msgid "Bottom-left corner"
msgstr "Colțul stânga-jos"
#: app/prefswindow.js:76
msgid "Bottom-right corner"
msgstr "Colțul dreapta-jos"
#: app/prefswindow.js:78 schemas/org.gnome.shell.extensions.ding.gschema.xml:55
msgid "Add new drives to the opposite side of the screen"
msgstr "Adaugă unitățile noi în colțul opus al ecranului"
#: app/prefswindow.js:79
msgid "Highlight the drop place during Drag'n'Drop"
msgstr ""
"Evidențiază punctul de plasare în timpul operațiunii de trage si plasează"
#: app/prefswindow.js:80 schemas/org.gnome.shell.extensions.ding.gschema.xml:90
msgid "Use Nemo to open folders"
msgstr ""
#: app/prefswindow.js:82
msgid "Add an emblem to soft links"
msgstr ""
#: app/prefswindow.js:84
msgid "Use dark text in icon labels"
msgstr ""
#: app/prefswindow.js:91
msgid "Settings shared with Nautilus"
msgstr "Setări comune cu Nautilus"
#: app/prefswindow.js:113
msgid "Click type for open files"
msgstr "Tipul de click pentru deschidere fișiere"
#: app/prefswindow.js:113
msgid "Single click"
msgstr "Click unic"
#: app/prefswindow.js:113
msgid "Double click"
msgstr "Dublu click"
#: app/prefswindow.js:114
msgid "Show hidden files"
msgstr "Arată fișierele ascunse"
#: app/prefswindow.js:115
msgid "Show a context menu item to delete permanently"
msgstr "Arată un meniu de context pentru ștergere definitivă"
#: app/prefswindow.js:120
msgid "Action to do when launching a program from the desktop"
msgstr "Acțiuni de făcut la deschiderea unui program de pe desktop"
#: app/prefswindow.js:121
msgid "Display the content of the file"
msgstr "Afișează conținutul fișierului"
#: app/prefswindow.js:122
msgid "Launch the file"
msgstr "Lansează fișierul"
#: app/prefswindow.js:123
msgid "Ask what to do"
msgstr "Întreabă ce e de făcut"
#: app/prefswindow.js:129
msgid "Show image thumbnails"
msgstr "Arată miniaturi imagini"
#: app/prefswindow.js:130
msgid "Never"
msgstr "Niciodată"
#: app/prefswindow.js:131
msgid "Local files only"
msgstr "Doar fișierele locale"
#: app/prefswindow.js:132
msgid "Always"
msgstr "Întotdeauna"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:25
msgid "Icon size"
msgstr "Dimensiune pictograme"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:26
msgid "Set the size for the desktop icons."
msgstr "Seteză dimensiunea pictogramelor de pe desktop."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:30
msgid "Show personal folder"
msgstr "Arată directorul personal"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:31
msgid "Show the personal folder in the desktop."
msgstr "Arată directorul personal pe desktop."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:35
msgid "Show trash icon"
msgstr "Arată coșul de gunoi"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:36
msgid "Show the trash icon in the desktop."
msgstr "Arată coșul de gunoi pe desktop."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:40
msgid "New icons start corner"
msgstr "Colțul de început pentru pictograme noi"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:41
msgid "Set the corner from where the icons will start to be placed."
msgstr "Setează colțul de unde pictogramele noi vor începe să fie poziționate"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:46
msgid "Show the disk drives connected to the computer."
msgstr "Arată unitățile de disc conecate la calculator"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:51
msgid "Show mounted network volumes in the desktop."
msgstr "Arata unitățile de rețea montate pe desktop."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:56
msgid ""
"When adding drives and volumes to the desktop, add them to the opposite side "
"of the screen."
msgstr ""
"Când se adaugă unități și volume pe desktop, adaugă-le începând din partea "
"opusă a ecranului."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:60
msgid "Shows a rectangle in the destination place during DnD"
msgstr "Arată un triunghi în punctul de destinație în timpul Trage și Plasează"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:61
msgid ""
"When doing a Drag'n'Drop operation, marks the place in the grid where the "
"icon will be put with a semitransparent rectangle."
msgstr ""
"În timpul operațiunii de Trage și Plaseză, marchează locul în grila unde "
"pictograma va fi pusă cu un triungi semitransparent."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:65
msgid "Sort Special Folders - Home/Trash Drives."
msgstr "Sortare specială - Acasă/Coș de gunoi/ Unități."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:66
msgid ""
"When arranging Icons on desktop, to sort and change the position of the "
"Home, Trash and mounted Network or External Drives"
msgstr ""
"Când se poziționează Pictogramele pe desktop, pentru a sorta și a schimba "
"poziția Acasă, coș de gunoi și unități externe sau de rețea montate"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:70
msgid "Keep Icons Arranged"
msgstr "Ține Pictogramele aranjate"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:71
msgid "Always keep Icons Arranged by the last arranged order"
msgstr "Ține întotdeauna Pictogramele aranjate după ultima ordine de sortare"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:75
msgid "Arrange Order"
msgstr "Ordinea de aranjare"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:76
msgid "Icons Arranged by this property"
msgstr "Pictograme aranjate după această proprietate"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:80
#, fuzzy
msgid "Keep Icons Stacked"
msgstr "Ține Pictogramele aranjate"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:81
#, fuzzy
msgid "Always keep Icons Stacked, Similar types are grouped"
msgstr "Ține întotdeauna Pictogramele aranjate după ultima ordine de sortare"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:85
msgid "Type of Files to not Stack"
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:86
msgid "An Array of strings types, Don't Stack these types of files"
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:91
msgid "Use Nemo instead of Nautilus to open folders."
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:95
msgid "Add an emblem to links"
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:96
msgid "Add an emblem to allow to identify soft links."
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:100
msgid "Use black for label text"
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:101
msgid ""
"Paint the label text in black instead of white. Useful when using light "
"backgrounds."
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:105
msgid "Show a popup if running on X11Wayland"
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:106
msgid ""
"Whether DING should show a popup if it is running on X11Wayland, or the user "
"decided to not show it anymore."
msgstr ""
#, fuzzy
#~ msgid "Desktop icons"
#~ msgstr "Setări Pictograme Desktop"
#~ msgid ""
#~ "To configure Desktop Icons NG, do right-click in the desktop and choose "
#~ "the last item: 'Desktop Icons settings'"
#~ msgstr ""
#~ "Pentru configurare Desktop Icons NG, fă click dreapta pe desktop și alege "
#~ "ultimul element din meniu: 'Setări Pictograme Desktop'"
#~ msgid "Do you want to run “{0}”, or display its contents?"
#~ msgstr "Vrei să rulezi “{0}”, sau să afișăm conținutul?"
#~ msgid "“{0}” is an executable text file."
#~ msgstr "“{0}” este un fișier text executabil."
#~ msgid "Execute in a terminal"
#~ msgstr "Execută în terminal"
#~ msgid "Show"
#~ msgstr "Arată"
#~ msgid "Execute"
#~ msgstr "Execută"
#~ msgid "New folder"
#~ msgstr "Dosar nou"
#~ msgid "Delete"
#~ msgstr "Șterge"
#~ msgid "Are you sure you want to permanently delete these items?"
#~ msgstr "Ești sigur că vrei să ștergi definitiv aceste fișiere?"
#~ msgid "If you delete an item, it will be permanently lost."
#~ msgstr "Dacă ștergi un element, acesta se va pierde definitiv."
#~ msgid "Show external disk drives in the desktop"
#~ msgstr "Arată unitățile externe pe desktop"
#~ msgid "Show the external drives"
#~ msgstr "Arată unitățile externe"
#~ msgid "Show network volumes"
#~ msgstr "Arată volumele de rețea"
#~ msgid "Enter file name..."
#~ msgstr "Introdu numele fișierului..."
#~ msgid "Folder names cannot contain “/”."
#~ msgstr "Numele dosarelor nu pot să conțină caraterul «/»."
#~ msgid "A folder cannot be called “.”."
#~ msgstr "Un dosar nu poate fi numit «.»."
#~ msgid "A folder cannot be called “..”."
#~ msgstr "Un dosar nu poate fi numit «..»."
#~ msgid "Folders with “.” at the beginning of their name are hidden."
#~ msgstr "Dosarele al căror nume începe cu «.» sunt ascunse."
#~ msgid "There is already a file or folder with that name."
#~ msgstr "Deja există un fișier sau un dosar cu același nume."
desktop-icons-ng-49.0.5-c32667693d0831c29e3ab3f7bfeb675ea1531a00/po/ru.po 0000664 0000000 0000000 00000100122 15064747536 0023763 0 ustar 00root root 0000000 0000000 # Russian translation for desktop-icons-ng.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the desktop-icons-ng package.
# Eaglers , 2018
# Ser82-png , 2021-2024
#
msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-06-29 16:52+0200\n"
"PO-Revision-Date: 2024-08-04 14:53+1000\n"
"Last-Translator: Ser82-png \n"
"Language-Team: \n"
"Language: ru\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%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.0.1\n"
#: app/askRenamePopup.js:49
msgid "Folder name"
msgstr "Название папки"
#: app/askRenamePopup.js:49
msgid "File name"
msgstr "Название файла"
#: app/askRenamePopup.js:57 app/autoAr.js:305 app/desktopManager.js:1002
msgid "OK"
msgstr "ОК"
#: app/askRenamePopup.js:57
msgid "Rename"
msgstr "Переименовать"
#: app/autoAr.js:88
msgid "AutoAr is not installed"
msgstr "AutoAr не установлен"
#: app/autoAr.js:89
msgid ""
"To be able to work with compressed files, install file-roller and/or gir-1.2-"
"gnomeAutoAr"
msgstr ""
"Для возможности работы со сжатыми файлами установите file-roller и/или "
"gir-1.2-gnomeAutoAr"
#: app/autoAr.js:224
msgid "Extracting files"
msgstr "Извлечение файлов"
#: app/autoAr.js:241
msgid "Compressing files"
msgstr "Сжатие файлов"
#: app/autoAr.js:297 app/autoAr.js:636 app/desktopManager.js:1004
#: app/fileItemMenu.js:474
msgid "Cancel"
msgstr "Отмена"
#: app/autoAr.js:318 app/autoAr.js:619
msgid "Enter a password here"
msgstr "Введите пароль"
#: app/autoAr.js:359
msgid "Removing partial file '${outputFile}'"
msgstr "Удаление неполного файла '${outputFile}'"
#: app/autoAr.js:378
msgid "Creating destination folder"
msgstr "Создание папки назначения"
#: app/autoAr.js:410
msgid "Extracting files into '${outputPath}'"
msgstr "Извлечение файлов в '${outputPath}'"
#: app/autoAr.js:442
msgid "Extraction completed"
msgstr "Извлечение завершено"
#: app/autoAr.js:443
msgid "Extracting '${fullPathFile}' has been completed."
msgstr "Извлечение '${fullPathFile}' завершено."
#: app/autoAr.js:449
msgid "Extraction cancelled"
msgstr "Извлечение отменено"
#: app/autoAr.js:450
msgid "Extracting '${fullPathFile}' has been cancelled by the user."
msgstr "Извлечение '${fullPathFile}' было отменено пользователем."
#: app/autoAr.js:460
msgid "Passphrase required for ${filename}"
msgstr "Требуется пароль для ${filename}"
#: app/autoAr.js:463
msgid "Error during extraction"
msgstr "Ошибка при извлечении"
#: app/autoAr.js:492
msgid "Compressing files into '${outputFile}'"
msgstr "Сжатие файлов в '${outputFile}'"
#: app/autoAr.js:505
msgid "Compression completed"
msgstr "Сжатие завершено"
#: app/autoAr.js:506
msgid "Compressing files into '${outputFile}' has been completed."
msgstr "Сжатие файлов в '${outputFile}' завершено."
#: app/autoAr.js:510 app/autoAr.js:517
msgid "Cancelled compression"
msgstr "Сжатие отменено"
#: app/autoAr.js:511
msgid "The output file '${outputFile}' already exists."
msgstr "Целевой файл '${outputFile}' уже существует."
#: app/autoAr.js:518
msgid "Compressing files into '${outputFile}' has been cancelled by the user."
msgstr "Сжатие файлов в '${outputFile}' было отменено пользователем."
#: app/autoAr.js:521
msgid "Error during compression"
msgstr "Ошибка при сжатии"
#: app/autoAr.js:554
msgid "Create archive"
msgstr "Создать архив"
#: app/autoAr.js:579
msgid "Archive name"
msgstr "Название архива"
#: app/autoAr.js:614
msgid "Password"
msgstr "Пароль"
#: app/autoAr.js:633
msgid "Create"
msgstr "Создать"
#: app/autoAr.js:712
msgid "Compatible with all operating systems."
msgstr "Совместимые со всеми операционными системами."
#: app/autoAr.js:718
msgid "Password protected .zip, must be installed on Windows and Mac."
msgstr "Защищённые паролем ZIP-архивы, требующие установки на Windows и Mac."
#: app/autoAr.js:724
msgid "Smaller archives but Linux and Mac only."
msgstr "Архивы меньшего размера, совместимые только с Linux и Mac."
#: app/autoAr.js:730
msgid "Smaller archives but must be installed on Windows and Mac."
msgstr "Архивы меньшего размера, требующие установки на Windows и Mac."
#: app/dbusUtils.js:69
msgid "\"${programName}\" is needed for Desktop Icons"
msgstr "Для Desktop Icons требуется \"${programName}\""
#: app/dbusUtils.js:70
msgid ""
"For this functionality to work in Desktop Icons, you must install \"$"
"{programName}\" in your system."
msgstr ""
"Чтобы эта функция работала в Desktop Icons, вы должный установить \"$"
"{programName}\"."
#: app/desktopIconsUtil.js:154
msgid "Command not found"
msgstr "Команда не найдена"
#: app/desktopManager.js:259
msgid "Nautilus File Manager not found"
msgstr "Файловый менеджер Nautilus не найден"
#: app/desktopManager.js:260
msgid "The Nautilus File Manager is mandatory to work with Desktop Icons NG."
msgstr ""
"Файловый менеджер Nautilus является обязательным для работы с Desktop Icons "
"NG."
#: app/desktopManager.js:964
msgid "Clear Current Selection before New Search"
msgstr "Очистить текущую подборку перед новым поиском"
#: app/desktopManager.js:1006
msgid "Find Files on Desktop"
msgstr "Поиск файлов на рабочем столе"
#: app/desktopManager.js:1074 app/desktopManager.js:1786
msgid "New Folder"
msgstr "Создать папку"
#: app/desktopManager.js:1078
msgid "New Document"
msgstr "Создать документ"
#: app/desktopManager.js:1083
msgid "Paste"
msgstr "Вставить"
#: app/desktopManager.js:1087
msgid "Undo"
msgstr "Отменить"
#: app/desktopManager.js:1091
msgid "Redo"
msgstr "Повторить"
#: app/desktopManager.js:1097
msgid "Select All"
msgstr "Выделить всё"
#: app/desktopManager.js:1105
msgid "Show Desktop in Files"
msgstr "Показать рабочий стол в файловом менеджере"
#: app/desktopManager.js:1109 app/fileItemMenu.js:365
msgid "Open in Terminal"
msgstr "Открыть в терминале"
#: app/desktopManager.js:1115
msgid "Change Background…"
msgstr "Изменить фон…"
#: app/desktopManager.js:1126
msgid "Desktop Icons Settings"
msgstr "Параметры Desktop Icons"
#: app/desktopManager.js:1139
msgid "Display Settings"
msgstr "Настройки экрана"
#: app/desktopManager.js:1799
msgid "Folder Creation Failed"
msgstr "Не удалось создать папку"
#: app/desktopManager.js:1800
msgid "Error while trying to create a Folder"
msgstr "Произошла ошибка при попытке создать папку"
#: app/desktopManager.js:1836
msgid "Template Creation Failed"
msgstr "Не удалось создать шаблон"
#: app/desktopManager.js:1837
msgid "Error while trying to create a Document"
msgstr "Произошла ошибка при попытке создать документ"
#: app/desktopManager.js:1845
msgid "Arrange Icons"
msgstr "Упорядочить значки"
#: app/desktopManager.js:1849
msgid "Arrange By..."
msgstr "Упорядочить по..."
#: app/desktopManager.js:1858
msgid "Keep Arranged..."
msgstr "Сохранить порядок..."
#: app/desktopManager.js:1862
msgid "Keep Stacked by type..."
msgstr "Сохранить сгруппированными по типу..."
#: app/desktopManager.js:1867
msgid "Sort Home/Drives/Trash..."
msgstr "Сортировать Домашняя папка/Диски/Корзина..."
#: app/desktopManager.js:1873
msgid "Sort by Name"
msgstr "Сортировать по названию"
#: app/desktopManager.js:1875
msgid "Sort by Name Descending"
msgstr "Сортировать по названию в порядке убывания"
#: app/desktopManager.js:1878
msgid "Sort by Modified Time"
msgstr "Сортировать по времени изменения"
#: app/desktopManager.js:1881
msgid "Sort by Type"
msgstr "Сортировать по типу"
#: app/desktopManager.js:1884
msgid "Sort by Size"
msgstr "Сортировать по размеру"
#. * TRANSLATORS: when using a screen reader, this is the text read when a folder is
#. selected. Example: if a folder named "things" is selected, it will say "things Folder"
#: app/fileItem.js:64
msgid "${VisibleName} Folder"
msgstr "${VisibleName} Папка"
#. * TRANSLATORS: when using a screen reader, this is the text read when a normal file is
#. selected. Example: if a file named "my_picture.jpg" is selected, it will say "my_picture.jpg File"
#: app/fileItem.js:68
msgid "${VisibleName} File"
msgstr "${VisibleName} Файл"
#. TRANSLATORS: "Home" is the text that will be shown in the user's personal folder
#: app/fileItem.js:72 app/fileItem.js:203
msgid "Home"
msgstr "Домашняя папка"
#. * TRANSLATORS: when using a screen reader, this is the text read when the trash folder is
#. selected.
#: app/fileItem.js:77
msgid "Trash"
msgstr "Корзина"
#. * TRANSLATORS: when using a screen reader, this is the text read when an external drive is
#. selected. Example: if a USB stick named "my_portable" is selected, it will say "my_portable Drive"
#: app/fileItem.js:82
msgid "${VisibleName} Drive"
msgstr "${VisibleName} Диск"
#. * TRANSLATORS: when using a screen reader, this is the text read when a stack is
#. selected. Example: if a stack named "pictures" is selected, it will say "pictures Stack"
#: app/fileItem.js:87
msgid "${VisibleName} Stack"
msgstr "${VisibleName} Группа"
#: app/fileItem.js:295
msgid "Error while reading Desktop file"
msgstr "Ошибка при чтении .desktop файла"
#: app/fileItem.js:337
msgid "Broken Link"
msgstr "Нерабочая ссылка"
#: app/fileItem.js:338
msgid "Can not open this File because it is a Broken Symlink"
msgstr ""
"Невозможно открыть этот файл, потому что это неработающая символическая "
"ссылка"
#: app/fileItem.js:370
msgid "Can't open the file"
msgstr "Не удалось открыть файл"
#: app/fileItem.js:396
msgid "Broken Desktop File"
msgstr "Нерабочий .desktop файл"
#: app/fileItem.js:397
msgid ""
"This .desktop file has errors or points to a program without permissions. It "
"can not be executed.\n"
"\n"
"\tEdit the file to set the correct executable Program."
msgstr ""
"Этот .desktop-файл содержит ошибки или указывает на программу без "
"необходимых разрешений. Его нельзя выполнить.\n"
"\n"
"\tОтредактируйте файл так, чтобы он указывал на необходимый исполняемый "
"файл."
#: app/fileItem.js:403
msgid "Invalid Permissions on Desktop File"
msgstr "Неверные права доступа к .desktop-файлу"
#: app/fileItem.js:404
msgid ""
"This .desktop File has incorrect Permissions. Right Click to edit "
"Properties, then:\n"
msgstr ""
"Этот .desktop-файл имеет неправильные разрешения. Щёлкните правой кнопкой "
"мыши, чтобы изменить свойства, а затем:\n"
#: app/fileItem.js:406
msgid ""
"\n"
"Set Permissions, in \"Others Access\", \"Read Only\" or \"None\""
msgstr ""
"\n"
"Установите разрешения в разделе «Права доступа» на «Только чтение» или "
"«Нет»"
#: app/fileItem.js:409
msgid ""
"\n"
"Enable option, \"Allow Executing File as a Program\""
msgstr ""
"\n"
"Включить параметр «Разрешить выполнение файла как программы»"
#: app/fileItem.js:417
msgid ""
"This .desktop file is not trusted, it can not be launched. To enable "
"launching, right-click, then:\n"
"\n"
"Enable \"Allow Launching\""
msgstr ""
"Этот .desktop-файл не является доверенным, его нельзя запустить. Чтобы "
"разрешить запуск, щёлкните правой кнопкой мыши, а затем:\n"
"\n"
"включите «Разрешить запуск»"
#: app/fileItem.js:620
msgid "Failed to set execution flag"
msgstr "Не удалось установить флаг выполнения"
#: app/fileItem.js:632 app/fileItem.js:639
msgid "Could not apply discrete GPU environment"
msgstr "Не удалось применить среду дискретного графического процессора"
#: app/fileItem.js:668
msgid "Could not find discrete GPU data"
msgstr "Не удалось найти данные дискретного графического процессора"
#: app/fileItem.js:793
msgid "Failed to set metadata::trusted flag"
msgstr "Не удалось установить флаг metadata::trusted"
#: app/fileItemMenu.js:143
msgid "Open All..."
msgstr "Открыть всё..."
#: app/fileItemMenu.js:143
msgid "Open"
msgstr "Открыть"
#: app/fileItemMenu.js:160
msgid "Stack This Type"
msgstr "Сгруппировать этот тип"
#: app/fileItemMenu.js:160
msgid "Unstack This Type"
msgstr "Разгруппировать этот тип"
#: app/fileItemMenu.js:173
msgid "Scripts"
msgstr "Скрипты"
#: app/fileItemMenu.js:178
msgid "Open All With Other Application..."
msgstr "Открыть всё в другом приложении..."
#: app/fileItemMenu.js:178
msgid "Open With Other Application"
msgstr "Открыть в другом приложении"
#: app/fileItemMenu.js:184
msgid "Launch using Dedicated Graphics Card"
msgstr "Запустить, используя дискретную видеокарту"
#: app/fileItemMenu.js:195
msgid "Run as a program"
msgstr "Запустить как программу"
#: app/fileItemMenu.js:203
msgid "Cut"
msgstr "Вырезать"
#: app/fileItemMenu.js:210
msgid "Copy"
msgstr "Копировать"
#: app/fileItemMenu.js:218
msgid "Rename…"
msgstr "Переименовать…"
#: app/fileItemMenu.js:228
msgid "Move to Trash"
msgstr "Отправить в корзину"
#: app/fileItemMenu.js:236
msgid "Delete permanently"
msgstr "Удалить безвозвратно"
#: app/fileItemMenu.js:246
msgid "Don't Allow Launching"
msgstr "Не разрешать запуск"
#: app/fileItemMenu.js:246
msgid "Allow Launching"
msgstr "Разрешить запуск"
#: app/fileItemMenu.js:259
msgid "Empty Trash"
msgstr "Очистить корзину"
#: app/fileItemMenu.js:272
msgid "Eject"
msgstr "Извлечь"
#: app/fileItemMenu.js:280
msgid "Unmount"
msgstr "Отмонтировать"
#: app/fileItemMenu.js:294 app/fileItemMenu.js:301
msgid "Extract Here"
msgstr "Извлечь в текущую папку"
#: app/fileItemMenu.js:308
msgid "Extract To..."
msgstr "Извлечь в..."
#: app/fileItemMenu.js:317
msgid "Send to..."
msgstr "Отправить в..."
#: app/fileItemMenu.js:325
msgid "Compress {0} folder"
msgid_plural "Compress {0} folders"
msgstr[0] "Сжать {0} папку"
msgstr[1] "Сжать {0} папки"
msgstr[2] "Сжать {0} папок"
#: app/fileItemMenu.js:332
msgid "Compress {0} file"
msgid_plural "Compress {0} files"
msgstr[0] "Сжать {0} файл"
msgstr[1] "Сжать {0} файла"
msgstr[2] "Сжать {0} файлов"
#: app/fileItemMenu.js:340
msgid "New Folder with {0} item"
msgid_plural "New Folder with {0} items"
msgstr[0] "Новая папка с {0} элементом"
msgstr[1] "Новая папка с {0} элементами"
msgstr[2] "Новая папка с {0} элементами"
#: app/fileItemMenu.js:351
msgid "Common Properties"
msgstr "Общие свойства"
#: app/fileItemMenu.js:351
msgid "Properties"
msgstr "Свойства"
#: app/fileItemMenu.js:358
msgid "Show All in Files"
msgstr "Показать всё в файловом менеджере"
#: app/fileItemMenu.js:358
msgid "Show in Files"
msgstr "Показать в файловом менеджере"
#: app/fileItemMenu.js:449
msgid "No Extraction Folder"
msgstr "Нет папки для извлечения"
#: app/fileItemMenu.js:450
msgid "Unable to extract File, extraction Folder Does not Exist"
msgstr "Не удается извлечь файл, так как нет папки для извлечения"
#: app/fileItemMenu.js:470
msgid "Select Extract Destination"
msgstr "Выбрать папку назначения для извлечения"
#: app/fileItemMenu.js:475
msgid "Select"
msgstr "Выделить"
#: app/fileItemMenu.js:516
msgid "Can not email a Directory"
msgstr "Невозможно отправить каталог по электронной почте"
#: app/fileItemMenu.js:517
msgid "Selection includes a Directory, compress the directory to a file first."
msgstr "Выбран каталог, сначала сожмите его в файл."
#: app/notifyX11UnderWayland.js:37
msgid "Desktop Icons NG is running under X11Wayland"
msgstr "Desktop Icons NG работает под управлением X11Wayland"
#: app/notifyX11UnderWayland.js:38
msgid ""
"It seems that you have your system configured to force GTK to use X11. This "
"works, but it's suboptimal. You should check your system configuration to "
"fix this."
msgstr ""
"Похоже, что ваша система настроена таким образом, чтобы заставить GTK "
"использовать X11. Это работает, но неоптимально. Вам следует проверить "
"конфигурацию вашей системы, чтобы исправить это."
#: app/notifyX11UnderWayland.js:39 app/showErrorPopup.js:39
msgid "Close"
msgstr "Закрыть"
#: app/notifyX11UnderWayland.js:47
msgid "Don't show this message anymore."
msgstr "Больше не показывайте это сообщение."
#: app/preferences.js:91
msgid "Settings"
msgstr "Параметры"
#: app/prefswindow.js:64
msgid "Size for the desktop icons"
msgstr "Размер значков на рабочем столе"
#: app/prefswindow.js:64
msgid "Tiny"
msgstr "Крошечный"
#: app/prefswindow.js:64
msgid "Small"
msgstr "Маленький"
#: app/prefswindow.js:64
msgid "Standard"
msgstr "Стандартный"
#: app/prefswindow.js:64
msgid "Large"
msgstr "Большой"
#: app/prefswindow.js:65
msgid "Show the personal folder in the desktop"
msgstr "Показывать домашнюю папку на рабочем столе"
#: app/prefswindow.js:66
msgid "Show the trash icon in the desktop"
msgstr "Показывать корзину на рабочем столе"
#: app/prefswindow.js:67 schemas/org.gnome.shell.extensions.ding.gschema.xml:45
msgid "Show external drives in the desktop"
msgstr "Показывать внешние диски на рабочем столе"
#: app/prefswindow.js:68 schemas/org.gnome.shell.extensions.ding.gschema.xml:50
msgid "Show network drives in the desktop"
msgstr "Показывать сетевые диски на рабочем столе"
#: app/prefswindow.js:71
msgid "New icons alignment"
msgstr "Выравнивание для новых значков"
#: app/prefswindow.js:73
msgid "Top-left corner"
msgstr "Верхний левый угол"
#: app/prefswindow.js:74
msgid "Top-right corner"
msgstr "Правый верхний угол"
#: app/prefswindow.js:75
msgid "Bottom-left corner"
msgstr "Нижний левый угол"
#: app/prefswindow.js:76
msgid "Bottom-right corner"
msgstr "Правый нижний угол"
#: app/prefswindow.js:78 schemas/org.gnome.shell.extensions.ding.gschema.xml:55
msgid "Add new drives to the opposite side of the screen"
msgstr "Добавлять новые диски на противоположную сторону экрана"
#: app/prefswindow.js:79
msgid "Highlight the drop place during Drag'n'Drop"
msgstr "Подсвечивать место назначения во время перетаскивания"
#: app/prefswindow.js:80 schemas/org.gnome.shell.extensions.ding.gschema.xml:90
msgid "Use Nemo to open folders"
msgstr "Использовать Nemo для открытия папок"
#: app/prefswindow.js:82
msgid "Add an emblem to soft links"
msgstr "Добавить эмблему к символическим ссылкам"
#: app/prefswindow.js:84
msgid "Use dark text in icon labels"
msgstr "Использовать тёмный текст в подписях к значкам"
#: app/prefswindow.js:91
msgid "Settings shared with Nautilus"
msgstr "Общие настройки с Nautilus"
#: app/prefswindow.js:113
msgid "Click type for open files"
msgstr "Тип нажатия для открытия файлов"
#: app/prefswindow.js:113
msgid "Single click"
msgstr "Одинарный щелчок"
#: app/prefswindow.js:113
msgid "Double click"
msgstr "Двойной щелчок"
#: app/prefswindow.js:114
msgid "Show hidden files"
msgstr "Показывать скрытые файлы"
#: app/prefswindow.js:115
msgid "Show a context menu item to delete permanently"
msgstr "Добавить пункт в контекстное меню «Удалить безвозвратно»"
#: app/prefswindow.js:120
msgid "Action to do when launching a program from the desktop"
msgstr "Действие при запуске программы с рабочего стола"
#: app/prefswindow.js:121
msgid "Display the content of the file"
msgstr "Показать содержимое файла"
#: app/prefswindow.js:122
msgid "Launch the file"
msgstr "Запустить файл"
#: app/prefswindow.js:123
msgid "Ask what to do"
msgstr "Спросить что делать"
#: app/prefswindow.js:129
msgid "Show image thumbnails"
msgstr "Показывать миниатюры изображений"
#: app/prefswindow.js:130
msgid "Never"
msgstr "Никогда"
#: app/prefswindow.js:131
msgid "Local files only"
msgstr "Только для локальных файлов"
#: app/prefswindow.js:132
msgid "Always"
msgstr "Всегда"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:25
msgid "Icon size"
msgstr "Размер значка"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:26
msgid "Set the size for the desktop icons."
msgstr "Установить размер значков на рабочем столе."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:30
msgid "Show personal folder"
msgstr "Показывать домашнюю папку"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:31
msgid "Show the personal folder in the desktop."
msgstr "Показывать значок домашней папки на рабочем столе."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:35
msgid "Show trash icon"
msgstr "Показывать значок корзины"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:36
msgid "Show the trash icon in the desktop."
msgstr "Показывать значок корзины на рабочем столе."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:40
msgid "New icons start corner"
msgstr "Новые значки начинают размещаться с угла"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:41
msgid "Set the corner from where the icons will start to be placed."
msgstr "Установите угол, с которого значки начнут размещаться."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:46
msgid "Show the disk drives connected to the computer."
msgstr "Показывать диски, подключенные к компьютеру."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:51
msgid "Show mounted network volumes in the desktop."
msgstr "Показывать подключенные сетевые тома на рабочем столе."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:56
msgid ""
"When adding drives and volumes to the desktop, add them to the opposite side "
"of the screen."
msgstr ""
"Когда добавляются диски и тома на рабочий стол, располагать их на "
"противоположной стороне экрана."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:60
msgid "Shows a rectangle in the destination place during DnD"
msgstr "Показывать прямоугольник в месте назначения во время перемещения"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:61
msgid ""
"When doing a Drag'n'Drop operation, marks the place in the grid where the "
"icon will be put with a semitransparent rectangle."
msgstr ""
"При выполнении операции Drag'n'Drop отмечается место в сетке полупрозрачным "
"прямоугольником, куда будет помещён значок."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:65
msgid "Sort Special Folders - Home/Trash Drives."
msgstr "Сортировать специальный папки - Домашняя папка/Корзина/Диски."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:66
msgid ""
"When arranging Icons on desktop, to sort and change the position of the "
"Home, Trash and mounted Network or External Drives"
msgstr ""
"При размещении значков на рабочем столе, для сортировки и изменения "
"положения Домашней папки, Корзины и подключенных сетевых или внешних дисков"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:70
msgid "Keep Icons Arranged"
msgstr "Сохранить порядок значков"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:71
msgid "Always keep Icons Arranged by the last arranged order"
msgstr "Всегда сохранять порядок значков используя последнее упорядочивание"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:75
msgid "Arrange Order"
msgstr "Упорядочивание значков"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:76
msgid "Icons Arranged by this property"
msgstr "Упорядочивание значков по этому свойству"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:80
msgid "Keep Icons Stacked"
msgstr "Сохранять сгруппированность значков"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:81
msgid "Always keep Icons Stacked, Similar types are grouped"
msgstr "Всегда сохранять сгруппированность значков. Группируются похожие типы"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:85
msgid "Type of Files to not Stack"
msgstr "Типы файлов, которые не группируются"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:86
msgid "An Array of strings types, Don't Stack these types of files"
msgstr "Целый набор из строковых типов. Эти типы файлов не группируются"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:91
msgid "Use Nemo instead of Nautilus to open folders."
msgstr "Использовать Nemo вместо Nautilus для открытия папок."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:95
msgid "Add an emblem to links"
msgstr "Добавить эмблему к ссылкам"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:96
msgid "Add an emblem to allow to identify soft links."
msgstr "Добавить эмблему для идентификации символических ссылок."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:100
msgid "Use black for label text"
msgstr "Использовать чёрный цвет для текста в подписях"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:101
msgid ""
"Paint the label text in black instead of white. Useful when using light "
"backgrounds."
msgstr ""
"Окрашивать текст подписи чёрным цветом вместо белого. Полезно при "
"использовании светлого фона."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:105
msgid "Show a popup if running on X11Wayland"
msgstr "Показывать всплывающее окно при работе под управлением X11Wayland"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:106
msgid ""
"Whether DING should show a popup if it is running on X11Wayland, or the user "
"decided to not show it anymore."
msgstr ""
"Нужно ли DING показывать всплывающее окно при работе под управлением "
"X11Wayland, или пользователь уже решил больше не показывать его."
#~ msgid "Desktop icons"
#~ msgstr "Desktop Icons"
#~ msgid "Add an emblem to .desktop files"
#~ msgstr "Добавить эмблему к .desktop файлу"
#~ msgid ""
#~ "To configure Desktop Icons NG, do right-click in the desktop and choose "
#~ "the last item: 'Desktop Icons settings'"
#~ msgstr ""
#~ "Чтобы настроить Desktop Icons NG, щёлкните правой кнопкой мыши на рабочем "
#~ "столе и выберите последний пункт: «Параметры Desktop Icons»."
#~ msgid "Add an emblem to executable .desktop files"
#~ msgstr "Добавить эмблему в исполняемые .desktop файлы"
#~ msgid "Add an emblem to .desktop files that have permission to be launched."
#~ msgstr "Добавить эмблему в .desktop файлы с разрешениями на выполнение."
#~ msgid "Do you want to run “{0}”, or display its contents?"
#~ msgstr "Вы хотите выполнить “{0}” или отобразить содержимое?"
#~ msgid "“{0}” is an executable text file."
#~ msgstr "“{0}” является исполняемым текстовым файлом."
#~ msgid "Execute in a terminal"
#~ msgstr "Выполнить в терминале"
#~ msgid "Show"
#~ msgstr "Показать"
#~ msgid "Execute"
#~ msgstr "Выполнить"
#~ msgid "New folder"
#~ msgstr "Создать папку"
#~ msgid "Delete"
#~ msgstr "Удалить"
#~ msgid "Are you sure you want to permanently delete these items?"
#~ msgstr "Вы уверены, что хотите удалить эти файлы навсегда?"
#~ msgid "If you delete an item, it will be permanently lost."
#~ msgstr "Если вы удалите файл, он будет навсегда потерян."
#~ msgid "There was an error while trying to permanently delete the file {:}."
#~ msgstr "Произошла ошибка при попытке окончательно удалить файл {:}."
#, fuzzy
#~ msgid "Show external disk drives in the desktop"
#~ msgstr "Показывать домашнюю папку на рабочем столе"
#, fuzzy
#~ msgid "Show the external drives"
#~ msgstr "Показывать домашнюю папку на рабочем столе"
#, fuzzy
#~ msgid "Show network volumes"
#~ msgstr "Показать в «Файлах»"
#~ msgid "Enter file name…"
#~ msgstr "Ввести имя файла…"
#~ msgid "Huge"
#~ msgstr "Огромный"
#~ msgid "Ok"
#~ msgstr "ОК"
desktop-icons-ng-49.0.5-c32667693d0831c29e3ab3f7bfeb675ea1531a00/po/sk.po 0000664 0000000 0000000 00000054207 15064747536 0023766 0 ustar 00root root 0000000 0000000 # Slovak translation for Desktop Icons NG
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# Dušan Kazik , 2020-2021.
#
msgid ""
msgstr ""
"Project-Id-Version: unnamed project\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-06-29 16:52+0200\n"
"PO-Revision-Date: 2021-10-25 07:57+0200\n"
"Last-Translator: Dušan Kazik \n"
"Language-Team: Slovak \n"
"Language: sk\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Gtranslator 40.0\n"
"Plural-Forms: nplurals=3; plural=(n==1) ? 1 : (n>=2 && n<=4) ? 2 : 0\n"
"X-Poedit-Basepath: .\n"
"X-Poedit-SearchPath-0: .\n"
#: app/askRenamePopup.js:49
msgid "Folder name"
msgstr "Názov priečinku"
#: app/askRenamePopup.js:49
msgid "File name"
msgstr "Názov súboru"
#: app/askRenamePopup.js:57 app/autoAr.js:305 app/desktopManager.js:1002
msgid "OK"
msgstr "OK"
#: app/askRenamePopup.js:57
msgid "Rename"
msgstr "Premenovať"
#: app/autoAr.js:88
msgid "AutoAr is not installed"
msgstr ""
#: app/autoAr.js:89
msgid ""
"To be able to work with compressed files, install file-roller and/or gir-1.2-"
"gnomeAutoAr"
msgstr ""
#: app/autoAr.js:224
#, fuzzy
msgid "Extracting files"
msgstr "Rozbaliť sem"
#: app/autoAr.js:241
#, fuzzy
msgid "Compressing files"
msgstr "Skomprimovať {0} súborov"
#: app/autoAr.js:297 app/autoAr.js:636 app/desktopManager.js:1004
#: app/fileItemMenu.js:474
msgid "Cancel"
msgstr "Zrušiť"
#: app/autoAr.js:318 app/autoAr.js:619
msgid "Enter a password here"
msgstr ""
#: app/autoAr.js:359
msgid "Removing partial file '${outputFile}'"
msgstr ""
#: app/autoAr.js:378
msgid "Creating destination folder"
msgstr ""
#: app/autoAr.js:410
msgid "Extracting files into '${outputPath}'"
msgstr ""
#: app/autoAr.js:442
#, fuzzy
msgid "Extraction completed"
msgstr "Rozbaliť sem"
#: app/autoAr.js:443
msgid "Extracting '${fullPathFile}' has been completed."
msgstr ""
#: app/autoAr.js:449
#, fuzzy
msgid "Extraction cancelled"
msgstr "Rozbaliť sem"
#: app/autoAr.js:450
msgid "Extracting '${fullPathFile}' has been cancelled by the user."
msgstr ""
#: app/autoAr.js:460
msgid "Passphrase required for ${filename}"
msgstr ""
#: app/autoAr.js:463
msgid "Error during extraction"
msgstr ""
#: app/autoAr.js:492
msgid "Compressing files into '${outputFile}'"
msgstr ""
#: app/autoAr.js:505
msgid "Compression completed"
msgstr ""
#: app/autoAr.js:506
msgid "Compressing files into '${outputFile}' has been completed."
msgstr ""
#: app/autoAr.js:510 app/autoAr.js:517
msgid "Cancelled compression"
msgstr ""
#: app/autoAr.js:511
msgid "The output file '${outputFile}' already exists."
msgstr ""
#: app/autoAr.js:518
msgid "Compressing files into '${outputFile}' has been cancelled by the user."
msgstr ""
#: app/autoAr.js:521
msgid "Error during compression"
msgstr ""
#: app/autoAr.js:554
msgid "Create archive"
msgstr ""
#: app/autoAr.js:579
#, fuzzy
msgid "Archive name"
msgstr "Názov súboru"
#: app/autoAr.js:614
msgid "Password"
msgstr ""
#: app/autoAr.js:633
msgid "Create"
msgstr ""
#: app/autoAr.js:712
msgid "Compatible with all operating systems."
msgstr ""
#: app/autoAr.js:718
msgid "Password protected .zip, must be installed on Windows and Mac."
msgstr ""
#: app/autoAr.js:724
msgid "Smaller archives but Linux and Mac only."
msgstr ""
#: app/autoAr.js:730
msgid "Smaller archives but must be installed on Windows and Mac."
msgstr ""
#: app/dbusUtils.js:69
msgid "\"${programName}\" is needed for Desktop Icons"
msgstr ""
#: app/dbusUtils.js:70
msgid ""
"For this functionality to work in Desktop Icons, you must install \"$"
"{programName}\" in your system."
msgstr ""
#: app/desktopIconsUtil.js:154
msgid "Command not found"
msgstr "Príkaz sa nenašiel"
#: app/desktopManager.js:259
msgid "Nautilus File Manager not found"
msgstr "Správca súborov Nautilus sa nenašiel"
#: app/desktopManager.js:260
msgid "The Nautilus File Manager is mandatory to work with Desktop Icons NG."
msgstr ""
"Správca súborov Nautilus je potrebný na spoluprácu s rozšírením Desktop "
"Icons NG."
#: app/desktopManager.js:964
msgid "Clear Current Selection before New Search"
msgstr "Pred novým hľadaním vymažte aktuálny výber"
#: app/desktopManager.js:1006
msgid "Find Files on Desktop"
msgstr "Nájdenie súborov na pracovnej ploche"
#: app/desktopManager.js:1074 app/desktopManager.js:1786
msgid "New Folder"
msgstr "Nový priečinok"
#: app/desktopManager.js:1078
msgid "New Document"
msgstr "Nový dokument"
#: app/desktopManager.js:1083
msgid "Paste"
msgstr "Vložiť"
#: app/desktopManager.js:1087
msgid "Undo"
msgstr "Vrátiť späť"
#: app/desktopManager.js:1091
msgid "Redo"
msgstr "Zopakovať"
#: app/desktopManager.js:1097
msgid "Select All"
msgstr "Vybrať všetko"
#: app/desktopManager.js:1105
msgid "Show Desktop in Files"
msgstr "Zobraziť Plochu v aplikácii Súbory"
#: app/desktopManager.js:1109 app/fileItemMenu.js:365
msgid "Open in Terminal"
msgstr "Otvoriť v termináli"
#: app/desktopManager.js:1115
msgid "Change Background…"
msgstr "Zmeniť pozadie…"
#: app/desktopManager.js:1126
msgid "Desktop Icons Settings"
msgstr "Nastavenia ikon pracovnej plochy"
#: app/desktopManager.js:1139
msgid "Display Settings"
msgstr "Nastavenia displejov"
#: app/desktopManager.js:1799
#, fuzzy
msgid "Folder Creation Failed"
msgstr "Názov priečinku"
#: app/desktopManager.js:1800
msgid "Error while trying to create a Folder"
msgstr ""
#: app/desktopManager.js:1836
msgid "Template Creation Failed"
msgstr ""
#: app/desktopManager.js:1837
msgid "Error while trying to create a Document"
msgstr ""
#: app/desktopManager.js:1845
msgid "Arrange Icons"
msgstr "Usporiadať ikony"
#: app/desktopManager.js:1849
msgid "Arrange By..."
msgstr "Usporiadať podľa..."
#: app/desktopManager.js:1858
msgid "Keep Arranged..."
msgstr "Udržiavať usporiadané..."
#: app/desktopManager.js:1862
msgid "Keep Stacked by type..."
msgstr ""
#: app/desktopManager.js:1867
msgid "Sort Home/Drives/Trash..."
msgstr "Usporiadať Domov/jednotky/Kôš..."
#: app/desktopManager.js:1873
msgid "Sort by Name"
msgstr "Usporiadať podľa názvu"
#: app/desktopManager.js:1875
msgid "Sort by Name Descending"
msgstr "Usporiadať podľa názvu zostupne"
#: app/desktopManager.js:1878
msgid "Sort by Modified Time"
msgstr "Usporiadať podľa času úpravy"
#: app/desktopManager.js:1881
msgid "Sort by Type"
msgstr "Usporiadať podľa typu"
#: app/desktopManager.js:1884
msgid "Sort by Size"
msgstr "Usporiadať podľa veľkosti"
#. * TRANSLATORS: when using a screen reader, this is the text read when a folder is
#. selected. Example: if a folder named "things" is selected, it will say "things Folder"
#: app/fileItem.js:64
msgid "${VisibleName} Folder"
msgstr ""
#. * TRANSLATORS: when using a screen reader, this is the text read when a normal file is
#. selected. Example: if a file named "my_picture.jpg" is selected, it will say "my_picture.jpg File"
#: app/fileItem.js:68
msgid "${VisibleName} File"
msgstr ""
#. TRANSLATORS: "Home" is the text that will be shown in the user's personal folder
#: app/fileItem.js:72 app/fileItem.js:203
msgid "Home"
msgstr "Domov"
#. * TRANSLATORS: when using a screen reader, this is the text read when the trash folder is
#. selected.
#: app/fileItem.js:77
#, fuzzy
msgid "Trash"
msgstr "Vyprázdniť Kôš"
#. * TRANSLATORS: when using a screen reader, this is the text read when an external drive is
#. selected. Example: if a USB stick named "my_portable" is selected, it will say "my_portable Drive"
#: app/fileItem.js:82
msgid "${VisibleName} Drive"
msgstr ""
#. * TRANSLATORS: when using a screen reader, this is the text read when a stack is
#. selected. Example: if a stack named "pictures" is selected, it will say "pictures Stack"
#: app/fileItem.js:87
msgid "${VisibleName} Stack"
msgstr ""
#: app/fileItem.js:295
#, fuzzy
msgid "Error while reading Desktop file"
msgstr "Zobraziť Plochu v aplikácii Súbory"
#: app/fileItem.js:337
msgid "Broken Link"
msgstr ""
#: app/fileItem.js:338
msgid "Can not open this File because it is a Broken Symlink"
msgstr ""
#: app/fileItem.js:370
#, fuzzy
msgid "Can't open the file"
msgstr "Spustiť súbor"
#: app/fileItem.js:396
#, fuzzy
msgid "Broken Desktop File"
msgstr "Zobraziť Plochu v aplikácii Súbory"
#: app/fileItem.js:397
msgid ""
"This .desktop file has errors or points to a program without permissions. It "
"can not be executed.\n"
"\n"
"\tEdit the file to set the correct executable Program."
msgstr ""
#: app/fileItem.js:403
msgid "Invalid Permissions on Desktop File"
msgstr ""
#: app/fileItem.js:404
msgid ""
"This .desktop File has incorrect Permissions. Right Click to edit "
"Properties, then:\n"
msgstr ""
#: app/fileItem.js:406
msgid ""
"\n"
"Set Permissions, in \"Others Access\", \"Read Only\" or \"None\""
msgstr ""
#: app/fileItem.js:409
msgid ""
"\n"
"Enable option, \"Allow Executing File as a Program\""
msgstr ""
#: app/fileItem.js:417
msgid ""
"This .desktop file is not trusted, it can not be launched. To enable "
"launching, right-click, then:\n"
"\n"
"Enable \"Allow Launching\""
msgstr ""
#: app/fileItem.js:620
msgid "Failed to set execution flag"
msgstr ""
#: app/fileItem.js:632 app/fileItem.js:639
msgid "Could not apply discrete GPU environment"
msgstr ""
#: app/fileItem.js:668
msgid "Could not find discrete GPU data"
msgstr ""
#: app/fileItem.js:793
msgid "Failed to set metadata::trusted flag"
msgstr ""
#: app/fileItemMenu.js:143
msgid "Open All..."
msgstr "Otvoriť všetko..."
#: app/fileItemMenu.js:143
msgid "Open"
msgstr "Otvoriť"
#: app/fileItemMenu.js:160
msgid "Stack This Type"
msgstr ""
#: app/fileItemMenu.js:160
msgid "Unstack This Type"
msgstr ""
#: app/fileItemMenu.js:173
msgid "Scripts"
msgstr "Skripty"
#: app/fileItemMenu.js:178
msgid "Open All With Other Application..."
msgstr "Otvoriť všetko inou aplikáciou..."
#: app/fileItemMenu.js:178
msgid "Open With Other Application"
msgstr "Otvoriť inou aplikáciou"
#: app/fileItemMenu.js:184
msgid "Launch using Dedicated Graphics Card"
msgstr "Spustiť pomocou vyhradenej grafickej karty"
#: app/fileItemMenu.js:195
msgid "Run as a program"
msgstr ""
#: app/fileItemMenu.js:203
msgid "Cut"
msgstr "Vystrihnúť"
#: app/fileItemMenu.js:210
msgid "Copy"
msgstr "Kopírovať"
#: app/fileItemMenu.js:218
msgid "Rename…"
msgstr "Premenovať…"
#: app/fileItemMenu.js:228
msgid "Move to Trash"
msgstr "Presunúť do Koša"
#: app/fileItemMenu.js:236
msgid "Delete permanently"
msgstr "Odstrániť natrvalo"
#: app/fileItemMenu.js:246
msgid "Don't Allow Launching"
msgstr "Neumožniť spustenie"
#: app/fileItemMenu.js:246
msgid "Allow Launching"
msgstr "Umožniť spúšťanie"
#: app/fileItemMenu.js:259
msgid "Empty Trash"
msgstr "Vyprázdniť Kôš"
#: app/fileItemMenu.js:272
msgid "Eject"
msgstr "Vysunúť"
#: app/fileItemMenu.js:280
msgid "Unmount"
msgstr "Odpojiť"
#: app/fileItemMenu.js:294 app/fileItemMenu.js:301
msgid "Extract Here"
msgstr "Rozbaliť sem"
#: app/fileItemMenu.js:308
msgid "Extract To..."
msgstr "Rozbaliť do…"
#: app/fileItemMenu.js:317
msgid "Send to..."
msgstr "Odoslať do…"
#: app/fileItemMenu.js:325
#, fuzzy
msgid "Compress {0} folder"
msgid_plural "Compress {0} folders"
msgstr[0] "Skomprimovať {0} súborov"
msgstr[1] "Skomprimovať {0} súbor"
msgstr[2] "Skomprimovať {0} súbory"
#: app/fileItemMenu.js:332
msgid "Compress {0} file"
msgid_plural "Compress {0} files"
msgstr[0] "Skomprimovať {0} súborov"
msgstr[1] "Skomprimovať {0} súbor"
msgstr[2] "Skomprimovať {0} súbory"
#: app/fileItemMenu.js:340
msgid "New Folder with {0} item"
msgid_plural "New Folder with {0} items"
msgstr[0] "Nový priečinok s {0} položkami"
msgstr[1] "Nový priečinok s {0} položkou"
msgstr[2] "Nový priečinok s {0} položkami"
#: app/fileItemMenu.js:351
msgid "Common Properties"
msgstr "Spoločné vlastnosti"
#: app/fileItemMenu.js:351
msgid "Properties"
msgstr "Vlastnosti"
#: app/fileItemMenu.js:358
msgid "Show All in Files"
msgstr "Zobraziť všetko v aplikácii Súbory"
#: app/fileItemMenu.js:358
msgid "Show in Files"
msgstr "Zobraziť v aplikácii Súbory"
#: app/fileItemMenu.js:449
#, fuzzy
msgid "No Extraction Folder"
msgstr "Rozbaliť sem"
#: app/fileItemMenu.js:450
msgid "Unable to extract File, extraction Folder Does not Exist"
msgstr ""
#: app/fileItemMenu.js:470
msgid "Select Extract Destination"
msgstr "Výber cieľa rozbaľovania"
#: app/fileItemMenu.js:475
msgid "Select"
msgstr "Vybrať"
#: app/fileItemMenu.js:516
msgid "Can not email a Directory"
msgstr "Nedá sa odoslať adresár pomocou emailu"
#: app/fileItemMenu.js:517
msgid "Selection includes a Directory, compress the directory to a file first."
msgstr "Výber obsahuje adresár. Najskôr skomprimujte adresár do súboru."
#: app/notifyX11UnderWayland.js:37
msgid "Desktop Icons NG is running under X11Wayland"
msgstr ""
#: app/notifyX11UnderWayland.js:38
msgid ""
"It seems that you have your system configured to force GTK to use X11. This "
"works, but it's suboptimal. You should check your system configuration to "
"fix this."
msgstr ""
#: app/notifyX11UnderWayland.js:39 app/showErrorPopup.js:39
msgid "Close"
msgstr "Zavrieť"
#: app/notifyX11UnderWayland.js:47
msgid "Don't show this message anymore."
msgstr ""
#: app/preferences.js:91
msgid "Settings"
msgstr "Nastavenia"
#: app/prefswindow.js:64
msgid "Size for the desktop icons"
msgstr "Veľkosť ikon pracovnej plochy"
#: app/prefswindow.js:64
msgid "Tiny"
msgstr "Najmenšie"
#: app/prefswindow.js:64
msgid "Small"
msgstr "Malé"
#: app/prefswindow.js:64
msgid "Standard"
msgstr "Štandardné"
#: app/prefswindow.js:64
msgid "Large"
msgstr "Veľké"
#: app/prefswindow.js:65
msgid "Show the personal folder in the desktop"
msgstr "Zobraziť osobný priečinok na pracovnej ploche"
#: app/prefswindow.js:66
msgid "Show the trash icon in the desktop"
msgstr "Zobraziť ikonu Koša na pracovnej ploche"
#: app/prefswindow.js:67 schemas/org.gnome.shell.extensions.ding.gschema.xml:45
msgid "Show external drives in the desktop"
msgstr "Zobraziť externé jednotky na pracovnej ploche"
#: app/prefswindow.js:68 schemas/org.gnome.shell.extensions.ding.gschema.xml:50
msgid "Show network drives in the desktop"
msgstr "Zobraziť sieťové jednotky na pracovnej ploche"
#: app/prefswindow.js:71
msgid "New icons alignment"
msgstr "Zarovnanie nových ikon"
#: app/prefswindow.js:73
msgid "Top-left corner"
msgstr "Ľavý horný roh"
#: app/prefswindow.js:74
msgid "Top-right corner"
msgstr "Pravý horný roh"
#: app/prefswindow.js:75
msgid "Bottom-left corner"
msgstr "Ľavý spodný roh"
#: app/prefswindow.js:76
msgid "Bottom-right corner"
msgstr "Pravý spodný roh"
#: app/prefswindow.js:78 schemas/org.gnome.shell.extensions.ding.gschema.xml:55
msgid "Add new drives to the opposite side of the screen"
msgstr "Pridať nové jednotky na opačnú stranu obrazovky"
#: app/prefswindow.js:79
msgid "Highlight the drop place during Drag'n'Drop"
msgstr "Zvýrazniť miesto pustenia počas operácie ťahania a pustenia"
#: app/prefswindow.js:80 schemas/org.gnome.shell.extensions.ding.gschema.xml:90
msgid "Use Nemo to open folders"
msgstr ""
#: app/prefswindow.js:82
msgid "Add an emblem to soft links"
msgstr ""
#: app/prefswindow.js:84
msgid "Use dark text in icon labels"
msgstr ""
#: app/prefswindow.js:91
msgid "Settings shared with Nautilus"
msgstr "Nastavenia zdieľané s aplikáciou Nautilus"
#: app/prefswindow.js:113
msgid "Click type for open files"
msgstr "Typ kliknutia na otváranie súborov"
#: app/prefswindow.js:113
msgid "Single click"
msgstr "Jednoduché kliknutie"
#: app/prefswindow.js:113
msgid "Double click"
msgstr "Dvojité kliknutie"
#: app/prefswindow.js:114
msgid "Show hidden files"
msgstr "Zobraziť skryté súbory"
#: app/prefswindow.js:115
msgid "Show a context menu item to delete permanently"
msgstr "Zobraziť kontextovú ponuku položky na trvalé odstránenie"
#: app/prefswindow.js:120
msgid "Action to do when launching a program from the desktop"
msgstr "Akcia, ktorú vykonať po spustení programu z pracovnej plochy"
#: app/prefswindow.js:121
msgid "Display the content of the file"
msgstr "Zobraziť obsah súboru"
#: app/prefswindow.js:122
msgid "Launch the file"
msgstr "Spustiť súbor"
#: app/prefswindow.js:123
msgid "Ask what to do"
msgstr "Spýtať sa, čo robiť"
#: app/prefswindow.js:129
msgid "Show image thumbnails"
msgstr "Zobraziť miniatúry obrázkov"
#: app/prefswindow.js:130
msgid "Never"
msgstr "Nikdy"
#: app/prefswindow.js:131
msgid "Local files only"
msgstr "Iba miestne súbory"
#: app/prefswindow.js:132
msgid "Always"
msgstr "Vždy"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:25
msgid "Icon size"
msgstr "Veľkosť ikon"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:26
msgid "Set the size for the desktop icons."
msgstr "Nastaví veľkosť ikon na pracovnej ploche."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:30
msgid "Show personal folder"
msgstr "Zobraziť osobný priečinok"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:31
msgid "Show the personal folder in the desktop."
msgstr "Zobrazí osobný priečinok na pracovnej ploche."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:35
msgid "Show trash icon"
msgstr "Zobraziť ikonu Koša"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:36
msgid "Show the trash icon in the desktop."
msgstr "Zobrazí ikonu Koša na pracovnej ploche."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:40
msgid "New icons start corner"
msgstr "Počiatočný roh pre nové ikony"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:41
msgid "Set the corner from where the icons will start to be placed."
msgstr "Nastaví roh, z ktorého začnú byť umiestňované ikony."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:46
msgid "Show the disk drives connected to the computer."
msgstr "Zobrazí diskové jednotky pripojené k počítaču."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:51
msgid "Show mounted network volumes in the desktop."
msgstr "Zobrazí pripojené sieťové zväzky na pracovnej ploche."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:56
msgid ""
"When adding drives and volumes to the desktop, add them to the opposite side "
"of the screen."
msgstr ""
"Pri pridaní jednotiek a zväzkov na pracovnú plochu, budú pridané na opačnú "
"stranu obrazovky."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:60
msgid "Shows a rectangle in the destination place during DnD"
msgstr "Zobrazí obdĺžnik v cieľovom umiestnení počas ťahania a pustenia"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:61
msgid ""
"When doing a Drag'n'Drop operation, marks the place in the grid where the "
"icon will be put with a semitransparent rectangle."
msgstr ""
"Počas vykonávania operácie ťahania a pustenia sa označí miesto v mriežke, "
"kde bude ikona umiestnená, polopriehladným obdĺžnikom."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:65
msgid "Sort Special Folders - Home/Trash Drives."
msgstr "Usporiadať špeciálne priečinky - Domov/Kôš, jednotky."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:66
msgid ""
"When arranging Icons on desktop, to sort and change the position of the "
"Home, Trash and mounted Network or External Drives"
msgstr ""
"Pri usporiadaní ikon na ploche, usporiadať a zmeniť pozíciu ikon pre Domov, "
"Kôš a pripojených sieťových alebo externých jednotiek"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:70
msgid "Keep Icons Arranged"
msgstr "Udržiavať ikony usporiadané"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:71
msgid "Always keep Icons Arranged by the last arranged order"
msgstr "Vždy zachovať ikony usporiadané podľa posledného poradia usporiadania"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:75
msgid "Arrange Order"
msgstr "Poradie usporiadania"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:76
msgid "Icons Arranged by this property"
msgstr "Ikony budú zoradené podľa tejto vlastnosti"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:80
#, fuzzy
msgid "Keep Icons Stacked"
msgstr "Udržiavať ikony usporiadané"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:81
#, fuzzy
msgid "Always keep Icons Stacked, Similar types are grouped"
msgstr "Vždy zachovať ikony usporiadané podľa posledného poradia usporiadania"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:85
msgid "Type of Files to not Stack"
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:86
msgid "An Array of strings types, Don't Stack these types of files"
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:91
msgid "Use Nemo instead of Nautilus to open folders."
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:95
msgid "Add an emblem to links"
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:96
msgid "Add an emblem to allow to identify soft links."
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:100
msgid "Use black for label text"
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:101
msgid ""
"Paint the label text in black instead of white. Useful when using light "
"backgrounds."
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:105
msgid "Show a popup if running on X11Wayland"
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:106
msgid ""
"Whether DING should show a popup if it is running on X11Wayland, or the user "
"decided to not show it anymore."
msgstr ""
#, fuzzy
#~ msgid "Desktop icons"
#~ msgstr "Nastavenia ikon pracovnej plochy"
#~ msgid ""
#~ "To configure Desktop Icons NG, do right-click in the desktop and choose "
#~ "the last item: 'Desktop Icons settings'"
#~ msgstr ""
#~ "Na nastavenie rozšírenia Desktop Icons NG kliknite pravým tlačidlom na "
#~ "pracovnú plochu a zvoľte poslednú položku „Nastavenia ikon pracovnej "
#~ "plochy“"
#~ msgid "Do you want to run “{0}”, or display its contents?"
#~ msgstr "Chcete súbor „{0}“ spustiť, alebo sa má zobraziť jeho obsah?"
#~ msgid "“{0}” is an executable text file."
#~ msgstr "„{0}“ je spustiteľným textovým súborom."
#~ msgid "Execute in a terminal"
#~ msgstr "Spustiť v termináli"
#~ msgid "Show"
#~ msgstr "Zobraziť"
#~ msgid "Execute"
#~ msgstr "Spustiť"
desktop-icons-ng-49.0.5-c32667693d0831c29e3ab3f7bfeb675ea1531a00/po/sv.po 0000664 0000000 0000000 00000053602 15064747536 0023777 0 ustar 00root root 0000000 0000000 # Swedish translation for ding.
# Copyright © 2018-2022 ding's COPYRIGHT HOLDER
# This file is distributed under the same license as the ding package.
# Anders Jonsson , 2018-2021.
# Josef Andersson , 2019.
# Luna Jernberg , 2021.
#
msgid ""
msgstr ""
"Project-Id-Version: ding\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-06-29 16:52+0200\n"
"PO-Revision-Date: 2022-04-01 00:42+0200\n"
"Last-Translator: Kristoffer Grundström \n"
"Language-Team: Swedish \n"
"Language: sv\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
#: app/askRenamePopup.js:49
msgid "Folder name"
msgstr "Mappnamn"
#: app/askRenamePopup.js:49
msgid "File name"
msgstr "Filnamn"
#: app/askRenamePopup.js:57 app/autoAr.js:305 app/desktopManager.js:1002
msgid "OK"
msgstr "OK"
#: app/askRenamePopup.js:57
msgid "Rename"
msgstr "Byt namn"
#: app/autoAr.js:88
msgid "AutoAr is not installed"
msgstr ""
#: app/autoAr.js:89
msgid ""
"To be able to work with compressed files, install file-roller and/or gir-1.2-"
"gnomeAutoAr"
msgstr ""
#: app/autoAr.js:224
#, fuzzy
msgid "Extracting files"
msgstr "Extrahera här"
#: app/autoAr.js:241
#, fuzzy
msgid "Compressing files"
msgstr "Komprimera {0} fil"
#: app/autoAr.js:297 app/autoAr.js:636 app/desktopManager.js:1004
#: app/fileItemMenu.js:474
msgid "Cancel"
msgstr "Avbryt"
#: app/autoAr.js:318 app/autoAr.js:619
msgid "Enter a password here"
msgstr ""
#: app/autoAr.js:359
msgid "Removing partial file '${outputFile}'"
msgstr ""
#: app/autoAr.js:378
msgid "Creating destination folder"
msgstr ""
#: app/autoAr.js:410
msgid "Extracting files into '${outputPath}'"
msgstr ""
#: app/autoAr.js:442
#, fuzzy
msgid "Extraction completed"
msgstr "Extrahera här"
#: app/autoAr.js:443
msgid "Extracting '${fullPathFile}' has been completed."
msgstr ""
#: app/autoAr.js:449
#, fuzzy
msgid "Extraction cancelled"
msgstr "Extrahera här"
#: app/autoAr.js:450
msgid "Extracting '${fullPathFile}' has been cancelled by the user."
msgstr ""
#: app/autoAr.js:460
msgid "Passphrase required for ${filename}"
msgstr ""
#: app/autoAr.js:463
msgid "Error during extraction"
msgstr ""
#: app/autoAr.js:492
msgid "Compressing files into '${outputFile}'"
msgstr ""
#: app/autoAr.js:505
msgid "Compression completed"
msgstr ""
#: app/autoAr.js:506
msgid "Compressing files into '${outputFile}' has been completed."
msgstr ""
#: app/autoAr.js:510 app/autoAr.js:517
msgid "Cancelled compression"
msgstr ""
#: app/autoAr.js:511
msgid "The output file '${outputFile}' already exists."
msgstr ""
#: app/autoAr.js:518
msgid "Compressing files into '${outputFile}' has been cancelled by the user."
msgstr ""
#: app/autoAr.js:521
msgid "Error during compression"
msgstr ""
#: app/autoAr.js:554
msgid "Create archive"
msgstr ""
#: app/autoAr.js:579
#, fuzzy
msgid "Archive name"
msgstr "Filnamn"
#: app/autoAr.js:614
msgid "Password"
msgstr ""
#: app/autoAr.js:633
msgid "Create"
msgstr ""
#: app/autoAr.js:712
msgid "Compatible with all operating systems."
msgstr ""
#: app/autoAr.js:718
msgid "Password protected .zip, must be installed on Windows and Mac."
msgstr ""
#: app/autoAr.js:724
msgid "Smaller archives but Linux and Mac only."
msgstr ""
#: app/autoAr.js:730
msgid "Smaller archives but must be installed on Windows and Mac."
msgstr ""
#: app/dbusUtils.js:69
msgid "\"${programName}\" is needed for Desktop Icons"
msgstr "\"${programName}\" behövs för skrivbordsikoner"
#: app/dbusUtils.js:70
msgid ""
"For this functionality to work in Desktop Icons, you must install \"$"
"{programName}\" in your system."
msgstr ""
"För att få den här funktionaliteten att fungera i skrivbordsikoner så måste "
"du installera \"${programName}\" i ditt system."
#: app/desktopIconsUtil.js:154
msgid "Command not found"
msgstr "Kommandot hittades inte"
#: app/desktopManager.js:259
msgid "Nautilus File Manager not found"
msgstr "Nautilus filhanterare hittades inte"
#: app/desktopManager.js:260
msgid "The Nautilus File Manager is mandatory to work with Desktop Icons NG."
msgstr ""
"Filhanteraren Nautilus är obligatorisk för att arbeta med Desktop Icons NG."
#: app/desktopManager.js:964
msgid "Clear Current Selection before New Search"
msgstr "Rensa aktuellt val innan ny sökning"
#: app/desktopManager.js:1006
msgid "Find Files on Desktop"
msgstr "Hitta filer på skrivbordet"
#: app/desktopManager.js:1074 app/desktopManager.js:1786
msgid "New Folder"
msgstr "Ny mapp"
#: app/desktopManager.js:1078
msgid "New Document"
msgstr "Nytt dokument"
#: app/desktopManager.js:1083
msgid "Paste"
msgstr "Klistra in"
#: app/desktopManager.js:1087
msgid "Undo"
msgstr "Ångra"
#: app/desktopManager.js:1091
msgid "Redo"
msgstr "Gör om"
#: app/desktopManager.js:1097
msgid "Select All"
msgstr "Markera alla"
#: app/desktopManager.js:1105
msgid "Show Desktop in Files"
msgstr "Visa skrivbord i Filer"
#: app/desktopManager.js:1109 app/fileItemMenu.js:365
msgid "Open in Terminal"
msgstr "Öppna i terminal"
#: app/desktopManager.js:1115
msgid "Change Background…"
msgstr "Ändra bakgrund…"
#: app/desktopManager.js:1126
msgid "Desktop Icons Settings"
msgstr "Inställningar för Desktop Icons"
#: app/desktopManager.js:1139
msgid "Display Settings"
msgstr "Visningsinställningar"
#: app/desktopManager.js:1799
#, fuzzy
msgid "Folder Creation Failed"
msgstr "Mappnamn"
#: app/desktopManager.js:1800
msgid "Error while trying to create a Folder"
msgstr ""
#: app/desktopManager.js:1836
msgid "Template Creation Failed"
msgstr ""
#: app/desktopManager.js:1837
msgid "Error while trying to create a Document"
msgstr ""
#: app/desktopManager.js:1845
msgid "Arrange Icons"
msgstr "Arrangera ikonerna"
#: app/desktopManager.js:1849
msgid "Arrange By..."
msgstr "Arrangera efter..."
#: app/desktopManager.js:1858
msgid "Keep Arranged..."
msgstr "Behåll arrangerade..."
#: app/desktopManager.js:1862
msgid "Keep Stacked by type..."
msgstr "Behåll arrangerade efter typ..."
#: app/desktopManager.js:1867
msgid "Sort Home/Drives/Trash..."
msgstr "Sortera Hem/Diskar/Papperskorg..."
#: app/desktopManager.js:1873
msgid "Sort by Name"
msgstr "Sortera efter namn"
#: app/desktopManager.js:1875
msgid "Sort by Name Descending"
msgstr "Sortera efter namn (nedåtgående)"
#: app/desktopManager.js:1878
msgid "Sort by Modified Time"
msgstr "Sortera efter senaste ändring"
#: app/desktopManager.js:1881
msgid "Sort by Type"
msgstr "Sortera efter typ"
#: app/desktopManager.js:1884
msgid "Sort by Size"
msgstr "Sortera efter storlek"
#. * TRANSLATORS: when using a screen reader, this is the text read when a folder is
#. selected. Example: if a folder named "things" is selected, it will say "things Folder"
#: app/fileItem.js:64
msgid "${VisibleName} Folder"
msgstr ""
#. * TRANSLATORS: when using a screen reader, this is the text read when a normal file is
#. selected. Example: if a file named "my_picture.jpg" is selected, it will say "my_picture.jpg File"
#: app/fileItem.js:68
msgid "${VisibleName} File"
msgstr ""
#. TRANSLATORS: "Home" is the text that will be shown in the user's personal folder
#: app/fileItem.js:72 app/fileItem.js:203
msgid "Home"
msgstr "Hem"
#. * TRANSLATORS: when using a screen reader, this is the text read when the trash folder is
#. selected.
#: app/fileItem.js:77
#, fuzzy
msgid "Trash"
msgstr "Töm papperskorgen"
#. * TRANSLATORS: when using a screen reader, this is the text read when an external drive is
#. selected. Example: if a USB stick named "my_portable" is selected, it will say "my_portable Drive"
#: app/fileItem.js:82
msgid "${VisibleName} Drive"
msgstr ""
#. * TRANSLATORS: when using a screen reader, this is the text read when a stack is
#. selected. Example: if a stack named "pictures" is selected, it will say "pictures Stack"
#: app/fileItem.js:87
msgid "${VisibleName} Stack"
msgstr ""
#: app/fileItem.js:295
#, fuzzy
msgid "Error while reading Desktop file"
msgstr "Trasig skrivbordsfil"
#: app/fileItem.js:337
msgid "Broken Link"
msgstr "Trasig länk"
#: app/fileItem.js:338
msgid "Can not open this File because it is a Broken Symlink"
msgstr "Kan inte öppna den här filen eftersom att det är en trasig symlänk"
#: app/fileItem.js:370
msgid "Can't open the file"
msgstr ""
#: app/fileItem.js:396
msgid "Broken Desktop File"
msgstr "Trasig skrivbordsfil"
#: app/fileItem.js:397
msgid ""
"This .desktop file has errors or points to a program without permissions. It "
"can not be executed.\n"
"\n"
"\tEdit the file to set the correct executable Program."
msgstr ""
"Den här .desktop-filen har fel eller pekar till ett program utan "
"rättigheter. Den kan inte köras."
#: app/fileItem.js:403
msgid "Invalid Permissions on Desktop File"
msgstr "Felatiga rättigheter i skrivbordsfilen"
#: app/fileItem.js:404
msgid ""
"This .desktop File has incorrect Permissions. Right Click to edit "
"Properties, then:\n"
msgstr ""
"Den här .desktop-filen har inte korrekta rättigheter. Högerklicka för att "
"redigera Egenskaper, sen:\n"
#: app/fileItem.js:406
msgid ""
"\n"
"Set Permissions, in \"Others Access\", \"Read Only\" or \"None\""
msgstr ""
"\n"
"Ställ in rättigheter, i \"Andras åtkomst\", \"Endast läsbar\" eller "
"\"Inget\""
#: app/fileItem.js:409
msgid ""
"\n"
"Enable option, \"Allow Executing File as a Program\""
msgstr ""
"\n"
"Aktivera alternativet, \"Tillåt att filen körs som ett program\""
#: app/fileItem.js:417
msgid ""
"This .desktop file is not trusted, it can not be launched. To enable "
"launching, right-click, then:\n"
"\n"
"Enable \"Allow Launching\""
msgstr ""
"Den här .desktop-filen är inte pålitlig, den kan inte startas. För att göra "
"den startbar, högerklicka, därefter:\n"
"\n"
"Aktivera \"Tillåt start\""
#: app/fileItem.js:620
msgid "Failed to set execution flag"
msgstr ""
#: app/fileItem.js:632 app/fileItem.js:639
msgid "Could not apply discrete GPU environment"
msgstr ""
#: app/fileItem.js:668
msgid "Could not find discrete GPU data"
msgstr ""
#: app/fileItem.js:793
msgid "Failed to set metadata::trusted flag"
msgstr ""
#: app/fileItemMenu.js:143
msgid "Open All..."
msgstr "Öppna alla…"
#: app/fileItemMenu.js:143
msgid "Open"
msgstr "Öppna"
#: app/fileItemMenu.js:160
msgid "Stack This Type"
msgstr "Arrangera denna typ"
#: app/fileItemMenu.js:160
msgid "Unstack This Type"
msgstr "Sluta arrangera denna typ"
#: app/fileItemMenu.js:173
msgid "Scripts"
msgstr "Skript"
#: app/fileItemMenu.js:178
msgid "Open All With Other Application..."
msgstr "Öppna alla med annat program…"
#: app/fileItemMenu.js:178
msgid "Open With Other Application"
msgstr "Öppna med annat program"
#: app/fileItemMenu.js:184
msgid "Launch using Dedicated Graphics Card"
msgstr "Starta med dedikerat grafikkort"
#: app/fileItemMenu.js:195
msgid "Run as a program"
msgstr "Kör som ett program"
#: app/fileItemMenu.js:203
msgid "Cut"
msgstr "Klipp ut"
#: app/fileItemMenu.js:210
msgid "Copy"
msgstr "Kopiera"
#: app/fileItemMenu.js:218
msgid "Rename…"
msgstr "Byt namn…"
#: app/fileItemMenu.js:228
msgid "Move to Trash"
msgstr "Flytta till papperskorgen"
#: app/fileItemMenu.js:236
msgid "Delete permanently"
msgstr "Ta bort permanent"
#: app/fileItemMenu.js:246
msgid "Don't Allow Launching"
msgstr "Tillåt ej programstart"
#: app/fileItemMenu.js:246
msgid "Allow Launching"
msgstr "Tillåt programstart"
#: app/fileItemMenu.js:259
msgid "Empty Trash"
msgstr "Töm papperskorgen"
#: app/fileItemMenu.js:272
msgid "Eject"
msgstr "Mata ut"
#: app/fileItemMenu.js:280
msgid "Unmount"
msgstr "Avmontera"
#: app/fileItemMenu.js:294 app/fileItemMenu.js:301
msgid "Extract Here"
msgstr "Extrahera här"
#: app/fileItemMenu.js:308
msgid "Extract To..."
msgstr "Extrahera till…"
#: app/fileItemMenu.js:317
msgid "Send to..."
msgstr "Skicka till…"
#: app/fileItemMenu.js:325
#, fuzzy
msgid "Compress {0} folder"
msgid_plural "Compress {0} folders"
msgstr[0] "Komprimera {0} fil"
msgstr[1] "Komprimera {0} filer"
#: app/fileItemMenu.js:332
msgid "Compress {0} file"
msgid_plural "Compress {0} files"
msgstr[0] "Komprimera {0} fil"
msgstr[1] "Komprimera {0} filer"
#: app/fileItemMenu.js:340
msgid "New Folder with {0} item"
msgid_plural "New Folder with {0} items"
msgstr[0] "Ny mapp med {0} objekt"
msgstr[1] "Ny mapp med {0} objekt"
#: app/fileItemMenu.js:351
msgid "Common Properties"
msgstr "Gemensamma egenskaper"
#: app/fileItemMenu.js:351
msgid "Properties"
msgstr "Egenskaper"
#: app/fileItemMenu.js:358
msgid "Show All in Files"
msgstr "Visa alla i Filer"
#: app/fileItemMenu.js:358
msgid "Show in Files"
msgstr "Visa i Filer"
#: app/fileItemMenu.js:449
#, fuzzy
msgid "No Extraction Folder"
msgstr "Extrahera här"
#: app/fileItemMenu.js:450
msgid "Unable to extract File, extraction Folder Does not Exist"
msgstr ""
#: app/fileItemMenu.js:470
msgid "Select Extract Destination"
msgstr "Välj målplats för extrahering"
#: app/fileItemMenu.js:475
msgid "Select"
msgstr "Välj"
#: app/fileItemMenu.js:516
msgid "Can not email a Directory"
msgstr "Kan inte maila en katalog"
#: app/fileItemMenu.js:517
msgid "Selection includes a Directory, compress the directory to a file first."
msgstr "Valet innehåller en katalog, komprimera katalogen till en fil först."
#: app/notifyX11UnderWayland.js:37
msgid "Desktop Icons NG is running under X11Wayland"
msgstr ""
#: app/notifyX11UnderWayland.js:38
msgid ""
"It seems that you have your system configured to force GTK to use X11. This "
"works, but it's suboptimal. You should check your system configuration to "
"fix this."
msgstr ""
#: app/notifyX11UnderWayland.js:39 app/showErrorPopup.js:39
msgid "Close"
msgstr "Stäng"
#: app/notifyX11UnderWayland.js:47
msgid "Don't show this message anymore."
msgstr ""
#: app/preferences.js:91
msgid "Settings"
msgstr "Inställningar"
# TODO: *ON* the desktop?
#: app/prefswindow.js:64
#, fuzzy
msgid "Size for the desktop icons"
msgstr "Ställ in storleken för skrivbordsikonerna."
#: app/prefswindow.js:64
msgid "Tiny"
msgstr ""
#: app/prefswindow.js:64
msgid "Small"
msgstr ""
#: app/prefswindow.js:64
msgid "Standard"
msgstr ""
#: app/prefswindow.js:64
msgid "Large"
msgstr ""
# TODO: *ON* the desktop?
#: app/prefswindow.js:65
#, fuzzy
msgid "Show the personal folder in the desktop"
msgstr "Visa den personliga mappen på skrivbordet."
# TODO: *ON* the desktop?
#: app/prefswindow.js:66
#, fuzzy
msgid "Show the trash icon in the desktop"
msgstr "Visa papperskorgsikonen på skrivbordet."
#: app/prefswindow.js:67 schemas/org.gnome.shell.extensions.ding.gschema.xml:45
msgid "Show external drives in the desktop"
msgstr "Visa externa enheter på skrivbordet"
#: app/prefswindow.js:68 schemas/org.gnome.shell.extensions.ding.gschema.xml:50
msgid "Show network drives in the desktop"
msgstr "Visa nätverksenheter på skrivbordet"
#: app/prefswindow.js:71
#, fuzzy
msgid "New icons alignment"
msgstr "Starthörn för nya ikoner"
#: app/prefswindow.js:73
msgid "Top-left corner"
msgstr ""
#: app/prefswindow.js:74
msgid "Top-right corner"
msgstr ""
#: app/prefswindow.js:75
msgid "Bottom-left corner"
msgstr ""
#: app/prefswindow.js:76
msgid "Bottom-right corner"
msgstr ""
#: app/prefswindow.js:78 schemas/org.gnome.shell.extensions.ding.gschema.xml:55
msgid "Add new drives to the opposite side of the screen"
msgstr "Lägg till nya enheter på motsatt sida av skärmen"
#: app/prefswindow.js:79
msgid "Highlight the drop place during Drag'n'Drop"
msgstr ""
#: app/prefswindow.js:80 schemas/org.gnome.shell.extensions.ding.gschema.xml:90
msgid "Use Nemo to open folders"
msgstr "Använd Nemo för att öppna kataloger"
#: app/prefswindow.js:82
#, fuzzy
msgid "Add an emblem to soft links"
msgstr "Lägg till ett emblem till länkar"
#: app/prefswindow.js:84
msgid "Use dark text in icon labels"
msgstr ""
#: app/prefswindow.js:91
msgid "Settings shared with Nautilus"
msgstr ""
#: app/prefswindow.js:113
msgid "Click type for open files"
msgstr ""
#: app/prefswindow.js:113
msgid "Single click"
msgstr ""
#: app/prefswindow.js:113
msgid "Double click"
msgstr ""
#: app/prefswindow.js:114
#, fuzzy
msgid "Show hidden files"
msgstr "Visa i Filer"
#: app/prefswindow.js:115
msgid "Show a context menu item to delete permanently"
msgstr ""
#: app/prefswindow.js:120
msgid "Action to do when launching a program from the desktop"
msgstr ""
#: app/prefswindow.js:121
msgid "Display the content of the file"
msgstr ""
#: app/prefswindow.js:122
msgid "Launch the file"
msgstr ""
#: app/prefswindow.js:123
msgid "Ask what to do"
msgstr ""
#: app/prefswindow.js:129
msgid "Show image thumbnails"
msgstr ""
#: app/prefswindow.js:130
msgid "Never"
msgstr ""
#: app/prefswindow.js:131
msgid "Local files only"
msgstr ""
#: app/prefswindow.js:132
msgid "Always"
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:25
msgid "Icon size"
msgstr "Ikonstorlek"
# TODO: *ON* the desktop?
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:26
msgid "Set the size for the desktop icons."
msgstr "Ställ in storleken för skrivbordsikonerna."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:30
msgid "Show personal folder"
msgstr "Visa personlig mapp"
# TODO: *ON* the desktop?
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:31
msgid "Show the personal folder in the desktop."
msgstr "Visa den personliga mappen på skrivbordet."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:35
msgid "Show trash icon"
msgstr "Visa papperskorgsikon"
# TODO: *ON* the desktop?
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:36
msgid "Show the trash icon in the desktop."
msgstr "Visa papperskorgsikonen på skrivbordet."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:40
msgid "New icons start corner"
msgstr "Starthörn för nya ikoner"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:41
msgid "Set the corner from where the icons will start to be placed."
msgstr "Ställ in hörnet där ikonerna ska börja placeras."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:46
msgid "Show the disk drives connected to the computer."
msgstr "Visa de hårddiskar som är anslutna till datorn."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:51
msgid "Show mounted network volumes in the desktop."
msgstr "Visa monterade nätverksvolymer på skrivbordet."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:56
msgid ""
"When adding drives and volumes to the desktop, add them to the opposite side "
"of the screen."
msgstr ""
"När enheter och volymer läggs till på skrivbordet, lägg till dem på motsatt "
"sida av skärmen."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:60
msgid "Shows a rectangle in the destination place during DnD"
msgstr "Visar en rektangel i målplatsen under dra-och-släpp"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:61
msgid ""
"When doing a Drag'n'Drop operation, marks the place in the grid where the "
"icon will be put with a semitransparent rectangle."
msgstr ""
"När en dra-och-släpp-operation utförs, markeras platsen i rutnätet där "
"ikonen kommer placeras med en halvgenomskinlig rektangel."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:65
msgid "Sort Special Folders - Home/Trash Drives."
msgstr "Sortera särskilda kataloger - Hem/Papperskorg Diskar."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:66
msgid ""
"When arranging Icons on desktop, to sort and change the position of the "
"Home, Trash and mounted Network or External Drives"
msgstr ""
"I samband med att arrangera ikoner på skrivbordet, att sortera och ändra "
"positionen för Hem, Papperskorg och monterade nätverk eller externa diskar"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:70
msgid "Keep Icons Arranged"
msgstr "Behåll ikonerna arrangerade"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:71
msgid "Always keep Icons Arranged by the last arranged order"
msgstr ""
"Behåll alltid ikonerna arrangerade efter den senaste sorteringsordningen"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:75
msgid "Arrange Order"
msgstr "Arrangera ordningen"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:76
msgid "Icons Arranged by this property"
msgstr "Ikonerna arrangerade efter denna egenskap"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:80
msgid "Keep Icons Stacked"
msgstr "Behåll ikonerna arrangerade"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:81
msgid "Always keep Icons Stacked, Similar types are grouped"
msgstr "Behåll alltid ikonerna arrangerade, grupperade efter typ"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:85
msgid "Type of Files to not Stack"
msgstr "Filtyper som inte arrangeras"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:86
msgid "An Array of strings types, Don't Stack these types of files"
msgstr "En lista över typer, arrangera inte dessa filtyper"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:91
msgid "Use Nemo instead of Nautilus to open folders."
msgstr "Använd Nemo istället för Nautilus för att öppna kataloger."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:95
msgid "Add an emblem to links"
msgstr "Lägg till ett emblem till länkar"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:96
msgid "Add an emblem to allow to identify soft links."
msgstr ""
"Lägg till ett emblem för att identifiering av mjuka länkar ska tillåtas."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:100
msgid "Use black for label text"
msgstr "Använd svart för etikett-text"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:101
msgid ""
"Paint the label text in black instead of white. Useful when using light "
"backgrounds."
msgstr ""
"Måla etikett-text i svart istället för vit. Användbart när ljusa bakgrunder "
"används."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:105
msgid "Show a popup if running on X11Wayland"
msgstr ""
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:106
msgid ""
"Whether DING should show a popup if it is running on X11Wayland, or the user "
"decided to not show it anymore."
msgstr ""
#, fuzzy
#~ msgid "Desktop icons"
#~ msgstr "Inställningar för Desktop Icons"
desktop-icons-ng-49.0.5-c32667693d0831c29e3ab3f7bfeb675ea1531a00/po/tr.po 0000664 0000000 0000000 00000060366 15064747536 0024001 0 ustar 00root root 0000000 0000000 # Turkish translation for desktop-icons.
# Copyright (C) 2000-2024 desktop-icons's COPYRIGHT HOLDER
# This file is distributed under the same license as the desktop-icons package.
#
# Serdar Sağlam , 2019
# Emin Tufan Çetin , 2019.
# Mahmut Elmas , 2020.
# Cihan Alkan , 2021.
# Fatih Altun , 2021.
# Sabri Ünal , 2019, 2022, 2023, 2024.
#
msgid ""
msgstr ""
"Project-Id-Version: ding\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-06-29 16:52+0200\n"
"PO-Revision-Date: 2024-05-02 18:24+0300\n"
"Last-Translator: Sabri Ünal \n"
"Language-Team: Turkish \n"
"Language: tr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: Poedit 3.4.2\n"
#: app/askRenamePopup.js:49
msgid "Folder name"
msgstr "Klasör adı"
#: app/askRenamePopup.js:49
msgid "File name"
msgstr "Dosya adı"
#: app/askRenamePopup.js:57 app/autoAr.js:305 app/desktopManager.js:1002
msgid "OK"
msgstr "Tamam"
#: app/askRenamePopup.js:57
msgid "Rename"
msgstr "Yeniden Adlandır"
#: app/autoAr.js:88
msgid "AutoAr is not installed"
msgstr "AutoAr kurulu değil"
#: app/autoAr.js:89
msgid ""
"To be able to work with compressed files, install file-roller and/or gir-1.2-"
"gnomeAutoAr"
msgstr ""
"Sıkıştırılmış dosyalarla çalışabilmek için, file-roller ve/veya gir-1.2-"
"gnomeAutoArʼı kurun"
#: app/autoAr.js:224
msgid "Extracting files"
msgstr "Dosyalar çıkarılıyor"
#: app/autoAr.js:241
msgid "Compressing files"
msgstr "Dosyalar sıkıştırılıyor"
#: app/autoAr.js:297 app/autoAr.js:636 app/desktopManager.js:1004
#: app/fileItemMenu.js:474
msgid "Cancel"
msgstr "İptal"
#: app/autoAr.js:318 app/autoAr.js:619
msgid "Enter a password here"
msgstr "Buraya bir parola girin"
#: app/autoAr.js:359
msgid "Removing partial file '${outputFile}'"
msgstr "Kısmi dosya '${outputFile}' siliniyor"
#: app/autoAr.js:378
msgid "Creating destination folder"
msgstr "Hedef klasör oluşturuluyor"
#: app/autoAr.js:410
msgid "Extracting files into '${outputPath}'"
msgstr "Dosyalar, '${outputPath}' konumuna çıkarılıyor"
#: app/autoAr.js:442
msgid "Extraction completed"
msgstr "Çıkarma tamamlandı"
#: app/autoAr.js:443
msgid "Extracting '${fullPathFile}' has been completed."
msgstr "'${fullPathFile}' çıkarması tamamlandı."
#: app/autoAr.js:449
msgid "Extraction cancelled"
msgstr "Çıkarma iptal edildi"
#: app/autoAr.js:450
msgid "Extracting '${fullPathFile}' has been cancelled by the user."
msgstr "'${fullPathFile}' çıkarması kullanıcı tarafından iptal edildi."
#: app/autoAr.js:460
msgid "Passphrase required for ${filename}"
msgstr "${filename} için parola gerekli"
#: app/autoAr.js:463
msgid "Error during extraction"
msgstr "Çıkarma sırasında hata"
#: app/autoAr.js:492
msgid "Compressing files into '${outputFile}'"
msgstr "Dosyalar '${outputFile}' içine sıkıştırılıyor."
#: app/autoAr.js:505
msgid "Compression completed"
msgstr "Sıkıştırma tamamlandı"
#: app/autoAr.js:506
msgid "Compressing files into '${outputFile}' has been completed."
msgstr "Dosyaların '${outputFile}' içine sıkıştırılması tamamlandı."
#: app/autoAr.js:510 app/autoAr.js:517
msgid "Cancelled compression"
msgstr "Sıkıştırma iptal edildi"
#: app/autoAr.js:511
msgid "The output file '${outputFile}' already exists."
msgstr "Çıktı dosyası '${outputFile}' zaten var."
#: app/autoAr.js:518
msgid "Compressing files into '${outputFile}' has been cancelled by the user."
msgstr ""
"Dosyaların '${outputFile}' içine sıkıştırılması kullanıcı tarafından iptal "
"edildi."
#: app/autoAr.js:521
msgid "Error during compression"
msgstr "Sıkıştırma sırasında hata"
#: app/autoAr.js:554
msgid "Create archive"
msgstr "Arşiv oluştur"
#: app/autoAr.js:579
msgid "Archive name"
msgstr "Arşiv adı"
#: app/autoAr.js:614
msgid "Password"
msgstr "Parola"
#: app/autoAr.js:633
msgid "Create"
msgstr "Oluştur"
#: app/autoAr.js:712
msgid "Compatible with all operating systems."
msgstr "Tüm işletim sistemleriyle uyumlu."
#: app/autoAr.js:718
msgid "Password protected .zip, must be installed on Windows and Mac."
msgstr "Parola korumalı .zip, Windows ve Mac üzerinde kurulmalıdır."
#: app/autoAr.js:724
msgid "Smaller archives but Linux and Mac only."
msgstr "Daha küçük arşivler ama yalnızca Linux ve Mac."
#: app/autoAr.js:730
msgid "Smaller archives but must be installed on Windows and Mac."
msgstr "Daha küçük arşivler ama Windows ve Mac üzerinde kurulmalıdır."
#: app/dbusUtils.js:69
msgid "\"${programName}\" is needed for Desktop Icons"
msgstr "\"${programName}\" Masaüstü Simgeleri için gereklidir"
#: app/dbusUtils.js:70
msgid ""
"For this functionality to work in Desktop Icons, you must install \"$"
"{programName}\" in your system."
msgstr ""
"Bu işlevin Masaüstü Simgelerinde çalışması için sisteminize \"${programName}"
"\" kurmalısınız."
#: app/desktopIconsUtil.js:154
msgid "Command not found"
msgstr "Komut Bulunamadı"
#: app/desktopManager.js:259
msgid "Nautilus File Manager not found"
msgstr "Nautilus dosya yöneticisi bulunamadı"
#: app/desktopManager.js:260
msgid "The Nautilus File Manager is mandatory to work with Desktop Icons NG."
msgstr "Nautilus dosya yöneticisi olmadan bu eklenti bir işe yaramaz."
#: app/desktopManager.js:964
msgid "Clear Current Selection before New Search"
msgstr "Yeni Aramadan Önce Mevcut Seçimi Temizle"
#: app/desktopManager.js:1006
msgid "Find Files on Desktop"
msgstr "Masaüstündeki Dosyaları Bul"
#: app/desktopManager.js:1074 app/desktopManager.js:1786
msgid "New Folder"
msgstr "Yeni Klasör"
#: app/desktopManager.js:1078
msgid "New Document"
msgstr "Yeni Belge"
#: app/desktopManager.js:1083
msgid "Paste"
msgstr "Yapıştır"
#: app/desktopManager.js:1087
msgid "Undo"
msgstr "Geri Al"
#: app/desktopManager.js:1091
msgid "Redo"
msgstr "Yinele"
#: app/desktopManager.js:1097
msgid "Select All"
msgstr "Tümünü Seç"
#: app/desktopManager.js:1105
msgid "Show Desktop in Files"
msgstr "Masaüstünü Dosyalarʼda Göster"
#: app/desktopManager.js:1109 app/fileItemMenu.js:365
msgid "Open in Terminal"
msgstr "Uçbirimde Aç"
#: app/desktopManager.js:1115
msgid "Change Background…"
msgstr "Arka Planı Değiştir…"
#: app/desktopManager.js:1126
msgid "Desktop Icons Settings"
msgstr "Masaüstü Simgeleri Ayarları"
#: app/desktopManager.js:1139
msgid "Display Settings"
msgstr "Görüntü Ayarları"
#: app/desktopManager.js:1799
msgid "Folder Creation Failed"
msgstr "Klasör Oluşturma Başarısız"
#: app/desktopManager.js:1800
msgid "Error while trying to create a Folder"
msgstr "Klasör oluşturmaya çalışırken hata oluştu"
#: app/desktopManager.js:1836
msgid "Template Creation Failed"
msgstr "Şablon Oluşturma Başarısız"
#: app/desktopManager.js:1837
msgid "Error while trying to create a Document"
msgstr "Belge oluşturmaya çalışırken hata oluştu"
#: app/desktopManager.js:1845
msgid "Arrange Icons"
msgstr "Simgeleri Sırala"
#: app/desktopManager.js:1849
msgid "Arrange By..."
msgstr "Sırala..."
#: app/desktopManager.js:1858
msgid "Keep Arranged..."
msgstr "Düzenli Tut..."
#: app/desktopManager.js:1862
msgid "Keep Stacked by type..."
msgstr "Türe Göre Yığılı Tut..."
#: app/desktopManager.js:1867
msgid "Sort Home/Drives/Trash..."
msgstr "Evi/Sürücüleri/Çöp Kutusunu Sırala..."
#: app/desktopManager.js:1873
msgid "Sort by Name"
msgstr "Ada Göre Sırala"
#: app/desktopManager.js:1875
msgid "Sort by Name Descending"
msgstr "Azalan Şekilde Ada Göre Sırala"
#: app/desktopManager.js:1878
msgid "Sort by Modified Time"
msgstr "Değiştirilme Zamanına Göre Sırala"
#: app/desktopManager.js:1881
msgid "Sort by Type"
msgstr "Türe Göre Sırala"
#: app/desktopManager.js:1884
msgid "Sort by Size"
msgstr "Boyuta Göre Sırala"
#. * TRANSLATORS: when using a screen reader, this is the text read when a folder is
#. selected. Example: if a folder named "things" is selected, it will say "things Folder"
#: app/fileItem.js:64
msgid "${VisibleName} Folder"
msgstr "${VisibleName} Klasör"
#. * TRANSLATORS: when using a screen reader, this is the text read when a normal file is
#. selected. Example: if a file named "my_picture.jpg" is selected, it will say "my_picture.jpg File"
#: app/fileItem.js:68
msgid "${VisibleName} File"
msgstr "${VisibleName} Dosya"
#. TRANSLATORS: "Home" is the text that will be shown in the user's personal folder
#: app/fileItem.js:72 app/fileItem.js:203
msgid "Home"
msgstr "Ev"
#. * TRANSLATORS: when using a screen reader, this is the text read when the trash folder is
#. selected.
#: app/fileItem.js:77
msgid "Trash"
msgstr "Çöp"
#. * TRANSLATORS: when using a screen reader, this is the text read when an external drive is
#. selected. Example: if a USB stick named "my_portable" is selected, it will say "my_portable Drive"
#: app/fileItem.js:82
msgid "${VisibleName} Drive"
msgstr "${VisibleName} Sürücü"
#. * TRANSLATORS: when using a screen reader, this is the text read when a stack is
#. selected. Example: if a stack named "pictures" is selected, it will say "pictures Stack"
#: app/fileItem.js:87
msgid "${VisibleName} Stack"
msgstr "${VisibleName} Yığın"
#: app/fileItem.js:295
msgid "Error while reading Desktop file"
msgstr "Desktop dosyası okunurken hata"
#: app/fileItem.js:337
msgid "Broken Link"
msgstr "Kırık Link"
#: app/fileItem.js:338
msgid "Can not open this File because it is a Broken Symlink"
msgstr "Bozuk bir Sembolik Bağlantı olduğu için bu Dosya açılamıyor"
#: app/fileItem.js:370
msgid "Can't open the file"
msgstr "Dosya açılamadı"
#: app/fileItem.js:396
msgid "Broken Desktop File"
msgstr "Kırık Masaüstünü Dosyası"
#: app/fileItem.js:397
msgid ""
"This .desktop file has errors or points to a program without permissions. It "
"can not be executed.\n"
"\n"
"\tEdit the file to set the correct executable Program."
msgstr ""
"Bu .desktop dosyasında hatalar var ya da izinleri olmayan bir programa "
"işaret ediyor. Yürütülemez.\n"
"\n"
"\tDoğru yürütülebilir Programı ayarlamak için dosyayı düzenleyin."
#: app/fileItem.js:403
msgid "Invalid Permissions on Desktop File"
msgstr "Masaüstü Dosyası İzinleri Hatalı"
#: app/fileItem.js:404
msgid ""
"This .desktop File has incorrect Permissions. Right Click to edit "
"Properties, then:\n"
msgstr ""
"Bu .desktop Dosyasının İzinleri yanlış. Özellikleri düzenlemek için Sağ "
"Tıklayın, ardından:\n"
#: app/fileItem.js:406
msgid ""
"\n"
"Set Permissions, in \"Others Access\", \"Read Only\" or \"None\""
msgstr ""
"\n"
"İzinleri, \"Diğer Erişim\", \"Salt Okunur\" ya da \"Hiçbiri\" olarak "
"ayarla"
#: app/fileItem.js:409
msgid ""
"\n"
"Enable option, \"Allow Executing File as a Program\""
msgstr ""
"\n"
"\"Dosyanın Program Olarak Yürütülmesine İzin Ver\" seçeneğini "
"etkinleştirin"
#: app/fileItem.js:417
msgid ""
"This .desktop file is not trusted, it can not be launched. To enable "
"launching, right-click, then:\n"
"\n"
"Enable \"Allow Launching\""
msgstr ""
"Bu .desktop dosyası güvenilir değil, başlatılamıyor. Başlatmayı "
"etkinleştirmek için sağ tıklayın, ardından:\n"
"\n"
"\"Başlatmaya İzin Ver\"i etkinleştirin"
#: app/fileItem.js:620
msgid "Failed to set execution flag"
msgstr "Yürütme bayrağı ayarlanamadı"
#: app/fileItem.js:632 app/fileItem.js:639
msgid "Could not apply discrete GPU environment"
msgstr "Ayrık GPU ortamı uygulanamadı"
#: app/fileItem.js:668
msgid "Could not find discrete GPU data"
msgstr "Ayrık Ekran Kartı verisi bulunamadı"
#: app/fileItem.js:793
msgid "Failed to set metadata::trusted flag"
msgstr "metadata::trusted bayrağı ayarlanamadı"
#: app/fileItemMenu.js:143
msgid "Open All..."
msgstr "Tümünü Aç..."
#: app/fileItemMenu.js:143
msgid "Open"
msgstr "Aç"
#: app/fileItemMenu.js:160
msgid "Stack This Type"
msgstr "Bu Türü Yığınla"
#: app/fileItemMenu.js:160
msgid "Unstack This Type"
msgstr "Bu Yığın Türünü Kaldır"
#: app/fileItemMenu.js:173
msgid "Scripts"
msgstr "Betikler"
#: app/fileItemMenu.js:178
msgid "Open All With Other Application..."
msgstr "Tümünü Başka Uygulamayla Aç..."
#: app/fileItemMenu.js:178
msgid "Open With Other Application"
msgstr "Başka Uygulamayla Aç"
#: app/fileItemMenu.js:184
msgid "Launch using Dedicated Graphics Card"
msgstr "Özel Grafik Kartı kullanarak başlatın"
#: app/fileItemMenu.js:195
msgid "Run as a program"
msgstr "Program olarak çalıştır"
#: app/fileItemMenu.js:203
msgid "Cut"
msgstr "Kes"
#: app/fileItemMenu.js:210
msgid "Copy"
msgstr "Kopyala"
#: app/fileItemMenu.js:218
msgid "Rename…"
msgstr "Yeniden Adlandır…"
#: app/fileItemMenu.js:228
msgid "Move to Trash"
msgstr "Çöpe Taşı"
#: app/fileItemMenu.js:236
msgid "Delete permanently"
msgstr "Tamamen Sil"
#: app/fileItemMenu.js:246
msgid "Don't Allow Launching"
msgstr "Başlatmaya İzin Verme"
#: app/fileItemMenu.js:246
msgid "Allow Launching"
msgstr "Başlatmaya İzin Ver"
#: app/fileItemMenu.js:259
msgid "Empty Trash"
msgstr "Çöpü Boşalt"
#: app/fileItemMenu.js:272
msgid "Eject"
msgstr "Çıkar"
#: app/fileItemMenu.js:280
msgid "Unmount"
msgstr "Bağı Kaldır"
#: app/fileItemMenu.js:294 app/fileItemMenu.js:301
msgid "Extract Here"
msgstr "Buraya Çıkar"
#: app/fileItemMenu.js:308
msgid "Extract To..."
msgstr "Şuraya Çıkar…"
#: app/fileItemMenu.js:317
msgid "Send to..."
msgstr "Gönder..."
#: app/fileItemMenu.js:325
msgid "Compress {0} folder"
msgid_plural "Compress {0} folders"
msgstr[0] "{0} klasörü sıkıştır"
#: app/fileItemMenu.js:332
msgid "Compress {0} file"
msgid_plural "Compress {0} files"
msgstr[0] "{0} dosyayı sıkıştır"
#: app/fileItemMenu.js:340
msgid "New Folder with {0} item"
msgid_plural "New Folder with {0} items"
msgstr[0] "{0} öge ile yeni klasör"
#: app/fileItemMenu.js:351
msgid "Common Properties"
msgstr "Ortak Özellikler"
#: app/fileItemMenu.js:351
msgid "Properties"
msgstr "Özellikler"
#: app/fileItemMenu.js:358
msgid "Show All in Files"
msgstr "Tümünü Dosyalarʼda Göster"
#: app/fileItemMenu.js:358
msgid "Show in Files"
msgstr "Dosyalarʼda Göster"
#: app/fileItemMenu.js:449
msgid "No Extraction Folder"
msgstr "Çıkarma Klasörü Yok"
#: app/fileItemMenu.js:450
msgid "Unable to extract File, extraction Folder Does not Exist"
msgstr "Dosya çıkarılamıyor, çıkarma Klasörü yok"
#: app/fileItemMenu.js:470
msgid "Select Extract Destination"
msgstr "Çıkarma Hedefini Seç"
#: app/fileItemMenu.js:475
msgid "Select"
msgstr "Seç"
#: app/fileItemMenu.js:516
msgid "Can not email a Directory"
msgstr "Bir dizine e-posta gönderilemez"
#: app/fileItemMenu.js:517
msgid "Selection includes a Directory, compress the directory to a file first."
msgstr "Seçim bir Dizin içeriyor, önce dizini bir dosyaya sıkıştırın."
#: app/notifyX11UnderWayland.js:37
msgid "Desktop Icons NG is running under X11Wayland"
msgstr "Masaüstü Simgeleri NG X11Wayland altında çalışıyor"
#: app/notifyX11UnderWayland.js:38
msgid ""
"It seems that you have your system configured to force GTK to use X11. This "
"works, but it's suboptimal. You should check your system configuration to "
"fix this."
msgstr ""
"Görünüşe göre sisteminizi GTK'yı X11 kullanmaya zorlayacak şekilde "
"yapılandırmışsınız. Bu işe yarar, ancak optimal değildir. Bunu düzeltmek "
"için sistem yapılandırmanızı kontrol etmelisiniz."
#: app/notifyX11UnderWayland.js:39 app/showErrorPopup.js:39
msgid "Close"
msgstr "Kapat"
#: app/notifyX11UnderWayland.js:47
msgid "Don't show this message anymore."
msgstr "Bu iletiyi yeniden gösterme"
#: app/preferences.js:91
msgid "Settings"
msgstr "Ayarlar"
#: app/prefswindow.js:64
msgid "Size for the desktop icons"
msgstr "Masaüstü simgeleri boyutu"
#: app/prefswindow.js:64
msgid "Tiny"
msgstr "Minik"
#: app/prefswindow.js:64
msgid "Small"
msgstr "Küçük"
#: app/prefswindow.js:64
msgid "Standard"
msgstr "Standart"
#: app/prefswindow.js:64
msgid "Large"
msgstr "Büyük"
#: app/prefswindow.js:65
msgid "Show the personal folder in the desktop"
msgstr "Kişisel klasörü masaüstünde göster"
#: app/prefswindow.js:66
msgid "Show the trash icon in the desktop"
msgstr "Çöp kutusunu masaüstünde göster"
#: app/prefswindow.js:67 schemas/org.gnome.shell.extensions.ding.gschema.xml:45
msgid "Show external drives in the desktop"
msgstr "Harici sürücüleri masaüstünde göster"
#: app/prefswindow.js:68 schemas/org.gnome.shell.extensions.ding.gschema.xml:50
msgid "Show network drives in the desktop"
msgstr "Ağ sürücülerini masaüstünde göster"
#: app/prefswindow.js:71
msgid "New icons alignment"
msgstr "Yeni simge hizalaması"
#: app/prefswindow.js:73
msgid "Top-left corner"
msgstr "Sol üst köşe"
#: app/prefswindow.js:74
msgid "Top-right corner"
msgstr "Sağ üst Köşe"
#: app/prefswindow.js:75
msgid "Bottom-left corner"
msgstr "Sol alt köşe"
#: app/prefswindow.js:76
msgid "Bottom-right corner"
msgstr "Sağ alt köşe"
#: app/prefswindow.js:78 schemas/org.gnome.shell.extensions.ding.gschema.xml:55
msgid "Add new drives to the opposite side of the screen"
msgstr "Ekranın karşı tarafına yeni sürücüler ekle"
#: app/prefswindow.js:79
msgid "Highlight the drop place during Drag'n'Drop"
msgstr "Sürükle ve Bırak sırasında bırakma yerini vurgula"
#: app/prefswindow.js:80 schemas/org.gnome.shell.extensions.ding.gschema.xml:90
msgid "Use Nemo to open folders"
msgstr "Klasörleri açmak için Nemo kullan"
#: app/prefswindow.js:82
msgid "Add an emblem to soft links"
msgstr "Yumuşak linklere amblem ekle"
#: app/prefswindow.js:84
msgid "Use dark text in icon labels"
msgstr "Simge etiketlerinde koyu metin kullan"
#: app/prefswindow.js:91
msgid "Settings shared with Nautilus"
msgstr "Nautilus ile paylaşılılan ayarlar"
#: app/prefswindow.js:113
msgid "Click type for open files"
msgstr "Dosyaları açma türü"
#: app/prefswindow.js:113
msgid "Single click"
msgstr "Tek tıklama"
#: app/prefswindow.js:113
msgid "Double click"
msgstr "Çift tıklama"
#: app/prefswindow.js:114
msgid "Show hidden files"
msgstr "Gizli dosyaları göster"
#: app/prefswindow.js:115
msgid "Show a context menu item to delete permanently"
msgstr "Tamamen silmek için sağ tıkta seçenek göster"
#: app/prefswindow.js:120
msgid "Action to do when launching a program from the desktop"
msgstr "Masaüstünden program çalıştırırken ne yapılsın"
#: app/prefswindow.js:121
msgid "Display the content of the file"
msgstr "İçeriği göster"
#: app/prefswindow.js:122
msgid "Launch the file"
msgstr "Çalıştır"
#: app/prefswindow.js:123
msgid "Ask what to do"
msgstr "Ne yapılacağını sor"
#: app/prefswindow.js:129
msgid "Show image thumbnails"
msgstr "Resim önizlemelerini göster"
#: app/prefswindow.js:130
msgid "Never"
msgstr "Asla"
#: app/prefswindow.js:131
msgid "Local files only"
msgstr "Yalnızca yerel dosyalar"
#: app/prefswindow.js:132
msgid "Always"
msgstr "Her zaman"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:25
msgid "Icon size"
msgstr "Simge boyutu"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:26
msgid "Set the size for the desktop icons."
msgstr "Masaüstü simgelerinin boyutunu ayarla."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:30
msgid "Show personal folder"
msgstr "Kişisel klasörü göster"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:31
msgid "Show the personal folder in the desktop."
msgstr "Kişisel klasörü masaüstünde göster."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:35
msgid "Show trash icon"
msgstr "Çöp kutusunu göster"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:36
msgid "Show the trash icon in the desktop."
msgstr "Çöp kutusu simgesini masaüstünde göster."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:40
msgid "New icons start corner"
msgstr "Yeni simgelerin başlangıç köşesi"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:41
msgid "Set the corner from where the icons will start to be placed."
msgstr "Simgelerin nereden itibaren hizalanacağını ayarla."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:46
msgid "Show the disk drives connected to the computer."
msgstr "Bilgisayara bağlı disk sürücülerini göster."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:51
msgid "Show mounted network volumes in the desktop."
msgstr "Masaüstünde bağlı ağ birimlerini göster."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:56
msgid ""
"When adding drives and volumes to the desktop, add them to the opposite side "
"of the screen."
msgstr ""
"Masaüstüne sürücüler ve birimler eklerken, bunları ekranın karşı tarafına "
"ekle."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:60
msgid "Shows a rectangle in the destination place during DnD"
msgstr "DND sırasında hedef yerde bir dikdörtgen gösterir"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:61
msgid ""
"When doing a Drag'n'Drop operation, marks the place in the grid where the "
"icon will be put with a semitransparent rectangle."
msgstr ""
"Bir Sürükle Bırak işlemi yaparken, simgenin yarı saydam bir dikdörtgenle "
"yerleştirileceği ızgaradaki yeri işaretler."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:65
msgid "Sort Special Folders - Home/Trash Drives."
msgstr "Özel Klasörleri Sırala - Ev/Çöp Sürücüler."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:66
msgid ""
"When arranging Icons on desktop, to sort and change the position of the "
"Home, Trash and mounted Network or External Drives"
msgstr ""
"Masaüstündeki simgeleri düzenlerken, Ev, Çöp Kutusu ve takılı Ağ veya Harici "
"Sürücülerin konumunu sıralamak ve değiştirmek için"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:70
msgid "Keep Icons Arranged"
msgstr "Simgeleri Düzenli Tut"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:71
msgid "Always keep Icons Arranged by the last arranged order"
msgstr "Simgeleri son sıralama düzenine göre daima düzenli tut"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:75
msgid "Arrange Order"
msgstr "Sıralama Düzeni"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:76
msgid "Icons Arranged by this property"
msgstr "Simgeler bu düzene göre sıralandı"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:80
msgid "Keep Icons Stacked"
msgstr "Simgeleri Yığılı Tut"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:81
msgid "Always keep Icons Stacked, Similar types are grouped"
msgstr "Simgeleri her zaman yığılı, benzer türler gruplanmış tut"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:85
msgid "Type of Files to not Stack"
msgstr "Yığılı tutulmayacak dosyaların türü"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:86
msgid "An Array of strings types, Don't Stack these types of files"
msgstr "Dizge türleri dizisi. Bu tür dosyaları Yığınlama"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:91
msgid "Use Nemo instead of Nautilus to open folders."
msgstr "Klasörleri açmak için Nautilus yerine Nemo kullan."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:95
msgid "Add an emblem to links"
msgstr "Bağlantılara amblem ekle"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:96
msgid "Add an emblem to allow to identify soft links."
msgstr "Yumuşak bağlantıları tanımlamaya olanak sağlamak için amblem ekle."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:100
msgid "Use black for label text"
msgstr "Etiket metni için siyah kullan"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:101
msgid ""
"Paint the label text in black instead of white. Useful when using light "
"backgrounds."
msgstr ""
"Etiket metnini beyaz yerine siyaha boya. Açık renkli arka plan kullanırken "
"kullanışlıdır."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:105
msgid "Show a popup if running on X11Wayland"
msgstr "X11Wayland üzerinde çalışıyorsa açılır pencere göster"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:106
msgid ""
"Whether DING should show a popup if it is running on X11Wayland, or the user "
"decided to not show it anymore."
msgstr ""
"X11Wayland üzerinde çalışıyorsa DING'in açılır pencere gösterip "
"göstermeyeceği, ya da kullanıcının artık göstermemeye karar verip vermediği."
#~ msgid "Desktop icons"
#~ msgstr "Masaüstü simgeleri"
desktop-icons-ng-49.0.5-c32667693d0831c29e3ab3f7bfeb675ea1531a00/po/uk.po 0000664 0000000 0000000 00000072401 15064747536 0023764 0 ustar 00root root 0000000 0000000 # SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# Stanisław Zadorozhnyi , 2021.
# Yevhen Popok , 2023.
#
msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-06-29 16:52+0200\n"
"PO-Revision-Date: 2024-04-06 20:47+0300\n"
"Last-Translator: Yevhen Popok \n"
"Language-Team: \n"
"Language: uk\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=4; plural=n==1 ? 3 : n%10==1 && n%100!=11 ? 0 : "
"n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
"X-Generator: Poedit 3.4.2\n"
#: app/askRenamePopup.js:49
msgid "Folder name"
msgstr "Назва теки"
#: app/askRenamePopup.js:49
msgid "File name"
msgstr "Назва файлу"
#: app/askRenamePopup.js:57 app/autoAr.js:305 app/desktopManager.js:1002
msgid "OK"
msgstr "OK"
#: app/askRenamePopup.js:57
msgid "Rename"
msgstr "Перейменувати"
#: app/autoAr.js:88
msgid "AutoAr is not installed"
msgstr "AutoAr не встановлено"
#: app/autoAr.js:89
msgid ""
"To be able to work with compressed files, install file-roller and/or gir-1.2-"
"gnomeAutoAr"
msgstr ""
"Для роботи зі стиснутими файлами, встановіть file-roller та/чи gir-1.2-"
"gnomeAutoAr"
#: app/autoAr.js:224
msgid "Extracting files"
msgstr "Розпакування файлів"
#: app/autoAr.js:241
msgid "Compressing files"
msgstr "Стиснення файлів"
#: app/autoAr.js:297 app/autoAr.js:636 app/desktopManager.js:1004
#: app/fileItemMenu.js:474
msgid "Cancel"
msgstr "Скасувати"
#: app/autoAr.js:318 app/autoAr.js:619
msgid "Enter a password here"
msgstr "Введіть пароль тут"
#: app/autoAr.js:359
msgid "Removing partial file '${outputFile}'"
msgstr "Видалення часткового файлу '${outputFile}'"
#: app/autoAr.js:378
msgid "Creating destination folder"
msgstr "Створення теки призначення"
#: app/autoAr.js:410
msgid "Extracting files into '${outputPath}'"
msgstr "Розпакування файлів до '${outputPath}'"
#: app/autoAr.js:442
msgid "Extraction completed"
msgstr "Розпакування завершено"
#: app/autoAr.js:443
msgid "Extracting '${fullPathFile}' has been completed."
msgstr "Розпакування '${fullPathFile}' завершено."
#: app/autoAr.js:449
msgid "Extraction cancelled"
msgstr "Розпакування скасовано"
#: app/autoAr.js:450
msgid "Extracting '${fullPathFile}' has been cancelled by the user."
msgstr "Розпакування '${fullPathFile}' скасовано користувачем."
#: app/autoAr.js:460
msgid "Passphrase required for ${filename}"
msgstr "Потрібен пароль для ${filename}"
#: app/autoAr.js:463
msgid "Error during extraction"
msgstr "Помилка під час розпакування"
#: app/autoAr.js:492
msgid "Compressing files into '${outputFile}'"
msgstr "Стиснення файлів до '${outputFile}'"
#: app/autoAr.js:505
msgid "Compression completed"
msgstr "Стиснення завершено"
#: app/autoAr.js:506
msgid "Compressing files into '${outputFile}' has been completed."
msgstr "Стиснення файлів до '${outputFile}' завершено."
#: app/autoAr.js:510 app/autoAr.js:517
msgid "Cancelled compression"
msgstr "Стиснення скасовано"
#: app/autoAr.js:511
msgid "The output file '${outputFile}' already exists."
msgstr "Вихідний файл '${outputFile}' вже існує."
#: app/autoAr.js:518
msgid "Compressing files into '${outputFile}' has been cancelled by the user."
msgstr "Стиснення файлів до '${outputFile}' скасовано користувачем."
#: app/autoAr.js:521
msgid "Error during compression"
msgstr "Помилка під час стискання"
#: app/autoAr.js:554
msgid "Create archive"
msgstr "Створити архів"
#: app/autoAr.js:579
msgid "Archive name"
msgstr "Назва архіву"
#: app/autoAr.js:614
msgid "Password"
msgstr "Пароль"
#: app/autoAr.js:633
msgid "Create"
msgstr "Створити"
#: app/autoAr.js:712
msgid "Compatible with all operating systems."
msgstr "Сумісно з усіма операційними системами."
#: app/autoAr.js:718
msgid "Password protected .zip, must be installed on Windows and Mac."
msgstr "Захищений паролем .zip, але треба встановити на Windows та Mac."
#: app/autoAr.js:724
msgid "Smaller archives but Linux and Mac only."
msgstr "Менші архіви, але тільки для Linux та Mac."
#: app/autoAr.js:730
msgid "Smaller archives but must be installed on Windows and Mac."
msgstr "Менші архіви, але треба встановити на Windows та Mac."
#: app/dbusUtils.js:69
msgid "\"${programName}\" is needed for Desktop Icons"
msgstr "Desktop Icons потребує \"${programName}\""
#: app/dbusUtils.js:70
msgid ""
"For this functionality to work in Desktop Icons, you must install \"$"
"{programName}\" in your system."
msgstr ""
"Для цього функціоналу Desktop Icons, необхідно встановити \"${programName}\" "
"у вашій системі."
#: app/desktopIconsUtil.js:154
msgid "Command not found"
msgstr "Команду не знайдено"
#: app/desktopManager.js:259
msgid "Nautilus File Manager not found"
msgstr "Файловий менеджер Nautilus не знайдено"
#: app/desktopManager.js:260
msgid "The Nautilus File Manager is mandatory to work with Desktop Icons NG."
msgstr "Файловий менеджер Nautilus є необхідним для роботи з Desktop Icons NG."
#: app/desktopManager.js:964
msgid "Clear Current Selection before New Search"
msgstr "Очистити поточний вибір перед новим пошуком"
#: app/desktopManager.js:1006
msgid "Find Files on Desktop"
msgstr "Пошук файлів на стільниці"
#: app/desktopManager.js:1074 app/desktopManager.js:1786
msgid "New Folder"
msgstr "Створити теку"
#: app/desktopManager.js:1078
msgid "New Document"
msgstr "Створити документ"
#: app/desktopManager.js:1083
msgid "Paste"
msgstr "Вставити"
#: app/desktopManager.js:1087
msgid "Undo"
msgstr "Скасувати"
#: app/desktopManager.js:1091
msgid "Redo"
msgstr "Повторити"
#: app/desktopManager.js:1097
msgid "Select All"
msgstr "Виділити все"
#: app/desktopManager.js:1105
msgid "Show Desktop in Files"
msgstr "Показати Стільницю у Файлах"
#: app/desktopManager.js:1109 app/fileItemMenu.js:365
msgid "Open in Terminal"
msgstr "Відкрити в терміналі"
#: app/desktopManager.js:1115
msgid "Change Background…"
msgstr "Змінити тло…"
#: app/desktopManager.js:1126
msgid "Desktop Icons Settings"
msgstr "Налаштування піктограм стільниці"
#: app/desktopManager.js:1139
msgid "Display Settings"
msgstr "Параметри екрана"
#: app/desktopManager.js:1799
msgid "Folder Creation Failed"
msgstr "Створення теки зазнало невдачі"
#: app/desktopManager.js:1800
msgid "Error while trying to create a Folder"
msgstr "Помилка при спробі створення теки"
#: app/desktopManager.js:1836
msgid "Template Creation Failed"
msgstr "Створення шаблона зазнало невдачі"
#: app/desktopManager.js:1837
msgid "Error while trying to create a Document"
msgstr "Помилка при спробі створення документа"
#: app/desktopManager.js:1845
msgid "Arrange Icons"
msgstr "Вирівняти піктограми"
#: app/desktopManager.js:1849
msgid "Arrange By..."
msgstr "Вирівняти за..."
#: app/desktopManager.js:1858
msgid "Keep Arranged..."
msgstr "Зберігати вирівнювання..."
#: app/desktopManager.js:1862
msgid "Keep Stacked by type..."
msgstr "Групувати в Стосі за типом..."
#: app/desktopManager.js:1867
msgid "Sort Home/Drives/Trash..."
msgstr "Сортувати Домівку/Диски/Смітник..."
#: app/desktopManager.js:1873
msgid "Sort by Name"
msgstr "Сортувати за назвою"
#: app/desktopManager.js:1875
msgid "Sort by Name Descending"
msgstr "Сортувати за назвою в порядку спадання"
#: app/desktopManager.js:1878
msgid "Sort by Modified Time"
msgstr "Сортувати за часом останньої зміни"
#: app/desktopManager.js:1881
msgid "Sort by Type"
msgstr "Сортувати за типом"
#: app/desktopManager.js:1884
msgid "Sort by Size"
msgstr "Сортувати за розміром"
#. * TRANSLATORS: when using a screen reader, this is the text read when a folder is
#. selected. Example: if a folder named "things" is selected, it will say "things Folder"
#: app/fileItem.js:64
msgid "${VisibleName} Folder"
msgstr "${VisibleName} Тека"
#. * TRANSLATORS: when using a screen reader, this is the text read when a normal file is
#. selected. Example: if a file named "my_picture.jpg" is selected, it will say "my_picture.jpg File"
#: app/fileItem.js:68
msgid "${VisibleName} File"
msgstr "${VisibleName} Файл"
#. TRANSLATORS: "Home" is the text that will be shown in the user's personal folder
#: app/fileItem.js:72 app/fileItem.js:203
msgid "Home"
msgstr "Домівка"
#. * TRANSLATORS: when using a screen reader, this is the text read when the trash folder is
#. selected.
#: app/fileItem.js:77
msgid "Trash"
msgstr "Смітник"
#. * TRANSLATORS: when using a screen reader, this is the text read when an external drive is
#. selected. Example: if a USB stick named "my_portable" is selected, it will say "my_portable Drive"
#: app/fileItem.js:82
msgid "${VisibleName} Drive"
msgstr "${VisibleName} Диск"
#. * TRANSLATORS: when using a screen reader, this is the text read when a stack is
#. selected. Example: if a stack named "pictures" is selected, it will say "pictures Stack"
#: app/fileItem.js:87
msgid "${VisibleName} Stack"
msgstr "${VisibleName} Стос"
#: app/fileItem.js:295
msgid "Error while reading Desktop file"
msgstr "Помилка читання файлу запуску"
#: app/fileItem.js:337
msgid "Broken Link"
msgstr "Пошкоджене посилання"
#: app/fileItem.js:338
msgid "Can not open this File because it is a Broken Symlink"
msgstr "Неможливо відкрити файл, оскільки це пошкоджене символічне посилання"
#: app/fileItem.js:370
msgid "Can't open the file"
msgstr "Не вдалося відкрити файл"
#: app/fileItem.js:396
msgid "Broken Desktop File"
msgstr "Пошкоджений файл запуску"
#: app/fileItem.js:397
msgid ""
"This .desktop file has errors or points to a program without permissions. It "
"can not be executed.\n"
"\n"
"\tEdit the file to set the correct executable Program."
msgstr ""
"В цьому файлі .desktop є помилки чи посилання на програму без прав доступу. "
"Його не можна запустити.\n"
"\n"
"\tВкажіть в файлі коректну програму."
#: app/fileItem.js:403
msgid "Invalid Permissions on Desktop File"
msgstr "Некоректні права доступу на файлу запуску"
#: app/fileItem.js:404
msgid ""
"This .desktop File has incorrect Permissions. Right Click to edit "
"Properties, then:\n"
msgstr ""
"Цей файл .desktop має некоректні права доступу. Клацніть правою клавішею, "
"щоб відредагувати Властивості, а потім:\n"
#: app/fileItem.js:406
msgid ""
"\n"
"Set Permissions, in \"Others Access\", \"Read Only\" or \"None\""
msgstr ""
"\n"
"Змініть Права доступу в \"Інші, Доступ\" на \"Лише читання\" або "
"\"Немає\""
#: app/fileItem.js:409
msgid ""
"\n"
"Enable option, \"Allow Executing File as a Program\""
msgstr ""
"\n"
"Увімкніть опцію \"Виконання файлу як програми\""
#: app/fileItem.js:417
msgid ""
"This .desktop file is not trusted, it can not be launched. To enable "
"launching, right-click, then:\n"
"\n"
"Enable \"Allow Launching\""
msgstr ""
"Цей файл .desktop не є довіреним, його не можна запустити. Для виправлення "
"клацніть правою клавішею, а потім\n"
"\n"
"Увімкніть \"Дозволяти запуск\""
#: app/fileItem.js:620
msgid "Failed to set execution flag"
msgstr "Не вдалося встановити прапорець виконання"
#: app/fileItem.js:632 app/fileItem.js:639
msgid "Could not apply discrete GPU environment"
msgstr "Не вдалося застосувати середовище дискретної графічної плати"
#: app/fileItem.js:668
msgid "Could not find discrete GPU data"
msgstr "Не вдалося знайти дані дискретної графічної плати"
#: app/fileItem.js:793
msgid "Failed to set metadata::trusted flag"
msgstr "Не вдалося встановити прапорець metadata::trusted"
#: app/fileItemMenu.js:143
msgid "Open All..."
msgstr "Відкрити все..."
#: app/fileItemMenu.js:143
msgid "Open"
msgstr "Відкрити"
#: app/fileItemMenu.js:160
msgid "Stack This Type"
msgstr "Додати цей тип до Стосу"
#: app/fileItemMenu.js:160
msgid "Unstack This Type"
msgstr "Вилучити цей тип зі Стосу"
#: app/fileItemMenu.js:173
msgid "Scripts"
msgstr "Скрипти"
#: app/fileItemMenu.js:178
msgid "Open All With Other Application..."
msgstr "Відкрити все в іншій програмі..."
#: app/fileItemMenu.js:178
msgid "Open With Other Application"
msgstr "Відкрити в іншій програмі"
#: app/fileItemMenu.js:184
msgid "Launch using Dedicated Graphics Card"
msgstr "Запустити через дискретну графічну плату"
#: app/fileItemMenu.js:195
msgid "Run as a program"
msgstr "Запустити як програму"
#: app/fileItemMenu.js:203
msgid "Cut"
msgstr "Вирізати"
#: app/fileItemMenu.js:210
msgid "Copy"
msgstr "Копіювати"
#: app/fileItemMenu.js:218
msgid "Rename…"
msgstr "Перейменувати…"
#: app/fileItemMenu.js:228
msgid "Move to Trash"
msgstr "Перемістити в смітник"
#: app/fileItemMenu.js:236
msgid "Delete permanently"
msgstr "Вилучити остаточно"
#: app/fileItemMenu.js:246
msgid "Don't Allow Launching"
msgstr "Не дозволяти запуск"
#: app/fileItemMenu.js:246
msgid "Allow Launching"
msgstr "Дозволяти запуск"
#: app/fileItemMenu.js:259
msgid "Empty Trash"
msgstr "Спорожнити смітник"
#: app/fileItemMenu.js:272
msgid "Eject"
msgstr "Витягти"
#: app/fileItemMenu.js:280
msgid "Unmount"
msgstr "Демонтувати"
#: app/fileItemMenu.js:294 app/fileItemMenu.js:301
msgid "Extract Here"
msgstr "Розпакувати сюди"
#: app/fileItemMenu.js:308
msgid "Extract To..."
msgstr "Розпакувати до..."
#: app/fileItemMenu.js:317
msgid "Send to..."
msgstr "Надіслати до..."
#: app/fileItemMenu.js:325
msgid "Compress {0} folder"
msgid_plural "Compress {0} folders"
msgstr[0] "Стиснути {0} теку"
msgstr[1] "Стиснути {0} теки"
msgstr[2] "Стиснути {0} тек"
msgstr[3] "Стиснути {0} теку"
#: app/fileItemMenu.js:332
msgid "Compress {0} file"
msgid_plural "Compress {0} files"
msgstr[0] "Стиснути {0} файл"
msgstr[1] "Стиснути {0} файли"
msgstr[2] "Стиснути {0} файлів"
msgstr[3] "Стиснути {0} файл"
#: app/fileItemMenu.js:340
msgid "New Folder with {0} item"
msgid_plural "New Folder with {0} items"
msgstr[0] "Створити теку з {0} обʼєктом"
msgstr[1] "Створити теку з {0} обʼєктами"
msgstr[2] "Створити теку з {0} обʼєктами"
msgstr[3] "Створити теку з {0} обʼєктом"
#: app/fileItemMenu.js:351
msgid "Common Properties"
msgstr "Спільні властивості"
#: app/fileItemMenu.js:351
msgid "Properties"
msgstr "Властивості"
#: app/fileItemMenu.js:358
msgid "Show All in Files"
msgstr "Показати все у Файлах"
#: app/fileItemMenu.js:358
msgid "Show in Files"
msgstr "Показати у Файлах"
#: app/fileItemMenu.js:449
msgid "No Extraction Folder"
msgstr "Відсутня теки призначення"
#: app/fileItemMenu.js:450
msgid "Unable to extract File, extraction Folder Does not Exist"
msgstr "Не вдалося видобути файл, оскільки теки призначення не існує"
#: app/fileItemMenu.js:470
msgid "Select Extract Destination"
msgstr "Виберіть ціль для розпакування"
#: app/fileItemMenu.js:475
msgid "Select"
msgstr "Виділити"
#: app/fileItemMenu.js:516
msgid "Can not email a Directory"
msgstr "Неможливо надіслати теку електронною поштою"
#: app/fileItemMenu.js:517
msgid "Selection includes a Directory, compress the directory to a file first."
msgstr "Вибране включає теку, для початку стисніть її до файлу."
#: app/notifyX11UnderWayland.js:37
msgid "Desktop Icons NG is running under X11Wayland"
msgstr "Desktop Icons NG працює під X11Wayland"
#: app/notifyX11UnderWayland.js:38
msgid ""
"It seems that you have your system configured to force GTK to use X11. This "
"works, but it's suboptimal. You should check your system configuration to "
"fix this."
msgstr ""
"Схоже, що ваша система налаштована таким чином, що GTK примусово "
"використовує X11. Це можливий, але неоптимальний режим роботи. Вам необхідно "
"перевірити конфігурацію системи, щоб виправити це."
#: app/notifyX11UnderWayland.js:39 app/showErrorPopup.js:39
msgid "Close"
msgstr "Закрити"
#: app/notifyX11UnderWayland.js:47
msgid "Don't show this message anymore."
msgstr "Більше не показувати це повідомлення."
#: app/preferences.js:91
msgid "Settings"
msgstr "Параметри"
#: app/prefswindow.js:64
msgid "Size for the desktop icons"
msgstr "Розмір піктограм стільниці"
#: app/prefswindow.js:64
msgid "Tiny"
msgstr "Дуже малий"
#: app/prefswindow.js:64
msgid "Small"
msgstr "Малий"
#: app/prefswindow.js:64
msgid "Standard"
msgstr "Стандартний"
#: app/prefswindow.js:64
msgid "Large"
msgstr "Великий"
#: app/prefswindow.js:65
msgid "Show the personal folder in the desktop"
msgstr "Показувати теку користувача на стільниці"
#: app/prefswindow.js:66
msgid "Show the trash icon in the desktop"
msgstr "Показувати піктограму смітника на стільниці"
#: app/prefswindow.js:67 schemas/org.gnome.shell.extensions.ding.gschema.xml:45
msgid "Show external drives in the desktop"
msgstr "Показувати зовнішні диски на стільниці"
#: app/prefswindow.js:68 schemas/org.gnome.shell.extensions.ding.gschema.xml:50
msgid "Show network drives in the desktop"
msgstr "Показувати мережеві диски на стільниці"
#: app/prefswindow.js:71
msgid "New icons alignment"
msgstr "Вирівнювання для нових піктограм"
#: app/prefswindow.js:73
msgid "Top-left corner"
msgstr "Верхній лівий кут"
#: app/prefswindow.js:74
msgid "Top-right corner"
msgstr "Верхній правий кут"
#: app/prefswindow.js:75
msgid "Bottom-left corner"
msgstr "Нижній лівий кут"
#: app/prefswindow.js:76
msgid "Bottom-right corner"
msgstr "Нижній правий кут"
#: app/prefswindow.js:78 schemas/org.gnome.shell.extensions.ding.gschema.xml:55
msgid "Add new drives to the opposite side of the screen"
msgstr "Додавати нові диски з протилежної сторони екрана"
#: app/prefswindow.js:79
msgid "Highlight the drop place during Drag'n'Drop"
msgstr "Підсвічувати місце падіння під час перетягування"
#: app/prefswindow.js:80 schemas/org.gnome.shell.extensions.ding.gschema.xml:90
msgid "Use Nemo to open folders"
msgstr "Відкривати теки за допомогою Nemo"
#: app/prefswindow.js:82
msgid "Add an emblem to soft links"
msgstr "Додати емблему до мʼяких посилань"
#: app/prefswindow.js:84
msgid "Use dark text in icon labels"
msgstr "Використати темний текст на підписах до піктограм"
#: app/prefswindow.js:91
msgid "Settings shared with Nautilus"
msgstr "Спільні з Nautilus налаштування"
#: app/prefswindow.js:113
msgid "Click type for open files"
msgstr "Вид клацання, щоб відкривати файли"
#: app/prefswindow.js:113
msgid "Single click"
msgstr "Одинарне клацання"
#: app/prefswindow.js:113
msgid "Double click"
msgstr "Подвійне клацання"
#: app/prefswindow.js:114
msgid "Show hidden files"
msgstr "Показувати приховані файли"
#: app/prefswindow.js:115
msgid "Show a context menu item to delete permanently"
msgstr "Додати пункт \"Вилучити остаточно\" у контекстне меню"
#: app/prefswindow.js:120
msgid "Action to do when launching a program from the desktop"
msgstr "Дія при запуску програми зі стільниці"
#: app/prefswindow.js:121
msgid "Display the content of the file"
msgstr "Показати вміст файлу"
#: app/prefswindow.js:122
msgid "Launch the file"
msgstr "Запустити файл"
#: app/prefswindow.js:123
msgid "Ask what to do"
msgstr "Запитати, що робити"
#: app/prefswindow.js:129
msgid "Show image thumbnails"
msgstr "Показувати мініатюри зображень"
#: app/prefswindow.js:130
msgid "Never"
msgstr "Ніколи"
#: app/prefswindow.js:131
msgid "Local files only"
msgstr "Лише локальні файли"
#: app/prefswindow.js:132
msgid "Always"
msgstr "Завжди"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:25
msgid "Icon size"
msgstr "Розмір піктограм"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:26
msgid "Set the size for the desktop icons."
msgstr "Встановити розмір піктограм стільниці."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:30
msgid "Show personal folder"
msgstr "Показувати теку користувача"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:31
msgid "Show the personal folder in the desktop."
msgstr "Показувати теку користувача на стільниці."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:35
msgid "Show trash icon"
msgstr "Показувати піктограму смітника"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:36
msgid "Show the trash icon in the desktop."
msgstr "Показувати піктограму смітника на стільниці."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:40
msgid "New icons start corner"
msgstr "Початковий кут для нових піктограм"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:41
msgid "Set the corner from where the icons will start to be placed."
msgstr "Оберіть, від якого кута починати розміщення піктограм."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:46
msgid "Show the disk drives connected to the computer."
msgstr "Показувати диски, підключені до компʼютера."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:51
msgid "Show mounted network volumes in the desktop."
msgstr "Показувати змонтовані мережеві розділи на стільниці."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:56
msgid ""
"When adding drives and volumes to the desktop, add them to the opposite side "
"of the screen."
msgstr ""
"При додаванні дисків та розділів на стільницю, розміщувати їх з протилежної "
"сторони екрана."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:60
msgid "Shows a rectangle in the destination place during DnD"
msgstr "Показувати прямокутник у місці призначення під час перетягування"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:61
msgid ""
"When doing a Drag'n'Drop operation, marks the place in the grid where the "
"icon will be put with a semitransparent rectangle."
msgstr ""
"Під час перетягування, місце куди буде переміщено піктограму, буде "
"позначатися напівпрозорим прямокутником."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:65
msgid "Sort Special Folders - Home/Trash Drives."
msgstr "Сортувати спеціальні теки - Домівку/Смітник/Диски."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:66
msgid ""
"When arranging Icons on desktop, to sort and change the position of the "
"Home, Trash and mounted Network or External Drives"
msgstr ""
"При вирівнюванні піктограм на стільниці, сортувати та змінювати положення "
"Домівки, Смітника та підключених локальних і мережевих дисків"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:70
msgid "Keep Icons Arranged"
msgstr "Зберігати вирівнювання піктограм"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:71
msgid "Always keep Icons Arranged by the last arranged order"
msgstr ""
"Завжди зберігати вирівнювання піктограм за їх останнім порядком вирівнювання"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:75
msgid "Arrange Order"
msgstr "Порядок вирівнювання"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:76
msgid "Icons Arranged by this property"
msgstr "Піктограми вирівнюються за цією властивістю"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:80
msgid "Keep Icons Stacked"
msgstr "Тримати піктограми в Стосі"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:81
msgid "Always keep Icons Stacked, Similar types are grouped"
msgstr "Завжди тримати піктограми в Стосі, подібні за типом - групувати"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:85
msgid "Type of Files to not Stack"
msgstr "Типи файлів, що не додаються до Стосу"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:86
msgid "An Array of strings types, Don't Stack these types of files"
msgstr "Масив рядкових значень, не додавати до Стосу такі типи файлів"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:91
msgid "Use Nemo instead of Nautilus to open folders."
msgstr "Відкривати теки за допомогою Nemo, а не Nautilus."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:95
msgid "Add an emblem to links"
msgstr "Додавати емблеми до посилань"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:96
msgid "Add an emblem to allow to identify soft links."
msgstr "Додавати емблеми для визначення мʼяких посилань."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:100
msgid "Use black for label text"
msgstr "Чорний колір для написів"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:101
msgid ""
"Paint the label text in black instead of white. Useful when using light "
"backgrounds."
msgstr ""
"Використовувати для написів чорний колір замість білого. Корисно для світлих "
"шпалер."
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:105
msgid "Show a popup if running on X11Wayland"
msgstr "Показувати спливаюче вікно, якщо запущено під X11Wayland"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:106
msgid ""
"Whether DING should show a popup if it is running on X11Wayland, or the user "
"decided to not show it anymore."
msgstr ""
"Чи потрібно DING показувати спливаюче вікно при роботі під X11Wayland, або ж "
"користувач вже визначився, що надалі показувати його не потрібно."
#~ msgid "Desktop icons"
#~ msgstr "Піктограми стільниці"
desktop-icons-ng-49.0.5-c32667693d0831c29e3ab3f7bfeb675ea1531a00/po/zh_CN.po 0000664 0000000 0000000 00000057561 15064747536 0024360 0 ustar 00root root 0000000 0000000 # Simplified Chinese translation for desktop-icons.
# Copyright (C) 2018 desktop-icons's COPYRIGHT HOLDER
# This file is distributed under the same license as the desktop-icons package.
# Okeyja , 2020.
# Luke Na , 2025.
#
msgid ""
msgstr ""
"Project-Id-Version: desktop-icons master\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-06-29 16:52+0200\n"
"PO-Revision-Date: 2025-09-17 14:29+0800\n"
"Last-Translator: Luke Na \n"
"Language-Team: \n"
"Language: zh_CN\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: Poedit 3.7\n"
#: app/askRenamePopup.js:49
msgid "Folder name"
msgstr "文件夹名称"
#: app/askRenamePopup.js:49
msgid "File name"
msgstr "文件名称"
#: app/askRenamePopup.js:57 app/autoAr.js:305 app/desktopManager.js:1002
msgid "OK"
msgstr "确定"
#: app/askRenamePopup.js:57
msgid "Rename"
msgstr "重命名"
#: app/autoAr.js:88
msgid "AutoAr is not installed"
msgstr "AutoAr 未安装"
#: app/autoAr.js:89
msgid ""
"To be able to work with compressed files, install file-roller and/or gir-1.2-"
"gnomeAutoAr"
msgstr "要能够处理压缩文件,请安装 file-roller 和/或 gir-1.2-gnomeAutoAr"
#: app/autoAr.js:224
msgid "Extracting files"
msgstr "正在提取文件"
#: app/autoAr.js:241
msgid "Compressing files"
msgstr "正在压缩文件"
#: app/autoAr.js:297 app/autoAr.js:636 app/desktopManager.js:1004
#: app/fileItemMenu.js:474
msgid "Cancel"
msgstr "取消"
#: app/autoAr.js:318 app/autoAr.js:619
msgid "Enter a password here"
msgstr "请在此输入密码"
#: app/autoAr.js:359
msgid "Removing partial file '${outputFile}'"
msgstr "正在删除部分文件 '${outputFile}'"
#: app/autoAr.js:378
msgid "Creating destination folder"
msgstr "正在创建目标文件夹"
#: app/autoAr.js:410
msgid "Extracting files into '${outputPath}'"
msgstr "正在将文件提取到 '${outputPath}'"
#: app/autoAr.js:442
msgid "Extraction completed"
msgstr "提取完成"
#: app/autoAr.js:443
msgid "Extracting '${fullPathFile}' has been completed."
msgstr "提取 '${fullPathFile}' 已完成。"
#: app/autoAr.js:449
msgid "Extraction cancelled"
msgstr "提取已取消"
#: app/autoAr.js:450
msgid "Extracting '${fullPathFile}' has been cancelled by the user."
msgstr "提取 '${fullPathFile}' 已被用户取消。"
#: app/autoAr.js:460
msgid "Passphrase required for ${filename}"
msgstr "需要 ${filename} 的密码"
#: app/autoAr.js:463
msgid "Error during extraction"
msgstr "提取过程中出错"
#: app/autoAr.js:492
msgid "Compressing files into '${outputFile}'"
msgstr "正在将文件压缩到 '${outputFile}'"
#: app/autoAr.js:505
msgid "Compression completed"
msgstr "压缩完成"
#: app/autoAr.js:506
msgid "Compressing files into '${outputFile}' has been completed."
msgstr "压缩文件到 '${outputFile}' 已完成。"
#: app/autoAr.js:510 app/autoAr.js:517
msgid "Cancelled compression"
msgstr "压缩已取消"
#: app/autoAr.js:511
msgid "The output file '${outputFile}' already exists."
msgstr "输出文件 '${outputFile}' 已存在。"
#: app/autoAr.js:518
msgid "Compressing files into '${outputFile}' has been cancelled by the user."
msgstr "压缩文件到 '${outputFile}' 已被用户取消。"
#: app/autoAr.js:521
msgid "Error during compression"
msgstr "压缩过程中出错"
#: app/autoAr.js:554
msgid "Create archive"
msgstr "创建存档"
#: app/autoAr.js:579
msgid "Archive name"
msgstr "存档名称"
#: app/autoAr.js:614
msgid "Password"
msgstr "密码"
#: app/autoAr.js:633
msgid "Create"
msgstr "创建"
#: app/autoAr.js:712
msgid "Compatible with all operating systems."
msgstr "兼容所有操作系统。"
#: app/autoAr.js:718
msgid "Password protected .zip, must be installed on Windows and Mac."
msgstr "密码保护的 .zip 文件,必须在 Windows 和 Mac 上安装。"
#: app/autoAr.js:724
msgid "Smaller archives but Linux and Mac only."
msgstr "存档文件更小,但仅限 Linux 和 Mac。"
#: app/autoAr.js:730
msgid "Smaller archives but must be installed on Windows and Mac."
msgstr "存档文件更小,但必须在 Windows 和 Mac 上安装。"
#: app/dbusUtils.js:69
msgid "\"${programName}\" is needed for Desktop Icons"
msgstr "Desktop Icons 需要 “${programName}”"
#: app/dbusUtils.js:70
msgid ""
"For this functionality to work in Desktop Icons, you must install \"$"
"{programName}\" in your system."
msgstr ""
"为使此功能在 Desktop Icons 中运行,您必须在系统中安装“${programName}”。"
#: app/desktopIconsUtil.js:154
msgid "Command not found"
msgstr "无法找到命令"
#: app/desktopManager.js:259
msgid "Nautilus File Manager not found"
msgstr "找不到 Nautilus 文件管理器"
#: app/desktopManager.js:260
msgid "The Nautilus File Manager is mandatory to work with Desktop Icons NG."
msgstr "Desktop Icons NG 依赖 Nautilus 文件管理器才能运行。"
#: app/desktopManager.js:964
msgid "Clear Current Selection before New Search"
msgstr "在进行新的搜索之前清除当前选择"
#: app/desktopManager.js:1006
msgid "Find Files on Desktop"
msgstr "在桌面上寻找文件"
#: app/desktopManager.js:1074 app/desktopManager.js:1786
msgid "New Folder"
msgstr "新建文件夹"
#: app/desktopManager.js:1078
msgid "New Document"
msgstr "新建文档"
#: app/desktopManager.js:1083
msgid "Paste"
msgstr "粘贴"
#: app/desktopManager.js:1087
msgid "Undo"
msgstr "撤销"
#: app/desktopManager.js:1091
msgid "Redo"
msgstr "重做"
#: app/desktopManager.js:1097
msgid "Select All"
msgstr "全选"
#: app/desktopManager.js:1105
msgid "Show Desktop in Files"
msgstr "在文件管理器中显示桌面"
#: app/desktopManager.js:1109 app/fileItemMenu.js:365
msgid "Open in Terminal"
msgstr "在终端中打开"
#: app/desktopManager.js:1115
msgid "Change Background…"
msgstr "更改壁纸…"
#: app/desktopManager.js:1126
msgid "Desktop Icons Settings"
msgstr "桌面图标设置"
#: app/desktopManager.js:1139
msgid "Display Settings"
msgstr "显示设置"
#: app/desktopManager.js:1799
msgid "Folder Creation Failed"
msgstr "文件夹创建失败"
#: app/desktopManager.js:1800
msgid "Error while trying to create a Folder"
msgstr "创建文件夹时出错"
#: app/desktopManager.js:1836
msgid "Template Creation Failed"
msgstr "模板创建失败"
#: app/desktopManager.js:1837
msgid "Error while trying to create a Document"
msgstr "创建文档时出错"
#: app/desktopManager.js:1845
msgid "Arrange Icons"
msgstr "排列图标"
#: app/desktopManager.js:1849
msgid "Arrange By..."
msgstr "排序方式…"
#: app/desktopManager.js:1858
msgid "Keep Arranged..."
msgstr "保持排列…"
#: app/desktopManager.js:1862
msgid "Keep Stacked by type..."
msgstr "按类型保持堆叠…"
#: app/desktopManager.js:1867
msgid "Sort Home/Drives/Trash..."
msgstr "排序主目录/驱动器/回收站…"
#: app/desktopManager.js:1873
msgid "Sort by Name"
msgstr "按名称排序"
#: app/desktopManager.js:1875
msgid "Sort by Name Descending"
msgstr "按名称降序排序"
#: app/desktopManager.js:1878
msgid "Sort by Modified Time"
msgstr "按修改时间排序"
#: app/desktopManager.js:1881
msgid "Sort by Type"
msgstr "按类型排序"
#: app/desktopManager.js:1884
msgid "Sort by Size"
msgstr "按大小排序"
#. * TRANSLATORS: when using a screen reader, this is the text read when a folder is
#. selected. Example: if a folder named "things" is selected, it will say "things Folder"
#: app/fileItem.js:64
msgid "${VisibleName} Folder"
msgstr "${VisibleName} 文件夹"
#. * TRANSLATORS: when using a screen reader, this is the text read when a normal file is
#. selected. Example: if a file named "my_picture.jpg" is selected, it will say "my_picture.jpg File"
#: app/fileItem.js:68
msgid "${VisibleName} File"
msgstr "${VisibleName} 文件"
#. TRANSLATORS: "Home" is the text that will be shown in the user's personal folder
#: app/fileItem.js:72 app/fileItem.js:203
msgid "Home"
msgstr "主目录"
#. * TRANSLATORS: when using a screen reader, this is the text read when the trash folder is
#. selected.
#: app/fileItem.js:77
msgid "Trash"
msgstr "回收站"
#. * TRANSLATORS: when using a screen reader, this is the text read when an external drive is
#. selected. Example: if a USB stick named "my_portable" is selected, it will say "my_portable Drive"
#: app/fileItem.js:82
msgid "${VisibleName} Drive"
msgstr "${VisibleName} 驱动器"
#. * TRANSLATORS: when using a screen reader, this is the text read when a stack is
#. selected. Example: if a stack named "pictures" is selected, it will say "pictures Stack"
#: app/fileItem.js:87
msgid "${VisibleName} Stack"
msgstr "${VisibleName} 堆叠"
#: app/fileItem.js:295
msgid "Error while reading Desktop file"
msgstr "读取 .desktop 文件时发生错误"
#: app/fileItem.js:337
msgid "Broken Link"
msgstr "损坏的链接"
#: app/fileItem.js:338
msgid "Can not open this File because it is a Broken Symlink"
msgstr "无法打开此文件,因为它是一个损坏的符号链接"
#: app/fileItem.js:370
msgid "Can't open the file"
msgstr "无法打开文件"
#: app/fileItem.js:396
msgid "Broken Desktop File"
msgstr "损坏的 .desktop 文件"
#: app/fileItem.js:397
msgid ""
"This .desktop file has errors or points to a program without permissions. It "
"can not be executed.\n"
"\n"
"\tEdit the file to set the correct executable Program."
msgstr ""
"此 .desktop 文件有错误或指向一个无权执行的程序。它无法被执行。\n"
"\n"
"\t编辑文件以设置正确的可执行程序。"
#: app/fileItem.js:403
msgid "Invalid Permissions on Desktop File"
msgstr "桌面文件权限无效"
#: app/fileItem.js:404
msgid ""
"This .desktop File has incorrect Permissions. Right Click to edit "
"Properties, then:\n"
msgstr "此 .desktop 文件的权限不正确。请按右键以编辑属性,然后:\n"
#: app/fileItem.js:406
msgid ""
"\n"
"Set Permissions, in \"Others Access\", \"Read Only\" or \"None\""
msgstr ""
"\n"
"设置权限,在“其他访问权限”中,设为“只读”或“无”"
#: app/fileItem.js:409
msgid ""
"\n"
"Enable option, \"Allow Executing File as a Program\""
msgstr ""
"\n"
"勾选“允许作为程序执行文件”选项"
#: app/fileItem.js:417
msgid ""
"This .desktop file is not trusted, it can not be launched. To enable "
"launching, right-click, then:\n"
"\n"
"Enable \"Allow Launching\""
msgstr ""
"此 .desktop 文件未被信任,无法启动。要允许启动,请右键单击,然后:\n"
"\n"
"启用“允许启动”"
#: app/fileItem.js:620
msgid "Failed to set execution flag"
msgstr "设置执行标志失败"
#: app/fileItem.js:632 app/fileItem.js:639
msgid "Could not apply discrete GPU environment"
msgstr "无法应用独立 GPU 环境"
#: app/fileItem.js:668
msgid "Could not find discrete GPU data"
msgstr "找不到独立 GPU 数据"
#: app/fileItem.js:793
msgid "Failed to set metadata::trusted flag"
msgstr "设置 metadata::trusted 标志失败"
#: app/fileItemMenu.js:143
msgid "Open All..."
msgstr "全部打开..."
#: app/fileItemMenu.js:143
msgid "Open"
msgstr "打开"
#: app/fileItemMenu.js:160
msgid "Stack This Type"
msgstr "堆叠此类型"
#: app/fileItemMenu.js:160
msgid "Unstack This Type"
msgstr "取消堆叠此类型"
#: app/fileItemMenu.js:173
msgid "Scripts"
msgstr "脚本"
#: app/fileItemMenu.js:178
msgid "Open All With Other Application..."
msgstr "使用其他应用全部打开..."
#: app/fileItemMenu.js:178
msgid "Open With Other Application"
msgstr "使用其他应用打开"
#: app/fileItemMenu.js:184
msgid "Launch using Dedicated Graphics Card"
msgstr "使用独立显卡启动"
#: app/fileItemMenu.js:195
msgid "Run as a program"
msgstr "作为程序运行"
#: app/fileItemMenu.js:203
msgid "Cut"
msgstr "剪切"
#: app/fileItemMenu.js:210
msgid "Copy"
msgstr "复制"
#: app/fileItemMenu.js:218
msgid "Rename…"
msgstr "重命名…"
#: app/fileItemMenu.js:228
msgid "Move to Trash"
msgstr "放入回收站"
#: app/fileItemMenu.js:236
msgid "Delete permanently"
msgstr "永久删除"
#: app/fileItemMenu.js:246
msgid "Don't Allow Launching"
msgstr "不允许运行"
#: app/fileItemMenu.js:246
msgid "Allow Launching"
msgstr "允许运行"
#: app/fileItemMenu.js:259
msgid "Empty Trash"
msgstr "清空回收站"
#: app/fileItemMenu.js:272
msgid "Eject"
msgstr "弹出"
#: app/fileItemMenu.js:280
msgid "Unmount"
msgstr "卸载"
#: app/fileItemMenu.js:294 app/fileItemMenu.js:301
msgid "Extract Here"
msgstr "提取到此处"
#: app/fileItemMenu.js:308
msgid "Extract To..."
msgstr "提取到…"
#: app/fileItemMenu.js:317
msgid "Send to..."
msgstr "发送到…"
#: app/fileItemMenu.js:325
msgid "Compress {0} folder"
msgid_plural "Compress {0} folders"
msgstr[0] "压缩 {0} 个文件夹"
#: app/fileItemMenu.js:332
msgid "Compress {0} file"
msgid_plural "Compress {0} files"
msgstr[0] "压缩 {0} 个文件"
#: app/fileItemMenu.js:340
msgid "New Folder with {0} item"
msgid_plural "New Folder with {0} items"
msgstr[0] "包含 {0} 个项目的新文件夹"
#: app/fileItemMenu.js:351
msgid "Common Properties"
msgstr "通用属性"
#: app/fileItemMenu.js:351
msgid "Properties"
msgstr "属性"
#: app/fileItemMenu.js:358
msgid "Show All in Files"
msgstr "在文件管理器中全部显示"
#: app/fileItemMenu.js:358
msgid "Show in Files"
msgstr "在文件管理器中显示"
#: app/fileItemMenu.js:449
msgid "No Extraction Folder"
msgstr "没有提取文件夹"
#: app/fileItemMenu.js:450
msgid "Unable to extract File, extraction Folder Does not Exist"
msgstr "无法提取文件,提取文件夹不存在"
#: app/fileItemMenu.js:470
msgid "Select Extract Destination"
msgstr "选择提取目录"
#: app/fileItemMenu.js:475
msgid "Select"
msgstr "选择"
#: app/fileItemMenu.js:516
msgid "Can not email a Directory"
msgstr "无法通过邮件发送文件夹"
#: app/fileItemMenu.js:517
msgid "Selection includes a Directory, compress the directory to a file first."
msgstr "选择包括目录,首先将目录压缩到文件中。"
#: app/notifyX11UnderWayland.js:37
msgid "Desktop Icons NG is running under X11Wayland"
msgstr "Desktop Icons NG 正在 X11Wayland 下运行"
#: app/notifyX11UnderWayland.js:38
msgid ""
"It seems that you have your system configured to force GTK to use X11. This "
"works, but it's suboptimal. You should check your system configuration to "
"fix this."
msgstr ""
"您的系统似乎被配置为强制 GTK 使用 X11。这样可以工作,但并非最佳选择。您应该检"
"查您的系统配置来修复此问题。"
#: app/notifyX11UnderWayland.js:39 app/showErrorPopup.js:39
msgid "Close"
msgstr "关闭"
#: app/notifyX11UnderWayland.js:47
msgid "Don't show this message anymore."
msgstr "不再显示此消息。"
#: app/preferences.js:91
msgid "Settings"
msgstr "设置"
#: app/prefswindow.js:64
msgid "Size for the desktop icons"
msgstr "桌面图标大小"
#: app/prefswindow.js:64
msgid "Tiny"
msgstr "超小"
#: app/prefswindow.js:64
msgid "Small"
msgstr "小"
#: app/prefswindow.js:64
msgid "Standard"
msgstr "标准"
#: app/prefswindow.js:64
msgid "Large"
msgstr "大"
#: app/prefswindow.js:65
msgid "Show the personal folder in the desktop"
msgstr "在桌面显示主目录"
#: app/prefswindow.js:66
msgid "Show the trash icon in the desktop"
msgstr "在桌面显示回收站图标"
#: app/prefswindow.js:67 schemas/org.gnome.shell.extensions.ding.gschema.xml:45
msgid "Show external drives in the desktop"
msgstr "在桌面显示外部驱动器"
#: app/prefswindow.js:68 schemas/org.gnome.shell.extensions.ding.gschema.xml:50
msgid "Show network drives in the desktop"
msgstr "在桌面显示网络驱动器"
#: app/prefswindow.js:71
msgid "New icons alignment"
msgstr "新图标对齐方式"
#: app/prefswindow.js:73
msgid "Top-left corner"
msgstr "左上角"
#: app/prefswindow.js:74
msgid "Top-right corner"
msgstr "右上角"
#: app/prefswindow.js:75
msgid "Bottom-left corner"
msgstr "左下角"
#: app/prefswindow.js:76
msgid "Bottom-right corner"
msgstr "右下角"
#: app/prefswindow.js:78 schemas/org.gnome.shell.extensions.ding.gschema.xml:55
msgid "Add new drives to the opposite side of the screen"
msgstr "将新驱动器添加到屏幕另一侧"
#: app/prefswindow.js:79
msgid "Highlight the drop place during Drag'n'Drop"
msgstr "拖放时高亮显示放置区域"
#: app/prefswindow.js:80 schemas/org.gnome.shell.extensions.ding.gschema.xml:90
msgid "Use Nemo to open folders"
msgstr "使用 Nemo 打开文件夹"
#: app/prefswindow.js:82
msgid "Add an emblem to soft links"
msgstr "为软链接添加标志"
#: app/prefswindow.js:84
msgid "Use dark text in icon labels"
msgstr "图标标签使用深色文本"
#: app/prefswindow.js:91
msgid "Settings shared with Nautilus"
msgstr "与 Nautilus 共享的设置"
#: app/prefswindow.js:113
msgid "Click type for open files"
msgstr "打开文件的点击方式"
#: app/prefswindow.js:113
msgid "Single click"
msgstr "单击"
#: app/prefswindow.js:113
msgid "Double click"
msgstr "双击"
#: app/prefswindow.js:114
msgid "Show hidden files"
msgstr "显示隐藏文件"
#: app/prefswindow.js:115
msgid "Show a context menu item to delete permanently"
msgstr "显示“永久删除”的上下文菜单项"
#: app/prefswindow.js:120
msgid "Action to do when launching a program from the desktop"
msgstr "从桌面启动程序时要执行的操作"
#: app/prefswindow.js:121
msgid "Display the content of the file"
msgstr "显示文件内容"
#: app/prefswindow.js:122
msgid "Launch the file"
msgstr "运行文件"
#: app/prefswindow.js:123
msgid "Ask what to do"
msgstr "总是询问"
#: app/prefswindow.js:129
msgid "Show image thumbnails"
msgstr "显示图片缩略图"
#: app/prefswindow.js:130
msgid "Never"
msgstr "从不"
#: app/prefswindow.js:131
msgid "Local files only"
msgstr "仅限本地文件"
#: app/prefswindow.js:132
msgid "Always"
msgstr "始终"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:25
msgid "Icon size"
msgstr "图标大小"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:26
msgid "Set the size for the desktop icons."
msgstr "设置桌面图标大小。"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:30
msgid "Show personal folder"
msgstr "显示主目录"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:31
msgid "Show the personal folder in the desktop."
msgstr "在桌面显示主目录。"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:35
msgid "Show trash icon"
msgstr "显示回收站图标"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:36
msgid "Show the trash icon in the desktop."
msgstr "在桌面显示回收站图标。"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:40
msgid "New icons start corner"
msgstr "新图标起始角"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:41
msgid "Set the corner from where the icons will start to be placed."
msgstr "设置图标开始放置的角落。"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:46
msgid "Show the disk drives connected to the computer."
msgstr "显示连接到计算机的驱动器。"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:51
msgid "Show mounted network volumes in the desktop."
msgstr "在桌面显示已挂载的网络卷。"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:56
msgid ""
"When adding drives and volumes to the desktop, add them to the opposite side "
"of the screen."
msgstr "将驱动器和卷添加到桌面时,将它们添加到屏幕的另一侧。"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:60
msgid "Shows a rectangle in the destination place during DnD"
msgstr "在拖放(DnD)期间在目标位置显示一个矩形"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:61
msgid ""
"When doing a Drag'n'Drop operation, marks the place in the grid where the "
"icon will be put with a semitransparent rectangle."
msgstr "当执行拖拽时,在网格中用半透明矩形标记图标将被放置的位置。"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:65
msgid "Sort Special Folders - Home/Trash Drives."
msgstr "排序特殊文件夹 - 主目录/回收站/驱动器。"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:66
msgid ""
"When arranging Icons on desktop, to sort and change the position of the "
"Home, Trash and mounted Network or External Drives"
msgstr ""
"在桌面上排列图标时,要对主目录、回收站和安装的网络或外部驱动器的位置进行排序"
"和更改"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:70
msgid "Keep Icons Arranged"
msgstr "保持图标排列"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:71
msgid "Always keep Icons Arranged by the last arranged order"
msgstr "始终按上次排列的顺序保持图标排列"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:75
msgid "Arrange Order"
msgstr "排列顺序"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:76
msgid "Icons Arranged by this property"
msgstr "按此属性排列图标"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:80
msgid "Keep Icons Stacked"
msgstr "保持图标堆叠"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:81
msgid "Always keep Icons Stacked, Similar types are grouped"
msgstr "始终保持图标堆叠,将相似类型分组"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:85
msgid "Type of Files to not Stack"
msgstr "不堆叠的文件类型"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:86
msgid "An Array of strings types, Don't Stack these types of files"
msgstr "字符串类型数组,不要堆叠这些类型的文件"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:91
msgid "Use Nemo instead of Nautilus to open folders."
msgstr "使用 Nemo 代替 Nautilus 打开文件夹。"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:95
msgid "Add an emblem to links"
msgstr "为链接添加标志"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:96
msgid "Add an emblem to allow to identify soft links."
msgstr "添加一个标志以识别软链接。"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:100
msgid "Use black for label text"
msgstr "标签文本使用黑色"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:101
msgid ""
"Paint the label text in black instead of white. Useful when using light "
"backgrounds."
msgstr "将标签文本绘制为黑色字体,而不是白色字体。使用浅色背景的时侯很有用。"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:105
msgid "Show a popup if running on X11Wayland"
msgstr "如果在 X11Wayland 上运行则显示弹窗"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:106
msgid ""
"Whether DING should show a popup if it is running on X11Wayland, or the user "
"decided to not show it anymore."
msgstr ""
"如果 DING 正在 X11Wayland 上运行,是否应显示弹窗,或者用户已决定不再显示它。"
#, fuzzy
#~ msgid "Desktop icons"
#~ msgstr "桌面图标设置"
#~ msgid ""
#~ "To configure Desktop Icons NG, do right-click in the desktop and choose "
#~ "the last item: 'Desktop Icons settings'"
#~ msgstr "设置 Desktop Icons NG,在桌面点击右键并选择最后一个项:设置"
#~ msgid "Do you want to run “{0}”, or display its contents?"
#~ msgstr "您是想运行\"{0}\",还是显示其内容?"
#~ msgid "“{0}” is an executable text file."
#~ msgstr "“{0}” 是一个可执行程序。"
#~ msgid "Execute in a terminal"
#~ msgstr "打开终端"
#~ msgid "Show"
#~ msgstr "显示"
#~ msgid "Execute"
#~ msgstr "运行"
#~ msgid "New folder"
#~ msgstr "新建文件夹"
#~ msgid "Delete"
#~ msgstr "删除"
#~ msgid "Are you sure you want to permanently delete these items?"
#~ msgstr "您确定要永久删除这些项目吗?"
#~ msgid "If you delete an item, it will be permanently lost."
#~ msgstr "删除一个项目,它将会永远消失."
#~ msgid "Show external disk drives in the desktop"
#~ msgstr "在桌面中显示外部磁盘驱动器"
#~ msgid "Show the external drives"
#~ msgstr "在桌面展示个人驱动器"
#~ msgid "Show network volumes"
#~ msgstr "展示网络卷"
#~ msgid "Huge"
#~ msgstr "巨大"
desktop-icons-ng-49.0.5-c32667693d0831c29e3ab3f7bfeb675ea1531a00/po/zh_TW.po 0000664 0000000 0000000 00000060054 15064747536 0024401 0 ustar 00root root 0000000 0000000 # Chinese (Taiwan) translation for desktop-icons.
# Copyright (C) 2018 desktop-icons's COPYRIGHT HOLDER
# This file is distributed under the same license as the desktop-icons package.
# Yi-Jyun Pan , 2018.
# Luke Na , 2025.
#
msgid ""
msgstr ""
"Project-Id-Version: desktop-icons master\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-06-29 16:52+0200\n"
"PO-Revision-Date: 2025-09-17 14:29+0800\n"
"Last-Translator: Luke Na \n"
"Language-Team: Chinese (Taiwan) \n"
"Language: zh_TW\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: Poedit 3.7\n"
#: app/askRenamePopup.js:49
msgid "Folder name"
msgstr "資料夾名稱"
#: app/askRenamePopup.js:49
msgid "File name"
msgstr "檔案名稱"
#: app/askRenamePopup.js:57 app/autoAr.js:305 app/desktopManager.js:1002
msgid "OK"
msgstr "確定"
#: app/askRenamePopup.js:57
msgid "Rename"
msgstr "重新命名"
#: app/autoAr.js:88
msgid "AutoAr is not installed"
msgstr "AutoAr 未安裝"
#: app/autoAr.js:89
msgid ""
"To be able to work with compressed files, install file-roller and/or gir-1.2-"
"gnomeAutoAr"
msgstr "若要能夠處理壓縮檔,請安裝 file-roller 及/或 gir-1.2-gnomeAutoAr"
#: app/autoAr.js:224
msgid "Extracting files"
msgstr "正在解壓縮檔案"
#: app/autoAr.js:241
msgid "Compressing files"
msgstr "正在壓縮檔案"
#: app/autoAr.js:297 app/autoAr.js:636 app/desktopManager.js:1004
#: app/fileItemMenu.js:474
msgid "Cancel"
msgstr "取消"
#: app/autoAr.js:318 app/autoAr.js:619
msgid "Enter a password here"
msgstr "請在此輸入密碼"
#: app/autoAr.js:359
msgid "Removing partial file '${outputFile}'"
msgstr "正在移除未完成的檔案「${outputFile}」"
#: app/autoAr.js:378
msgid "Creating destination folder"
msgstr "正在建立目標資料夾"
#: app/autoAr.js:410
msgid "Extracting files into '${outputPath}'"
msgstr "正在將檔案解壓縮至 '${outputPath}'"
#: app/autoAr.js:442
msgid "Extraction completed"
msgstr "解壓縮完成"
#: app/autoAr.js:443
msgid "Extracting '${fullPathFile}' has been completed."
msgstr "解壓縮 '${fullPathFile}' 已完成。"
#: app/autoAr.js:449
msgid "Extraction cancelled"
msgstr "解壓縮已取消"
#: app/autoAr.js:450
msgid "Extracting '${fullPathFile}' has been cancelled by the user."
msgstr "使用者已取消解壓縮 '${fullPathFile}'。"
#: app/autoAr.js:460
msgid "Passphrase required for ${filename}"
msgstr "需要「${filename}」的通行片語"
#: app/autoAr.js:463
msgid "Error during extraction"
msgstr "解壓縮時發生錯誤"
#: app/autoAr.js:492
msgid "Compressing files into '${outputFile}'"
msgstr "正在將檔案壓縮至「${outputFile}」"
#: app/autoAr.js:505
msgid "Compression completed"
msgstr "壓縮完成"
#: app/autoAr.js:506
msgid "Compressing files into '${outputFile}' has been completed."
msgstr "將檔案壓縮至「${outputFile}」已完成。"
#: app/autoAr.js:510 app/autoAr.js:517
msgid "Cancelled compression"
msgstr "壓縮已取消"
#: app/autoAr.js:511
msgid "The output file '${outputFile}' already exists."
msgstr "輸出檔案「${outputFile}」已存在。"
#: app/autoAr.js:518
msgid "Compressing files into '${outputFile}' has been cancelled by the user."
msgstr "使用者已取消將檔案壓縮至「${outputFile}」。"
#: app/autoAr.js:521
msgid "Error during compression"
msgstr "壓縮時發生錯誤"
#: app/autoAr.js:554
msgid "Create archive"
msgstr "建立壓縮檔"
#: app/autoAr.js:579
msgid "Archive name"
msgstr "壓縮檔名稱"
#: app/autoAr.js:614
msgid "Password"
msgstr "密碼"
#: app/autoAr.js:633
msgid "Create"
msgstr "建立"
#: app/autoAr.js:712
msgid "Compatible with all operating systems."
msgstr "與所有作業系統相容。"
#: app/autoAr.js:718
msgid "Password protected .zip, must be installed on Windows and Mac."
msgstr "受密碼保護的 .zip,必須在 Windows 和 Mac 上安裝。"
#: app/autoAr.js:724
msgid "Smaller archives but Linux and Mac only."
msgstr "壓縮檔較小,但僅限 Linux 和 Mac。"
#: app/autoAr.js:730
msgid "Smaller archives but must be installed on Windows and Mac."
msgstr "壓縮檔較小,但必須在 Windows 和 Mac 上安裝。"
#: app/dbusUtils.js:69
msgid "\"${programName}\" is needed for Desktop Icons"
msgstr "Desktop Icons 需要「${programName}」"
#: app/dbusUtils.js:70
msgid ""
"For this functionality to work in Desktop Icons, you must install \"$"
"{programName}\" in your system."
msgstr ""
"為使此功能在 Desktop Icons 中運作,您必須在系統中安裝「${programName}」。"
#: app/desktopIconsUtil.js:154
msgid "Command not found"
msgstr "無法找到指令"
#: app/desktopManager.js:259
msgid "Nautilus File Manager not found"
msgstr "找不到「檔案」(Nautilus)"
#: app/desktopManager.js:260
msgid "The Nautilus File Manager is mandatory to work with Desktop Icons NG."
msgstr "Desktop Icons NG 需要「檔案」才能運作。"
#: app/desktopManager.js:964
msgid "Clear Current Selection before New Search"
msgstr "在新搜尋前清除目前選取項目"
#: app/desktopManager.js:1006
msgid "Find Files on Desktop"
msgstr "在桌面上尋找檔案"
#: app/desktopManager.js:1074 app/desktopManager.js:1786
msgid "New Folder"
msgstr "新增資料夾"
#: app/desktopManager.js:1078
msgid "New Document"
msgstr "新增文件"
#: app/desktopManager.js:1083
msgid "Paste"
msgstr "貼上"
#: app/desktopManager.js:1087
msgid "Undo"
msgstr "復原"
#: app/desktopManager.js:1091
msgid "Redo"
msgstr "重做"
#: app/desktopManager.js:1097
msgid "Select All"
msgstr "全選"
#: app/desktopManager.js:1105
msgid "Show Desktop in Files"
msgstr "在「檔案」中顯示桌面"
#: app/desktopManager.js:1109 app/fileItemMenu.js:365
msgid "Open in Terminal"
msgstr "在終端機中開啟"
#: app/desktopManager.js:1115
msgid "Change Background…"
msgstr "變更背景…"
#: app/desktopManager.js:1126
msgid "Desktop Icons Settings"
msgstr "桌面圖示設定"
#: app/desktopManager.js:1139
msgid "Display Settings"
msgstr "顯示設定"
#: app/desktopManager.js:1799
msgid "Folder Creation Failed"
msgstr "建立資料夾失敗"
#: app/desktopManager.js:1800
msgid "Error while trying to create a Folder"
msgstr "嘗試建立資料夾時發生錯誤"
#: app/desktopManager.js:1836
msgid "Template Creation Failed"
msgstr "建立範本失敗"
#: app/desktopManager.js:1837
msgid "Error while trying to create a Document"
msgstr "嘗試建立文件時發生錯誤"
#: app/desktopManager.js:1845
msgid "Arrange Icons"
msgstr "排列圖示"
#: app/desktopManager.js:1849
msgid "Arrange By..."
msgstr "排序方式…"
#: app/desktopManager.js:1858
msgid "Keep Arranged..."
msgstr "保持排列…"
#: app/desktopManager.js:1862
msgid "Keep Stacked by type..."
msgstr "按類型保持堆疊…"
#: app/desktopManager.js:1867
msgid "Sort Home/Drives/Trash..."
msgstr "排序家資料夾/磁碟機/垃圾桶…"
#: app/desktopManager.js:1873
msgid "Sort by Name"
msgstr "按名稱排序"
#: app/desktopManager.js:1875
msgid "Sort by Name Descending"
msgstr "按名稱降序排序"
#: app/desktopManager.js:1878
msgid "Sort by Modified Time"
msgstr "按修改時間排序"
#: app/desktopManager.js:1881
msgid "Sort by Type"
msgstr "按類型排序"
#: app/desktopManager.js:1884
msgid "Sort by Size"
msgstr "按大小排序"
#. * TRANSLATORS: when using a screen reader, this is the text read when a folder is
#. selected. Example: if a folder named "things" is selected, it will say "things Folder"
#: app/fileItem.js:64
msgid "${VisibleName} Folder"
msgstr "${VisibleName} 資料夾"
#. * TRANSLATORS: when using a screen reader, this is the text read when a normal file is
#. selected. Example: if a file named "my_picture.jpg" is selected, it will say "my_picture.jpg File"
#: app/fileItem.js:68
msgid "${VisibleName} File"
msgstr "${VisibleName} 檔案"
#. TRANSLATORS: "Home" is the text that will be shown in the user's personal folder
#: app/fileItem.js:72 app/fileItem.js:203
msgid "Home"
msgstr "家資料夾"
#. * TRANSLATORS: when using a screen reader, this is the text read when the trash folder is
#. selected.
#: app/fileItem.js:77
msgid "Trash"
msgstr "垃圾桶"
#. * TRANSLATORS: when using a screen reader, this is the text read when an external drive is
#. selected. Example: if a USB stick named "my_portable" is selected, it will say "my_portable Drive"
#: app/fileItem.js:82
msgid "${VisibleName} Drive"
msgstr "${VisibleName} 磁碟機"
#. * TRANSLATORS: when using a screen reader, this is the text read when a stack is
#. selected. Example: if a stack named "pictures" is selected, it will say "pictures Stack"
#: app/fileItem.js:87
msgid "${VisibleName} Stack"
msgstr "${VisibleName} 堆疊"
#: app/fileItem.js:295
msgid "Error while reading Desktop file"
msgstr "讀取 .desktop 檔時發生錯誤"
#: app/fileItem.js:337
msgid "Broken Link"
msgstr "損壞的連結"
#: app/fileItem.js:338
msgid "Can not open this File because it is a Broken Symlink"
msgstr "無法開啟此檔案,因為它是一個損壞的符號連結"
#: app/fileItem.js:370
msgid "Can't open the file"
msgstr "無法開啟檔案"
#: app/fileItem.js:396
msgid "Broken Desktop File"
msgstr "損壞的 .desktop 檔"
#: app/fileItem.js:397
msgid ""
"This .desktop file has errors or points to a program without permissions. It "
"can not be executed.\n"
"\n"
"\tEdit the file to set the correct executable Program."
msgstr ""
"此 .desktop 檔有錯誤或指向沒有權限的程式,無法執行。\n"
"\n"
"\t請編輯檔案以設定正確的可執行程式。"
#: app/fileItem.js:403
msgid "Invalid Permissions on Desktop File"
msgstr ".desktop 檔權限無效"
#: app/fileItem.js:404
msgid ""
"This .desktop File has incorrect Permissions. Right Click to edit "
"Properties, then:\n"
msgstr "此 .desktop 檔的權限不正確。請按右鍵開啟「內容」,然後:\n"
#: app/fileItem.js:406
msgid ""
"\n"
"Set Permissions, in \"Others Access\", \"Read Only\" or \"None\""
msgstr ""
"\n"
"設定權限,在「其他存取權」中,設為「唯讀」或「無」"
#: app/fileItem.js:409
msgid ""
"\n"
"Enable option, \"Allow Executing File as a Program\""
msgstr ""
"\n"
"勾選「允許檔案作為程式執行」選項"
#: app/fileItem.js:417
msgid ""
"This .desktop file is not trusted, it can not be launched. To enable "
"launching, right-click, then:\n"
"\n"
"Enable \"Allow Launching\""
msgstr ""
"此 .desktop 檔不受信任,無法啟動。若要啟用啟動,請按右鍵,然後:\n"
"\n"
"啟用「允許啟動」"
#: app/fileItem.js:620
msgid "Failed to set execution flag"
msgstr "設定執行權限失敗"
#: app/fileItem.js:632 app/fileItem.js:639
msgid "Could not apply discrete GPU environment"
msgstr "無法套用獨立顯示卡執行環境"
#: app/fileItem.js:668
msgid "Could not find discrete GPU data"
msgstr "找不到獨立顯示卡資料"
#: app/fileItem.js:793
msgid "Failed to set metadata::trusted flag"
msgstr "設定 metadata::trusted 屬性失敗"
#: app/fileItemMenu.js:143
msgid "Open All..."
msgstr "全部開啟…"
#: app/fileItemMenu.js:143
msgid "Open"
msgstr "開啟"
#: app/fileItemMenu.js:160
msgid "Stack This Type"
msgstr "堆疊此類型"
#: app/fileItemMenu.js:160
msgid "Unstack This Type"
msgstr "取消堆疊此類型"
#: app/fileItemMenu.js:173
msgid "Scripts"
msgstr "指令稿"
#: app/fileItemMenu.js:178
msgid "Open All With Other Application..."
msgstr "以其他應用程式全部開啟…"
#: app/fileItemMenu.js:178
msgid "Open With Other Application"
msgstr "使用其他應用程式開啟"
#: app/fileItemMenu.js:184
msgid "Launch using Dedicated Graphics Card"
msgstr "使用獨立顯示卡啟動"
#: app/fileItemMenu.js:195
msgid "Run as a program"
msgstr "以程式方式執行"
#: app/fileItemMenu.js:203
msgid "Cut"
msgstr "剪下"
#: app/fileItemMenu.js:210
msgid "Copy"
msgstr "複製"
#: app/fileItemMenu.js:218
msgid "Rename…"
msgstr "重新命名…"
#: app/fileItemMenu.js:228
msgid "Move to Trash"
msgstr "移動到垃圾桶"
#: app/fileItemMenu.js:236
msgid "Delete permanently"
msgstr "永久刪除"
#: app/fileItemMenu.js:246
msgid "Don't Allow Launching"
msgstr "停用啟動"
#: app/fileItemMenu.js:246
msgid "Allow Launching"
msgstr "允許啟動"
#: app/fileItemMenu.js:259
msgid "Empty Trash"
msgstr "清空垃圾桶"
#: app/fileItemMenu.js:272
msgid "Eject"
msgstr "退出"
#: app/fileItemMenu.js:280
msgid "Unmount"
msgstr "卸載"
#: app/fileItemMenu.js:294 app/fileItemMenu.js:301
msgid "Extract Here"
msgstr "解壓縮至此"
#: app/fileItemMenu.js:308
msgid "Extract To..."
msgstr "解壓縮到…"
#: app/fileItemMenu.js:317
msgid "Send to..."
msgstr "傳送到…"
#: app/fileItemMenu.js:325
msgid "Compress {0} folder"
msgid_plural "Compress {0} folders"
msgstr[0] "壓縮 {0} 個資料夾"
#: app/fileItemMenu.js:332
msgid "Compress {0} file"
msgid_plural "Compress {0} files"
msgstr[0] "壓縮 {0} 個檔案"
#: app/fileItemMenu.js:340
msgid "New Folder with {0} item"
msgid_plural "New Folder with {0} items"
msgstr[0] "新增含 {0} 個項目的資料夾"
#: app/fileItemMenu.js:351
msgid "Common Properties"
msgstr "共同內容"
#: app/fileItemMenu.js:351
msgid "Properties"
msgstr "內容"
#: app/fileItemMenu.js:358
msgid "Show All in Files"
msgstr "在「檔案」中顯示全部"
#: app/fileItemMenu.js:358
msgid "Show in Files"
msgstr "在「檔案」中顯示"
#: app/fileItemMenu.js:449
msgid "No Extraction Folder"
msgstr "沒有解壓縮資料夾"
#: app/fileItemMenu.js:450
msgid "Unable to extract File, extraction Folder Does not Exist"
msgstr "無法解壓縮檔案,解壓縮資料夾不存在"
#: app/fileItemMenu.js:470
msgid "Select Extract Destination"
msgstr "選擇解壓縮的位置"
#: app/fileItemMenu.js:475
msgid "Select"
msgstr "選擇"
#: app/fileItemMenu.js:516
msgid "Can not email a Directory"
msgstr "無法寄送資料夾"
#: app/fileItemMenu.js:517
msgid "Selection includes a Directory, compress the directory to a file first."
msgstr "已選項目含資料夾,先把資料夾壓縮成一個檔案。"
#: app/notifyX11UnderWayland.js:37
msgid "Desktop Icons NG is running under X11Wayland"
msgstr "Desktop Icons NG 正在 X11Wayland 下執行"
#: app/notifyX11UnderWayland.js:38
msgid ""
"It seems that you have your system configured to force GTK to use X11. This "
"works, but it's suboptimal. You should check your system configuration to "
"fix this."
msgstr ""
"您的系統似乎被設定為強制 GTK 使用 X11。這樣可以運作,但並非最佳選擇。您應該檢"
"查您的系統設定來修正此問題。"
#: app/notifyX11UnderWayland.js:39 app/showErrorPopup.js:39
msgid "Close"
msgstr "關閉"
#: app/notifyX11UnderWayland.js:47
msgid "Don't show this message anymore."
msgstr "不要再顯示此訊息。"
#: app/preferences.js:91
msgid "Settings"
msgstr "設定"
#: app/prefswindow.js:64
msgid "Size for the desktop icons"
msgstr "桌面圖示的大小"
#: app/prefswindow.js:64
msgid "Tiny"
msgstr "極小"
#: app/prefswindow.js:64
msgid "Small"
msgstr "小"
#: app/prefswindow.js:64
msgid "Standard"
msgstr "標準"
#: app/prefswindow.js:64
msgid "Large"
msgstr "大圖示"
#: app/prefswindow.js:65
msgid "Show the personal folder in the desktop"
msgstr "在桌面顯示個人資料夾"
#: app/prefswindow.js:66
msgid "Show the trash icon in the desktop"
msgstr "在桌面顯示垃圾桶圖示"
#: app/prefswindow.js:67 schemas/org.gnome.shell.extensions.ding.gschema.xml:45
msgid "Show external drives in the desktop"
msgstr "在桌面顯示外接磁碟機"
#: app/prefswindow.js:68 schemas/org.gnome.shell.extensions.ding.gschema.xml:50
msgid "Show network drives in the desktop"
msgstr "在桌面顯示網路資料夾"
#: app/prefswindow.js:71
msgid "New icons alignment"
msgstr "新圖示對齊方式"
#: app/prefswindow.js:73
msgid "Top-left corner"
msgstr "左上角"
#: app/prefswindow.js:74
msgid "Top-right corner"
msgstr "右上角"
#: app/prefswindow.js:75
msgid "Bottom-left corner"
msgstr "左下角"
#: app/prefswindow.js:76
msgid "Bottom-right corner"
msgstr "右下角"
#: app/prefswindow.js:78 schemas/org.gnome.shell.extensions.ding.gschema.xml:55
msgid "Add new drives to the opposite side of the screen"
msgstr "將新掛載磁碟機置於螢幕的另一邊"
#: app/prefswindow.js:79
msgid "Highlight the drop place during Drag'n'Drop"
msgstr "拖放時突顯預計放置位置"
#: app/prefswindow.js:80 schemas/org.gnome.shell.extensions.ding.gschema.xml:90
msgid "Use Nemo to open folders"
msgstr "使用 Nemo 開啟資料夾"
#: app/prefswindow.js:82
msgid "Add an emblem to soft links"
msgstr "為符號連結新增徽章"
#: app/prefswindow.js:84
msgid "Use dark text in icon labels"
msgstr "圖示標籤使用深色文字"
#: app/prefswindow.js:91
msgid "Settings shared with Nautilus"
msgstr "與「檔案」共用設定"
#: app/prefswindow.js:113
msgid "Click type for open files"
msgstr "開啟檔案的點擊方式"
#: app/prefswindow.js:113
msgid "Single click"
msgstr "單擊"
#: app/prefswindow.js:113
msgid "Double click"
msgstr "雙擊"
#: app/prefswindow.js:114
msgid "Show hidden files"
msgstr "顯示隱藏檔"
#: app/prefswindow.js:115
msgid "Show a context menu item to delete permanently"
msgstr "在快速選單顯示永久刪除"
#: app/prefswindow.js:120
msgid "Action to do when launching a program from the desktop"
msgstr "在桌面執行應用程式時的動作"
#: app/prefswindow.js:121
msgid "Display the content of the file"
msgstr "顯示檔案內容"
#: app/prefswindow.js:122
msgid "Launch the file"
msgstr "執行檔案"
#: app/prefswindow.js:123
msgid "Ask what to do"
msgstr "詢問要做什麼"
#: app/prefswindow.js:129
msgid "Show image thumbnails"
msgstr "顯示影像縮圖"
#: app/prefswindow.js:130
msgid "Never"
msgstr "從不"
#: app/prefswindow.js:131
msgid "Local files only"
msgstr "僅限本機檔案"
#: app/prefswindow.js:132
msgid "Always"
msgstr "一律"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:25
msgid "Icon size"
msgstr "圖示大小"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:26
msgid "Set the size for the desktop icons."
msgstr "設定桌面圖示的大小。"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:30
msgid "Show personal folder"
msgstr "顯示個人資料夾"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:31
msgid "Show the personal folder in the desktop."
msgstr "在桌面顯示個人資料夾。"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:35
msgid "Show trash icon"
msgstr "顯示垃圾桶圖示"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:36
msgid "Show the trash icon in the desktop."
msgstr "在桌面顯示垃圾桶圖示。"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:40
msgid "New icons start corner"
msgstr "新圖示起始角落"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:41
msgid "Set the corner from where the icons will start to be placed."
msgstr "設定新圖示置放的位置。"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:46
msgid "Show the disk drives connected to the computer."
msgstr "顯示連接於本機的硬碟。"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:51
msgid "Show mounted network volumes in the desktop."
msgstr "在桌面顯示已掛載的網路磁碟區。"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:56
msgid ""
"When adding drives and volumes to the desktop, add them to the opposite side "
"of the screen."
msgstr "將磁碟機和磁碟區新增至桌面時,將它們新增至螢幕的另一側。"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:60
msgid "Shows a rectangle in the destination place during DnD"
msgstr "拖曳同時在拖曳目的位置顯示矩形方格"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:61
msgid ""
"When doing a Drag'n'Drop operation, marks the place in the grid where the "
"icon will be put with a semitransparent rectangle."
msgstr "當執行拖曳,在圖示即將被置放的位置用半透明矩形顯示方格。"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:65
msgid "Sort Special Folders - Home/Trash Drives."
msgstr "排序特殊資料夾 - 家資料夾/垃圾桶/磁碟機。"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:66
msgid ""
"When arranging Icons on desktop, to sort and change the position of the "
"Home, Trash and mounted Network or External Drives"
msgstr ""
"在桌面上排列圖示時,排序和變更家資料夾、垃圾桶以及已掛載的網路或外部磁碟機的"
"位置"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:70
msgid "Keep Icons Arranged"
msgstr "保持圖示排列"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:71
msgid "Always keep Icons Arranged by the last arranged order"
msgstr "一律依照上次排列的順序保持圖示排列"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:75
msgid "Arrange Order"
msgstr "排列順序"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:76
msgid "Icons Arranged by this property"
msgstr "按此屬性排列圖示"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:80
msgid "Keep Icons Stacked"
msgstr "保持圖示堆疊"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:81
msgid "Always keep Icons Stacked, Similar types are grouped"
msgstr "一律保持圖示堆疊,相似類型會分組"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:85
msgid "Type of Files to not Stack"
msgstr "不堆疊的檔案類型"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:86
msgid "An Array of strings types, Don't Stack these types of files"
msgstr "字串類型陣列,不要堆疊這些類型的檔案"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:91
msgid "Use Nemo instead of Nautilus to open folders."
msgstr "使用 Nemo 而非 Nautilus 開啟資料夾。"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:95
msgid "Add an emblem to links"
msgstr "為連結新增標誌"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:96
msgid "Add an emblem to allow to identify soft links."
msgstr "新增標誌以識別軟連結。"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:100
msgid "Use black for label text"
msgstr "標籤文字使用黑色"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:101
msgid ""
"Paint the label text in black instead of white. Useful when using light "
"backgrounds."
msgstr "將標籤文字塗成黑色而非白色。在使用淺色背景時很有用。"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:105
msgid "Show a popup if running on X11Wayland"
msgstr "若在 X11Wayland 上執行則顯示彈出視窗"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:106
msgid ""
"Whether DING should show a popup if it is running on X11Wayland, or the user "
"decided to not show it anymore."
msgstr ""
"DING 是否應在 X11Wayland 上執行時顯示彈出視窗,或使用者已決定不再顯示。"
#, fuzzy
#~ msgid "Desktop icons"
#~ msgstr "桌面圖示設定"
#~ msgid ""
#~ "To configure Desktop Icons NG, do right-click in the desktop and choose "
#~ "the last item: 'Desktop Icons settings'"
#~ msgstr ""
#~ "要設定Desktop Icons NG,在桌面按滑鼠右鍵並選擇最後項目「桌面圖示設定」"
#~ msgid "Do you want to run “{0}”, or display its contents?"
#~ msgstr "要執行「{0}」,還是顯示它的內容?"
#~ msgid "“{0}” is an executable text file."
#~ msgstr "「{0}」是可執行的文字檔。"
#~ msgid "Execute in a terminal"
#~ msgstr "於終端機執行"
#~ msgid "Show"
#~ msgstr "顯示"
#~ msgid "Execute"
#~ msgstr "執行"
#~ msgid "New folder"
#~ msgstr "新增資料夾"
#~ msgid "Delete"
#~ msgstr "刪除"
#~ msgid "Are you sure you want to permanently delete these items?"
#~ msgstr "你確定要永久刪除這些項目嗎?"
#~ msgid "If you delete an item, it will be permanently lost."
#~ msgstr "如果直接刪除本項目,它會永久消失。"
#, fuzzy
#~ msgid "Show external disk drives in the desktop"
#~ msgstr "在桌面顯示個人資料夾"
#, fuzzy
#~ msgid "Show the external drives"
#~ msgstr "在桌面顯示個人資料夾"
#, fuzzy
#~ msgid "Show network volumes"
#~ msgstr "在《檔案》中顯示"
#~ msgid "Huge"
#~ msgstr "巨大圖示"
desktop-icons-ng-49.0.5-c32667693d0831c29e3ab3f7bfeb675ea1531a00/prefs.js 0000664 0000000 0000000 00000002607 15064747536 0024045 0 ustar 00root root 0000000 0000000
/* Desktop Icons GNOME Shell extension
*
* Copyright (C) 2019 Sergio Costas (rastersoft@gmail.com)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
'use strict';
import Gio from 'gi://Gio'
import Adw from 'gi://Adw';
import {ExtensionPreferences} from 'resource:///org/gnome/Shell/Extensions/js/extensions/prefs.js';
export default class DingPreferences extends ExtensionPreferences {
fillPreferencesWindow(window) {
let mainAppControl = Gio.DBusActionGroup.get(
Gio.DBus.session,
'com.rastersoft.ding',
'/com/rastersoft/ding'
);
mainAppControl.activate_action('changeDesktopIconSettings', null);
const page = new Adw.PreferencesPage();
window.add(page);
window.connect_after('show', ()=>{window.close();});
}
}
desktop-icons-ng-49.0.5-c32667693d0831c29e3ab3f7bfeb675ea1531a00/refresh_extension.sh 0000775 0000000 0000000 00000000547 15064747536 0026462 0 ustar 00root root 0000000 0000000 #!/bin/sh
DINGUBUNTU=0
DING=0
if [ -d ~/.local/share/gnome-shell/extensions/dingubuntu@rastersoft.com ]; then
DINGUBUNTU=1
fi
if [ -d ~/.local/share/gnome-shell/extensions/ding@rastersoft.com ]; then
DING=1
fi
if [ ${DINGUBUNTU} = "1" ]; then
./ubuntu_install.sh
fi
if [ ${DING} = "1" ]; then
./local_install.sh
fi
./kill.py
desktop-icons-ng-49.0.5-c32667693d0831c29e3ab3f7bfeb675ea1531a00/schemas/ 0000775 0000000 0000000 00000000000 15064747536 0024006 5 ustar 00root root 0000000 0000000 desktop-icons-ng-49.0.5-c32667693d0831c29e3ab3f7bfeb675ea1531a00/schemas/meson.build 0000664 0000000 0000000 00000000165 15064747536 0026152 0 ustar 00root root 0000000 0000000 gnome.compile_schemas()
install_data(
'org.gnome.shell.extensions.ding.gschema.xml',
install_dir : schema_dir
)
org.gnome.shell.extensions.ding.gschema.xml 0000664 0000000 0000000 00000012045 15064747536 0034200 0 ustar 00root root 0000000 0000000 desktop-icons-ng-49.0.5-c32667693d0831c29e3ab3f7bfeb675ea1531a00/schemas
'standard'
Icon size
Set the size for the desktop icons.
true
Show personal folder
Show the personal folder in the desktop.
true
Show trash icon
Show the trash icon in the desktop.
'top-left'
New icons start corner
Set the corner from where the icons will start to be placed.
true
Show external drives in the desktop
Show the disk drives connected to the computer.
false
Show network drives in the desktop
Show mounted network volumes in the desktop.
true
Add new drives to the opposite side of the screen
When adding drives and volumes to the desktop, add them to the opposite side of the screen.
true
Shows a rectangle in the destination place during DnD
When doing a Drag'n'Drop operation, marks the place in the grid where the icon will be put with a semitransparent rectangle.
false
Sort Special Folders - Home/Trash Drives.
When arranging Icons on desktop, to sort and change the position of the Home, Trash and mounted Network or External Drives
false
Keep Icons Arranged
Always keep Icons Arranged by the last arranged order
'NAME'
Arrange Order
Icons Arranged by this property
false
Keep Icons Stacked
Always keep Icons Stacked, Similar types are grouped
[]
Type of Files to not Stack
An Array of strings types, Don't Stack these types of files
false
Use Nemo to open folders
Use Nemo instead of Nautilus to open folders.
true
Add an emblem to links
Add an emblem to allow to identify soft links.
false
Use black for label text
Paint the label text in black instead of white. Useful when using light backgrounds.
true
Show a popup if running on X11Wayland
Whether DING should show a popup if it is running on X11Wayland, or the user decided to not show it anymore.
desktop-icons-ng-49.0.5-c32667693d0831c29e3ab3f7bfeb675ea1531a00/ubuntu_install.sh 0000775 0000000 0000000 00000001102 15064747536 0025764 0 ustar 00root root 0000000 0000000 #!/bin/bash
rm -rf ~/.local/share/gnome-shell/extensions/dingubuntu@rastersoft.com
rm -rf ~/.local/share/gnome-shell/extensions/ding@rastersoft.com
rm -rf .build
mkdir .build
meson setup --prefix=$HOME/.local/ --localedir=share/gnome-shell/extensions/ding@rastersoft.com/locale .build
ninja -C .build install
rm -rf .build
mv ~/.local/share/gnome-shell/extensions/ding@rastersoft.com ~/.local/share/gnome-shell/extensions/dingubuntu@rastersoft.com
sed -i "s#ding@rastersoft#dingubuntu@rastersoft#" ~/.local/share/gnome-shell/extensions/dingubuntu@rastersoft.com/metadata.json
desktop-icons-ng-49.0.5-c32667693d0831c29e3ab3f7bfeb675ea1531a00/visibleArea.js 0000664 0000000 0000000 00000014356 15064747536 0025160 0 ustar 00root root 0000000 0000000 /* DING: Desktop Icons New Generation for GNOME Shell
*
* Copyright (C) 2021 Sergio Costas (rastersoft@gmail.com)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, version 3 of the License.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
'use strict';
const Signals = imports.signals;
import * as Main from 'resource:///org/gnome/shell/ui/main.js'
import GLib from 'gi://GLib'
export class VisibleArea {
constructor() {
this._usableAreas = {};
this._marginsList = {};
this._refreshTimerId = null;
// This UUID allows to ensure that the object is really a DesktopIconsIntegration object
this._extensionUUID = '130cbc66-235c-4bd6-8571-98d2d8bba5e2';
}
disable() {
if (this._refreshTimerId !== null) {
GLib.source_remove(this._refreshTimerId);
this._refreshTimerId = null;
}
}
setMarginsForExtension(extensionUUID, margins) {
if (margins == null) {
if (!(extensionUUID in this._marginsList)) {
return;
}
delete this._marginsList[extensionUUID];
} else {
this._marginsList[extensionUUID] = margins;
}
if (this._refreshTimerId) {
GLib.source_remove(this._refreshTimerId);
}
this._refreshTimerId = GLib.timeout_add(GLib.PRIORITY_DEFAULT, 250, () => {
this._refreshMargins();
this._refreshTimerId = null;
return GLib.SOURCE_REMOVE;
});
}
_refreshMargins() {
this._usableAreas = {};
for (let extensionUUID in this._marginsList) {
let margins = this._marginsList[extensionUUID];
for (let workspace in margins) {
let index = workspace;
if (workspace < 0) {
index = Main.layoutManager.primaryIndex;
}
if (!(index in this._usableAreas)) {
this._usableAreas[index] = {
top: 0,
bottom: 0,
left: 0,
right: 0,
};
}
for (let index2 of ['top', 'bottom', 'left', 'right']) {
this._usableAreas[index][index2] = Math.max(this._usableAreas[index][index2], margins[workspace][index2]);
}
}
}
this.emit('updated-usable-area');
}
/**
* Returns the margin values for an specific monitor
*
* @param {} ws A workspace (obtained with global.workspace_manager.get_workspace_by_index(0);)
* @param {*} monitorIndex The monitor number
* @returns A dictionary with the following elements:
* x: the X coordinate of the monitor area
* y: the Y coordinate of the monitor area
* width: the width of the monitor area
* height: the height of the monitor area
* scale: the scale factor for this monitor
* marginTop: the number of pixels, counting from the top of the monitor, to leave free because are used by a dynamic element
* marginBottom: the number of pixels, counting from the bottom of the monitor, to leave free because are used by a dynamic element
* marginLeft: the number of pixels, counting from the left of the monitor area, to leave free because are used by a dynamic element
* marginRight: the number of pixels, counting from the right of the monitor area, to leave free because are used by a dynamic element
*
* The inner margins so returned automatically describe the working area of the monitor (in Gnome terms) that for example the top margin will
* automatically include the height of the top panel.
*
* In addition any extra margins above that set by gnome by othe extensions in usable areas will be returned if they are bigger than the margins
* described by gnome shell for the work area
*
* Thus, a window that covers the whole monitor area should be placed at X,Y and with a size of (width, height), and
* it must have inner margins of marginTop, marginRight, marginBottom and marginLeft.
*/
getMonitorGeometry(ws, monitorIndex) {
let geometry = ws.get_display().get_monitor_geometry(monitorIndex);
let scale = ws.get_display().get_monitor_scale(monitorIndex);
let area = ws.get_work_area_for_monitor(monitorIndex);
// calculate the margins due to the difference between the monitor geometry and the work area, ie. the work area margins
let marginTop = area.y - geometry.y;
let marginLeft = area.x - geometry.x;
let marginRight = geometry.width - area.width - marginLeft;
let marginBottom = geometry.height - area.height - marginTop;
if (monitorIndex in this._usableAreas) {
// If the margins for this monitor are bigger than the margins calculated previously,
// use the higher number. This is because the margin set from the extensions are be from the monitor border,
// an can supersede the ones that actually form the work area border.
marginTop = Math.max(marginTop, this._usableAreas[monitorIndex]['top']);
marginBottom = Math.max(marginBottom, this._usableAreas[monitorIndex]['bottom']);
marginLeft = Math.max(marginLeft, this._usableAreas[monitorIndex]['left']);
marginRight = Math.max(marginRight, this._usableAreas[monitorIndex]['right']);
}
return {
x: geometry.x,
y: geometry.y,
width: geometry.width,
height: geometry.height,
scale,
marginTop,
marginBottom,
marginLeft,
marginRight,
};
}
get uuid() {
return this._extensionUUID;
}
};
Signals.addSignalMethods(VisibleArea.prototype);