pax_global_header 0000666 0000000 0000000 00000000064 14216573372 0014524 g ustar 00root root 0000000 0000000 52 comment=68ff1d56d99fe517317de312e69f86dc97822fc7
desktop-icons-ng-43/ 0000775 0000000 0000000 00000000000 14216573372 0014500 5 ustar 00root root 0000000 0000000 desktop-icons-ng-43/COPYING 0000664 0000000 0000000 00000104513 14216573372 0015537 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-43/HISTORY.md 0000664 0000000 0000000 00000026033 14216573372 0016167 0 ustar 00root root 0000000 0000000 # History of versions #
* 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-43/README.md 0000664 0000000 0000000 00000014333 14216573372 0015763 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
## 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. The only way to update to the newest one 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
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.
## 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.
## Source code and contacting the author
Sergio Costas
rastersoft@gmail.com
desktop-icons-ng-43/askRenamePopup.js 0000664 0000000 0000000 00000007656 14216573372 0020006 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 .
*/
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 _ = Gettext.gettext;
var AskRenamePopup = class {
constructor(fileItem, allowReturnOnSameName, closeCB) {
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.container,
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);
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._button.connect('clicked', () => {
this._do_rename();
});
this._textArea.connect('changed', () => {
this._validate();
});
this._textArea.connect('activate', () => {
if (this._button.sensitive) {
this._do_rename();
}
});
this._popover.connect('closed', () => {
closeCB();
});
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._popover.set_relative_to(this._fileItem._iconContainer);
this._validate();
this._textArea.grab_focus_without_selecting();
this._textArea.select_region(0, DesktopIconsUtil.getFileExtensionOffset(fileItem.fileName, fileItem.isDirectory));
}
_validate() {
let text = this._textArea.text;
let final_path = this._desktopPath + '/' + text;
let final_file = Gio.File.new_for_commandline_arg(final_path);
if ((text == '') || (-1 != text.indexOf('/')) ||
((text == this._fileItem.fileName) && (!this._allowReturnOnSameName)) ||
(final_file.query_exists(null) && (text != this._fileItem.fileName))) {
this._button.sensitive = false;
} else {
this._button.sensitive = true;
}
}
_do_rename() {
this._popover.popdown();
this._closeCB();
if (this._fileItem.fileName == this._textArea.text) {
return;
}
DBusUtils.RemoteFileOperations.RenameURIRemote(
this._fileItem.file.get_uri(), this._textArea.text,
);
}
};
desktop-icons-ng-43/createThumbnail.js 0000775 0000000 0000000 00000004035 14216573372 0020152 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 .
*/
imports.gi.versions.GnomeDesktop = '3.0';
const GnomeDesktop = imports.gi.GnomeDesktop;
const Gio = imports.gi.Gio;
function CreateThumbnail() {
let thumbnailFactory = 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 thumbnail = thumbnailFactory.lookup(fileUri, modifiedTime);
if (thumbnail != null) {
return 3;
}
if (thumbnailFactory.has_valid_failed_thumbnail(fileUri, modifiedTime)) {
return 4;
}
// now, generate the file
let thumbnailPixbuf = thumbnailFactory.generate_thumbnail(fileUri, fileInfo.get_content_type());
if (thumbnailPixbuf == null) {
thumbnailFactory.create_failed_thumbnail(fileUri, modifiedTime);
return 2;
} else {
thumbnailFactory.save_thumbnail(thumbnailPixbuf, fileUri, modifiedTime);
return 0;
}
}
CreateThumbnail();
desktop-icons-ng-43/dbusInterfaces.js 0000664 0000000 0000000 00000017434 14216573372 0020010 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 .
*/
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-43/dbusUtils.js 0000664 0000000 0000000 00000100353 14216573372 0017016 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 .
*/
const { Gio, GLib, Gdk, Gtk } = imports.gi;
const ByteArray = imports.byteArray;
const Signals = imports.signals;
const DBusInterfaces = imports.dbusInterfaces;
var NautilusFileOperations2 = null;
var FreeDesktopFileManager = null;
var GnomeNautilusPreview = null;
var SwitcherooControl = null;
var GnomeArchiveManager = null;
var GtkVfsMetadata = 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 = {};
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)
];
} 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 = this._dbusManager.checkIsAvailable(this._serviceName, this._inSystemBus);
if (this._available) {
this.makeNewProxy();
} else {
this._proxy = null;
}
dbusManager.connect(inSystemBus ? 'changed-availability-system' : 'changed-availability-local', () => {
let newAvailability = this._dbusManager.checkIsAvailable(this._serviceName, this._inSystemBus);
if (newAvailability != this._available) {
this._available = newAvailability;
this.emit('changed-status', newAvailability);
if (this._available) {
this.makeNewProxy();
}
}
});
}
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];
}
}
makeNewProxy() {
this._interfaceXML = this._dbusManager.getInterface(this._serviceName, this._objectName, this._interfaceName, this._inSystemBus, false);
if (this._interfaceXML) {
try {
this._proxy = new Gio.DBusProxy.makeProxyWrapper(this._interfaceXML)(
this._inSystemBus ? Gio.DBus.system : Gio.DBus.session,
this._serviceName,
this._objectName,
null
);
for (let signal in this._signals) {
this._signalsIDs[signal] = this._proxy.connect(signal, this._signals[signal]);
}
for (let signal in this._connectSignals) {
this._connectSignalsIDs[signal] = this._proxy.connectSignal(signal, this._connectSignals[signal]);
}
} catch(e) {
this._available = false;
this._proxy = null;
print(`Error creating proxy, ${this._programNeeded[0]}: ${e.message}\n${e.stack}`);
}
} else {
this._available = false;
this._proxy = null;
}
}
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',
true, // 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',
false, // local bus
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',
false, // local bus
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) {
print(`Error getting introspection data over Dbus: ${e.message}\n${e.stack}`);
}
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('', 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=null) {
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) {
log('Error showing properties: ' + error.message);
}
}
);
}
ShowItemsRemote(showInFilesList, timestamp, callback=null) {
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) {
log('Error showing file on desktop: ' + error.message);
}
}
);
}
ShowFileRemote(uri, integer, boolean, callback=null) {
if (! this.gnomeNautilusPreviewManager.proxy) {
this._sendNoProxyError(callback);
return;
}
this.gnomeNautilusPreviewManager.proxy.ShowFileRemote(uri, integer, boolean,
(result, error) => {
if (callback) {
callback(result, error);
}
if (error) {
log('Error previewing file: ' + error.message);
}
});
}
ExtractRemote(extractFileItem, folder, boolean, callback=null) {
if (! this.gnomeArchiveManager.proxy) {
this._sendNoProxyError(callback);
return;
}
this.gnomeArchiveManager.proxy.ExtractRemote(extractFileItem, folder, true,
(result, error) => {
if (callback) {
callback(result, error);
}
if (error) {
log('Error extracting files: ' + error.message);
}
});
}
CompressRemote(compressFileItems, folder, boolean, callback=null) {
if (! this.gnomeArchiveManager.proxy) {
this._sendNoProxyError(callback);
return;
}
this.gnomeArchiveManager.proxy.CompressRemote(compressFileItems, folder, boolean,
(result, error) => {
if (callback) {
callback(result, error);
}
if (error) {
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) {
logError(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) {
log('Error moving files: ' + error.message);
}
}
);
}
CopyURIsRemote(fileList, uri, callback=null) {
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) {
log('Error copying files: ' + error.message);
}
}
);
}
RenameURIRemote(fileList, uri, callback=null) {
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) {
log('Error copying files: ' + error.message);
}
}
);
}
TrashURIsRemote(fileList, callback=null) {
if (! this.fileOperationsManager.proxy) {
this._sendNoProxyError(callback);
return;
}
this.fileOperationsManager.proxy.TrashURIsRemote(
fileList,
this.platformData(),
(result, error) => {
if (callback) {
callback(result, error);
}
if (error) {
log('Error moving files: ' + error.message);
}
}
);
}
DeleteURIsRemote(fileList, callback=null) {
if (! this.fileOperationsManager.proxy) {
this._sendNoProxyError(callback);
return;
}
this.fileOperationsManager.proxy.DeleteURIsRemote(
fileList,
this.platformData(),
(source, error) => {
if (callback) {
callback(source, error);
}
if (error) {
log('Error deleting files on the desktop: ' + error.message);
}
}
);
}
EmptyTrashRemote(askConfirmation, callback=null) {
if (! this.fileOperationsManager.proxy) {
this._sendNoProxyError(callback);
return;
}
this.fileOperationsManager.proxy.EmptyTrashRemote(
askConfirmation,
this.platformData(),
(source, error) => {
if (callback) {
callback(source, error);
}
if (error) {
log('Error trashing files on the desktop: ' + error.message);
}
}
);
}
UndoRemote(callback=null) {
if (! this.fileOperationsManager.proxy) {
this._sendNoProxyError(callback);
return;
}
this.fileOperationsManager.proxy.UndoRemote(
this.platformData(),
(result, error) => {
if (callback) {
callback(result, error);
}
if (error) {
log('Error performing undo: ' + error.message);
}
}
);
}
RedoRemote(callback=null) {
if (! this.fileOperationsManager.proxy) {
this._sendNoProxyError(callback);
return;
}
this.fileOperationsManager.proxy.RedoRemote(
this.platformData(),
(result, error) => {
if (callback) {
callback(result, error);
}
if (error) {
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) {
log('Error moving files: ' + error.message);
}
}
);
}
CopyURIsRemote(fileList, uri, callback=null) {
if (! this.fileOperationsManager.proxy) {
this._sendNoProxyError(callback);
return;
}
this.fileOperationsManager.proxy.CopyURIsRemote(
fileList,
uri,
(result, error) => {
if (callback) {
callback(result, error);
}
if (error) {
log('Error copying files: ' + error.message);
}
}
);
}
RenameURIRemote(fileList, uri, callback=null) {
if (! this.fileOperationsManager.proxy) {
this._sendNoProxyError(callback);
return;
}
this.fileOperationsManager.proxy.RenameFileRemote(
fileList,
uri,
(result, error) => {
if (callback) {
callback(result, error);
}
if (error) {
log('Error renaming files: ' + error.message);
}
}
);
}
TrashURIsRemote(fileList, callback=null) {
if (! this.fileOperationsManager.proxy) {
this._sendNoProxyError(callback);
return;
}
this.fileOperationsManager.proxy.TrashFilesRemote(
fileList,
(result, error) => {
if (callback) {
callback(result, error);
}
if (error) {
log('Error moving files: ' + error.message);
}
}
);
}
DeleteURIsRemote(fileList, callback=null) {
if (! this.fileOperationsManager.proxy) {
this._sendNoProxyError(callback);
return;
}
this.fileOperationsManager.proxy.TrashFilesRemote(
fileList,
(source, error) => {
this.EmptyTrashRemote();
if (callback) {
callback(source, error);
}
if (error) {
log('Error deleting files on the desktop: ' + error.message);
}
}
);
}
EmptyTrashRemote(callback=null) {
if (! this.fileOperationsManager.proxy) {
this._sendNoProxyError(callback);
return;
}
this.fileOperationsManager.proxy.EmptyTrashRemote(
(source, error) => {
if (callback) {
callback(source, error);
}
if (error) {
log('Error trashing files on the desktop: ' + error.message);
}
}
);
}
UndoRemote(callback=null) {
if (! this.fileOperationsManager.proxy) {
this._sendNoProxyError(callback);
return;
}
this.fileOperationsManager.proxy.UndoRemote(
(result, error) => {
if (callback) {
callback(result, error);
}
if (error) {
log('Error performing undo: ' + error.message);
}
}
);
}
RedoRemote(callback=null) {
if (! this.fileOperationsManager.proxy) {
this._sendNoProxyError(callback);
return;
}
this.fileOperationsManager.proxy.RedoRemote(
(result, error) => {
if (callback) {
callback(result, error);
}
if (error) {
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',
false);
if (data) {
// NautilusFileOperations2
NautilusFileOperations2 = new ProxyManager(
dbusManagerObject,
'org.gnome.Nautilus',
'/org/gnome/Nautilus/FileOperations2',
'org.gnome.Nautilus.FileOperations2',
false,
'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',
false,
'Nautilus'
);
}
FreeDesktopFileManager = new ProxyManager(
dbusManagerObject,
'org.freedesktop.FileManager1',
'/org/freedesktop/FileManager1',
'org.freedesktop.FileManager1',
false,
'Nautilus'
);
GnomeNautilusPreview = new ProxyManager(
dbusManagerObject,
'org.gnome.NautilusPreviewer',
'/org/gnome/NautilusPreviewer',
'org.gnome.NautilusPreviewer',
false,
'Nautilus-Sushi'
);
GnomeArchiveManager = new ProxyManager(
dbusManagerObject,
'org.gnome.ArchiveManager1',
'/org/gnome/ArchiveManager1',
'org.gnome.ArchiveManager1',
false,
'File-roller'
);
GtkVfsMetadata = new ProxyManager(
dbusManagerObject,
'org.gtk.vfs.Metadata',
'/org/gtk/vfs/metadata',
'org.gtk.vfs.Metadata',
false,
'Gvfs daemon'
);
SwitcherooControl = new ProxyManager(
dbusManagerObject,
'net.hadess.SwitcherooControl',
'/net/hadess/SwitcherooControl',
'net.hadess.SwitcherooControl',
true,
'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);
}
}
desktop-icons-ng-43/desktopGrid.js 0000664 0000000 0000000 00000055547 14216573372 0017335 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 .
*/
const Gtk = imports.gi.Gtk;
const Gdk = imports.gi.Gdk;
const Gio = imports.gi.Gio;
const GLib = imports.gi.GLib;
const Prefs = imports.preferences;
const Enums = imports.enums;
const DesktopIconsUtil = imports.desktopIconsUtil;
const Signals = imports.signals;
const Gettext = imports.gettext.domain('ding');
const _ = Gettext.gettext;
var elementSpacing = 2;
var DesktopGrid = class {
constructor(desktopManager, desktopName, desktopDescription, asDesktop, premultiplied) {
this._destroying = false;
this._desktopManager = desktopManager;
this._desktopName = desktopName;
this._asDesktop = asDesktop;
this._premultiplied = premultiplied;
this._asDesktop = asDesktop;
this._desktopDescription = desktopDescription;
this._using_X11 = Gdk.Display.get_default().constructor.$gtype.name === 'GdkX11Display';
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._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 Transperancy 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 {
// Opaque black test window
this._windowContext.add_class("testwindow");
}
this._window.set_resizable(false);
this._window.connect('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.scale = this._window.get_scale_factor();
this.gridGlobalRectangle = new Gdk.Rectangle({
'x':this._x + this._marginLeft,
'y':this._y + this._marginTop,
'width':(this._width*this.scale) - this._marginLeft - this._marginRight,
'height':(this._height*this.scale) - this._marginTop - this._marginBottom
});
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.setDropDestination(this._eventBox);
this._selectedList = null;
this._container.connect('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._eventBox.connect('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._eventBox.connect('motion-notify-event', (actor, event) => {
let [a, x, y] = event.get_coords();
[x, y] = this._coordinatesLocalToGlobal(x, y);
this._desktopManager.onMotion(x, y);
});
this._eventBox.connect('button-release-event', (actor, event) => {
this._desktopManager.onReleaseButton(this);
});
this._window.connect('key-press-event', (actor, event) => {
this._desktopManager.onKeyPress(event, this);
});
}
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._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._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);
this.scale = this._window.get_scale_factor();
}
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.scale = this._window.get_scale_factor();
this.gridGlobalRectangle.x = this._x + this._marginLeft;
this.gridGlobalRectangle.y = this._y + this._marginTop;
this.gridGlobalRectangle.width = (this._width*this.scale) - this._marginLeft - this._marginRight;
this.gridGlobalRectangle.height = (this._height*this.scale) - this._marginTop - this._marginBottom;
}
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.receiveMotion(x, y);
});
this._eventBox.connect('drag-leave', (widget, context, time) => {
this.receiveLeave();
});
dropDestination.connect('drag-data-received', (widget, context, x, y, selection, info, time) => {
let forceCopy = DesktopIconsUtil.getModifiersInDnD(context, Gdk.ModifierType.CONTROL_MASK);
this.receiveDrop(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(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(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, clamp) {
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 = x + this._elementWidth/2;
y = y + this._elementHeight/2;
x += ox;
y += oy;
let r = this.getGridAt(x, y);
if ((r !== null) && ((!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._width * this._zoom / 2), 2) + Math.pow(x - (this._y + this._height * this._zoom / 2), 2);
}
_coordinatesGlobalToLocal(x, y) {
x = DesktopIconsUtil.clamp(Math.floor((x - this._x) / this._zoom), 0, this._width - 1);
y = DesktopIconsUtil.clamp(Math.floor((y - this._y) / this._zoom), 0, this._height - 1);
return [x, y];
}
_coordinatesLocalToGlobal(x, y) {
return [x * this._zoom + this._x, y * this._zoom + 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._zoom,
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 add_volumes_opposite = Prefs.desktopSettings.get_boolean('add-volumes-opposite');
let [column, row] = this._getEmptyPlaceClosestTo(x,
y,
coordinatesAction,
fileItem.isDrive && add_volumes_opposite);
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) + 0.5);
y = this._elementHeight * Math.floor((y / this._elementHeight) + 0.5);
[x, y] = this._coordinatesLocalToGlobal(x, y);
return [x, y];
} else {
return this.getGridLocalCoordinates(x, y);
}
} else {
return null;
}
}
_coordinatesBelongToThisGrid(x, y) {
return ((x >= this._x) && (x < (this._x + this._width * this._zoom)) && (y >= this._y) && (y < (this._y + this._height * this._zoom)));
}
_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 tmp_column = 0; tmp_column < this._maxColumns; tmp_column++) {
if (cornerInversion[0]) {
column = this._maxColumns - tmp_column - 1;
} else {
column = tmp_column;
}
for (let tmp_row = 0; tmp_row < this._maxRows; tmp_row++) {
if (cornerInversion[1]) {
row = this._maxRows - tmp_row - 1;
} else {
row = tmp_row;
}
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-43/desktopIconItem.js 0000664 0000000 0000000 00000072033 14216573372 0020144 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 .
*/
const GObject = imports.gi.GObject;
const Gtk = imports.gi.Gtk;
const Gdk = imports.gi.Gdk;
const Gio = imports.gi.Gio;
const GLib = imports.gi.GLib;
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 DBusUtils = imports.dbusUtils;
const ByteArray = imports.byteArray;
const Signals = imports.signals;
const Gettext = imports.gettext.domain('ding');
const _ = Gettext.gettext;
var desktopIconItem = class desktopIconItem {
constructor(desktopManager, fileExtra) {
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._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() {
/* Regular file data */
if (this._queryFileInfoCancellable) {
this._queryFileInfoCancellable.cancel();
}
/* Thumbnailing */
if (this._loadThumbnailDataCancellable) {
this._loadThumbnailDataCancellable.cancel();
}
/* Container */
if (this._containerId) {
this.container.disconnect(this._containerId);
this._containerId = 0;
}
}
_onDestroy() {
this._destroy();
this._destroyed = true;
}
/***********************
* Creators *
***********************/
_createIconActor() {
this.container = new Gtk.Box({orientation: Gtk.Orientation.VERTICAL, halign: Gtk.Align.CENTER});
this._containerId = this.container.connect('destroy', () => this._onDestroy());
this._eventBox = new Gtk.EventBox({visible: true, halign: Gtk.Align.CENTER});
this._sheildEventBox = new Gtk.EventBox({visible: true, halign: Gtk.Align.CENTER});
this._labelEventBox = new Gtk.EventBox({visible: true, halign: Gtk.Align.CENTER});
this._sheildLabelEventBox = 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._sheildEventBox.add(this._eventBox);
this._label = new Gtk.Label();
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');
}
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._sheildLabelEventBox.add(this._labelEventBox);
this.container.pack_start(this._sheildEventBox, false, false, 0);
this.container.pack_start(this._sheildLabelEventBox, false, false, 0);
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._sheildEventBox.connect('button-press-event', (actor, event) => {return true;});
this._sheildLabelEventBox.connect('button-press-event', (actor, event) => {return true;});
this._eventBox.connect('button-press-event', (actor, event) => this._onPressButton(actor, event));
this._eventBox.connect('enter-notify-event', (actor, event) => this._onEnter(this._eventBox));
this._eventBox.connect('leave-notify-event', (actor, event) => this._onLeave(this._eventBox));
this._eventBox.connect('button-release-event', (actor, event) => this._onReleaseButton(actor, event));
this._eventBox.connect('drag-motion', (widget, context, x, y, time) => {
this.highLightDropTarget(x, y);
});
this._eventBox.connect('drag-leave', () => {
this.unHighLightDropTarget();
});
this._eventBox.connect('size-allocate', () => this._calculateIconRectangle());
this._labelEventBox.connect('button-press-event', (actor, event) => this._onPressButton(actor, event));
this._labelEventBox.connect('enter-notify-event', (actor, event) => this._onEnter(this._labelEventBox));
this._labelEventBox.connect('leave-notify-event', (actor, event) => this._onLeave(this._labelEventBox));
this._labelEventBox.connect('button-release-event', (actor, event) => this._onReleaseButton(actor, event));
this._labelEventBox.connect('drag-motion', (widget, context, x, y, time) => {
this.highLightDropTarget(x, y);
});
this._labelEventBox.connect('drag-leave', () => {
this.unHighLightDropTarget();
});
this._labelEventBox.connect('size-allocate', () => {
this._doLabelSizeAllocated();
});
this.container.connect('drag-motion', (widget, context, x, y, time) => {
this.highLightDropTarget(x, y);
});
this.container.connect('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 = this._x1 + ((this.width - this.iconwidth)/2)*this._zoom;
let y = this._y1 + 2;
this.iconRectangle.x = x;
this.iconRectangle.y = y;
this.iconRectangle.width = this.iconwidth*this._zoom;
this.iconRectangle.height = this.iconheight*this._zoom;
}
_calculateLabelRectangle() {
this.labelwidth = this._labelContainer.get_allocated_width();
this.labelheight = this._labelContainer.get_allocated_height();
let x = this._x1 + ((this.width - this.labelwidth)/2)*this._zoom;
let y = this._y1 + 4 + (this.iconheight)*this._zoom;
this.labelRectangle.x = x;
this.labelRectangle.y = y;
this.labelRectangle.width = this.labelwidth*this._zoom;
this.labelRectangle.height = this.labelheight*this._zoom;
}
setCoordinates(x, y, width, height, margin, zoom, grid) {
this._x1 = x;
this._y1 = y;
this.width = width;
this.height = height;
this._zoom = zoom;
this._x2 = x + (width * zoom) - 1;
this._y2 = y + (height * zoom) - 1;
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() {
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;
}
}
highLightDropTarget(x, y) {
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._isSelected && this._styleContext.has_class('desktop-icons-selected')) {
this._styleContext.remove_class('desktop-icons-selected');
this._labelStyleContext.remove_class('desktop-icons-selected');
}
}
_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, 0);
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, 1);
targets.add(Gdk.atom_intern('text/uri-list', false), 0, 2);
}
widget.drag_source_set_target_list(targets);
widget.connect('drag-begin', (widget, 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);
});
widget.connect('drag-data-get', (widget, 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);
}
});
widget.connect('drag-end', (widget, 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) {
return;
}
/***********************
* Icon Rendering *
***********************/
updateIcon() {
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 icon_set = false;
if ((Prefs.nautilusSettings.get_string('show-image-thumbnails') != 'never') &&
(this._desktopManager.thumbnailLoader.canThumbnail(this))) {
let thumbnail = this._desktopManager.thumbnailLoader.getThumbnail(this, this._updateIcon.bind(this));
if (thumbnail != null) {
let thumbnailFile = Gio.File.new_for_path(thumbnail);
icon_set = await this._loadImageAsIcon(thumbnailFile);
if (this._destroyed) {
return;
}
}
}
if (!icon_set) {
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, etag_out] = 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 isSpecial() {
return this._isSpecial;
}
get dropCoordinates() {
return this._dropCoordinates;
}
set dropCoordinates(pos) {
this._dropCoordinates = pos;
}
}
Signals.addSignalMethods(desktopIconItem.prototype);
desktop-icons-ng-43/desktopIconsIntegration.js 0000664 0000000 0000000 00000014117 14216573372 0021713 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.
*
*******************************************************************************/
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-43/desktopIconsUtil.js 0000664 0000000 0000000 00000022322 14216573372 0020342 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 .
*/
const Gtk = imports.gi.Gtk;
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 _ = Gettext.gettext;
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)
}
function clamp(value, min, max) {
return Math.max(Math.min(value, max), min);
};
function spawnCommandLine(command_line, environ=null) {
try {
let [success, argv] = GLib.shell_parse_argv(command_line);
trySpawn(null, argv, environ);
} catch (err) {
print(`${command_line} failed with ${err}`);
}
}
function launchTerminal(workdir, command) {
let terminalSettings = new Gio.Settings({ schema_id: Enums.TERMINAL_SCHEMA });
let exec = terminalSettings.get_string(Enums.EXEC_KEY);
let argv = [exec, `--working-directory=${workdir}`];
if (command) {
argv.push('-e');
argv.push(command);
}
trySpawn(workdir, argv, null);
}
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: 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;
}
function distanceBetweenPoints(x, y, x2, y2) {
return (Math.pow(x - x2, 2) + Math.pow(y - y2, 2));
}
function getExtraFolders() {
let extraFolders = new Array();
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;
}
function getMounts(volumeMonitor) {
let show_volumes = Prefs.desktopSettings.get_boolean('show-volumes');
let show_network = 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 is_drive = (mount.get_drive() != null) || (mount.get_volume() != null);
let uri = mount.get_default_location().get_uri();
if (((is_drive && show_volumes) || (!is_drive && show_network)) && (!(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;
}
function getFileExtensionOffset(filename, isDirectory) {
let offset = filename.length;
if (!isDirectory) {
let doubleExtensions = ['.gz', '.bz2', '.sit', '.Z', '.bz', '.xz'];
for (let extension of doubleExtensions) {
if (filename.endsWith(extension)) {
offset -= extension.length;
filename = filename.substring(0, offset);
break;
}
}
let lastDot = filename.lastIndexOf('.');
if (lastDot > 0)
offset = lastDot;
}
return offset;
}
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;
}
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) {}
}
}
function windowHidePagerTaskbarModal(window, modal) {
let using_X11 = Gdk.Display.get_default().constructor.$gtype.name === 'GdkX11Display';
if (using_X11) {
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 = title + ' ';
} else {
title = 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();
}
}
function waitDelayMs(ms) {
return new Promise( (resolve, reject) => {
GLib.timeout_add(GLib.PRIORITY_DEFAULT, ms, () => {
resolve();
return false;
});
});
}
desktop-icons-ng-43/desktopManager.js 0000664 0000000 0000000 00000236634 14216573372 0020020 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 .
*/
const GLib = imports.gi.GLib;
const GObject = imports.gi.GObject;
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 DBusUtils = imports.dbusUtils;
const AskRenamePopup = imports.askRenamePopup;
const ShowErrorPopup = imports.showErrorPopup;
const TemplatesScriptsManager = imports.templatesScriptsManager;
const Thumbnails = imports.thumbnails;
const FileItemMenu = imports.fileItemMenu;
const Gettext = imports.gettext.domain('ding');
const _ = Gettext.gettext;
var DesktopManager = class {
constructor(mainApp, desktopList, codePath, asDesktop, primaryIndex) {
this.mainApp = mainApp;
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.templatesMonitor = new TemplatesScriptsManager.TemplatesScriptsManager(
DesktopIconsUtil.getTemplatesDir(),
TemplatesScriptsManager.TemplatesScriptsManagerFlags.HIDE_EXTENSIONS,
this._newDocument.bind(this));
this._primaryIndex = primaryIndex;
this._primaryScreen = desktopList[primaryIndex];
this._clickX = 0;
this._clickY = 0;
this._dragList = null;
this.dragItem = null;
this.thumbnailLoader = new Thumbnails.ThumbnailLoader(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);
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());
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);
this._configureSelectionColor();
this._createDesktopBackgroundMenu();
this._createGridWindows();
this._dbusAdvertiseUpdate();
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."),
null,
true);
}
this._pendingDropFiles = {};
if (this._asDesktop) {
this._sigtermID = GLib.unix_signal_add(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();
}
return false;
});
}
}
_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._fileList) {
if (fileItem.path == filepath) {
fileItem.updatedMetadata();
break;
}
}
}
}
_dbusAdvertiseUpdate() {
let updateGridWindows = new Gio.SimpleAction({
name: 'updateGridWindows',
parameter_type: new GLib.VariantType('av')
});
updateGridWindows.connect('activate', (action, parameter) => {
this.updateGridWindows(parameter.recursiveUnpack());
});
let actionGroup = new Gio.SimpleActionGroup();
actionGroup.add_action(updateGridWindows);
let busname = this.mainApp.get_dbus_object_path();
this._connection = Gio.DBus.session;
this._dbusConnectionGroupId = this._connection.export_action_group(
`${busname}/actions`,
actionGroup
);
this._extensionControl = Gio.DBusActionGroup.get(
Gio.DBus.session,
'com.rastersoft.dingextension',
'/com/rastersoft/dingextension/control'
);
}
updateGridWindows(newdesktoplist) {
if (newdesktoplist.length != this._desktopList.length) {
this._fileList.forEach(x => x.removeFromGrid());
this._desktopList = newdesktoplist;
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());
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);
}
}
_createGridWindows() {
for(let desktop of this._desktops) {
desktop.destroy();
}
this._desktops = [];
for(let desktopIndex in this._desktopList) {
let desktop = this._desktopList[desktopIndex];
if (this._asDesktop) {
var desktopName = `@!${desktop.x},${desktop.y};BDHF`;
} else {
var desktopName = `DING ${desktopIndex}`;
}
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);
}
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);
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(xDestination, yDestination, selection, info, forceLocal, forceCopy) {
this.onDragLeave();
let fileList = DesktopIconsUtil.getFilesFromNautilusDnD(selection, info);
if (forceLocal) {
info = 0;
}
switch(info) {
case 0:
if (fileList.length != 0) {
let [xOrigin, yOrigin, a, b, c] = this.dragItem.getCoordinates();
this.doMoveWithDragAndDrop(xOrigin, yOrigin, xDestination, yDestination);
}
break;
case 1:
case 2:
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 id_fs = data.get_attribute_string('id::filesystem');
if ((this.desktopFsId == id_fs) && (!forceCopy)) {
DBusUtils.RemoteFileOperations.MoveURIsRemote(fileList, "file://" + GLib.get_user_special_dir(GLib.UserDirectory.DIRECTORY_DESKTOP));
} else {
DBusUtils.RemoteFileOperations.CopyURIsRemote(fileList, "file://" + GLib.get_user_special_dir(GLib.UserDirectory.DIRECTORY_DESKTOP));
}
}
break;
case 3:
if (fileList.length != 0 ) {
let dropCoordinates = [ xDestination, yDestination ];
this.detectURLorText(fileList, dropCoordinates);
}
break;
}
}
detectURLorText(fileList, dropCoordinates) {
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 = 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 0:
atom = Gdk.atom_intern('x-special/ding-icon-list', false);
break;
case 1:
atom = Gdk.atom_intern('x-special/gnome-icon-list', false);
break;
case 2:
atom = Gdk.atom_intern('text/uri-list', false);
break;
default:
return null;
}
let data = "";
for (let fileItem of fileList) {
data += fileItem.uri;
if (info == 1) {
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) {
let templates = this.templatesMonitor.createMenu();
if (templates === null) {
this._newDocumentItem.hide();
} else {
this._newDocumentItem.set_submenu(templates);
this._newDocumentItem.show_all();
}
this._syncUndoRedo();
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;
/*
* 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)) {
clipboard.request_contents(atom2, (clip2, data) => {
let text = 'x-special/nautilus-clipboard\n' + ByteArray.toString(data.get_data()) + '\n';
this._setClipboardContent(text);
});
} else {
clipboard.request_text((clipboard, text) => {
if (text && !text.endsWith('\n')) {
text += '\n';
}
this._setClipboardContent(text);
});
}
this._menu.popup_at_pointer(event);
}
}
_setClipboardContent(text) {
let [valid, is_cut, files] = this._parseClipboardText(text);
if (valid) {
this._isCut = is_cut;
this._clipboardFiles = files;
}
this._pasteMenuItem.set_sensitive(valid);
}
_syncUndoRedo() {
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();
}
onKeyPress(event, grid) {
let symbol = event.get_keyval()[1];
let isCtrl = (event.get_state()[1] & Gdk.ModifierType.CONTROL_MASK) != 0;
let isShift = (event.get_state()[1] & Gdk.ModifierType.SHIFT_MASK) != 0;
let isAlt = (event.get_state()[1] & Gdk.ModifierType.MOD1_MASK) != 0;
let selection = this.getCurrentSelection(false);
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._doPaste();
return true;
} else if (isAlt && (symbol == Gdk.KEY_Return)) {
let selection = this.getCurrentSelection(true);
DBusUtils.RemoteFileOperations.ShowItemPropertiesRemote(selection, 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 (this.ignoreKeys.includes(symbol)) {
return;
}
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,
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());
}
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);
this._findFileTextArea.connect('activate', () => {
if (this._findFileButton.sensitive) {
this._findFileWindow.response(Gtk.ResponseType.OK);
}
});
this._findFileTextArea.connect('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._findFileWindow.connect('close', () => {
this._findFileWindow.response(Gtk.ResponseType.CANCEL);
})
this._findFileWindow.connect('response', (actor, retval) => {
if (retval == Gtk.ResponseType.CANCEL) {
this.unselectAll();
}
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", () => {
let 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") });
this._settingsMenuItem.connect("activate", () => Prefs.showPreferences());
this._menu.add(this._settingsMenuItem);
this._displaySettingsMenuItem = new Gtk.MenuItem({label: _("Display Settings")});
this._displaySettingsMenuItem.connect("activate", () => {
let 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) {
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(grid) {
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._desktopEnumerateCancellable.cancel();
this._desktopEnumerateCancellable = null;
}
return;
}
this._readingDesktopFiles = true;
let fileList;
while(true) {
this._desktopFilesChanged = false;
if (! this._desktopDir.query_exists(null)) {
fileList = [];
break;
}
fileList = await this._doReadAsync();
if (this._forcedExit) {
return;
}
if (!this._desktopFilesChanged && (fileList !== null)) {
break;
}
await DesktopIconsUtil.waitDelayMs(500);
}
this._readingDesktopFiles = 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) {
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);
return;
}
}
);
});
}
_drawDesktop(fileList) {
this._removeAllFilesFromGrids();
this._fileList = fileList;
this._placeAllFilesOnGrids();
}
_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) {
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) {
x = this._primaryScreen.x;
y = this._primaryScreen.y;
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() {
this._extensionControl.activate_action('doCopy', this._getClipboardText());
}
doCut() {
this._extensionControl.activate_action('doCut', this._getClipboardText());
}
doTrash() {
const selection = this._fileList.filter(i => i.isSelected && !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.isSpecial).map(i =>
i.file.get_uri());
if (!toDelete.length) {
if (this._fileList.some(i => i.isSelected && 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.isDirectory) {
return true;
}
}
return false;
}
getCurrentSelection(getUri) {
let listToTrash = [];
for(let fileItem of this._fileList) {
if (fileItem.isSelected) {
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) {
count++;
}
}
return count;
}
doRename(fileItem, allowReturnOnSameName) {
if (!fileItem.canRename) {
return;
}
this.unselectAll();
if (!this._renameWindow) {
this._renameWindow = new AskRenamePopup.AskRenamePopup(fileItem, allowReturnOnSameName, () => {
this._renameWindow = null;
this.newFolderDoRename = null;
});
}
}
doNewFolder(position) {
let X;
let Y;
if (position) {
[X, Y] = position;
} else {
[X, Y] = [this._clickX, this._clickY];
}
this.unselectAll();
let i = 0;
let baseName = _("New Folder");
let newName = baseName;
while ( 0 != this._fileList.filter(file => file.fileName == newName).length) {
i += 1;
newName = baseName + " " + i;
}
if (newName) {
let dir = DesktopIconsUtil.getDesktopDir().get_child(newName);
try {
dir.make_directory(null);
let info = new Gio.FileInfo();
info.set_attribute_string('metadata::nautilus-drop-position', `${X},${Y}`);
info.set_attribute_string('metadata::nautilus-icon-position', '');
dir.set_attributes_from_info(info, Gio.FileQueryInfoFlags.NONE, null);
this.newFolderDoRename = newName;
if (position) {
return dir.get_uri();
}
} catch(e) {
print(`Failed to create folder ${e.message}`);
}
}
}
_newDocument(template) {
let file = Gio.File.new_for_path(template);
if ((file == null) || (!file.query_exists(null))) {
return;
}
let counter = 0;
let fullName = file.get_basename();
let offset = DesktopIconsUtil.getFileExtensionOffset(fullName, false);
let name = fullName.substring(0, offset);
let extension = fullName.substring(offset);
let finalName = `${name}${extension}`;
let destination;
do {
if (counter != 0) {
finalName = `${name} ${counter}${extension}`
}
destination = Gio.File.new_for_path(GLib.build_filenamev([GLib.get_user_special_dir(GLib.UserDirectory.DIRECTORY_DESKTOP), finalName]));
counter++;
} while(destination.query_exists(null));
try {
file.copy(destination, Gio.FileCopyFlags.NONE, null, null);
let 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) {
print(`Failed to create template ${e.message}`);
}
}
_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();
}
}
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());
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;
}
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);
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:
function byTime(a, b) {
return ( a._modifiedTime - b._modifiedTime )
}
stackedFiles.sort(byTime);
determineStackTopSizeOrTime();
otherFiles.sort(byTime);
break;
case Enums.SortOrder.KIND:
break;
case Enums.SortOrder.SIZE:
function bySize(a, b) {
return ( a.fileSize - b.fileSize );
}
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) {
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) {
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() {
function byTime(a, b) {
return ( a._modifiedTime - b._modifiedTime )
}
this._fileList.sort(byTime);
this._reassignFilesToDesktop();
}
_sortAllFilesFromGridsBySize() {
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());
}
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-43/ding.js 0000775 0000000 0000000 00000013505 14216573372 0015766 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 .
*/
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;
let desktopVariants = [];
let remoteDingActions;
function parseCommandLine(argv) {
desktops = [];
for(let arg of argv) {
if (lastCommand == null) {
switch(arg) {
case '-E':
// run it as a true desktop (transparent window and so on)
asDesktop = true;
break;
case '-P':
case '-D':
case '-M':
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':
let data = arg.split(":");
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])
});
let datavariant = new GLib.Variant ('a{sd}', {
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])
});
desktopVariants.push(datavariant);
break;
case '-M':
primaryIndex = parseInt(arg);
break;
}
lastCommand = null;
}
if (desktops.length == 0) {
/* 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});
desktopVariants.push(new GLib.Variant ('a{sd}', {x:0, y:0, width: 1280, height: 720, zoom: 1, marginTop: 0, marginBottom: 0, marginLeft: 0, marginRight: 0, monitorIndex: 0}));
}
}
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;
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;
if (asDesktop) {
remoteDingActions = Gio.DBusActionGroup.get(
Gio.DBus.session,
'com.rastersoft.ding',
'/com/rastersoft/ding/actions'
);
} else {
remoteDingActions = Gio.DBusActionGroup.get(
Gio.DBus.session,
'com.rastersoft.dingtest',
'/com/rastersoft/dingtest/actions'
);
}
// 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});
dingApp.connect('startup', () => {
Prefs.init(codePath);
DBusUtils.init();
});
dingApp.connect('activate', () => {
if (!desktopManager) {
desktopManager = new DesktopManager.DesktopManager(dingApp,
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);
// If testing Dbus activations, comment the above and uncomment the following
//remoteDingActions.activate_action('updateGridWindows', new GLib.Variant('av', desktopVariants));
} else {
dingApp.activate();
}
commandLine.set_exit_status(0);
} else {
commandLine.set_exit_status(1);
}
});
dingApp.run(ARGV);
if (!errorFound) {
0;
} else {
1;
}
desktop-icons-ng-43/emulateX11WindowType.js 0000664 0000000 0000000 00000031103 14216573372 0021014 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 .
*/
const GLib = imports.gi.GLib;
const Shell = imports.gi.Shell;
const Meta = imports.gi.Meta;
const Main = imports.ui.main;
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, wayland_client, changedStatusCB) {
this._wayland_client = wayland_client;
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._parseTitle();
}
disconnect() {
for(let signalID of this._signalIDs) {
this._window.disconnect(signalID);
}
if (this._keepAtTop) {
this._window.unmake_above();
}
this._window = null;
this._wayland_client = null;
}
set_wayland_client(client) {
this._wayland_client = 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) {
global.log(`Exception ${e.message}.\n${e.stack}`);
}
try {
let extra_chars = title.substring(pos+2).trim().toUpperCase();
for (let char of extra_chars) {
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) {
global.log(`Exception ${e.message}.\n${e.stack}`);
}
}
if (this._wayland_client) {
if (this._hideFromWindowList) {
this._wayland_client.hide_from_window_list(this._window);
} else {
this._wayland_client.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;
}
}
var EmulateX11WindowType = class {
/*
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._wayland_client = null;
}
set_wayland_client(client) {
this._wayland_client = client;
for(let window of this._windowList) {
if (window.customJS_ding) {
window.customJS_ding.set_wayland_client(this._wayland_client);
}
}
}
enable() {
if (this._isX11) {
return;
}
this._idMap = global.window_manager.connect_after('map', (obj, windowActor) => {
let window = windowActor.get_meta_window();
if (this._wayland_client && this._wayland_client.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._wayland_client, () => {
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);
});
}
_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-43/enums.js 0000664 0000000 0000000 00000004753 14216573372 0016176 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 .
*/
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
};
/* 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 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_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 S_IXUSR = 0o00100;
var S_IWOTH = 0o00002;
desktop-icons-ng-43/export-zip.sh 0000775 0000000 0000000 00000003104 14216573372 0017156 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 --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
mv -f "${UUID}.zip" "${REPO_DIR}/"
cd "${REPO_DIR}" || exit
# Clean
rm -rf "${BUILD_DIR}" "${LOCAL_PREFIX}"
desktop-icons-ng-43/extension.js 0000664 0000000 0000000 00000050243 14216573372 0017056 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 .
*/
const GLib = imports.gi.GLib;
const Gio = imports.gi.Gio;
const Meta = imports.gi.Meta;
const St = imports.gi.St;
const Main = imports.ui.main;
const ExtensionUtils = imports.misc.extensionUtils;
const Config = imports.misc.config;
const ByteArray = imports.byteArray;
const Me = ExtensionUtils.getCurrentExtension();
const EmulateX11 = Me.imports.emulateX11WindowType;
const VisibleArea = Me.imports.visibleArea;
const GnomeShellOverride = Me.imports.gnomeShellOverride;
const Clipboard = St.Clipboard.get_default();
const CLIPBOARD_TYPE = St.ClipboardType.CLIPBOARD;
// This object will contain all the global variables
let data = {};
var DesktopIconsUsableArea = null;
function init() {
data.isEnabled = false;
data.launchDesktopId = 0;
data.currentProcess = null;
data.reloadTime = 100;
data.dbusTimeoutId = 0;
data.GnomeShellOverride = null;
data.GnomeShellVersion = parseInt(Config.PACKAGE_VERSION.split(".")[0]);
/* 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...
*/
data.x11Manager = null;
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).
*/
doKillAllOldDesktopProcesses();
}
/**
* Enables the extension
*/
function enable() {
if (!data.GnomeShellOverride) {
data.GnomeShellOverride = new GnomeShellOverride.GnomeShellOverride();
}
if (!data.x11Manager) {
data.x11Manager = new EmulateX11.EmulateX11WindowType();
}
if (!DesktopIconsUsableArea) {
DesktopIconsUsableArea = new VisibleArea.VisibleArea();
data.visibleArea = DesktopIconsUsableArea;
}
// If the desktop is still starting up, we wait until it is ready
if (Main.layoutManager._startingUp) {
data.startupPreparedId = Main.layoutManager.connect('startup-complete', () => { innerEnable(true); });
} else {
innerEnable(false);
}
}
/**
* The true code that configures everything and launches the desktop program
*/
function innerEnable(removeId) {
if (removeId) {
Main.layoutManager.disconnect(data.startupPreparedId);
data.startupPreparedId = null;
}
data.GnomeShellOverride.enable();
// under X11 we don't need to cheat, so only do all this under wayland
if (Meta.is_wayland_compositor()) {
data.x11Manager.enable();
}
/*
* 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.
*/
data.monitorsChangedId = Main.layoutManager.connect('monitors-changed', () => {
reloadIfSizesChanged();
});
/*
* Any change in the workareas must be detected too, for example if the used size
* changes.
*/
data.workareasChangedId = global.display.connect('workareas-changed', () => {
reloadIfSizesChanged();
});
/*
* This callback allows to detect a change in the working area (like when changing the Scale value)
*/
data.sizeChangedId = global.window_manager.connect('size-changed', () => {
reloadIfSizesChanged();
});
data.visibleAreaId = data.visibleArea.connect('updated-usable-area', () => {
reloadIfSizesChanged();
});
data.isEnabled = true;
if (data.launchDesktopId) {
GLib.source_remove(data.launchDesktopId);
}
launchDesktop();
data.remoteDingActions = Gio.DBusActionGroup.get(
Gio.DBus.session,
'com.rastersoft.ding',
'/com/rastersoft/ding/actions'
);
/*
* 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.
*/
data.dbusConnectionId = Gio.bus_own_name(Gio.BusType.SESSION, "com.rastersoft.dingextension", Gio.BusNameOwnerFlags.NONE, null, (connection, name) => {
data.dbusConnection = connection;
let doCopy = new Gio.SimpleAction({
name: 'doCopy',
parameter_type: new GLib.VariantType('as')
});
let doCut = new Gio.SimpleAction({
name: 'doCut',
parameter_type: new GLib.VariantType('as')
});
doCopy.connect('activate', manageCutCopy);
doCut.connect('activate', manageCutCopy);
let actionGroup = new Gio.SimpleActionGroup();
actionGroup.add_action(doCopy);
actionGroup.add_action(doCut);
this._dbusConnectionGroupId = data.dbusConnection.export_action_group(
'/com/rastersoft/dingextension/control',
actionGroup
);
}, 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 check the current Gnome Shell version and, based on that, we use the
* binary or the text clipboards.
*/
function manageCutCopy(action, parameters) {
let content = "";
if (data.GnomeShellVersion < 40) {
content = 'x-special/nautilus-clipboard\n';
}
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;
}
if (data.GnomeShellVersion < 40) {
Clipboard.set_text(CLIPBOARD_TYPE, content + "\n");
} else {
Clipboard.set_content(CLIPBOARD_TYPE, 'x-special/gnome-copied-files', ByteArray.toGBytes(ByteArray.fromString(content)));
}
}
/**
* Disables the extension
*/
function disable() {
DesktopIconsUsableArea = null;
data.isEnabled = false;
killCurrentProcess();
data.GnomeShellOverride.disable();
data.x11Manager.disable();
data.visibleArea.disable();
// disconnect signals only if connected
if (this._dbusConnectionGroupId) {
data.dbusConnection.unexport_action_group(this._dbusConnectionGroupId);
this._dbusConnectionGroupId = 0;
}
if (data.dbusConnectionId) {
Gio.bus_unown_name(data.dbusConnectionId);
data.dbusConnectionId = 0;
}
if (data.visibleAreaId) {
data.visibleArea.disconnect(data.visibleAreaId);
data.visibleAreaId = 0;
}
if (data.startupPreparedId) {
Main.layoutManager.disconnect(data.startupPreparedId);
data.startupPreparedId = 0;
}
if (data.monitorsChangedId) {
Main.layoutManager.disconnect(data.monitorsChangedId);
data.monitorsChangedId = 0;
}
if (data.workareasChangedId) {
global.display.disconnect(data.workareasChangedId);
data.workareasChangedId = 0;
}
if (data.sizeChangedId) {
global.window_manager.disconnect(data.sizeChangedId);
data.sizeChangedId = 0;
}
if (data.dbusTimeoutId) {
GLib.source_remove(data.dbusTimeoutId);
data.dbusTimeoutId = 0;
}
}
function reloadIfSizesChanged() {
if (data.dbusTimeoutId !== 0) {
return;
}
// limit the update signals to a maximum of one per second
data.dbusTimeoutId = GLib.timeout_add(GLib.PRIORITY_DEFAULT, 1000, () => {
let desktopList = [];
let ws = global.workspace_manager.get_workspace_by_index(0);
for(let monitorIndex = 0; monitorIndex < Main.layoutManager.monitors.length; monitorIndex++) {
let area = data.visibleArea.getMonitorGeometry(ws, monitorIndex);
let desktopListElement = new GLib.Variant('a{sd}', {
'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' : monitorIndex
});
desktopList.push(desktopListElement);
}
let desktopListVariant = new GLib.Variant('av', desktopList);
data.remoteDingActions.activate_action('updateGridWindows', desktopListVariant);
data.dbusTimeoutId = 0;
return false;
});
}
/**
* Kills the current desktop program
*/
function killCurrentProcess() {
// If a reload was pending, kill it and program a new reload
if (data.launchDesktopId) {
GLib.source_remove(data.launchDesktopId);
data.launchDesktopId = 0;
if (data.isEnabled) {
data.launchDesktopId = GLib.timeout_add(GLib.PRIORITY_DEFAULT, data.reloadTime, () => {
data.launchDesktopId = 0;
launchDesktop();
return false;
});
}
}
// kill the desktop program. It will be reloaded automatically.
if (data.currentProcess && data.currentProcess.subprocess) {
data.currentProcess.cancellable.cancel();
data.currentProcess.subprocess.send_signal(15);
}
}
/**
* 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.
*/
function 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([ExtensionUtils.getCurrentExtension().path, 'ding.js']);
if (contents.startsWith(path)) {
let proc = new Gio.Subprocess({argv: ['/bin/kill', filename]});
proc.init(null);
proc.wait(null);
}
}
}
/**
* 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.
*/
function launchDesktop() {
data.reloadTime = 100;
let argv = [];
argv.push(GLib.build_filenamev([ExtensionUtils.getCurrentExtension().path, '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(ExtensionUtils.getCurrentExtension().path);
let first = true;
argv.push('-M');
argv.push(`${Main.layoutManager.primaryIndex}`);
let ws = global.workspace_manager.get_workspace_by_index(0);
for(let monitorIndex = 0; monitorIndex < Main.layoutManager.monitors.length; monitorIndex++) {
let area = data.visibleArea.getMonitorGeometry(ws, monitorIndex);
// send the working area of each monitor in the desktop
argv.push('-D');
argv.push(`${area.x}:${area.y}:${area.width}:${area.height}:${area.scale}:${area.marginTop}:${area.marginBottom}:${area.marginLeft}:${area.marginRight}:${monitorIndex}`);
if (first || (area.x < data.minx)) {
data.minx = area.x;
}
if (first || (area.y < data.miny)) {
data.miny = area.y;
}
if (first || ((area.x + area.width) > data.maxx)) {
data.maxx = area.x + area.width;
}
if (first || ((area.y + area.height) > data.maxy)) {
data.maxy = area.y + area.height;
}
first = false;
}
data.currentProcess = new LaunchSubprocess(0, "DING", "-U");
data.currentProcess.set_cwd(GLib.get_home_dir());
data.currentProcess.spawnv(argv);
data.x11Manager.set_wayland_client(data.currentProcess);
/*
* 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.
*/
data.currentProcess.subprocess.wait_async(null, (obj, res) => {
let b = obj.wait_finish(res);
if (!data.currentProcess || obj !== data.currentProcess.subprocess) {
return;
}
if (obj.get_if_exited()) {
let retval = obj.get_exit_status();
if (retval != 0) {
data.reloadTime = 1000;
}
} else {
data.reloadTime = 1000;
}
data.currentProcess = null;
data.x11Manager.set_wayland_client(null);
if (data.isEnabled) {
if (data.launchDesktopId) {
GLib.source_remove(data.launchDesktopId);
}
data.launchDesktopId = GLib.timeout_add(GLib.PRIORITY_DEFAULT, data.reloadTime, () => {
data.launchDesktopId = 0;
launchDesktop();
return false;
});
}
});
}
/**
* 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
* @param {string} cmd_parameter A command line parameter to pass when running. It will be passed only under Wayland,
* so, if this parameter isn't passed, the app can assume that it is running under X11.
*/
var LaunchSubprocess = class {
constructor(flags, process_id, cmd_parameter) {
this._process_id = process_id;
this._cmd_parameter = cmd_parameter;
this._UUID = null;
this._flags = flags | Gio.SubprocessFlags.STDOUT_PIPE | Gio.SubprocessFlags.STDERR_MERGE;
this.cancellable = new Gio.Cancellable();
this._launcher = new Gio.SubprocessLauncher({flags: this._flags});
if (Meta.is_wayland_compositor()) {
this._waylandClient = Meta.WaylandClient.new(this._launcher);
if (Config.PACKAGE_VERSION == '3.38.0') {
// workaround for bug in 3.38.0
this._launcher.ref();
}
}
this.subprocess = null;
this.process_running = false;
}
spawnv(argv) {
if (Meta.is_wayland_compositor()) {
this.subprocess = this._waylandClient.spawnv(global.display, argv);
} else {
this.subprocess = this._launcher.spawnv(argv);
}
// 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 global.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;
});
this.process_running = true;
}
return this.subprocess;
}
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;
logError(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 {
return (this._waylandClient.owns_window(window));
} catch(e) {
return false;
}
}
show_in_window_list(window) {
if (Meta.is_wayland_compositor() && this.process_running) {
this._waylandClient.show_in_window_list(window);
}
}
hide_from_window_list(window) {
if (Meta.is_wayland_compositor() && this.process_running) {
this._waylandClient.hide_from_window_list(window);
}
}
}
desktop-icons-ng-43/fileItem.js 0000664 0000000 0000000 00000067121 14216573372 0016603 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 .
*/
const GObject = imports.gi.GObject;
const Gtk = imports.gi.Gtk;
const Gdk = imports.gi.Gdk;
const Gio = imports.gi.Gio;
const GLib = imports.gi.GLib;
const Pango = imports.gi.Pango;
const GdkPixbuf = imports.gi.GdkPixbuf;
const Cairo = imports.gi.cairo;
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 ByteArray = imports.byteArray;
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._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._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._monitorTrashId = this._monitorTrashDir.connect('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;
}
});
} else {
this._monitorTrashId = 0;
}
this._updateName();
if (this._dropCoordinates) {
this.setSelected();
}
}
/***********************
* Destroyers *
***********************/
_destroy() {
super._destroy();
/* Trash */
if (this._monitorTrashId) {
this._monitorTrashDir.disconnect(this._monitorTrashId);
this._monitorTrashDir.cancel();
this._monitorTrashId = 0;
}
if (this._queryTrashInfoCancellable) {
this._queryTrashInfoCancellable.cancel();
}
if (this._scheduleTrashRefreshId) {
GLib.source_remove(this._scheduleTrashRefreshId);
this._scheduleTrashRefreshId = 0;
}
/* Metadata */
if (this._setMetadataTrustedCancellable) {
this._setMetadataTrustedCancellable.cancel();
}
}
/***********************
* 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);
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)
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) {
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) {
print(`Error reading Desktop file ${this.uri}: ${e}`);
}
} 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;
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
}
_doOpenContext(context, fileList) {
if (! fileList ) {
fileList = [] ;
}
if (this._isBrokenSymlink) {
log(`Error: Can’t open ${this.file.get_uri()} because it is a broken symlink.`);
let title = _('Broken Link');
let error = _('Can not open this File because it is a Broken Symlink');
this._showerrorpopup(title, error);
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) {
log(`Error trying to launch Nemo: ${err.message}\n${err}`);
}
}
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) {
log('Error opening file ' + this.file.get_uri() + ': ' + e.message);
}
}
);
}
_showerrorpopup(title, error) {
new ShowErrorPopup.ShowErrorPopup(
title,
error,
this._grid._window,
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 = error + _('\nSet Permissions, in "Others Access", "Read Only" or "None"');
}
if (! this._attributeCanExecute) {
error = 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);
return;
}
}
_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);
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);
dropDestination.connect('drag-data-received', (widget, context, x, y, selection, info, time) => {
let forceCopy = DesktopIconsUtil.getModifiersInDnD(context, Gdk.ModifierType.CONTROL_MASK);
if ((info == 1) || (info == 2)) {
let fileList = DesktopIconsUtil.getFilesFromNautilusDnD(selection, info);
if (fileList.length != 0) {
if (this._hasToRouteDragToGrid()) {
this._grid.receiveDrop(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
return;
}
if ( this._isValidDesktopFile ) {
// open the desktopfile with these dropped files as the arguments
this.doOpen(fileList);
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 id_fs = data.get_attribute_string('id::filesystem');
if ((this._desktopManager.desktopFsId == id_fs) && (!forceCopy)) {
DBusUtils.RemoteFileOperations.MoveURIsRemote(fileList, this._file.get_uri());
} else {
DBusUtils.RemoteFileOperations.CopyURIsRemote(fileList, this._file.get_uri());
}
} else {
DBusUtils.RemoteFileOperations.TrashURIsRemote(fileList);
}
}
}
});
}
}
_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) {
log(`Failed to set execution flag: ${error.message}`);
}
});
}
this._updateName();
}
doDiscreteGpu() {
if (!DBusUtils.discreteGpuAvailable) {
log('Could not apply discrete GPU environment, switcheroo-control not available');
return;
}
let gpus = DBusUtils.SwitcherooControl.proxy.GPUs;
if (!gpus) {
log('Could not apply discrete GPU environment. No GPUs in list.');
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 env_s = env.get_strv();
let context = new Gio.AppLaunchContext;
for (let i = 0; i < env_s.length; i=i+2) {
context.setenv(env_s[i], env_s[i+1]);
}
this._doOpenContext(context, null);
return;
}
log('Could not find discrete GPU data in switcheroo-control');
}
_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)) {
log(`Failed to set metadata::trusted: ${error.message}`);
}
}
});
}
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-43/fileItemMenu.js 0000664 0000000 0000000 00000041026 14216573372 0017424 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 .
*/
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 Gettext = imports.gettext.domain('ding');
const _ = Gettext.gettext;
var FileItemMenu = class {
constructor(desktopManager) {
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._getExtractionSupportedTypes();
this._scriptsMonitor = new TemplatesScriptsManager.TemplatesScriptsManager(
DesktopIconsUtil.getScriptsDir(),
TemplatesScriptsManager.TemplatesScriptsManagerFlags.ONLY_EXECUTABLE,
this._onScriptClicked.bind(this));
}
_getExtractionSupportedTypes() {
this._decompressibleTypes = [];
if (DBusUtils.GnomeArchiveManager.isAvailable) {
DBusUtils.GnomeArchiveManager.proxy.GetSupportedTypesRemote('extract',
(result, error) => {
if (error) {
print(`Can't get the extractable types: ${error.message}. Ensure that File-Roller is installed.\n${error}.`);
return;
}
for (let key of result.values()) {
for (let type of key.values()) {
this._decompressibleTypes.push(Object.values(type)[0]);
}
}
}
);
}
}
_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);
}
showMenu(fileItem, event) {
let addElementToMenu = function(label, action = null) {
let element = new Gtk.MenuItem({label: label});
this._menu.add(element);
if (action) {
element.connect('activate', action);
}
return element;
}.bind(this);
let addSeparator = function() {
this._menu.add(new Gtk.SeparatorMenuItem());
}.bind(this);
let selectedItemsNum = this._desktopManager.getNumberOfSelectedItems();
this._menu = new Gtk.Menu();
const menuStyleContext = this._menu.get_style_context();
menuStyleContext.add_class("desktopmenu");
menuStyleContext.add_class("fileitemmenu");
this._menu.connect_after('selection-done', () => {
this._menu.destroy();
this._menu = null;
});
if (! fileItem.isStackMarker) {
addElementToMenu(
selectedItemsNum > 1 ? _("Open All...") : _("Open"),
this._doMultiOpen.bind(this)
);
}
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);
addElementToMenu(
(typeInList) ? _("Stack This Type") : _("Unstack This Type"),
() => {this._desktopManager.onToggleStackUnstackThisTypeClicked(fileItem.attributeContentType, typeInList, unstackList);}
);
}
}
// fileExtra == NONE
if (fileItem.isAllSelectable && ! fileItem.isStackMarker) {
let submenu = this._scriptsMonitor.createMenu();
if (submenu !== null) {
addElementToMenu(_("Scripts")).set_submenu(submenu);
addSeparator();
}
if (!fileItem.isDirectory) {
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) {
addElementToMenu(
_('Launch using Dedicated Graphics Card'),
() => {fileItem.doDiscreteGpu();}
);
}
}
addSeparator();
if (fileItem.attributeCanExecute && !fileItem.isDirectory && !fileItem.isValidDesktopFile && fileItem.execLine && Gio.content_type_can_be_executable(fileItem.attributeContentType)) {
addElementToMenu(_("Run as a program"), () => {
DesktopIconsUtil.spawnCommandLine(`"${fileItem.execLine}"`);
});
addSeparator();
}
let allowCutCopyTrash = this._desktopManager.checkIfSpecialFilesAreSelected();
addElementToMenu(
_('Cut'),
() => {this._desktopManager.doCut();}
).set_sensitive(!allowCutCopyTrash);
addElementToMenu(
_('Copy'),
() => {this._desktopManager.doCopy();}
).set_sensitive(!allowCutCopyTrash);
if (fileItem.canRename && (selectedItemsNum == 1)) {
addElementToMenu(
_('Rename…'),
() => {this._desktopManager.doRename(fileItem, false);}
);
}
addSeparator();
addElementToMenu(
_('Move to Trash'),
() => {this._desktopManager.doTrash();}
).set_sensitive(!allowCutCopyTrash);
if (Prefs.nautilusSettings.get_boolean('show-delete-permanently')) {
addElementToMenu(
_('Delete permanently'),
() => {this._desktopManager.doDeletePermanently();}
).set_sensitive(!allowCutCopyTrash);
}
if (fileItem.isValidDesktopFile && !this._desktopManager.writableByOthers && !fileItem.writableByOthers && (selectedItemsNum == 1 )) {
addSeparator();
addElementToMenu(
fileItem.trustedDesktopFile ? _("Don't Allow Launching") : _("Allow Launching"),
() => {fileItem.onAllowDisallowLaunchingClicked();}
);
}
}
// fileExtra == TRASH
if (fileItem.isTrash) {
addSeparator();
addElementToMenu(
_('Empty Trash'),
() => {this._desktopManager.doEmptyTrash();}
);
}
// fileExtra == EXTERNAL_DRIVE
if (fileItem.isDrive) {
addSeparator();
if (fileItem.canEject) {
addElementToMenu(
_('Eject'),
() => {fileItem.eject();}
);
}
if (fileItem.canUnmount) {
addElementToMenu(
_('Unmount'),
() => {fileItem.unmount();}
);
}
}
if (fileItem.isAllSelectable && (!this._desktopManager.checkIfSpecialFilesAreSelected()) && (selectedItemsNum >= 1 )) {
addSeparator();
if (selectedItemsNum == 1 && this._getExtractable()) {
addElementToMenu(
_("Extract Here"),
() => {this._extractFileFromSelection(true);}
);
addElementToMenu(
_("Extract To..."),
() => {this._extractFileFromSelection(false);}
);
}
if (!fileItem.isDirectory) {
addElementToMenu(
_('Send to...'),
this._mailFilesFromSelection.bind(this)
);
}
addElementToMenu(
Gettext.ngettext('Compress {0} file', 'Compress {0} files', selectedItemsNum).replace('{0}', selectedItemsNum),
this._doCompressFilesFromSelection.bind(this)
);
addElementToMenu(
Gettext.ngettext('New Folder with {0} item', 'New Folder with {0} items' , selectedItemsNum).replace('{0}', selectedItemsNum),
() => {this._doNewFolderFromSelection(fileItem.savedCoordinates, fileItem);}
);
addSeparator();
}
if (! fileItem.isStackMarker) {
addElementToMenu(
selectedItemsNum > 1 ? _('Common Properties') : _('Properties'),
this._onPropertiesClicked.bind(this)
);
addSeparator();
addElementToMenu(
selectedItemsNum > 1 ? _('Show All in Files') : _('Show in Files'),
this._onShowInFilesClicked.bind(this)
);
}
if (fileItem.isDirectory && (fileItem.path != null) && (selectedItemsNum == 1)) {
addElementToMenu(
_('Open in Terminal'),
() => {DesktopIconsUtil.launchTerminal(fileItem.path, null);}
);
}
this._menu.show_all();
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) {
log(`Error trying to launch Nemo: ${err.message}\n${err}`);
}
}
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];
let chooser = Gtk.AppChooserDialog.new_for_content_type(null,
Gtk.DialogFlags.MODAL + Gtk.DialogFlags.USE_HEADER_BAR,
mimetype);
chooser.show_all();
chooser.connect('close', () => {
chooser.response(Gtk.ResponseType.CANCEL);
});
chooser.connect('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();
});
}
}
_extractFileFromSelection(extractHere) {
let extractFileItem = '';
let folder = ''
for (let fileItem of this._desktopManager.getCurrentSelection(false)) {
extractFileItem = fileItem.file.get_uri();
fileItem.unsetSelected();
}
if (extractHere) {
folder = DesktopIconsUtil.getDesktopDir().get_uri();
DBusUtils.RemoteFileOperations.ExtractRemote(extractFileItem, folder, true);
} else {
let 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) {
folder = dialog.get_uri();
if (folder) {
DBusUtils.RemoteFileOperations.ExtractRemote(extractFileItem, folder, true);
}
}
dialog.destroy();
});
}
}
_getExtractable() {
for (let item of this._desktopManager.getCurrentSelection(false)) {
return this._decompressibleTypes.includes(item._attributeContentType);
}
}
_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."),
null,
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 compressFileItems = this._desktopManager.getCurrentSelection(true);
this._desktopManager.unselectAll();
let desktopFolder = DesktopIconsUtil.getDesktopDir().get_uri();
if (desktopFolder) {
DBusUtils.RemoteFileOperations.CompressRemote(compressFileItems, desktopFolder, true);
}
}
_doNewFolderFromSelection(position, clickedItem) {
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-43/gnomeShellOverride.js 0000664 0000000 0000000 00000011541 14216573372 0020635 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 .
*/
const Shell = imports.gi.Shell;
const Meta = imports.gi.Meta;
const Main = imports.ui.main;
var WorkspaceAnimation = null;
try {
WorkspaceAnimation = imports.ui.workspaceAnimation;
} catch(err) {
log ("Workspace Animation does not exist");
}
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
*/
var GnomeShellOverride = class {
constructor () {
this._isX11 = !Meta.is_wayland_compositor();
}
enable() {
if (this._isX11) { // ** X11 Methods only
if (WorkspaceAnimation &&
WorkspaceAnimation.WorkspaceGroup !== undefined) {
this.replaceMethod(WorkspaceAnimation.WorkspaceGroup, '_shouldShowWindow', new_shouldShowWindow);
}
} 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 (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
*/
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() {
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
*/
function new_shouldShowWindow(window) {
if (window.get_window_type() === Meta.WindowType.DESKTOP) {
return false;
}
return replaceData.old__shouldShowWindow[0].apply(this, [window,]);
}
desktop-icons-ng-43/kill.py 0000775 0000000 0000000 00000000451 14216573372 0016010 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-43/local_install.sh 0000775 0000000 0000000 00000000371 14216573372 0017660 0 ustar 00root root 0000000 0000000 #!/bin/bash
rm -rf ~/.local/share/gnome-shell/extensions/ding@rastersoft.com/*
rm -rf .build
mkdir .build
meson --prefix=$HOME/.local/ --localedir=share/gnome-shell/extensions/ding@rastersoft.com/locale .build
ninja -C .build install
rm -rf .build
desktop-icons-ng-43/meson.build 0000664 0000000 0000000 00000002042 14216573372 0016640 0 ustar 00root root 0000000 0000000 project('ding',
version: '43.0',
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([
'askRenamePopup.js',
'createThumbnail.js',
'dbusInterfaces.js',
'dbusUtils.js',
'desktopGrid.js',
'desktopIconItem.js',
'desktopIconsUtil.js',
'desktopManager.js',
'ding.js',
'emulateX11WindowType.js',
'enums.js',
'extension.js',
'fileItem.js',
'fileItemMenu.js',
'gnomeShellOverride.js',
'metadata.json',
'prefs.js',
'preferences.js',
'prefswindow.js',
'stackItem.js',
'showErrorPopup.js',
'stylesheet.css',
'templatesScriptsManager.js',
'thumbnails.js',
'visibleArea.js'
],
install_dir: extensions_dir
)
subdir(
'po'
)
subdir(
'schemas'
)
meson.add_install_script('meson_post_install.py')
desktop-icons-ng-43/meson_post_install.py 0000664 0000000 0000000 00000000554 14216573372 0020772 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])
desktop-icons-ng-43/metadata.json 0000664 0000000 0000000 00000000526 14216573372 0017156 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": [
"3.38",
"40",
"41",
"42"
],
"uuid": "ding@rastersoft.com",
"url": "https://gitlab.com/rastersoft/desktop-icons-ng"
}
desktop-icons-ng-43/po/ 0000775 0000000 0000000 00000000000 14216573372 0015116 5 ustar 00root root 0000000 0000000 desktop-icons-ng-43/po/LINGUAS 0000664 0000000 0000000 00000000136 14216573372 0016143 0 ustar 00root root 0000000 0000000 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-43/po/POTFILES.in 0000664 0000000 0000000 00000000612 14216573372 0016672 0 ustar 00root root 0000000 0000000 askRenamePopup.js
createThumbnail.js
dbusUtils.js
desktopGrid.js
desktopIconItem.js
desktopIconsIntegration.js
desktopIconsUtil.js
desktopManager.js
ding.js
emulateX11WindowType.js
enums.js
extension.js
fileItem.js
fileItemMenu.js
preferences.js
prefs.js
showErrorPopup.js
stackItem.js
templatesScriptsManager.js
thumbnails.js
visibleArea.js
schemas/org.gnome.shell.extensions.ding.gschema.xml
desktop-icons-ng-43/po/be.po 0000664 0000000 0000000 00000041724 14216573372 0016054 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.
#
msgid ""
msgstr ""
"Project-Id-Version: ding\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-03-23 11:12+0100\n"
"PO-Revision-Date: 2021-06-20 22:02+0300\n"
"Last-Translator: \n"
"Language-Team: \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-Generator: Poedit 3.0\n"
#: askRenamePopup.js:42
msgid "Folder name"
msgstr "Імя папкі"
#: askRenamePopup.js:42
msgid "File name"
msgstr "Імя файла"
#: askRenamePopup.js:49 desktopManager.js:798
msgid "OK"
msgstr ""
#: askRenamePopup.js:49
msgid "Rename"
msgstr "Перайменаваць"
#: dbusUtils.js:65
msgid "\"${programName}\" is needed for Desktop Icons"
msgstr ""
#: dbusUtils.js:66
msgid ""
"For this functionality to work in Desktop Icons, you must install "
"\"${programName}\" in your system."
msgstr ""
#: desktopIconsUtil.js:96
msgid "Command not found"
msgstr "Каманда не знойдзена"
#: desktopManager.js:215
msgid "Nautilus File Manager not found"
msgstr "Файлавы менеджар Nautilus не знойдзены"
#: desktopManager.js:216
msgid "The Nautilus File Manager is mandatory to work with Desktop Icons NG."
msgstr ""
"Файлавы менеджар Nautilus з'яўляецца неабходным для працы Desktop Icons NG."
#: desktopManager.js:761
msgid "Clear Current Selection before New Search"
msgstr ""
#: desktopManager.js:800 fileItemMenu.js:369
msgid "Cancel"
msgstr "Скасаваць"
#: desktopManager.js:802
msgid "Find Files on Desktop"
msgstr ""
#: desktopManager.js:867 desktopManager.js:1490
msgid "New Folder"
msgstr "Новая папка"
#: desktopManager.js:871
msgid "New Document"
msgstr "Новы дакумент"
#: desktopManager.js:876
msgid "Paste"
msgstr "Уставіць"
#: desktopManager.js:880
msgid "Undo"
msgstr "Адрабіць"
#: desktopManager.js:884
msgid "Redo"
msgstr "Паўтарыць"
#: desktopManager.js:890
#, fuzzy
msgid "Select All"
msgstr "Вылучыць усё"
#: desktopManager.js:898
msgid "Show Desktop in Files"
msgstr "Паказаць Стол у файлавым менеджары"
#: desktopManager.js:902 fileItemMenu.js:287
msgid "Open in Terminal"
msgstr "Адкрыць у Тэрмінале"
#: desktopManager.js:908
msgid "Change Background…"
msgstr "Змяніць фон..."
#: desktopManager.js:919
#, fuzzy
msgid "Desktop Icons Settings"
msgstr "Настройкі значкоў Стала"
#: desktopManager.js:923
msgid "Display Settings"
msgstr "Настройкі дісплэя"
#: desktopManager.js:1548
msgid "Arrange Icons"
msgstr ""
#: desktopManager.js:1552
msgid "Arrange By..."
msgstr ""
#: desktopManager.js:1561
msgid "Keep Arranged..."
msgstr ""
#: desktopManager.js:1565
msgid "Keep Stacked by type..."
msgstr ""
#: desktopManager.js:1570
msgid "Sort Home/Drives/Trash..."
msgstr ""
#: desktopManager.js:1576
msgid "Sort by Name"
msgstr ""
#: desktopManager.js:1578
msgid "Sort by Name Descending"
msgstr ""
#: desktopManager.js:1581
msgid "Sort by Modified Time"
msgstr ""
#: desktopManager.js:1584
msgid "Sort by Type"
msgstr ""
#: desktopManager.js:1587
msgid "Sort by Size"
msgstr ""
#. TRANSLATORS: "Home" is the text that will be shown in the user's personal folder
#: fileItem.js:156
msgid "Home"
msgstr "Хатоўка"
#: fileItem.js:275
msgid "Broken Link"
msgstr ""
#: fileItem.js:276
msgid "Can not open this File because it is a Broken Symlink"
msgstr ""
#: fileItem.js:326
#, fuzzy
msgid "Broken Desktop File"
msgstr "Паказаць Стол у файлавым менеджары"
#: fileItem.js:327
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 ""
#: fileItem.js:333
msgid "Invalid Permissions on Desktop File"
msgstr ""
#: fileItem.js:334
msgid ""
"This .desktop File has incorrect Permissions. Right Click to edit "
"Properties, then:\n"
msgstr ""
#: fileItem.js:336
msgid ""
"\n"
"Set Permissions, in \"Others Access\", \"Read Only\" or \"None\""
msgstr ""
#: fileItem.js:339
msgid ""
"\n"
"Enable option, \"Allow Executing File as a Program\""
msgstr ""
#: fileItem.js:347
msgid ""
"This .desktop file is not trusted, it can not be launched. To enable "
"launching, right-click, then:\n"
"\n"
"Enable \"Allow Launching\""
msgstr ""
#: fileItemMenu.js:118
msgid "Open All..."
msgstr "Адкрыць усё..."
#: fileItemMenu.js:118
msgid "Open"
msgstr "Адкрыць"
#: fileItemMenu.js:129
msgid "Stack This Type"
msgstr ""
#: fileItemMenu.js:129
msgid "Unstack This Type"
msgstr ""
#: fileItemMenu.js:141
msgid "Scripts"
msgstr "Скрыпты"
#: fileItemMenu.js:147
msgid "Open All With Other Application..."
msgstr "Адурыць усё ў іншай праграме..."
#: fileItemMenu.js:147
msgid "Open With Other Application"
msgstr "Адурыць у іншай праграме"
#: fileItemMenu.js:153
msgid "Launch using Dedicated Graphics Card"
msgstr "Запусціць з дапамогай дыскрэтнай відэакарты"
#: fileItemMenu.js:162
msgid "Run as a program"
msgstr ""
#: fileItemMenu.js:170
msgid "Cut"
msgstr "Выразаць"
#: fileItemMenu.js:175
msgid "Copy"
msgstr "Капіяваць"
#: fileItemMenu.js:181
msgid "Rename…"
msgstr "Перайменаваць..."
#: fileItemMenu.js:189
msgid "Move to Trash"
msgstr "Выкінуць у сметніцу"
#: fileItemMenu.js:195
msgid "Delete permanently"
msgstr "Выдаліць назаўжды"
#: fileItemMenu.js:203
msgid "Don't Allow Launching"
msgstr "Не дазваляць выкананне"
#: fileItemMenu.js:203
msgid "Allow Launching"
msgstr "Дазволіць выкананне"
#: fileItemMenu.js:214
msgid "Empty Trash"
msgstr "Сметніца пустая"
#: fileItemMenu.js:225
#, fuzzy
msgid "Eject"
msgstr "Выняць"
#: fileItemMenu.js:231
msgid "Unmount"
msgstr "Адмантаваць"
#: fileItemMenu.js:241
msgid "Extract Here"
msgstr "Выняць сюды"
#: fileItemMenu.js:245
msgid "Extract To..."
msgstr "Выняць у..."
#: fileItemMenu.js:252
msgid "Send to..."
msgstr "Дасладь да..."
#: fileItemMenu.js:258
msgid "Compress {0} file"
msgid_plural "Compress {0} files"
msgstr[0] "Сціснуць {0} файл"
msgstr[1] "Сціснуць {0} файлы"
msgstr[2] "Сціснуць {0} файлаў"
#: fileItemMenu.js:264
msgid "New Folder with {0} item"
msgid_plural "New Folder with {0} items"
msgstr[0] "Новая папка з {0} элементам"
msgstr[1] "Новая папка з {0} элементамі"
msgstr[2] "Новая папка з {0} элементамі"
#: fileItemMenu.js:273
msgid "Common Properties"
msgstr "Агульныя ўласцівасці"
#: fileItemMenu.js:273
msgid "Properties"
msgstr "Уласцівасці"
#: fileItemMenu.js:280
msgid "Show All in Files"
msgstr "Паказаць усё ў файлавым менеджары"
#: fileItemMenu.js:280
msgid "Show in Files"
msgstr "Паказаць у файлавым менеджары"
#: fileItemMenu.js:365
msgid "Select Extract Destination"
msgstr "Абраць куды выняць змесціва"
#: fileItemMenu.js:370
msgid "Select"
msgstr "Вылучыць"
#: fileItemMenu.js:396
msgid "Can not email a Directory"
msgstr "Немагчыма даслаць папку"
#: fileItemMenu.js:397
msgid "Selection includes a Directory, compress the directory to a file first."
msgstr "Сярод вылучанага ёсць папка, спачатку сцісніце папку ў файл."
#: preferences.js:67
msgid "Settings"
msgstr "Настройкі"
#: showErrorPopup.js:40
msgid "Close"
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:45
msgid "Show external drives in the desktop"
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:50
msgid "Show network drives in the desktop"
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:55
msgid "Add new drives to the opposite side of the screen"
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 ""
"Падчас аперацыі 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:90
msgid "Use Nemo to open folders"
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 ""
#~ msgid "Size for the desktop icons"
#~ msgstr "Памер значкоў працоўнага стала"
#~ msgid "Tiny"
#~ msgstr "Маленькі"
#~ msgid "Small"
#~ msgstr "Малы"
#~ msgid "Standard"
#~ msgstr "Стандартны"
#~ msgid "Large"
#~ msgstr "Вялікі"
#~ msgid "Show the personal folder in the desktop"
#~ msgstr "Паказваць асабістую папку на працоўным стале"
#~ msgid "Show the trash icon in the desktop"
#~ msgstr "Паказваць значок сметніцы на працоўным стале"
#~ msgid "New icons alignment"
#~ msgstr "Новае выраўноўванне значкоў"
#~ msgid "Top-left corner"
#~ msgstr "Верхні левы вугал"
#~ msgid "Top-right corner"
#~ msgstr "Верхні правы вугал"
#~ msgid "Bottom-left corner"
#~ msgstr "Ніжні левы вугал"
#~ msgid "Bottom-right corner"
#~ msgstr "Ніжні правы вугал"
#~ msgid "Highlight the drop place during Drag'n'Drop"
#~ msgstr "Падсвечваць месца перамяшчэння файла падчас Drag'n'Drop"
#~ msgid "Settings shared with Nautilus"
#~ msgstr "Настройкі звязаныя з Nautilus"
#~ msgid "Click type for open files"
#~ msgstr "Від кліку для адкрыцця файлаў"
#~ msgid "Single click"
#~ msgstr "Адзіночны клік"
#~ msgid "Double click"
#~ msgstr "Двайны клік"
#~ msgid "Show hidden files"
#~ msgstr "Паказваць схаваныя файлы"
#~ msgid "Show a context menu item to delete permanently"
#~ msgstr "Паказваць пункт \"выдаліць назаўжды\" у кантэкстным меню"
#~ msgid "Action to do when launching a program from the desktop"
#~ msgstr "Дзеянне пры запуску праграмы з працоўнага стала"
#~ msgid "Display the content of the file"
#~ msgstr "Паказаць змесціва файла"
#~ msgid "Launch the file"
#~ msgstr "Запусціць файл"
#~ msgid "Ask what to do"
#~ msgstr "Спытаць што зрабіць"
#~ msgid "Show image thumbnails"
#~ msgstr "Паказваць мініяцюры"
#~ msgid "Never"
#~ msgstr "Ніколі"
#~ msgid "Local files only"
#~ msgstr "Толькі для лакальных файлаў"
#~ msgid "Always"
#~ 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 "Delete"
#~ msgstr "Выдаліць"
#~ msgid "Error while deleting files"
#~ 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-43/po/ca.po 0000664 0000000 0000000 00000035363 14216573372 0016053 0 ustar 00root root 0000000 0000000 # This file is distributed under the same license as the PACKAGE package.
# Jordi Mas i Hernandez , 2019-2021
#
msgid ""
msgstr ""
"Project-Id-Version: 1.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-03-23 11:12+0100\n"
"PO-Revision-Date: 2019-07-22 10:24+0200\n"
"Last-Translator: Jordi Mas \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"
#: askRenamePopup.js:42
msgid "Folder name"
msgstr "Nom de la carpeta"
#: askRenamePopup.js:42
msgid "File name"
msgstr "Nom del fitxer"
#: askRenamePopup.js:49 desktopManager.js:798
msgid "OK"
msgstr "D'acord"
#: askRenamePopup.js:49
msgid "Rename"
msgstr "Canvia el nom"
#: dbusUtils.js:65
msgid "\"${programName}\" is needed for Desktop Icons"
msgstr ""
#: dbusUtils.js:66
msgid ""
"For this functionality to work in Desktop Icons, you must install "
"\"${programName}\" in your system."
msgstr ""
#: desktopIconsUtil.js:96
msgid "Command not found"
msgstr "No s'ha trobat l'ordre"
#: desktopManager.js:215
msgid "Nautilus File Manager not found"
msgstr "No s'ha trobat el gestor de fitxers del Nautilus"
#: desktopManager.js:216
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."
#: desktopManager.js:761
msgid "Clear Current Selection before New Search"
msgstr ""
#: desktopManager.js:800 fileItemMenu.js:369
msgid "Cancel"
msgstr "Cancel·la"
#: desktopManager.js:802
msgid "Find Files on Desktop"
msgstr ""
#: desktopManager.js:867 desktopManager.js:1490
msgid "New Folder"
msgstr "Carpeta nova"
#: desktopManager.js:871
msgid "New Document"
msgstr "Document nou"
#: desktopManager.js:876
msgid "Paste"
msgstr "Enganxa"
#: desktopManager.js:880
msgid "Undo"
msgstr "Desfés"
#: desktopManager.js:884
msgid "Redo"
msgstr "Refés"
#: desktopManager.js:890
#, fuzzy
msgid "Select All"
msgstr "Selecciona-ho tot"
#: desktopManager.js:898
msgid "Show Desktop in Files"
msgstr "Mostra l'escriptori al Fitxers"
#: desktopManager.js:902 fileItemMenu.js:287
msgid "Open in Terminal"
msgstr "Obre al Terminal"
#: desktopManager.js:908
msgid "Change Background…"
msgstr "Canvia el fons de l'escriptori…"
#: desktopManager.js:919
#, fuzzy
msgid "Desktop Icons Settings"
msgstr "Paràmetres de les icones de l'escriptori"
#: desktopManager.js:923
msgid "Display Settings"
msgstr "Paràmetres de la pantalla"
#: desktopManager.js:1548
msgid "Arrange Icons"
msgstr ""
#: desktopManager.js:1552
msgid "Arrange By..."
msgstr ""
#: desktopManager.js:1561
msgid "Keep Arranged..."
msgstr ""
#: desktopManager.js:1565
msgid "Keep Stacked by type..."
msgstr ""
#: desktopManager.js:1570
msgid "Sort Home/Drives/Trash..."
msgstr ""
#: desktopManager.js:1576
msgid "Sort by Name"
msgstr ""
#: desktopManager.js:1578
msgid "Sort by Name Descending"
msgstr ""
#: desktopManager.js:1581
msgid "Sort by Modified Time"
msgstr ""
#: desktopManager.js:1584
msgid "Sort by Type"
msgstr ""
#: desktopManager.js:1587
msgid "Sort by Size"
msgstr ""
#. TRANSLATORS: "Home" is the text that will be shown in the user's personal folder
#: fileItem.js:156
msgid "Home"
msgstr "Inici"
#: fileItem.js:275
msgid "Broken Link"
msgstr ""
#: fileItem.js:276
msgid "Can not open this File because it is a Broken Symlink"
msgstr ""
#: fileItem.js:326
#, fuzzy
msgid "Broken Desktop File"
msgstr "Mostra l'escriptori al Fitxers"
#: fileItem.js:327
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 ""
#: fileItem.js:333
msgid "Invalid Permissions on Desktop File"
msgstr ""
#: fileItem.js:334
msgid ""
"This .desktop File has incorrect Permissions. Right Click to edit "
"Properties, then:\n"
msgstr ""
#: fileItem.js:336
msgid ""
"\n"
"Set Permissions, in \"Others Access\", \"Read Only\" or \"None\""
msgstr ""
#: fileItem.js:339
msgid ""
"\n"
"Enable option, \"Allow Executing File as a Program\""
msgstr ""
#: fileItem.js:347
msgid ""
"This .desktop file is not trusted, it can not be launched. To enable "
"launching, right-click, then:\n"
"\n"
"Enable \"Allow Launching\""
msgstr ""
#: fileItemMenu.js:118
msgid "Open All..."
msgstr "Obre-ho tot..."
#: fileItemMenu.js:118
msgid "Open"
msgstr "Obre"
#: fileItemMenu.js:129
msgid "Stack This Type"
msgstr ""
#: fileItemMenu.js:129
msgid "Unstack This Type"
msgstr ""
#: fileItemMenu.js:141
msgid "Scripts"
msgstr "Scripts"
#: fileItemMenu.js:147
msgid "Open All With Other Application..."
msgstr "Obre amb una altra aplicació..."
#: fileItemMenu.js:147
msgid "Open With Other Application"
msgstr "Obre amb una altra aplicació..."
#: fileItemMenu.js:153
msgid "Launch using Dedicated Graphics Card"
msgstr "Llança usant targeta gràfica dedicada"
#: fileItemMenu.js:162
msgid "Run as a program"
msgstr ""
#: fileItemMenu.js:170
msgid "Cut"
msgstr "Retalla"
#: fileItemMenu.js:175
msgid "Copy"
msgstr "Copia"
#: fileItemMenu.js:181
msgid "Rename…"
msgstr "Canvia el nom…"
#: fileItemMenu.js:189
msgid "Move to Trash"
msgstr "Mou a la paperera"
#: fileItemMenu.js:195
msgid "Delete permanently"
msgstr "Suprimeix permanentment"
#: fileItemMenu.js:203
msgid "Don't Allow Launching"
msgstr "No permetis que s'iniciï"
#: fileItemMenu.js:203
msgid "Allow Launching"
msgstr "Permet que s'iniciï"
#: fileItemMenu.js:214
msgid "Empty Trash"
msgstr "Buida la paperera"
#: fileItemMenu.js:225
msgid "Eject"
msgstr "Expulsa"
#: fileItemMenu.js:231
msgid "Unmount"
msgstr "Desmunta"
#: fileItemMenu.js:241
msgid "Extract Here"
msgstr "Extreu aquí"
#: fileItemMenu.js:245
msgid "Extract To..."
msgstr "Extreu a..."
#: fileItemMenu.js:252
msgid "Send to..."
msgstr "Envia a..."
#: fileItemMenu.js:258
msgid "Compress {0} file"
msgid_plural "Compress {0} files"
msgstr[0] "Comprimeix {0} fitxer"
msgstr[1] "Comprimeix {0} fitxers"
#: fileItemMenu.js:264
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"
#: fileItemMenu.js:273
msgid "Common Properties"
msgstr "Propietats comunes"
#: fileItemMenu.js:273
msgid "Properties"
msgstr "Propietats"
#: fileItemMenu.js:280
msgid "Show All in Files"
msgstr "Mostra al Fitxers"
#: fileItemMenu.js:280
msgid "Show in Files"
msgstr "Mostra al Fitxers"
#: fileItemMenu.js:365
msgid "Select Extract Destination"
msgstr ""
#: fileItemMenu.js:370
#, fuzzy
msgid "Select"
msgstr "Selecciona-ho tot"
#: fileItemMenu.js:396
msgid "Can not email a Directory"
msgstr "No es pot enviar un directori per correu electrònic"
#: fileItemMenu.js:397
msgid "Selection includes a Directory, compress the directory to a file first."
msgstr ""
"La selecció inclou un directori, comprimeix-hi el directori en un fitxer."
#: preferences.js:67
msgid "Settings"
msgstr "Paràmetres"
#: showErrorPopup.js:40
msgid "Close"
msgstr ""
#: 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:45
msgid "Show external drives in the desktop"
msgstr "Mostra les unitats externes a l'escriptori"
#: 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:50
msgid "Show network drives in the desktop"
msgstr "Mostra les unitats de xarxa a l'escriptori"
#: 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:55
msgid "Add new drives to the opposite side of the screen"
msgstr "Afegeix noves unitats al costat oposat de la pantalla"
#: 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 ""
#: 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:90
msgid "Use Nemo to open folders"
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 ""
#~ msgid "Size for the desktop icons"
#~ msgstr "Mida de les icones d'escriptori"
#~ msgid "Tiny"
#~ msgstr "Diminuta"
#~ msgid "Small"
#~ msgstr "Petita"
#~ msgid "Standard"
#~ msgstr "Estàndard"
#~ msgid "Large"
#~ msgstr "Gran"
#~ msgid "Show the personal folder in the desktop"
#~ msgstr "Mostra la carpeta personal a l'escriptori"
#~ msgid "Show the trash icon in the desktop"
#~ msgstr "Mostra la icona de la paperera a l'escriptori"
#~ msgid "New icons alignment"
#~ msgstr "Alineació de les icones noves"
#~ msgid "Top-left corner"
#~ msgstr "Cantonada superior esquerra"
#~ msgid "Top-right corner"
#~ msgstr "Cantonada superior dreta"
#~ msgid "Bottom-left corner"
#~ msgstr "Cantonada inferior esquerra"
#~ msgid "Bottom-right corner"
#~ msgstr "Cantonada inferior dreta"
#~ msgid "Highlight the drop place during Drag'n'Drop"
#~ msgstr "Ressalta el lloc desplegable durant l'arrossegat"
#~ msgid "Settings shared with Nautilus"
#~ msgstr "Paràmetres compartits amb el Nautilus"
#~ msgid "Click type for open files"
#~ msgstr "Feu clic al tipus per a obrir fitxers"
#~ msgid "Single click"
#~ msgstr "Un sol clic"
#~ msgid "Double click"
#~ msgstr "Doble clic"
#~ msgid "Show hidden files"
#~ msgstr "Mostra els fitxers ocults"
#~ msgid "Show a context menu item to delete permanently"
#~ msgstr ""
#~ "Mostra un element de menú contextual per a suprimir-lo permanentment"
#~ msgid "Action to do when launching a program from the desktop"
#~ msgstr "Acció a fer quan s'iniciï un programa des de l'escriptori"
#~ msgid "Display the content of the file"
#~ msgstr "Mostra el contingut del fitxer"
#~ msgid "Launch the file"
#~ msgstr "Executa el fitxer"
#~ msgid "Ask what to do"
#~ msgstr "Preguntar què fer"
#~ msgid "Show image thumbnails"
#~ msgstr "Mostra les miniatures de les imatges"
#~ msgid "Never"
#~ msgstr "Mai"
#~ msgid "Local files only"
#~ msgstr "Només fitxers locals"
#~ msgid "Always"
#~ msgstr "Sempre"
#~ msgid ""
#~ "To configure Desktop Icons NG, do right-click in the desktop and choose "
#~ "the last item: 'Desktop Icons settings'"
#~ msgstr ""
#~ "Per a configurar les icones de l'escriptori NG, feu clic dret a "
#~ "l'escriptori i trieu l'últim element: «Paràmetres de les icones de "
#~ "l'escriptori»"
#~ msgid "Do you want to run “{0}”, or display its contents?"
#~ msgstr "Voleu executar «{0}» o mostrar el seu contingut?"
#~ msgid "“{0}” is an executable text file."
#~ msgstr "«{0}» és un fitxer de text executable."
#~ msgid "Execute in a terminal"
#~ msgstr "Obre al Terminal"
#~ msgid "Show"
#~ msgstr "Mostra"
#~ msgid "Execute"
#~ msgstr "Executa"
#~ msgid "New folder"
#~ msgstr "Carpeta nova"
#~ msgid "Delete"
#~ msgstr "Suprimeix"
#~ msgid "Error while deleting files"
#~ msgstr "S'ha produït un error en suprimir els fitxers"
#~ msgid "Are you sure you want to permanently delete these items?"
#~ msgstr "Esteu segur que voleu suprimir permanentment aquests elements?"
#~ msgid "If you delete an item, it will be permanently lost."
#~ msgstr "Si suprimiu un element, es perdrà permanentment."
desktop-icons-ng-43/po/cs.po 0000664 0000000 0000000 00000041174 14216573372 0016072 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: 2022-03-23 11:12+0100\n"
"PO-Revision-Date: 2021-09-24 12:49+0200\n"
"Last-Translator: panmourovaty \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.0\n"
#: askRenamePopup.js:42
msgid "Folder name"
msgstr "Název nové složky"
#: askRenamePopup.js:42
msgid "File name"
msgstr "Přejmenovat soubor"
#: askRenamePopup.js:49 desktopManager.js:798
msgid "OK"
msgstr "Budiž"
#: askRenamePopup.js:49
msgid "Rename"
msgstr "Přejmenovat"
#: dbusUtils.js:65
msgid "\"${programName}\" is needed for Desktop Icons"
msgstr ""
#: dbusUtils.js:66
msgid ""
"For this functionality to work in Desktop Icons, you must install "
"\"${programName}\" in your system."
msgstr ""
#: desktopIconsUtil.js:96
msgid "Command not found"
msgstr "Příkaz nebyl nalezen"
#: desktopManager.js:215
msgid "Nautilus File Manager not found"
msgstr "Správce souborů Nautilus nebyl nalezen"
#: desktopManager.js:216
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."
#: desktopManager.js:761
msgid "Clear Current Selection before New Search"
msgstr "Vymazat aktuální výběr před novým hledáním"
#: desktopManager.js:800 fileItemMenu.js:369
msgid "Cancel"
msgstr "Zrušit"
#: desktopManager.js:802
msgid "Find Files on Desktop"
msgstr "Najít soubory na Ploše"
#: desktopManager.js:867 desktopManager.js:1490
msgid "New Folder"
msgstr "Nová složka"
#: desktopManager.js:871
msgid "New Document"
msgstr "Nový Dokument"
#: desktopManager.js:876
msgid "Paste"
msgstr "Vložit"
#: desktopManager.js:880
msgid "Undo"
msgstr "Zpět"
#: desktopManager.js:884
msgid "Redo"
msgstr "Znovu"
#: desktopManager.js:890
msgid "Select All"
msgstr "Vybrat vše"
#: desktopManager.js:898
msgid "Show Desktop in Files"
msgstr "Zobrazit plochu v Souborech"
#: desktopManager.js:902 fileItemMenu.js:287
msgid "Open in Terminal"
msgstr "Otevřít v terminálu"
#: desktopManager.js:908
msgid "Change Background…"
msgstr "Změnit pozadí…"
#: desktopManager.js:919
msgid "Desktop Icons Settings"
msgstr "Nastavení ikon na ploše"
#: desktopManager.js:923
msgid "Display Settings"
msgstr "Zobrazit nastavení"
#: desktopManager.js:1548
msgid "Arrange Icons"
msgstr "Uspořádat Ikony"
#: desktopManager.js:1552
msgid "Arrange By..."
msgstr "Uspořádat podle..."
#: desktopManager.js:1561
msgid "Keep Arranged..."
msgstr "Nechat uspořádané..."
#: desktopManager.js:1565
msgid "Keep Stacked by type..."
msgstr ""
#: desktopManager.js:1570
msgid "Sort Home/Drives/Trash..."
msgstr "Seřadit Domovská složka/Jednotky/Koš..."
#: desktopManager.js:1576
msgid "Sort by Name"
msgstr "Seřadit podle Jména"
#: desktopManager.js:1578
msgid "Sort by Name Descending"
msgstr "Seřadit podle Jména sestupně"
#: desktopManager.js:1581
msgid "Sort by Modified Time"
msgstr "Seřadit podle Času úpravy"
#: desktopManager.js:1584
msgid "Sort by Type"
msgstr "Seřadit podle Typu"
#: desktopManager.js:1587
msgid "Sort by Size"
msgstr "Seřadit podle Velikosti"
#. TRANSLATORS: "Home" is the text that will be shown in the user's personal folder
#: fileItem.js:156
msgid "Home"
msgstr "Domovská Složka"
#: fileItem.js:275
msgid "Broken Link"
msgstr ""
#: fileItem.js:276
msgid "Can not open this File because it is a Broken Symlink"
msgstr ""
#: fileItem.js:326
#, fuzzy
msgid "Broken Desktop File"
msgstr "Zobrazit plochu v Souborech"
#: fileItem.js:327
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 ""
#: fileItem.js:333
msgid "Invalid Permissions on Desktop File"
msgstr ""
#: fileItem.js:334
msgid ""
"This .desktop File has incorrect Permissions. Right Click to edit "
"Properties, then:\n"
msgstr ""
#: fileItem.js:336
msgid ""
"\n"
"Set Permissions, in \"Others Access\", \"Read Only\" or \"None\""
msgstr ""
#: fileItem.js:339
msgid ""
"\n"
"Enable option, \"Allow Executing File as a Program\""
msgstr ""
#: fileItem.js:347
msgid ""
"This .desktop file is not trusted, it can not be launched. To enable "
"launching, right-click, then:\n"
"\n"
"Enable \"Allow Launching\""
msgstr ""
#: fileItemMenu.js:118
msgid "Open All..."
msgstr "Otevřít vše..."
#: fileItemMenu.js:118
msgid "Open"
msgstr "Otevřít"
#: fileItemMenu.js:129
msgid "Stack This Type"
msgstr ""
#: fileItemMenu.js:129
msgid "Unstack This Type"
msgstr ""
#: fileItemMenu.js:141
msgid "Scripts"
msgstr "Skripty"
#: fileItemMenu.js:147
msgid "Open All With Other Application..."
msgstr "Otevřít vše v jiné aplikaci..."
#: fileItemMenu.js:147
msgid "Open With Other Application"
msgstr "Otevřít pomocí jiné aplikace"
#: fileItemMenu.js:153
msgid "Launch using Dedicated Graphics Card"
msgstr "Spustit pomocí dedikované grafické karty"
#: fileItemMenu.js:162
msgid "Run as a program"
msgstr ""
#: fileItemMenu.js:170
msgid "Cut"
msgstr "Vyjmout"
#: fileItemMenu.js:175
msgid "Copy"
msgstr "Kopírovat"
#: fileItemMenu.js:181
msgid "Rename…"
msgstr "Přejmenovat…"
#: fileItemMenu.js:189
msgid "Move to Trash"
msgstr "Přesunout do koše"
#: fileItemMenu.js:195
msgid "Delete permanently"
msgstr "Odstranit nadobro"
#: fileItemMenu.js:203
msgid "Don't Allow Launching"
msgstr "Nepovolit spouštění"
#: fileItemMenu.js:203
msgid "Allow Launching"
msgstr "Povolit spouštění"
#: fileItemMenu.js:214
msgid "Empty Trash"
msgstr "Vyprázdnit koš"
#: fileItemMenu.js:225
msgid "Eject"
msgstr "Vysunout"
#: fileItemMenu.js:231
msgid "Unmount"
msgstr "Odpojit"
#: fileItemMenu.js:241
msgid "Extract Here"
msgstr "Rozbalit sem"
#: fileItemMenu.js:245
msgid "Extract To..."
msgstr "Rozbalit do…"
#: fileItemMenu.js:252
msgid "Send to..."
msgstr "Poslat..."
#: fileItemMenu.js:258
msgid "Compress {0} file"
msgid_plural "Compress {0} files"
msgstr[0] "Zkomprimovat {0} soubor"
msgstr[1] "Zkomprimovat {0} soubory"
msgstr[2] "Zkomprimovat {0} souborů"
#: fileItemMenu.js:264
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"
#: fileItemMenu.js:273
msgid "Common Properties"
msgstr "Vlastnosti"
#: fileItemMenu.js:273
msgid "Properties"
msgstr "Vlastnosti"
#: fileItemMenu.js:280
msgid "Show All in Files"
msgstr "Zobrazit vše v Souborech"
#: fileItemMenu.js:280
msgid "Show in Files"
msgstr "Zobrazit v Souborech"
#: fileItemMenu.js:365
msgid "Select Extract Destination"
msgstr "Vybrat místo k extrahování"
#: fileItemMenu.js:370
msgid "Select"
msgstr "Vybrat vše"
#: fileItemMenu.js:396
msgid "Can not email a Directory"
msgstr "Nemůžete poslat složku emailem"
#: fileItemMenu.js:397
msgid "Selection includes a Directory, compress the directory to a file first."
msgstr "Výběr obsahuje Složku, nejdříve musíte zkomprimovat složku do souboru."
#: preferences.js:67
msgid "Settings"
msgstr "Nastavení ikon na ploše"
#: showErrorPopup.js:40
msgid "Close"
msgstr "Zavřít"
#: 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:45
msgid "Show external drives in the desktop"
msgstr "Zobrazovat disky připojené k počítači"
#: 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:50
msgid "Show network drives in the desktop"
msgstr "Zobrazovat síťové 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:55
msgid "Add new drives to the opposite side of the screen"
msgstr "Dávat nové disky na opačnou stranu obrazovky"
#: 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
#, fuzzy
msgid "Keep Icons Stacked"
msgstr "Nechat Ikony uspořádané"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:81
#, fuzzy
msgid "Always keep Icons Stacked, Similar types are grouped"
msgstr "Vždy nechat Ikony seřazené podle posledního řazení"
#: 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:90
msgid "Use Nemo to open folders"
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 ""
#~ msgid "Size for the desktop icons"
#~ msgstr "Velikost ikon na pracovní ploše"
#~ msgid "Tiny"
#~ msgstr "Drobný"
#~ msgid "Small"
#~ msgstr "Malé"
#~ msgid "Standard"
#~ msgstr "Standardní"
#~ msgid "Large"
#~ msgstr "Velké"
#~ msgid "Show the personal folder in the desktop"
#~ msgstr "Zobrazovat osobní složku na pracovní ploše"
#~ msgid "Show the trash icon in the desktop"
#~ msgstr "Zobrazovat ikonu koše na pracovní ploše"
#~ msgid "New icons alignment"
#~ msgstr "Zarovnání nových ikon"
#~ msgid "Top-left corner"
#~ msgstr "Levý horní roh"
#~ msgid "Top-right corner"
#~ msgstr "Pravý horní roh"
#~ msgid "Bottom-left corner"
#~ msgstr "Spodní levý roh"
#~ msgid "Bottom-right corner"
#~ msgstr "Spodní pravý roh"
#~ msgid "Highlight the drop place during Drag'n'Drop"
#~ msgstr "Zvýraznit místo k položení při přetahování souborů"
#~ msgid "Settings shared with Nautilus"
#~ msgstr "Nastavení sdílená s Nautilem"
#~ msgid "Click type for open files"
#~ msgstr "Typ kliknutí požadovaný pro otevření souboru"
#~ msgid "Single click"
#~ msgstr "Jeden klik"
#~ msgid "Double click"
#~ msgstr "Dvojklik"
#~ msgid "Show hidden files"
#~ msgstr "Zobrazit skryté soubory"
#~ msgid "Show a context menu item to delete permanently"
#~ msgstr "Zobrazit položku kontextové nabídky, kterou chcete trvale smazat"
#~ 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"
#~ msgid "Display the content of the file"
#~ msgstr "Zobrazit obsah souboru"
#~ msgid "Launch the file"
#~ msgstr "Spustit soubor"
#~ msgid "Ask what to do"
#~ msgstr "Zeptat se co se má stát"
#~ msgid "Show image thumbnails"
#~ msgstr "Zobrazit náhledové obrázky"
#~ msgid "Never"
#~ msgstr "Nikdy"
#~ msgid "Local files only"
#~ msgstr "Pouze pro místní soubory"
#~ msgid "Always"
#~ msgstr "Vždy"
#~ 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 "Error while deleting files"
#~ msgstr "Při odstraňování souborů se vyskytla chyba"
#~ 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 "Create"
#~ msgstr "Vytvořit"
#~ 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-43/po/da.po 0000664 0000000 0000000 00000031320 14216573372 0016041 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: 2022-03-23 11:12+0100\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"
#: askRenamePopup.js:42
#, fuzzy
msgid "Folder name"
msgstr "Nyt mappenavn"
#: askRenamePopup.js:42
#, fuzzy
msgid "File name"
msgstr "Omdøb …"
#: askRenamePopup.js:49 desktopManager.js:798
msgid "OK"
msgstr "OK"
#: askRenamePopup.js:49
#, fuzzy
msgid "Rename"
msgstr "Omdøb …"
#: dbusUtils.js:65
msgid "\"${programName}\" is needed for Desktop Icons"
msgstr ""
#: dbusUtils.js:66
msgid ""
"For this functionality to work in Desktop Icons, you must install "
"\"${programName}\" in your system."
msgstr ""
#: desktopIconsUtil.js:96
msgid "Command not found"
msgstr ""
#: desktopManager.js:215
msgid "Nautilus File Manager not found"
msgstr ""
#: desktopManager.js:216
msgid "The Nautilus File Manager is mandatory to work with Desktop Icons NG."
msgstr ""
#: desktopManager.js:761
msgid "Clear Current Selection before New Search"
msgstr ""
#: desktopManager.js:800 fileItemMenu.js:369
msgid "Cancel"
msgstr "Annullér"
#: desktopManager.js:802
msgid "Find Files on Desktop"
msgstr ""
#: desktopManager.js:867 desktopManager.js:1490
msgid "New Folder"
msgstr "Ny mappe"
#: desktopManager.js:871
msgid "New Document"
msgstr "Nyt dokument"
#: desktopManager.js:876
msgid "Paste"
msgstr "Indsæt"
#: desktopManager.js:880
msgid "Undo"
msgstr "Fortryd"
#: desktopManager.js:884
msgid "Redo"
msgstr "Omgør"
#: desktopManager.js:890
#, fuzzy
msgid "Select All"
msgstr "Vælg alt"
#: desktopManager.js:898
msgid "Show Desktop in Files"
msgstr "Vis skrivebordet i Filer"
#: desktopManager.js:902 fileItemMenu.js:287
msgid "Open in Terminal"
msgstr "Åbn i terminal"
#: desktopManager.js:908
msgid "Change Background…"
msgstr "Skift baggrund …"
#: desktopManager.js:919
#, fuzzy
msgid "Desktop Icons Settings"
msgstr "Skærmindstillinger"
#: desktopManager.js:923
msgid "Display Settings"
msgstr "Skærmindstillinger"
#: desktopManager.js:1548
msgid "Arrange Icons"
msgstr ""
#: desktopManager.js:1552
msgid "Arrange By..."
msgstr ""
#: desktopManager.js:1561
msgid "Keep Arranged..."
msgstr ""
#: desktopManager.js:1565
msgid "Keep Stacked by type..."
msgstr ""
#: desktopManager.js:1570
msgid "Sort Home/Drives/Trash..."
msgstr ""
#: desktopManager.js:1576
msgid "Sort by Name"
msgstr ""
#: desktopManager.js:1578
msgid "Sort by Name Descending"
msgstr ""
#: desktopManager.js:1581
msgid "Sort by Modified Time"
msgstr ""
#: desktopManager.js:1584
msgid "Sort by Type"
msgstr ""
#: desktopManager.js:1587
msgid "Sort by Size"
msgstr ""
#. TRANSLATORS: "Home" is the text that will be shown in the user's personal folder
#: fileItem.js:156
msgid "Home"
msgstr "Hjem"
#: fileItem.js:275
msgid "Broken Link"
msgstr ""
#: fileItem.js:276
msgid "Can not open this File because it is a Broken Symlink"
msgstr ""
#: fileItem.js:326
#, fuzzy
msgid "Broken Desktop File"
msgstr "Vis skrivebordet i Filer"
#: fileItem.js:327
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 ""
#: fileItem.js:333
msgid "Invalid Permissions on Desktop File"
msgstr ""
#: fileItem.js:334
msgid ""
"This .desktop File has incorrect Permissions. Right Click to edit "
"Properties, then:\n"
msgstr ""
#: fileItem.js:336
msgid ""
"\n"
"Set Permissions, in \"Others Access\", \"Read Only\" or \"None\""
msgstr ""
#: fileItem.js:339
msgid ""
"\n"
"Enable option, \"Allow Executing File as a Program\""
msgstr ""
#: fileItem.js:347
msgid ""
"This .desktop file is not trusted, it can not be launched. To enable "
"launching, right-click, then:\n"
"\n"
"Enable \"Allow Launching\""
msgstr ""
#: fileItemMenu.js:118
msgid "Open All..."
msgstr ""
#: fileItemMenu.js:118
msgid "Open"
msgstr "Åbn"
#: fileItemMenu.js:129
msgid "Stack This Type"
msgstr ""
#: fileItemMenu.js:129
msgid "Unstack This Type"
msgstr ""
#: fileItemMenu.js:141
msgid "Scripts"
msgstr "Programmer"
#: fileItemMenu.js:147
#, fuzzy
msgid "Open All With Other Application..."
msgstr "Åbn med et andet program"
#: fileItemMenu.js:147
msgid "Open With Other Application"
msgstr "Åbn med et andet program"
#: fileItemMenu.js:153
msgid "Launch using Dedicated Graphics Card"
msgstr ""
#: fileItemMenu.js:162
msgid "Run as a program"
msgstr ""
#: fileItemMenu.js:170
msgid "Cut"
msgstr "Klip"
#: fileItemMenu.js:175
msgid "Copy"
msgstr "Kopiér"
#: fileItemMenu.js:181
msgid "Rename…"
msgstr "Omdøb …"
#: fileItemMenu.js:189
msgid "Move to Trash"
msgstr "Flyt til papirkurven"
#: fileItemMenu.js:195
msgid "Delete permanently"
msgstr "Slet permanent"
#: fileItemMenu.js:203
#, fuzzy
msgid "Don't Allow Launching"
msgstr "Tillad ikke opstart"
#: fileItemMenu.js:203
msgid "Allow Launching"
msgstr "Tillad opstart"
#: fileItemMenu.js:214
msgid "Empty Trash"
msgstr "Tøm papirkurven"
#: fileItemMenu.js:225
msgid "Eject"
msgstr "Skub ud"
#: fileItemMenu.js:231
msgid "Unmount"
msgstr "Afmontér"
#: fileItemMenu.js:241
msgid "Extract Here"
msgstr "Pak ud her"
#: fileItemMenu.js:245
msgid "Extract To..."
msgstr "Pak ud i …"
#: fileItemMenu.js:252
msgid "Send to..."
msgstr "Send til …"
#: fileItemMenu.js:258
msgid "Compress {0} file"
msgid_plural "Compress {0} files"
msgstr[0] ""
msgstr[1] ""
#: fileItemMenu.js:264
msgid "New Folder with {0} item"
msgid_plural "New Folder with {0} items"
msgstr[0] ""
msgstr[1] ""
#: fileItemMenu.js:273
#, fuzzy
msgid "Common Properties"
msgstr "Egenskaber"
#: fileItemMenu.js:273
msgid "Properties"
msgstr "Egenskaber"
#: fileItemMenu.js:280
#, fuzzy
msgid "Show All in Files"
msgstr "Vis i Filer"
#: fileItemMenu.js:280
msgid "Show in Files"
msgstr "Vis i Filer"
#: fileItemMenu.js:365
msgid "Select Extract Destination"
msgstr ""
#: fileItemMenu.js:370
msgid "Select"
msgstr "Vælg"
#: fileItemMenu.js:396
msgid "Can not email a Directory"
msgstr ""
#: fileItemMenu.js:397
msgid "Selection includes a Directory, compress the directory to a file first."
msgstr ""
#: preferences.js:67
msgid "Settings"
msgstr "Indstillinger"
#: showErrorPopup.js:40
msgid "Close"
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:45
#, fuzzy
msgid "Show external drives in the desktop"
msgstr "Vis den personlige mappe på skrivebordet"
#: 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:50
#, fuzzy
msgid "Show network drives in the desktop"
msgstr "Vis den personlige mappe på skrivebordet."
#: 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:55
msgid "Add new drives to the opposite side of the screen"
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:90
msgid "Use Nemo to open folders"
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 ""
#~ msgid "Size for the desktop icons"
#~ msgstr "Størrelsen på skrivebordsikoner"
#~ msgid "Small"
#~ msgstr "Små"
#~ msgid "Standard"
#~ msgstr "Standard"
#~ msgid "Large"
#~ msgstr "Store"
#~ msgid "Show the personal folder in the desktop"
#~ msgstr "Vis den personlige mappe på skrivebordet"
#~ msgid "Show the trash icon in the desktop"
#~ msgstr "Vis papirkurvsikonet på skrivebordet"
#, fuzzy
#~ msgid "New icons alignment"
#~ msgstr "Ikonstørrelse"
#, fuzzy
#~ msgid "Show hidden files"
#~ msgstr "Vis i Filer"
#~ 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 "Create"
#~ msgstr "Opret"
#~ 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-43/po/de.po 0000664 0000000 0000000 00000036776 14216573372 0016071 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: 2022-03-23 11:12+0100\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"
#: askRenamePopup.js:42
msgid "Folder name"
msgstr "Ordnername"
#: askRenamePopup.js:42
msgid "File name"
msgstr "Dateiname"
#: askRenamePopup.js:49 desktopManager.js:798
msgid "OK"
msgstr "OK"
#: askRenamePopup.js:49
msgid "Rename"
msgstr "Umbenennen ..."
#: dbusUtils.js:65
msgid "\"${programName}\" is needed for Desktop Icons"
msgstr ""
#: dbusUtils.js:66
msgid ""
"For this functionality to work in Desktop Icons, you must install "
"\"${programName}\" in your system."
msgstr ""
#: desktopIconsUtil.js:96
msgid "Command not found"
msgstr "Kommando nicht gefunden"
#: desktopManager.js:215
msgid "Nautilus File Manager not found"
msgstr "Nautilus-Dateiverwaltung nicht gefunden"
#: desktopManager.js:216
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."
#: desktopManager.js:761
msgid "Clear Current Selection before New Search"
msgstr "Aktuelle Auswahl vor neuer Suche löschen"
#: desktopManager.js:800 fileItemMenu.js:369
msgid "Cancel"
msgstr "Abbrechen"
#: desktopManager.js:802
msgid "Find Files on Desktop"
msgstr "Dateien auf dem Schreibtisch finden"
#: desktopManager.js:867 desktopManager.js:1490
msgid "New Folder"
msgstr "Neuer Ordner"
#: desktopManager.js:871
msgid "New Document"
msgstr "Neues Dokument"
#: desktopManager.js:876
msgid "Paste"
msgstr "Einfügen"
#: desktopManager.js:880
msgid "Undo"
msgstr "Rückgängig"
#: desktopManager.js:884
msgid "Redo"
msgstr "Wiederholen"
#: desktopManager.js:890
msgid "Select All"
msgstr "Alles auswählen"
#: desktopManager.js:898
msgid "Show Desktop in Files"
msgstr "Schreibtisch in Dateien anzeigen"
#: desktopManager.js:902 fileItemMenu.js:287
msgid "Open in Terminal"
msgstr "Im Terminal öffnen"
#: desktopManager.js:908
msgid "Change Background…"
msgstr "Hintergrund ändern …"
#: desktopManager.js:919
msgid "Desktop Icons Settings"
msgstr "Arbeitsfläche-Einstellungen"
#: desktopManager.js:923
msgid "Display Settings"
msgstr "Anzeigeeinstellungen"
#: desktopManager.js:1548
msgid "Arrange Icons"
msgstr "Symbole anordnen"
#: desktopManager.js:1552
msgid "Arrange By..."
msgstr "Anordnen nach..."
#: desktopManager.js:1561
msgid "Keep Arranged..."
msgstr "Angeordnet lassen..."
#: desktopManager.js:1565
msgid "Keep Stacked by type..."
msgstr ""
#: desktopManager.js:1570
msgid "Sort Home/Drives/Trash..."
msgstr "Sortiere Home/Laufwerke/Papierkorb..."
#: desktopManager.js:1576
msgid "Sort by Name"
msgstr "Sortiere nach Name"
#: desktopManager.js:1578
msgid "Sort by Name Descending"
msgstr "Sortiere nach Name (absteigend)"
#: desktopManager.js:1581
msgid "Sort by Modified Time"
msgstr "Sortiere nach Änderungsdatum"
#: desktopManager.js:1584
msgid "Sort by Type"
msgstr "Sortiere nach Dateityp"
#: desktopManager.js:1587
msgid "Sort by Size"
msgstr "Sortiere nach Dateigröße"
#. TRANSLATORS: "Home" is the text that will be shown in the user's personal folder
#: fileItem.js:156
msgid "Home"
msgstr "Persönlicher Ordner"
#: fileItem.js:275
msgid "Broken Link"
msgstr ""
#: fileItem.js:276
msgid "Can not open this File because it is a Broken Symlink"
msgstr ""
#: fileItem.js:326
#, fuzzy
msgid "Broken Desktop File"
msgstr "Schreibtisch in Dateien anzeigen"
#: fileItem.js:327
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 ""
#: fileItem.js:333
msgid "Invalid Permissions on Desktop File"
msgstr ""
#: fileItem.js:334
msgid ""
"This .desktop File has incorrect Permissions. Right Click to edit "
"Properties, then:\n"
msgstr ""
#: fileItem.js:336
msgid ""
"\n"
"Set Permissions, in \"Others Access\", \"Read Only\" or \"None\""
msgstr ""
#: fileItem.js:339
msgid ""
"\n"
"Enable option, \"Allow Executing File as a Program\""
msgstr ""
#: fileItem.js:347
msgid ""
"This .desktop file is not trusted, it can not be launched. To enable "
"launching, right-click, then:\n"
"\n"
"Enable \"Allow Launching\""
msgstr ""
#: fileItemMenu.js:118
msgid "Open All..."
msgstr "Alle öffnen ..."
#: fileItemMenu.js:118
msgid "Open"
msgstr "Öffnen"
#: fileItemMenu.js:129
msgid "Stack This Type"
msgstr ""
#: fileItemMenu.js:129
msgid "Unstack This Type"
msgstr ""
#: fileItemMenu.js:141
msgid "Scripts"
msgstr "Skripte"
#: fileItemMenu.js:147
msgid "Open All With Other Application..."
msgstr "Alle mit anderer Anwendung öffnen."
#: fileItemMenu.js:147
msgid "Open With Other Application"
msgstr "Mit anderer Anwendung öffnen"
#: fileItemMenu.js:153
msgid "Launch using Dedicated Graphics Card"
msgstr "Mit dedizierter Grafikkarte starten"
#: fileItemMenu.js:162
msgid "Run as a program"
msgstr ""
#: fileItemMenu.js:170
msgid "Cut"
msgstr "Ausschneiden"
#: fileItemMenu.js:175
msgid "Copy"
msgstr "Kopieren"
#: fileItemMenu.js:181
msgid "Rename…"
msgstr "Umbenennen …"
#: fileItemMenu.js:189
msgid "Move to Trash"
msgstr "In den Papierkorb verschieben"
#: fileItemMenu.js:195
msgid "Delete permanently"
msgstr "Dauerhaft löschen"
#: fileItemMenu.js:203
msgid "Don't Allow Launching"
msgstr "Start nicht erlauben"
#: fileItemMenu.js:203
msgid "Allow Launching"
msgstr "Start erlauben"
#: fileItemMenu.js:214
msgid "Empty Trash"
msgstr "Papierkorb leeren"
#: fileItemMenu.js:225
msgid "Eject"
msgstr "Auswerfen"
#: fileItemMenu.js:231
msgid "Unmount"
msgstr "Aushängen"
#: fileItemMenu.js:241
msgid "Extract Here"
msgstr "Hier entpacken"
#: fileItemMenu.js:245
msgid "Extract To..."
msgstr "Entpacken nach ..."
#: fileItemMenu.js:252
msgid "Send to..."
msgstr "Senden an ..."
#: fileItemMenu.js:258
msgid "Compress {0} file"
msgid_plural "Compress {0} files"
msgstr[0] "Komprimiere {0} Datei"
msgstr[1] "Komprimiere {0} Dateien"
#: fileItemMenu.js:264
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"
#: fileItemMenu.js:273
msgid "Common Properties"
msgstr "Eigenschaften"
#: fileItemMenu.js:273
msgid "Properties"
msgstr "Eigenschaften"
#: fileItemMenu.js:280
msgid "Show All in Files"
msgstr "Alle in Dateiverwaltung anzeigen"
#: fileItemMenu.js:280
msgid "Show in Files"
msgstr "In Dateiverwaltung anzeigen"
#: fileItemMenu.js:365
msgid "Select Extract Destination"
msgstr "Ziel für die Entpackung auswählen"
#: fileItemMenu.js:370
msgid "Select"
msgstr "Auswählen"
#: fileItemMenu.js:396
msgid "Can not email a Directory"
msgstr "Kann Verzeichnis nicht per E-Mail verschicken"
#: fileItemMenu.js:397
msgid "Selection includes a Directory, compress the directory to a file first."
msgstr ""
"Auswahl beinhaltet ein Verzeichnis, komprimiere zunächst Verzeichnis zu "
"einer Datei."
#: preferences.js:67
msgid "Settings"
msgstr "Einstellungen"
#: showErrorPopup.js:40
msgid "Close"
msgstr "Schließen"
#: 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:45
msgid "Show external drives in the desktop"
msgstr "Externe Laufwerke auf der Arbeitsfläche anzeigen"
#: 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:50
msgid "Show network drives in the desktop"
msgstr "Netzwerk-Laufwerke auf der Arbeitsfläche 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:55
msgid "Add new drives to the opposite side of the screen"
msgstr "Neue Laufwerke gegenüber auf dem Bildschirm hinzufügen"
#: 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:90
msgid "Use Nemo to open folders"
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 ""
#~ msgid "Size for the desktop icons"
#~ msgstr "Größe der Arbeitsflächensymbole"
#~ msgid "Tiny"
#~ msgstr "Winzig"
#~ msgid "Small"
#~ msgstr "Klein"
#~ msgid "Standard"
#~ msgstr "Standard"
#~ msgid "Large"
#~ msgstr "Groß"
#~ msgid "Show the personal folder in the desktop"
#~ msgstr "Den persönlichen Ordner auf der Arbeitsfläche anzeigen"
#~ msgid "Show the trash icon in the desktop"
#~ msgstr "Papierkorb-Symbol auf der Arbeitsfläche anzeigen"
#~ msgid "New icons alignment"
#~ msgstr "Ausrichtung der Arbeitsflächensymbole"
#~ msgid "Top-left corner"
#~ msgstr "Ecke oben links"
#~ msgid "Top-right corner"
#~ msgstr "Ecke oben rechts"
#~ msgid "Bottom-left corner"
#~ msgstr "Ecke unten links"
#~ msgid "Bottom-right corner"
#~ msgstr "Ecke unten rechts"
#~ msgid "Highlight the drop place during Drag'n'Drop"
#~ msgstr "Zielposition bei Drag'n'Drop hervorheben"
#~ msgid "Settings shared with Nautilus"
#~ msgstr "Anpassung an Nautilus-Dateiverwaltung"
#~ msgid "Click type for open files"
#~ msgstr "Öffnen-Aktion"
#~ msgid "Single click"
#~ msgstr "Einfacher Klick"
#~ msgid "Double click"
#~ msgstr "Doppelklick"
#~ msgid "Show hidden files"
#~ msgstr "Verborgene Dateien anzeigen"
#~ msgid "Show a context menu item to delete permanently"
#~ msgstr "Aktion zum dauerhaften Löschen anzeigen"
#~ msgid "Action to do when launching a program from the desktop"
#~ msgstr "Ausführbare Textdateien auf dem Schreibtisch"
#~ msgid "Display the content of the file"
#~ msgstr "Anzeigen"
#~ msgid "Launch the file"
#~ msgstr "Ausführen"
#~ msgid "Ask what to do"
#~ msgstr "Nachfragen, was geschehen soll"
#~ msgid "Show image thumbnails"
#~ msgstr "Miniatur-Vorschaubilder anzeigen"
#~ msgid "Never"
#~ msgstr "Nie"
#~ msgid "Local files only"
#~ msgstr "Nur Dateien auf diesem Rechner"
#~ msgid "Always"
#~ msgstr "Alle Dateien"
#~ 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 "Error while deleting files"
#~ msgstr "Fehler beim Löschen der Dateien"
#~ 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-43/po/ding.pot 0000664 0000000 0000000 00000023474 14216573372 0016575 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: 2022-03-23 11:12+0100\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"
#: askRenamePopup.js:42
msgid "Folder name"
msgstr ""
#: askRenamePopup.js:42
msgid "File name"
msgstr ""
#: askRenamePopup.js:49 desktopManager.js:798
msgid "OK"
msgstr ""
#: askRenamePopup.js:49
msgid "Rename"
msgstr ""
#: dbusUtils.js:65
msgid "\"${programName}\" is needed for Desktop Icons"
msgstr ""
#: dbusUtils.js:66
msgid ""
"For this functionality to work in Desktop Icons, you must install "
"\"${programName}\" in your system."
msgstr ""
#: desktopIconsUtil.js:96
msgid "Command not found"
msgstr ""
#: desktopManager.js:215
msgid "Nautilus File Manager not found"
msgstr ""
#: desktopManager.js:216
msgid "The Nautilus File Manager is mandatory to work with Desktop Icons NG."
msgstr ""
#: desktopManager.js:761
msgid "Clear Current Selection before New Search"
msgstr ""
#: desktopManager.js:800 fileItemMenu.js:369
msgid "Cancel"
msgstr ""
#: desktopManager.js:802
msgid "Find Files on Desktop"
msgstr ""
#: desktopManager.js:867 desktopManager.js:1490
msgid "New Folder"
msgstr ""
#: desktopManager.js:871
msgid "New Document"
msgstr ""
#: desktopManager.js:876
msgid "Paste"
msgstr ""
#: desktopManager.js:880
msgid "Undo"
msgstr ""
#: desktopManager.js:884
msgid "Redo"
msgstr ""
#: desktopManager.js:890
msgid "Select All"
msgstr ""
#: desktopManager.js:898
msgid "Show Desktop in Files"
msgstr ""
#: desktopManager.js:902 fileItemMenu.js:287
msgid "Open in Terminal"
msgstr ""
#: desktopManager.js:908
msgid "Change Background…"
msgstr ""
#: desktopManager.js:919
msgid "Desktop Icons Settings"
msgstr ""
#: desktopManager.js:923
msgid "Display Settings"
msgstr ""
#: desktopManager.js:1548
msgid "Arrange Icons"
msgstr ""
#: desktopManager.js:1552
msgid "Arrange By..."
msgstr ""
#: desktopManager.js:1561
msgid "Keep Arranged..."
msgstr ""
#: desktopManager.js:1565
msgid "Keep Stacked by type..."
msgstr ""
#: desktopManager.js:1570
msgid "Sort Home/Drives/Trash..."
msgstr ""
#: desktopManager.js:1576
msgid "Sort by Name"
msgstr ""
#: desktopManager.js:1578
msgid "Sort by Name Descending"
msgstr ""
#: desktopManager.js:1581
msgid "Sort by Modified Time"
msgstr ""
#: desktopManager.js:1584
msgid "Sort by Type"
msgstr ""
#: desktopManager.js:1587
msgid "Sort by Size"
msgstr ""
#. TRANSLATORS: "Home" is the text that will be shown in the user's personal folder
#: fileItem.js:156
msgid "Home"
msgstr ""
#: fileItem.js:275
msgid "Broken Link"
msgstr ""
#: fileItem.js:276
msgid "Can not open this File because it is a Broken Symlink"
msgstr ""
#: fileItem.js:326
msgid "Broken Desktop File"
msgstr ""
#: fileItem.js:327
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 ""
#: fileItem.js:333
msgid "Invalid Permissions on Desktop File"
msgstr ""
#: fileItem.js:334
msgid ""
"This .desktop File has incorrect Permissions. Right Click to edit "
"Properties, then:\n"
msgstr ""
#: fileItem.js:336
msgid ""
"\n"
"Set Permissions, in \"Others Access\", \"Read Only\" or \"None\""
msgstr ""
#: fileItem.js:339
msgid ""
"\n"
"Enable option, \"Allow Executing File as a Program\""
msgstr ""
#: fileItem.js:347
msgid ""
"This .desktop file is not trusted, it can not be launched. To enable "
"launching, right-click, then:\n"
"\n"
"Enable \"Allow Launching\""
msgstr ""
#: fileItemMenu.js:118
msgid "Open All..."
msgstr ""
#: fileItemMenu.js:118
msgid "Open"
msgstr ""
#: fileItemMenu.js:129
msgid "Stack This Type"
msgstr ""
#: fileItemMenu.js:129
msgid "Unstack This Type"
msgstr ""
#: fileItemMenu.js:141
msgid "Scripts"
msgstr ""
#: fileItemMenu.js:147
msgid "Open All With Other Application..."
msgstr ""
#: fileItemMenu.js:147
msgid "Open With Other Application"
msgstr ""
#: fileItemMenu.js:153
msgid "Launch using Dedicated Graphics Card"
msgstr ""
#: fileItemMenu.js:162
msgid "Run as a program"
msgstr ""
#: fileItemMenu.js:170
msgid "Cut"
msgstr ""
#: fileItemMenu.js:175
msgid "Copy"
msgstr ""
#: fileItemMenu.js:181
msgid "Rename…"
msgstr ""
#: fileItemMenu.js:189
msgid "Move to Trash"
msgstr ""
#: fileItemMenu.js:195
msgid "Delete permanently"
msgstr ""
#: fileItemMenu.js:203
msgid "Don't Allow Launching"
msgstr ""
#: fileItemMenu.js:203
msgid "Allow Launching"
msgstr ""
#: fileItemMenu.js:214
msgid "Empty Trash"
msgstr ""
#: fileItemMenu.js:225
msgid "Eject"
msgstr ""
#: fileItemMenu.js:231
msgid "Unmount"
msgstr ""
#: fileItemMenu.js:241
msgid "Extract Here"
msgstr ""
#: fileItemMenu.js:245
msgid "Extract To..."
msgstr ""
#: fileItemMenu.js:252
msgid "Send to..."
msgstr ""
#: fileItemMenu.js:258
msgid "Compress {0} file"
msgid_plural "Compress {0} files"
msgstr[0] ""
msgstr[1] ""
#: fileItemMenu.js:264
msgid "New Folder with {0} item"
msgid_plural "New Folder with {0} items"
msgstr[0] ""
msgstr[1] ""
#: fileItemMenu.js:273
msgid "Common Properties"
msgstr ""
#: fileItemMenu.js:273
msgid "Properties"
msgstr ""
#: fileItemMenu.js:280
msgid "Show All in Files"
msgstr ""
#: fileItemMenu.js:280
msgid "Show in Files"
msgstr ""
#: fileItemMenu.js:365
msgid "Select Extract Destination"
msgstr ""
#: fileItemMenu.js:370
msgid "Select"
msgstr ""
#: fileItemMenu.js:396
msgid "Can not email a Directory"
msgstr ""
#: fileItemMenu.js:397
msgid "Selection includes a Directory, compress the directory to a file first."
msgstr ""
#: preferences.js:67
msgid "Settings"
msgstr ""
#: showErrorPopup.js:40
msgid "Close"
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:45
msgid "Show external drives in the desktop"
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:50
msgid "Show network drives in the desktop"
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:55
msgid "Add new drives to the opposite side of the screen"
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:90
msgid "Use Nemo to open folders"
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 ""
desktop-icons-ng-43/po/es.po 0000664 0000000 0000000 00000047143 14216573372 0016076 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-2022.
#
msgid ""
msgstr ""
"Project-Id-Version: 1.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-03-23 11:12+0100\n"
"PO-Revision-Date: 2022-03-17 16:16+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 41.0\n"
#: askRenamePopup.js:42
msgid "Folder name"
msgstr "Nombre de la carpeta"
#: askRenamePopup.js:42
msgid "File name"
msgstr "Nombre de archivo"
#: askRenamePopup.js:49 desktopManager.js:798
msgid "OK"
msgstr "Aceptar"
#: askRenamePopup.js:49
msgid "Rename"
msgstr "Renombrar…"
#: dbusUtils.js:65
msgid "\"${programName}\" is needed for Desktop Icons"
msgstr "Desktop Icons necesita el programa \"${programName}\""
#: dbusUtils.js:66
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."
#: desktopIconsUtil.js:96
msgid "Command not found"
msgstr "Comando no encontrado"
#: desktopManager.js:215
msgid "Nautilus File Manager not found"
msgstr "No se encontró el Gestor de ficheros Nautilus"
#: desktopManager.js:216
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."
#: desktopManager.js:761
msgid "Clear Current Selection before New Search"
msgstr "Limpiar la selección actual para nueva búsqueda"
#: desktopManager.js:800 fileItemMenu.js:369
msgid "Cancel"
msgstr "Cancelar"
#: desktopManager.js:802
msgid "Find Files on Desktop"
msgstr "Buscar ficheros en el Escritorio"
#: desktopManager.js:867 desktopManager.js:1490
msgid "New Folder"
msgstr "Nueva carpeta"
#: desktopManager.js:871
msgid "New Document"
msgstr "Documento nuevo"
#: desktopManager.js:876
msgid "Paste"
msgstr "Pegar"
#: desktopManager.js:880
msgid "Undo"
msgstr "Deshacer"
#: desktopManager.js:884
msgid "Redo"
msgstr "Rehacer"
#: desktopManager.js:890
msgid "Select All"
msgstr "Seleccionar Todo"
#: desktopManager.js:898
msgid "Show Desktop in Files"
msgstr "Mostrar el escritorio en Archivos"
#: desktopManager.js:902 fileItemMenu.js:287
msgid "Open in Terminal"
msgstr "Abrir en una terminal"
#: desktopManager.js:908
msgid "Change Background…"
msgstr "Cambiar el fondo..."
#: desktopManager.js:919
msgid "Desktop Icons Settings"
msgstr "Preferencias de Iconos en el Escritorio"
#: desktopManager.js:923
msgid "Display Settings"
msgstr "Preferencias de pantalla"
#: desktopManager.js:1548
msgid "Arrange Icons"
msgstr "Ordenar Iconos"
#: desktopManager.js:1552
msgid "Arrange By..."
msgstr "Ordenar por..."
#: desktopManager.js:1561
msgid "Keep Arranged..."
msgstr "Mantener ordenados"
#: desktopManager.js:1565
msgid "Keep Stacked by type..."
msgstr "Mantener agrupados por tipo..."
#: desktopManager.js:1570
msgid "Sort Home/Drives/Trash..."
msgstr "Ordenar Home/Unidades/Papelera..."
#: desktopManager.js:1576
msgid "Sort by Name"
msgstr "Ordenar por nombre"
#: desktopManager.js:1578
msgid "Sort by Name Descending"
msgstr "Ordenar por nombre inverso"
#: desktopManager.js:1581
msgid "Sort by Modified Time"
msgstr "Ordenar por fecha de modificación"
#: desktopManager.js:1584
msgid "Sort by Type"
msgstr "Ordenar por tipo"
#: desktopManager.js:1587
msgid "Sort by Size"
msgstr "Ordenar por tamaño"
#. TRANSLATORS: "Home" is the text that will be shown in the user's personal folder
#: fileItem.js:156
msgid "Home"
msgstr "Carpeta personal"
#: fileItem.js:275
msgid "Broken Link"
msgstr "Enlace roto"
#: fileItem.js:276
msgid "Can not open this File because it is a Broken Symlink"
msgstr "No se puede abrir este fichero porque es un enlace roto"
#: fileItem.js:326
msgid "Broken Desktop File"
msgstr "Fichero .desktop dañado"
#: fileItem.js:327
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."
#: fileItem.js:333
msgid "Invalid Permissions on Desktop File"
msgstr "Permisos no válidos en el fichero .desktop"
#: fileItem.js:334
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"
#: fileItem.js:336
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\""
#: fileItem.js:339
msgid ""
"\n"
"Enable option, \"Allow Executing File as a Program\""
msgstr ""
"\n"
"Activa la opción \"Permitir ejecutar el archivo como un programa\""
#: fileItem.js:347
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\""
#: fileItemMenu.js:118
msgid "Open All..."
msgstr "Abrir todo..."
#: fileItemMenu.js:118
msgid "Open"
msgstr "Abrir"
#: fileItemMenu.js:129
msgid "Stack This Type"
msgstr "Agrupar este tipo"
#: fileItemMenu.js:129
msgid "Unstack This Type"
msgstr "Desagrupar este tipo"
#: fileItemMenu.js:141
msgid "Scripts"
msgstr "Scripts"
#: fileItemMenu.js:147
msgid "Open All With Other Application..."
msgstr "Abrir todo con otra aplicación"
#: fileItemMenu.js:147
msgid "Open With Other Application"
msgstr "Abrir con otra aplicación"
#: fileItemMenu.js:153
msgid "Launch using Dedicated Graphics Card"
msgstr "Lanzar con la Tarjeta Gráfica Dedicada"
#: fileItemMenu.js:162
msgid "Run as a program"
msgstr "Ejecutar como un programa"
#: fileItemMenu.js:170
msgid "Cut"
msgstr "Cortar"
#: fileItemMenu.js:175
msgid "Copy"
msgstr "Copiar"
#: fileItemMenu.js:181
msgid "Rename…"
msgstr "Renombrar…"
#: fileItemMenu.js:189
msgid "Move to Trash"
msgstr "Mover a la papelera"
#: fileItemMenu.js:195
msgid "Delete permanently"
msgstr "Borrar permanentemente"
#: fileItemMenu.js:203
msgid "Don't Allow Launching"
msgstr "No permitir lanzar"
#: fileItemMenu.js:203
msgid "Allow Launching"
msgstr "Permitir lanzar"
#: fileItemMenu.js:214
msgid "Empty Trash"
msgstr "Vaciar la papelera"
#: fileItemMenu.js:225
msgid "Eject"
msgstr "Expulsar"
#: fileItemMenu.js:231
msgid "Unmount"
msgstr "Desmontar"
#: fileItemMenu.js:241
msgid "Extract Here"
msgstr "Extraer aquí"
#: fileItemMenu.js:245
msgid "Extract To..."
msgstr "Extraer a..."
#: fileItemMenu.js:252
msgid "Send to..."
msgstr "Enviar a..."
#: fileItemMenu.js:258
msgid "Compress {0} file"
msgid_plural "Compress {0} files"
msgstr[0] "Comprimir {0} archivo"
msgstr[1] "Comprimir {0} archivos"
#: fileItemMenu.js:264
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"
#: fileItemMenu.js:273
msgid "Common Properties"
msgstr "Propiedades Comunes"
#: fileItemMenu.js:273
msgid "Properties"
msgstr "Propiedades"
#: fileItemMenu.js:280
msgid "Show All in Files"
msgstr "Mostrar todo en Files"
#: fileItemMenu.js:280
msgid "Show in Files"
msgstr "Mostrar en Files"
#: fileItemMenu.js:365
msgid "Select Extract Destination"
msgstr "Seleccionar el destino para extraer"
#: fileItemMenu.js:370
msgid "Select"
msgstr "Seleccionar"
#: fileItemMenu.js:396
msgid "Can not email a Directory"
msgstr "No se puede enviar un directorio"
#: fileItemMenu.js:397
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."
#: preferences.js:67
msgid "Settings"
msgstr "Preferencias"
#: showErrorPopup.js:40
msgid "Close"
msgstr "Cerrar"
#: 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:45
msgid "Show external drives in the desktop"
msgstr "Mostrar unidades externas en el escritorio"
#: 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:50
msgid "Show network drives in the desktop"
msgstr "Mostrar unidades de red en el escritorio"
#: 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:55
msgid "Add new drives to the opposite side of the screen"
msgstr "Añadir nuevas unidades en el lado opuesto de la pantalla"
#: 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:90
msgid "Use Nemo to open folders"
msgstr "Usar Nemo para abrir las carpetas"
#: 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."
#~ msgid "Size for the desktop icons"
#~ msgstr "Tamaño de los iconos del escritorio"
#~ msgid "Tiny"
#~ msgstr "Diminuto"
#~ msgid "Small"
#~ msgstr "Pequeño"
#~ msgid "Standard"
#~ msgstr "Estándar"
#~ msgid "Large"
#~ msgstr "Grande"
#~ msgid "Show the personal folder in the desktop"
#~ msgstr "Mostrar la carpeta personal en el escritorio"
#~ msgid "Show the trash icon in the desktop"
#~ msgstr "Mostrar la papelera en el escritorio"
#~ msgid "New icons alignment"
#~ msgstr "Alineamiento de nuevos iconos"
#~ msgid "Top-left corner"
#~ msgstr "Esquina superior-izquierda"
#~ msgid "Top-right corner"
#~ msgstr "Esquina superior-derecha"
#~ msgid "Bottom-left corner"
#~ msgstr "Esquina inferior-izquierda"
#~ msgid "Bottom-right corner"
#~ msgstr "Esquina inferior-derecha"
#~ msgid "Highlight the drop place during Drag'n'Drop"
#~ msgstr "Resaltar el lugar de destino durante Drag'n'Drop"
#~ msgid "Add an emblem to soft links"
#~ msgstr "Añadir un emblema a los enlaces simbólicos"
#~ msgid "Add an emblem to .desktop files"
#~ msgstr "Añadir un emblema a los ficheros .desktop"
#~ msgid "Use dark text in icon labels"
#~ msgstr "Utilizar texto oscuro en las etiquetas de los iconos"
#~ msgid "Settings shared with Nautilus"
#~ msgstr "Configuración compartida con Nautilus"
#~ msgid "Click type for open files"
#~ msgstr "Tipo de click para abrir ficheros"
#~ msgid "Single click"
#~ msgstr "Click simple"
#~ msgid "Double click"
#~ msgstr "Click doble"
#~ msgid "Show hidden files"
#~ msgstr "Mostrar archivos ocultos"
#~ msgid "Show a context menu item to delete permanently"
#~ msgstr "Permitir borrar permanentemente desde el menú contextual"
#~ msgid "Action to do when launching a program from the desktop"
#~ msgstr "Acción a realizar al lanzar un programa desde el escritorio"
#~ msgid "Display the content of the file"
#~ msgstr "Mostrar el contenido del fichero"
#~ msgid "Launch the file"
#~ msgstr "Ejecutar el fichero"
#~ msgid "Ask what to do"
#~ msgstr "Preguntar qué hacer"
#~ msgid "Show image thumbnails"
#~ msgstr "Mostrar miniaturas de imágenes"
#~ msgid "Never"
#~ msgstr "Nunca"
#~ msgid "Local files only"
#~ msgstr "Sólo ficheros locales"
#~ msgid "Always"
#~ msgstr "Siempre"
#~ 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 "Error while deleting files"
#~ msgstr "Error al borrar ficheros"
#~ 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 folder {:}."
#~ msgstr "Se produjo un error al intentar borrar la carpeta {:}."
#~ msgid "There was an error while trying to permanently delete the file {:}."
#~ msgstr "Se produjo un error al intentar borrar el archivo {:}."
#, fuzzy
#~ msgid "Show external disk drives in the desktop"
#~ msgstr "Mostrar unidades externas"
#~ 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 "Create"
#~ msgstr "Crear"
#~ 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-43/po/fi.po 0000664 0000000 0000000 00000035553 14216573372 0016067 0 ustar 00root root 0000000 0000000 # Finnish translation for desktop-icons.
# Copyright (C) 2018-2021 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.
#
msgid ""
msgstr ""
"Project-Id-Version: desktop-icons master\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-03-23 11:12+0100\n"
"PO-Revision-Date: 2021-04-08 06:15+0000\n"
"Last-Translator: Timo Jyrinki \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: Launchpad (build 57f1f603f707b9cfa764cae8dd0f3999026b4763)\n"
#: askRenamePopup.js:42
msgid "Folder name"
msgstr "Kansion nimi"
#: askRenamePopup.js:42
msgid "File name"
msgstr "Tiedoston nimi"
#: askRenamePopup.js:49 desktopManager.js:798
msgid "OK"
msgstr "OK"
#: askRenamePopup.js:49
msgid "Rename"
msgstr "Nimeä uudelleen"
#: dbusUtils.js:65
msgid "\"${programName}\" is needed for Desktop Icons"
msgstr ""
#: dbusUtils.js:66
msgid ""
"For this functionality to work in Desktop Icons, you must install "
"\"${programName}\" in your system."
msgstr ""
#: desktopIconsUtil.js:96
msgid "Command not found"
msgstr "Komentoa ei löydy"
#: desktopManager.js:215
msgid "Nautilus File Manager not found"
msgstr "Nautilus-tiedostonhallintaa ei löydy"
#: desktopManager.js:216
msgid "The Nautilus File Manager is mandatory to work with Desktop Icons NG."
msgstr "Nautilus-tiedostonhallinta vaaditaan tämän laajennuksen käyttämiseen."
#: desktopManager.js:761
msgid "Clear Current Selection before New Search"
msgstr ""
#: desktopManager.js:800 fileItemMenu.js:369
msgid "Cancel"
msgstr "Peru"
#: desktopManager.js:802
msgid "Find Files on Desktop"
msgstr ""
#: desktopManager.js:867 desktopManager.js:1490
msgid "New Folder"
msgstr "Uusi kansio"
#: desktopManager.js:871
msgid "New Document"
msgstr "Uusi asiakirja"
#: desktopManager.js:876
msgid "Paste"
msgstr "Liitä"
#: desktopManager.js:880
msgid "Undo"
msgstr "Kumoa"
#: desktopManager.js:884
msgid "Redo"
msgstr "Tee uudelleen"
#: desktopManager.js:890
#, fuzzy
msgid "Select All"
msgstr "Valitse kaikki"
#: desktopManager.js:898
msgid "Show Desktop in Files"
msgstr "Näytä työpöytä tiedostonhallinnassa"
#: desktopManager.js:902 fileItemMenu.js:287
msgid "Open in Terminal"
msgstr "Avaa päätteessä"
#: desktopManager.js:908
msgid "Change Background…"
msgstr "Vaihda taustakuvaa…"
#: desktopManager.js:919
#, fuzzy
msgid "Desktop Icons Settings"
msgstr "Työpöytäkuvakkeiden asetukset"
#: desktopManager.js:923
msgid "Display Settings"
msgstr "Näytön asetukset"
#: desktopManager.js:1548
msgid "Arrange Icons"
msgstr ""
#: desktopManager.js:1552
msgid "Arrange By..."
msgstr ""
#: desktopManager.js:1561
msgid "Keep Arranged..."
msgstr ""
#: desktopManager.js:1565
msgid "Keep Stacked by type..."
msgstr ""
#: desktopManager.js:1570
msgid "Sort Home/Drives/Trash..."
msgstr ""
#: desktopManager.js:1576
msgid "Sort by Name"
msgstr ""
#: desktopManager.js:1578
msgid "Sort by Name Descending"
msgstr ""
#: desktopManager.js:1581
msgid "Sort by Modified Time"
msgstr ""
#: desktopManager.js:1584
msgid "Sort by Type"
msgstr ""
#: desktopManager.js:1587
msgid "Sort by Size"
msgstr ""
#. TRANSLATORS: "Home" is the text that will be shown in the user's personal folder
#: fileItem.js:156
msgid "Home"
msgstr "Koti"
#: fileItem.js:275
msgid "Broken Link"
msgstr ""
#: fileItem.js:276
msgid "Can not open this File because it is a Broken Symlink"
msgstr ""
#: fileItem.js:326
#, fuzzy
msgid "Broken Desktop File"
msgstr "Näytä työpöytä tiedostonhallinnassa"
#: fileItem.js:327
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 ""
#: fileItem.js:333
msgid "Invalid Permissions on Desktop File"
msgstr ""
#: fileItem.js:334
msgid ""
"This .desktop File has incorrect Permissions. Right Click to edit "
"Properties, then:\n"
msgstr ""
#: fileItem.js:336
msgid ""
"\n"
"Set Permissions, in \"Others Access\", \"Read Only\" or \"None\""
msgstr ""
#: fileItem.js:339
msgid ""
"\n"
"Enable option, \"Allow Executing File as a Program\""
msgstr ""
#: fileItem.js:347
msgid ""
"This .desktop file is not trusted, it can not be launched. To enable "
"launching, right-click, then:\n"
"\n"
"Enable \"Allow Launching\""
msgstr ""
#: fileItemMenu.js:118
msgid "Open All..."
msgstr "Avaa kaikki..."
#: fileItemMenu.js:118
msgid "Open"
msgstr "Avaa"
#: fileItemMenu.js:129
msgid "Stack This Type"
msgstr ""
#: fileItemMenu.js:129
msgid "Unstack This Type"
msgstr ""
#: fileItemMenu.js:141
msgid "Scripts"
msgstr "Komentosarjat"
#: fileItemMenu.js:147
msgid "Open All With Other Application..."
msgstr "Avaa kaikki toisella sovelluksella..."
#: fileItemMenu.js:147
msgid "Open With Other Application"
msgstr "Avaa toisella sovelluksella"
#: fileItemMenu.js:153
msgid "Launch using Dedicated Graphics Card"
msgstr "Käynnistä erillisnäytönohjainta käyttäen"
#: fileItemMenu.js:162
msgid "Run as a program"
msgstr ""
#: fileItemMenu.js:170
msgid "Cut"
msgstr "Leikkaa"
#: fileItemMenu.js:175
msgid "Copy"
msgstr "Kopioi"
#: fileItemMenu.js:181
msgid "Rename…"
msgstr "Nimeä uudelleen…"
#: fileItemMenu.js:189
msgid "Move to Trash"
msgstr "Siirrä roskakoriin"
#: fileItemMenu.js:195
msgid "Delete permanently"
msgstr "Poista pysyvästi"
#: fileItemMenu.js:203
msgid "Don't Allow Launching"
msgstr "Älä salli käynnistämistä"
#: fileItemMenu.js:203
msgid "Allow Launching"
msgstr "Salli käynnistäminen"
#: fileItemMenu.js:214
msgid "Empty Trash"
msgstr "Tyhjennä roskakori"
#: fileItemMenu.js:225
msgid "Eject"
msgstr "Irrota"
#: fileItemMenu.js:231
msgid "Unmount"
msgstr "Irrota osio"
#: fileItemMenu.js:241
msgid "Extract Here"
msgstr "Pura tänne"
#: fileItemMenu.js:245
msgid "Extract To..."
msgstr "Pura…"
#: fileItemMenu.js:252
msgid "Send to..."
msgstr "Lähetä…"
#: fileItemMenu.js:258
msgid "Compress {0} file"
msgid_plural "Compress {0} files"
msgstr[0] "Pakkaa {0} tiedosto"
msgstr[1] "Pakkaa {0} tiedostoa"
#: fileItemMenu.js:264
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"
#: fileItemMenu.js:273
msgid "Common Properties"
msgstr "Yhteiset ominaisuudet"
#: fileItemMenu.js:273
msgid "Properties"
msgstr "Ominaisuudet"
#: fileItemMenu.js:280
msgid "Show All in Files"
msgstr "Näytä kaikki Tiedostot-sovelluksessa"
#: fileItemMenu.js:280
msgid "Show in Files"
msgstr "Näytä tiedostonhallinnassa"
#: fileItemMenu.js:365
msgid "Select Extract Destination"
msgstr ""
#: fileItemMenu.js:370
#, fuzzy
msgid "Select"
msgstr "Valitse kaikki"
#: fileItemMenu.js:396
msgid "Can not email a Directory"
msgstr "Kansiota ei voi lähettää sähköpostitse"
#: fileItemMenu.js:397
msgid "Selection includes a Directory, compress the directory to a file first."
msgstr "Valinta sisältää kansion, pakkaa kansio tiedostoksi ensin."
#: preferences.js:67
msgid "Settings"
msgstr "Asetukset"
#: showErrorPopup.js:40
msgid "Close"
msgstr ""
#: 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:45
msgid "Show external drives in the desktop"
msgstr "Näytä erilliset tallennusvälineet työpöydällä"
#: 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:50
msgid "Show network drives in the desktop"
msgstr "Näytä verkkoasemat työpöydällä"
#: 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:55
msgid "Add new drives to the opposite side of the screen"
msgstr "Lisää uudet tallennusvälineet näytön toiselle puolelle"
#: 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 ""
#: 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:90
msgid "Use Nemo to open folders"
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 ""
#~ msgid "Size for the desktop icons"
#~ msgstr "Työpöytäkuvakkeiden koko"
#~ msgid "Tiny"
#~ msgstr "Erittäin pieni"
#~ msgid "Small"
#~ msgstr "Pieni"
#~ msgid "Standard"
#~ msgstr "Tavallinen"
#~ msgid "Large"
#~ msgstr "Suuri"
#~ msgid "Show the personal folder in the desktop"
#~ msgstr "Näytä kotikansio työpöydällä"
#~ msgid "Show the trash icon in the desktop"
#~ msgstr "Näytä roskakorin kuvake työpöydällä"
#~ msgid "New icons alignment"
#~ msgstr "Uusi kuvakkeiden tasaus"
#~ msgid "Top-left corner"
#~ msgstr "Vasen yläkulma"
#~ msgid "Top-right corner"
#~ msgstr "Oikea yläkulma"
#~ msgid "Bottom-left corner"
#~ msgstr "Vasen alakulma"
#~ msgid "Bottom-right corner"
#~ msgstr "Oikea alakulma"
#~ msgid "Highlight the drop place during Drag'n'Drop"
#~ msgstr "Korosta pudotuspaikka vedettäessä ja pudotettaessa"
#~ msgid "Settings shared with Nautilus"
#~ msgstr "Jaa asetukset Nautilus-tiedostonhallinnan kanssa"
#~ msgid "Click type for open files"
#~ msgstr "Napsautustapa tiedostojen avaamiselle"
#~ msgid "Single click"
#~ msgstr "Yksi napsautus"
#~ msgid "Double click"
#~ msgstr "Kaksoisnapsautus"
#~ msgid "Show hidden files"
#~ msgstr "Näytä piilotiedostot"
#~ msgid "Show a context menu item to delete permanently"
#~ msgstr "Näytä valikkokohde pysyvästi poistamiselle"
#~ msgid "Action to do when launching a program from the desktop"
#~ msgstr "Toiminta käynnistettäessä ohjelmaa työpöydältä"
#~ msgid "Display the content of the file"
#~ msgstr "Näytä tiedoston sisältö"
#~ msgid "Launch the file"
#~ msgstr "Käynnistä tiedosto"
#~ msgid "Ask what to do"
#~ msgstr "Kysy mitä tehdään"
#~ msgid "Show image thumbnails"
#~ msgstr "Näytä pienoiskuvat"
#~ msgid "Never"
#~ msgstr "Ei koskaan"
#~ msgid "Local files only"
#~ msgstr "Vain paikalliset tiedostot"
#~ msgid "Always"
#~ msgstr "Aina"
#~ 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 "Error while deleting files"
#~ msgstr "Virhe poistettaessa tiedostoja"
#~ 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-43/po/fr.po 0000664 0000000 0000000 00000040136 14216573372 0016071 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: 2022-03-23 11:12+0100\n"
"PO-Revision-Date: 2022-01-09 19:22+0100\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"
#: askRenamePopup.js:42
msgid "Folder name"
msgstr "Nom du dossier"
#: askRenamePopup.js:42
msgid "File name"
msgstr "Nom du fichier"
#: askRenamePopup.js:49 desktopManager.js:798
msgid "OK"
msgstr "Valider"
#: askRenamePopup.js:49
msgid "Rename"
msgstr "Renommer"
#: dbusUtils.js:65
msgid "\"${programName}\" is needed for Desktop Icons"
msgstr ""
#: dbusUtils.js:66
msgid ""
"For this functionality to work in Desktop Icons, you must install "
"\"${programName}\" in your system."
msgstr ""
#: desktopIconsUtil.js:96
msgid "Command not found"
msgstr "Commande introuvable"
#: desktopManager.js:215
msgid "Nautilus File Manager not found"
msgstr "Gestionnaire de fichiers Nautilus introuvable"
#: desktopManager.js:216
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."
#: desktopManager.js:761
msgid "Clear Current Selection before New Search"
msgstr "Supprimer la sélection courante avant une nouvelle recherche"
#: desktopManager.js:800 fileItemMenu.js:369
msgid "Cancel"
msgstr "Annuler"
#: desktopManager.js:802
msgid "Find Files on Desktop"
msgstr "Rechercher des fichiers sur le bureau"
#: desktopManager.js:867 desktopManager.js:1490
msgid "New Folder"
msgstr "Nouveau dossier"
#: desktopManager.js:871
msgid "New Document"
msgstr "Nouveau document"
#: desktopManager.js:876
msgid "Paste"
msgstr "Coller"
#: desktopManager.js:880
msgid "Undo"
msgstr "Annuler"
#: desktopManager.js:884
msgid "Redo"
msgstr "Refaire"
#: desktopManager.js:890
msgid "Select All"
msgstr "Tout sélectionner"
#: desktopManager.js:898
msgid "Show Desktop in Files"
msgstr "Ouvrir le bureau dans Fichiers"
#: desktopManager.js:902 fileItemMenu.js:287
msgid "Open in Terminal"
msgstr "Ouvrir un terminal"
#: desktopManager.js:908
msgid "Change Background…"
msgstr "Changer l’arrière‑plan…"
#: desktopManager.js:919
msgid "Desktop Icons Settings"
msgstr "Préférences des icônes du bureau"
#: desktopManager.js:923
msgid "Display Settings"
msgstr "Paramètres d’affichage"
#: desktopManager.js:1548
msgid "Arrange Icons"
msgstr "Ordonner les icônes"
#: desktopManager.js:1552
msgid "Arrange By..."
msgstr "Ordonner par…"
#: desktopManager.js:1561
msgid "Keep Arranged..."
msgstr "Conserver l’ordre…"
#: desktopManager.js:1565
msgid "Keep Stacked by type..."
msgstr "Conserver les icônes regoupées par type…"
#: desktopManager.js:1570
msgid "Sort Home/Drives/Trash..."
msgstr "Trier Dossier personnel, Corbeille et volumes…"
#: desktopManager.js:1576
msgid "Sort by Name"
msgstr "Tri par nom"
#: desktopManager.js:1578
msgid "Sort by Name Descending"
msgstr "Tri par nom décroissant"
#: desktopManager.js:1581
msgid "Sort by Modified Time"
msgstr "Tri par date de modification"
#: desktopManager.js:1584
msgid "Sort by Type"
msgstr "Tri par type"
#: desktopManager.js:1587
msgid "Sort by Size"
msgstr "Tri par taille"
#. TRANSLATORS: "Home" is the text that will be shown in the user's personal folder
#: fileItem.js:156
msgid "Home"
msgstr "Dossier personnel"
#: fileItem.js:275
msgid "Broken Link"
msgstr ""
#: fileItem.js:276
msgid "Can not open this File because it is a Broken Symlink"
msgstr ""
#: fileItem.js:326
#, fuzzy
msgid "Broken Desktop File"
msgstr "Ouvrir le bureau dans Fichiers"
#: fileItem.js:327
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 ""
#: fileItem.js:333
msgid "Invalid Permissions on Desktop File"
msgstr ""
#: fileItem.js:334
msgid ""
"This .desktop File has incorrect Permissions. Right Click to edit "
"Properties, then:\n"
msgstr ""
#: fileItem.js:336
msgid ""
"\n"
"Set Permissions, in \"Others Access\", \"Read Only\" or \"None\""
msgstr ""
#: fileItem.js:339
msgid ""
"\n"
"Enable option, \"Allow Executing File as a Program\""
msgstr ""
#: fileItem.js:347
msgid ""
"This .desktop file is not trusted, it can not be launched. To enable "
"launching, right-click, then:\n"
"\n"
"Enable \"Allow Launching\""
msgstr ""
#: fileItemMenu.js:118
msgid "Open All..."
msgstr "Ouvrir tout…"
#: fileItemMenu.js:118
msgid "Open"
msgstr "Ouvrir"
#: fileItemMenu.js:129
msgid "Stack This Type"
msgstr "Regrouper ce type"
#: fileItemMenu.js:129
msgid "Unstack This Type"
msgstr "Dégrouper ce type"
#: fileItemMenu.js:141
msgid "Scripts"
msgstr "Scripts"
#: fileItemMenu.js:147
msgid "Open All With Other Application..."
msgstr "Tout ouvrir avec une autre application…"
#: fileItemMenu.js:147
msgid "Open With Other Application"
msgstr "Ouvrir avec une autre application"
#: fileItemMenu.js:153
msgid "Launch using Dedicated Graphics Card"
msgstr "Lancer avec la carte graphique dédiée"
#: fileItemMenu.js:162
msgid "Run as a program"
msgstr ""
#: fileItemMenu.js:170
msgid "Cut"
msgstr "Couper"
#: fileItemMenu.js:175
msgid "Copy"
msgstr "Copier"
#: fileItemMenu.js:181
msgid "Rename…"
msgstr "Renommer…"
#: fileItemMenu.js:189
msgid "Move to Trash"
msgstr "Mettre à la corbeille"
#: fileItemMenu.js:195
msgid "Delete permanently"
msgstr "Supprimer définitivement"
#: fileItemMenu.js:203
msgid "Don't Allow Launching"
msgstr "Interdire l’exécution"
#: fileItemMenu.js:203
msgid "Allow Launching"
msgstr "Autoriser l’exécution"
#: fileItemMenu.js:214
msgid "Empty Trash"
msgstr "Vider la corbeille"
#: fileItemMenu.js:225
msgid "Eject"
msgstr "Éjecter"
#: fileItemMenu.js:231
msgid "Unmount"
msgstr "Démonter"
#: fileItemMenu.js:241
msgid "Extract Here"
msgstr "Extraire ici"
#: fileItemMenu.js:245
msgid "Extract To..."
msgstr "Extraire vers…"
#: fileItemMenu.js:252
msgid "Send to..."
msgstr "Envoyer vers…"
#: fileItemMenu.js:258
msgid "Compress {0} file"
msgid_plural "Compress {0} files"
msgstr[0] "Compresser {0} fichier"
msgstr[1] "Compresser {0} fichiers"
#: fileItemMenu.js:264
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"
#: fileItemMenu.js:273
msgid "Common Properties"
msgstr "Préférences"
#: fileItemMenu.js:273
msgid "Properties"
msgstr "Propriétés"
#: fileItemMenu.js:280
msgid "Show All in Files"
msgstr "Afficher dans Fichiers"
#: fileItemMenu.js:280
msgid "Show in Files"
msgstr "Montrer dans Fichiers"
#: fileItemMenu.js:365
msgid "Select Extract Destination"
msgstr "Sélectionnez le dossier d’extraction"
#: fileItemMenu.js:370
msgid "Select"
msgstr "Sélectionner"
#: fileItemMenu.js:396
msgid "Can not email a Directory"
msgstr "Impossible d’envoyer un dossier par courriel"
#: fileItemMenu.js:397
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."
#: preferences.js:67
msgid "Settings"
msgstr "Paramètres"
#: showErrorPopup.js:40
msgid "Close"
msgstr "Fermer"
#: 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:45
msgid "Show external drives in the desktop"
msgstr "Afficher les volumes de stockage externes sur le bureau"
#: 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:50
msgid "Show network drives in the desktop"
msgstr "Afficher les volumes réseau sur le bureau"
#: 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: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"
#: 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:90
msgid "Use Nemo to open folders"
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 ""
#~ msgid "Size for the desktop icons"
#~ msgstr "Taille des icônes du bureau"
#~ msgid "Tiny"
#~ msgstr "Minuscule"
#~ msgid "Small"
#~ msgstr "Petite"
#~ msgid "Standard"
#~ msgstr "Normale"
#~ msgid "Large"
#~ msgstr "Grande"
#~ msgid "Show the personal folder in the desktop"
#~ msgstr "Afficher le dossier personnel sur le bureau"
#~ msgid "Show the trash icon in the desktop"
#~ msgstr "Afficher la corbeille sur le bureau"
#~ msgid "New icons alignment"
#~ msgstr "Nouvel alignement des icônes"
#~ msgid "Top-left corner"
#~ msgstr "Coin supérieur gauche"
#~ msgid "Top-right corner"
#~ msgstr "Coin supérieur droit"
#~ msgid "Bottom-left corner"
#~ msgstr "Coin inférieur gauche"
#~ msgid "Bottom-right corner"
#~ msgstr "Coin inférieur droit"
#~ msgid "Highlight the drop place during Drag'n'Drop"
#~ msgstr "Mettre en évidence la destination lors d’un glisser‑déposer"
#~ msgid "Settings shared with Nautilus"
#~ msgstr "Paramètres partagés avec Nautilus"
#~ msgid "Click type for open files"
#~ msgstr "Type de clic pour ouvrir les fichiers"
#~ msgid "Single click"
#~ msgstr "Simple clic"
#~ msgid "Double click"
#~ msgstr "Double clic"
#~ msgid "Show hidden files"
#~ msgstr "Afficher les fichiers cachés"
#~ msgid "Show a context menu item to delete permanently"
#~ msgstr ""
#~ "Afficher un élément « Supprimer définitivement » dans le menu contextuel"
#~ msgid "Action to do when launching a program from the desktop"
#~ msgstr ""
#~ "Action à effectuer lors du lancement d’un programme depuis le bureau"
#~ msgid "Display the content of the file"
#~ msgstr "Afficher le contenu du fichier"
#~ msgid "Launch the file"
#~ msgstr "Exécuter le fichier"
#~ msgid "Ask what to do"
#~ msgstr "Demander quoi faire"
#~ msgid "Show image thumbnails"
#~ msgstr "Afficher les imagettes"
#~ msgid "Never"
#~ msgstr "Jamais"
#~ msgid "Local files only"
#~ msgstr "Fichiers locaux uniquement"
#~ msgid "Always"
#~ msgstr "Toujours"
#~ 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 "Error while deleting files"
#~ msgstr "Erreur lors de la suppression des fichiers"
#~ 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-43/po/fur.po 0000664 0000000 0000000 00000031574 14216573372 0016264 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: 2022-03-23 11:12+0100\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"
#: askRenamePopup.js:42
#, fuzzy
msgid "Folder name"
msgstr "Gnûf non de cartele"
#: askRenamePopup.js:42
#, fuzzy
msgid "File name"
msgstr "Cambie non..."
#: askRenamePopup.js:49 desktopManager.js:798
msgid "OK"
msgstr "Va ben"
#: askRenamePopup.js:49
#, fuzzy
msgid "Rename"
msgstr "Cambie non..."
#: dbusUtils.js:65
msgid "\"${programName}\" is needed for Desktop Icons"
msgstr ""
#: dbusUtils.js:66
msgid ""
"For this functionality to work in Desktop Icons, you must install "
"\"${programName}\" in your system."
msgstr ""
#: desktopIconsUtil.js:96
msgid "Command not found"
msgstr ""
#: desktopManager.js:215
msgid "Nautilus File Manager not found"
msgstr ""
#: desktopManager.js:216
msgid "The Nautilus File Manager is mandatory to work with Desktop Icons NG."
msgstr ""
#: desktopManager.js:761
msgid "Clear Current Selection before New Search"
msgstr ""
#: desktopManager.js:800 fileItemMenu.js:369
msgid "Cancel"
msgstr "Anule"
#: desktopManager.js:802
msgid "Find Files on Desktop"
msgstr ""
#: desktopManager.js:867 desktopManager.js:1490
msgid "New Folder"
msgstr "Gnove cartele"
#: desktopManager.js:871
msgid "New Document"
msgstr "Gnûf Document"
#: desktopManager.js:876
msgid "Paste"
msgstr "Tache"
#: desktopManager.js:880
msgid "Undo"
msgstr "Anule"
#: desktopManager.js:884
msgid "Redo"
msgstr "Torne fâ"
#: desktopManager.js:890
#, fuzzy
msgid "Select All"
msgstr "Selezione dut"
#: desktopManager.js:898
msgid "Show Desktop in Files"
msgstr "Mostre Scritori in File"
#: desktopManager.js:902 fileItemMenu.js:287
msgid "Open in Terminal"
msgstr "Vierç in Terminâl"
#: desktopManager.js:908
msgid "Change Background…"
msgstr "Cambie sfont…"
#: desktopManager.js:919
#, fuzzy
msgid "Desktop Icons Settings"
msgstr "Impostazions visôr"
#: desktopManager.js:923
msgid "Display Settings"
msgstr "Impostazions visôr"
#: desktopManager.js:1548
msgid "Arrange Icons"
msgstr ""
#: desktopManager.js:1552
msgid "Arrange By..."
msgstr ""
#: desktopManager.js:1561
msgid "Keep Arranged..."
msgstr ""
#: desktopManager.js:1565
msgid "Keep Stacked by type..."
msgstr ""
#: desktopManager.js:1570
msgid "Sort Home/Drives/Trash..."
msgstr ""
#: desktopManager.js:1576
msgid "Sort by Name"
msgstr ""
#: desktopManager.js:1578
msgid "Sort by Name Descending"
msgstr ""
#: desktopManager.js:1581
msgid "Sort by Modified Time"
msgstr ""
#: desktopManager.js:1584
msgid "Sort by Type"
msgstr ""
#: desktopManager.js:1587
msgid "Sort by Size"
msgstr ""
#. TRANSLATORS: "Home" is the text that will be shown in the user's personal folder
#: fileItem.js:156
msgid "Home"
msgstr "Cjase"
#: fileItem.js:275
msgid "Broken Link"
msgstr ""
#: fileItem.js:276
msgid "Can not open this File because it is a Broken Symlink"
msgstr ""
#: fileItem.js:326
#, fuzzy
msgid "Broken Desktop File"
msgstr "Mostre Scritori in File"
#: fileItem.js:327
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 ""
#: fileItem.js:333
msgid "Invalid Permissions on Desktop File"
msgstr ""
#: fileItem.js:334
msgid ""
"This .desktop File has incorrect Permissions. Right Click to edit "
"Properties, then:\n"
msgstr ""
#: fileItem.js:336
msgid ""
"\n"
"Set Permissions, in \"Others Access\", \"Read Only\" or \"None\""
msgstr ""
#: fileItem.js:339
msgid ""
"\n"
"Enable option, \"Allow Executing File as a Program\""
msgstr ""
#: fileItem.js:347
msgid ""
"This .desktop file is not trusted, it can not be launched. To enable "
"launching, right-click, then:\n"
"\n"
"Enable \"Allow Launching\""
msgstr ""
#: fileItemMenu.js:118
msgid "Open All..."
msgstr ""
#: fileItemMenu.js:118
msgid "Open"
msgstr "Vierç"
#: fileItemMenu.js:129
msgid "Stack This Type"
msgstr ""
#: fileItemMenu.js:129
msgid "Unstack This Type"
msgstr ""
#: fileItemMenu.js:141
msgid "Scripts"
msgstr "Script"
#: fileItemMenu.js:147
#, fuzzy
msgid "Open All With Other Application..."
msgstr "Vierç cuntune altre aplicazion"
#: fileItemMenu.js:147
msgid "Open With Other Application"
msgstr "Vierç cuntune altre aplicazion"
#: fileItemMenu.js:153
msgid "Launch using Dedicated Graphics Card"
msgstr ""
#: fileItemMenu.js:162
msgid "Run as a program"
msgstr ""
#: fileItemMenu.js:170
msgid "Cut"
msgstr "Taie"
#: fileItemMenu.js:175
msgid "Copy"
msgstr "Copie"
#: fileItemMenu.js:181
msgid "Rename…"
msgstr "Cambie non..."
#: fileItemMenu.js:189
msgid "Move to Trash"
msgstr "Sposte te scovacere"
#: fileItemMenu.js:195
msgid "Delete permanently"
msgstr "Elimine par simpri"
#: fileItemMenu.js:203
#, fuzzy
msgid "Don't Allow Launching"
msgstr "No sta permeti inviament"
#: fileItemMenu.js:203
msgid "Allow Launching"
msgstr "Permet inviament"
#: fileItemMenu.js:214
msgid "Empty Trash"
msgstr "Disvuede scovacere"
#: fileItemMenu.js:225
msgid "Eject"
msgstr "Pare fûr"
#: fileItemMenu.js:231
msgid "Unmount"
msgstr "Dismonte"
#: fileItemMenu.js:241
msgid "Extract Here"
msgstr "Tire fûr ca"
#: fileItemMenu.js:245
msgid "Extract To..."
msgstr "Tire fûr su…"
#: fileItemMenu.js:252
msgid "Send to..."
msgstr "Invie a…"
#: fileItemMenu.js:258
msgid "Compress {0} file"
msgid_plural "Compress {0} files"
msgstr[0] ""
msgstr[1] ""
#: fileItemMenu.js:264
msgid "New Folder with {0} item"
msgid_plural "New Folder with {0} items"
msgstr[0] ""
msgstr[1] ""
#: fileItemMenu.js:273
#, fuzzy
msgid "Common Properties"
msgstr "Propietâts"
#: fileItemMenu.js:273
msgid "Properties"
msgstr "Propietâts"
#: fileItemMenu.js:280
#, fuzzy
msgid "Show All in Files"
msgstr "Mostre in File"
#: fileItemMenu.js:280
msgid "Show in Files"
msgstr "Mostre in File"
#: fileItemMenu.js:365
msgid "Select Extract Destination"
msgstr ""
#: fileItemMenu.js:370
msgid "Select"
msgstr "Selezione"
#: fileItemMenu.js:396
msgid "Can not email a Directory"
msgstr ""
#: fileItemMenu.js:397
msgid "Selection includes a Directory, compress the directory to a file first."
msgstr ""
#: preferences.js:67
msgid "Settings"
msgstr "Impostazions"
#: showErrorPopup.js:40
msgid "Close"
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:45
#, fuzzy
msgid "Show external drives in the desktop"
msgstr "Mostre la cartele personâl intal scritori"
#: 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:50
#, fuzzy
msgid "Show network drives in the desktop"
msgstr "Mostre la cartele personâl intal scritori."
#: 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:55
msgid "Add new drives to the opposite side of the screen"
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:90
msgid "Use Nemo to open folders"
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 ""
#~ msgid "Size for the desktop icons"
#~ msgstr "Dimension pes iconis dal scritori"
#~ msgid "Small"
#~ msgstr "Piçule"
#~ msgid "Standard"
#~ msgstr "Standard"
#~ msgid "Large"
#~ msgstr "Largje"
#~ msgid "Show the personal folder in the desktop"
#~ msgstr "Mostre la cartele personâl intal scritori"
#~ msgid "Show the trash icon in the desktop"
#~ msgstr "Mostre la icone de scovacere intal scritori"
#, fuzzy
#~ msgid "New icons alignment"
#~ msgstr "Dimension icone"
#, fuzzy
#~ msgid "Show hidden files"
#~ msgstr "Mostre in File"
#~ 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 "Create"
#~ msgstr "Cree"
#~ 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-43/po/he.po 0000664 0000000 0000000 00000031227 14216573372 0016057 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: 2022-03-23 11:12+0100\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"
#: askRenamePopup.js:42
msgid "Folder name"
msgstr "שם התיקייה"
#: askRenamePopup.js:42
msgid "File name"
msgstr "שם הקובץ"
#: askRenamePopup.js:49 desktopManager.js:798
msgid "OK"
msgstr "אישור"
#: askRenamePopup.js:49
msgid "Rename"
msgstr "שינוי שם"
#: dbusUtils.js:65
msgid "\"${programName}\" is needed for Desktop Icons"
msgstr ""
#: dbusUtils.js:66
msgid ""
"For this functionality to work in Desktop Icons, you must install "
"\"${programName}\" in your system."
msgstr ""
#: desktopIconsUtil.js:96
msgid "Command not found"
msgstr "הפקודה לא נמצאה"
#: desktopManager.js:215
msgid "Nautilus File Manager not found"
msgstr "מנהל הקבצים Nautilus לא נמצא"
#: desktopManager.js:216
msgid "The Nautilus File Manager is mandatory to work with Desktop Icons NG."
msgstr ""
#: desktopManager.js:761
msgid "Clear Current Selection before New Search"
msgstr ""
#: desktopManager.js:800 fileItemMenu.js:369
msgid "Cancel"
msgstr "ביטול"
#: desktopManager.js:802
msgid "Find Files on Desktop"
msgstr ""
#: desktopManager.js:867 desktopManager.js:1490
msgid "New Folder"
msgstr "תיקיה חדשה"
#: desktopManager.js:871
msgid "New Document"
msgstr "מסמך חדש"
#: desktopManager.js:876
msgid "Paste"
msgstr "הדבקה"
#: desktopManager.js:880
msgid "Undo"
msgstr "ביטול פעולה"
#: desktopManager.js:884
msgid "Redo"
msgstr "ביצוע חוזר"
#: desktopManager.js:890
#, fuzzy
msgid "Select All"
msgstr "לבחור הכול"
#: desktopManager.js:898
msgid "Show Desktop in Files"
msgstr ""
#: desktopManager.js:902 fileItemMenu.js:287
msgid "Open in Terminal"
msgstr "פתיחה במסוף"
#: desktopManager.js:908
msgid "Change Background…"
msgstr "שינוי הרקע…"
#: desktopManager.js:919
#, fuzzy
msgid "Desktop Icons Settings"
msgstr "הגדרות תצוגה"
#: desktopManager.js:923
msgid "Display Settings"
msgstr "הגדרות תצוגה"
#: desktopManager.js:1548
msgid "Arrange Icons"
msgstr ""
#: desktopManager.js:1552
msgid "Arrange By..."
msgstr ""
#: desktopManager.js:1561
msgid "Keep Arranged..."
msgstr ""
#: desktopManager.js:1565
msgid "Keep Stacked by type..."
msgstr ""
#: desktopManager.js:1570
msgid "Sort Home/Drives/Trash..."
msgstr ""
#: desktopManager.js:1576
msgid "Sort by Name"
msgstr ""
#: desktopManager.js:1578
msgid "Sort by Name Descending"
msgstr ""
#: desktopManager.js:1581
msgid "Sort by Modified Time"
msgstr ""
#: desktopManager.js:1584
msgid "Sort by Type"
msgstr ""
#: desktopManager.js:1587
msgid "Sort by Size"
msgstr ""
#. TRANSLATORS: "Home" is the text that will be shown in the user's personal folder
#: fileItem.js:156
msgid "Home"
msgstr "בית"
#: fileItem.js:275
msgid "Broken Link"
msgstr ""
#: fileItem.js:276
msgid "Can not open this File because it is a Broken Symlink"
msgstr ""
#: fileItem.js:326
msgid "Broken Desktop File"
msgstr ""
#: fileItem.js:327
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 ""
#: fileItem.js:333
msgid "Invalid Permissions on Desktop File"
msgstr ""
#: fileItem.js:334
msgid ""
"This .desktop File has incorrect Permissions. Right Click to edit "
"Properties, then:\n"
msgstr ""
#: fileItem.js:336
msgid ""
"\n"
"Set Permissions, in \"Others Access\", \"Read Only\" or \"None\""
msgstr ""
#: fileItem.js:339
msgid ""
"\n"
"Enable option, \"Allow Executing File as a Program\""
msgstr ""
#: fileItem.js:347
msgid ""
"This .desktop file is not trusted, it can not be launched. To enable "
"launching, right-click, then:\n"
"\n"
"Enable \"Allow Launching\""
msgstr ""
#: fileItemMenu.js:118
msgid "Open All..."
msgstr "לפתוח הכול..."
#: fileItemMenu.js:118
msgid "Open"
msgstr "פתיחה"
#: fileItemMenu.js:129
msgid "Stack This Type"
msgstr ""
#: fileItemMenu.js:129
msgid "Unstack This Type"
msgstr ""
#: fileItemMenu.js:141
msgid "Scripts"
msgstr "תסריטים"
#: fileItemMenu.js:147
msgid "Open All With Other Application..."
msgstr "לפתוח הכול באמצעות יישום אחר..."
#: fileItemMenu.js:147
msgid "Open With Other Application"
msgstr "פתיחה באמצעות יישום אחר"
#: fileItemMenu.js:153
msgid "Launch using Dedicated Graphics Card"
msgstr ""
#: fileItemMenu.js:162
msgid "Run as a program"
msgstr ""
#: fileItemMenu.js:170
msgid "Cut"
msgstr "גזירה"
#: fileItemMenu.js:175
msgid "Copy"
msgstr "העתקה"
#: fileItemMenu.js:181
msgid "Rename…"
msgstr "שינוי שם…"
#: fileItemMenu.js:189
msgid "Move to Trash"
msgstr "העברה לאשפה"
#: fileItemMenu.js:195
msgid "Delete permanently"
msgstr "מחיקה לצמיתות"
#: fileItemMenu.js:203
msgid "Don't Allow Launching"
msgstr "לא לאפשר הפעלה"
#: fileItemMenu.js:203
msgid "Allow Launching"
msgstr "לאפשר הפעלה"
#: fileItemMenu.js:214
msgid "Empty Trash"
msgstr "פינוי האשפה"
#: fileItemMenu.js:225
msgid "Eject"
msgstr "שליפה"
#: fileItemMenu.js:231
msgid "Unmount"
msgstr "ניתוק"
#: fileItemMenu.js:241
msgid "Extract Here"
msgstr ""
#: fileItemMenu.js:245
msgid "Extract To..."
msgstr ""
#: fileItemMenu.js:252
msgid "Send to..."
msgstr "שליחה אל..."
#: fileItemMenu.js:258
msgid "Compress {0} file"
msgid_plural "Compress {0} files"
msgstr[0] "דחיסת קובץ {0}"
msgstr[1] "דחיסת {0} קבצים"
msgstr[2] "דחיסת {0} קבצים"
msgstr[3] "דחיסת {0} קבצים"
#: fileItemMenu.js:264
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} פריטים"
#: fileItemMenu.js:273
msgid "Common Properties"
msgstr ""
#: fileItemMenu.js:273
msgid "Properties"
msgstr "מאפיינים"
#: fileItemMenu.js:280
msgid "Show All in Files"
msgstr ""
#: fileItemMenu.js:280
msgid "Show in Files"
msgstr ""
#: fileItemMenu.js:365
msgid "Select Extract Destination"
msgstr ""
#: fileItemMenu.js:370
#, fuzzy
msgid "Select"
msgstr "לבחור הכול"
#: fileItemMenu.js:396
msgid "Can not email a Directory"
msgstr ""
#: fileItemMenu.js:397
msgid "Selection includes a Directory, compress the directory to a file first."
msgstr ""
#: preferences.js:67
msgid "Settings"
msgstr "הגדרות"
#: showErrorPopup.js:40
msgid "Close"
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:45
msgid "Show external drives in the desktop"
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:50
msgid "Show network drives in the desktop"
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:55
msgid "Add new drives to the opposite side of the screen"
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:90
msgid "Use Nemo to open folders"
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 ""
#~ msgid "Size for the desktop icons"
#~ msgstr "גודל הסמלים בשולחן העבודה"
#~ msgid "Tiny"
#~ msgstr "פצפון"
#~ msgid "Small"
#~ msgstr "קטן"
#~ msgid "Standard"
#~ msgstr "רגיל"
#~ msgid "Large"
#~ msgstr "גדול"
#~ msgid "Single click"
#~ msgstr "לחיצה יחידה"
#~ msgid "Double click"
#~ msgstr "לחיצה כפולה"
#~ msgid "Show hidden files"
#~ msgstr "הצגת קבצים מוסתרים"
#~ msgid "Launch the file"
#~ msgstr "הפעלת הקובץ"
#~ msgid "Ask what to do"
#~ msgstr "לשאול מה לעשות"
#~ msgid "Show image thumbnails"
#~ msgstr "הצגת תמונות מממוזערות"
#~ msgid "Never"
#~ msgstr "אף פעם"
#~ msgid "Local files only"
#~ msgstr "לקבצים מקומיים בלבד"
#~ msgid "Always"
#~ 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 "Error while deleting files"
#~ 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-43/po/hr.po 0000664 0000000 0000000 00000031701 14216573372 0016071 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: 2022-03-23 11:12+0100\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"
#: askRenamePopup.js:42
#, fuzzy
msgid "Folder name"
msgstr "Novi naziv mape"
#: askRenamePopup.js:42
#, fuzzy
msgid "File name"
msgstr "Preimenuj…"
#: askRenamePopup.js:49 desktopManager.js:798
msgid "OK"
msgstr "U redu"
#: askRenamePopup.js:49
#, fuzzy
msgid "Rename"
msgstr "Preimenuj…"
#: dbusUtils.js:65
msgid "\"${programName}\" is needed for Desktop Icons"
msgstr ""
#: dbusUtils.js:66
msgid ""
"For this functionality to work in Desktop Icons, you must install "
"\"${programName}\" in your system."
msgstr ""
#: desktopIconsUtil.js:96
msgid "Command not found"
msgstr "Naredba nije pronađena"
#: desktopManager.js:215
msgid "Nautilus File Manager not found"
msgstr ""
#: desktopManager.js:216
msgid "The Nautilus File Manager is mandatory to work with Desktop Icons NG."
msgstr ""
#: desktopManager.js:761
msgid "Clear Current Selection before New Search"
msgstr ""
#: desktopManager.js:800 fileItemMenu.js:369
msgid "Cancel"
msgstr "Odustani"
#: desktopManager.js:802
msgid "Find Files on Desktop"
msgstr ""
#: desktopManager.js:867 desktopManager.js:1490
msgid "New Folder"
msgstr "Nova mapa"
#: desktopManager.js:871
msgid "New Document"
msgstr "Novi dokument"
#: desktopManager.js:876
msgid "Paste"
msgstr "Zalijepi"
#: desktopManager.js:880
msgid "Undo"
msgstr "Poništi"
#: desktopManager.js:884
msgid "Redo"
msgstr "Ponovi"
#: desktopManager.js:890
#, fuzzy
msgid "Select All"
msgstr "Odaberi sve"
#: desktopManager.js:898
msgid "Show Desktop in Files"
msgstr "Prikaži radnu površinu u Datotekama"
#: desktopManager.js:902 fileItemMenu.js:287
msgid "Open in Terminal"
msgstr "Otvori u Terminalu"
#: desktopManager.js:908
msgid "Change Background…"
msgstr "Promijeni pozadinu…"
#: desktopManager.js:919
#, fuzzy
msgid "Desktop Icons Settings"
msgstr "Postavke zaslona"
#: desktopManager.js:923
msgid "Display Settings"
msgstr "Postavke zaslona"
#: desktopManager.js:1548
msgid "Arrange Icons"
msgstr ""
#: desktopManager.js:1552
msgid "Arrange By..."
msgstr ""
#: desktopManager.js:1561
msgid "Keep Arranged..."
msgstr ""
#: desktopManager.js:1565
msgid "Keep Stacked by type..."
msgstr ""
#: desktopManager.js:1570
msgid "Sort Home/Drives/Trash..."
msgstr ""
#: desktopManager.js:1576
msgid "Sort by Name"
msgstr ""
#: desktopManager.js:1578
msgid "Sort by Name Descending"
msgstr ""
#: desktopManager.js:1581
msgid "Sort by Modified Time"
msgstr ""
#: desktopManager.js:1584
msgid "Sort by Type"
msgstr ""
#: desktopManager.js:1587
msgid "Sort by Size"
msgstr ""
#. TRANSLATORS: "Home" is the text that will be shown in the user's personal folder
#: fileItem.js:156
msgid "Home"
msgstr "Osobna mapa"
#: fileItem.js:275
msgid "Broken Link"
msgstr ""
#: fileItem.js:276
msgid "Can not open this File because it is a Broken Symlink"
msgstr ""
#: fileItem.js:326
#, fuzzy
msgid "Broken Desktop File"
msgstr "Prikaži radnu površinu u Datotekama"
#: fileItem.js:327
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 ""
#: fileItem.js:333
msgid "Invalid Permissions on Desktop File"
msgstr ""
#: fileItem.js:334
msgid ""
"This .desktop File has incorrect Permissions. Right Click to edit "
"Properties, then:\n"
msgstr ""
#: fileItem.js:336
msgid ""
"\n"
"Set Permissions, in \"Others Access\", \"Read Only\" or \"None\""
msgstr ""
#: fileItem.js:339
msgid ""
"\n"
"Enable option, \"Allow Executing File as a Program\""
msgstr ""
#: fileItem.js:347
msgid ""
"This .desktop file is not trusted, it can not be launched. To enable "
"launching, right-click, then:\n"
"\n"
"Enable \"Allow Launching\""
msgstr ""
#: fileItemMenu.js:118
msgid "Open All..."
msgstr ""
#: fileItemMenu.js:118
msgid "Open"
msgstr "Otvori"
#: fileItemMenu.js:129
msgid "Stack This Type"
msgstr ""
#: fileItemMenu.js:129
msgid "Unstack This Type"
msgstr ""
#: fileItemMenu.js:141
msgid "Scripts"
msgstr ""
#: fileItemMenu.js:147
#, fuzzy
msgid "Open All With Other Application..."
msgstr "Otvori s drugom aplikacijom"
#: fileItemMenu.js:147
msgid "Open With Other Application"
msgstr "Otvori s drugom aplikacijom"
#: fileItemMenu.js:153
msgid "Launch using Dedicated Graphics Card"
msgstr ""
#: fileItemMenu.js:162
msgid "Run as a program"
msgstr ""
#: fileItemMenu.js:170
msgid "Cut"
msgstr "Izreži"
#: fileItemMenu.js:175
msgid "Copy"
msgstr "Kopiraj"
#: fileItemMenu.js:181
msgid "Rename…"
msgstr "Preimenuj…"
#: fileItemMenu.js:189
msgid "Move to Trash"
msgstr "Premjesti u smeće"
#: fileItemMenu.js:195
msgid "Delete permanently"
msgstr "Obriši trajno"
#: fileItemMenu.js:203
#, fuzzy
msgid "Don't Allow Launching"
msgstr "Ne dopuštaj pokretanje"
#: fileItemMenu.js:203
msgid "Allow Launching"
msgstr "Dopusti pokretanje"
#: fileItemMenu.js:214
msgid "Empty Trash"
msgstr "Isprazni smeće"
#: fileItemMenu.js:225
msgid "Eject"
msgstr "Izbaci"
#: fileItemMenu.js:231
msgid "Unmount"
msgstr "Odmontiraj"
#: fileItemMenu.js:241
msgid "Extract Here"
msgstr "Raspakiraj ovdje"
#: fileItemMenu.js:245
msgid "Extract To..."
msgstr "Raspakiraj u…"
#: fileItemMenu.js:252
msgid "Send to..."
msgstr "Pošalji u…"
#: fileItemMenu.js:258
msgid "Compress {0} file"
msgid_plural "Compress {0} files"
msgstr[0] ""
msgstr[1] ""
#: fileItemMenu.js:264
msgid "New Folder with {0} item"
msgid_plural "New Folder with {0} items"
msgstr[0] ""
msgstr[1] ""
#: fileItemMenu.js:273
#, fuzzy
msgid "Common Properties"
msgstr "Svojstva"
#: fileItemMenu.js:273
msgid "Properties"
msgstr "Svojstva"
#: fileItemMenu.js:280
#, fuzzy
msgid "Show All in Files"
msgstr "Prikaži u Datotekama"
#: fileItemMenu.js:280
msgid "Show in Files"
msgstr "Prikaži u Datotekama"
#: fileItemMenu.js:365
msgid "Select Extract Destination"
msgstr ""
#: fileItemMenu.js:370
msgid "Select"
msgstr "Odaberi"
#: fileItemMenu.js:396
msgid "Can not email a Directory"
msgstr ""
#: fileItemMenu.js:397
msgid "Selection includes a Directory, compress the directory to a file first."
msgstr ""
#: preferences.js:67
msgid "Settings"
msgstr "Postavke"
#: showErrorPopup.js:40
msgid "Close"
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:45
#, fuzzy
msgid "Show external drives in the desktop"
msgstr "Prikaži osobnu mapu na radnoj površini"
#: 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:50
#, fuzzy
msgid "Show network drives in the desktop"
msgstr "Prikaži osobnu mapu na radnoj površini."
#: 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:55
msgid "Add new drives to the opposite side of the screen"
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:90
msgid "Use Nemo to open folders"
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 ""
#~ msgid "Size for the desktop icons"
#~ msgstr "Veličina ikona radne površine"
#~ msgid "Small"
#~ msgstr "Male"
#~ msgid "Standard"
#~ msgstr "Standardne"
#~ msgid "Large"
#~ msgstr "Velike"
#~ msgid "Show the personal folder in the desktop"
#~ msgstr "Prikaži osobnu mapu na radnoj površini"
#~ msgid "Show the trash icon in the desktop"
#~ msgstr "Prikaži mapu smeća na radnoj površini"
#, fuzzy
#~ msgid "New icons alignment"
#~ msgstr "Veličina ikona"
#, fuzzy
#~ msgid "Show hidden files"
#~ msgstr "Prikaži u Datotekama"
#~ 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 "Create"
#~ msgstr "Stvori"
#~ 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-43/po/hu.po 0000664 0000000 0000000 00000035766 14216573372 0016113 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: 2022-03-23 11:12+0100\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"
#: askRenamePopup.js:42
msgid "Folder name"
msgstr "Mappanév"
#: askRenamePopup.js:42
msgid "File name"
msgstr "Fájlnév"
#: askRenamePopup.js:49 desktopManager.js:798
msgid "OK"
msgstr "Rendben"
#: askRenamePopup.js:49
msgid "Rename"
msgstr "Átnevezés"
#: dbusUtils.js:65
msgid "\"${programName}\" is needed for Desktop Icons"
msgstr ""
#: dbusUtils.js:66
msgid ""
"For this functionality to work in Desktop Icons, you must install "
"\"${programName}\" in your system."
msgstr ""
#: desktopIconsUtil.js:96
msgid "Command not found"
msgstr "A parancs nem található"
#: desktopManager.js:215
msgid "Nautilus File Manager not found"
msgstr "A Nautilus fájlkezelő nem található"
#: desktopManager.js:216
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."
#: desktopManager.js:761
msgid "Clear Current Selection before New Search"
msgstr ""
#: desktopManager.js:800 fileItemMenu.js:369
msgid "Cancel"
msgstr "Mégse"
#: desktopManager.js:802
msgid "Find Files on Desktop"
msgstr ""
#: desktopManager.js:867 desktopManager.js:1490
msgid "New Folder"
msgstr "Új mappa"
#: desktopManager.js:871
msgid "New Document"
msgstr "Új dokumentum"
#: desktopManager.js:876
msgid "Paste"
msgstr "Beillesztés"
#: desktopManager.js:880
msgid "Undo"
msgstr "Visszavonás"
#: desktopManager.js:884
msgid "Redo"
msgstr "Újra"
#: desktopManager.js:890
#, fuzzy
msgid "Select All"
msgstr "Összes kijelölése"
#: desktopManager.js:898
msgid "Show Desktop in Files"
msgstr "Asztal megjelenítése a Fájlokban"
#: desktopManager.js:902 fileItemMenu.js:287
msgid "Open in Terminal"
msgstr "Megnyitás terminálban"
#: desktopManager.js:908
msgid "Change Background…"
msgstr "Háttér megváltoztatása…"
#: desktopManager.js:919
#, fuzzy
msgid "Desktop Icons Settings"
msgstr "Asztali ikonok beállítása"
#: desktopManager.js:923
msgid "Display Settings"
msgstr "Megjelenítés beállításai"
#: desktopManager.js:1548
msgid "Arrange Icons"
msgstr ""
#: desktopManager.js:1552
msgid "Arrange By..."
msgstr ""
#: desktopManager.js:1561
msgid "Keep Arranged..."
msgstr ""
#: desktopManager.js:1565
msgid "Keep Stacked by type..."
msgstr ""
#: desktopManager.js:1570
msgid "Sort Home/Drives/Trash..."
msgstr ""
#: desktopManager.js:1576
msgid "Sort by Name"
msgstr ""
#: desktopManager.js:1578
msgid "Sort by Name Descending"
msgstr ""
#: desktopManager.js:1581
msgid "Sort by Modified Time"
msgstr ""
#: desktopManager.js:1584
msgid "Sort by Type"
msgstr ""
#: desktopManager.js:1587
msgid "Sort by Size"
msgstr ""
#. TRANSLATORS: "Home" is the text that will be shown in the user's personal folder
#: fileItem.js:156
msgid "Home"
msgstr "Saját mappa"
#: fileItem.js:275
msgid "Broken Link"
msgstr ""
#: fileItem.js:276
msgid "Can not open this File because it is a Broken Symlink"
msgstr ""
#: fileItem.js:326
#, fuzzy
msgid "Broken Desktop File"
msgstr "Asztal megjelenítése a Fájlokban"
#: fileItem.js:327
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 ""
#: fileItem.js:333
msgid "Invalid Permissions on Desktop File"
msgstr ""
#: fileItem.js:334
msgid ""
"This .desktop File has incorrect Permissions. Right Click to edit "
"Properties, then:\n"
msgstr ""
#: fileItem.js:336
msgid ""
"\n"
"Set Permissions, in \"Others Access\", \"Read Only\" or \"None\""
msgstr ""
#: fileItem.js:339
msgid ""
"\n"
"Enable option, \"Allow Executing File as a Program\""
msgstr ""
#: fileItem.js:347
msgid ""
"This .desktop file is not trusted, it can not be launched. To enable "
"launching, right-click, then:\n"
"\n"
"Enable \"Allow Launching\""
msgstr ""
#: fileItemMenu.js:118
msgid "Open All..."
msgstr "Összes megnyitása…"
#: fileItemMenu.js:118
msgid "Open"
msgstr "Megnyitás"
#: fileItemMenu.js:129
msgid "Stack This Type"
msgstr ""
#: fileItemMenu.js:129
msgid "Unstack This Type"
msgstr ""
#: fileItemMenu.js:141
msgid "Scripts"
msgstr "Parancsfájlok"
#: fileItemMenu.js:147
msgid "Open All With Other Application..."
msgstr "Összes megnyitása egyéb alkalmazással…"
#: fileItemMenu.js:147
msgid "Open With Other Application"
msgstr "Megnyitás egyéb alkalmazással"
#: fileItemMenu.js:153
msgid "Launch using Dedicated Graphics Card"
msgstr "Futtatás a dedikált videokártyával"
#: fileItemMenu.js:162
msgid "Run as a program"
msgstr ""
#: fileItemMenu.js:170
msgid "Cut"
msgstr "Kivágás"
#: fileItemMenu.js:175
msgid "Copy"
msgstr "Másolás"
#: fileItemMenu.js:181
msgid "Rename…"
msgstr "Átnevezés…"
#: fileItemMenu.js:189
msgid "Move to Trash"
msgstr "Áthelyezés a Kukába"
#: fileItemMenu.js:195
msgid "Delete permanently"
msgstr "Végleges törlés"
#: fileItemMenu.js:203
msgid "Don't Allow Launching"
msgstr "Ne engedélyezze az indítást"
#: fileItemMenu.js:203
msgid "Allow Launching"
msgstr "Indítás engedélyezése"
#: fileItemMenu.js:214
msgid "Empty Trash"
msgstr "Kuka ürítése"
#: fileItemMenu.js:225
msgid "Eject"
msgstr "Kiadás"
#: fileItemMenu.js:231
msgid "Unmount"
msgstr "Leválasztás"
#: fileItemMenu.js:241
msgid "Extract Here"
msgstr "Kibontás ide"
#: fileItemMenu.js:245
msgid "Extract To..."
msgstr "Kibontás…"
#: fileItemMenu.js:252
msgid "Send to..."
msgstr "Küldés…"
#: fileItemMenu.js:258
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"
#: fileItemMenu.js:264
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"
#: fileItemMenu.js:273
msgid "Common Properties"
msgstr "Gyakori tulajdonságok"
#: fileItemMenu.js:273
msgid "Properties"
msgstr "Tulajdonságok"
#: fileItemMenu.js:280
msgid "Show All in Files"
msgstr "Összes megjelenítése a Fájlokban"
#: fileItemMenu.js:280
msgid "Show in Files"
msgstr "Megjelenítés a Fájlokban"
#: fileItemMenu.js:365
msgid "Select Extract Destination"
msgstr ""
#: fileItemMenu.js:370
#, fuzzy
msgid "Select"
msgstr "Összes kijelölése"
#: fileItemMenu.js:396
msgid "Can not email a Directory"
msgstr "Könyvtár nem küldhető el e-mailben"
#: fileItemMenu.js:397
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."
#: preferences.js:67
msgid "Settings"
msgstr "Beállítások"
#: showErrorPopup.js:40
msgid "Close"
msgstr ""
#: 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:45
msgid "Show external drives in the desktop"
msgstr "A külső meghajtók megjelenítése az asztalon"
#: 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:50
msgid "Show network drives in the desktop"
msgstr "A hálózati meghajtók megjelenítése az asztalon."
#: 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: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"
#: 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:90
msgid "Use Nemo to open folders"
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 ""
#~ msgid "Size for the desktop icons"
#~ msgstr "Az asztali ikonok mérete"
#~ msgid "Tiny"
#~ msgstr "Apró"
#~ msgid "Small"
#~ msgstr "Kicsi"
#~ msgid "Standard"
#~ msgstr "Szokásos"
#~ msgid "Large"
#~ msgstr "Nagy"
#~ msgid "Show the personal folder in the desktop"
#~ msgstr "A személyes mappa megjelenítése az asztalon"
#~ msgid "Show the trash icon in the desktop"
#~ msgstr "A kuka ikon megjelenítése az asztalon"
#~ msgid "New icons alignment"
#~ msgstr "Új ikonok elrendezése"
#~ msgid "Top-left corner"
#~ msgstr "Bal felső sarok"
#~ msgid "Top-right corner"
#~ msgstr "Jobb felső sarok"
#~ msgid "Bottom-left corner"
#~ msgstr "Bal alsó sarok"
#~ msgid "Bottom-right corner"
#~ msgstr "Jobb alsó sarok"
#~ msgid "Highlight the drop place during Drag'n'Drop"
#~ msgstr "Az ejtés helyének kiemelése fogd és vidd műveletkor"
#~ msgid "Settings shared with Nautilus"
#~ msgstr "A Nautilussal megosztott beállítások"
#~ msgid "Click type for open files"
#~ msgstr "A fájlok megnyitásához használandó kattintás típusa"
#~ msgid "Single click"
#~ msgstr "Egyszeres kattintás"
#~ msgid "Double click"
#~ msgstr "Dupla kattintás"
#~ msgid "Show hidden files"
#~ msgstr "Rejtett fájlok megjelenítése"
#~ msgid "Show a context menu item to delete permanently"
#~ msgstr "Helyi menü-elem megjelenítése a végleges törléshez"
#~ 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"
#~ msgid "Display the content of the file"
#~ msgstr "A fájl tartalmának megjelenítése"
#~ msgid "Launch the file"
#~ msgstr "A fájl futtatása"
#~ msgid "Ask what to do"
#~ msgstr "Kérdezze meg, mi a teendő"
#~ msgid "Show image thumbnails"
#~ msgstr "Bélyegképek megjelenítése"
#~ msgid "Never"
#~ msgstr "Soha"
#~ msgid "Local files only"
#~ msgstr "Csak helyi fájlok esetén"
#~ msgid "Always"
#~ msgstr "Mindig"
#~ 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 "Error while deleting files"
#~ msgstr "Hiba történt a fájlok törlésekor"
#~ 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-43/po/id.po 0000664 0000000 0000000 00000031511 14216573372 0016053 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: 2022-03-23 11:12+0100\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"
#: askRenamePopup.js:42
#, fuzzy
msgid "Folder name"
msgstr "Nama folder baru"
#: askRenamePopup.js:42
#, fuzzy
msgid "File name"
msgstr "Ganti Nama…"
#: askRenamePopup.js:49 desktopManager.js:798
msgid "OK"
msgstr "OK"
#: askRenamePopup.js:49
#, fuzzy
msgid "Rename"
msgstr "Ganti Nama…"
#: dbusUtils.js:65
msgid "\"${programName}\" is needed for Desktop Icons"
msgstr ""
#: dbusUtils.js:66
msgid ""
"For this functionality to work in Desktop Icons, you must install "
"\"${programName}\" in your system."
msgstr ""
#: desktopIconsUtil.js:96
msgid "Command not found"
msgstr "Perintah tidak ditemukan"
#: desktopManager.js:215
msgid "Nautilus File Manager not found"
msgstr ""
#: desktopManager.js:216
msgid "The Nautilus File Manager is mandatory to work with Desktop Icons NG."
msgstr ""
#: desktopManager.js:761
msgid "Clear Current Selection before New Search"
msgstr ""
#: desktopManager.js:800 fileItemMenu.js:369
msgid "Cancel"
msgstr "Batal"
#: desktopManager.js:802
msgid "Find Files on Desktop"
msgstr ""
#: desktopManager.js:867 desktopManager.js:1490
msgid "New Folder"
msgstr "Folder Baru"
#: desktopManager.js:871
msgid "New Document"
msgstr "Dokumen Baru"
#: desktopManager.js:876
msgid "Paste"
msgstr "Tempel"
#: desktopManager.js:880
msgid "Undo"
msgstr "Tak Jadi"
#: desktopManager.js:884
msgid "Redo"
msgstr "Jadi Lagi"
#: desktopManager.js:890
#, fuzzy
msgid "Select All"
msgstr "Pilih semua"
#: desktopManager.js:898
msgid "Show Desktop in Files"
msgstr "Tampilkan Destop pada Berkas"
#: desktopManager.js:902 fileItemMenu.js:287
msgid "Open in Terminal"
msgstr "Buka dalam Terminal"
#: desktopManager.js:908
msgid "Change Background…"
msgstr "Ubah Latar Belakang…"
#: desktopManager.js:919
#, fuzzy
msgid "Desktop Icons Settings"
msgstr "Pengaturan Tampilan"
#: desktopManager.js:923
msgid "Display Settings"
msgstr "Pengaturan Tampilan"
#: desktopManager.js:1548
msgid "Arrange Icons"
msgstr ""
#: desktopManager.js:1552
msgid "Arrange By..."
msgstr ""
#: desktopManager.js:1561
msgid "Keep Arranged..."
msgstr ""
#: desktopManager.js:1565
msgid "Keep Stacked by type..."
msgstr ""
#: desktopManager.js:1570
msgid "Sort Home/Drives/Trash..."
msgstr ""
#: desktopManager.js:1576
msgid "Sort by Name"
msgstr ""
#: desktopManager.js:1578
msgid "Sort by Name Descending"
msgstr ""
#: desktopManager.js:1581
msgid "Sort by Modified Time"
msgstr ""
#: desktopManager.js:1584
msgid "Sort by Type"
msgstr ""
#: desktopManager.js:1587
msgid "Sort by Size"
msgstr ""
#. TRANSLATORS: "Home" is the text that will be shown in the user's personal folder
#: fileItem.js:156
msgid "Home"
msgstr "Rumah"
#: fileItem.js:275
msgid "Broken Link"
msgstr ""
#: fileItem.js:276
msgid "Can not open this File because it is a Broken Symlink"
msgstr ""
#: fileItem.js:326
#, fuzzy
msgid "Broken Desktop File"
msgstr "Tampilkan Destop pada Berkas"
#: fileItem.js:327
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 ""
#: fileItem.js:333
msgid "Invalid Permissions on Desktop File"
msgstr ""
#: fileItem.js:334
msgid ""
"This .desktop File has incorrect Permissions. Right Click to edit "
"Properties, then:\n"
msgstr ""
#: fileItem.js:336
msgid ""
"\n"
"Set Permissions, in \"Others Access\", \"Read Only\" or \"None\""
msgstr ""
#: fileItem.js:339
msgid ""
"\n"
"Enable option, \"Allow Executing File as a Program\""
msgstr ""
#: fileItem.js:347
msgid ""
"This .desktop file is not trusted, it can not be launched. To enable "
"launching, right-click, then:\n"
"\n"
"Enable \"Allow Launching\""
msgstr ""
#: fileItemMenu.js:118
msgid "Open All..."
msgstr ""
#: fileItemMenu.js:118
msgid "Open"
msgstr "Buka"
#: fileItemMenu.js:129
msgid "Stack This Type"
msgstr ""
#: fileItemMenu.js:129
msgid "Unstack This Type"
msgstr ""
#: fileItemMenu.js:141
msgid "Scripts"
msgstr ""
#: fileItemMenu.js:147
#, fuzzy
msgid "Open All With Other Application..."
msgstr "Buka Dengan Aplikasi Lain"
#: fileItemMenu.js:147
msgid "Open With Other Application"
msgstr "Buka Dengan Aplikasi Lain"
#: fileItemMenu.js:153
msgid "Launch using Dedicated Graphics Card"
msgstr ""
#: fileItemMenu.js:162
msgid "Run as a program"
msgstr ""
#: fileItemMenu.js:170
msgid "Cut"
msgstr "Potong"
#: fileItemMenu.js:175
msgid "Copy"
msgstr "Salin"
#: fileItemMenu.js:181
msgid "Rename…"
msgstr "Ganti Nama…"
#: fileItemMenu.js:189
msgid "Move to Trash"
msgstr "Pindahkan ke Tong Sampah"
#: fileItemMenu.js:195
msgid "Delete permanently"
msgstr "Hapus permanen"
#: fileItemMenu.js:203
#, fuzzy
msgid "Don't Allow Launching"
msgstr "Jangan Izinkan Peluncuran"
#: fileItemMenu.js:203
msgid "Allow Launching"
msgstr "Izinkan Peluncuran"
#: fileItemMenu.js:214
msgid "Empty Trash"
msgstr "Kosongkan Tong Sampah"
#: fileItemMenu.js:225
msgid "Eject"
msgstr "Keluarkan Media"
#: fileItemMenu.js:231
msgid "Unmount"
msgstr "Lepas Kaitan"
#: fileItemMenu.js:241
msgid "Extract Here"
msgstr "Ekstrak Di Sini"
#: fileItemMenu.js:245
msgid "Extract To..."
msgstr "Ekstrak ke…"
#: fileItemMenu.js:252
msgid "Send to..."
msgstr "Kirim ke…"
#: fileItemMenu.js:258
msgid "Compress {0} file"
msgid_plural "Compress {0} files"
msgstr[0] ""
msgstr[1] ""
#: fileItemMenu.js:264
msgid "New Folder with {0} item"
msgid_plural "New Folder with {0} items"
msgstr[0] ""
msgstr[1] ""
#: fileItemMenu.js:273
#, fuzzy
msgid "Common Properties"
msgstr "Properti"
#: fileItemMenu.js:273
msgid "Properties"
msgstr "Properti"
#: fileItemMenu.js:280
#, fuzzy
msgid "Show All in Files"
msgstr "Tampilkan pada Berkas"
#: fileItemMenu.js:280
msgid "Show in Files"
msgstr "Tampilkan pada Berkas"
#: fileItemMenu.js:365
msgid "Select Extract Destination"
msgstr ""
#: fileItemMenu.js:370
msgid "Select"
msgstr "Pilih"
#: fileItemMenu.js:396
msgid "Can not email a Directory"
msgstr ""
#: fileItemMenu.js:397
msgid "Selection includes a Directory, compress the directory to a file first."
msgstr ""
#: preferences.js:67
msgid "Settings"
msgstr "Pengaturan"
#: showErrorPopup.js:40
msgid "Close"
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:45
#, fuzzy
msgid "Show external drives in the desktop"
msgstr "Tampilkan folder pribadi di destop"
#: 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:50
#, fuzzy
msgid "Show network drives in the desktop"
msgstr "Tampilkan folder pribadi di destop."
#: 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:55
msgid "Add new drives to the opposite side of the screen"
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:90
msgid "Use Nemo to open folders"
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 ""
#~ msgid "Size for the desktop icons"
#~ msgstr "Ukuran untuk ikon destop"
#~ msgid "Small"
#~ msgstr "Kecil"
#~ msgid "Standard"
#~ msgstr "Standar"
#~ msgid "Large"
#~ msgstr "Besar"
#~ msgid "Show the personal folder in the desktop"
#~ msgstr "Tampilkan folder pribadi di destop"
#~ msgid "Show the trash icon in the desktop"
#~ msgstr "Tampilkan ikon tong sampah di destop"
#, fuzzy
#~ msgid "New icons alignment"
#~ msgstr "Ukuran ikon"
#, fuzzy
#~ msgid "Show hidden files"
#~ msgstr "Tampilkan pada Berkas"
#~ 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 "Create"
#~ msgstr "Buat"
#~ 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-43/po/it.po 0000664 0000000 0000000 00000041175 14216573372 0016102 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: 2022-03-23 11:12+0100\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"
#: askRenamePopup.js:42
msgid "Folder name"
msgstr "Nome della cartella"
#: askRenamePopup.js:42
msgid "File name"
msgstr "Nome del file"
#: askRenamePopup.js:49 desktopManager.js:798
msgid "OK"
msgstr "Ok"
#: askRenamePopup.js:49
msgid "Rename"
msgstr "Rinomina"
#: dbusUtils.js:65
msgid "\"${programName}\" is needed for Desktop Icons"
msgstr ""
#: dbusUtils.js:66
msgid ""
"For this functionality to work in Desktop Icons, you must install "
"\"${programName}\" in your system."
msgstr ""
#: desktopIconsUtil.js:96
msgid "Command not found"
msgstr "Comando non trovato"
#: desktopManager.js:215
msgid "Nautilus File Manager not found"
msgstr "File Manager Nautilus non trovato"
#: desktopManager.js:216
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."
#: desktopManager.js:761
msgid "Clear Current Selection before New Search"
msgstr "Cancella la selezione corrente prima di una nuova ricerca"
#: desktopManager.js:800 fileItemMenu.js:369
msgid "Cancel"
msgstr "Annulla"
#: desktopManager.js:802
msgid "Find Files on Desktop"
msgstr "Trova i file sul desktop"
#: desktopManager.js:867 desktopManager.js:1490
msgid "New Folder"
msgstr "Nuova cartella"
#: desktopManager.js:871
msgid "New Document"
msgstr "Nuovo documento"
#: desktopManager.js:876
msgid "Paste"
msgstr "Incolla"
#: desktopManager.js:880
msgid "Undo"
msgstr "Annulla"
#: desktopManager.js:884
msgid "Redo"
msgstr "Ripeti"
#: desktopManager.js:890
msgid "Select All"
msgstr "Seleziona tutto"
#: desktopManager.js:898
msgid "Show Desktop in Files"
msgstr "Mostra la scrivania in File"
#: desktopManager.js:902 fileItemMenu.js:287
msgid "Open in Terminal"
msgstr "Apri in Terminale"
#: desktopManager.js:908
msgid "Change Background…"
msgstr "Cambia lo sfondo…"
#: desktopManager.js:919
msgid "Desktop Icons Settings"
msgstr "Impostazioni di Desktop Icons"
#: desktopManager.js:923
msgid "Display Settings"
msgstr "Impostazioni dello schermo"
#: desktopManager.js:1548
msgid "Arrange Icons"
msgstr "Disponi icone"
#: desktopManager.js:1552
msgid "Arrange By..."
msgstr "Disponi per..."
#: desktopManager.js:1561
msgid "Keep Arranged..."
msgstr "Disposizione automatica..."
#: desktopManager.js:1565
msgid "Keep Stacked by type..."
msgstr "Mantieni inpilato per tipo..."
#: desktopManager.js:1570
msgid "Sort Home/Drives/Trash..."
msgstr "Ordina Home/Drives/Cestino..."
#: desktopManager.js:1576
msgid "Sort by Name"
msgstr "Ordina per Nome"
#: desktopManager.js:1578
msgid "Sort by Name Descending"
msgstr "Ordina per Nome discendente"
#: desktopManager.js:1581
msgid "Sort by Modified Time"
msgstr "Ordina per ora di modifica"
#: desktopManager.js:1584
msgid "Sort by Type"
msgstr "Dordina per tipo"
#: desktopManager.js:1587
msgid "Sort by Size"
msgstr "Ordina per dimensione"
#. TRANSLATORS: "Home" is the text that will be shown in the user's personal folder
#: fileItem.js:156
msgid "Home"
msgstr "Home"
#: fileItem.js:275
msgid "Broken Link"
msgstr ""
#: fileItem.js:276
msgid "Can not open this File because it is a Broken Symlink"
msgstr ""
#: fileItem.js:326
#, fuzzy
msgid "Broken Desktop File"
msgstr "Mostra la scrivania in File"
#: fileItem.js:327
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 ""
#: fileItem.js:333
msgid "Invalid Permissions on Desktop File"
msgstr ""
#: fileItem.js:334
msgid ""
"This .desktop File has incorrect Permissions. Right Click to edit "
"Properties, then:\n"
msgstr ""
#: fileItem.js:336
msgid ""
"\n"
"Set Permissions, in \"Others Access\", \"Read Only\" or \"None\""
msgstr ""
#: fileItem.js:339
msgid ""
"\n"
"Enable option, \"Allow Executing File as a Program\""
msgstr ""
#: fileItem.js:347
msgid ""
"This .desktop file is not trusted, it can not be launched. To enable "
"launching, right-click, then:\n"
"\n"
"Enable \"Allow Launching\""
msgstr ""
#: fileItemMenu.js:118
msgid "Open All..."
msgstr "Apri tutto..."
#: fileItemMenu.js:118
msgid "Open"
msgstr "Apri"
#: fileItemMenu.js:129
msgid "Stack This Type"
msgstr "Impila questo tipo"
#: fileItemMenu.js:129
msgid "Unstack This Type"
msgstr "Disimpila questo tipo"
#: fileItemMenu.js:141
msgid "Scripts"
msgstr "Script"
#: fileItemMenu.js:147
msgid "Open All With Other Application..."
msgstr "Apri tutto con un'altra applicazione"
#: fileItemMenu.js:147
msgid "Open With Other Application"
msgstr "Apri con un'altra applicazione"
#: fileItemMenu.js:153
msgid "Launch using Dedicated Graphics Card"
msgstr "Esegui con la scheda grafica dedicata"
#: fileItemMenu.js:162
msgid "Run as a program"
msgstr ""
#: fileItemMenu.js:170
msgid "Cut"
msgstr "Taglia"
#: fileItemMenu.js:175
msgid "Copy"
msgstr "Copia"
#: fileItemMenu.js:181
msgid "Rename…"
msgstr "Rinomina…"
#: fileItemMenu.js:189
msgid "Move to Trash"
msgstr "Sposta nel cestino"
#: fileItemMenu.js:195
msgid "Delete permanently"
msgstr "Elimina definitivamente"
#: fileItemMenu.js:203
msgid "Don't Allow Launching"
msgstr "Non permettere l'esecuzione"
#: fileItemMenu.js:203
msgid "Allow Launching"
msgstr "Permetti l'esecuzione"
#: fileItemMenu.js:214
msgid "Empty Trash"
msgstr "Svuota il cestino"
#: fileItemMenu.js:225
msgid "Eject"
msgstr "Espelli"
#: fileItemMenu.js:231
msgid "Unmount"
msgstr "Smonta"
#: fileItemMenu.js:241
msgid "Extract Here"
msgstr "Estrai qui"
#: fileItemMenu.js:245
msgid "Extract To..."
msgstr "Estrai in..."
#: fileItemMenu.js:252
msgid "Send to..."
msgstr "Invia a..."
#: fileItemMenu.js:258
msgid "Compress {0} file"
msgid_plural "Compress {0} files"
msgstr[0] "Comprimi {0} file"
msgstr[1] "Comprimi {0} files"
#: fileItemMenu.js:264
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"
#: fileItemMenu.js:273
msgid "Common Properties"
msgstr "Proprietà generali"
#: fileItemMenu.js:273
msgid "Properties"
msgstr "Proprietà"
#: fileItemMenu.js:280
msgid "Show All in Files"
msgstr "Mostra tutto in File"
#: fileItemMenu.js:280
msgid "Show in Files"
msgstr "Mostra in File"
#: fileItemMenu.js:365
msgid "Select Extract Destination"
msgstr "Seleziona la destinazione per l'estrazione"
#: fileItemMenu.js:370
msgid "Select"
msgstr "Seleziona"
#: fileItemMenu.js:396
msgid "Can not email a Directory"
msgstr "Non è possibile spedire per email una cartella"
#: fileItemMenu.js:397
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."
#: preferences.js:67
msgid "Settings"
msgstr "Impostazioni"
#: showErrorPopup.js:40
msgid "Close"
msgstr "Chiudi"
#: 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:45
msgid "Show external drives in the desktop"
msgstr "Mostra le periferiche esterne sulla scrivania"
#: 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:50
msgid "Show network drives in the desktop"
msgstr "Mostra le periferiche di rete sulla scrivania."
#: 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:55
msgid "Add new drives to the opposite side of the screen"
msgstr "Aggiungi le nuove periferiche sul lato opposto dello schermo"
#: 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:90
msgid "Use Nemo to open folders"
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 ""
#~ msgid "Size for the desktop icons"
#~ msgstr "Dimensione delle icone della scrivania"
#~ msgid "Tiny"
#~ msgstr "Minuscola"
#~ msgid "Small"
#~ msgstr "Piccola"
#~ msgid "Standard"
#~ msgstr "Normale"
#~ msgid "Large"
#~ msgstr "Grande"
#~ msgid "Show the personal folder in the desktop"
#~ msgstr "Mostra la cartella personale sulla scrivania"
#~ msgid "Show the trash icon in the desktop"
#~ msgstr "Mostra il cestino sulla scrivania"
#~ msgid "New icons alignment"
#~ msgstr "Allineamento delle nuove icone"
#~ msgid "Top-left corner"
#~ msgstr "Angolo in alto a sinistra"
#~ msgid "Top-right corner"
#~ msgstr "Angolo in alto a destra"
#~ msgid "Bottom-left corner"
#~ msgstr "Angolo in basso a sinistra"
#~ msgid "Bottom-right corner"
#~ msgstr "Angolo in basso a destra"
#~ msgid "Highlight the drop place during Drag'n'Drop"
#~ msgstr "Evidenzia il punto di rilascio durante il trascinamento"
#~ msgid "Settings shared with Nautilus"
#~ msgstr "Impostazioni condivise con Nautilus"
#~ msgid "Click type for open files"
#~ msgstr "Tipo di click per aprire i file"
#~ msgid "Single click"
#~ msgstr "Click singolo"
#~ msgid "Double click"
#~ msgstr "Doppio click"
#~ msgid "Show hidden files"
#~ msgstr "Mostra i file nascosti"
#~ msgid "Show a context menu item to delete permanently"
#~ msgstr ""
#~ "Mostra un elemento del menù contestuale per eliminare definitivamente"
#~ msgid "Action to do when launching a program from the desktop"
#~ msgstr "Azione da eseguire avviando un programma dalla scrivania"
#~ msgid "Display the content of the file"
#~ msgstr "Mostra il contenuto del file"
#~ msgid "Launch the file"
#~ msgstr "Esegui il file"
#~ msgid "Ask what to do"
#~ msgstr "Chiedi cosa fare"
#~ msgid "Show image thumbnails"
#~ msgstr "Mostra le anteprime delle immagini"
#~ msgid "Never"
#~ msgstr "Mai"
#~ msgid "Local files only"
#~ msgstr "Solo i file locali"
#~ msgid "Always"
#~ msgstr "Sempre"
#~ 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 "Error while deleting files"
#~ msgstr "Errore durante l'eliminazione dei file"
#~ 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 "Create"
#~ msgstr "Crea"
#~ 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-43/po/ja.po 0000775 0000000 0000000 00000047704 14216573372 0016067 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: 2022-03-23 11:12+0100\n"
"PO-Revision-Date: 2022-03-18 18:54+0900\n"
"Last-Translator: sicklylife \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"
#: askRenamePopup.js:42
msgid "Folder name"
msgstr "フォルダー名"
#: askRenamePopup.js:42
msgid "File name"
msgstr "ファイル名"
#: askRenamePopup.js:49 desktopManager.js:798
msgid "OK"
msgstr "OK"
#: askRenamePopup.js:49
msgid "Rename"
msgstr "名前の変更"
#: dbusUtils.js:65
msgid "\"${programName}\" is needed for Desktop Icons"
msgstr "Desktop Icons には \"${programName}\" が必要です"
#: dbusUtils.js:66
msgid ""
"For this functionality to work in Desktop Icons, you must install "
"\"${programName}\" in your system."
msgstr ""
"この機能を Desktop Icons で動作させるには、システムに \"${programName}\" をイ"
"ンストールする必要があります。"
#: desktopIconsUtil.js:96
msgid "Command not found"
msgstr "コマンドが見つかりません"
#: desktopManager.js:215
msgid "Nautilus File Manager not found"
msgstr "Nautilus ファイルマネージャーが見つかりません"
#: desktopManager.js:216
msgid "The Nautilus File Manager is mandatory to work with Desktop Icons NG."
msgstr "Desktop Icons NG の動作には Nautilus ファイルマネージャーが必要です。"
#: desktopManager.js:761
msgid "Clear Current Selection before New Search"
msgstr "新しく検索する前に現在の選択を解除してください"
#: desktopManager.js:800 fileItemMenu.js:369
msgid "Cancel"
msgstr "キャンセル"
#: desktopManager.js:802
msgid "Find Files on Desktop"
msgstr "デスクトップ上のファイルを検索"
#: desktopManager.js:867 desktopManager.js:1490
msgid "New Folder"
msgstr "新しいフォルダー"
#: desktopManager.js:871
msgid "New Document"
msgstr "新しいドキュメント"
#: desktopManager.js:876
msgid "Paste"
msgstr "貼り付け"
#: desktopManager.js:880
msgid "Undo"
msgstr "元に戻す"
#: desktopManager.js:884
msgid "Redo"
msgstr "やり直す"
#: desktopManager.js:890
msgid "Select All"
msgstr "すべて選択"
#: desktopManager.js:898
msgid "Show Desktop in Files"
msgstr "“ファイル”でデスクトップを表示する"
#: desktopManager.js:902 fileItemMenu.js:287
msgid "Open in Terminal"
msgstr "端末で開く"
#: desktopManager.js:908
msgid "Change Background…"
msgstr "背景を変更…"
#: desktopManager.js:919
msgid "Desktop Icons Settings"
msgstr "Desktop Icons の設定"
#: desktopManager.js:923
msgid "Display Settings"
msgstr "ディスプレイの設定"
#: desktopManager.js:1548
msgid "Arrange Icons"
msgstr "アイコンを整列"
#: desktopManager.js:1552
msgid "Arrange By..."
msgstr "指定して整列..."
#: desktopManager.js:1561
msgid "Keep Arranged..."
msgstr "整列を維持..."
# デスクトップにあるファイルを疑似フォルダーにまとめる (グループ化する)
#: desktopManager.js:1565
msgid "Keep Stacked by type..."
msgstr "種類ごとに束ねる..."
#: desktopManager.js:1570
msgid "Sort Home/Drives/Trash..."
msgstr "ホーム/ドライブ/ゴミ箱を並べ替え..."
#: desktopManager.js:1576
msgid "Sort by Name"
msgstr "名前で並べ替え"
#: desktopManager.js:1578
msgid "Sort by Name Descending"
msgstr "名前で並べ替え (降順)"
#: desktopManager.js:1581
msgid "Sort by Modified Time"
msgstr "更新日で並べ替え"
#: desktopManager.js:1584
msgid "Sort by Type"
msgstr "種類で並べ替え"
#: desktopManager.js:1587
msgid "Sort by Size"
msgstr "サイズで並べ替え"
#. TRANSLATORS: "Home" is the text that will be shown in the user's personal folder
#: fileItem.js:156
msgid "Home"
msgstr "ホーム"
#: fileItem.js:275
msgid "Broken Link"
msgstr "壊れたリンク"
#: fileItem.js:276
msgid "Can not open this File because it is a Broken Symlink"
msgstr "シンボリックリンクのリンク先が存在しないためファイルを開けません"
#: fileItem.js:326
msgid "Broken Desktop File"
msgstr "壊れたデスクトップファイル"
#: fileItem.js:327
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ファイルを開いて正しい実行可能プログラムを設定してください。"
#: fileItem.js:333
msgid "Invalid Permissions on Desktop File"
msgstr "無効な権限のデスクトップファイル"
#: fileItem.js:334
msgid ""
"This .desktop File has incorrect Permissions. Right Click to edit "
"Properties, then:\n"
msgstr ""
"この .desktop ファイルの権限が正しくありません。右クリックしてプロパティを開"
"き、次のように変更してください:\n"
#: fileItem.js:336
msgid ""
"\n"
"Set Permissions, in \"Others Access\", \"Read Only\" or \"None\""
msgstr ""
"\n"
"\"その他のアクセス権\" を \"読み取り専用\" または \"なし\" に設定する"
#: fileItem.js:339
msgid ""
"\n"
"Enable option, \"Allow Executing File as a Program\""
msgstr ""
"\n"
"\"プログラムとして実行可能\" オプションを有効にする"
#: fileItem.js:347
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"
"\"起動を許可する\" を有効にする"
#: fileItemMenu.js:118
msgid "Open All..."
msgstr "すべて開く..."
#: fileItemMenu.js:118
msgid "Open"
msgstr "開く"
# 疑似フォルダーの右クリックメニュー
#: fileItemMenu.js:129
msgid "Stack This Type"
msgstr "この種類を束ねる"
# 疑似フォルダーの右クリックメニュー
#: fileItemMenu.js:129
msgid "Unstack This Type"
msgstr "この種類を並べる"
#: fileItemMenu.js:141
msgid "Scripts"
msgstr "スクリプト"
#: fileItemMenu.js:147
msgid "Open All With Other Application..."
msgstr "別のアプリケーションですべて開く..."
#: fileItemMenu.js:147
msgid "Open With Other Application"
msgstr "別のアプリケーションで開く"
#: fileItemMenu.js:153
msgid "Launch using Dedicated Graphics Card"
msgstr "特定のグラフィックカードを使用して起動"
#: fileItemMenu.js:162
msgid "Run as a program"
msgstr "プログラムとして実行"
#: fileItemMenu.js:170
msgid "Cut"
msgstr "切り取り"
#: fileItemMenu.js:175
msgid "Copy"
msgstr "コピー"
#: fileItemMenu.js:181
msgid "Rename…"
msgstr "名前を変更…"
#: fileItemMenu.js:189
msgid "Move to Trash"
msgstr "ゴミ箱へ移動する"
#: fileItemMenu.js:195
msgid "Delete permanently"
msgstr "完全に削除"
#: fileItemMenu.js:203
msgid "Don't Allow Launching"
msgstr "起動を許可しない"
#: fileItemMenu.js:203
msgid "Allow Launching"
msgstr "起動を許可する"
#: fileItemMenu.js:214
msgid "Empty Trash"
msgstr "ゴミ箱を空にする"
#: fileItemMenu.js:225
msgid "Eject"
msgstr "取り出す"
#: fileItemMenu.js:231
msgid "Unmount"
msgstr "アンマウント"
#: fileItemMenu.js:241
msgid "Extract Here"
msgstr "ここで展開"
#: fileItemMenu.js:245
msgid "Extract To..."
msgstr "展開先..."
#: fileItemMenu.js:252
msgid "Send to..."
msgstr "送る..."
#: fileItemMenu.js:258
msgid "Compress {0} file"
msgid_plural "Compress {0} files"
msgstr[0] "{0} 個のファイルを圧縮"
#: fileItemMenu.js:264
msgid "New Folder with {0} item"
msgid_plural "New Folder with {0} items"
msgstr[0] "{0} 個のアイテムを新しいフォルダーへ移動する"
#: fileItemMenu.js:273
msgid "Common Properties"
msgstr "共通のプロパティ"
#: fileItemMenu.js:273
msgid "Properties"
msgstr "プロパティ"
#: fileItemMenu.js:280
msgid "Show All in Files"
msgstr "“ファイル”ですべて表示する"
#: fileItemMenu.js:280
msgid "Show in Files"
msgstr "“ファイル”で表示する"
#: fileItemMenu.js:365
msgid "Select Extract Destination"
msgstr "展開する宛先を選択"
#: fileItemMenu.js:370
msgid "Select"
msgstr "選択"
#: fileItemMenu.js:396
msgid "Can not email a Directory"
msgstr "ディレクトリをメールで送ることはできません"
#: fileItemMenu.js:397
msgid "Selection includes a Directory, compress the directory to a file first."
msgstr ""
"ディレクトリが選択されています。ディレクトリはファイルに圧縮してください。"
#: preferences.js:67
msgid "Settings"
msgstr "設定"
#: showErrorPopup.js:40
msgid "Close"
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:45
msgid "Show external drives in the desktop"
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:50
msgid "Show network drives in the desktop"
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:55
msgid "Add new drives to the opposite side of the screen"
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:90
msgid "Use Nemo to open folders"
msgstr "Nemo を使用してフォルダーを開く"
#: 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 ""
"ラベルのテキストを白色の代わりに黒色で描画します。明るい背景を使用している場"
"合に有用です。"
#~ msgid "Size for the desktop icons"
#~ msgstr "デスクトップアイコンのサイズ"
#~ msgid "Tiny"
#~ msgstr "とても小さい"
#~ msgid "Small"
#~ msgstr "小さい"
#~ msgid "Standard"
#~ msgstr "標準"
#~ msgid "Large"
#~ msgstr "大きい"
#~ msgid "Show the personal folder in the desktop"
#~ msgstr "デスクトップにホームフォルダーを表示する"
#~ msgid "Show the trash icon in the desktop"
#~ msgstr "デスクトップにゴミ箱を表示する"
#~ msgid "New icons alignment"
#~ msgstr "新しいアイコンの配置位置"
#~ msgid "Top-left corner"
#~ msgstr "左上"
#~ msgid "Top-right corner"
#~ msgstr "右上"
#~ msgid "Bottom-left corner"
#~ msgstr "左下"
#~ msgid "Bottom-right corner"
#~ msgstr "右下"
#~ msgid "Highlight the drop place during Drag'n'Drop"
#~ msgstr "ドラッグアンドドロップ中にドロップ先を強調表示する"
#~ msgid "Add an emblem to soft links"
#~ msgstr "ソフトリンクにエンブレムを追加する"
#~ msgid "Add an emblem to .desktop files"
#~ msgstr ".desktop ファイルにエンブレムを追加する"
#~ msgid "Use dark text in icon labels"
#~ msgstr "アイコンのラベルの文字を暗くする"
#~ msgid "Settings shared with Nautilus"
#~ msgstr "Nautilus と共有される設定"
#~ msgid "Click type for open files"
#~ msgstr "ファイルを開くときのクリック形式"
#~ msgid "Single click"
#~ msgstr "シングルクリック"
#~ msgid "Double click"
#~ msgstr "ダブルクリック"
#~ msgid "Show hidden files"
#~ msgstr "隠しファイルを表示する"
#~ msgid "Show a context menu item to delete permanently"
#~ msgstr "コンテキストメニューに“完全に削除”を表示する"
#~ msgid "Action to do when launching a program from the desktop"
#~ msgstr "デスクトップからプログラムを起動するときに実行するアクション"
#~ msgid "Display the content of the file"
#~ msgstr "ファイルの内容を表示"
#~ msgid "Launch the file"
#~ msgstr "ファイルを実行"
#~ msgid "Ask what to do"
#~ msgstr "どうするか確認"
#~ msgid "Show image thumbnails"
#~ msgstr "画像のサムネイルの表示"
#~ msgid "Never"
#~ msgstr "しない"
#~ msgid "Local files only"
#~ msgstr "ローカルファイルのみ"
#~ msgid "Always"
#~ 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 を設定するには、デスクトップを右クリックし、メニューの末"
#~ "尾にある“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 "Error while deleting files"
#~ 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 "Create"
#~ 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-43/po/ko.po 0000664 0000000 0000000 00000035454 14216573372 0016102 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.
#
msgid ""
msgstr ""
"Project-Id-Version: desktop-icons master\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-03-23 11:12+0100\n"
"PO-Revision-Date: 2021-03-23 03:42+0900\n"
"Last-Translator: jgjeong \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"
#: askRenamePopup.js:42
msgid "Folder name"
msgstr "폴더 이름"
#: askRenamePopup.js:42
msgid "File name"
msgstr "파일 이름"
#: askRenamePopup.js:49 desktopManager.js:798
msgid "OK"
msgstr "확인"
#: askRenamePopup.js:49
msgid "Rename"
msgstr "이름 바꾸기"
#: dbusUtils.js:65
msgid "\"${programName}\" is needed for Desktop Icons"
msgstr ""
#: dbusUtils.js:66
msgid ""
"For this functionality to work in Desktop Icons, you must install "
"\"${programName}\" in your system."
msgstr ""
#: desktopIconsUtil.js:96
msgid "Command not found"
msgstr "명령을 찾을 수 없습니다."
#: desktopManager.js:215
msgid "Nautilus File Manager not found"
msgstr "노틸러스 파일 관리자를 찾을 수 없습니다."
#: desktopManager.js:216
msgid "The Nautilus File Manager is mandatory to work with Desktop Icons NG."
msgstr "노틸러스 파일 관리자는 Desktop Icons NG로 작업하는 데 필수입니다."
#: desktopManager.js:761
msgid "Clear Current Selection before New Search"
msgstr ""
#: desktopManager.js:800 fileItemMenu.js:369
msgid "Cancel"
msgstr "취소"
#: desktopManager.js:802
msgid "Find Files on Desktop"
msgstr ""
#: desktopManager.js:867 desktopManager.js:1490
msgid "New Folder"
msgstr "새 폴더"
#: desktopManager.js:871
msgid "New Document"
msgstr "새 문서"
#: desktopManager.js:876
msgid "Paste"
msgstr "붙여넣기"
#: desktopManager.js:880
msgid "Undo"
msgstr "실행 취소"
#: desktopManager.js:884
msgid "Redo"
msgstr "다시 실행"
#: desktopManager.js:890
#, fuzzy
msgid "Select All"
msgstr "전체 선택"
#: desktopManager.js:898
msgid "Show Desktop in Files"
msgstr "파일 관리자로 바탕화면 보기"
#: desktopManager.js:902 fileItemMenu.js:287
msgid "Open in Terminal"
msgstr "터미널로 열기"
#: desktopManager.js:908
msgid "Change Background…"
msgstr "배경화면 변경"
#: desktopManager.js:919
#, fuzzy
msgid "Desktop Icons Settings"
msgstr "바탕화면 아이콘 설정"
#: desktopManager.js:923
msgid "Display Settings"
msgstr "화면 설정"
#: desktopManager.js:1548
msgid "Arrange Icons"
msgstr ""
#: desktopManager.js:1552
msgid "Arrange By..."
msgstr ""
#: desktopManager.js:1561
msgid "Keep Arranged..."
msgstr ""
#: desktopManager.js:1565
msgid "Keep Stacked by type..."
msgstr ""
#: desktopManager.js:1570
msgid "Sort Home/Drives/Trash..."
msgstr ""
#: desktopManager.js:1576
msgid "Sort by Name"
msgstr ""
#: desktopManager.js:1578
msgid "Sort by Name Descending"
msgstr ""
#: desktopManager.js:1581
msgid "Sort by Modified Time"
msgstr ""
#: desktopManager.js:1584
msgid "Sort by Type"
msgstr ""
#: desktopManager.js:1587
msgid "Sort by Size"
msgstr ""
#. TRANSLATORS: "Home" is the text that will be shown in the user's personal folder
#: fileItem.js:156
msgid "Home"
msgstr "Home"
#: fileItem.js:275
msgid "Broken Link"
msgstr ""
#: fileItem.js:276
msgid "Can not open this File because it is a Broken Symlink"
msgstr ""
#: fileItem.js:326
#, fuzzy
msgid "Broken Desktop File"
msgstr "파일 관리자로 바탕화면 보기"
#: fileItem.js:327
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 ""
#: fileItem.js:333
msgid "Invalid Permissions on Desktop File"
msgstr ""
#: fileItem.js:334
msgid ""
"This .desktop File has incorrect Permissions. Right Click to edit "
"Properties, then:\n"
msgstr ""
#: fileItem.js:336
msgid ""
"\n"
"Set Permissions, in \"Others Access\", \"Read Only\" or \"None\""
msgstr ""
#: fileItem.js:339
msgid ""
"\n"
"Enable option, \"Allow Executing File as a Program\""
msgstr ""
#: fileItem.js:347
msgid ""
"This .desktop file is not trusted, it can not be launched. To enable "
"launching, right-click, then:\n"
"\n"
"Enable \"Allow Launching\""
msgstr ""
#: fileItemMenu.js:118
msgid "Open All..."
msgstr "모두 열기"
#: fileItemMenu.js:118
msgid "Open"
msgstr "열기"
#: fileItemMenu.js:129
msgid "Stack This Type"
msgstr ""
#: fileItemMenu.js:129
msgid "Unstack This Type"
msgstr ""
#: fileItemMenu.js:141
msgid "Scripts"
msgstr "스크립트"
#: fileItemMenu.js:147
msgid "Open All With Other Application..."
msgstr "다른 프로그램으로 모두 열기"
#: fileItemMenu.js:147
msgid "Open With Other Application"
msgstr "다른 프로그램으로 열기"
#: fileItemMenu.js:153
msgid "Launch using Dedicated Graphics Card"
msgstr "전용 그래픽 카드로 실행하기"
#: fileItemMenu.js:162
msgid "Run as a program"
msgstr ""
#: fileItemMenu.js:170
msgid "Cut"
msgstr "잘라내기"
#: fileItemMenu.js:175
msgid "Copy"
msgstr "복사하기"
#: fileItemMenu.js:181
msgid "Rename…"
msgstr "이름 바꾸기"
#: fileItemMenu.js:189
msgid "Move to Trash"
msgstr "휴지통으로 옮기기"
#: fileItemMenu.js:195
msgid "Delete permanently"
msgstr "영구 삭제"
#: fileItemMenu.js:203
msgid "Don't Allow Launching"
msgstr "실행을 허용하지 않음"
#: fileItemMenu.js:203
msgid "Allow Launching"
msgstr "실행 허용"
#: fileItemMenu.js:214
msgid "Empty Trash"
msgstr "휴지통 비우기"
#: fileItemMenu.js:225
msgid "Eject"
msgstr "꺼내기"
#: fileItemMenu.js:231
msgid "Unmount"
msgstr "마운트 해제"
#: fileItemMenu.js:241
msgid "Extract Here"
msgstr "여기 풀기"
#: fileItemMenu.js:245
msgid "Extract To..."
msgstr "다른 위치에 풀기…"
#: fileItemMenu.js:252
msgid "Send to..."
msgstr "...에게 보내기"
#: fileItemMenu.js:258
msgid "Compress {0} file"
msgid_plural "Compress {0} files"
msgstr[0] "{0}개 파일 압축하기"
msgstr[1] "{0}개 파일 압축하기"
#: fileItemMenu.js:264
msgid "New Folder with {0} item"
msgid_plural "New Folder with {0} items"
msgstr[0] "{0}개 파일 새 폴더로 이동"
msgstr[1] "{0}개 파일 새 폴더로 이동"
#: fileItemMenu.js:273
msgid "Common Properties"
msgstr "공통 속성"
#: fileItemMenu.js:273
msgid "Properties"
msgstr "속성"
#: fileItemMenu.js:280
msgid "Show All in Files"
msgstr "각각의 파일을 파일 관리자로 보기"
#: fileItemMenu.js:280
msgid "Show in Files"
msgstr "파일 관리자로 보기"
#: fileItemMenu.js:365
msgid "Select Extract Destination"
msgstr ""
#: fileItemMenu.js:370
#, fuzzy
msgid "Select"
msgstr "전체 선택"
#: fileItemMenu.js:396
msgid "Can not email a Directory"
msgstr "디렉토리는 이메일로 보낼 수 없습니다."
#: fileItemMenu.js:397
msgid "Selection includes a Directory, compress the directory to a file first."
msgstr "선택 파일 중 디렉토리가 포함되어 있어, 먼저 파일로 압축이 필요합니다."
#: preferences.js:67
msgid "Settings"
msgstr "설정"
#: showErrorPopup.js:40
msgid "Close"
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:45
msgid "Show external drives in the desktop"
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:50
msgid "Show network drives in the desktop"
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:55
msgid "Add new drives to the opposite side of the screen"
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:90
msgid "Use Nemo to open folders"
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 ""
#~ msgid "Size for the desktop icons"
#~ msgstr "바탕화면 아이콘 크기"
#~ msgid "Tiny"
#~ msgstr "매우 작은 아이콘"
#~ msgid "Small"
#~ msgstr "작은 아이콘"
#~ msgid "Standard"
#~ msgstr "중간 아이콘"
#~ msgid "Large"
#~ msgstr "큰 아이콘"
#~ msgid "Show the personal folder in the desktop"
#~ msgstr "바탕화면에 홈 폴더 표시"
#~ msgid "Show the trash icon in the desktop"
#~ msgstr "바탕화면에 휴지통 표시"
#~ msgid "New icons alignment"
#~ msgstr "새 아이콘 정렬 방식"
#~ msgid "Top-left corner"
#~ msgstr "좌측 상단부터"
#~ msgid "Top-right corner"
#~ msgstr "우측 상단부터"
#~ msgid "Bottom-left corner"
#~ msgstr "좌측 하단부터"
#~ msgid "Bottom-right corner"
#~ msgstr "우측 하단부터"
#~ msgid "Highlight the drop place during Drag'n'Drop"
#~ msgstr "드래그 앤 드랍 시 드랍 위치 강조 효과"
#~ msgid "Settings shared with Nautilus"
#~ msgstr "노틸러스와 설정 공유"
#~ msgid "Click type for open files"
#~ msgstr "파일 열기 시 클릭 횟수"
#~ msgid "Single click"
#~ msgstr "싱글 클릭"
#~ msgid "Double click"
#~ msgstr "더블 클릭"
#~ msgid "Show hidden files"
#~ msgstr "숨김 파일 표시"
#~ msgid "Show a context menu item to delete permanently"
#~ msgstr "컨텍스트 메뉴에 영구적으로 삭제하기 표시"
#~ msgid "Action to do when launching a program from the desktop"
#~ msgstr "바탕화면에서 프로그램 실행 시 수행 할 작업"
#~ msgid "Display the content of the file"
#~ msgstr "파일의 내용 표시"
#~ msgid "Launch the file"
#~ msgstr "파일 실행"
#~ msgid "Ask what to do"
#~ msgstr "어떤 작업 수행할 지 선택"
#~ msgid "Show image thumbnails"
#~ msgstr "이미지 썸네일 보기"
#~ msgid "Never"
#~ msgstr "보지 않음"
#~ msgid "Local files only"
#~ msgstr "로컬 파일만 보기"
#~ msgid "Always"
#~ 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 "Error while deleting files"
#~ 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-43/po/meson.build 0000664 0000000 0000000 00000000065 14216573372 0017261 0 ustar 00root root 0000000 0000000 i18n.gettext (meson.project_name (), preset: 'glib')
desktop-icons-ng-43/po/nl.po 0000664 0000000 0000000 00000032133 14216573372 0016071 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: 2022-03-23 11:12+0100\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"
#: askRenamePopup.js:42
#, fuzzy
msgid "Folder name"
msgstr "Nieuwe mapnaam"
#: askRenamePopup.js:42
#, fuzzy
msgid "File name"
msgstr "Hernoemen…"
#: askRenamePopup.js:49 desktopManager.js:798
msgid "OK"
msgstr "Oké"
#: askRenamePopup.js:49
#, fuzzy
msgid "Rename"
msgstr "Hernoemen…"
#: dbusUtils.js:65
msgid "\"${programName}\" is needed for Desktop Icons"
msgstr ""
#: dbusUtils.js:66
msgid ""
"For this functionality to work in Desktop Icons, you must install "
"\"${programName}\" in your system."
msgstr ""
#: desktopIconsUtil.js:96
msgid "Command not found"
msgstr ""
#: desktopManager.js:215
msgid "Nautilus File Manager not found"
msgstr ""
#: desktopManager.js:216
msgid "The Nautilus File Manager is mandatory to work with Desktop Icons NG."
msgstr ""
#: desktopManager.js:761
msgid "Clear Current Selection before New Search"
msgstr ""
#: desktopManager.js:800 fileItemMenu.js:369
msgid "Cancel"
msgstr "Annuleren"
#: desktopManager.js:802
msgid "Find Files on Desktop"
msgstr ""
#: desktopManager.js:867 desktopManager.js:1490
msgid "New Folder"
msgstr "Nieuwe map"
#: desktopManager.js:871
msgid "New Document"
msgstr "Nieuw document"
#: desktopManager.js:876
msgid "Paste"
msgstr "Plakken"
#: desktopManager.js:880
msgid "Undo"
msgstr "Ongedaan maken"
#: desktopManager.js:884
msgid "Redo"
msgstr "Opnieuw"
#: desktopManager.js:890
#, fuzzy
msgid "Select All"
msgstr "Alles selecteren"
#: desktopManager.js:898
msgid "Show Desktop in Files"
msgstr "Bureaublad tonen in Bestanden"
#: desktopManager.js:902 fileItemMenu.js:287
msgid "Open in Terminal"
msgstr "Openen in terminalvenster"
#: desktopManager.js:908
msgid "Change Background…"
msgstr "Achtergrond aanpassen…"
#: desktopManager.js:919
#, fuzzy
msgid "Desktop Icons Settings"
msgstr "Scherminstellingen"
#: desktopManager.js:923
msgid "Display Settings"
msgstr "Scherminstellingen"
#: desktopManager.js:1548
msgid "Arrange Icons"
msgstr ""
#: desktopManager.js:1552
msgid "Arrange By..."
msgstr ""
#: desktopManager.js:1561
msgid "Keep Arranged..."
msgstr ""
#: desktopManager.js:1565
msgid "Keep Stacked by type..."
msgstr ""
#: desktopManager.js:1570
msgid "Sort Home/Drives/Trash..."
msgstr ""
#: desktopManager.js:1576
msgid "Sort by Name"
msgstr ""
#: desktopManager.js:1578
msgid "Sort by Name Descending"
msgstr ""
#: desktopManager.js:1581
msgid "Sort by Modified Time"
msgstr ""
#: desktopManager.js:1584
msgid "Sort by Type"
msgstr ""
#: desktopManager.js:1587
msgid "Sort by Size"
msgstr ""
#. TRANSLATORS: "Home" is the text that will be shown in the user's personal folder
#: fileItem.js:156
msgid "Home"
msgstr "Persoonlijke map"
#: fileItem.js:275
msgid "Broken Link"
msgstr ""
#: fileItem.js:276
msgid "Can not open this File because it is a Broken Symlink"
msgstr ""
#: fileItem.js:326
#, fuzzy
msgid "Broken Desktop File"
msgstr "Bureaublad tonen in Bestanden"
#: fileItem.js:327
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 ""
#: fileItem.js:333
msgid "Invalid Permissions on Desktop File"
msgstr ""
#: fileItem.js:334
msgid ""
"This .desktop File has incorrect Permissions. Right Click to edit "
"Properties, then:\n"
msgstr ""
#: fileItem.js:336
msgid ""
"\n"
"Set Permissions, in \"Others Access\", \"Read Only\" or \"None\""
msgstr ""
#: fileItem.js:339
msgid ""
"\n"
"Enable option, \"Allow Executing File as a Program\""
msgstr ""
#: fileItem.js:347
msgid ""
"This .desktop file is not trusted, it can not be launched. To enable "
"launching, right-click, then:\n"
"\n"
"Enable \"Allow Launching\""
msgstr ""
#: fileItemMenu.js:118
msgid "Open All..."
msgstr ""
#: fileItemMenu.js:118
msgid "Open"
msgstr "Openen"
#: fileItemMenu.js:129
msgid "Stack This Type"
msgstr ""
#: fileItemMenu.js:129
msgid "Unstack This Type"
msgstr ""
#: fileItemMenu.js:141
msgid "Scripts"
msgstr "Scripts"
#: fileItemMenu.js:147
#, fuzzy
msgid "Open All With Other Application..."
msgstr "Met andere toepassing openen"
#: fileItemMenu.js:147
msgid "Open With Other Application"
msgstr "Met andere toepassing openen"
#: fileItemMenu.js:153
msgid "Launch using Dedicated Graphics Card"
msgstr ""
#: fileItemMenu.js:162
msgid "Run as a program"
msgstr ""
#: fileItemMenu.js:170
msgid "Cut"
msgstr "Knippen"
#: fileItemMenu.js:175
msgid "Copy"
msgstr "Kopiëren"
#: fileItemMenu.js:181
msgid "Rename…"
msgstr "Hernoemen…"
#: fileItemMenu.js:189
msgid "Move to Trash"
msgstr "Verplaatsen naar prullenbak"
#: fileItemMenu.js:195
msgid "Delete permanently"
msgstr "Definitief verwijderen"
#: fileItemMenu.js:203
#, fuzzy
msgid "Don't Allow Launching"
msgstr "Toepassingen starten niet toestaan"
#: fileItemMenu.js:203
msgid "Allow Launching"
msgstr "Toepassingen starten toestaan"
#: fileItemMenu.js:214
msgid "Empty Trash"
msgstr "Prullenbak legen"
#: fileItemMenu.js:225
msgid "Eject"
msgstr "Uitwerpen"
#: fileItemMenu.js:231
msgid "Unmount"
msgstr "Ontkoppelen"
#: fileItemMenu.js:241
msgid "Extract Here"
msgstr "Hier uitpakken"
#: fileItemMenu.js:245
msgid "Extract To..."
msgstr "Uitpakken naar…"
#: fileItemMenu.js:252
msgid "Send to..."
msgstr "Versturen naar…"
#: fileItemMenu.js:258
msgid "Compress {0} file"
msgid_plural "Compress {0} files"
msgstr[0] ""
msgstr[1] ""
#: fileItemMenu.js:264
msgid "New Folder with {0} item"
msgid_plural "New Folder with {0} items"
msgstr[0] ""
msgstr[1] ""
#: fileItemMenu.js:273
#, fuzzy
msgid "Common Properties"
msgstr "Eigenschappen"
#: fileItemMenu.js:273
msgid "Properties"
msgstr "Eigenschappen"
#: fileItemMenu.js:280
#, fuzzy
msgid "Show All in Files"
msgstr "Tonen in Bestanden"
#: fileItemMenu.js:280
msgid "Show in Files"
msgstr "Tonen in Bestanden"
#: fileItemMenu.js:365
msgid "Select Extract Destination"
msgstr ""
#: fileItemMenu.js:370
msgid "Select"
msgstr "Selecteren"
#: fileItemMenu.js:396
msgid "Can not email a Directory"
msgstr ""
#: fileItemMenu.js:397
msgid "Selection includes a Directory, compress the directory to a file first."
msgstr ""
#: preferences.js:67
msgid "Settings"
msgstr "Instellingen"
#: showErrorPopup.js:40
msgid "Close"
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:45
#, fuzzy
msgid "Show external drives in the desktop"
msgstr "Toon de persoonlijke map op het bureaublad"
#: 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:50
#, fuzzy
msgid "Show network drives in the desktop"
msgstr "Toon de persoonlijke map op het bureaublad."
#: 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:55
msgid "Add new drives to the opposite side of the screen"
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:90
msgid "Use Nemo to open folders"
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 ""
#~ msgid "Size for the desktop icons"
#~ msgstr "Grootte van bureaubladpictogrammen"
#~ msgid "Small"
#~ msgstr "Klein"
#~ msgid "Standard"
#~ msgstr "Standaard"
#~ msgid "Large"
#~ msgstr "Groot"
#~ msgid "Show the personal folder in the desktop"
#~ msgstr "Toon de persoonlijke map op het bureaublad"
#~ msgid "Show the trash icon in the desktop"
#~ msgstr "Toon het prullenbakpictogram op het bureaublad"
#, fuzzy
#~ msgid "New icons alignment"
#~ msgstr "Pictogramgrootte"
#, fuzzy
#~ msgid "Show hidden files"
#~ msgstr "Tonen in Bestanden"
#~ 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 "Error while deleting files"
#~ msgstr "Fout tijdens het 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 "Create"
#~ msgstr "Aanmaken"
#~ 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-43/po/oc.po 0000664 0000000 0000000 00000036112 14216573372 0016062 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.
#
msgid ""
msgstr ""
"Project-Id-Version: ding\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-03-23 11:12+0100\n"
"PO-Revision-Date: 2021-08-23 19:44+0200\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"
"X-Generator: Poedit 3.0\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
#: askRenamePopup.js:42
msgid "Folder name"
msgstr "Nom del dorsièr"
#: askRenamePopup.js:42
msgid "File name"
msgstr "Nom de fichièr"
#: askRenamePopup.js:49 desktopManager.js:798
msgid "OK"
msgstr "D’acordi"
#: askRenamePopup.js:49
msgid "Rename"
msgstr "Renomenar"
#: dbusUtils.js:65
msgid "\"${programName}\" is needed for Desktop Icons"
msgstr ""
#: dbusUtils.js:66
msgid ""
"For this functionality to work in Desktop Icons, you must install "
"\"${programName}\" in your system."
msgstr ""
#: desktopIconsUtil.js:96
msgid "Command not found"
msgstr "Comanda pas trobada"
#: desktopManager.js:215
msgid "Nautilus File Manager not found"
msgstr "Gestionari de fichièrs Nautilus pas trobat"
#: desktopManager.js:216
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."
#: desktopManager.js:761
msgid "Clear Current Selection before New Search"
msgstr ""
#: desktopManager.js:800 fileItemMenu.js:369
msgid "Cancel"
msgstr "Anullada"
#: desktopManager.js:802
msgid "Find Files on Desktop"
msgstr ""
#: desktopManager.js:867 desktopManager.js:1490
msgid "New Folder"
msgstr "Dorsièr novèl"
#: desktopManager.js:871
msgid "New Document"
msgstr "Document novèl"
#: desktopManager.js:876
msgid "Paste"
msgstr "Pegar"
#: desktopManager.js:880
msgid "Undo"
msgstr "Anullar"
#: desktopManager.js:884
msgid "Redo"
msgstr "Refar"
#: desktopManager.js:890
#, fuzzy
msgid "Select All"
msgstr "_Seleccionar tot"
#: desktopManager.js:898
msgid "Show Desktop in Files"
msgstr "Mostrar lo burèu dins Fichièrs"
#: desktopManager.js:902 fileItemMenu.js:287
msgid "Open in Terminal"
msgstr "Dobrir dins un terminal"
#: desktopManager.js:908
msgid "Change Background…"
msgstr "Modificar lo rèireplan…"
#: desktopManager.js:919
#, fuzzy
msgid "Desktop Icons Settings"
msgstr "Paramètres icònas de burèu"
#: desktopManager.js:923
msgid "Display Settings"
msgstr "Paramètres d'afichatge"
#: desktopManager.js:1548
msgid "Arrange Icons"
msgstr "Arrengar las icònas"
#: desktopManager.js:1552
msgid "Arrange By..."
msgstr "Arrengar per..."
#: desktopManager.js:1561
msgid "Keep Arranged..."
msgstr "Gardar arrengat..."
#: desktopManager.js:1565
msgid "Keep Stacked by type..."
msgstr ""
#: desktopManager.js:1570
msgid "Sort Home/Drives/Trash..."
msgstr "Triar Repertòri personal/disques/escobilhièr..."
#: desktopManager.js:1576
msgid "Sort by Name"
msgstr "Triar per nom"
#: desktopManager.js:1578
msgid "Sort by Name Descending"
msgstr "Triar per nom descendent"
#: desktopManager.js:1581
msgid "Sort by Modified Time"
msgstr "Triar per data de modificacion"
#: desktopManager.js:1584
msgid "Sort by Type"
msgstr "Triar per tipe"
#: desktopManager.js:1587
msgid "Sort by Size"
msgstr "Triar per talha"
#. TRANSLATORS: "Home" is the text that will be shown in the user's personal folder
#: fileItem.js:156
msgid "Home"
msgstr "Domicili"
#: fileItem.js:275
msgid "Broken Link"
msgstr ""
#: fileItem.js:276
msgid "Can not open this File because it is a Broken Symlink"
msgstr ""
#: fileItem.js:326
#, fuzzy
msgid "Broken Desktop File"
msgstr "Mostrar lo burèu dins Fichièrs"
#: fileItem.js:327
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 ""
#: fileItem.js:333
msgid "Invalid Permissions on Desktop File"
msgstr ""
#: fileItem.js:334
msgid ""
"This .desktop File has incorrect Permissions. Right Click to edit "
"Properties, then:\n"
msgstr ""
#: fileItem.js:336
msgid ""
"\n"
"Set Permissions, in \"Others Access\", \"Read Only\" or \"None\""
msgstr ""
#: fileItem.js:339
msgid ""
"\n"
"Enable option, \"Allow Executing File as a Program\""
msgstr ""
#: fileItem.js:347
msgid ""
"This .desktop file is not trusted, it can not be launched. To enable "
"launching, right-click, then:\n"
"\n"
"Enable \"Allow Launching\""
msgstr ""
#: fileItemMenu.js:118
msgid "Open All..."
msgstr "Dobrir tot..."
#: fileItemMenu.js:118
msgid "Open"
msgstr "Dobrir"
#: fileItemMenu.js:129
msgid "Stack This Type"
msgstr ""
#: fileItemMenu.js:129
msgid "Unstack This Type"
msgstr ""
#: fileItemMenu.js:141
msgid "Scripts"
msgstr "Scripts"
#: fileItemMenu.js:147
msgid "Open All With Other Application..."
msgstr "Dobrir tot amb una autra aplicacion..."
#: fileItemMenu.js:147
msgid "Open With Other Application"
msgstr "Dobrir amb una autra aplicacion"
#: fileItemMenu.js:153
msgid "Launch using Dedicated Graphics Card"
msgstr "Aviar en utilizant la carta grafica dedicada"
#: fileItemMenu.js:162
msgid "Run as a program"
msgstr ""
#: fileItemMenu.js:170
msgid "Cut"
msgstr "Copar"
#: fileItemMenu.js:175
msgid "Copy"
msgstr "Copiar"
#: fileItemMenu.js:181
msgid "Rename…"
msgstr "Renomenar…"
#: fileItemMenu.js:189
msgid "Move to Trash"
msgstr "Desplaçar dins l'escobilhièr"
#: fileItemMenu.js:195
msgid "Delete permanently"
msgstr "Suprimir definitivament"
#: fileItemMenu.js:203
msgid "Don't Allow Launching"
msgstr "Permetre pas l’aviada"
#: fileItemMenu.js:203
msgid "Allow Launching"
msgstr "Permetre l'aviada"
#: fileItemMenu.js:214
msgid "Empty Trash"
msgstr "Voidar l'escobilièr"
#: fileItemMenu.js:225
msgid "Eject"
msgstr "Ejectar"
#: fileItemMenu.js:231
msgid "Unmount"
msgstr "Desmontar"
#: fileItemMenu.js:241
msgid "Extract Here"
msgstr "Traire aicí"
#: fileItemMenu.js:245
msgid "Extract To..."
msgstr "Extraire dins..."
#: fileItemMenu.js:252
msgid "Send to..."
msgstr "Mandar a..."
#: fileItemMenu.js:258
msgid "Compress {0} file"
msgid_plural "Compress {0} files"
msgstr[0] "Compressar {0} fichièr"
msgstr[1] "Compressar {0} fichièrs"
#: fileItemMenu.js:264
msgid "New Folder with {0} item"
msgid_plural "New Folder with {0} items"
msgstr[0] "Dorsièr novèl amb {0} element"
msgstr[1] "Dorsièr novèl amb {0} elements"
#: fileItemMenu.js:273
msgid "Common Properties"
msgstr "Proprietats comunas"
#: fileItemMenu.js:273
msgid "Properties"
msgstr "Proprietats"
#: fileItemMenu.js:280
msgid "Show All in Files"
msgstr "Tot mostrar dins Fichièrs"
#: fileItemMenu.js:280
msgid "Show in Files"
msgstr "Mostrar dins Fichièrs"
#: fileItemMenu.js:365
msgid "Select Extract Destination"
msgstr "Seleccionar una destinacion per l'extraccion"
#: fileItemMenu.js:370
msgid "Select"
msgstr "Causir"
#: fileItemMenu.js:396
msgid "Can not email a Directory"
msgstr "Impossible d’enviar un email a un Repertòri"
#: fileItemMenu.js:397
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."
#: preferences.js:67
msgid "Settings"
msgstr "Paramètres"
#: showErrorPopup.js:40
msgid "Close"
msgstr "Tancar"
#: 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 dorsiè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:45
msgid "Show external drives in the desktop"
msgstr "Mostrar los lector extèrns montats pel burèu"
#: 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:50
msgid "Show network drives in the desktop"
msgstr "Mostrar los lectors ret montats pel burèu"
#: 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:55
msgid "Add new drives to the opposite side of the screen"
msgstr "Apondre los lectors novèls al costat opausat de l’ecran"
#: 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 dorsiè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
#, fuzzy
msgid "Keep Icons Stacked"
msgstr "Gardar las icònas arrengadas"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:81
#, fuzzy
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 ""
#: 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:90
msgid "Use Nemo to open folders"
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 ""
#~ msgid "Size for the desktop icons"
#~ msgstr "Talha de las icònas burèu"
#~ msgid "Tiny"
#~ msgstr "Minuscula"
#~ msgid "Small"
#~ msgstr "Pichona"
#~ msgid "Standard"
#~ msgstr "Estandarda"
#~ msgid "Large"
#~ msgstr "Granda"
#~ msgid "Show the personal folder in the desktop"
#~ msgstr "Mostrar lo dorsièr personal pel burèu"
#~ msgid "Show the trash icon in the desktop"
#~ msgstr "Mostrar l'icòna de l'escobilhièr pel burèu"
#~ msgid "New icons alignment"
#~ msgstr "Alinhament de las icònas novèlas"
#~ msgid "Top-left corner"
#~ msgstr "Caire en naut a esquèrra"
#~ msgid "Top-right corner"
#~ msgstr "Caire en naut a drecha"
#~ msgid "Bottom-left corner"
#~ msgstr "Caire en bas a esquèrra"
#~ msgid "Bottom-right corner"
#~ msgstr "Caire en bas a drecha"
#~ msgid "Highlight the drop place during Drag'n'Drop"
#~ msgstr "Enlusir la zòna de depaus pendent un lisar-depausar"
#~ msgid "Settings shared with Nautilus"
#~ msgstr "Paramètres partejats amb Nautilus"
#~ msgid "Click type for open files"
#~ msgstr "Tipe de clic utilizat per dobrir de fichièrs"
#~ msgid "Single click"
#~ msgstr "Clic simple"
#~ msgid "Double click"
#~ msgstr "Clic doble"
#~ msgid "Show hidden files"
#~ msgstr "Visualizar los fichièrs amagats"
#~ msgid "Show a context menu item to delete permanently"
#~ msgstr "Mostrar un element de menú contextual per suprimir definitivament"
#~ 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"
#~ msgid "Display the content of the file"
#~ msgstr "Afichar lo contengut del fichièr"
#~ msgid "Launch the file"
#~ msgstr "Executar lo fichièr"
#~ msgid "Ask what to do"
#~ msgstr "Demandar de qué far"
#~ msgid "Show image thumbnails"
#~ msgstr "Mostrar las miniaturas d'imatge"
#~ msgid "Never"
#~ msgstr "Jamai"
#~ msgid "Local files only"
#~ msgstr "Unicament los fichièrs locals"
#~ msgid "Always"
#~ msgstr "Totjorn"
#~ 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-43/po/pl.po 0000664 0000000 0000000 00000042123 14216573372 0016073 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.
# 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: 2022-03-23 11:12+0100\n"
"PO-Revision-Date: 2020-07-14 13:32+0200\n"
"Last-Translator: Paweł Piasek \n"
"Language-Team: Polish \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 2.3.1\n"
#: askRenamePopup.js:42
msgid "Folder name"
msgstr "Nazwa katalogu"
#: askRenamePopup.js:42
msgid "File name"
msgstr "Nazwa pliku"
#: askRenamePopup.js:49 desktopManager.js:798
msgid "OK"
msgstr "OK"
#: askRenamePopup.js:49
msgid "Rename"
msgstr "Zmień nazwę"
#: dbusUtils.js:65
msgid "\"${programName}\" is needed for Desktop Icons"
msgstr "\"${programName}\" jest potrzebny do działania Ikon Pulpitu"
#: dbusUtils.js:66
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"
#: desktopIconsUtil.js:96
msgid "Command not found"
msgstr "Nie odnaleziono polecenia"
#: desktopManager.js:215
msgid "Nautilus File Manager not found"
msgstr "Menedżer plików Nautilus nie został odnaleziony"
#: desktopManager.js:216
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."
#: desktopManager.js:761
msgid "Clear Current Selection before New Search"
msgstr ""
"Obecne zaznaczenie uniemożliwia nowe wyszukiwanie, odznacz obecne zaznaczenie"
#: desktopManager.js:800 fileItemMenu.js:369
msgid "Cancel"
msgstr "Anuluj"
#: desktopManager.js:802
msgid "Find Files on Desktop"
msgstr "Znajdź pliki na Pulpicie"
#: desktopManager.js:867 desktopManager.js:1490
msgid "New Folder"
msgstr "Nowy katalog"
#: desktopManager.js:871
msgid "New Document"
msgstr "Nowy dokument"
#: desktopManager.js:876
msgid "Paste"
msgstr "Wklej"
#: desktopManager.js:880
msgid "Undo"
msgstr "Cofnij"
#: desktopManager.js:884
msgid "Redo"
msgstr "Ponów"
#: desktopManager.js:890
msgid "Select All"
msgstr "Zaznacz wszystko"
#: desktopManager.js:898
msgid "Show Desktop in Files"
msgstr "Wyświetl pulpit w menedżerze plików"
#: desktopManager.js:902 fileItemMenu.js:287
msgid "Open in Terminal"
msgstr "Otwórz w terminalu"
#: desktopManager.js:908
msgid "Change Background…"
msgstr "Zmień tło…"
#: desktopManager.js:919
msgid "Desktop Icons Settings"
msgstr "Ustawienia ikon na pulpicie"
#: desktopManager.js:923
msgid "Display Settings"
msgstr "Ustawienia ekranu"
#: desktopManager.js:1548
msgid "Arrange Icons"
msgstr "Rozmieść ikony"
#: desktopManager.js:1552
msgid "Arrange By..."
msgstr "Sortuj według..."
#: desktopManager.js:1561
msgid "Keep Arranged..."
msgstr "Autorozmieszczanie"
#: desktopManager.js:1565
msgid "Keep Stacked by type..."
msgstr "Grupuj wg. typu"
#: desktopManager.js:1570
msgid "Sort Home/Drives/Trash..."
msgstr "Sortuj katalog domowy/Napędy/Kosz"
#: desktopManager.js:1576
msgid "Sort by Name"
msgstr "Nazwa"
#: desktopManager.js:1578
msgid "Sort by Name Descending"
msgstr "Nazwa (malejąco)"
#: desktopManager.js:1581
msgid "Sort by Modified Time"
msgstr "Data modyfikacji"
#: desktopManager.js:1584
msgid "Sort by Type"
msgstr "Typ elementu"
#: desktopManager.js:1587
msgid "Sort by Size"
msgstr "Rozmiar"
#. TRANSLATORS: "Home" is the text that will be shown in the user's personal folder
#: fileItem.js:156
msgid "Home"
msgstr "Katalog domowy"
#: fileItem.js:275
msgid "Broken Link"
msgstr "Wadliwy link (strót)"
#: fileItem.js:276
msgid "Can not open this File because it is a Broken Symlink"
msgstr "Nie można otworzyć pliku ponieważ jest to uszkodzony link symboliczny"
#: fileItem.js:326
msgid "Broken Desktop File"
msgstr ""
#: fileItem.js:327
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"
#: fileItem.js:333
msgid "Invalid Permissions on Desktop File"
msgstr ""
#: fileItem.js:334
msgid ""
"This .desktop File has incorrect Permissions. Right Click to edit "
"Properties, then:\n"
msgstr ""
#: fileItem.js:336
msgid ""
"\n"
"Set Permissions, in \"Others Access\", \"Read Only\" or \"None\""
msgstr ""
#: fileItem.js:339
msgid ""
"\n"
"Enable option, \"Allow Executing File as a Program\""
msgstr ""
#: fileItem.js:347
msgid ""
"This .desktop file is not trusted, it can not be launched. To enable "
"launching, right-click, then:\n"
"\n"
"Enable \"Allow Launching\""
msgstr ""
#: fileItemMenu.js:118
msgid "Open All..."
msgstr "Otwórz wiele..."
#: fileItemMenu.js:118
msgid "Open"
msgstr "Otwórz"
#: fileItemMenu.js:129
msgid "Stack This Type"
msgstr "Zwiń ten typ pliku"
#: fileItemMenu.js:129
msgid "Unstack This Type"
msgstr "Rozwiń ten typ pliku"
#: fileItemMenu.js:141
msgid "Scripts"
msgstr "Skrypty"
#: fileItemMenu.js:147
msgid "Open All With Other Application..."
msgstr "Otwórz za pomocą innego programu..."
#: fileItemMenu.js:147
msgid "Open With Other Application"
msgstr "Otwórz za pomocą innego programu"
#: fileItemMenu.js:153
msgid "Launch using Dedicated Graphics Card"
msgstr "Uruchom za pomocą dedykowanej karty graficznej"
#: fileItemMenu.js:162
msgid "Run as a program"
msgstr "Uruchom jako program"
#: fileItemMenu.js:170
msgid "Cut"
msgstr "Wytnij"
#: fileItemMenu.js:175
msgid "Copy"
msgstr "Skopiuj"
#: fileItemMenu.js:181
msgid "Rename…"
msgstr "Zmień nazwę…"
#: fileItemMenu.js:189
msgid "Move to Trash"
msgstr "Przenieś do kosza"
#: fileItemMenu.js:195
msgid "Delete permanently"
msgstr "Usuń trwale"
#: fileItemMenu.js:203
msgid "Don't Allow Launching"
msgstr "Nie zezwalaj na uruchamianie"
#: fileItemMenu.js:203
msgid "Allow Launching"
msgstr "Zezwól na uruchamianie"
#: fileItemMenu.js:214
msgid "Empty Trash"
msgstr "Opróżnij kosz"
#: fileItemMenu.js:225
msgid "Eject"
msgstr "Wysuń"
#: fileItemMenu.js:231
msgid "Unmount"
msgstr "Odmontuj"
#: fileItemMenu.js:241
msgid "Extract Here"
msgstr "Rozpakuj tutaj"
#: fileItemMenu.js:245
msgid "Extract To..."
msgstr "Rozpakuj do…"
#: fileItemMenu.js:252
msgid "Send to..."
msgstr "Wyślij do…"
#: fileItemMenu.js:258
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"
#: fileItemMenu.js:264
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"
#: fileItemMenu.js:273
msgid "Common Properties"
msgstr "Właściwości"
#: fileItemMenu.js:273
msgid "Properties"
msgstr "Właściwości"
#: fileItemMenu.js:280
msgid "Show All in Files"
msgstr "Wyświetl w menedżerze plików"
#: fileItemMenu.js:280
msgid "Show in Files"
msgstr "Wyświetl w menedżerze plików"
#: fileItemMenu.js:365
msgid "Select Extract Destination"
msgstr "Wybierz miejsce rozpakowania archiwum"
#: fileItemMenu.js:370
#, fuzzy
msgid "Select"
msgstr "Zaznacz wszystko"
#: fileItemMenu.js:396
msgid "Can not email a Directory"
msgstr "Nie można wysłać Katalogu"
#: fileItemMenu.js:397
msgid "Selection includes a Directory, compress the directory to a file first."
msgstr "Zaznaczenie zawiera Katalog, najpierw skompresuj Katalog do pliku."
#: preferences.js:67
msgid "Settings"
msgstr "Ustawienia"
#: showErrorPopup.js:40
msgid "Close"
msgstr "Zamknij"
#: 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:45
msgid "Show external drives in the desktop"
msgstr "Pokaż dyski zewnętrzne na pulpicie"
#: 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:50
msgid "Show network drives in the desktop"
msgstr "Pokaż dyski sieciowe na pulpicie"
#: 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:55
msgid "Add new drives to the opposite side of the screen"
msgstr "Dodaj nowe dyski po przeciwnej stronie ekranu"
#: 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:90
msgid "Use Nemo to open folders"
msgstr "Użyj Nemo do otwierania katalogó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 ""
#: 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 ""
#~ msgid "Size for the desktop icons"
#~ msgstr "Rozmiar ikon na pulpicie"
#~ msgid "Tiny"
#~ msgstr "Malutki"
#~ msgid "Small"
#~ msgstr "Mały"
#~ msgid "Standard"
#~ msgstr "Standardowy"
#~ msgid "Large"
#~ msgstr "Duży"
#~ msgid "Show the personal folder in the desktop"
#~ msgstr "Katalog domowy na pulpicie"
#~ msgid "Show the trash icon in the desktop"
#~ msgstr "Kosz na pulpicie"
#~ msgid "New icons alignment"
#~ msgstr "Wyrównanie nowych ikon"
#~ msgid "Top-left corner"
#~ msgstr "Do lewego górnego rogu"
#~ msgid "Top-right corner"
#~ msgstr "Do prawego górnego rogu"
#~ msgid "Bottom-left corner"
#~ msgstr "Do lewego dolnego rogu"
#~ msgid "Bottom-right corner"
#~ msgstr "Do prawego dolnego rogu"
#~ msgid "Highlight the drop place during Drag'n'Drop"
#~ msgstr "Podświetl miejsce upuszczenia pliku podczas przeciągania"
#~ msgid "Settings shared with Nautilus"
#~ msgstr "Ustawienia współdzielone z Nautilus"
#~ msgid "Click type for open files"
#~ msgstr "Wybierz sposób otwierania elementów"
#~ msgid "Single click"
#~ msgstr "Pojedyncze kliknięcie"
#~ msgid "Double click"
#~ msgstr "Podwójne kliknięcie"
#~ msgid "Show hidden files"
#~ msgstr "Pokaż ukryte pliki"
#~ msgid "Show a context menu item to delete permanently"
#~ msgstr "Pokaż element usuń trwale w menu kontekstowym"
#~ msgid "Action to do when launching a program from the desktop"
#~ msgstr "Czynność do wykonania podczas uruchamiania programu z pulpitu"
#~ msgid "Display the content of the file"
#~ msgstr "Pokaż zawartość pliku"
#~ msgid "Launch the file"
#~ msgstr "Uruchom plik"
#~ msgid "Ask what to do"
#~ msgstr "Zapytaj co zrobić"
#~ msgid "Show image thumbnails"
#~ msgstr "Pokazuj podgląd obrazów"
#~ msgid "Never"
#~ msgstr "Nigdy"
#~ msgid "Local files only"
#~ msgstr "Tylko dla lokalnych plików"
#~ msgid "Always"
#~ msgstr "Zawsze"
#~ msgid ""
#~ "To configure Desktop Icons NG, do right-click in the desktop and choose "
#~ "the last item: 'Desktop Icons settings'"
#~ msgstr ""
#~ "Aby skonfigurować ikony pulpitu, kliknij pulpit prawym przyciskiem myszy "
#~ "i wybierz ostatni element: 'Ustawienia ikon na pulpicie'"
#~ msgid "Do you want to run “{0}”, or display its contents?"
#~ msgstr "Wykonać plik „{0}”, czy wyświetlić jego zawartość?"
#~ msgid "“{0}” is an executable text file."
#~ msgstr "„{0}” jest wykonywalnym plikiem tekstowym."
#~ msgid "Execute in a terminal"
#~ msgstr "Otwórz w terminalu"
#~ msgid "Show"
#~ msgstr "Pokaż"
#~ msgid "Execute"
#~ msgstr "Wykonaj"
#~ msgid "New folder"
#~ msgstr "Nowy katalog"
#~ msgid "Delete"
#~ msgstr "Usuń"
#~ msgid "Error while deleting files"
#~ msgstr "Wystąpił błąd podczas usuwania plików"
#~ msgid "Are you sure you want to permanently delete these items?"
#~ msgstr "Czy na pewno usunąć trwale wybrane elementy?"
#~ msgid "If you delete an item, it will be permanently lost."
#~ msgstr "Jeśli usuniesz element, zostanie on trwale utracony."
#, fuzzy
#~ msgid "Show external disk drives in the desktop"
#~ msgstr "Katalog domowy na pulpicie"
#, fuzzy
#~ msgid "Show the external drives"
#~ msgstr "Katalog domowy na pulpicie"
#, fuzzy
#~ msgid "Show network volumes"
#~ msgstr "Wyświetl w menedżerze plików"
#~ msgid "Enter file name…"
#~ msgstr "Nazwa pliku…"
#~ msgid "Create"
#~ msgstr "Utwórz"
#~ msgid "Folder names cannot contain “/”."
#~ msgstr "Nazwy katalogów nie mogą zawierać znaku „/”."
#~ msgid "A folder cannot be called “.”."
#~ msgstr "Katalog nie może mieć nazwy „.”."
#~ msgid "A folder cannot be called “..”."
#~ msgstr "Katalog nie może mieć nazwy „..”."
#~ msgid "Folders with “.” at the beginning of their name are hidden."
#~ msgstr "Katalogi z „.” na początku nazwy są ukryte."
#~ msgid "There is already a file or folder with that name."
#~ msgstr "Plik lub katalog o tej nazwie już istnieje."
desktop-icons-ng-43/po/pt_BR.po 0000664 0000000 0000000 00000041530 14216573372 0016467 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: 2022-03-23 11:12+0100\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"
#: askRenamePopup.js:42
#, fuzzy
msgid "Folder name"
msgstr "Nome da nova pasta"
#: askRenamePopup.js:42
#, fuzzy
msgid "File name"
msgstr "Renomear…"
#: askRenamePopup.js:49 desktopManager.js:798
msgid "OK"
msgstr "OK"
#: askRenamePopup.js:49
#, fuzzy
msgid "Rename"
msgstr "Renomear…"
#: dbusUtils.js:65
msgid "\"${programName}\" is needed for Desktop Icons"
msgstr ""
#: dbusUtils.js:66
msgid ""
"For this functionality to work in Desktop Icons, you must install "
"\"${programName}\" in your system."
msgstr ""
#: desktopIconsUtil.js:96
msgid "Command not found"
msgstr "Comando não encontrado"
#: desktopManager.js:215
msgid "Nautilus File Manager not found"
msgstr "Gerenciador de arquivos Nautilus não encontrado"
#: desktopManager.js:216
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."
#: desktopManager.js:761
msgid "Clear Current Selection before New Search"
msgstr ""
#: desktopManager.js:800 fileItemMenu.js:369
msgid "Cancel"
msgstr "Cancelar"
#: desktopManager.js:802
msgid "Find Files on Desktop"
msgstr ""
#: desktopManager.js:867 desktopManager.js:1490
msgid "New Folder"
msgstr "Nova pasta"
#: desktopManager.js:871
msgid "New Document"
msgstr "Novo documento"
#: desktopManager.js:876
msgid "Paste"
msgstr "Colar"
#: desktopManager.js:880
msgid "Undo"
msgstr "Desfazer"
#: desktopManager.js:884
msgid "Redo"
msgstr "Refazer"
#: desktopManager.js:890
#, fuzzy
msgid "Select All"
msgstr "Selecionar todos"
#: desktopManager.js:898
msgid "Show Desktop in Files"
msgstr "Mostrar a área de trabalho nos Arquivos"
#: desktopManager.js:902 fileItemMenu.js:287
msgid "Open in Terminal"
msgstr "Abrir no terminal"
#: desktopManager.js:908
msgid "Change Background…"
msgstr "Alterar plano de fundo…"
#: desktopManager.js:919
#, fuzzy
msgid "Desktop Icons Settings"
msgstr "Configurações dos ícones no Desktop"
#: desktopManager.js:923
msgid "Display Settings"
msgstr "Configurações de exibição"
#: desktopManager.js:1548
msgid "Arrange Icons"
msgstr "Ordenar Ícones"
#: desktopManager.js:1552
msgid "Arrange By..."
msgstr "Ordenar por..."
#: desktopManager.js:1561
msgid "Keep Arranged..."
msgstr "Manter Ordenado..."
#: desktopManager.js:1565
msgid "Keep Stacked by type..."
msgstr ""
#: desktopManager.js:1570
msgid "Sort Home/Drives/Trash..."
msgstr "Ordenar Home/Drives/Lixeira..."
#: desktopManager.js:1576
msgid "Sort by Name"
msgstr "Ordenar por Nome"
#: desktopManager.js:1578
msgid "Sort by Name Descending"
msgstr "Ordenar por Nome de forma descendente"
#: desktopManager.js:1581
msgid "Sort by Modified Time"
msgstr "Ordenar por data de modificação"
#: desktopManager.js:1584
msgid "Sort by Type"
msgstr "Ordenar por Tipo"
#: desktopManager.js:1587
msgid "Sort by Size"
msgstr "Ordenar por Tamanho"
#. TRANSLATORS: "Home" is the text that will be shown in the user's personal folder
#: fileItem.js:156
msgid "Home"
msgstr "Pasta pessoal"
#: fileItem.js:275
msgid "Broken Link"
msgstr ""
#: fileItem.js:276
msgid "Can not open this File because it is a Broken Symlink"
msgstr ""
#: fileItem.js:326
#, fuzzy
msgid "Broken Desktop File"
msgstr "Mostrar a área de trabalho nos Arquivos"
#: fileItem.js:327
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 ""
#: fileItem.js:333
msgid "Invalid Permissions on Desktop File"
msgstr ""
#: fileItem.js:334
msgid ""
"This .desktop File has incorrect Permissions. Right Click to edit "
"Properties, then:\n"
msgstr ""
#: fileItem.js:336
msgid ""
"\n"
"Set Permissions, in \"Others Access\", \"Read Only\" or \"None\""
msgstr ""
#: fileItem.js:339
msgid ""
"\n"
"Enable option, \"Allow Executing File as a Program\""
msgstr ""
#: fileItem.js:347
msgid ""
"This .desktop file is not trusted, it can not be launched. To enable "
"launching, right-click, then:\n"
"\n"
"Enable \"Allow Launching\""
msgstr ""
#: fileItemMenu.js:118
msgid "Open All..."
msgstr "Abrir todos..."
#: fileItemMenu.js:118
msgid "Open"
msgstr "Abrir"
#: fileItemMenu.js:129
msgid "Stack This Type"
msgstr ""
#: fileItemMenu.js:129
msgid "Unstack This Type"
msgstr ""
#: fileItemMenu.js:141
msgid "Scripts"
msgstr "Scripts"
#: fileItemMenu.js:147
#, fuzzy
msgid "Open All With Other Application..."
msgstr "Abrir com outro aplicativo"
#: fileItemMenu.js:147
msgid "Open With Other Application"
msgstr "Abrir com outro aplicativo"
#: fileItemMenu.js:153
msgid "Launch using Dedicated Graphics Card"
msgstr "Abrir usando placa de vídeo dedicada"
#: fileItemMenu.js:162
msgid "Run as a program"
msgstr ""
#: fileItemMenu.js:170
msgid "Cut"
msgstr "Recortar"
#: fileItemMenu.js:175
msgid "Copy"
msgstr "Copiar"
#: fileItemMenu.js:181
msgid "Rename…"
msgstr "Renomear…"
#: fileItemMenu.js:189
msgid "Move to Trash"
msgstr "Mover para a lixeira"
#: fileItemMenu.js:195
msgid "Delete permanently"
msgstr "Excluir permanentemente"
#: fileItemMenu.js:203
#, fuzzy
msgid "Don't Allow Launching"
msgstr "Não permitir iniciar"
#: fileItemMenu.js:203
msgid "Allow Launching"
msgstr "Permitir iniciar"
#: fileItemMenu.js:214
msgid "Empty Trash"
msgstr "Esvaziar lixeira"
#: fileItemMenu.js:225
msgid "Eject"
msgstr "Ejetar"
#: fileItemMenu.js:231
msgid "Unmount"
msgstr "Desmontar"
#: fileItemMenu.js:241
msgid "Extract Here"
msgstr "Extrair aqui"
#: fileItemMenu.js:245
msgid "Extract To..."
msgstr "Extrair para…"
#: fileItemMenu.js:252
msgid "Send to..."
msgstr "Enviar para..."
#: fileItemMenu.js:258
msgid "Compress {0} file"
msgid_plural "Compress {0} files"
msgstr[0] "Comprimir {0} arquivo"
msgstr[1] "Comprimir {0} arquivos"
#: fileItemMenu.js:264
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"
#: fileItemMenu.js:273
#, fuzzy
msgid "Common Properties"
msgstr "Propriedades"
#: fileItemMenu.js:273
msgid "Properties"
msgstr "Propriedades"
#: fileItemMenu.js:280
#, fuzzy
msgid "Show All in Files"
msgstr "Mostrar todos no gestor de arquivos"
#: fileItemMenu.js:280
msgid "Show in Files"
msgstr "Mostrar no gestor de arquivos"
#: fileItemMenu.js:365
msgid "Select Extract Destination"
msgstr "Selecionar destino da extração"
#: fileItemMenu.js:370
#, fuzzy
msgid "Select"
msgstr "Selecionar todos"
#: fileItemMenu.js:396
msgid "Can not email a Directory"
msgstr "Não é possível enviar um diretório por email"
#: fileItemMenu.js:397
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"
#: preferences.js:67
msgid "Settings"
msgstr "Configurações"
#: showErrorPopup.js:40
msgid "Close"
msgstr "Fechar"
#: 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:45
#, fuzzy
msgid "Show external drives in the desktop"
msgstr "Mostrar dispositivos externos na área de trabalho"
#: 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:50
#, fuzzy
msgid "Show network drives in the desktop"
msgstr "Mostrar dispositivos da rede na área de trabalho."
#: 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:55
msgid "Add new drives to the opposite side of the screen"
msgstr "Mostrar novos dispositivos no lado oposto da tela"
#: 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:90
msgid "Use Nemo to open folders"
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 ""
#~ msgid "Size for the desktop icons"
#~ msgstr "Tamanho para os ícones da área de trabalho"
#~ msgid "Tiny"
#~ msgstr "Muito pequeno"
#~ msgid "Small"
#~ msgstr "Pequeno"
#~ msgid "Standard"
#~ msgstr "Padrão"
#~ msgid "Large"
#~ msgstr "Grande"
#~ msgid "Show the personal folder in the desktop"
#~ msgstr "Mostrar a pasta pessoal na área de trabalho"
#~ msgid "Show the trash icon in the desktop"
#~ msgstr "Mostrar o ícone da lixeira na área de trabalho"
#, fuzzy
#~ msgid "New icons alignment"
#~ msgstr "Posição dos ícones novos"
#~ msgid "Top-left corner"
#~ msgstr "Canto superior esquerdo"
#~ msgid "Top-right corner"
#~ msgstr "Canto superior direito"
#~ msgid "Bottom-left corner"
#~ msgstr "Canto inferior esquerdo"
#~ msgid "Bottom-right corner"
#~ msgstr "Canto inferior direito"
#~ msgid "Highlight the drop place during Drag'n'Drop"
#~ msgstr "Destacar o local onde o ícone será alocado ao arrastar e soltar"
#~ msgid "Settings shared with Nautilus"
#~ msgstr "Configurações compartilhadas com Nautilus"
#~ msgid "Click type for open files"
#~ msgstr "Tipo de clique para abrir arquivos"
#~ msgid "Single click"
#~ msgstr "Clique único"
#~ msgid "Double click"
#~ msgstr "Clique duplo"
#, fuzzy
#~ msgid "Show hidden files"
#~ msgstr "Mostrar arquivos ocultos"
#~ msgid "Show a context menu item to delete permanently"
#~ msgstr "Mostrar a opção de excluir permanentemente no menu de contexto"
#~ msgid "Action to do when launching a program from the desktop"
#~ msgstr "O que fazer ao clicar num programa na área de trabalho"
#~ msgid "Display the content of the file"
#~ msgstr "Mostrar o conteúdo do arquivo"
#~ msgid "Launch the file"
#~ msgstr "Executar o arquivo"
#~ msgid "Ask what to do"
#~ msgstr "Perguntar o que fazer"
#~ msgid "Show image thumbnails"
#~ msgstr "Mostrar miniaturas"
#~ msgid "Never"
#~ msgstr "Nunca"
#~ msgid "Local files only"
#~ msgstr "Apenas arquivos locais"
#~ msgid "Always"
#~ msgstr "Sempre"
#, 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 "Error while deleting files"
#~ msgstr "Erro ao excluir os arquivos"
#~ 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 "Create"
#~ msgstr "Criar"
#~ 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-43/po/ro.po 0000664 0000000 0000000 00000040711 14216573372 0016101 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: 2022-03-23 11:12+0100\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"
#: askRenamePopup.js:42
msgid "Folder name"
msgstr "Nume dosar"
#: askRenamePopup.js:42
msgid "File name"
msgstr "Nume fișier"
#: askRenamePopup.js:49 desktopManager.js:798
msgid "OK"
msgstr "Ok"
#: askRenamePopup.js:49
msgid "Rename"
msgstr "Redenumește"
#: dbusUtils.js:65
msgid "\"${programName}\" is needed for Desktop Icons"
msgstr ""
#: dbusUtils.js:66
msgid ""
"For this functionality to work in Desktop Icons, you must install "
"\"${programName}\" in your system."
msgstr ""
#: desktopIconsUtil.js:96
msgid "Command not found"
msgstr "Comanda nu a fost găsită"
#: desktopManager.js:215
msgid "Nautilus File Manager not found"
msgstr "Managerul de fișiere Nautilus nu a fost"
#: desktopManager.js:216
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."
#: desktopManager.js:761
msgid "Clear Current Selection before New Search"
msgstr "Șterge selecția curentă înainte de o Căutare Nouă"
#: desktopManager.js:800 fileItemMenu.js:369
msgid "Cancel"
msgstr "Anulează"
#: desktopManager.js:802
msgid "Find Files on Desktop"
msgstr "Caută fișiere pe Desktop"
#: desktopManager.js:867 desktopManager.js:1490
msgid "New Folder"
msgstr "Director nou"
#: desktopManager.js:871
msgid "New Document"
msgstr "Document nou"
#: desktopManager.js:876
msgid "Paste"
msgstr "Lipește"
#: desktopManager.js:880
msgid "Undo"
msgstr "Anulează"
#: desktopManager.js:884
msgid "Redo"
msgstr "Refă"
#: desktopManager.js:890
msgid "Select All"
msgstr "Selectează tot"
#: desktopManager.js:898
msgid "Show Desktop in Files"
msgstr "Arată Desktop în Fișiere"
#: desktopManager.js:902 fileItemMenu.js:287
msgid "Open in Terminal"
msgstr "Deschide în terminal"
#: desktopManager.js:908
msgid "Change Background…"
msgstr "Schimbă fundalul..."
#: desktopManager.js:919
msgid "Desktop Icons Settings"
msgstr "Setări Pictograme Desktop"
#: desktopManager.js:923
msgid "Display Settings"
msgstr "Setări afișaj"
#: desktopManager.js:1548
msgid "Arrange Icons"
msgstr "Aranjează pictogramele"
#: desktopManager.js:1552
msgid "Arrange By..."
msgstr "Aranjează după..."
#: desktopManager.js:1561
msgid "Keep Arranged..."
msgstr "Aranjează automat..."
#: desktopManager.js:1565
msgid "Keep Stacked by type..."
msgstr ""
#: desktopManager.js:1570
msgid "Sort Home/Drives/Trash..."
msgstr "Sortează Acasă/Unități/Coș de gunoi..."
#: desktopManager.js:1576
msgid "Sort by Name"
msgstr "Sortează după nume"
#: desktopManager.js:1578
msgid "Sort by Name Descending"
msgstr "Sortează după nume Descendent"
#: desktopManager.js:1581
msgid "Sort by Modified Time"
msgstr "Sortează dupa data modificării"
#: desktopManager.js:1584
msgid "Sort by Type"
msgstr "Sortează după tip"
#: desktopManager.js:1587
msgid "Sort by Size"
msgstr "Sortează după dimensiune"
#. TRANSLATORS: "Home" is the text that will be shown in the user's personal folder
#: fileItem.js:156
msgid "Home"
msgstr "Acasă"
#: fileItem.js:275
msgid "Broken Link"
msgstr ""
#: fileItem.js:276
msgid "Can not open this File because it is a Broken Symlink"
msgstr ""
#: fileItem.js:326
#, fuzzy
msgid "Broken Desktop File"
msgstr "Arată Desktop în Fișiere"
#: fileItem.js:327
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 ""
#: fileItem.js:333
msgid "Invalid Permissions on Desktop File"
msgstr ""
#: fileItem.js:334
msgid ""
"This .desktop File has incorrect Permissions. Right Click to edit "
"Properties, then:\n"
msgstr ""
#: fileItem.js:336
msgid ""
"\n"
"Set Permissions, in \"Others Access\", \"Read Only\" or \"None\""
msgstr ""
#: fileItem.js:339
msgid ""
"\n"
"Enable option, \"Allow Executing File as a Program\""
msgstr ""
#: fileItem.js:347
msgid ""
"This .desktop file is not trusted, it can not be launched. To enable "
"launching, right-click, then:\n"
"\n"
"Enable \"Allow Launching\""
msgstr ""
#: fileItemMenu.js:118
msgid "Open All..."
msgstr "Deschide tot..."
#: fileItemMenu.js:118
msgid "Open"
msgstr "Deschide"
#: fileItemMenu.js:129
msgid "Stack This Type"
msgstr ""
#: fileItemMenu.js:129
msgid "Unstack This Type"
msgstr ""
#: fileItemMenu.js:141
msgid "Scripts"
msgstr "Scripturi"
#: fileItemMenu.js:147
msgid "Open All With Other Application..."
msgstr "Deschide tot cu altă aplicație..."
#: fileItemMenu.js:147
msgid "Open With Other Application"
msgstr "Deschide cu altă aplicație"
#: fileItemMenu.js:153
msgid "Launch using Dedicated Graphics Card"
msgstr "Lanseaza folosind Placă Video Dedicată"
#: fileItemMenu.js:162
msgid "Run as a program"
msgstr ""
#: fileItemMenu.js:170
msgid "Cut"
msgstr "Taie"
#: fileItemMenu.js:175
msgid "Copy"
msgstr "Copiază"
#: fileItemMenu.js:181
msgid "Rename…"
msgstr "Redenumește…"
#: fileItemMenu.js:189
msgid "Move to Trash"
msgstr "Mută la coșul de gunoi"
#: fileItemMenu.js:195
msgid "Delete permanently"
msgstr "Șterge definitiv"
#: fileItemMenu.js:203
msgid "Don't Allow Launching"
msgstr "Nu permite lansarea"
#: fileItemMenu.js:203
msgid "Allow Launching"
msgstr "Permite lansarea"
#: fileItemMenu.js:214
msgid "Empty Trash"
msgstr "Golește coșul de gunoi"
#: fileItemMenu.js:225
msgid "Eject"
msgstr "Scoate"
#: fileItemMenu.js:231
msgid "Unmount"
msgstr "Demontează"
#: fileItemMenu.js:241
msgid "Extract Here"
msgstr "Extrage aici"
#: fileItemMenu.js:245
msgid "Extract To..."
msgstr "Extrage în..."
#: fileItemMenu.js:252
msgid "Send to..."
msgstr "Trimite la..."
#: fileItemMenu.js:258
msgid "Compress {0} file"
msgid_plural "Compress {0} files"
msgstr[0] "Comprimă {0} fișier"
msgstr[1] "Comprimă {0} fișiere"
#: fileItemMenu.js:264
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"
#: fileItemMenu.js:273
msgid "Common Properties"
msgstr "Proprietăți generale"
#: fileItemMenu.js:273
msgid "Properties"
msgstr "Proprietăți"
#: fileItemMenu.js:280
msgid "Show All in Files"
msgstr "Arată toate fișierele"
#: fileItemMenu.js:280
msgid "Show in Files"
msgstr "Arată în fișiere"
#: fileItemMenu.js:365
msgid "Select Extract Destination"
msgstr "Selectează destinația pentru extragere"
#: fileItemMenu.js:370
msgid "Select"
msgstr "Selectează"
#: fileItemMenu.js:396
msgid "Can not email a Directory"
msgstr "Nu se poate trimite un dosar prin email"
#: fileItemMenu.js:397
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"
#: preferences.js:67
msgid "Settings"
msgstr "Setări"
#: showErrorPopup.js:40
msgid "Close"
msgstr "Închide"
#: 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:45
msgid "Show external drives in the desktop"
msgstr "Arată unitățile externe pe desktop"
#: 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:50
msgid "Show network drives in the desktop"
msgstr "Arată unitățile de rețea pe desktop"
#: 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:55
msgid "Add new drives to the opposite side of the screen"
msgstr "Adaugă unitățile noi în colțul opus al ecranului"
#: 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:90
msgid "Use Nemo to open folders"
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 ""
#~ msgid "Size for the desktop icons"
#~ msgstr "Dimensiune pictograme desktop"
#~ msgid "Tiny"
#~ msgstr "Minuscule"
#~ msgid "Small"
#~ msgstr "Mici"
#~ msgid "Standard"
#~ msgstr "Normale"
#~ msgid "Large"
#~ msgstr "Mari"
#~ msgid "Show the personal folder in the desktop"
#~ msgstr "Afișează dosarul personal pe desktop"
#~ msgid "Show the trash icon in the desktop"
#~ msgstr "Arată coșul de gunoi pe desktop"
#~ msgid "New icons alignment"
#~ msgstr "Aliniere pictograme noi"
#~ msgid "Top-left corner"
#~ msgstr "Colțul stânga-sus"
#~ msgid "Top-right corner"
#~ msgstr "Colțul dreapta-sus"
#~ msgid "Bottom-left corner"
#~ msgstr "Colțul stânga-jos"
#~ msgid "Bottom-right corner"
#~ msgstr "Colțul dreapta-jos"
#~ msgid "Highlight the drop place during Drag'n'Drop"
#~ msgstr ""
#~ "Evidențiază punctul de plasare în timpul operațiunii de trage si plasează"
#~ msgid "Settings shared with Nautilus"
#~ msgstr "Setări comune cu Nautilus"
#~ msgid "Click type for open files"
#~ msgstr "Tipul de click pentru deschidere fișiere"
#~ msgid "Single click"
#~ msgstr "Click unic"
#~ msgid "Double click"
#~ msgstr "Dublu click"
#~ msgid "Show hidden files"
#~ msgstr "Arată fișierele ascunse"
#~ msgid "Show a context menu item to delete permanently"
#~ msgstr "Arată un meniu de context pentru ștergere definitivă"
#~ msgid "Action to do when launching a program from the desktop"
#~ msgstr "Acțiuni de făcut la deschiderea unui program de pe desktop"
#~ msgid "Display the content of the file"
#~ msgstr "Afișează conținutul fișierului"
#~ msgid "Launch the file"
#~ msgstr "Lansează fișierul"
#~ msgid "Ask what to do"
#~ msgstr "Întreabă ce e de făcut"
#~ msgid "Show image thumbnails"
#~ msgstr "Arată miniaturi imagini"
#~ msgid "Never"
#~ msgstr "Niciodată"
#~ msgid "Local files only"
#~ msgstr "Doar fișierele locale"
#~ msgid "Always"
#~ msgstr "Întotdeauna"
#~ 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 "Error while deleting files"
#~ msgstr "Eroare la ștergerea fișierelor"
#~ 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 "Create"
#~ msgstr "Creează"
#~ 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-43/po/ru.po 0000664 0000000 0000000 00000055306 14216573372 0016115 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.
# Eaglers , 2018
# Ser82-png , 2021-2022
#
msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-03-23 11:12+0100\n"
"PO-Revision-Date: 2022-03-19 07:20+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 2.3\n"
#: askRenamePopup.js:42
msgid "Folder name"
msgstr "Имя папки"
#: askRenamePopup.js:42
msgid "File name"
msgstr "Имя файла"
#: askRenamePopup.js:49 desktopManager.js:798
msgid "OK"
msgstr "ОК"
#: askRenamePopup.js:49
msgid "Rename"
msgstr "Переименовать"
#: dbusUtils.js:65
msgid "\"${programName}\" is needed for Desktop Icons"
msgstr "Для Desktop Icons требуется \"${programName}\" "
#: dbusUtils.js:66
msgid ""
"For this functionality to work in Desktop Icons, you must install "
"\"${programName}\" in your system."
msgstr ""
"Чтобы эта функция работала в Desktop Icons, вы должный установить "
"\"${programName}\"."
#: desktopIconsUtil.js:96
msgid "Command not found"
msgstr "Команда не найдена"
#: desktopManager.js:215
msgid "Nautilus File Manager not found"
msgstr "Файловый менеджер Nautilus не найден"
#: desktopManager.js:216
msgid "The Nautilus File Manager is mandatory to work with Desktop Icons NG."
msgstr ""
"Файловый менеджер Nautilus является обязательным для работы с Desktop Icons "
"NG."
#: desktopManager.js:761
msgid "Clear Current Selection before New Search"
msgstr "Очистить текущую подборку перед новым поиском"
#: desktopManager.js:800 fileItemMenu.js:369
msgid "Cancel"
msgstr "Отмена"
#: desktopManager.js:802
msgid "Find Files on Desktop"
msgstr "Поиск файлов на рабочем столе"
#: desktopManager.js:867 desktopManager.js:1490
msgid "New Folder"
msgstr "Создать папку"
#: desktopManager.js:871
msgid "New Document"
msgstr "Создать документ"
#: desktopManager.js:876
msgid "Paste"
msgstr "Вставить"
#: desktopManager.js:880
msgid "Undo"
msgstr "Отменить"
#: desktopManager.js:884
msgid "Redo"
msgstr "Повторить"
#: desktopManager.js:890
msgid "Select All"
msgstr "Выделить всё"
#: desktopManager.js:898
msgid "Show Desktop in Files"
msgstr "Показать рабочий стол в файловом менеджере"
#: desktopManager.js:902 fileItemMenu.js:287
msgid "Open in Terminal"
msgstr "Открыть в терминале"
#: desktopManager.js:908
msgid "Change Background…"
msgstr "Изменить фон…"
#: desktopManager.js:919
msgid "Desktop Icons Settings"
msgstr "Параметры Desktop Icons"
#: desktopManager.js:923
msgid "Display Settings"
msgstr "Настройки экрана"
#: desktopManager.js:1548
msgid "Arrange Icons"
msgstr "Упорядочить значки"
#: desktopManager.js:1552
msgid "Arrange By..."
msgstr "Упорядочить по..."
#: desktopManager.js:1561
msgid "Keep Arranged..."
msgstr "Сохранить порядок..."
#: desktopManager.js:1565
msgid "Keep Stacked by type..."
msgstr "Сохранить сгруппированными по типу..."
#: desktopManager.js:1570
msgid "Sort Home/Drives/Trash..."
msgstr "Сортировать Домашняя папка/Диски/Корзина..."
#: desktopManager.js:1576
msgid "Sort by Name"
msgstr "Сортировать по имени"
#: desktopManager.js:1578
msgid "Sort by Name Descending"
msgstr "Сортировать по имени в порядке убывания"
#: desktopManager.js:1581
msgid "Sort by Modified Time"
msgstr "Сортировать по времени изменения"
#: desktopManager.js:1584
msgid "Sort by Type"
msgstr "Сортировать по типу"
#: desktopManager.js:1587
msgid "Sort by Size"
msgstr "Сортировать по размеру"
#. TRANSLATORS: "Home" is the text that will be shown in the user's personal folder
#: fileItem.js:156
msgid "Home"
msgstr "Домашняя папка"
#: fileItem.js:275
msgid "Broken Link"
msgstr "Нерабочая ссылка"
#: fileItem.js:276
msgid "Can not open this File because it is a Broken Symlink"
msgstr ""
"Невозможно открыть этот файл, потому что это неработающая символическая "
"ссылка"
#: fileItem.js:326
msgid "Broken Desktop File"
msgstr "Нерабочий .desktop файл"
#: fileItem.js:327
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Отредактируйте файл так, чтобы он указывал на необходимый исполняемый "
"файл."
#: fileItem.js:333
msgid "Invalid Permissions on Desktop File"
msgstr "Неверные права доступа к .desktop файлу"
#: fileItem.js:334
msgid ""
"This .desktop File has incorrect Permissions. Right Click to edit "
"Properties, then:\n"
msgstr ""
"Этот .desktop файл имеет неправильные разрешения. Щёлкните правой кнопкой "
"мыши, чтобы изменить свойства, а затем:\n"
#: fileItem.js:336
msgid ""
"\n"
"Set Permissions, in \"Others Access\", \"Read Only\" or \"None\""
msgstr ""
"\n"
"Установите разрешения в разделе «Права доступа» на «Только чтение» или "
"«Нет»"
#: fileItem.js:339
msgid ""
"\n"
"Enable option, \"Allow Executing File as a Program\""
msgstr ""
"\n"
"Включить параметр «Разрешить выполнение файла как программы»"
#: fileItem.js:347
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"
"включите «Разрешить запуск»"
#: fileItemMenu.js:118
msgid "Open All..."
msgstr "Открыть всё..."
#: fileItemMenu.js:118
msgid "Open"
msgstr "Открыть"
#: fileItemMenu.js:129
msgid "Stack This Type"
msgstr "Сгруппировать этот тип"
#: fileItemMenu.js:129
msgid "Unstack This Type"
msgstr "Разгруппировать этот тип"
#: fileItemMenu.js:141
msgid "Scripts"
msgstr "Сценарии"
#: fileItemMenu.js:147
msgid "Open All With Other Application..."
msgstr "Открыть всё в другом приложении..."
#: fileItemMenu.js:147
msgid "Open With Other Application"
msgstr "Открыть в другом приложении"
#: fileItemMenu.js:153
msgid "Launch using Dedicated Graphics Card"
msgstr "Запустить, используя дискретную видеокарту"
#: fileItemMenu.js:162
msgid "Run as a program"
msgstr "Запустить как программу"
#: fileItemMenu.js:170
msgid "Cut"
msgstr "Вырезать"
#: fileItemMenu.js:175
msgid "Copy"
msgstr "Копировать"
#: fileItemMenu.js:181
msgid "Rename…"
msgstr "Переименовать…"
#: fileItemMenu.js:189
msgid "Move to Trash"
msgstr "Переместить в корзину"
#: fileItemMenu.js:195
msgid "Delete permanently"
msgstr "Удалить безвозвратно"
#: fileItemMenu.js:203
msgid "Don't Allow Launching"
msgstr "Не разрешать запуск"
#: fileItemMenu.js:203
msgid "Allow Launching"
msgstr "Разрешить запуск"
#: fileItemMenu.js:214
msgid "Empty Trash"
msgstr "Очистить корзину"
#: fileItemMenu.js:225
msgid "Eject"
msgstr "Извлечь"
#: fileItemMenu.js:231
msgid "Unmount"
msgstr "Отмонтировать"
#: fileItemMenu.js:241
msgid "Extract Here"
msgstr "Распаковать здесь"
#: fileItemMenu.js:245
msgid "Extract To..."
msgstr "Распаковать в..."
#: fileItemMenu.js:252
msgid "Send to..."
msgstr "Отправить в..."
#: fileItemMenu.js:258
msgid "Compress {0} file"
msgid_plural "Compress {0} files"
msgstr[0] "Сжать {0} файл"
msgstr[1] "Сжать {0} файла"
msgstr[2] "Сжать {0} файлов"
#: fileItemMenu.js:264
msgid "New Folder with {0} item"
msgid_plural "New Folder with {0} items"
msgstr[0] "Новая папка с {0} элементом"
msgstr[1] "Новая папка с {0} элементами"
msgstr[2] "Новая папка с {0} элементами"
#: fileItemMenu.js:273
msgid "Common Properties"
msgstr "Общие свойства"
#: fileItemMenu.js:273
msgid "Properties"
msgstr "Свойства"
#: fileItemMenu.js:280
msgid "Show All in Files"
msgstr "Показать всё в файловом менеджере"
#: fileItemMenu.js:280
msgid "Show in Files"
msgstr "Показать в файловом менеджере"
#: fileItemMenu.js:365
msgid "Select Extract Destination"
msgstr "Выбрать папку назначения для распаковки"
#: fileItemMenu.js:370
msgid "Select"
msgstr "Выделить"
#: fileItemMenu.js:396
msgid "Can not email a Directory"
msgstr "Невозможно отправить каталог по электронной почте"
#: fileItemMenu.js:397
msgid "Selection includes a Directory, compress the directory to a file first."
msgstr "Выбран каталог, сначала сожмите его в файл."
#: preferences.js:67
msgid "Settings"
msgstr "Параметры"
#: showErrorPopup.js:40
msgid "Close"
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:45
msgid "Show external drives in the desktop"
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:50
msgid "Show network drives in the desktop"
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:55
msgid "Add new drives to the opposite side of the screen"
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:90
msgid "Use Nemo to open folders"
msgstr "Использовать Nemo для открытия папок"
#: 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 ""
"Окрашивать текст подписи чёрным цветом вместо белого. Полезно при "
"использовании светлого фона."
#~ msgid "Size for the desktop icons"
#~ msgstr "Размер значков на рабочем столе"
#~ msgid "Tiny"
#~ msgstr "Крошечный"
#~ msgid "Small"
#~ msgstr "Маленький"
#~ msgid "Standard"
#~ msgstr "Стандартный"
#~ msgid "Large"
#~ msgstr "Большой"
#~ msgid "Show the personal folder in the desktop"
#~ msgstr "Показывать домашнюю папку на рабочем столе"
#~ msgid "Show the trash icon in the desktop"
#~ msgstr "Показывать корзину на рабочем столе"
#~ msgid "New icons alignment"
#~ msgstr "Выравнивание для новых значков"
#~ msgid "Top-left corner"
#~ msgstr "Верхний левый угол"
#~ msgid "Top-right corner"
#~ msgstr "Правый верхний угол"
#~ msgid "Bottom-left corner"
#~ msgstr "Нижний левый угол"
#~ msgid "Bottom-right corner"
#~ msgstr "Правый нижний угол"
#~ msgid "Highlight the drop place during Drag'n'Drop"
#~ msgstr "Выделять место назначения во время Drag'n'Drop"
#~ msgid "Add an emblem to soft links"
#~ msgstr "Добавить эмблему к символическим ссылкам"
#~ msgid "Add an emblem to .desktop files"
#~ msgstr "Добавить эмблему к .desktop файлу"
#~ msgid "Use dark text in icon labels"
#~ msgstr "Использовать тёмный текст в подписях к значкам"
#~ msgid "Settings shared with Nautilus"
#~ msgstr "Общие настройки с Nautilus"
#~ msgid "Click type for open files"
#~ msgstr "Тип нажатия для открытия файлов"
#~ msgid "Single click"
#~ msgstr "Одинарный щелчок"
#~ msgid "Double click"
#~ msgstr "Двойной щелчок"
#~ msgid "Show hidden files"
#~ msgstr "Показывать скрытые файлы"
#~ msgid "Show a context menu item to delete permanently"
#~ msgstr "Добавить пункт в контекстное меню «Удалить безвозвратно»"
#~ msgid "Action to do when launching a program from the desktop"
#~ msgstr "Действие при запуске программы с рабочего стола"
#~ msgid "Display the content of the file"
#~ msgstr "Показать содержимое файла"
#~ msgid "Launch the file"
#~ msgstr "Запустить файл"
#~ msgid "Ask what to do"
#~ msgstr "Спросить что делать"
#~ msgid "Show image thumbnails"
#~ msgstr "Показывать миниатюры изображений"
#~ msgid "Never"
#~ msgstr "Никогда"
#~ msgid "Local files only"
#~ msgstr "Только для локальных файлов"
#~ msgid "Always"
#~ 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, щёлкните правой кнопкой мыши на рабочем "
#~ "столе и выберите последний пункт: «Параметры 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 "Error while deleting files"
#~ 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 folder {:}."
#~ 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-43/po/sk.po 0000664 0000000 0000000 00000036734 14216573372 0016110 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: 2022-03-23 11:12+0100\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"
#: askRenamePopup.js:42
msgid "Folder name"
msgstr "Názov priečinku"
#: askRenamePopup.js:42
msgid "File name"
msgstr "Názov súboru"
#: askRenamePopup.js:49 desktopManager.js:798
msgid "OK"
msgstr "OK"
#: askRenamePopup.js:49
msgid "Rename"
msgstr "Premenovať"
#: dbusUtils.js:65
msgid "\"${programName}\" is needed for Desktop Icons"
msgstr ""
#: dbusUtils.js:66
msgid ""
"For this functionality to work in Desktop Icons, you must install "
"\"${programName}\" in your system."
msgstr ""
#: desktopIconsUtil.js:96
msgid "Command not found"
msgstr "Príkaz sa nenašiel"
#: desktopManager.js:215
msgid "Nautilus File Manager not found"
msgstr "Správca súborov Nautilus sa nenašiel"
#: desktopManager.js:216
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."
#: desktopManager.js:761
msgid "Clear Current Selection before New Search"
msgstr "Pred novým hľadaním vymažte aktuálny výber"
#: desktopManager.js:800 fileItemMenu.js:369
msgid "Cancel"
msgstr "Zrušiť"
#: desktopManager.js:802
msgid "Find Files on Desktop"
msgstr "Nájdenie súborov na pracovnej ploche"
#: desktopManager.js:867 desktopManager.js:1490
msgid "New Folder"
msgstr "Nový priečinok"
#: desktopManager.js:871
msgid "New Document"
msgstr "Nový dokument"
#: desktopManager.js:876
msgid "Paste"
msgstr "Vložiť"
#: desktopManager.js:880
msgid "Undo"
msgstr "Vrátiť späť"
#: desktopManager.js:884
msgid "Redo"
msgstr "Zopakovať"
#: desktopManager.js:890
msgid "Select All"
msgstr "Vybrať všetko"
#: desktopManager.js:898
msgid "Show Desktop in Files"
msgstr "Zobraziť Plochu v aplikácii Súbory"
#: desktopManager.js:902 fileItemMenu.js:287
msgid "Open in Terminal"
msgstr "Otvoriť v termináli"
#: desktopManager.js:908
msgid "Change Background…"
msgstr "Zmeniť pozadie…"
#: desktopManager.js:919
msgid "Desktop Icons Settings"
msgstr "Nastavenia ikon pracovnej plochy"
#: desktopManager.js:923
msgid "Display Settings"
msgstr "Nastavenia displejov"
#: desktopManager.js:1548
msgid "Arrange Icons"
msgstr "Usporiadať ikony"
#: desktopManager.js:1552
msgid "Arrange By..."
msgstr "Usporiadať podľa..."
#: desktopManager.js:1561
msgid "Keep Arranged..."
msgstr "Udržiavať usporiadané..."
#: desktopManager.js:1565
msgid "Keep Stacked by type..."
msgstr ""
#: desktopManager.js:1570
msgid "Sort Home/Drives/Trash..."
msgstr "Usporiadať Domov/jednotky/Kôš..."
#: desktopManager.js:1576
msgid "Sort by Name"
msgstr "Usporiadať podľa názvu"
#: desktopManager.js:1578
msgid "Sort by Name Descending"
msgstr "Usporiadať podľa názvu zostupne"
#: desktopManager.js:1581
msgid "Sort by Modified Time"
msgstr "Usporiadať podľa času úpravy"
#: desktopManager.js:1584
msgid "Sort by Type"
msgstr "Usporiadať podľa typu"
#: desktopManager.js:1587
msgid "Sort by Size"
msgstr "Usporiadať podľa veľkosti"
#. TRANSLATORS: "Home" is the text that will be shown in the user's personal folder
#: fileItem.js:156
msgid "Home"
msgstr "Domov"
#: fileItem.js:275
msgid "Broken Link"
msgstr ""
#: fileItem.js:276
msgid "Can not open this File because it is a Broken Symlink"
msgstr ""
#: fileItem.js:326
#, fuzzy
msgid "Broken Desktop File"
msgstr "Zobraziť Plochu v aplikácii Súbory"
#: fileItem.js:327
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 ""
#: fileItem.js:333
msgid "Invalid Permissions on Desktop File"
msgstr ""
#: fileItem.js:334
msgid ""
"This .desktop File has incorrect Permissions. Right Click to edit "
"Properties, then:\n"
msgstr ""
#: fileItem.js:336
msgid ""
"\n"
"Set Permissions, in \"Others Access\", \"Read Only\" or \"None\""
msgstr ""
#: fileItem.js:339
msgid ""
"\n"
"Enable option, \"Allow Executing File as a Program\""
msgstr ""
#: fileItem.js:347
msgid ""
"This .desktop file is not trusted, it can not be launched. To enable "
"launching, right-click, then:\n"
"\n"
"Enable \"Allow Launching\""
msgstr ""
#: fileItemMenu.js:118
msgid "Open All..."
msgstr "Otvoriť všetko..."
#: fileItemMenu.js:118
msgid "Open"
msgstr "Otvoriť"
#: fileItemMenu.js:129
msgid "Stack This Type"
msgstr ""
#: fileItemMenu.js:129
msgid "Unstack This Type"
msgstr ""
#: fileItemMenu.js:141
msgid "Scripts"
msgstr "Skripty"
#: fileItemMenu.js:147
msgid "Open All With Other Application..."
msgstr "Otvoriť všetko inou aplikáciou..."
#: fileItemMenu.js:147
msgid "Open With Other Application"
msgstr "Otvoriť inou aplikáciou"
#: fileItemMenu.js:153
msgid "Launch using Dedicated Graphics Card"
msgstr "Spustiť pomocou vyhradenej grafickej karty"
#: fileItemMenu.js:162
msgid "Run as a program"
msgstr ""
#: fileItemMenu.js:170
msgid "Cut"
msgstr "Vystrihnúť"
#: fileItemMenu.js:175
msgid "Copy"
msgstr "Kopírovať"
#: fileItemMenu.js:181
msgid "Rename…"
msgstr "Premenovať…"
#: fileItemMenu.js:189
msgid "Move to Trash"
msgstr "Presunúť do Koša"
#: fileItemMenu.js:195
msgid "Delete permanently"
msgstr "Odstrániť natrvalo"
#: fileItemMenu.js:203
msgid "Don't Allow Launching"
msgstr "Neumožniť spustenie"
#: fileItemMenu.js:203
msgid "Allow Launching"
msgstr "Umožniť spúšťanie"
#: fileItemMenu.js:214
msgid "Empty Trash"
msgstr "Vyprázdniť Kôš"
#: fileItemMenu.js:225
msgid "Eject"
msgstr "Vysunúť"
#: fileItemMenu.js:231
msgid "Unmount"
msgstr "Odpojiť"
#: fileItemMenu.js:241
msgid "Extract Here"
msgstr "Rozbaliť sem"
#: fileItemMenu.js:245
msgid "Extract To..."
msgstr "Rozbaliť do…"
#: fileItemMenu.js:252
msgid "Send to..."
msgstr "Odoslať do…"
#: fileItemMenu.js:258
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"
#: fileItemMenu.js:264
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"
#: fileItemMenu.js:273
msgid "Common Properties"
msgstr "Spoločné vlastnosti"
#: fileItemMenu.js:273
msgid "Properties"
msgstr "Vlastnosti"
#: fileItemMenu.js:280
msgid "Show All in Files"
msgstr "Zobraziť všetko v aplikácii Súbory"
#: fileItemMenu.js:280
msgid "Show in Files"
msgstr "Zobraziť v aplikácii Súbory"
#: fileItemMenu.js:365
msgid "Select Extract Destination"
msgstr "Výber cieľa rozbaľovania"
#: fileItemMenu.js:370
msgid "Select"
msgstr "Vybrať"
#: fileItemMenu.js:396
msgid "Can not email a Directory"
msgstr "Nedá sa odoslať adresár pomocou emailu"
#: fileItemMenu.js:397
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."
#: preferences.js:67
msgid "Settings"
msgstr "Nastavenia"
#: showErrorPopup.js:40
msgid "Close"
msgstr "Zavrieť"
#: 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:45
msgid "Show external drives in the desktop"
msgstr "Zobraziť externé jednotky na pracovnej ploche"
#: 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:50
msgid "Show network drives in the desktop"
msgstr "Zobraziť sieťové jednotky na pracovnej ploche"
#: 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:55
msgid "Add new drives to the opposite side of the screen"
msgstr "Pridať nové jednotky na opačnú stranu obrazovky"
#: 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:90
msgid "Use Nemo to open folders"
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 ""
#~ msgid "Size for the desktop icons"
#~ msgstr "Veľkosť ikon pracovnej plochy"
#~ msgid "Tiny"
#~ msgstr "Najmenšie"
#~ msgid "Small"
#~ msgstr "Malé"
#~ msgid "Standard"
#~ msgstr "Štandardné"
#~ msgid "Large"
#~ msgstr "Veľké"
#~ msgid "Show the personal folder in the desktop"
#~ msgstr "Zobraziť osobný priečinok na pracovnej ploche"
#~ msgid "Show the trash icon in the desktop"
#~ msgstr "Zobraziť ikonu Koša na pracovnej ploche"
#~ msgid "New icons alignment"
#~ msgstr "Zarovnanie nových ikon"
#~ msgid "Top-left corner"
#~ msgstr "Ľavý horný roh"
#~ msgid "Top-right corner"
#~ msgstr "Pravý horný roh"
#~ msgid "Bottom-left corner"
#~ msgstr "Ľavý spodný roh"
#~ msgid "Bottom-right corner"
#~ msgstr "Pravý spodný roh"
#~ msgid "Highlight the drop place during Drag'n'Drop"
#~ msgstr "Zvýrazniť miesto pustenia počas operácie ťahania a pustenia"
#~ msgid "Settings shared with Nautilus"
#~ msgstr "Nastavenia zdieľané s aplikáciou Nautilus"
#~ msgid "Click type for open files"
#~ msgstr "Typ kliknutia na otváranie súborov"
#~ msgid "Single click"
#~ msgstr "Jednoduché kliknutie"
#~ msgid "Double click"
#~ msgstr "Dvojité kliknutie"
#~ msgid "Show hidden files"
#~ msgstr "Zobraziť skryté súbory"
#~ msgid "Show a context menu item to delete permanently"
#~ msgstr "Zobraziť kontextovú ponuku položky na trvalé odstránenie"
#~ msgid "Action to do when launching a program from the desktop"
#~ msgstr "Akcia, ktorú vykonať po spustení programu z pracovnej plochy"
#~ msgid "Display the content of the file"
#~ msgstr "Zobraziť obsah súboru"
#~ msgid "Launch the file"
#~ msgstr "Spustiť súbor"
#~ msgid "Ask what to do"
#~ msgstr "Spýtať sa, čo robiť"
#~ msgid "Show image thumbnails"
#~ msgstr "Zobraziť miniatúry obrázkov"
#~ msgid "Never"
#~ msgstr "Nikdy"
#~ msgid "Local files only"
#~ msgstr "Iba miestne súbory"
#~ msgid "Always"
#~ msgstr "Vždy"
#~ 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-43/po/sv.po 0000664 0000000 0000000 00000036141 14216573372 0016113 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: 2022-03-23 11:12+0100\n"
"PO-Revision-Date: 2022-01-11 10:17+0100\n"
"Last-Translator: Gunnar Hjalmarsson \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"
#: askRenamePopup.js:42
msgid "Folder name"
msgstr "Mappnamn"
#: askRenamePopup.js:42
msgid "File name"
msgstr "Filnamn"
#: askRenamePopup.js:49 desktopManager.js:798
msgid "OK"
msgstr "OK"
#: askRenamePopup.js:49
msgid "Rename"
msgstr "Byt namn"
#: dbusUtils.js:65
msgid "\"${programName}\" is needed for Desktop Icons"
msgstr ""
#: dbusUtils.js:66
msgid ""
"For this functionality to work in Desktop Icons, you must install "
"\"${programName}\" in your system."
msgstr ""
#: desktopIconsUtil.js:96
msgid "Command not found"
msgstr "Kommandot hittades inte"
#: desktopManager.js:215
msgid "Nautilus File Manager not found"
msgstr "Nautilus filhanterare hittades inte"
#: desktopManager.js:216
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."
#: desktopManager.js:761
msgid "Clear Current Selection before New Search"
msgstr "Rensa aktuellt val innan ny sökning"
#: desktopManager.js:800 fileItemMenu.js:369
msgid "Cancel"
msgstr "Avbryt"
#: desktopManager.js:802
msgid "Find Files on Desktop"
msgstr "Hitta filer på skrivbordet"
#: desktopManager.js:867 desktopManager.js:1490
msgid "New Folder"
msgstr "Ny mapp"
#: desktopManager.js:871
msgid "New Document"
msgstr "Nytt dokument"
#: desktopManager.js:876
msgid "Paste"
msgstr "Klistra in"
#: desktopManager.js:880
msgid "Undo"
msgstr "Ångra"
#: desktopManager.js:884
msgid "Redo"
msgstr "Gör om"
#: desktopManager.js:890
msgid "Select All"
msgstr "Markera alla"
#: desktopManager.js:898
msgid "Show Desktop in Files"
msgstr "Visa skrivbord i Filer"
#: desktopManager.js:902 fileItemMenu.js:287
msgid "Open in Terminal"
msgstr "Öppna i terminal"
#: desktopManager.js:908
msgid "Change Background…"
msgstr "Ändra bakgrund…"
#: desktopManager.js:919
msgid "Desktop Icons Settings"
msgstr "Inställningar för Desktop Icons"
#: desktopManager.js:923
msgid "Display Settings"
msgstr "Visningsinställningar"
#: desktopManager.js:1548
msgid "Arrange Icons"
msgstr "Arrangera ikonerna"
#: desktopManager.js:1552
msgid "Arrange By..."
msgstr "Arrangera efter..."
#: desktopManager.js:1561
msgid "Keep Arranged..."
msgstr "Behåll arrangerade..."
#: desktopManager.js:1565
msgid "Keep Stacked by type..."
msgstr "Behåll arrangerade efter typ..."
#: desktopManager.js:1570
msgid "Sort Home/Drives/Trash..."
msgstr "Sortera Hem/Diskar/Papperskorg..."
#: desktopManager.js:1576
msgid "Sort by Name"
msgstr "Sortera efter namn"
#: desktopManager.js:1578
msgid "Sort by Name Descending"
msgstr "Sortera efter namn (nedåtgående)"
#: desktopManager.js:1581
msgid "Sort by Modified Time"
msgstr "Sortera efter senaste ändring"
#: desktopManager.js:1584
msgid "Sort by Type"
msgstr "Sortera efter typ"
#: desktopManager.js:1587
msgid "Sort by Size"
msgstr "Sortera efter storlek"
#. TRANSLATORS: "Home" is the text that will be shown in the user's personal folder
#: fileItem.js:156
msgid "Home"
msgstr "Hem"
#: fileItem.js:275
msgid "Broken Link"
msgstr ""
#: fileItem.js:276
msgid "Can not open this File because it is a Broken Symlink"
msgstr ""
#: fileItem.js:326
#, fuzzy
msgid "Broken Desktop File"
msgstr "Visa skrivbord i Filer"
#: fileItem.js:327
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 ""
#: fileItem.js:333
msgid "Invalid Permissions on Desktop File"
msgstr ""
#: fileItem.js:334
msgid ""
"This .desktop File has incorrect Permissions. Right Click to edit "
"Properties, then:\n"
msgstr ""
#: fileItem.js:336
msgid ""
"\n"
"Set Permissions, in \"Others Access\", \"Read Only\" or \"None\""
msgstr ""
#: fileItem.js:339
msgid ""
"\n"
"Enable option, \"Allow Executing File as a Program\""
msgstr ""
#: fileItem.js:347
msgid ""
"This .desktop file is not trusted, it can not be launched. To enable "
"launching, right-click, then:\n"
"\n"
"Enable \"Allow Launching\""
msgstr ""
#: fileItemMenu.js:118
msgid "Open All..."
msgstr "Öppna alla…"
#: fileItemMenu.js:118
msgid "Open"
msgstr "Öppna"
#: fileItemMenu.js:129
msgid "Stack This Type"
msgstr "Arrangera denna typ"
#: fileItemMenu.js:129
msgid "Unstack This Type"
msgstr "Sluta arrangera denna typ"
#: fileItemMenu.js:141
msgid "Scripts"
msgstr "Skript"
#: fileItemMenu.js:147
msgid "Open All With Other Application..."
msgstr "Öppna alla med annat program…"
#: fileItemMenu.js:147
msgid "Open With Other Application"
msgstr "Öppna med annat program"
#: fileItemMenu.js:153
msgid "Launch using Dedicated Graphics Card"
msgstr "Starta med dedikerat grafikkort"
#: fileItemMenu.js:162
msgid "Run as a program"
msgstr ""
#: fileItemMenu.js:170
msgid "Cut"
msgstr "Klipp ut"
#: fileItemMenu.js:175
msgid "Copy"
msgstr "Kopiera"
#: fileItemMenu.js:181
msgid "Rename…"
msgstr "Byt namn…"
#: fileItemMenu.js:189
msgid "Move to Trash"
msgstr "Flytta till papperskorgen"
#: fileItemMenu.js:195
msgid "Delete permanently"
msgstr "Ta bort permanent"
#: fileItemMenu.js:203
msgid "Don't Allow Launching"
msgstr "Tillåt ej programstart"
#: fileItemMenu.js:203
msgid "Allow Launching"
msgstr "Tillåt programstart"
#: fileItemMenu.js:214
msgid "Empty Trash"
msgstr "Töm papperskorgen"
#: fileItemMenu.js:225
msgid "Eject"
msgstr "Mata ut"
#: fileItemMenu.js:231
msgid "Unmount"
msgstr "Avmontera"
#: fileItemMenu.js:241
msgid "Extract Here"
msgstr "Extrahera här"
#: fileItemMenu.js:245
msgid "Extract To..."
msgstr "Extrahera till…"
#: fileItemMenu.js:252
msgid "Send to..."
msgstr "Skicka till…"
#: fileItemMenu.js:258
msgid "Compress {0} file"
msgid_plural "Compress {0} files"
msgstr[0] "Komprimera {0} fil"
msgstr[1] "Komprimera {0} filer"
#: fileItemMenu.js:264
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"
#: fileItemMenu.js:273
msgid "Common Properties"
msgstr "Gemensamma egenskaper"
#: fileItemMenu.js:273
msgid "Properties"
msgstr "Egenskaper"
#: fileItemMenu.js:280
msgid "Show All in Files"
msgstr "Visa alla i Filer"
#: fileItemMenu.js:280
msgid "Show in Files"
msgstr "Visa i Filer"
#: fileItemMenu.js:365
msgid "Select Extract Destination"
msgstr "Välj målplats för extrahering"
#: fileItemMenu.js:370
msgid "Select"
msgstr "Välj"
#: fileItemMenu.js:396
msgid "Can not email a Directory"
msgstr "Kan inte maila en katalog"
#: fileItemMenu.js:397
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."
#: preferences.js:67
msgid "Settings"
msgstr "Inställningar"
#: showErrorPopup.js:40
msgid "Close"
msgstr "Stäng"
#: 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:45
msgid "Show external drives in the desktop"
msgstr "Visa externa enheter på skrivbordet"
#: 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:50
msgid "Show network drives in the desktop"
msgstr "Visa nätverksenheter på skrivbordet"
#: 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:55
msgid "Add new drives to the opposite side of the screen"
msgstr "Lägg till nya enheter på motsatt sida av skärmen"
#: 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:90
msgid "Use Nemo to open folders"
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 ""
#~ msgid "Size for the desktop icons"
#~ msgstr "Storlek för skrivbordsikonerna"
#~ msgid "Tiny"
#~ msgstr "Mycket liten"
#~ msgid "Small"
#~ msgstr "Liten"
#~ msgid "Standard"
#~ msgstr "Standard"
#~ msgid "Large"
#~ msgstr "Stor"
# TODO: *ON* the desktop?
#~ msgid "Show the personal folder in the desktop"
#~ msgstr "Visa den personliga mappen på skrivbordet"
# TODO: *ON* the desktop?
#~ msgid "Show the trash icon in the desktop"
#~ msgstr "Visa papperskorgsikonen på skrivbordet"
#~ msgid "New icons alignment"
#~ msgstr "Justering för nya ikoner"
#~ msgid "Top-left corner"
#~ msgstr "Övre vänstra hörnet"
#~ msgid "Top-right corner"
#~ msgstr "Övre högra hörnet"
#~ msgid "Bottom-left corner"
#~ msgstr "Nedre vänstra hörnet"
#~ msgid "Bottom-right corner"
#~ msgstr "Nedre högra hörnet"
#~ msgid "Highlight the drop place during Drag'n'Drop"
#~ msgstr "Markera släpplatsen under dra-och-släpp"
#~ msgid "Settings shared with Nautilus"
#~ msgstr "Inställningar delade med Nautilus"
#~ msgid "Click type for open files"
#~ msgstr "Klicktyp för filöppning"
#~ msgid "Single click"
#~ msgstr "Enkelklick"
#~ msgid "Double click"
#~ msgstr "Dubbelklick"
#~ msgid "Show hidden files"
#~ msgstr "Visa dolda filer"
#~ msgid "Show a context menu item to delete permanently"
#~ msgstr "Visa ett snabbvalsmenyobjekt för att ta bort permanent"
#~ msgid "Action to do when launching a program from the desktop"
#~ msgstr "Åtgärd att utföra när ett program startas från skrivbordet"
#~ msgid "Display the content of the file"
#~ msgstr "Visa innehållet i filen"
#~ msgid "Launch the file"
#~ msgstr "Kör filen"
#~ msgid "Ask what to do"
#~ msgstr "Fråga vad som ska göras"
#~ msgid "Show image thumbnails"
#~ msgstr "Visa miniatyrbilder"
#~ msgid "Never"
#~ msgstr "Aldrig"
#~ msgid "Local files only"
#~ msgstr "Endast lokala filer"
#~ msgid "Always"
#~ msgstr "Alltid"
#~ msgid ""
#~ "To configure Desktop Icons NG, do right-click in the desktop and choose "
#~ "the last item: 'Desktop Icons settings'"
#~ msgstr ""
#~ "För att konfigurera Desktop Icons NG, högerklicka på skrivbordet och välj "
#~ "det sista objektet: 'Inställningar för skrivbordsikoner'"
#~ msgid "Do you want to run “{0}”, or display its contents?"
#~ msgstr "Vill du köra ”{0}”, eller visa dess innehåll?"
#~ msgid "“{0}” is an executable text file."
#~ msgstr "”{0}” är en körbar textfil."
#~ msgid "Execute in a terminal"
#~ msgstr "Kör i en terminal"
#~ msgid "Show"
#~ msgstr "Visa"
#~ msgid "Execute"
#~ msgstr "Kör"
desktop-icons-ng-43/po/tr.po 0000664 0000000 0000000 00000041326 14216573372 0016111 0 ustar 00root root 0000000 0000000 # Turkish translation for desktop-icons.
# Copyright (C) 2000-2019 desktop-icons's COPYRIGHT HOLDER
# This file is distributed under the same license as the desktop-icons package.
#
# Sabri Ünal , 2019.
# Serdar Sağlam , 2019
# Emin Tufan Çetin , 2019.
# Mahmut Elmas , 2020.
# Cihan Alkan , 2021.
# Fatih Altun , 2021.
#
msgid ""
msgstr ""
"Project-Id-Version: ding\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-03-23 11:12+0100\n"
"PO-Revision-Date: 2021-10-12 00:28+0300\n"
"Last-Translator: Fatih Altun \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"
"X-Generator: Gtranslator 3.38.0\n"
"Plural-Forms: nplurals=1; plural=0\n"
#: askRenamePopup.js:42
msgid "Folder name"
msgstr "Klasör adı"
#: askRenamePopup.js:42
msgid "File name"
msgstr "Dosya adı"
#: askRenamePopup.js:49 desktopManager.js:798
msgid "OK"
msgstr "Tamam"
#: askRenamePopup.js:49
msgid "Rename"
msgstr "Yeniden Adlandır"
#: dbusUtils.js:65
msgid "\"${programName}\" is needed for Desktop Icons"
msgstr ""
#: dbusUtils.js:66
msgid ""
"For this functionality to work in Desktop Icons, you must install "
"\"${programName}\" in your system."
msgstr ""
#: desktopIconsUtil.js:96
msgid "Command not found"
msgstr "Komut Bulunamadı"
#: desktopManager.js:215
msgid "Nautilus File Manager not found"
msgstr "Nautilus dosya yöneticisi bulunamadı"
#: desktopManager.js:216
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"
#: desktopManager.js:761
msgid "Clear Current Selection before New Search"
msgstr "Yeni Aramadan Önce Mevcut Seçimi Temizle"
#: desktopManager.js:800 fileItemMenu.js:369
msgid "Cancel"
msgstr "İptal"
#: desktopManager.js:802
msgid "Find Files on Desktop"
msgstr "Masaüstündeki Dosyaları Bul"
#: desktopManager.js:867 desktopManager.js:1490
msgid "New Folder"
msgstr "Yeni Klasör"
#: desktopManager.js:871
msgid "New Document"
msgstr "Yeni Belge"
#: desktopManager.js:876
msgid "Paste"
msgstr "Yapıştır"
#: desktopManager.js:880
msgid "Undo"
msgstr "Geri Al"
#: desktopManager.js:884
msgid "Redo"
msgstr "Yinele"
#: desktopManager.js:890
msgid "Select All"
msgstr "Tümünü Seç"
#: desktopManager.js:898
msgid "Show Desktop in Files"
msgstr "Masaüstünü Dosyalarʼda Göster"
#: desktopManager.js:902 fileItemMenu.js:287
msgid "Open in Terminal"
msgstr "Uçbirimde Aç"
#: desktopManager.js:908
msgid "Change Background…"
msgstr "Arka Planı Değiştir…"
#: desktopManager.js:919
msgid "Desktop Icons Settings"
msgstr "Masaüstü Simgeleri Ayarları"
#: desktopManager.js:923
msgid "Display Settings"
msgstr "Görüntü Ayarları"
#: desktopManager.js:1548
msgid "Arrange Icons"
msgstr "Simgeleri Sırala"
#: desktopManager.js:1552
msgid "Arrange By..."
msgstr "Sırala..."
#: desktopManager.js:1561
msgid "Keep Arranged..."
msgstr "Düzenli Tut..."
#: desktopManager.js:1565
msgid "Keep Stacked by type..."
msgstr ""
#: desktopManager.js:1570
msgid "Sort Home/Drives/Trash..."
msgstr "Evi/Sürücüleri/Çöp Kutusunu Sırala..."
#: desktopManager.js:1576
msgid "Sort by Name"
msgstr "İsme Göre Sırala"
#: desktopManager.js:1578
msgid "Sort by Name Descending"
msgstr "Azalan Şekilde İsme Göre Sırala"
#: desktopManager.js:1581
msgid "Sort by Modified Time"
msgstr "Değiştirilme Zamanına Göre Sırala"
#: desktopManager.js:1584
msgid "Sort by Type"
msgstr "Türe Göre Sırala"
#: desktopManager.js:1587
msgid "Sort by Size"
msgstr "Boyuta Göre Sırala"
#. TRANSLATORS: "Home" is the text that will be shown in the user's personal folder
#: fileItem.js:156
msgid "Home"
msgstr "Ev"
#: fileItem.js:275
msgid "Broken Link"
msgstr ""
#: fileItem.js:276
msgid "Can not open this File because it is a Broken Symlink"
msgstr ""
#: fileItem.js:326
#, fuzzy
msgid "Broken Desktop File"
msgstr "Masaüstünü Dosyalarʼda Göster"
#: fileItem.js:327
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 ""
#: fileItem.js:333
msgid "Invalid Permissions on Desktop File"
msgstr ""
#: fileItem.js:334
msgid ""
"This .desktop File has incorrect Permissions. Right Click to edit "
"Properties, then:\n"
msgstr ""
#: fileItem.js:336
msgid ""
"\n"
"Set Permissions, in \"Others Access\", \"Read Only\" or \"None\""
msgstr ""
#: fileItem.js:339
msgid ""
"\n"
"Enable option, \"Allow Executing File as a Program\""
msgstr ""
#: fileItem.js:347
msgid ""
"This .desktop file is not trusted, it can not be launched. To enable "
"launching, right-click, then:\n"
"\n"
"Enable \"Allow Launching\""
msgstr ""
#: fileItemMenu.js:118
msgid "Open All..."
msgstr "Tümünü Aç..."
#: fileItemMenu.js:118
msgid "Open"
msgstr "Aç"
#: fileItemMenu.js:129
msgid "Stack This Type"
msgstr ""
#: fileItemMenu.js:129
msgid "Unstack This Type"
msgstr ""
#: fileItemMenu.js:141
msgid "Scripts"
msgstr "Komutlar"
#: fileItemMenu.js:147
msgid "Open All With Other Application..."
msgstr "Tümünü Başka Uygulamayla Aç..."
#: fileItemMenu.js:147
msgid "Open With Other Application"
msgstr "Başka Uygulamayla Aç"
#: fileItemMenu.js:153
msgid "Launch using Dedicated Graphics Card"
msgstr "Özel Grafik Kartı kullanarak başlatın"
#: fileItemMenu.js:162
msgid "Run as a program"
msgstr ""
#: fileItemMenu.js:170
msgid "Cut"
msgstr "Kes"
#: fileItemMenu.js:175
msgid "Copy"
msgstr "Kopyala"
#: fileItemMenu.js:181
msgid "Rename…"
msgstr "Yeniden Adlandır…"
#: fileItemMenu.js:189
msgid "Move to Trash"
msgstr "Çöpe Taşı"
#: fileItemMenu.js:195
msgid "Delete permanently"
msgstr "Tamamen Sil"
#: fileItemMenu.js:203
msgid "Don't Allow Launching"
msgstr "Başlatmaya İzin Verme"
#: fileItemMenu.js:203
msgid "Allow Launching"
msgstr "Başlatmaya İzin Ver"
#: fileItemMenu.js:214
msgid "Empty Trash"
msgstr "Çöpü Boşalt"
#: fileItemMenu.js:225
msgid "Eject"
msgstr "Çıkar"
#: fileItemMenu.js:231
msgid "Unmount"
msgstr "Bağlı Değil"
#: fileItemMenu.js:241
msgid "Extract Here"
msgstr "Buraya Çıkar"
#: fileItemMenu.js:245
msgid "Extract To..."
msgstr "Şuraya Çıkar…"
#: fileItemMenu.js:252
msgid "Send to..."
msgstr "Gönder..."
#: fileItemMenu.js:258
msgid "Compress {0} file"
msgid_plural "Compress {0} files"
msgstr[0] "{0} dosyasını sıkıştır"
#: fileItemMenu.js:264
msgid "New Folder with {0} item"
msgid_plural "New Folder with {0} items"
msgstr[0] "{0} öğesi ile yeni klasör"
#: fileItemMenu.js:273
msgid "Common Properties"
msgstr "Ortak Özellikler"
#: fileItemMenu.js:273
msgid "Properties"
msgstr "Özellikler"
#: fileItemMenu.js:280
msgid "Show All in Files"
msgstr "Tümünü Dosyalarʼda Göster"
#: fileItemMenu.js:280
msgid "Show in Files"
msgstr "Dosyalarʼda Göster"
#: fileItemMenu.js:365
msgid "Select Extract Destination"
msgstr "Çıkarma Hedefini Seçin"
#: fileItemMenu.js:370
msgid "Select"
msgstr "Seç"
#: fileItemMenu.js:396
msgid "Can not email a Directory"
msgstr "Bir dizine e-posta gönderemiyorum"
#: fileItemMenu.js:397
msgid "Selection includes a Directory, compress the directory to a file first."
msgstr "Seçim bir dizin içerir, önce dizini bir dosyaya sıkıştırın."
#: preferences.js:67
msgid "Settings"
msgstr "Ayarlar"
#: showErrorPopup.js:40
msgid "Close"
msgstr "Kapat"
#: 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ı seçin"
#: 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"
#: 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österir."
#: 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"
#: 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österin."
#: 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 ekleyin"
#: 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 "
"ekleyin."
#: 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
#, fuzzy
msgid "Keep Icons Stacked"
msgstr "Simgeleri Düzenli Tut"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:81
#, fuzzy
msgid "Always keep Icons Stacked, Similar types are grouped"
msgstr "Simgeleri son sıralama düzenine göre daima düzenli tut"
#: 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:90
msgid "Use Nemo to open folders"
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 ""
#~ msgid "Size for the desktop icons"
#~ msgstr "Masaüstü simgeleri boyutu"
#~ msgid "Tiny"
#~ msgstr "Minik"
#~ msgid "Small"
#~ msgstr "Küçük"
#~ msgid "Standard"
#~ msgstr "Standart"
#~ msgid "Large"
#~ msgstr "Büyük"
#~ msgid "Show the personal folder in the desktop"
#~ msgstr "Kişisel klasörü masaüstünde göster"
#~ msgid "Show the trash icon in the desktop"
#~ msgstr "Çöp kutusunu masaüstünde göster"
#~ msgid "New icons alignment"
#~ msgstr "Yeni simge hizalaması"
#~ msgid "Top-left corner"
#~ msgstr "Sol üst köşe"
#~ msgid "Top-right corner"
#~ msgstr "Sağ üst Köşe"
#~ msgid "Bottom-left corner"
#~ msgstr "Sol alt köşe"
#~ msgid "Bottom-right corner"
#~ msgstr "Sağ alt köşe"
#~ msgid "Highlight the drop place during Drag'n'Drop"
#~ msgstr "Sürükle ve Bırak sırasında bırakma yerini vurgulayın"
#~ msgid "Settings shared with Nautilus"
#~ msgstr "Ayarlar Nautilus ile paylaşıldı"
#~ msgid "Click type for open files"
#~ msgstr "Dosyaları açma türü"
#~ msgid "Single click"
#~ msgstr "Tek tıklama"
#~ msgid "Double click"
#~ msgstr "Çift tıklama"
#~ msgid "Show hidden files"
#~ msgstr "Gizli dosyaları göster"
#~ msgid "Show a context menu item to delete permanently"
#~ msgstr "Tamamen silmek için sağ tıkta seçenek göster"
#~ msgid "Action to do when launching a program from the desktop"
#~ msgstr "Masaüstünden program çalıştırırken ne yapılsın"
#~ msgid "Display the content of the file"
#~ msgstr "İçeriği göster"
#~ msgid "Launch the file"
#~ msgstr "Çalıştır"
#~ msgid "Ask what to do"
#~ msgstr "Ne yapılacağını sor"
#~ msgid "Show image thumbnails"
#~ msgstr "Resim önizlemelerini göster"
#~ msgid "Never"
#~ msgstr "Asla"
#~ msgid "Local files only"
#~ msgstr "Yalnızca yerel dosyalar"
#~ msgid "Always"
#~ msgstr "Her zaman"
#~ msgid ""
#~ "To configure Desktop Icons NG, do right-click in the desktop and choose "
#~ "the last item: 'Desktop Icons settings'"
#~ msgstr ""
#~ "Desktop Icons NG'yi yapılandırmak için masaüstünde sağ tıklayın ve son "
#~ "öğeyi seçin: 'Masaüstü Simgeleri Ayarları'"
#~ msgid "Do you want to run “{0}”, or display its contents?"
#~ msgstr "“{0}” dosyasını çalıştırmak mı, içeriğini görmek mi istiyorsunuz ?"
#~ msgid "“{0}” is an executable text file."
#~ msgstr "“{0}” dosyası çalıştırılabilir bir metin dosyasıdır."
#~ msgid "Execute in a terminal"
#~ msgstr "Uçbirimde çalıştır"
#~ msgid "Show"
#~ msgstr "Göster"
#~ msgid "Execute"
#~ msgstr "Çalıştır"
#, fuzzy
#~ msgid "New folder"
#~ msgstr "Yeni Klasör"
#~ msgid "Delete"
#~ msgstr "Sil"
#~ msgid "Error while deleting files"
#~ msgstr "Dosyalar silinirken bir hata oluştu"
#~ msgid "Are you sure you want to permanently delete these items?"
#~ msgstr ""
#~ "Dosyaları geri dönüşümsüz olarak silmek istediğinizden emin misiniz?"
#~ msgid "If you delete an item, it will be permanently lost."
#~ msgstr "Bir dosya silerseniz, geri dönüşümü yoktur."
#~ msgid ""
#~ "There was an error while trying to permanently delete the folder {:}."
#~ msgstr "{:} Klasörü tamamen silinirken hata oluştu"
#~ msgid "There was an error while trying to permanently delete the file {:}."
#~ msgstr "{:} Dosyası tamamen silinirken hata oluştu"
#, fuzzy
#~ msgid "Show external disk drives in the desktop"
#~ msgstr "Kişisel klasörü masaüstünde göster"
#, fuzzy
#~ msgid "Show the external drives"
#~ msgstr "Kişisel klasörü masaüstünde göster"
#, fuzzy
#~ msgid "Show network volumes"
#~ msgstr "Dosyalarʼda Göster"
#~ msgid "Enter file name…"
#~ msgstr "Dosya adını gir…"
#~ msgid "Create"
#~ msgstr "Oluştur"
#~ msgid "Folder names cannot contain “/”."
#~ msgstr "Klasör adları “/” içeremez."
#~ msgid "A folder cannot be called “.”."
#~ msgstr "Bir klasör “.” olarak adlandırılamaz."
#~ msgid "A folder cannot be called “..”."
#~ msgstr "Bir klasör “..” olarak adlandırılamaz."
#~ msgid "Folders with “.” at the beginning of their name are hidden."
#~ msgstr "Adlarının başında “.” bulunan klasörler gizlenir."
#~ msgid "There is already a file or folder with that name."
#~ msgstr "Zaten bu adda bir dosya veya klasör var."
desktop-icons-ng-43/po/uk.po 0000664 0000000 0000000 00000045436 14216573372 0016111 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.
#
msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-03-23 11:12+0100\n"
"PO-Revision-Date: 2021-11-06 13:11+0100\n"
"Last-Translator: Stanisław Zadorozhnyi \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=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 2.3\n"
#: askRenamePopup.js:42
msgid "Folder name"
msgstr "Назва теки"
#: askRenamePopup.js:42
msgid "File name"
msgstr "Назва файлу"
#: askRenamePopup.js:49 desktopManager.js:798
msgid "OK"
msgstr "Ок"
#: askRenamePopup.js:49
msgid "Rename"
msgstr "Перейменувати"
#: dbusUtils.js:65
msgid "\"${programName}\" is needed for Desktop Icons"
msgstr ""
#: dbusUtils.js:66
msgid ""
"For this functionality to work in Desktop Icons, you must install "
"\"${programName}\" in your system."
msgstr ""
#: desktopIconsUtil.js:96
msgid "Command not found"
msgstr "Команда не знайдена"
#: desktopManager.js:215
msgid "Nautilus File Manager not found"
msgstr "Файловий Менеджер Nautilus не знайдено"
#: desktopManager.js:216
msgid "The Nautilus File Manager is mandatory to work with Desktop Icons NG."
msgstr "Файловий Менеджер Nautilus є необхідним для роботи з Desktop Icons NG."
#: desktopManager.js:761
msgid "Clear Current Selection before New Search"
msgstr "Очистити поточний вибір перед Новим Пошуком"
#: desktopManager.js:800 fileItemMenu.js:369
msgid "Cancel"
msgstr "Скасувати"
#: desktopManager.js:802
msgid "Find Files on Desktop"
msgstr "Пошук файлів на стільниці"
#: desktopManager.js:867 desktopManager.js:1490
msgid "New Folder"
msgstr "Створити теку"
#: desktopManager.js:871
msgid "New Document"
msgstr "Створити документ"
#: desktopManager.js:876
msgid "Paste"
msgstr "Вставити"
#: desktopManager.js:880
msgid "Undo"
msgstr "Відмінити"
#: desktopManager.js:884
msgid "Redo"
msgstr "Повторити"
#: desktopManager.js:890
#, fuzzy
msgid "Select All"
msgstr "Виділити все"
#: desktopManager.js:898
msgid "Show Desktop in Files"
msgstr "Показати стільницю в Файлах"
#: desktopManager.js:902 fileItemMenu.js:287
msgid "Open in Terminal"
msgstr "Відкрити в терміналі"
#: desktopManager.js:908
msgid "Change Background…"
msgstr "Змінити тло…"
#: desktopManager.js:919
msgid "Desktop Icons Settings"
msgstr "Параметри Desktop Icons"
#: desktopManager.js:923
msgid "Display Settings"
msgstr "Параметри екрану"
#: desktopManager.js:1548
msgid "Arrange Icons"
msgstr "Впорядкувати"
#: desktopManager.js:1552
msgid "Arrange By..."
msgstr "Впорядкувати за..."
#: desktopManager.js:1561
msgid "Keep Arranged..."
msgstr "Зберегти порядок..."
#: desktopManager.js:1565
msgid "Keep Stacked by type..."
msgstr ""
#: desktopManager.js:1570
msgid "Sort Home/Drives/Trash..."
msgstr "Сортувати Домівка/Диски/Смітник..."
#: desktopManager.js:1576
msgid "Sort by Name"
msgstr "Сортувати за назвою"
#: desktopManager.js:1578
msgid "Sort by Name Descending"
msgstr "Сортувати за назвою в порядку зменшення"
#: desktopManager.js:1581
msgid "Sort by Modified Time"
msgstr "Сортувати за часом останньої зміни"
#: desktopManager.js:1584
msgid "Sort by Type"
msgstr "Сортувати за типом"
#: desktopManager.js:1587
msgid "Sort by Size"
msgstr "Сортувати за розміром"
#. TRANSLATORS: "Home" is the text that will be shown in the user's personal folder
#: fileItem.js:156
msgid "Home"
msgstr "Домівка"
#: fileItem.js:275
msgid "Broken Link"
msgstr ""
#: fileItem.js:276
msgid "Can not open this File because it is a Broken Symlink"
msgstr ""
#: fileItem.js:326
#, fuzzy
msgid "Broken Desktop File"
msgstr "Показати стільницю в Файлах"
#: fileItem.js:327
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 ""
#: fileItem.js:333
msgid "Invalid Permissions on Desktop File"
msgstr ""
#: fileItem.js:334
msgid ""
"This .desktop File has incorrect Permissions. Right Click to edit "
"Properties, then:\n"
msgstr ""
#: fileItem.js:336
msgid ""
"\n"
"Set Permissions, in \"Others Access\", \"Read Only\" or \"None\""
msgstr ""
#: fileItem.js:339
msgid ""
"\n"
"Enable option, \"Allow Executing File as a Program\""
msgstr ""
#: fileItem.js:347
msgid ""
"This .desktop file is not trusted, it can not be launched. To enable "
"launching, right-click, then:\n"
"\n"
"Enable \"Allow Launching\""
msgstr ""
#: fileItemMenu.js:118
msgid "Open All..."
msgstr "Відкрити все..."
#: fileItemMenu.js:118
msgid "Open"
msgstr "Відкрити"
#: fileItemMenu.js:129
msgid "Stack This Type"
msgstr ""
#: fileItemMenu.js:129
msgid "Unstack This Type"
msgstr ""
#: fileItemMenu.js:141
msgid "Scripts"
msgstr "Скрипти"
#: fileItemMenu.js:147
msgid "Open All With Other Application..."
msgstr "Відкрити все в іншій програмі..."
#: fileItemMenu.js:147
msgid "Open With Other Application"
msgstr "Відкрити в іншій програмі"
#: fileItemMenu.js:153
msgid "Launch using Dedicated Graphics Card"
msgstr "Запустити через відповідну графічну плату"
#: fileItemMenu.js:162
msgid "Run as a program"
msgstr ""
#: fileItemMenu.js:170
msgid "Cut"
msgstr "Вирізати"
#: fileItemMenu.js:175
msgid "Copy"
msgstr "Копіювати"
#: fileItemMenu.js:181
msgid "Rename…"
msgstr "Перейменувати…"
#: fileItemMenu.js:189
msgid "Move to Trash"
msgstr "Перемістити у смітник"
#: fileItemMenu.js:195
msgid "Delete permanently"
msgstr "Вилучити остаточно"
#: fileItemMenu.js:203
msgid "Don't Allow Launching"
msgstr "Не дозволяти запуск"
#: fileItemMenu.js:203
msgid "Allow Launching"
msgstr "Дозволяти запуск"
#: fileItemMenu.js:214
msgid "Empty Trash"
msgstr "Спорожнити смітник"
#: fileItemMenu.js:225
msgid "Eject"
msgstr "Витягти"
#: fileItemMenu.js:231
msgid "Unmount"
msgstr "Демонтувати"
#: fileItemMenu.js:241
msgid "Extract Here"
msgstr "Розпакувати сюди"
#: fileItemMenu.js:245
msgid "Extract To..."
msgstr "Розпакувати до..."
#: fileItemMenu.js:252
msgid "Send to..."
msgstr "Відправити до..."
#: fileItemMenu.js:258
msgid "Compress {0} file"
msgid_plural "Compress {0} files"
msgstr[0] "Стиснути {0} файл"
msgstr[1] "Стиснути {0} файли"
msgstr[2] "Стиснути {0} файлів"
#: fileItemMenu.js:264
msgid "New Folder with {0} item"
msgid_plural "New Folder with {0} items"
msgstr[0] "Нова тека з {0} елементом"
msgstr[1] "Нова тека з {0} елементами"
msgstr[2] "Нова тека з {0} елементами"
#: fileItemMenu.js:273
msgid "Common Properties"
msgstr "Спільні властивості"
#: fileItemMenu.js:273
msgid "Properties"
msgstr "Властивості"
#: fileItemMenu.js:280
msgid "Show All in Files"
msgstr "Показати все у Файлах"
#: fileItemMenu.js:280
msgid "Show in Files"
msgstr "Показати у Файлах"
#: fileItemMenu.js:365
msgid "Select Extract Destination"
msgstr "Вибрати шлях для розпакування"
#: fileItemMenu.js:370
msgid "Select"
msgstr "Виділити"
#: fileItemMenu.js:396
msgid "Can not email a Directory"
msgstr "Неможливо відправити теку електронною поштою"
#: fileItemMenu.js:397
msgid "Selection includes a Directory, compress the directory to a file first."
msgstr "Вибір включає теку, для початку стисніть теку в файл."
#: preferences.js:67
msgid "Settings"
msgstr "Параметри"
#: showErrorPopup.js:40
msgid "Close"
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:45
msgid "Show external drives in the desktop"
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:50
msgid "Show network drives in the desktop"
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:55
msgid "Add new drives to the opposite side of the screen"
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
#, fuzzy
msgid "Keep Icons Stacked"
msgstr "Зберігати вирівнювання піктограм"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:81
#, fuzzy
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:90
msgid "Use Nemo to open folders"
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 ""
#~ msgid "Size for the desktop icons"
#~ msgstr "Розмір піктограм на стільниці"
#~ msgid "Tiny"
#~ msgstr "Дуже малий"
#~ msgid "Small"
#~ msgstr "Малий"
#~ msgid "Standard"
#~ msgstr "Стандартний"
#~ msgid "Large"
#~ msgstr "Великий"
#~ msgid "Show the personal folder in the desktop"
#~ msgstr "Показувати особисту теку на стільниці"
#~ msgid "Show the trash icon in the desktop"
#~ msgstr "Показувати піктограму смітника на стільниці"
#~ msgid "New icons alignment"
#~ msgstr "Вирівнювання для нових піктограм"
#~ msgid "Top-left corner"
#~ msgstr "Верхній лівий кут"
#~ msgid "Top-right corner"
#~ msgstr "Верхній лівий кут"
#~ msgid "Bottom-left corner"
#~ msgstr "Нижній лівий кут"
#~ msgid "Bottom-right corner"
#~ msgstr "Нижній правий кут"
#~ msgid "Highlight the drop place during Drag'n'Drop"
#~ msgstr "Підсвічувати місце падіння під час перетягування"
#~ msgid "Settings shared with Nautilus"
#~ msgstr "Спільні параметри з Nautilus"
#~ msgid "Click type for open files"
#~ msgstr "Тип натиску для відкриття файлів"
#~ msgid "Single click"
#~ msgstr "Одинарний клік"
#~ msgid "Double click"
#~ msgstr "Подвійний клік"
#~ msgid "Show hidden files"
#~ msgstr "Показувати приховані файли"
#~ msgid "Show a context menu item to delete permanently"
#~ msgstr "Додати пункт \"Вилучити остаточно\" у контекстне меню"
#~ msgid "Action to do when launching a program from the desktop"
#~ msgstr "Дія при запуску програми з стільниці"
#~ msgid "Display the content of the file"
#~ msgstr "Показати вміст файлу"
#~ msgid "Launch the file"
#~ msgstr "Запустити файл"
#~ msgid "Ask what to do"
#~ msgstr "Питати що робити"
#~ msgid "Show image thumbnails"
#~ msgstr "Показати мініатюру зображення"
#~ msgid "Never"
#~ msgstr "Ніколи"
#~ msgid "Local files only"
#~ msgstr "Тільки локальні файли"
#~ msgid "Always"
#~ msgstr "Завжди"
#, fuzzy
#~ 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 "Error while deleting files"
#~ 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 folder {:}."
#~ msgstr "Сталася помилка при спробі остаточно вилучити теку {:}."
#~ msgid "There was an error while trying to permanently delete the file {:}."
#~ msgstr "Сталася помилка при спробі остаточно вилучити файл {:}."
#~ msgid "Enter file name…"
#~ msgstr " Введіть назву файлу…"
desktop-icons-ng-43/po/zh_CN.po 0000664 0000000 0000000 00000035204 14216573372 0016463 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.
#
msgid ""
msgstr ""
"Project-Id-Version: desktop-icons master\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-03-23 11:12+0100\n"
"PO-Revision-Date: 2021-08-05 01:21+0800\n"
"Last-Translator: Okeyja \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"
"X-Generator: Poedit 3.0\n"
"Plural-Forms: nplurals=1; plural=0;\n"
#: askRenamePopup.js:42
msgid "Folder name"
msgstr "文件夹名称"
#: askRenamePopup.js:42
msgid "File name"
msgstr "文件名称"
#: askRenamePopup.js:49 desktopManager.js:798
msgid "OK"
msgstr "确定"
#: askRenamePopup.js:49
msgid "Rename"
msgstr "重命名"
#: dbusUtils.js:65
msgid "\"${programName}\" is needed for Desktop Icons"
msgstr ""
#: dbusUtils.js:66
msgid ""
"For this functionality to work in Desktop Icons, you must install "
"\"${programName}\" in your system."
msgstr ""
#: desktopIconsUtil.js:96
msgid "Command not found"
msgstr "命令无法找到"
#: desktopManager.js:215
msgid "Nautilus File Manager not found"
msgstr "Nautilus 文件管理器找不到"
#: desktopManager.js:216
msgid "The Nautilus File Manager is mandatory to work with Desktop Icons NG."
msgstr "Nautilus 文件管理器强制与 Desktop Icons NG 运行。"
#: desktopManager.js:761
msgid "Clear Current Selection before New Search"
msgstr ""
#: desktopManager.js:800 fileItemMenu.js:369
msgid "Cancel"
msgstr "取消"
#: desktopManager.js:802
msgid "Find Files on Desktop"
msgstr ""
#: desktopManager.js:867 desktopManager.js:1490
msgid "New Folder"
msgstr "新建文件夹"
#: desktopManager.js:871
msgid "New Document"
msgstr "新建文档"
#: desktopManager.js:876
msgid "Paste"
msgstr "粘贴"
#: desktopManager.js:880
msgid "Undo"
msgstr "复原"
#: desktopManager.js:884
msgid "Redo"
msgstr "重做"
#: desktopManager.js:890
#, fuzzy
msgid "Select All"
msgstr "全选"
#: desktopManager.js:898
msgid "Show Desktop in Files"
msgstr "在文件管理器中打开桌面"
#: desktopManager.js:902 fileItemMenu.js:287
msgid "Open in Terminal"
msgstr "在终端中打开"
#: desktopManager.js:908
msgid "Change Background…"
msgstr "更改背景..."
#: desktopManager.js:919
#, fuzzy
msgid "Desktop Icons Settings"
msgstr "设置"
#: desktopManager.js:923
msgid "Display Settings"
msgstr "显示设置"
#: desktopManager.js:1548
msgid "Arrange Icons"
msgstr "图标排序"
#: desktopManager.js:1552
msgid "Arrange By..."
msgstr "排序方式..."
#: desktopManager.js:1561
msgid "Keep Arranged..."
msgstr "保持安排..."
#: desktopManager.js:1565
msgid "Keep Stacked by type..."
msgstr ""
#: desktopManager.js:1570
msgid "Sort Home/Drives/Trash..."
msgstr "排序主目录/驱动器/回收站..."
#: desktopManager.js:1576
msgid "Sort by Name"
msgstr "按名称排序"
#: desktopManager.js:1578
msgid "Sort by Name Descending"
msgstr "按描述排序"
#: desktopManager.js:1581
msgid "Sort by Modified Time"
msgstr "按修改时间排序"
#: desktopManager.js:1584
msgid "Sort by Type"
msgstr "按类型排序"
#: desktopManager.js:1587
msgid "Sort by Size"
msgstr "按大小排序"
#. TRANSLATORS: "Home" is the text that will be shown in the user's personal folder
#: fileItem.js:156
msgid "Home"
msgstr "主目录"
#: fileItem.js:275
msgid "Broken Link"
msgstr ""
#: fileItem.js:276
msgid "Can not open this File because it is a Broken Symlink"
msgstr ""
#: fileItem.js:326
#, fuzzy
msgid "Broken Desktop File"
msgstr "在文件管理器中打开桌面"
#: fileItem.js:327
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 ""
#: fileItem.js:333
msgid "Invalid Permissions on Desktop File"
msgstr ""
#: fileItem.js:334
msgid ""
"This .desktop File has incorrect Permissions. Right Click to edit "
"Properties, then:\n"
msgstr ""
#: fileItem.js:336
msgid ""
"\n"
"Set Permissions, in \"Others Access\", \"Read Only\" or \"None\""
msgstr ""
#: fileItem.js:339
msgid ""
"\n"
"Enable option, \"Allow Executing File as a Program\""
msgstr ""
#: fileItem.js:347
msgid ""
"This .desktop file is not trusted, it can not be launched. To enable "
"launching, right-click, then:\n"
"\n"
"Enable \"Allow Launching\""
msgstr ""
#: fileItemMenu.js:118
msgid "Open All..."
msgstr "全部打开..."
#: fileItemMenu.js:118
msgid "Open"
msgstr "打开"
#: fileItemMenu.js:129
msgid "Stack This Type"
msgstr ""
#: fileItemMenu.js:129
msgid "Unstack This Type"
msgstr ""
#: fileItemMenu.js:141
msgid "Scripts"
msgstr "脚本"
#: fileItemMenu.js:147
msgid "Open All With Other Application..."
msgstr "用其他方式打开。"
#: fileItemMenu.js:147
msgid "Open With Other Application"
msgstr "用其他方式打开"
#: fileItemMenu.js:153
msgid "Launch using Dedicated Graphics Card"
msgstr "使用独立显卡启动"
#: fileItemMenu.js:162
msgid "Run as a program"
msgstr ""
#: fileItemMenu.js:170
msgid "Cut"
msgstr "剪切"
#: fileItemMenu.js:175
msgid "Copy"
msgstr "复制"
#: fileItemMenu.js:181
msgid "Rename…"
msgstr "重命名……"
#: fileItemMenu.js:189
msgid "Move to Trash"
msgstr "放入回收站"
#: fileItemMenu.js:195
msgid "Delete permanently"
msgstr "永久删除"
#: fileItemMenu.js:203
msgid "Don't Allow Launching"
msgstr "不允许运行"
#: fileItemMenu.js:203
msgid "Allow Launching"
msgstr "允许运行"
#: fileItemMenu.js:214
msgid "Empty Trash"
msgstr "清空回收站"
#: fileItemMenu.js:225
msgid "Eject"
msgstr "驱逐"
#: fileItemMenu.js:231
msgid "Unmount"
msgstr "弹出"
#: fileItemMenu.js:241
msgid "Extract Here"
msgstr "提取到此处"
#: fileItemMenu.js:245
msgid "Extract To..."
msgstr "提取到…"
#: fileItemMenu.js:252
msgid "Send to..."
msgstr "发送到…"
#: fileItemMenu.js:258
msgid "Compress {0} file"
msgid_plural "Compress {0} files"
msgstr[0] "压缩{0}文件"
#: fileItemMenu.js:264
msgid "New Folder with {0} item"
msgid_plural "New Folder with {0} items"
msgstr[0] "带{0}项的新文件夹"
#: fileItemMenu.js:273
msgid "Common Properties"
msgstr "通用属性"
#: fileItemMenu.js:273
msgid "Properties"
msgstr "属性"
#: fileItemMenu.js:280
msgid "Show All in Files"
msgstr "全部在文件中展示"
#: fileItemMenu.js:280
msgid "Show in Files"
msgstr "在文件夹中显示"
#: fileItemMenu.js:365
msgid "Select Extract Destination"
msgstr "选择提取目录"
#: fileItemMenu.js:370
msgid "Select"
msgstr "选择"
#: fileItemMenu.js:396
msgid "Can not email a Directory"
msgstr "文件夹不能邮件"
#: fileItemMenu.js:397
msgid "Selection includes a Directory, compress the directory to a file first."
msgstr "选择包括目录,首先将目录压缩到文件中。"
#: preferences.js:67
msgid "Settings"
msgstr "设置"
#: showErrorPopup.js:40
msgid "Close"
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:45
msgid "Show external drives in the desktop"
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:50
msgid "Show network drives in the desktop"
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:55
msgid "Add new drives to the opposite side of the screen"
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
#, fuzzy
msgid "Keep Icons Stacked"
msgstr "保持图标排列"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:81
#, fuzzy
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:90
msgid "Use Nemo to open folders"
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 ""
#~ msgid "Size for the desktop icons"
#~ msgstr "桌面图标大小"
#~ msgid "Tiny"
#~ msgstr "微"
#~ msgid "Small"
#~ msgstr "小"
#~ msgid "Standard"
#~ msgstr "中"
#~ msgid "Large"
#~ msgstr "大"
#~ msgid "Show the personal folder in the desktop"
#~ msgstr "在桌面显示个人文件夹"
#~ msgid "Show the trash icon in the desktop"
#~ msgstr "在桌面显示回收站图标"
#~ msgid "New icons alignment"
#~ msgstr "新图标排列"
#~ msgid "Top-left corner"
#~ msgstr "左上角"
#~ msgid "Top-right corner"
#~ msgstr "右上角"
#~ msgid "Bottom-left corner"
#~ msgstr "左下角"
#~ msgid "Bottom-right corner"
#~ msgstr "右下角"
#~ msgid "Highlight the drop place during Drag'n'Drop"
#~ msgstr "拖拽图标时高亮显示放置区域"
#~ msgid "Settings shared with Nautilus"
#~ msgstr "共享Nautilus的设置"
#~ msgid "Click type for open files"
#~ msgstr "打开文件的点击方式"
#~ msgid "Single click"
#~ msgstr "单击"
#~ msgid "Double click"
#~ msgstr "双击"
#~ msgid "Show hidden files"
#~ msgstr "显示隐藏文件"
#~ msgid "Show a context menu item to delete permanently"
#~ msgstr "永久删除时展示确认菜单项目"
#~ msgid "Action to do when launching a program from the desktop"
#~ msgstr "在桌面运行程序时执行的动作"
#~ msgid "Display the content of the file"
#~ msgstr "展示文件内容"
#~ msgid "Launch the file"
#~ msgstr "运行文件"
#~ msgid "Ask what to do"
#~ msgstr "询问如何做"
#~ msgid "Show image thumbnails"
#~ msgstr "显示图片缩略图"
#~ msgid "Never"
#~ msgstr "从不"
#~ msgid "Local files only"
#~ msgstr "仅本地文件"
#~ msgid "Always"
#~ 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 "Error while deleting files"
#~ 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-43/po/zh_TW.po 0000664 0000000 0000000 00000034406 14216573372 0016520 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.
#
msgid ""
msgstr ""
"Project-Id-Version: desktop-icons master\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-03-23 11:12+0100\n"
"PO-Revision-Date: 2021-07-11 21:08+0800\n"
"Last-Translator: pan93412 \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"
"X-Generator: Poedit 2.4.3\n"
"Plural-Forms: nplurals=1; plural=0;\n"
#: askRenamePopup.js:42
msgid "Folder name"
msgstr "資料夾名稱"
#: askRenamePopup.js:42
msgid "File name"
msgstr "檔案名稱"
#: askRenamePopup.js:49 desktopManager.js:798
msgid "OK"
msgstr "確定"
#: askRenamePopup.js:49
msgid "Rename"
msgstr "重新命名"
#: dbusUtils.js:65
msgid "\"${programName}\" is needed for Desktop Icons"
msgstr ""
#: dbusUtils.js:66
msgid ""
"For this functionality to work in Desktop Icons, you must install "
"\"${programName}\" in your system."
msgstr ""
#: desktopIconsUtil.js:96
msgid "Command not found"
msgstr "無法找到指令"
#: desktopManager.js:215
msgid "Nautilus File Manager not found"
msgstr "無法找到《檔案 (Nautilus 瀏覽器)》"
#: desktopManager.js:216
msgid "The Nautilus File Manager is mandatory to work with Desktop Icons NG."
msgstr "《檔案》強制與Desktop Icons NG 運行"
#: desktopManager.js:761
msgid "Clear Current Selection before New Search"
msgstr ""
#: desktopManager.js:800 fileItemMenu.js:369
msgid "Cancel"
msgstr "取消"
#: desktopManager.js:802
msgid "Find Files on Desktop"
msgstr ""
#: desktopManager.js:867 desktopManager.js:1490
msgid "New Folder"
msgstr "新增資料夾"
#: desktopManager.js:871
msgid "New Document"
msgstr "新增文件"
#: desktopManager.js:876
msgid "Paste"
msgstr "貼上"
#: desktopManager.js:880
msgid "Undo"
msgstr "復原"
#: desktopManager.js:884
msgid "Redo"
msgstr "重做"
#: desktopManager.js:890
#, fuzzy
msgid "Select All"
msgstr "全部選取"
#: desktopManager.js:898
#, fuzzy
msgid "Show Desktop in Files"
msgstr "在《檔案》中開啟桌面"
#: desktopManager.js:902 fileItemMenu.js:287
msgid "Open in Terminal"
msgstr "開啟終端器"
#: desktopManager.js:908
msgid "Change Background…"
msgstr "變更背景圖片…"
#: desktopManager.js:919
#, fuzzy
msgid "Desktop Icons Settings"
msgstr "桌面圖示設定"
#: desktopManager.js:923
msgid "Display Settings"
msgstr "顯示設定"
#: desktopManager.js:1548
msgid "Arrange Icons"
msgstr ""
#: desktopManager.js:1552
msgid "Arrange By..."
msgstr ""
#: desktopManager.js:1561
msgid "Keep Arranged..."
msgstr ""
#: desktopManager.js:1565
msgid "Keep Stacked by type..."
msgstr ""
#: desktopManager.js:1570
msgid "Sort Home/Drives/Trash..."
msgstr ""
#: desktopManager.js:1576
msgid "Sort by Name"
msgstr ""
#: desktopManager.js:1578
msgid "Sort by Name Descending"
msgstr ""
#: desktopManager.js:1581
msgid "Sort by Modified Time"
msgstr ""
#: desktopManager.js:1584
msgid "Sort by Type"
msgstr ""
#: desktopManager.js:1587
msgid "Sort by Size"
msgstr ""
#. TRANSLATORS: "Home" is the text that will be shown in the user's personal folder
#: fileItem.js:156
msgid "Home"
msgstr "家目錄"
#: fileItem.js:275
msgid "Broken Link"
msgstr ""
#: fileItem.js:276
msgid "Can not open this File because it is a Broken Symlink"
msgstr ""
#: fileItem.js:326
#, fuzzy
msgid "Broken Desktop File"
msgstr "在《檔案》中開啟桌面"
#: fileItem.js:327
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 ""
#: fileItem.js:333
msgid "Invalid Permissions on Desktop File"
msgstr ""
#: fileItem.js:334
msgid ""
"This .desktop File has incorrect Permissions. Right Click to edit "
"Properties, then:\n"
msgstr ""
#: fileItem.js:336
msgid ""
"\n"
"Set Permissions, in \"Others Access\", \"Read Only\" or \"None\""
msgstr ""
#: fileItem.js:339
msgid ""
"\n"
"Enable option, \"Allow Executing File as a Program\""
msgstr ""
#: fileItem.js:347
msgid ""
"This .desktop file is not trusted, it can not be launched. To enable "
"launching, right-click, then:\n"
"\n"
"Enable \"Allow Launching\""
msgstr ""
#: fileItemMenu.js:118
msgid "Open All..."
msgstr "開啟所有項目……"
#: fileItemMenu.js:118
msgid "Open"
msgstr "開啟"
#: fileItemMenu.js:129
msgid "Stack This Type"
msgstr ""
#: fileItemMenu.js:129
msgid "Unstack This Type"
msgstr ""
#: fileItemMenu.js:141
msgid "Scripts"
msgstr "命令稿"
#: fileItemMenu.js:147
msgid "Open All With Other Application..."
msgstr "用其他應用程式開啟所有……"
#: fileItemMenu.js:147
msgid "Open With Other Application"
msgstr "用其他應用程式開啟"
#: fileItemMenu.js:153
msgid "Launch using Dedicated Graphics Card"
msgstr ""
#: fileItemMenu.js:162
msgid "Run as a program"
msgstr ""
#: fileItemMenu.js:170
msgid "Cut"
msgstr "剪下"
#: fileItemMenu.js:175
msgid "Copy"
msgstr "複製"
#: fileItemMenu.js:181
msgid "Rename…"
msgstr "重新命名…"
#: fileItemMenu.js:189
msgid "Move to Trash"
msgstr "移動到垃圾桶"
#: fileItemMenu.js:195
msgid "Delete permanently"
msgstr "永久刪除"
#: fileItemMenu.js:203
msgid "Don't Allow Launching"
msgstr "不允許執行"
#: fileItemMenu.js:203
msgid "Allow Launching"
msgstr "允許執行"
#: fileItemMenu.js:214
msgid "Empty Trash"
msgstr "清空垃圾桶"
#: fileItemMenu.js:225
msgid "Eject"
msgstr "退出"
#: fileItemMenu.js:231
msgid "Unmount"
msgstr "卸載"
#: fileItemMenu.js:241
msgid "Extract Here"
msgstr "在這裡解開"
#: fileItemMenu.js:245
msgid "Extract To..."
msgstr "解開到…"
#: fileItemMenu.js:252
msgid "Send to..."
msgstr "傳送到…"
#: fileItemMenu.js:258
msgid "Compress {0} file"
msgid_plural "Compress {0} files"
msgstr[0] "壓縮 {0} 檔案"
#: fileItemMenu.js:264
#, fuzzy
msgid "New Folder with {0} item"
msgid_plural "New Folder with {0} items"
msgstr[0] "新增空白的(有 {0} 項目)資料夾"
#: fileItemMenu.js:273
msgid "Common Properties"
msgstr "共同屬性"
#: fileItemMenu.js:273
msgid "Properties"
msgstr "屬性"
#: fileItemMenu.js:280
msgid "Show All in Files"
msgstr "在《檔案》中顯示"
#: fileItemMenu.js:280
msgid "Show in Files"
msgstr "在《檔案》中顯示"
#: fileItemMenu.js:365
msgid "Select Extract Destination"
msgstr "選擇解壓縮的位置"
#: fileItemMenu.js:370
msgid "Select"
msgstr "選擇"
#: fileItemMenu.js:396
msgid "Can not email a Directory"
msgstr "無法寄送資料夾"
#: fileItemMenu.js:397
msgid "Selection includes a Directory, compress the directory to a file first."
msgstr "已選項目含資料夾,先把資料夾壓縮成一個檔案。"
#: preferences.js:67
msgid "Settings"
msgstr "設定"
#: showErrorPopup.js:40
msgid "Close"
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:45
msgid "Show external drives in the desktop"
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:50
msgid "Show network drives in the desktop"
msgstr "在桌面顯示網路資料夾"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:51
#, fuzzy
msgid "Show mounted network volumes in the desktop."
msgstr "在桌面顯示個人資料夾。"
#: schemas/org.gnome.shell.extensions.ding.gschema.xml:55
msgid "Add new drives to the opposite side of the screen"
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:90
msgid "Use Nemo to open folders"
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 ""
#~ msgid "Size for the desktop icons"
#~ msgstr "桌面圖示的大小"
#~ msgid "Tiny"
#~ msgstr "更小圖示"
#~ msgid "Small"
#~ msgstr "小圖示"
#~ msgid "Standard"
#~ msgstr "適中圖示"
#~ msgid "Large"
#~ msgstr "大圖示"
#~ msgid "Show the personal folder in the desktop"
#~ msgstr "在桌面顯示個人資料夾"
#~ msgid "Show the trash icon in the desktop"
#~ msgstr "在桌面顯示垃圾桶圖示"
#~ msgid "New icons alignment"
#~ msgstr "新圖示排序位置"
#~ msgid "Top-left corner"
#~ msgstr "左上角"
#~ msgid "Top-right corner"
#~ msgstr "右上角"
#~ msgid "Bottom-left corner"
#~ msgstr "左下角"
#~ msgid "Bottom-right corner"
#~ msgstr "右下角"
#~ msgid "Highlight the drop place during Drag'n'Drop"
#~ msgstr "拖曳時強調顯示拖曳後位置"
#~ msgid "Settings shared with Nautilus"
#~ msgstr "與《檔案》共用設定"
#~ msgid "Click type for open files"
#~ msgstr "開啟檔案時的點擊方式"
#~ msgid "Single click"
#~ msgstr "單擊"
#~ msgid "Double click"
#~ msgstr "雙擊"
#~ msgid "Show hidden files"
#~ msgstr "顯示隱藏檔"
#~ msgid "Show a context menu item to delete permanently"
#~ msgstr "在快速選單顯示永久刪除"
#~ msgid "Action to do when launching a program from the desktop"
#~ msgstr "在桌面執行應用程式時的動作"
#~ msgid "Display the content of the file"
#~ msgstr "顯示檔案內容"
#~ msgid "Launch the file"
#~ msgstr "執行檔案"
#~ msgid "Ask what to do"
#~ msgstr "詢問要做什麼"
#~ msgid "Show image thumbnails"
#~ msgstr "顯示影像縮圖"
#~ msgid "Never"
#~ msgstr "從不"
#~ msgid "Local files only"
#~ msgstr "顯示本機檔案"
#~ msgid "Always"
#~ 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 "Error while deleting files"
#~ 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-43/preferences.js 0000664 0000000 0000000 00000007123 14216573372 0017342 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 .
*/
imports.gi.versions.Gtk = '3.0';
const GLib = imports.gi.GLib;
const Gtk = imports.gi.Gtk;
const GObject = imports.gi.GObject;
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 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;
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();
}
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 (this.window) {
return;
}
this.window = new Gtk.Window({ resizable: false,
window_position: Gtk.WindowPosition.CENTER });
this.window.connect('destroy', () => {this.window = null});
this.window.set_title(_("Settings"));
DesktopIconsUtil.windowHidePagerTaskbarModal(this.window, true);
let frame = PrefsWindow.preferencesFrame(Gtk, desktopSettings, nautilusSettings, gtkSettings);
this.window.add(frame);
this.window.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)];
}
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');
}
function setUnstackList(array) {
desktopSettings.set_strv('unstackedtypes', array);
}
desktop-icons-ng-43/prefs.js 0000664 0000000 0000000 00000004012 14216573372 0016152 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 .
*/
const Gtk = imports.gi.Gtk;
const Gio = imports.gi.Gio;
const GioSSS = Gio.SettingsSchemaSource;
const ExtensionUtils = imports.misc.extensionUtils;
const Gettext = imports.gettext;
const Me = ExtensionUtils.getCurrentExtension();
const Enums = Me.imports.enums;
const PrefsWindow = Me.imports.prefswindow;
var _ = Gettext.domain('ding').gettext;
var nautilusSettings;
var gtkSettings;
var desktopSettings;
function init() {
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 });;
}
desktopSettings = PrefsWindow.get_schema(Me.dir.get_path(), Enums.SCHEMA);
}
function buildPrefsWidget() {
let localedir = Me.dir.get_child('locale');
if (localedir.query_exists(null))
Gettext.bindtextdomain('ding', localedir.get_path());
let frame = PrefsWindow.preferencesFrame(Gtk, desktopSettings, nautilusSettings, gtkSettings);
if (frame.show_all) {
frame.show_all();
} else {
frame.show();
}
return frame;
}
desktop-icons-ng-43/prefswindow.js 0000664 0000000 0000000 00000016417 14216573372 0017416 0 ustar 00root root 0000000 0000000 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;
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 {
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 });
}
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;
}
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 });
let switcher = new Gtk.Switch({ active: settings.get_boolean(key) });
label.set_hexpand(true);
switcher.set_hexpand(false);
switcher.set_halign(Gtk.Align.END);
settings.bind(key, switcher, 'active', 3);
if (hbox.pack_start) {
hbox.pack_start(label, true, true, 0);
hbox.add(switcher);
} else {
hbox.append(label);
hbox.append(switcher);
}
return hbox;
}
function buildSelector(settings, key, labelText, elements) {
let listStore = new Gtk.ListStore();
listStore.set_column_types ([GObject.TYPE_STRING, GObject.TYPE_STRING]);
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);
settings.bind(key, combo, 'active-id', 3);
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-43/schemas/ 0000775 0000000 0000000 00000000000 14216573372 0016123 5 ustar 00root root 0000000 0000000 desktop-icons-ng-43/schemas/meson.build 0000664 0000000 0000000 00000000165 14216573372 0020267 0 ustar 00root root 0000000 0000000 gnome.compile_schemas()
install_data(
'org.gnome.shell.extensions.ding.gschema.xml',
install_dir : schema_dir
)
desktop-icons-ng-43/schemas/org.gnome.shell.extensions.ding.gschema.xml 0000664 0000000 0000000 00000011376 14216573372 0026402 0 ustar 00root root 0000000 0000000
'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.
desktop-icons-ng-43/showErrorPopup.js 0000664 0000000 0000000 00000004626 14216573372 0020064 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 .
*/
const Gtk = imports.gi.Gtk;
const Pango = imports.gi.Pango;
const DesktopIconsUtil = imports.desktopIconsUtil;
const Gettext = imports.gettext.domain('ding');
const _ = Gettext.gettext;
var ShowErrorPopup = class {
constructor(text, secondaryText, parentWindow, modal) {
this._window = new Gtk.MessageDialog({window_position: Gtk.WindowPosition.CENTER_ON_PARENT,
transient_for: parentWindow,
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-43/stackItem.js 0000664 0000000 0000000 00000007043 14216573372 0016766 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 .
*/
const GObject = imports.gi.GObject;
const Gtk = imports.gi.Gtk;
const Gdk = imports.gi.Gdk;
const Gio = imports.gi.Gio;
const GLib = imports.gi.GLib;
const Pango = imports.gi.Pango;
const GdkPixbuf = imports.gi.GdkPixbuf;
const Cairo = imports.gi.cairo;
const DesktopIconsUtil = imports.desktopIconsUtil;
const desktopIconItem = imports.desktopIconItem;
const Prefs = imports.preferences;
const Enums = imports.enums;
const DBusUtils = imports.dbusUtils;
const ByteArray = imports.byteArray;
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() {
return;
}
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-43/stylesheet.css 0000664 0000000 0000000 00000000772 14216573372 0017411 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-43/templatesScriptsManager.js 0000664 0000000 0000000 00000017351 14216573372 0021706 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 .
*/
const Gio = imports.gi.Gio;
const GLib = imports.gi.GLib;
const Gtk = imports.gi.Gtk;
const Enums = imports.enums;
const DesktopIconsUtil = imports.desktopIconsUtil;
var TemplatesScriptsManagerFlags = {
'NONE': 0,
'ONLY_EXECUTABLE': 1,
'HIDE_EXTENSIONS': 2
};
var TemplatesScriptsManager = class {
constructor(baseFolder, flags, activatedCB) {
this._activatedCB = activatedCB;
this._entries = [];
this._entriesEnumerateCancellable = null;
this._readingEntries = false;
this._entriesDir = baseFolder;
this._entriesDirMonitors = [];
this._entriesFolderChanged = false;
this._flags = flags;
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._monitorDir.connect('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}`);
});
}
}
async _updateEntries() {
if (this._readingEntries) {
this._entriesFolderChanged = true;
if (this._entriesEnumerateCancellable) {
this._entriesEnumerateCancellable.cancel();
this._entriesEnumerateCancellable = null;
}
return;
}
this._readingEntries = true;
let entriesList = null;
do {
this._entriesDirMonitors.map(f => {
f[0].disconnect(f[1]);
f[0].cancel();
});
this._entriesDirMonitors = [];
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) {
if (directory !== this._entriesDir) {
let monitorDir = directory.monitor_directory(Gio.FileMonitorFlags.WATCH_MOVES, null);
monitorDir.set_rate_limit(1000);
let monitorId = monitorDir.connect('changed', (obj, file, otherFile, eventType) => { this._updateEntries(); });
this._entriesDirMonitors.push([monitorDir, monitorId]);
}
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]);
}
} catch(e) {
if (e.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.CANCELLED)) {
resolve(null);
} else {
reject('file-read-error');
}
return;
}
fileList.sort((a,b) => {
return a[0].localeCompare(b[0], {
sensitivity: 'accent' ,
numeric: 'true',
localeMatcher: 'lookup' });
});
resolve(fileList);
return;
}
);
});
}
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) {
let offset = DesktopIconsUtil.getFileExtensionOffset(menuItemName, false);
menuItemName = menuItemName.substring(0, offset);
}
let menuItemPath = fileItem[1];
let subDirs = fileItem[2];
if (subDirs === null) {
let menuItem = new Gtk.MenuItem({label: menuItemName});
menuItem.connect("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-43/thumbnails.js 0000664 0000000 0000000 00000015552 14216573372 0017214 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 .
*/
imports.gi.versions.GnomeDesktop = '3.0';
const GnomeDesktop = imports.gi.GnomeDesktop;
const GLib = imports.gi.GLib;
const Gio = imports.gi.Gio;
var ThumbnailLoader = class {
constructor(codePath) {
this._timeoutValue = 5000;
this._codePath = codePath;
this._thumbList = [];
this._thumbnailScriptWatch = null;
this._running = false;
this._thumbnailFactory = GnomeDesktop.DesktopThumbnailFactory.new(GnomeDesktop.DesktopThumbnailSize.LARGE);
if (this._thumbnailFactory.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._thumbnailFactory.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._thumbnailFactory.generate_thumbnail_async(file.uri, fileInfo.get_content_type(), this._doCancel, (obj, res) => {
this._removeTimeout();
try {
let thumbnailPixbuf = obj.generate_thumbnail_finish(res);
this._thumbnailFactory.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._thumbnailFactory.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._thumbnailFactory.create_failed_thumbnail(file.uri, file.modifiedTime);
return false;
});
}
_removeTimeout() {
if (this._timeoutID != 0) {
GLib.source_remove(this._timeoutID);
this._timeoutID = 0;
}
}
canThumbnail(file) {
return this._thumbnailFactory.can_thumbnail(file.uri,
file.attributeContentType,
file.modifiedTime);
}
getThumbnail(file, callback) {
try {
let thumbnail = this._thumbnailFactory.lookup(file.uri, file.modifiedTime);
if (thumbnail == null) {
if (!this._thumbnailFactory.has_valid_failed_thumbnail(file.uri, 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-43/visibleArea.js 0000664 0000000 0000000 00000014453 14216573372 0017273 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 .
*/
const Main = imports.ui.main;
const Signals = imports.signals;
const GLib = imports.gi.GLib;
const ExtensionUtils = imports.misc.extensionUtils;
var VisibleArea = class {
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: scale,
marginTop: marginTop,
marginBottom: marginBottom,
marginLeft: marginLeft,
marginRight: marginRight
};
}
get uuid() {
return this._extensionUUID;
}
}
Signals.addSignalMethods(VisibleArea.prototype);