pax_global_header00006660000000000000000000000064142165733720014524gustar00rootroot0000000000000052 comment=68ff1d56d99fe517317de312e69f86dc97822fc7 desktop-icons-ng-43/000077500000000000000000000000001421657337200145005ustar00rootroot00000000000000desktop-icons-ng-43/COPYING000066400000000000000000001045131421657337200155370ustar00rootroot00000000000000 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.md000066400000000000000000000260331421657337200161670ustar00rootroot00000000000000# 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.md000066400000000000000000000143331421657337200157630ustar00rootroot00000000000000# 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.js000066400000000000000000000076561421657337200200060ustar00rootroot00000000000000/* 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.js000077500000000000000000000040351421657337200201520ustar00rootroot00000000000000#!/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.js000066400000000000000000000174341421657337200200100ustar00rootroot00000000000000/* 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.js000066400000000000000000001003531421657337200170160ustar00rootroot00000000000000/* 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.js000066400000000000000000000555471421657337200173350ustar00rootroot00000000000000/* 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.js000066400000000000000000000720331421657337200201440ustar00rootroot00000000000000 /* 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.js000066400000000000000000000141171421657337200217130ustar00rootroot00000000000000/* * 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.js000066400000000000000000000223221421657337200203420ustar00rootroot00000000000000/* 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.js000066400000000000000000002366341421657337200200200ustar00rootroot00000000000000/* 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.js000077500000000000000000000135051421657337200157660ustar00rootroot00000000000000#!/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.js000066400000000000000000000311031421657337200210140ustar00rootroot00000000000000/* 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.js000066400000000000000000000047531421657337200161760ustar00rootroot00000000000000/* 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.sh000077500000000000000000000031041421657337200171560ustar00rootroot00000000000000#!/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.js000066400000000000000000000502431421657337200170560ustar00rootroot00000000000000/* 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.js000066400000000000000000000671211421657337200166030ustar00rootroot00000000000000/* 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.js000066400000000000000000000410261421657337200174240ustar00rootroot00000000000000/* 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.js000066400000000000000000000115411421657337200206350ustar00rootroot00000000000000/* 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.py000077500000000000000000000004511421657337200160100ustar00rootroot00000000000000#!/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.sh000077500000000000000000000003711421657337200176600ustar00rootroot00000000000000#!/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.build000066400000000000000000000020421421657337200166400ustar00rootroot00000000000000project('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.py000066400000000000000000000005541421657337200207720ustar00rootroot00000000000000#!/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.json000066400000000000000000000005261421657337200171560ustar00rootroot00000000000000{ "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/000077500000000000000000000000001421657337200151165ustar00rootroot00000000000000desktop-icons-ng-43/po/LINGUAS000066400000000000000000000001361421657337200161430ustar00rootroot00000000000000be 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.in000066400000000000000000000006121421657337200166720ustar00rootroot00000000000000askRenamePopup.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.po000066400000000000000000000417241421657337200160540ustar00rootroot00000000000000# 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.po000066400000000000000000000353631421657337200160530ustar00rootroot00000000000000# 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.po000066400000000000000000000411741421657337200160720ustar00rootroot00000000000000# 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.po000066400000000000000000000313201421657337200160410ustar00rootroot00000000000000# 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.po000066400000000000000000000367761421657337200160710ustar00rootroot00000000000000# 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.pot000066400000000000000000000234741421657337200165750ustar00rootroot00000000000000# 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.po000066400000000000000000000471431421657337200160760ustar00rootroot00000000000000# 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.po000066400000000000000000000355531421657337200160670ustar00rootroot00000000000000# 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.po000066400000000000000000000401361421657337200160710ustar00rootroot00000000000000# 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.po000066400000000000000000000315741421657337200162640ustar00rootroot00000000000000# 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.po000066400000000000000000000312271421657337200160570ustar00rootroot00000000000000# 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.po000066400000000000000000000317011421657337200160710ustar00rootroot00000000000000# 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.po000066400000000000000000000357661421657337200161130ustar00rootroot00000000000000# 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.po000066400000000000000000000315111421657337200160530ustar00rootroot00000000000000# 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.po000066400000000000000000000411751421657337200161020ustar00rootroot00000000000000# 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.po000077500000000000000000000477041421657337200160670ustar00rootroot00000000000000# 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.po000066400000000000000000000354541421657337200161020ustar00rootroot00000000000000# 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.build000066400000000000000000000000651421657337200172610ustar00rootroot00000000000000i18n.gettext (meson.project_name (), preset: 'glib') desktop-icons-ng-43/po/nl.po000066400000000000000000000321331421657337200160710ustar00rootroot00000000000000# 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.po000066400000000000000000000361121421657337200160620ustar00rootroot00000000000000# 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.po000066400000000000000000000421231421657337200160730ustar00rootroot00000000000000# 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.po000066400000000000000000000415301421657337200164670ustar00rootroot00000000000000# 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.po000066400000000000000000000407111421657337200161010ustar00rootroot00000000000000# 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.po000066400000000000000000000553061421657337200161150ustar00rootroot00000000000000# 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.po000066400000000000000000000367341421657337200161100ustar00rootroot00000000000000# 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.po000066400000000000000000000361411421657337200161130ustar00rootroot00000000000000# 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.po000066400000000000000000000413261421657337200161110ustar00rootroot00000000000000# 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.po000066400000000000000000000454361421657337200161110ustar00rootroot00000000000000# 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.po000066400000000000000000000352041421657337200164630ustar00rootroot00000000000000# 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.po000066400000000000000000000344061421657337200165200ustar00rootroot00000000000000# 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.js000066400000000000000000000071231421657337200173420ustar00rootroot00000000000000/* 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.js000066400000000000000000000040121421657337200161520ustar00rootroot00000000000000 /* 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.js000066400000000000000000000164171421657337200174160ustar00rootroot00000000000000const 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/000077500000000000000000000000001421657337200161235ustar00rootroot00000000000000desktop-icons-ng-43/schemas/meson.build000066400000000000000000000001651421657337200202670ustar00rootroot00000000000000gnome.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.xml000066400000000000000000000113761421657337200264020ustar00rootroot00000000000000 '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.js000066400000000000000000000046261421657337200200640ustar00rootroot00000000000000/* 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.js000066400000000000000000000070431421657337200167660ustar00rootroot00000000000000 /* 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.css000066400000000000000000000007721421657337200174110ustar00rootroot00000000000000.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.js000066400000000000000000000173511421657337200217060ustar00rootroot00000000000000/* 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.js000066400000000000000000000155521421657337200172140ustar00rootroot00000000000000/* 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.js000066400000000000000000000144531421657337200172730ustar00rootroot00000000000000/* 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);